Return-Path: X-Original-To: apmail-hadoop-hdfs-user-archive@minotaur.apache.org Delivered-To: apmail-hadoop-hdfs-user-archive@minotaur.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 1E0C210423 for ; Wed, 11 Dec 2013 01:58:48 +0000 (UTC) Received: (qmail 93327 invoked by uid 500); 11 Dec 2013 01:58:42 -0000 Delivered-To: apmail-hadoop-hdfs-user-archive@hadoop.apache.org Received: (qmail 93217 invoked by uid 500); 11 Dec 2013 01:58:42 -0000 Mailing-List: contact user-help@hadoop.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: user@hadoop.apache.org Delivered-To: mailing list user@hadoop.apache.org Received: (qmail 93210 invoked by uid 99); 11 Dec 2013 01:58:42 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 11 Dec 2013 01:58:42 +0000 X-ASF-Spam-Status: No, hits=2.5 required=5.0 tests=FREEMAIL_REPLY,HTML_MESSAGE,RCVD_IN_DNSWL_LOW,SPF_PASS,WEIRD_PORT X-Spam-Check-By: apache.org Received-SPF: pass (athena.apache.org: domain of kawa.adam@gmail.com designates 209.85.223.170 as permitted sender) Received: from [209.85.223.170] (HELO mail-ie0-f170.google.com) (209.85.223.170) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 11 Dec 2013 01:58:38 +0000 Received: by mail-ie0-f170.google.com with SMTP id qd12so10095538ieb.15 for ; Tue, 10 Dec 2013 17:58:17 -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 :content-type; bh=1F0v9BzOzXaB++WUz9Po5P1OWehFgjnjPr5srwUjpDc=; b=ArK3dvZ3C19qnJS+Xy+YHxgq9TCaBKIH9xseSii2BqKx0MqbYxw/oN22WXM8OLtNNY FUIbO6WS3TRUXifwZMYDBpsbp9IW20xa8VmUcqqpMu0AZhBzyVqRpXySw0gDw25jw/IN PxLfPRzJgvniePlpEsgMgh0zDe1aXSibPIqfrIxiCp6mYgG1adCsUxXgpc/JOWi49oyQ nhgvHIgYtHcLN3R25+F6cbNtAyHIXcYEXUk19mm6IO+P55bHgzfk2eT6vtEzXNfBVBwq oUf2TqceRO+MfjhjgvjFPaZTNpYC7mC6sVazPBJlz8IKR9JgPfU1Cq0wJS/O6+02gKzV Kvwg== MIME-Version: 1.0 X-Received: by 10.42.86.193 with SMTP id v1mr62586281icl.35.1386727097805; Tue, 10 Dec 2013 17:58:17 -0800 (PST) Received: by 10.42.153.136 with HTTP; Tue, 10 Dec 2013 17:58:17 -0800 (PST) In-Reply-To: References: <1d9a556d0c984c8bb5eff3a845b786f0@DM2PR08MB301.namprd08.prod.outlook.com> <5DF48A23D7B14649BBA72C2F64C6663B82B35496@szxeml523-mbx.china.huawei.com> Date: Wed, 11 Dec 2013 02:58:17 +0100 Message-ID: Subject: Re: how to handle the corrupt block in HDFS? From: Adam Kawa To: user@hadoop.apache.org Content-Type: multipart/related; boundary=20cf302238eb111d9504ed389062 X-Virus-Checked: Checked by ClamAV on apache.org --20cf302238eb111d9504ed389062 Content-Type: multipart/alternative; boundary=20cf302238eb111d9004ed389061 --20cf302238eb111d9004ed389061 Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: quoted-printable Maybe this can work for you $ sudo -u hdfs hdfs fsck / -list-corruptfileblocks ? 2013/12/11 ch huang > thanks for reply, what i do not know is how can i locate the block which > has the corrupt replica,(so i can observe how long the corrupt replica wi= ll > be removed and a new health replica replace it,because i get nagios alert > for three days,i do not sure if it is the same corrupt replica cause the > alert ,and i do not know the interval of hdfs check corrupt replica and > clean it) > > > On Tue, Dec 10, 2013 at 6:20 PM, Vinayakumar B = wrote: > >> Hi ch huang, >> >> >> >> It may seem strange, but the fact is, >> >> *CorruptBlocks* through JMX means *=93Number of blocks with corrupt >> replicas=94. May not be all replicas are corrupt. *This you can check >> though jconsole for description. >> >> >> >> Where as *Corrupt blocks* through fsck means, *blocks with all replicas >> corrupt(non-recoverable)/ missing.* >> >> >> >> In your case, may be one of the replica is corrupt, not all replicas of >> same block. This corrupt replica will be deleted automatically if one mo= re >> datanode available in your cluster and block replicated to that. >> >> >> >> >> >> Related to replication 10, As Peter Marron said, *some of the important >> files of the mapreduce job will set the replication of 10, to make it >> accessible faster and launch map tasks faster. * >> >> Anyway, if the job is success these files will be deleted auomatically. = I >> think only in some cases if the jobs are killed in between these files w= ill >> remain in hdfs showing underreplicated blocks. >> >> >> >> Thanks and Regards, >> >> Vinayakumar B >> >> >> >> *From:* Peter Marron [mailto:Peter.Marron@trilliumsoftware.com] >> *Sent:* 10 December 2013 14:19 >> *To:* user@hadoop.apache.org >> *Subject:* RE: how to handle the corrupt block in HDFS? >> >> >> >> Hi, >> >> >> >> I am sure that there are others who will answer this better, but anyway. >> >> The default replication level for files in HDFS is 3 and so most files >> that you >> >> see will have a replication level of 3. However when you run a Map/Reduc= e >> >> job the system knows in advance that every node will need a copy of >> >> certain files. Specifically the job.xml and the various jars containing >> >> classes that will be needed to run the mappers and reducers. So the >> >> system arranges that some of these files have a higher replication level= . >> This increases >> >> the chances that a copy will be found locally. >> >> By default this higher replication level is 10. >> >> >> >> This can seem a little odd on a cluster where you only have, say, 3 node= s. >> >> Because it means that you will almost always have some blocks that are >> marked >> >> under-replicated. I think that there was some discussion a while back to >> change >> >> this to make the replication level something like min(10, #number of >> nodes) >> >> However, as I recall, the general consensus was that this was extra >> >> complexity that wasn=92t really worth it. If it ain=92t broke=85 >> >> >> >> Hope that this helps. >> >> >> >> *Peter Marron* >> >> Senior Developer, Research & Development >> >> >> >> Office: +44 *(0) 118-940-7609* peter.marron@trilliumsoftware.com >> >> Theale Court First Floor, 11-13 High Street, Theale, RG7 5AH, UK >> >> >> >> >> >> >> >> >> >> *www.trilliumsoftware.com * >> >> Be Certain About Your Data. Be Trillium Certain. >> >> >> >> *From:* ch huang [mailto:justlooks@gmail.com ] >> *Sent:* 10 December 2013 01:21 >> *To:* user@hadoop.apache.org >> *Subject:* Re: how to handle the corrupt block in HDFS? >> >> >> >> more strange , in my HDFS cluster ,every block has three replicas,but i >> find some one has ten replicas ,why? >> >> >> >> # sudo -u hdfs hadoop fs -ls >> /data/hisstage/helen/.staging/job_1385542328307_0915 >> Found 5 items >> -rw-r--r-- 3 helen hadoop 7 2013-11-29 14:01 >> /data/hisstage/helen/.staging/job_1385542328307_0915/appTokens >> -rw-r--r-- 10 helen hadoop 2977839 2013-11-29 14:01 >> /data/hisstage/helen/.staging/job_1385542328307_0915/job.jar >> -rw-r--r-- 10 helen hadoop 3696 2013-11-29 14:01 >> /data/hisstage/helen/.staging/job_1385542328307_0915/job.split >> >> On Tue, Dec 10, 2013 at 9:15 AM, ch huang wrote: >> >> the strange thing is when i use the following command i find 1 corrupt >> block >> >> >> >> # curl -s http://ch11:50070/jmx |grep orrupt >> "CorruptBlocks" : 1, >> >> but when i run hdfs fsck / , i get none ,everything seems fine >> >> >> >> # sudo -u hdfs hdfs fsck / >> >> ........ >> >> >> >> ....................................Status: HEALTHY >> Total size: 1479728140875 B (Total open files size: 1677721600 B) >> Total dirs: 21298 >> Total files: 100636 (Files currently being written: 25) >> Total blocks (validated): 119788 (avg. block size 12352891 B) >> (Total open file blocks (not validated): 37) >> Minimally replicated blocks: 119788 (100.0 %) >> Over-replicated blocks: 0 (0.0 %) >> Under-replicated blocks: 166 (0.13857816 %) >> Mis-replicated blocks: 0 (0.0 %) >> Default replication factor: 3 >> Average block replication: 3.0027633 >> Corrupt blocks: 0 >> Missing replicas: 831 (0.23049656 %) >> Number of data-nodes: 5 >> Number of racks: 1 >> FSCK ended at Tue Dec 10 09:14:48 CST 2013 in 3276 milliseconds >> >> >> The filesystem under path '/' is HEALTHY >> >> On Tue, Dec 10, 2013 at 8:32 AM, ch huang wrote: >> >> hi,maillist: >> >> my nagios alert me that there is a corrupt block in HDFS all >> day,but i do not know how to remove it,and if the HDFS will handle this >> automaticlly? and if remove the corrupt block will cause any data >> lost?thanks >> >> >> >> >> > > --20cf302238eb111d9004ed389061 Content-Type: text/html; charset=windows-1252 Content-Transfer-Encoding: quoted-printable
Maybe this can work for you
$=A0sudo -u hdfs hdfs fsck= / -list-corruptfileblocks
?


2013/12/11 ch huang = <justlooks@gmai= l.com>
thanks for reply, what i do not know is how = can i locate the block which has the corrupt replica,(so i can observe how = long the corrupt replica will be removed and a new health replica replace i= t,because i get nagios alert for three days,i do not sure if it is the same= corrupt replica cause the alert ,and i do not know the interval of hdfs ch= eck corrupt replica and clean it)


On Tue, Dec 10, 2013 at 6:20 PM, Vinayakumar B <= span dir=3D"ltr"><vinayakumar.b@huawei.com> wrote:

Hi ch huang,

=A0

It may seem strange, but the fa= ct is,

CorruptBlocks through JM= X means =93Number of blocks with corrupt replicas=94. May not be all rep= licas are corrupt. =A0This you can check though jconsole for descriptio= n.

=A0

Where as Corrupt blocks = through fsck means, blocks with all replicas corrupt(non-recoverable)/ m= issing.

=A0

In your case, may be one of the= replica is corrupt, not all replicas of same block. This corrupt replica w= ill be deleted automatically if one more datanode available in your cluster= and block replicated to that.

=A0

=A0

Related to replication 10, As P= eter Marron said, some of the important files of the mapreduce job will = set the replication of 10, to make it accessible faster and launch map task= s faster.

Anyway, if the job is success t= hese files will be deleted auomatically. I think only in some cases if the = jobs are killed in between these files will remain in hdfs showing underrep= licated blocks.

=A0

Thanks and Regards,

Vinayakumar B

=A0

From: Peter Marron [mailto= :Pet= er.Marron@trilliumsoftware.com]
Sent: 10 December 2013 14:19
To: user@hadoop.apache.org
Subject= : RE: how to handle the corrupt block in HDFS?

=A0

Hi,

=A0

I am sure that t= here are others who will answer this better, but anyway.

The default repl= ication level for files in HDFS is 3 and so most files that you

see will have a = replication level of 3. However when you run a Map/Reduce

job the system k= nows in advance that every node will need a copy of

certain files. S= pecifically the job.xml and the various jars containing

classes that wil= l be needed to run the mappers and reducers. So the

system arranges = that some of these files have a higher replication level. This increases=

the chances that= a copy will be found locally.

By default this = higher replication level is 10.

=A0

This can seem a = little odd on a cluster where you only have, say, 3 nodes.

Because it means= that you will almost always have some blocks that are marked=

under-replicated= . I think that there was some discussion a while back to change

this to make the= replication level something like min(10, #number of nodes)

However, as I re= call, the general consensus was that this was extra

complexity that = wasn=92t really worth it. If it ain=92t broke=85

=A0

Hope that this h= elps.

=A0

Peter Marron

Senior Developer, Research & Development<= /u>

=A0

Office: +44 (0) 118-940-7609=A0 peter.marro= n@trilliumsoftware.com

Theale Court First Floor, 11-13 High Street, The= ale, RG7 5AH, UK

= =A0

www.trilliumsoftware.com=

Be Certain About Your Data. Be Tri= llium Certain.

=A0

From: ch huang [mailto:justlooks@gmail.com]
Sent: 10 December 2013 01:21
To:
user@hadoop.apache.org
Subject= : Re: how to handle the corrupt block in HDFS?

=A0

more strange , in my HDFS clust= er ,every block has three replicas,but i find some one has ten replicas ,wh= y?

=A0

# = sudo -u hdfs hadoop fs -ls /data/hisstage/helen/.staging/job_1385542328307_= 0915
Found 5 items
-rw-r--r--=A0=A0 3 helen hadoop=A0=A0=A0=A0=A0=A0= =A0=A0=A0 7 2013-11-29 14:01 /data/hisstage/helen/.staging/job_138554232830= 7_0915/appTokens
-rw-r--r--=A0 10 helen hadoop=A0=A0=A0 2977839 2013-11-29 14:01 /data/hisst= age/helen/.staging/job_1385542328307_0915/job.jar
-rw-r--r--=A0 10 helen= hadoop=A0=A0=A0=A0=A0=A0 3696 2013-11-29 14:01 /data/hisstage/helen/.stagi= ng/job_1385542328307_0915/job.split

On Tue, Dec 10, 2013 at 9:15 AM= , ch huang <jus= tlooks@gmail.com> wrote:

the strange thing is when i use= the following command i find 1 corrupt block

=A0

#=A0 curl -s http://ch11:50070/jmx |grep orrupt=A0=A0=A0 "CorruptBlocks" : 1,

but when i run hdfs fsck / , i = get none ,everything seems fine

=A0

# sudo -u hdfs hdfs fsck /

........

=A0

...............................= .....Status: HEALTHY
=A0Total size:=A0=A0=A0 1479728140875 B (Total open= files size: 1677721600 B)
=A0Total dirs:=A0=A0=A0 21298
=A0Total fil= es:=A0=A0 100636 (Files currently being written: 25)
=A0Total blocks (validated):=A0=A0=A0=A0=A0 119788 (avg. block size 12352891 B) (= Total open file blocks (not validated): 37)
=A0Minimally replicated bloc= ks:=A0=A0 119788 (100.0 %)
=A0Over-replicated blocks:=A0=A0=A0=A0=A0=A0=A0 0 (0.0 %)
=A0Under-repli= cated blocks:=A0=A0=A0=A0=A0=A0 166 (0.13857816 %)
=A0Mis-replicated blocks:=A0=A0=A0=A0=A0=A0=A0=A0 0 (0.0 %)
=A0Default r= eplication factor:=A0=A0=A0 3
=A0Average block replication:=A0=A0=A0=A0 = 3.0027633
=A0Corrupt blocks:=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0= =A0 0
=A0Missing replicas:=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 831 (0= .23049656<= /a> %)
=A0Number of data-nodes:=A0=A0=A0=A0=A0=A0=A0=A0=A0 5
=A0Number of racks:=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 1
FSCK end= ed at Tue Dec 10 09:14:48 CST 2013 in 3276 milliseconds

The filesystem under path '/' is HEALTHY

=

On Tue, Dec 10, 2013 at 8:32 AM= , ch huang <jus= tlooks@gmail.com> wrote:

hi,maillist:

=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0= =A0 my nagios alert me that there is a corrupt block in HDFS all day,but i = do not know how to remove it,and if the HDFS will handle this automaticlly?= and if remove the corrupt block will cause any data lost?thanks<= /u>

=A0

=A0



--20cf302238eb111d9004ed389061-- --20cf302238eb111d9504ed389062 Content-Type: image/png; name="image004.png" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: a28399808923c4c3_0.4 iVBORw0KGgoAAAANSUhEUgAAABAAAAAkCAYAAACAGLraAAAAAXNSR0IArs4c6QAAAAlwSFlzAAAO xAAADsQBlSsOGwAAABl0RVh0U29mdHdhcmUATWljcm9zb2Z0IE9mZmljZX/tNXEAAAJTSURBVEhL 7VRLaxNRFP6SeeVRkaKipFgKpcSCiOjChbGELgV/gOLCLAQRBLeCINl0Ieim4MJF0YW7IoK4q+7E iLjwsbBVSYNErE2ieU9mJjN+dx5NFEyo3UkOczNzz73nu+d+3zmRs9ksdmLyToJF7AhgxMH/Ugc3 Ng5chRq7BEPfXlvIKmB1PslwQuehaEnYXTo4QiFWh+SBOQMwxb5ILCkzoAmzA+htTIyPoWFYqDZb PZC/YYTCAM/zulE3cObIFB5k5lFu6kjffoxCuQ4ofiYDEvEATBtHD+7BrpjqjsR4HIXv1W0AxDXc evoOtbaBb9UWcvkNckFgZoMwUw1zYtkeKYIfTdnKycvAtjG1d4w3sbA7okJVFcwlJ3Bich9WSzXk S3VcTM3CcRzcy60ht1YEohE31OfAxPzMNBbPpVznw/cFnD0+jcypWZhURglU4VrmZBKpm4/wKr9J FRQfgJLoQkKRDE/hgyazESaC7z//gEKlgWunj0Hl/HL6MDIfV3ijAGAAy59J5oWlZ0Crg/RMAnOH EpgkyZA8hYb+qZZJLCSSqMkoCVJpXbtXYUMBwqLi/CEJNf6wLYBgyQ2g+S8q2AsKvvt9PYC+jS6A Wwg9oP7v/q0eQFTF8tt1vFzYdPvnJ0t7YeUN7uZW0TKpjsRiYn1cWX6B609eo66boBxusfHXibOr UGk3UPnC8hWmqSjWTBR/sMnEvbWo616vkES77fki9DEVAbMEox1Cl2zzINfEqcKCuV8Tv/ks0Y1G Qc7u/3qHC2L8kw2VcRjqCAD4BYfBu8ijqyfmAAAAAElFTkSuQmCC --20cf302238eb111d9504ed389062 Content-Type: image/png; name="image001.png" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: a28399808923c4c3_0.1 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 --20cf302238eb111d9504ed389062 Content-Type: image/png; name="image002.png" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: a28399808923c4c3_0.2 iVBORw0KGgoAAAANSUhEUgAAABEAAAAjCAYAAABy3+FcAAAAAXNSR0IArs4c6QAAAAlwSFlzAAAO xAAADsQBlSsOGwAAABl0RVh0U29mdHdhcmUATWljcm9zb2Z0IE9mZmljZX/tNXEAAANbSURBVEhL 7VVtbBRFGH53dm4/7qu9GOEM8KPQJq1WSwR/eIZKJPyxaTCgoiGRmBDShKiEmqr84Nz6QyUIMWJS MGIMkQ8VIkQIiQVCSBpIY0tNybUEqml6l7a0vb27ve7u7OyMc+dHIPWaIP+UdzLZHzvzvO887/PM YMMw4H4D3y9Aaf8DkLksPuDk/8NJorl5leM4YY9SkBHi83kKMSQFgzplzLva09OTL+ukacXKr3xC 13DGr2FAAEya15dM4pxQGieEqIlEohnH43FN4tIaj9CX+vt6r96Lq5c/+dSAQ+njOBaLibQ8C1gq 3AtAaa2o+Tfxkf+QvSTGv7gWBHG4VME/eqej7uJq7SFlqTWUurTX3HIrmUyi+m8zLxQoRNI3sqcN 6fvsnVXPAXl3Wfc2JSzvh/wkqAjMN3hX4pNvptssVX3TJAQg7A8kactqwz1j/gWEU6mU/eiKVb4G frmtvpN7BXwLCpM2RMK4Oour1hcsui4/LZI7swBqqAms2TpBQK+OfPaY7ln47YcPG8N+qPaU2m4i 6AF/ZmI3UZQnZBaIZsb84Rid+JrjPIOA/wH4kgzjmR8N7UJvKeEAiQTfSkf3YOwVf2ma+YI25o99 J9XpB6iWuJgbGW6tCrDFUkT5+TN36xjEavdB7uYguKq+tNbtOxTY3FLk6LXiNE/YVmEP/shsO7Ej +2G//sjC/bIWPMRsk0UXRNI8oDhxVgy/PHP23OfyxmfQ4qj6A99JPrbWLjonLwvS4tSQl3NaDe9k d5nYvdJ7IzAOz3fED7+q6fIRXkgv4RICnwHU6/z1froJ7NkQpEkVXGArwc7d/tSwj27/m9i7BBZa hAAXwPEEx0JJCidweabu/BH32acnUDh4Cj0HLBQCIBm9YosRdRaKFgjxScAYB5l5MMhrMl16uwco B0CFqImYlC4oy/PPuFsnnI6Uf4pCSkdhRAKZekEI5BGwvNgsdBJQAFxvFLQKIEoo+5MzJQ/qUdwI JgPEEUiudxuCTANZFecTAOaUC4QcrAjSmdpc7KjuarEJ3gcULU9bgVQN/dUA5uZFhS9CsTAOtvW+ Eb1yfV7Z7zbbRsWCDbsaBuUvU40+iORG8fg7yYZdO41Upw/RuV6v+Hh1lgDuiDJAhfiPvYC/A+wV dFgq4pO4AAAAAElFTkSuQmCC --20cf302238eb111d9504ed389062 Content-Type: image/png; name="image003.png" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: a28399808923c4c3_0.3 iVBORw0KGgoAAAANSUhEUgAAABUAAAAkCAYAAABmMXGeAAAAAXNSR0IArs4c6QAAAAlwSFlzAAAO xAAADsQBlSsOGwAAABl0RVh0U29mdHdhcmUATWljcm9zb2Z0IE9mZmljZX/tNXEAAANVSURBVEhL 7ZVdaFRHFMfPmZl7dzca86GCfUixVJvsqiUtflUptLQPhULpWxobXaxEBBX0RaGgIYofj6UFEUr9 KJFNSl9aKIiV0icVLT6kNRtJabDQdGOUzZrs/dp7z3hmzUabJjViXgo5cLlz78z85sz//Ode1dnZ CXMdaq6BhjcPnXtV5zWd1/QZFOhIJkUq8dZ6UrF64fr5vvDn653ZbFRBfJbcm1AdHYexqfvOO623 z19+GrtnZdubKXvh5xBBsxQEWgAkxabeTOO6A2BbhKS3Lg3yx1Xqm7+XEcpLmVWfnGq9dWbPTOCe 5PaUlvKisONV0fgogO8AIIKIV70KQl5EqYBKztcKrDo2f/gCSgvlgkW7e1a3N0IU7m/Jnv1tKpwo OqhqFleF+btlWDm0BnKLwFBuUiQsezNh6TvleepPO+6PRcUH1SKWeJc850b3qh3nkOhsH1z7hfWi iQVeocB7DHxiVRSsgxCjoevs/Hig6yeVHvzyXmbltmOYsE9ExQLyNuKiqnoXOeO7mqINfZmmDTdA Uz9nt0SXgmnVQSsG5DwYNMDy9/RCcnsSNS0gd/w2dzbpkg/RWN6sDJx5Ci07ZbbLk0DPkGlZDpQs 8qNQCkp5EtYhVJbWgf84EyIgUwxzVaKi5ZR8eS6g1rcmoS3ZrlymMX1Y1dUfCQv3QYcGPFGIp3ms 0k8R20v8OAk1Dfbo0QuQBhmLt6NQDVzI2eKMRBCNF/4KcNGlf0DLOoDuBWWPUMlvKCeqZ8cViYVA nnsy3f8Fe2tC00ojJBoUgfeyrFkCxObWYem/qexRWbMYwsLI1eXD2dNPDp788rMdes+/1LY2JsQR Lv1GruiLPNC4+t9wA6yuM8YfEhC1vjF6PZwWal6mB7t+59uWzJr2Dq7opxCGUk/VAQWomnq22Ngf 6Dkftgx03Zm6quIz/TopezkFQS1b8zVEfE8IuYKMvXTlMCEgm8/oZ2SJnEK3PzK6L537dng6jRSE ri+k9TZaso31rGUo+9MDaccfjednA9K+W9Bu8TIgnfro16/KJ2emUC0D3ca0e79f9v5B18ZmcsNm ENiAEdVqwKJAyBGI/sATN/lID83GE5OF+iD3gwM5uMKTzPVcMf/ffy75pp38/9H0If8SW0JsdSu8 AAAAAElFTkSuQmCC --20cf302238eb111d9504ed389062--