Return-Path: X-Original-To: apmail-directory-kerby-archive@minotaur.apache.org Delivered-To: apmail-directory-kerby-archive@minotaur.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 68BB918B54 for ; Fri, 19 Feb 2016 06:06:11 +0000 (UTC) Received: (qmail 18842 invoked by uid 500); 19 Feb 2016 06:06:11 -0000 Delivered-To: apmail-directory-kerby-archive@directory.apache.org Received: (qmail 18809 invoked by uid 500); 19 Feb 2016 06:06:11 -0000 Mailing-List: contact kerby-help@directory.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: kerby@directory.apache.org Delivered-To: mailing list kerby@directory.apache.org Received: (qmail 18798 invoked by uid 99); 19 Feb 2016 06:06:11 -0000 Received: from pnap-us-west-generic-nat.apache.org (HELO spamd2-us-west.apache.org) (209.188.14.142) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 19 Feb 2016 06:06:11 +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 A32C31A034A for ; Fri, 19 Feb 2016 06:06:10 +0000 (UTC) X-Virus-Scanned: Debian amavisd-new at spamd2-us-west.apache.org X-Spam-Flag: NO X-Spam-Score: -5.35 X-Spam-Level: X-Spam-Status: No, score=-5.35 tagged_above=-999 required=6.31 tests=[RCVD_IN_DNSWL_HI=-5, RCVD_IN_MSPIKE_H3=-0.01, RCVD_IN_MSPIKE_WL=-0.01, RP_MATCHES_RCVD=-0.329, SPF_PASS=-0.001] autolearn=disabled Received: from mx1-lw-eu.apache.org ([10.40.0.8]) by localhost (spamd2-us-west.apache.org [10.40.0.9]) (amavisd-new, port 10024) with ESMTP id eU5t8s4PeZRI for ; Fri, 19 Feb 2016 06:06:08 +0000 (UTC) Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by mx1-lw-eu.apache.org (ASF Mail Server at mx1-lw-eu.apache.org) with ESMTP id E49F25F1D4 for ; Fri, 19 Feb 2016 06:06:06 +0000 (UTC) Received: from fmsmga001.fm.intel.com ([10.253.24.23]) by orsmga102.jf.intel.com with ESMTP; 18 Feb 2016 22:06:06 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.22,469,1449561600"; d="scan'208";a="906584187" Received: from fmsmsx103.amr.corp.intel.com ([10.18.124.201]) by fmsmga001.fm.intel.com with ESMTP; 18 Feb 2016 22:06:05 -0800 Received: from fmsmsx102.amr.corp.intel.com (10.18.124.200) by FMSMSX103.amr.corp.intel.com (10.18.124.201) with Microsoft SMTP Server (TLS) id 14.3.248.2; Thu, 18 Feb 2016 22:06:04 -0800 Received: from shsmsx102.ccr.corp.intel.com (10.239.4.154) by FMSMSX102.amr.corp.intel.com (10.18.124.200) with Microsoft SMTP Server (TLS) id 14.3.248.2; Thu, 18 Feb 2016 22:06:04 -0800 Received: from shsmsx103.ccr.corp.intel.com ([169.254.4.4]) by shsmsx102.ccr.corp.intel.com ([169.254.2.172]) with mapi id 14.03.0248.002; Fri, 19 Feb 2016 14:05:32 +0800 From: "Zheng, Kai" To: "kerby@directory.apache.org" Subject: RE: Kerby client library refactoring Thread-Topic: Kerby client library refactoring Thread-Index: AdEmd2d+kDNtvzviTFKkjWMa06g6YQABbzrQAHsXbYAAEPBJwABV/2AAAAysSAAAPOyZgAA20lzgCBklRHCm1eih8KadwoEAzTbSL9CabZ7mgA== Date: Fri, 19 Feb 2016 06:05:32 +0000 Message-ID: <8D5F7E3237B3ED47B84CF187BB17B666148A6C39@SHSMSX103.ccr.corp.intel.com> References: <8D5F7E3237B3ED47B84CF187BB17B66611CD3F1C@SHSMSX152.ccr.corp.intel.com> <8D5F7E3237B3ED47B84CF187BB17B66611CD5E81@SHSMSX152.ccr.corp.intel.com> <565AAEEA.5050903@gmail.com> <459976100.154348.1448888261062.JavaMail.zimbra@psu.edu> <8D5F7E3237B3ED47B84CF187BB17B66611CD7728@SHSMSX152.ccr.corp.intel.com> <8D5F7E3237B3ED47B84CF187BB17B6661485BDC8@SHSMSX103.ccr.corp.intel.com> <2122969913.8916379.1455312860741.JavaMail.zimbra@psu.edu> <8D5F7E3237B3ED47B84CF187BB17B666148873E3@SHSMSX103.ccr.corp.intel.com> <0BDBC3A328AD6E4C87F467F180AFCBF4E16DF5@SHSMSX103.ccr.corp.intel.com> In-Reply-To: <0BDBC3A328AD6E4C87F467F180AFCBF4E16DF5@SHSMSX103.ccr.corp.intel.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.239.127.40] Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 VGhhbmtzIFlhbiBmb3Igd29ya2luZyBvbiB0aGlzLiBJIHVuZGVyc3RhbmQgeW91J3JlIHNhdmlu ZyB5b3VyIGNvZGVzIGluIHlvdXIgZ2l0aHViLCBidXQgc3RpbGwgYmV0dGVyIHRvIGNyZWF0ZSBK SVJBIGVudHJpZXMgZm9yIHlvdXIgdGFyZ2V0IHRhc2tzLiBXaGVuIHlvdXIgcGFydGx5IHdvcmsg aXMgaW4gZ29vZCBzaGFwZSwgcGxlYXNlIHB1c2ggcmVxdWVzdCBmb3IgdGhlIHJldmlldyBhbmQg Z2V0IHRoZSBjb2RlcyBpbiB0aW1lbHkuIFRoYW5rcy4NCg0KUmVnYXJkcywNCkthaQ0KDQotLS0t LU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KRnJvbTogWWFuLCBZYW4gQSBbbWFpbHRvOnlhbi5hLnlh bkBpbnRlbC5jb21dIA0KU2VudDogRnJpZGF5LCBGZWJydWFyeSAxOSwgMjAxNiAxOjUyIFBNDQpU bzoga2VyYnlAZGlyZWN0b3J5LmFwYWNoZS5vcmc7IFN0ZXZlIE1veWVyIDxzbW95ZXJAcHN1LmVk dT4NClN1YmplY3Q6IFJFOiBLZXJieSBjbGllbnQgbGlicmFyeSByZWZhY3RvcmluZw0KDQpIaSwg YWxsDQoNCkkgd2FzIHJlYWRpbmcgeW91ciBkaXNjdXNzaW9uIGFib3V0IGFkZGluZyB0aGUgcmVt b3RlIGthZG1pbiBhbmQga3Bhc3N3ZCBmdW5jdGlvbmFsaXR5LCBhbmQgSSBob3BlIEkgY2FuIGhl bHAgd2l0aCB0aGVzZSBtb2R1bGVzLg0KDQpJbiBmYWN0LCBJIGhhdmUgcmVhZCBjb2RlcyBvbiBr YWRtaW4tcmVtb3RlIGJyYW5jaCB3aGljaCBoYXMgdHdvIG5ldyBkaWZmZXJlbnQgbW9kdWxlcyBm cm9tIHRydW5rIGJyYW5jaCAoa2VyYi1hZG1pbiBhbmQga2VyYi1hZG1pbi1zZXJ2ZXIpLg0KDQpJ ZiB0aGVyZSBpcyBubyBvdGhlciBzdWdnZXN0aW9ucywgSSBjYW4gaGVscCB3b3JrIG9uIHRoZSBr YWRtaW4tcmVtb3RlIGJyYW5jaCBhcyB5b3UgZGlzY3Vzc2VkIGJlZm9yZS4NCg0KSWYgc29tZW9u ZSBoYXMgYWxzbyBzdGFydGVkIHdvcmtpbmcgb24gdGhpcyBpc3N1ZSwgcGxlYXNlIGxldCBtZSBr bm93LCBhbmQgSSdtIGdsYWQgdG8gaGVscCBzaGFyZSBzb21lIHBhcnRzLg0KDQpCZXN0IHJlZ2Fy ZHMsDQpZYW4NCg0KLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCkZyb206IFpoZW5nLCBLYWkg W21haWx0bzprYWkuemhlbmdAaW50ZWwuY29tXSANClNlbnQ6IFR1ZXNkYXksIEZlYnJ1YXJ5IDE2 LCAyMDE2IDI6NDYgUE0NClRvOiBrZXJieUBkaXJlY3RvcnkuYXBhY2hlLm9yZzsgU3RldmUgTW95 ZXIgPHNtb3llckBwc3UuZWR1Pg0KU3ViamVjdDogUkU6IEtlcmJ5IGNsaWVudCBsaWJyYXJ5IHJl ZmFjdG9yaW5nDQoNClNvcnJ5IGZvciB0aGUgbGF0ZSByZXBseS4NCg0KPj4gSSd2ZSBhZGRlZCBh IGNvdXBsZSBtb3JlIHN1Yi10YXNrcyB0byBESVJLUkItNDQwIHdoaWNoIHdpbGwgYWxsb3cgdGhl IEtyYkNsaWVudCB0byBzZXQgdGhlIGxpc3Qgb2YgZW5jcnlwdGlvbiB0eXBlcw0KU291bmRzIGdv b2QgdG8gbWUuIEEgcXVlc3Rpb24gaXMsIGluIHlvdXIgY2FzZSwgd2hlcmUgZG8geW91IGdldCB0 aGUgZW5jcnlwdGlvbiB0eXBlcyBsaXN0PyBJZiB5b3UgZ2V0IHRoZW0gZnJvbSBhIGNvbmZpZ3Vy YXRpb24sIHRoZW4gdGhpcyBtaWdodCBub3QgYmUgbmVlZGVkIGJlY2F1c2UgS3JiQ2xpZW50IGNh biBwaWNrIHVwIHRoZW0gYnkgaXRzZWxmLg0KDQo+PiB0aGUgS09wdGlvbiBhbmQgS3JiS2RjT3B0 aW9ucyBhcmUgYWRkZWQgaW50byB0aGUgcmVxdWVzdCdzIG9wdGlvbnMgKHdoaWNoIGRvZXMgbWFr ZSB0aGVtIGVhc2llciB0byBwYXNzKSBidXQgdGhlbiB0aGUgcmVxdWVzdHMgbmVlZCB0byByZWFk IHRoZW0gYmFjayBvdXQuIEkgdGhpbmsgSSdkIHByZWZlciB0aGF0IChhdCBsZWFzdCBhcyBhbiBv cHRpb24pIHdlIGJlIGFibGUgdG8gYnVpbGQgdGhlIHJlcXVlc3Qgd2Ugd2FudCBhbmQgY2FsbCBz b21ldGhpbmcgbGlrZSBhbiBleGVjdXRlKCkgbWV0aG9kIG9uIHRoZSBjbGllbnQuDQpEaWQgeW91 IGZpbmQgYW55IGlzc3VlIGFib3V0IHJlYWRpbmcgdGhlbSBiYWNrIG91dD8gQ2FuIHdlIGVuaGFu Y2UgdGhlIGNvZGVzIHRvIGFsbG93IHlvdSB0byB1c2UgS3JiQ2xpZW50IGFzIGZsZXhpYmxlIGFz IHlvdSB3b3VsZCBidWlsZCB0aGUgcmVxdWVzdCB5b3Vyc2VsZj8gTm90IHN1cmUgd2hhdCdzIGV4 YWN0bHkgbmVlZGVkIGhlcmUuIEV4cG9zaW5nIEFzUmVxdWVzdCBsZXZlbCBpcyBhIGxpdHRsZSB0 cmlja3kgYmVjYXVzZSBpdCdzIHN0aWxsIGluIGZhc3QgZXZvbHZpbmcuDQoNCj4+IGFkZGluZyB0 aGUgcmVtb3RlIGtwYXNzd2QgYW5kIGthZG1pbiBmdW5jdGlvbmFsaXR5IHdpbGwgcmVxdWlyZSBh IHNtYWxsIGFtb3VudCBvZiByZWZhY3RvcmluZyB3aXRoaW4gdGhlIGNsaWVudCBjb2RlIGFzIHdl bGwgYXMgc2V0dGluZyB1cCB0aGUgY2xhc3MgaGllcmFyY2h5IGluIGEgY29udmVuaWVudCB3YXku DQpBZ3JlZS4gV2UgY2FuIGFkZCBrcGFzc3dkIGFuZCBrYWRtaW4gc2ltaWxhcmx5IGFzIEtyYkNs aWVudC4gV2UgaGFkIG1hZGUgc29tZSBpbml0aWFsIHdvcmsgaW4ga2FkbWluLXJlbW90ZSBicmFu Y2ggZm9yIHRoZSBwcm90b3R5cGUsIGFzIEppYWppYSBtZW50aW9uZWQuIFRvIGF2b2lkIGJpZyBp bXBhY3QgZm9yIGV4aXN0aW5nIGNvZGVzLCB3ZSBzaW1wbHkgZHVwbGljYXRlZCB0aGUgY29kZXMg YW5kIGFkYXB0IGFjY29yZGluZ2x5LiBFdmVudHVhbGx5IHdlIG1heSByZWZhY3RvciB0aGUgY29k ZXMgYW5kIGF2b2lkIHRoZSBkdXBsaWNhdGlvbiBjb2RlcyBhZnRlciB3ZSBtYWtlIGl0IHdvcmsg Zmlyc3QgYW5kIGhhdmUgdGhlIHVuaXQgdGVzdHMuICBOb3RlIHRoZXJlJ3JlIHNvbWUgZGlmZmVy ZW5jZXMgdGhvdWdoOiAxKSBLcmJDbGllbnQgaXMgYWdhaW5zdCBLREMsIGtwYXNzd2QgYW5kIGth ZG1pbiBhcmUgYWdhaW5zdCBrYWRtaW5kOyAyKSBrYWRtaW4gbmVlZHMgdG8gYXV0aGVudGljYXRl IHZpYSBHU1NBUEk7IDMpIGthZG1pbiB1c2VzIFhEUiBmb3IgdGhlIFJQQzsgNCkgdGhleSBtYXkg dXNlIGRpZmZlcmVudCBjb25maWd1cmF0aW9ucy4gQ29uc2lkZXJpbmcgc3VjaCwgaXQgbWF5IHNv dW5kIHJlYXNvbmFibGUgdG8gZGV2ZWxvcCB0aGUgbmV3IGZ1bmN0aW9uYWxpdGllcyBzZXBhcmF0 ZWx5LCBpbnN0ZWFkIG9mIHJlZGVzaWduIHRoZSB3aG9sZSBhcmNoaXRlY3R1cmUgZmlyc3QuDQoN Cj4+IFRoZSBLcGFzc3dkIGNsaWVudCBzaG91bGQgYWN0dWFsbHkgdW5kZXJzdGFuZCBib3RoIHRo ZSBNaWNyb3NvZnQgYW5kIHRoZSAic3RhbmRhcmQiIHZhcmlhbnQgb2YgdGhlIHByb3RvY29sLCBz byB0aGVyZSBhcmUgYWN0dWFsbHkgdHdvIGRpZmZlcmVudCByZXF1ZXN0IGZvcm1hdHMgcmVwcmVz ZW50IGJ5IGtwYXNzd2QuDQpJIHRob3VnaHQgaXQgd291bGQgYmUgZW5vdWdoIGZvciBrcGFzc3dk IHRvIHN1cHBvcnQgdGhlIGNoYW5nZSBwYXNzd29yZCBwcm90b2NvbCByaWdodCwgc2luY2UgYWxs IHZlbmRvcnMgdXNlIHRoZSBzcGVjPw0KDQo+PiBXZSBtaWdodCB3YW50IGEgYmFzZSBjbGFzcyBm b3Igc29tZSBvZiB0aGUgdG9vbHMgYXMgdGhleSBkbyBoYXZlIHNvbWUgY29tbW9uYWxpdHkuDQpZ ZWFoLCBhZ3JlZS4gV2UnbGwgbmVlZCBhZGQgdW5pdCB0ZXN0cyBmb3IgdGhlIHRvb2xzIGFzIHdl bGwuDQoNCj4+VGhlcmUncyBhbiBBc1JlcXVlc3QgY2xhc3MgZGVmaW5lZCBpbiB0aGUgY2xpZW50 IGNvZGUgYXMgd2VsbCBhcyBpbiB0aGUgc2VydmVyIGNvZGUgLSBpcyB0aGVyZSBzb21lIHJlYXNv biB0aGVzZSBjbGFzc2VzIGFyZW4ndCBzaGFyZWQ/ICBJZiB0aGV5IHNpbXBseSByZXByZXNlbnQg dGhlIHBhY2tldCBvbiB0aGUgd2lyZSwgY291bGQgdGhleSBiZSBzaGFyZWQ/DQpBc1JlcXVlc3Qg aXMgYSBoZWxwZXIgY2xhc3MgdG8gYnVpbGQgb3IgaGFuZGxlIHRoZSB3aXJlIG1lc3NhZ2UgdHlw ZSBvZiBBc1JlcS4gSXQgbG9va3Mgcm91Z2hseSBzYW1lIGluIGNsaWVudCBhbmQgS0RDIHNpZGVz LCBidXQgc3RpbGwgcXVpdGUgbXVjaCBkaWZmZXJlbmNlLCBub3QgdG8gc2hhcmUgYWxsb3dzIHRo ZSBjb2RlcyBjYW4gZXZvbHZlIGluZGVwZW5kZW50bHkgaW4gdGhlIHR3byBzaWRlcy4NCg0KPj5X ZSBkb24ndCBoYXZlIGFuIEFwUmVxdWVzdCBpbiB0aGUgY2xpZW50IHlldA0KQWggcmlnaHQsIGdv b2QgY2F0Y2ghISBXZSBkaWRuJ3QgaGF2ZSBpdCBiZWNhdXNlIGl0J3Mgbm90IG5lZWRlZCB5ZXQu IERvIHlvdSBoYXZlIGFueSBjYXNlcyB0byB1c2UgaXQ/IFdlIGhhdmUgb25lLCBhbmQgYWN0dWFs bHkgd2UncmUgaW1wbGVtZW50aW5nIGEgbmV3IEdTU0FQSSBtZWNoYW5pc20gYmFzZWQgb24gS2Vy YnksIHdoaWNoIHdpbGwgbmVlZCBBcFJlcWV1c3QgYW5kIHNvbWUgQVBJcy4gDQoNCj4+V2UncmUg cGxhbm5pbmcgdG8gY29udGludWUgd29yayBvbiB0aGUgS2VyYnkgQ2xpZW50IG9uIE1vbmRheSBi dXQgd291bGQgbGlrZSBzb21lIGlucHV0IGJlZm9yZSB3ZSAicGVyZm9ybSBtYWpvciBzdXJnZXJ5 Ii4gIElmIHlvdSdyZSBpbnRlcmVzdGVkLCB3ZSBjb3VsZCB0YWtlIG9uIHJlc3BvbnNpYmlsaXR5 IGZvciB0aGUgY2xpZW50IGlmIHRoYXQgaGVscHMuDQpEZWZpbml0ZWx5IHlvdSdyZSB2ZXJ5IHdl bGNvbWUuIFRoYW5rcyBmb3IgdGhlIGNvbW11bmljYXRpb24gYW5kIHN5bmMgdG8gYXZvaWQgcG9z c2libGUgY29uZmxpY3QuIEZvY3VzaW5nIG9uIHRoZSBjbGllbnQgc2lkZSBzb3VuZHMgcmVhc29u YWJsZSBhcyBpdCdzIGVzc2VudGlhbGx5IG5lZWRlZC4gV2UnbGwgYWxzbyBtYWRlIHRoZSBzZXJ2 ZXIgc2lkZSB3b3JrIGFzIHdlbGwgYmVjYXVzZSBpdCBjYW4gaGVscCB0byBkbyB0aGUgdW5pdCB0 ZXN0cy4gRm9yIHNtYWxsIGNoYW5nZXMsIGhvdyBhYm91dCBkb2luZyBpbiB0cnVuayB0YXJnZXRp bmcgdGhlIFJDMiByZWxlYXNlPyBBbmQgZm9yIHRoZSBrcGFzc3dkIGFuZCBrYWRtaW4gc3R1ZmZz LCBob3cgYWJvdXQgZGV2ZWxvcGluZyB0aGVtIGluIHRoZSBrYWRtaW4tcmVtb3RlIGJyYW5jaD8g V291bGQgeW91IGNoZWNrIHRoZSBicmFuY2gsIGxvb2tpbmcgYXQgdGhlIHJlbGF0ZWQgY2xpZW50 IHNpZGUgbW9kdWxlcz8gT3VyIHNpZGUgbWF5IGZvY3VzIG9uIHRoZSBzZXJ2ZXIgc2lkZS4gSWYg c291bmRzIGdvb2QsIEkgZ3Vlc3Mgd2UgY2FuIG1ha2UgdGhlIGJyYW5jaCBjb21taXR0YWJsZSB0 byB5b3UuIElmIHlvdSBoYXZlIG90aGVyIGlkZWFzIGFib3V0IGhvdyB0byBjb2xsYWJvcmF0ZSwg cGxlYXNlIGxldCBtZSBrbm93LiBUaGFua3MuDQoNClJlZ2FyZHMsDQpLYWkNCg0KLS0tLS1Pcmln aW5hbCBNZXNzYWdlLS0tLS0NCkZyb206IFN0ZXZlIE1veWVyIFttYWlsdG86c21veWVyQHBzdS5l ZHVdIA0KU2VudDogU2F0dXJkYXksIEZlYnJ1YXJ5IDEzLCAyMDE2IDU6MzQgQU0NClRvOiBrZXJi eUBkaXJlY3RvcnkuYXBhY2hlLm9yZw0KU3ViamVjdDogUmU6IEtlcmJ5IGNsaWVudCBsaWJyYXJ5 IHJlZmFjdG9yaW5nDQoNCkFsbCwgDQoNCkkndmUgZmluYWxseSBmb3VuZCB0aGUgdGltZSB0byBy ZWFsbHkgZGlnIGludG8gdGhlIEtlcmJ5IGNsaWVudCBjb2RlIHdpdGggYW4gZXllIHRvd2FyZHMg YWRkaW5nIHJlbW90ZSBrcGFzc3dkIGFuZCBrYWRtaW4gZnVuY3Rpb25hbGl0eS4gVG9kYXksIHdl IGZvdW5kIHdoYXQgSSBiZWxpZXZlIHRvIGJlIHRoZSBsYXN0IGFyZWEgd2hlcmUgdGhlIEtlcmJ5 IGNsaWVudCBnZW5lcmF0ZXMgZGlmZmVyZW50IHBhY2tldHMgdGhhbiB0aGUgTUlUIENMSSB0b29s cy4gSSd2ZSBhZGRlZCBhIGNvdXBsZSBtb3JlIHN1Yi10YXNrcyB0byBESVJLUkItNDQwIHdoaWNo IHdpbGwgYWxsb3cgdGhlIEtyYkNsaWVudCB0byBzZXQgdGhlIGxpc3Qgb2YgZW5jcnlwdGlvbiB0 eXBlcy4gSSBhbHNvIHRoaW5rIHRoZXJlJ3Mgc29tZSByZWZhY3RvcmluZyB0byBkbyBhcm91bmQg aG93IHRoZSBjbGllbnQgYnVpbGRzIHRoZSByZXF1ZXN0IC0gdGhlIEtPcHRpb24gYW5kIEtyYktk Y09wdGlvbnMgYXJlIGFkZGVkIGludG8gdGhlIHJlcXVlc3QncyBvcHRpb25zICh3aGljaCBkb2Vz IG1ha2UgdGhlbSBlYXNpZXIgdG8gcGFzcykgYnV0IHRoZW4gdGhlIHJlcXVlc3RzIG5lZWQgdG8g cmVhZCB0aGVtIGJhY2sgb3V0LiBJIHRoaW5rIEknZCBwcmVmZXIgdGhhdCAoYXQgbGVhc3QgYXMg YW4gb3B0aW9uKSB3ZSBiZSBhYmxlIHRvIGJ1aWxkIHRoZSByZXF1ZXN0IHdlIHdhbnQgYW5kIGNh bGwgc29tZXRoaW5nIGxpa2UgYW4gZXhlY3V0ZSgpIG1ldGhvZCBvbiB0aGUgY2xpZW50LiANCg0K SW4gYW55IGNhc2UsIGFkZGluZyB0aGUgcmVtb3RlIGtwYXNzd2QgYW5kIGthZG1pbiBmdW5jdGlv bmFsaXR5IHdpbGwgcmVxdWlyZSBhIHNtYWxsIGFtb3VudCBvZiByZWZhY3RvcmluZyB3aXRoaW4g dGhlIGNsaWVudCBjb2RlIGFzIHdlbGwgYXMgc2V0dGluZyB1cCB0aGUgY2xhc3MgaGllcmFyY2h5 IGluIGEgY29udmVuaWVudCB3YXkuIEknZCBwcm9wb3NlIHRoZSBmb2xsb3dpbmcgaGllcmFyY2h5 OiANCg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArLS0tLS0tLS0tLS0t LS0tLSsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBLcmJDbGllbnQg KEFTKSB8DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICstLS0tLS0tLS0t LS0tLS0tKw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeICAgICAg ICAgIF4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAg ICB8DQogICAgICAgICAgICAgICAgICAgICAgICArLS0tLS0tLS0tLS0tLS0tLSsgICAgICAgICAg Ky0tLS0tLS0tLS0tLS0tLS0tLS0rDQogICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQogICAgICAgICAgICAgICAg ICArLS0tLS0tLS0tLS0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArLS0tLS0tLS0t LS0tLS0tLS0rDQogICAgICAgICAgICAgICAgICB8IEtkY0NsaWVudCB8ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB8IDxQcm90b2NvbD4gKEFQKSB8DQogICAgICAgICAgICAgICAgICAr LS0tLS0tLS0tLS0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArLS0tLS0tLS0tLS0t LS0tLS0rDQogICAgICAgICAgICAgICAgICAgICBeICBeICBeICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBeICAgICAgICAgICBeDQogICAgICAgICAgICAgICAgICAgICB8ICB8 ICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICB8DQog ICAgICArLS0tLS0tLS0tLS0tLS0rICB8ICArLS0tLS0tLS0tLS0tLSsgICAgICAgICAgICAgICAg ICAgKy0tLS0rICAgICAgICAgICArLS0tLSsNCiAgICAgIHwgICAgICAgICAgICAgICAgIHwgICAg ICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgfA0K Ky0tLS0tLS0tLS0tKyAgICAgKy0tLS0tLS0tLS0rICAgICArLS0tLS0tLS0tLS0rICAgICArLS0t LS0tLS0tLS0tLS0tKyAgICAgKy0tLS0tLS0tLS0tLS0tKw0KfCBLaW5pdFRvb2wgfCAgICAgfCBL dm5vVG9vbCB8ICAgICB8IEtsaXN0VG9vbCB8ICAgICB8IEtwYXNzd2RDbGllbnQgfCAgICAgfCBL YWRtaW5DbGllbnQgfA0KKy0tLS0tLS0tLS0tKyAgICAgKy0tLS0tLS0tLS0rICAgICArLS0tLS0t LS0tLS0rICAgICArLS0tLS0tLS0tLS0tLS0tKyAgICAgKy0tLS0tLS0tLS0tLS0tKw0KICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4g ICAgICAgICAgICAgICAgICAgICBeDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgIHwNCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICstLS0tLS0t LS0tLS0tKyAgICAgICArLS0tLS0tLS0tLS0tKw0KICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBLcGFzc3dkVG9vbCB8ICAgICAgIHwgS2FkbWlu VG9vbCB8DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICArLS0tLS0tLS0tLS0tLSsgICAgICAgKy0tLS0tLS0tLS0tLSsNCg0KU29tZSBpbXBvcnRh bnQgbm90ZXMgYWJvdXQgd2hlcmUgd2Ugd291bGQgZ28gZnJvbSBoZXJlOg0KDQoxKSAgVGhlIGtw YXNzd2QgYW5kIGthZG1pbiBzcGVjaWZpY2F0aW9ucyBzaGFyZSBhIHByb3RvY29sIGJ1dCBkb24n dCBzaGFyZSBjb21tYW5kcy4gIEkgaGF2ZW4ndCB0aG91Z2h0IG9mIGEgZ29vZCBuYW1lIGZvciB0 aGUgY2xhc3MgeWV0IHNvIDxQcm90b2NvbD4gaXMgdGhlIHBsYWNlaG9sZGVyLiAgVGhlc2UgY29t bWFuZHMgPHVzZT4gYSB0aWNrZXQgcmV0cmlldmVkIHZpYSBhbiBBc1JlcXVlc3QgYnV0IHRoZSBj b21tYW5kcyB0aGVtc2VsdmVzIGFyZSBzZW50IHZpYSBBcFJlcXVlc3RzLg0KDQoyKSAgVGhlIEtw YXNzd2QgY2xpZW50IHNob3VsZCBhY3R1YWxseSB1bmRlcnN0YW5kIGJvdGggdGhlIE1pY3Jvc29m dCBhbmQgdGhlICJzdGFuZGFyZCIgdmFyaWFudCBvZiB0aGUgcHJvdG9jb2wsIHNvIHRoZXJlIGFy ZSBhY3R1YWxseSB0d28gZGlmZmVyZW50IHJlcXVlc3QgZm9ybWF0cyByZXByZXNlbnQgYnkga3Bh c3N3ZC4NCg0KMykgIEFueSBjbGFzcyBhYm92ZSB0aGF0IGluY2x1ZGVzIHRoZSB3b3JkICJUb29s IiB1c2VzIHRoZSBjbGFzcyBhYm92ZSBpdCAoc29ycnkgYWJvdXQgdGhlIEFTQ0lJIGFydCkuICBD dXJyZW50bHksIHRoZSBLcmJLZGNPcHRpb24gZW51bSBpbmNsdWRlIGZsYWdzIGZvciB0aGUgVG9v bCBidXQgU29DIHdvdWxkIHN1Z2dlc3QgdGhhdCB0aGUgYXJndW1lbnRzIGFyZSBhIGNvbmNlcm4g b2YgdGhlIFRvb2wgaXRzZWxmLiAgSSB0aGluayBpdCB3b3VsZCBhbHNvIGJlIGVhc2llciB0byBt YW5hZ2UgYXJndW1lbnQgcGFyc2luZyB3aXRoIGFyZ3M0aiBvciBjb21tb25zLWNsaSBhbmQgdGhh dCB0aGUgRW5nbGlzaCB0aXRsZSBvZiB0aGUgZmxhZyBzaG91bGQgYWxzbyBiZSBtb3ZlZCBvdXQg b2YgdGhlIGVudW0uDQoNCjQpICBXZSBtaWdodCB3YW50IGEgYmFzZSBjbGFzcyBmb3Igc29tZSBv ZiB0aGUgdG9vbHMgYXMgdGhleSBkbyBoYXZlIHNvbWUgY29tbW9uYWxpdHkuDQoNCjUpICBUaGVy ZSdzIGFuIEFzUmVxdWVzdCBjbGFzcyBkZWZpbmVkIGluIHRoZSBjbGllbnQgY29kZSBhcyB3ZWxs IGFzIGluIHRoZSBzZXJ2ZXIgY29kZSAtIGlzIHRoZXJlIHNvbWUgcmVhc29uIHRoZXNlIGNsYXNz ZXMgYXJlbid0IHNoYXJlZD8gIElmIHRoZXkgc2ltcGx5IHJlcHJlc2VudCB0aGUgcGFja2V0IG9u IHRoZSB3aXJlLCBjb3VsZCB0aGV5IGJlIHNoYXJlZD8NCg0KNikgIFdlIGRvbid0IGhhdmUgYW4g QXBSZXF1ZXN0IGluIHRoZSBjbGllbnQgeWV0LCBpZiB3ZSBzaGFyZSB0aGUgQXNSZXF1ZXN0IHdp dGggdGhlIHNlcnZlciBJJ2Qgc3VnZ2VzdCB0aGUgc2FtZSBiZSBkb25lIGZvciBBcFJlcXVlc3Qu DQoNCldlJ3JlIHBsYW5uaW5nIHRvIGNvbnRpbnVlIHdvcmsgb24gdGhlIEtlcmJ5IENsaWVudCBv biBNb25kYXkgYnV0IHdvdWxkIGxpa2Ugc29tZSBpbnB1dCBiZWZvcmUgd2UgInBlcmZvcm0gbWFq b3Igc3VyZ2VyeSIuICBJZiB5b3UncmUgaW50ZXJlc3RlZCwgd2UgY291bGQgdGFrZSBvbiByZXNw b25zaWJpbGl0eSBmb3IgdGhlIGNsaWVudCBpZiB0aGF0IGhlbHBzLg0KDQpIYXZlIGEgZ3JlYXQg d2Vla2VuZCwNCg0KU3RldmUNCg0KLS0NCg0K4oCcVGhlIG1hcmsgb2YgdGhlIGltbWF0dXJlIG1h biBpcyB0aGF0IGhlIHdhbnRzIHRvIGRpZSBub2JseSBmb3IgYSBjYXVzZSwgd2hpbGUgdGhlIG1h cmsgb2YgdGhlIG1hdHVyZSBtYW4gaXMgdGhhdCBoZSB3YW50cyB0byBsaXZlIGh1bWJseSBmb3Ig b25lLuKAnSAtIFdpbGhlbG0gU3Rla2VsDQoNCi0tLS0tIE9yaWdpbmFsIE1lc3NhZ2UgLS0tLS0N CkZyb206ICJaaGVuZywgS2FpIiA8a2FpLnpoZW5nQGludGVsLmNvbT4NClRvOiBrZXJieUBkaXJl Y3RvcnkuYXBhY2hlLm9yZw0KU2VudDogTW9uZGF5LCBKYW51YXJ5IDExLCAyMDE2IDc6Mjk6MjAg QU0NClN1YmplY3Q6IEZXOiBLZXJieSBjbGllbnQgbGlicmFyeSByZWZhY3RvcmluZw0KDQoNCg0K U29ycnksIHdhcyB3b3JraW5nIG9uIHNvbWUgb3RoZXIgcHJvamVjdHMuIE15IHRob3VnaHQgd2Fz IGluc3RlYWQgb2YgY29kZSB0aGF0IGxvb2tzIGxpa2UgdGhpczogDQoNCnJlcXVlc3RPcHRpb25z ID0gbmV3IEtPcHRpb25zKCk7DQpyZXF1ZXN0T3B0aW9ucy5hZGQoS3JiT3B0aW9uLlVTRV9UR1Qs IHRndCk7IC8vcmVxdWVzdE9wdGlvbnMuYWRkKEtyYk9wdGlvbi5TRVJWRVJfUFJJTkNJUEFMLA0K IkhUVFAvZnJlZWlwYS5yaGVsZW50LmxhbiIpOw0KcmVxdWVzdE9wdGlvbnMuYWRkKEtyYk9wdGlv bi5TRVJWRVJfUFJJTkNJUEFMLCBuZXcgUHJpbmNpcGFsTmFtZSgiSFRUUC9mcmVlaXBhLnJoZWxl bnQubGFuQFJIRUxFTlQuTEFOIixOYW1lVHlwZS5OVF9VTktOTw0KV04pKTsgcmVxdWVzdE9wdGlv bnMuYWRkKEtyYk9wdGlvbi5GT1JXQVJEQUJMRSx0cnVlKTsNCnJlcXVlc3RPcHRpb25zLmFkZChL cmJPcHRpb24uUFJPWElBQkxFLGZhbHNlKTsNCnJlcXVlc3RPcHRpb25zLmFkZChLcmJPcHRpb24u UkVORVdBQkxFX09LLGZhbHNlKTsgDQoNCkkgd291bGQgdGhpbmsgdGhpcyB3b3VsZCBiZSBtb3Jl IE9POiANCg0KcmVxdWVzdE9wdGlvbnMgPSBuZXcgS09wdGlvbnMoKTsNCnJlcXVlc3RPcHRpb25z LnNldFRndCh0Z3QpOw0KLy9yZXF1ZXN0T3B0aW9ucy5zZXRTZXJ2ZXJQcmluY2lwYWwoIkhUVFAv ZnJlZWlwYS5yaGVsZW50LmxhbiIpOw0KcmVxdWVzdE9wdGlvbnMuc2V0U2VydmVyUHJpbmNpcGFs KG5ldw0KUHJpbmNpcGFsTmFtZSgiSFRUUC9mcmVlaXBhLnJoZWxlbnQubGFuQFJIRUxFTlQuTEFO IixOYW1lVHlwZS5OVF9VTktOTw0KV04pKTsNCnJlcXVlc3RPcHRpb25zLnNldEZvcndhcmRhYmxl KHRydWUpOw0KcmVxdWVzdE9wdGlvbnMuc2V0UHJveGlhYmxlKGZhbHNlKTsNCnJlcXVlc3RPcHRp b25zLnNldFJlbmV3YWJsZShmYWxzZSk7IA0KDQpDb3VsZCBrZWVwIGl0IGJhY2tlZCBieSBhIHNl dCBvZiBvcHRpb25zIA0KDQoNCg0KDQpBZ3JlZWQuIFRoaXMgaXMgZnVsbHkgY29tcGF0aWJsZSB3 aXRoIHRoZSBkZWZpbml0aW9uIG9mIGFsbCB0aGUgS3JiT3B0aW9ucyBlbnVtcywgZXhjZXB0IHRo YXkgd2lsbCBub3QgYmUgdmlzaWJsZSBieSB0aGUgZW5kIHVzZXIuIA0K