Received: by 2002:a05:6a10:1a4d:0:0:0:0 with SMTP id nk13csp3752225pxb; Fri, 4 Feb 2022 15:57:23 -0800 (PST) X-Google-Smtp-Source: ABdhPJzt1t4iIOQUpR2hp1ZauxWG753si4bNgdhZB/BSFEqIrQCV63SGftUYNTN/LpT1rdYntOUC X-Received: by 2002:a05:6402:1e91:: with SMTP id f17mr1687093edf.407.1644019042805; Fri, 04 Feb 2022 15:57:22 -0800 (PST) ARC-Seal: i=2; a=rsa-sha256; t=1644019042; cv=pass; d=google.com; s=arc-20160816; b=TnpIqMzCVMGo1Up6ufSN8T2Y9/HezLgNdeUZo6FW3qIV0C8PUlsIUFTQI9M1za+Yjx 9BZw6ajDNSuM2ks26wOq6Pyex1tKJkFPCPsS+J/Rwv0mOm5j930IOPH48Q+9p4D+KG2Y /srgLiB3nRAePDKuZAU/bu7PhhD9CFOkBeRtGw35mGWlbhUCOMqnIkl3vJujKXltMv6e CcJfxAup64Z7/gcmnxrwbmtCyDHrC2Pr3ocpBDjBftznKTgGrMRI/AsAik6Knu+RX2U+ NxzD7Bz6LMF383CEJoWjyhFe0J+4oaBkAULqTo8ePtWiNBPVoTsBpXMeamdY/tD/1xU/ lXhg== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence: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; bh=zWq2n+EQACvCLKMJR6v63KH9kbUaCRRCJ4hfGItV1mo=; b=NKko6TWNBp6ZbqBcL6AMxtoFGHj0o+PMw4wAKGa8Ykk44Bf3+8dKCV9lKqz3nnu5RW sdcM+IAN0UiCPjNb4Nb2Up0G0So/ggyRu//TL6LiqQLgcpV7POi/CnZ903Yb7ig3qHzE reWqSvm+NGOZpq1AB6akl/ci2X1XcjH56zpGOwUkfvtmcs8ntgfrTQhHc7RiZ2Ok8GKD Vr0/21nyU83V5pmnjZH4nX5rhpOnRS9bShce2BxQdwWe/FRpa75hPdX8rjyFBlGHumJo x59JLxCD0SFocVOnCe4JOV5QsgwR6Vl2OyrxRur/fowtB5rsWBgD4pwEhhuMO00BCeZ3 v1cw== ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=SyDf9uWX; arc=pass (i=1); spf=pass (google.com: domain of linux-bluetooth-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-bluetooth-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id a14si2130977edj.301.2022.02.04.15.56.58; Fri, 04 Feb 2022 15:57:22 -0800 (PST) Received-SPF: pass (google.com: domain of linux-bluetooth-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=SyDf9uWX; arc=pass (i=1); spf=pass (google.com: domain of linux-bluetooth-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-bluetooth-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S237550AbiBDUeE (ORCPT + 99 others); Fri, 4 Feb 2022 15:34:04 -0500 Received: from mga06.intel.com ([134.134.136.31]:49215 "EHLO mga06.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S237051AbiBDUeD (ORCPT ); Fri, 4 Feb 2022 15:34:03 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1644006843; x=1675542843; h=from:to:subject:date:message-id:references:in-reply-to: content-id:content-transfer-encoding:mime-version; bh=zWq2n+EQACvCLKMJR6v63KH9kbUaCRRCJ4hfGItV1mo=; b=SyDf9uWX+ffZxCLasUegrFzP7Qc0H0/avV2UuBlwwJ8eaxcwtOlu9TCb HgMaZB7u/rhdtLvgi1KG0ci/pnzYRDPl+fXvnbuv2wk54VEd6EIsuvJRk 4jIVZ7wabHyIQ/V9Q4FJXtOgW5ZHqtOkLDtKT9HiraA6i3LtBLPR18pL7 oyTPNKbtFA/DATvL+QYG9vaDwaq5bg3TBTaHQyzqZaTU2ekEdj9W8uHuk qp4jMNffC+ag0PLsirSlipnMcPd9Ya0JYqo/HQOtTK6F5RSFfqdbCVijh 05j7+KDVEDNb7ElP1CetHL4Jfo0Ja5tJb2ycfA2BhNvMamwSxCIwPC/Ma w==; X-IronPort-AV: E=McAfee;i="6200,9189,10248"; a="309183227" X-IronPort-AV: E=Sophos;i="5.88,343,1635231600"; d="scan'208";a="309183227" Received: from orsmga002.jf.intel.com ([10.7.209.21]) by orsmga104.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 04 Feb 2022 12:34:03 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.88,343,1635231600"; d="scan'208";a="498586468" Received: from fmsmsx602.amr.corp.intel.com ([10.18.126.82]) by orsmga002.jf.intel.com with ESMTP; 04 Feb 2022 12:34:03 -0800 Received: from fmsmsx603.amr.corp.intel.com (10.18.126.83) by fmsmsx602.amr.corp.intel.com (10.18.126.82) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2308.20; Fri, 4 Feb 2022 12:34:02 -0800 Received: from FMSEDG603.ED.cps.intel.com (10.1.192.133) by fmsmsx603.amr.corp.intel.com (10.18.126.83) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2308.20 via Frontend Transport; Fri, 4 Feb 2022 12:34:02 -0800 Received: from NAM10-DM6-obe.outbound.protection.outlook.com (104.47.58.104) by edgegateway.intel.com (192.55.55.68) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2308.20; Fri, 4 Feb 2022 12:34:02 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=PUK7PhTA+7d5FhXjdq02syLIdiXEAuvppsCXx6XJ+GtQ591yltcW76zuC0nXT4pbkGbP+S+PEiQ7gHGOH1dcZnJK/CC4zES9ndH2IMXhwuqc+k65tdDCN0j3OOhYkQns6JWbzPGE6oT3XZUHOxgD/3lhiQuMzy/R2tSRnG+tted3PHjS/zi2tT34QzKfjB7rvHvrBWGYZ9ktlMeFXEvE2TWJLHVomDzNfavuhn6bs8ke3ObsLD5s8X+SQ0flKyC1lyOl9ZIa9a3+5WWSfPynH0kzV3enFZF0Kl+uludtEa9LF/irAWLZy28pvOxM+hAQvvtreYfDwGfcR7JjdL6gow== 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-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=zWq2n+EQACvCLKMJR6v63KH9kbUaCRRCJ4hfGItV1mo=; b=Deqs5txy6yyQuYwL+XkCNVMZwLcSR1A6W1p/rI+bqevjIRuSnvNHYpuAeBRfvaasctb6xPivfBNHkZ2bMtOHPNuxZCMFY9JYXi5ujhGsNfGcY716C8tlIX268bSFh80dzdpIxCBSFfvPPRQXwftdEurf7sxm7o4Sxt/MfnKM/COhwui3cvdXly3RkZ/IqkJQVIkHtrhvZMjYsx9+OdSaMuPy4aR71wvgVd26hf13ljxFl/7cT5BvBB+Gc00D+MfBpnSL1wBUDQxVTdgETKfm20zYkV0iGZa2hSPz48NWMmboo1w4PJKchRAxC8L5jsVSUBskHR2OtfiLWIorIzMnqg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none Received: from SA0PR11MB4526.namprd11.prod.outlook.com (2603:10b6:806:96::15) by SA2PR11MB4826.namprd11.prod.outlook.com (2603:10b6:806:11c::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4951.12; Fri, 4 Feb 2022 20:34:00 +0000 Received: from SA0PR11MB4526.namprd11.prod.outlook.com ([fe80::5d0d:46b0:ffbb:54b3]) by SA0PR11MB4526.namprd11.prod.outlook.com ([fe80::5d0d:46b0:ffbb:54b3%4]) with mapi id 15.20.4951.016; Fri, 4 Feb 2022 20:34:00 +0000 From: "Gix, Brian" To: "michal.lowas-rzechonek@silvair.com" , "linux-bluetooth@vger.kernel.org" Subject: Re: [PATCH BlueZ] mesh: Make key_aid and net_key_id naming consistent Thread-Topic: [PATCH BlueZ] mesh: Make key_aid and net_key_id naming consistent Thread-Index: AQHYGQvRXc7OMlLOPEWr0xRjO5YH56yD2vwA Date: Fri, 4 Feb 2022 20:34:00 +0000 Message-ID: <3c295c27e2f89e398ad44181bebaca9a0a4b0433.camel@intel.com> References: <20220203143849.746696-1-michal.lowas-rzechonek@silvair.com> In-Reply-To: <20220203143849.746696-1-michal.lowas-rzechonek@silvair.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: user-agent: Evolution 3.38.4 (3.38.4-1.fc33) authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 7c19e4ef-a709-4a8a-e4b1-08d9e81dad48 x-ms-traffictypediagnostic: SA2PR11MB4826:EE_ x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:390; x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: BCm0Ercp4Vzx0TwQXUPEkctkeWxw4CIh01DX1zVc03xE1+BN31hWbctOkBL7D70AvL3YNnbf6bwk9L7S8a/5+StGvL4hYjiNGyoWahmEOrDP0z0ha8s9FTaptBx8dTxjwqF5MhmPSbTOv/fdcgIAeWfDYO/6jXwmWmln5X3oUi+xnZnz29AxwH25Frt+BNGHIPuNhpLt1u2Ro1lzMk9ThRBwyv+PdQHh/Gm0EhbftP9Kz3kqGXDrPFvdJ8R/rnrBeYhwg7klAuekSaQvjww2iWfrdMMy06OiUA/upZ4S4JPD4O4Bbjrk1sxl3/ugQkUbk9clZ43ae8x9cm6OFXcBZxWcR26jIut3BuXmYlqV9ZnQpEReBaZTsotfY6+2wG5Q7FxYA5Kg7a1g9IUjF+hOcw6uIo+LE/b+dQYxmQfySurr1c2mxvYApu9IqoUu2AG0J/bd7gBf5n3j563bFzZMsl2qF1ob892iy5RmR19OxJmETwbIRqHCUgIrkktlu3lhD6+ljVuSSCyr6PAtD8BTthrmF3DGpaaEaNJFDf2gCucfA9EWGQGVGsULHR8v/NG3WVmR4LHa2nDzq7hPUPwwcj9mpkxKS6+rtjKpZ7x7DR11LfpGVDE8ye8/P4EPX2MOeyInkFpTOfFf6LBU4fTVoAwrliLxJryQPUlH+duVL5eScNhBoOzB5SRYiGIjeb+fWrJSgDZwoGlx8G+sI/hTikUKsXj5LjOf84EmPZVFbfyTuDt6NNfvcx+ry5Kjv0Pw x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SA0PR11MB4526.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230001)(366004)(83380400001)(508600001)(86362001)(6486002)(2616005)(122000001)(82960400001)(186003)(38100700002)(2906002)(36756003)(30864003)(26005)(91956017)(64756008)(66446008)(66476007)(66556008)(66946007)(8676002)(8936002)(5660300002)(316002)(76116006)(38070700005)(71200400001)(6512007)(6506007)(110136005)(559001)(579004);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?KzE1bzRscmRpaS9DYnpHM0U1M0FYbEljbmVtU2pkZ3NaSUpROWd5V0lvUnI5?= =?utf-8?B?ay9aai8wUmpPdG1Ta2pCa2ZyczU3SDZIMDR0K1M0c0VVaTczaGhhSFJnM3hq?= =?utf-8?B?OXIrZm9FOG5seHEzUi9PWHBOVXFpcUsyd21qeE1XS1RLdTVlMW43S1VkUXpq?= =?utf-8?B?Y1lMVlhSaSt3cjVZZXlINVlTS1VuQ0JSVHJ6bWY5QnVWMHRicjBLQWFvT3dh?= =?utf-8?B?SGhOZUgvVWpWemVtOHlMckxrMHpjNnEyNC9Ma3hkYlRXWXNSNmRZa1NtMVJ3?= =?utf-8?B?RVJGRElYV1ZzQmFxL09mTnpFT28xZ3NReWhyNnp1WEdTZHZ2TTFjaG12b2g5?= =?utf-8?B?VUhJS2Evd1BCWmY3VGtDYTBNRG1MTm1YekFQL05qNk5XRm9vYmFkU2ZGQ1F5?= =?utf-8?B?bUt6ZE1KV3h0R2o0QWdTVVdJQis1K25oUlhFSnQ1d292SEpTVFVveGJwNlBo?= =?utf-8?B?VVlmYVVYYVdwQzhzSUpyVEZyOS82aFppcEZrdnkyckVkTjFWK2hYblFCOUtk?= =?utf-8?B?Y004dGxhaEFxSHByYk9pUkp4SVhqbUpzV3pwazJpZDM1L1lKOUtXdkhLbWRV?= =?utf-8?B?NFBmaUY3YlpxYWFyeTMrc2RGam1oaG9KZ0x3d2RVOWZDRFd0Tnd1MWd2S1RH?= =?utf-8?B?dXlLcnRGTWwyeEZxQVVNYUhCcUFncVlrU2poVWFKVHg0REFjZlZxZXBLOFlY?= =?utf-8?B?L0lMY25CbGl5bnhMVWI2bU1CRVBlNE1hWG5GZ3FNRlkyRWVGK1hHWVptd1hG?= =?utf-8?B?UGN4SkxXRHhTYmtYN2hKMzJTNlNDdGU2Tnd1VDNWL1RIazBjZkZhYUZiM0oz?= =?utf-8?B?ZjVLS2VRamJRTUFJdnVFT2QvVGsrSUtUTVQ3alduRGVvcmRxakNENU1CNk9k?= =?utf-8?B?QVZaR1dCZG9ZQUJhTGduRHh2SmpUVy8xSGJMNFZTWmN2T2RsVGM3UUFackRx?= =?utf-8?B?Qi92V01FdU8vaXdHN3d6ajAxREJHWkhkNldrc0VmZEloT2JYTC9QU3lTVGtN?= =?utf-8?B?UTZvcnN0RlVtdnpYa29XNjJNcHJzZzE0RXdvMXlpT2xGMlc0RjNZb1JaT2xF?= =?utf-8?B?THE5c01aVUhqVTJPTTR1T3E5MWpyUlNnaEZENi9BcVYwVzlpajZNNkJsVThK?= =?utf-8?B?aEx0d0doeDFzQlRhN2ViTHRqQUYyMnJ2ZkNVbVE1a21pcHN1cTkvQ1JCbVRs?= =?utf-8?B?eFE4c2lWM0pmenVkc21MRU01b1V4eG5GcG1qS2xLdGtzM2tjYlpkcEZaRWl2?= =?utf-8?B?N0E1WEdjNDNBNFQ2R2dQeER5cG9RalFuZ0hqQVh6WEtjTWU2RU9JaWprZFNn?= =?utf-8?B?c3dka2llY294YVJoZ0ZPQjYvN21razFuMEdpN2h3b0xMa1BETGtqMmFUcFl1?= =?utf-8?B?WStkZkRsWndLVTJ3K3lsMkhGOFlHb2o4K3Q1bU5BWE16eGNYRzJNOFMzeVVX?= =?utf-8?B?eUVWbkNSS0dkclVhTmxlUnovTnJISDM3TjNiUFpUdVYvREtQZVB1aXg1TXFl?= =?utf-8?B?WnJCcjBvL1o0WC82QmtYZkJSd2UrN0gwVEpjREtHYWhzWjJhaDl4K282bm5L?= =?utf-8?B?MTRYdGdQQndtZFdjcll4bTduUXBvSEhudEZzN3lBQ3BCV2F0bFI0M3E3ekZm?= =?utf-8?B?czVGYzluc1lObWhTK2ZEWmlWMGZLMDdqQk5lUnhuMGR0VXNGSFh2QU8xMFlW?= =?utf-8?B?T2wyNUlPUE5QY1huT3pkWmZYaW96amJsTnRWM3l3UVRCOWNJMlRVTjhUS0ln?= =?utf-8?B?dHdlMUtGcm5YNHRoTDBua0s0dGhYL2tSWEdiT0tYc2dWRld2U3RMdUJzMjZy?= =?utf-8?B?YXh0T1RaWEc3N1lzZExudzNHUjdYcDVWYUkxWjU5U1owdEh0c2RwTDZPMU56?= =?utf-8?B?MlNDRmljQ05JSVh5dnZ1cUdhVVVwQjZCTnpFZmptRWFsdDBFakZKMWZSOG5O?= =?utf-8?B?L1MvZGx6cDN1TnVmemQ4V2Vsc1ZiREZ6anpMYW51TmpYMS9Lcm1mUmZJL1Yx?= =?utf-8?B?TWhQaER1RDhYbWVEUGxsUlh4U0ZmVVVibFpsdGxkWXd5bUo1UTRHWEd4STY1?= =?utf-8?B?N3NjZjcxeGNmaHN2UXpsajN1RDZGeXpkSTZ0WVNGQUVXclV4YnFUbGJ4VlFi?= =?utf-8?B?aVNMbGh4K1JES3pNc1BkVERyNkxDVDBmcDBFYXJIYmdkQ1h2RVNQTUNtMDdM?= =?utf-8?Q?PL9czYoGpx+pkBe4mcPUw2M=3D?= Content-Type: text/plain; charset="utf-8" Content-ID: Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: SA0PR11MB4526.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 7c19e4ef-a709-4a8a-e4b1-08d9e81dad48 X-MS-Exchange-CrossTenant-originalarrivaltime: 04 Feb 2022 20:34:00.7629 (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: 2p5b0uevMeyjHEKYLiWogxrDr+IB50r5R58HmG6Vsso7FBr1tBbOAgpOKtrLqSm5Xhu5JdPV4XQDTji6DooELw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA2PR11MB4826 X-OriginatorOrg: intel.com Precedence: bulk List-ID: X-Mailing-List: linux-bluetooth@vger.kernel.org QXBwbGllZA0KDQpPbiBUaHUsIDIwMjItMDItMDMgYXQgMTU6MzggKzAxMDAsIE1pY2hhxYIgTG93 YXMtUnplY2hvbmVrIHdyb3RlOg0KPiAtIGtleV9haWQgcmVmZXJzIHRvIGFwcGxpY2F0aW9uIGtl eSBBSUQNCj4gLSBuZXRfa2V5X2lkIHJlZmVycyB0byB1bmlxdWUsIGludGVybmFsIGlkIG9mIHRo ZSBuZXR3b3JrIGtleSwgdXNlZCBpbg0KPiDCoCBuZXQta2V5cy5oDQo+IA0KPiBBbHNvLCByZW1v dmUgdW51c2VkIG1lc2hfZnJuZF9wa3Qgc3RydWN0Lg0KPiAtLS0NCj4gwqBtZXNoL2FwcGtleS5o IHzCoMKgIDIgKy0NCj4gwqBtZXNoL2ZyaWVuZC5jIHzCoMKgIDggKystLQ0KPiDCoG1lc2gvbmV0 LmPCoMKgwqAgfCAxMTEgKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0NCj4gwqBtZXNoL25ldC5owqDCoMKgIHzCoCAzNyArKystLS0tLS0tLS0tLS0tLQ0K PiDCoDQgZmlsZXMgY2hhbmdlZCwgNjcgaW5zZXJ0aW9ucygrKSwgOTEgZGVsZXRpb25zKC0pDQo+ IA0KPiBkaWZmIC0tZ2l0IGEvbWVzaC9hcHBrZXkuaCBiL21lc2gvYXBwa2V5LmgNCj4gaW5kZXgg NjY4OGQ4N2ZiLi4wY2I2ZTNiNTYgMTAwNjQ0DQo+IC0tLSBhL21lc2gvYXBwa2V5LmgNCj4gKysr IGIvbWVzaC9hcHBrZXkuaA0KPiBAQCAtMTgsNyArMTgsNyBAQCBib29sIGFwcGtleV9rZXlfaW5p dChzdHJ1Y3QgbWVzaF9uZXQgKm5ldCwgdWludDE2X3QgbmV0X2lkeCwgdWludDE2X3QgYXBwX2lk eCwNCj4gwqB2b2lkIGFwcGtleV9rZXlfZnJlZSh2b2lkICpkYXRhKTsNCj4gwqB2b2lkIGFwcGtl eV9maW5hbGl6ZShzdHJ1Y3QgbWVzaF9uZXQgKm5ldCwgdWludDE2X3QgbmV0X2lkeCk7DQo+IMKg Y29uc3QgdWludDhfdCAqYXBwa2V5X2dldF9rZXkoc3RydWN0IG1lc2hfbmV0ICpuZXQsIHVpbnQx Nl90IGFwcF9pZHgsDQo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoHVpbnQ4X3QgKmtleV9pZCk7DQo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHVpbnQ4X3QgKmtleV9haWQpOw0KPiDCoGlu dCBhcHBrZXlfZ2V0X2tleV9pZHgoc3RydWN0IG1lc2hfYXBwX2tleSAqYXBwX2tleSwNCj4gwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoGNvbnN0IHVpbnQ4X3QgKiprZXksIHVpbnQ4X3QgKmtleV9haWQsDQo+IMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBjb25z dCB1aW50OF90ICoqbmV3X2tleSwgdWludDhfdCAqbmV3X2tleV9haWQpOw0KPiBkaWZmIC0tZ2l0 IGEvbWVzaC9mcmllbmQuYyBiL21lc2gvZnJpZW5kLmMNCj4gaW5kZXggMWU2NzcwNGI4Li42YzYz MDMyYWMgMTAwNjQ0DQo+IC0tLSBhL21lc2gvZnJpZW5kLmMNCj4gKysrIGIvbWVzaC9mcmllbmQu Yw0KPiBAQCAtNTksNyArNTksNyBAQCBzdGF0aWMgdm9pZCByZXNwb25zZV9kZWxheShzdHJ1Y3Qg bF90aW1lb3V0ICp0aW1lb3V0LCB2b2lkICp1c2VyX2RhdGEpDQo+IMKgew0KPiDCoMKgwqDCoMKg wqDCoMKgc3RydWN0IG1lc2hfZnJpZW5kICpuZWcgPSB1c2VyX2RhdGE7DQo+IMKgwqDCoMKgwqDC oMKgwqB1aW50MTZfdCBuZXRfaWR4ID0gbmVnLT5uZXRfaWR4Ow0KPiAtwqDCoMKgwqDCoMKgwqB1 aW50MzJfdCBrZXlfaWQsIHNlcTsNCj4gK8KgwqDCoMKgwqDCoMKgdWludDMyX3QgbmV0X2tleV9p ZCwgc2VxOw0KPiDCoMKgwqDCoMKgwqDCoMKgdWludDhfdCBtc2dbOF07DQo+IMKgwqDCoMKgwqDC oMKgwqB1aW50MTZfdCBuID0gMDsNCj4gwqDCoMKgwqDCoMKgwqDCoGJvb2wgcmVzOw0KPiBAQCAt NjcsMTEgKzY3LDExIEBAIHN0YXRpYyB2b2lkIHJlc3BvbnNlX2RlbGF5KHN0cnVjdCBsX3RpbWVv dXQgKnRpbWVvdXQsIHZvaWQgKnVzZXJfZGF0YSkNCj4gwqDCoMKgwqDCoMKgwqDCoGxfdGltZW91 dF9yZW1vdmUodGltZW91dCk7DQo+IMKgDQo+IMKgwqDCoMKgwqDCoMKgwqAvKiBDcmVhdGUga2V5 IFNldCBmb3IgdGhpcyBvZmZlciAqLw0KPiAtwqDCoMKgwqDCoMKgwqByZXMgPSBtZXNoX25ldF9n ZXRfa2V5KG5lZy0+bmV0LCBmYWxzZSwgbmV0X2lkeCwgJmtleV9pZCk7DQo+ICvCoMKgwqDCoMKg wqDCoHJlcyA9IG1lc2hfbmV0X2dldF9rZXkobmVnLT5uZXQsIGZhbHNlLCBuZXRfaWR4LCAmbmV0 X2tleV9pZCk7DQo+IMKgwqDCoMKgwqDCoMKgwqBpZiAoIXJlcykNCj4gwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqBnb3RvIGNsZWFudXA7DQo+IMKgDQo+IC3CoMKgwqDCoMKgwqDCoG5l Zy0+bmV0X2tleV9jdXIgPSBuZXRfa2V5X2ZybmRfYWRkKGtleV9pZCwgbmVnLT5scF9hZGRyLA0K PiArwqDCoMKgwqDCoMKgwqBuZWctPm5ldF9rZXlfY3VyID0gbmV0X2tleV9mcm5kX2FkZChuZXRf a2V5X2lkLCBuZWctPmxwX2FkZHIsDQo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoG1lc2hfbmV0X2dldF9hZGRyZXNzKG5lZy0+bmV0KSwNCj4gwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgbmVnLT5scF9jbnQsIGNvdW50ZXIpOw0KPiDCoMKgwqDC oMKgwqDCoMKgaWYgKCFuZWctPm5ldF9rZXlfY3VyKQ0KPiBAQCAtODgsNyArODgsNyBAQCBzdGF0 aWMgdm9pZCByZXNwb25zZV9kZWxheShzdHJ1Y3QgbF90aW1lb3V0ICp0aW1lb3V0LCB2b2lkICp1 c2VyX2RhdGEpDQo+IMKgwqDCoMKgwqDCoMKgwqBuICs9IDI7DQo+IMKgwqDCoMKgwqDCoMKgwqBz ZXEgPSBtZXNoX25ldF9uZXh0X3NlcV9udW0obmVnLT5uZXQpOw0KPiDCoMKgwqDCoMKgwqDCoMKg cHJpbnRfcGFja2V0KCJUeC1ORVRfT1BfRlJORF9PRkZFUiIsIG1zZywgbik7DQo+IC3CoMKgwqDC oMKgwqDCoG1lc2hfbmV0X3RyYW5zcG9ydF9zZW5kKG5lZy0+bmV0LCBrZXlfaWQsIDAsDQo+ICvC oMKgwqDCoMKgwqDCoG1lc2hfbmV0X3RyYW5zcG9ydF9zZW5kKG5lZy0+bmV0LCBuZXRfa2V5X2lk LCAwLA0KPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBt ZXNoX25ldF9nZXRfaXZfaW5kZXgobmVnLT5uZXQpLCAwLA0KPiDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBzZXEsIDAsIG5lZy0+bHBfYWRkciwNCj4gwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgbXNnLCBuKTsNCj4g ZGlmZiAtLWdpdCBhL21lc2gvbmV0LmMgYi9tZXNoL25ldC5jDQo+IGluZGV4IGFhMjIwZjc2Mi4u YjY1OTM0OWYwIDEwMDY0NA0KPiAtLS0gYS9tZXNoL25ldC5jDQo+ICsrKyBiL21lc2gvbmV0LmMN Cj4gQEAgLTE5NSw3ICsxOTUsNyBAQCBzdHJ1Y3QgbmV0X3F1ZXVlX2RhdGEgew0KPiDCoMKgwqDC oMKgwqDCoMKgdWludDhfdCAqb3V0Ow0KPiDCoMKgwqDCoMKgwqDCoMKgc2l6ZV90IG91dF9zaXpl Ow0KPiDCoMKgwqDCoMKgwqDCoMKgZW51bSBfcmVsYXlfYWR2aWNlIHJlbGF5X2FkdmljZTsNCj4g LcKgwqDCoMKgwqDCoMKgdWludDMyX3Qga2V5X2lkOw0KPiArwqDCoMKgwqDCoMKgwqB1aW50MzJf dCBuZXRfa2V5X2lkOw0KPiDCoMKgwqDCoMKgwqDCoMKgdWludDMyX3QgaXZfaW5kZXg7DQo+IMKg wqDCoMKgwqDCoMKgwqB1aW50MTZfdCBsZW47DQo+IMKgwqDCoMKgwqDCoMKgwqBib29sIHNlZW47 DQo+IEBAIC0yMTAsNyArMjEwLDcgQEAgc3RydWN0IG9uZXNob3RfdHggew0KPiDCoH07DQo+IMKg DQo+IMKgc3RydWN0IG5ldF9iZWFjb25fZGF0YSB7DQo+IC3CoMKgwqDCoMKgwqDCoHVpbnQzMl90 IGtleV9pZDsNCj4gK8KgwqDCoMKgwqDCoMKgdWludDMyX3QgbmV0X2tleV9pZDsNCj4gwqDCoMKg wqDCoMKgwqDCoHVpbnQzMl90IGl2aTsNCj4gwqDCoMKgwqDCoMKgwqDCoGJvb2wgaXZ1Ow0KPiDC oMKgwqDCoMKgwqDCoMKgYm9vbCBrcjsNCj4gQEAgLTIzOCwxOSArMjM4LDE5IEBAIHN0YXRpYyBi b29sIG1hdGNoX2tleV9pbmRleChjb25zdCB2b2lkICphLCBjb25zdCB2b2lkICpiKQ0KPiDCoHN0 YXRpYyBib29sIG1hdGNoX2tleV9pZChjb25zdCB2b2lkICphLCBjb25zdCB2b2lkICpiKQ0KPiDC oHsNCj4gwqDCoMKgwqDCoMKgwqDCoGNvbnN0IHN0cnVjdCBtZXNoX3N1Ym5ldCAqc3VibmV0ID0g YTsNCj4gLcKgwqDCoMKgwqDCoMKgdWludDMyX3Qga2V5X2lkID0gTF9QVFJfVE9fVUlOVChiKTsN Cj4gK8KgwqDCoMKgwqDCoMKgdWludDMyX3QgbmV0X2tleV9pZCA9IExfUFRSX1RPX1VJTlQoYik7 DQo+IMKgDQo+IC3CoMKgwqDCoMKgwqDCoHJldHVybiAoa2V5X2lkID09IHN1Ym5ldC0+bmV0X2tl eV9jdXIpIHx8DQo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAoa2V5X2lkID09IHN1Ym5ldC0+bmV0 X2tleV91cGQpOw0KPiArwqDCoMKgwqDCoMKgwqByZXR1cm4gKG5ldF9rZXlfaWQgPT0gc3VibmV0 LT5uZXRfa2V5X2N1cikgfHwNCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoChuZXRfa2V5X2lkID09 IHN1Ym5ldC0+bmV0X2tleV91cGQpOw0KPiDCoH0NCj4gwqANCj4gwqBzdGF0aWMgYm9vbCBtYXRj aF9mcmllbmRfa2V5X2lkKGNvbnN0IHZvaWQgKmEsIGNvbnN0IHZvaWQgKmIpDQo+IMKgew0KPiDC oMKgwqDCoMKgwqDCoMKgY29uc3Qgc3RydWN0IG1lc2hfZnJpZW5kICpmcmllbmQgPSBhOw0KPiAt wqDCoMKgwqDCoMKgwqB1aW50MzJfdCBrZXlfaWQgPSBMX1BUUl9UT19VSU5UKGIpOw0KPiArwqDC oMKgwqDCoMKgwqB1aW50MzJfdCBuZXRfa2V5X2lkID0gTF9QVFJfVE9fVUlOVChiKTsNCj4gwqAN Cj4gLcKgwqDCoMKgwqDCoMKgcmV0dXJuIChrZXlfaWQgPT0gZnJpZW5kLT5uZXRfa2V5X2N1cikg fHwNCj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoChrZXlfaWQgPT0gZnJpZW5kLT5uZXRfa2V5X3Vw ZCk7DQo+ICvCoMKgwqDCoMKgwqDCoHJldHVybiAobmV0X2tleV9pZCA9PSBmcmllbmQtPm5ldF9r ZXlfY3VyKSB8fA0KPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgKG5ldF9rZXlfaWQgPT0gZnJpZW5k LT5uZXRfa2V5X3VwZCk7DQo+IMKgfQ0KPiDCoA0KPiDCoHN0YXRpYyB2b2lkIHNlbmRfaGJfcHVi bGljYXRpb24odm9pZCAqZGF0YSkNCj4gQEAgLTMyMiw5ICszMjIsOSBAQCBzdGF0aWMgdm9pZCBm cmVlX2ZyaWVuZF9pbnRlcm5hbHMoc3RydWN0IG1lc2hfZnJpZW5kICpmcm5kKQ0KPiDCoHN0YXRp YyB2b2lkIGZybmRfa3JfcGhhc2UxKHZvaWQgKmEsIHZvaWQgKmIpDQo+IMKgew0KPiDCoMKgwqDC oMKgwqDCoMKgc3RydWN0IG1lc2hfZnJpZW5kICpmcm5kID0gYTsNCj4gLcKgwqDCoMKgwqDCoMKg dWludDMyX3Qga2V5X2lkID0gTF9QVFJfVE9fVUlOVChiKTsNCj4gK8KgwqDCoMKgwqDCoMKgdWlu dDMyX3QgbmV0X2tleV9pZCA9IExfUFRSX1RPX1VJTlQoYik7DQo+IMKgDQo+IC3CoMKgwqDCoMKg wqDCoGZybmQtPm5ldF9rZXlfdXBkID0gbmV0X2tleV9mcm5kX2FkZChrZXlfaWQsIGZybmQtPmxw X2FkZHIsDQo+ICvCoMKgwqDCoMKgwqDCoGZybmQtPm5ldF9rZXlfdXBkID0gbmV0X2tleV9mcm5k X2FkZChuZXRfa2V5X2lkLCBmcm5kLT5scF9hZGRyLA0KPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBmcm5kLT5uZXQtPnNyY19hZGRyLCBmcm5kLT5scF9j bnQsIGZybmQtPmZuX2NudCk7DQo+IMKgfQ0KPiDCoA0KPiBAQCAtOTE4LDcgKzkxOCw3IEBAIHZv aWQgbWVzaF9uZXRfZ2V0X3NuYl9zdGF0ZShzdHJ1Y3QgbWVzaF9uZXQgKm5ldCwgdWludDhfdCAq ZmxhZ3MsDQo+IMKgfQ0KPiDCoA0KPiDCoGJvb2wgbWVzaF9uZXRfZ2V0X2tleShzdHJ1Y3QgbWVz aF9uZXQgKm5ldCwgYm9vbCBuZXdfa2V5LCB1aW50MTZfdCBpZHgsDQo+IC3CoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHVpbnQzMl90ICprZXlfaWQp DQo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oHVpbnQzMl90ICpuZXRfa2V5X2lkKQ0KPiDCoHsNCj4gwqDCoMKgwqDCoMKgwqDCoHN0cnVjdCBt ZXNoX3N1Ym5ldCAqc3VibmV0Ow0KPiDCoA0KPiBAQCAtOTMxLDE0ICs5MzEsMTQgQEAgYm9vbCBt ZXNoX25ldF9nZXRfa2V5KHN0cnVjdCBtZXNoX25ldCAqbmV0LCBib29sIG5ld19rZXksIHVpbnQx Nl90IGlkeCwNCj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gZmFsc2U7 DQo+IMKgDQo+IMKgwqDCoMKgwqDCoMKgwqBpZiAoIW5ld19rZXkpIHsNCj4gLcKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCprZXlfaWQgPSBzdWJuZXQtPm5ldF9rZXlfY3VyOw0KPiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgKm5ldF9rZXlfaWQgPSBzdWJuZXQtPm5ldF9rZXlf Y3VyOw0KPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJldHVybiB0cnVlOw0KPiDC oMKgwqDCoMKgwqDCoMKgfQ0KPiDCoA0KPiDCoMKgwqDCoMKgwqDCoMKgaWYgKCFzdWJuZXQtPm5l dF9rZXlfdXBkKQ0KPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJldHVybiBmYWxz ZTsNCj4gwqANCj4gLcKgwqDCoMKgwqDCoMKgKmtleV9pZCA9IHN1Ym5ldC0+bmV0X2tleV91cGQ7 DQo+ICvCoMKgwqDCoMKgwqDCoCpuZXRfa2V5X2lkID0gc3VibmV0LT5uZXRfa2V5X3VwZDsNCj4g wqDCoMKgwqDCoMKgwqDCoHJldHVybiB0cnVlOw0KPiDCoH0NCj4gwqANCj4gQEAgLTE3NjQsNyAr MTc2NCw3IEBAIG5vdF9mb3JfZnJpZW5kOg0KPiDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIHRydWU7 DQo+IMKgfQ0KPiDCoA0KPiAtc3RhdGljIHVpbnQxNl90IGtleV9pZF90b19uZXRfaWR4KHN0cnVj dCBtZXNoX25ldCAqbmV0LCB1aW50MzJfdCBrZXlfaWQpDQo+ICtzdGF0aWMgdWludDE2X3Qga2V5 X2lkX3RvX25ldF9pZHgoc3RydWN0IG1lc2hfbmV0ICpuZXQsIHVpbnQzMl90IG5ldF9rZXlfaWQp DQo+IMKgew0KPiDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IG1lc2hfc3VibmV0ICpzdWJuZXQ7DQo+ IMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgbWVzaF9mcmllbmQgKmZyaWVuZDsNCj4gQEAgLTE3NzMs MTkgKzE3NzMsMTkgQEAgc3RhdGljIHVpbnQxNl90IGtleV9pZF90b19uZXRfaWR4KHN0cnVjdCBt ZXNoX25ldCAqbmV0LCB1aW50MzJfdCBrZXlfaWQpDQo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgcmV0dXJuIE5FVF9JRFhfSU5WQUxJRDsNCj4gwqANCj4gwqDCoMKgwqDCoMKgwqDC oHN1Ym5ldCA9IGxfcXVldWVfZmluZChuZXQtPnN1Ym5ldHMsIG1hdGNoX2tleV9pZCwNCj4gLcKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBMX1VJTlRfVE9fUFRSKGtleV9pZCkp Ow0KPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoExfVUlOVF9UT19QVFIo bmV0X2tleV9pZCkpOw0KPiDCoA0KPiDCoMKgwqDCoMKgwqDCoMKgaWYgKHN1Ym5ldCkNCj4gwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gc3VibmV0LT5pZHg7DQo+IMKgDQo+ IMKgwqDCoMKgwqDCoMKgwqBmcmllbmQgPSBsX3F1ZXVlX2ZpbmQobmV0LT5mcmllbmRzLCBtYXRj aF9mcmllbmRfa2V5X2lkLA0KPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oExfVUlOVF9UT19QVFIoa2V5X2lkKSk7DQo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgTF9VSU5UX1RPX1BUUihuZXRfa2V5X2lkKSk7DQo+IMKgDQo+IMKgwqDCoMKgwqDC oMKgwqBpZiAoZnJpZW5kKQ0KPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJldHVy biBmcmllbmQtPm5ldF9pZHg7DQo+IMKgDQo+IMKgwqDCoMKgwqDCoMKgwqBmcmllbmQgPSBsX3F1 ZXVlX2ZpbmQobmV0LT5uZWdvdGlhdGlvbnMsIG1hdGNoX2ZyaWVuZF9rZXlfaWQsDQo+IC3CoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgTF9VSU5UX1RPX1BUUihrZXlfaWQpKTsN Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBMX1VJTlRfVE9fUFRSKG5l dF9rZXlfaWQpKTsNCj4gwqANCj4gwqDCoMKgwqDCoMKgwqDCoGlmIChmcmllbmQpDQo+IMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIGZyaWVuZC0+bmV0X2lkeDsNCj4gQEAg LTIwMjksNyArMjAyOSw3IEBAIHN0YXRpYyBib29sIHNlZ19yeGVkKHN0cnVjdCBtZXNoX25ldCAq bmV0LCBib29sIGZybmQsIHVpbnQzMl90IGl2X2luZGV4LA0KPiDCoMKgwqDCoMKgwqDCoMKgcmV0 dXJuIGZhbHNlOw0KPiDCoH0NCj4gwqANCj4gLXN0YXRpYyBib29sIGN0bF9yZWNlaXZlZChzdHJ1 Y3QgbWVzaF9uZXQgKm5ldCwgdWludDE2X3Qga2V5X2lkLA0KPiArc3RhdGljIGJvb2wgY3RsX3Jl Y2VpdmVkKHN0cnVjdCBtZXNoX25ldCAqbmV0LCB1aW50MTZfdCBuZXRfa2V5X2lkLA0KPiDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB1aW50MzJfdCBpdl9pbmRleCwgdWlu dDhfdCB0dGwsDQo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHVpbnQz Ml90IHNlcSwNCj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgdWludDE2 X3Qgc3JjLCB1aW50MTZfdCBkc3QsDQo+IEBAIC0yMDc5LDcgKzIwNzksNyBAQCBzdGF0aWMgYm9v bCBjdGxfcmVjZWl2ZWQoc3RydWN0IG1lc2hfbmV0ICpuZXQsIHVpbnQxNl90IGtleV9pZCwNCj4g wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIGZh bHNlOw0KPiDCoA0KPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHByaW50X3BhY2tl dCgiUngtTkVUX09QX0ZSTkRfUkVRVUVTVCIsIHBrdCwgbGVuKTsNCj4gLcKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoG5ldF9pZHggPSBrZXlfaWRfdG9fbmV0X2lkeChuZXQsIGtleV9pZCk7 DQo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBuZXRfaWR4ID0ga2V5X2lkX3RvX25l dF9pZHgobmV0LCBuZXRfa2V5X2lkKTsNCj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqBmcmllbmRfcmVxdWVzdChuZXQsIG5ldF9pZHgsIHNyYywgcGt0WzBdLCBwa3RbMV0sDQo+IMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqBsX2dldF9iZTMyKHBrdCArIDEpICYgMHhmZmZmZmYsDQo+IMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBsX2dldF9iZTE2 KHBrdCArIDUpLCBwa3RbN10sDQo+IEBAIC0yMjcwLDEzICsyMjcwLDEzIEBAIHN0YXRpYyB2b2lk IHNlbmRfbXNnX3BrdChzdHJ1Y3QgbWVzaF9uZXQgKm5ldCwgdWludDhfdCBjbnQsIHVpbnQxNl90 IGludGVydmFsLA0KPiDCoH0NCj4gwqANCj4gwqBzdGF0aWMgZW51bSBfcmVsYXlfYWR2aWNlIHBh Y2tldF9yZWNlaXZlZCh2b2lkICp1c2VyX2RhdGEsDQo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHVpbnQzMl90IGtleV9pZCwg dWludDMyX3QgaXZfaW5kZXgsDQo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHVpbnQzMl90IG5ldF9rZXlfaWQsIHVpbnQzMl90 IGl2X2luZGV4LA0KPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgY29uc3Qgdm9pZCAqZGF0YSwgdWludDhfdCBzaXplLCBpbnQ4 X3QgcnNzaSkNCj4gwqB7DQo+IMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgbWVzaF9uZXQgKm5ldCA9 IHVzZXJfZGF0YTsNCj4gwqDCoMKgwqDCoMKgwqDCoGNvbnN0IHVpbnQ4X3QgKm1zZyA9IGRhdGE7 DQo+IMKgwqDCoMKgwqDCoMKgwqB1aW50OF90IGFwcF9tc2dfbGVuOw0KPiAtwqDCoMKgwqDCoMKg wqB1aW50OF90IG5ldF90dGwsIG5ldF9rZXlfaWQsIG5ldF9zZWdPLCBuZXRfc2VnTiwgbmV0X29w Y29kZTsNCj4gK8KgwqDCoMKgwqDCoMKgdWludDhfdCBuZXRfdHRsLCBrZXlfYWlkLCBuZXRfc2Vn TywgbmV0X3NlZ04sIG5ldF9vcGNvZGU7DQo+IMKgwqDCoMKgwqDCoMKgwqB1aW50MzJfdCBuZXRf c2VxLCBjYWNoZV9jb29raWU7DQo+IMKgwqDCoMKgwqDCoMKgwqB1aW50MTZfdCBuZXRfc3JjLCBu ZXRfZHN0LCBuZXRfc2VxWmVybzsNCj4gwqDCoMKgwqDCoMKgwqDCoHVpbnQxNl90IG5ldF9pZHg7 DQo+IEBAIC0yMjg1LDcgKzIyODUsNyBAQCBzdGF0aWMgZW51bSBfcmVsYXlfYWR2aWNlIHBhY2tl dF9yZWNlaXZlZCh2b2lkICp1c2VyX2RhdGEsDQo+IMKgDQo+IMKgwqDCoMKgwqDCoMKgwqBtZW1j cHkocGFja2V0ICsgMiwgZGF0YSwgc2l6ZSk7DQo+IMKgDQo+IC3CoMKgwqDCoMKgwqDCoG5ldF9p ZHggPSBrZXlfaWRfdG9fbmV0X2lkeChuZXQsIGtleV9pZCk7DQo+ICvCoMKgwqDCoMKgwqDCoG5l dF9pZHggPSBrZXlfaWRfdG9fbmV0X2lkeChuZXQsIG5ldF9rZXlfaWQpOw0KPiDCoMKgwqDCoMKg wqDCoMKgaWYgKG5ldF9pZHggPT0gTkVUX0lEWF9JTlZBTElEKQ0KPiDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoHJldHVybiBSRUxBWV9OT05FOw0KPiDCoA0KPiBAQCAtMjI5NCw3ICsy Mjk0LDcgQEAgc3RhdGljIGVudW0gX3JlbGF5X2FkdmljZSBwYWNrZXRfcmVjZWl2ZWQodm9pZCAq dXNlcl9kYXRhLA0KPiDCoMKgwqDCoMKgwqDCoMKgaWYgKCFtZXNoX2NyeXB0b19wYWNrZXRfcGFy c2UocGFja2V0ICsgMiwgc2l6ZSwgJm5ldF9jdGwsICZuZXRfdHRsLA0KPiDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCZuZXRfc2VxLCAmbmV0X3NyYywgJm5ldF9kc3QsDQo+IMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgJmNhY2hlX2Nvb2tpZSwgJm5ldF9vcGNvZGUsDQo+IC3CoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAmbmV0X3NlZ21lbnRlZCwgJm5ldF9rZXlfaWQsICZuZXRfc3ptaWMsDQo+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAmbmV0X3NlZ21lbnRlZCwgJmtleV9haWQsICZuZXRfc3ptaWMsDQo+IMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgJm5ldF9yZWxheSwgJm5ldF9zZXFaZXJvLCAmbmV0X3NlZ08s DQo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgJm5ldF9zZWdOLCAmbXNnLCAmYXBwX21zZ19sZW4p KSB7DQo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgbF9lcnJvcigiRmFpbGVkIHRv IHBhcnNlIHBhY2tldCBjb250ZW50Iik7DQo+IEBAIC0yMzQ4LDcgKzIzNDgsNyBAQCBzdGF0aWMg ZW51bSBfcmVsYXlfYWR2aWNlIHBhY2tldF9yZWNlaXZlZCh2b2lkICp1c2VyX2RhdGEsDQo+IMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBuZXRf c2VxWmVybywNCj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoGxfZ2V0X2JlMzIobXNnICsgMykpOw0KPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB9IGVsc2Ugew0KPiAtwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBjdGxfcmVjZWl2ZWQo bmV0LCBrZXlfaWQsIGl2X2luZGV4LCBuZXRfdHRsLA0KPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBjdGxfcmVjZWl2ZWQobmV0 LCBrZXlfYWlkLCBpdl9pbmRleCwgbmV0X3R0bCwNCj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgbmV0X3NlcSwgbmV0X3NyYywgbmV0X2RzdCwNCj4gwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgbmV0X29wY29kZSwgcnNzaSwgbXNnLA0KPiDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoGFwcF9tc2dfbGVuKTsNCj4gQEAgLTIzNzMsMTQgKzIzNzMsMTQgQEAgc3RhdGlj IGVudW0gX3JlbGF5X2FkdmljZSBwYWNrZXRfcmVjZWl2ZWQodm9pZCAqdXNlcl9kYXRhLA0KPiDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB9IGVsc2Ugew0K PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgc2VnX3J4ZWQobmV0LCBOVUxMLCBpdl9pbmRleCwgbmV0X3R0bCwNCj4gwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgbmV0X3NlcSwgbmV0X2lkeCwgbmV0X3Ny YywNCj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBuZXRfZHN0LCBuZXRf a2V5X2lkLCBuZXRfc3ptaWMsDQo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgbmV0X2RzdCwga2V5X2FpZCwgbmV0X3N6bWljLA0KPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqBuZXRfc2VxWmVybywgbmV0X3NlZ08sIG5ldF9zZWdOLA0KPiDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBtc2csIGFwcF9tc2dfbGVuKTsNCj4g wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgfQ0KPiDCoA0K PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoH0gZWxzZSB7DQo+IMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoG1zZ19yeGVkKG5ldCwgTlVMTCwg aXZfaW5kZXgsIG5ldF90dGwsIG5ldF9zZXEsIG5ldF9pZHgsDQo+IC3CoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqBuZXRfc3JjLCBuZXRfZHN0LCBuZXRfa2V5X2lkLCBmYWxzZSwNCj4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoG5ldF9zcmMsIG5ldF9kc3QsIGtleV9haWQsIGZhbHNlLA0KPiDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoGZhbHNlLCBuZXRfc2VxICYgU0VRX1pFUk9fTUFTSywgbXNnLA0KPiDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoGFwcF9tc2dfbGVuKTsNCj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqB9DQo+IEBAIC0yNDE0LDcgKzI0MTQsNyBAQCBzdGF0aWMgdm9pZCBuZXRfcngo dm9pZCAqbmV0X3B0ciwgdm9pZCAqdXNlcl9kYXRhKQ0KPiDCoMKgwqDCoMKgwqDCoMKgZW51bSBf cmVsYXlfYWR2aWNlIHJlbGF5X2FkdmljZTsNCj4gwqDCoMKgwqDCoMKgwqDCoHVpbnQ4X3QgKm91 dDsNCj4gwqDCoMKgwqDCoMKgwqDCoHNpemVfdCBvdXRfc2l6ZTsNCj4gLcKgwqDCoMKgwqDCoMKg dWludDMyX3Qga2V5X2lkOw0KPiArwqDCoMKgwqDCoMKgwqB1aW50MzJfdCBuZXRfa2V5X2lkOw0K PiDCoMKgwqDCoMKgwqDCoMKgaW50OF90IHJzc2kgPSAwOw0KPiDCoMKgwqDCoMKgwqDCoMKgYm9v bCBpdmlfbmV0ID0gISEobmV0LT5pdl9pbmRleCAmIDEpOw0KPiDCoMKgwqDCoMKgwqDCoMKgYm9v bCBpdmlfcGt0ID0gISEoZGF0YS0+ZGF0YVswXSAmIDB4ODApOw0KPiBAQCAtMjQyMiwxMCArMjQy MiwxMCBAQCBzdGF0aWMgdm9pZCBuZXRfcngodm9pZCAqbmV0X3B0ciwgdm9pZCAqdXNlcl9kYXRh KQ0KPiDCoMKgwqDCoMKgwqDCoMKgLyogaWYgSVZJIGZsYWcgZGlmZmVycywgdXNlIHByZXZpb3Vz IElWIEluZGV4ICovDQo+IMKgwqDCoMKgwqDCoMKgwqB1aW50MzJfdCBpdl9pbmRleCA9IG5ldC0+ aXZfaW5kZXggLSAoaXZpX3BrdCBeIGl2aV9uZXQpOw0KPiDCoA0KPiAtwqDCoMKgwqDCoMKgwqBr ZXlfaWQgPSBuZXRfa2V5X2RlY3J5cHQoaXZfaW5kZXgsIGRhdGEtPmRhdGEsIGRhdGEtPmxlbiwN Cj4gK8KgwqDCoMKgwqDCoMKgbmV0X2tleV9pZCA9IG5ldF9rZXlfZGVjcnlwdChpdl9pbmRleCwg ZGF0YS0+ZGF0YSwgZGF0YS0+bGVuLA0KPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgJm91dCwgJm91dF9zaXplKTsNCj4gwqANCj4gLcKgwqDC oMKgwqDCoMKgaWYgKCFrZXlfaWQpDQo+ICvCoMKgwqDCoMKgwqDCoGlmICghbmV0X2tleV9pZCkN Cj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqByZXR1cm47DQo+IMKgDQo+IMKgwqDC oMKgwqDCoMKgwqBpZiAoIWRhdGEtPnNlZW4pIHsNCj4gQEAgLTI0MzksMTIgKzI0MzksMTIgQEAg c3RhdGljIHZvaWQgbmV0X3J4KHZvaWQgKm5ldF9wdHIsIHZvaWQgKnVzZXJfZGF0YSkNCj4gwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqByc3NpID0gZGF0YS0+aW5mby0+cnNzaTsNCj4g wqDCoMKgwqDCoMKgwqDCoH0NCj4gwqANCj4gLcKgwqDCoMKgwqDCoMKgcmVsYXlfYWR2aWNlID0g cGFja2V0X3JlY2VpdmVkKG5ldCwga2V5X2lkLCBpdl9pbmRleCwgb3V0LCBvdXRfc2l6ZSwNCj4g K8KgwqDCoMKgwqDCoMKgcmVsYXlfYWR2aWNlID0gcGFja2V0X3JlY2VpdmVkKG5ldCwgbmV0X2tl eV9pZCwgaXZfaW5kZXgsIG91dCwgb3V0X3NpemUsDQo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoHJzc2kpOw0KPiDCoMKgwqDCoMKgwqDCoMKgaWYgKHJlbGF5X2FkdmljZSA+IGRhdGEt PnJlbGF5X2FkdmljZSkgew0KPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGRhdGEt Pml2X2luZGV4ID0gaXZfaW5kZXg7DQo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg ZGF0YS0+cmVsYXlfYWR2aWNlID0gcmVsYXlfYWR2aWNlOw0KPiAtwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgZGF0YS0+a2V5X2lkID0ga2V5X2lkOw0KPiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgZGF0YS0+bmV0X2tleV9pZCA9IG5ldF9rZXlfaWQ7DQo+IMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgZGF0YS0+bmV0ID0gbmV0Ow0KPiDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoGRhdGEtPm91dCA9IG91dDsNCj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqBkYXRhLT5vdXRfc2l6ZSA9IG91dF9zaXplOw0KPiBAQCAtMjQ4Miw3ICsyNDgy LDcgQEAgc3RhdGljIHZvaWQgbmV0X21zZ19yZWN2KHZvaWQgKnVzZXJfZGF0YSwgc3RydWN0IG1l c2hfaW9fcmVjdl9pbmZvICppbmZvLA0KPiDCoA0KPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoG5ldF9kYXRhLm91dFsxXSAmPcKgIH5UVExfTUFTSzsNCj4gwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqBuZXRfZGF0YS5vdXRbMV0gfD0gdHRsIC0gMTsNCj4gLcKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoG5ldF9rZXlfZW5jcnlwdChuZXRfZGF0YS5rZXlfaWQsIG5l dF9kYXRhLml2X2luZGV4LA0KPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgbmV0X2tl eV9lbmNyeXB0KG5ldF9kYXRhLm5ldF9rZXlfaWQsIG5ldF9kYXRhLml2X2luZGV4LA0KPiDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoG5ldF9kYXRhLm91dCwgbmV0X2RhdGEub3V0X3NpemUpOw0KPiDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHNlbmRfcmVsYXlfcGt0KG5ldF9kYXRhLm5l dCwgbmV0X2RhdGEub3V0LCBuZXRfZGF0YS5vdXRfc2l6ZSk7DQo+IMKgwqDCoMKgwqDCoMKgwqB9 DQo+IEBAIC0yNzE5LDcgKzI3MTksNyBAQCBzdGF0aWMgdm9pZCBwcm9jZXNzX2JlYWNvbih2b2lk ICpuZXRfcHRyLCB2b2lkICp1c2VyX2RhdGEpDQo+IMKgDQo+IMKgwqDCoMKgwqDCoMKgwqAvKiBJ Z25vcmUgYmVhY29ucyBub3QgaW4gdGhpcyB1bml2ZXJzZSAqLw0KPiDCoMKgwqDCoMKgwqDCoMKg c3VibmV0ID0gbF9xdWV1ZV9maW5kKG5ldC0+c3VibmV0cywgbWF0Y2hfa2V5X2lkLA0KPiAtwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgTF9VSU5UX1RPX1BUUihiZWFjb25fZGF0YS0+a2V5X2lkKSk7DQo+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBMX1VJTlRfVE9fUFRSKGJlYWNvbl9kYXRhLT5uZXRfa2V5 X2lkKSk7DQo+IMKgDQo+IMKgwqDCoMKgwqDCoMKgwqBpZiAoIXN1Ym5ldCkNCj4gwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqByZXR1cm47DQo+IEBAIC0yNzQxLDEwICsyNzQxLDEwIEBA IHN0YXRpYyB2b2lkIHByb2Nlc3NfYmVhY29uKHZvaWQgKm5ldF9wdHIsIHZvaWQgKnVzZXJfZGF0 YSkNCj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB1cGRhdGVkIHw9IHVwZGF0ZV9p dl9pdnVfc3RhdGUobmV0LCBpdmksIGl2dSk7DQo+IMKgDQo+IMKgwqDCoMKgwqDCoMKgwqBpZiAo a3IgIT0gbG9jYWxfa3IpDQo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB1cGRhdGVk IHw9IHVwZGF0ZV9rcl9zdGF0ZShzdWJuZXQsIGtyLCBiZWFjb25fZGF0YS0+a2V5X2lkKTsNCj4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHVwZGF0ZWQgfD0gdXBkYXRlX2tyX3N0YXRl KHN1Ym5ldCwga3IsIGJlYWNvbl9kYXRhLT5uZXRfa2V5X2lkKTsNCj4gwqANCj4gwqDCoMKgwqDC oMKgwqDCoGlmICh1cGRhdGVkKQ0KPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgbmV0 X2tleV9iZWFjb25fcmVmcmVzaChiZWFjb25fZGF0YS0+a2V5X2lkLCBuZXQtPml2X2luZGV4LA0K PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgbmV0X2tleV9iZWFjb25fcmVmcmVzaChz dWJuZXQtPm5ldF9rZXlfdHgsIG5ldC0+aXZfaW5kZXgsDQo+IMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAhIShzdWJuZXQtPmty X3BoYXNlID09IEtFWV9SRUZSRVNIX1BIQVNFX1RXTyksDQo+IMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgbmV0LT5p dl91cGRhdGUpOw0KPiDCoH0NCj4gQEAgLTI3NjAsOCArMjc2MCw4IEBAIHN0YXRpYyB2b2lkIGJl YWNvbl9yZWN2KHZvaWQgKnVzZXJfZGF0YSwgc3RydWN0IG1lc2hfaW9fcmVjdl9pbmZvICppbmZv LA0KPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJldHVybjsNCj4gwqANCj4gwqDC oMKgwqDCoMKgwqDCoC8qIElnbm9yZSBOZXR3b3JrIElEcyB1bmtub3duIHRvIHRoaXMgZGFlbW9u ICovDQo+IC3CoMKgwqDCoMKgwqDCoGJlYWNvbl9kYXRhLmtleV9pZCA9IG5ldF9rZXlfbmV0d29y a19pZChkYXRhICsgMyk7DQo+IC3CoMKgwqDCoMKgwqDCoGlmICghYmVhY29uX2RhdGEua2V5X2lk KQ0KPiArwqDCoMKgwqDCoMKgwqBiZWFjb25fZGF0YS5uZXRfa2V5X2lkID0gbmV0X2tleV9uZXR3 b3JrX2lkKGRhdGEgKyAzKTsNCj4gK8KgwqDCoMKgwqDCoMKgaWYgKCFiZWFjb25fZGF0YS5uZXRf a2V5X2lkKQ0KPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJldHVybjsNCj4gwqAN Cj4gwqDCoMKgwqDCoMKgwqDCoC8qIEdldCBkYXRhIGJpdHMgZnJvbSBiZWFjb24gKi8NCj4gQEAg LTI3NzAsNyArMjc3MCw3IEBAIHN0YXRpYyB2b2lkIGJlYWNvbl9yZWN2KHZvaWQgKnVzZXJfZGF0 YSwgc3RydWN0IG1lc2hfaW9fcmVjdl9pbmZvICppbmZvLA0KPiDCoMKgwqDCoMKgwqDCoMKgYmVh Y29uX2RhdGEuaXZpID0gbF9nZXRfYmUzMihkYXRhICsgMTEpOw0KPiDCoA0KPiDCoMKgwqDCoMKg wqDCoMKgLyogVmFsaWRhdGUgYmVhY29uIGJlZm9yZSBhY2NlcHRpbmcgKi8NCj4gLcKgwqDCoMKg wqDCoMKgaWYgKCFuZXRfa2V5X3NuYl9jaGVjayhiZWFjb25fZGF0YS5rZXlfaWQsIGJlYWNvbl9k YXRhLml2aSwNCj4gK8KgwqDCoMKgwqDCoMKgaWYgKCFuZXRfa2V5X3NuYl9jaGVjayhiZWFjb25f ZGF0YS5uZXRfa2V5X2lkLCBiZWFjb25fZGF0YS5pdmksDQo+IMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgYmVhY29uX2RhdGEua3IsIGJlYWNvbl9kYXRhLml2dSwNCj4gwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqBsX2dldF9iZTY0KGRhdGEgKyAxNSkpKSB7DQo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgbF9lcnJvcigibWVzaF9jcnlwdG9fYmVhY29uIHZlcmlmeSBmYWlsZWQiKTsNCj4g QEAgLTI3ODAsMTMgKzI3ODAsMTMgQEAgc3RhdGljIHZvaWQgYmVhY29uX3JlY3Yodm9pZCAqdXNl cl9kYXRhLCBzdHJ1Y3QgbWVzaF9pb19yZWN2X2luZm8gKmluZm8sDQo+IMKgwqDCoMKgwqDCoMKg wqBsX3F1ZXVlX2ZvcmVhY2gobmV0cywgcHJvY2Vzc19iZWFjb24sICZiZWFjb25fZGF0YSk7DQo+ IMKgDQo+IMKgwqDCoMKgwqDCoMKgwqBpZiAoYmVhY29uX2RhdGEucHJvY2Vzc2VkKQ0KPiAtwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgbmV0X2tleV9iZWFjb25fc2VlbihiZWFjb25fZGF0 YS5rZXlfaWQpOw0KPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgbmV0X2tleV9iZWFj b25fc2VlbihiZWFjb25fZGF0YS5uZXRfa2V5X2lkKTsNCj4gwqB9DQo+IMKgDQo+IC12b2lkIG5l dF9sb2NhbF9iZWFjb24odWludDMyX3Qga2V5X2lkLCB1aW50OF90ICpiZWFjb24pDQo+ICt2b2lk IG5ldF9sb2NhbF9iZWFjb24odWludDMyX3QgbmV0X2tleV9pZCwgdWludDhfdCAqYmVhY29uKQ0K PiDCoHsNCj4gwqDCoMKgwqDCoMKgwqDCoHN0cnVjdCBuZXRfYmVhY29uX2RhdGEgYmVhY29uX2Rh dGEgPSB7DQo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAua2V5X2lkID0ga2V5X2lk LA0KPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgLm5ldF9rZXlfaWQgPSBuZXRfa2V5 X2lkLA0KPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoC5pdnUgPSAhIShiZWFjb25b Ml0gJiAweDAyKSwNCj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAua3IgPSAhIShi ZWFjb25bMl0gJiAweDAxKSwNCj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAuaXZp ID0gbF9nZXRfYmUzMihiZWFjb24gKyAxMSksDQo+IEBAIC0zMDYyLDcgKzMwNjIsNyBAQCB2b2lk IG1lc2hfbmV0X3NlbmRfc2VnKHN0cnVjdCBtZXNoX25ldCAqbmV0LCB1aW50MzJfdCBuZXRfa2V5 X2lkLA0KPiDCoMKgwqDCoMKgwqDCoMKgdWludDhfdCBwYWNrZXRbMzBdOw0KPiDCoMKgwqDCoMKg wqDCoMKgdWludDhfdCBwYWNrZXRfbGVuOw0KPiDCoMKgwqDCoMKgwqDCoMKgYm9vbCBzZWdtZW50 ZWQgPSAhISgoaGRyID4+IFNFR19IRFJfU0hJRlQpICYgdHJ1ZSk7DQo+IC3CoMKgwqDCoMKgwqDC oHVpbnQ4X3QgYXBwX2tleV9pZCA9IChoZHIgPj4gS0VZX0hEUl9TSElGVCkgJiBLRVlfSURfTUFT SzsNCj4gK8KgwqDCoMKgwqDCoMKgdWludDhfdCBrZXlfYWlkID0gKGhkciA+PiBLRVlfSERSX1NI SUZUKSAmIEtFWV9JRF9NQVNLOw0KPiDCoMKgwqDCoMKgwqDCoMKgYm9vbCBzem1pYyA9ICEhKCho ZHIgPj4gU1pNSUNfSERSX1NISUZUKSAmIHRydWUpOw0KPiDCoMKgwqDCoMKgwqDCoMKgdWludDE2 X3Qgc2VxWmVybyA9IChoZHIgPj4gU0VRX1pFUk9fSERSX1NISUZUKSAmIFNFUV9aRVJPX01BU0s7 DQo+IMKgwqDCoMKgwqDCoMKgwqB1aW50OF90IHNlZ08gPSAoaGRyID4+IFNFR09fSERSX1NISUZU KSAmIFNFR19NQVNLOw0KPiBAQCAtMzA3NSw3ICszMDc1LDcgQEAgdm9pZCBtZXNoX25ldF9zZW5k X3NlZyhzdHJ1Y3QgbWVzaF9uZXQgKm5ldCwgdWludDMyX3QgbmV0X2tleV9pZCwNCj4gwqDCoMKg wqDCoMKgwqDCoGxfZGVidWcoInNlZ086ICVkIiwgc2VnTyk7DQo+IMKgDQo+IMKgwqDCoMKgwqDC oMKgwqBpZiAoIW1lc2hfY3J5cHRvX3BhY2tldF9idWlsZChmYWxzZSwgdHRsLCBzZXEsIHNyYywg ZHN0LCAwLA0KPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgc2VnbWVudGVkLCBhcHBfa2V5X2lkLCBz em1pYywgZmFsc2UsDQo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBzZWdtZW50ZWQsIGtleV9haWQs IHN6bWljLCBmYWxzZSwNCj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBzZXFaZXJvLCBzZWdPLCBz ZWdOLCBzZWcsIHNlZ19sZW4sDQo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcGFja2V0ICsgMSwg JnBhY2tldF9sZW4pKSB7DQo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgbF9lcnJv cigiRmFpbGVkIHRvIGJ1aWxkIHBhY2tldCIpOw0KPiBAQCAtMzE5Nyw5ICszMTk3LDEwIEBAIGJv b2wgbWVzaF9uZXRfYXBwX3NlbmQoc3RydWN0IG1lc2hfbmV0ICpuZXQsIGJvb2wgZnJuZF9jcmVk LCB1aW50MTZfdCBzcmMsDQo+IMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gcmVzdWx0Ow0KPiDCoH0N Cj4gwqANCj4gLXZvaWQgbWVzaF9uZXRfYWNrX3NlbmQoc3RydWN0IG1lc2hfbmV0ICpuZXQsIHVp bnQzMl90IGtleV9pZCwgdWludDMyX3QgaXZfaW5kZXgsDQo+IC3CoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgdWludDhfdCB0dGwsIHVpbnQzMl90IHNlcSwgdWlu dDE2X3Qgc3JjLCB1aW50MTZfdCBkc3QsDQo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgYm9vbCBybHksIHVpbnQxNl90IHNlcVplcm8sIHVpbnQzMl90IGFj a19mbGFncykNCj4gK3ZvaWQgbWVzaF9uZXRfYWNrX3NlbmQoc3RydWN0IG1lc2hfbmV0ICpuZXQs IHVpbnQzMl90IG5ldF9rZXlfaWQsDQo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgdWludDMyX3QgaXZfaW5kZXgsIHVpbnQ4X3QgdHRsLCB1aW50MzJfdCBz ZXEsDQo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgdWlu dDE2X3Qgc3JjLCB1aW50MTZfdCBkc3QsIGJvb2wgcmx5LCB1aW50MTZfdCBzZXFaZXJvLA0KPiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHVpbnQzMl90IGFj a19mbGFncykNCj4gwqB7DQo+IMKgwqDCoMKgwqDCoMKgwqB1aW50MzJfdCBoZHI7DQo+IMKgwqDC oMKgwqDCoMKgwqB1aW50OF90IGRhdGFbN107DQo+IEBAIC0zMjE5LDEzICszMjIwLDEzIEBAIHZv aWQgbWVzaF9uZXRfYWNrX3NlbmQoc3RydWN0IG1lc2hfbmV0ICpuZXQsIHVpbnQzMl90IGtleV9p ZCwgdWludDMyX3QgaXZfaW5kZXgsDQo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcGt0ICsgMSwg JnBrdF9sZW4pKQ0KPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJldHVybjsNCj4g wqANCj4gLcKgwqDCoMKgwqDCoMKgaWYgKCFrZXlfaWQpIHsNCj4gK8KgwqDCoMKgwqDCoMKgaWYg KCFuZXRfa2V5X2lkKSB7DQo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgc3RydWN0 IG1lc2hfc3VibmV0ICpzdWJuZXQgPSBnZXRfcHJpbWFyeV9zdWJuZXQobmV0KTsNCj4gwqANCj4g LcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGtleV9pZCA9IHN1Ym5ldC0+bmV0X2tleV90 eDsNCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoG5ldF9rZXlfaWQgPSBzdWJuZXQt Pm5ldF9rZXlfdHg7DQo+IMKgwqDCoMKgwqDCoMKgwqB9DQo+IMKgDQo+IC3CoMKgwqDCoMKgwqDC oGlmICghbmV0X2tleV9lbmNyeXB0KGtleV9pZCwgaXZfaW5kZXgsIHBrdCArIDEsIHBrdF9sZW4p KSB7DQo+ICvCoMKgwqDCoMKgwqDCoGlmICghbmV0X2tleV9lbmNyeXB0KG5ldF9rZXlfaWQsIGl2 X2luZGV4LCBwa3QgKyAxLCBwa3RfbGVuKSkgew0KPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoGxfZXJyb3IoIkZhaWxlZCB0byBlbmNvZGUgcGFja2V0Iik7DQo+IMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuOw0KPiDCoMKgwqDCoMKgwqDCoMKgfQ0KPiBAQCAt MzIzNyw3ICszMjM4LDcgQEAgdm9pZCBtZXNoX25ldF9hY2tfc2VuZChzdHJ1Y3QgbWVzaF9uZXQg Km5ldCwgdWludDMyX3Qga2V5X2lkLCB1aW50MzJfdCBpdl9pbmRleCwNCj4gwqDCoMKgwqDCoMKg wqDCoHByaW50X3BhY2tldCgiVFg6IEZyaWVuZCBBQ0siLCBwa3QgKyAxLCBwa3RfbGVuKTsNCj4g wqB9DQo+IMKgDQo+IC12b2lkIG1lc2hfbmV0X3RyYW5zcG9ydF9zZW5kKHN0cnVjdCBtZXNoX25l dCAqbmV0LCB1aW50MzJfdCBrZXlfaWQsDQo+ICt2b2lkIG1lc2hfbmV0X3RyYW5zcG9ydF9zZW5k KHN0cnVjdCBtZXNoX25ldCAqbmV0LCB1aW50MzJfdCBuZXRfa2V5X2lkLA0KPiDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgdWlu dDE2X3QgbmV0X2lkeCwgdWludDMyX3QgaXZfaW5kZXgsDQo+IMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB1aW50OF90IHR0bCwg dWludDMyX3Qgc2VxLCB1aW50MTZfdCBzcmMsDQo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB1aW50MTZfdCBkc3QsIGNvbnN0 IHVpbnQ4X3QgKm1zZywNCj4gQEAgLTMyNjUsNyArMzI2Niw3IEBAIHZvaWQgbWVzaF9uZXRfdHJh bnNwb3J0X3NlbmQoc3RydWN0IG1lc2hfbmV0ICpuZXQsIHVpbnQzMl90IGtleV9pZCwNCj4gwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqByZXR1cm47DQo+IMKgDQo+IMKgwqDCoMKgwqDC oMKgwqAvKiBFbnF1ZXVlIGZvciBGcmllbmQgaWYgZm9yd2FyZGFibGUgYW5kIGZyb20gdXMgKi8N Cj4gLcKgwqDCoMKgwqDCoMKgaWYgKCFrZXlfaWQgJiYgc3JjID49IG5ldC0+c3JjX2FkZHIgJiYg c3JjIDw9IG5ldC0+bGFzdF9hZGRyKSB7DQo+ICvCoMKgwqDCoMKgwqDCoGlmICghbmV0X2tleV9p ZCAmJiBzcmMgPj0gbmV0LT5zcmNfYWRkciAmJiBzcmMgPD0gbmV0LT5sYXN0X2FkZHIpIHsNCj4g wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB1aW50MzJfdCBoZHIgPSBtc2dbMF0gPDwg T1BDT0RFX0hEUl9TSElGVDsNCj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB1aW50 OF90IGZybmRfdHRsID0gdHRsOw0KPiDCoA0KPiBAQCAtMzI3NywxNyArMzI3OCwxNyBAQCB2b2lk IG1lc2hfbmV0X3RyYW5zcG9ydF9zZW5kKHN0cnVjdCBtZXNoX25ldCAqbmV0LCB1aW50MzJfdCBr ZXlfaWQsDQo+IMKgDQo+IMKgwqDCoMKgwqDCoMKgwqAvKiBEZWxpdmVyIHRvIExvY2FsIGVudGl0 aWVzIGlmIGFwcGxpY2FibGUgKi8NCj4gwqDCoMKgwqDCoMKgwqDCoGlmICghKGRzdCAmIDB4ODAw MCkgJiYgc3JjID49IG5ldC0+c3JjX2FkZHIgJiYgc3JjIDw9IG5ldC0+bGFzdF9hZGRyKQ0KPiAt wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcmVzdWx0ID0gY3RsX3JlY2VpdmVkKG5ldCwg a2V5X2lkLCBpdl9pbmRleCwgdHRsLA0KPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg cmVzdWx0ID0gY3RsX3JlY2VpdmVkKG5ldCwgbmV0X2tleV9pZCwgaXZfaW5kZXgsIHR0bCwNCj4g wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBtZXNoX25ldF9uZXh0X3NlcV9udW0obmV0KSwgc3JjLCBk c3QsDQo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgbXNnWzBdLCAwLCBtc2cgKyAxLCBtc2dfbGVu IC0gMSk7DQo+IMKgDQo+IC3CoMKgwqDCoMKgwqDCoGlmICgha2V5X2lkKSB7DQo+ICvCoMKgwqDC oMKgwqDCoGlmICghbmV0X2tleV9pZCkgew0KPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoHN0cnVjdCBtZXNoX3N1Ym5ldCAqc3VibmV0ID0gbF9xdWV1ZV9maW5kKG5ldC0+c3VibmV0 cywNCj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoG1hdGNoX2tleV9pbmRleCwgTF9VSU5UX1RPX1BUUihuZXRfaWR4KSk7DQo+ IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKCFzdWJuZXQpDQo+IMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJldHVybjsNCj4gwqANCj4g LcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGtleV9pZCA9IHN1Ym5ldC0+bmV0X2tleV90 eDsNCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoG5ldF9rZXlfaWQgPSBzdWJuZXQt Pm5ldF9rZXlfdHg7DQo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgdXNlX3NlcSA9 IG1lc2hfbmV0X25leHRfc2VxX251bShuZXQpOw0KPiDCoA0KPiDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoGlmIChyZXN1bHQgfHwgKGRzdCA+PSBuZXQtPnNyY19hZGRyICYmIGRzdCA8 PSBuZXQtPmxhc3RfYWRkcikpDQo+IEBAIC0zMjk5LDcgKzMzMDAsNyBAQCB2b2lkIG1lc2hfbmV0 X3RyYW5zcG9ydF9zZW5kKHN0cnVjdCBtZXNoX25ldCAqbmV0LCB1aW50MzJfdCBrZXlfaWQsDQo+ IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqBtc2dfbGVuIC0gMSwgcGt0ICsgMSwgJnBrdF9sZW4pKQ0KPiDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoHJldHVybjsNCj4gwqANCj4gLcKgwqDCoMKgwqDCoMKgaWYgKCFu ZXRfa2V5X2VuY3J5cHQoa2V5X2lkLCBpdl9pbmRleCwgcGt0ICsgMSwgcGt0X2xlbikpIHsNCj4g K8KgwqDCoMKgwqDCoMKgaWYgKCFuZXRfa2V5X2VuY3J5cHQobmV0X2tleV9pZCwgaXZfaW5kZXgs IHBrdCArIDEsIHBrdF9sZW4pKSB7DQo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg bF9lcnJvcigiRmFpbGVkIHRvIGVuY29kZSBwYWNrZXQiKTsNCj4gwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqByZXR1cm47DQo+IMKgwqDCoMKgwqDCoMKgwqB9DQo+IGRpZmYgLS1naXQg YS9tZXNoL25ldC5oIGIvbWVzaC9uZXQuaA0KPiBpbmRleCA0NjVkODg5MDkuLjFjMmI1ZTdjNiAx MDA2NDQNCj4gLS0tIGEvbWVzaC9uZXQuaA0KPiArKysgYi9tZXNoL25ldC5oDQo+IEBAIC0xODYs MzEgKzE4Niw2IEBAIHN0cnVjdCBtZXNoX2ZyaWVuZCB7DQo+IMKgwqDCoMKgwqDCoMKgwqB9IHU7 DQo+IMKgfTsNCj4gwqANCj4gLXN0cnVjdCBtZXNoX2ZybmRfcGt0IHsNCj4gLcKgwqDCoMKgwqDC oMKgdWludDMyX3QgaXZfaW5kZXg7DQo+IC3CoMKgwqDCoMKgwqDCoHVpbnQzMl90IHNlcTsNCj4g LcKgwqDCoMKgwqDCoMKgdWludDE2X3Qgc3JjOw0KPiAtwqDCoMKgwqDCoMKgwqB1aW50MTZfdCBk c3Q7DQo+IC3CoMKgwqDCoMKgwqDCoHVpbnQxNl90IHNpemU7DQo+IC3CoMKgwqDCoMKgwqDCoHVp bnQ4X3Qgc2VnTjsNCj4gLcKgwqDCoMKgwqDCoMKgdWludDhfdCBzZWdPOw0KPiAtwqDCoMKgwqDC oMKgwqB1aW50OF90IHR0bDsNCj4gLcKgwqDCoMKgwqDCoMKgdWludDhfdCB0YzsNCj4gLcKgwqDC oMKgwqDCoMKgYm9vbCBzem1pY3Q7DQo+IC3CoMKgwqDCoMKgwqDCoHVuaW9uIHsNCj4gLcKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHN0cnVjdCB7DQo+IC3CoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgdWludDhfdCBrZXlfaWQ7DQo+IC3CoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqB9IG07DQo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqBzdHJ1Y3Qgew0KPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoHVpbnQxNl90IHNlcTA7DQo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB9IGE7 DQo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3Qgew0KPiAtwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHVpbnQ4X3Qgb3Bjb2RlOw0KPiAt wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgfSBjOw0KPiAtwqDCoMKgwqDCoMKgwqB9IHU7 DQo+IC3CoMKgwqDCoMKgwqDCoHVpbnQ4X3QgZGF0YVtdOw0KPiAtfTsNCj4gLQ0KPiDCoHN0cnVj dCBtZXNoX2ZyaWVuZF9zZWdfb25lIHsNCj4gwqDCoMKgwqDCoMKgwqDCoHVpbnQzMl90IGhkcjsN Cj4gwqDCoMKgwqDCoMKgwqDCoHVpbnQzMl90IHNlcTsNCj4gQEAgLTI2MSw3ICsyMzYsNyBAQCB2 b2lkIG1lc2hfbmV0X3NldF9mcm5kX3NlcShzdHJ1Y3QgbWVzaF9uZXQgKm5ldCwgYm9vbCBzZXEp Ow0KPiDCoHVpbnQxNl90IG1lc2hfbmV0X2dldF9hZGRyZXNzKHN0cnVjdCBtZXNoX25ldCAqbmV0 KTsNCj4gwqBib29sIG1lc2hfbmV0X3JlZ2lzdGVyX3VuaWNhc3Qoc3RydWN0IG1lc2hfbmV0ICpu ZXQsDQo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgdWludDE2X3QgdW5pY2FzdCwgdWludDhfdCBu dW1fZWxlKTsNCj4gLXZvaWQgbmV0X2xvY2FsX2JlYWNvbih1aW50MzJfdCBrZXlfaWQsIHVpbnQ4 X3QgKmJlYWNvbik7DQo+ICt2b2lkIG5ldF9sb2NhbF9iZWFjb24odWludDMyX3QgbmV0X2tleV9p ZCwgdWludDhfdCAqYmVhY29uKTsNCj4gwqBib29sIG1lc2hfbmV0X3NldF9iZWFjb25fbW9kZShz dHJ1Y3QgbWVzaF9uZXQgKm5ldCwgYm9vbCBlbmFibGUpOw0KPiDCoGJvb2wgbWVzaF9uZXRfc2V0 X3Byb3h5X21vZGUoc3RydWN0IG1lc2hfbmV0ICpuZXQsIGJvb2wgZW5hYmxlKTsNCj4gwqBib29s IG1lc2hfbmV0X3NldF9yZWxheV9tb2RlKHN0cnVjdCBtZXNoX25ldCAqbmV0LCBib29sIGVuYWJs ZSwgdWludDhfdCBjbnQsDQo+IEBAIC0yNzgsMjMgKzI1MywyMyBAQCB1aW50MzJfdCBtZXNoX25l dF9nZXRfaXZfaW5kZXgoc3RydWN0IG1lc2hfbmV0ICpuZXQpOw0KPiDCoHZvaWQgbWVzaF9uZXRf Z2V0X3NuYl9zdGF0ZShzdHJ1Y3QgbWVzaF9uZXQgKm5ldCwNCj4gwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqB1aW50OF90ICpmbGFncywgdWludDMyX3QgKml2X2luZGV4KTsNCj4gwqBib29sIG1lc2hf bmV0X2dldF9rZXkoc3RydWN0IG1lc2hfbmV0ICpuZXQsIGJvb2wgbmV3X2tleSwgdWludDE2X3Qg aWR4LA0KPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqB1aW50MzJfdCAqa2V5X2lkKTsNCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgdWludDMyX3QgKm5ldF9rZXlfaWQpOw0KPiDCoGJvb2wg bWVzaF9uZXRfYXR0YWNoKHN0cnVjdCBtZXNoX25ldCAqbmV0LCBzdHJ1Y3QgbWVzaF9pbyAqaW8p Ow0KPiDCoHN0cnVjdCBtZXNoX2lvICptZXNoX25ldF9kZXRhY2goc3RydWN0IG1lc2hfbmV0ICpu ZXQpOw0KPiDCoHN0cnVjdCBsX3F1ZXVlICptZXNoX25ldF9nZXRfYXBwX2tleXMoc3RydWN0IG1l c2hfbmV0ICpuZXQpOw0KPiDCoA0KPiAtdm9pZCBtZXNoX25ldF90cmFuc3BvcnRfc2VuZChzdHJ1 Y3QgbWVzaF9uZXQgKm5ldCwgdWludDMyX3Qga2V5X2lkLA0KPiArdm9pZCBtZXNoX25ldF90cmFu c3BvcnRfc2VuZChzdHJ1Y3QgbWVzaF9uZXQgKm5ldCwgdWludDMyX3QgbmV0X2tleV9pZCwNCj4g wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoHVpbnQxNl90IG5ldF9pZHgsIHVpbnQzMl90IGl2X2luZGV4LA0KPiDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgdWlu dDhfdCB0dGwsIHVpbnQzMl90IHNlcSwgdWludDE2X3Qgc3JjLA0KPiDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgdWludDE2X3Qg ZHN0LCBjb25zdCB1aW50OF90ICptc2csDQo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB1aW50MTZfdCBtc2dfbGVuKTsNCj4g wqANCj4gwqBib29sIG1lc2hfbmV0X2FwcF9zZW5kKHN0cnVjdCBtZXNoX25ldCAqbmV0LCBib29s IGZybmRfY3JlZCwgdWludDE2X3Qgc3JjLA0KPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB1aW50MTZfdCBkc3QsIHVpbnQ4X3Qg a2V5X2lkLCB1aW50MTZfdCBuZXRfaWR4LA0KPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB1aW50MTZfdCBkc3QsIHVpbnQ4X3Qg a2V5X2FpZCwgdWludDE2X3QgbmV0X2lkeCwNCj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHVpbnQ4X3QgdHRsLCB1aW50OF90 IGNudCwgdWludDE2X3QgaW50ZXJ2YWwsDQo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB1aW50MzJfdCBzZXEsIHVpbnQzMl90 IGl2X2luZGV4LCBib29sIHNlZ21lbnRlZCwNCj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGJvb2wgc3ptaWMsIGNvbnN0IHZv aWQgKm1zZywgdWludDE2X3QgbXNnX2xlbik7DQo+IC12b2lkIG1lc2hfbmV0X2Fja19zZW5kKHN0 cnVjdCBtZXNoX25ldCAqbmV0LCB1aW50MzJfdCBrZXlfaWQsDQo+ICt2b2lkIG1lc2hfbmV0X2Fj a19zZW5kKHN0cnVjdCBtZXNoX25ldCAqbmV0LCB1aW50MzJfdCBuZXRfa2V5X2lkLA0KPiDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgdWludDMyX3QgaXZfaW5kZXgsIHVpbnQ4X3QgdHRsLCB1aW50MzJfdCBzZXEsDQo+IMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqB1aW50MTZfdCBzcmMsIHVpbnQxNl90IGRzdCwgYm9vbCBybHksDQo+IMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB1aW50MTZf dCBzZXFaZXJvLCB1aW50MzJfdCBhY2tfZmxhZ3MpOw0KPiBAQCAtMzE3LDcgKzI5Miw3IEBAIGlu dCBtZXNoX25ldF9rZXlfcmVmcmVzaF9waGFzZV9zZXQoc3RydWN0IG1lc2hfbmV0ICpuZXQsIHVp bnQxNl90IG5ldF9pZHgsDQo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqB1aW50OF90IHRyYW5zaXRpb24pOw0KPiDCoGludCBtZXNoX25ldF9r ZXlfcmVmcmVzaF9waGFzZV9nZXQoc3RydWN0IG1lc2hfbmV0ICpuZXQsIHVpbnQxNl90IG5ldF9p ZHgsDQo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqB1aW50OF90ICpwaGFzZSk7DQo+IC12b2lkIG1lc2hfbmV0X3NlbmRfc2VnKHN0cnVjdCBt ZXNoX25ldCAqbmV0LCB1aW50MzJfdCBrZXlfaWQsDQo+ICt2b2lkIG1lc2hfbmV0X3NlbmRfc2Vn KHN0cnVjdCBtZXNoX25ldCAqbmV0LCB1aW50MzJfdCBuZXRfa2V5X2lkLA0KPiDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgdWlu dDMyX3QgaXZfaW5kZXgsIHVpbnQ4X3QgdHRsLCB1aW50MzJfdCBzZXEsDQo+IMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB1aW50 MTZfdCBzcmMsIHVpbnQxNl90IGRzdCwgdWludDMyX3QgaGRyLA0KPiDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgY29uc3Qgdm9p ZCAqc2VnLCB1aW50MTZfdCBzZWdfbGVuKTsNCg0K