From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 5501FA0577; Tue, 7 Apr 2020 08:20:20 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 24F591BEE1; Tue, 7 Apr 2020 08:20:20 +0200 (CEST) Received: from mx0b-0016f401.pphosted.com (mx0a-0016f401.pphosted.com [67.231.148.174]) by dpdk.org (Postfix) with ESMTP id 409EDFFA for ; Tue, 7 Apr 2020 08:20:18 +0200 (CEST) Received: from pps.filterd (m0045849.ppops.net [127.0.0.1]) by mx0a-0016f401.pphosted.com (8.16.0.42/8.16.0.42) with SMTP id 0376EwJ1024091; Mon, 6 Apr 2020 23:20:17 -0700 Received: from pps.reinject (localhost [127.0.0.1]) by mx0a-0016f401.pphosted.com with ESMTP id 306qkr1d0r-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 06 Apr 2020 23:20:17 -0700 Received: from m0045849.ppops.net (m0045849.ppops.net [127.0.0.1]) by pps.reinject (8.16.0.36/8.16.0.36) with SMTP id 0376FVPF024400; Mon, 6 Apr 2020 23:20:16 -0700 Received: from sc-exch01.marvell.com ([199.233.58.181]) by mx0a-0016f401.pphosted.com with ESMTP id 306qkr1d0n-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-SHA384 bits=256 verify=NOT); Mon, 06 Apr 2020 23:20:16 -0700 Received: from DC5-EXCH01.marvell.com (10.69.176.38) by SC-EXCH01.marvell.com (10.93.176.81) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Mon, 6 Apr 2020 23:20:15 -0700 Received: from SC-EXCH04.marvell.com (10.93.176.84) by DC5-EXCH01.marvell.com (10.69.176.38) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Mon, 6 Apr 2020 23:20:14 -0700 Received: from NAM11-DM6-obe.outbound.protection.outlook.com (104.47.57.169) by SC-EXCH04.marvell.com (10.93.176.84) with Microsoft SMTP Server (TLS) id 15.0.1497.2 via Frontend Transport; Mon, 6 Apr 2020 23:20:14 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=dCwPhZISglZoAv7HEavj6ZtSCX10HzRWepeu/LiS7qQtv2ux+3i1B4Vys5lT8jsJqMnn+50cxg+cHy+FIXFfoIcjXf00AsxYADlb6rcMEngFTYYqdK+UYsIfefcyt5ZRE7INW3umswJzPJAjX8soq7wHhCCw90rPIIzV9VEpYWP96PjKbIEfNguYzCTvJpaGKFkQtPKzvlBhxSeLz6EvXscDn76KKqV1u0Mv1OULacIUZdAugjMHp/jIbcGIdE7TkMHDDjlthg6L397/oZxvhAXsvbTJMOdgYQvDqORbsTufqrnY6nn5kyNw30y182FnLuvzqKa4IaCwk3wKlGDIOg== 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=N5xh6tVJukRM6GJoNq2r5ek7r3tMX8rFLR2uYPC92J8=; b=jh6fxKH/QBgHn9jdZUdP3rYe2cabD1OKZuw1dhkamP6Jj0jJ3FR3J/JzK57omKF3gyZxVjoH0fd+wFvCMsIZzHN9f7b6SlsqzR6ZlFQvXk/dvNgKTVViVq1UI0so7Y4zUlenSABj5Swfn2Xtl4saKt0rAmWpoefaaQGI/Yo1+gld0SDMgiK9w61ohFGVaYL6Ar5YtKXEb5e1gskVS9Hm3Kybe65kHflUUtXMMVkFkuNEJR+v+eZyJdJQlekRHrAAQsTMK5JC74t8Wh/JIChFC8ZPUGEdEJlkPmgmD0i2wl+p7+ZmLNI34T2n4NqBgIBCkUszEt05xG34aL7aRrBf0Q== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=marvell.com; dmarc=pass action=none header.from=marvell.com; dkim=pass header.d=marvell.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=marvell.onmicrosoft.com; s=selector1-marvell-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=N5xh6tVJukRM6GJoNq2r5ek7r3tMX8rFLR2uYPC92J8=; b=MGMLTkD0Wq4PrWwJQPcD433vOZKrec1K4P3W8M/TGTLmE5VjTPVx0W79NlEmrsrZi6BFUmE76BfsP2V1Eg5h7Qsgen2UUGENdx2/QOxdupW/+vl4hzRcx422v8xZwnUAp72q2loYHQEsZ44p+N+Vrbf8xMnWKllV8xEor7dr3vQ= Received: from MN2PR18MB2877.namprd18.prod.outlook.com (2603:10b6:208:3b::26) by MN2PR18MB2992.namprd18.prod.outlook.com (2603:10b6:208:a6::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2878.20; Tue, 7 Apr 2020 06:20:12 +0000 Received: from MN2PR18MB2877.namprd18.prod.outlook.com ([fe80::648f:e7fa:f95e:191b]) by MN2PR18MB2877.namprd18.prod.outlook.com ([fe80::648f:e7fa:f95e:191b%2]) with mapi id 15.20.2878.021; Tue, 7 Apr 2020 06:20:12 +0000 From: Anoob Joseph To: Lukasz Wojciechowski , "dev@dpdk.org" CC: Narayana Prasad Raju Athreya , "Lukas Bartosik [C]" , Akhil Goyal Thread-Topic: [EXT] Re: [dpdk-dev] [PATCH 01/13] librte_security: fix verification of parameters Thread-Index: AQHWCebGveY8vKweqE27n3GY+Pp4YqhqeQDAgAH7RACAALmB8A== Date: Tue, 7 Apr 2020 06:20:12 +0000 Message-ID: References: <20200312151654.7218-1-l.wojciechow@partner.samsung.com> <20200312151654.7218-2-l.wojciechow@partner.samsung.com> In-Reply-To: Accept-Language: en-IN, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [27.34.244.203] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 04264e72-988b-49cb-9446-08d7dabbbb02 x-ms-traffictypediagnostic: MN2PR18MB2992: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:4125; x-forefront-prvs: 036614DD9C x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:MN2PR18MB2877.namprd18.prod.outlook.com; PTR:; CAT:NONE; SFTY:; SFS:(10009020)(4636009)(366004)(136003)(346002)(376002)(396003)(39850400004)(81156014)(8676002)(478600001)(15650500001)(966005)(33656002)(86362001)(7696005)(54906003)(5660300002)(110136005)(316002)(52536014)(64756008)(66446008)(66556008)(66476007)(66946007)(9686003)(55016002)(76116006)(81166006)(8936002)(30864003)(53546011)(6506007)(186003)(26005)(19627235002)(71200400001)(4326008)(2906002)(21314003); DIR:OUT; SFP:1101; received-spf: None (protection.outlook.com: marvell.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: oPyXOQVd/GJrNU8l2eBh0pTRMkxeZiaCJKPdNBu7yi/4KsEdcv1mxi9JSfyhH06AwC7Evwurl2KX4RPmHDJj//CWglugrVUFlZcDaPqd7PatXL8vWbzSKxKhe75JrLrH9mLUMQJvI/oiKvwZP5lQ6N8ZiE2Lav8cyVK73BY0nr/LwPY/eW3dE6PKkELel4j15xjRw4afCzhk1cTlW+txWnc5gR/EqvWurTzWYZfeRbUowVnzaHWSKms7rnpIyju3IsRtIjspjodXT0EJEZ9zyxOk/msfq2kcyvK9/8QsoOqdFqZ0FMuClL3Wv4UGfaaNarbuBHpA6ljbZwJb3we0KYIdYArasNRl+YPtOcxSkbDkCoJ6pJcyBl8Bidynbu+elB/BaoO7SBRPG4oLSYV6A3BQvO17r2N3JqtG/oRUp0k4qwQnWRuMsPgQRrx2V2BSYYGnJIu0rrrfyzB8bNW+vk9QL8YFsMEqkYJ206LQMbla9rrkwfUTEhtoe1hwaC1aHA8sLPvKPRE9opkGIKOZCCMzp7avKlDIpvQXzXFqFwd1ZiEiwQQf19Yk9EoMHd6R x-ms-exchange-antispam-messagedata: X8PbDWxCXIRsCjD2lirVCOm+MtWr2TTdJ6DeIPLEb2PIPMsjDOf8WYT3Kl92968Xtd8Q5DVKLp6zeD0+wv8ZX8LxCsSgWGkmQ0CH6ipKURKAB7rpGLGx5c3euTqQ6XhRxgxvO/a/5pNAGScG+s3x3Q== Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-CrossTenant-Network-Message-Id: 04264e72-988b-49cb-9446-08d7dabbbb02 X-MS-Exchange-CrossTenant-originalarrivaltime: 07 Apr 2020 06:20:12.6243 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 70e1fb47-1155-421d-87fc-2e58f638b6e0 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: n2TlWp7HHjhnd2j7eqQh8AtyQOBL0Rmk+R17PDH3ISxTGTbAwU6g5qLWU9Ndc6fivVbk/NJ1dJFzxnwAHLfm2w== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN2PR18MB2992 X-OriginatorOrg: marvell.com X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.138, 18.0.676 definitions=2020-04-07_01:2020-04-07, 2020-04-06 signatures=0 Subject: Re: [dpdk-dev] [EXT] Re: [PATCH 01/13] librte_security: fix verification of parameters X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" SGkgTHVrYXN6LA0KDQpQbGVhc2Ugc2VlIGlubGluZS4NCg0KVGhhbmtzLA0KQW5vb2INCg0KPiAt LS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBMdWthc3ogV29qY2llY2hvd3NraSA8 bC53b2pjaWVjaG93QHBhcnRuZXIuc2Ftc3VuZy5jb20+DQo+IFNlbnQ6IFR1ZXNkYXksIEFwcmls IDcsIDIwMjAgMTI6MTkgQU0NCj4gVG86IEFub29iIEpvc2VwaCA8YW5vb2JqQG1hcnZlbGwuY29t PjsgZGV2QGRwZGsub3JnDQo+IENjOiBOYXJheWFuYSBQcmFzYWQgUmFqdSBBdGhyZXlhIDxwYXRo cmV5YUBtYXJ2ZWxsLmNvbT47IEx1a2FzIEJhcnRvc2lrIFtDXQ0KPiA8bGJhcnRvc2lrQG1hcnZl bGwuY29tPg0KPiBTdWJqZWN0OiBSZTogW0VYVF0gUmU6IFtkcGRrLWRldl0gW1BBVENIIDAxLzEz XSBsaWJydGVfc2VjdXJpdHk6IGZpeCB2ZXJpZmljYXRpb24NCj4gb2YgcGFyYW1ldGVycw0KPiAN Cj4gRGVhciBBbm9vYiwNCj4gDQo+IFRoYW5rIHlvdSBmb3IgeW91ciByZXBseSBhbmQgaGludHMu DQoNCltBbm9vYl0gTm8gbWVudGlvbiENCiANCj4gDQo+IE5vdyBJIGhhdmUgcGF0Y2hlcyByZWFk eSB0byBzZW5kIGFzIHZlcnNpb24gMiwgYnV0IEkgaGVzaXRhdGUsIGJlY2F1c2UgSSBkb24ndA0K PiBsaWtlIHRoZSBpZGVhIG9mIHBsYWNpbmcgYWxsIGNoZWNrcyBpbiAjaWZkZWZzIGZvciBSVEVf TElCUlRFX1NFQ1VSSVRZX0RFQlVHDQo+IGNvbmZpZyBvcHRpb24uDQo+IA0KPiBMZXQgbWUgZXhw bGFpbiBoZXJlIHdoeTogVGhlIGNvbmZpZyBmbGFnIGFzIGEgZGVidWcgb25lIHdpbGwgYmUgZGlz YWJsZWQgYnkNCj4gZGVmYXVsdCwgd2hpY2ggbWVhbnMsIHRoYXQgbm9ybWFsbHkgbm9ib2R5IHdp bGwgdXNlIHRoZSBjaGVja3MuDQo+IEkgYmVsaWV2ZSB0aGF0IGl0IGlzIG11Y2ggYmV0dGVyIHRv IGhhdmUgY2hlY2tzIGVuYWJsZWQgYXMgbW9zdCBvZiB0aGVtIHdpbGwgc2F2ZQ0KPiB0aGUgdXNl ciBvZiBsaWJydGVfc2VjdXJpdHkgZnJvbSBzZWdtZW50YXRpb24gZmF1bHRzLCB3aGVuIHRyeWlu ZyB0byBydW4NCj4gaW5zdGFuY2UtPm9wcyBmdW5jdGlvbnMgdGhhdCBhcmUgbm90IHN1cHBvcnRl ZCBvciB1c2UgaW52YWxpZCBtZW1wb29sIG9iamVjdC4gSQ0KPiBiZWxpZXZlIGl0IHdpbGwgY2F1 c2UgbXVjaCBsZXNzIHRyb3VibGUgdG8gdmVyaWZ5IHRoZSBlcnJvciBjb2RlcyB0aGFuIHRvIGZp Z2h0IHRoZQ0KPiBzZWdmYXVsdC4NCg0KW0Fub29iXSBObyBkaXNhZ3JlZW1lbnQuIEluIGZhY3Qg dGhpcyBpcyBleGFjdGx5IHdoYXQgaXMgZG9uZSB3aXRoIGNvbnRyb2wgcGF0aCBBUElzLiBCdXQg Zm9yIGRhdGFwYXRoIEFQSXMsIHRoZSBwZW5hbHR5IG9mIHN1Y2ggY2hlY2tzIGlzIG5vdCB0cml2 aWFsLiBJIGJlbGlldmUgdGhhdCdzIHRoZSBhcmd1bWVudCBmb3IgaGF2aW5nIHRoZSBERUJVRyBj b25maWcgb3B0aW9uIGluIGV0aGRldiBkYXRhIHBhdGggb3BzLiBBbHNvLCBmb3IgY2FzZXMgbGlr ZSBpbnN0YW5jZS0+b3BzIGJlaW5nIE5VTEwsIHRoZSB1c2VyIHdvdWxkIGdldCBhIHNlZyBmYXVs dCB3aXRoIHRoZSBmaXJzdCBjYWxsIGl0c2VsZiBhbmQgaGUgY2FuIGVuYWJsZSB0aGUgY29uZmln IG9wdGlvbiB0byBkZWJ1ZyB0aGUgc2VnZmF1bHQgaGUgaXMgb2JzZXJ2aW5nLg0KDQpBcyBmb3Ig aW52YWxpZCBtZW1wb29sIG9iamVjdCwgSSBkbyBhZ3JlZSB0aGF0IGlzIG9uZSBjYXNlIHdoZXJl IHdlIGFyZSBiZXR0ZXIgb2ZmIHdpdGggcGVyIHBhY2tldCBjaGVja3MsIGJ1dCBzdGlsbCBwZXJm IGltcGFjdCB3b3VsZCBiZSB0aGVyZS4gSW4gZXRoZGV2LCB0aGUgbGlicmFyeSBkb2Vzbid0IGRv IHRoZXNlIGNoZWNrcyBhbmQgaXQgd291bGQgYmUgdXB0byB0aGUgZHJpdmVyIHRvIGhhdmUgdGhl c2UgY2hlY2tzIGlmIHJlcXVpcmVkLiBTYW1lIGlzIHRoZSBjYXNlIHdpdGggcnRlX2NyeXB0b2Rl dl9lbnF1ZXVlX2J1cnN0KCkuDQogDQo+IEl0IGlzIGFsc28gbWVudGlvbmVkIGluIHRoZSBBUEkg ZGVzY3JpcHRpb24gaW4gZmV3IHBsYWNlcyB0aGF0IHNwZWNpZmljIGNvZGVzIGFyZQ0KPiByZXR1 cm5lZCBpbiBjYXNlIHNvbWUgb3BlcmF0aW9uIGlzIG5vdCBzdXBwb3J0ZWQuIENhbiB3ZSBtYWtl IHN1Y2ggYSBjaGFuZ2VzDQo+IGluIEFQSSwgY2hhbmdpbmcgdGhlIGN1cnJlbnQgYmVoYXZpb3Ig ZnJvbSBhbiBlcnJvciByZXR1cm4gY29kZSB0byBzZWdtZW50YXRpb24NCj4gZmF1bHQgZHVyaW5n IGV4ZWN1dGlvbj8NCg0KW0Fub29iXSBEaWQgeW91IG1lYW4sIGlmIHdlIGhhdmUgdG8gYWxsb3cg c2VnIGZhdWx0IGFzIGEgdmFsaWQgZXJyb3IgY2FzZSwgYmV0dGVyIGRvY3VtZW50IGl0IGFuZCBy ZW1vdmUgdGhlIGVycm9yIGNvZGVzIGdldHRpbmcgcmV0dXJuZWQ/IEFnYWluLCBJJ20gbm90IHN1 cmUgd2hldGhlciB3ZSBjYW4gZG9jdW1lbnQgdGhhdCBzZWcgZmF1bHQgaXMgdGhlIGVycm9yIGNh c2UuIEF0bGVhc3QsIGluIGV0aGRldiBpbXByb3BlciBjb25kaXRpb25zIGNhbiBsZWFkIHRvIHNl ZyBmYXVsdCBidXQgaXMgbm90IGRvY3VtZW50ZWQuIE1heSBiZSwgbWFpbnRhaW5lcnMgc2hvdWxk IGNvbW1lbnQgb24gaXQuDQogDQo+IA0KPiBUaGF0J3Mgd2h5IEkgd291bGQgbGlrZSB0byBrZWVw IGFsbCBvZiB0aGUgY2hlY2tzIGVuYWJsZWQgYW5kIG5vdCBwbGFjZWQgaW5zaWRlDQo+IGNvbmZp ZyBvcHRpb24uDQo+IA0KPiBIb3dldmVyIGl0IHdvdWxkIGJlIG5pY2UgdG8gYWRkIHRoZSBSVEVf TElCUlRFX1NFQ1VSSVRZX0RFQlVHIGZsYWcgdGhhdA0KPiB5b3UgbWVudGlvbmVkIGZvciBjaGFu Z2luZyBjaGVja3MgYmVoYXZpb3IsIHRvIGFkZGl0aW9uYWxseSBwcm92aWRlIGxvZ3Mgb2YNCj4g Y2hlY2tzLiBUaGlzIHdheSBhIGRldmxvcGVyIHVzaW5nIGxpYnJldF9zZWN1cml0eSB3b24ndCBn ZXQgYSBzZWdtZW50YXRpb24NCj4gZmF1bHRzIGJ1dCBlcnJvciBjb2Rlcy4gSWYgW3NdaGUgd2Fu dHMgdG8gY2hlY2sgdGhlIGRldGFpbHMgaGUnbGwgcmVidWlsZCB0aGUgbGlicmFyeQ0KPiB3aXRo IGRlYnVnIGNvbmZpZyBvcHRpb24gZW5hYmxlZCBhbmQgd2lsbCBiZSBhYmxlIHRvIHNlZSBhbGwg dGhlIGRldGFpbHMgaW4gbG9ncywNCj4gc28gW3NdaGUgd2lsbCBiZSBhYmxlIHRvIGZpeCB0aGUg Y29kZS4NCj4gDQo+IFdoYXQgZG8geW91IHRoaW5rIGFib3V0IHN1Y2ggdXNhZ2Ugb2YgdGhlIGNv bmZpZyBkZWJ1ZyBmbGFnPw0KDQpbQW5vb2JdIEkgdG90YWxseSBhZ3JlZSB0byB5b3VyIHN1Z2dl c3Rpb25zIG9uIHByZXZlbnRpbmcgc2VnIGZhdWx0cy4gQnV0IG15IG9ubHkgY29uY2VybiBpcyB0 aGUgYWRkaXRpb25hbCBjaGVjayBhbmQgdGhlIGNvcnJlc3BvbmRpbmcgcGVyZiBwZW5hbHR5Lg0K DQpNYXkgYmUgbGV0J3MgbG9vayBhdCB0aGUgQVBJcyBhbmQgZGlzY3VzcyB3aGF0IG5lZWQgdG8g YmUgaGFuZGxlZCBob3csDQoNCmludA0KcnRlX3NlY3VyaXR5X3NldF9wa3RfbWV0YWRhdGEoc3Ry dWN0IHJ0ZV9zZWN1cml0eV9jdHggKmluc3RhbmNlLA0KCQkJICAgICAgc3RydWN0IHJ0ZV9zZWN1 cml0eV9zZXNzaW9uICpzZXNzLA0KCQkJICAgICAgc3RydWN0IHJ0ZV9tYnVmICptYiwgdm9pZCAq cGFyYW1zKTsNCg0KaW5zdGFuY2UgLT4gTlVMTCBjaGVja3MgdW5kZXIgY29uZmlnIG9wdGlvbg0K c2VzcyAtPiBOVUxMIGNoZWNrcyB1bmRlciBjb25maWcgb3B0aW9uDQptYiAtPiBwb3NzaWJseSBh IGRhdGFwYXRoIGNoZWNrLiBCdXQgY2FuIGxlYXZlIGl0IHRvIGRyaXZlciBhcyB3ZWxsLiAocnRl X2NyeXB0b2Rldl9lbnF1ZXVlX2J1cnN0KCkgYWxzbyBkb2Vzbid0IGRvIHRoZXNlIGNoZWNrcyku DQpQYXJhbXMgLT4gY2FuIGJlIE5VTEwgKHNvIG5vIGNoZWNrIHJlcXVpcmVkKS4NCg0KX19ydGVf ZXhwZXJpbWVudGFsDQp2b2lkICoNCnJ0ZV9zZWN1cml0eV9nZXRfdXNlcmRhdGEoc3RydWN0IHJ0 ZV9zZWN1cml0eV9jdHggKmluc3RhbmNlLCB1aW50NjRfdCBtZCk7DQoNCmluc3RhbmNlIC0+IE5V TEwgY2hlY2tzIHVuZGVyIGNvbmZpZyBvcHRpb24NCm1kIC0+IGNhbiBiZSBOVUxMIChkZXZpY2Ug c3BlY2lmaWMgdmFsdWVzKS4NCg0KRG9lcyB0aGlzIG1ha2Ugc2Vuc2UgdG8geW91Pw0KIA0KPiAN Cj4gQmVzdCByZWdhcmRzDQo+IA0KPiBMdWthc3oNCj4gDQo+IA0KPiBXIGRuaXUgMDUuMDQuMjAy MCBvwqAxNDo1NCwgQW5vb2IgSm9zZXBoIHBpc3plOg0KPiANCj4gPiBIaSBMdWthc3osDQo+ID4N Cj4gPiBQbGVhc2Ugc2VlIGlubGluZS4NCj4gPg0KPiA+IFRoYW5rcywNCj4gPiBBbm9vYg0KPiA+ DQo+ID4+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID4+IEZyb206IEx1a2FzeiBXb2pj aWVjaG93c2tpIDxsLndvamNpZWNob3dAcGFydG5lci5zYW1zdW5nLmNvbT4NCj4gPj4gU2VudDog U2F0dXJkYXksIEFwcmlsIDQsIDIwMjAgMTI6MDYgQU0NCj4gPj4gVG86IEFub29iIEpvc2VwaCA8 YW5vb2JqQG1hcnZlbGwuY29tPjsgZGV2QGRwZGsub3JnDQo+ID4+IENjOiBOYXJheWFuYSBQcmFz YWQgUmFqdSBBdGhyZXlhIDxwYXRocmV5YUBtYXJ2ZWxsLmNvbT47IEx1a2FzDQo+ID4+IEJhcnRv c2lrIFtDXSA8bGJhcnRvc2lrQG1hcnZlbGwuY29tPg0KPiA+PiBTdWJqZWN0OiBbRVhUXSBSZTog W2RwZGstZGV2XSBbUEFUQ0ggMDEvMTNdIGxpYnJ0ZV9zZWN1cml0eTogZml4DQo+ID4+IHZlcmlm aWNhdGlvbiBvZiBwYXJhbWV0ZXJzDQo+ID4+DQo+ID4+IEV4dGVybmFsIEVtYWlsDQo+ID4+DQo+ ID4+IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQ0KPiA+PiAtDQo+ID4+IEhpIEFub29iLA0KPiA+Pg0KPiA+PiBUaGFu ayB5b3UgdmVyeSBtdWNoIGZvciB5b3VyIHJldmlldy4NCj4gPj4gUGxlYXNlIHNlZSBteSBhbnN3 ZXJzIGlubGluZS4NCj4gPj4NCj4gPj4gQmVzdCByZWdhcmRzLA0KPiA+PiBMdWthc3oNCj4gPj4N Cj4gPj4NCj4gPj4gVyBkbml1IDE3LjAzLjIwMjAgb8KgMTM6NTksIEFub29iIEpvc2VwaCBwaXN6 ZToNCj4gPj4+IEhpIEx1a2FzeiwNCj4gPj4+DQo+ID4+PiBQbGVhc2Ugc2VlIGlubGluZS4NCj4g Pj4+DQo+ID4+PiBUaGFua3MsDQo+ID4+PiBBbm9vYg0KPiA+Pj4NCj4gPj4+PiAtLS0tLU9yaWdp bmFsIE1lc3NhZ2UtLS0tLQ0KPiA+Pj4+IEZyb206IGRldiA8ZGV2LWJvdW5jZXNAZHBkay5vcmc+ IE9uIEJlaGFsZiBPZiBMdWthc3ogV29qY2llY2hvd3NraQ0KPiA+Pj4+IFNlbnQ6IFRodXJzZGF5 LCBNYXJjaCAxMiwgMjAyMCA4OjQ3IFBNDQo+ID4+Pj4gVG86IGRldkBkcGRrLm9yZw0KPiA+Pj4+ IFN1YmplY3Q6IFtkcGRrLWRldl0gW1BBVENIIDAxLzEzXSBsaWJydGVfc2VjdXJpdHk6IGZpeCB2 ZXJpZmljYXRpb24NCj4gPj4+PiBvZiBwYXJhbWV0ZXJzDQo+ID4+PiBbQW5vb2JdIEkgYmVsaWV2 ZSB0aGUgdGl0bGUgaGFzIHRvIGJlOiAic2VjdXJpdHk6IGZpeCB2ZXJpZmljYXRpb24gb2YNCj4g cGFyYW1ldGVycyINCj4gPj4+DQo+ID4+PiBBbHNvLCB5b3UgY2FuIGFkZCAiRml4ZXMiIGFzIHdl bGwuDQo+ID4+IEkgY2hhbmdlZCB0aGUgdGl0bGUgYW5kIHdpbGwgcHVzaCB0aGUgbmV3IG9uIGlu IDJuZCB2ZXJzaW9uIG9mIHRoZQ0KPiA+PiBwYWNoZXMgYWZ0ZXIgSSdsbCBmaXggYWxsIG90aGVy IGlzc3Vlcy4NCj4gPj4NCj4gPj4gSG93IGRvIHlvdSBhZGQgYSAiRml4ZXMiIHRhZyB0byBhIHBh dGNoPw0KPiA+IFtBbm9vYl0NCj4gPg0KPiA+IENoZWNrIHRoZSBiZWxvdyBsaW5rLiBJdCBleHBs YWlucyB0aGUgZm9ybWF0IG9mIHRoZSBwYXRjaCB3aXRoIGZpeGVzLg0KPiA+IGh0dHBzOi8vdXJs ZGVmZW5zZS5wcm9vZnBvaW50LmNvbS92Mi91cmw/dT1odHRwcy0zQV9fcHJvdGVjdDIuZmlyZWV5 ZS4NCj4gPiBjb21fdXJsLTNGay0zRDEzZTgwNTQ5LTJENGU3NjllYTMtMkQxM2U5OGUwNi0yRDBj YzQ3YTZjYmEwNC0NCj4gMkQ3OGY0ODI4Mg0KPiA+IGU5OTBiNDE2LTI2cS0zRDEtMjZ1LTNEaHR0 cHMtMjUzQS0yNTJGLTI1MkZkb2MuZHBkay5vcmctMjUyRmd1aWRlcy0NCj4gMjUyDQo+ID4gRmNv bnRyaWJ1dGluZy0yNTJGcGF0Y2hlcy5odG1sLTI1MjNjb21taXQtMkRtZXNzYWdlcy0NCj4gMkRi b2R5JmQ9RHdJRGFRJmMNCj4gPiA9bktqV2VjMmI2UjBtT3lQYXo3eHRmUSZyPWpQZkI4cnd3dmlS U3h5TFdzMm42Qi0NCj4gV1lMbjF2OVN5VE1yVDVFUXFoMlRVJg0KPiA+IG09ZlRHeG81TWg5alBB MC14djhYU0F0WnBIRDlUWmViQ0pXVzlQR2NFbFltQSZzPWcySGxJMHo4MUUwTTUtDQo+IHR4RjJV NUFnDQo+ID4geEVnMGwzTUhzNEpUME84QWlIdm04JmU9DQo+ID4NCj4gPj4+PiBUaGlzIHBhdGNo IGFkZHMgdmVyaWZpY2F0aW9uIG9mIHRoZSBwYXJhbWV0ZXJzIHRvIHRoZSByZXRfc2VjdXJpdHkN Cj4gPj4+PiBBUEkNCj4gPj4gZnVuY3Rpb25zLg0KPiA+Pj4+IEFsbCByZXF1aXJlZCBwYXJhbWV0 ZXJzIGFyZSBjaGVja2VkIGlmIHRoZXkgYXJlIG5vdCBOVUxMLg0KPiA+Pj4+DQo+ID4+Pj4gQ2hl Y2tzIHZlcmlmeSBmdWxsIGNoYWluIG9mIHBvaW50ZXJzLCBlLmcuIGluIGNhc2Ugb2YgdmVyaWZp Y2F0aW9uDQo+ID4+Pj4gb2YNCj4gPj4+PiAiaW5zdGFuY2UtPm9wcy0NCj4gPj4+Pj4gc2Vzc2lv bl9YWFgiLCB0aGV5IGNoZWNrIGFsc28gImluc3RhbmNlIiBhbmQgImluc3RhbmNlLT5vcHMiLg0K PiA+Pj4+IFNpZ25lZC1vZmYtYnk6IEx1a2FzeiBXb2pjaWVjaG93c2tpDQo+ID4+Pj4gPGwud29q Y2llY2hvd0BwYXJ0bmVyLnNhbXN1bmcuY29tPg0KPiA+Pj4+IENoYW5nZS1JZDogSTE3MjRjOTI2 YTFhMGExM2ZkMTZkNzZmMTk4NDJhMGI0MGZiZWExYjINCj4gPj4+PiAtLS0NCj4gPj4+PiAgICBs aWIvbGlicnRlX3NlY3VyaXR5L3J0ZV9zZWN1cml0eS5jIHwgNTggKysrKysrKysrKysrKysrKysr KysrKystLS0tLS0tDQo+ID4+Pj4gICAgMSBmaWxlIGNoYW5nZWQsIDQ1IGluc2VydGlvbnMoKyks IDEzIGRlbGV0aW9ucygtKQ0KPiA+Pj4+DQo+ID4+Pj4gZGlmZiAtLWdpdCBhL2xpYi9saWJydGVf c2VjdXJpdHkvcnRlX3NlY3VyaXR5LmMNCj4gPj4+PiBiL2xpYi9saWJydGVfc2VjdXJpdHkvcnRl X3NlY3VyaXR5LmMNCj4gPj4+PiBpbmRleCBiYzgxY2UxNWQuLjQwYTBlOWNlNSAxMDA2NDQNCj4g Pj4+PiAtLS0gYS9saWIvbGlicnRlX3NlY3VyaXR5L3J0ZV9zZWN1cml0eS5jDQo+ID4+Pj4gKysr IGIvbGliL2xpYnJ0ZV9zZWN1cml0eS9ydGVfc2VjdXJpdHkuYw0KPiA+Pj4+IEBAIC0xLDYgKzEs NyBAQA0KPiA+Pj4+ICAgIC8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UN Cj4gPj4+PiAgICAgKiBDb3B5cmlnaHQgMjAxNyBOWFAuDQo+ID4+Pj4gICAgICogQ29weXJpZ2h0 KGMpIDIwMTcgSW50ZWwgQ29ycG9yYXRpb24uDQo+ID4+Pj4gKyAqIENvcHlyaWdodCAoYykgMjAy MCBTYW1zdW5nIEVsZWN0cm9uaWNzIENvLiwgTHRkIEFsbCBSaWdodHMNCj4gPj4+PiArIFJlc2Vy dmVkDQo+ID4+Pj4gICAgICovDQo+ID4+Pj4NCj4gPj4+PiAgICAjaW5jbHVkZSA8cnRlX21hbGxv Yy5oPg0KPiA+Pj4+IEBAIC05LDYgKzEwLDEyIEBADQo+ID4+Pj4gICAgI2luY2x1ZGUgInJ0ZV9z ZWN1cml0eS5oIg0KPiA+Pj4+ICAgICNpbmNsdWRlICJydGVfc2VjdXJpdHlfZHJpdmVyLmgiDQo+ ID4+Pj4NCj4gPj4+PiArLyogTWFjcm8gdG8gY2hlY2sgZm9yIGludmFsaWQgcG9pbnRlcnMgKi8N Cj4gPj4+PiArI2RlZmluZSBSVEVfUFRSX09SX0VSUl9SRVQocHRyLCByZXR2YWwpIGRvIHsJXA0K PiA+Pj4+ICsJaWYgKChwdHIpID09IE5VTEwpCQkJXA0KPiA+Pj4+ICsJCXJldHVybiByZXR2YWw7 CQkJXA0KPiA+Pj4+ICt9IHdoaWxlICgwKQ0KPiA+Pj4+ICsNCj4gPj4+PiAgICBzdHJ1Y3QgcnRl X3NlY3VyaXR5X3Nlc3Npb24gKg0KPiA+Pj4+ICAgIHJ0ZV9zZWN1cml0eV9zZXNzaW9uX2NyZWF0 ZShzdHJ1Y3QgcnRlX3NlY3VyaXR5X2N0eCAqaW5zdGFuY2UsDQo+ID4+Pj4gICAgCQkJICAgIHN0 cnVjdCBydGVfc2VjdXJpdHlfc2Vzc2lvbl9jb25mICpjb25mLCBAQCAtMTYsMTANCj4gPj4+PiAr MjMsMTEgQEAgcnRlX3NlY3VyaXR5X3Nlc3Npb25fY3JlYXRlKHN0cnVjdCBydGVfc2VjdXJpdHlf Y3R4DQo+ID4+Pj4gKyppbnN0YW5jZSwgIHsNCj4gPj4+PiAgICAJc3RydWN0IHJ0ZV9zZWN1cml0 eV9zZXNzaW9uICpzZXNzID0gTlVMTDsNCj4gPj4+Pg0KPiA+Pj4+IC0JaWYgKGNvbmYgPT0gTlVM TCkNCj4gPj4+PiAtCQlyZXR1cm4gTlVMTDsNCj4gPj4+PiAtDQo+ID4+Pj4gLQlSVEVfRlVOQ19Q VFJfT1JfRVJSX1JFVCgqaW5zdGFuY2UtPm9wcy0+c2Vzc2lvbl9jcmVhdGUsIE5VTEwpOw0KPiA+ Pj4+ICsJUlRFX1BUUl9PUl9FUlJfUkVUKGluc3RhbmNlLCBOVUxMKTsNCj4gPj4+PiArCVJURV9Q VFJfT1JfRVJSX1JFVChpbnN0YW5jZS0+b3BzLCBOVUxMKTsNCj4gPj4+PiArCVJURV9QVFJfT1Jf RVJSX1JFVChpbnN0YW5jZS0+b3BzLT5zZXNzaW9uX2NyZWF0ZSwgTlVMTCk7DQo+ID4+PiBbQW5v b2JdIFRoZSBhYm92ZSB0aHJlZSBsaW5lcyBhcmUgcmVwZWF0ZWQgZm9yIGV2ZXJ5IG9wIE5VTEwg Y2hlY2suDQo+ID4+PiBDYW4gd2UNCj4gPj4gaW50cm9kdWNlIG9uZSBtYWNybyBmb3IgZG9pbmcg YWxsIHRoZSB0aHJlZSBjaGVja3M/IEluIGNhc2UgaWYgaXQNCj4gPj4gZG9lc24ndCBjb21lIG9m ZiB3ZWxsLCB3ZSBjYW4gc3RpY2sgdG8gaW5kaXZpZHVhbCBjaGVja3MuDQo+ID4+IERvbmUuIFdp bGwgYXBwZWFyIGluIDJuZCB2ZXJzaW9uIG9mIHBhdGNoZXMuDQo+ID4+Pj4gKwlSVEVfUFRSX09S X0VSUl9SRVQoY29uZiwgTlVMTCk7DQo+ID4+Pj4gKwlSVEVfUFRSX09SX0VSUl9SRVQobXAsIE5V TEwpOw0KPiA+Pj4+DQo+ID4+Pj4gICAgCWlmIChydGVfbWVtcG9vbF9nZXQobXAsICh2b2lkICoq KSZzZXNzKSkNCj4gPj4+PiAgICAJCXJldHVybiBOVUxMOw0KPiA+Pj4+IEBAIC0zOCwxNCArNDYs MjAgQEAgcnRlX3NlY3VyaXR5X3Nlc3Npb25fdXBkYXRlKHN0cnVjdA0KPiA+Pj4+IHJ0ZV9zZWN1 cml0eV9jdHggKmluc3RhbmNlLA0KPiA+Pj4+ICAgIAkJCSAgICBzdHJ1Y3QgcnRlX3NlY3VyaXR5 X3Nlc3Npb24gKnNlc3MsDQo+ID4+Pj4gICAgCQkJICAgIHN0cnVjdCBydGVfc2VjdXJpdHlfc2Vz c2lvbl9jb25mICpjb25mKSAgew0KPiA+Pj4+IC0JUlRFX0ZVTkNfUFRSX09SX0VSUl9SRVQoKmlu c3RhbmNlLT5vcHMtPnNlc3Npb25fdXBkYXRlLCAtDQo+ID4+Pj4gRU5PVFNVUCk7DQo+ID4+Pj4g KwlSVEVfUFRSX09SX0VSUl9SRVQoaW5zdGFuY2UsIC1FSU5WQUwpOw0KPiA+Pj4+ICsJUlRFX1BU Ul9PUl9FUlJfUkVUKGluc3RhbmNlLT5vcHMsIC1FSU5WQUwpOw0KPiA+Pj4+ICsJUlRFX1BUUl9P Ul9FUlJfUkVUKGluc3RhbmNlLT5vcHMtPnNlc3Npb25fdXBkYXRlLCAtRU5PVFNVUCk7DQo+ID4+ Pj4gKwlSVEVfUFRSX09SX0VSUl9SRVQoc2VzcywgLUVJTlZBTCk7DQo+ID4+Pj4gKwlSVEVfUFRS X09SX0VSUl9SRVQoY29uZiwgLUVJTlZBTCk7DQo+ID4+Pj4gICAgCXJldHVybiBpbnN0YW5jZS0+ b3BzLT5zZXNzaW9uX3VwZGF0ZShpbnN0YW5jZS0+ZGV2aWNlLCBzZXNzLA0KPiA+Pj4+IGNvbmYp OyAgfQ0KPiA+Pj4+DQo+ID4+Pj4gICAgdW5zaWduZWQgaW50DQo+ID4+Pj4gICAgcnRlX3NlY3Vy aXR5X3Nlc3Npb25fZ2V0X3NpemUoc3RydWN0IHJ0ZV9zZWN1cml0eV9jdHggKmluc3RhbmNlKSAg ew0KPiA+Pj4+IC0JUlRFX0ZVTkNfUFRSX09SX0VSUl9SRVQoKmluc3RhbmNlLT5vcHMtPnNlc3Np b25fZ2V0X3NpemUsIDApOw0KPiA+Pj4+ICsJUlRFX1BUUl9PUl9FUlJfUkVUKGluc3RhbmNlLCAw KTsNCj4gPj4+PiArCVJURV9QVFJfT1JfRVJSX1JFVChpbnN0YW5jZS0+b3BzLCAwKTsNCj4gPj4+ PiArCVJURV9QVFJfT1JfRVJSX1JFVChpbnN0YW5jZS0+b3BzLT5zZXNzaW9uX2dldF9zaXplLCAw KTsNCj4gPj4+PiAgICAJcmV0dXJuIGluc3RhbmNlLT5vcHMtPnNlc3Npb25fZ2V0X3NpemUoaW5z dGFuY2UtPmRldmljZSk7DQo+ID4+Pj4gICAgfQ0KPiA+Pj4+DQo+ID4+Pj4gQEAgLTU0LDcgKzY4 LDExIEBAIHJ0ZV9zZWN1cml0eV9zZXNzaW9uX3N0YXRzX2dldChzdHJ1Y3QNCj4gPj4+PiBydGVf c2VjdXJpdHlfY3R4ICppbnN0YW5jZSwNCj4gPj4+PiAgICAJCQkgICAgICAgc3RydWN0IHJ0ZV9z ZWN1cml0eV9zZXNzaW9uICpzZXNzLA0KPiA+Pj4+ICAgIAkJCSAgICAgICBzdHJ1Y3QgcnRlX3Nl Y3VyaXR5X3N0YXRzICpzdGF0cykgIHsNCj4gPj4+PiAtCVJURV9GVU5DX1BUUl9PUl9FUlJfUkVU KCppbnN0YW5jZS0+b3BzLT5zZXNzaW9uX3N0YXRzX2dldCwgLQ0KPiA+Pj4+IEVOT1RTVVApOw0K PiA+Pj4+ICsJUlRFX1BUUl9PUl9FUlJfUkVUKGluc3RhbmNlLCAtRUlOVkFMKTsNCj4gPj4+PiAr CVJURV9QVFJfT1JfRVJSX1JFVChpbnN0YW5jZS0+b3BzLCAtRUlOVkFMKTsNCj4gPj4+PiArCVJU RV9QVFJfT1JfRVJSX1JFVChpbnN0YW5jZS0+b3BzLT5zZXNzaW9uX3N0YXRzX2dldCwgLUVOT1RT VVApOw0KPiA+Pj4+ICsJLy8gUGFyYW1ldGVyIHNlc3MgY2FuIGJlIE5VTEwgaW4gY2FzZSBvZiBn ZXR0aW5nIGdsb2JhbCBzdGF0aXN0aWNzLg0KPiA+Pj4gW0Fub29iXSBDaGVja3BhdGNoIGVycm9y Lg0KPiA+Pj4gRVJST1I6Qzk5X0NPTU1FTlRTOiBkbyBub3QgdXNlIEM5OSAvLyBjb21tZW50cw0K PiA+PiBEb25lLiBXaWxsIGFwcGVhciBpbiAybmQgdmVyc2lvbiBvZiBwYXRjaGVzLg0KPiA+Pj4+ ICsJUlRFX1BUUl9PUl9FUlJfUkVUKHN0YXRzLCAtRUlOVkFMKTsNCj4gPj4+PiAgICAJcmV0dXJu IGluc3RhbmNlLT5vcHMtPnNlc3Npb25fc3RhdHNfZ2V0KGluc3RhbmNlLT5kZXZpY2UsIHNlc3Ms DQo+ID4+Pj4gc3RhdHMpOyB9DQo+ID4+Pj4NCj4gPj4+PiBAQCAtNjQsNyArODIsMTAgQEAgcnRl X3NlY3VyaXR5X3Nlc3Npb25fZGVzdHJveShzdHJ1Y3QNCj4gPj4+PiBydGVfc2VjdXJpdHlfY3R4 ICppbnN0YW5jZSwgIHsNCj4gPj4+PiAgICAJaW50IHJldDsNCj4gPj4+Pg0KPiA+Pj4+IC0JUlRF X0ZVTkNfUFRSX09SX0VSUl9SRVQoKmluc3RhbmNlLT5vcHMtPnNlc3Npb25fZGVzdHJveSwgLQ0K PiA+Pj4+IEVOT1RTVVApOw0KPiA+Pj4+ICsJUlRFX1BUUl9PUl9FUlJfUkVUKGluc3RhbmNlLCAt RUlOVkFMKTsNCj4gPj4+PiArCVJURV9QVFJfT1JfRVJSX1JFVChpbnN0YW5jZS0+b3BzLCAtRUlO VkFMKTsNCj4gPj4+PiArCVJURV9QVFJfT1JfRVJSX1JFVChpbnN0YW5jZS0+b3BzLT5zZXNzaW9u X2Rlc3Ryb3ksIC1FTk9UU1VQKTsNCj4gPj4+PiArCVJURV9QVFJfT1JfRVJSX1JFVChzZXNzLCAt RUlOVkFMKTsNCj4gPj4+Pg0KPiA+Pj4+ICAgIAlpZiAoaW5zdGFuY2UtPnNlc3NfY250KQ0KPiA+ Pj4+ICAgIAkJaW5zdGFuY2UtPnNlc3NfY250LS07DQo+ID4+Pj4gQEAgLTgxLDcgKzEwMiwxMSBA QCBydGVfc2VjdXJpdHlfc2V0X3BrdF9tZXRhZGF0YShzdHJ1Y3QNCj4gPj4+PiBydGVfc2VjdXJp dHlfY3R4ICppbnN0YW5jZSwNCj4gPj4+PiAgICAJCQkgICAgICBzdHJ1Y3QgcnRlX3NlY3VyaXR5 X3Nlc3Npb24gKnNlc3MsDQo+ID4+Pj4gICAgCQkJICAgICAgc3RydWN0IHJ0ZV9tYnVmICptLCB2 b2lkICpwYXJhbXMpICB7DQo+ID4+Pj4gLQlSVEVfRlVOQ19QVFJfT1JfRVJSX1JFVCgqaW5zdGFu Y2UtPm9wcy0+c2V0X3BrdF9tZXRhZGF0YSwgLQ0KPiA+Pj4+IEVOT1RTVVApOw0KPiA+Pj4+ICsJ UlRFX1BUUl9PUl9FUlJfUkVUKGluc3RhbmNlLCAtRUlOVkFMKTsNCj4gPj4+PiArCVJURV9QVFJf T1JfRVJSX1JFVChpbnN0YW5jZS0+b3BzLCAtRUlOVkFMKTsNCj4gPj4+PiArCVJURV9QVFJfT1Jf RVJSX1JFVChpbnN0YW5jZS0+b3BzLT5zZXRfcGt0X21ldGFkYXRhLCAtRU5PVFNVUCk7DQo+ID4+ PiBbQW5vb2JdIHNldF9wa3RfbWV0YWRhdGEoKSBhbmQgZ2V0X3VzZXJkYXRhKCkgYXJlIGRhdGFw YXRoIG9wcy4gU28NCj4gPj4+IGNhbiB5b3UNCj4gPj4gaW50cm9kdWNlIGEgY29uZmlnIG9wdGlv biB0byBlbmFibGUvZGlzYWJsZSB0aGUgY2hlY2tzLg0KPiA+Pj4gUGxlYXNlIGNoZWNrLA0KPiA+ Pj4gaHR0cHM6Ly91cmxkZWZlbnNlLnByb29mcG9pbnQuY29tL3YyL3VybD91PWh0dHBzLQ0KPiAz QV9fcHJvdGVjdDIuZmlyZWV5ZS5jb21fdXJsLTNGay0zRGVlZTgwMjBhLTJEYjM3Njk5ZTAtMkRl ZWU5ODk0NS0NCj4gMkQwY2M0N2E2Y2JhMDQtMkQ1NjE5NTRmMzQyNGVjZWVhLTI2cS0zRDEtMjZ1 LTNEaHR0cHMtMjUzQS0yNTJGLQ0KPiAyNTJGdXJsZGVmZW5zZS5wcm9vZnBvaW50LmNvbS0yNTJG djItMjUyRnVybC0yNTNGdS0yNTNEaHR0cHMtMkQzQS01Ri0NCj4gNUZwcm90ZWN0Mi5maXJlZXll JmQ9RHdJRGFRJmM9bktqV2VjMmI2UjBtT3lQYXo3eHRmUSZyPWpQZkI4cnd3dmlSUw0KPiB4eUxX czJuNkItV1lMbjF2OVN5VE1yVDVFUXFoMlRVJm09ZlRHeG81TWg5alBBMC0NCj4geHY4WFNBdFpw SEQ5VFplYkNKV1c5UEdjRWxZbUEmcz12RU5tOWZJQkU1REVOQ0FhZVlUZVlGd0tfX2cwNkp2DQo+ IEstbHlPaUpoLVZMMCZlPSAuDQo+ID4+PiBjb21fdXJsLTNGay0zRGM1MmQ4YzMyLTJEOThlMTQw OTctMkRjNTJjMDc3ZC0yRDBjYzQ3YTMwZDQ0Ni0NCj4gPj4gMkRjMWI5ZDg3Mw0KPiA+Pj4gZTNl NTljYzQtMjZ1LTNEaHR0cC0zQV9fY29kZS5kcGRrLm9yZ19kcGRrX2xhdGVzdF9zb3VyY2VfbGli X2xpYnJ0ZS0NCj4gPj4+IDVGDQo+ID4+PiBldGhkZXZfcnRlLTVGZXRoZGV2LmgtDQo+ID4+IDIz TDQzNzImZD1Ed0lEYVEmYz1uS2pXZWMyYjZSMG1PeVBhejd4dGZRJnI9alBmQg0KPiA+Pj4gOHJ3 d3ZpUlN4eUxXczJuNkItDQo+ID4+IFdZTG4xdjlTeVRNclQ1RVFxaDJUVSZtPWFUbzE4RkR2cUhR QmdoT0FoYmk3eDBmNkV1WDcNCj4gPj4NCj4gd1pIVFV0c1JSbG9aOUJ3JnM9VFhwdjZ1UVpXMVd3 Ql9BdjN2Q2FIZVVhaWJRekEweXBVVXFuUHk1YVFsRQ0KPiA+PiAmZT0NCj4gPj4gQ291bGQgeW91 IGV4cGxhaW4gYSBiaXQgZnVydGhlcj8NCj4gPj4NCj4gPj4gRG8geW91IHByb3Bvc2UgdG8gbWFr ZSBjaGVja3MgaW5zaWRlICNpZmRlZiBSVEVfTElCUlRFX1NFQ1VSSVRZX0RFQlVHDQo+ID4+IG9y IHNvPw0KPiA+IFtBbm9vYl0gWWVzLiBZb3Ugd2lsbCBuZWVkIHRvIGludHJvZHVjZSBhIG5ldyBj b25maWcgZmxhZw0KPiAoUlRFX0xJQlJURV9TRUNVUklUWV9ERUJVRykgYW5kIGJhc2VkIG9uIHRo YXQsIHRoZSBlcnJvciBjaGVja3MgY2FuIGJlDQo+IGVuYWJsZWQvZGlzYWJsZWQuDQo+ID4NCj4g Pj4gQW5kIGRvIHlvdSBoYXZlIGFsbCBjaGVja3Mgb3IganVzdCBzZXNzIGFuZCBtIG9uIG1pbmQ/ DQo+ID4gW0Fub29iXSBJIHRoaW5rIHdlIHNob3VsZCBoYXZlIGFsbCBjaGVja3MgdW5kZXIgdGhl IGNvbmZpZyBvcHRpb24uDQo+ID4NCj4gPj4gVGhlIGluc3RhbmNlLT5vcHMtPmZ1bmN0aW9uIGNo ZWNrcyB3ZXJlIGFscmVhZHkgdGhlcmUgd2l0aG91dCBhbnkNCj4gPj4gY29uZmlnIG9wdGlvbnMg aW4gYWxsIEFQSSBmdW5jdGlvbnMuDQo+ID4gW0Fub29iXSBNdXN0IGhhdmUgc2xpcHBlZCB0aHJv dWdoLiBUaGFua3MgZm9yIHBvaW50aW5nIGl0IG91dC4NCj4gPg0KPiA+Pj4+ICsJUlRFX1BUUl9P Ul9FUlJfUkVUKHNlc3MsIC1FSU5WQUwpOw0KPiA+Pj4+ICsJUlRFX1BUUl9PUl9FUlJfUkVUKG0s IC1FSU5WQUwpOw0KPiA+Pj4+ICAgIAlyZXR1cm4gaW5zdGFuY2UtPm9wcy0+c2V0X3BrdF9tZXRh ZGF0YShpbnN0YW5jZS0+ZGV2aWNlLA0KPiA+Pj4+ICAgIAkJCQkJICAgICAgIHNlc3MsIG0sIHBh cmFtcyk7DQo+ID4+Pj4gICAgfQ0KPiA+Pj4+IEBAIC05MSw3ICsxMTYsOSBAQCBydGVfc2VjdXJp dHlfZ2V0X3VzZXJkYXRhKHN0cnVjdA0KPiA+Pj4+IHJ0ZV9zZWN1cml0eV9jdHggKmluc3RhbmNl LCB1aW50NjRfdCBtZCkgIHsNCj4gPj4+PiAgICAJdm9pZCAqdXNlcmRhdGEgPSBOVUxMOw0KPiA+ Pj4+DQo+ID4+Pj4gLQlSVEVfRlVOQ19QVFJfT1JfRVJSX1JFVCgqaW5zdGFuY2UtPm9wcy0+Z2V0 X3VzZXJkYXRhLCBOVUxMKTsNCj4gPj4+PiArCVJURV9QVFJfT1JfRVJSX1JFVChpbnN0YW5jZSwg TlVMTCk7DQo+ID4+Pj4gKwlSVEVfUFRSX09SX0VSUl9SRVQoaW5zdGFuY2UtPm9wcywgTlVMTCk7 DQo+ID4+Pj4gKwlSVEVfUFRSX09SX0VSUl9SRVQoaW5zdGFuY2UtPm9wcy0+Z2V0X3VzZXJkYXRh LCBOVUxMKTsNCj4gPj4+PiAgICAJaWYgKGluc3RhbmNlLT5vcHMtPmdldF91c2VyZGF0YShpbnN0 YW5jZS0+ZGV2aWNlLCBtZCwgJnVzZXJkYXRhKSkNCj4gPj4+PiAgICAJCXJldHVybiBOVUxMOw0K PiA+Pj4+DQo+ID4+Pj4gQEAgLTEwMSw3ICsxMjgsOSBAQCBydGVfc2VjdXJpdHlfZ2V0X3VzZXJk YXRhKHN0cnVjdA0KPiA+Pj4+IHJ0ZV9zZWN1cml0eV9jdHggKmluc3RhbmNlLCB1aW50NjRfdCBt ZCkgIGNvbnN0IHN0cnVjdA0KPiA+Pj4+IHJ0ZV9zZWN1cml0eV9jYXBhYmlsaXR5ICogcnRlX3Nl Y3VyaXR5X2NhcGFiaWxpdGllc19nZXQoc3RydWN0DQo+IHJ0ZV9zZWN1cml0eV9jdHggKmluc3Rh bmNlKSAgew0KPiA+Pj4+IC0JUlRFX0ZVTkNfUFRSX09SX0VSUl9SRVQoKmluc3RhbmNlLT5vcHMt PmNhcGFiaWxpdGllc19nZXQsIE5VTEwpOw0KPiA+Pj4+ICsJUlRFX1BUUl9PUl9FUlJfUkVUKGlu c3RhbmNlLCBOVUxMKTsNCj4gPj4+PiArCVJURV9QVFJfT1JfRVJSX1JFVChpbnN0YW5jZS0+b3Bz LCBOVUxMKTsNCj4gPj4+PiArCVJURV9QVFJfT1JfRVJSX1JFVChpbnN0YW5jZS0+b3BzLT5jYXBh YmlsaXRpZXNfZ2V0LCBOVUxMKTsNCj4gPj4+PiAgICAJcmV0dXJuIGluc3RhbmNlLT5vcHMtPmNh cGFiaWxpdGllc19nZXQoaW5zdGFuY2UtPmRldmljZSk7DQo+ID4+Pj4gICAgfQ0KPiA+Pj4+DQo+ ID4+Pj4gQEAgLTExMyw3ICsxNDIsMTAgQEAgcnRlX3NlY3VyaXR5X2NhcGFiaWxpdHlfZ2V0KHN0 cnVjdA0KPiA+Pj4+IHJ0ZV9zZWN1cml0eV9jdHggKmluc3RhbmNlLA0KPiA+Pj4+ICAgIAljb25z dCBzdHJ1Y3QgcnRlX3NlY3VyaXR5X2NhcGFiaWxpdHkgKmNhcGFiaWxpdHk7DQo+ID4+Pj4gICAg CXVpbnQxNl90IGkgPSAwOw0KPiA+Pj4+DQo+ID4+Pj4gLQlSVEVfRlVOQ19QVFJfT1JfRVJSX1JF VCgqaW5zdGFuY2UtPm9wcy0+Y2FwYWJpbGl0aWVzX2dldCwgTlVMTCk7DQo+ID4+Pj4gKwlSVEVf UFRSX09SX0VSUl9SRVQoaW5zdGFuY2UsIE5VTEwpOw0KPiA+Pj4+ICsJUlRFX1BUUl9PUl9FUlJf UkVUKGluc3RhbmNlLT5vcHMsIE5VTEwpOw0KPiA+Pj4+ICsJUlRFX1BUUl9PUl9FUlJfUkVUKGlu c3RhbmNlLT5vcHMtPmNhcGFiaWxpdGllc19nZXQsIE5VTEwpOw0KPiA+Pj4+ICsJUlRFX1BUUl9P Ul9FUlJfUkVUKGlkeCwgTlVMTCk7DQo+ID4+Pj4gICAgCWNhcGFiaWxpdGllcyA9DQo+ID4+Pj4g aW5zdGFuY2UtPm9wcy0+Y2FwYWJpbGl0aWVzX2dldChpbnN0YW5jZS0+ZGV2aWNlKTsNCj4gPj4+ Pg0KPiA+Pj4+ICAgIAlpZiAoY2FwYWJpbGl0aWVzID09IE5VTEwpDQo+ID4+Pj4gQEAgLTEyMSw3 ICsxNTMsNyBAQCBydGVfc2VjdXJpdHlfY2FwYWJpbGl0eV9nZXQoc3RydWN0DQo+ID4+Pj4gcnRl X3NlY3VyaXR5X2N0eCAqaW5zdGFuY2UsDQo+ID4+Pj4NCj4gPj4+PiAgICAJd2hpbGUgKChjYXBh YmlsaXR5ID0gJmNhcGFiaWxpdGllc1tpKytdKS0+YWN0aW9uDQo+ID4+Pj4gICAgCQkJIT0gUlRF X1NFQ1VSSVRZX0FDVElPTl9UWVBFX05PTkUpIHsNCj4gPj4+PiAtCQlpZiAoY2FwYWJpbGl0eS0+ YWN0aW9uICA9PSBpZHgtPmFjdGlvbiAmJg0KPiA+Pj4+ICsJCWlmIChjYXBhYmlsaXR5LT5hY3Rp b24gPT0gaWR4LT5hY3Rpb24gJiYNCj4gPj4+PiAgICAJCQkJY2FwYWJpbGl0eS0+cHJvdG9jb2wg PT0gaWR4LT5wcm90b2NvbCkgew0KPiA+Pj4+ICAgIAkJCWlmIChpZHgtPnByb3RvY29sID09IFJU RV9TRUNVUklUWV9QUk9UT0NPTF9JUFNFQykNCj4gPj4gew0KPiA+Pj4+ICAgIAkJCQlpZiAoY2Fw YWJpbGl0eS0+aXBzZWMucHJvdG8gPT0NCj4gPj4+PiAtLQ0KPiA+Pj4+IDIuMTcuMQ0KPiA+PiAt LQ0KPiA+Pg0KPiA+PiBMdWthc3ogV29qY2llY2hvd3NraQ0KPiA+PiBQcmluY2lwYWwgU29mdHdh cmUgRW5naW5lZXINCj4gPj4NCj4gPj4gU2Ftc3VuZyBSJkQgSW5zdGl0dXRlIFBvbGFuZA0KPiA+ PiBTYW1zdW5nIEVsZWN0cm9uaWNzDQo+ID4+IE9mZmljZSArNDggMjIgMzc3IDg4IDI1DQo+ID4+ IGwud29qY2llY2hvd0BwYXJ0bmVyLnNhbXN1bmcuY29tDQo+IA0KPiAtLQ0KPiANCj4gTHVrYXN6 IFdvamNpZWNob3dza2kNCj4gUHJpbmNpcGFsIFNvZnR3YXJlIEVuZ2luZWVyDQo+IA0KPiBTYW1z dW5nIFImRCBJbnN0aXR1dGUgUG9sYW5kDQo+IFNhbXN1bmcgRWxlY3Ryb25pY3MNCj4gT2ZmaWNl ICs0OCAyMiAzNzcgODggMjUNCj4gbC53b2pjaWVjaG93QHBhcnRuZXIuc2Ftc3VuZy5jb20NCg0K