Return-Path: X-Original-To: apmail-couchdb-dev-archive@www.apache.org Delivered-To: apmail-couchdb-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 3ECC318357 for ; Tue, 20 Oct 2015 15:15:37 +0000 (UTC) Received: (qmail 23130 invoked by uid 500); 20 Oct 2015 15:15:02 -0000 Delivered-To: apmail-couchdb-dev-archive@couchdb.apache.org Received: (qmail 23067 invoked by uid 500); 20 Oct 2015 15:15:02 -0000 Mailing-List: contact dev-help@couchdb.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@couchdb.apache.org Delivered-To: mailing list dev@couchdb.apache.org Received: (qmail 23056 invoked by uid 99); 20 Oct 2015 15:15:02 -0000 Received: from Unknown (HELO spamd2-us-west.apache.org) (209.188.14.142) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 20 Oct 2015 15:15:02 +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 C71531A292B for ; Tue, 20 Oct 2015 15:15:01 +0000 (UTC) X-Virus-Scanned: Debian amavisd-new at spamd2-us-west.apache.org X-Spam-Flag: NO X-Spam-Score: 0.749 X-Spam-Level: X-Spam-Status: No, score=0.749 tagged_above=-999 required=6.31 tests=[KAM_INFOUSMEBIZ=0.75, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001, 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 aV2DHPaGA75m for ; Tue, 20 Oct 2015 15:14:48 +0000 (UTC) Received: from na01-bn1-obe.outbound.protection.outlook.com (mail-bn1bon0134.outbound.protection.outlook.com [157.56.111.134]) by mx1-us-east.apache.org (ASF Mail Server at mx1-us-east.apache.org) with ESMTPS id 64602439B6 for ; Tue, 20 Oct 2015 15:14:48 +0000 (UTC) Received: from CY1PR0601MB1643.namprd06.prod.outlook.com (10.163.232.17) by CY1PR0601MB1641.namprd06.prod.outlook.com (10.163.232.158) with Microsoft SMTP Server (TLS) id 15.1.300.14; Tue, 20 Oct 2015 15:14:43 +0000 Received: from CY1PR0601MB1643.namprd06.prod.outlook.com ([10.163.232.17]) by CY1PR0601MB1643.namprd06.prod.outlook.com ([10.163.232.17]) with mapi id 15.01.0306.003; Tue, 20 Oct 2015 15:14:43 +0000 From: Benjamin Young To: "dev@couchdb.apache.org" Subject: RE: [PROPOSAL] Allow rewrites to be JS function Thread-Topic: [PROPOSAL] Allow rewrites to be JS function Thread-Index: AQHQ+XF+RcVarKNIDUCgnYlunpWPPZ5Rmp6AgAFbnwCAAN63gIACiUyAgAAD0QCAABRCgIAAAUMAgBl30kuAAdY2gIABQacAgAA4QoCAABUDgIAAKtgAgAC8KYCAADnVAIAAGG0AgAAQeMA= Date: Tue, 20 Oct 2015 15:14:43 +0000 Message-ID: References: <467C2D4D-971D-4E5C-A9AA-D3B17FD18220@b2w.com> <7EB4541B-630C-47A8-A2FF-2E4B04EE8EB1@b2w.com> <700C10F8-97B2-45AC-B9CA-C19DB5B36B1F@b2w.com> <7243D1CA-C398-423D-84E2-C12FEC1A1B6D@b2w.com> <63D4CE75-97BC-4611-82A9-45C98753EFB5@redcometlabs.com> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: spf=none (sender IP is ) smtp.mailfrom=byoung@bigbluehat.com; x-originating-ip: [75.137.87.91] x-microsoft-exchange-diagnostics: 1;CY1PR0601MB1641;5:SoCfDktkWD0VWOzuDv0Z1wejZ+ky2d9TPhU+ZTWbUFfzUiURruW/iGAyjRoajti5E6ZWgIe82gih089eXwpQoYrN4KmZ9KUASbyfxwep9Nl2sQWnCdYwLxPnjc9zORb6V86hmzw9KQD4wRm63C0jZA==;24:VXBiWftWsKDLc/BT9qQEADEAcLzoOM+vOHA7CMQ8nSG3a8EmZNxKKJ8TNVful1/Q1kVkkngQy9wY6RE9MLqST2YrTL8UbiQH83xEJls3LFk=;20:wpOo0zC7c9vP3MO42B8JkxHSpbsS3KL5iOCI2ArBC7ljDhlUS+vOp71y34PoaE+gWK4gGlFSL7TW7aF00vo4P+B31GuC6jm9wAsS40SYCY+AeWTdJ8uXJy93R7ZC8jY+npnxw1rcaZRXIsU6Kr0eGHcQBy7DQstdgMtb0xjrUCE= x-microsoft-antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:CY1PR0601MB1641; x-microsoft-antispam-prvs: x-exchange-antispam-report-test: UriScan:; x-exchange-antispam-report-cfa-test: BCL:0;PCL:0;RULEID:(601004)(2401047)(520078)(5005006)(8121501046)(3002001);SRVR:CY1PR0601MB1641;BCL:0;PCL:0;RULEID:;SRVR:CY1PR0601MB1641; x-forefront-prvs: 073515755F x-forefront-antispam-report: SFV:NSPM;SFS:(10019020)(6009001)(13464003)(51914003)(24454002)(189002)(199003)(377454003)(5001960100002)(15395725005)(15975445007)(77096005)(11100500001)(107886002)(81156007)(101416001)(106116001)(561944003)(2950100001)(33656002)(5007970100001)(189998001)(5001920100001)(97736004)(10400500002)(5008740100001)(450100001)(105586002)(2501003)(5002640100001)(110136002)(2900100001)(5003600100002)(5004730100002)(76576001)(99286002)(2351001)(106356001)(50986999)(19580395003)(19580405001)(76176999)(74316001)(66066001)(102836002)(54356999)(122556002)(46102003)(87936001)(93886004)(40100003)(64706001)(86362001)(92566002)(200143003);DIR:OUT;SFP:1102;SCL:1;SRVR:CY1PR0601MB1641;H:CY1PR0601MB1643.namprd06.prod.outlook.com;FPR:;SPF:None;PTR:InfoNoRecords;MX:1;A:1;LANG:en; received-spf: None (protection.outlook.com: bigbluehat.com does not designate permitted sender hosts) spamdiagnosticoutput: 1:23 spamdiagnosticmetadata: NSPM Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: bigbluehat.com X-MS-Exchange-CrossTenant-originalarrivaltime: 20 Oct 2015 15:14:43.5159 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 98d05955-de73-4052-a2d4-cbaabc15b584 X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY1PR0601MB1641 PiBJIHZlcnkgbXVjaCB0aGluayBhIHNpbmdsZSBzaG90IGFwcGxpY2F0aW9uIHNlcnZlciBpcyBh IGdyZWF0IGlkZWEgKHNlZSBmaXJlYmFzZSksIGhvd2V2ZXIgSSBhbSB2ZXJ5IG11Y2ggb2YgdGhl IG9waW5pb24gdGhhdCBpdCBzaG91bGQgYmUgYnVpbHQgb24gdG9wIG9mIENvdWNoREIsIG5vdCBp bnRvIGl0Lg0KDQpBZ3JlZSB3aXRoIERhbGUuIFRoZSBhcmNoaXRlY3R1cmUgKGxhc3QgSSBjaGVj a2VkKSBmb3IgdGhlc2UgZXh0ZW5zaW9uIHBvaW50cyAoX3Jld3JpdGUsIGV0YykgYXJlIChvciBv bmNlIHdlcmUpIHByZXR0eSBtb2R1bGFyLCBzbWFsbCwgYW5kIHJlcGxhY2VhYmxlLiBUaGVyZSB3 YXMgYWxzbyB3b3JrIGRvbmUgb25jZSB1cG9uIGEgdGltZSBmb3IgYSBwcm9wZXIgcGx1Z2lucyBz eXN0ZW0uDQoNCkNvdWxkIHdlIGxldmVyYWdlIHRoYXQgKG9yIHRob3NlKSBhbmQgY3JlYXRlIGEg aGFuZGZ1bCBvZiAicHJpbWVkIiBDb3VjaERCIGRpc3RyaWJ1dGlvbnM/IEF0IGxlYXN0IHR3bzog b25lIHRoYXQncyAianVzdCIgYSBkYXRhYmFzZSwgYW5kIG9uZSB0aGF0J3MgYW4gSFRUUCBhcHBs aWNhdGlvbiBzZXJ2ZXIuDQoNCkl0J3MgcHJldHR5IGVhc3kgdG8gaW1hZ2luZSBhIHRoaW5nIGNh bGxlZCAiQXBhY2hlIENvdWNoQXBwIiB0aGF0IGFjdHVhbGx5IGlzIGEgcHJvcGVyIEZpcmViYXNl LXN0eWxlIHByb2R1Y3QgdGhhdCdzIGEgc3ViLXByb2plY3Qgb2YgQXBhY2hlIENvdWNoREIsIHJv bGxzIGluIGFsbCB0aGVzZSBlbmRwb2ludHMsIGltcHJvdmVzIG9uIHRoZW0sIGFuZCBkb2Vzbid0 IHBpc3Mgb2ZmIHRoZSBBcGFjaGUgQ291Y2hEQiBmb3VuZGF0aW9uIGNvZGUgY29udHJpYnV0b3Jz IGJ5IGJlaW5nIHVuZGVyIGZvb3QuIDspIEl0IGNvdWxkIGV2ZW4gaGF2ZSBpdCdzIG93biByZWxl YXNlIGN5Y2xlcywgZXRjLg0KDQpBcyBsb25nIGFzIGEgIkNvdWNoREIgZm91bmRhdGlvbiIgcHJv amVjdCBzdGF5cyBleHRlbnNpYmxlIChhcyB0aGV5IGFyZSBub3c7IGFuZCBiZXR0ZXIhKSwgdGhl biBJIHRoaW5rIHdlIGNvdWxkIGNyZWF0ZSBhIHNwYWNlIHdoZXJlIGJvdGggYSBmb3VuZGF0aW9u YWwgSlNPTiBkYXRhYmFzZSBhbmQgYW4gZXZlbnR1YWwgYXBwbGljYXRpb24gc2VydmVyIGJhc2Vk IG9uIHRoYXQgZm91bmRhdGlvbiBjb3VsZCBib3RoIHRocml2ZS4NCg0KU2VlbSByZWFzb25hYmxl PyBPciBhIGJyaWRnZSB0b28gZmFyPw0KDQpMb3ZlLA0KQmlnQmx1ZUhhdA0KDQoNCi0tLS0tT3Jp Z2luYWwgTWVzc2FnZS0tLS0tDQpGcm9tOiBEYWxlIEhhcnZleSBbbWFpbHRvOmRhbGVAYXJhbmRv bXVybC5jb21dIA0KU2VudDogVHVlc2RheSwgT2N0b2JlciAyMCwgMjAxNSAxMDowNSBBTQ0KVG86 IGRldkBjb3VjaGRiLmFwYWNoZS5vcmcNClN1YmplY3Q6IFJlOiBbUFJPUE9TQUxdIEFsbG93IHJl d3JpdGVzIHRvIGJlIEpTIGZ1bmN0aW9uDQoNCk9uIHRoZSBzZXJ2ZXIgc2lkZSB5b3UgY2FuIHJ1 biB3aGF0IGV2ZXIgSmF2YVNjcmlwdCB5b3Ugd2FudCwgaXQgaXMgZmFyIGxlc3MgbGltaXRlZCB0 aGFuIGNsaWVudCBzaWRlIEphdmFTY3JpcHQuIFBvdWNoREIgYWxzbyBydW5zIG9uIHRoZSBzZXJ2 ZXIgYW5kIGhhcyB0aGUgZXhhY3Qgc2FtZSBpc3N1ZSBpbiB0ZXJtcyBvZiBzZXBlcmF0aW9uIG9m IGNvbmNlcm5zLg0KDQpQb3VjaERCIGRvZXNudCBleHBlY3QgZGV2ZWxvcGVycyB0byBkbyBkb20g bWFuaXB1bGF0aW9uLCB0ZW1wbGF0aW5nLCBzY2hlZHVsaW5nIGFuZCBvdGhlciBhcHBsaWNhdGlv bnMgZmVhdHVyZXMgdmlhIEFQSSdzIGl0IHByb3ZpZGVzLCBuZWl0aGVyIHdpbGwgaXQgZXZlciBw cm92aWRlIGEgcmV2ZXJzZSBwcm94eQ0KDQpQb3VjaCBhbmQgQ291Y2hEQiBjYW4gYm90aCBiZXR0 ZXIgaW50ZWdyYXRlIHdpdGggdGhpbmdzIHRoYXQgZG8gcHJvdmlkZSByZXZlcnNlIHByb3h5aW5n IGFuZCBvdGhlciBzdWNoIGZlYXR1cmVzIG11Y2ggYmV0dGVyIHRob3VnaC4gSGVyZSBpcyBhbiBl eGFtcGxlIG9mIGEgc2ltcGxlIHNlcnZlciB0aGF0IHByb3ZpZGVzIGEgcHJveHkgb24gL3Byb3h5 LCBhbmQgYWRtaW4gcGFydHkgZGF0YWJhc2Ugb24gL2RiIGFuZCBhIHJlYWQgb25seSBkYXRhYmFz ZSBvbiAvcHVibGljIChpdCBjb3VsZCB1c2UgZWl0aGVyIHBvdWNoZGIgb3IgY291Y2hkYiB0byBw cm92aWRlIHRoZSBkYXRhYmFzZXMpDQoNCmh0dHBzOi8vZ2lzdC5naXRodWIuY29tL2RhbGVoYXJ2 ZXkvYmY0ZTlhOTQ1NTNiNzVlZjJkMzkNCg0KSXRzIGZhciBmcm9tIGlkZWFsLCBidXQgYWxyZWFk eSBzaW1wbGVyIHRoYW4gYXR0ZW1wdGluZyB0aGUgc2FtZSBzZXR1cCB3aXRoIENvdWNoREIgb25s eSBhbmQgZmFyIGZhciBtb3JlIGV4dGVuZGFibGUuIEkgZGlkbnQgbmVlZCB0byB3YWl0IGZvciBD b3VjaERCIHRvIGltcGxlbWVudCBhbnkgZmVhdHVyZXMgb3IgZGlzY3VzcyB0aGVpciBpbXBsZW1l bnRhdGlvbi4NCg0KV2hpbGUgQ291Y2hEQiBpcyB5b3VyIG9ubHkgYXBwbGljYXRpb24gcGxhdGZv cm0sIHRoZXJlIHdpbGwgbmV2ZXIgYmUgZW5vdWdoIGZ1bmN0aW9uYWxpdHkgaW4gaXQgdG8gZnVs ZmlsbCBldmVuIHRoZSBiYXNpYyB1c2UgY2FzZXMgYW5kIHBlb3BsZSB3aWxsIGxlYW4gdG93YXJk cyBiZXR0ZXIgc29sdXRpb25zIChzZWUgbW9uZ28gKyBtZXRlb3IpLg0KDQpJIHZlcnkgbXVjaCB0 aGluayBhIHNpbmdsZSBzaG90IGFwcGxpY2F0aW9uIHNlcnZlciBpcyBhIGdyZWF0IGlkZWEgKHNl ZSBmaXJlYmFzZSksIGhvd2V2ZXIgSSBhbSB2ZXJ5IG11Y2ggb2YgdGhlIG9waW5pb24gdGhhdCBp dCBzaG91bGQgYmUgYnVpbHQgb24gdG9wIG9mIENvdWNoREIsIG5vdCBpbnRvIGl0Lg0KDQpPbiAy MCBPY3RvYmVyIDIwMTUgYXQgMTQ6MzcsIEpvaHMuIEUgPGpvaHNAYjJ3LmNvbT4gd3JvdGU6DQoN Cj4gSGkgRGFsZQ0KPiBJIGRvbnQgdW5kZXJzdGFuZCB0aGUg4oCcaW50ZWdyYXRlIHdpdGggdGhl aXIgdXNlIGNhc2UgYXMgYmVzdCBhcyB3ZSANCj4gcG9zc2libHkgY2Fu4oCdIHdoZW4gaXQgY29t ZXMgdG8gcmV3cml0ZSBhbmQgcmV2ZXJzZSBwcm94eS4NCj4gQXMgZmFyIGFzIEkga25vdyB0aGVy ZSBpcyBub3RoaW5nIHRvIGludGVncmF0ZSBoZXJlLg0KPiBUaGUgam95IGZvciBQb3VjaERCIHRv IGJlIGEgcHVyZSBkYXRhYmFzZSBpcyB2ZXJ5IHVuZGVyc3RhbmRhYmxlLCANCj4gc2luY2UgaXQg c2l0cyBpbiB0aGlzIHJpY2ggZW52aXJvbm1lbnQgdGhhdCBhbGxvdyB5b3UgdG8gZG8gYW55dGhp bmcuDQo+IEF0IHRoZSBzZXJ2ZXIgc2lkZSBDb3VjaERCIGFsbG93cyBmb3IgYSB2ZXJ5IGxpbWl0 ZWQgcG9ydGlvbiBvZiANCj4gamF2YVNjcmlwdCBwcm9jZXNzaW5nLCBpdCB3b3VsZCBiZSBnb29k IGlmIGl0IHdhcyBsZXNzIHJlc3RyaWN0aXZlLg0KPiBJIGFtIG5vdCBhZHZvY2F0aW5nIGFyYml0 cmFyeSBhcHBsaWNhdGlvbiBwbGF0Zm9ybSBmdW5jdGlvbmFsaXR5Lg0KPiBKdXN0IHRha2Ugb3V0 IHNvbWUgbGltaXRhdGlvbnMgZm9yIHRoZSBqYXZhc2NyaXB0IGNyb3dkIG91dCB0aGVyZSB0byAN Cj4gbG92ZSBDb3VjaERCDQo+DQo+IFRoYW5rcyBhbmQgYmVzdCByZWdhcmRzLA0KPiBKb2hzDQo+ DQo+DQo+ID4gT24gMjAgT2N0IDIwMTUsIGF0IDExOjEwLCBEYWxlIEhhcnZleSA8ZGFsZUBhcmFu ZG9tdXJsLmNvbT4gd3JvdGU6DQo+ID4NCj4gPiBUaGlzIGRpc2N1c3Npb24gaGFzIGdvbmUgcm91 bmQgYW5kIHJvdW5kIGEgY291cGxlIG9mIHRpbWVzIGluIA0KPiA+IGRpZmZlcmVudCBmb3JtcyBz byBJIHdpbGwgYXZvaWQgcmVwZWF0aW5nIG15IHByZXZpb3VzIHBvaW50cyBidXQgDQo+ID4gZnJv bSB3b3JraW5nIG9uIFBvdWNoREIsIHRoZSBmb2N1cyBvbiBoYXZpbmcgJ1BvdWNoREInIGJlIGEg ZGF0YWJhc2UgDQo+ID4gb25seSBpcyBmYWlybHkgbGliZXJhdGluZywgYnkgbm90IHRyeWluZyB0 byBhZGQgZmFpcmx5IGFyYml0cmFyeSANCj4gPiAiYXBwbGljYXRpb24gcGxhdGZvcm0iIGZlYXR1 cmVzIGludG8gdGhlIGNvcmUgY29kZWJhc2Ugd2UgY2FuIGZvY3VzIA0KPiA+IG9uIGludGVncmF0 aW5nIHdpdGggd2hhdCBkb2VzIHByb3ZpZGUgdGhvc2UgYXBwbGljYXRpb24gcGxhdGZvcm0gDQo+ ID4gZmVhdHVyZXMgbXVjaCBiZXR0ZXIuDQo+ID4NCj4gPiBVc2VycyBkbyBub3QgbmVlZCB0byB3 YWl0IGZvciByZXZlcnNlIHByb3h5aW5nIG9yIHVybCByZXdyaXRpbmcgdG8gDQo+ID4gYmUgYW4g YWdyZWVkLCBpbXBsZW1lbnRlZCBhbmQgbWFpbnRhaW5lZCBmZWF0dXJlLCB0aGV5IGNhbiB1c2Ug dGhlIA0KPiA+IG1hbnkgdGhhdCBhbHJlYWR5IGV4aXN0IGFuZCB3ZSB3aWxsIGVuc3VyZSB0aGF0 IHdlIGludGVncmF0ZSB3aXRoIA0KPiA+IHRoZWlyIHVzZSBjYXNlIGFzIGJlc3QgYXMgd2UgcG9z c2libHkgY2FuLg0KPiA+DQo+ID4gT24gMTkgT2N0b2JlciAyMDE1IGF0IDIzOjU3LCBIYXJhbGQg S2lzY2ggPGhhcmFsZGtpc2NoQGdtYWlsLmNvbT4gd3JvdGU6DQo+ID4NCj4gPj4gSGkgR2FycmVu LA0KPiA+Pg0KPiA+PiBsb29rIGF0IE1TU1FMIChDTFIpIG9yIE9SQUNMRSAoSkFWQSBGb3Jtcykg YW55IGRhdGFiYXNlIHdhcyB0cnlpbmcgDQo+ID4+IHRvIHN1cHBvcnQgdGhlaXIgdXNlcnMgd2l0 aCBtYXJrdXAgbGFuZ3VhZ2VzIGxpa2UgWE1MLCBIVE1MLCBldGMuIA0KPiA+PiBmb3INCj4gaW5z dGFuY2UNCj4gPj4gZGlyZWN0bHkgb3V0IG9mIHRoZSBkYXRhYmFzZSBjb3JlIChwZXJmb3JtYW5j ZSwgc2ltcGxpY2l0eSwgDQo+ID4+IHNjYWxhYmlsaXR5LC4uKS4NCj4gPj4gTG90dXMgTm90ZXMg ZGlkIGFsc28gaW50ZWdyYXRlIEphdmFTY3JpcHQgaW5zaWRlIG9mIHRoZWlyIGNvcmUgKERvIA0K PiA+PiB5b3UNCj4ga25vdw0KPiA+PiB3aGljaCBndXkgZGlkIHRha2UgcGFydCBvZiBpdD8pLiBU aGlzIGhhdmUgZGlmZmVyZW50IHJlYXNvbnMsIGJ1dCANCj4gPj4gb25lIG9mIHRoaXMgcmVhc29u cyBpcyB0byBzdXBwb3J0IHVzZXJzIHdpdGggZHluYW1pYyBtdXRhYmxlIGRhdGEgDQo+ID4+IGRp cmVjdGx5IGludG8gdGhlaXIgR1VJIGluIEpTT04gZm9ybWF0IHdoaWNoIGluIG15IG9waW5pb24g aXMgdGhlIA0KPiA+PiBmdW5kYW1lbnRhbCBwYXJ0IG9mIENvdWNoREIgdG8gYmUgYSBkYXRhYmFz ZSBmb3IgdGhlIHdlYi4NCj4gPj4gSW1wcm92ZW1lbnRzIGdldCBsb3N0IGlmIHdlIGxvb2sgYXQg b3RoZXJzIGFuZCB0cnkgbm90IHRvIGJlIGRpZmZlcmVudC4NCj4gSW4NCj4gPj4gbXkgb3Bpbmlv biB3ZSBzaG91bGQgbW9yZSB0aGluayBhYm91dCByZXBsYWNpbmcgc3BpZGVybW9ua2V5IHdpdGgg DQo+ID4+IHRoZSBnb29nbGUgVjggZW5naW5lIGFuZCBpdGVncmF0ZSBub2RlIGNvbXBsZXRlbHkg aW50byB0aGUgQ291Y2hEQiANCj4gPj4gY29yZSB0byBjb25zdW1lIG5wbS1wYWNrYWdlcyBkaXJl Y3RseSBpbnN0ZWFkIG9mIHVzaW5nIHRoZW0gaW4gdGhlIA0KPiA+PiBsb2NhbA0KPiBmaWxlc3lz dGVtDQo+ID4+IG91dHNpZGUgb2YgQ291Y2hEQiwgd2hlcmUgdW5mb3J0dW5hdGVsbHkgY29tcGxl eGl0eSByaXNlIHVwIGF0IHNjYWxpbmcuDQo+ID4+DQo+ID4+IC0tSGFyYWxkDQo+ID4+DQo+ID4+ IE9uIE1vbiwgT2N0IDE5LCAyMDE1IGF0IDk6MjQgUE0sIEpvaHMgRW5zYnkgPGpvaHNAYjJ3LmNv bT4gd3JvdGU6DQo+ID4+DQo+ID4+PiBIaSBHYXJyZW4sDQo+ID4+PiB0aGFua3MgZm9yIHRoZSAi bm90IHN0YW5kaW5nIGluIHRoZSB3YXkiLCBJIGhvcGUgZm9yIG1vcmUgDQo+ID4+PiB2b2x1bnRl ZXJzIHRvIGlyb24gb3V0IHNvbWUgb2YgQ291Y2hEQidzIG9sZCBha3dhcmQgd3JpbmtsZXMuDQo+ ID4+PiBJIGFtIGFsbCB3aXRoIHlvdSBmb3Igc2ltcGxpZmljYXRpb246KSBlcm1vdXRoJ3MgcmV3 cml0ZSBmdW5jdGlvbiANCj4gPj4+IGlzIGEgaHVnZSBzaW1wbGlmaWVyLg0KPiA+Pj4NCj4gPj4+ IFdoZXJlIEkgZGlzYWdyZWUgd2l0aCB5b3UgaXMgd2hlcmUgeW91IHNheSAicHJvYmFibHkgYSBz aWduIHRoYXQgDQo+ID4+PiB0aGlzDQo+ID4+IGlkZWENCj4gPj4+IGlzIG5vdCBzb21ldGhpbmcg d29ydGggcHVyc3VpbmciLg0KPiA+Pj4gV2hlbmV2ZXIgeW91IGRpc2NvdmVyIHRoYXQgeW91IGhh dmUgYSBkaWZmZXJlbnRpYXRvciwgaXQncyBhbHdheXMgDQo+ID4+PiBhDQo+IGdvb2QNCj4gPj4+ IGlkZWEgdG8gbG9vayBjbG9zZWx5IGJlZm9yZSBkaXNjYXJpbmcgaXQgYW5kIGJsZW5kIGluIHdp dGggdGhlIHJlc3QuDQo+ID4+PiBJdCdzIGFsbCBhYm91dCBhdHRyYWN0aW5nIHRoZSBuZXh0IG1p bGxpb24gd2ViIGRldmVsb3BlcnMuDQo+ID4+Pg0KPiA+Pj4gam9ocw0KPiA+Pj4NCj4gPj4+DQo+ ID4+Pg0KPiA+Pj4NCj4gPj4+PiBPbiAxOS4gb2t0LiAyMDE1LCBhdCAyMC4wOCwgR2FycmVuIFNt aXRoIDxnc0ByZWRjb21ldGxhYnMuY29tPiB3cm90ZToNCj4gPj4+Pg0KPiA+Pj4+IEnigJltIHJl YWxseSBzdHJ1Z2dsaW5nIHdpdGggdGhlc2UgcHJvcG9zYWxzLiBJIGxvdmUgdGhlIGVudGh1c2lh c20gDQo+ID4+Pj4gb2YNCj4gPj4+IGV2ZXJ5b25lIGJ1dCBJIGtlZXAgdGhpbmtpbmcgd2Ugc2hv dWxkIHJhdGhlciBzaW1wbGlmeSBDb3VjaERCLg0KPiA+Pj4+IENvdWNoREIgaXMgdWx0aW1hdGVs eSBhIGRhdGFiYXNlLiBPbmUgd2l0aCBleGNlbGxlbnQgc3luYw0KPiBjYXBhYmlsaXRpZXMuDQo+ ID4+PiBBbmQgY29tYmluaW5nIHRoYXQgd2l0aCBsaWJyYXJpZXMgbGlrZSBQb3VjaERCIGFuZCBI b29kaWUgbWFrZSBpdCANCj4gPj4+IGFuIGFtYXppbmcgZGF0YWJhc2UgdG8gYnVpbGQgYXBwbGlj YXRpb25zIHdpdGguDQo+ID4+Pj4gQWRkaW5nIHJvdXRlcnMgYW5kIHJldmVyc2UgcHJveGllcyBq dXN0IG1ha2VzIGl0IGZlZWwgbGlrZSB3ZSANCj4gPj4+PiB0cnlpbmcNCj4gdG8NCj4gPj4+IHB1 c2ggQ291Y2hEQiBpbnRvIGJlaW5nIG1vcmUgdGhhbiBpdCBuZWVkcyB0byBiZS4NCj4gPj4+Pg0K PiA+Pj4+IEZvciBleGFtcGxlIGJ1aWxkaW5nIENvdWNoYXBwIGxpa2UgZnVuY3Rpb25hbGl0eSBp biBOb2RlLmpzIGlzIHNvDQo+ID4+IHNpbXBsZQ0KPiA+Pj4gYW5kIHdheSBiZXR0ZXIuIExhbmd1 YWdlcyBsaWtlIEdvIGFsc28gZG8gdGhhdCByZWFsbHkgd2VsbC4gRmFyDQo+IHN1cGVyaW9yDQo+ ID4+PiB0aGFuIHdoYXQgd2UgY2FuIGRvIHdpdGggYSBkYXRhYmFzZS4NCj4gPj4+PiBJIHdvdWxk IHJhdGhlciBsZXQgdGhlIE5vZGUuanMgYW5kIEdvIHdlYiBsaWJyYXJpZXMgc2VydmUgY29udGVu dCANCj4gPj4+PiBhbmQNCj4gPj4+IGxldCB1cyBmb2N1cyBvbiBidWlsZGluZyBhIGNsdXN0ZXJl ZCByZXBsaWNhdGluZyBkYXRhYmFzZS4gV2Ugd2lsbCANCj4gPj4+IGRyYXcgbW9yZSBwZW9wbGUg dG8gdGhpcyBjb21tdW5pdHkgaWYgd2UgY2FuIGRvIHRoYXQgcHJvcGVybHkgb3ZlciANCj4gPj4+ IGNyZWFreSwNCj4gPj4gc2xvdw0KPiA+Pj4gYW5kIGxpbWl0ZWQgd2ViIHNlcnZpbmcgbWFzaGVk IG9uIHRvcCBvZiBhIGRhdGFiYXNlLg0KPiA+Pj4+IElmIEkgbG9vayBhdCBvdGhlciBwb3B1bGFy IGRhdGFiYXNlcywgSSBkb27igJl0IHNlZSBhbnkgb2YgdGhlbSANCj4gPj4+PiBzZXJ2aW5nDQo+ ID4+PiB3ZWIgY29udGVudCB3aGljaCBpcyBwcm9iYWJseSBhIHNpZ24gdGhhdCB0aGlzIGlkZWEg aXMgbm90IA0KPiA+Pj4gc29tZXRoaW5nDQo+ID4+IHdvcnRoDQo+ID4+PiBwdXJzdWluZy4NCj4g Pj4+Pg0KPiA+Pj4+IEhvd2V2ZXIgaWYgdGhlcmUgaXMgYSBidXJuaW5nIGRlc2lyZSBmb3IgdGhp cyBhbmQgZGV2ZWxvcGVycyANCj4gPj4+PiByYWlzaW5nDQo+ID4+PiB0aGVpciBoYW5kcyB0byBj b2RlIHRoaXMgZnVuY3Rpb25hbGl0eSwgSSB3b3VsZCBub3Qgc3RhbmQgaW4geW91ciB3YXkuDQo+ IEl0DQo+ID4+PiBpcyBncmVhdCB0byBzZWUgdGhlIHZhcmllZCB1c2Ugb2YgQ291Y2hEQiBvdXQg aW4gdGhlIHdpbGQuDQo+ID4+Pj4NCj4gPj4+PiBDaGVlcnMNCj4gPj4+PiBHYXJyZW4NCj4gPj4+ Pg0KPiA+Pj4+DQo+ID4+Pj4+IE9uIDE5IE9jdCAyMDE1LCBhdCA0OjQ3IFBNLCBKb2hzLiBFIDxq b2hzQGIydy5jb20+IHdyb3RlOg0KPiA+Pj4+Pg0KPiA+Pj4+PiBUaGFua3MgQW5keSwNCj4gPj4+ Pj4gSSB3aWxsIHRyeSBhbmQgIGdldCBzb21lIHVzZSBjYXNlcyB1cCBvbiBjb25mbHVlbmNlLg0K PiA+Pj4+PiBBcyBmb3Igd2hvZXZlciB3b3VsZCBwaWNrIHVwIHRoZSB3b3JrIGFmdGVyIGVybW91 dGgsICBJIGhhdmUgb2YNCj4gY291cnNlDQo+ID4+PiBvbmUgYmlnIHRoaW5nIG9uIHRoZSB3aXNo IGxpc3QgdGhhdCBnb2VzIHdlbGwgd2l0aCBhIG5ldyByb3V0ZXINCj4gPj4gc29sdXRpb24uLg0K PiA+Pj4+PiByZXZlcnNlIHByb3h5DQo+ID4+Pj4+IEkgcmVtZW1iZXIgYXNraW5nIGFib3V0IGl0 IHdoZW4gSSBmaXJzdCBzdGFydGVkIHRvIHdvcmsgdyANCj4gPj4+Pj4gQ291Y2hEQiBhbmQNCj4g Pj4+IHRoZXJlIHdlcmUgc29tZSBjb25jZXJucyByZWdhcmRpbmcgc2VjdXJpdHkuDQo+ID4+Pj4+ IFNpbmNlIHRoZW4gSSB0aGluayBub2RlLmpzIGhhcyBwYXZlZCB0aGUgd2F5IHdpdGggY29udGVu dCANCj4gPj4+Pj4gc2NyYXBpbmcNCj4gYW5kDQo+ID4+PiBhbGwgc29ydHMgb2Ygb3V0Z29pbmcg dHJhZmZpYy4NCj4gPj4+Pj4NCj4gPj4+Pj4gSGFzIGFueW9uZSB3b3JrIG9uIGEgcmV2ZXJzZSBw cm94eSBzb2x1dGlvbiBmb3IgQ291Y2g/DQo+ID4+Pj4+DQo+ID4+Pj4+IGpvaHMNCj4gPj4+Pj4N Cj4gPj4+Pj4NCj4gPj4+Pj4+IE9uIDE4IE9jdCAyMDE1LCBhdCAyMTozNiwgQW5keSBXZW5rIDxh bmR5d2Vua0BhcGFjaGUub3JnPiB3cm90ZToNCj4gPj4+Pj4+DQo+ID4+Pj4+PiBIZXkgSm9ocywN Cj4gPj4+Pj4+DQo+ID4+Pj4+PiB0aGFua3MgYSBsb3QgZm9yIHRoaXMuIEkgbmVlZCBzb21lIHRp bWUgdG8gZGlnIGludG8gaXQuIFdlIG5lZWQgDQo+ID4+Pj4+PiBhDQo+ID4+PiBwbGFjZSB0bw0K PiA+Pj4+Pj4gd3JpdGUgdGhlIHVzZXIgc3RvcmllcyAvIHVzZSBjYXNlIGRvd24uIFNvIEkgc3Vn Z2VzdCB3ZSBmaW5kIA0KPiA+Pj4+Pj4gZ29vZA0KPiA+Pj4gcGxhY2UgYXQNCj4gPj4+Pj4+IHRo ZSBjd2lraS4gU28gSSBzdWdnZXN0IHRvIHVzZQ0KPiA+Pj4+Pj4NCj4gPj4+DQo+ID4+DQo+IGh0 dHBzOi8vY3dpa2kuYXBhY2hlLm9yZy9jb25mbHVlbmNlL2Rpc3BsYXkvQ09VQ0hEQi9FbmhhbmNl bWVudCtQcm9wb3MNCj4gYWxzDQo+ID4+PiAuDQo+ID4+Pj4+PiBEbyB5b3UgaGF2ZSB3cml0ZSBh Y2Nlc3MgdGhlcmU/IElmIG5vdCwgcGxlYXNlIHBpbmcgbWUuDQo+ID4+Pj4+Pg0KPiA+Pj4+Pj4g R3JlYXQgd29yayENCj4gPj4+Pj4+DQo+ID4+Pj4+PiBBbGwgdGhlIGJlc3QNCj4gPj4+Pj4+DQo+ ID4+Pj4+PiBBbmR5DQo+ID4+Pj4+Pg0KPiA+Pj4+Pj4gUC5TLjogSmFuIGFscmVhZHkgbWVudGlv bmVkIHRoZSBmZWF0dXJlIGZyZWV6ZS4gUGxlYXNlIHRha2UgaXQgDQo+ID4+Pj4+PiBub3QNCj4g Pj4gYXMgYQ0KPiA+Pj4+Pj4gZGVtb3RpdmF0aW9uIGJ1dCBhcyB0aGUgcG9zc2liaWxpdHkgdG8g aGF2ZSBhIGJpdCBtb3JlIHRpbWUgdG8gDQo+ID4+Pj4+PiB3b3JrDQo+ID4+IG9uDQo+ID4+PiBp dC4NCj4gPj4+Pj4+DQo+ID4+Pj4+PiBPbiAxNyBPY3RvYmVyIDIwMTUgYXQgMTc6MzIsIEpvaHMg RW5zYnkgPGpvaHNAYjJ3LmNvbT4gd3JvdGU6DQo+ID4+Pj4+Pg0KPiA+Pj4+Pj4+IEFuZHksDQo+ ID4+Pj4+Pj4gSSB3aWxsIG1ha2UgbXkgZmlyc3QgdXNlIGNhc2UgZm9yIGZ1bmN0aW9uIGluIF9y ZXdyaXRlIGEgaGlnaCANCj4gPj4+Pj4+PiBsZXZlbA0KPiA+Pj4gb25lOg0KPiA+Pj4+Pj4+IHRv IGNyZWF0ZSBhIHN0YW5kYWxvbmUgc2VydmVyIHRoYXQgaXMgYW4gYWxsLWluLW9uZSBEQiBzZXJ2 ZXIsDQo+ID4+PiBhcHBsaWNhdGlvbg0KPiA+Pj4+Pj4+IHNlcnZlciwgYXBpIHNlcnZlciBhbmQg d2ViIHNlcnZlci4NCj4gPj4+Pj4+Pg0KPiA+Pj4+Pj4+IEkgaGF2ZSBwbGF5ZWQgd2l0aCB0aGUg YnVpbGQgb2YgQ291Y2hEQiAyIHdpdGggcmV3cml0ZSANCj4gPj4+Pj4+PiBmdW5jdGlvbiBpbXBs ZW1lbnRlZCB0aGF0ICBlcm1vdXRoIHB1dCB1cCBvbiB0aGUgaXJpc2ggQVdTIA0KPiA+Pj4+Pj4+ IGNvbW11bml0eSBBTUkNCj4gbGlzdA0KPiA+Pj4gYW5kDQo+ID4+Pj4+Pj4gdGhlIG5ldyB1c2Ug Y2FzZXMgYXJlIGVuZGxlc3MuDQo+ID4+Pj4+Pj4gRmlyc3QsIEkgZmluZCB0aGF0IHRoZXJlIGFy ZSBhIGZldyB0aGluZ3MgdGhhdCBwZW9wbGUgZmFpbCB0bw0KPiBub3RpY2UNCj4gPj4+IGFib3V0 DQo+ID4+Pj4+Pj4gZGRvY3MuDQo+ID4+Pj4+Pj4geW91IG5lZWQgYSB0b29sIHRvIGJ1aWxkIGEg ZGRvYywgZWRpdGluZyBKU09OIGlzIG5vdCBhIHZpYWJsZQ0KPiA+PiBvcHRpb24uDQo+ID4+PiBU aGUNCj4gPj4+Pj4+PiBEZG9jIExhYiBvZiBlcm1vdXRoIGlzIGluIGEgY2xhc3Mgb2YgaXRzIG93 bi4gSWYgeW91IGhhdmVudCANCj4gPj4+Pj4+PiB0cmllZA0KPiBpdA0KPiA+Pj4geWV0LA0KPiA+ Pj4+Pj4+IGRvIHNvIGZyb20gaHR0cDovL2Rkb2MubWUvIDxodHRwOi8vZGRvYy5tZS8+LiBJbnN0 YWxsaW5nIG9uIA0KPiA+Pj4+Pj4+IHlvdXINCj4gPj4gb3duDQo+ID4+Pj4+Pj4gY291Y2ggaXQg aXMgYXMgZWFzeSBhcyBzdG9yaW5nIHRoZSBhcHBsaWNhdGlvbiwgYWxsIGluY2x1ZGVkIA0KPiA+ Pj4+Pj4+IGFzIG9uZSBkb2N1bWVudCBpbiBhbnkgZGF0YWJhc2UuIERkb2MgTGFiIGlzIGEgY29t cG9uZW50IA0KPiA+Pj4+Pj4+IG9yaWVudGVkIElERSB3aXRoDQo+ID4+PiBzeW50YXgNCj4gPj4+ Pj4+PiBjaGVja2luZywgbGVzcyBwcmVwcm9zZXNzb3IgYW5kIG90aGVyIGJ1aWxkIHRvb2xzIHRo YXQgbGV0IHlvdSANCj4gPj4+Pj4+PiBrZWVwDQo+ID4+IGENCj4gPj4+IHdlbGwNCj4gPj4+Pj4+ PiBvcmdhbml6ZWQgZGRvYyBhcyBhIHNvdXJjZSBwcm9qZWN0IChpbiBvbmUgY291Y2hkYiBkb2N1 bWVudCkgDQo+ID4+Pj4+Pj4gYW5kDQo+IHlvdQ0KPiA+Pj4+Pj4+IHB1YmxpY2ggYSBkZG9jIHRv IGFueSB0YXJnZXQgZGIuDQo+ID4+Pj4+Pj4gd2l0aCB0aGlzIHRvb2wgeW91IGNhbiBvcmdhbml6 ZSB5b3VyIGpzIG1vZHVsZXMgYW5kIHRlbXBsYXRlcyANCj4gPj4+Pj4+PiBldGMNCj4gPj4gYW5k DQo+ID4+Pj4+Pj4gYmFzaWNhbGx5Li4uDQo+ID4+Pj4+Pj4gc2V0IHVwIHRoZSBBUEkgb2YgeW91 ciBhcHBsaWNhdGlvbiBpbiBhIGRkb2MuIFlvdSBjYW4gc3dpdGNoDQo+IGJldHdlZW4NCj4gPj4+ Pj4+PiBkYXRhYmFzZXMgYW5kIHRoZWlyIGRkb2MgZnVuY3Rpb25hbGl0eSBiYXNlZCBvbiB1c2Vy bmFtZSwgcm9sZSANCj4gPj4+Pj4+PiBvciBnZW9sb2NhdGlvbiBhbmQgbGltaXQgYWNjZXNzIHRv IHBhcnRzIG9mIHRoZSBDb3VjaCBBUEkgYXMgDQo+ID4+Pj4+Pj4gbmVlZGVkDQo+ID4+Pj4+Pj4N Cj4gPj4+Pj4+PiBUaGlzIGlzIHRoZSBtZXRob2QgSSB3b3VsZCByZWNvbW1lbmQgdG8gZXhwbG9y ZSBwb3dlcmZ1bCANCj4gPj4+Pj4+PiBzaW1wbGljaXR5DQo+ID4+PiB3aXRoDQo+ID4+Pj4+Pj4g ZnVuY3Rpb24gaW4gcmV3cml0ZXMNCj4gPj4+Pj4+PiByZWRpcmVjdCBwb3J0IDgwIGRpcmVjdGx5 IHRvIGNvdWNoIHNldCB1cCAyIHZob3N0cywgb25lIGZvciANCj4gPj4+Pj4+PiBwdWJsaWMgYWNj ZXNzIHBvaW50aW5nIHRvDQo+IHlvdWRiL19kZXNpZ24vYXBpDQo+ID4+PiBhbmQNCj4gPj4+Pj4+ PiBvbmUgZm9yIHN5c2FkbSBwb2ludGluZyB0byAvDQo+ID4+Pj4+Pj4gZm9yIGFkbWluIHVzZSBG YXV4dG9uIGFuZCBEZG9jIExhYiBvbiB0aGUgc3lzYWRtIHZob3N0IHlvdSBhcmUgDQo+ID4+Pj4+ Pj4gc2V0IHRvIGRldmVsb3AgZ3JlYXQgc3lzdGVtcywgbm8gYmlnIHRvb2wgc3RhY2sgdG8gbGVh cm4sDQo+ID4+IGp1c3QNCj4gPj4+Pj4+PiBicmluZyBpbiB3aGF0ZXZlciBqcyBtb2R1bGVzIHlv dSBsaWtlLCB0aGUgdGVtcGxhdGUgZW5naW5lIHlvdQ0KPiBsaWtlLA0KPiA+Pj4gdGhlDQo+ID4+ Pj4+Pj4gcm91dGVyIHlvdSBsaWtlLCB0aGUgSFRNTDUgc3R1ZmYgeW91IGxpa2UuLg0KPiA+Pj4+ Pj4+IC4uIG9yIGp1c3Qgd3JpdGUgc29tZSB2ZXJ5IGNvbXBhY3QganMgY29kZSBpbiBvbmUgcGxh Y2Ugd2hlcmUgDQo+ID4+Pj4+Pj4geW91DQo+ID4+PiBlYWxpZXINCj4gPj4+Pj4+PiBoYWQgdG8g bWVzcyBhcm91bmQgd2l0aCBhIHdob2xlIHN0YWNrIG9mIHRvb2xzIGFuZCBzeXN0ZW1zDQo+ID4+ Pj4+Pj4NCj4gPj4+Pj4+PiBiZWxvdyBpcyB0aGUgcmVxIG9iamVjdCB0aGF0IHRoZSBmdW5jdGlv biB0YWtlcw0KPiA+Pj4+Pj4+DQo+ID4+Pj4+Pj4gSm9ocw0KPiA+Pj4+Pj4+DQo+ID4+Pj4+Pj4N Cj4gPj4+Pj4+Pg0KPiA+Pj4+Pj4+IFRoZSByZXdyaXRlIGZ1bmN0aW9uIGhhcyB0aGlzIHN5bnRh eA0KPiA+Pj4+Pj4+IGZ1bmN0aW9uKHJlcSkgew0KPiA+Pj4+Pj4+ICAgICAuLiB5b3VyIGNvZGUg dGhhdCB3aWxsDQo+ID4+Pj4+Pj4gICAgIHJldHVybg0KPiA+Pj4+Pj4+ICAgICAgICAgICAgIHBh dGgNCj4gPj4+Pj4+PiAgICAgICAgICAgICAvLyBvcHRpb25hbA0KPiA+Pj4+Pj4+ICAgICAgICAg ICAgIGhlYWRlcnMNCj4gPj4+Pj4+PiAgICAgICAgICAgICBtZXRob2QgLy8geW91IGNhbiBjaGFu Z2UgdGhpcyBvbiB0aGUgZmx5DQo+ID4+Pj4+Pj4gICAgICAgICAgICAgY29kZQ0KPiA+Pj4+Pj4+ ICAgICAgICAgICAgIGJvZHkNCj4gPj4+Pj4+PiB9DQo+ID4+Pj4+Pj4NCj4gPj4+Pj4+PiB0aGUg ZnVuY3Rpb24gcmVjZWl2ZXMgdGhpcyByZXEgb2JqZWN0IG1ldGhvZCBwYXRoIHJhd19wYXRoIA0K PiA+Pj4+Pj4+IHF1ZXJ5IGhlYWRlcnMNCj4gPj4+Pj4+PiAgICAgQWNjZXB0DQo+ID4+Pj4+Pj4g ICAgIEFjY2VwdC1FbmNvZGluZw0KPiA+Pj4+Pj4+ICAgICBDb25uZWN0aW9uDQo+ID4+Pj4+Pj4g ICAgIEhvc3QNCj4gPj4+Pj4+PiAgICAgVXBncmFkZS1JbnNlY3VyZS1SZXF1ZXN0cw0KPiA+Pj4+ Pj4+ICAgICBVc2VyLUFnZW50DQo+ID4+Pj4+Pj4gICAgIHgtY291Y2hkYi12aG9zdC1wYXRoDQo+ ID4+Pj4+Pj4gYm9keQ0KPiA+Pj4+Pj4+IHBlZXINCj4gPj4+Pj4+PiBjb29raWUNCj4gPj4+Pj4+ PiB1c2VyQ3R4DQo+ID4+Pj4+Pj4gZGINCj4gPj4+Pj4+PiBuYW1lDQo+ID4+Pj4+Pj4gcm9sZXMN Cj4gPj4+Pj4+PiBzZWNPYmoNCj4gPj4+Pj4+Pg0KPiA+Pj4+Pj4+PiBPbiAxLiBva3QuIDIwMTUs IGF0IDEzLjQwLCBBbmR5IFdlbmsgPGFuZHl3ZW5rQGFwYWNoZS5vcmc+IHdyb3RlOg0KPiA+Pj4+ Pj4+Pg0KPiA+Pj4+Pj4+PiBKb2hzLA0KPiA+Pj4+Pj4+Pg0KPiA+Pj4+Pj4+PiBZZXMgZm9yIHN1 cmUhIFRoYXQncyBhbHdheXMgZ3JlYXQuIE1heWJlIHlvdSBjYW4gYWxzbyB3cml0ZSANCj4gPj4+ Pj4+Pj4gc29tZQ0KPiA+PiB1c2VyDQo+ID4+Pj4+Pj4gc3RvcmllcyAoZ2l2ZW4gd2hlbiB0aGVu KSBvciBzY3JpYmJsZSBzb21lIGdyYXBoaWNzLiANCj4gPj4+Pj4+PiBFdmVyeXRoaW5nIGlzDQo+ ID4+PiB1c2VmdWwNCj4gPj4+Pj4+PiBhbmQgd2lsbCBmYXN0ZW4gdGhlIHByb2Nlc3MgOy0pDQo+ ID4+Pj4+Pj4+DQo+ID4+Pj4+Pj4+IENoZWVycw0KPiA+Pj4+Pj4+Pg0KPiA+Pj4+Pj4+PiBBbmR5 DQo+ID4+Pj4+Pj4+DQo+ID4+Pj4+Pj4+IE9uIDEgT2N0IDIwMTUgMTI6MzgsICJKb2hzIEVuc2J5 IiA8am9oc0BiMncuY29tIDxtYWlsdG86DQo+ID4+IGpvaHNAYjJ3LmNvbQ0KPiA+Pj4+Pg0KPiA+ Pj4+Pj4+IHdyb3RlOg0KPiA+Pj4+Pj4+PiBUaGFua3MgZm9yIHRoaXMgQW5keSwNCj4gPj4+Pj4+ Pj4NCj4gPj4+Pj4+Pj4gSSBjYW4gY29udHJpYnV0ZSB0byB0aGUgZGlzY3Vzc2lvbiBvZiB0aGUg ZmVhdHVyZSBzZWVuIGZyb20gYSANCj4gPj4+Pj4+Pj4gdXNlcg0KPiA+Pj4+Pj4+IHBlcnNwZWN0 aXZlLg0KPiA+Pj4+Pj4+PiBXb3VsZCBpdCBiZSBhcHByb3ByaWF0ZSB0byBwcmVzZW50IHNvbWUg dXNlIGNhc2VzPw0KPiA+Pj4+Pj4+Pg0KPiA+Pj4+Pj4+PiBiZXN0DQo+ID4+Pj4+Pj4+IEpvaHMN Cj4gPj4+Pj4+Pj4NCj4gPj4+Pj4+Pj4+IE9uIDEuIG9rdC4gMjAxNSwgYXQgMTIuMzMsIEFuZHkg V2VuayA8YW5keXdlbmtAYXBhY2hlLm9yZw0KPiA+PiA8bWFpbHRvOg0KPiA+Pj4+Pj4+IGFuZHl3 ZW5rQGFwYWNoZS5vcmc+PiB3cm90ZToNCj4gPj4+Pj4+Pj4+DQo+ID4+Pj4+Pj4+PiBKb2hzLA0K PiA+Pj4+Pj4+Pj4NCj4gPj4+Pj4+Pj4+IExldCBtZSBwbGVhc2Ugc2hvdyB0aGUgc3RlcHMgbmVl ZGVkLg0KPiA+Pj4+Pj4+Pj4NCj4gPj4+Pj4+Pj4+ICogZGlzY3VzcyB0aGUgZmVhdHVyZSB2ZXJ5 IGNsZWFybHkgb24gdGhlIGRldkAuIFBsZWFzZSBtYWtlIA0KPiA+Pj4+Pj4+Pj4gc3VyZQ0KPiA+ Pj4gdGhhdA0KPiA+Pj4+Pj4+IGNvcmUNCj4gPj4+Pj4+Pj4+IGRldmVsb3BlcnMgYXMgY29tbWl0 dGVycyB3aXRoIGNvbW1pdCBiaXRzIGFyZSBpbnZvbHZlZA0KPiA+Pj4+Pj4+Pj4NCj4gPj4+Pj4+ Pj4+ICogY29kZSB0aGUgZmVhdHVyZS4gTWFrZSBzdXJlIHRvIGltcGxlbWVudCB0ZXN0cw0KPiA+ Pj4+Pj4+Pj4NCj4gPj4+Pj4+Pj4+ICogc2VuZCBhIHB1bGwgcmVxdWVzdCBhbmQgc2hvdyBpdCB0 byBkZXZADQo+ID4+Pj4+Pj4+Pg0KPiA+Pj4+Pj4+Pj4gKiBmaW5hbGx5IHRoZSBjb21tdW5pdHkg d2lsbCBhY2NlcHQgb3IgZGVjbGluZSB0aGUgZmVhdHVyZSANCj4gPj4+Pj4+Pj4+ICh0aGlzDQo+ ID4+PiB3aWxsDQo+ID4+Pj4+Pj4+PiBpbnZvbHZlIHJlZmFjdG9yaW5nIGFuZCBjaGFuZ2VzKQ0K PiA+Pj4+Pj4+Pj4NCj4gPj4+Pj4+Pj4+IEFzIEFsZXggc2FpZC4gVGhlIFBNQyBvciBKYW4gZG8g bm90IGRlY2lkZSBhYm91dCB0aGUgZmVhdHVyZS4NCj4gPj4+Pj4+Pj4+DQo+ID4+Pj4+Pj4+PiBB bGwgdGhlIGJlc3QNCj4gPj4+Pj4+Pj4+DQo+ID4+Pj4+Pj4+PiBBbmR5DQo+ID4+Pj4+Pj4+PiBP biAxIE9jdCAyMDE1IDExOjIxLCAiQWxleGFuZGVyIFNob3JpbiIgPGt4ZXBhbEBnbWFpbC5jb20N Cj4gPj4gPG1haWx0bzoNCj4gPj4+Pj4+PiBreGVwYWxAZ21haWwuY29tPj4gd3JvdGU6DQo+ID4+ Pj4+Pj4+Pg0KPiA+Pj4+Pj4+Pj4+IE9uIFRodSwgT2N0IDEsIDIwMTUgYXQgMTI6MDcgUE0sIEpv aHMgRW5zYnkgPGpvaHNAYjJ3LmNvbQ0KPiA+PiA8bWFpbHRvOg0KPiA+Pj4+Pj4+IGpvaHNAYjJ3 LmNvbT4+IHdyb3RlOg0KPiA+Pj4+Pj4+Pj4+PiB3aWxsIHlvdSB3ZWxjb21lIGVybW91dGhzIHJl d3JpdGUgY29udHJpYnV0aW9uPw0KPiA+Pj4+Pj4+Pj4+DQo+ID4+Pj4+Pj4+Pj4gVGhlIGRlY2lz aW9uIGlzIGRlcGVuZHMgb24gdGhlIGltcGxlbWVudGF0aW9uLiBJZiBpdCB3aWxsIA0KPiA+Pj4+ Pj4+Pj4+IGJlDQo+ID4+IGdvb2QsDQo+ID4+PiB3aHkNCj4gPj4+Pj4+Pj4+PiBub3Q/IEZpbmFs bHksIENvdWNoREIgaXMgb3BlbiBzb3VyY2UgcHJvamVjdDogd2UgY2Fubm90IA0KPiA+Pj4+Pj4+ Pj4+IGZvcmJpZA0KPiA+Pj4gcGVvcGxlDQo+ID4+Pj4+Pj4+Pj4gcmlnaHQgZm9yIGNvbnRyaWJ1 dGlvbnMsIHdlIG9ubHkgd2VsY29tZSB0aGVtLg0KPiA+Pj4+Pj4+Pj4+DQo+ID4+Pj4+Pj4+Pj4+ IEFyZ3VtZW50cyBhZ2FpbnN0IGNvdWNoYXBwcyBoYXMgdG8gZG8gd2l0aCBwZXJmb3JtYW5jZSBh bmQgDQo+ID4+Pj4+Pj4+Pj4+IHRoZQ0KPiA+Pj4gZm9sbHkNCj4gPj4+Pj4+PiBpbg0KPiA+Pj4+ Pj4+Pj4+IGNvbXBldGluZyB3aXRoIG5vZGUuanMuDQo+ID4+Pj4+Pj4+Pj4NCj4gPj4+Pj4+Pj4+ PiBQZXJmb3JtYW5jZSBxdWVzdGlvbiBmb3IgdGhlIG5ldyBfcmV3cml0ZSBpbXBsZW1lbnRhdGlv biBpcyANCj4gPj4+Pj4+Pj4+PiB2ZXJ5IGRlcGVuZHMgb24gcXVlcnkgc2VydmVyLiBPbmNlIGl0 IGNhbiBwcm9jZXNzIHRoaXMga2luZCANCj4gPj4+Pj4+Pj4+PiBvZg0KPiA+Pj4gZnVuY3Rpb25z LA0KPiA+Pj4+Pj4+Pj4+IHlvdSBtYXkgdXNlIHNvbWV0aGluZyBiZXR0ZXIgdGhhbiBKUyB0byBn YWluIGJldHRlciBwZXJmb3JtYW5jZS4NCj4gPj4+IFRoYXQNCj4gPj4+Pj4+Pj4+PiBjb3VsZCBi ZSBFcmxhbmcgbmF0aXZlIHF1ZXJ5IHNlcnZlciwgb3IgbHVlcmwtYmFzZWQgb25lLCBvciANCj4g Pj4+Pj4+Pj4+PiBlbHNlDQo+ID4+PiB5b3UNCj4gPj4+Pj4+Pj4+PiBsaWtlLg0KPiA+Pj4+Pj4+ Pj4+DQo+ID4+Pj4+Pj4+Pj4gLS0NCj4gPj4+Pj4+Pj4+PiAsLCxeLi5eLCwsDQo+ID4+Pj4+Pj4+ Pj4NCj4gPj4+Pj4+Pj4NCj4gPj4+Pj4+Pg0KPiA+Pj4+Pj4+DQo+ID4+Pj4+Pg0KPiA+Pj4+Pj4N Cj4gPj4+Pj4+IC0tDQo+ID4+Pj4+PiBBbmR5IFdlbmsNCj4gPj4+Pj4+IEhhbWJ1cmcgLSBHZXJt YW55DQo+ID4+Pj4+PiBSb2NrSXQhDQo+ID4+Pj4+Pg0KPiA+Pj4+Pj4gR1BHIGZpbmdlcnByaW50 OiBDMDQ0IDgzMjIgOUUxMiAxNDgzIDRGRUMgOTQ1MiBCNjVEIDZCRTMgOUVEMyANCj4gPj4+Pj4+ IDk1ODgNCj4gPj4+Pj4+DQo+ID4+Pj4+PiBodHRwczovL3Blb3BsZS5hcGFjaGUub3JnL2tleXMv Y29tbWl0dGVyL2FuZHl3ZW5rLmFzYw0KPiA+Pj4+Pg0KPiA+Pj4+DQo+ID4+Pg0KPiA+Pj4NCj4g Pj4NCj4NCj4NCg==