Return-Path: X-Original-To: apmail-hadoop-common-dev-archive@www.apache.org Delivered-To: apmail-hadoop-common-dev-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id E021318837 for ; Tue, 8 Dec 2015 17:51:09 +0000 (UTC) Received: (qmail 21481 invoked by uid 500); 8 Dec 2015 17:51:08 -0000 Delivered-To: apmail-hadoop-common-dev-archive@hadoop.apache.org Received: (qmail 21399 invoked by uid 500); 8 Dec 2015 17:51:08 -0000 Mailing-List: contact common-dev-help@hadoop.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: common-dev@hadoop.apache.org Delivered-To: mailing list common-dev@hadoop.apache.org Received: (qmail 21387 invoked by uid 99); 8 Dec 2015 17:51:08 -0000 Received: from Unknown (HELO spamd2-us-west.apache.org) (209.188.14.142) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 08 Dec 2015 17:51:08 +0000 Received: from localhost (localhost [127.0.0.1]) by spamd2-us-west.apache.org (ASF Mail Server at spamd2-us-west.apache.org) with ESMTP id 9004B1A090D for ; Tue, 8 Dec 2015 17:51:07 +0000 (UTC) X-Virus-Scanned: Debian amavisd-new at spamd2-us-west.apache.org X-Spam-Flag: NO X-Spam-Score: 0.874 X-Spam-Level: X-Spam-Status: No, score=0.874 tagged_above=-999 required=6.31 tests=[FSL_HELO_BARE_IP_2=0.873, URIBL_BLOCKED=0.001] autolearn=disabled Received: from mx1-us-east.apache.org ([10.40.0.8]) by localhost (spamd2-us-west.apache.org [10.40.0.9]) (amavisd-new, port 10024) with ESMTP id l6j74H0q6P5k for ; Tue, 8 Dec 2015 17:50:55 +0000 (UTC) Received: from relayvx12c.securemail.intermedia.net (relayvx12c.securemail.intermedia.net [64.78.52.187]) by mx1-us-east.apache.org (ASF Mail Server at mx1-us-east.apache.org) with ESMTPS id 3349E42ADE for ; Tue, 8 Dec 2015 17:50:55 +0000 (UTC) Received: from securemail.intermedia.net (localhost [127.0.0.1]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by emg-ca-1-2.localdomain (Postfix) with ESMTPS id 3738953EBC for ; Tue, 8 Dec 2015 09:50:54 -0800 (PST) Subject: Re: Google Cloud Storage connector into Hadoop MIME-Version: 1.0 x-echoworx-msg-id: a346f719-5436-46ff-a3b0-c78b35a37f04 x-echoworx-emg-received: Tue, 8 Dec 2015 09:50:54.154 -0800 x-echoworx-action: delivered Received: from 10.254.155.17 ([10.254.155.17]) by emg-ca-1-2 (JAMES SMTP Server 2.3.2) with SMTP ID 418 for ; Tue, 8 Dec 2015 09:50:54 -0800 (PST) Received: from MBX080-W4-CO-1.exch080.serverpod.net (unknown [10.224.117.101]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by emg-ca-1-2.localdomain (Postfix) with ESMTPS id E2D5453EBC for ; Tue, 8 Dec 2015 09:50:53 -0800 (PST) Received: from MBX080-W4-CO-2.exch080.serverpod.net (10.224.117.102) by MBX080-W4-CO-1.exch080.serverpod.net (10.224.117.101) with Microsoft SMTP Server (TLS) id 15.0.1130.7; Tue, 8 Dec 2015 09:50:52 -0800 Received: from MBX080-W4-CO-2.exch080.serverpod.net ([10.224.117.102]) by mbx080-w4-co-2.exch080.serverpod.net ([10.224.117.102]) with mapi id 15.00.1130.005; Tue, 8 Dec 2015 09:50:52 -0800 From: Steve Loughran To: "common-dev@hadoop.apache.org" Thread-Topic: Google Cloud Storage connector into Hadoop Thread-Index: AQHRMU4znStt0ajZjU6uKxnVx8VACp7B5bmA Date: Tue, 8 Dec 2015 17:50:52 +0000 Message-ID: <762A7BEC-125B-4749-8621-FDE5A05B5362@hortonworks.com> References: In-Reply-To: Accept-Language: en-GB, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ms-exchange-messagesentrepresentingtype: 1 x-ms-exchange-transport-fromentityheader: Hosted x-originating-ip: [86.178.205.199] x-source-routing-agent: Processed Content-Type: text/plain; charset="utf-8" Content-ID: Content-Transfer-Encoding: base64 DQoxLiBkbyB3aGF0IGNocmlzIHNheXM6IGdvIGZvciB0aGUgYWJzdHJhY3QgY29udHJhY3QgdGVz dHMuIFRoZXknbGwgZmluZCB0aGUgdHJvdWJsZXNwb3RzIGluIHlvdXIgY29kZSwgbGlrZSB0aGUg d2F5IHNlZWsoLTEpIGFwcGVhcnMgdG8gaGF2ZSBlbnRlcnRhaW5pbmcgcmVzdWx0cywgd2hhdCBo YXBwZW5zIG9uIG9wZXJhdGlvbnMgdG8gY2xvc2VkIGZpbGVzLCBldGMsIGFuZCBoZWxwIGlkZW50 aWZ5IHdoZXJlIHRoZSBzZW1hbnRpY3Mgb2YgeW91ciBGUyB2YXJpZXMgZnJvbSBIREZTLg0KDQoy LiBZb3Ugd2lsbCBuZWVkIHRvIHN0YXkgd2l0aCB0aGUgdmVyc2lvbnMgb2YgYXJ0aWZhY3RzIGlu IHRoZSBIYWRvb3AgY29kZWJhc2UuIFRyb3VibGVzcG90cyB0aGVyZSBhcmUgcHJvdG9idWYgKGZy b3plbiBAIDIuNSkgYW5kIGd1YXZhIChzaGlwcGluZyB3aXRoIDExLjAyLCBjb2RlIG11c3QgcnVu IGFnYWluc3QgMTgueCArIGlmIHNvbWVvbmUgdXBncmFkZXMpLiBJZiB0aGlzIGlzIHByb2JsZW1h dGljIHlvdSBtYXkgd2FudCBkaXNjdXNzIHRoZSB2ZXJzaW9uaW5nIGlzc3VlcyB0aGVyZSB3aXRo IHlvdXIgY29sbGVhZ3Vlczsgc2VlIGh0dHBzOi8vaXNzdWVzLmFwYWNoZS5vcmcvamlyYS9icm93 c2UvSEFET09QLTEwMTAxIGZvciB0aGUgZGV0YWlscy4NCg0KMy4gdGhlIG9iamVjdCBzdG9yZXMg Z2V0IHVuZGVydGVzdGVkOiBqZW5raW5zIGRvZXNuJ3QgdG91Y2ggdGhlbSBmb3IgcGF0Y2ggcmV2 aWV3IG9yIG5pZ2h0bHkgcnVucyDigJR5b3UgY2FuJ3QgZ2l2ZSBqZW5raW5zIHRoZSByaWdodCBj cmVkZW50aWFscy4gU2V0dGluZyB1cCB5b3VyIG93biBqZW5raW5zIHNlcnZlciB0byBidWlsZCB0 aGUgSGFkb29wIHZlcnNpb25zIGFuZCBmbGFnIHByb2JsZW1zIHdvdWxkIGJlIGEgZ3JlYXQgY29u dHJpYnV0aW9uIGhlcmUuIEFsc286IGhlbHAgd2l0aCB0aGUgcmVsZWFzZSB0ZXN0aW5nOyBpZiBz b21lb25lIGhhcyBhIHBhdGNoIGZvciB0aGUgaGFkb29wLWdjcyBtb2R1bGUsIHJldmlldyBhbmQg dGVzdCB0aGF0IHRvbyB3b3VsZCBiZSBncmVhdDsgc3RvcHMgdGhlc2UgcGF0Y2hlcyBiZWluZyBu ZWdsZWN0ZWQuDQoNCjQuIFdlIGNvdWxkIGRvIHdpdGggc29tZSBtb3JlIHNjYWxlIHRlc3RzIG9m IHRoZSBvYmplY3Qgc3RvcmVzLCB0byB0ZXN0IGNyZWF0aW5nIG1hbnkgdGhvdXNhbmRzIG9mIHNt YWxsIGZpbGVzLCBldGMuIENvbnRyaWJ1dGlvbnMgd2VsY29tZQ0KDQo1LiBXZSBjb3VsZCBkbyB3 aXRoIGEgbG90IG1vcmUgZG93bnN0cmVhbSB0ZXN0aW5nIG9mIHRoaW5ncyBsaWtlIGhpdmUgJiBz cGFyayBJTyBvbiBvYmplY3Qgc3RvcmVzLCBlc3BlY2lhbGx5IHZpYSBPUkMgYW5kIFBhcnF1ZXQu IEhlbHBpbmcgdG8gd3JpdGUgdGhvc2UgdGVzdHMgd291bGQgc3RvcCByZWdyZXNzaW9ucyBpbiB0 aGUgc3RhY2ssIGFuZCBoZWxwIHR1bmUgSGFkb29wIGZvciB5b3VyIEZTLg0KDQo2LiBGaW5hbGx5 OiBkb24ndCBiZSBhZnJhaWQgdG8gZ2V0IGludm9sdmVkIHdpdGggdGhlIHJlc3Qgb2YgdGhlIGNv ZGViYXNlLiBJdCBjYW4gb25seSBnZXQgYmV0dGVyLg0KDQoNCj4gT24gOCBEZWMgMjAxNSwgYXQg MDA6MjAsIEphbWVzIE1hbG9uZSA8amFtZXNtYWxvbmVAZ29vZ2xlLmNvbS5JTlZBTElEPiB3cm90 ZToNCj4gDQo+IEhhb2h1aSAmIENocmlzLA0KPiANCj4gU291bmRzIGdyZWF0LCB0aGFuayB5b3Ug dmVyeSBtdWNoISBXZSdsbCBjdXQgYSBKSVJBIG9uY2Ugd2UgZ2V0IGV2ZXJ5dGhpbmcNCj4gbGlu ZWQgdXAuDQo+IA0KPiBCZXN0LA0KPiANCj4gSmFtZXMNCj4gDQo+IE9uIE1vbiwgRGVjIDcsIDIw MTUgYXQgMzo1NCBQTSwgQ2hyaXMgTmF1cm90aCA8Y25hdXJvdGhAaG9ydG9ud29ya3MuY29tPg0K PiB3cm90ZToNCj4gDQo+PiBIaSBKYW1lcywNCj4+IA0KPj4gVGhpcyBzb3VuZHMgZ3JlYXQhICBU aGFuayB5b3UgZm9yIGNvbnNpZGVyaW5nIGNvbnRyaWJ1dGluZyB0aGUgY29kZS4NCj4+IA0KPj4g SnVzdCBzZWNvbmRpbmcgd2hhdCBIYW9odWkgc2FpZCwgdGhlcmUgaXMgZXhpc3RpbmcgcHJlY2Vk ZW50IGZvcg0KPj4gYWx0ZXJuYXRpdmUgaW1wbGVtZW50YXRpb25zIG9mIHRoZSBIYWRvb3AgRmls ZVN5c3RlbSBpbiBvdXIgY29kZWJhc2UuICBXZQ0KPj4gY3VycmVudGx5IGhhdmUgc2ltaWxhciBw bHVnaW5zIGZvciBTMyBbMV0sIEF6dXJlIFsyXSBhbmQgT3BlblN0YWNrIFN3aWZ0DQo+PiBbM10u ICBBZGRpdGlvbmFsbHksIHdlIGhhdmUgYSBzdWl0ZSBvZiBGaWxlU3lzdGVtIGNvbnRyYWN0IHRl c3RzIFs0XS4NCj4+IFRoZXNlIHRlc3RzIGFyZSBkZXNpZ25lZCB0byBoZWxwIGRldmVsb3BlcnMg b2YgYWx0ZXJuYXRpdmUgZmlsZSBzeXN0ZW1zDQo+PiBhc3Nlc3MgaG93IGNsb3NlbHkgdGhleSBt YXRjaCB0aGUgc2VtYW50aWNzIGV4cGVjdGVkIGJ5IEhhZG9vcCBlY29zeXN0ZW0NCj4+IGNvbXBv bmVudHMuDQo+PiANCj4+IE1hbnkgSGFkb29wIHVzZXJzIGFyZSBhY2N1c3RvbWVkIHRvIHVzaW5n IEhERlMgaW5zdGVhZCBvZiB0aGVzZQ0KPj4gYWx0ZXJuYXRpdmUgZmlsZSBzeXN0ZW1zLCBzbyBu b25lIG9mIHRoZSBhbHRlcm5hdGl2ZXMgYXJlIG9uIHRoZSBkZWZhdWx0DQo+PiBIYWRvb3AgY2xh c3NwYXRoIGltbWVkaWF0ZWx5IGFmdGVyIGRlcGxveW1lbnQuICBJbnN0ZWFkLCB0aGUgY29kZSBm b3IgZWFjaA0KPj4gb25lIGlzIGluIGEgc2VwYXJhdGUgbW9kdWxlIHVuZGVyIHRoZSAiaGFkb29w LXRvb2xzIiBkaXJlY3RvcnkgaW4gdGhlDQo+PiBzb3VyY2UgdHJlZS4gIFVzZXJzIHdobyBuZWVk IHRvIHVzZSB0aGUgYWx0ZXJuYXRpdmUgZmlsZSBzeXN0ZW1zIHRha2UNCj4+IGV4dHJhIHN0ZXBz IHBvc3QtZGVwbG95bWVudCB0byBhZGQgdGhlbSB0byB0aGUgY2xhc3NwYXRoIHdoZXJlIG5lY2Vz c2FyeS4NCj4+IFRoaXMgYWNoaWV2ZXMgdGhlIGRlcGVuZGVuY3kgaXNvbGF0aW9uIG5lZWRlZC4g IEZvciBleGFtcGxlLCB1c2VycyB3aG8NCj4+IG5ldmVyIHVzZSB0aGUgQXp1cmUgcGx1Z2luIHdv bid0IGFjY2lkZW50YWxseSBwaWNrIHVwIGEgdHJhbnNpdGl2ZQ0KPj4gZGVwZW5kZW5jeSBvbiB0 aGUgQXp1cmUgU0RLIGphci4NCj4+IA0KPj4gSSByZWNvbW1lbmQgdGFraW5nIGEgcXVpY2sgZ2xh bmNlIHRocm91Z2ggdGhlIGV4aXN0aW5nIG1vZHVsZXMgZm9yIFMzLA0KPj4gQXp1cmUgYW5kIE9w ZW5TdGFjay4gIFdlJ2xsIGxpa2VseSBhc2sgdGhhdCBhIG5ldyBGaWxlU3lzdGVtDQo+PiBpbXBs ZW1lbnRhdGlvbiBmb2xsb3cgdGhlIHNhbWUgcGF0dGVybnMgaWYgZmVhc2libGUgZm9yIGNvbnNp c3RlbmN5LiAgVGhpcw0KPj4gd291bGQgaW5jbHVkZSB0aGluZ3MgbGlrZSB1c2luZyB0aGUgY29u dHJhY3QgdGVzdHMsIGhhdmluZyBhIHByb3Zpc2lvbiB0bw0KPj4gZXhlY3V0ZSB0ZXN0cyBib3Ro IG9mZmxpbmUvbW9ja2VkIGFuZCBsaXZlL2ludGVncmF0ZWQgd2l0aCB0aGUgcmVhbA0KPj4gc2Vy dmljZSBhbmQgcHJvdmlkaW5nIGEgZG9jdW1lbnRhdGlvbiBwYWdlIHRoYXQgZXhwbGFpbnMgY29u ZmlndXJhdGlvbiBmb3INCj4+IGVuZCB1c2Vycy4NCj4+IA0KPj4gRm9yIG5vdywgcGxlYXNlIGZl ZWwgZnJlZSB0byBmaWxlIGEgSEFET09QIEpJUkEgd2l0aCB5b3VyIHByb3Bvc2FsLiAgV2UNCj4+ IGNhbiB3b3JrIG91dCB0aGUgZGV0YWlscyBvZiBhbGwgb2YgdGhpcyBpbiBkaXNjdXNzaW9uIG9u IHRoYXQgSklSQS4NCj4+IA0KPj4gU29tZXRoaW5nIGVsc2UgdG8gZm9sbG93IHVwIG9uIHdpbGwg YmUgbGljZW5zaW5nIGNvbmNlcm5zLiAgSSBzZWUgdGhlDQo+PiBwcm9qZWN0IGFscmVhZHkgdXNl cyB0aGUgQXBhY2hlIGxpY2Vuc2UsIGJ1dCBpdCBhcHBlYXJzIHRvIGJlIGFuIGV4aXN0aW5nDQo+ PiBib2R5IG9mIGNvZGUgaW5pdGlhbGx5IGRldmVsb3BlZCBhdCBHb29nbGUuICBUaGF0IG1pZ2h0 IHJlcXVpcmUgYSBTb2Z0d2FyZQ0KPj4gR3JhbnQgQWdyZWVtZW50IFs1XS4gIEFnYWluLCB0aGlz IGlzIHNvbWV0aGluZyB0aGF0IGNhbiBiZSBoYXNoZWQgb3V0IGluDQo+PiBkaXNjdXNzaW9uIG9u IHRoZSBKSVJBIGFmdGVyIHlvdSBjcmVhdGUgaXQuDQo+PiANCj4+IFsxXQ0KPj4gaHR0cDovL2hh ZG9vcC5hcGFjaGUub3JnL2RvY3MvcjIuNy4xL2hhZG9vcC1hd3MvdG9vbHMvaGFkb29wLWF3cy9p bmRleC5odG1sDQo+PiBbMl0gaHR0cDovL2hhZG9vcC5hcGFjaGUub3JnL2RvY3MvcjIuNy4xL2hh ZG9vcC1henVyZS9pbmRleC5odG1sDQo+PiBbM10gaHR0cDovL2hhZG9vcC5hcGFjaGUub3JnL2Rv Y3MvcjIuNy4xL2hhZG9vcC1vcGVuc3RhY2svaW5kZXguaHRtbA0KPj4gWzRdDQo+PiBodHRwOi8v aGFkb29wLmFwYWNoZS5vcmcvZG9jcy9yMi43LjEvaGFkb29wLXByb2plY3QtZGlzdC9oYWRvb3At Y29tbW9uL2ZpbGUNCj4+IHN5c3RlbS90ZXN0aW5nLmh0bWwNCj4+IFs1XSBodHRwOi8vd3d3LmFw YWNoZS5vcmcvbGljZW5zZXMvDQo+PiANCj4+IC0tQ2hyaXMgTmF1cm90aA0KPj4gDQo+PiANCj4+ IA0KPj4gDQo+PiBPbiAxMi83LzE1LCAzOjEwIFBNLCAiSGFvaHVpIE1haSIgPHJpY2V0b25zQGdt YWlsLmNvbT4gd3JvdGU6DQo+PiANCj4+PiBIaSwNCj4+PiANCj4+PiBUaGFua3MgZm9yIHJlYWNo aW5nIG91dC4gSXQgd291bGQgYmUgZ3JlYXQgdG8gc2VlIHRoaXMgaW4gdGhlIEhhZG9vcA0KPj4+ IGVjb3N5c3RlbS4NCj4+PiANCj4+PiBJbiBIYWRvb3Agd2UgaGF2ZSBBV1MgUzMgc3VwcG9ydC4g SU1PIHRoZXkgYWRkcmVzcyBzaW1pbGFyIHVzZSBjYXNlcw0KPj4+IHRodXMgSSB0aGluayB0aGF0 IGl0IHNob3VsZCBiZSByZWxhdGl2ZWx5IHN0cmFpZ2h0Zm9yd2FyZCB0byBhZG9wdCB0aGUNCj4+ PiBjb2RlLg0KPj4+IA0KPj4+IFRoZSBvbmx5IGNhdGNoIGluIG15IGhlYWQgcmlnaHQgbm93IGlz IHRvIHByb3Blcmx5IGlzb2xhdGUgZGVwZW5kZW5jeS4NCj4+PiBOb3Qgb25seSB0aGUgY29kZSBu ZWVkcyB0byBiZSBwdXQgaW50byBhIHNlcGFyYXRlIG1vZHVsZSwgYnV0IG1hbnkNCj4+PiBIYWRv b3AgYXBwbGljYXRpb25zIGFsc28gZGVwZW5kIG9uIGRpZmZlcmVudCB2ZXJzaW9ucyBvZiBHdWF2 YS4gSQ0KPj4+IHRoaW5rIGl0IG1pZ2h0IGJlIGEgcHJvYmxlbSB0aGF0IG5lZWRzIHNvbWUgYXR0 ZW50aW9ucyBhdCB0aGUgdmVyeQ0KPj4+IGJlZ2lubmluZy4NCj4+PiANCj4+PiBQbGVhc2UgZmVl bCBmcmVlIHRvIHJlYWNoIG91dCBpZiB5b3UgaGF2ZSBhbnkgb3RoZXIgcXVlc3Rpb25zLg0KPj4+ IA0KPj4+IFJlZ2FyZHMsDQo+Pj4gSGFvaHVpDQo+Pj4gDQo+Pj4gDQo+Pj4gT24gTW9uLCBEZWMg NywgMjAxNSBhdCAyOjM1IFBNLCBKYW1lcyBNYWxvbmUNCj4+PiA8amFtZXNtYWxvbmVAZ29vZ2xl LmNvbS5pbnZhbGlkPiB3cm90ZToNCj4+Pj4gSGVsbG8sDQo+Pj4+IA0KPj4+PiBXZSdyZSBmcm9t IGEgdGVhbSB3aXRoaW4gR29vZ2xlIENsb3VkIFBsYXRmb3JtIGZvY3VzZWQgb24gT1NTIGFuZCBk YXRhDQo+Pj4+IHRlY2hub2xvZ2llcywgZXNwZWNpYWxseSBIYWRvb3AgKGFuZCBTcGFyay4pIEJl Zm9yZSB3ZSBjdXQgYSBKSVJBIGZvcg0KPj4+PiBzb21ldGhpbmcgd2XCuWQgbGlrZSB0byBkbywg d2Ugd2FudGVkIHRvIHJlYWNoIG91dCB0byB0aGlzIGxpc3QgdG8gYXNrIGENCj4+Pj4gdHdvDQo+ Pj4+IHF1aWNrIHF1ZXN0aW9ucywgZGVzY3JpYmUgb3VyIHByb3Bvc2VkIGFjdGlvbiwgYW5kIGNo ZWNrIGZvciBhbnkgbWFqb3INCj4+Pj4gb2JqZWN0aW9ucy4NCj4+Pj4gDQo+Pj4+IFByb3Bvc2Vk IGFjdGlvbjoNCj4+Pj4gV2UgaGF2ZSBhIEhhZG9vcCBjb25uZWN0b3JbMV0gKG1vcmUgaW5mb1sy XSkgZm9yIEdvb2dsZSBDbG91ZCBTdG9yYWdlDQo+Pj4+IChHQ1MpDQo+Pj4+IHdoaWNoIHdlIGhh dmUgYmVlbiBidWlsZGluZyBhbmQgbWFpbnRhaW5pbmcgZm9yIHNvbWUgdGltZS4gQWZ0ZXIgd2UN Cj4+Pj4gY2xlYW4NCj4+Pj4gdXAgb3VyIGNvZGUgYW5kIHRlc3RzIHRvIGNvbmZvcm0gKHRvIHRo ZXNlWzNdIGFuZCBvdGhlciByZXF1aXJlbWVudHMpIHdlDQo+Pj4+IHdvdWxkIGxpa2UgdG8gY29u dHJpYnV0ZSBpdCB0byBIYWRvb3AuIFdlIGhhdmUgbWFueSBjdXN0b21lcnMgdXNpbmcgdGhlDQo+ Pj4+IGNvbm5lY3RvciBpbiBoaWdoLXRocm91Z2hwdXQgcHJvZHVjdGlvbiBIYWRvb3AgY2x1c3Rl cnM7IHdlwrlkIGxpa2UgdG8NCj4+Pj4gbWFrZQ0KPj4+PiBpdCBlYXNpZXIgYW5kIGZhc3RlciB0 byB1c2UgSGFkb29wIGFuZCBHQ1MuDQo+Pj4+IA0KPj4+PiBUaW1lbGluZToNCj4+Pj4gUHJlc2Vu dGx5LCB3ZSBhcmUgd29ya2luZyBvbiB0aGUgYmV0YSBvZiBHb29nbGUgQ2xvdWQgRGF0YXByb2Nb NF0gd2hpY2gNCj4+Pj4gbGltaXRzIG91ciB0aW1lIGEgYml0LCBzbyB3ZcK5cmUgdGFyZ2V0aW5n IGxhdGUgUTEgMjAxNiBmb3IgY3JlYXRpbmcgYQ0KPj4+PiBKSVJBDQo+Pj4+IGlzc3VlIGFuZCBh ZGFwdGluZyBvdXIgY29ubmVjdG9yIGNvZGUgYXMgbmVlZGVkLg0KPj4+PiANCj4+Pj4gT3VyIChx dWljaykgcXVlc3Rpb25zOg0KPj4+PiAqIERvIHdlIG5lZWQgdG8gdGFrZSBhbnkgKG5vbi1jb2Rp bmcpIGFjdGlvbiBmb3IgdGhpcyBiZXlvbmQgc3VibWl0dGluZw0KPj4+PiBhDQo+Pj4+IEpJUkEg d2hlbiB3ZSBhcmUgcmVhZHk/DQo+Pj4+ICogQXJlIHRoZXJlIGFueSB1cC1mcm9udCBjb25jZXJu cyBvciBxdWVzdGlvbnMgd2hpY2ggd2UgY2FuIChvciB3aWxsDQo+Pj4+IG5lZWQNCj4+Pj4gdG8p IGFkZHJlc3M/DQo+Pj4+IA0KPj4+PiBUaGFuayB5b3UhDQo+Pj4+IA0KPj4+PiBKYW1lcyBNYWxv bmUNCj4+Pj4gT24gYmVoYWxmIG9mIHRoZSBHb29nbGUgQmlnIERhdGEgT1NTIEVuZ2luZWVyaW5n IFRlYW0NCj4+Pj4gDQo+Pj4+IExpbmtzOg0KPj4+PiBbMV0gLQ0KPj4+PiBodHRwczovL2dpdGh1 Yi5jb20vR29vZ2xlQ2xvdWRQbGF0Zm9ybS9iaWdkYXRhLWludGVyb3AvdHJlZS9tYXN0ZXIvZ2Nz DQo+Pj4+IFsyXSAtIGh0dHBzOi8vY2xvdWQuZ29vZ2xlLmNvbS9oYWRvb3AvZ29vZ2xlLWNsb3Vk LXN0b3JhZ2UtY29ubmVjdG9yDQo+Pj4+IFszXSAtDQo+Pj4+IGh0dHBzOi8vZ2l0aHViLmNvbS9H b29nbGVDbG91ZFBsYXRmb3JtL2JpZ2RhdGEtaW50ZXJvcC90cmVlL21hc3Rlci9nY3MNCj4+Pj4g WzRdIC0gaHR0cHM6Ly9jbG91ZC5nb29nbGUuY29tL2RhdGFwcm9jDQo+Pj4gDQo+PiANCj4+IA0K DQo=