Return-Path: X-Original-To: apmail-hadoop-mapreduce-user-archive@minotaur.apache.org Delivered-To: apmail-hadoop-mapreduce-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 5BC9E7FBD for ; Tue, 9 Aug 2011 11:54:37 +0000 (UTC) Received: (qmail 62048 invoked by uid 500); 9 Aug 2011 11:54:36 -0000 Delivered-To: apmail-hadoop-mapreduce-user-archive@hadoop.apache.org Received: (qmail 61752 invoked by uid 500); 9 Aug 2011 11:54:32 -0000 Mailing-List: contact mapreduce-user-help@hadoop.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: mapreduce-user@hadoop.apache.org Delivered-To: mailing list mapreduce-user@hadoop.apache.org Received: (qmail 61744 invoked by uid 99); 9 Aug 2011 11:54:31 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 09 Aug 2011 11:54:31 +0000 X-ASF-Spam-Status: No, hits=2.2 required=5.0 tests=HTML_MESSAGE,SPF_PASS X-Spam-Check-By: apache.org Received-SPF: pass (nike.apache.org: domain of tanjun_2525@163.com designates 220.181.13.50 as permitted sender) Received: from [220.181.13.50] (HELO m13-50.163.com) (220.181.13.50) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 09 Aug 2011 11:54:22 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=163.com; s=s110527; h=Received:Date:From:To:Message-ID:In-Reply-To: References:Subject:MIME-Version:Content-Type; bh=hiuSPCLHkKcK5mp nYUIX6Q0vYfBEb8Zzz4LH9Vb3qqM=; b=e8D0bjpKHxuj94QxOeeTxhZ2f5NQK+G dNHTOjE6/TL/ELhNKXQGarARWUSsbro5h50z6ut9ehITuj+jB7ckwGGSD/pKVGFq 4L9VUFz0wywY8iy/kbPaMI23uQGJiHbSFuuLGXdFkXyn2FX5oNbA2kv0zj1WLMSP QNG5l+6Vm5As= Received: from tanjun_2525 ( [58.198.81.126] ) by ajax-webmail-wmsvr50 (Coremail) ; Tue, 9 Aug 2011 19:53:53 +0800 (CST) Date: Tue, 9 Aug 2011 19:53:53 +0800 (CST) From: =?GBK?B?zLe+/A==?= To: mapreduce-user@hadoop.apache.org, subroto.sanyal@huawei.com Message-ID: <50c9cec7.a24f.131ae6449d2.Coremail.tanjun_2525@163.com> In-Reply-To: References: <1aa9650.3e21.131ad3a1fb0.Coremail.tanjun_2525@163.com> <35fa24.4285.131ad52bc9c.Coremail.tanjun_2525@163.com> Subject: Re:RE: RE: Can reducer get parameters from mapper besides key and value? MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_Part_131612_902183117.1312890833362" X-Originating-IP: [58.198.81.126] X-Priority: 3 X-Mailer: Coremail Webmail Server Version SP_ntes V3.5 build 110713(13936.3901.3890) Copyright (c) 2002-2011 www.mailtech.cn 163com X-CM-CTRLDATA: qcNfiGZvb3Rlcl9odG09MTU1MjM6ODE= X-CM-TRANSID: MsGowKB7xqfRH0FOwOIoAA--.2579W X-CM-SenderInfo: xwdqy3lqbskjqv6rljoofrz/1tbiWBWWzUsTlV4TQQABsW X-Coremail-Antispam: 1U5529EdanIXcx71UUUUU7vcSsGvfC2KfnxnUU== X-Virus-Checked: Checked by ClamAV on apache.org ------=_Part_131612_902183117.1312890833362 Content-Type: multipart/alternative; boundary="----=_Part_131614_1525330496.1312890833362" ------=_Part_131614_1525330496.1312890833362 Content-Type: text/plain; charset=GBK Content-Transfer-Encoding: base64 SGkgU3Vicm90bywKSXQncyB2ZXJ5IGtpbmQgb2YgdSB0byBoZWxwIG1lLgpJIHJlYWxseSBhcHBy ZWNpYXRlIGl0LgpOb3cgSSBhdHRhY2ggdGhlIHNvdXJjZSBjb2RlIG9mIG15IHByb2dyYW0uCkl0 J3MgYWJvdXQgZmluZCBuZWlnaGJvcnMgaW4gYSBncmFnaC4KU3VjaCBhcyBncmFnaCAiIEEtLS1C LS0tLS1DIiwgd2UgZGVmaW5lIG5vZGUgQiBpcyB0aGUgZmlyc3QgbmVpZ2hib3Igb2Ygbm9kZSBB IHdoaWxlIEMgaXMgdGhlIHNlY29uZApUaGUgcHJvZ3JhbSBpcyB0byBmaW5kIHRoZSBmaXJzdCBh bmQgc2Vjb25kIG5laWdoYm9ycyBvZiBBLgpUaGF0J3MgdGhlIHNjZW5hcmlvLgpOb2RlIEEgaXMg aW4gdGhlIGtleSBmaWxlIGFuZCB0aGUgZ3JhZ2gocykgaXMgaW4gdGhlIGRhdGFiYXNlIGZpbGUu CktleSBmaWxlIGlzIGdpdmVuIGJ5IHVzZXJzLiBFYWNoIGxpbmUgb2Yga2V5IGZpbGUgaXMgYSBu b2RlbmFtZSBsaWtlCkEKQgpDCkRhdGFiYXNlIGZpbGUgaXMgaW4gaGRmcyBzZXJ2ZXJzICggaW4g aGFyZCBkaXNrKS4gRWFjaCBsaW5lIGlzIGFuIGVkZ2Ugd2l0aCAyIG5vZGVzIGxpa2UKQSAgQiAg MC41CkIgIEMgIDAuNwowLjUgYW5kIDAuNyBhcmUgd2VpZ2h0cyBvZiB0aGUgZWRnZXMuCkkgY2Fu IGdldCBCIGFjY29yZGluZyB0byB0aGUga2V5IEEgYW5kIGdldCBDIGFjY29yZGluZyB0byBCIGJ5 IG1hcHJlZHVjZQpCdXQgSSB3YW50IHRvIGdldCBCIGFuZCBDIGFjY29yZGluZyB0byB0aGUga2V5 IEEuCk5vdyB0aGUgcHJvZ3JhbSBhdHRhY2hlZCBjYW4gZmluaXNoIG15IGpvYiwgaG93ZXZlciBJ IGRvbid0IHRoaW5rIGl0J3MgZ29vZCBlbm91Z2guCkl0J3MgdG9vIHRpbWUgY29zdC4gSXQncyBu b3QgdGhlIHByb2dyYW0gSSB3YW50ZWQuCiAKTWF5YmUgdSBjYW4gaGVscCBtZS4KVGhhbmtzIHZl cnkgbXVjaCEKCi0tCgoKUmVnYXJkcyEKCkp1biBUYW4KCgpBdCAyMDExLTA4LTA5IDE5OjE2OjE3 LCJTdWJyb3RvIFNhbnlhbCIgPHN1YnJvdG9zYW55YWxAaHVhd2VpLmNvbT4gd3JvdGU6CgoKSGkg SnVuCgogCgpJIG1lYW4gdGhhdCBpZiBJIGdldCBzb21lIHN0cmluZ3MgaW4gbWFwcGVyIGFuZCBJ IHdhbnQgdG8gdXNlIHRoZW0gaW4gcmVkdWNlci4KCkJ1dCB0aGV5IGFyZSBuZWl0aGVyIGtleXMg bm9yIHZhbHVlcy4KCkFzIHBlciBteSB1bmRlcnN0YW5kaW5nLCB0aGVyZSBpcyBubyBzdWNoIHdh eSB0byBwYXNzIGFuIGFyYml0cmFyeSByZWZlcmVuY2UgZnJvbSBNYXBwZXIgdG8gUmVkdWNlci4K ClRoZSBpbmZvcm1hdGlvbiB3cml0dGVuIGluIE91dHB1dCBmcm9tIE1hcHBlciBpcyBhdmFpbGFi bGUgdG8gUmVkdWNlci4KCkZ1cnRoZXIgbW9yZSwgSSBkb26hr3QgZmVlbCBpdCB3aWxsIGJlIGdv b2QgaWRlYSB0byBrZWVwIHN1Y2ggZGVwZW5kZW5jeS4KClBsZWFzZSBsZXQgbWUga25vdyBtb3Jl IGFib3V0IHlvdXIgc2NlbmFyaW+hrW1heSBiZSB3ZS9jb21tdW5pdHkgY2FuIHN1Z2dlc3Qgc29t ZSBzb2x1dGlvbqGtCgogCgpCeSB0aGUgd2F5LCBDYW4gcmVkdWNlciBnZXQgc2lkZSBmaWxlcyBp biBjYWNoZT8KClBsZWFzZSBsZXQgbWUga25vdyBhYm91dCChsFNpZGUgRmlsZXOhsaGtLi4KCiAK ClJlZ2FyZHMsClN1YnJvdG8gU2FueWFsCgpGcm9tOsy3vvwgW21haWx0bzp0YW5qdW5fMjUyNUAx NjMuY29tXQpTZW50OiBUdWVzZGF5LCBBdWd1c3QgMDksIDIwMTEgMTI6MjUgUE0KVG86bWFwcmVk dWNlLXVzZXJAaGFkb29wLmFwYWNoZS5vcmc7c3Vicm90by5zYW55YWxAaHVhd2VpLmNvbQpTdWJq ZWN0OiBSZTpSRTogQ2FuIHJlZHVjZXIgZ2V0IHBhcmFtZXRlcnMgZnJvbSBtYXBwZXIgYmVzaWRl cyBrZXkgYW5kIHZhbHVlPwoKIAoKSGkgU3Vicm90bywKCkkgbWVhbiB0aGF0IGlmIEkgZ2V0IHNv bWUgc3RyaW5ncyBpbiBtYXBwZXIgYW5kIEkgd2FudCB0byB1c2UgdGhlbSBpbiByZWR1Y2VyLgoK QnV0IHRoZXkgYXJlIG5laXRoZXIga2V5cyBub3IgdmFsdWVzLgoKIAoKQnkgdGhlIHdheSwgQ2Fu IHJlZHVjZXIgZ2V0IHNpZGUgZmlsZXMgaW4gY2FjaGU/CgogCgotLQoKUmVnYXJkcyEKCkp1biBU YW4KCgpBdCAyMDExLTA4LTA5IDE0OjQyOjEwLCJTdWJyb3RvIFNhbnlhbCIgPHN1YnJvdG9zYW55 YWxAaHVhd2VpLmNvbT4gd3JvdGU6CgoKCiAKCkhpIEp1biwKCiAKCldoYXQgaXMgdGhlIGZpbGUs IGxpc3QsIHN0cmluZyBbXSBpbiB0aGlzIGNvbnRleHQ/CgpJIG1lYW4gdG8gc2F5IHdoaWNoIGZp bGUgb3IgbGlzdCBvciBzdHJpbmdbXS4KCiAKClRoZSBuZXcgTVIgKG9yZy5hcGFjaGUuaGFkb29w Lm1hcHJlZHVjZS4qKSBBUElzIGhhcyBhIHBhcmFtZXRlciChsGNvbnRleHShsS4gUmVxdWVzdCB5 b3UgdG8gYnJvd3NlIHRocm91Z2ggdGhlIEFQSXMgb2YgQ29udGV4dCAoSW5oZXJpdGVkIGZyb20g Sm9iQ29udGV4dC0+VGFza0F0dGVtcHRDb250ZXh0KS4KClRoZSBjb250ZXh0IHBhcmFtZXRlciBt YXkgcHJvdmlkZSB5b3UgdGhlIHJlZmVyZW5jZSB5b3UgbmVlZC4KCiAKClJlZ2FyZHMsClN1YnJv dG8gU2FueWFsCgpGcm9tOsy3vvwgW21haWx0bzp0YW5qdW5fMjUyNUAxNjMuY29tXQpTZW50OiBU dWVzZGF5LCBBdWd1c3QgMDksIDIwMTEgMTE6NTggQU0KVG86IG1hcHJlZHVjZQpTdWJqZWN0OiBD YW4gcmVkdWNlciBnZXQgcGFyYW1ldGVycyBmcm9tIG1hcHBlciBiZXNpZGVzIGtleSBhbmQgdmFs dWU/CgogCgpIaSwKCkNhbiByZWR1Y2VyIGdldHMgcGFyYW1ldGVycyBmcm9tIG1hcHBlciBiZXNp ZGVzIGtleSBhbmQgdmFsdWU/CgpTdWNoIGFzIGZpbGVzLCBsaXN0cywgc3RyaW5nW10gZXRjLgoK VGhhbmtzCgoKCgotLQoKUmVnYXJkcyEKCkp1biBUYW4KCgoKCgoKCgoKCg== ------=_Part_131614_1525330496.1312890833362 Content-Type: text/html; charset=GBK Content-Transfer-Encoding: base64 PGRpdiBzdHlsZT0ibGluZS1oZWlnaHQ6MS43O2NvbG9yOiMwMDAwMDA7Zm9udC1zaXplOjE0cHg7 Zm9udC1mYW1pbHk6YXJpYWwiPjxESVY+SGkgU3Vicm90byw8L0RJVj4KPERJVj5JdCdzIHZlcnkg a2luZCBvZiZuYnNwO3UgdG8gaGVscCBtZS48L0RJVj4KPERJVj5JIHJlYWxseSBhcHByZWNpYXRl IGl0LjwvRElWPgo8RElWPk5vdyBJJm5ic3A7YXR0YWNoIHRoZSZuYnNwO3NvdXJjZSBjb2RlIG9m IG15IHByb2dyYW0uPC9ESVY+CjxESVY+SXQncyBhYm91dCZuYnNwO2ZpbmQmbmJzcDtuZWlnaGJv cnMgaW4gYSBncmFnaC48L0RJVj4KPERJVj5TdWNoIGFzIGdyYWdoJm5ic3A7IiBBLS0tQi0tLS0t QyIsIHdlIGRlZmluZSBub2RlIEIgaXMgdGhlIGZpcnN0IG5laWdoYm9yIG9mIG5vZGUgQSB3aGls ZSBDIGlzIHRoZSBzZWNvbmQ8L0RJVj4KPERJVj5UaGUgcHJvZ3JhbSBpcyB0byBmaW5kIHRoZSBm aXJzdCBhbmQgc2Vjb25kIG5laWdoYm9ycyBvZiBBLjwvRElWPgo8RElWPlRoYXQncyB0aGUgc2Nl bmFyaW8uPC9ESVY+CjxESVY+Tm9kZSBBIGlzIGluIHRoZSBrZXkgZmlsZSBhbmQgdGhlIGdyYWdo KHMpIGlzIGluIHRoZSBkYXRhYmFzZSBmaWxlLjwvRElWPgo8RElWPktleSBmaWxlJm5ic3A7aXMg Z2l2ZW4gYnkgdXNlcnMuIEVhY2ggbGluZSBvZiBrZXkgZmlsZSBpcyBhIG5vZGVuYW1lIGxpa2Ug PC9ESVY+CjxESVY+QTwvRElWPgo8RElWPkI8L0RJVj4KPERJVj5DPC9ESVY+CjxESVY+RGF0YWJh c2UgZmlsZSBpcyBpbiBoZGZzIHNlcnZlcnMgKCBpbiBoYXJkIGRpc2spLiBFYWNoIGxpbmUgaXMg YW4gZWRnZSB3aXRoIDIgbm9kZXMgbGlrZSA8L0RJVj4KPERJVj5BJm5ic3A7IEImbmJzcDsgMC41 PC9ESVY+CjxESVY+QiZuYnNwOyBDJm5ic3A7IDAuNzwvRElWPgo8RElWPjAuNSZuYnNwO2FuZCAw LjcmbmJzcDthcmUgd2VpZ2h0cyBvZiB0aGUgZWRnZXMuPC9ESVY+CjxESVY+SSBjYW4gZ2V0IEIg YWNjb3JkaW5nIHRvJm5ic3A7dGhlIGtleSBBIGFuZCBnZXQgQyBhY2NvcmRpbmcgdG8gQiBieSBt YXByZWR1Y2U8L0RJVj4KPERJVj5CdXQgSSB3YW50IHRvIGdldCBCIGFuZCBDIGFjY29yZGluZyB0 byB0aGUga2V5IEEuPC9ESVY+CjxESVY+Tm93IHRoZSBwcm9ncmFtJm5ic3A7YXR0YWNoZWQgY2Fu IGZpbmlzaCBteSBqb2IsIGhvd2V2ZXIgSSBkb24ndCB0aGluayBpdCdzIGdvb2QgZW5vdWdoLjwv RElWPgo8RElWPkl0J3MgdG9vIHRpbWUgY29zdC4gSXQncyBub3QgdGhlIHByb2dyYW0gSSB3YW50 ZWQuPC9ESVY+CjxESVY+Jm5ic3A7PC9ESVY+CjxESVY+TWF5YmUgdSBjYW4gaGVscCBtZS48L0RJ Vj4KPERJVj5UaGFua3MgdmVyeSBtdWNoITxCUj48L0RJVj4KPERJVj4tLTxCUj4KPERJVj4KPERJ Vj4KPFA+UmVnYXJkcyE8L1A+CjxQPkp1biBUYW48L1A+PC9ESVY+PC9ESVY+PC9ESVY+PEJSPkF0 IDIwMTEtMDgtMDkgMTk6MTY6MTcsIlN1YnJvdG8mbmJzcDtTYW55YWwiJm5ic3A7Jmx0O3N1YnJv dG9zYW55YWxAaHVhd2VpLmNvbSZndDsgd3JvdGU6PEJSPgo8QkxPQ0tRVU9URSBzdHlsZT0iQk9S REVSLUxFRlQ6ICNjY2MgMXB4IHNvbGlkOyBNQVJHSU46IDBweCAwcHggMHB4IDAuOGV4OyBQQURE SU5HLUxFRlQ6IDFleCIgaWQ9ImlzUmVwbHlDb250ZW50Ij48bzpTbWFydFRhZ1R5cGUgbmFtZT0i UGVyc29uTmFtZSIgbmFtZXNwYWNldXJpPSJ1cm46c2NoZW1hcy1taWNyb3NvZnQtY29tOm9mZmlj ZTpzbWFydHRhZ3MiPjwvbzpTbWFydFRhZ1R5cGU+CjxTVFlMRT48L1NUWUxFPgoKPERJViBjbGFz cz0iU2VjdGlvbjEiPgo8UCBjbGFzcz0iTXNvTm9ybWFsIj48Rk9OVCBjb2xvcj0ibmF2eSIgc2l6 ZT0iMiIgZmFjZT0iQXJpYWwiPjxTUEFOIHN0eWxlPSJGT05ULUZBTUlMWTogQXJpYWw7IENPTE9S OiBuYXZ5OyBGT05ULVNJWkU6IDEwcHQiPkhpIEp1bjxvOnA+PC9vOnA+PC9TUEFOPjwvRk9OVD48 L1A+CjxQIGNsYXNzPSJNc29Ob3JtYWwiPjxGT05UIGNvbG9yPSJuYXZ5IiBzaXplPSIyIiBmYWNl PSJBcmlhbCI+PFNQQU4gc3R5bGU9IkZPTlQtRkFNSUxZOiBBcmlhbDsgQ09MT1I6IG5hdnk7IEZP TlQtU0laRTogMTBwdCI+PG86cD4mbmJzcDs8L286cD48L1NQQU4+PC9GT05UPjwvUD4KPFAgY2xh c3M9Ik1zb05vcm1hbCI+PEZPTlQgY29sb3I9ImJsYWNrIiBzaXplPSIyIiBmYWNlPSJBcmlhbCI+ PFNQQU4gc3R5bGU9IkZPTlQtRkFNSUxZOiBBcmlhbDsgQ09MT1I6IGJsYWNrOyBGT05ULVNJWkU6 IDEwLjVwdCI+SSBtZWFuIHRoYXQgaWYgSSBnZXQgc29tZSBzdHJpbmdzIGluIG1hcHBlciBhbmQg SSB3YW50IHRvIHVzZSB0aGVtIGluIHJlZHVjZXIuPG86cD48L286cD48L1NQQU4+PC9GT05UPjwv UD4KPFAgY2xhc3M9Ik1zb05vcm1hbCI+PEZPTlQgY29sb3I9ImJsYWNrIiBzaXplPSIyIiBmYWNl PSJBcmlhbCI+PFNQQU4gc3R5bGU9IkZPTlQtRkFNSUxZOiBBcmlhbDsgQ09MT1I6IGJsYWNrOyBG T05ULVNJWkU6IDEwLjVwdCI+QnV0IHRoZXkgYXJlIG5laXRoZXIga2V5cyBub3IgdmFsdWVzLjxv OnA+PC9vOnA+PC9TUEFOPjwvRk9OVD48L1A+CjxQIGNsYXNzPSJNc29Ob3JtYWwiPjxGT05UIGNv bG9yPSJuYXZ5IiBzaXplPSIyIiBmYWNlPSJBcmlhbCI+PFNQQU4gc3R5bGU9IkZPTlQtRkFNSUxZ OiBBcmlhbDsgQ09MT1I6IG5hdnk7IEZPTlQtU0laRTogMTBwdCI+QXMgcGVyIG15IHVuZGVyc3Rh bmRpbmcsIHRoZXJlIGlzIG5vIHN1Y2ggd2F5IHRvIHBhc3MgYW4gYXJiaXRyYXJ5IHJlZmVyZW5j ZSBmcm9tIE1hcHBlciB0byBSZWR1Y2VyLjxvOnA+PC9vOnA+PC9TUEFOPjwvRk9OVD48L1A+CjxQ IGNsYXNzPSJNc29Ob3JtYWwiPjxGT05UIGNvbG9yPSJuYXZ5IiBzaXplPSIyIiBmYWNlPSJBcmlh bCI+PFNQQU4gc3R5bGU9IkZPTlQtRkFNSUxZOiBBcmlhbDsgQ09MT1I6IG5hdnk7IEZPTlQtU0la RTogMTBwdCI+VGhlIGluZm9ybWF0aW9uIHdyaXR0ZW4gaW4gT3V0cHV0IGZyb20gTWFwcGVyIGlz IGF2YWlsYWJsZSB0byBSZWR1Y2VyLjxvOnA+PC9vOnA+PC9TUEFOPjwvRk9OVD48L1A+CjxQIGNs YXNzPSJNc29Ob3JtYWwiPjxGT05UIGNvbG9yPSJuYXZ5IiBzaXplPSIyIiBmYWNlPSJBcmlhbCI+ PFNQQU4gc3R5bGU9IkZPTlQtRkFNSUxZOiBBcmlhbDsgQ09MT1I6IG5hdnk7IEZPTlQtU0laRTog MTBwdCI+RnVydGhlciBtb3JlLCBJIGRvbqGvdCBmZWVsIGl0IHdpbGwgYmUgZ29vZCBpZGVhIHRv IGtlZXAgc3VjaCBkZXBlbmRlbmN5LjxvOnA+PC9vOnA+PC9TUEFOPjwvRk9OVD48L1A+CjxQIGNs YXNzPSJNc29Ob3JtYWwiPjxGT05UIGNvbG9yPSJuYXZ5IiBzaXplPSIyIiBmYWNlPSJBcmlhbCI+ PFNQQU4gc3R5bGU9IkZPTlQtRkFNSUxZOiBBcmlhbDsgQ09MT1I6IG5hdnk7IEZPTlQtU0laRTog MTBwdCI+UGxlYXNlIGxldCBtZSBrbm93IG1vcmUgYWJvdXQgeW91ciBzY2VuYXJpb6GtbWF5IGJl IHdlL2NvbW11bml0eSBjYW4gc3VnZ2VzdCBzb21lIHNvbHV0aW9uoa08bzpwPjwvbzpwPjwvU1BB Tj48L0ZPTlQ+PC9QPgo8UCBjbGFzcz0iTXNvTm9ybWFsIj48Rk9OVCBjb2xvcj0ibmF2eSIgc2l6 ZT0iMiIgZmFjZT0iQXJpYWwiPjxTUEFOIHN0eWxlPSJGT05ULUZBTUlMWTogQXJpYWw7IENPTE9S OiBuYXZ5OyBGT05ULVNJWkU6IDEwcHQiPjxvOnA+Jm5ic3A7PC9vOnA+PC9TUEFOPjwvRk9OVD48 L1A+CjxQIGNsYXNzPSJNc29Ob3JtYWwiPjxGT05UIGNvbG9yPSJibGFjayIgc2l6ZT0iMiIgZmFj ZT0iQXJpYWwiPjxTUEFOIHN0eWxlPSJGT05ULUZBTUlMWTogQXJpYWw7IENPTE9SOiBibGFjazsg Rk9OVC1TSVpFOiAxMC41cHQiPkJ5IHRoZSB3YXksIENhbiZuYnNwO3JlZHVjZXIgZ2V0IHNpZGUg ZmlsZXMgaW4gY2FjaGU/PG86cD48L286cD48L1NQQU4+PC9GT05UPjwvUD4KPFAgY2xhc3M9Ik1z b05vcm1hbCI+PEZPTlQgY29sb3I9Im5hdnkiIHNpemU9IjIiIGZhY2U9IkFyaWFsIj48U1BBTiBz dHlsZT0iRk9OVC1GQU1JTFk6IEFyaWFsOyBDT0xPUjogbmF2eTsgRk9OVC1TSVpFOiAxMHB0Ij5Q bGVhc2UgbGV0IG1lIGtub3cgYWJvdXQgobBTaWRlIEZpbGVzobGhrS4uPG86cD48L286cD48L1NQ QU4+PC9GT05UPjwvUD4KPFAgY2xhc3M9Ik1zb05vcm1hbCI+PEZPTlQgY29sb3I9Im5hdnkiIHNp emU9IjIiIGZhY2U9IkFyaWFsIj48U1BBTiBzdHlsZT0iRk9OVC1GQU1JTFk6IEFyaWFsOyBDT0xP UjogbmF2eTsgRk9OVC1TSVpFOiAxMHB0Ij48bzpwPiZuYnNwOzwvbzpwPjwvU1BBTj48L0ZPTlQ+ PC9QPgo8RElWPgo8UCBjbGFzcz0iTXNvTm9ybWFsIj48Qj48Rk9OVCBjb2xvcj0ibmF2eSIgc2l6 ZT0iMyIgZmFjZT0iQXJpYWwiPjxTUEFOIHN0eWxlPSJGT05ULUZBTUlMWTogQXJpYWw7IENPTE9S OiBuYXZ5OyBGT05ULVNJWkU6IDEycHQ7IEZPTlQtV0VJR0hUOiBib2xkIj5SZWdhcmRzLDwvU1BB Tj48L0ZPTlQ+PC9CPjxGT05UIGNvbG9yPSJuYXZ5Ij48U1BBTiBzdHlsZT0iQ09MT1I6IG5hdnki PiA8QlI+U3Vicm90byBTYW55YWw8L1NQQU4+PC9GT05UPjxvOnA+PC9vOnA+PC9QPjwvRElWPgo8 RElWPgo8RElWIHN0eWxlPSJURVhULUFMSUdOOiBjZW50ZXIiIGNsYXNzPSJNc29Ob3JtYWwiIGFs aWduPSJjZW50ZXIiPjxGT05UIHNpemU9IjMiIGZhY2U9IlNpbVN1biI+PFNQQU4gc3R5bGU9IkZP TlQtU0laRTogMTJwdCI+CjxIUiB0YWJJbmRleD0iLTEiIGFsaWduPSJjZW50ZXIiIFNJWkU9IjIi IHdpZHRoPSIxMDAlIj4KPC9TUEFOPjwvRk9OVD48L0RJVj4KPFAgY2xhc3M9Ik1zb05vcm1hbCI+ PEI+PEZPTlQgc2l6ZT0iMiIgZmFjZT0iVGFob21hIj48U1BBTiBzdHlsZT0iRk9OVC1GQU1JTFk6 IFRhaG9tYTsgRk9OVC1TSVpFOiAxMHB0OyBGT05ULVdFSUdIVDogYm9sZCI+RnJvbTo8L1NQQU4+ PC9GT05UPjwvQj48Rk9OVCBzaXplPSIyIiBmYWNlPSJUYWhvbWEiPjxTUEFOIHN0eWxlPSJGT05U LUZBTUlMWTogVGFob21hOyBGT05ULVNJWkU6IDEwcHQiPiA8L1NQQU4+PC9GT05UPjxGT05UIHNp emU9IjIiPjxTUEFOIHN0eWxlPSJGT05ULVNJWkU6IDEwcHQiIGxhbmc9IlpILUNOIj7Mt778PC9T UEFOPjwvRk9OVD48Rk9OVCBzaXplPSIyIiBmYWNlPSJUYWhvbWEiPjxTUEFOIHN0eWxlPSJGT05U LUZBTUlMWTogVGFob21hOyBGT05ULVNJWkU6IDEwcHQiPiBbbWFpbHRvOjxzdDE6UGVyc29uTmFt ZSB3OnN0PSJvbiI+PEEgaHJlZj0ibWFpbHRvOnRhbmp1bl8yNTI1QDE2My5jb20iPnRhbmp1bl8y NTI1QDE2My5jb208L0E+PC9zdDE6UGVyc29uTmFtZT5dIDxCUj48Qj48U1BBTiBzdHlsZT0iRk9O VC1XRUlHSFQ6IGJvbGQiPlNlbnQ6PC9TUEFOPjwvQj4gVHVlc2RheSwgQXVndXN0IDA5LCAyMDEx IDEyOjI1IFBNPEJSPjxCPjxTUEFOIHN0eWxlPSJGT05ULVdFSUdIVDogYm9sZCI+VG86PC9TUEFO PjwvQj4gPHN0MTpQZXJzb25OYW1lIHc6c3Q9Im9uIj48QSBocmVmPSJtYWlsdG86bWFwcmVkdWNl LXVzZXJAaGFkb29wLmFwYWNoZS5vcmciPm1hcHJlZHVjZS11c2VyQGhhZG9vcC5hcGFjaGUub3Jn PC9BPjwvc3QxOlBlcnNvbk5hbWU+OyA8QSBocmVmPSJtYWlsdG86c3Vicm90by5zYW55YWxAaHVh d2VpLmNvbSI+c3Vicm90by5zYW55YWxAaHVhd2VpLmNvbTwvQT48QlI+PEI+PFNQQU4gc3R5bGU9 IkZPTlQtV0VJR0hUOiBib2xkIj5TdWJqZWN0OjwvU1BBTj48L0I+IFJlOlJFOiBDYW4gcmVkdWNl ciBnZXQgcGFyYW1ldGVycyBmcm9tIG1hcHBlciBiZXNpZGVzIGtleSBhbmQgdmFsdWU/PC9TUEFO PjwvRk9OVD48bzpwPjwvbzpwPjwvUD48L0RJVj4KPFAgY2xhc3M9Ik1zb05vcm1hbCI+PEZPTlQg c2l6ZT0iMyIgZmFjZT0iU2ltU3VuIj48U1BBTiBzdHlsZT0iRk9OVC1TSVpFOiAxMnB0Ij48bzpw PiZuYnNwOzwvbzpwPjwvU1BBTj48L0ZPTlQ+PC9QPgo8RElWPgo8RElWPgo8UCBjbGFzcz0iTXNv Tm9ybWFsIj48Rk9OVCBjb2xvcj0iYmxhY2siIHNpemU9IjIiIGZhY2U9IkFyaWFsIj48U1BBTiBz dHlsZT0iRk9OVC1GQU1JTFk6IEFyaWFsOyBDT0xPUjogYmxhY2s7IEZPTlQtU0laRTogMTAuNXB0 Ij5IaSBTdWJyb3RvLDxvOnA+PC9vOnA+PC9TUEFOPjwvRk9OVD48L1A+PC9ESVY+CjxESVY+CjxQ IGNsYXNzPSJNc29Ob3JtYWwiPjxGT05UIGNvbG9yPSJibGFjayIgc2l6ZT0iMiIgZmFjZT0iQXJp YWwiPjxTUEFOIHN0eWxlPSJGT05ULUZBTUlMWTogQXJpYWw7IENPTE9SOiBibGFjazsgRk9OVC1T SVpFOiAxMC41cHQiPkkgbWVhbiB0aGF0IGlmIEkgZ2V0IHNvbWUgc3RyaW5ncyBpbiBtYXBwZXIg YW5kIEkgd2FudCB0byB1c2UgdGhlbSBpbiByZWR1Y2VyLjxvOnA+PC9vOnA+PC9TUEFOPjwvRk9O VD48L1A+PC9ESVY+CjxESVY+CjxQIGNsYXNzPSJNc29Ob3JtYWwiPjxGT05UIGNvbG9yPSJibGFj ayIgc2l6ZT0iMiIgZmFjZT0iQXJpYWwiPjxTUEFOIHN0eWxlPSJGT05ULUZBTUlMWTogQXJpYWw7 IENPTE9SOiBibGFjazsgRk9OVC1TSVpFOiAxMC41cHQiPkJ1dCB0aGV5IGFyZSBuZWl0aGVyIGtl eXMgbm9yIHZhbHVlcy48bzpwPjwvbzpwPjwvU1BBTj48L0ZPTlQ+PC9QPjwvRElWPgo8RElWPgo8 UCBjbGFzcz0iTXNvTm9ybWFsIj48Rk9OVCBjb2xvcj0iYmxhY2siIHNpemU9IjIiIGZhY2U9IkFy aWFsIj48U1BBTiBzdHlsZT0iRk9OVC1GQU1JTFk6IEFyaWFsOyBDT0xPUjogYmxhY2s7IEZPTlQt U0laRTogMTAuNXB0Ij4mbmJzcDs8bzpwPjwvbzpwPjwvU1BBTj48L0ZPTlQ+PC9QPjwvRElWPgo8 RElWPgo8UCBjbGFzcz0iTXNvTm9ybWFsIj48Rk9OVCBjb2xvcj0iYmxhY2siIHNpemU9IjIiIGZh Y2U9IkFyaWFsIj48U1BBTiBzdHlsZT0iRk9OVC1GQU1JTFk6IEFyaWFsOyBDT0xPUjogYmxhY2s7 IEZPTlQtU0laRTogMTAuNXB0Ij5CeSB0aGUgd2F5LCBDYW4mbmJzcDtyZWR1Y2VyIGdldCBzaWRl IGZpbGVzIGluIGNhY2hlPzxvOnA+PC9vOnA+PC9TUEFOPjwvRk9OVD48L1A+PC9ESVY+CjxESVY+ CjxQIGNsYXNzPSJNc29Ob3JtYWwiPjxGT05UIGNvbG9yPSJibGFjayIgc2l6ZT0iMiIgZmFjZT0i QXJpYWwiPjxTUEFOIHN0eWxlPSJGT05ULUZBTUlMWTogQXJpYWw7IENPTE9SOiBibGFjazsgRk9O VC1TSVpFOiAxMC41cHQiPiZuYnNwOzxvOnA+PC9vOnA+PC9TUEFOPjwvRk9OVD48L1A+PC9ESVY+ CjxESVY+CjxQIGNsYXNzPSJNc29Ob3JtYWwiPjxGT05UIGNvbG9yPSJibGFjayIgc2l6ZT0iMiIg ZmFjZT0iQXJpYWwiPjxTUEFOIHN0eWxlPSJGT05ULUZBTUlMWTogQXJpYWw7IENPTE9SOiBibGFj azsgRk9OVC1TSVpFOiAxMC41cHQiPi0tPG86cD48L286cD48L1NQQU4+PC9GT05UPjwvUD4KPERJ Vj4KPERJVj4KPFA+PEZPTlQgY29sb3I9ImJsYWNrIiBzaXplPSIyIiBmYWNlPSJBcmlhbCI+PFNQ QU4gc3R5bGU9IkZPTlQtRkFNSUxZOiBBcmlhbDsgQ09MT1I6IGJsYWNrOyBGT05ULVNJWkU6IDEw LjVwdCI+UmVnYXJkcyE8bzpwPjwvbzpwPjwvU1BBTj48L0ZPTlQ+PC9QPgo8UD48Rk9OVCBjb2xv cj0iYmxhY2siIHNpemU9IjIiIGZhY2U9IkFyaWFsIj48U1BBTiBzdHlsZT0iRk9OVC1GQU1JTFk6 IEFyaWFsOyBDT0xPUjogYmxhY2s7IEZPTlQtU0laRTogMTAuNXB0Ij5KdW4gVGFuPG86cD48L286 cD48L1NQQU4+PC9GT05UPjwvUD48L0RJVj48L0RJVj48L0RJVj4KPFAgY2xhc3M9Ik1zb05vcm1h bCI+PEZPTlQgY29sb3I9ImJsYWNrIiBzaXplPSIyIiBmYWNlPSJBcmlhbCI+PFNQQU4gc3R5bGU9 IkZPTlQtRkFNSUxZOiBBcmlhbDsgQ09MT1I6IGJsYWNrOyBGT05ULVNJWkU6IDEwLjVwdCI+PEJS PkF0IDIwMTEtMDgtMDkgMTQ6NDI6MTAsIlN1YnJvdG8mbmJzcDtTYW55YWwiJm5ic3A7Jmx0Ozxz dDE6UGVyc29uTmFtZSB3OnN0PSJvbiI+PEEgaHJlZj0ibWFpbHRvOnN1YnJvdG9zYW55YWxAaHVh d2VpLmNvbSI+c3Vicm90b3NhbnlhbEBodWF3ZWkuY29tPC9BPjwvc3QxOlBlcnNvbk5hbWU+Jmd0 OyB3cm90ZTo8QlI+PEJSPjxvOnA+PC9vOnA+PC9TUEFOPjwvRk9OVD48L1A+CjxESVY+CjxQIHN0 eWxlPSJtc28tbWFyZ2luLXRvcC1hbHQ6IGF1dG87IG1zby1tYXJnaW4tYm90dG9tLWFsdDogYXV0 byIgY2xhc3M9Ik1zb05vcm1hbCI+PEZPTlQgY29sb3I9Im5hdnkiIHNpemU9IjIiIGZhY2U9IkFy aWFsIj48U1BBTiBzdHlsZT0iRk9OVC1GQU1JTFk6IEFyaWFsOyBDT0xPUjogbmF2eTsgRk9OVC1T SVpFOiAxMHB0Ij48dTE6cD48dTE6U21hcnRUYWdUeXBlIG5hbWU9IlBlcnNvbk5hbWUiIG5hbWVz cGFjZXVyaT0idXJuOnNjaGVtYXMtbWljcm9zb2Z0LWNvbTpvZmZpY2U6c21hcnR0YWdzIj48L3Ux OlNtYXJ0VGFnVHlwZT4mbmJzcDs8L3UxOnA+PC9TUEFOPjwvRk9OVD48Rk9OVCBjb2xvcj0iYmxh Y2siPjxTUEFOIHN0eWxlPSJDT0xPUjogYmxhY2siPjxvOnA+PC9vOnA+PC9TUEFOPjwvRk9OVD48 L1A+CjxQIHN0eWxlPSJtc28tbWFyZ2luLXRvcC1hbHQ6IGF1dG87IG1zby1tYXJnaW4tYm90dG9t LWFsdDogYXV0byIgY2xhc3M9Ik1zb05vcm1hbCI+PEZPTlQgY29sb3I9Im5hdnkiIHNpemU9IjIi IGZhY2U9IkFyaWFsIj48U1BBTiBzdHlsZT0iRk9OVC1GQU1JTFk6IEFyaWFsOyBDT0xPUjogbmF2 eTsgRk9OVC1TSVpFOiAxMHB0Ij5IaSBKdW4sPHUxOnA+PC91MTpwPjwvU1BBTj48L0ZPTlQ+PEZP TlQgY29sb3I9ImJsYWNrIj48U1BBTiBzdHlsZT0iQ09MT1I6IGJsYWNrIj48bzpwPjwvbzpwPjwv U1BBTj48L0ZPTlQ+PC9QPgo8UCBzdHlsZT0ibXNvLW1hcmdpbi10b3AtYWx0OiBhdXRvOyBtc28t bWFyZ2luLWJvdHRvbS1hbHQ6IGF1dG8iIGNsYXNzPSJNc29Ob3JtYWwiPjxGT05UIGNvbG9yPSJu YXZ5IiBzaXplPSIyIiBmYWNlPSJBcmlhbCI+PFNQQU4gc3R5bGU9IkZPTlQtRkFNSUxZOiBBcmlh bDsgQ09MT1I6IG5hdnk7IEZPTlQtU0laRTogMTBwdCI+PHUxOnA+Jm5ic3A7PC91MTpwPjwvU1BB Tj48L0ZPTlQ+PEZPTlQgY29sb3I9ImJsYWNrIj48U1BBTiBzdHlsZT0iQ09MT1I6IGJsYWNrIj48 bzpwPjwvbzpwPjwvU1BBTj48L0ZPTlQ+PC9QPgo8UCBzdHlsZT0ibXNvLW1hcmdpbi10b3AtYWx0 OiBhdXRvOyBtc28tbWFyZ2luLWJvdHRvbS1hbHQ6IGF1dG8iIGNsYXNzPSJNc29Ob3JtYWwiPjxG T05UIGNvbG9yPSJuYXZ5IiBzaXplPSIyIiBmYWNlPSJBcmlhbCI+PFNQQU4gc3R5bGU9IkZPTlQt RkFNSUxZOiBBcmlhbDsgQ09MT1I6IG5hdnk7IEZPTlQtU0laRTogMTBwdCI+V2hhdCBpcyB0aGUg ZmlsZSwgbGlzdCwgc3RyaW5nIFtdIGluIHRoaXMgY29udGV4dD88dTE6cD48L3UxOnA+PC9TUEFO PjwvRk9OVD48Rk9OVCBjb2xvcj0iYmxhY2siPjxTUEFOIHN0eWxlPSJDT0xPUjogYmxhY2siPjxv OnA+PC9vOnA+PC9TUEFOPjwvRk9OVD48L1A+CjxQIHN0eWxlPSJtc28tbWFyZ2luLXRvcC1hbHQ6 IGF1dG87IG1zby1tYXJnaW4tYm90dG9tLWFsdDogYXV0byIgY2xhc3M9Ik1zb05vcm1hbCI+PEZP TlQgY29sb3I9Im5hdnkiIHNpemU9IjIiIGZhY2U9IkFyaWFsIj48U1BBTiBzdHlsZT0iRk9OVC1G QU1JTFk6IEFyaWFsOyBDT0xPUjogbmF2eTsgRk9OVC1TSVpFOiAxMHB0Ij5JIG1lYW4gdG8gc2F5 IHdoaWNoIGZpbGUgb3IgbGlzdCBvciBzdHJpbmdbXS48dTE6cD48L3UxOnA+PC9TUEFOPjwvRk9O VD48Rk9OVCBjb2xvcj0iYmxhY2siPjxTUEFOIHN0eWxlPSJDT0xPUjogYmxhY2siPjxvOnA+PC9v OnA+PC9TUEFOPjwvRk9OVD48L1A+CjxQIHN0eWxlPSJtc28tbWFyZ2luLXRvcC1hbHQ6IGF1dG87 IG1zby1tYXJnaW4tYm90dG9tLWFsdDogYXV0byIgY2xhc3M9Ik1zb05vcm1hbCI+PEZPTlQgY29s b3I9Im5hdnkiIHNpemU9IjIiIGZhY2U9IkFyaWFsIj48U1BBTiBzdHlsZT0iRk9OVC1GQU1JTFk6 IEFyaWFsOyBDT0xPUjogbmF2eTsgRk9OVC1TSVpFOiAxMHB0Ij48dTE6cD4mbmJzcDs8L3UxOnA+ PC9TUEFOPjwvRk9OVD48Rk9OVCBjb2xvcj0iYmxhY2siPjxTUEFOIHN0eWxlPSJDT0xPUjogYmxh Y2siPjxvOnA+PC9vOnA+PC9TUEFOPjwvRk9OVD48L1A+CjxQIHN0eWxlPSJtc28tbWFyZ2luLXRv cC1hbHQ6IGF1dG87IG1zby1tYXJnaW4tYm90dG9tLWFsdDogYXV0byIgY2xhc3M9Ik1zb05vcm1h bCI+PEZPTlQgY29sb3I9Im5hdnkiIHNpemU9IjIiIGZhY2U9IkFyaWFsIj48U1BBTiBzdHlsZT0i Rk9OVC1GQU1JTFk6IEFyaWFsOyBDT0xPUjogbmF2eTsgRk9OVC1TSVpFOiAxMHB0Ij5UaGUgbmV3 IE1SIChvcmcuYXBhY2hlLmhhZG9vcC5tYXByZWR1Y2UuKikgQVBJcyBoYXMgYSBwYXJhbWV0ZXIg obBjb250ZXh0obEuIFJlcXVlc3QgeW91IHRvIGJyb3dzZSB0aHJvdWdoIHRoZSBBUElzIG9mIENv bnRleHQgKEluaGVyaXRlZCBmcm9tIEpvYkNvbnRleHQtJmd0O1Rhc2tBdHRlbXB0Q29udGV4dCku PHUxOnA+PC91MTpwPjwvU1BBTj48L0ZPTlQ+PEZPTlQgY29sb3I9ImJsYWNrIj48U1BBTiBzdHls ZT0iQ09MT1I6IGJsYWNrIj48bzpwPjwvbzpwPjwvU1BBTj48L0ZPTlQ+PC9QPgo8UCBzdHlsZT0i bXNvLW1hcmdpbi10b3AtYWx0OiBhdXRvOyBtc28tbWFyZ2luLWJvdHRvbS1hbHQ6IGF1dG8iIGNs YXNzPSJNc29Ob3JtYWwiPjxGT05UIGNvbG9yPSJuYXZ5IiBzaXplPSIyIiBmYWNlPSJBcmlhbCI+ PFNQQU4gc3R5bGU9IkZPTlQtRkFNSUxZOiBBcmlhbDsgQ09MT1I6IG5hdnk7IEZPTlQtU0laRTog MTBwdCI+VGhlIGNvbnRleHQgcGFyYW1ldGVyIG1heSBwcm92aWRlIHlvdSB0aGUgcmVmZXJlbmNl IHlvdSBuZWVkLjx1MTpwPjwvdTE6cD48L1NQQU4+PC9GT05UPjxGT05UIGNvbG9yPSJibGFjayI+ PFNQQU4gc3R5bGU9IkNPTE9SOiBibGFjayI+PG86cD48L286cD48L1NQQU4+PC9GT05UPjwvUD4K PFAgc3R5bGU9Im1zby1tYXJnaW4tdG9wLWFsdDogYXV0bzsgbXNvLW1hcmdpbi1ib3R0b20tYWx0 OiBhdXRvIiBjbGFzcz0iTXNvTm9ybWFsIj48Rk9OVCBjb2xvcj0ibmF2eSIgc2l6ZT0iMiIgZmFj ZT0iQXJpYWwiPjxTUEFOIHN0eWxlPSJGT05ULUZBTUlMWTogQXJpYWw7IENPTE9SOiBuYXZ5OyBG T05ULVNJWkU6IDEwcHQiPjx1MTpwPiZuYnNwOzwvdTE6cD48L1NQQU4+PC9GT05UPjxGT05UIGNv bG9yPSJibGFjayI+PFNQQU4gc3R5bGU9IkNPTE9SOiBibGFjayI+PG86cD48L286cD48L1NQQU4+ PC9GT05UPjwvUD4KPERJVj4KPFAgc3R5bGU9Im1zby1tYXJnaW4tdG9wLWFsdDogYXV0bzsgbXNv LW1hcmdpbi1ib3R0b20tYWx0OiBhdXRvIiBjbGFzcz0iTXNvTm9ybWFsIj48Qj48Rk9OVCBjb2xv cj0ibmF2eSIgc2l6ZT0iMyIgZmFjZT0iQXJpYWwiPjxTUEFOIHN0eWxlPSJGT05ULUZBTUlMWTog QXJpYWw7IENPTE9SOiBuYXZ5OyBGT05ULVNJWkU6IDEycHQ7IEZPTlQtV0VJR0hUOiBib2xkIj5S ZWdhcmRzLDwvU1BBTj48L0ZPTlQ+PC9CPjxGT05UIGNvbG9yPSJuYXZ5Ij48U1BBTiBzdHlsZT0i Q09MT1I6IG5hdnkiPiA8QlI+U3Vicm90byBTYW55YWw8L1NQQU4+PC9GT05UPjx1MTpwPjwvdTE6 cD48Rk9OVCBjb2xvcj0iYmxhY2siPjxTUEFOIHN0eWxlPSJDT0xPUjogYmxhY2siPjxvOnA+PC9v OnA+PC9TUEFOPjwvRk9OVD48L1A+PC9ESVY+CjxESVY+CjxESVYgc3R5bGU9IlRFWFQtQUxJR046 IGNlbnRlciIgY2xhc3M9Ik1zb05vcm1hbCIgYWxpZ249ImNlbnRlciI+PEZPTlQgY29sb3I9ImJs YWNrIiBzaXplPSIzIiBmYWNlPSJTaW1TdW4iPjxTUEFOIHN0eWxlPSJDT0xPUjogYmxhY2s7IEZP TlQtU0laRTogMTJwdCI+CjxIUiB0YWJJbmRleD0iLTEiIGFsaWduPSJjZW50ZXIiIFNJWkU9IjIi IHdpZHRoPSIxMDAlIj4KPC9TUEFOPjwvRk9OVD48L0RJVj4KPFAgc3R5bGU9Im1zby1tYXJnaW4t dG9wLWFsdDogYXV0bzsgbXNvLW1hcmdpbi1ib3R0b20tYWx0OiBhdXRvIiBjbGFzcz0iTXNvTm9y bWFsIj48Qj48Rk9OVCBjb2xvcj0iYmxhY2siIHNpemU9IjIiIGZhY2U9IlRhaG9tYSI+PFNQQU4g c3R5bGU9IkZPTlQtRkFNSUxZOiBUYWhvbWE7IENPTE9SOiBibGFjazsgRk9OVC1TSVpFOiAxMHB0 OyBGT05ULVdFSUdIVDogYm9sZCI+RnJvbTo8L1NQQU4+PC9GT05UPjwvQj48Rk9OVCBjb2xvcj0i YmxhY2siIHNpemU9IjIiIGZhY2U9IlRhaG9tYSI+PFNQQU4gc3R5bGU9IkZPTlQtRkFNSUxZOiBU YWhvbWE7IENPTE9SOiBibGFjazsgRk9OVC1TSVpFOiAxMHB0Ij4gPC9TUEFOPjwvRk9OVD48Rk9O VCBjb2xvcj0iYmxhY2siIHNpemU9IjIiPjxTUEFOIHN0eWxlPSJDT0xPUjogYmxhY2s7IEZPTlQt U0laRTogMTBwdCIgbGFuZz0iWkgtQ04iPsy3vvw8L1NQQU4+PC9GT05UPjxGT05UIGNvbG9yPSJi bGFjayIgc2l6ZT0iMiIgZmFjZT0iVGFob21hIj48U1BBTiBzdHlsZT0iRk9OVC1GQU1JTFk6IFRh aG9tYTsgQ09MT1I6IGJsYWNrOyBGT05ULVNJWkU6IDEwcHQiPiBbbWFpbHRvOjxzdDE6UGVyc29u TmFtZSB1MjpzdD0ib24iPjxBIGhyZWY9Im1haWx0bzp0YW5qdW5fMjUyNUAxNjMuY29tIj50YW5q dW5fMjUyNUAxNjMuY29tPC9BPjwvc3QxOlBlcnNvbk5hbWU+XSA8QlI+PEI+PFNQQU4gc3R5bGU9 IkZPTlQtV0VJR0hUOiBib2xkIj5TZW50OjwvU1BBTj48L0I+IFR1ZXNkYXksIEF1Z3VzdCAwOSwg MjAxMSAxMTo1OCBBTTxCUj48Qj48U1BBTiBzdHlsZT0iRk9OVC1XRUlHSFQ6IGJvbGQiPlRvOjwv U1BBTj48L0I+IG1hcHJlZHVjZTxCUj48Qj48U1BBTiBzdHlsZT0iRk9OVC1XRUlHSFQ6IGJvbGQi PlN1YmplY3Q6PC9TUEFOPjwvQj4gQ2FuIHJlZHVjZXIgZ2V0IHBhcmFtZXRlcnMgZnJvbSBtYXBw ZXIgYmVzaWRlcyBrZXkgYW5kIHZhbHVlPzwvU1BBTj48L0ZPTlQ+PHUxOnA+PC91MTpwPjxGT05U IGNvbG9yPSJibGFjayI+PFNQQU4gc3R5bGU9IkNPTE9SOiBibGFjayI+PG86cD48L286cD48L1NQ QU4+PC9GT05UPjwvUD48L0RJVj4KPFAgc3R5bGU9Im1zby1tYXJnaW4tdG9wLWFsdDogYXV0bzsg bXNvLW1hcmdpbi1ib3R0b20tYWx0OiBhdXRvIiBjbGFzcz0iTXNvTm9ybWFsIj48Rk9OVCBjb2xv cj0iYmxhY2siIHNpemU9IjMiIGZhY2U9IkFyaWFsIj48U1BBTiBzdHlsZT0iRk9OVC1GQU1JTFk6 IEFyaWFsOyBDT0xPUjogYmxhY2s7IEZPTlQtU0laRTogMTJwdCI+PHUxOnA+Jm5ic3A7PC91MTpw PjwvU1BBTj48L0ZPTlQ+PEZPTlQgY29sb3I9ImJsYWNrIj48U1BBTiBzdHlsZT0iQ09MT1I6IGJs YWNrIj48bzpwPjwvbzpwPjwvU1BBTj48L0ZPTlQ+PC9QPgo8RElWPgo8RElWPgo8UCBzdHlsZT0i bXNvLW1hcmdpbi10b3AtYWx0OiBhdXRvOyBtc28tbWFyZ2luLWJvdHRvbS1hbHQ6IGF1dG8iIGNs YXNzPSJNc29Ob3JtYWwiPjxGT05UIGNvbG9yPSJibGFjayIgc2l6ZT0iMiIgZmFjZT0iQXJpYWwi PjxTUEFOIHN0eWxlPSJGT05ULUZBTUlMWTogQXJpYWw7IENPTE9SOiBibGFjazsgRk9OVC1TSVpF OiAxMC41cHQiPkhpLDx1MTpwPjwvdTE6cD48L1NQQU4+PC9GT05UPjxGT05UIGNvbG9yPSJibGFj ayI+PFNQQU4gc3R5bGU9IkNPTE9SOiBibGFjayI+PG86cD48L286cD48L1NQQU4+PC9GT05UPjwv UD48L0RJVj4KPERJVj4KPFAgc3R5bGU9Im1zby1tYXJnaW4tdG9wLWFsdDogYXV0bzsgbXNvLW1h cmdpbi1ib3R0b20tYWx0OiBhdXRvIiBjbGFzcz0iTXNvTm9ybWFsIj48Rk9OVCBjb2xvcj0iYmxh Y2siIHNpemU9IjIiIGZhY2U9IkFyaWFsIj48U1BBTiBzdHlsZT0iRk9OVC1GQU1JTFk6IEFyaWFs OyBDT0xPUjogYmxhY2s7IEZPTlQtU0laRTogMTAuNXB0Ij5DYW4gcmVkdWNlciBnZXRzIHBhcmFt ZXRlcnMgZnJvbSBtYXBwZXIgYmVzaWRlcyBrZXkgYW5kIHZhbHVlPzx1MTpwPjwvdTE6cD48L1NQ QU4+PC9GT05UPjxGT05UIGNvbG9yPSJibGFjayI+PFNQQU4gc3R5bGU9IkNPTE9SOiBibGFjayI+ PG86cD48L286cD48L1NQQU4+PC9GT05UPjwvUD48L0RJVj4KPERJVj4KPFAgc3R5bGU9Im1zby1t YXJnaW4tdG9wLWFsdDogYXV0bzsgbXNvLW1hcmdpbi1ib3R0b20tYWx0OiBhdXRvIiBjbGFzcz0i TXNvTm9ybWFsIj48Rk9OVCBjb2xvcj0iYmxhY2siIHNpemU9IjIiIGZhY2U9IkFyaWFsIj48U1BB TiBzdHlsZT0iRk9OVC1GQU1JTFk6IEFyaWFsOyBDT0xPUjogYmxhY2s7IEZPTlQtU0laRTogMTAu NXB0Ij5TdWNoIGFzIGZpbGVzLCBsaXN0cywgc3RyaW5nW10gZXRjLjx1MTpwPjwvdTE6cD48L1NQ QU4+PC9GT05UPjxGT05UIGNvbG9yPSJibGFjayI+PFNQQU4gc3R5bGU9IkNPTE9SOiBibGFjayI+ PG86cD48L286cD48L1NQQU4+PC9GT05UPjwvUD48L0RJVj4KPERJVj4KPFAgc3R5bGU9Ik1BUkdJ Ti1CT1RUT006IDEycHQ7IG1zby1tYXJnaW4tdG9wLWFsdDogYXV0byIgY2xhc3M9Ik1zb05vcm1h bCI+PEZPTlQgY29sb3I9ImJsYWNrIiBzaXplPSIyIiBmYWNlPSJBcmlhbCI+PFNQQU4gc3R5bGU9 IkZPTlQtRkFNSUxZOiBBcmlhbDsgQ09MT1I6IGJsYWNrOyBGT05ULVNJWkU6IDEwLjVwdCI+VGhh bmtzPEJSPjxCUj48QlI+PC9TUEFOPjwvRk9OVD48Rk9OVCBjb2xvcj0iYmxhY2siPjxTUEFOIHN0 eWxlPSJDT0xPUjogYmxhY2siPjx1MTpwPjwvdTE6cD48bzpwPjwvbzpwPjwvU1BBTj48L0ZPTlQ+ PC9QPjwvRElWPgo8RElWPgo8UCBzdHlsZT0ibXNvLW1hcmdpbi10b3AtYWx0OiBhdXRvOyBtc28t bWFyZ2luLWJvdHRvbS1hbHQ6IGF1dG8iIGNsYXNzPSJNc29Ob3JtYWwiPjxGT05UIGNvbG9yPSJi bGFjayIgc2l6ZT0iMiIgZmFjZT0iQXJpYWwiPjxTUEFOIHN0eWxlPSJGT05ULUZBTUlMWTogQXJp YWw7IENPTE9SOiBibGFjazsgRk9OVC1TSVpFOiAxMC41cHQiPi0tPHUxOnA+PC91MTpwPjwvU1BB Tj48L0ZPTlQ+PEZPTlQgY29sb3I9ImJsYWNrIj48U1BBTiBzdHlsZT0iQ09MT1I6IGJsYWNrIj48 bzpwPjwvbzpwPjwvU1BBTj48L0ZPTlQ+PC9QPgo8RElWPgo8RElWPgo8UD48Rk9OVCBjb2xvcj0i YmxhY2siIHNpemU9IjIiIGZhY2U9IkFyaWFsIj48U1BBTiBzdHlsZT0iRk9OVC1GQU1JTFk6IEFy aWFsOyBDT0xPUjogYmxhY2s7IEZPTlQtU0laRTogMTAuNXB0Ij5SZWdhcmRzITx1MTpwPjwvdTE6 cD48bzpwPjwvbzpwPjwvU1BBTj48L0ZPTlQ+PC9QPgo8UD48Rk9OVCBjb2xvcj0iYmxhY2siIHNp emU9IjIiIGZhY2U9IkFyaWFsIj48U1BBTiBzdHlsZT0iRk9OVC1GQU1JTFk6IEFyaWFsOyBDT0xP UjogYmxhY2s7IEZPTlQtU0laRTogMTAuNXB0Ij5KdW4gVGFuPHUxOnA+PC91MTpwPjxvOnA+PC9v OnA+PC9TUEFOPjwvRk9OVD48L1A+PC9ESVY+PC9ESVY+PC9ESVY+PC9ESVY+CjxQIHN0eWxlPSJt c28tbWFyZ2luLXRvcC1hbHQ6IGF1dG87IG1zby1tYXJnaW4tYm90dG9tLWFsdDogYXV0byIgY2xh c3M9Ik1zb05vcm1hbCI+PEZPTlQgY29sb3I9ImJsYWNrIiBzaXplPSIzIiBmYWNlPSJTaW1TdW4i PjxTUEFOIHN0eWxlPSJDT0xPUjogYmxhY2s7IEZPTlQtU0laRTogMTJwdCI+PEJSPjxCUj48QlI+ PEJSPjxvOnA+PC9vOnA+PC9TUEFOPjwvRk9OVD48L1A+PC9ESVY+PC9ESVY+PHUxOnA+PC91MTpw Pgo8UCBjbGFzcz0iTXNvTm9ybWFsIj48Rk9OVCBzaXplPSIzIiBmYWNlPSJTaW1TdW4iPjxTUEFO IHN0eWxlPSJGT05ULVNJWkU6IDEycHQiPjxTUEFOIGlkPSJuZXRlYXNlX21haWxfZm9vdGVyIj48 QlI+PC9TUEFOPjxCUj48QlI+PG86cD48L286cD48L1NQQU4+PC9GT05UPjwvUD48U1BBTiB0aXRs ZT0ibmV0ZWFzZWZvb3RlciI+PFNQQU4gaWQ9Im5ldGVhc2VfbWFpbF9mb290ZXIiPjwvU1BBTj48 L1NQQU4+PC9ESVY+PC9CTE9DS1FVT1RFPjwvZGl2Pjxicj48YnI+PHNwYW4gdGl0bGU9Im5ldGVh c2Vmb290ZXIiPjxzcGFuIGlkPSJuZXRlYXNlX21haWxfZm9vdGVyIj48L3NwYW4+PC9zcGFuPg== ------=_Part_131614_1525330496.1312890833362-- ------=_Part_131612_902183117.1312890833362 Content-Type: text/plain; name="Retrieval.java" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="Retrieval.java" CgppbXBvcnQgamF2YS5pby5JT0V4Y2VwdGlvbjsKCmltcG9ydCBvcmcuYXBhY2hlLmhhZG9vcC5j b25mLio7CmltcG9ydCBvcmcuYXBhY2hlLmhhZG9vcC5maWxlY2FjaGUuRGlzdHJpYnV0ZWRDYWNo ZTsKaW1wb3J0IG9yZy5hcGFjaGUuaGFkb29wLmZzLlBhdGg7CmltcG9ydCBvcmcuYXBhY2hlLmhh ZG9vcC5pby5UZXh0OwoKaW1wb3J0IG9yZy5hcGFjaGUuaGFkb29wLm1hcHJlZC5GaWxlSW5wdXRG b3JtYXQ7CmltcG9ydCBvcmcuYXBhY2hlLmhhZG9vcC5tYXByZWQuRmlsZU91dHB1dEZvcm1hdDsK aW1wb3J0IG9yZy5hcGFjaGUuaGFkb29wLm1hcHJlZC5Kb2JDbGllbnQ7CmltcG9ydCBvcmcuYXBh Y2hlLmhhZG9vcC5tYXByZWQuSm9iQ29uZjsKaW1wb3J0IGphdmEubmV0LlVSSTsKaW1wb3J0IGph dmEubmV0LlVSSVN5bnRheEV4Y2VwdGlvbjsKCkBTdXBwcmVzc1dhcm5pbmdzKCJkZXByZWNhdGlv biIpCnB1YmxpYyBjbGFzcyBSZXRyaWV2YWwgewoJCglwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihT dHJpbmdbXSBhcmdzKSB0aHJvd3MgSU9FeGNlcHRpb24sIFVSSVN5bnRheEV4Y2VwdGlvbiB7CgkJ aWYgKGFyZ3MubGVuZ3RoICE9IDMpIHsKCQkJU3lzdGVtLmVycgoJCQkJCS5wcmludGxuKCJVc2Fn ZTogUmV0cmlldmFsIDxwcm90ZWluIHNldCBwYXRoPiA8ZGF0YWJhc2UgcGF0aD4gPG91dHB1dCBw YXRoPiIpOwoJCQlTeXN0ZW0uZXhpdCgtMSk7CgkJfQoJCQkKCQlKb2JDb25mIGNvbmYgPSBuZXcg Sm9iQ29uZihuZXcgQ29uZmlndXJhdGlvbigpLCBSZXRyaWV2YWwuY2xhc3MpOwoJCWNvbmYuc2V0 Sm9iTmFtZSgiUmV0cmlldmFsIik7CgkJRGlzdHJpYnV0ZWRDYWNoZS5hZGRDYWNoZUZpbGUobmV3 IFVSSShhcmdzWzBdKSwgY29uZik7CgkJRGlzdHJpYnV0ZWRDYWNoZS5hZGRDYWNoZUZpbGUobmV3 IFVSSShhcmdzWzFdKSwgY29uZik7CgkgICAKCQlGaWxlSW5wdXRGb3JtYXQuYWRkSW5wdXRQYXRo KGNvbmYsIG5ldyBQYXRoKGFyZ3NbMV0pKTsKCQlGaWxlT3V0cHV0Rm9ybWF0LnNldE91dHB1dFBh dGgoY29uZiwgbmV3IFBhdGgoYXJnc1syXSkpOwoKCQljb25mLnNldE1hcHBlckNsYXNzKFJldHJp ZXZhbE1hcHBlci5jbGFzcyk7CgkJY29uZi5zZXRSZWR1Y2VyQ2xhc3MoUmV0cmlldmFsUmVkdWNl ci5jbGFzcyk7CgoJCWNvbmYuc2V0T3V0cHV0S2V5Q2xhc3MoVGV4dC5jbGFzcyk7CgkJY29uZi5z ZXRPdXRwdXRWYWx1ZUNsYXNzKFRleHQuY2xhc3MpOwoKCQlKb2JDbGllbnQucnVuSm9iKGNvbmYp OwoJCQoJfQoKfQo= ------=_Part_131612_902183117.1312890833362 Content-Type: text/plain; name="RetrievalMapper.java" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="RetrievalMapper.java" CmltcG9ydCBqYXZhLmlvLkJ1ZmZlcmVkUmVhZGVyOwppbXBvcnQgamF2YS5pby5GaWxlUmVhZGVy OwppbXBvcnQgamF2YS5pby5JT0V4Y2VwdGlvbjsKaW1wb3J0IGphdmEudXRpbC5JdGVyYXRvcjsK aW1wb3J0IGphdmEudXRpbC5MaW5rZWRMaXN0OwoKaW1wb3J0IG9yZy5hcGFjaGUuaGFkb29wLmZp bGVjYWNoZS5EaXN0cmlidXRlZENhY2hlOwppbXBvcnQgb3JnLmFwYWNoZS5oYWRvb3AuZnMuUGF0 aDsKaW1wb3J0IG9yZy5hcGFjaGUuaGFkb29wLmlvLkxvbmdXcml0YWJsZTsKaW1wb3J0IG9yZy5h cGFjaGUuaGFkb29wLmlvLlRleHQ7CmltcG9ydCBvcmcuYXBhY2hlLmhhZG9vcC5tYXByZWQuSm9i Q29uZjsKaW1wb3J0IG9yZy5hcGFjaGUuaGFkb29wLm1hcHJlZC5NYXBSZWR1Y2VCYXNlOwppbXBv cnQgb3JnLmFwYWNoZS5oYWRvb3AubWFwcmVkLk1hcHBlcjsKaW1wb3J0IG9yZy5hcGFjaGUuaGFk b29wLm1hcHJlZC5PdXRwdXRDb2xsZWN0b3I7CmltcG9ydCBvcmcuYXBhY2hlLmhhZG9vcC5tYXBy ZWQuUmVwb3J0ZXI7CgpAU3VwcHJlc3NXYXJuaW5ncygiZGVwcmVjYXRpb24iKQpwdWJsaWMgY2xh c3MgUmV0cmlldmFsTWFwcGVyIGV4dGVuZHMgTWFwUmVkdWNlQmFzZSBpbXBsZW1lbnRzCgkJTWFw cGVyPExvbmdXcml0YWJsZSwgVGV4dCwgVGV4dCwgVGV4dD4gewoKCXByaXZhdGUgUGF0aFtdIGxv Y2FsRmlsZXM7CgoJcHVibGljIHZvaWQgY29uZmlndXJlKEpvYkNvbmYgY29uZikgewoJCXRyeSB7 CgkJCXRoaXMubG9jYWxGaWxlcyA9IERpc3RyaWJ1dGVkQ2FjaGUuZ2V0TG9jYWxDYWNoZUZpbGVz KGNvbmYpOwoJCX0gY2F0Y2ggKElPRXhjZXB0aW9uIGUpIHsKCQkJZS5wcmludFN0YWNrVHJhY2Uo KTsKCQl9Cgl9CgkKCXB1YmxpYyB2b2lkIG1hcChMb25nV3JpdGFibGUga2V5LCBUZXh0IHZhbHVl LAoJCQlPdXRwdXRDb2xsZWN0b3I8VGV4dCwgVGV4dD4gb3V0cHV0LCBSZXBvcnRlciByZXBvcnRl cikKCQkJdGhyb3dzIElPRXhjZXB0aW9uIHsKCQoJCVN0cmluZyBsaW5lID0gdmFsdWUudG9TdHJp bmcoKTsKCQkKCQlMaW5rZWRMaXN0PFN0cmluZz4gbGlzdCA9IG5ldyBMaW5rZWRMaXN0PFN0cmlu Zz4oKTsvL3N0b3JlIHRoZSBmaXJzdCBuZWlnaGJvcnMKCQkKCQlCdWZmZXJlZFJlYWRlciBwcm9S ZWFkZXIgPSBuZXcgQnVmZmVyZWRSZWFkZXIobmV3IEZpbGVSZWFkZXIodGhpcy5sb2NhbEZpbGVz WzBdLnRvU3RyaW5nKCkpKTsKCgkJU3RyaW5nIHByb0lEID0gbmV3IFN0cmluZygiIik7CgoJCVN0 cmluZ1tdIHByb3RlaW5JRHMgPSBsaW5lLnNwbGl0KCJcdCIpOwoJCVN0cmluZyB0bXBTdHJpbmcg PSBwcm90ZWluSURzWzBdICsgIlx0IiArIHByb3RlaW5JRHNbMV07CgkJCgkJLy8gZmluZCBkZXN0 aW5hdGlvbiBwcm90ZWlucyBhbmQgZ2V0IHRoZWlyIGZpcnN0IG5laWdoYm9ycwoJCS8vIGZpcnN0 IG5laWdoYm9yIGFzIHRoZSBrZXksbGluZSBhcyB0aGUgdmFsdWUgc2VuZCB0byByZWR1Y2VyCgkJ d2hpbGUgKChwcm9JRCA9IHByb1JlYWRlci5yZWFkTGluZSgpKSAhPSBudWxsKSB7Ly8gZm9yIGVh Y2ggbGluZSAocHJvdGVpbiBJRCkgaW4ga2V5IGZpbGUKCQkJCgkJCWlmKHByb0lELmVxdWFsc0ln bm9yZUNhc2UocHJvdGVpbklEc1swXSkpey8vIGhpdCBhbmQgcHJvdGVpbklEc1sxXSBpcyBpdHMg Zmlyc3QgbmVpZ2hib3IKCQkJCW91dHB1dC5jb2xsZWN0KG5ldyBUZXh0KHRtcFN0cmluZyksIG5l dyBUZXh0KHByb3RlaW5JRHNbMl0pKTsKCQkJCWxpc3QuYWRkKHByb3RlaW5JRHNbMV0pOwkvLyBh ZGQgZmlyc3QgbmVpZ2hib3IgdG8gbGlzdAoJCQl9CgoJCQlpZihwcm9JRC5lcXVhbHNJZ25vcmVD YXNlKHByb3RlaW5JRHNbMV0pKXsvLyBoaXQgYW5kIHByb3RlaW5JRHNbMF0gaXMgaXRzIGZpcnN0 IG5laWdoYm9yCgkJCQlvdXRwdXQuY29sbGVjdChuZXcgVGV4dCh0bXBTdHJpbmcpLCBuZXcgVGV4 dChwcm90ZWluSURzWzJdKSk7CgkJCQlsaXN0LmFkZChwcm90ZWluSURzWzBdKTsJLy8gYWRkIGZp cnN0IG5laWdoYm9yIHRvIGxpc3QKCQkJfQoKCQl9CgkJcHJvUmVhZGVyLmNsb3NlKCk7CgkKCQkv LyBmaW5kIHNlY29uZCBuZWlnaGJvcnMKCQlAU3VwcHJlc3NXYXJuaW5ncygicmF3dHlwZXMiKQoJ CUl0ZXJhdG9yIGl0ZXIgPSBsaXN0Lml0ZXJhdG9yKCk7CgkJU3RyaW5nIGlkczsKCQl3aGlsZShp dGVyLmhhc05leHQoKSl7CgkJCU9iamVjdCBvYmogPSBpdGVyLm5leHQoKTsKCQkJcHJvSUQgPSBv YmoudG9TdHJpbmcoKTsKCQkJU3RyaW5nIHRtcDsKCQkJQnVmZmVyZWRSZWFkZXIgZGJSZWFkZXIg PSBuZXcgQnVmZmVyZWRSZWFkZXIobmV3IEZpbGVSZWFkZXIodGhpcy5sb2NhbEZpbGVzWzFdLnRv U3RyaW5nKCkpKTsKCQkJd2hpbGUoKHRtcCA9IGRiUmVhZGVyLnJlYWRMaW5lKCkpICE9IG51bGwp ewoJCQkJcHJvdGVpbklEcyA9IHRtcC5zcGxpdCgiXHQiKTsKCQkJCWlkcyA9IHByb3RlaW5JRHNb MF0gKyAiXHQiICsgcHJvdGVpbklEc1sxXTsKCQkJCWlmKHByb0lELmVxdWFsc0lnbm9yZUNhc2Uo cHJvdGVpbklEc1swXSkpewoJCQkJCW91dHB1dC5jb2xsZWN0KG5ldyBUZXh0KGlkcyksIG5ldyBU ZXh0KHByb3RlaW5JRHNbMl0pKTsKCQkJCX0KCQkJCWlmKHByb0lELmVxdWFsc0lnbm9yZUNhc2Uo cHJvdGVpbklEc1sxXSkpewoJCQkJCW91dHB1dC5jb2xsZWN0KG5ldyBUZXh0KGlkcyksIG5ldyBU ZXh0KHByb3RlaW5JRHNbMl0pKTsKCQkJCX0KCQkJfQoJCQkKCQkJZGJSZWFkZXIuY2xvc2UoKTsK CQl9Cgl9Cn0K ------=_Part_131612_902183117.1312890833362 Content-Type: text/plain; name="RetrievalReducer.java" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="RetrievalReducer.java" CmltcG9ydCBqYXZhLmlvLklPRXhjZXB0aW9uOwppbXBvcnQgamF2YS51dGlsLkl0ZXJhdG9yOwoK aW1wb3J0IG9yZy5hcGFjaGUuaGFkb29wLmlvLlRleHQ7CmltcG9ydCBvcmcuYXBhY2hlLmhhZG9v cC5tYXByZWQuTWFwUmVkdWNlQmFzZTsKaW1wb3J0IG9yZy5hcGFjaGUuaGFkb29wLm1hcHJlZC5P dXRwdXRDb2xsZWN0b3I7CmltcG9ydCBvcmcuYXBhY2hlLmhhZG9vcC5tYXByZWQuUmVkdWNlcjsK aW1wb3J0IG9yZy5hcGFjaGUuaGFkb29wLm1hcHJlZC5SZXBvcnRlcjsKCkBTdXBwcmVzc1dhcm5p bmdzKCJkZXByZWNhdGlvbiIpCnB1YmxpYyBjbGFzcyBSZXRyaWV2YWxSZWR1Y2VyIGV4dGVuZHMg TWFwUmVkdWNlQmFzZSBpbXBsZW1lbnRzCgkJUmVkdWNlcjxUZXh0LCBUZXh0LCBUZXh0LCBUZXh0 PiB7CgkKCXB1YmxpYyB2b2lkIHJlZHVjZShUZXh0IGtleSwgSXRlcmF0b3I8VGV4dD4gdmFsdWVz LCBPdXRwdXRDb2xsZWN0b3I8VGV4dCwgVGV4dD4gb3V0cHV0LCBSZXBvcnRlciByZXBvcnQpCgkJ CXRocm93cyBJT0V4Y2VwdGlvbiB7CgkJCgkJT2JqZWN0IG9iaiA9IG51bGw7CgkJd2hpbGUodmFs dWVzLmhhc05leHQoKSl7CgkJCW9iaiA9IHZhbHVlcy5uZXh0KCk7CgkJfQoJCW91dHB1dC5jb2xs ZWN0KGtleSwgKFRleHQpIG9iaik7Cgl9Cn0K ------=_Part_131612_902183117.1312890833362--