Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-4.0 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_PASS autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id F14AEC43381 for ; Wed, 20 Mar 2019 18:34:22 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id B03BB20850 for ; Wed, 20 Mar 2019 18:34:22 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727307AbfCTSeW (ORCPT ); Wed, 20 Mar 2019 14:34:22 -0400 Received: from mga11.intel.com ([192.55.52.93]:62666 "EHLO mga11.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727196AbfCTSeW (ORCPT ); Wed, 20 Mar 2019 14:34:22 -0400 X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga004.jf.intel.com ([10.7.209.38]) by fmsmga102.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 20 Mar 2019 11:34:21 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.60,249,1549958400"; d="scan'208";a="284368198" Received: from orsmsx106.amr.corp.intel.com ([10.22.225.133]) by orsmga004.jf.intel.com with ESMTP; 20 Mar 2019 11:34:20 -0700 Received: from orsmsx103.amr.corp.intel.com ([169.254.5.129]) by ORSMSX106.amr.corp.intel.com ([169.254.1.19]) with mapi id 14.03.0415.000; Wed, 20 Mar 2019 11:34:20 -0700 From: "Stotland, Inga" To: "Gix, Brian" , "linux-bluetooth@vger.kernel.org" CC: "luiz.dentz@gmail.com" , "marcel@holtmann.org" , "johan.hedberg@gmail.com" Subject: Re: [PATCH BlueZ v3 1/1] mesh: Add APIs for Provisioner and Config Client Thread-Topic: [PATCH BlueZ v3 1/1] mesh: Add APIs for Provisioner and Config Client Thread-Index: AQHU3pbhBMXeoicfxkqF7G1f3YsBBaYUigMAgAC6lQCAAANxgA== Date: Wed, 20 Mar 2019 18:34:20 +0000 Message-ID: References: <20190319210029.24734-1-brian.gix@intel.com> <20190319210029.24734-2-brian.gix@intel.com> <4562230ce67aade420b7c9c173a3771f71ce4868.camel@intel.com> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ctpclassification: CTP_NT x-titus-metadata-40: eyJDYXRlZ29yeUxhYmVscyI6IiIsIk1ldGFkYXRhIjp7Im5zIjoiaHR0cDpcL1wvd3d3LnRpdHVzLmNvbVwvbnNcL0ludGVsMyIsImlkIjoiZTdhYmY2YWUtMDVmNy00YTkwLTgzNWYtYmFiMzE3NWI2NTkxIiwicHJvcHMiOlt7Im4iOiJDVFBDbGFzc2lmaWNhdGlvbiIsInZhbHMiOlt7InZhbHVlIjoiQ1RQX05UIn1dfV19LCJTdWJqZWN0TGFiZWxzIjpbXSwiVE1DVmVyc2lvbiI6IjE3LjEwLjE4MDQuNDkiLCJUcnVzdGVkTGFiZWxIYXNoIjoidEhBbmpVa1hNVmx0eWRJRHFhMlB6elNcL2ZxSUFZek1OTG1GckNNSFFIaDJBdWNvREhrc0twTGxxdUNKV2NPdU4ifQ== dlp-product: dlpe-windows dlp-version: 11.0.400.15 dlp-reaction: no-action x-originating-ip: [10.22.254.138] Content-Type: text/plain; charset="utf-8" Content-ID: Content-Transfer-Encoding: base64 MIME-Version: 1.0 Sender: linux-bluetooth-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-bluetooth@vger.kernel.org SGkgQnJpYW4sDQoNCk9uIFdlZCwgMjAxOS0wMy0yMCBhdCAxMDo1NiAtMDcwMCwgR2l4LCBCcmlh biB3cm90ZToNCkhpIEluZ2EsDQoNCkZyb206IFN0b3RsYW5kLCBJbmdhDQoNCkhpIEJyaWFuLA0K DQpPbiBUdWUsIDIwMTktMDMtMTkgYXQgMTQ6MDAgLTA3MDAsIEJyaWFuIEdpeCB3cm90ZToNClRo ZSBhZGRlZCBELUJ1cyBBUElzIGVuYWJsZSBBcHBsaWNhdGlvbnMgdG8gZnVuY3Rpb24gaW4gYSBQ cm92aXNpb25lcg0KSW5pdGlhdG9yIHJvbGUsIGFuZCBhcyBhIENvbmZpZ3VyYXRpb24gQ2xpZW50 Lg0KLS0tDQogZG9jL21lc2gtYXBpLnR4dCB8IDM2Mw0KKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLQ0KIDEgZmlsZSBjaGFuZ2VkLCAzNDggaW5z ZXJ0aW9ucygrKSwgMTUgZGVsZXRpb25zKC0pDQoNCmRpZmYgLS1naXQgYS9kb2MvbWVzaC1hcGku dHh0IGIvZG9jL21lc2gtYXBpLnR4dCBpbmRleA0KMGIzNDFhMGY5Li44NWQxZjgzZDIgMTAwNjQ0 DQotLS0gYS9kb2MvbWVzaC1hcGkudHh0DQorKysgYi9kb2MvbWVzaC1hcGkudHh0DQpAQCAtMzAs NiArMzAsNyBAQCBNZXRob2RzOg0KIAkJCW9yZy5ibHVlei5tZXNoLkVycm9yLkludmFsaWRBcmd1 bWVudHMNCg0KIAl2b2lkIENhbmNlbCh2b2lkKQ0KKw0KIAkJQ2FuY2VscyBhbiBvdXRzdGFuZGlu ZyBwcm92aXNpb25pbmcgcmVxdWVzdCBpbml0aWF0ZWQgYnkNCkpvaW4oKQ0KIAkJbWV0aG9kLg0K DQpAQCAtMTA5LDYgKzExMCwzNyBAQCBNZXRob2RzOg0KIAkJUG9zc2libGVFcnJvcnM6DQogCQkJ b3JnLmJsdWV6Lm1lc2guRXJyb3IuTm90Rm91bmQNCg0KKwl1aW50NjQgdG9rZW4gQ3JlYXRlTmV0 d29yayhvYmplY3QgYXBwX3Jvb3QsIGFycmF5e2J5dGV9WzE2XQ0KdXVpZCkNCisNCisJCVRoaXMg aXMgdGhlIGZpcnN0IG1ldGhvZCB0aGF0IGFuIGFwcGxpY2F0aW9uIGNhbGxzIHRvDQpiZWNvbWUN CisJCWEgUHJvdmlzaW9uZXIgbm9kZSwgYW5kIGEgQ29uZmlndXJhdGlvbiBDbGllbnQgb24gYQ0K bmV3bHkNCisJCWNyZWF0ZWQgTWVzaCBOZXR3b3JrLg0KKw0KKwkJVGhlIGFwcF9yb290IHBhcmFt ZXRlciBpcyBhIEQtQnVzIG9iamVjdCByb290IHBhdGggb2YNCnRoZQ0KKwkJYXBwbGljYXRpb24g dGhhdCBpbXBsZW1lbnRzIG9yZy5ibHVlei5tZXNoLkFwcGxpY2F0aW9uMQ0KKwkJaW50ZXJmYWNl LCBhbmQgYSBvcmcuYmx1ZXoubWVzaC5Qcm92aXNpb25lcjEgaW50ZXJmYWNlLg0KVGhlDQorCQlh cHBsaWNhdGlvbiByZXByZXNlbnRzIGEgbm9kZSB3aGVyZSBjaGlsZCBtZXNoIGVsZW1lbnRzDQpo YXZlDQorCQl0aGVpciBvd24gb2JqZWN0cyB0aGF0IGltcGxlbWVudA0Kb3JnLmJsdWV6Lm1lc2gu RWxlbWVudDENCisJCWludGVyZmFjZS4gVGhlIGFwcGxpY2F0aW9uIGhpZXJhcmNoeSBhbHNvIGNv bnRhaW5zIGENCnByb3Zpc2lvbg0KKwkJYWdlbnQgb2JqZWN0IHRoYXQgaW1wbGVtZW50cw0Kb3Jn LmJsdWV6Lm1lc2guUHJvdmlzaW9uQWdlbnQxDQorCQlpbnRlcmZhY2UuIFRoZSBzdGFuZGFyZCBE QnVzLk9iamVjdE1hbmFnZXIgaW50ZXJmYWNlDQptdXN0IGJlDQorCQlhdmFpbGFibGUgb24gdGhl IGFwcF9yb290IHBhdGguDQorDQorCQlUaGUgdXVpZCBwYXJhbWV0ZXIgaXMgYSAxNi1ieXRlIGFy cmF5IHRoYXQgY29udGFpbnMNCkRldmljZSBVVUlELg0KKw0KKwkJVGhlIHJldHVybmVkIHRva2Vu IG11c3QgYmUgcHJlc2VydmVkIGJ5IHRoZSBhcHBsaWNhdGlvbg0KaW4NCisJCW9yZGVyIHRvIGF1 dGhlbnRpY2F0ZSBpdHNlbGYgdG8gdGhlIG1lc2ggZGFlbW9uIGFuZA0KYXR0YWNoIHRvDQorCQl0 aGUgbmV0d29yayBhcyBhIG1lc2ggbm9kZSBieSBjYWxsaW5nIEF0dGFjaCgpIG1ldGhvZA0Kb3IN CisJCXBlcm1hbmVudGx5IHJlbW92ZSB0aGUgaWRlbnRpdHkgb2YgdGhlIG1lc2ggbm9kZSBieQ0K Y2FsbGluZw0KKwkJTGVhdmUoKSBtZXRob2QuDQorDQorCQlUaGUgb3RoZXIgaW5mb3JtYXRpb24g dGhlIGJsdWV0b290aC1tZXNoZCBkYWVtb24gd2lsbA0KcHJlc2VydmUNCisJCWFib3V0IHRoZSBp bml0aWFsIG5vZGUsIGlzIHRvIGdpdmUgaXQgdGhlIGluaXRpYWwNCnByaW1hcnkNCisJCXVuaWNh c3QgYWRkcmVzcyAoMHgwMDAxKSwgYW5kIGNyZWF0ZSBhbmQgYXNzaWduIGENCm5ldF9rZXkgYXMg dGhlDQorCQlwcmltYXJ5IG5ldHdvcmsgbmV0X2luZGV4ICgweDAwMCkuDQorDQorCQlQb3NzaWJs ZUVycm9yczoNCisJCQlvcmcuYmx1ZXoubWVzaC5FcnJvci5JbnZhbGlkQXJndW1lbnRzDQoNCiBN ZXNoIE5vZGUgSGllcmFyY2h5DQogPT09PT09PT09PT09PT09PT09PQ0KQEAgLTE0Niw2ICsxNzgs MzAgQEAgTWV0aG9kczoNCiAJCQlvcmcuYmx1ZXoubWVzaC5FcnJvci5JbnZhbGlkQXJndW1lbnRz DQogCQkJb3JnLmJsdWV6Lm1lc2guRXJyb3IuTm90Rm91bmQNCg0KKwl2b2lkIFNlbmRXaXRoRGV2 aWNlS2V5KG9iamVjdCBlbGVtZW50X3BhdGgsIHVpbnQxNiBkZXN0aW5hdGlvbiwNCisJCQkJCXVp bnQxNiBuZXRfaW5kZXgsIGFycmF5e2J5dGV9DQpkYXRhKQ0KKw0KKwkJVGhpcyBtZXRob2QgaXMg dXNlZCB0byBzZW5kIGEgbWVzc2FnZSBvcmlnaW5hdGVkIGJ5IGENCmxvY2FsDQorCQltb2RlbCBl bmNvZGVkIHdpdGggdGhlIGRldmljZSBrZXkgb2YgdGhlIHJlbW90ZSBub2RlLg0KKw0KKwkJVGhl IGVsZW1lbnRfcGF0aCBwYXJhbWV0ZXIgaXMgdGhlIG9iamVjdCBwYXRoIG9mIGFuDQplbGVtZW50 IGZyb20NCisJCWEgY29sbGVjdGlvbiBvZiB0aGUgYXBwbGljYXRpb24gZWxlbWVudHMgKHNlZSBN ZXNoDQpBcHBsaWNhdGlvbg0KKwkJSGllcmFyY2h5IHNlY3Rpb24pLg0KKw0KKwkJVGhlIGRlc3Rp bmF0aW9uIHBhcmFtZXRlciBjb250YWlucyB0aGUgZGVzdGluYXRpb24NCmFkZHJlc3MuIFRoaXMN CisJCWRlc3RpbmF0aW9uIG11c3QgYmUgYSB1aW50MTYgdG8gYSB1bmljYXN0IGFkZHJlc3MsIG9y IGENCndlbGwNCisJCWtub3duIGdyb3VwIGFkZHJlc3MuDQorDQorCQlUaGUgbmV0X2luZGV4IHBh cmFtZXRlciBpcyB0aGUgc3VibmV0IGluZGV4IG9mIHRoZQ0KbmV0d29yayBvbg0KKwkJd2hpY2gg dGhlIG1lc3NhZ2UgaXMgdG8gYmUgc2VudC4NCisNCisJCVRoZSBkYXRhIHBhcmFtZXRlciBpcyBh biBvdXRnb2luZyBtZXNzYWdlIHRvIGJlDQplbmN5cHRlZCBieSB0aGUNCisJCW1lc2hkIGRhZW1v biBhbmQgc2VudCBvbi4NCisNCisJCVBvc3NpYmxlIGVycm9yczoNCisJCQlvcmcuYmx1ZXoubWVz aC5FcnJvci5JbnZhbGlkQXJndW1lbnRzDQorCQkJb3JnLmJsdWV6Lm1lc2guRXJyb3IuTm90Rm91 bmQNCisNCiAJdm9pZCBQdWJsaXNoKG9iamVjdCBlbGVtZW50X3BhdGgsIHVpbnQxNiBtb2RlbCwg YXJyYXl7Ynl0ZX0NCmRhdGEpDQoNCiAJCVRoaXMgbWV0aG9kIGlzIHVzZWQgdG8gc2VuZCBhIHB1 YmxpY2F0aW9uIG9yaWdpbmF0ZWQgYnkgYSBsb2NhbA0KQEANCi0yMjQsMTIgKzI4MCwyMTEgQEAg UHJvcGVydGllczoNCiAJCVRoaXMgcHJvcGVydHkgaW5kaWNhdGVzIHdoZXRoZXIgdGhlIHBlcmlv ZGljIGJlYWNvbmluZyBpcw0KIAkJZW5hYmxlZCAodHJ1ZSkgb3IgZGlzYWJsZWQgKGZhbHNlKS4N Cg0KKwl1aW50OCBCZWFjb25GbGFncyBbcmVhZC1vbmx5XQ0KKw0KKwkJVGhpcyBwcm9wZXJ0eSBt YXkgYmUgcmVhZCBhdCBhbnkgdGltZSB0byBkZXRlcm1pbmUgdGhlDQpmbGFnDQorCQlmaWVsZCBz ZXR0aW5nIG9uIHNlbnQgYW5kIHJlY2VpdmVkIGJlYWNvbnMgb2YgdGhlDQpwcmltYXJ5DQorCQlu ZXR3b3JrIGtleS4NCisNCisJdWludDMyIEl2SW5kZXggW3JlYWQtb25seV0NCisNCisJCVRoaXMg cHJvcGVydHkgbWF5IGJlIHJlYWQgYXQgYW55IHRpbWUgdG8gZGV0ZXJtaW5lIHRoZQ0KSVZfSW5k ZXgNCisJCXRoYXQgdGhlIGN1cnJlbnQgbmV0d29yayBpcyBvbi4gVGhpcyBpbmZvcm1hdGlvbiBp cw0Kb25seSB1c2VmdWwNCisJCWZvciBwcm92aXNpb25pbmcuDQorDQogCXVpbnQzMiBTZWNvbmRz U2luY2VMYXN0SGVhcmQgW3JlYWQtb25seV0NCg0KIAkJVGhpcyBwcm9wZXJ0eSBtYXkgYmUgcmVh ZCBhdCBhbnkgdGltZSB0byBkZXRlcm1pbmUgdGhlDQpudW1iZXIgb2YNCiAJCXNlY29uZHMgc2lu Y2UgbWVzaCBuZXR3b3JrIGxheWVyIHRyYWZmaWMgd2FzIGxhc3QgZGV0ZWN0ZWQNCm9uDQogCQl0 aGlzIG5vZGUncyBuZXR3b3JrLg0KDQorTWVzaCBQcm92aXNpb25pbmcgSGllcmFyY2h5DQorPT09 PT09PT09PT09PT09PT09PT09PT09PT09PQ0KK1NlcnZpY2UJCW9yZy5ibHVlei5tZXNoDQorSW50 ZXJmYWNlCW9yZy5ibHVlei5tZXNoLlByb3Zpc2lvbmluZzENCg0KV2UgbWF5IHdhbnQgdG8gY2Fs bCB0aGlzIGludGVyZmFjZSAib3JnLmJsdWV6Lm1lc2guTWFuYWdlcjEiLCBiZWNhdXNlIGl0DQpj b250YWlucyBtZXRob2RzIHN1cnBhc3NpbmcgcHJvdmlzaW9uaW5nIHByb2NlZHVyZQ0KDQorT2Jq ZWN0IHBhdGgJL29yZy9ibHVlei9tZXNoL25vZGU8eHh4eD4NCisJCXdoZXJlIHh4eHggaXMgYSA0 LWRpZ2l0IGhleGFkZWNpbWFsIG51bWJlciBnZW5lcmF0ZWQgYnkNCmRhZW1vbg0KKw0KK01ldGhv ZHM6DQorCXZvaWQgVW5wcm92aXNpb25lZFNjYW4odWludDE2IHNlY29uZHMpDQorDQorCQlUaGlz IG1ldGhvZCBpcyB1c2VkIGJ5IHRoZSBhcHBsaWNhdGlvbiB0aGF0IHN1cHBvcnRzDQorCQlvcmcu Ymx1ZXoubWVzaC5Qcm92aXNpb25lcjEgaW50ZXJmYWNlIHRvIHN0YXJ0DQpsaXN0ZW5pbmcNCisJ CShzY2FubmluZykgZm9yIHVucHJvdmlzaW9uZWQgZGV2aWNlcyBpbiB0aGUgYXJlYS4NClNjYW5u aW5nDQorCQl3aWxsIGNvbnRpbnVlIGZvciB0aGUgc3BlY2lmaWVkIG51bWJlciBvZiBzZWNvbmRz LCBvciwNCmlmIDAgaXMNCisJCXNwZWNpZmllZCwgdGhlbiBjb250aW51b3VzbHkgdW50aWwNClVu cHJvdmlzaW9uZWRTY2FuQ2FuY2VsKCkgaXMNCisJCWNhbGxlZCBvciBpZiBBZGROb2RlKCkgbWV0 aG9kIGlzIGNhbGxlZC4NCisNCisJCUVhY2ggdGltZSBhIHVuaXF1ZSB1bnByb3Zpc2lvbmVkIGJl YWNvbiBpcyBoZWFyZCwgdGhlDQorCQlTY2FuUmVzdWx0KCkgbWV0aG9kIG9uIHRoZSBhcHAgd2ls bCBiZSBjYWxsZWQgd2l0aCB0aGUNCnJlc3VsdC4NCisNCisJCVBvc3NpYmxlRXJyb3JzOg0KKwkJ CW9yZy5ibHVlei5tZXNoLkVycm9yLk5vdEF1dGhvcml6ZWQNCisNCisJdm9pZCBVbnByb3Zpc2lv bmVkU2NhbkNhbmNlbCh2b2lkKQ0KKw0KKwkJVGhpcyBtZXRob2QgaXMgdXNlZCBieSB0aGUgYXBw bGljYXRpb24gdGhhdCBzdXBwb3J0cw0KKwkJb3JnLmJsdWV6Lm1lc2guUHJvdmlzaW9uZXIxIGlu dGVyZmFjZSB0byBzdG9wIGxpc3RlbmluZw0KKwkJKHNjYW5uaW5nKSBmb3IgdW5wcm92aXNpb25l ZCBkZXZpY2VzIGluIHRoZSBhcmVhLg0KKw0KKwkJUG9zc2libGVFcnJvcnM6DQorCQkJb3JnLmJs dWV6Lm1lc2guRXJyb3IuTm90QXV0aG9yaXplZA0KKw0KKwl2b2lkIEFkZE5vZGUoYXJyYXl7Ynl0 ZX1bMTZdIHV1aWQpDQorDQorCQlUaGlzIG1ldGhvZCBpcyB1c2VkIGJ5IHRoZSBhcHBsaWNhdGlv biB0aGF0IHN1cHBvcnRzDQorCQlvcmcuYmx1ZXoubWVzaC5Qcm92aXNpb25lcjEgaW50ZXJmYWNl IHRvIGFkZCB0aGUNCisJCXVucHJvdmlzaW9uZWQgZGV2aWNlIHNwZWNpZmllZCBieSB1dWlkLCB0 byB0aGUgTmV0d29yay4NCisNCisJCVRoZSB1dWlkIHBhcmFtZXRlciBpcyBhIDE2LWJ5dGUgYXJy YXkgdGhhdCBjb250YWlucw0KRGV2aWNlIFVVSUQNCisJCW9mIHRoZSB1bnByb3Zpc2lvbmVkIGRl dmljZSB0byBiZSBhZGRlZCB0byB0aGUgbmV0d29yay4NCisNCisJCVBvc3NpYmxlRXJyb3JzOg0K KwkJCW9yZy5ibHVlei5tZXNoLkVycm9yLkludmFsaWRBcmd1bWVudHMNCisJCQlvcmcuYmx1ZXou bWVzaC5FcnJvci5Ob3RBdXRob3JpemVkDQorDQorCXZvaWQgQWRkTmV0S2V5KHVpbnQxNiBuZXRf aW5kZXgpDQoNCg0KSSBzdWdnZXN0IHdlIGNoYW5nZSB0aGlzIG1ldGhvZCB0bw0KIEFkZE5ldEtl eSh1aW50MTYgZGVzdCwgdWludDE2IG5ldF9pbmRleCkNCg0KU2luY2UgaW4gdGhlIGN1cnJlbnQg cHJvcG9zZWQgYXBwcm9hY2ggdGhlIGRhZW1vbiBpcyB0aGUgb25seSBlbnRpdHkgaW4NCnBvc3Nl c3Npb24gb2Yga2V5IHZhdWVzLCB0aGUgY29uZmlndXJhdGlvbiBtZXNzYWdlcyB0aGF0IGNvbnRh aW4gdGhlIGtleQ0KdmFsdWVzIGluIHRoZWlyIHBheWxvYWQgd2lsbCBuZWVkIHRvIGJlIGdlbmVy YXRlZCBieSB0aGUgZGFlbW9uLg0KVGhlIG1vZGlmaWVkIG1ldGhvZCB3aWxsIGFsbG93IHRvIHNl bmQgdGhlIG5ldHdvcmsga2V5KHMpIHRvIGFueSBub2RlLg0KSWYgYSBuZXR3b3JrIGtleSBzcGVj aWZpZWQgYnkgdGhlIG5ldF9pbmRleCwgZG9lcyBub3QgZXhpc3QsIGl0IHdpbGwgYmUNCmdlbmVy YXRlZCBhbmQgcmVjb3JkZWQsIGVmZmVjdGl2ZWx5IGNyZWF0aW5nIGEgbmV3IHN1Ym5ldC4NCkFs dGVybmF0aXZlbHksIHRoaXMgZnVuY3Rpb25hbGl0eSBjYW4gYmUgY292ZXJlZCBieSB0d28gbWV0 aG9kczoNCkNyZWF0ZVN1Ym5ldCh1aW50MTYgbmV0X2luZGV4KSB0byBnZW5lcmF0ZSBhIGtleSB2 YWx1ZSBhbmQNCkFkZE5ldEtleSh1aW50MTYgZGVzdCwgdWludDE2IG5ldF9pbmRleCkgdG8gc2Vu ZCB0aGUga2V5cyB0byBhIHJlbW90ZSBvcg0KbG9jYWwgbm9kZQ0KDQpTbyBJIHRoaW5rIHRoZSBi aWdnZXN0IHByb2JsZW0gd2l0aCBoYXZpbmcgbWV0aG9kcyAqc29tZXRpbWVzKiBhZGQgYSBrZXkg dG8gdGhlICpsb2NhbCogZGF0YWJhc2UsIGJ1dCBhbHdheXMgYWRkIHRoZSBrZXkgdG8gYSByZW1v dGUgbm9kZSBpcyBJbmRldGVybWluYWNpZXMuIFdlIGFyZSB0cnlpbmcgdG8gcG90ZW50aWFsbHkg ZG8gdHdvIHRoaW5ncyBhdCBvbmNlLCBhbmQgZWl0aGVyIG9uZSBvciBib3RoIGNhbiBmYWlsLg0K DQpJIHN0cm9uZ2x5IGJlbGlldmUgdGhhdCB0aGUgbWV0aG9kIGNhbGxzIHRvIGFkZCBhIGtleSAo b3IgZGVsZXRlIGl0IG9yIHVwZGF0ZSBpdCkgdG8gb3VyIGxvY2FsIGtleSBzdG9yYWdlIG5lZWRz IHRvIGJlIGEgZGlzdGluY3QgcmVxdWVzdHMuLi4gWWVzLCB3ZSBvbmx5IHNhdmUgKm9uZSogbWV0 aG9kIGNhbGwgYnkgb3ZlcmxvYWRpbmcgdGhlIGZ1bmN0aW9uYWxpdHkgaW50byBhIHNpbmdsZSBj YWxsLiAgQnV0IHNlcGFyYXRpbmcgIExvY2FsIG9wZXJhdGlvbnMgZnJvbSBSZW1vdGUgb3BlcmF0 aW9ucyAga2VlcHMgaXQgY2xlYXIsIGlmIHRoZXJlIGlzIGEgZmFpbHVyZSwgYXQgZXhhY3RseSB3 aGljaCBzdGVwIHRoZSBmYWlsdXJlIG9jY3VycmVkLiBUaGUgQXBwbGljYXRpb24gaXMgbm90IGxl ZnQgd29uZGVyaW5nIGlmIHRoZXJlIGlzIGFuIHVudXNlZCBrZXkgaW4gdGhlIGxvY2FsIGRhdGFi YXNlLCBvciBpZiB0aGUgcmVtb3RlIGRldmljZSBub3cgaGFzIGEga2V5IHRoYXQgbm9ib2R5IGVs c2UgZG9lcy4NCg0KDQoNCkluIG9yZGVyIHRvIHNlcGFyYXRlICJsb2NhbCIgZm9ybSAicmVtb3Rl IG5vZGUiIG9wZXJhdGlvbnM6DQoNCg0KUmVuYW1lOiBBZGROZXRLZXkoaWR4KSAtPiBDcmVhdGVT dWJuZXQoaWR4KQ0KwqDCoMKgwqDCoMKgwqAgVXBkYXRlTmV0S2V5KGlkeCkgLT4gVXBkYXRlU3Vi bmV0KGlkeCkNCsKgwqDCoMKgwqDCoMKgIERlbGV0ZUtleShpZHgpIC0+IERlbGV0ZVN1Ym5ldChp ZHgpwqANCsKgwqDCoMKgwqDCoMKgIEFkZEFwcEtleShuZXRfaWR4LCBhcHBfaWR4KSAtPiBDcmVh dGVBcHBLZXkobmV0X2lkeCwgYXBwX2lkeCkNCsKgwqDCoMKgwqDCoMKgIFVwZGF0ZUFwcEtleShu ZXRfaWR4LCBhcHBfaWR4KSAtPiBVcGRhdGVBcHBLZXkoYXBwX2lkeCkNCg0KTmV3IG1ldGhvZHMg dG8gc2VuZCB0aGUga2V5cyB0byBub2RlczoNCsKgIMKgIMKgIMKgIMKgIMKgIMKgQWRkTmV0S2V5 KHVpbnQxNiBkZXN0LCB1aW50MTYgbmV0X2lkeCwgYm9vbGVhbiB1cGRhdGUpDQrCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgQWRkQXBwS2V5KHVpbnQxNiBkZXN0LCB1aW50MTYgYXBwX2lkeCwgYm9v bGVhbiB1cGRhdGUpDQoNCg0KKw0KKwkJVGhpcyBtZXRob2QgaXMgdXNlZCBieSB0aGUgYXBwbGlj YXRpb24gdGhhdCBzdXBwb3J0cw0KKwkJb3JnLmJsdWV6Lm1lc2guUHJvdmlzaW9uZXIxIGludGVy ZmFjZSB0byBnZW5lcmF0ZSBhbmQNCmFkZCBhIG5ldw0KKwkJbmV0d29yayBzdWJuZXQga2V5Lg0K Kw0KKwkJVGhlIG5ldF9pbmRleCBwYXJhbWV0ZXIgaXMgYSAxMi1iaXQgdmFsdWUgKDB4MDAxLTB4 RkZGKQ0KKwkJc3BlY2lmeWluZyB3aGljaCBuZXQga2V5IHRvIGFkZC4NCisNCisJCVRoaXMgY2Fs bCBhZmZlY3RzIHRoZSBsb2NhbCBibHVldG9vdGgtZGFlbW9uIGtleQ0KZGF0YWJhc2Ugb25seS4N CisNCisJCVBvc3NpYmxlRXJyb3JzOg0KKwkJCW9yZy5ibHVlei5tZXNoLkVycm9yLkludmFsaWRB cmd1bWVudHMNCisJCQlvcmcuYmx1ZXoubWVzaC5FcnJvci5Ob3RBdXRob3JpemVkDQorCQkJb3Jn LmJsdWV6Lm1lc2guRXJyb3IuQWxyZWFkeUV4aXN0cw0KKw0KKwl2b2lkIFVwZGF0ZU5ldEtleSh1 aW50MTYgbmV0X2luZGV4KQ0KDQpJIHN1Z2dlc3Qgd2UgY2hhbmdlIHRoaXMgbWV0aG9kIHRvIFVw ZGF0ZU5ldEtleSh1aW50MTYgZGVzdCwgdWludDE2DQpuZXRfaW5kZXgpDQpUaGlzIHdpbGwgYWxs b3cgdG8gc2VuZCBhbiB1cGRhdGVkIHZhbHVlIG9mIHRoZSBuZXR3b3JrIGtleSB0byBhbnkgbm9k ZS4gSWYNCnRoZSB1cGRhdGVkIG5ldHdvcmsga2V5IHZhbHVlIHNwZWNpZmllZCBieSB0aGUgbmV0 X2luZGV4LCBkb2VzIG5vdCBleGlzdCwgaXQNCndpbGwgYmUgZ2VuZXJhdGVkIGFuZCByZWNvcmRl ZC4NCg0KDQpTYW1lIGNvbW1lbnQgaGVyZS4uLiAgSSBpbnRlbmRlZCB0aGlzIGZvciB0aGlzIG1l dGhvZCB0byBtb2RpZnkgdGhlIGxvY2FsIGtleSBkYXRhYmFzZSBvbmx5LCB3aXRoIG5vIG92ZXJs b2FkZWQgZnVuY3Rpb25hbGl0eSBvZiBzZW5kaW5nIHRoZSB1cGRhdGUga2V5IHRvIG9uZSBvZiB0 aGUgcG90ZW50aWFsbHkgaHVuZHJlZHMgb2Ygb3RoZXIgbm9kZXMuDQoNClNvLCB3aGVuIHRoZSBu ZXR3b3JrIGtleSBpcyB1cGRhdGVkIGxvY2FsbHksIHNob3VsZG4ndCB0aGUgcGhhc2UgY2hhbmdl IGF1dG9tYXRpY2FsbHk/DQoNCg0KKw0KKwkJVGhpcyBtZXRob2QgaXMgdXNlZCBieSB0aGUgYXBw bGljYXRpb24gdGhhdCBzdXBwb3J0cw0KKwkJb3JnLmJsdWV6Lm1lc2guUHJvdmlzaW9uZXIxIGlu dGVyZmFjZSB0byBnZW5lcmF0ZSBhIG5ldw0KbmV0d29yaw0KKwkJc3VibmV0IGtleSwgYW5kIHNl dCBpdCdzIGtleSByZWZyZXNoIHN0YXRlIHRvIFBoYXNlIDEuDQorDQorCQlUaGUgbmV0X2luZGV4 IHBhcmFtZXRlciBpcyBhIDEyLWJpdCB2YWx1ZSAoMHgwMDAtMHhGRkYpDQorCQlzcGVjaWZ5aW5n IHdoaWNoIG5ldCBrZXkgdG8gdXBkYXRlLiBOb3RlIHRoYXQgdGhlDQpzdWJuZXQgbXVzdA0KKwkJ ZXhpc3QgcHJpb3IgdG8gdXBkYXRpbmcuDQorDQorCQlUaGlzIGNhbGwgYWZmZWN0cyB0aGUgbG9j YWwgYmx1ZXRvb3RoLWRhZW1vbiBrZXkNCmRhdGFiYXNlIG9ubHkuDQorDQorCQlQb3NzaWJsZUVy cm9yczoNCisJCQlvcmcuYmx1ZXoubWVzaC5FcnJvci5JbnZhbGlkQXJndW1lbnRzDQorCQkJb3Jn LmJsdWV6Lm1lc2guRXJyb3IuTm90QXV0aG9yaXplZA0KKwkJCW9yZy5ibHVlei5tZXNoLkVycm9y LkRvZXNOb3RFeGlzdA0KKw0KKwl2b2lkIERlbGV0ZU5ldEtleSh1aW50MTYgbmV0X2luZGV4KQ0K Kw0KKwkJVGhpcyBtZXRob2QgaXMgdXNlZCBieSB0aGUgYXBwbGljYXRpb24gdGhhdCBzdXBwb3J0 cw0KKwkJb3JnLmJsdWV6Lm1lc2guUHJvdmlzaW9uZXIxIGludGVyZmFjZSB0byBkZWxldGUgYQ0K c3VibmV0Lg0KKw0KKwkJVGhlIG5ldF9pbmRleCBwYXJhbWV0ZXIgaXMgYSAxMi1iaXQgdmFsdWUg KDB4MDAxLTB4RkZGKQ0KKwkJc3BlY2lmeWluZyB3aGljaCBuZXQga2V5IHRvIGRlbGV0ZS4gVGhl IHByaW1hcnkgbmV0IGtleQ0KKDB4MDAwKQ0KKwkJbWF5IG5vdCBiZSBkZWxldGVkLg0KKw0KKwkJ VGhpcyBjYWxsIGFmZmVjdHMgdGhlIGxvY2FsIGJsdWV0b290aC1kYWVtb24ga2V5DQpkYXRhYmFz ZSBvbmx5Lg0KDQpKdXN0IGN1cmlvdXMgd2hhdCB3b3VsZCBoYXBwZW4gaWYgdGhlcmUgYXJlIHJl bW90ZSBub2RlcyBpbiBwb3NzZXNzaW9uIG9mIHRoaXMgbmV0d29yayBrZXkgYW5kIHRoaXMgbWV0 aG9kIGlzIGNhbGxlZD8NClBvdGVudGlhbGx5IHRoaXMgbWF5IGxlYWQgdG8gYW4gInVuY29uZmln dXJhYmxlIiBzdWJuZXQuLi4NCg0KKw0KKwkJUG9zc2libGVFcnJvcnM6DQorCQkJb3JnLmJsdWV6 Lm1lc2guRXJyb3IuSW52YWxpZEFyZ3VtZW50cw0KKwkJCW9yZy5ibHVlei5tZXNoLkVycm9yLk5v dEF1dGhvcml6ZWQNCisJCQlvcmcuYmx1ZXoubWVzaC5FcnJvci5Eb2VzTm90RXhpc3QNCisNCisJ dm9pZCBTZXRLZXlQaGFzZSh1aW50MTYgbmV0X2luZGV4LCB1aW50OCBwaGFzZSkNCisJCVRoaXMg bWV0aG9kIGlzIHVzZWQgdG8gc2V0IHRoZSBtYXN0ZXIga2V5IHVwZGF0ZSBwaGFzZQ0Kb2YgdGhl DQorCQlnaXZlbiBzdWJuZXQuDQorDQorCQlUaGUgbmV0X2luZGV4IHBhcmFtZXRlciBpcyBhIDEy LWJpdCB2YWx1ZSAoMHgwMDAtMHhGRkYpDQorCQlzcGVjaWZ5aW5nIHdoaWNoIHN1Ym5ldCBwaGFz ZSB0byBzZXQuDQorDQorCQlUaGUgcGhhc2UgcGFyYW1ldGVyIGlzIHVzZWQgdG8gY3ljbGUgdGhl IGxvY2FsIGtleQ0KZGF0YWJhc2UNCisJCXRocm91Z2ggdGhlIHBoYXNlcyBhcyBkZWZpbmVkIGJ5 IHRoZSBNZXNoIFByb2ZpbGUNClNwZWNpZmljYXRpb24uDQorCQlBbGxvd2VkIHZhbHVlczoNCisJ CQkwIC0gQ2FuY2VsIEtleSBSZWZyZXNoIChNYXkgb25seSBiZSBjYWxsZWQgZnJvbQ0KUGhhc2Ug MSwNCisJCQkJYW5kIHNob3VsZCBuZXZlciBiZSBjYWxsZWQgb25jZSB0aGUgbmV3DQprZXkgaGFz DQorCQkJCXN0YXJ0ZWQgcHJvcGFnYXRpbmcpDQorCQkJMSAtIEludmFsaWQgQXJndW1lbnQgKHNl ZSBOZXRLZXlVcGRhdGUgbWV0aG9kKQ0KKwkJCTIgLSBHbyB0byBQaGFzZSAyIChNYXkgb25seSBi ZSBjYWxsZWQgZnJvbQ0KUGhhc2UgMSkNCisJCQkzIC0gQ29tcGxldGUgS2V5IFJlZnJlc2ggcHJv Y2VkdXJlIChNYXkgb25seSBiZQ0KY2FsbGVkDQorCQkJCWZyb20gUGhhc2UgMikNCisNCisJCVRo aXMgY2FsbCBhZmZlY3RzIHRoZSBsb2NhbCBibHVldG9vdGgtZGFlbW9uIGtleQ0KZGF0YWJhc2Ug b25seS4NCg0KDQpUaGlzIG1ldGhvZCBpcyBhbHNvIGludGVuZGVkIHRvIG1vZGlmeSB0aGUgc3Rh dGUgb2YgdGhlIGtleXMgbG9jYWxseSBvbmx5LiAgT25seSBhZnRlciB0aGUgbG9jYWwgcGhhc2Ug aGFzIGJlZW4gcmVjb3JkZWQgd291bGQgdGhlIHBoYXNlIGNoYW5nZSBiZSBwcm9wb2dhdGVkIHRv IHRoZSB3aWRlciBtZXNoDQoNCg0KKw0KKwkJUG9zc2libGVFcnJvcnM6DQorCQkJb3JnLmJsdWV6 Lm1lc2guRXJyb3IuSW52YWxpZEFyZ3VtZW50cw0KKwkJCW9yZy5ibHVlei5tZXNoLkVycm9yLk5v dEF1dGhvcml6ZWQNCisJCQlvcmcuYmx1ZXoubWVzaC5FcnJvci5Eb2VzTm90RXhpc3QNCisNCisJ dm9pZCBBZGRBcHBLZXkodWludDE2IG5ldF9pbmRleCwgdWludDE2IGFwcF9pbmRleCkNCg0KU2lt aWxhciB0byB0aGUgbmV0d29yayBrZXkgbWV0aG9kcywgbmVlZHMgdG8gaW5jbHVkZSBkZXN0IHBh cmFtZXRlcg0KDQorDQorCQlUaGlzIG1ldGhvZCBpcyB1c2VkIGJ5IHRoZSBhcHBsaWNhdGlvbiB0 aGF0IHN1cHBvcnRzDQorCQlvcmcuYmx1ZXoubWVzaC5Qcm92aXNpb25lcjEgaW50ZXJmYWNlIHRv IGdlbmVyYXRlIGFuZA0KYWRkIGEgbmV3DQorCQlhcHBsaWNhdGlvbiBrZXkuDQorDQorCQlUaGUg bmV0X2luZGV4IHBhcmFtZXRlciBpcyBhIDEyLWJpdCB2YWx1ZSAoMHgwMDAtMHhGRkYpDQorCQlz cGVjaWZ5aW5nIHdoaWNoIG5ldCBrZXkgdG8gYmluZCB0aGUgYXBwbGljYXRpb24ga2V5DQp0by4N CisNCisJCVRoZSBhcHBfaW5kZXggcGFyYW1ldGVyIGlzIGEgMTItYml0IHZhbHVlICgweDAwMC0w eEZGRikNCisJCXNwZWNpZnlpbmcgd2hpY2ggYXBwIGtleSB0byBhZGQuDQorDQorCQlUaGlzIGNh bGwgYWZmZWN0cyB0aGUgbG9jYWwgYmx1ZXRvb3RoLWRhZW1vbiBrZXkNCmRhdGFiYXNlIG9ubHku DQorDQorCQlQb3NzaWJsZUVycm9yczoNCisJCQlvcmcuYmx1ZXoubWVzaC5FcnJvci5JbnZhbGlk QXJndW1lbnRzDQorCQkJb3JnLmJsdWV6Lm1lc2guRXJyb3IuTm90QXV0aG9yaXplZA0KKwkJCW9y Zy5ibHVlei5tZXNoLkVycm9yLkFscmVhZHlFeGlzdHMNCisNCisJdm9pZCBVcGRhdGVBcHBLZXko dWludDE2IGFwcF9pbmRleCkNCisNCisJCVRoaXMgbWV0aG9kIGlzIHVzZWQgYnkgdGhlIGFwcGxp Y2F0aW9uIHRoYXQgc3VwcG9ydHMNCisJCW9yZy5ibHVlei5tZXNoLlByb3Zpc2lvbmVyMSBpbnRl cmZhY2UgdG8gZ2VuZXJhdGUgYSBuZXcNCisJCWFwcGxpY2F0aW9uIGtleS4NCisNCisJCVRoZSBh cHBfaW5kZXggcGFyYW1ldGVyIGlzIGEgMTItYml0IHZhbHVlICgweDAwMC0weEZGRikNCisJCXNw ZWNpZnlpbmcgd2hpY2ggYXBwIGtleSB0byB1cGRhdGUuIE5vdGUgdGhhdCB0aGUNCnN1Ym5ldCB0 aGF0DQorCQl0aGUga2V5IGlzIGJvdW5kIHRvIG11c3QgZXhpc3QgYW5kIGJlIGluIFBoYXNlIDEu DQorDQorCQlUaGlzIGNhbGwgYWZmZWN0cyB0aGUgbG9jYWwgYmx1ZXRvb3RoLWRhZW1vbiBrZXkN CmRhdGFiYXNlIG9ubHkuDQorDQorCQlQb3NzaWJsZUVycm9yczoNCisJCQlvcmcuYmx1ZXoubWVz aC5FcnJvci5JbnZhbGlkQXJndW1lbnRzDQorCQkJb3JnLmJsdWV6Lm1lc2guRXJyb3IuTm90QXV0 aG9yaXplZA0KKwkJCW9yZy5ibHVlei5tZXNoLkVycm9yLkRvZXNOb3RFeGlzdA0KKw0KKwl2b2lk IERlbGV0ZUFwcEtleSh1aW50MTYgYXBwX2luZGV4KQ0KKw0KKwkJVGhpcyBtZXRob2QgaXMgdXNl ZCBieSB0aGUgYXBwbGljYXRpb24gdGhhdCBzdXBwb3J0cw0KKwkJb3JnLmJsdWV6Lm1lc2guUHJv dmlzaW9uZXIxIGludGVyZmFjZSB0byBkZWxldGUgYW4NCmFwcGxpY2F0aW9uDQorCQlrZXkuDQor DQorCQlUaGUgYXBwX2luZGV4IHBhcmFtZXRlciBpcyBhIDEyLWJpdCB2YWx1ZSAoMHgwMDAtMHhG RkYpDQorCQlzcGVjaWZ5aW5nIHdoaWNoIGFwcCBrZXkgdG8gZGVsZXRlLg0KKw0KKwkJVGhpcyBj YWxsIGFmZmVjdHMgdGhlIGxvY2FsIGJsdWV0b290aC1kYWVtb24ga2V5DQpkYXRhYmFzZSBvbmx5 Lg0KKw0KKwkJUG9zc2libGVFcnJvcnM6DQorCQkJb3JnLmJsdWV6Lm1lc2guRXJyb3IuSW52YWxp ZEFyZ3VtZW50cw0KKwkJCW9yZy5ibHVlei5tZXNoLkVycm9yLk5vdEF1dGhvcml6ZWQNCisJCQlv cmcuYmx1ZXoubWVzaC5FcnJvci5Eb2VzTm90RXhpc3QNCisNCisJdm9pZCBEZWxldGVSZW1vdGVO b2RlKHVpbnQxNiBwcmltYXJ5LCB1aW50OCBjbnQpDQoNCkxldCdzIGNhbGwgdGhpcyBtZXRob2Qg RGVsZXRlTm9kZSgpDQpEbyB3ZSBuZWVkIHRvIHNwZWNpZnkgdGhlIGVsZW1lbnQgY291bnQ/DQoN Ckkgd2FudCB0byBiZSBjbGVhciB0aGF0IHRoaXMgYWdhaW4gb25seSBhZmZlY3RzIHRoZSBsb2Nh bCBrZXkgZGF0YWJhc2UuICBXZSBkbyBoYXZlIHRoZSBhYmlsaXR5IHRvIGRlbGV0ZSBMb2NhbCBu b2RlcyB3aXRoIHRoZSBMZWF2ZSgpIG1ldGhvZC4gIEkgd2FudCB0byBiZSBjbGVhciB3aXRoIHRo aXMgbWV0aG9kIHRoYXQgYWdhaW4sIG5vIGNvbW11bmljYXRpb24gaXMgbWFkZS4uLiBUaGlzIHNp bXBseSBkZWxldGVzIGEgUmVtb3RlIE5vZGUgRGV2aWNlIGtleSBmcm9tIHRoZSBsb2NhbCBkYXRh YmFzZS4gIEkgaW5jbHVkZWQgYSBjb3VudCBwYXJhbWV0ZXIgc28gdGhhdCBzdG9yYWdlIG9mIHRo ZSBkZXZpY2Uga2V5cyBjb3VsZCBiZSBvcHRpbWl6ZWQgc3VjaCB0aGF0IGFsbCBlbGVtZW50IHVu aWNhc3QgYWRkcmVzc2VzIGFyZSBhY2NvdW50ZWQgZm9yLiAgSXQgaXMgMTAwJSBsZWdhbCB0byBz ZW5kIGEgRGV2aWNlIEtleSBlbmNvZGVkIG1lc3NhZ2UgdG8gYSBub24tcHJpbWFyeSBlbGVtZW50 IG9mIGEgTm9kZSwgc28gd2UgbWlnaHQgaGF2ZSByZWR1bmRhbnQgc3RvcmFnZXMgb2YgdGhlIGRl dmljZSBrZXlzIHVuZGVyIGV2ZXJ5IHVuaWNhc3QgYWRkcmVzcywgaW4gdGhlIGxvY2FsIGRhdGFi YXNlLg0KDQoNCisNCisJCVRoaXMgbWV0aG9kIGlzIHVzZWQgYnkgdGhlIGFwcGxpY2F0aW9uIHRo YXQgc3VwcG9ydHMNCisJCW9yZy5ibHVlei5tZXNoLlByb3Zpc2lvbmVyMSBpbnRlcmZhY2UgdG8g ZGVsZXRlIGENCnJlbW90ZSBub2RlDQorCQlmcm9tIHRoZSBsb2NhbCBkZXZpY2Uga2V5IGRhdGFi YXNlLg0KKw0KKwkJVGhlIHByaW1hcnkgcGFyYW1ldGVyIHNwZWNpZmllcyB0aGUgdW5pY2FzdCBh ZGRyZXNzIG9mDQp0aGUNCisJCXRoZSBub2RlIGJlaW5nIGRlbGV0ZWQsIGFuZCB0aGUgbnVtYmVy IG9mIGVsZW1lbnRzIHRoYXQNCndlcmUNCisJCWFzc2lnbmVkIHRvIGl0Lg0KKw0KKwkJVGhpcyBj YWxsIGFmZmVjdHMgdGhlIGxvY2FsIGJsdWV0b290aC1kYWVtb24ga2V5DQpkYXRhYmFzZSBvbmx5 Lg0KKw0KKwkJUG9zc2libGVFcnJvcnM6DQorCQkJb3JnLmJsdWV6Lm1lc2guRXJyb3IuSW52YWxp ZEFyZ3VtZW50cw0KKwkJCW9yZy5ibHVlei5tZXNoLkVycm9yLk5vdEF1dGhvcml6ZWQNCisJCQlv cmcuYmx1ZXoubWVzaC5FcnJvci5Eb2VzTm90RXhpc3QNCg0KIE1lc2ggQXBwbGljYXRpb24gSGll cmFyY2h5DQogPT09PT09PT09PT09PT09PT09PT09PT09PT0NCkBAIC0yNDcsNiArNTAyLDcgQEAg QW4gZXhhbXBsZSBtZXNoIGFwcGxpY2F0aW9uIGhpZXJhcmNoeSBtYXkgbG9vaw0KbGlrZSB0aGlz Og0KIAkJCXwgICAtIG9yZy5mcmVlZGVza3RvcC5EQnVzLk9iamVjdE1hbmFnZXINCiAJCQl8ICAg LSBvcmcuYmx1ZXoubWVzaC5BcHBsaWNhdGlvbjENCiAJCQl8ICAgLSBvcmcuYmx1ZXoubWVzaC5B dHRlbnRpb24xIChvcHRpb25hbCkNCisJCQl8ICAgLSBvcmcuYmx1ZXoubWVzaC5Qcm92aXNpb25l cjENCihvcHRpb25hbCxQcm92aXNpb25lcikNCiAJCQl8DQogCQkJLT4gL2NvbS9leGFtcGxlL2Fn ZW50DQogCQkJfCB8ICAgLSBvcmcuYmx1ZXoubWVzaC5Qcm92aXNpb25BZ2VudDENCkBAIC0zMjUs NiArNTgxLDIyIEBAIE1ldGhvZHM6DQoNCiAJCVRoZSBkYXRhIHBhcmFtZXRlciBpcyB0aGUgaW5j b21pbmcgbWVzc2FnZS4NCg0KKwl2b2lkIERldktleU1lc3NhZ2VSZWNlaXZlZCh1aW50MTYgc291 cmNlLCB1aW50MTYgbmV0X2luZGV4LA0KKwkJCQkJCQlhcnJheXtieXRlfQ0KZGF0YSkNCisNCisJ CVRoaXMgbWV0aG9kIGlzIGNhbGxlZCBieSBtZXNoZCBkYWVtb24gd2hlbiBhIG1lc3NhZ2UNCmFy cml2ZXMNCisJCWFkZHJlc3NlZCB0byB0aGUgYXBwbGljYXRpb24sIHdoaWNoIHdhcyBzZW50IHdp dGggdGhlDQpyZW1vdGUNCisJCW5vZGUncyBkZXZpY2Uga2V5Lg0KKw0KKwkJVGhlIHNvdXJjZSBw YXJhbWV0ZXIgaXMgdW5pY2FzdCBhZGRyZXNzIG9mIHRoZSByZW1vdGUNCisJCW5vZGUtZWxlbWVu dCB0aGF0IHNlbnQgdGhlIG1lc3NhZ2UuDQorDQorCQlUaGUgbmV0X2luZGV4IHBhcmFtZXRlciBp bmRpY2F0ZXMgd2hhdCBzdWJuZXQgdGhlDQptZXNzYWdlIHdhcw0KKwkJcmVjZWl2ZWQgb24sIGFu ZCBpZiBhIHJlc3BvbnNlIGlzIHJlcXVpcmVkLCB0aGUgc2FtZQ0Kc3VibmV0DQorCQltdXN0IGJl IHVzZWQgdG8gc2VuZCB0aGUgcmVzcG9uc2UuDQorDQorCQlUaGUgZGF0YSBwYXJhbWV0ZXIgaXMg dGhlIGluY29taW5nIG1lc3NhZ2UuDQorDQogCXZvaWQgVXBkYXRlTW9kZWxDb25maWd1cmF0aW9u KHVpbnQxNiBtb2RlbF9pZCwgZGljdCBjb25maWcpDQoNCiAJCVRoaXMgbWV0aG9kIGlzIGNhbGxl ZCBieSBibHVldG9vdGgtbWVzaGQgZGFlbW9uIHdoZW4gYQ0KbW9kZWwncw0KQEAgLTM4Myw3ICs2 NTUsNyBAQCBPYmplY3QgcGF0aAlmcmVlbHkgZGVmaW5hYmxlDQogVGhpcyBpcyBhbiBvcHRpb25h bCBpbnRlcmZhY2UgdGhhdCBpbXBsZW1lbnRzIGhlYWx0aCBhdHRlbnRpb24gdGltZXIuDQoNCiBN ZXRob2RzOg0KLQl2b2lkIFNldFRpbWVyKHVpbnQ4IGVsZW1lbnRfaW5kZXgsICB1aW50MTYgdGlt ZSkNCisJdm9pZCBTZXRUaW1lcih1aW50OCBlbGVtZW50X2luZGV4LCB1aW50MTYgdGltZSkNCg0K IAkJVGhlIGVsZW1lbnRfaW5kZXggcGFyYW1ldGVyIGlzIHRoZSBlbGVtZW50J3MgaW5kZXggd2l0 aGluDQp0aGUNCiAJCW5vZGUgd2hlcmUgdGhlIGhlYWx0aCBzZXJ2ZXIgbW9kZWwgaXMgaG9zdGVk Lg0KQEAgLTQwNiw2ICs2NzgsNzYgQEAgTWV0aG9kczoNCiAJCQlvcmcuYmx1ZXoubWVzaC5FcnJv ci5Ob3RTdXBwb3J0ZWQNCg0KDQorTWVzaCBQcm92aXNpb25lciBIaWVyYXJjaHkNCis9PT09PT09 PT09PT09PT09PT09PT09PT09PT09DQorU2VydmljZQkJdW5pcXVlIG5hbWUNCitJbnRlcmZhY2UJ b3JnLmJsdWV6Lm1lc2guUHJvdmlzaW9uZXIxDQorT2JqZWN0IHBhdGgJZnJlZWx5IGRlZmluYWJs ZQ0KKw0KKwlTY2FuUmVzdWx0KGludDggcnNzaSwgYXJyYXl7Ynl0ZX0gZGF0YSkNCisNCisJCVRo ZSBtZXRob2QgaXMgY2FsbGVkIGZyb20gdGhlIGJsdWV0b290aC1tZXNoZCBkYWVtb24NCndoZW4g YQ0KKwkJdW5pcXVlIFVVSUQgaGFzIGJlZW4gc2VlbiBkdXJpbmcgVW5wcm92aXNpb25lZFNjYW4o KQ0KZm9yDQorCQl1bnByb3ZzaW9uZWQgZGV2aWNlcy4NCisNCisJCVRoZSByc3NpIHBhcmFtZXRl ciBpcyBhIHNpZ25lZCwgbm9ybWFsaXplZCBtZWFzdXJlbWVudA0Kb2YgdGhlDQorCQlzaWduYWwg c3RyZW5ndGggb2YgdGhlIHJlY2lldmVkIHVucHJvdmlzaW9uZWQgYmVhY29uLg0KKw0KKwkJVGhl IGRhdGEgcGFyYW1ldGVyIGlzIGEgdmFyaWFibGUgbGVuZ3RoIGJ5dGUgYXJyYXksDQp0aGF0IG1h eQ0KKwkJaGF2ZSAxLCAyIG9yIDMgZGlzdGluY3QgZmllbGRzIGNvbnRhaW5lZCBpbiBpdA0KaW5j bHVkaW5nIHRoZSAxNg0KKwkJYnl0ZSByZW1vdGUgZGV2aWNlIFVVSUQgKGFsd2F5cyksIGEgMzIg Yml0IG1hc2sgb2YgT09CDQorCQlhdXRoZW50aWNhdGlvbiBmbGFncyAob3B0aW9uYWwpLCBhbmQg YSAzMiBiaXQgVVJJIGhhc2gNCihpZiBVUkkNCisJCWJpdCBzZXQgaW4gT09CIG1hc2spLiBXaGV0 aGVyIHRoZXNlIGZpZWxkcyBleGlzdCBvciBub3QNCmlzIGENCisJCWRlY2lzaW9uIG9mIHRoZSBy ZW1vdGUgZGV2aWNlLg0KKw0KKwkJSWYgYSBiZWFjb24gd2l0aCBhIFVVSUQgdGhhdCBoYXMgYWxy ZWFkeSBiZWVuIHJlcG9ydGVkDQppcw0KKwkJcmVjaWV2ZWQgYnkgdGhlIGRhZW1vbiwgaXQgd2ls bCBiZSBzaWxlbnRseSBkaXNjYXJkZWQNCnVubGVzcyBpdA0KKwkJd2FzIHJlY2lldmVkIGF0IGEg aGlnaGVyIHJzc2kgcG93ZXIgbGV2ZWwuDQorDQorDQorCXVpbnQxNiBuZXRfaW5kZXgsIHVpbnQ4 IGZsYWdzLCB1aW50MzIgaXZfaW5kZXgsIHVpbnQxNiB1bmljYXN0DQorCQkJCQkJCVJlcXVlc3RQ cm92RGF0YQ0KKCkNCisNCisJCVRoaXMgbWV0aG9kIGlzIGltcGxlbWVudGVkIGJ5IGEgUHJvdmlz aW9uZXIgY2FwYWJsZQ0KYXBwbGljYXRpb24NCisJCWFuZCBpcyBjYWxsZWQgd2hlbiB0aGUgcmVt b3RlIGRldmljZSBoYXMgYmVlbiBmdWxseQ0KKwkJYXV0aGVudGljYXRlZCBhbmQgY29uZmlybWVk Lg0KKw0KKwkJUmV0dXJuIFBhcmFtZXRlcnMgYXJlIGZyb20gdGhlIE1lc2ggUHJvZmlsZSBTcGVj Og0KKwkJbmV0X2luZGV4IC0gU3VibmV0IGluZGV4IG9mIHRoZSBuZXRfa2V5DQorCQlmbGFncyAt IEZsYWdzIGZvciBJVl9VcGRhdGUgYW5kIEtleSBSZWZyZXNoDQorCQlpdl9pbmRleCAtIEN1cnJl bnQgSXZJbmRleCBiZWluZyB1c2VkIG9uIHRoZSBuZXR3b3JrDQorCQl1bmljYXN0IC0gUHJpbWFy eSBVbmljYXN0IGFkZHJlc3Mgb2YgdGhlIG5ldyBub2RlDQorDQorCQlQb3NzaWJsZUVycm9yczoN CisJCQlvcmcuYmx1ZXoubWVzaC5FcnJvci5BYm9ydA0KKw0KKwl2b2lkIEFkZE5vZGVDb21wbGV0 ZShhcnJheXtieXRlfVsxNl0gdXVpZCwgdWludDE2IHVuaWNhc3QsDQp1aW50OCBjb3VudCkNCisN CisJCVRoaXMgbWV0aG9kIGlzIGNhbGxlZCB3aGVuIHRoZSBub2RlIHByb3Zpc2lvbmluZw0KaW5p dGlhdGVkDQorCQlieSBhbiBBZGROb2RlKCkgbWV0aG9kIGNhbGwgc3VjY2Vzc2Z1bGx5IGNvbXBs ZXRlZC4NCisNCisJCVRoZSB1bmljYXN0IHBhcmFtZXRlciBpcyB0aGUgcHJpbWFyeSBhZGRyZXNz IHRoYXQgaGFzDQpiZWVuDQorCQlhc3NpZ25lZCB0byB0aGUgbmV3IG5vZGUsIGFuZCB0aGUgYWRk cmVzcyBvZiBpdCdzDQpjb25maWcgc2VydmVyLg0KKw0KKwkJVGhlIGNvdW50IHBhcmFtZXRlciBp cyB0aGUgbnVtYmVyIG9mIHVuaWNhc3QgYWRkcmVzc2VzDQphc3NpZ25lZA0KKwkJdG8gdGhlIG5l dyBub2RlLg0KKw0KKwkJVGhlIG5ldyBub2RlIG1heSBub3cgYmUgc2VudCBtZXNzYWdlcyB1c2lu ZyB0aGUNCmNyZWRlbnRpYWxzDQorCQlzdXBwbGllZCBieSB0aGUgUmVxdWVzdFByb3ZEYXRhIG1l dGhvZC4NCisNCisJdm9pZCBBZGROb2RlRmFpbGVkKGFycmF5e2J5dGV9WzE2XSB1dWlkLCBzdHJp bmcgcmVhc29uKQ0KKw0KKwkJVGhpcyBtZXRob2QgaXMgY2FsbGVkIHdoZW4gdGhlIG5vZGUgcHJv dmlzaW9uaW5nDQppbml0aWF0ZWQgYnkNCisJCUFkZE5vZGUoKSBoYXMgZmFpbGVkLiBEZXBlbmRp bmcgb24gaG93IGZhciBQcm92aXNpb25pbmcNCisJCXByb2NlZWRlZCBiZWZvcmUgZmFpbGluZywg c29tZSBjbGVhbnVwIG9mIGNhY2hlZCBkYXRhDQptYXkgYmUNCisJCXJlcXVpcmVkLg0KKw0KKwkJ VGhlIHJlYXNvbiBwYXJhbWV0ZXIgaWRlbnRpZmllcyB0aGUgcmVhc29uIGZvcg0KcHJvdmlzaW9u aW5nDQorCQlmYWlsdXJlLiBUaGUgZGVmaW5lZCB2YWx1ZXMgYXJlOiAiYWJvcnRlZCIsICJ0aW1l b3V0IiwNCisJCSJiYWQtcGR1IiwgImNvbmZpcm1hdGlvbi1mYWlsZWQiLCAib3V0LW9mLXJlc291 cmNlcyIsDQorCQkiZGVjcnlwdGlvbi1lcnJvciIsICJ1bmV4cGVjdGVkLWVycm9yIiwNCisJCSJj YW5ub3QtYXNzaWduLWFkZHJlc3NlcyIuDQorDQogUHJvdmlzaW9uaW5nIEFnZW50IEhpZXJhcmNo eQ0KID09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCiBTZXJ2aWNlCQl1bmlxdWUgbmFtZQ0K QEAgLTQ0MSw2ICs3ODMsNyBAQCBNZXRob2RzOg0KIAkJdGhlIGxvY2FsIHJvbGUgaXMgUHJvdmlz aW9uZXIuDQoNCiAJdm9pZCBEaXNwbGF5U3RyaW5nKHN0cmluZyB2YWx1ZSkNCisNCiAJCVRoaXMg bWV0aG9kIGlzIGNhbGxlZCB3aGVuIHRoZSBEYWVtb24gaGFzIHNvbWV0aGluZw0KaW1wb3J0YW50 DQogCQlmb3IgdGhlIEFnZW50IHRvIERpc3BsYXksIGJ1dCBkb2VzIG5vdCByZXF1aXJlIGFueSBh ZGRpdGlvbmFsDQogCQlpbnB1dCBsb2NhbGx5LiBGb3IgaW5zdGFuY2U6ICJFbnRlciAiQUJDREUi IG9uIHJlbW90ZQ0KZGV2aWNlIi4NCkBAIC00NTEsOSArNzk0LDggQEAgTWV0aG9kczoNCiAJCWZv ciB0aGUgQWdlbnQgdG8gRGlzcGxheSwgYnV0IGRvZXMgbm90IHJlcXVpcmUgYW55IGFkZGl0aW9u YWwNCiAJCWlucHV0IGxvY2FsbHkuIEZvciBpbnN0YW5jZTogIkVudGVyIDE0OTM5MjY0IG9uIHJl bW90ZQ0KZGV2aWNlIi4NCg0KLQkJVGhlIHR5cGUgcGFyYW1ldGVyIGluZGljYXRlcyB0aGUgZGlz cGxheQ0KbWV0aG9kLiAgQWxsb3dlZCB2YWx1ZXMNCisJCVRoZSB0eXBlIHBhcmFtZXRlciBpbmRp Y2F0ZXMgdGhlIGRpc3BsYXkgbWV0aG9kLg0KQWxsb3dlZCB2YWx1ZXMNCiAJCWFyZToNCi0NCiAJ CQkiYmxpbmsiIC0gTG9jYWxseSBibGluayBMRUQNCiAJCQkiYmVlcCIgLSBMb2NhbGx5IG1ha2Ug YSBub2lzZQ0KIAkJCSJ2aWJyYXRlIiAtIExvY2FsbHkgdmlicmF0ZQ0KQEAgLTQ2NiwxMiArODA4 LDExIEBAIE1ldGhvZHM6DQoNCiAJdWludDMyIFByb21wdE51bWVyaWMoc3RyaW5nIHR5cGUpDQoN Ci0JCVRoaXMgbWV0aG9kIGlzIGNhbGxlZCB3aGVuIHRoZSBEYWVtb24gaGFzIHJlcXVpcmVzIHRo ZQ0KdXNlciB0bw0KLQkJZW50ZXIgYSAxLTk5OTk5OTk5IGRpZ2l0IGRlY2ltYWwgdmFsdWUuDQor CQlUaGlzIG1ldGhvZCBpcyBjYWxsZWQgd2hlbiB0aGUgRGFlbW9uIHJlcXVlc3RzIHRoZSB1c2Vy DQp0bw0KKwkJZW50ZXIgYSBkZWNpbWFsIHZhbHVlIGJldHdlZW4gMS05OTk5OTk5OS4NCg0KIAkJ VGhlIHR5cGUgcGFyYW1ldGVyIGluZGljYXRlcyB0aGUgaW5wdXQgbWV0aG9kLiBBbGxvd2VkDQp2 YWx1ZXMNCiAJCWFyZToNCi0NCiAJCQkiYmxpbmsiIC0gRW50ZXIgdGltZXMgcmVtb3RlIExFRCBi bGlua2VkDQogCQkJImJlZXAiIC0gRW50ZXIgdGltZXMgcmVtb3RlIGRldmljZSBiZWVwZWQNCiAJ CQkidmlicmF0ZSIgLSBFbnRlciB0aW1lcyByZW1vdGUgZGV2aWNlIHZpYnJhdGVkIEBAIC0NCjQ4 MywxNCArODI0LDEzDQpAQCBNZXRob2RzOg0KIAkJVGhpcyBhZ2VudCBzaG91bGQgcHJvbXB0IHRo ZSB1c2VyIGZvciBzcGVjaWZpYyBpbnB1dC4NCkZvcg0KIAkJaW5zdGFuY2U6ICJFbnRlciB2YWx1 ZSBiZWluZyBkaXNwbGF5ZWQgYnkgcmVtb3RlIGRldmljZSIuDQoNCi0JYXJyYXl7Ynl0ZX0gUHJv bXB0U3RhdGljKHN0cmluZyB0eXBlKQ0KKwlhcnJheXtieXRlfVsxNl0gUHJvbXB0U3RhdGljKHN0 cmluZyB0eXBlKQ0KDQogCQlUaGlzIG1ldGhvZCBpcyBjYWxsZWQgd2hlbiB0aGUgRGFlbW9uIHJl cXVpcmVzIGEgMTYgb2N0ZXQNCmJ5dGUNCiAJCWFycmF5LCBhcyBhbiBPdXQtb2YtQmFuZCBhdXRo ZW50aWNhdGlvbi4NCg0KIAkJVGhlIHR5cGUgcGFyYW1ldGVyIGluZGljYXRlcyB0aGUgaW5wdXQg bWV0aG9kLiBBbGxvd2VkDQp2YWx1ZXMNCiAJCWFyZToNCi0NCiAJCQkic3RhdGljLW9vYiIgLSBy ZXR1cm4gMTYgb2N0ZXQgYXJyYXkNCiAJCQkiaW4tYWxwaGEiIC0gcmV0dXJuIDE2IG9jdGV0IGFs cGhhIGFycmF5DQoNCkBAIC01MTEsNyArODUxLDYgQEAgUHJvcGVydGllczoNCiAJYXJyYXl7c3Ry aW5nfSBDYXBhYmlsaXRpZXMgW3JlYWQtb25seV0NCg0KIAkJQW4gYXJyYXkgb2Ygc3RyaW5ncyB3 aXRoIHRoZSBmb2xsb3dpbmcgYWxsb3dlZCB2YWx1ZXM6DQotDQogCQkJImJsaW5rIg0KIAkJCSJi ZWVwIg0KIAkJCSJ2aWJyYXRlIg0KQEAgLTUyOCw3ICs4NjcsNiBAQCBQcm9wZXJ0aWVzOg0KDQog CQlJbmRpY2F0ZXMgYXZhaWxhYmlsaXR5IG9mIE9PQiBkYXRhLiBBbiBhcnJheSBvZiBzdHJpbmdz IHdpdGggdGhlDQogCQlmb2xsb3dpbmcgYWxsb3dlZCB2YWx1ZXM6DQotDQogCQkJIm90aGVyIg0K IAkJCSJ1cmkiDQogCQkJIm1hY2hpbmUtY29kZS0yZCINCkBAIC01NDYsOCArODg0LDMgQEAgUHJv cGVydGllczoNCg0KIAkJVW5pZm9ybSBSZXNvdXJjZSBJZGVudGlmaWVyIHBvaW50cyB0byBvdXQt b2YtYmFuZCAoT09CKQ0KIAkJaW5mb3JtYXRpb24gKGUuZy4sIGEgcHVibGljIGtleSkNCi0NCi0N Ci1NZXNoIFByb3Zpc2lvbmVyIEhpZXJhcmNoeQ0KLT09PT09PT09PT09PT09PT09PT09PT09PT09 DQotPFRCRD4NCg0KDQoNCg0KSW5nYQ0K