Return-Path: X-Original-To: apmail-cloudstack-dev-archive@www.apache.org Delivered-To: apmail-cloudstack-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 BB58F1139D for ; Thu, 14 Aug 2014 16:57:13 +0000 (UTC) Received: (qmail 33748 invoked by uid 500); 14 Aug 2014 16:57:13 -0000 Delivered-To: apmail-cloudstack-dev-archive@cloudstack.apache.org Received: (qmail 33699 invoked by uid 500); 14 Aug 2014 16:57:13 -0000 Mailing-List: contact dev-help@cloudstack.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@cloudstack.apache.org Delivered-To: mailing list dev@cloudstack.apache.org Received: (qmail 33674 invoked by uid 99); 14 Aug 2014 16:57:12 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 14 Aug 2014 16:57:12 +0000 X-ASF-Spam-Status: No, hits=-0.7 required=5.0 tests=RCVD_IN_DNSWL_LOW,SPF_HELO_PASS,SPF_PASS X-Spam-Check-By: apache.org Received-SPF: pass (nike.apache.org: domain of rohit.yadav@shapeblue.com designates 213.199.154.17 as permitted sender) Received: from [213.199.154.17] (HELO emea01-am1-obe.outbound.protection.outlook.com) (213.199.154.17) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 14 Aug 2014 16:56:47 +0000 Received: from DBXPR07MB480.eurprd07.prod.outlook.com (10.141.231.154) by DBXPR07MB480.eurprd07.prod.outlook.com (10.141.231.154) with Microsoft SMTP Server (TLS) id 15.0.1005.10; Thu, 14 Aug 2014 16:56:44 +0000 Received: from DBXPR07MB480.eurprd07.prod.outlook.com ([10.141.231.154]) by DBXPR07MB480.eurprd07.prod.outlook.com ([10.141.231.154]) with mapi id 15.00.1005.008; Thu, 14 Aug 2014 16:56:44 +0000 From: Rohit Yadav To: "dev@cloudstack.apache.org" Subject: Re: [SHOW] Authentication refactoring Thread-Topic: [SHOW] Authentication refactoring Thread-Index: AQHPteCagiiiwBp+ZUKvnz8BSIC5f5vMrq0AgAOmZ4CAAACdgA== Date: Thu, 14 Aug 2014 16:56:44 +0000 Message-ID: References: In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [178.199.146.103] x-microsoft-antispam: BCL:0;PCL:0;RULEID:;UriScan:; x-forefront-prvs: 03030B9493 x-forefront-antispam-report: SFV:NSPM;SFS:(6009001)(51704005)(377454003)(51444003)(13734003)(479174003)(24454002)(199003)(189002)(19580405001)(79102001)(107886001)(64706001)(33656002)(82746002)(107046002)(77982001)(15202345003)(74662001)(99396002)(2351001)(31966008)(86362001)(105586002)(92566001)(81542001)(74502001)(4396001)(92726001)(106116001)(101416001)(19580395003)(87936001)(2656002)(110136001)(15975445006)(83072002)(81342001)(54356999)(95666004)(36756003)(46102001)(15395725005)(85852003)(83322001)(80022001)(85306004)(66066001)(21056001)(83716003)(20776003)(76482001)(106356001)(50986999)(76176999)(104396001)(2501001);DIR:OUT;SFP:;SCL:1;SRVR:DBXPR07MB480;H:DBXPR07MB480.eurprd07.prod.outlook.com;FPR:;MLV:sfv;PTR:InfoNoRecords;A:1;MX:1;LANG:en; Content-Type: text/plain; charset="utf-8" Content-ID: <6CF661F4D4A9A742AE1E3666F2465185@eurprd07.prod.outlook.com> Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: shapeblue.com X-Virus-Checked: Checked by ClamAV on apache.org SGkgTWluLA0KDQpPbiAxNC1BdWctMjAxNCwgYXQgNjo1NCBwbSwgTWluIENoZW4gPG1pbi5jaGVu QGNpdHJpeC5jb20+IHdyb3RlOg0KDQo+IEhpIFJvaGl0LA0KPg0KPiBBbnkgcmVhc29uIHdoeSB5 b3UgZGlkbid0IGltcGxlbWVudCByZXNwb25zZSBjbGFzcyBmb3IgbG9naW4gYW5kIGxvZ291dA0K PiBsaWtlIGFueSBvdGhlciBBUEkgY21kPyBJIHRoaW5rIHRoYXQgd2lsbCBiZSB1c2VmdWwgYXMg bWVudGlvbmVkIGluIHlvdXINCj4gRlMuDQoNCkNoZWNrb3V0IExvZ2luUmVzcG9uc2UgYW5kIExv Z291dFJlc3BvbnNlIDopIGFsc28gcmVhZCB0aGUgYW5ub3RhdGlvbiBpbiBAQVBJQ29tbWFuZCB3 aGljaCBsaW5rcyB0byB0aGVtIG9uIG1hc3Rlci4NClRoYXTigJlzIGhvdyB0aGUgYXBpZG9jIGdl dHMgdGhlIHJlc3BvbnNlIGRvY3MuDQoNCkNoZWVycy4NCg0KPg0KPiBUaGFua3MNCj4gLW1pbg0K Pg0KPiBPbiA4LzEyLzE0IDI6MTAgQU0sICJSb2hpdCBZYWRhdiIgPHJvaGl0LnlhZGF2QHNoYXBl Ymx1ZS5jb20+IHdyb3RlOg0KPg0KPj4gVGhpcyB3YXMgZG9uZToNCj4+IGh0dHBzOi8vY3dpa2ku YXBhY2hlLm9yZy9jb25mbHVlbmNlL2Rpc3BsYXkvQ0xPVURTVEFDSy9BdXRoZW50aWNhdGlvbitS ZWZhDQo+PiBjdG9yaW5nDQo+Pg0KPj4gVGhpcyBpcyB0aGUgYnJhbmNoOg0KPj4gaHR0cHM6Ly9n aXQtd2lwLXVzLmFwYWNoZS5vcmcvcmVwb3MvYXNmP3A9Y2xvdWRzdGFjay5naXQ7YT1zaG9ydGxv ZztoPXJlZnMNCj4+IC9oZWFkcy9hdXRoLXJlZmFjdG9yDQo+Pg0KPj4gVXBkYXRlczoNCj4+IC0g RXZlcnkgYXV0aCBtZWNoYW5pc20gbm93IGltcGxlbWVudHMgYXMgYSBBUElDb21tYW5kIGJ1dCB0 aGVzZSBhcmUNCj4+IHNwZWNpYWwgQVBJcyBhcmUgbm90IGFsbG93ZWQgdG8gZXhlY3V0ZSwgaS5l LiB0aGUgZXhlY3V0ZSgpIG1ldGhvZA0KPj4gcmV0dXJucyB3aXRoIGFuIGVycm9yDQo+PiAtIEV4 aXN0aW5nIHRlc3RzIHdlcmUgZml4ZWQNCj4+IC0gV2Ugbm8gbG9uZ2VyIG5lZWQgdG8gaGFyZGNv ZGUgbG9naW4vbG9nb3V0IGZvciBkb2MgZ2VuZXJhdGlvbiBldGMuDQo+PiAtIEFwaSBkaXNjb3Zl cnkgbm93IGhhcyBsb2dpbi9sb2dvdXQgZG9jcyBldGMgYXMgd2VsbA0KPj4gLSBTaW5jZSB0aGVz ZSBBUElzIGFyZSB0aWdodGx5IGNvdXBsZWQgd2l0aCBjbG91ZC1zZXJ2ZXIgYXJ0aWZhY3QsIGV4 Y2VwdA0KPj4gZm9yIHJlc3BvbnNlcyBhbGwgdGhlIGludGVyZmFjZSBkZWZpbml0aW9ucyBldGMg YXJlIHdpdGhpbiBjbG91ZC1zZXJ2ZXINCj4+IC0gVGhpcyBhbGxvd3MgZm9yIGltcGxlbWVudGF0 aW9uIG9mIG90aGVyIGxvZ2luIG1lY2hhbmlzbXMgc3VjaCBhcyBzYW1sLA0KPj4gb2F1dGgsIHNv bWV0aGluZy1jdXN0b23CgSBldGMuIHRob3VnaCBpbXBsZW1lbnRpbmcgaXQgYXMgYSBwbHVnaW4g aXMgc3RpbGwNCj4+IHRyaWNreSBub3cNCj4+DQo+PiBJwrl2ZSB0ZXN0ZWQgVUkgYW5kIGNsb3Vk bW9ua2V5IG9uIHBvcnQgODA4MCBhbmQgODA5Niwgd2l0aCBhcGlrZXkvc2VjcmV0DQo+PiBrZXlz IGJ1dCB3b3VsZCB3ZWxjb21lIGhlbHAgYXJvdW5kIHRoaXMgYXJlYSBmcm9tIGFueW9uZS4gScK5 bGwgbWVyZ2UgdGhlDQo+PiBicmFuY2ggbGF0ZXIgdGhpcyB3ZWVrIGlmIG5vIG9uZSBvYmplY3Rz Lg0KPj4NCj4+IENoZWVycy4NCj4+DQo+PiBPbiAxMi1BdWctMjAxNCwgYXQgNTo1MCBhbSwgUm9o aXQgWWFkYXYgPHJvaGl0LnlhZGF2QHNoYXBlYmx1ZS5jb20+IHdyb3RlOg0KPj4NCj4+PiBIaSwN Cj4+Pg0KPj4+IFRoZSB3YXkgd2UgaGFuZGxlIGxvZ2luIGFuZCBsb2dvdXQgaXMgaGFyZGNvZGVk IGFuZCBzaW5jZSB0aGVyZSBpcyBubw0KPj4+IEFQSUNvbW1hbmQvQmFzZUNtZCBpbXBsZW1lbnRh dGlvbiB0aGUgYXBpZG9jLCBhcGlkaXNjb3ZlcnkgYW5kIG90aGVyDQo+Pj4gZG9uwrl0IGRpc2Nv dmVyIHRoZXNlIGFwaXMuIEZvciBzdXBwb3J0aW5nIFNBTUwgYXMgYW4gYXV0aGVudGljYXRpb24N Cj4+PiBtZWNoYW5pc20sIEnCuXZlIHJlZmFjdG9yZWQgdGhlIEF1dGggbWVjaGFuaXNtIGFzIGEg cGx1Z2dhYmxlIHNlcnZpY2UNCj4+PiB0aGF0IGxvYWRzIHdpdGggYXBpLXNlcnZlciBhcnRpZmFj dCBhbmQgYm90aCBsb2dpbiBhbmQgbG9nb3V0IGFyZSBub3cNCj4+PiBpbXBsZW1lbnRlZCBhcyBh IHBzZWR1byBCYXNlQ21kIGNsYXNzZXMuDQo+Pj4NCj4+PiBJIGNhbGwgdGhlbSBwc2V1ZG8gYmVj YXVzZSB0aGVpciBleGVjdXRlKCkgaXMgbmV2ZXIgY2FsbGVkLCB0aGUNCj4+PiBhdXRoZW50aWNh dGlvbiBndWFyZHMgaW4gQXBpU2VydmxldCBjbGFzcyBtYWtlIHN1cmUgd2UgY2FsbCBhbg0KPj4+ IGF1dGhlbnRpY2F0ZSBtZXRob2Qgb2Ygc3VjaCBjbGFzc2VzLiBTaW5jZSwgdGhleSBhcmUgdGln aHRseSBjb3VwbGVkDQo+Pj4gd2l0aCBjbG91ZC1zZXJ2ZXLCuXMgQXBpU2VydmxldCBpdCBvbmx5 IG1hZGUgc2Vuc2UgdG8gaGF2ZSB0aGUgaW50ZXJmYWNlDQo+Pj4gZGVmaW5pdGlvbiBhbmQgaW1w bGVtZW50YXRpb24gd2l0aGluIHRoZSBzYW1lIHBhY2thZ2UvYXJ0aWZhY3QgYXMgd2VsbC4NCj4+ PiBUaGlzIGFsc28gc29sdmVzIHRoZSBhcGlkb2MgaXNzdWUgZm9yIGxvZ2luL2xvZ291dCBhbmQg c2FtbCByZWxhdGVkIGF1dGgNCj4+PiBhcGlzLg0KPj4+DQo+Pj4gScK5bGwgbWVyZ2UgdGhlbSBh ZnRlciBzb21ldGltZSBhbmQgY29udGludWUgd29ya2luZyBvbiBzYW1sIHN0dWZmLiBXaWxsDQo+ Pj4gcHVzaCB0aGUgY29kZSBpbiB0aGUgYnJhbmNoIMKzYXV0aC1yZWZhY3RvcsKyIGluIGFuIGhv dXIgZm9yDQo+Pj4gcmV2aWV3L3Rlc3Rpbmcgbm93LiBUaGlzIGRvZXMgbm90IGJyZWFrIGFueXRo aW5nIGFuZCBzaG91bGQgbm90IGNhdXNlDQo+Pj4gYW55IGF1dGggcmVsYXRlZCBpc3N1ZXMgZm9y IGFsbCBleGlzdGluZyBjbGllbnRzLg0KPj4+DQo+Pj4gQW55IHN1Z2dlc3Rpb25zLCBmZWVkYmFj ayB3ZWxjb21lISBSZWZhY3RvcmluZyB3YXMgcHJldHR5IHN0cmFpZ2h0DQo+Pj4gZm9yd2FyZCBi dXQgScK5bGwgbWFrZSBzdXJlIHRvIHdyaXRlIGEgd2lraSBwYWdlIG9uIHRoaXMgYmVmb3JlIG1l cmdpbmcNCj4+PiB0byBtYXN0ZXIuDQo+Pj4NCj4+PiBSZWdhcmRzLA0KPj4+IFJvaGl0IFlhZGF2 DQo+Pj4gU29mdHdhcmUgQXJjaGl0ZWN0LCBTaGFwZUJsdWUNCj4+PiBNLiArNDEgNzc5MDE1MjE5 IHwgcm9oaXQueWFkYXZAc2hhcGVibHVlLmNvbQ0KPj4+IEJsb2c6IGJoYWlzYWFiLm9yZyB8IFR3 aXR0ZXI6IEBfYmhhaXNhYWINCj4+Pg0KPj4+DQo+Pj4NCj4+PiBGaW5kIG91dCBtb3JlIGFib3V0 IFNoYXBlQmx1ZSBhbmQgb3VyIHJhbmdlIG9mIENsb3VkU3RhY2sgcmVsYXRlZA0KPj4+IHNlcnZp Y2VzDQo+Pj4NCj4+PiBJYWFTIENsb3VkIERlc2lnbiAmDQo+Pj4gQnVpbGQ8aHR0cDovL3NoYXBl Ymx1ZS5jb20vaWFhcy1jbG91ZC1kZXNpZ24tYW5kLWJ1aWxkLy8+DQo+Pj4gQ1NGb3JnZSDCrSBy YXBpZCBJYWFTIGRlcGxveW1lbnQgZnJhbWV3b3JrPGh0dHA6Ly9zaGFwZWJsdWUuY29tL2NzZm9y Z2UvPg0KPj4+IENsb3VkU3RhY2sgQ29uc3VsdGluZzxodHRwOi8vc2hhcGVibHVlLmNvbS9jbG91 ZHN0YWNrLWNvbnN1bHRhbmN5Lz4NCj4+PiBDbG91ZFN0YWNrIEluZnJhc3RydWN0dXJlDQo+Pj4g U3VwcG9ydDxodHRwOi8vc2hhcGVibHVlLmNvbS9jbG91ZHN0YWNrLWluZnJhc3RydWN0dXJlLXN1 cHBvcnQvPg0KPj4+IENsb3VkU3RhY2sgQm9vdGNhbXAgVHJhaW5pbmcNCj4+PiBDb3Vyc2VzPGh0 dHA6Ly9zaGFwZWJsdWUuY29tL2Nsb3Vkc3RhY2stdHJhaW5pbmcvPg0KPj4+DQo+Pj4gVGhpcyBl bWFpbCBhbmQgYW55IGF0dGFjaG1lbnRzIHRvIGl0IG1heSBiZSBjb25maWRlbnRpYWwgYW5kIGFy ZQ0KPj4+IGludGVuZGVkIHNvbGVseSBmb3IgdGhlIHVzZSBvZiB0aGUgaW5kaXZpZHVhbCB0byB3 aG9tIGl0IGlzIGFkZHJlc3NlZC4NCj4+PiBBbnkgdmlld3Mgb3Igb3BpbmlvbnMgZXhwcmVzc2Vk IGFyZSBzb2xlbHkgdGhvc2Ugb2YgdGhlIGF1dGhvciBhbmQgZG8NCj4+PiBub3QgbmVjZXNzYXJp bHkgcmVwcmVzZW50IHRob3NlIG9mIFNoYXBlIEJsdWUgTHRkIG9yIHJlbGF0ZWQgY29tcGFuaWVz Lg0KPj4+IElmIHlvdSBhcmUgbm90IHRoZSBpbnRlbmRlZCByZWNpcGllbnQgb2YgdGhpcyBlbWFp bCwgeW91IG11c3QgbmVpdGhlcg0KPj4+IHRha2UgYW55IGFjdGlvbiBiYXNlZCB1cG9uIGl0cyBj b250ZW50cywgbm9yIGNvcHkgb3Igc2hvdyBpdCB0byBhbnlvbmUuDQo+Pj4gUGxlYXNlIGNvbnRh Y3QgdGhlIHNlbmRlciBpZiB5b3UgYmVsaWV2ZSB5b3UgaGF2ZSByZWNlaXZlZCB0aGlzIGVtYWls IGluDQo+Pj4gZXJyb3IuIFNoYXBlIEJsdWUgTHRkIGlzIGEgY29tcGFueSBpbmNvcnBvcmF0ZWQg aW4gRW5nbGFuZCAmIFdhbGVzLg0KPj4+IFNoYXBlQmx1ZSBTZXJ2aWNlcyBJbmRpYSBMTFAgaXMg YSBjb21wYW55IGluY29ycG9yYXRlZCBpbiBJbmRpYSBhbmQgaXMNCj4+PiBvcGVyYXRlZCB1bmRl ciBsaWNlbnNlIGZyb20gU2hhcGUgQmx1ZSBMdGQuIFNoYXBlIEJsdWUgQnJhc2lsDQo+Pj4gQ29u c3VsdG9yaWEgTHRkYSBpcyBhIGNvbXBhbnkgaW5jb3Jwb3JhdGVkIGluIEJyYXNpbCBhbmQgaXMg b3BlcmF0ZWQNCj4+PiB1bmRlciBsaWNlbnNlIGZyb20gU2hhcGUgQmx1ZSBMdGQuIFNoYXBlQmx1 ZSBTQSBQdHkgTHRkIGlzIGEgY29tcGFueQ0KPj4+IHJlZ2lzdGVyZWQgYnkgVGhlIFJlcHVibGlj IG9mIFNvdXRoIEFmcmljYSBhbmQgaXMgdHJhZGVkIHVuZGVyIGxpY2Vuc2UNCj4+PiBmcm9tIFNo YXBlIEJsdWUgTHRkLiBTaGFwZUJsdWUgaXMgYSByZWdpc3RlcmVkIHRyYWRlbWFyay4NCj4+DQo+ PiBSZWdhcmRzLA0KPj4gUm9oaXQgWWFkYXYNCj4+IFNvZnR3YXJlIEFyY2hpdGVjdCwgU2hhcGVC bHVlDQo+PiBNLiArNDEgNzc5MDE1MjE5IHwgcm9oaXQueWFkYXZAc2hhcGVibHVlLmNvbQ0KPj4g QmxvZzogYmhhaXNhYWIub3JnIHwgVHdpdHRlcjogQF9iaGFpc2FhYg0KPj4NCj4+DQo+Pg0KPj4g RmluZCBvdXQgbW9yZSBhYm91dCBTaGFwZUJsdWUgYW5kIG91ciByYW5nZSBvZiBDbG91ZFN0YWNr IHJlbGF0ZWQgc2VydmljZXMNCj4+DQo+PiBJYWFTIENsb3VkIERlc2lnbiAmDQo+PiBCdWlsZDxo dHRwOi8vc2hhcGVibHVlLmNvbS9pYWFzLWNsb3VkLWRlc2lnbi1hbmQtYnVpbGQvLz4NCj4+IENT Rm9yZ2Ugwq0gcmFwaWQgSWFhUyBkZXBsb3ltZW50IGZyYW1ld29yazxodHRwOi8vc2hhcGVibHVl LmNvbS9jc2ZvcmdlLz4NCj4+IENsb3VkU3RhY2sgQ29uc3VsdGluZzxodHRwOi8vc2hhcGVibHVl LmNvbS9jbG91ZHN0YWNrLWNvbnN1bHRhbmN5Lz4NCj4+IENsb3VkU3RhY2sgSW5mcmFzdHJ1Y3R1 cmUNCj4+IFN1cHBvcnQ8aHR0cDovL3NoYXBlYmx1ZS5jb20vY2xvdWRzdGFjay1pbmZyYXN0cnVj dHVyZS1zdXBwb3J0Lz4NCj4+IENsb3VkU3RhY2sgQm9vdGNhbXAgVHJhaW5pbmcNCj4+IENvdXJz ZXM8aHR0cDovL3NoYXBlYmx1ZS5jb20vY2xvdWRzdGFjay10cmFpbmluZy8+DQo+Pg0KPj4gVGhp cyBlbWFpbCBhbmQgYW55IGF0dGFjaG1lbnRzIHRvIGl0IG1heSBiZSBjb25maWRlbnRpYWwgYW5k IGFyZSBpbnRlbmRlZA0KPj4gc29sZWx5IGZvciB0aGUgdXNlIG9mIHRoZSBpbmRpdmlkdWFsIHRv IHdob20gaXQgaXMgYWRkcmVzc2VkLiBBbnkgdmlld3MNCj4+IG9yIG9waW5pb25zIGV4cHJlc3Nl ZCBhcmUgc29sZWx5IHRob3NlIG9mIHRoZSBhdXRob3IgYW5kIGRvIG5vdA0KPj4gbmVjZXNzYXJp bHkgcmVwcmVzZW50IHRob3NlIG9mIFNoYXBlIEJsdWUgTHRkIG9yIHJlbGF0ZWQgY29tcGFuaWVz LiBJZg0KPj4geW91IGFyZSBub3QgdGhlIGludGVuZGVkIHJlY2lwaWVudCBvZiB0aGlzIGVtYWls LCB5b3UgbXVzdCBuZWl0aGVyIHRha2UNCj4+IGFueSBhY3Rpb24gYmFzZWQgdXBvbiBpdHMgY29u dGVudHMsIG5vciBjb3B5IG9yIHNob3cgaXQgdG8gYW55b25lLiBQbGVhc2UNCj4+IGNvbnRhY3Qg dGhlIHNlbmRlciBpZiB5b3UgYmVsaWV2ZSB5b3UgaGF2ZSByZWNlaXZlZCB0aGlzIGVtYWlsIGlu IGVycm9yLg0KPj4gU2hhcGUgQmx1ZSBMdGQgaXMgYSBjb21wYW55IGluY29ycG9yYXRlZCBpbiBF bmdsYW5kICYgV2FsZXMuIFNoYXBlQmx1ZQ0KPj4gU2VydmljZXMgSW5kaWEgTExQIGlzIGEgY29t cGFueSBpbmNvcnBvcmF0ZWQgaW4gSW5kaWEgYW5kIGlzIG9wZXJhdGVkDQo+PiB1bmRlciBsaWNl bnNlIGZyb20gU2hhcGUgQmx1ZSBMdGQuIFNoYXBlIEJsdWUgQnJhc2lsIENvbnN1bHRvcmlhIEx0 ZGEgaXMNCj4+IGEgY29tcGFueSBpbmNvcnBvcmF0ZWQgaW4gQnJhc2lsIGFuZCBpcyBvcGVyYXRl ZCB1bmRlciBsaWNlbnNlIGZyb20gU2hhcGUNCj4+IEJsdWUgTHRkLiBTaGFwZUJsdWUgU0EgUHR5 IEx0ZCBpcyBhIGNvbXBhbnkgcmVnaXN0ZXJlZCBieSBUaGUgUmVwdWJsaWMgb2YNCj4+IFNvdXRo IEFmcmljYSBhbmQgaXMgdHJhZGVkIHVuZGVyIGxpY2Vuc2UgZnJvbSBTaGFwZSBCbHVlIEx0ZC4g U2hhcGVCbHVlDQo+PiBpcyBhIHJlZ2lzdGVyZWQgdHJhZGVtYXJrLg0KDQpSZWdhcmRzLA0KUm9o aXQgWWFkYXYNClNvZnR3YXJlIEFyY2hpdGVjdCwgU2hhcGVCbHVlDQpNLiArNDEgNzc5MDE1MjE5 IHwgcm9oaXQueWFkYXZAc2hhcGVibHVlLmNvbQ0KQmxvZzogYmhhaXNhYWIub3JnIHwgVHdpdHRl cjogQF9iaGFpc2FhYg0KDQoNCg0KRmluZCBvdXQgbW9yZSBhYm91dCBTaGFwZUJsdWUgYW5kIG91 ciByYW5nZSBvZiBDbG91ZFN0YWNrIHJlbGF0ZWQgc2VydmljZXMNCg0KSWFhUyBDbG91ZCBEZXNp Z24gJiBCdWlsZDxodHRwOi8vc2hhcGVibHVlLmNvbS9pYWFzLWNsb3VkLWRlc2lnbi1hbmQtYnVp bGQvLz4NCkNTRm9yZ2Ug4oCTIHJhcGlkIElhYVMgZGVwbG95bWVudCBmcmFtZXdvcms8aHR0cDov L3NoYXBlYmx1ZS5jb20vY3Nmb3JnZS8+DQpDbG91ZFN0YWNrIENvbnN1bHRpbmc8aHR0cDovL3No YXBlYmx1ZS5jb20vY2xvdWRzdGFjay1jb25zdWx0YW5jeS8+DQpDbG91ZFN0YWNrIEluZnJhc3Ry dWN0dXJlIFN1cHBvcnQ8aHR0cDovL3NoYXBlYmx1ZS5jb20vY2xvdWRzdGFjay1pbmZyYXN0cnVj dHVyZS1zdXBwb3J0Lz4NCkNsb3VkU3RhY2sgQm9vdGNhbXAgVHJhaW5pbmcgQ291cnNlczxodHRw Oi8vc2hhcGVibHVlLmNvbS9jbG91ZHN0YWNrLXRyYWluaW5nLz4NCg0KVGhpcyBlbWFpbCBhbmQg YW55IGF0dGFjaG1lbnRzIHRvIGl0IG1heSBiZSBjb25maWRlbnRpYWwgYW5kIGFyZSBpbnRlbmRl ZCBzb2xlbHkgZm9yIHRoZSB1c2Ugb2YgdGhlIGluZGl2aWR1YWwgdG8gd2hvbSBpdCBpcyBhZGRy ZXNzZWQuIEFueSB2aWV3cyBvciBvcGluaW9ucyBleHByZXNzZWQgYXJlIHNvbGVseSB0aG9zZSBv ZiB0aGUgYXV0aG9yIGFuZCBkbyBub3QgbmVjZXNzYXJpbHkgcmVwcmVzZW50IHRob3NlIG9mIFNo YXBlIEJsdWUgTHRkIG9yIHJlbGF0ZWQgY29tcGFuaWVzLiBJZiB5b3UgYXJlIG5vdCB0aGUgaW50 ZW5kZWQgcmVjaXBpZW50IG9mIHRoaXMgZW1haWwsIHlvdSBtdXN0IG5laXRoZXIgdGFrZSBhbnkg YWN0aW9uIGJhc2VkIHVwb24gaXRzIGNvbnRlbnRzLCBub3IgY29weSBvciBzaG93IGl0IHRvIGFu eW9uZS4gUGxlYXNlIGNvbnRhY3QgdGhlIHNlbmRlciBpZiB5b3UgYmVsaWV2ZSB5b3UgaGF2ZSBy ZWNlaXZlZCB0aGlzIGVtYWlsIGluIGVycm9yLiBTaGFwZSBCbHVlIEx0ZCBpcyBhIGNvbXBhbnkg aW5jb3Jwb3JhdGVkIGluIEVuZ2xhbmQgJiBXYWxlcy4gU2hhcGVCbHVlIFNlcnZpY2VzIEluZGlh IExMUCBpcyBhIGNvbXBhbnkgaW5jb3Jwb3JhdGVkIGluIEluZGlhIGFuZCBpcyBvcGVyYXRlZCB1 bmRlciBsaWNlbnNlIGZyb20gU2hhcGUgQmx1ZSBMdGQuIFNoYXBlIEJsdWUgQnJhc2lsIENvbnN1 bHRvcmlhIEx0ZGEgaXMgYSBjb21wYW55IGluY29ycG9yYXRlZCBpbiBCcmFzaWwgYW5kIGlzIG9w ZXJhdGVkIHVuZGVyIGxpY2Vuc2UgZnJvbSBTaGFwZSBCbHVlIEx0ZC4gU2hhcGVCbHVlIFNBIFB0 eSBMdGQgaXMgYSBjb21wYW55IHJlZ2lzdGVyZWQgYnkgVGhlIFJlcHVibGljIG9mIFNvdXRoIEFm cmljYSBhbmQgaXMgdHJhZGVkIHVuZGVyIGxpY2Vuc2UgZnJvbSBTaGFwZSBCbHVlIEx0ZC4gU2hh cGVCbHVlIGlzIGEgcmVnaXN0ZXJlZCB0cmFkZW1hcmsuDQo=