Received: by 2002:a25:6193:0:0:0:0:0 with SMTP id v141csp2648160ybb; Sun, 5 Apr 2020 12:52:08 -0700 (PDT) X-Google-Smtp-Source: APiQypKikGcIZsOE0lrRK/wkCKgjyw5nF154WEL44SdAdptvkdeMawTNuGvpDHTOfR8jVzhjm0ht X-Received: by 2002:a4a:ba0b:: with SMTP id b11mr15065387oop.92.1586116328804; Sun, 05 Apr 2020 12:52:08 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1586116328; cv=pass; d=google.com; s=arc-20160816; b=fQ+gbnTGBubV/rAjJXMok8bjXXZVN2P6tf1ZyYc1n93FDsRLz0qPbeWMeB43tLtFk7 fDUmNXTnzOIorFGnr0jZqdYvQmGGP7EwYY3eKmb52mODJEKj3A+HCV12ibzfAes+2tx7 Q+e2m3b3AeIZm4+Q2JCdNX4ViLLV/k0KN4v+eVb3pXo9hNO7poFigcuRUFaZGyUgIK+8 bV9GXxcH93L52udXe8KdsWcNpLzu6Fuyh0OqiMR9hyfjTvBt9qmO4JuK6q+ipDIO2zPk g3zDrv9oOSysCpj5vASCJbScz0sKHcPfFpfVH7S5xPlObrVDcJ4NLcGWx1Lrbrlh7zJE ba/Q== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:mime-version:content-transfer-encoding :content-id:user-agent:content-language:accept-language:in-reply-to :references:message-id:date:thread-index:thread-topic:subject:to :from:dkim-signature:ironport-sdr:ironport-sdr; bh=NkBTPQzp2dEPP46FfoRRHe9hTfLnYYI0op8kTuxbg+M=; b=Dd+pY3fDkv/VlbBlgBHTkgkIrswrVRYKa/7irjWY9lpoG2lw9/rhLnVKgwdWJ0t3VK C5GVzxUohlC7HWA+w6RWhIPaY9xj/7TzHH5/SJ28mibEKqZaD4/3W1EPtskDjGtX0bO3 hE+BH57xZOjW9/Ng2q6lknfLs4nXM7I0CH7gYaUp829jb/pkeO1WCIESrGrywN8oXn7P iGJ9b+thObX+FK/M7QTT2r1f1Af/NyaHLZRSJDoWvElMegIOGfs+0U4gina72ylD6YED Ak9u3y1tcB50OLVZ+zUDA3NvrVCY9PZXj4qAqVcCC0bmQZkar1dRdXH6DBvigW/MVovJ JR6Q== ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@intel.onmicrosoft.com header.s=selector2-intel-onmicrosoft-com header.b=hQWRnCk0; arc=pass (i=1 spf=pass spfdomain=intel.com dkim=pass dkdomain=intel.com dmarc=pass fromdomain=intel.com); spf=pass (google.com: best guess record for domain of linux-bluetooth-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-bluetooth-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id m7si7114016oom.27.2020.04.05.12.51.36; Sun, 05 Apr 2020 12:52:08 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-bluetooth-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@intel.onmicrosoft.com header.s=selector2-intel-onmicrosoft-com header.b=hQWRnCk0; arc=pass (i=1 spf=pass spfdomain=intel.com dkim=pass dkdomain=intel.com dmarc=pass fromdomain=intel.com); spf=pass (google.com: best guess record for domain of linux-bluetooth-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-bluetooth-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727612AbgDETul (ORCPT + 99 others); Sun, 5 Apr 2020 15:50:41 -0400 Received: from mga04.intel.com ([192.55.52.120]:46171 "EHLO mga04.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727509AbgDETul (ORCPT ); Sun, 5 Apr 2020 15:50:41 -0400 IronPort-SDR: 6JAKOXJN/7n6G6Bb2kEaI8sAJW8X5YSSNG2kp4iaGu2s0qX2iI8lhxecsKaSNolR/Li3LGG7MT J25Rqh6UoqlQ== X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga005.jf.intel.com ([10.7.209.41]) by fmsmga104.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 05 Apr 2020 12:50:39 -0700 IronPort-SDR: /k/bPSMHLdK7NEtWbtUv5A9I/v5VEwEO6nO6tY31VC+hAX0u6vszXHChDV+0m/OxQ0qOOKw+qS t+bore0lkALg== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.72,348,1580803200"; d="scan'208";a="424135887" Received: from fmsmsx103.amr.corp.intel.com ([10.18.124.201]) by orsmga005.jf.intel.com with ESMTP; 05 Apr 2020 12:50:39 -0700 Received: from fmsmsx152.amr.corp.intel.com (10.18.125.5) by FMSMSX103.amr.corp.intel.com (10.18.124.201) with Microsoft SMTP Server (TLS) id 14.3.439.0; Sun, 5 Apr 2020 12:50:39 -0700 Received: from FMSEDG001.ED.cps.intel.com (10.1.192.133) by FMSMSX152.amr.corp.intel.com (10.18.125.5) with Microsoft SMTP Server (TLS) id 14.3.439.0; Sun, 5 Apr 2020 12:50:38 -0700 Received: from NAM04-SN1-obe.outbound.protection.outlook.com (104.47.44.55) by edgegateway.intel.com (192.55.55.68) with Microsoft SMTP Server (TLS) id 14.3.439.0; Sun, 5 Apr 2020 12:50:38 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=kOcGP9OGQLuabhVnUQOZ6qjkP5U8wqIF/s4nkDpWk2t5BQbrQI/65Yh90IbhBFszrP2jM2FEjGiLUXKc6RaRU3r716FkfGIHYLlBXnYcLszVj0vIvMfGJQ/xsqRfrAfHgBeXf8/53T8r1O2MwXB+mAIndyO2DGUp8Mof9TX1XMX78hKCiR8QMxCfoaWe4YKwt4z1Nm1vpBgHZDhCMHP88B5LZPdN8YIzafV7ALC0Sy0ys7DOCTbks2dIuaiD5xptnf1O5oE29CFtmPEudXcJV7K3VDR0zyhIVDrlZBKljPYO/1nA4xuLRieDjqO/W3q9MIpqfffvtymJlUbxzl4aAg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=NkBTPQzp2dEPP46FfoRRHe9hTfLnYYI0op8kTuxbg+M=; b=QpBbmjHXSqz4VGcY5tunYMNfExkwuD9rtJ/dlUxzTOhE+0horKBEwMRh9aAEp2WeTm5scPdl1d/behkWnLMs7y1sWWU8e0h07+DCrrHNPAsJh0tyPWmgxcT/056lD4sc3FcJeOcpRDBo6gYthBPrc3WMwg3S7fyE102GLyefbXVGtwoiWwg47ftNSWzrpHc/2ejWWWcHhAB090KTITQYbMpbg8HDEjKXOaCve2jc8ORrJSojIpO5RPTxYkVciJSLtubVHjztfD86uF5yur7HCEyk6+HXIs66b+0pxa3xqOn/k3bPcrgObr2UiMeQt7OYwdJVEyKqWAIXV4Uih/3zkw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=intel.onmicrosoft.com; s=selector2-intel-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=NkBTPQzp2dEPP46FfoRRHe9hTfLnYYI0op8kTuxbg+M=; b=hQWRnCk0MTAxuPJ0quuU9uqHTEmiljK8LqiSKX/vTYOmnQuGw4qFDIwkRVr7omy2QqRjV3NPKRtNotvuWw0Ew3+7Kz/C+7GuTmWADdK/bcdoKykgZiByIgmeDiRJ6u9JjE/7Df37eCXD/iBhdERd6j1bYrvt64cO8Rj1Gydz5ms= Received: from MW3PR11MB4539.namprd11.prod.outlook.com (2603:10b6:303:2f::13) by MW3PR11MB4732.namprd11.prod.outlook.com (2603:10b6:303:2c::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2878.19; Sun, 5 Apr 2020 19:50:36 +0000 Received: from MW3PR11MB4539.namprd11.prod.outlook.com ([fe80::39a4:4e3:2bb2:dd3a]) by MW3PR11MB4539.namprd11.prod.outlook.com ([fe80::39a4:4e3:2bb2:dd3a%3]) with mapi id 15.20.2878.018; Sun, 5 Apr 2020 19:50:36 +0000 From: "Gix, Brian" To: "michal.lowas-rzechonek@silvair.com" , "linux-bluetooth@vger.kernel.org" Subject: Re: [PATCH BlueZ RESEND] mesh: Remove redundant code from mesh/crypto Thread-Topic: [PATCH BlueZ RESEND] mesh: Remove redundant code from mesh/crypto Thread-Index: AQHWA7P/1NgK5Fw5002PJCTl12t5+6hq7WKAgAASJ4A= Date: Sun, 5 Apr 2020 19:50:36 +0000 Message-ID: References: <20200326211705.18678-1-michal.lowas-rzechonek@silvair.com> <27728473092a638d6c97520b14eac61656c56903.camel@intel.com> In-Reply-To: <27728473092a638d6c97520b14eac61656c56903.camel@intel.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: user-agent: Evolution 3.32.5 (3.32.5-1.fc30) authentication-results: spf=none (sender IP is ) smtp.mailfrom=brian.gix@intel.com; x-originating-ip: [192.55.54.38] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: bb27a576-0382-4b8d-28c3-08d7d99a9c33 x-ms-traffictypediagnostic: MW3PR11MB4732: x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:8273; x-forefront-prvs: 03648EFF89 x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:MW3PR11MB4539.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFTY:;SFS:(10019020)(346002)(39860400002)(376002)(136003)(396003)(366004)(110136005)(30864003)(6512007)(71200400001)(186003)(81156014)(2616005)(6486002)(26005)(8936002)(8676002)(36756003)(91956017)(6506007)(5660300002)(66946007)(478600001)(66476007)(66556008)(64756008)(66446008)(2906002)(76116006)(81166006)(86362001)(316002)(579004)(559001);DIR:OUT;SFP:1102; x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: /r/kx/7sjn9l5pFbPcpiLD+vKBbqtCS/x+GR4RltdsrguYcg5mG9tkzIX8EttyNK/vGhGeqyF/MlRuE9vIzORdLbkAov/ksqCgb1OeY9dXMna2U8AplvMUGXq7Fe3JOYNJGqgwhSYXeCbsZNfXVUJqyuiXVdCNWf2eDqeUPdzIwPUU2APfzbdYtCXrLcxWT3uB14RKpOy4rRi8eja8MfW0U3rznMhTGMhcV9DbY4b8+LZOloRuQVEkfhPGb6B4MT1Mhf3YNxSQ8ASMQM+Ze88LsBlzYqA2/C6rIEjg1dNdVegS+25H8eMBLXHjC3+IsukO9MILkvlt+zXV3vqogEdNtKE9qDQfq71OWgDLoWfgVzNZdU1xKdS6SY09O9MKavRQmvZd8hZFdz1Lh4JWhaeV4lgQay8ZHOf83iDMb2ukLAZJc8uCg8Mrn5I2GJFPXI x-ms-exchange-antispam-messagedata: fKQq5lpnPoUbEDFNnbgnXlJNVsL233Qt4GOjI7sHHHc+76y8M6fEn6yEjgtQ1v2XJSq2bb4vBUBe/UxIeooKhmpC1BE7tpC0c57YeE0krM+g6Xtqa8nvvc0+RYJgYLQxuhWV+Czx4ezTRFuKI1U/6g== x-ms-exchange-transport-forked: True Content-Type: text/plain; charset="utf-8" Content-ID: Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-CrossTenant-Network-Message-Id: bb27a576-0382-4b8d-28c3-08d7d99a9c33 X-MS-Exchange-CrossTenant-originalarrivaltime: 05 Apr 2020 19:50:36.4147 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: Gk3BqOe4Tm+epGp56H/o3ERHrwLL/QsBDbdasXLIvcdnEPs92aDIm/7uv3XRFVCi4/fkEqbiPWLipvV1y0Zd9w== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MW3PR11MB4732 X-OriginatorOrg: intel.com Sender: linux-bluetooth-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-bluetooth@vger.kernel.org T24gU3VuLCAyMDIwLTA0LTA1IGF0IDExOjQ1IC0wNzAwLCBCcmlhbiBHaXggd3JvdGU6DQo+IEhp IE1pY2hhxYIsDQo+IA0KPiBJIHRoaW5rIHRoaXMgbmVlZHMgc29tZSBtb3JlIHdvcmssIGluIHRo YXQgaXQgbm8gbG9uZ2VyIGNvcnJlY3RseSBmYWlscyB0aGUgbWVzaC10ZXN0LWNyeXB0byB0ZXN0 IHdoZW4NCj4gcnVubmluZzoNCj4gDQo+IG1ha2UgZGlzdGNoZWNrDQo+IA0KPiBJdCAqYWxtb3N0 KiBkb2VzIGluIHRoYXQgaXQgZmxhZ3MgYW4gZXJyb3IgaW4gcmVkIGlmIGEgInZlcmlmeSIgc3Rl cCBmYWlscywgYnV0IGl0IGRvZXMgbm90IGV4aXQgd2l0aCBhIGZhaWwNCj4gY29kZS4gIFRoaXMg aXMgYW4gaW1wb3J0YW50IHN0ZXAsIHBhcnRpY3VsYXJpbHkgd2l0aCB0aGUgZGVwZW5kYW5jZSBv biBrZXJuZWwgYmFzZWQgY3J5cHRvIGZ1bmN0aW9ucy4NCj4gDQo+IE15IHRlc3QgbWV0aG9kb2xv Z3kgd2FzIHRvIGZsaXAgYSBiaXQgaW4gb25lIG9mIHRoZSB0ZXN0IHBheWxvYWRzICAoaS5lLiwg bWFrZSBpdCAibm90IHBlcmZlY3RseSBtYXRjaCIgdGhlDQo+IHNwZWNpZmljYXRpb24gc2FtcGxl IGRhdGEpLg0KPiANCj4gQXMgYmVzdCBJIGNhbiB0ZWxsLCBpdCBpcyBvdGhlcndpc2UgZnVuY3Rp b25hbCwgYnV0IHRoZSB1bml0IHRlc3RzIGFyZSBpbXBvcnRhbnQuDQoNCkknbSBub3Qgc3VyZSB3 aGF0IGV4YWN0bHkgaXMgaGFwcGVuaW5nIHlldCwgYnV0IHJ1bm5pbmc6DQoNCiJtYWtlIGNoZWNr Ig0KDQppcyBmYWlsaW5nIGZvciBtZSB3aXRoIHlvdXIgcGF0Y2gsIG9uIHVuaXQvdGVzdC1tZXNo LWNyeXB0bw0KDQoNCj4gDQo+IE9uIFRodSwgMjAyMC0wMy0yNiBhdCAyMjoxNyArMDEwMCwgTWlj aGHFgiBMb3dhcy1SemVjaG9uZWsgd3JvdGU6DQo+ID4gLSBSZW1vdmUgYXBwbGljYXRpb25fZW5j cnlwdC9hcHBsaWNhdGlvbl9kZWNyeXB0DQo+ID4gLSBNYWtlIG1lc2hfY3J5cHRvX3ByaXZhY3lf Y291bnRlciBwcml2YXRlLCBhZGQgbWVzaF9jcnlwdG9fcGVjYg0KPiA+IC0gTWFrZSAqX25vbmNl IGZ1bmN0aW9ucyBwcml2YXRlIGFuZCBhbGlnbiB0aGVpciBpbXBsZW1lbnRhdGlvbiB0byBiZQ0K PiA+ICAgbW9yZSBjb25zaXN0ZW50DQo+ID4gLSBSZWZhY3RvciBuZXR3b3JrX2VuY3J5cHQvbmV0 d29ya19kZWNyeXB0IHRvIHVzZSAqX25vbmNlIGZ1bmN0aW9ucyBhbmQNCj4gPiAgIHJlbmFtZSB0 aGVtIHRvIHBhY2tldF9lbmNyeXB0L3BhY2tldF9kZWNyeXB0DQo+ID4gLSBSZWZhY3RvciBwYWNr ZXRfZW5jb2RlL3BhY2tldF9kZWNvZGUNCj4gPiAtLS0NCj4gPiAgbWVzaC9jcnlwdG8uYyAgICAg ICAgICAgfCA0ODEgKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KPiA+ ICBtZXNoL2NyeXB0by5oICAgICAgICAgICB8ICA1MCArLS0tLQ0KPiA+ICBtZXNoL25ldC1rZXlz LmMgICAgICAgICB8ICAgMiArLQ0KPiA+ICB1bml0L3Rlc3QtbWVzaC1jcnlwdG8uYyB8IDIwNSAr KysrKysrKy0tLS0tLS0tLQ0KPiA+ICA0IGZpbGVzIGNoYW5nZWQsIDI5MSBpbnNlcnRpb25zKCsp LCA0NDcgZGVsZXRpb25zKC0pDQo+ID4gDQo+ID4gZGlmZiAtLWdpdCBhL21lc2gvY3J5cHRvLmMg Yi9tZXNoL2NyeXB0by5jDQo+ID4gaW5kZXggNTk2YTI4OWY5Li5jZTMzNWJiZWMgMTAwNjQ0DQo+ ID4gLS0tIGEvbWVzaC9jcnlwdG8uYw0KPiA+ICsrKyBiL21lc2gvY3J5cHRvLmMNCj4gPiBAQCAt MzI3LDE0NCArMzI3LDU5IEBAIGJvb2wgbWVzaF9jcnlwdG9fYmVhY29uX2NtYWMoY29uc3QgdWlu dDhfdCBlbmNyeXB0aW9uX2tleVsxNl0sDQo+ID4gIAlyZXR1cm4gdHJ1ZTsNCj4gPiAgfQ0KPiA+ ICANCj4gPiAtYm9vbCBtZXNoX2NyeXB0b19uZXR3b3JrX25vbmNlKGJvb2wgY3RsLCB1aW50OF90 IHR0bCwgdWludDMyX3Qgc2VxLA0KPiA+IC0JCQkJdWludDE2X3Qgc3JjLCB1aW50MzJfdCBpdl9p bmRleCwNCj4gPiAtCQkJCXVpbnQ4X3Qgbm9uY2VbMTNdKQ0KPiA+ICtzdGF0aWMgdm9pZCBtZXNo X2NyeXB0b19uZXR3b3JrX25vbmNlKGJvb2wgY3RsLCB1aW50OF90IHR0bCwNCj4gPiArCQkJCQl1 aW50MzJfdCBzZXEsIHVpbnQxNl90IHNyYywNCj4gPiArCQkJCQl1aW50MzJfdCBpdl9pbmRleCwg dWludDhfdCBub25jZVsxM10pDQo+ID4gIHsNCj4gPiAtCW5vbmNlWzBdID0gMDsNCj4gPiArCW5v bmNlWzBdID0gMHgwMDsNCj4gPiAgCW5vbmNlWzFdID0gKHR0bCAmIFRUTF9NQVNLKSB8IChjdGwg PyBDVEwgOiAweDAwKTsNCj4gPiAgCW5vbmNlWzJdID0gKHNlcSA+PiAxNikgJiAweGZmOw0KPiA+ ICAJbm9uY2VbM10gPSAoc2VxID4+IDgpICYgMHhmZjsNCj4gPiAgCW5vbmNlWzRdID0gc2VxICYg MHhmZjsNCj4gPiAtDQo+ID4gLQkvKiBTUkMgKi8NCj4gPiAgCWxfcHV0X2JlMTYoc3JjLCBub25j ZSArIDUpOw0KPiA+IC0NCj4gPiAgCWxfcHV0X2JlMTYoMCwgbm9uY2UgKyA3KTsNCj4gPiAtDQo+ ID4gLQkvKiBJViBJbmRleCAqLw0KPiA+ICAJbF9wdXRfYmUzMihpdl9pbmRleCwgbm9uY2UgKyA5 KTsNCj4gPiAtDQo+ID4gLQlyZXR1cm4gdHJ1ZTsNCj4gPiAtfQ0KPiA+IC0NCj4gPiAtYm9vbCBt ZXNoX2NyeXB0b19uZXR3b3JrX2VuY3J5cHQoYm9vbCBjdGwsIHVpbnQ4X3QgdHRsLA0KPiA+IC0J CQkJdWludDMyX3Qgc2VxLCB1aW50MTZfdCBzcmMsDQo+ID4gLQkJCQl1aW50MzJfdCBpdl9pbmRl eCwNCj4gPiAtCQkJCWNvbnN0IHVpbnQ4X3QgbmV0X2tleVsxNl0sDQo+ID4gLQkJCQljb25zdCB1 aW50OF90ICplbmNfbXNnLCB1aW50OF90IGVuY19tc2dfbGVuLA0KPiA+IC0JCQkJdWludDhfdCAq b3V0LCB2b2lkICpuZXRfbWljKQ0KPiA+IC17DQo+ID4gLQl1aW50OF90IG5vbmNlWzEzXTsNCj4g PiAtDQo+ID4gLQlpZiAoIW1lc2hfY3J5cHRvX25ldHdvcmtfbm9uY2UoY3RsLCB0dGwsIHNlcSwg c3JjLCBpdl9pbmRleCwgbm9uY2UpKQ0KPiA+IC0JCXJldHVybiBmYWxzZTsNCj4gPiAtDQo+ID4g LQlyZXR1cm4gbWVzaF9jcnlwdG9fYWVzX2NjbV9lbmNyeXB0KG5vbmNlLCBuZXRfa2V5LCBOVUxM LCAwLCBlbmNfbXNnLA0KPiA+IC0JCQkJZW5jX21zZ19sZW4sIG91dCwgbmV0X21pYywNCj4gPiAt CQkJCWN0bCA/IDggOiA0KTsNCj4gPiAgfQ0KPiA+ICANCj4gPiAtYm9vbCBtZXNoX2NyeXB0b19u ZXR3b3JrX2RlY3J5cHQoYm9vbCBjdGwsIHVpbnQ4X3QgdHRsLA0KPiA+IC0JCQkJdWludDMyX3Qg c2VxLCB1aW50MTZfdCBzcmMsDQo+ID4gLQkJCQl1aW50MzJfdCBpdl9pbmRleCwNCj4gPiAtCQkJ CWNvbnN0IHVpbnQ4X3QgbmV0X2tleVsxNl0sDQo+ID4gLQkJCQljb25zdCB1aW50OF90ICplbmNf bXNnLCB1aW50OF90IGVuY19tc2dfbGVuLA0KPiA+IC0JCQkJdWludDhfdCAqb3V0LCB2b2lkICpu ZXRfbWljLCBzaXplX3QgbWljX3NpemUpDQo+ID4gLXsNCj4gPiAtCXVpbnQ4X3Qgbm9uY2VbMTNd Ow0KPiA+IC0NCj4gPiAtCWlmICghbWVzaF9jcnlwdG9fbmV0d29ya19ub25jZShjdGwsIHR0bCwg c2VxLCBzcmMsIGl2X2luZGV4LCBub25jZSkpDQo+ID4gLQkJcmV0dXJuIGZhbHNlOw0KPiA+IC0N Cj4gPiAtCXJldHVybiBtZXNoX2NyeXB0b19hZXNfY2NtX2RlY3J5cHQobm9uY2UsIG5ldF9rZXks IE5VTEwsIDAsDQo+ID4gLQkJCQkJCWVuY19tc2csIGVuY19tc2dfbGVuLCBvdXQsDQo+ID4gLQkJ CQkJCW5ldF9taWMsIG1pY19zaXplKTsNCj4gPiAtfQ0KPiA+IC0NCj4gPiAtYm9vbCBtZXNoX2Ny eXB0b19hcHBsaWNhdGlvbl9ub25jZSh1aW50MzJfdCBzZXEsIHVpbnQxNl90IHNyYywNCj4gPiAr c3RhdGljIHZvaWQgbWVzaF9jcnlwdG9fYXBwbGljYXRpb25fbm9uY2UodWludDMyX3Qgc2VxLCB1 aW50MTZfdCBzcmMsDQo+ID4gIAkJCQkJdWludDE2X3QgZHN0LCB1aW50MzJfdCBpdl9pbmRleCwN Cj4gPiAgCQkJCQlib29sIGFzem1pYywgdWludDhfdCBub25jZVsxM10pDQo+ID4gIHsNCj4gPiAg CW5vbmNlWzBdID0gMHgwMTsNCj4gPiAgCW5vbmNlWzFdID0gYXN6bWljID8gMHg4MCA6IDB4MDA7 DQo+ID4gLQlub25jZVsyXSA9IChzZXEgJiAweDAwZmYwMDAwKSA+PiAxNjsNCj4gPiAtCW5vbmNl WzNdID0gKHNlcSAmIDB4MDAwMGZmMDApID4+IDg7DQo+ID4gLQlub25jZVs0XSA9IChzZXEgJiAw eDAwMDAwMGZmKTsNCj4gPiAtCW5vbmNlWzVdID0gKHNyYyAmIDB4ZmYwMCkgPj4gODsNCj4gPiAt CW5vbmNlWzZdID0gKHNyYyAmIDB4MDBmZik7DQo+ID4gLQlub25jZVs3XSA9IChkc3QgJiAweGZm MDApID4+IDg7DQo+ID4gLQlub25jZVs4XSA9IChkc3QgJiAweDAwZmYpOw0KPiA+ICsJbm9uY2Vb Ml0gPSAoc2VxID4+IDE2ICkgJiAweGZmOw0KPiA+ICsJbm9uY2VbM10gPSAoc2VxID4+IDgpICYg MHhmZjsNCj4gPiArCW5vbmNlWzRdID0gc2VxICYgMHhmZjsNCj4gPiArCWxfcHV0X2JlMTYoc3Jj LCBub25jZSArIDUpOw0KPiA+ICsJbF9wdXRfYmUxNihkc3QsIG5vbmNlICsgNyk7DQo+ID4gIAls X3B1dF9iZTMyKGl2X2luZGV4LCBub25jZSArIDkpOw0KPiA+IC0NCj4gPiAtCXJldHVybiB0cnVl Ow0KPiA+ICB9DQo+ID4gIA0KPiA+IC1ib29sIG1lc2hfY3J5cHRvX2RldmljZV9ub25jZSh1aW50 MzJfdCBzZXEsIHVpbnQxNl90IHNyYywNCj4gPiArc3RhdGljIHZvaWQgbWVzaF9jcnlwdG9fZGV2 aWNlX25vbmNlKHVpbnQzMl90IHNlcSwgdWludDE2X3Qgc3JjLA0KPiA+ICAJCQkJCXVpbnQxNl90 IGRzdCwgdWludDMyX3QgaXZfaW5kZXgsDQo+ID4gIAkJCQkJYm9vbCBhc3ptaWMsIHVpbnQ4X3Qg bm9uY2VbMTNdKQ0KPiA+ICB7DQo+ID4gIAlub25jZVswXSA9IDB4MDI7DQo+ID4gIAlub25jZVsx XSA9IGFzem1pYyA/IDB4ODAgOiAweDAwOw0KPiA+IC0Jbm9uY2VbMl0gPSAoc2VxICYgMHgwMGZm MDAwMCkgPj4gMTY7DQo+ID4gLQlub25jZVszXSA9IChzZXEgJiAweDAwMDBmZjAwKSA+PiA4Ow0K PiA+IC0Jbm9uY2VbNF0gPSAoc2VxICYgMHgwMDAwMDBmZik7DQo+ID4gLQlub25jZVs1XSA9IChz cmMgJiAweGZmMDApID4+IDg7DQo+ID4gLQlub25jZVs2XSA9IChzcmMgJiAweDAwZmYpOw0KPiA+ IC0Jbm9uY2VbN10gPSAoZHN0ICYgMHhmZjAwKSA+PiA4Ow0KPiA+IC0Jbm9uY2VbOF0gPSAoZHN0 ICYgMHgwMGZmKTsNCj4gPiArCW5vbmNlWzJdID0gKHNlcSA+PiAxNiApICYgMHhmZjsNCj4gPiAr CW5vbmNlWzNdID0gKHNlcSA+PiA4KSAmIDB4ZmY7DQo+ID4gKwlub25jZVs0XSA9IHNlcSAmIDB4 ZmY7DQo+ID4gKwlsX3B1dF9iZTE2KHNyYywgbm9uY2UgKyA1KTsNCj4gPiArCWxfcHV0X2JlMTYo ZHN0LCBub25jZSArIDcpOw0KPiA+ICAJbF9wdXRfYmUzMihpdl9pbmRleCwgbm9uY2UgKyA5KTsN Cj4gPiAtDQo+ID4gLQlyZXR1cm4gdHJ1ZTsNCj4gPiAgfQ0KPiA+ICANCj4gPiAtYm9vbCBtZXNo X2NyeXB0b19hcHBsaWNhdGlvbl9lbmNyeXB0KHVpbnQ4X3Qga2V5X2FpZCwgdWludDMyX3Qgc2Vx LA0KPiA+IC0JCQkJCXVpbnQxNl90IHNyYywgdWludDE2X3QgZHN0LA0KPiA+IC0JCQkJCXVpbnQz Ml90IGl2X2luZGV4LA0KPiA+IC0JCQkJCWNvbnN0IHVpbnQ4X3QgYXBwX2tleVsxNl0sDQo+ID4g LQkJCQkJY29uc3QgdWludDhfdCAqYWFkLCB1aW50OF90IGFhZF9sZW4sDQo+ID4gLQkJCQkJY29u c3QgdWludDhfdCAqbXNnLCB1aW50OF90IG1zZ19sZW4sDQo+ID4gLQkJCQkJdWludDhfdCAqb3V0 LA0KPiA+IC0JCQkJCXZvaWQgKmFwcF9taWMsIHNpemVfdCBtaWNfc2l6ZSkNCj4gPiArc3RhdGlj IHZvaWQgbWVzaF9jcnlwdG9fcHJveHlfbm9uY2UodWludDMyX3Qgc2VxLCB1aW50MTZfdCBzcmMs DQo+ID4gKwkJCQkJdWludDMyX3QgaXZfaW5kZXgsIHVpbnQ4X3Qgbm9uY2VbMTNdKQ0KPiA+ICB7 DQo+ID4gLQl1aW50OF90IG5vbmNlWzEzXTsNCj4gPiAtCWJvb2wgYXN6bWljID0gKG1pY19zaXpl ID09IDgpID8gdHJ1ZSA6IGZhbHNlOw0KPiA+IC0NCj4gPiAtCWlmICgha2V5X2FpZCAmJiAhbWVz aF9jcnlwdG9fZGV2aWNlX25vbmNlKHNlcSwgc3JjLCBkc3QsDQo+ID4gLQkJCQkJCWl2X2luZGV4 LCBhc3ptaWMsIG5vbmNlKSkNCj4gPiAtCQlyZXR1cm4gZmFsc2U7DQo+ID4gLQ0KPiA+IC0JaWYg KGtleV9haWQgJiYgIW1lc2hfY3J5cHRvX2FwcGxpY2F0aW9uX25vbmNlKHNlcSwgc3JjLCBkc3Qs DQo+ID4gLQkJCQkJCWl2X2luZGV4LCBhc3ptaWMsIG5vbmNlKSkNCj4gPiAtCQlyZXR1cm4gZmFs c2U7DQo+ID4gLQ0KPiA+IC0JcmV0dXJuIG1lc2hfY3J5cHRvX2Flc19jY21fZW5jcnlwdChub25j ZSwgYXBwX2tleSwgYWFkLCBhYWRfbGVuLA0KPiA+IC0JCQkJCQltc2csIG1zZ19sZW4sDQo+ID4g LQkJCQkJCW91dCwgYXBwX21pYywgbWljX3NpemUpOw0KPiA+IC19DQo+ID4gLQ0KPiA+IC1ib29s IG1lc2hfY3J5cHRvX2FwcGxpY2F0aW9uX2RlY3J5cHQodWludDhfdCBrZXlfYWlkLCB1aW50MzJf dCBzZXEsDQo+ID4gLQkJCQl1aW50MTZfdCBzcmMsIHVpbnQxNl90IGRzdCwgdWludDMyX3QgaXZf aW5kZXgsDQo+ID4gLQkJCQljb25zdCB1aW50OF90IGFwcF9rZXlbMTZdLA0KPiA+IC0JCQkJY29u c3QgdWludDhfdCAqYWFkLCB1aW50OF90IGFhZF9sZW4sDQo+ID4gLQkJCQljb25zdCB1aW50OF90 ICplbmNfbXNnLCB1aW50OF90IGVuY19tc2dfbGVuLA0KPiA+IC0JCQkJdWludDhfdCAqb3V0LCB2 b2lkICphcHBfbWljLCBzaXplX3QgbWljX3NpemUpDQo+ID4gLXsNCj4gPiAtCXVpbnQ4X3Qgbm9u Y2VbMTNdOw0KPiA+IC0JYm9vbCBhc3ptaWMgPSAobWljX3NpemUgPT0gOCkgPyB0cnVlIDogZmFs c2U7DQo+ID4gLQ0KPiA+IC0JaWYgKCFrZXlfYWlkICYmICFtZXNoX2NyeXB0b19kZXZpY2Vfbm9u Y2Uoc2VxLCBzcmMsIGRzdCwNCj4gPiAtCQkJCQkJaXZfaW5kZXgsIGFzem1pYywgbm9uY2UpKQ0K PiA+IC0JCXJldHVybiBmYWxzZTsNCj4gPiAtDQo+ID4gLQlpZiAoa2V5X2FpZCAmJiAhbWVzaF9j cnlwdG9fYXBwbGljYXRpb25fbm9uY2Uoc2VxLCBzcmMsIGRzdCwNCj4gPiAtCQkJCQkJaXZfaW5k ZXgsIGFzem1pYywgbm9uY2UpKQ0KPiA+IC0JCXJldHVybiBmYWxzZTsNCj4gPiAtDQo+ID4gLQly ZXR1cm4gbWVzaF9jcnlwdG9fYWVzX2NjbV9kZWNyeXB0KG5vbmNlLCBhcHBfa2V5LA0KPiA+IC0J CQkJCQlhYWQsIGFhZF9sZW4sIGVuY19tc2csDQo+ID4gLQkJCQkJCWVuY19tc2dfbGVuLCBvdXQs DQo+ID4gLQkJCQkJCWFwcF9taWMsIG1pY19zaXplKTsNCj4gPiArCW5vbmNlWzBdID0gMHgwMzsN Cj4gPiArCW5vbmNlWzFdID0gMDsNCj4gPiArCW5vbmNlWzJdID0gKHNlcSA+PiAxNikgJiAweGZm Ow0KPiA+ICsJbm9uY2VbM10gPSAoc2VxID4+IDgpICYgMHhmZjsNCj4gPiArCW5vbmNlWzRdID0g c2VxICYgMHhmZjsNCj4gPiArCWxfcHV0X2JlMTYoc3JjLCBub25jZSArIDUpOw0KPiA+ICsJbF9w dXRfYmUxNigwLCBub25jZSArIDcpOw0KPiA+ICsJbF9wdXRfYmUzMihpdl9pbmRleCwgbm9uY2Ug KyA5KTsNCj4gPiAgfQ0KPiA+ICANCj4gPiAgYm9vbCBtZXNoX2NyeXB0b19zZXNzaW9uX2tleShj b25zdCB1aW50OF90IHNlY3JldFszMl0sDQo+ID4gQEAgLTU1Nyw2OSArNDcyLDY3IEBAIGJvb2wg bWVzaF9jcnlwdG9fdmlydHVhbF9hZGRyKGNvbnN0IHVpbnQ4X3QgdmlydHVhbF9sYWJlbFsxNl0s DQo+ID4gIAlyZXR1cm4gdHJ1ZTsNCj4gPiAgfQ0KPiA+ICANCj4gPiAtYm9vbCBtZXNoX2NyeXB0 b19wcml2YWN5X2NvdW50ZXIodWludDMyX3QgaXZfaW5kZXgsDQo+ID4gK3N0YXRpYyB2b2lkIG1l c2hfY3J5cHRvX3ByaXZhY3lfY291bnRlcih1aW50MzJfdCBpdl9pbmRleCwNCj4gPiAgCQkJCQkJ Y29uc3QgdWludDhfdCAqcGF5bG9hZCwNCj4gPiAgCQkJCQkJdWludDhfdCBwcml2YWN5X2NvdW50 ZXJbMTZdKQ0KPiA+ICB7DQo+ID4gIAltZW1zZXQocHJpdmFjeV9jb3VudGVyLCAwLCA1KTsNCj4g PiAgCWxfcHV0X2JlMzIoaXZfaW5kZXgsIHByaXZhY3lfY291bnRlciArIDUpOw0KPiA+ICAJbWVt Y3B5KHByaXZhY3lfY291bnRlciArIDksIHBheWxvYWQsIDcpOw0KPiA+ICt9DQo+ID4gIA0KPiA+ IC0JcmV0dXJuIHRydWU7DQo+ID4gK3N0YXRpYyBib29sIG1lc2hfY3J5cHRvX3BlY2IoY29uc3Qg dWludDhfdCBwcml2YWN5X2tleVsxNl0sDQo+ID4gKwkJCQkJCXVpbnQzMl90IGl2X2luZGV4LA0K PiA+ICsJCQkJCQljb25zdCB1aW50OF90ICpwYXlsb2FkLA0KPiA+ICsJCQkJCQl1aW50OF90IHBl Y2JbMTZdKQ0KPiA+ICt7DQo+ID4gKwltZXNoX2NyeXB0b19wcml2YWN5X2NvdW50ZXIoaXZfaW5k ZXgsIHBheWxvYWQsIHBlY2IpOw0KPiA+ICsJcmV0dXJuIGFlc19lY2Jfb25lKHByaXZhY3lfa2V5 LCBwZWNiLCBwZWNiKTsNCj4gPiAgfQ0KPiA+ICANCj4gPiAtYm9vbCBtZXNoX2NyeXB0b19uZXR3 b3JrX29iZnVzY2F0ZShjb25zdCB1aW50OF90IHByaXZhY3lfa2V5WzE2XSwNCj4gPiAtCQkJCQlj b25zdCB1aW50OF90IHByaXZhY3lfY291bnRlclsxNl0sDQo+ID4gLQkJCQkJYm9vbCBjdGwsIHVp bnQ4X3QgdHRsLCB1aW50MzJfdCBzZXEsDQo+ID4gLQkJCQkJdWludDE2X3Qgc3JjLCB1aW50OF90 ICpvdXQpDQo+ID4gK3N0YXRpYyBib29sIG1lc2hfY3J5cHRvX25ldHdvcmtfb2JmdXNjYXRlKHVp bnQ4X3QgKnBhY2tldCwNCj4gPiArCQkJCQkJY29uc3QgdWludDhfdCBwcml2YWN5X2tleVsxNl0s DQo+ID4gKwkJCQkJCXVpbnQzMl90IGl2X2luZGV4LA0KPiA+ICsJCQkJCQlib29sIGN0bCwgdWlu dDhfdCB0dGwsDQo+ID4gKwkJCQkJCXVpbnQzMl90IHNlcSwgdWludDE2X3Qgc3JjKQ0KPiA+ICB7 DQo+ID4gLQl1aW50OF90IGVjYlsxNl0sIHRtcFsxNl07DQo+ID4gKwl1aW50OF90IHBlY2JbMTZd Ow0KPiA+ICsJdWludDhfdCAqbmV0X2hkciA9IHBhY2tldCArIDE7DQo+ID4gIAlpbnQgaTsNCj4g PiAgDQo+ID4gLQlpZiAoIWFlc19lY2Jfb25lKHByaXZhY3lfa2V5LCBwcml2YWN5X2NvdW50ZXIs IGVjYikpDQo+ID4gKwlpZiAoIW1lc2hfY3J5cHRvX3BlY2IocHJpdmFjeV9rZXksIGl2X2luZGV4 LCBwYWNrZXQgKyA3LCBwZWNiKSkNCj4gPiAgCQlyZXR1cm4gZmFsc2U7DQo+ID4gIA0KPiA+IC0J dG1wWzBdID0gKCghIWN0bCkgPDwgNykgfCAodHRsICYgVFRMX01BU0spOw0KPiA+IC0JdG1wWzFd ID0gKHNlcSAmIDB4ZmYwMDAwKSA+PiAxNjsNCj4gPiAtCXRtcFsyXSA9IChzZXEgJiAweDAwZmYw MCkgPj4gODsNCj4gPiAtCXRtcFszXSA9IChzZXEgJiAweDAwMDBmZik7DQo+ID4gLQl0bXBbNF0g PSAoc3JjICYgMHhmZjAwKSA+PiA4Ow0KPiA+IC0JdG1wWzVdID0gKHNyYyAmIDB4MDBmZik7DQo+ ID4gKwlsX3B1dF9iZTE2KHNyYywgbmV0X2hkciArIDQpOw0KPiA+ICsJbF9wdXRfYmUzMihzZXEg JiBTRVFfTUFTSywgbmV0X2hkcik7DQo+ID4gKwluZXRfaGRyWzBdID0gKCghIWN0bCkgPDwgNykg fCAodHRsICYgVFRMX01BU0spOw0KPiA+ICANCj4gPiAtCWlmIChvdXQpIHsNCj4gPiAtCQlmb3Ig KGkgPSAwOyBpIDwgNjsgaSsrKQ0KPiA+IC0JCQlvdXRbaV0gPSBlY2JbaV0gXiB0bXBbaV07DQo+ ID4gLQl9DQo+ID4gKwlmb3IgKGkgPSAwOyBpIDwgNjsgaSsrKQ0KPiA+ICsJCW5ldF9oZHJbaV0g PSBwZWNiW2ldIF4gbmV0X2hkcltpXTsNCj4gPiAgDQo+ID4gIAlyZXR1cm4gdHJ1ZTsNCj4gPiAg fQ0KPiA+ICANCj4gPiAtYm9vbCBtZXNoX2NyeXB0b19uZXR3b3JrX2NsYXJpZnkoY29uc3QgdWlu dDhfdCBwcml2YWN5X2tleVsxNl0sDQo+ID4gLQkJCQljb25zdCB1aW50OF90IHByaXZhY3lfY291 bnRlclsxNl0sDQo+ID4gLQkJCQljb25zdCB1aW50OF90IG5ldF9oZHJbNl0sDQo+ID4gLQkJCQli b29sICpjdGwsIHVpbnQ4X3QgKnR0bCwNCj4gPiAtCQkJCXVpbnQzMl90ICpzZXEsIHVpbnQxNl90 ICpzcmMpDQo+ID4gK3N0YXRpYyBib29sIG1lc2hfY3J5cHRvX25ldHdvcmtfY2xhcmlmeSh1aW50 OF90ICpwYWNrZXQsDQo+ID4gKwkJCQkJCWNvbnN0IHVpbnQ4X3QgcHJpdmFjeV9rZXlbMTZdLA0K PiA+ICsJCQkJCQl1aW50MzJfdCBpdl9pbmRleCwNCj4gPiArCQkJCQkJYm9vbCAqY3RsLCB1aW50 OF90ICp0dGwsDQo+ID4gKwkJCQkJCXVpbnQzMl90ICpzZXEsIHVpbnQxNl90ICpzcmMpDQo+ID4g IHsNCj4gPiAtCXVpbnQ4X3QgZWNiWzE2XSwgdG1wWzZdOw0KPiA+ICsJdWludDhfdCBwZWNiWzE2 XTsNCj4gPiArCXVpbnQ4X3QgKm5ldF9oZHIgPSBwYWNrZXQgKyAxOw0KPiA+ICAJaW50IGk7DQo+ ID4gIA0KPiA+IC0JaWYgKCFhZXNfZWNiX29uZShwcml2YWN5X2tleSwgcHJpdmFjeV9jb3VudGVy LCBlY2IpKQ0KPiA+ICsJaWYgKCFtZXNoX2NyeXB0b19wZWNiKHByaXZhY3lfa2V5LCBpdl9pbmRl eCwgcGFja2V0ICsgNywgcGVjYikpDQo+ID4gIAkJcmV0dXJuIGZhbHNlOw0KPiA+ICANCj4gPiAg CWZvciAoaSA9IDA7IGkgPCA2OyBpKyspDQo+ID4gLQkJdG1wW2ldID0gZWNiW2ldIF4gbmV0X2hk cltpXTsNCj4gPiAtDQo+ID4gLQlpZiAoY3RsKQ0KPiA+IC0JCSpjdGwgPSAhISh0bXBbMF0gJiBD VEwpOw0KPiA+ICsJCW5ldF9oZHJbaV0gPSBwZWNiW2ldIF4gbmV0X2hkcltpXTsNCj4gPiAgDQo+ ID4gLQlpZiAodHRsKQ0KPiA+IC0JCSp0dGwgPSB0bXBbMF0gJiBUVExfTUFTSzsNCj4gPiAtDQo+ ID4gLQlpZiAoc2VxKQ0KPiA+IC0JCSpzZXEgPSBsX2dldF9iZTMyKHRtcCkgJiBTRVFfTUFTSzsN Cj4gPiAtDQo+ID4gLQlpZiAoc3JjKQ0KPiA+IC0JCSpzcmMgPSBsX2dldF9iZTE2KHRtcCArIDQp Ow0KPiA+ICsJKnNyYyA9IGxfZ2V0X2JlMTYobmV0X2hkciArIDQpOw0KPiA+ICsJKnNlcSA9IGxf Z2V0X2JlMzIobmV0X2hkcikgJiBTRVFfTUFTSzsNCj4gPiArCSp0dGwgPSBuZXRfaGRyWzBdICYg VFRMX01BU0s7DQo+ID4gKwkqY3RsID0gISEobmV0X2hkclswXSAmIENUTCk7DQo+ID4gIA0KPiA+ ICAJcmV0dXJuIHRydWU7DQo+ID4gIH0NCj4gPiBAQCAtNjg5LDI0ICs2MDIsMTMgQEAgYm9vbCBt ZXNoX2NyeXB0b19wYWNrZXRfYnVpbGQoYm9vbCBjdGwsIHVpbnQ4X3QgdHRsLA0KPiA+ICAJcmV0 dXJuIHRydWU7DQo+ID4gIH0NCj4gPiAgDQo+ID4gLWJvb2wgbWVzaF9jcnlwdG9fcGFja2V0X3Bh cnNlKGNvbnN0IHVpbnQ4X3QgKnBhY2tldCwgdWludDhfdCBwYWNrZXRfbGVuLA0KPiA+ICtzdGF0 aWMgYm9vbCBuZXR3b3JrX2hlYWRlcl9wYXJzZShjb25zdCB1aW50OF90ICpwYWNrZXQsIHVpbnQ4 X3QgcGFja2V0X2xlbiwNCj4gPiAgCQkJCWJvb2wgKmN0bCwgdWludDhfdCAqdHRsLCB1aW50MzJf dCAqc2VxLA0KPiA+IC0JCQkJdWludDE2X3QgKnNyYywgdWludDE2X3QgKmRzdCwNCj4gPiAtCQkJ CXVpbnQzMl90ICpjb29raWUsIHVpbnQ4X3QgKm9wY29kZSwNCj4gPiAtCQkJCWJvb2wgKnNlZ21l bnRlZCwgdWludDhfdCAqa2V5X2FpZCwNCj4gPiAtCQkJCWJvb2wgKnN6bWljLCBib29sICpyZWxh eSwgdWludDE2X3QgKnNlcVplcm8sDQo+ID4gLQkJCQl1aW50OF90ICpzZWdPLCB1aW50OF90ICpz ZWdOLA0KPiA+IC0JCQkJY29uc3QgdWludDhfdCAqKnBheWxvYWQsIHVpbnQ4X3QgKnBheWxvYWRf bGVuKQ0KPiA+ICsJCQkJdWludDE2X3QgKnNyYywgdWludDE2X3QgKmRzdCkNCj4gPiAgew0KPiA+ IC0JdWludDMyX3QgaGRyOw0KPiA+IC0JdWludDE2X3QgdGhpc19kc3Q7DQo+ID4gLQlib29sIGlz X3NlZ21lbnRlZDsNCj4gPiAtDQo+ID4gIAlpZiAocGFja2V0X2xlbiA8IDEwKQ0KPiA+ICAJCXJl dHVybiBmYWxzZTsNCj4gPiAgDQo+ID4gLQl0aGlzX2RzdCA9IGxfZ2V0X2JlMTYocGFja2V0ICsg Nyk7DQo+ID4gLQ0KPiA+ICAJLyogVHJ5IHRvIGtlZXAgYml0cyBpbiB0aGUgb3JkZXIgdGhleSBl eGlzdCB3aXRoaW4gdGhlIHBhY2tldCAqLw0KPiA+ICAJaWYgKGN0bCkNCj4gPiAgCQkqY3RsID0g ISEocGFja2V0WzFdICYgQ1RMKTsNCj4gPiBAQCAtNzIwLDYgKzYyMiwzMCBAQCBib29sIG1lc2hf Y3J5cHRvX3BhY2tldF9wYXJzZShjb25zdCB1aW50OF90ICpwYWNrZXQsIHVpbnQ4X3QgcGFja2V0 X2xlbiwNCj4gPiAgCWlmIChzcmMpDQo+ID4gIAkJKnNyYyA9IGxfZ2V0X2JlMTYocGFja2V0ICsg NSk7DQo+ID4gIA0KPiA+ICsJaWYgKGRzdCkNCj4gPiArCQkqZHN0ID0gbF9nZXRfYmUxNihwYWNr ZXQgKyA3KTsNCj4gPiArDQo+ID4gKwlyZXR1cm4gdHJ1ZTsNCj4gPiArDQo+ID4gK30NCj4gPiAr DQo+ID4gK2Jvb2wgbWVzaF9jcnlwdG9fcGFja2V0X3BhcnNlKGNvbnN0IHVpbnQ4X3QgKnBhY2tl dCwgdWludDhfdCBwYWNrZXRfbGVuLA0KPiA+ICsJCQkJYm9vbCAqY3RsLCB1aW50OF90ICp0dGws IHVpbnQzMl90ICpzZXEsDQo+ID4gKwkJCQl1aW50MTZfdCAqc3JjLCB1aW50MTZfdCAqZHN0LA0K PiA+ICsJCQkJdWludDMyX3QgKmNvb2tpZSwgdWludDhfdCAqb3Bjb2RlLA0KPiA+ICsJCQkJYm9v bCAqc2VnbWVudGVkLCB1aW50OF90ICprZXlfYWlkLA0KPiA+ICsJCQkJYm9vbCAqc3ptaWMsIGJv b2wgKnJlbGF5LCB1aW50MTZfdCAqc2VxWmVybywNCj4gPiArCQkJCXVpbnQ4X3QgKnNlZ08sIHVp bnQ4X3QgKnNlZ04sDQo+ID4gKwkJCQljb25zdCB1aW50OF90ICoqcGF5bG9hZCwgdWludDhfdCAq cGF5bG9hZF9sZW4pDQo+ID4gK3sNCj4gPiArCXVpbnQzMl90IGhkcjsNCj4gPiArCXVpbnQxNl90 IHRoaXNfZHN0Ow0KPiA+ICsJYm9vbCBpc19zZWdtZW50ZWQ7DQo+ID4gKw0KPiA+ICsJaWYgKCFu ZXR3b3JrX2hlYWRlcl9wYXJzZShwYWNrZXQsIHBhY2tldF9sZW4sDQo+ID4gKwkJCQkJY3RsLCB0 dGwsIHNlcSwgc3JjLCAmdGhpc19kc3QpKQ0KPiA+ICsJCXJldHVybiBmYWxzZTsNCj4gPiArDQo+ ID4gIAlpZiAoZHN0KQ0KPiA+ICAJCSpkc3QgPSB0aGlzX2RzdDsNCj4gPiAgDQo+ID4gQEAgLTc5 OSwzOCArNzI1LDI3IEBAIGJvb2wgbWVzaF9jcnlwdG9fcGFja2V0X3BhcnNlKGNvbnN0IHVpbnQ4 X3QgKnBhY2tldCwgdWludDhfdCBwYWNrZXRfbGVuLA0KPiA+ICBib29sIG1lc2hfY3J5cHRvX3Bh eWxvYWRfZW5jcnlwdCh1aW50OF90ICphYWQsIGNvbnN0IHVpbnQ4X3QgKnBheWxvYWQsDQo+ID4g IAkJCQl1aW50OF90ICpvdXQsIHVpbnQxNl90IHBheWxvYWRfbGVuLA0KPiA+ICAJCQkJdWludDE2 X3Qgc3JjLCB1aW50MTZfdCBkc3QsIHVpbnQ4X3Qga2V5X2FpZCwNCj4gPiAtCQkJCXVpbnQzMl90 IHNlcV9udW0sIHVpbnQzMl90IGl2X2luZGV4LA0KPiA+ICsJCQkJdWludDMyX3Qgc2VxLCB1aW50 MzJfdCBpdl9pbmRleCwNCj4gPiAgCQkJCWJvb2wgYXN6bWljLA0KPiA+IC0JCQkJY29uc3QgdWlu dDhfdCBhcHBsaWNhdGlvbl9rZXlbMTZdKQ0KPiA+ICsJCQkJY29uc3QgdWludDhfdCBhcHBfa2V5 WzE2XSkNCj4gPiAgew0KPiA+IC0JdWludDhfdCBhcHBsaWNhdGlvbl9ub25jZVsxM10gPSB7IDB4 MDEsIH07DQo+ID4gKwl1aW50OF90IG5vbmNlWzEzXTsNCj4gPiAgDQo+ID4gIAlpZiAocGF5bG9h ZF9sZW4gPCAxKQ0KPiA+ICAJCXJldHVybiBmYWxzZTsNCj4gPiAgDQo+ID4gIAlpZiAoa2V5X2Fp ZCA9PSBBUFBfQUlEX0RFVikNCj4gPiAtCQlhcHBsaWNhdGlvbl9ub25jZVswXSA9IDB4MDI7DQo+ ID4gLQ0KPiA+IC0JLyogU2VxIE51bSAqLw0KPiA+IC0JbF9wdXRfYmUzMihzZXFfbnVtLCBhcHBs aWNhdGlvbl9ub25jZSArIDEpOw0KPiA+IC0NCj4gPiAtCS8qIEFTWk1JQyAqLw0KPiA+IC0JYXBw bGljYXRpb25fbm9uY2VbMV0gfD0gYXN6bWljID8gMHg4MCA6IDB4MDA7DQo+ID4gLQ0KPiA+IC0J LyogU1JDICovDQo+ID4gLQlsX3B1dF9iZTE2KHNyYywgYXBwbGljYXRpb25fbm9uY2UgKyA1KTsN Cj4gPiAtDQo+ID4gLQkvKiBEU1QgKi8NCj4gPiAtCWxfcHV0X2JlMTYoZHN0LCBhcHBsaWNhdGlv bl9ub25jZSArIDcpOw0KPiA+IC0NCj4gPiAtCS8qIElWIEluZGV4ICovDQo+ID4gLQlsX3B1dF9i ZTMyKGl2X2luZGV4LCBhcHBsaWNhdGlvbl9ub25jZSArIDkpOw0KPiA+IC0NCj4gPiAtCWlmICgh bWVzaF9jcnlwdG9fYWVzX2NjbV9lbmNyeXB0KGFwcGxpY2F0aW9uX25vbmNlLCBhcHBsaWNhdGlv bl9rZXksDQo+ID4gLQkJCQkJYWFkLCBhYWQgPyAxNiA6IDAsDQo+ID4gLQkJCQkJcGF5bG9hZCwg cGF5bG9hZF9sZW4sDQo+ID4gLQkJCQkJb3V0LCBOVUxMLA0KPiA+IC0JCQkJCWFzem1pYyA/IDgg OiA0KSkNCj4gPiArCQltZXNoX2NyeXB0b19kZXZpY2Vfbm9uY2Uoc2VxLCBzcmMsIGRzdCwgaXZf aW5kZXgsIGFzem1pYywNCj4gPiArCQkJCQkJCQkJbm9uY2UpOw0KPiA+ICsJZWxzZQ0KPiA+ICsJ CW1lc2hfY3J5cHRvX2FwcGxpY2F0aW9uX25vbmNlKHNlcSwgc3JjLCBkc3QsIGl2X2luZGV4LCBh c3ptaWMsDQo+ID4gKwkJCQkJCQkJCW5vbmNlKTsNCj4gPiArDQo+ID4gKwlpZiAoIW1lc2hfY3J5 cHRvX2Flc19jY21fZW5jcnlwdChub25jZSwgYXBwX2tleSwNCj4gPiArCQkJCQkJCWFhZCwgYWFk ID8gMTYgOiAwLA0KPiA+ICsJCQkJCQkJcGF5bG9hZCwgcGF5bG9hZF9sZW4sDQo+ID4gKwkJCQkJ CQlvdXQsIE5VTEwsDQo+ID4gKwkJCQkJCQlhc3ptaWMgPyA4IDogNCkpDQo+ID4gIAkJcmV0dXJu IGZhbHNlOw0KPiA+ICANCj4gPiAgCXJldHVybiB0cnVlOw0KPiA+IEBAIC04MzgsMTMgKzc1Mywx MyBAQCBib29sIG1lc2hfY3J5cHRvX3BheWxvYWRfZW5jcnlwdCh1aW50OF90ICphYWQsIGNvbnN0 IHVpbnQ4X3QgKnBheWxvYWQsDQo+ID4gIA0KPiA+ICBib29sIG1lc2hfY3J5cHRvX3BheWxvYWRf ZGVjcnlwdCh1aW50OF90ICphYWQsIHVpbnQxNl90IGFhZF9sZW4sDQo+ID4gIAkJCQljb25zdCB1 aW50OF90ICpwYXlsb2FkLCB1aW50MTZfdCBwYXlsb2FkX2xlbiwNCj4gPiAtCQkJCWJvb2wgc3pt aWN0LA0KPiA+ICsJCQkJYm9vbCBhc3ptaWMsDQo+ID4gIAkJCQl1aW50MTZfdCBzcmMsIHVpbnQx Nl90IGRzdCwNCj4gPiAtCQkJCXVpbnQ4X3Qga2V5X2FpZCwgdWludDMyX3Qgc2VxX251bSwNCj4g PiArCQkJCXVpbnQ4X3Qga2V5X2FpZCwgdWludDMyX3Qgc2VxLA0KPiA+ICAJCQkJdWludDMyX3Qg aXZfaW5kZXgsIHVpbnQ4X3QgKm91dCwNCj4gPiAgCQkJCWNvbnN0IHVpbnQ4X3QgYXBwX2tleVsx Nl0pDQo+ID4gIHsNCj4gPiAtCXVpbnQ4X3QgYXBwX25vbmNlWzEzXSA9IHsgMHgwMSwgfTsNCj4g PiArCXVpbnQ4X3Qgbm9uY2VbMTNdOw0KPiA+ICAJdWludDMyX3QgbWljMzI7DQo+ID4gIAl1aW50 NjRfdCBtaWM2NDsNCj4gPiAgDQo+ID4gQEAgLTg1MiwyNyArNzY3LDE2IEBAIGJvb2wgbWVzaF9j cnlwdG9fcGF5bG9hZF9kZWNyeXB0KHVpbnQ4X3QgKmFhZCwgdWludDE2X3QgYWFkX2xlbiwNCj4g PiAgCQlyZXR1cm4gZmFsc2U7DQo+ID4gIA0KPiA+ICAJaWYgKGtleV9haWQgPT0gQVBQX0FJRF9E RVYpDQo+ID4gLQkJYXBwX25vbmNlWzBdID0gMHgwMjsNCj4gPiAtDQo+ID4gLQkvKiBTZXEgTnVt ICovDQo+ID4gLQlsX3B1dF9iZTMyKHNlcV9udW0sIGFwcF9ub25jZSArIDEpOw0KPiA+IC0NCj4g PiAtCS8qIEFTWk1JQyAqLw0KPiA+IC0JYXBwX25vbmNlWzFdIHw9IHN6bWljdCA/IDB4ODAgOiAw eDAwOw0KPiA+IC0NCj4gPiAtCS8qIFNSQyAqLw0KPiA+IC0JbF9wdXRfYmUxNihzcmMsIGFwcF9u b25jZSArIDUpOw0KPiA+IC0NCj4gPiAtCS8qIERTVCAqLw0KPiA+IC0JbF9wdXRfYmUxNihkc3Qs IGFwcF9ub25jZSArIDcpOw0KPiA+IC0NCj4gPiAtCS8qIElWIEluZGV4ICovDQo+ID4gLQlsX3B1 dF9iZTMyKGl2X2luZGV4LCBhcHBfbm9uY2UgKyA5KTsNCj4gPiArCQltZXNoX2NyeXB0b19kZXZp Y2Vfbm9uY2Uoc2VxLCBzcmMsIGRzdCwgaXZfaW5kZXgsIGFzem1pYywNCj4gPiArCQkJCQkJCQkJ bm9uY2UpOw0KPiA+ICsJZWxzZQ0KPiA+ICsJCW1lc2hfY3J5cHRvX2FwcGxpY2F0aW9uX25vbmNl KHNlcSwgc3JjLCBkc3QsIGl2X2luZGV4LCBhc3ptaWMsDQo+ID4gKwkJCQkJCQkJCW5vbmNlKTsN Cj4gPiAgDQo+ID4gIAltZW1jcHkob3V0LCBwYXlsb2FkLCBwYXlsb2FkX2xlbik7DQo+ID4gIA0K PiA+IC0JaWYgKHN6bWljdCkgew0KPiA+IC0JCWlmICghbWVzaF9jcnlwdG9fYWVzX2NjbV9kZWNy eXB0KGFwcF9ub25jZSwgYXBwX2tleSwNCj4gPiArCWlmIChhc3ptaWMpIHsNCj4gPiArCQlpZiAo IW1lc2hfY3J5cHRvX2Flc19jY21fZGVjcnlwdChub25jZSwgYXBwX2tleSwNCj4gPiAgCQkJCQlh YWQsIGFhZF9sZW4sDQo+ID4gIAkJCQkJcGF5bG9hZCwgcGF5bG9hZF9sZW4sDQo+ID4gIAkJCQkJ b3V0LCAmbWljNjQsIHNpemVvZihtaWM2NCkpKQ0KPiA+IEBAIC04ODQsNyArNzg4LDcgQEAgYm9v bCBtZXNoX2NyeXB0b19wYXlsb2FkX2RlY3J5cHQodWludDhfdCAqYWFkLCB1aW50MTZfdCBhYWRf bGVuLA0KPiA+ICAJCWlmIChtaWM2NCkNCj4gPiAgCQkJcmV0dXJuIGZhbHNlOw0KPiA+ICAJfSBl bHNlIHsNCj4gPiAtCQlpZiAoIW1lc2hfY3J5cHRvX2Flc19jY21fZGVjcnlwdChhcHBfbm9uY2Us IGFwcF9rZXksDQo+ID4gKwkJaWYgKCFtZXNoX2NyeXB0b19hZXNfY2NtX2RlY3J5cHQobm9uY2Us IGFwcF9rZXksDQo+ID4gIAkJCQkJYWFkLCBhYWRfbGVuLA0KPiA+ICAJCQkJCXBheWxvYWQsIHBh eWxvYWRfbGVuLA0KPiA+ICAJCQkJCW91dCwgJm1pYzMyLCBzaXplb2YobWljMzIpKSkNCj4gPiBA QCAtOTAwLDE0NiArODA0LDEwNyBAQCBib29sIG1lc2hfY3J5cHRvX3BheWxvYWRfZGVjcnlwdCh1 aW50OF90ICphYWQsIHVpbnQxNl90IGFhZF9sZW4sDQo+ID4gIAlyZXR1cm4gdHJ1ZTsNCj4gPiAg fQ0KPiA+ICANCj4gPiAtYm9vbCBtZXNoX2NyeXB0b19wYWNrZXRfZW5jb2RlKHVpbnQ4X3QgKnBh Y2tldCwgdWludDhfdCBwYWNrZXRfbGVuLA0KPiA+ICtzdGF0aWMgYm9vbCBtZXNoX2NyeXB0b19w YWNrZXRfZW5jcnlwdCh1aW50OF90ICpwYWNrZXQsIHVpbnQ4X3QgcGFja2V0X2xlbiwNCj4gPiAg CQkJCWNvbnN0IHVpbnQ4X3QgbmV0d29ya19rZXlbMTZdLA0KPiA+IC0JCQkJdWludDMyX3QgaXZf aW5kZXgsDQo+ID4gLQkJCQljb25zdCB1aW50OF90IHByaXZhY3lfa2V5WzE2XSkNCj4gPiArCQkJ CXVpbnQzMl90IGl2X2luZGV4LCBib29sIHByb3h5LA0KPiA+ICsJCQkJYm9vbCBjdGwsIHVpbnQ4 X3QgdHRsLCB1aW50MzJfdCBzZXEsDQo+ID4gKwkJCQl1aW50MTZfdCBzcmMpDQo+ID4gIHsNCj4g PiAtCXVpbnQ4X3QgbmV0d29ya19ub25jZVsxM10gPSB7IDB4MDAsIDB4MDAgfTsNCj4gPiAtCXVp bnQ4X3QgcHJpdmFjeV9jb3VudGVyWzE2XSA9IHsgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgw MCwgfTsNCj4gPiAtCXVpbnQ4X3QgdG1wWzE2XTsNCj4gPiAtCWludCBpOw0KPiA+IC0NCj4gPiAt CWlmIChwYWNrZXRfbGVuIDwgMTQpDQo+ID4gLQkJcmV0dXJuIGZhbHNlOw0KPiA+ICsJdWludDhf dCBub25jZVsxM107DQo+ID4gIA0KPiA+ICAJLyogRGV0ZWN0IFByb3h5IHBhY2tldCBieSBDVEwg PT0gdHJ1ZSAmJiBEU1QgPT0gMHgwMDAwICovDQo+ID4gLQlpZiAoKHBhY2tldFsxXSAmIENUTCkg JiYgbF9nZXRfYmUxNihwYWNrZXQgKyA3KSA9PSAwKQ0KPiA+IC0JCW5ldHdvcmtfbm9uY2VbMF0g PSAweDAzOyAvKiBQcm94eSBOb25jZSAqLw0KPiA+ICsJaWYgKGN0bCAmJiBwcm94eSkNCj4gPiAr CQltZXNoX2NyeXB0b19wcm94eV9ub25jZShzZXEsIHNyYywgaXZfaW5kZXgsIG5vbmNlKTsNCj4g PiAgCWVsc2UNCj4gPiAtCQkvKiBDVEwgKyBUVEwgKi8NCj4gPiAtCQluZXR3b3JrX25vbmNlWzFd ID0gcGFja2V0WzFdOw0KPiA+IC0NCj4gPiAtCS8qIFNlcSBOdW0gKi8NCj4gPiAtCW5ldHdvcmtf bm9uY2VbMl0gPSBwYWNrZXRbMl07DQo+ID4gLQluZXR3b3JrX25vbmNlWzNdID0gcGFja2V0WzNd Ow0KPiA+IC0JbmV0d29ya19ub25jZVs0XSA9IHBhY2tldFs0XTsNCj4gPiAtDQo+ID4gLQkvKiBT UkMgKi8NCj4gPiAtCW5ldHdvcmtfbm9uY2VbNV0gPSBwYWNrZXRbNV07DQo+ID4gLQluZXR3b3Jr X25vbmNlWzZdID0gcGFja2V0WzZdOw0KPiA+IC0NCj4gPiAtCS8qIERTVCBub3QgYXZhaWxhYmxl ICovDQo+ID4gLQluZXR3b3JrX25vbmNlWzddID0gMDsNCj4gPiAtCW5ldHdvcmtfbm9uY2VbOF0g PSAwOw0KPiA+IC0NCj4gPiAtCS8qIElWIEluZGV4ICovDQo+ID4gLQlsX3B1dF9iZTMyKGl2X2lu ZGV4LCBuZXR3b3JrX25vbmNlICsgOSk7DQo+ID4gKwkJbWVzaF9jcnlwdG9fbmV0d29ya19ub25j ZShjdGwsIHR0bCwgc2VxLCBzcmMsIGl2X2luZGV4LCBub25jZSk7DQo+ID4gIA0KPiA+ICAJLyog Q2hlY2sgZm9yIExvbmcgbmV0LU1JQyAqLw0KPiA+IC0JaWYgKHBhY2tldFsxXSAmIENUTCkgew0K PiA+IC0JCWlmICghbWVzaF9jcnlwdG9fYWVzX2NjbV9lbmNyeXB0KG5ldHdvcmtfbm9uY2UsIG5l dHdvcmtfa2V5LA0KPiA+ICsJaWYgKGN0bCkgew0KPiA+ICsJCWlmICghbWVzaF9jcnlwdG9fYWVz X2NjbV9lbmNyeXB0KG5vbmNlLCBuZXR3b3JrX2tleSwNCj4gPiAgCQkJCQlOVUxMLCAwLA0KPiA+ ICAJCQkJCXBhY2tldCArIDcsIHBhY2tldF9sZW4gLSA3IC0gOCwNCj4gPiAgCQkJCQlwYWNrZXQg KyA3LCBOVUxMLCA4KSkNCj4gPiAgCQkJcmV0dXJuIGZhbHNlOw0KPiA+ICAJfSBlbHNlIHsNCj4g PiAtCQlpZiAoIW1lc2hfY3J5cHRvX2Flc19jY21fZW5jcnlwdChuZXR3b3JrX25vbmNlLCBuZXR3 b3JrX2tleSwNCj4gPiArCQlpZiAoIW1lc2hfY3J5cHRvX2Flc19jY21fZW5jcnlwdChub25jZSwg bmV0d29ya19rZXksDQo+ID4gIAkJCQkJTlVMTCwgMCwNCj4gPiAgCQkJCQlwYWNrZXQgKyA3LCBw YWNrZXRfbGVuIC0gNyAtIDQsDQo+ID4gIAkJCQkJcGFja2V0ICsgNywgTlVMTCwgNCkpDQo+ID4g IAkJCXJldHVybiBmYWxzZTsNCj4gPiAgCX0NCj4gPiAgDQo+ID4gLQlsX3B1dF9iZTMyKGl2X2lu ZGV4LCBwcml2YWN5X2NvdW50ZXIgKyA1KTsNCj4gPiAtCW1lbWNweShwcml2YWN5X2NvdW50ZXIg KyA5LCBwYWNrZXQgKyA3LCA3KTsNCj4gPiAtDQo+ID4gLQlpZiAoIWFlc19lY2Jfb25lKHByaXZh Y3lfa2V5LCBwcml2YWN5X2NvdW50ZXIsIHRtcCkpDQo+ID4gLQkJcmV0dXJuIGZhbHNlOw0KPiA+ IC0NCj4gPiAtCWZvciAoaSA9IDA7IGkgPCA2OyBpKyspDQo+ID4gLQkJcGFja2V0WzEgKyBpXSBe PSB0bXBbaV07DQo+ID4gLQ0KPiA+ICAJcmV0dXJuIHRydWU7DQo+ID4gIH0NCj4gPiAgDQo+ID4g LWJvb2wgbWVzaF9jcnlwdG9fcGFja2V0X2RlY29kZShjb25zdCB1aW50OF90ICpwYWNrZXQsIHVp bnQ4X3QgcGFja2V0X2xlbiwNCj4gPiAtCQkJCWJvb2wgcHJveHksIHVpbnQ4X3QgKm91dCwgdWlu dDMyX3QgaXZfaW5kZXgsDQo+ID4gK2Jvb2wgbWVzaF9jcnlwdG9fcGFja2V0X2VuY29kZSh1aW50 OF90ICpwYWNrZXQsIHVpbnQ4X3QgcGFja2V0X2xlbiwNCj4gPiArCQkJCXVpbnQzMl90IGl2X2lu ZGV4LA0KPiA+ICAJCQkJY29uc3QgdWludDhfdCBuZXR3b3JrX2tleVsxNl0sDQo+ID4gIAkJCQlj b25zdCB1aW50OF90IHByaXZhY3lfa2V5WzE2XSkNCj4gPiAgew0KPiA+IC0JdWludDhfdCBwcml2 YWN5X2NvdW50ZXJbMTZdID0geyAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCB9Ow0KPiA+ IC0JdWludDhfdCBuZXR3b3JrX25vbmNlWzEzXSA9IHsgMHgwMCwgMHgwMCwgfTsNCj4gPiAtCXVp bnQ4X3QgdG1wWzE2XTsNCj4gPiArCWJvb2wgY3RsOw0KPiA+ICsJdWludDhfdCB0dGw7DQo+ID4g Kwl1aW50MzJfdCBzZXE7DQo+ID4gIAl1aW50MTZfdCBzcmM7DQo+ID4gLQlpbnQgaTsNCj4gPiAr CXVpbnQxNl90IGRzdDsNCj4gPiAgDQo+ID4gLQlpZiAocGFja2V0X2xlbiA8IDE0KQ0KPiA+ICsJ aWYgKCFuZXR3b3JrX2hlYWRlcl9wYXJzZShwYWNrZXQsIHBhY2tldF9sZW4sDQo+ID4gKwkJCQkJ CSZjdGwsICZ0dGwsICZzZXEsICZzcmMsICZkc3QpKQ0KPiA+ICAJCXJldHVybiBmYWxzZTsNCj4g PiAgDQo+ID4gLQlsX3B1dF9iZTMyKGl2X2luZGV4LCBwcml2YWN5X2NvdW50ZXIgKyA1KTsNCj4g PiAtCW1lbWNweShwcml2YWN5X2NvdW50ZXIgKyA5LCBwYWNrZXQgKyA3LCA3KTsNCj4gPiArCWlm ICghbWVzaF9jcnlwdG9fcGFja2V0X2VuY3J5cHQocGFja2V0LCBwYWNrZXRfbGVuLCBuZXR3b3Jr X2tleSwNCj4gPiArCQkJCQkJCWl2X2luZGV4LCAhZHN0LA0KPiA+ICsJCQkJCQkJY3RsLCB0dGws IHNlcSwgc3JjKSkNCj4gPiAgDQo+ID4gLQlpZiAoIWFlc19lY2Jfb25lKHByaXZhY3lfa2V5LCBw cml2YWN5X2NvdW50ZXIsIHRtcCkpDQo+ID4gIAkJcmV0dXJuIGZhbHNlOw0KPiA+ICANCj4gPiAt CW1lbWNweShvdXQsIHBhY2tldCwgcGFja2V0X2xlbik7DQo+ID4gLQlmb3IgKGkgPSAwOyBpIDwg NjsgaSsrKQ0KPiA+IC0JCW91dFsxICsgaV0gXj0gdG1wW2ldOw0KPiA+ICsJcmV0dXJuIG1lc2hf Y3J5cHRvX25ldHdvcmtfb2JmdXNjYXRlKHBhY2tldCwgcHJpdmFjeV9rZXksIGl2X2luZGV4LA0K PiA+ICsJCQkJCQkJY3RsLCB0dGwsIHNlcSwgc3JjKTsNCj4gPiArfQ0KPiA+ICANCj4gPiAtCXNy YyA9IGxfZ2V0X2JlMTYob3V0ICsgNSk7DQo+ID4gK3N0YXRpYyBib29sIG1lc2hfY3J5cHRvX3Bh Y2tldF9kZWNyeXB0KHVpbnQ4X3QgKnBhY2tldCwgdWludDhfdCBwYWNrZXRfbGVuLA0KPiA+ICsJ CQkJY29uc3QgdWludDhfdCBuZXR3b3JrX2tleVsxNl0sDQo+ID4gKwkJCQl1aW50MzJfdCBpdl9p bmRleCwgYm9vbCBwcm94eSwNCj4gPiArCQkJCWJvb2wgY3RsLCB1aW50OF90IHR0bCwgdWludDMy X3Qgc2VxLA0KPiA+ICsJCQkJdWludDE2X3Qgc3JjKQ0KPiA+ICt7DQo+ID4gKwl1aW50OF90IG5v bmNlWzEzXTsNCj4gPiAgDQo+ID4gIAkvKiBQcmUtY2hlY2sgU1JDIGFkZHJlc3MgZm9yIGlsbGVn YWwgdmFsdWVzICovDQo+ID4gLQlpZiAoIXNyYyB8fCBzcmMgPj0gMHg4MDAwKQ0KPiA+ICsJaWYg KCFJU19VTklDQVNUKHNyYykpDQo+ID4gIAkJcmV0dXJuIGZhbHNlOw0KPiA+ICANCj4gPiAgCS8q IERldGVjdCBQcm94eSBwYWNrZXQgYnkgQ1RMID09IHRydWUgJiYgcHJveHkgPT0gdHJ1ZSAqLw0K PiA+IC0JaWYgKChvdXRbMV0gJiBDVEwpICYmIHByb3h5KQ0KPiA+IC0JCW5ldHdvcmtfbm9uY2Vb MF0gPSAweDAzOyAvKiBQcm94eSBOb25jZSAqLw0KPiA+ICsJaWYgKGN0bCAmIHByb3h5KQ0KPiA+ ICsJCW1lc2hfY3J5cHRvX3Byb3h5X25vbmNlKHNlcSwgc3JjLCBpdl9pbmRleCwgbm9uY2UpOw0K PiA+ICAJZWxzZQ0KPiA+IC0JCS8qIENUTCArIFRUTCAqLw0KPiA+IC0JCW5ldHdvcmtfbm9uY2Vb MV0gPSBvdXRbMV07DQo+ID4gLQ0KPiA+IC0JLyogU2VxIE51bSAqLw0KPiA+IC0JbmV0d29ya19u b25jZVsyXSA9IG91dFsyXTsNCj4gPiAtCW5ldHdvcmtfbm9uY2VbM10gPSBvdXRbM107DQo+ID4g LQluZXR3b3JrX25vbmNlWzRdID0gb3V0WzRdOw0KPiA+IC0NCj4gPiAtCS8qIFNSQyAqLw0KPiA+ IC0JbmV0d29ya19ub25jZVs1XSA9IG91dFs1XTsNCj4gPiAtCW5ldHdvcmtfbm9uY2VbNl0gPSBv dXRbNl07DQo+ID4gLQ0KPiA+IC0JLyogRFNUIG5vdCBhdmFpbGFibGUgKi8NCj4gPiAtCW5ldHdv cmtfbm9uY2VbN10gPSAwOw0KPiA+IC0JbmV0d29ya19ub25jZVs4XSA9IDA7DQo+ID4gLQ0KPiA+ IC0JLyogSVYgSW5kZXggKi8NCj4gPiAtCWxfcHV0X2JlMzIoaXZfaW5kZXgsIG5ldHdvcmtfbm9u Y2UgKyA5KTsNCj4gPiArCQltZXNoX2NyeXB0b19uZXR3b3JrX25vbmNlKGN0bCwgdHRsLCBzZXEs IHNyYywgaXZfaW5kZXgsIG5vbmNlKTsNCj4gPiAgDQo+ID4gIAkvKiBDaGVjayBmb3IgTG9uZyBN SUMgKi8NCj4gPiAtCWlmIChvdXRbMV0gJiBDVEwpIHsNCj4gPiArCWlmIChjdGwpIHsNCj4gPiAg CQl1aW50NjRfdCBtaWM7DQo+ID4gIA0KPiA+IC0JCWlmICghbWVzaF9jcnlwdG9fYWVzX2NjbV9k ZWNyeXB0KG5ldHdvcmtfbm9uY2UsIG5ldHdvcmtfa2V5LA0KPiA+IC0JCQkJCU5VTEwsIDAsIHBh Y2tldCArIDcsIHBhY2tldF9sZW4gLSA3LA0KPiA+IC0JCQkJCW91dCArIDcsICZtaWMsIHNpemVv ZihtaWMpKSkNCj4gPiArCQlpZiAoIW1lc2hfY3J5cHRvX2Flc19jY21fZGVjcnlwdChub25jZSwg bmV0d29ya19rZXksDQo+ID4gKwkJCQkJTlVMTCwgMCwNCj4gPiArCQkJCQlwYWNrZXQgKyA3LCBw YWNrZXRfbGVuIC0gNywNCj4gPiArCQkJCQlwYWNrZXQgKyA3LCAmbWljLCBzaXplb2YobWljKSkp DQo+ID4gIAkJCXJldHVybiBmYWxzZTsNCj4gPiAgDQo+ID4gLQkJbWljIF49IGxfZ2V0X2JlNjQo b3V0ICsgcGFja2V0X2xlbiAtIDgpOw0KPiA+IC0JCWxfcHV0X2JlNjQobWljLCBvdXQgKyBwYWNr ZXRfbGVuIC0gOCk7DQo+ID4gKwkJbWljIF49IGxfZ2V0X2JlNjQocGFja2V0ICsgcGFja2V0X2xl biAtIDgpOw0KPiA+ICsJCWxfcHV0X2JlNjQobWljLCBwYWNrZXQgKyBwYWNrZXRfbGVuIC0gOCk7 DQo+ID4gIA0KPiA+ICAJCWlmIChtaWMpDQo+ID4gIAkJCXJldHVybiBmYWxzZTsNCj4gPiAgCX0g ZWxzZSB7DQo+ID4gIAkJdWludDMyX3QgbWljOw0KPiA+ICANCj4gPiAtCQlpZiAoIW1lc2hfY3J5 cHRvX2Flc19jY21fZGVjcnlwdChuZXR3b3JrX25vbmNlLCBuZXR3b3JrX2tleSwNCj4gPiAtCQkJ CQlOVUxMLCAwLCBwYWNrZXQgKyA3LCBwYWNrZXRfbGVuIC0gNywNCj4gPiAtCQkJCQlvdXQgKyA3 LCAmbWljLCBzaXplb2YobWljKSkpDQo+ID4gKwkJaWYgKCFtZXNoX2NyeXB0b19hZXNfY2NtX2Rl Y3J5cHQobm9uY2UsIG5ldHdvcmtfa2V5LA0KPiA+ICsJCQkJCU5VTEwsIDAsDQo+ID4gKwkJCQkJ cGFja2V0ICsgNywgcGFja2V0X2xlbiAtIDcsDQo+ID4gKwkJCQkJcGFja2V0ICsgNywgJm1pYywg c2l6ZW9mKG1pYykpKQ0KPiA+ICAJCQlyZXR1cm4gZmFsc2U7DQo+ID4gIA0KPiA+IC0JCW1pYyBe PSBsX2dldF9iZTMyKG91dCArIHBhY2tldF9sZW4gLSA0KTsNCj4gPiAtCQlsX3B1dF9iZTMyKG1p Yywgb3V0ICsgcGFja2V0X2xlbiAtIDQpOw0KPiA+ICsJCW1pYyBePSBsX2dldF9iZTMyKHBhY2tl dCArIHBhY2tldF9sZW4gLSA0KTsNCj4gPiArCQlsX3B1dF9iZTMyKG1pYywgcGFja2V0ICsgcGFj a2V0X2xlbiAtIDQpOw0KPiA+ICANCj4gPiAgCQlpZiAobWljKQ0KPiA+ICAJCQlyZXR1cm4gZmFs c2U7DQo+ID4gQEAgLTEwNDgsNiArOTEzLDMwIEBAIGJvb2wgbWVzaF9jcnlwdG9fcGFja2V0X2Rl Y29kZShjb25zdCB1aW50OF90ICpwYWNrZXQsIHVpbnQ4X3QgcGFja2V0X2xlbiwNCj4gPiAgCXJl dHVybiB0cnVlOw0KPiA+ICB9DQo+ID4gIA0KPiA+ICtib29sIG1lc2hfY3J5cHRvX3BhY2tldF9k ZWNvZGUoY29uc3QgdWludDhfdCAqcGFja2V0LCB1aW50OF90IHBhY2tldF9sZW4sDQo+ID4gKwkJ CQlib29sIHByb3h5LCB1aW50OF90ICpvdXQsIHVpbnQzMl90IGl2X2luZGV4LA0KPiA+ICsJCQkJ Y29uc3QgdWludDhfdCBuZXR3b3JrX2tleVsxNl0sDQo+ID4gKwkJCQljb25zdCB1aW50OF90IHBy aXZhY3lfa2V5WzE2XSkNCj4gPiArew0KPiA+ICsJYm9vbCBjdGw7DQo+ID4gKwl1aW50OF90IHR0 bDsNCj4gPiArCXVpbnQzMl90IHNlcTsNCj4gPiArCXVpbnQxNl90IHNyYzsNCj4gPiArDQo+ID4g KwlpZiAocGFja2V0X2xlbiA8IDE0KQ0KPiA+ICsJCXJldHVybiBmYWxzZTsNCj4gPiArDQo+ID4g KwltZW1jcHkob3V0LCBwYWNrZXQsIHBhY2tldF9sZW4pOw0KPiA+ICsNCj4gPiArCWlmICghbWVz aF9jcnlwdG9fbmV0d29ya19jbGFyaWZ5KG91dCwgcHJpdmFjeV9rZXksIGl2X2luZGV4LA0KPiA+ ICsJCQkJCQkmY3RsLCAmdHRsLCAmc2VxLCAmc3JjKSkNCj4gPiArCQlyZXR1cm4gZmFsc2U7DQo+ ID4gKw0KPiA+ICsJcmV0dXJuIG1lc2hfY3J5cHRvX3BhY2tldF9kZWNyeXB0KG91dCwgcGFja2V0 X2xlbiwgbmV0d29ya19rZXksDQo+ID4gKwkJCQkJCQlpdl9pbmRleCwgcHJveHksDQo+ID4gKwkJ CQkJCQljdGwsIHR0bCwgc2VxLCBzcmMpOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICBib29sIG1lc2hf Y3J5cHRvX3BhY2tldF9sYWJlbCh1aW50OF90ICpwYWNrZXQsIHVpbnQ4X3QgcGFja2V0X2xlbiwN Cj4gPiAgCQkJCXVpbnQxNl90IGl2X2luZGV4LCB1aW50OF90IG5ldHdvcmtfaWQpDQo+ID4gIHsN Cj4gPiBkaWZmIC0tZ2l0IGEvbWVzaC9jcnlwdG8uaCBiL21lc2gvY3J5cHRvLmgNCj4gPiBpbmRl eCBlNWNlODQwYjQuLjdkM2Y4OWNkZSAxMDA2NDQNCj4gPiAtLS0gYS9tZXNoL2NyeXB0by5oDQo+ ID4gKysrIGIvbWVzaC9jcnlwdG8uaA0KPiA+IEBAIC0xOSw2ICsxOSw3IEBADQo+ID4gIA0KPiA+ ICAjaW5jbHVkZSA8c3RkYm9vbC5oPg0KPiA+ICAjaW5jbHVkZSA8c3RkaW50Lmg+DQo+ID4gKyNp bmNsdWRlIDxzdGRsaWIuaD4NCj4gPiAgDQo+ID4gIGJvb2wgbWVzaF9jcnlwdG9fYWVzX2NjbV9l bmNyeXB0KGNvbnN0IHVpbnQ4X3Qgbm9uY2VbMTNdLCBjb25zdCB1aW50OF90IGtleVsxNl0sDQo+ ID4gIAkJCQkJY29uc3QgdWludDhfdCAqYWFkLCB1aW50MTZfdCBhYWRfbGVuLA0KPiA+IEBAIC00 MSw0MCArNDIsNiBAQCBib29sIG1lc2hfY3J5cHRvX2JlYWNvbl9jbWFjKGNvbnN0IHVpbnQ4X3Qg ZW5jcnlwdGlvbl9rZXlbMTZdLA0KPiA+ICAJCQkJY29uc3QgdWludDhfdCBuZXR3b3JrX2lkWzE2 XSwNCj4gPiAgCQkJCXVpbnQzMl90IGl2X2luZGV4LCBib29sIGtyLA0KPiA+ICAJCQkJYm9vbCBp dSwgdWludDY0X3QgKmNtYWMpOw0KPiA+IC1ib29sIG1lc2hfY3J5cHRvX25ldHdvcmtfbm9uY2Uo Ym9vbCBmcm5kLCB1aW50OF90IHR0bCwgdWludDMyX3Qgc2VxLA0KPiA+IC0JCQkJdWludDE2X3Qg c3JjLCB1aW50MzJfdCBpdl9pbmRleCwNCj4gPiAtCQkJCXVpbnQ4X3Qgbm9uY2VbMTNdKTsNCj4g PiAtYm9vbCBtZXNoX2NyeXB0b19uZXR3b3JrX2VuY3J5cHQoYm9vbCBjdGwsIHVpbnQ4X3QgdHRs LA0KPiA+IC0JCQkJdWludDMyX3Qgc2VxLCB1aW50MTZfdCBzcmMsDQo+ID4gLQkJCQl1aW50MzJf dCBpdl9pbmRleCwNCj4gPiAtCQkJCWNvbnN0IHVpbnQ4X3QgbmV0X2tleVsxNl0sDQo+ID4gLQkJ CQljb25zdCB1aW50OF90ICplbmNfbXNnLCB1aW50OF90IGVuY19tc2dfbGVuLA0KPiA+IC0JCQkJ dWludDhfdCAqb3V0LCB2b2lkICpuZXRfbWljKTsNCj4gPiAtYm9vbCBtZXNoX2NyeXB0b19uZXR3 b3JrX2RlY3J5cHQoYm9vbCBmcm5kLCB1aW50OF90IHR0bCwNCj4gPiAtCQkJCXVpbnQzMl90IHNl cSwgdWludDE2X3Qgc3JjLA0KPiA+IC0JCQkJdWludDMyX3QgaXZfaW5kZXgsDQo+ID4gLQkJCQlj b25zdCB1aW50OF90IG5ldF9rZXlbMTZdLA0KPiA+IC0JCQkJY29uc3QgdWludDhfdCAqZW5jX21z ZywgdWludDhfdCBlbmNfbXNnX2xlbiwNCj4gPiAtCQkJCXVpbnQ4X3QgKm91dCwgdm9pZCAqbmV0 X21pYywgc2l6ZV90IG1pY19zaXplKTsNCj4gPiAtYm9vbCBtZXNoX2NyeXB0b19hcHBsaWNhdGlv bl9ub25jZSh1aW50MzJfdCBzZXEsIHVpbnQxNl90IHNyYywNCj4gPiAtCQkJCXVpbnQxNl90IGRz dCwgdWludDMyX3QgaXZfaW5kZXgsDQo+ID4gLQkJCQlib29sIGFzem1pYywgdWludDhfdCBub25j ZVsxM10pOw0KPiA+IC1ib29sIG1lc2hfY3J5cHRvX2RldmljZV9ub25jZSh1aW50MzJfdCBzZXEs IHVpbnQxNl90IHNyYywNCj4gPiAtCQkJCXVpbnQxNl90IGRzdCwgdWludDMyX3QgaXZfaW5kZXgs DQo+ID4gLQkJCQlib29sIGFzem1pYywgdWludDhfdCBub25jZVsxM10pOw0KPiA+IC1ib29sIG1l c2hfY3J5cHRvX2FwcGxpY2F0aW9uX2VuY3J5cHQodWludDhfdCBha2YsIHVpbnQzMl90IHNlcSwg dWludDE2X3Qgc3JjLA0KPiA+IC0JCQkJCXVpbnQxNl90IGRzdCwgdWludDMyX3QgaXZfaW5kZXgs DQo+ID4gLQkJCQkJY29uc3QgdWludDhfdCBhcHBfa2V5WzE2XSwNCj4gPiAtCQkJCQljb25zdCB1 aW50OF90ICphYWQsIHVpbnQ4X3QgYWFkX2xlbiwNCj4gPiAtCQkJCQljb25zdCB1aW50OF90ICpt c2csIHVpbnQ4X3QgbXNnX2xlbiwNCj4gPiAtCQkJCQl1aW50OF90ICpvdXQsDQo+ID4gLQkJCQkJ dm9pZCAqYXBwX21pYywgc2l6ZV90IG1pY19zaXplKTsNCj4gPiAtYm9vbCBtZXNoX2NyeXB0b19h cHBsaWNhdGlvbl9kZWNyeXB0KHVpbnQ4X3QgYWtmLCB1aW50MzJfdCBzZXEsIHVpbnQxNl90IHNy YywNCj4gPiAtCQkJCXVpbnQxNl90IGRzdCwgdWludDMyX3QgaXZfaW5kZXgsDQo+ID4gLQkJCQlj b25zdCB1aW50OF90IGFwcF9rZXlbMTZdLA0KPiA+IC0JCQkJY29uc3QgdWludDhfdCAqYWFkLCB1 aW50OF90IGFhZF9sZW4sDQo+ID4gLQkJCQljb25zdCB1aW50OF90ICplbmNfbXNnLCB1aW50OF90 IGVuY19tc2dfbGVuLA0KPiA+IC0JCQkJdWludDhfdCAqb3V0LCB2b2lkICphcHBfbWljLCBzaXpl X3QgbWljX3NpemUpOw0KPiA+ICBib29sIG1lc2hfY3J5cHRvX2RldmljZV9rZXkoY29uc3QgdWlu dDhfdCBzZWNyZXRbMzJdLA0KPiA+ICAJCQkJCQljb25zdCB1aW50OF90IHNhbHRbMTZdLA0KPiA+ ICAJCQkJCQl1aW50OF90IGRldmljZV9rZXlbMTZdKTsNCj4gPiBAQCAtMTAyLDE5ICs2OSw2IEBA IGJvb2wgbWVzaF9jcnlwdG9fcHJvdl9jb25mX2tleShjb25zdCB1aW50OF90IHNlY3JldFszMl0s DQo+ID4gIGJvb2wgbWVzaF9jcnlwdG9fc2Vzc2lvbl9rZXkoY29uc3QgdWludDhfdCBzZWNyZXRb MzJdLA0KPiA+ICAJCQkJCWNvbnN0IHVpbnQ4X3Qgc2FsdFsxNl0sDQo+ID4gIAkJCQkJdWludDhf dCBzZXNzaW9uX2tleVsxNl0pOw0KPiA+IC1ib29sIG1lc2hfY3J5cHRvX3ByaXZhY3lfY291bnRl cih1aW50MzJfdCBpdl9pbmRleCwNCj4gPiAtCQkJCQkJY29uc3QgdWludDhfdCAqcGF5bG9hZCwN Cj4gPiAtCQkJCQkJdWludDhfdCBwcml2YWN5X2NvdW50ZXJbMTZdKTsNCj4gPiAtYm9vbCBtZXNo X2NyeXB0b19uZXR3b3JrX29iZnVzY2F0ZShjb25zdCB1aW50OF90IHByaXZhY3lfa2V5WzE2XSwN Cj4gPiAtCQkJCQljb25zdCB1aW50OF90IHByaXZhY3lfY291bnRlclsxNl0sDQo+ID4gLQkJCQkJ Ym9vbCBjdGwsIHVpbnQ4X3QgdHRsLCB1aW50MzJfdCBzZXEsDQo+ID4gLQkJCQkJdWludDE2X3Qg c3JjLCB1aW50OF90ICpvdXQpOw0KPiA+IC1ib29sIG1lc2hfY3J5cHRvX25ldHdvcmtfY2xhcmlm eShjb25zdCB1aW50OF90IHByaXZhY3lfa2V5WzE2XSwNCj4gPiAtCQkJCWNvbnN0IHVpbnQ4X3Qg cHJpdmFjeV9jb3VudGVyWzE2XSwNCj4gPiAtCQkJCWNvbnN0IHVpbnQ4X3QgbmV0X2hkcls2XSwN Cj4gPiAtCQkJCWJvb2wgKmN0bCwgdWludDhfdCAqdHRsLA0KPiA+IC0JCQkJdWludDMyX3QgKnNl cSwgdWludDE2X3QgKnNyYyk7DQo+ID4gLQ0KPiA+ICBib29sIG1lc2hfY3J5cHRvX3BhY2tldF9i dWlsZChib29sIGN0bCwgdWludDhfdCB0dGwsDQo+ID4gIAkJCQl1aW50MzJfdCBzZXEsDQo+ID4g IAkJCQl1aW50MTZfdCBzcmMsIHVpbnQxNl90IGRzdCwNCj4gPiBAQCAtMTQ2LDggKzEwMCw4IEBA IGJvb2wgbWVzaF9jcnlwdG9fcGF5bG9hZF9kZWNyeXB0KHVpbnQ4X3QgKmFhZCwgdWludDE2X3Qg YWFkX2xlbiwNCj4gPiAgCQkJCXVpbnQ4X3QgKm91dCwNCj4gPiAgCQkJCWNvbnN0IHVpbnQ4X3Qg YXBwbGljYXRpb25fa2V5WzE2XSk7DQo+ID4gIGJvb2wgbWVzaF9jcnlwdG9fcGFja2V0X2VuY29k ZSh1aW50OF90ICpwYWNrZXQsIHVpbnQ4X3QgcGFja2V0X2xlbiwNCj4gPiAtCQkJCWNvbnN0IHVp bnQ4X3QgbmV0d29ya19rZXlbMTZdLA0KPiA+ICAJCQkJdWludDMyX3QgaXZfaW5kZXgsDQo+ID4g KwkJCQljb25zdCB1aW50OF90IG5ldHdvcmtfa2V5WzE2XSwNCj4gPiAgCQkJCWNvbnN0IHVpbnQ4 X3QgcHJpdmFjeV9rZXlbMTZdKTsNCj4gPiAgYm9vbCBtZXNoX2NyeXB0b19wYWNrZXRfZGVjb2Rl KGNvbnN0IHVpbnQ4X3QgKnBhY2tldCwgdWludDhfdCBwYWNrZXRfbGVuLA0KPiA+ICAJCQkJYm9v bCBwcm94eSwgdWludDhfdCAqb3V0LCB1aW50MzJfdCBpdl9pbmRleCwNCj4gPiBkaWZmIC0tZ2l0 IGEvbWVzaC9uZXQta2V5cy5jIGIvbWVzaC9uZXQta2V5cy5jDQo+ID4gaW5kZXggNjgzYTkyNGM0 Li5mN2ViMmNhNjggMTAwNjQ0DQo+ID4gLS0tIGEvbWVzaC9uZXQta2V5cy5jDQo+ID4gKysrIGIv bWVzaC9uZXQta2V5cy5jDQo+ID4gQEAgLTI2Myw3ICsyNjMsNyBAQCBib29sIG5ldF9rZXlfZW5j cnlwdCh1aW50MzJfdCBpZCwgdWludDMyX3QgaXZfaW5kZXgsIHVpbnQ4X3QgKnBrdCwgc2l6ZV90 IGxlbikNCj4gPiAgCWlmICgha2V5KQ0KPiA+ICAJCXJldHVybiBmYWxzZTsNCj4gPiAgDQo+ID4g LQlyZXN1bHQgPSBtZXNoX2NyeXB0b19wYWNrZXRfZW5jb2RlKHBrdCwgbGVuLCBrZXktPmVuY3J5 cHQsIGl2X2luZGV4LA0KPiA+ICsJcmVzdWx0ID0gbWVzaF9jcnlwdG9fcGFja2V0X2VuY29kZShw a3QsIGxlbiwgaXZfaW5kZXgsIGtleS0+ZW5jcnlwdCwNCj4gPiAgCQkJCQkJCWtleS0+cHJpdmFj eSk7DQo+ID4gIA0KPiA+ICAJaWYgKCFyZXN1bHQpDQo+ID4gZGlmZiAtLWdpdCBhL3VuaXQvdGVz dC1tZXNoLWNyeXB0by5jIGIvdW5pdC90ZXN0LW1lc2gtY3J5cHRvLmMNCj4gPiBpbmRleCAwMDQz YjBiMTAuLjNlY2IzZDAyNiAxMDA2NDQNCj4gPiAtLS0gYS91bml0L3Rlc3QtbWVzaC1jcnlwdG8u Yw0KPiA+ICsrKyBiL3VuaXQvdGVzdC1tZXNoLWNyeXB0by5jDQo+ID4gQEAgLTc4MCw4ICs3ODAs OCBAQCBzdGF0aWMgdm9pZCBjaGVja19lbmNyeXB0X3NlZ21lbnQoY29uc3Qgc3RydWN0IG1lc2hf Y3J5cHRvX3Rlc3QgKmtleXMsDQo+ID4gIAl1aW50OF90IHByaXZfcmFuZFsxNl07DQo+ID4gIAl1 aW50OF90IHBhY2tldFsyOV07DQo+ID4gIAl1aW50OF90IHBhY2tldF9sZW47DQo+ID4gLQl1aW50 NjRfdCBuZXRfbWljNjQ7DQo+ID4gLQl1aW50MzJfdCBoZHIsIG5ldF9taWMzMjsNCj4gPiArCXVp bnQzMl90IGhkcjsNCj4gPiArCXVpbnQ2NF90IG5ldF9taWM2NCwgbmV0X21pYzMyOw0KPiA+ICAJ c2l6ZV90IG5ldF9tc2dfbGVuOw0KPiA+ICAJdWludDhfdCBrZXlfYWlkID0ga2V5cy0+a2V5X2Fp ZCB8IChrZXlzLT5ha2YgPyBLRVlfSURfQUtGIDogMHgwMCk7DQo+ID4gIA0KPiA+IEBAIC04NTcs MTMgKzg1NywxMiBAQCBzdGF0aWMgdm9pZCBjaGVja19lbmNyeXB0X3NlZ21lbnQoY29uc3Qgc3Ry dWN0IG1lc2hfY3J5cHRvX3Rlc3QgKmtleXMsDQo+ID4gIAluZXRfbXNnX2xlbiA9IGxlbiArIDI7 DQo+ID4gIAlzaG93X2RhdGEoIlRyYW5zcG9ydFBheWxvYWQiLCA3LCBwYWNrZXQgKyA3LCBuZXRf bXNnX2xlbik7DQo+ID4gIA0KPiA+IC0JbWVzaF9jcnlwdG9fbmV0d29ya19lbmNyeXB0KGtleXMt PmN0bCwNCj4gPiAtCQkJa2V5cy0+bmV0X3R0bCwga2V5cy0+bmV0X3NlcVswXSwNCj4gPiAtCQkJ a2V5cy0+bmV0X3NyYywNCj4gPiAtCQkJa2V5cy0+aXZfaW5kZXgsIGVuY19rZXksDQo+ID4gLQkJ CXBhY2tldCArIDcsIGxlbiArIDIsIHBhY2tldCArIDcsDQo+ID4gLQkJCWtleXMtPmN0bCA/ICh2 b2lkICopJm5ldF9taWM2NCA6DQo+ID4gLQkJCSh2b2lkICopJm5ldF9taWMzMik7DQo+ID4gKwlt ZXNoX2NyeXB0b19wYWNrZXRfZW5jcnlwdChwYWNrZXQsIHBhY2tldF9sZW4sDQo+ID4gKwkJCQkJ CWVuY19rZXksDQo+ID4gKwkJCQkJCWtleXMtPml2X2luZGV4LCBmYWxzZSwNCj4gPiArCQkJCQkJ a2V5cy0+Y3RsLCBrZXlzLT5uZXRfdHRsLA0KPiA+ICsJCQkJCQlrZXlzLT5uZXRfc2VxWzBdLA0K PiA+ICsJCQkJCQlrZXlzLT5uZXRfc3JjKTsNCj4gPiAgDQo+ID4gIAltZXNoX2NyeXB0b19wcml2 YWN5X2NvdW50ZXIoa2V5cy0+aXZfaW5kZXgsIHBhY2tldCArIDcsIHByaXZfcmFuZCk7DQo+ID4g IA0KPiA+IEBAIC04ODMsMjAgKzg4MiwyMiBAQCBzdGF0aWMgdm9pZCBjaGVja19lbmNyeXB0X3Nl Z21lbnQoY29uc3Qgc3RydWN0IG1lc2hfY3J5cHRvX3Rlc3QgKmtleXMsDQo+ID4gIAl2ZXJpZnlf ZGF0YSgiRW5jTmV0d29ya1BheWxvYWQiLCA3LCBrZXlzLT5uZXRfbXNnWzBdLA0KPiA+ICAJCQlw YWNrZXQgKyA3LCBuZXRfbXNnX2xlbik7DQo+ID4gIAlpZiAoa2V5cy0+Y3RsKSB7DQo+ID4gKwkJ bmV0X21pYzY0ID0gbF9nZXRfYmU2NChwYWNrZXQgKyA3ICsgbmV0X21zZ19sZW4pOw0KPiA+ICAJ CXZlcmlmeV91aW50NjQoIk5ldHdvcmtNSUMiLCA3ICsgbmV0X21zZ19sZW4sDQo+ID4gLQkJCQlr ZXlzLT5uZXRfbWljNjQsIG5ldF9taWM2NCk7DQo+ID4gKwkJCQkJCWtleXMtPm5ldF9taWM2NCwg bmV0X21pYzY0KTsNCj4gPiAgCQluZXRfbXNnX2xlbiArPSA4Ow0KPiA+ICAJfSBlbHNlIHsNCj4g PiArCQluZXRfbWljMzIgPSBsX2dldF9iZTMyKHBhY2tldCArIDcgKyBuZXRfbXNnX2xlbik7DQo+ ID4gIAkJdmVyaWZ5X3VpbnQzMigiTmV0d29ya01JQyIsIDcgKyBuZXRfbXNnX2xlbiwNCj4gPiAt CQkJCWtleXMtPm5ldF9taWMzMlswXSwgbmV0X21pYzMyKTsNCj4gPiArCQkJCQkJa2V5cy0+bmV0 X21pYzMyWzBdLCBuZXRfbWljMzIpOw0KPiA+ICAJCW5ldF9tc2dfbGVuICs9IDQ7DQo+ID4gIAl9 DQo+ID4gIA0KPiA+ICAJc2hvd19kYXRhKCJQcmVPYnNQYXlsb2FkIiwgMSwgcGFja2V0ICsgMSwg NiArIG5ldF9tc2dfbGVuKTsNCj4gPiAtCW1lc2hfY3J5cHRvX25ldHdvcmtfb2JmdXNjYXRlKHBy aXZfa2V5LCBwcml2X3JhbmQsDQo+ID4gLQkJCWtleXMtPmN0bCwNCj4gPiAtCQkJa2V5cy0+bmV0 X3R0bCwga2V5cy0+bmV0X3NlcVswXSwNCj4gPiAtCQkJa2V5cy0+bmV0X3NyYywgcGFja2V0ICsg MSk7DQo+ID4gKwltZXNoX2NyeXB0b19uZXR3b3JrX29iZnVzY2F0ZShwYWNrZXQsIHByaXZfa2V5 LA0KPiA+ICsJCQkJCWtleXMtPml2X2luZGV4LA0KPiA+ICsJCQkJCWtleXMtPmN0bCwga2V5cy0+ bmV0X3R0bCwNCj4gPiArCQkJCQlrZXlzLT5uZXRfc2VxWzBdLCBrZXlzLT5uZXRfc3JjKTsNCj4g PiAgCXNob3dfZGF0YSgiUG9zdE9ic1BheWxvYWQiLCAxLCBwYWNrZXQgKyAxLCA2ICsgbmV0X21z Z19sZW4pOw0KPiA+ICANCj4gPiAgCXBhY2tldFswXSA9IChrZXlzLT5pdl9pbmRleCAmIDB4MDEp IDw8IDcgfCBuaWQ7DQo+ID4gQEAgLTEwMTksMjUgKzEwMjAsMjMgQEAgc3RhdGljIHZvaWQgY2hl Y2tfZW5jcnlwdChjb25zdCBzdHJ1Y3QgbWVzaF9jcnlwdG9fdGVzdCAqa2V5cykNCj4gPiAgCQlp ZiAoa2V5cy0+c3ptaWMpIHsNCj4gPiAgCQkJc2VnX21heCA9IFNFR19NQVgoa2V5cy0+c2VnbWVu dGVkLCBhcHBfbXNnX2xlbiArIDgpOw0KPiA+ICAJCQllbmNfbXNnID0gbF9tYWxsb2MoYXBwX21z Z19sZW4gKyA4KTsNCj4gPiAtCQkJbWVzaF9jcnlwdG9fYXBwbGljYXRpb25fZW5jcnlwdChrZXlf YWlkLCBrZXlzLT5hcHBfc2VxLA0KPiA+IC0JCQkJCWtleXMtPm5ldF9zcmMsIGtleXMtPm5ldF9k c3QsDQo+ID4gLQkJCQkJa2V5cy0+aXZfaW5kZXgsDQo+ID4gLQkJCQkJa2V5cy0+YWtmID8gYXBw X2tleSA6IGRldl9rZXksDQo+ID4gLQkJCQkJYWFkLCBhYWRfbGVuLA0KPiA+IC0JCQkJCWFwcF9t c2csIGFwcF9tc2dfbGVuLA0KPiA+IC0JCQkJCWVuY19tc2csICZhcHBfbWljNjQsIHNpemVvZihh cHBfbWljNjQpKTsNCj4gPiAtCQkJbF9wdXRfYmU2NChhcHBfbWljNjQsIGVuY19tc2cgKyBhcHBf bXNnX2xlbik7DQo+ID4gKw0KPiA+ICsJCQltZXNoX2NyeXB0b19wYXlsb2FkX2VuY3J5cHQoYWFk LCBhcHBfbXNnLA0KPiA+ICsJCQkJCWVuY19tc2csIGFwcF9tc2dfbGVuLA0KPiA+ICsJCQkJCWtl eXMtPm5ldF9zcmMsIGtleXMtPm5ldF9kc3QsIGtleV9haWQsDQo+ID4gKwkJCQkJa2V5cy0+YXBw X3NlcSwga2V5cy0+aXZfaW5kZXgsDQo+ID4gKwkJCQkJa2V5cy0+c3ptaWMsDQo+ID4gKwkJCQkJ a2V5cy0+YWtmID8gYXBwX2tleSA6IGRldl9rZXkpOw0KPiA+ICAJCX0gZWxzZSB7DQo+ID4gIAkJ CXNlZ19tYXggPSBTRUdfTUFYKGtleXMtPnNlZ21lbnRlZCwgYXBwX21zZ19sZW4gKyA0KTsNCj4g PiAgCQkJZW5jX21zZyA9IGxfbWFsbG9jKGFwcF9tc2dfbGVuICsgNCk7DQo+ID4gLQkJCW1lc2hf Y3J5cHRvX2FwcGxpY2F0aW9uX2VuY3J5cHQoa2V5X2FpZCwga2V5cy0+YXBwX3NlcSwNCj4gPiAt CQkJCQlrZXlzLT5uZXRfc3JjLCBrZXlzLT5uZXRfZHN0LA0KPiA+IC0JCQkJCWtleXMtPml2X2lu ZGV4LA0KPiA+IC0JCQkJCWtleXMtPmFrZiA/IGFwcF9rZXkgOiBkZXZfa2V5LA0KPiA+IC0JCQkJ CWFhZCwgYWFkX2xlbiwNCj4gPiAtCQkJCQlhcHBfbXNnLCBhcHBfbXNnX2xlbiwNCj4gPiAtCQkJ CQllbmNfbXNnLCAmYXBwX21pYzMyLCBzaXplb2YoYXBwX21pYzMyKSk7DQo+ID4gLQkJCWxfcHV0 X2JlMzIoYXBwX21pYzMyLCBlbmNfbXNnICsgYXBwX21zZ19sZW4pOw0KPiA+ICsNCj4gPiArCQkJ bWVzaF9jcnlwdG9fcGF5bG9hZF9lbmNyeXB0KGFhZCwgYXBwX21zZywNCj4gPiArCQkJCQllbmNf bXNnLCBhcHBfbXNnX2xlbiwNCj4gPiArCQkJCQlrZXlzLT5uZXRfc3JjLCBrZXlzLT5uZXRfZHN0 LCBrZXlfYWlkLA0KPiA+ICsJCQkJCWtleXMtPmFwcF9zZXEsIGtleXMtPml2X2luZGV4LA0KPiA+ ICsJCQkJCWtleXMtPnN6bWljLA0KPiA+ICsJCQkJCWtleXMtPmFrZiA/IGFwcF9rZXkgOiBkZXZf a2V5KTsNCj4gPiAgCQl9DQo+ID4gIA0KPiA+ICAJCWlmIChrZXlzLT5kZXZfa2V5ICYmICFrZXlz LT5ha2YpDQo+ID4gQEAgLTEwNTcsMTAgKzEwNTYsMTIgQEAgc3RhdGljIHZvaWQgY2hlY2tfZW5j cnlwdChjb25zdCBzdHJ1Y3QgbWVzaF9jcnlwdG9fdGVzdCAqa2V5cykNCj4gPiAgCQl2ZXJpZnlf ZGF0YSgiRW5jcnlwdGVkQXBwUGF5bG9hZCIsIDAsIGtleXMtPmVuY19tc2csIGVuY19tc2csDQo+ ID4gIAkJCQkJCQkJYXBwX21zZ19sZW4pOw0KPiA+ICAJCWlmIChrZXlzLT5zem1pYykgew0KPiA+ ICsJCQlhcHBfbWljNjQgPSBsX2dldF9iZTY0KGVuY19tc2cgKyBhcHBfbXNnX2xlbik7DQo+ID4g IAkJCXZlcmlmeV91aW50NjQoIkFwcGxpY2F0aW9uTUlDIiwgYXBwX21zZ19sZW4sDQo+ID4gIAkJ CQkJCWtleXMtPmFwcF9taWM2NCwgYXBwX21pYzY0KTsNCj4gPiAgCQkJYXBwX21zZ19sZW4gKz0g ODsNCj4gPiAgCQl9IGVsc2Ugew0KPiA+ICsJCQlhcHBfbWljMzIgPSBsX2dldF9iZTMyKGVuY19t c2cgKyBhcHBfbXNnX2xlbik7DQo+ID4gIAkJCXZlcmlmeV91aW50MzIoIkFwcGxpY2F0aW9uTUlD IiwgYXBwX21zZ19sZW4sDQo+ID4gIAkJCQkJCWtleXMtPmFwcF9taWMzMiwgYXBwX21pYzMyKTsN Cj4gPiAgCQkJYXBwX21zZ19sZW4gKz0gNDsNCj4gPiBAQCAtMTE3MiwyMCArMTE3MywxOCBAQCBz dGF0aWMgdm9pZCBjaGVja19lbmNyeXB0KGNvbnN0IHN0cnVjdCBtZXNoX2NyeXB0b190ZXN0ICpr ZXlzKQ0KPiA+ICAJCQkJCWtleXMtPm5ldF9zZXFbaV0sIGtleXMtPm5ldF9zcmMsDQo+ID4gIAkJ CQkJa2V5cy0+aXZfaW5kZXgsIG5ldF9ub25jZSk7DQo+ID4gIA0KPiA+IC0JCQl2ZXJpZnlfZGF0 YSgiVHJhbnNwb3J0RGF0YSIsIDksIGtleXMtPnRyYW5zX3BrdFtpXSwNCj4gPiArCQl2ZXJpZnlf ZGF0YSgiVHJhbnNwb3J0RGF0YSIsIDksIGtleXMtPnRyYW5zX3BrdFtpXSwNCj4gPiAgCQkJCQkJ CXBhY2tldCArIDksIHNlZ19sZW4pOw0KPiA+ICANCj4gPiAgCQl2ZXJpZnlfdWludDE2KCJEU1Qi LCA3LCBrZXlzLT5uZXRfZHN0LCBsX2dldF9iZTE2KHBhY2tldCArIDcpKTsNCj4gPiAgCQluZXRf bXNnX2xlbiA9IHNlZ19sZW4gKyAyOw0KPiA+ICAJCXNob3dfZGF0YSgiVHJhbnNwb3J0UGF5bG9h ZCIsIDcsIHBhY2tldCArIDcsIG5ldF9tc2dfbGVuKTsNCj4gPiAgDQo+ID4gLQkJbWVzaF9jcnlw dG9fbmV0d29ya19lbmNyeXB0KGtleXMtPmN0bCwNCj4gPiAtCQkJCWtleXMtPm5ldF90dGwsIGtl eXMtPm5ldF9zZXFbaV0sDQo+ID4gLQkJCQlrZXlzLT5uZXRfc3JjLA0KPiA+IC0JCQkJa2V5cy0+ aXZfaW5kZXgsIGVuY19rZXksDQo+ID4gLQkJCQlwYWNrZXQgKyA3LCBzZWdfbGVuICsgMiwgcGFj a2V0ICsgNywNCj4gPiAtCQkJCWtleXMtPmN0bCA/ICh2b2lkICopJm5ldF9taWM2NCA6DQo+ID4g LQkJCQkJCQkodm9pZCAqKSZuZXRfbWljMzIpOw0KPiA+ICsJCW1lc2hfY3J5cHRvX3BhY2tldF9l bmNyeXB0KHBhY2tldCwgcGFja2V0X2xlbiwgZW5jX2tleSwNCj4gPiArCQkJCQkJa2V5cy0+aXZf aW5kZXgsIGZhbHNlLA0KPiA+ICsJCQkJCQlrZXlzLT5jdGwsIGtleXMtPm5ldF90dGwsDQo+ID4g KwkJCQkJCWtleXMtPm5ldF9zZXFbaV0sDQo+ID4gKwkJCQkJCWtleXMtPm5ldF9zcmMpOw0KPiA+ ICANCj4gPiAgCQltZXNoX2NyeXB0b19wcml2YWN5X2NvdW50ZXIoa2V5cy0+aXZfaW5kZXgsIHBh Y2tldCArIDcsDQo+ID4gIAkJCQkJCQkJcHJpdl9yYW5kKTsNCj4gPiBAQCAtMTIwOCwyMCArMTIw NywyMyBAQCBzdGF0aWMgdm9pZCBjaGVja19lbmNyeXB0KGNvbnN0IHN0cnVjdCBtZXNoX2NyeXB0 b190ZXN0ICprZXlzKQ0KPiA+ICAJCXZlcmlmeV9kYXRhKCJFbmNOZXR3b3JrUGF5bG9hZCIsIDcs IGtleXMtPm5ldF9tc2dbaV0sDQo+ID4gIAkJCQkJCXBhY2tldCArIDcsIG5ldF9tc2dfbGVuKTsN Cj4gPiAgCQlpZiAoa2V5cy0+Y3RsKSB7DQo+ID4gKwkJCW5ldF9taWM2NCA9IGxfZ2V0X2JlNjQo cGFja2V0ICsgcGFja2V0X2xlbiAtIDgpOw0KPiA+ICAJCQl2ZXJpZnlfdWludDY0KCJOZXR3b3Jr TUlDIiwgNyArIG5ldF9tc2dfbGVuLA0KPiA+ICAJCQkJCQlrZXlzLT5uZXRfbWljNjQsIG5ldF9t aWM2NCk7DQo+ID4gIAkJCW5ldF9tc2dfbGVuICs9IDg7DQo+ID4gIAkJfSBlbHNlIHsNCj4gPiAr CQkJbmV0X21pYzMyID0gbF9nZXRfYmUzMihwYWNrZXQgKyBwYWNrZXRfbGVuIC0gNCk7DQo+ID4g IAkJCXZlcmlmeV91aW50MzIoIk5ldHdvcmtNSUMiLCA3ICsgbmV0X21zZ19sZW4sDQo+ID4gIAkJ CQkJCWtleXMtPm5ldF9taWMzMltpXSwgbmV0X21pYzMyKTsNCj4gPiAgCQkJbmV0X21zZ19sZW4g Kz0gNDsNCj4gPiAgCQl9DQo+ID4gIA0KPiA+ICAJCXNob3dfZGF0YSgiUHJlT2JzUGF5bG9hZCIs IDEsIHBhY2tldCArIDEsIDYgKyBuZXRfbXNnX2xlbik7DQo+ID4gLQkJbWVzaF9jcnlwdG9fbmV0 d29ya19vYmZ1c2NhdGUocHJpdl9rZXksIHByaXZfcmFuZCwNCj4gPiAtCQkJCWtleXMtPmN0bCwN Cj4gPiAtCQkJCWtleXMtPm5ldF90dGwsIGtleXMtPm5ldF9zZXFbaV0sDQo+ID4gLQkJCQlrZXlz LT5uZXRfc3JjLCBwYWNrZXQgKyAxKTsNCj4gPiArCQltZXNoX2NyeXB0b19uZXR3b3JrX29iZnVz Y2F0ZShwYWNrZXQsIHByaXZfa2V5LA0KPiA+ICsJCQkJCWtleXMtPml2X2luZGV4LA0KPiA+ICsJ CQkJCWtleXMtPmN0bCwga2V5cy0+bmV0X3R0bCwNCj4gPiArCQkJCQlrZXlzLT5uZXRfc2VxW2ld LCBrZXlzLT5uZXRfc3JjKTsNCj4gPiArDQo+ID4gIAkJc2hvd19kYXRhKCJQb3N0T2JzUGF5bG9h ZCIsIDEsIHBhY2tldCArIDEsIDYgKyBuZXRfbXNnX2xlbik7DQo+ID4gIA0KPiA+ICAJCXBhY2tl dFswXSA9IChrZXlzLT5pdl9pbmRleCAmIDB4MDEpIDw8IDcgfCBuaWQ7DQo+ID4gQEAgLTEyNDIs NyArMTI0NCw3IEBAIGRvbmU6DQo+ID4gIA0KPiA+ICBzdGF0aWMgdm9pZCBjaGVja19kZWNyeXB0 X3NlZ21lbnQoY29uc3Qgc3RydWN0IG1lc2hfY3J5cHRvX3Rlc3QgKmtleXMsDQo+ID4gIAkJCQl1 aW50MTZfdCBzZWcsIHVpbnQxNl90IHNlZ19tYXgsDQo+ID4gLQkJCQljb25zdCB1aW50OF90ICpw a3QsIHVpbnQ4X3QgcGt0X2xlbiwNCj4gPiArCQkJCXVpbnQ4X3QgKnBrdCwgdWludDhfdCBwa3Rf bGVuLA0KPiA+ICAJCQkJY29uc3QgdWludDhfdCAqbXNnLCB1aW50OF90IG1zZ19sZW4sDQo+ID4g IAkJCQl1aW50OF90ICplbmNfa2V5LCB1aW50OF90ICpwcml2X2tleSwNCj4gPiAgCQkJCXVpbnQ4 X3QgbmlkKQ0KPiA+IEBAIC0xMjc0LDI2ICsxMjc2LDMwIEBAIHN0YXRpYyB2b2lkIGNoZWNrX2Rl Y3J5cHRfc2VnbWVudChjb25zdCBzdHJ1Y3QgbWVzaF9jcnlwdG9fdGVzdCAqa2V5cywNCj4gPiAg CWlmIChjdGwpIHsNCj4gPiAgCQluZXRfbWljNjQgPSBsX2dldF9iZTY0KHBrdCArIHBrdF9sZW4g LSA4KTsNCj4gPiAgCQlzaG93X2RhdGEoIkVuY3J5cHRlZFBheWxvYWQiLCA3LCBwa3QgKyA3LCBw a3RfbGVuIC0gNyAtIDgpOw0KPiA+IC0JCW1lc2hfY3J5cHRvX25ldHdvcmtfZGVjcnlwdChjdGws IHR0bCwgc2VxLA0KPiA+IC0JCQkJc3JjLCBrZXlzLT5pdl9pbmRleCwgZW5jX2tleSwNCj4gPiAt CQkJCXBrdCArIDcsIHBrdF9sZW4gLSA3LCBuZXRfY2xyICsgNywNCj4gPiAtCQkJCSZjYWxjX25l dF9taWM2NCwNCj4gPiAtCQkJCXNpemVvZihjYWxjX25ldF9taWM2NCkpOw0KPiA+ICsNCj4gPiAr CQltZXNoX2NyeXB0b19wYWNrZXRfZGVjcnlwdChwa3QsIHBrdF9sZW4sDQo+ID4gKwkJCQkJCQll bmNfa2V5LA0KPiA+ICsJCQkJCQkJa2V5cy0+aXZfaW5kZXgsIGZhbHNlLA0KPiA+ICsJCQkJCQkJ Y3RsLCB0dGwsIHNlcSwNCj4gPiArCQkJCQkJCXNyYyk7DQo+ID4gKwkJY2FsY19uZXRfbWljNjQg PSBsX2dldF9iZTY0KHBrdCArIHBrdF9sZW4gLSA4KTsNCj4gPiArDQo+ID4gIAkJdmVyaWZ5X3Vp bnQ2NCgiTmV0d29ya01JQyIsIHBrdF9sZW4gLSA4LCBuZXRfbWljNjQsDQo+ID4gLQkJCQljYWxj X25ldF9taWM2NCk7DQo+ID4gKwkJCQkJCW5ldF9taWM2NCBeIGNhbGNfbmV0X21pYzY0KTsNCj4g PiAgCQlzaG93X2RhdGEoIkRlY3J5cHRlZFBheWxvYWQiLCA3LCBuZXRfY2xyICsgNywgcGt0X2xl biAtIDcgLSA4KTsNCj4gPiAgCX0gZWxzZSB7DQo+ID4gIAkJbmV0X21pYzMyID0gbF9nZXRfYmUz Mihwa3QgKyBwa3RfbGVuIC0gNCk7DQo+ID4gIAkJc2hvd19kYXRhKCJFbmNyeXB0ZWRQYXlsb2Fk IiwgNywgcGt0ICsgNywgcGt0X2xlbiAtIDcgLSA0KTsNCj4gPiAgDQo+ID4gLQkJbWVzaF9jcnlw dG9fbmV0d29ya19kZWNyeXB0KGN0bCwgdHRsLCBzZXEsDQo+ID4gLQkJCQlzcmMsIGtleXMtPml2 X2luZGV4LCBlbmNfa2V5LA0KPiA+IC0JCQkJcGt0ICsgNywgcGt0X2xlbiAtIDcsIG5ldF9jbHIg KyA3LA0KPiA+IC0JCQkJJmNhbGNfbmV0X21pYzMyLA0KPiA+IC0JCQkJc2l6ZW9mKGNhbGNfbmV0 X21pYzMyKSk7DQo+ID4gKwkJbWVzaF9jcnlwdG9fcGFja2V0X2RlY3J5cHQocGt0LCBwa3RfbGVu LA0KPiA+ICsJCQkJCQkJZW5jX2tleSwNCj4gPiArCQkJCQkJCWtleXMtPml2X2luZGV4LCBmYWxz ZSwNCj4gPiArCQkJCQkJCWN0bCwgdHRsLCBzZXEsDQo+ID4gKwkJCQkJCQlzcmMpOw0KPiA+ICsJ CWNhbGNfbmV0X21pYzMyID0gbF9nZXRfYmUzMihwa3QgKyBwa3RfbGVuIC0gNCk7DQo+ID4gIA0K PiA+ICAJCXZlcmlmeV91aW50MzIoIk5ldHdvcmtNSUMiLCBwa3RfbGVuIC0gNCwgbmV0X21pYzMy LA0KPiA+IC0JCQkJY2FsY19uZXRfbWljMzIpOw0KPiA+ICsJCQkJCQluZXRfbWljMzIgXiBjYWxj X25ldF9taWMzMik7DQo+ID4gIAkJc2hvd19kYXRhKCJEZWNyeXB0ZWRQYXlsb2FkIiwgNywgbmV0 X2NsciArIDcsIHBrdF9sZW4gLSA3IC0gNCk7DQo+ID4gIAl9DQo+ID4gIA0KPiA+IEBAIC0xMzg3 LDE1ICsxMzkzLDExIEBAIHN0YXRpYyB2b2lkIGNoZWNrX2RlY3J5cHQoY29uc3Qgc3RydWN0IG1l c2hfY3J5cHRvX3Rlc3QgKmtleXMpDQo+ID4gIAl1aW50OF90ICphcHBfa2V5Ow0KPiA+ICAJdWlu dDhfdCAqbmV0X2tleTsNCj4gPiAgCXVpbnQ4X3QgZW5jX2tleVsxNl07DQo+ID4gLQl1aW50OF90 IG5ldF9ub25jZVsxM107DQo+ID4gLQl1aW50OF90IGFwcF9ub25jZVsxM107DQo+ID4gIAl1aW50 OF90IHByaXZfa2V5WzE2XTsNCj4gPiAtCXVpbnQ4X3QgcHJpdl9yYW5kWzE2XTsNCj4gPiAgCXVp bnQ4X3QgcFs5XTsNCj4gPiAgCXNpemVfdCBwX2xlbjsNCj4gPiAgCXVpbnQ4X3QgKnBhY2tldCA9 IE5VTEw7DQo+ID4gIAlzaXplX3QgcGFja2V0X2xlbjsNCj4gPiAtCWNvbnN0IHVpbnQ4X3QgKm5l dF9oZHI7DQo+ID4gIAl1aW50OF90ICpuZXRfbXNnOw0KPiA+ICAJdWludDhfdCBuZXRfbXNnX2xl bjsNCj4gPiAgCXVpbnQxNl90IGFwcF9tc2dfbGVuID0gMDsNCj4gPiBAQCAtMTQ2OSw5ICsxNDcx LDYgQEAgc3RhdGljIHZvaWQgY2hlY2tfZGVjcnlwdChjb25zdCBzdHJ1Y3QgbWVzaF9jcnlwdG9f dGVzdCAqa2V5cykNCj4gPiAgCQlnb3RvIGRvbmU7DQo+ID4gIAl9DQo+ID4gIA0KPiA+IC0JbWVz aF9jcnlwdG9fYXBwbGljYXRpb25fbm9uY2Uoa2V5cy0+YXBwX3NlcSwga2V5cy0+bmV0X3NyYywN Cj4gPiAtCQkJCQkJa2V5cy0+bmV0X2RzdCwga2V5cy0+aXZfaW5kZXgsDQo+ID4gLQkJCQkJCWtl eXMtPnN6bWljLCBhcHBfbm9uY2UpOw0KPiA+ICAJYXBwX21zZyA9IGxfbWFsbG9jKDM4NCk7DQo+ ID4gIA0KPiA+ICAJc2VnX21heCA9IChzaXplb2Yoa2V5cy0+cGFja2V0KSAvIHNpemVvZihrZXlz LT5wYWNrZXRbMF0pKSAtIDE7DQo+ID4gQEAgLTE0ODMsMTkgKzE0ODIsMTMgQEAgc3RhdGljIHZv aWQgY2hlY2tfZGVjcnlwdChjb25zdCBzdHJ1Y3QgbWVzaF9jcnlwdG9fdGVzdCAqa2V5cykNCj4g PiAgCQlpZiAoa2V5cy0+c2VnbWVudGVkKQ0KPiA+ICAJCQlsX2luZm8oQ09MT1JfWUVMTE9XICJT ZWdtZW50LSVkIiBDT0xPUl9PRkYsIGkpOw0KPiA+ICANCj4gPiAtCQltZXNoX2NyeXB0b19uZXR3 b3JrX25vbmNlKGtleXMtPmZybmQsIGtleXMtPm5ldF90dGwsDQo+ID4gLQkJCQlrZXlzLT5uZXRf c2VxW2ldLCBrZXlzLT5uZXRfc3JjLCBrZXlzLT5pdl9pbmRleCwNCj4gPiAtCQkJCW5ldF9ub25j ZSk7DQo+ID4gIAkJbF9mcmVlKHBhY2tldCk7DQo+ID4gIAkJcGFja2V0ID0gbF91dGlsX2Zyb21f aGV4c3RyaW5nKGtleXMtPnBhY2tldFtpXSwgJnBhY2tldF9sZW4pOw0KPiA+ICANCj4gPiAtCQlu ZXRfaGRyID0gcGFja2V0ICsgMTsNCj4gPiAgCQluZXRfbXNnID0gcGFja2V0ICsgNzsNCj4gPiAg CQluZXRfbXNnX2xlbiA9IHBhY2tldF9sZW4gLSA3Ow0KPiA+ICANCj4gPiAtCQltZXNoX2NyeXB0 b19wcml2YWN5X2NvdW50ZXIoa2V5cy0+aXZfaW5kZXgsIG5ldF9tc2csIHByaXZfcmFuZCk7DQo+ ID4gLQ0KPiA+IC0JCW1lc2hfY3J5cHRvX25ldHdvcmtfY2xhcmlmeShwcml2X2tleSwgcHJpdl9y YW5kLCBuZXRfaGRyLA0KPiA+ICsJCW1lc2hfY3J5cHRvX25ldHdvcmtfY2xhcmlmeShwYWNrZXQs IHByaXZfa2V5LCBrZXlzLT5pdl9pbmRleCwNCj4gPiAgCQkJCSZuZXRfY3RsLCAmbmV0X3R0bCwg Jm5ldF9zZXEsICZuZXRfc3JjKTsNCj4gPiAgDQo+ID4gIAkJc2hvd19zdHIoIlBhY2tldCIsIDAs IGtleXMtPnBhY2tldFtpXSk7DQo+ID4gQEAgLTE1MDQsMjkgKzE0OTcsMzEgQEAgc3RhdGljIHZv aWQgY2hlY2tfZGVjcnlwdChjb25zdCBzdHJ1Y3QgbWVzaF9jcnlwdG9fdGVzdCAqa2V5cykNCj4g PiAgCQkJbmV0X21pYzY0ID0gbF9nZXRfYmU2NChwYWNrZXQgKyBwYWNrZXRfbGVuIC0gOCk7DQo+ ID4gIAkJCXNob3dfZGF0YSgiTmV0d29ya01lc3NhZ2UiLCA3LCBuZXRfbXNnLA0KPiA+ICAJCQkJ CQkJbmV0X21zZ19sZW4gLSA4KTsNCj4gPiAtCQkJbWVzaF9jcnlwdG9fbmV0d29ya19kZWNyeXB0 KG5ldF9jdGwsIG5ldF90dGwsIG5ldF9zZXEsDQo+ID4gLQkJCQkJbmV0X3NyYywga2V5cy0+aXZf aW5kZXgsIGVuY19rZXksDQo+ID4gLQkJCQkJbmV0X21zZywgbmV0X21zZ19sZW4sIG5ldF9tc2cs DQo+ID4gLQkJCQkJJmNhbGNfbmV0X21pYzY0LA0KPiA+IC0JCQkJCXNpemVvZihjYWxjX25ldF9t aWM2NCkpOw0KPiA+ICsJCQltZXNoX2NyeXB0b19wYWNrZXRfZGVjcnlwdChwYWNrZXQsIHBhY2tl dF9sZW4sDQo+ID4gKwkJCQkJCWVuY19rZXksDQo+ID4gKwkJCQkJCWtleXMtPml2X2luZGV4LCBm YWxzZSwNCj4gPiArCQkJCQkJbmV0X2N0bCwgbmV0X3R0bCwNCj4gPiArCQkJCQkJbmV0X3NlcSwN Cj4gPiArCQkJCQkJbmV0X3NyYyk7DQo+ID4gKwkJCWNhbGNfbmV0X21pYzY0ID0gbF9nZXRfYmU2 NChwYWNrZXQgKyBwYWNrZXRfbGVuIC0gOCk7DQo+ID4gIAkJCW5ldF9tc2dfbGVuIC09IDg7DQo+ ID4gIAkJCXZlcmlmeV91aW50NjQoIk5ldHdvcmtNSUMiLCA3ICsgbmV0X21zZ19sZW4sIG5ldF9t aWM2NCwNCj4gPiAtCQkJCQkJCQljYWxjX25ldF9taWM2NCk7DQo+ID4gKwkJCQkJCW5ldF9taWM2 NCBeIGNhbGNfbmV0X21pYzY0KTsNCj4gPiAgCQkJc2hvd19kYXRhKCJEZWNyeXB0ZWROZXR3b3Jr IiwgNywgbmV0X21zZywgbmV0X21zZ19sZW4pOw0KPiA+ICAJCX0gZWxzZSB7DQo+ID4gIAkJCW5l dF9taWMzMiA9IGxfZ2V0X2JlMzIocGFja2V0ICsgcGFja2V0X2xlbiAtIDQpOw0KPiA+ICAJCQlz aG93X2RhdGEoIk5ldHdvcmtNZXNzYWdlIiwgNywgbmV0X21zZywNCj4gPiAgCQkJCQkJCW5ldF9t c2dfbGVuIC0gNCk7DQo+ID4gLQ0KPiA+IC0JCQltZXNoX2NyeXB0b19uZXR3b3JrX2RlY3J5cHQo bmV0X2N0bCwgbmV0X3R0bCwgbmV0X3NlcSwNCj4gPiAtCQkJCQluZXRfc3JjLCBrZXlzLT5pdl9p bmRleCwgZW5jX2tleSwNCj4gPiAtCQkJCQluZXRfbXNnLCBuZXRfbXNnX2xlbiwgbmV0X21zZywN Cj4gPiAtCQkJCQkmY2FsY19uZXRfbWljMzIsDQo+ID4gLQkJCQkJc2l6ZW9mKGNhbGNfbmV0X21p YzMyKSk7DQo+ID4gLQ0KPiA+ICsJCQltZXNoX2NyeXB0b19wYWNrZXRfZGVjcnlwdChwYWNrZXQs IHBhY2tldF9sZW4sDQo+ID4gKwkJCQkJCWVuY19rZXksDQo+ID4gKwkJCQkJCWtleXMtPml2X2lu ZGV4LCBmYWxzZSwNCj4gPiArCQkJCQkJbmV0X2N0bCwgbmV0X3R0bCwNCj4gPiArCQkJCQkJbmV0 X3NlcSwNCj4gPiArCQkJCQkJbmV0X3NyYyk7DQo+ID4gKwkJCWNhbGNfbmV0X21pYzMyID0gbF9n ZXRfYmUzMihwYWNrZXQgKyBwYWNrZXRfbGVuIC0gNCk7DQo+ID4gIAkJCW5ldF9tc2dfbGVuIC09 IDQ7DQo+ID4gIAkJCXZlcmlmeV91aW50MzIoIk5ldHdvcmtNSUMiLCA3ICsgbmV0X21zZ19sZW4s IG5ldF9taWMzMiwNCj4gPiAtCQkJCQkJCQljYWxjX25ldF9taWMzMik7DQo+ID4gKwkJCQkJCW5l dF9taWMzMiBeIGNhbGNfbmV0X21pYzMyKTsNCj4gPiAgCQkJc2hvd19kYXRhKCJEZWNyeXB0ZWRO ZXR3b3JrIiwgNywgbmV0X21zZywgbmV0X21zZ19sZW4pOw0KPiA+ICAJCX0NCj4gPiAgDQo+ID4g QEAgLTE2NDUsOCArMTY0MCw4IEBAIHN0YXRpYyB2b2lkIGNoZWNrX2RlY3J5cHQoY29uc3Qgc3Ry dWN0IG1lc2hfY3J5cHRvX3Rlc3QgKmtleXMpDQo+ID4gIAkJCQlwYWNrZXQsICZwa3RfbGVuKTsN Cj4gPiAgCQl2ZXJpZnlfZGF0YSgiVHJhbnNwb3J0RGF0YSIsIDksIGtleXMtPnRyYW5zX3BrdFtp XSwgcGFja2V0ICsgOSwNCj4gPiAgCQkJCQkJCQlwYXlsb2FkX2xlbik7DQo+ID4gLQkJbWVzaF9j cnlwdG9fcGFja2V0X2VuY29kZShwYWNrZXQsIHBrdF9sZW4sIGVuY19rZXksDQo+ID4gLQkJCQkJ CWtleXMtPml2X2luZGV4LCBwcml2X2tleSk7DQo+ID4gKwkJbWVzaF9jcnlwdG9fcGFja2V0X2Vu Y29kZShwYWNrZXQsIHBrdF9sZW4sIGtleXMtPml2X2luZGV4LA0KPiA+ICsJCQkJCQkJZW5jX2tl eSwgcHJpdl9rZXkpOw0KPiA+ICAJCW1lc2hfY3J5cHRvX3BhY2tldF9sYWJlbChwYWNrZXQsIHBr dF9sZW4sIGtleXMtPml2X2luZGV4LCBuaWQpOw0KPiA+ICANCj4gPiAgCQl2ZXJpZnlfZGF0YSgi RW5jb2RlZC1QYWNrZXQiLCAwLCBrZXlzLT5wYWNrZXRbaV0sIHBhY2tldCwNCj4gPiBAQCAtMTY2 NiwzOSArMTY2MSw0NSBAQCBzdGF0aWMgdm9pZCBjaGVja19kZWNyeXB0KGNvbnN0IHN0cnVjdCBt ZXNoX2NyeXB0b190ZXN0ICprZXlzKQ0KPiA+ICAJCQkJCQkJYXBwX21zZ19sZW4gLSA4KTsNCj4g PiAgCQlhcHBfbWljNjQgPSBsX2dldF9iZTY0KGFwcF9tc2cgKyBhcHBfbXNnX2xlbiAtIDgpOw0K PiA+ICANCj4gPiAtCQltZXNoX2NyeXB0b19hcHBsaWNhdGlvbl9kZWNyeXB0KA0KPiA+IC0JCQkJ a2V5c19haWQgfCAoa2V5cy0+YWtmID8gS0VZX0lEX0FLRiA6IDApLA0KPiA+IC0JCQkJc2VxWmVy bywgbmV0X3NyYywNCj4gPiAtCQkJCW5ldF9kc3QsIGtleXMtPml2X2luZGV4LA0KPiA+IC0JCQkJ a2V5cy0+YWtmID8gYXBwX2tleSA6IGRldl9rZXksDQo+ID4gKwkJbWVzaF9jcnlwdG9fcGF5bG9h ZF9kZWNyeXB0KA0KPiA+ICAJCQkJYWFkLCBhYWRfbGVuLA0KPiA+ICAJCQkJYXBwX21zZywgYXBw X21zZ19sZW4sDQo+ID4gLQkJCQlhcHBfbXNnLCAmY2FsY19hcHBfbWljNjQsDQo+ID4gLQkJCQlz aXplb2YoY2FsY19hcHBfbWljNjQpKTsNCj4gPiArCQkJCXRydWUsDQo+ID4gKwkJCQluZXRfc3Jj LCBuZXRfZHN0LA0KPiA+ICsJCQkJa2V5cy0+YWtmID8ga2V5c19haWQgfCBLRVlfSURfQUtGIDog QVBQX0FJRF9ERVYsDQo+ID4gKwkJCQlzZXFaZXJvLA0KPiA+ICsJCQkJa2V5cy0+aXZfaW5kZXgs DQo+ID4gKwkJCQlhcHBfbXNnLA0KPiA+ICsJCQkJa2V5cy0+YWtmID8gYXBwX2tleSA6IGRldl9r ZXkpOw0KPiA+ICsNCj4gPiArCQljYWxjX2FwcF9taWM2NCA9IGxfZ2V0X2JlNjQoYXBwX21zZyAr IGFwcF9tc2dfbGVuIC0gOCk7DQo+ID4gIA0KPiA+ICAJCXZlcmlmeV9kYXRhKCJQYXlsb2FkIiwg MCwga2V5cy0+YXBwX21zZywgYXBwX21zZywNCj4gPiAgCQkJCQkJCWFwcF9tc2dfbGVuIC0gOCk7 DQo+ID4gIAkJdmVyaWZ5X3VpbnQ2NCgiQXBwbGljYXRpb25NSUMiLCBhcHBfbXNnX2xlbiAtIDgs IGFwcF9taWM2NCwNCj4gPiAtCQkJCQkJCQljYWxjX2FwcF9taWM2NCk7DQo+ID4gKwkJCQkJCWFw cF9taWM2NCBeIGNhbGNfYXBwX21pYzY0KTsNCj4gPiAgCX0gZWxzZSBpZiAoIWtleXMtPmN0bCkg ew0KPiA+ICAJCXZlcmlmeV9kYXRhKCJFbmNyeXB0ZWRQYXlsb2FkIiwgMCwga2V5cy0+ZW5jX21z ZywgYXBwX21zZywNCj4gPiAgCQkJCQkJCWFwcF9tc2dfbGVuIC0gNCk7DQo+ID4gIAkJYXBwX21p YzMyID0gbF9nZXRfYmUzMihhcHBfbXNnICsgYXBwX21zZ19sZW4gLSA0KTsNCj4gPiAgDQo+ID4g LQkJbWVzaF9jcnlwdG9fYXBwbGljYXRpb25fZGVjcnlwdCgNCj4gPiAtCQkJCWtleXNfYWlkIHwg KGtleXMtPmFrZiA/IEtFWV9JRF9BS0YgOiAwKSwNCj4gPiAtCQkJCXNlcVplcm8sIG5ldF9zcmMs DQo+ID4gLQkJCQluZXRfZHN0LCBrZXlzLT5pdl9pbmRleCwNCj4gPiAtCQkJCWtleXMtPmFrZiA/ IGFwcF9rZXkgOiBkZXZfa2V5LA0KPiA+ICsJCW1lc2hfY3J5cHRvX3BheWxvYWRfZGVjcnlwdCgN Cj4gPiAgCQkJCWFhZCwgYWFkX2xlbiwNCj4gPiAgCQkJCWFwcF9tc2csIGFwcF9tc2dfbGVuLA0K PiA+IC0JCQkJYXBwX21zZywgJmNhbGNfYXBwX21pYzMyLA0KPiA+IC0JCQkJc2l6ZW9mKGNhbGNf YXBwX21pYzMyKSk7DQo+ID4gKwkJCQlmYWxzZSwNCj4gPiArCQkJCW5ldF9zcmMsIG5ldF9kc3Qs DQo+ID4gKwkJCQlrZXlzLT5ha2YgPyBrZXlzX2FpZCB8IEtFWV9JRF9BS0YgOiBBUFBfQUlEX0RF ViwNCj4gPiArCQkJCXNlcVplcm8sDQo+ID4gKwkJCQlrZXlzLT5pdl9pbmRleCwNCj4gPiArCQkJ CWFwcF9tc2csDQo+ID4gKwkJCQlrZXlzLT5ha2YgPyBhcHBfa2V5IDogZGV2X2tleSk7DQo+ID4g Kw0KPiA+ICsJCWNhbGNfYXBwX21pYzMyID0gbF9nZXRfYmU2NChhcHBfbXNnICsgYXBwX21zZ19s ZW4gLSA0KTsNCj4gPiAgDQo+ID4gIAkJdmVyaWZ5X2RhdGEoIlBheWxvYWQiLCAwLCBrZXlzLT5h cHBfbXNnLCBhcHBfbXNnLA0KPiA+ICAJCQkJCQkJYXBwX21zZ19sZW4gLSA0KTsNCj4gPiAgCQl2 ZXJpZnlfdWludDMyKCJBcHBsaWNhdGlvbk1JQyIsIGFwcF9tc2dfbGVuIC0gNCwgYXBwX21pYzMy LA0KPiA+IC0JCQkJCQkJCWNhbGNfYXBwX21pYzMyKTsNCj4gPiArCQkJCQkJYXBwX21pYzMyIF4g Y2FsY19hcHBfbWljMzIpOw0KPiA+ICAJfQ0KPiA+ICANCj4gPiAgZG9uZToNCg==