Received: by 2002:a25:868d:0:0:0:0:0 with SMTP id z13csp423135ybk; Sat, 9 May 2020 07:00:53 -0700 (PDT) X-Google-Smtp-Source: APiQypKZm5cTdRI+j5nrsL5ECJQf9tQv3dxPSYds+YD76zRNAi1ET4AzAXwmT93MhP/3QusnTOIl X-Received: by 2002:a17:906:4e02:: with SMTP id z2mr6081737eju.212.1589032852889; Sat, 09 May 2020 07:00:52 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1589032852; cv=pass; d=google.com; s=arc-20160816; b=k175cbtFFeYkX08J91DvHdFInJN+W7MLEEMF14Ovnduge3T0I2FllCxH5RU/jcOtPn J5zz4A2najmMzqeCkq7nKFE5d1m5XxGJ8tTjPxr7D7P1XWTExasSaGRjo5fhiQy6ANuY bktmo+LuitqFOTfkclQIT/Ue9lF05ID0+muy/C/QZLIykOpuvT5817v3/qQbOw6Y/rj1 GHEQBGQpr22GX4EHV0WBW7DTNBBF4P1xOL6y6pNq6LoE4PV0QQcIfQqEnTkS9MNaaMTo N1xE2p9BaJufTF/TRF/dQs3ts3Dd708EB3R7GZuI9d+PbXPl68CkqFQFc7HiXgjxJ6fR 3A3w== 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=H/Wdt3eY0KOVYNjybJMLRRUPVnAzTZPztdQ3KPnAfT0=; b=Kj18sr7C87dLIM/7n45D/LTmw7OD9e39cGR66RO0XS3brzH3+hM9Rxv/IBH/1XRnbr NcP2SKeY9i1gywvP/+jGuLWvNzvs+AYp8RzlC25Puzq8tE6tRloyTjbROLrOGL5WO94j KjSldGFFN952elKmfZx38f8Teg3qS/0PXZ5vKCL02HJheqMy7DMRT62PeppdMM41dVH7 yTODLyIa0qfDBmYumc4AMR33fxI36N2haATfwaeEFkDtjYW/I3c6nbe0qhT7pQ6nuubD 2b/6EahyRgC9Xm72129qyrqPgPo9cIrMBnDaUwPVUjM8kXLDtNS0C/0PMVQOoV8GvU+2 i86Q== ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@intel.onmicrosoft.com header.s=selector2-intel-onmicrosoft-com header.b=d79MjoyS; arc=pass (i=1 spf=pass spfdomain=intel.com dkim=pass dkdomain=intel.com dmarc=pass fromdomain=intel.com); spf=pass (google.com: domain of linux-bluetooth-owner@vger.kernel.org designates 23.128.96.18 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. [23.128.96.18]) by mx.google.com with ESMTP id q11si23177edr.152.2020.05.09.07.00.26; Sat, 09 May 2020 07:00:52 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-bluetooth-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@intel.onmicrosoft.com header.s=selector2-intel-onmicrosoft-com header.b=d79MjoyS; arc=pass (i=1 spf=pass spfdomain=intel.com dkim=pass dkdomain=intel.com dmarc=pass fromdomain=intel.com); spf=pass (google.com: domain of linux-bluetooth-owner@vger.kernel.org designates 23.128.96.18 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 S1726013AbgEIN5w (ORCPT + 99 others); Sat, 9 May 2020 09:57:52 -0400 Received: from mga17.intel.com ([192.55.52.151]:4955 "EHLO mga17.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727810AbgEIN5v (ORCPT ); Sat, 9 May 2020 09:57:51 -0400 IronPort-SDR: 421GNYrrdbkEIF02Rs6YptryzbKjPQ2tfvq3sAomukcgS6msgc/qFkK6noPBF72Sb8+zZgZn4S rJ3yNXbvRBkQ== X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga003.fm.intel.com ([10.253.24.29]) by fmsmga107.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 09 May 2020 06:57:49 -0700 IronPort-SDR: E3CwH5Oi/WPFDBvKJxAeWSTYCCbpeNM03HOiy/5FS6DOv7RGS//SlvPTQwa4cMEssF05LnWvBY HGmGQAJZPYjQ== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.73,372,1583222400"; d="scan'208";a="305756093" Received: from orsmsx103.amr.corp.intel.com ([10.22.225.130]) by FMSMGA003.fm.intel.com with ESMTP; 09 May 2020 06:57:49 -0700 Received: from orsmsx158.amr.corp.intel.com (10.22.240.20) by ORSMSX103.amr.corp.intel.com (10.22.225.130) with Microsoft SMTP Server (TLS) id 14.3.439.0; Sat, 9 May 2020 06:57:49 -0700 Received: from ORSEDG001.ED.cps.intel.com (10.7.248.4) by ORSMSX158.amr.corp.intel.com (10.22.240.20) with Microsoft SMTP Server (TLS) id 14.3.439.0; Sat, 9 May 2020 06:57:49 -0700 Received: from NAM11-CO1-obe.outbound.protection.outlook.com (104.47.56.176) by edgegateway.intel.com (134.134.137.100) with Microsoft SMTP Server (TLS) id 14.3.439.0; Sat, 9 May 2020 06:57:49 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=d3mYbDvG++rL0GI6EuG+iZM9e+sl1jcvZ872ftXUsgM+NRtE6ksAwN7F38YPrr1c2fCQ4Iyx/stF45XIXfkXX6MBSgRZ/8eo5YiFJTlkm36fD79MCoMROU6B6kqMoybw/8b3V2evPhmuZcIVyHXEjI8GhW077c1e+aXeNdweLEoeaf9N/m6P7QNrLu8QUeTHoqDzmZ1m7RORm+U8G50hVdx5My/+WuIzRdeGZEUSCZvGzwnE/TaAfNoRw6VBLzxIi+qWZ6jsLR9xiTAdmqWrtwCnT694FaK+eeU2VydX+xSfPyw7pVYYzO1X0olAhW7RgglSnq48m2ARAqOcCpcY0Q== 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=H/Wdt3eY0KOVYNjybJMLRRUPVnAzTZPztdQ3KPnAfT0=; b=CVlBqkYez4jbu2ULomJkV0hhElI0aF5QgdUvm3fBd/rcLBim+GYM2OKDdF7fto/WBLRfYHiD6TEIY4rcpVEKQLZKOZwzLdyxPjDHKTzwZI18RNHhJyH4UQ3h9Vdu/yCrUxPws7ihpMaxkd4mPl6U5KKu3zzEgn+R8fhHB2L2Xh/HU/9/Px+aJ8L1BJVbnX4ehbMR7fMY/yaNtS/bTSaKev5NAd3iaajp9kq3VRcnHuVOacdK/F5EIDtmV2esM4vXLUbQ1cVDt8q2yYG1dfQd9H0AavbTn/ibPQLJ+hRPBpGn1ythM/ISXrD+2DzBLuXlSa3tuafXZdmiKvoLldCs5w== 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=H/Wdt3eY0KOVYNjybJMLRRUPVnAzTZPztdQ3KPnAfT0=; b=d79MjoySJVx3dNuD69SmAnLdPNn/cNuFY0rp6zYo/yotwpIV5oSWfAumb+2KEgLnHs0g+nb7TY0dtHH3M7CuM9gYlQZiGXBsI2Efwjjjc4LeL4UkZSknXLspaqJ/Jx7/MBSPvHCtjSSxtZfCUY9o1qqRq1cZL5d5CRrHKPf7LMk= Received: from MW3PR11MB4539.namprd11.prod.outlook.com (2603:10b6:303:2f::13) by MW3PR11MB4617.namprd11.prod.outlook.com (2603:10b6:303:59::24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2979.29; Sat, 9 May 2020 13:57:47 +0000 Received: from MW3PR11MB4539.namprd11.prod.outlook.com ([fe80::5b4:500e:f6a0:1ac0]) by MW3PR11MB4539.namprd11.prod.outlook.com ([fe80::5b4:500e:f6a0:1ac0%5]) with mapi id 15.20.2979.033; Sat, 9 May 2020 13:57:47 +0000 From: "Gix, Brian" To: "linux-bluetooth@vger.kernel.org" , "Stotland, Inga" Subject: Re: [PATCH BlueZ] tools/mesh-cfgclient: Save node's composition in config Thread-Topic: [PATCH BlueZ] tools/mesh-cfgclient: Save node's composition in config Thread-Index: AQHWJKQoEoL2r1BsLEKWf6i3P+Fj7qifyDgA Date: Sat, 9 May 2020 13:57:46 +0000 Message-ID: <4220ecbe6452b74324045a2c52f100ac2aefb29e.camel@intel.com> References: <20200507191702.13563-1-inga.stotland@intel.com> In-Reply-To: <20200507191702.13563-1-inga.stotland@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: vger.kernel.org; dkim=none (message not signed) header.d=none;vger.kernel.org; dmarc=none action=none header.from=intel.com; x-originating-ip: [192.55.55.41] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: e80fde72-5bda-42b7-8f62-08d7f420f446 x-ms-traffictypediagnostic: MW3PR11MB4617: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:1122; x-forefront-prvs: 03982FDC1D x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: u9ckoMeVy9xiREfgUEPDG4nVU6osVE2nVtO7pox6NXweUEZfa8RKQJXmo5cEZtuTYagEmx0zW1j1Wo/bHgYib6G0+8EWiFYWBp6dpQlPuE4CqkW9dlQKHnoFWTeZ3aCwA5c2DZ6rhjJ/2sVfX+KpxY7nP68oJYx+ln188RqQw1x+wRLkqwCajryQNdNIJomL1Sht/YrVwd5c9OUBeIi3Lz7lp1D/iyMDLJglSPbsdmklaQEfuEuHPRY5m3aTLlrddJ5JaaOWR/5/whEHWIWLA1aPKMvo1GEAvtcmFBuDM9anRVy7pwePvAKOonm+8+Hp+gduPkj0hMUQ4tzOCXYp8eC+RhOMZtyrqJeWY2PyIDsU55qMuFJZhbQLbnLL0coRfTvTPOs2too1k3mzvRV7UqNcdZiU0+YdnAIbgXIiB2Uz5DxAR3Z3sSrO7qL3I64UrOecWqvi6vDcIP4FWpJeC5QPlewXHS/EjBtYlqXUhV3gVifvA33QQTyqXeL0wXZqSEjhnhVw1iwDJ+O3cD31+Q== 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:(396003)(346002)(376002)(136003)(366004)(39860400002)(33430700001)(33440700001)(316002)(2616005)(6636002)(2906002)(478600001)(5660300002)(30864003)(8676002)(6486002)(8936002)(6506007)(66476007)(91956017)(36756003)(6512007)(64756008)(76116006)(186003)(66556008)(66946007)(66446008)(110136005)(26005)(71200400001)(86362001);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata: cMQfmfD/6VZ2eXqPNkaEc9wy2TKnCksy7WgDzIt7/fWezCtKR+fAjk4zWcriHmALZ4IhY5mc7zMT3dWV1E6adBqiZOVW7smD7yUR8iWSHfJjltDHEBJk6PhPROYsnXXO+xIC40sJMJbiu95RYoqgPFT0Gm3Dt9parn/3F+zg14YS9DJZyC13Q/e2Mw6tm5UWwDP5cLtZpTOh0PrhUoRX8h752cntQ1sbyeGA4V5unViFEev7583No+i+vU+9a9/WmUJ29T9F0q+iZK3yEi1tM6jQsRxeQoeaiH5k2+82YJPZEReVaknefa2/TTAj0dJnh6ZcNyxG1qrVOAIw0hFE/yYt5plit2b/bjvOu5ZWcfA9aiyW+EqATqjL2ta4CmU1OxSONPpVJtRFUZwcCvNsA1u0cp5nkLnRHsADovGEWnd6FNSyifX/b9vU9vZksMvgrtC5LKQoNOVSL4/kE6QqIDQ5LbpXhupvylMF308/OAw= Content-Type: text/plain; charset="utf-8" Content-ID: Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-CrossTenant-Network-Message-Id: e80fde72-5bda-42b7-8f62-08d7f420f446 X-MS-Exchange-CrossTenant-originalarrivaltime: 09 May 2020 13:57:46.9305 (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: Ex1QKe4rvrygqEZpPhek7+6bgs18mfe+AHjcTAnW9kdnuNiX4CpwBpgglc0LhibizuahovKJJdRp/vdkhgl1hg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MW3PR11MB4617 X-OriginatorOrg: intel.com Sender: linux-bluetooth-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-bluetooth@vger.kernel.org QXBwbGllZA0KT24gVGh1LCAyMDIwLTA1LTA3IGF0IDEyOjE3IC0wNzAwLCBJbmdhIFN0b3RsYW5k IHdyb3RlOg0KPiBTdG9yZSByZW1vdGUgbm9kZSdzIGNvbXBvc2l0aW9uIGFmdGVyIHN1Y2Nlc3Nm dWwgY29tcGxldGlvbg0KPiBvZiAiY29tcG9zaXRpb24tZ2V0IiBjb21tYW5kIChjb25maWcgbWVu dSkuDQo+IFNob3cgbW9kZWwgSURzIHdoZW4gcHJpbnRpbmcgbm9kZSBpbmZvIGZvciAibGlzdC1u b2RlcyIgY29tbWFuZA0KPiAobWFpbiBtZW51KS4NCj4gLS0tDQo+ICB0b29scy9tZXNoL2NmZ2Ns aS5jICB8ICAgMiArDQo+ICB0b29scy9tZXNoL21lc2gtZGIuYyB8IDI5NCArKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tDQo+ICB0b29scy9tZXNoL21lc2gtZGIuaCB8 ICAxMCArLQ0KPiAgdG9vbHMvbWVzaC9yZW1vdGUuYyAgfCAgOTMgKysrKysrKysrKysrKy0NCj4g IHRvb2xzL21lc2gvcmVtb3RlLmggIHwgICAyICsNCj4gIDUgZmlsZXMgY2hhbmdlZCwgMzc0IGlu c2VydGlvbnMoKyksIDI3IGRlbGV0aW9ucygtKQ0KPiANCj4gZGlmZiAtLWdpdCBhL3Rvb2xzL21l c2gvY2ZnY2xpLmMgYi90b29scy9tZXNoL2NmZ2NsaS5jDQo+IGluZGV4IGI5NmM2YzllNi4uMjE4 ZTgyYzUwIDEwMDY0NA0KPiAtLS0gYS90b29scy9tZXNoL2NmZ2NsaS5jDQo+ICsrKyBiL3Rvb2xz L21lc2gvY2ZnY2xpLmMNCj4gQEAgLTQzNCw2ICs0MzQsOCBAQCBzdGF0aWMgYm9vbCBtc2dfcmVj dmQodWludDE2X3Qgc3JjLCB1aW50MTZfdCBpZHgsIHVpbnQ4X3QgKmRhdGEsDQo+ICANCj4gIAkJ cHJpbnRfY29tcG9zaXRpb24oZGF0YSwgbGVuKTsNCj4gIA0KPiArCQlpZiAoIW1lc2hfZGJfbm9k ZV9zZXRfY29tcG9zaXRpb24oc3JjLCBkYXRhLCBsZW4pKQ0KPiArCQkJYnRfc2hlbGxfcHJpbnRm KCJGYWlsZWQgdG8gc2F2ZSBub2RlIGNvbXBvc2l0aW9uIVxuIik7DQo+ICAJCWJyZWFrOw0KPiAg DQo+ICAJY2FzZSBPUF9BUFBLRVlfU1RBVFVTOg0KPiBkaWZmIC0tZ2l0IGEvdG9vbHMvbWVzaC9t ZXNoLWRiLmMgYi90b29scy9tZXNoL21lc2gtZGIuYw0KPiBpbmRleCBkMzk0MzVjYTAuLjg5NzNi YmE3NiAxMDA2NDQNCj4gLS0tIGEvdG9vbHMvbWVzaC9tZXNoLWRiLmMNCj4gKysrIGIvdG9vbHMv bWVzaC9tZXNoLWRiLmMNCj4gQEAgLTQ1LDYgKzQ1LDcgQEANCj4gICNpbmNsdWRlICJ0b29scy9t ZXNoL21lc2gtZGIuaCINCj4gIA0KPiAgI2RlZmluZSBLRVlfSURYX0lOVkFMSUQgTkVUX0lEWF9J TlZBTElEDQo+ICsjZGVmaW5lIERFRkFVTFRfTE9DQVRJT04gMHgwMDAwDQo+ICANCj4gIHN0cnVj dCBtZXNoX2RiIHsNCj4gIAlqc29uX29iamVjdCAqamNmZzsNCj4gQEAgLTIxNyw2ICsyMTgsMjMg QEAgc3RhdGljIGJvb2wgd3JpdGVfdWludDE2X2hleChqc29uX29iamVjdCAqam9iaiwgY29uc3Qg Y2hhciAqZGVzYywNCj4gIAlyZXR1cm4gdHJ1ZTsNCj4gIH0NCj4gIA0KPiArc3RhdGljIGJvb2wg d3JpdGVfdWludDMyX2hleChqc29uX29iamVjdCAqam9iaiwgY29uc3QgY2hhciAqZGVzYywgdWlu dDMyX3QgdmFsKQ0KPiArew0KPiArCWpzb25fb2JqZWN0ICpqc3RyaW5nOw0KPiArCWNoYXIgYnVm WzldOw0KPiArDQo+ICsJc25wcmludGYoYnVmLCA5LCAiJTguOHgiLCB2YWwpOw0KPiArCWpzdHJp bmcgPSBqc29uX29iamVjdF9uZXdfc3RyaW5nKGJ1Zik7DQo+ICsJaWYgKCFqc3RyaW5nKQ0KPiAr CQlyZXR1cm4gZmFsc2U7DQo+ICsNCj4gKwkvKiBPdmVyd3JpdGUgb2xkIHZhbHVlIGlmIHByZXNl bnQgKi8NCj4gKwlqc29uX29iamVjdF9vYmplY3RfZGVsKGpvYmosIGRlc2MpOw0KPiArDQo+ICsJ anNvbl9vYmplY3Rfb2JqZWN0X2FkZChqb2JqLCBkZXNjLCBqc3RyaW5nKTsNCj4gKwlyZXR1cm4g dHJ1ZTsNCj4gK30NCj4gKw0KPiAgc3RhdGljIGpzb25fb2JqZWN0ICpnZXRfbm9kZV9ieV91dWlk KGpzb25fb2JqZWN0ICpqY2ZnLCB1aW50OF90IHV1aWRbMTZdKQ0KPiAgew0KPiAgCWpzb25fb2Jq ZWN0ICpqYXJyYXkgPSBOVUxMOw0KPiBAQCAtMzM4LDYgKzM1Niw2NSBAQCBzdGF0aWMgaW50IGNv bXBhcmVfZ3JvdXBfYWRkcihjb25zdCB2b2lkICphLCBjb25zdCB2b2lkICpiLCB2b2lkICp1c2Vy X2RhdGEpDQo+ICAJcmV0dXJuIDA7DQo+ICB9DQo+ICANCj4gK3N0YXRpYyBib29sIGxvYWRfY29t cG9zaXRpb24oanNvbl9vYmplY3QgKmpub2RlLCB1aW50MTZfdCB1bmljYXN0KQ0KPiArew0KPiAr CWpzb25fb2JqZWN0ICpqYXJyYXk7DQo+ICsJaW50IGksIGVsZV9jbnQ7DQo+ICsNCj4gKwlpZiAo IWpzb25fb2JqZWN0X29iamVjdF9nZXRfZXgoam5vZGUsICJlbGVtZW50cyIsICZqYXJyYXkpKQ0K PiArCQlyZXR1cm4gZmFsc2U7DQo+ICsNCj4gKwlpZiAoanNvbl9vYmplY3RfZ2V0X3R5cGUoamFy cmF5KSAhPSBqc29uX3R5cGVfYXJyYXkpDQo+ICsJCXJldHVybiBmYWxzZTsNCj4gKw0KPiArCWVs ZV9jbnQgPSBqc29uX29iamVjdF9hcnJheV9sZW5ndGgoamFycmF5KTsNCj4gKw0KPiArCWZvciAo aSA9IDA7IGkgPCBlbGVfY250OyArK2kpIHsNCj4gKwkJanNvbl9vYmplY3QgKmplbnRyeSwgKmp2 YWwsICpqbW9kczsNCj4gKwkJaW50MzJfdCBpbmRleDsNCj4gKwkJaW50IGssIG1vZF9jbnQ7DQo+ ICsNCj4gKwkJamVudHJ5ID0ganNvbl9vYmplY3RfYXJyYXlfZ2V0X2lkeChqYXJyYXksIGkpOw0K PiArCQlpZiAoIWpzb25fb2JqZWN0X29iamVjdF9nZXRfZXgoamVudHJ5LCAiaW5kZXgiLCAmanZh bCkpDQo+ICsJCQlyZXR1cm4gZmFsc2U7DQo+ICsNCj4gKwkJaW5kZXggPSBqc29uX29iamVjdF9n ZXRfaW50KGp2YWwpOw0KPiArCQlpZiAoaW5kZXggPiAweGZmKQ0KPiArCQkJcmV0dXJuIGZhbHNl Ow0KPiArDQo+ICsJCWlmICghanNvbl9vYmplY3Rfb2JqZWN0X2dldF9leChqZW50cnksICJtb2Rl bHMiLCAmam1vZHMpKQ0KPiArCQkJcmV0dXJuIGZhbHNlOw0KPiArDQo+ICsJCW1vZF9jbnQgPSBq c29uX29iamVjdF9hcnJheV9sZW5ndGgoam1vZHMpOw0KPiArDQo+ICsJCWZvciAoayA9IDA7IGsg PCBtb2RfY250OyArK2spIHsNCj4gKwkJCWpzb25fb2JqZWN0ICpqbW9kLCAqamlkOw0KPiArCQkJ dWludDMyX3QgbW9kX2lkLCBsZW47DQo+ICsJCQljb25zdCBjaGFyICpzdHI7DQo+ICsNCj4gKwkJ CWptb2QgPSBqc29uX29iamVjdF9hcnJheV9nZXRfaWR4KGptb2RzLCBrKTsNCj4gKwkJCWlmICgh anNvbl9vYmplY3Rfb2JqZWN0X2dldF9leChqbW9kLCAibW9kZWxJZCIsICZqaWQpKQ0KPiArCQkJ CXJldHVybiBmYWxzZTsNCj4gKw0KPiArCQkJc3RyID0ganNvbl9vYmplY3RfZ2V0X3N0cmluZyhq aWQpOw0KPiArCQkJbGVuID0gc3RybGVuKHN0cik7DQo+ICsNCj4gKwkJCWlmIChsZW4gIT0gNCAm JiBsZW4gIT0gOCkNCj4gKwkJCQlyZXR1cm4gZmFsc2U7DQo+ICsNCj4gKwkJCWlmICgobGVuID09 IDQpICYmIChzc2NhbmYoc3RyLCAiJTA0eCIsICZtb2RfaWQpICE9IDEpKQ0KPiArCQkJCXJldHVy biBmYWxzZTsNCj4gKw0KPiArCQkJaWYgKChsZW4gPT0gOCkgJiYgKHNzY2FuZihzdHIsICIlMDh4 IiwgJm1vZF9pZCkgIT0gMSkpDQo+ICsJCQkJcmV0dXJuIGZhbHNlOw0KPiArDQo+ICsJCQlyZW1v dGVfc2V0X21vZGVsKHVuaWNhc3QsIGluZGV4LCBtb2RfaWQsIGxlbiA9PSA4KTsNCj4gKwkJfQ0K PiArCX0NCj4gKw0KPiArCXJldHVybiB0cnVlOw0KPiArfQ0KPiArDQo+ICBzdGF0aWMgdm9pZCBs b2FkX3JlbW90ZXMoanNvbl9vYmplY3QgKmpjZmcpDQo+ICB7DQo+ICAJanNvbl9vYmplY3QgKmpu b2RlczsNCj4gQEAgLTQyMCw2ICs0OTcsOCBAQCBzdGF0aWMgdm9pZCBsb2FkX3JlbW90ZXMoanNv bl9vYmplY3QgKmpjZmcpDQo+ICAJCQkJcmVtb3RlX2FkZF9hcHBfa2V5KHVuaWNhc3QsIGtleV9p ZHgpOw0KPiAgCQl9DQo+ICANCj4gKwkJbG9hZF9jb21wb3NpdGlvbihqbm9kZSwgdW5pY2FzdCk7 DQo+ICsNCj4gIAkJbm9kZV9jb3VudCsrOw0KPiAgDQo+ICAJCS8qIFRPRE86IEFkZCB0aGUgcmVz dCBvZiB0aGUgY29uZmlndXJhdGlvbiAqLw0KPiBAQCAtODE5LDEyICs4OTgsMzQgQEAgc3RydWN0 IGxfcXVldWUgKm1lc2hfZGJfbG9hZF9ncm91cHModm9pZCkNCj4gIAlyZXR1cm4gZ3JvdXBzOw0K PiAgfQ0KPiAgDQo+ICtzdGF0aWMganNvbl9vYmplY3QgKmluaXRfZWxlbWVudHModWludDhfdCBu dW1fZWxzKQ0KPiArew0KPiArCWpzb25fb2JqZWN0ICpqZWxlbWVudHM7DQo+ICsJdWludDhfdCBp Ow0KPiArDQo+ICsJamVsZW1lbnRzID0ganNvbl9vYmplY3RfbmV3X2FycmF5KCk7DQo+ICsNCj4g Kwlmb3IgKGkgPSAwOyBpIDwgbnVtX2VsczsgKytpKSB7DQo+ICsJCWpzb25fb2JqZWN0ICpqZWxl bWVudCwgKmptb2RzOw0KPiArDQo+ICsJCWplbGVtZW50ID0ganNvbl9vYmplY3RfbmV3X29iamVj dCgpOw0KPiArDQo+ICsJCXdyaXRlX2ludChqZWxlbWVudCwgImluZGV4IiwgaSk7DQo+ICsJCXdy aXRlX3VpbnQxNl9oZXgoamVsZW1lbnQsICJsb2NhdGlvbiIsIERFRkFVTFRfTE9DQVRJT04pOw0K PiArCQlqbW9kcyA9IGpzb25fb2JqZWN0X25ld19hcnJheSgpOw0KPiArCQlqc29uX29iamVjdF9v YmplY3RfYWRkKGplbGVtZW50LCAibW9kZWxzIiwgam1vZHMpOw0KPiArDQo+ICsJCWpzb25fb2Jq ZWN0X2FycmF5X2FkZChqZWxlbWVudHMsIGplbGVtZW50KTsNCj4gKwl9DQo+ICsNCj4gKwlyZXR1 cm4gamVsZW1lbnRzOw0KPiArfQ0KPiArDQo+ICBib29sIG1lc2hfZGJfYWRkX25vZGUodWludDhf dCB1dWlkWzE2XSwgdWludDhfdCBudW1fZWxzLCB1aW50MTZfdCB1bmljYXN0LA0KPiAgCQkJCQkJ CXVpbnQxNl90IG5ldF9pZHgpDQo+ICB7DQo+ICAJanNvbl9vYmplY3QgKmpub2RlOw0KPiAgCWpz b25fb2JqZWN0ICpqZWxlbWVudHMsICpqbm9kZXMsICpqbmV0a2V5cywgKmphcHBrZXlzOw0KPiAt CWludCBpOw0KPiAgDQo+ICAJaWYgKCFjZmcgfHwgIWNmZy0+amNmZykNCj4gIAkJcmV0dXJuIGZh bHNlOw0KPiBAQCAtODQyLDIyICs5NDMsNyBAQCBib29sIG1lc2hfZGJfYWRkX25vZGUodWludDhf dCB1dWlkWzE2XSwgdWludDhfdCBudW1fZWxzLCB1aW50MTZfdCB1bmljYXN0LA0KPiAgCWlmICgh YWRkX3U4XzE2KGpub2RlLCAidXVpZCIsIHV1aWQpKQ0KPiAgCQlnb3RvIGZhaWw7DQo+ICANCj4g LQlqZWxlbWVudHMgPSBqc29uX29iamVjdF9uZXdfYXJyYXkoKTsNCj4gLQlpZiAoIWplbGVtZW50 cykNCj4gLQkJZ290byBmYWlsOw0KPiAtDQo+IC0JZm9yIChpID0gMDsgaSA8IG51bV9lbHM7ICsr aSkgew0KPiAtCQlqc29uX29iamVjdCAqamVsZW1lbnQgPSBqc29uX29iamVjdF9uZXdfb2JqZWN0 KCk7DQo+IC0NCj4gLQkJaWYgKCFqZWxlbWVudCkgew0KPiAtCQkJanNvbl9vYmplY3RfcHV0KGpl bGVtZW50cyk7DQo+IC0JCQlnb3RvIGZhaWw7DQo+IC0JCX0NCj4gLQ0KPiAtCQl3cml0ZV9pbnQo amVsZW1lbnQsICJlbGVtZW50SW5kZXgiLCBpKTsNCj4gLQkJanNvbl9vYmplY3RfYXJyYXlfYWRk KGplbGVtZW50cywgamVsZW1lbnQpOw0KPiAtCX0NCj4gLQ0KPiArCWplbGVtZW50cyA9IGluaXRf ZWxlbWVudHMobnVtX2Vscyk7DQo+ICAJanNvbl9vYmplY3Rfb2JqZWN0X2FkZChqbm9kZSwgImVs ZW1lbnRzIiwgamVsZW1lbnRzKTsNCj4gIA0KPiAgCWpuZXRrZXlzID0ganNvbl9vYmplY3RfbmV3 X2FycmF5KCk7DQo+IEBAIC05MzIsNiArMTAxOCwxODAgQEAgYm9vbCBtZXNoX2RiX2RlbF9ub2Rl KHVpbnQxNl90IHVuaWNhc3QpDQo+ICAJcmV0dXJuIHNhdmVfY29uZmlnKCk7DQo+ICB9DQo+ICAN Cj4gK3N0YXRpYyBqc29uX29iamVjdCAqaW5pdF9tb2RlbCh1aW50MTZfdCBtb2RfaWQpDQo+ICt7 DQo+ICsJanNvbl9vYmplY3QgKmptb2QsICpqYXJyYXk7DQo+ICsNCj4gKwlqbW9kID0ganNvbl9v YmplY3RfbmV3X29iamVjdCgpOw0KPiArDQo+ICsJaWYgKCF3cml0ZV91aW50MTZfaGV4KGptb2Qs ICJtb2RlbElkIiwgbW9kX2lkKSkgew0KPiArCQlqc29uX29iamVjdF9wdXQoam1vZCk7DQo+ICsJ CXJldHVybiBOVUxMOw0KPiArCX0NCj4gKw0KPiArCWphcnJheSA9IGpzb25fb2JqZWN0X25ld19h cnJheSgpOw0KPiArCWpzb25fb2JqZWN0X29iamVjdF9hZGQoam1vZCwgImJpbmQiLCBqYXJyYXkp Ow0KPiArDQo+ICsJamFycmF5ID0ganNvbl9vYmplY3RfbmV3X2FycmF5KCk7DQo+ICsJanNvbl9v YmplY3Rfb2JqZWN0X2FkZChqbW9kLCAic3Vic2NyaWJlIiwgamFycmF5KTsNCj4gKw0KPiArCXJl dHVybiBqbW9kOw0KPiArfQ0KPiArDQo+ICtzdGF0aWMganNvbl9vYmplY3QgKmluaXRfdmVuZG9y X21vZGVsKHVpbnQzMl90IG1vZF9pZCkNCj4gK3sNCj4gKwlqc29uX29iamVjdCAqam1vZCwgKmph cnJheTsNCj4gKw0KPiArCWptb2QgPSBqc29uX29iamVjdF9uZXdfb2JqZWN0KCk7DQo+ICsNCj4g KwlpZiAoIXdyaXRlX3VpbnQzMl9oZXgoam1vZCwgIm1vZGVsSWQiLCBtb2RfaWQpKSB7DQo+ICsJ CWpzb25fb2JqZWN0X3B1dChqbW9kKTsNCj4gKwkJcmV0dXJuIE5VTEw7DQo+ICsJfQ0KPiArDQo+ ICsJamFycmF5ID0ganNvbl9vYmplY3RfbmV3X2FycmF5KCk7DQo+ICsJanNvbl9vYmplY3Rfb2Jq ZWN0X2FkZChqbW9kLCAiYmluZCIsIGphcnJheSk7DQo+ICsNCj4gKwlqYXJyYXkgPSBqc29uX29i amVjdF9uZXdfYXJyYXkoKTsNCj4gKwlqc29uX29iamVjdF9vYmplY3RfYWRkKGptb2QsICJzdWJz Y3JpYmUiLCBqYXJyYXkpOw0KPiArDQo+ICsJcmV0dXJuIGptb2Q7DQo+ICt9DQo+ICsNCj4gK2Jv b2wgbWVzaF9kYl9ub2RlX3NldF9jb21wb3NpdGlvbih1aW50MTZfdCB1bmljYXN0LCB1aW50OF90 ICpkYXRhLCB1aW50MTZfdCBsZW4pDQo+ICt7DQo+ICsJdWludDE2X3QgZmVhdHVyZXM7DQo+ICsJ aW50IHN6LCBpID0gMDsNCj4gKwlqc29uX29iamVjdCAqam5vZGUsICpqb2JqLCAqamVsZW1lbnRz Ow0KPiArCXVpbnQxNl90IGNycGw7DQo+ICsNCj4gKwlpZiAoIWNmZyB8fCAhY2ZnLT5qY2ZnKQ0K PiArCQlyZXR1cm4gZmFsc2U7DQo+ICsNCj4gKwlqbm9kZSA9IGdldF9ub2RlX2J5X3VuaWNhc3Qo dW5pY2FzdCk7DQo+ICsJaWYgKCFqbm9kZSkNCj4gKwkJcmV0dXJuIGZhbHNlOw0KPiArDQo+ICsJ Lyogc2tpcCBwYWdlIC0tIFdlIG9ubHkgc3VwcG9ydCBQYWdlIFplcm8gKi8NCj4gKwlkYXRhKys7 DQo+ICsJbGVuLS07DQo+ICsNCj4gKwkvKiBJZiAiY3JwbCIgcHJvcGVydHkgaXMgcHJlc2VudCwg Y29tcG9zaXRpb24gaXMgYWxyZWFkeSByZWNvcmRlZCAqLw0KPiArCWlmIChqc29uX29iamVjdF9v YmplY3RfZ2V0X2V4KGpub2RlLCAiY3JwbCIsICZqb2JqKSkNCj4gKwkJcmV0dXJuIHRydWU7DQo+ ICsNCj4gKwlpZiAoIXdyaXRlX3VpbnQxNl9oZXgoam5vZGUsICJjaWQiLCBsX2dldF9sZTE2KCZk YXRhWzBdKSkpDQo+ICsJCXJldHVybiBmYWxzZTsNCj4gKw0KPiArCWlmICghd3JpdGVfdWludDE2 X2hleChqbm9kZSwgInBpZCIsIGxfZ2V0X2xlMTYoJmRhdGFbMl0pKSkNCj4gKwkJcmV0dXJuIGZh bHNlOw0KPiArDQo+ICsJaWYgKCF3cml0ZV91aW50MTZfaGV4KGpub2RlLCAidmlkIiwgbF9nZXRf bGUxNigmZGF0YVs0XSkpKQ0KPiArCQlyZXR1cm4gZmFsc2U7DQo+ICsNCj4gKwljcnBsID0gbF9n ZXRfbGUxNigmZGF0YVs2XSk7DQo+ICsNCj4gKwlmZWF0dXJlcyA9IGxfZ2V0X2xlMTYoJmRhdGFb OF0pOw0KPiArCWRhdGEgKz0gMTA7DQo+ICsJbGVuIC09IDEwOw0KPiArDQo+ICsJam9iaiA9IGpz b25fb2JqZWN0X29iamVjdF9nZXQoam5vZGUsICJmZWF0dXJlcyIpOw0KPiArCWlmICgham9iaikg ew0KPiArCQlqb2JqID0ganNvbl9vYmplY3RfbmV3X29iamVjdCgpOw0KPiArCQlqc29uX29iamVj dF9vYmplY3RfYWRkKGpub2RlLCAiZmVhdHVyZXMiLCBqb2JqKTsNCj4gKwl9DQo+ICsNCj4gKwlp ZiAoIShmZWF0dXJlcyAmIEZFQVRVUkVfUkVMQVkpKQ0KPiArCQl3cml0ZV9pbnQoam9iaiwgInJl bGF5IiwgMik7DQo+ICsNCj4gKwlpZiAoIShmZWF0dXJlcyAmIEZFQVRVUkVfRlJJRU5EKSkNCj4g KwkJd3JpdGVfaW50KGpvYmosICJmcmllbmQiLCAyKTsNCj4gKw0KPiArCWlmICghKGZlYXR1cmVz ICYgRkVBVFVSRV9QUk9YWSkpDQo+ICsJCXdyaXRlX2ludChqb2JqLCAicHJveHkiLCAyKTsNCj4g Kw0KPiArCWlmICghKGZlYXR1cmVzICYgRkVBVFVSRV9MUE4pKQ0KPiArCQl3cml0ZV9pbnQoam9i aiwgImxvd1Bvd2VyIiwgMik7DQo+ICsNCj4gKwlqZWxlbWVudHMgPSBqc29uX29iamVjdF9vYmpl Y3RfZ2V0KGpub2RlLCAiZWxlbWVudHMiKTsNCj4gKwlpZiAoIWplbGVtZW50cykNCj4gKwkJcmV0 dXJuIGZhbHNlOw0KPiArDQo+ICsJc3ogPSBqc29uX29iamVjdF9hcnJheV9sZW5ndGgoamVsZW1l bnRzKTsNCj4gKw0KPiArCXdoaWxlIChsZW4pIHsNCj4gKwkJanNvbl9vYmplY3QgKmplbnRyeSwg Kmptb2RzOw0KPiArCQl1aW50MzJfdCBtb2RfaWQ7DQo+ICsJCXVpbnQ4X3QgbSwgdjsNCj4gKw0K PiArCQkvKiBNaXNtYXRjaCBpbiB0aGUgZWxlbWVudCBjb3VudCAqLw0KPiArCQlpZiAoaSA+PSBz eikNCj4gKwkJCXJldHVybiBmYWxzZTsNCj4gKw0KPiArCQlqZW50cnkgPSBqc29uX29iamVjdF9h cnJheV9nZXRfaWR4KGplbGVtZW50cywgaSk7DQo+ICsNCj4gKwkJaWYgKCF3cml0ZV91aW50MTZf aGV4KGplbnRyeSwgImxvY2F0aW9uIiwgbF9nZXRfbGUxNihkYXRhKSkpDQo+ICsJCQlyZXR1cm4g ZmFsc2U7DQo+ICsNCj4gKwkJZGF0YSArPSAyOw0KPiArCQlsZW4gLT0gMjsNCj4gKw0KPiArCQlt ID0gKmRhdGErKzsNCj4gKwkJdiA9ICpkYXRhKys7DQo+ICsJCWxlbiAtPSAyOw0KPiArDQo+ICsJ CWptb2RzID0ganNvbl9vYmplY3Rfb2JqZWN0X2dldChqZW50cnksICJtb2RlbHMiKTsNCj4gKwkJ aWYgKCFqbW9kcyB8fCBqc29uX29iamVjdF9nZXRfdHlwZShqbW9kcykgIT0ganNvbl90eXBlX2Fy cmF5KQ0KPiArCQkJcmV0dXJuIGZhbHNlOw0KPiArDQo+ICsJCXdoaWxlIChsZW4gPj0gMiAmJiBt LS0pIHsNCj4gKwkJCW1vZF9pZCA9IGxfZ2V0X2xlMTYoZGF0YSk7DQo+ICsNCj4gKwkJCWpvYmog PSBpbml0X21vZGVsKG1vZF9pZCk7DQo+ICsJCQlpZiAoIWpvYmopDQo+ICsJCQkJZ290byBmYWls Ow0KPiArDQo+ICsJCQlqc29uX29iamVjdF9hcnJheV9hZGQoam1vZHMsIGpvYmopOw0KPiArCQkJ ZGF0YSArPSAyOw0KPiArCQkJbGVuIC09IDI7DQo+ICsJCX0NCj4gKw0KPiArCQl3aGlsZSAobGVu ID49IDQgJiYgdi0tKSB7DQo+ICsJCQlqb2JqID0ganNvbl9vYmplY3RfbmV3X29iamVjdCgpOw0K PiArCQkJbW9kX2lkID0gbF9nZXRfbGUxNihkYXRhICsgMik7DQo+ICsJCQltb2RfaWQgPSBsX2dl dF9sZTE2KGRhdGEpIDw8IDE2IHwgbW9kX2lkOw0KPiArDQo+ICsJCQlqb2JqID0gaW5pdF92ZW5k b3JfbW9kZWwobW9kX2lkKTsNCj4gKwkJCWlmICgham9iaikNCj4gKwkJCQlnb3RvIGZhaWw7DQo+ ICsNCj4gKwkJCWpzb25fb2JqZWN0X2FycmF5X2FkZChqbW9kcywgam9iaik7DQo+ICsNCj4gKwkJ CWRhdGEgKz0gNDsNCj4gKwkJCWxlbiAtPSA0Ow0KPiArCQl9DQo+ICsNCj4gKwkJaSsrOw0KPiAr CX0NCj4gKw0KPiArCS8qIENSUEwgaXMgd3JpdHRlbiBsYXN0LiBXaWxsIGJlIHVzZWQgdG8gY2hl Y2sgY29tcG9zaXRpb24ncyBwcmVzZW5jZSAqLw0KPiArCWlmICghd3JpdGVfdWludDE2X2hleChq bm9kZSwgImNycGwiLCBjcnBsKSkNCj4gKwkJZ290byBmYWlsOw0KPiArDQo+ICsJLyogSW5pdGlh dGUgcmVtb3RlJ3MgY29tcG9zaXRpb24gZnJvbSBzdG9yYWdlICovDQo+ICsJaWYgKCFsb2FkX2Nv bXBvc2l0aW9uKGpub2RlLCB1bmljYXN0KSkNCj4gKwkJZ290byBmYWlsOw0KPiArDQo+ICsJcmV0 dXJuIHNhdmVfY29uZmlnKCk7DQo+ICsNCj4gK2ZhaWw6DQo+ICsJLyogUmVzZXQgZWxlbWVudHMg YXJyYXkgKi8NCj4gKwlqc29uX29iamVjdF9vYmplY3RfZGVsKGpub2RlLCAiZWxlbWVudHMiKTsN Cj4gKwlpbml0X2VsZW1lbnRzKHN6KTsNCj4gKw0KPiArCXJldHVybiBmYWxzZTsNCj4gK30NCj4g Kw0KPiAgYm9vbCBtZXNoX2RiX2dldF90b2tlbih1aW50OF90IHRva2VuWzhdKQ0KPiAgew0KPiAg CWlmICghY2ZnIHx8ICFjZmctPmpjZmcpDQo+IGRpZmYgLS1naXQgYS90b29scy9tZXNoL21lc2gt ZGIuaCBiL3Rvb2xzL21lc2gvbWVzaC1kYi5oDQo+IGluZGV4IDFmOWU0ZTNkMy4uODljNjQ0NDAw IDEwMDY0NA0KPiAtLS0gYS90b29scy9tZXNoL21lc2gtZGIuaA0KPiArKysgYi90b29scy9tZXNo L21lc2gtZGIuaA0KPiBAQCAtMzgsMTEgKzM4LDExIEBAIGJvb2wgbWVzaF9kYl9nZXRfYWRkcl9y YW5nZSh1aW50MTZfdCAqbG93LCB1aW50MTZfdCAqaGlnaCk7DQo+ICBib29sIG1lc2hfZGJfYWRk X25vZGUodWludDhfdCB1dWlkWzE2XSwgdWludDhfdCBudW1fZWxzLCB1aW50MTZfdCB1bmljYXN0 LA0KPiAgCQkJCQkJCXVpbnQxNl90IG5ldF9pZHgpOw0KPiAgYm9vbCBtZXNoX2RiX2RlbF9ub2Rl KHVpbnQxNl90IHVuaWNhc3QpOw0KPiAtYm9vbCBtZXNoX2RiX25vZGVfc2V0X2NvbXBvc2l0aW9u KHVpbnQxNl90IHVuaWNhc3QsIHVpbnQxNl90IGNpZCwgdWludDE2X3QgcGlkLA0KPiAtCQkJCQkJ dWludDE2X3QgdmlkLCB1aW50MTZfdCBjcnBsLA0KPiAtCQkJCQkJc3RydWN0IG1lc2hfY29uZmln X21vZGVzIG1vZGVzLA0KPiAtCQkJCQkJc3RydWN0IGxfcXVldWUgKmVsZW1lbnRzKTsNCj4gLQ0K PiArYm9vbCBtZXNoX2RiX25vZGVfc2V0X2NvbXBvc2l0aW9uKHVpbnQxNl90IHVuaWNhc3QsIHVp bnQ4X3QgKmRhdGEsDQo+ICsJCQkJCQkJCXVpbnQxNl90IGxlbik7DQo+ICtib29sIG1lc2hfZGJf YWRkX3Byb3Zpc2lvbmVyKGNvbnN0IGNoYXIgKm5hbWUsIHVpbnQ4X3QgdXVpZFsxNl0sDQo+ICsJ CQkJdWludDE2X3QgdW5pY2FzdF9sb3csIHVpbnQxNl90IHVuaWNhc3RfaGlnaCwNCj4gKwkJCQl1 aW50MTZfdCBncm91cF9sb3csIHVpbnQxNl90IGdyb3VwX2hpZ2gpOw0KPiAgYm9vbCBtZXNoX2Ri X25vZGVfc2V0X25ldF90cmFuc21pdCh1aW50MTZfdCB1bmljYXN0LCB1aW50OF90IGNudCwNCj4g IAkJCQkJCQl1aW50MTZfdCBpbnRlcnZhbCk7DQo+ICBib29sIG1lc2hfZGJfbm9kZV9uZXRfa2V5 X2FkZCh1aW50MTZfdCB1bmljYXN0LCB1aW50MTZfdCBpZHgpOw0KPiBkaWZmIC0tZ2l0IGEvdG9v bHMvbWVzaC9yZW1vdGUuYyBiL3Rvb2xzL21lc2gvcmVtb3RlLmMNCj4gaW5kZXggMjRiYzU5MTI5 Li4zNDRkZTc5OGIgMTAwNjQ0DQo+IC0tLSBhL3Rvb2xzL21lc2gvcmVtb3RlLmMNCj4gKysrIGIv dG9vbHMvbWVzaC9yZW1vdGUuYw0KPiBAQCAtMzUsMTIgKzM1LDE0IEBAIHN0cnVjdCByZW1vdGVf bm9kZSB7DQo+ICAJdWludDE2X3QgdW5pY2FzdDsNCj4gIAlzdHJ1Y3QgbF9xdWV1ZSAqbmV0X2tl eXM7DQo+ICAJc3RydWN0IGxfcXVldWUgKmFwcF9rZXlzOw0KPiArCXN0cnVjdCBsX3F1ZXVlICoq ZWxzOw0KPiAgCXVpbnQ4X3QgdXVpZFsxNl07DQo+ICAJdWludDhfdCBudW1fZWxlOw0KPiAgfTsN Cj4gIA0KPiAgc3RhdGljIHN0cnVjdCBsX3F1ZXVlICpub2RlczsNCj4gIA0KPiArDQo+ICBzdGF0 aWMgYm9vbCBrZXlfcHJlc2VudChzdHJ1Y3QgbF9xdWV1ZSAqa2V5cywgdWludDE2X3QgYXBwX2lk eCkNCj4gIHsNCj4gIAljb25zdCBzdHJ1Y3QgbF9xdWV1ZV9lbnRyeSAqbDsNCj4gQEAgLTU1LDYg KzU3LDI2IEBAIHN0YXRpYyBib29sIGtleV9wcmVzZW50KHN0cnVjdCBsX3F1ZXVlICprZXlzLCB1 aW50MTZfdCBhcHBfaWR4KQ0KPiAgCXJldHVybiBmYWxzZTsNCj4gIH0NCj4gIA0KPiArc3RhdGlj IGludCBjb21wYXJlX21vZF9pZChjb25zdCB2b2lkICphLCBjb25zdCB2b2lkICpiLCB2b2lkICp1 c2VyX2RhdGEpDQo+ICt7DQo+ICsJdWludDMyX3QgaWQxID0gTF9QVFJfVE9fVUlOVChhKTsNCj4g Kwl1aW50MzJfdCBpZDIgPSBMX1BUUl9UT19VSU5UKGIpOw0KPiArDQo+ICsJaWYgKGlkMSA+PSBW RU5ET1JfSURfTUFTSykNCj4gKwkJaWQxICY9IH5WRU5ET1JfSURfTUFTSzsNCj4gKw0KPiArCWlm IChpZDIgPj0gVkVORE9SX0lEX01BU0spDQo+ICsJCWlkMiAmPSB+VkVORE9SX0lEX01BU0s7DQo+ ICsNCj4gKwlpZiAoaWQxIDwgaWQyKQ0KPiArCQlyZXR1cm4gLTE7DQo+ICsNCj4gKwlpZiAoaWQx ID4gaWQyKQ0KPiArCQlyZXR1cm4gMTsNCj4gKw0KPiArCXJldHVybiAwOw0KPiArfQ0KPiArDQo+ ICBzdGF0aWMgaW50IGNvbXBhcmVfdW5pY2FzdChjb25zdCB2b2lkICphLCBjb25zdCB2b2lkICpi LCB2b2lkICp1c2VyX2RhdGEpDQo+ICB7DQo+ICAJY29uc3Qgc3RydWN0IHJlbW90ZV9ub2RlICph X3JtdCA9IGE7DQo+IEBAIC05Miw3ICsxMTQsNyBAQCBzdGF0aWMgYm9vbCBtYXRjaF9ib3VuZF9r ZXkoY29uc3Qgdm9pZCAqYSwgY29uc3Qgdm9pZCAqYikNCj4gIHVpbnQ4X3QgcmVtb3RlX2RlbF9u b2RlKHVpbnQxNl90IHVuaWNhc3QpDQo+ICB7DQo+ICAJc3RydWN0IHJlbW90ZV9ub2RlICpybXQ7 DQo+IC0JdWludDhfdCBudW1fZWxlOw0KPiArCXVpbnQ4X3QgbnVtX2VsZSwgaTsNCj4gIA0KPiAg CXJtdCA9IGxfcXVldWVfcmVtb3ZlX2lmKG5vZGVzLCBtYXRjaF9ub2RlX2FkZHIsIExfVUlOVF9U T19QVFIodW5pY2FzdCkpOw0KPiAgCWlmICghcm10KQ0KPiBAQCAtMTAwLDggKzEyMiwxMyBAQCB1 aW50OF90IHJlbW90ZV9kZWxfbm9kZSh1aW50MTZfdCB1bmljYXN0KQ0KPiAgDQo+ICAJbnVtX2Vs ZSA9IHJtdC0+bnVtX2VsZTsNCj4gIA0KPiAtCWxfcXVldWVfZGVzdHJveShybXQtPm5ldF9rZXlz LCBOVUxMKTsNCj4gLQlsX3F1ZXVlX2Rlc3Ryb3kocm10LT5hcHBfa2V5cywgTlVMTCk7DQo+ICsJ Zm9yIChpID0gMDsgaSA8IG51bV9lbGU7ICsraSkNCj4gKwkJbF9xdWV1ZV9kZXN0cm95KHJtdC0+ ZWxzW2ldLCBOVUxMKTsNCj4gKw0KPiArCWxfZnJlZShybXQtPmVscyk7DQo+ICsNCj4gKwlsX3F1 ZXVlX2Rlc3Ryb3kocm10LT5uZXRfa2V5cywgbF9mcmVlKTsNCj4gKwlsX3F1ZXVlX2Rlc3Ryb3ko cm10LT5hcHBfa2V5cywgbF9mcmVlKTsNCj4gIAlsX2ZyZWUocm10KTsNCj4gIA0KPiAgCW1lc2hf ZGJfZGVsX25vZGUodW5pY2FzdCk7DQo+IEBAIC0xMjYsNiArMTUzLDggQEAgYm9vbCByZW1vdGVf YWRkX25vZGUoY29uc3QgdWludDhfdCB1dWlkWzE2XSwgdWludDE2X3QgdW5pY2FzdCwNCj4gIA0K PiAgCWxfcXVldWVfcHVzaF90YWlsKHJtdC0+bmV0X2tleXMsIExfVUlOVF9UT19QVFIobmV0X2lk eCkpOw0KPiAgDQo+ICsJcm10LT5lbHMgPSBsX25ldyhzdHJ1Y3QgbF9xdWV1ZSAqLCBlbGVfY250 KTsNCj4gKw0KPiAgCWlmICghbm9kZXMpDQo+ICAJCW5vZGVzID0gbF9xdWV1ZV9uZXcoKTsNCj4g IA0KPiBAQCAtMTMzLDYgKzE2MiwzMCBAQCBib29sIHJlbW90ZV9hZGRfbm9kZShjb25zdCB1aW50 OF90IHV1aWRbMTZdLCB1aW50MTZfdCB1bmljYXN0LA0KPiAgCXJldHVybiB0cnVlOw0KPiAgfQ0K PiAgDQo+ICtib29sIHJlbW90ZV9zZXRfbW9kZWwodWludDE2X3QgdW5pY2FzdCwgdWludDhfdCBl bGVfaWR4LCB1aW50MzJfdCBtb2RfaWQsDQo+ICsJCQkJCQkJCWJvb2wgdmVuZG9yKQ0KPiArew0K PiArCXN0cnVjdCByZW1vdGVfbm9kZSAqcm10Ow0KPiArDQo+ICsJcm10ID0gbF9xdWV1ZV9maW5k KG5vZGVzLCBtYXRjaF9ub2RlX2FkZHIsIExfVUlOVF9UT19QVFIodW5pY2FzdCkpOw0KPiArCWlm ICghcm10KQ0KPiArCQlyZXR1cm4gZmFsc2U7DQo+ICsNCj4gKwlpZiAoZWxlX2lkeCA+PSBybXQt Pm51bV9lbGUpDQo+ICsJCXJldHVybiBmYWxzZTsNCj4gKw0KPiArCWlmICghcm10LT5lbHNbZWxl X2lkeF0pDQo+ICsJCXJtdC0+ZWxzW2VsZV9pZHhdID0gbF9xdWV1ZV9uZXcoKTsNCj4gKw0KPiAr CWlmICghdmVuZG9yKQ0KPiArCQltb2RfaWQgPSBWRU5ET1JfSURfTUFTSyB8IG1vZF9pZDsNCj4g Kw0KPiArCWxfcXVldWVfaW5zZXJ0KHJtdC0+ZWxzW2VsZV9pZHhdLCBMX1VJTlRfVE9fUFRSKG1v ZF9pZCksDQo+ICsJCQkJCQkJY29tcGFyZV9tb2RfaWQsIE5VTEwpOw0KPiArDQo+ICsJcmV0dXJu IHRydWU7DQo+ICt9DQo+ICsNCj4gIGJvb2wgcmVtb3RlX2FkZF9uZXRfa2V5KHVpbnQxNl90IGFk ZHIsIHVpbnQxNl90IG5ldF9pZHgpDQo+ICB7DQo+ICAJc3RydWN0IHJlbW90ZV9ub2RlICpybXQ7 DQo+IEBAIC0yMjQsOSArMjc3LDM1IEBAIHN0YXRpYyB2b2lkIHByaW50X2tleSh2b2lkICprZXks IHZvaWQgKnVzZXJfZGF0YSkNCj4gIAlidF9zaGVsbF9wcmludGYoIiV1ICgweCUzLjN4KSwgIiwg aWR4LCBpZHgpOw0KPiAgfQ0KPiAgDQo+ICtzdGF0aWMgdm9pZCBwcmludF9tb2RlbCh2b2lkICpt b2RlbCwgdm9pZCAqdXNlcl9kYXRhKQ0KPiArew0KPiArCXVpbnQzMl90IG1vZF9pZCA9IExfUFRS X1RPX1VJTlQobW9kZWwpOw0KPiArDQo+ICsJaWYgKG1vZF9pZCA+PSBWRU5ET1JfSURfTUFTSykg ew0KPiArCQltb2RfaWQgJj0gflZFTkRPUl9JRF9NQVNLOw0KPiArCQlidF9zaGVsbF9wcmludGYo Ilx0XHRcdCIgQ09MT1JfR1JFRU4gIlNJRyBtb2RlbDogJTQuNHhcbiINCj4gKwkJCQkJCQlDT0xP Ul9PRkYsIG1vZF9pZCk7DQo+ICsJCXJldHVybjsNCj4gKwl9DQo+ICsNCj4gKwlidF9zaGVsbF9w cmludGYoIlx0XHRcdCIgQ09MT1JfR1JFRU4gIlZlbmRvciBtb2RlbDogJTguOHhcbiINCj4gKwkJ CQkJCQlDT0xPUl9PRkYsIG1vZF9pZCk7DQo+ICsNCj4gK30NCj4gKw0KPiArc3RhdGljIHZvaWQg cHJpbnRfZWxlbWVudChzdHJ1Y3QgbF9xdWV1ZSAqbW9kcywgaW50IGlkeCkNCj4gK3sNCj4gKwlp ZiAoIW1vZHMpDQo+ICsJCXJldHVybjsNCj4gKw0KPiArCWJ0X3NoZWxsX3ByaW50ZigiXHRcdCIg Q09MT1JfR1JFRU4gImVsZW1lbnQgJXU6XG4iIENPTE9SX09GRiwgaWR4KTsNCj4gKwlsX3F1ZXVl X2ZvcmVhY2gobW9kcywgcHJpbnRfbW9kZWwsIE5VTEwpOw0KPiArfQ0KPiArDQo+ICBzdGF0aWMg dm9pZCBwcmludF9ub2RlKHZvaWQgKnJtdCwgdm9pZCAqdXNlcl9kYXRhKQ0KPiAgew0KPiAgCXN0 cnVjdCByZW1vdGVfbm9kZSAqbm9kZSA9IHJtdDsNCj4gKwlpbnQgaTsNCj4gIAljaGFyICpzdHI7 DQo+ICANCj4gIAlidF9zaGVsbF9wcmludGYoQ09MT1JfWUVMTE9XICJNZXNoIG5vZGU6XG4iIENP TE9SX09GRik7DQo+IEBAIC0yMzUsOCArMzE0LDYgQEAgc3RhdGljIHZvaWQgcHJpbnRfbm9kZSh2 b2lkICpybXQsIHZvaWQgKnVzZXJfZGF0YSkNCj4gIAlsX2ZyZWUoc3RyKTsNCj4gIAlidF9zaGVs bF9wcmludGYoIlx0IiBDT0xPUl9HUkVFTiAicHJpbWFyeSA9ICU0LjR4XG4iIENPTE9SX09GRiwN Cj4gIAkJCQkJCQkJbm9kZS0+dW5pY2FzdCk7DQo+IC0JYnRfc2hlbGxfcHJpbnRmKCJcdCIgQ09M T1JfR1JFRU4gImVsZW1lbnRzID0gJXVcbiIgQ09MT1JfT0ZGLA0KPiAtCQkJCQkJCQlub2RlLT5u dW1fZWxlKTsNCj4gIAlidF9zaGVsbF9wcmludGYoIlx0IiBDT0xPUl9HUkVFTiAibmV0X2tleXMg PSAiKTsNCj4gIAlsX3F1ZXVlX2ZvcmVhY2gobm9kZS0+bmV0X2tleXMsIHByaW50X2tleSwgTlVM TCk7DQo+ICAJYnRfc2hlbGxfcHJpbnRmKCJcbiIgQ09MT1JfT0ZGKTsNCj4gQEAgLTI0Niw2ICsz MjMsMTIgQEAgc3RhdGljIHZvaWQgcHJpbnRfbm9kZSh2b2lkICpybXQsIHZvaWQgKnVzZXJfZGF0 YSkNCj4gIAkJbF9xdWV1ZV9mb3JlYWNoKG5vZGUtPmFwcF9rZXlzLCBwcmludF9rZXksIE5VTEwp Ow0KPiAgCQlidF9zaGVsbF9wcmludGYoIlxuIiBDT0xPUl9PRkYpOw0KPiAgCX0NCj4gKw0KPiAr CWJ0X3NoZWxsX3ByaW50ZigiXHQiIENPTE9SX0dSRUVOICJlbGVtZW50cyAoJXUpOlxuIiBDT0xP Ul9PRkYsDQo+ICsJCQkJCQkJCW5vZGUtPm51bV9lbGUpOw0KPiArDQo+ICsJZm9yIChpID0gMDsg aSA8IG5vZGUtPm51bV9lbGU7ICsraSkNCj4gKwkJcHJpbnRfZWxlbWVudChub2RlLT5lbHNbaV0s IGkpOw0KPiAgfQ0KPiAgDQo+ICB2b2lkIHJlbW90ZV9wcmludF9ub2RlKHVpbnQxNl90IGFkZHIp DQo+IGRpZmYgLS1naXQgYS90b29scy9tZXNoL3JlbW90ZS5oIGIvdG9vbHMvbWVzaC9yZW1vdGUu aA0KPiBpbmRleCA2MzM4MmVkOTAuLjMzMzk4YzhiZCAxMDA2NDQNCj4gLS0tIGEvdG9vbHMvbWVz aC9yZW1vdGUuaA0KPiArKysgYi90b29scy9tZXNoL3JlbW90ZS5oDQo+IEBAIC0yMCw2ICsyMCw4 IEBADQo+ICBib29sIHJlbW90ZV9hZGRfbm9kZShjb25zdCB1aW50OF90IHV1aWRbMTZdLCB1aW50 MTZfdCB1bmljYXN0LA0KPiAgCQkJCQl1aW50OF90IGVsZV9jbnQsIHVpbnQxNl90IG5ldF9pZHgp Ow0KPiAgdWludDhfdCByZW1vdGVfZGVsX25vZGUodWludDE2X3QgdW5pY2FzdCk7DQo+ICtib29s IHJlbW90ZV9zZXRfbW9kZWwodWludDE2X3QgdW5pY2FzdCwgdWludDhfdCBlbGVfaWR4LCB1aW50 MzJfdCBtb2RfaWQsDQo+ICsJCQkJCQkJCWJvb2wgdmVuZG9yKTsNCj4gIHVpbnQxNl90IHJlbW90 ZV9nZXRfbmV4dF91bmljYXN0KHVpbnQxNl90IGxvdywgdWludDE2X3QgaGlnaCwgdWludDhfdCBl bGVfY250KTsNCj4gIGJvb2wgcmVtb3RlX2FkZF9uZXRfa2V5KHVpbnQxNl90IGFkZHIsIHVpbnQx Nl90IG5ldF9pZHgpOw0KPiAgYm9vbCByZW1vdGVfZGVsX25ldF9rZXkodWludDE2X3QgYWRkciwg dWludDE2X3QgbmV0X2lkeCk7DQo=