From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id E582C462B0; Tue, 25 Feb 2025 14:18:24 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 730BF427C5; Tue, 25 Feb 2025 14:18:24 +0100 (CET) Received: from mx0a-0016f401.pphosted.com (mx0a-0016f401.pphosted.com [67.231.148.174]) by mails.dpdk.org (Postfix) with ESMTP id CFF1841101 for ; Tue, 25 Feb 2025 14:18:22 +0100 (CET) Received: from pps.filterd (m0431384.ppops.net [127.0.0.1]) by mx0a-0016f401.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 51P9WEcH018241; Tue, 25 Feb 2025 05:18:22 -0800 Received: from nam02-sn1-obe.outbound.protection.outlook.com (mail-sn1nam02lp2042.outbound.protection.outlook.com [104.47.57.42]) by mx0a-0016f401.pphosted.com (PPS) with ESMTPS id 451bap0dj1-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 25 Feb 2025 05:18:21 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=lFKrMAQYfXq5Yqw5TubBr68t304rw4V7rBb+If9Uh9icN4wkFX9ZipQP9tmGm+OHesTGBTKKNheJTNY/xWHlRUQz7tYVAKNnqIoaurJeP7e9dgsKk25/XKlP+ZWsCEgFlkDdRsyI0nnsTHNZE7hcD2LFmeEc7ARey6yHayqvYr8ZtI77y3sRphhmEKogciK7piQoK0YxovzyJknBdLTxSU3V3q0PtNrB+MQWWSeaEBufINGu9tMBPFGXH19Q/iz7Em/oVy/Y3+SseeayR1kxiA1xvmu2dDeyMm4IM/h9DdsFhKtbkeXrDXHQNoNsGYzJnprOkJZ018hQf9zWk9CkCg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=IWTKjhorwtOtPmAOJzv6/6/UI0JHBke5CEVe7NlB1sg=; b=B00623hvaQ+sYDIuYa0eggxTMEaYb9wskipsNbPUnNbahbchJ1RZDoa7UtsD6qfv9jWUKQrrIgANhO9TsmNKxvt/eU4FVjSA7gVG2YVQdZgldBEu+GvG+dsZm79JQyZW0SN8ldwtF4IOj0sJaiaeMAm1MNh77dt+PAt3WrdhxkVJHnRFweVS9NfiCIvJnOXI2bz7Uv7AbDeb+EMQE41IKap1YwXGyHv7ZNTuQiAwH2Xr26Oj5hzJKspaNEK3xcySi+zGhNY4nrtbD+ZhqoAHKv5xJU5/ocY8mmxVM/OCvL6zLa8Fj7oNc8TjnVTcdp9VH7hs/6iuNQDoqydnecjyjQ== 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.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=IWTKjhorwtOtPmAOJzv6/6/UI0JHBke5CEVe7NlB1sg=; b=pjWxuEh5jkvB+XvFH47MOM7QdESsb2uHfFEmy28U3cIwx+UGC8CZDYbTfkFuQDa2zQOjTmFawNAHqNFPg+qiG7vmnG325e/1ZeXlojO5msPYU8xNSbA6QD0JxEJpxaQ+x+LzTcahyDacb4wAfEBa014P3ffAYVSTo8HyHAp5tjs= Received: from PH0PR18MB4086.namprd18.prod.outlook.com (2603:10b6:510:3::9) by BY1PR18MB5875.namprd18.prod.outlook.com (2603:10b6:a03:4ad::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8466.15; Tue, 25 Feb 2025 13:18:17 +0000 Received: from PH0PR18MB4086.namprd18.prod.outlook.com ([fe80::ed37:4ea0:6359:f717]) by PH0PR18MB4086.namprd18.prod.outlook.com ([fe80::ed37:4ea0:6359:f717%3]) with mapi id 15.20.8466.015; Tue, 25 Feb 2025 13:18:17 +0000 From: Pavan Nikhilesh Bhagavatula To: "Gujjar, Abhinandan S" , Stephen Hemminger , "dev@dpdk.org" CC: =?utf-8?B?TW9ydGVuIEJyw7hydXA=?= , "Richardson, Bruce" , Jerin Jacob , Amit Prakash Shukla , "Naga Harish K, S V" Subject: RE: [PATCH v3 02/14] eventdev: remover unnecessary deref on function pointers Thread-Topic: [PATCH v3 02/14] eventdev: remover unnecessary deref on function pointers Thread-Index: AQHbh4Wj+9ARU7oyVkacej7UmokRN7NX/r2g Date: Tue, 25 Feb 2025 13:18:17 +0000 Message-ID: References: <20250217185743.169778-1-stephen@networkplumber.org> <20250220165644.16421-1-stephen@networkplumber.org> <20250220165644.16421-3-stephen@networkplumber.org> In-Reply-To: Accept-Language: en-US, en-IN Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ms-publictraffictype: Email x-ms-traffictypediagnostic: PH0PR18MB4086:EE_|BY1PR18MB5875:EE_ x-ms-office365-filtering-correlation-id: 9f8fb6ec-bda4-4567-c171-08dd559edde5 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230040|376014|1800799024|366016|38070700018|7053199007; x-microsoft-antispam-message-info: =?utf-8?B?am5jKzVoRjdqRUZTR0tPK3ZXOUdwZGNac0UvclZ0NVVVekhYanlYaEx4ZE5R?= =?utf-8?B?OXZaTXlhbmhDUllGN1hNQ3Z6aFVKT2RJRTZaS05uUFdURHB3cXNNNkRaTkky?= =?utf-8?B?VmNCdEtSRzhOV3pMSXk5WTQ1T1Q0K1ExR1IwZVVRWWpad2krUXlmTVNkelhJ?= =?utf-8?B?Zm1DcFdmL0xkY1dCbis1M0lYdGZxbms4V3Fad20rNXFBdU5LQUZQRm1ZR05w?= =?utf-8?B?R2dtR0JaOVVFTmRVSnl6Rm5PTUpJbExidDJpZ29Oa1BLdHdMRE1sby9pUWlv?= =?utf-8?B?Q1Ewd2wvU1JrNWZ3V0hiSE95T2tGZXhnN3lwNFljcW5sZUZsVGlXd1FEY0t5?= =?utf-8?B?TDg5Qld1bmtiTzRkWkNuVHpNd3FBOEFhbHFIMG5hWXFYSk1VdXZHeVh2K25q?= =?utf-8?B?Q3NwVDNteURQdGhWcXpXQVU1YmpnNDRwRHZDREtKVE9CczFLSWNiK1pjby9i?= =?utf-8?B?SG1kN2Ixd0dmMjFma09DUkxJUzNSb29pVUZmc2tNM3JLbmI3MGUrWFExL0g0?= =?utf-8?B?akRpZllYME5OSFlVMVpHamdwTGE0V1RTZDk4cU1peXU2NG9CK0RscFlXa0li?= =?utf-8?B?SExwSEI0ejE1U2dDODFKTWJVTHExZW45ZHBQVHlyWnRkMnFab0dheDN6b1BC?= =?utf-8?B?OTB4c0RiRkJOSVhRZU15dG5oQnhyOFNJZ1MzZEhmNUx3MERoWXFSUDhGZnNS?= =?utf-8?B?YTBjOHJBeFhDQ0VjRGgrNTAxSXJVS3grSTBWbi9idXBpWGVaWjVxajZrakk2?= =?utf-8?B?UHEwZm40TnFVczlkdFkvazVMVmgzcGNiQVFtWkJwVy96NzBOU3lQbkRpRXBo?= =?utf-8?B?L1ZDUklKV05halFNbFdqKzZWN2VIWUs3TXNqSFp2cGhJYkk4dlFhT21QS3hJ?= =?utf-8?B?VloxQ0o5VlBJbnd2eURvZzFDL2RFeDhYSjhWSW1JVEFMeDZkZUMzQWpFK0RQ?= =?utf-8?B?THNMOHRiRDBXdGh1cFg2dXpiRzFRaFhRVkNtamt3bDJaa1IyUXJxdk5hVnA4?= =?utf-8?B?Z28vck13VFBkVFowMmpxdTZadkpUQ2tHOGEwSlEvMzNhWks5VnpsKzJxUWVq?= =?utf-8?B?ZVNWc1p5anFBc0pYL3F1ZlpnNzY1TnljUnNqaTVSVHAzMmN5MlNteEdTaDky?= =?utf-8?B?b3d5VkhzR3RManN1Qjk0cjNacTdFaGNiMnc3K2g0aEF0ZGhJTlBtakQvNklW?= =?utf-8?B?ckdnR2Z1Y3N2bG9mdUJZaWtYUGc5UC9zOXJSNU1wOGhvWlpudE1hMkhqaWNl?= =?utf-8?B?cGdIckgxbGRxdFpFM095RE1GYUExRy9pVlI5OFBQZWxxOEl4Rjc0K3ZsbUcz?= =?utf-8?B?RmxpTEhBa2tkOUtQSzVUZUkzbnl3NndicXRpYmthTXZlM2NydW4xWVduTnZY?= =?utf-8?B?cE1NcXFZOGZTY3pteHp4bWU4NnBRUTh3L2ZOdW1RQUpUTEJMYkNMbHNaZ2tN?= =?utf-8?B?WXRjWkJaOHIxbTUzTGMxZW54U3ZRU3BzN1YrM2g5T2Z2U1RoK1VJc3BzRU9G?= =?utf-8?B?UDdPNWtuM1l3b20wc0RrSTgvTFYyZGZSbU9QSjU0Ni9oWnUrMi9WYi80WFVo?= =?utf-8?B?TnZmZlIvZDRORWFRTzdpU3hQc1k4NUpZME5zcnRaQjA3Ym5WN0RteXVKUUZ6?= =?utf-8?B?NGpNRk1SR3cwcHgxTit0OTc5N1RtNGQ1c3hwQzdtajdUYm1DcW9lb1JIYllp?= =?utf-8?B?SzNMalFQclRDTGM5c2d3Zk9FbldHR1pXOFN0MSsyZkhDWnczcUJlL0p6UTB0?= =?utf-8?B?TCtVMFZQTUgzNWJHNS9kRlBKUTNzVkZ6RmNJWXUzZ2hHaDE5ZE1aRDZZSmJK?= =?utf-8?B?MGhoY2tzNlo3aHNrVDVxbTQ0NDE3L2l3MkV4aWJsR0c5Ly92emR0RXNsZG1t?= =?utf-8?B?bURTQ0UyaTg0YWRCdlRXOFA0ZXdHTjVDU2ROc0tGbmtXTTYwNVc5dlZET3lZ?= =?utf-8?Q?Kf11eTVufeb19EBbZqXX9Tv3wLbKgIQN?= x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:PH0PR18MB4086.namprd18.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(376014)(1800799024)(366016)(38070700018)(7053199007); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?YmNaempMWEd3OG1GSDBpbFFXaEs2TGFVeStwb1QyeWh5VmdUeGY0NWg4OFJj?= =?utf-8?B?a1JobUcxZkpFcncvc3lGNTcxelZzZ3MrQ21HSU1YckFkMnUzZ1hGeWR6Y2pK?= =?utf-8?B?cnNJd0ZZVlkzSUtLRFhSbEF0TEZFQk1GVHM1OHlWcEZ0TXdLNmw5bDJhd0Vn?= =?utf-8?B?RDJZdHRwWjhYNWJlcWRLc2xjc2dRM0RITzJCYXJESkpkWWZMUEtIY3A0ejNI?= =?utf-8?B?N0Jwdk9pcjRzMUVkMitCZGNvSHRmcEpPQkVGa0g4MFl6MWQ1aWZ1bzJ2Q1NE?= =?utf-8?B?emx6R3hadXdjNlZPRThYREpIU3pKdTh6ODd4WmlKM3EzZEcyN2ZIS0d5WUEr?= =?utf-8?B?ZzRCcU1VbEk4bXNYQzJmNnlTcjJoTDh0V3pmRFJMM054SDl2VzJhcTZOOFlh?= =?utf-8?B?RmFEWFA4Ukk5VFJrRWhnVkp6VENSNExlTGpDa21QSjNnUDQrUCtwYWQ4cXpv?= =?utf-8?B?emZLRWIrWWphS0ZtNTBUMXNIbXdGRGxsbWUwOStlaHN0elpsZ3lvSUNCbk5t?= =?utf-8?B?eUlNZTVXL0k5ZXB0OGZwUXFiSUNsbndYZWhJTm1EakVIUiszVkVORnpDOU8r?= =?utf-8?B?dUdSY202UzBUMXI3RGZlTGdzNncwYkFUMjVZWEU0K2JURWFGVkpwZWNSWElZ?= =?utf-8?B?dk9kdTlYeUJ3RUp1aHJ6d3E1UURxQ21GZU5QMHNxWDlSc3ZLQjVXNzlpQ2tB?= =?utf-8?B?UERvS0RhakF5SjBydTRFWG1xZWFBNE5obmNWUEg1UnltbDZFeFpOa3FDVkFU?= =?utf-8?B?UDJTeDN5Q0VYQ0lKVEMvZk8wWFdpQlVjREJmUXJlR1ljSUVpSk11ZXFvQ21H?= =?utf-8?B?a0ZQWG5YOUtjQzhYOU9HMnc5d0tXN0syczE0VmRDSG1FeGdYbE1wNXAzTGFT?= =?utf-8?B?bFovQ0t6V3E0aXpvUHFxMzcwSTErZlFKbWwrWFl2TUltd0JkQnVENmxRSGxu?= =?utf-8?B?VTZWRWJJQURlMzRUNENPUWdSS1hObWVuNU9PTllUcUFjSGRqQ0pmdUh2SW40?= =?utf-8?B?aEFybTNycFpUem5rMnRUYTVybWl6ek1uK082bmZtZUo3SlhabVVzWVBuN1Zu?= =?utf-8?B?OEQ3cVJoK0RFM1lvZVV2RjRjdTFUYkJya1VkQnVlQjdERGRDaXBvVjZhR3Ir?= =?utf-8?B?YllORExqaUlCeGhkTWFJUUx1dlo5ZVlvMGdONFA1MW1UQW43b2x3UXRFSm53?= =?utf-8?B?S2RaVDVHZEE0cXJqYnBFOWtCQ1laS0gyUExKcHFtMVRxR0VhZ05jNG5yeFFv?= =?utf-8?B?ZG5YS01NQzRDa0xFdFdla1hsUHpTY1FPWjU1VnpZK0NiN0Y0NjNhV0RzUU9E?= =?utf-8?B?QWJlalhBZWtYN3Y0bHAxM003amhyTTdScHN4OHFKYkxNaEh3T0UzY2JyVnJh?= =?utf-8?B?NGdoTjlLSW84SXBVOVRSd0FIM2FDYi85SGR2Z0pjaVdwMUUwLzdyUHllakc0?= =?utf-8?B?SDJWUzAyQWNXQVpCSkJld1lZalZRK0JldmdyOGo2elA5c0ludTdXSzZudS9Z?= =?utf-8?B?ODVjQm1ZV3lFREdvR2FqVEFSSWV1MkVNekFJcDFKczVHUVVRb0JUWmY2b3BS?= =?utf-8?B?TjlFWVhQWnR6S214YTFnZEhOUVBWK3BHaGVBOHlOTXpxQjRPb3BsbzQ0N0t0?= =?utf-8?B?VlIxY2h6ZWhVTEx6SFJYelM2NTQrMzR3RDIrdXUwSXpwM0NwUVpSK1lYQ1pF?= =?utf-8?B?ZVdJcEViVy90ek9HVytuOVUvQlpRRVRxUjR5UVZldkQzUzlyR2FHMm40Z2xV?= =?utf-8?B?cmdkNzhPWjkrUVBxNnphbTNFbW4vOXE3RmpDUlZ2cnR0cVB4RW9WVDR4SmtH?= =?utf-8?B?VEVOZFFxaEhnbkthTitzZUY1dkJWdjF0blRDQUZ1ZGI3Y2x1Mm9QQlB6Z0Nv?= =?utf-8?B?UllCWE1lMGNMWGtNTGtwYkc4T0F5ZHJSZFAydHRyemJGYXFIWEJJa3IxeHlL?= =?utf-8?B?STkyVCtvUUQwTFg0eW4vTm9KVDd5Qy9peG51cUZhWEhEYngxbW83SEdMSVhw?= =?utf-8?B?V2RXVTdsK2NURGJzL2pRTmUxdUh5VUFySUVLTCt2VGlnRXB3VFNjNkhKS1Zr?= =?utf-8?B?Y3o5alZPTGVvc084MXZaUktZY1FML0l6R2pTeExxNjRvMzJiWmI3Q0ZqOXUv?= =?utf-8?Q?h1jDoYrB8ga2XEIMnlgBdWLoY?= Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: marvell.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: PH0PR18MB4086.namprd18.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 9f8fb6ec-bda4-4567-c171-08dd559edde5 X-MS-Exchange-CrossTenant-originalarrivaltime: 25 Feb 2025 13:18:17.2457 (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: RRTPxt8hEDNK0JCseB91eRLQIiUuTDOyOVFL/Y99MGeITNwSXPoZd4xeJOyQPQiZKn1C5NqJNzP6mam9fLEE6vJQWEUWu3nJpaX63ZSWkms= X-MS-Exchange-Transport-CrossTenantHeadersStamped: BY1PR18MB5875 X-Proofpoint-GUID: JupRXvM8kgoOtDtTYsB_OHDsd_5Am9RT X-Proofpoint-ORIG-GUID: JupRXvM8kgoOtDtTYsB_OHDsd_5Am9RT X-Authority-Analysis: v=2.4 cv=YqT1R5YX c=1 sm=1 tr=0 ts=67bdc31d cx=c_pps a=o1gEiTSI8oSw7jzABoeZjA==:117 a=wKuvFiaSGQ0qltdbU6+NXLB8nM8=:19 a=Ol13hO9ccFRV9qXi2t6ftBPywas=:19 a=xqWC_Br6kY4A:10 a=IkcTkHD0fZMA:10 a=T2h4t0Lz3GQA:10 a=-AAbraWEqlQA:10 a=jZVsG21pAAAA:8 a=8rWy6zfcAAAA:8 a=n02bokGJAAAA:8 a=QyXUC8HyAAAA:8 a=M5GUcnROAAAA:8 a=xR1TVcXfQE6enPMv97AA:9 a=QEXdDO2ut3YA:10 a=3Sh2lD0sZASs_lUdrUhf:22 a=YjdVzJdQTyZRADMV7wFX:22 a=rszdq1ld3peujIA30KyE:22 a=OBjm3rFKGHvpk9ecZwUJ:22 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1057,Hydra:6.0.680,FMLib:17.12.68.34 definitions=2025-02-25_04,2025-02-25_03,2024-11-22_01 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org ID4gPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiA+IEZyb206IFN0ZXBoZW4gSGVtbWlu Z2VyIDxzdGVwaGVuQG5ldHdvcmtwbHVtYmVyLm9yZz4NCj4gPiBTZW50OiBUaHVyc2RheSwgRmVi cnVhcnkgMjAsIDIwMjUgMTA6MjUgUE0NCj4gPiBUbzogZGV2QGRwZGsub3JnDQo+ID4gQ2M6IFN0 ZXBoZW4gSGVtbWluZ2VyIDxzdGVwaGVuQG5ldHdvcmtwbHVtYmVyLm9yZz47IE1vcnRlbiBCcsO4 cnVwDQo+ID4gPG1iQHNtYXJ0c2hhcmVzeXN0ZW1zLmNvbT47IFJpY2hhcmRzb24sIEJydWNlDQo+ ID4gPGJydWNlLnJpY2hhcmRzb25AaW50ZWwuY29tPjsgR3VqamFyLCBBYmhpbmFuZGFuIFMNCj4g PiA8YWJoaW5hbmRhbi5ndWpqYXJAaW50ZWwuY29tPjsgSmVyaW4gSmFjb2IgPGplcmluakBtYXJ2 ZWxsLmNvbT47IEFtaXQNCj4gPiBQcmFrYXNoIFNodWtsYSA8YW1pdHByYWthc2hzQG1hcnZlbGwu Y29tPjsgTmFnYSBIYXJpc2ggSywgUyBWDQo+ID4gPHMudi5uYWdhLmhhcmlzaC5rQGludGVsLmNv bT4NCj4gPiBTdWJqZWN0OiBbUEFUQ0ggdjMgMDIvMTRdIGV2ZW50ZGV2OiByZW1vdmVyIHVubmVj ZXNzYXJ5IGRlcmVmIG9uDQo+IGZ1bmN0aW9uDQo+ID4gcG9pbnRlcnMNCj4gPg0KPiA+IFRoZSBl eHByZXNzaW9uICpkZXZfZGV2X29wcy0+Zm9vIGFuZCBkZXYtPmRldl9vcHMtPmZvbyBhcmUgZXF1 aXZhbGVudC4NCj4gPiBDbGVhbnVwIHRoZSByZXN1bHQgYnkgcmVtb3ZpbmcgdW5uZWVkZWQgcGFy ZW50aGVzaXMgYW5kIG1ha2UgbGluZXMNCj4gY29tcGFjdC4NCj4gPg0KPiA+IFNpZ25lZC1vZmYt Ynk6IFN0ZXBoZW4gSGVtbWluZ2VyIDxzdGVwaGVuQG5ldHdvcmtwbHVtYmVyLm9yZz4NCj4gPiBB Y2tlZC1ieTogTW9ydGVuIEJyw7hydXAgPG1iQHNtYXJ0c2hhcmVzeXN0ZW1zLmNvbT4NCj4gPiBB Y2tlZC1ieTogQnJ1Y2UgUmljaGFyZHNvbiA8YnJ1Y2UucmljaGFyZHNvbkBpbnRlbC5jb20+DQo+ IA0KPiBBY2tlZC1ieTogYWJoaW5hbmRhbi5ndWpqYXJAaW50ZWwuY29tDQo+IA0KDQpQbGVhc2Ug Zml4IHRoZSB0eXBvIGluIGNvbW1pdCB0aXRsZSBzL3JlbW92ZXIvcmVtb3ZlLw0KDQpXaXRoIHRo YXQNCkFja2VkLWJ5OiBQYXZhbiBOaWtoaWxlc2ggPHBiaGFnYXZhdHVsYUBtYXJ2ZWxsLmNvbT4N Cg0KPiA+IC0tLQ0KPiA+ICBsaWIvZXZlbnRkZXYvcnRlX2V2ZW50X2NyeXB0b19hZGFwdGVyLmMg fCAgMzcgKystLS0tDQo+ID4gIGxpYi9ldmVudGRldi9ydGVfZXZlbnRfZG1hX2FkYXB0ZXIuYyAg ICB8ICAxNiArLS0NCj4gPiAgbGliL2V2ZW50ZGV2L3J0ZV9ldmVudF9ldGhfcnhfYWRhcHRlci5j IHwgIDUwICsrKystLS0tDQo+ID4gIGxpYi9ldmVudGRldi9ydGVfZXZlbnRkZXYuYyAgICAgICAg ICAgICB8IDE2NCArKysrKysrKysrKy0tLS0tLS0tLS0tLS0NCj4gPiAgNCBmaWxlcyBjaGFuZ2Vk LCAxMTkgaW5zZXJ0aW9ucygrKSwgMTQ4IGRlbGV0aW9ucygtKQ0KPiA+DQo+ID4gZGlmZiAtLWdp dCBhL2xpYi9ldmVudGRldi9ydGVfZXZlbnRfY3J5cHRvX2FkYXB0ZXIuYw0KPiA+IGIvbGliL2V2 ZW50ZGV2L3J0ZV9ldmVudF9jcnlwdG9fYWRhcHRlci5jDQo+ID4gaW5kZXggOTM5Y2ExY2FkOS4u ZmM0M2UwNTZkNyAxMDA2NDQNCj4gPiAtLS0gYS9saWIvZXZlbnRkZXYvcnRlX2V2ZW50X2NyeXB0 b19hZGFwdGVyLmMNCj4gPiArKysgYi9saWIvZXZlbnRkZXYvcnRlX2V2ZW50X2NyeXB0b19hZGFw dGVyLmMNCj4gPiBAQCAtMTEzMiw3ICsxMTMyLDcgQEANCj4gcnRlX2V2ZW50X2NyeXB0b19hZGFw dGVyX3F1ZXVlX3BhaXJfYWRkKHVpbnQ4X3QNCj4gPiBpZCwNCj4gPiAgCSAgICAgYWRhcHRlci0+ bW9kZSA9PSBSVEVfRVZFTlRfQ1JZUFRPX0FEQVBURVJfT1BfTkVXKSB8fA0KPiA+ICAJICAgIChj YXAgJg0KPiA+IFJURV9FVkVOVF9DUllQVE9fQURBUFRFUl9DQVBfSU5URVJOQUxfUE9SVF9PUF9O RVcgJiYNCj4gPiAgCSAgICAgYWRhcHRlci0+bW9kZSA9PSBSVEVfRVZFTlRfQ1JZUFRPX0FEQVBU RVJfT1BfTkVXKSkgew0KPiA+IC0JCWlmICgqZGV2LT5kZXZfb3BzLT5jcnlwdG9fYWRhcHRlcl9x dWV1ZV9wYWlyX2FkZCA9PQ0KPiBOVUxMKQ0KPiA+ICsJCWlmIChkZXYtPmRldl9vcHMtPmNyeXB0 b19hZGFwdGVyX3F1ZXVlX3BhaXJfYWRkID09IE5VTEwpDQo+ID4gIAkJCXJldHVybiAtRU5PVFNV UDsNCj4gPiAgCQlpZiAoZGV2X2luZm8tPnFwYWlycyA9PSBOVUxMKSB7DQo+ID4gIAkJCWRldl9p bmZvLT5xcGFpcnMgPQ0KPiA+IEBAIC0xMTQ0LDEwICsxMTQ0LDggQEANCj4gcnRlX2V2ZW50X2Ny eXB0b19hZGFwdGVyX3F1ZXVlX3BhaXJfYWRkKHVpbnQ4X3QNCj4gPiBpZCwNCj4gPiAgCQkJCXJl dHVybiAtRU5PTUVNOw0KPiA+ICAJCX0NCj4gPg0KPiA+IC0JCXJldCA9ICgqZGV2LT5kZXZfb3Bz LT5jcnlwdG9fYWRhcHRlcl9xdWV1ZV9wYWlyX2FkZCkoZGV2LA0KPiA+IC0JCQkJZGV2X2luZm8t PmRldiwNCj4gPiAtCQkJCXF1ZXVlX3BhaXJfaWQsDQo+ID4gLQkJCQljb25mKTsNCj4gPiArCQly ZXQgPSBkZXYtPmRldl9vcHMtPmNyeXB0b19hZGFwdGVyX3F1ZXVlX3BhaXJfYWRkKGRldiwNCj4g PiBkZXZfaW5mby0+ZGV2LA0KPiA+ICsNCj4gPiBxdWV1ZV9wYWlyX2lkLCBjb25mKTsNCj4gPiAg CQlpZiAocmV0KQ0KPiA+ICAJCQlyZXR1cm4gcmV0Ow0KPiA+DQo+ID4gQEAgLTEyMzMsMTEgKzEy MzEsMTAgQEANCj4gPiBydGVfZXZlbnRfY3J5cHRvX2FkYXB0ZXJfcXVldWVfcGFpcl9kZWwodWlu dDhfdCBpZCwgdWludDhfdCBjZGV2X2lkLA0KPiA+ICAJaWYgKChjYXAgJg0KPiA+IFJURV9FVkVO VF9DUllQVE9fQURBUFRFUl9DQVBfSU5URVJOQUxfUE9SVF9PUF9GV0QpIHx8DQo+ID4gIAkgICAg KGNhcCAmDQo+ID4gUlRFX0VWRU5UX0NSWVBUT19BREFQVEVSX0NBUF9JTlRFUk5BTF9QT1JUX09Q X05FVyAmJg0KPiA+ICAJICAgICBhZGFwdGVyLT5tb2RlID09IFJURV9FVkVOVF9DUllQVE9fQURB UFRFUl9PUF9ORVcpKSB7DQo+ID4gLQkJaWYgKCpkZXYtPmRldl9vcHMtPmNyeXB0b19hZGFwdGVy X3F1ZXVlX3BhaXJfZGVsID09IE5VTEwpDQo+ID4gKwkJaWYgKGRldi0+ZGV2X29wcy0+Y3J5cHRv X2FkYXB0ZXJfcXVldWVfcGFpcl9kZWwgPT0gTlVMTCkNCj4gPiAgCQkJcmV0dXJuIC1FTk9UU1VQ Ow0KPiA+IC0JCXJldCA9ICgqZGV2LT5kZXZfb3BzLT5jcnlwdG9fYWRhcHRlcl9xdWV1ZV9wYWly X2RlbCkoZGV2LA0KPiA+IC0JCQkJCQlkZXZfaW5mby0+ZGV2LA0KPiA+IC0JCQkJCQlxdWV1ZV9w YWlyX2lkKTsNCj4gPiArCQlyZXQgPSBkZXYtPmRldl9vcHMtPmNyeXB0b19hZGFwdGVyX3F1ZXVl X3BhaXJfZGVsKGRldiwNCj4gPiArCQkJCQkJCSAgZGV2X2luZm8tPmRldiwNCj4gPiBxdWV1ZV9w YWlyX2lkKTsNCj4gPiAgCQlpZiAocmV0ID09IDApIHsNCj4gPiAgCQkJZWNhX3VwZGF0ZV9xcF9p bmZvKGFkYXB0ZXIsDQo+ID4gIAkJCQkJJmFkYXB0ZXItPmNkZXZzW2NkZXZfaWRdLA0KPiA+IEBA IC0xMzA4LDEwICsxMzA1LDggQEAgZWNhX2FkYXB0ZXJfY3RybCh1aW50OF90IGlkLCBpbnQgc3Rh cnQpDQo+ID4gIAkJZGV2X2luZm8tPmRldl9zdGFydGVkID0gc3RhcnQ7DQo+ID4gIAkJaWYgKGRl dl9pbmZvLT5pbnRlcm5hbF9ldmVudF9wb3J0ID09IDApDQo+ID4gIAkJCWNvbnRpbnVlOw0KPiA+ IC0JCXN0YXJ0ID8gKCpkZXYtPmRldl9vcHMtPmNyeXB0b19hZGFwdGVyX3N0YXJ0KShkZXYsDQo+ ID4gLQkJCQkJCSZkZXZfaW5mby0+ZGV2W2ldKSA6DQo+ID4gLQkJCSgqZGV2LT5kZXZfb3BzLT5j cnlwdG9fYWRhcHRlcl9zdG9wKShkZXYsDQo+ID4gLQkJCQkJCSZkZXZfaW5mby0+ZGV2W2ldKTsN Cj4gPiArCQlzdGFydCA/IGRldi0+ZGV2X29wcy0+Y3J5cHRvX2FkYXB0ZXJfc3RhcnQoZGV2LCAm ZGV2X2luZm8tDQo+ID4gPmRldltpXSkgOg0KPiA+ICsJCQlkZXYtPmRldl9vcHMtPmNyeXB0b19h ZGFwdGVyX3N0b3AoZGV2LCAmZGV2X2luZm8tDQo+ID4gPmRldltpXSk7DQo+ID4gIAl9DQo+ID4N Cj4gPiAgCWlmICh1c2Vfc2VydmljZSkNCj4gPiBAQCAtMTM2NywxMSArMTM2Miw5IEBAIHJ0ZV9l dmVudF9jcnlwdG9fYWRhcHRlcl9zdGF0c19nZXQodWludDhfdCBpZCwNCj4gPiAgCWZvciAoaSA9 IDA7IGkgPCBydGVfY3J5cHRvZGV2X2NvdW50KCk7IGkrKykgew0KPiA+ICAJCWRldl9pbmZvID0g JmFkYXB0ZXItPmNkZXZzW2ldOw0KPiA+ICAJCWlmIChkZXZfaW5mby0+aW50ZXJuYWxfZXZlbnRf cG9ydCA9PSAwIHx8DQo+ID4gLQkJCWRldi0+ZGV2X29wcy0+Y3J5cHRvX2FkYXB0ZXJfc3RhdHNf Z2V0ID09IE5VTEwpDQo+ID4gKwkJICAgIGRldi0+ZGV2X29wcy0+Y3J5cHRvX2FkYXB0ZXJfc3Rh dHNfZ2V0ID09IE5VTEwpDQo+ID4gIAkJCWNvbnRpbnVlOw0KPiA+IC0JCXJldCA9ICgqZGV2LT5k ZXZfb3BzLT5jcnlwdG9fYWRhcHRlcl9zdGF0c19nZXQpKGRldiwNCj4gPiAtCQkJCQkJZGV2X2lu Zm8tPmRldiwNCj4gPiAtCQkJCQkJJmRldl9zdGF0cyk7DQo+ID4gKwkJcmV0ID0gZGV2LT5kZXZf b3BzLT5jcnlwdG9fYWRhcHRlcl9zdGF0c19nZXQoZGV2LCBkZXZfaW5mby0NCj4gPiA+ZGV2LA0K PiA+ICsmZGV2X3N0YXRzKTsNCj4gPiAgCQlpZiAocmV0KQ0KPiA+ICAJCQljb250aW51ZTsNCj4g Pg0KPiA+IEBAIC0xNDE4LDEwICsxNDExLDkgQEAgcnRlX2V2ZW50X2NyeXB0b19hZGFwdGVyX3N0 YXRzX3Jlc2V0KHVpbnQ4X3QNCj4gaWQpDQo+ID4gIAlmb3IgKGkgPSAwOyBpIDwgcnRlX2NyeXB0 b2Rldl9jb3VudCgpOyBpKyspIHsNCj4gPiAgCQlkZXZfaW5mbyA9ICZhZGFwdGVyLT5jZGV2c1tp XTsNCj4gPiAgCQlpZiAoZGV2X2luZm8tPmludGVybmFsX2V2ZW50X3BvcnQgPT0gMCB8fA0KPiA+ IC0JCQlkZXYtPmRldl9vcHMtPmNyeXB0b19hZGFwdGVyX3N0YXRzX3Jlc2V0ID09IE5VTEwpDQo+ ID4gKwkJICAgIGRldi0+ZGV2X29wcy0+Y3J5cHRvX2FkYXB0ZXJfc3RhdHNfcmVzZXQgPT0gTlVM TCkNCj4gPiAgCQkJY29udGludWU7DQo+ID4gLQkJKCpkZXYtPmRldl9vcHMtPmNyeXB0b19hZGFw dGVyX3N0YXRzX3Jlc2V0KShkZXYsDQo+ID4gLQkJCQkJCWRldl9pbmZvLT5kZXYpOw0KPiA+ICsJ CWRldi0+ZGV2X29wcy0+Y3J5cHRvX2FkYXB0ZXJfc3RhdHNfcmVzZXQoZGV2LCBkZXZfaW5mby0N Cj4gPiA+ZGV2KTsNCj4gPiAgCX0NCj4gPg0KPiA+ICAJbWVtc2V0KCZhZGFwdGVyLT5jcnlwdG9f c3RhdHMsIDAsIHNpemVvZihhZGFwdGVyLT5jcnlwdG9fc3RhdHMpKTsNCj4gQEANCj4gPiAtMTYw Niw5ICsxNTk4LDggQEAgcnRlX2V2ZW50X2NyeXB0b19hZGFwdGVyX3ZlY3Rvcl9saW1pdHNfZ2V0 KA0KPiA+ICAJCXJldHVybiAtRU5PVFNVUDsNCj4gPiAgCX0NCj4gPg0KPiA+IC0JaWYgKCgqZGV2 LT5kZXZfb3BzLT5jcnlwdG9fYWRhcHRlcl92ZWN0b3JfbGltaXRzX2dldCkgPT0gTlVMTCkNCj4g PiArCWlmIChkZXYtPmRldl9vcHMtPmNyeXB0b19hZGFwdGVyX3ZlY3Rvcl9saW1pdHNfZ2V0ID09 IE5VTEwpDQo+ID4gIAkJcmV0dXJuIC1FTk9UU1VQOw0KPiA+DQo+ID4gLQlyZXR1cm4gZGV2LT5k ZXZfb3BzLT5jcnlwdG9fYWRhcHRlcl92ZWN0b3JfbGltaXRzX2dldCgNCj4gPiAtCQlkZXYsIGNk ZXYsIGxpbWl0cyk7DQo+ID4gKwlyZXR1cm4gZGV2LT5kZXZfb3BzLT5jcnlwdG9fYWRhcHRlcl92 ZWN0b3JfbGltaXRzX2dldChkZXYsIGNkZXYsDQo+ID4gK2xpbWl0cyk7DQo+ID4gIH0NCj4gPiBk aWZmIC0tZ2l0IGEvbGliL2V2ZW50ZGV2L3J0ZV9ldmVudF9kbWFfYWRhcHRlci5jDQo+ID4gYi9s aWIvZXZlbnRkZXYvcnRlX2V2ZW50X2RtYV9hZGFwdGVyLmMNCj4gPiBpbmRleCAxNjUzNzRkMTk1 Li5kOWEwMmEzMGYyIDEwMDY0NA0KPiA+IC0tLSBhL2xpYi9ldmVudGRldi9ydGVfZXZlbnRfZG1h X2FkYXB0ZXIuYw0KPiA+ICsrKyBiL2xpYi9ldmVudGRldi9ydGVfZXZlbnRfZG1hX2FkYXB0ZXIu Yw0KPiA+IEBAIC0xMDMwLDcgKzEwMzAsNyBAQCBydGVfZXZlbnRfZG1hX2FkYXB0ZXJfdmNoYW5f YWRkKHVpbnQ4X3QgaWQsDQo+ID4gaW50MTZfdCBkbWFfZGV2X2lkLCB1aW50MTZfdCB2Y2hhbiwN Cj4gPiAgCSAgICAgYWRhcHRlci0+bW9kZSA9PSBSVEVfRVZFTlRfRE1BX0FEQVBURVJfT1BfTkVX KSB8fA0KPiA+ICAJICAgIChjYXAgJg0KPiBSVEVfRVZFTlRfRE1BX0FEQVBURVJfQ0FQX0lOVEVS TkFMX1BPUlRfT1BfTkVXDQo+ID4gJiYNCj4gPiAgCSAgICAgYWRhcHRlci0+bW9kZSA9PSBSVEVf RVZFTlRfRE1BX0FEQVBURVJfT1BfTkVXKSkgew0KPiA+IC0JCWlmICgqZGV2LT5kZXZfb3BzLT5k bWFfYWRhcHRlcl92Y2hhbl9hZGQgPT0gTlVMTCkNCj4gPiArCQlpZiAoZGV2LT5kZXZfb3BzLT5k bWFfYWRhcHRlcl92Y2hhbl9hZGQgPT0gTlVMTCkNCj4gPiAgCQkJcmV0dXJuIC1FTk9UU1VQOw0K PiA+ICAJCWlmIChkZXZfaW5mby0+dmNoYW5xID09IE5VTEwpIHsNCj4gPiAgCQkJZGV2X2luZm8t PnZjaGFucSA9IHJ0ZV96bWFsbG9jX3NvY2tldChhZGFwdGVyLQ0KPiA+ID5tZW1fbmFtZSwNCj4g PiBAQCAtMTA1NCw3ICsxMDU0LDcgQEAgcnRlX2V2ZW50X2RtYV9hZGFwdGVyX3ZjaGFuX2FkZCh1 aW50OF90IGlkLA0KPiA+IGludDE2X3QgZG1hX2Rldl9pZCwgdWludDE2X3QgdmNoYW4sDQo+ID4g IAkJCX0NCj4gPiAgCQl9DQo+ID4NCj4gPiAtCQlyZXQgPSAoKmRldi0+ZGV2X29wcy0+ZG1hX2Fk YXB0ZXJfdmNoYW5fYWRkKShkZXYsDQo+ID4gZG1hX2Rldl9pZCwgdmNoYW4sIGV2ZW50KTsNCj4g PiArCQlyZXQgPSBkZXYtPmRldl9vcHMtPmRtYV9hZGFwdGVyX3ZjaGFuX2FkZChkZXYsDQo+ID4g ZG1hX2Rldl9pZCwgdmNoYW4sDQo+ID4gK2V2ZW50KTsNCj4gPiAgCQlpZiAocmV0KQ0KPiA+ICAJ CQlyZXR1cm4gcmV0Ow0KPiA+DQo+ID4gQEAgLTExMzIsOSArMTEzMiw5IEBAIHJ0ZV9ldmVudF9k bWFfYWRhcHRlcl92Y2hhbl9kZWwodWludDhfdCBpZCwNCj4gPiBpbnQxNl90IGRtYV9kZXZfaWQs IHVpbnQxNl90IHZjaGFuKQ0KPiA+ICAJaWYgKChjYXAgJg0KPiA+IFJURV9FVkVOVF9ETUFfQURB UFRFUl9DQVBfSU5URVJOQUxfUE9SVF9PUF9GV0QpIHx8DQo+ID4gIAkgICAgKGNhcCAmDQo+IFJU RV9FVkVOVF9ETUFfQURBUFRFUl9DQVBfSU5URVJOQUxfUE9SVF9PUF9ORVcNCj4gPiAmJg0KPiA+ ICAJICAgICBhZGFwdGVyLT5tb2RlID09IFJURV9FVkVOVF9ETUFfQURBUFRFUl9PUF9ORVcpKSB7 DQo+ID4gLQkJaWYgKCpkZXYtPmRldl9vcHMtPmRtYV9hZGFwdGVyX3ZjaGFuX2RlbCA9PSBOVUxM KQ0KPiA+ICsJCWlmIChkZXYtPmRldl9vcHMtPmRtYV9hZGFwdGVyX3ZjaGFuX2RlbCA9PSBOVUxM KQ0KPiA+ICAJCQlyZXR1cm4gLUVOT1RTVVA7DQo+ID4gLQkJcmV0ID0gKCpkZXYtPmRldl9vcHMt PmRtYV9hZGFwdGVyX3ZjaGFuX2RlbCkoZGV2LA0KPiA+IGRtYV9kZXZfaWQsIHZjaGFuKTsNCj4g PiArCQlyZXQgPSBkZXYtPmRldl9vcHMtPmRtYV9hZGFwdGVyX3ZjaGFuX2RlbChkZXYsDQo+ID4g ZG1hX2Rldl9pZCwgdmNoYW4pOw0KPiA+ICAJCWlmIChyZXQgPT0gMCkgew0KPiA+ICAJCQllZG1h X3VwZGF0ZV92Y2hhbnFfaW5mbyhhZGFwdGVyLCBkZXZfaW5mbywgdmNoYW4sDQo+ID4gMCk7DQo+ ID4gIAkJCWlmIChkZXZfaW5mby0+bnVtX3ZjaGFucSA9PSAwKSB7DQo+ID4gQEAgLTEyMTIsOCAr MTIxMiw4IEBAIGVkbWFfYWRhcHRlcl9jdHJsKHVpbnQ4X3QgaWQsIGludCBzdGFydCkNCj4gPiAg CQlkZXZfaW5mby0+ZGV2X3N0YXJ0ZWQgPSBzdGFydDsNCj4gPiAgCQlpZiAoZGV2X2luZm8tPmlu dGVybmFsX2V2ZW50X3BvcnQgPT0gMCkNCj4gPiAgCQkJY29udGludWU7DQo+ID4gLQkJc3RhcnQg PyAoKmRldi0+ZGV2X29wcy0+ZG1hX2FkYXB0ZXJfc3RhcnQpKGRldiwgaSkgOg0KPiA+IC0JCQko KmRldi0+ZGV2X29wcy0+ZG1hX2FkYXB0ZXJfc3RvcCkoZGV2LCBpKTsNCj4gPiArCQlzdGFydCA/ IGRldi0+ZGV2X29wcy0+ZG1hX2FkYXB0ZXJfc3RhcnQoZGV2LCBpKSA6DQo+ID4gKwkJCWRldi0+ ZGV2X29wcy0+ZG1hX2FkYXB0ZXJfc3RvcChkZXYsIGkpOw0KPiA+ICAJfQ0KPiA+DQo+ID4gIAlp ZiAodXNlX3NlcnZpY2UpDQo+ID4gQEAgLTEzNjMsNyArMTM2Myw3IEBAIHJ0ZV9ldmVudF9kbWFf YWRhcHRlcl9zdGF0c19nZXQodWludDhfdCBpZCwNCj4gc3RydWN0DQo+ID4gcnRlX2V2ZW50X2Rt YV9hZGFwdGVyX3N0YXRzICoNCj4gPiAgCQkgICAgZGV2LT5kZXZfb3BzLT5kbWFfYWRhcHRlcl9z dGF0c19nZXQgPT0gTlVMTCkNCj4gPiAgCQkJY29udGludWU7DQo+ID4NCj4gPiAtCQlyZXQgPSAo KmRldi0+ZGV2X29wcy0+ZG1hX2FkYXB0ZXJfc3RhdHNfZ2V0KShkZXYsIGksDQo+ID4gJmRldl9z dGF0cyk7DQo+ID4gKwkJcmV0ID0gZGV2LT5kZXZfb3BzLT5kbWFfYWRhcHRlcl9zdGF0c19nZXQo ZGV2LCBpLA0KPiA+ICZkZXZfc3RhdHMpOw0KPiA+ICAJCWlmIChyZXQpDQo+ID4gIAkJCWNvbnRp bnVlOw0KPiA+DQo+ID4gQEAgLTE0MDQsNyArMTQwNCw3IEBAIHJ0ZV9ldmVudF9kbWFfYWRhcHRl cl9zdGF0c19yZXNldCh1aW50OF90IGlkKQ0KPiA+ICAJCSAgICBkZXYtPmRldl9vcHMtPmRtYV9h ZGFwdGVyX3N0YXRzX3Jlc2V0ID09IE5VTEwpDQo+ID4gIAkJCWNvbnRpbnVlOw0KPiA+DQo+ID4g LQkJKCpkZXYtPmRldl9vcHMtPmRtYV9hZGFwdGVyX3N0YXRzX3Jlc2V0KShkZXYsIGkpOw0KPiA+ ICsJCWRldi0+ZGV2X29wcy0+ZG1hX2FkYXB0ZXJfc3RhdHNfcmVzZXQoZGV2LCBpKTsNCj4gPiAg CX0NCj4gPg0KPiA+ICAJbWVtc2V0KCZhZGFwdGVyLT5kbWFfc3RhdHMsIDAsIHNpemVvZihhZGFw dGVyLT5kbWFfc3RhdHMpKTsgZGlmZiAtLQ0KPiBnaXQNCj4gPiBhL2xpYi9ldmVudGRldi9ydGVf ZXZlbnRfZXRoX3J4X2FkYXB0ZXIuYw0KPiA+IGIvbGliL2V2ZW50ZGV2L3J0ZV9ldmVudF9ldGhf cnhfYWRhcHRlci5jDQo+ID4gaW5kZXggMzk2NzRjNDYwNC4uNjY5Nzg4NDMwYiAxMDA2NDQNCj4g PiAtLS0gYS9saWIvZXZlbnRkZXYvcnRlX2V2ZW50X2V0aF9yeF9hZGFwdGVyLmMNCj4gPiArKysg Yi9saWIvZXZlbnRkZXYvcnRlX2V2ZW50X2V0aF9yeF9hZGFwdGVyLmMNCj4gPiBAQCAtMjM2Miwx MCArMjM2Miw4IEBAIHJ4YV9jdHJsKHVpbnQ4X3QgaWQsIGludCBzdGFydCkNCj4gPiAgCQlkZXZf aW5mby0+ZGV2X3J4X3N0YXJ0ZWQgPSBzdGFydDsNCj4gPiAgCQlpZiAoZGV2X2luZm8tPmludGVy bmFsX2V2ZW50X3BvcnQgPT0gMCkNCj4gPiAgCQkJY29udGludWU7DQo+ID4gLQkJc3RhcnQgPyAo KmRldi0+ZGV2X29wcy0+ZXRoX3J4X2FkYXB0ZXJfc3RhcnQpKGRldiwNCj4gPiAtCQkJCQkJJnJ0 ZV9ldGhfZGV2aWNlc1tpXSkgOg0KPiA+IC0JCQkoKmRldi0+ZGV2X29wcy0+ZXRoX3J4X2FkYXB0 ZXJfc3RvcCkoZGV2LA0KPiA+IC0JCQkJCQkmcnRlX2V0aF9kZXZpY2VzW2ldKTsNCj4gPiArCQlz dGFydCA/IGRldi0+ZGV2X29wcy0+ZXRoX3J4X2FkYXB0ZXJfc3RhcnQoZGV2LA0KPiA+ICZydGVf ZXRoX2RldmljZXNbaV0pIDoNCj4gPiArCQkJZGV2LT5kZXZfb3BzLT5ldGhfcnhfYWRhcHRlcl9z dG9wKGRldiwNCj4gPiAmcnRlX2V0aF9kZXZpY2VzW2ldKTsNCj4gPiAgCX0NCj4gPg0KPiA+ICAJ aWYgKHVzZV9zZXJ2aWNlKSB7DQo+ID4gQEAgLTI3NDksNyArMjc0Nyw3IEBAIHJ0ZV9ldmVudF9l dGhfcnhfYWRhcHRlcl9xdWV1ZV9hZGQodWludDhfdA0KPiBpZCwNCj4gPiAgCWRldl9pbmZvID0g JnJ4X2FkYXB0ZXItPmV0aF9kZXZpY2VzW2V0aF9kZXZfaWRdOw0KPiA+DQo+ID4gIAlpZiAoY2Fw ICYgUlRFX0VWRU5UX0VUSF9SWF9BREFQVEVSX0NBUF9JTlRFUk5BTF9QT1JUKSB7DQo+ID4gLQkJ aWYgKCpkZXYtPmRldl9vcHMtPmV0aF9yeF9hZGFwdGVyX3F1ZXVlX2FkZCA9PSBOVUxMKQ0KPiA+ ICsJCWlmIChkZXYtPmRldl9vcHMtPmV0aF9yeF9hZGFwdGVyX3F1ZXVlX2FkZCA9PSBOVUxMKQ0K PiA+ICAJCQlyZXR1cm4gLUVOT1RTVVA7DQo+ID4gIAkJaWYgKGRldl9pbmZvLT5yeF9xdWV1ZSA9 PSBOVUxMKSB7DQo+ID4gIAkJCWRldl9pbmZvLT5yeF9xdWV1ZSA9DQo+ID4gQEAgLTI3NjEsOSAr Mjc1OSw4IEBAIHJ0ZV9ldmVudF9ldGhfcnhfYWRhcHRlcl9xdWV1ZV9hZGQodWludDhfdA0KPiBp ZCwNCj4gPiAgCQkJCXJldHVybiAtRU5PTUVNOw0KPiA+ICAJCX0NCj4gPg0KPiA+IC0JCXJldCA9 ICgqZGV2LT5kZXZfb3BzLT5ldGhfcnhfYWRhcHRlcl9xdWV1ZV9hZGQpKGRldiwNCj4gPiAtCQkJ CSZydGVfZXRoX2RldmljZXNbZXRoX2Rldl9pZF0sDQo+ID4gLQkJCQlyeF9xdWV1ZV9pZCwgcXVl dWVfY29uZik7DQo+ID4gKwkJcmV0ID0gZGV2LT5kZXZfb3BzLT5ldGhfcnhfYWRhcHRlcl9xdWV1 ZV9hZGQoZGV2LA0KPiA+ICZydGVfZXRoX2RldmljZXNbZXRoX2Rldl9pZF0sDQo+ID4gKwkJCQkJ CQkgICAgIHJ4X3F1ZXVlX2lkLA0KPiA+IHF1ZXVlX2NvbmYpOw0KPiA+ICAJCWlmIChyZXQgPT0g MCkgew0KPiA+ICAJCQlkZXZfaW5mby0+aW50ZXJuYWxfZXZlbnRfcG9ydCA9IDE7DQo+ID4gIAkJ CXJ4YV91cGRhdGVfcXVldWUocnhfYWRhcHRlciwNCj4gPiBAQCAtMjg0NywxMSArMjg0NCwxMCBA QCBydGVfZXZlbnRfZXRoX3J4X2FkYXB0ZXJfcXVldWVfZGVsKHVpbnQ4X3QNCj4gaWQsDQo+ID4g dWludDE2X3QgZXRoX2Rldl9pZCwNCj4gPiAgCWRldl9pbmZvID0gJnJ4X2FkYXB0ZXItPmV0aF9k ZXZpY2VzW2V0aF9kZXZfaWRdOw0KPiA+DQo+ID4gIAlpZiAoY2FwICYgUlRFX0VWRU5UX0VUSF9S WF9BREFQVEVSX0NBUF9JTlRFUk5BTF9QT1JUKSB7DQo+ID4gLQkJaWYgKCpkZXYtPmRldl9vcHMt PmV0aF9yeF9hZGFwdGVyX3F1ZXVlX2RlbCA9PSBOVUxMKQ0KPiA+ICsJCWlmIChkZXYtPmRldl9v cHMtPmV0aF9yeF9hZGFwdGVyX3F1ZXVlX2RlbCA9PSBOVUxMKQ0KPiA+ICAJCQlyZXR1cm4gLUVO T1RTVVA7DQo+ID4gLQkJcmV0ID0gKCpkZXYtPmRldl9vcHMtPmV0aF9yeF9hZGFwdGVyX3F1ZXVl X2RlbCkoZGV2LA0KPiA+IC0NCj4gCSZydGVfZXRoX2RldmljZXNbZXRoX2Rldl9pZF0sDQo+ID4g LQkJCQkJCXJ4X3F1ZXVlX2lkKTsNCj4gPiArCQlyZXQgPSBkZXYtPmRldl9vcHMtPmV0aF9yeF9h ZGFwdGVyX3F1ZXVlX2RlbChkZXYsDQo+ID4gJnJ0ZV9ldGhfZGV2aWNlc1tldGhfZGV2X2lkXSwN Cj4gPiArCQkJCQkJCSAgICAgcnhfcXVldWVfaWQpOw0KPiA+ICAJCWlmIChyZXQgPT0gMCkgew0K PiA+ICAJCQlyeGFfdXBkYXRlX3F1ZXVlKHJ4X2FkYXB0ZXIsDQo+ID4gIAkJCQkJJnJ4X2FkYXB0 ZXItDQo+ID4gPmV0aF9kZXZpY2VzW2V0aF9kZXZfaWRdLA0KPiA+IEBAIC0yOTU5LDEwICsyOTU1 LDExIEBAIHJ0ZV9ldmVudF9ldGhfcnhfYWRhcHRlcl92ZWN0b3JfbGltaXRzX2dldCgNCj4gPiAg CX0NCj4gPg0KPiA+ICAJaWYgKGNhcCAmIFJURV9FVkVOVF9FVEhfUlhfQURBUFRFUl9DQVBfSU5U RVJOQUxfUE9SVCkgew0KPiA+IC0JCWlmICgqZGV2LT5kZXZfb3BzLT5ldGhfcnhfYWRhcHRlcl92 ZWN0b3JfbGltaXRzX2dldCA9PQ0KPiBOVUxMKQ0KPiA+ICsJCWlmIChkZXYtPmRldl9vcHMtPmV0 aF9yeF9hZGFwdGVyX3ZlY3Rvcl9saW1pdHNfZ2V0ID09IE5VTEwpDQo+ID4gIAkJCXJldHVybiAt RU5PVFNVUDsNCj4gPiAtCQlyZXQgPSBkZXYtPmRldl9vcHMtPmV0aF9yeF9hZGFwdGVyX3ZlY3Rv cl9saW1pdHNfZ2V0KA0KPiA+IC0JCQlkZXYsICZydGVfZXRoX2RldmljZXNbZXRoX3BvcnRfaWRd LCBsaW1pdHMpOw0KPiA+ICsJCXJldCA9IGRldi0+ZGV2X29wcy0+ZXRoX3J4X2FkYXB0ZXJfdmVj dG9yX2xpbWl0c19nZXQoZGV2LA0KPiA+ICsNCj4gPiAmcnRlX2V0aF9kZXZpY2VzW2V0aF9wb3J0 X2lkXSwNCj4gPiArCQkJCQkJCQkgICAgIGxpbWl0cyk7DQo+ID4gIAl9IGVsc2Ugew0KPiA+ICAJ CXJldCA9IHJ4YV9zd192ZWN0b3JfbGltaXRzKGxpbWl0cyk7DQo+ID4gIAl9DQo+ID4gQEAgLTMw NTEsMTEgKzMwNDgsMTAgQEAgcnRlX2V2ZW50X2V0aF9yeF9hZGFwdGVyX3N0YXRzX2dldCh1aW50 OF90DQo+IGlkLA0KPiA+ICAJCX0NCj4gPg0KPiA+ICAJCWlmIChkZXZfaW5mby0+aW50ZXJuYWxf ZXZlbnRfcG9ydCA9PSAwIHx8DQo+ID4gLQkJCWRldi0+ZGV2X29wcy0+ZXRoX3J4X2FkYXB0ZXJf c3RhdHNfZ2V0ID09IE5VTEwpDQo+ID4gKwkJICAgIGRldi0+ZGV2X29wcy0+ZXRoX3J4X2FkYXB0 ZXJfc3RhdHNfZ2V0ID09IE5VTEwpDQo+ID4gIAkJCWNvbnRpbnVlOw0KPiA+IC0JCXJldCA9ICgq ZGV2LT5kZXZfb3BzLT5ldGhfcnhfYWRhcHRlcl9zdGF0c19nZXQpKGRldiwNCj4gPiAtCQkJCQkJ JnJ0ZV9ldGhfZGV2aWNlc1tpXSwNCj4gPiAtCQkJCQkJJmRldl9zdGF0cyk7DQo+ID4gKwkJcmV0 ID0gZGV2LT5kZXZfb3BzLT5ldGhfcnhfYWRhcHRlcl9zdGF0c19nZXQoZGV2LA0KPiA+ICZydGVf ZXRoX2RldmljZXNbaV0sDQo+ID4gKwkJCQkJCQkgICAgICZkZXZfc3RhdHMpOw0KPiA+ICAJCWlm IChyZXQpDQo+ID4gIAkJCWNvbnRpbnVlOw0KPiA+ICAJCWRldl9zdGF0c19zdW0ucnhfcGFja2V0 cyArPSBkZXZfc3RhdHMucnhfcGFja2V0czsgQEAgLQ0KPiA+IDMxMjcsNyArMzEyMyw3IEBAIHJ0 ZV9ldmVudF9ldGhfcnhfYWRhcHRlcl9xdWV1ZV9zdGF0c19nZXQodWludDhfdA0KPiBpZCwNCj4g Pg0KPiA+ICAJZGV2ID0gJnJ0ZV9ldmVudGRldnNbcnhfYWRhcHRlci0+ZXZlbnRkZXZfaWRdOw0K PiA+ICAJaWYgKGRldi0+ZGV2X29wcy0+ZXRoX3J4X2FkYXB0ZXJfcXVldWVfc3RhdHNfZ2V0ICE9 IE5VTEwpIHsNCj4gPiAtCQlyZXR1cm4gKCpkZXYtPmRldl9vcHMtDQo+ID5ldGhfcnhfYWRhcHRl cl9xdWV1ZV9zdGF0c19nZXQpKGRldiwNCj4gPiArCQlyZXR1cm4gZGV2LT5kZXZfb3BzLT5ldGhf cnhfYWRhcHRlcl9xdWV1ZV9zdGF0c19nZXQoZGV2LA0KPiA+DQo+IAkmcnRlX2V0aF9kZXZpY2Vz W2V0aF9kZXZfaWRdLA0KPiA+ICAJCQkJCQlyeF9xdWV1ZV9pZCwgc3RhdHMpOw0KPiA+ICAJfQ0K PiA+IEBAIC0zMTcyLDEwICszMTY4LDkgQEAgcnRlX2V2ZW50X2V0aF9yeF9hZGFwdGVyX3N0YXRz X3Jlc2V0KHVpbnQ4X3QNCj4gaWQpDQo+ID4gIAkJfQ0KPiA+DQo+ID4gIAkJaWYgKGRldl9pbmZv LT5pbnRlcm5hbF9ldmVudF9wb3J0ID09IDAgfHwNCj4gPiAtCQkJZGV2LT5kZXZfb3BzLT5ldGhf cnhfYWRhcHRlcl9zdGF0c19yZXNldCA9PSBOVUxMKQ0KPiA+ICsJCSAgICBkZXYtPmRldl9vcHMt PmV0aF9yeF9hZGFwdGVyX3N0YXRzX3Jlc2V0ID09IE5VTEwpDQo+ID4gIAkJCWNvbnRpbnVlOw0K PiA+IC0JCSgqZGV2LT5kZXZfb3BzLT5ldGhfcnhfYWRhcHRlcl9zdGF0c19yZXNldCkoZGV2LA0K PiA+IC0JCQkJCQkJJnJ0ZV9ldGhfZGV2aWNlc1tpXSk7DQo+ID4gKwkJZGV2LT5kZXZfb3BzLT5l dGhfcnhfYWRhcHRlcl9zdGF0c19yZXNldChkZXYsDQo+ID4gJnJ0ZV9ldGhfZGV2aWNlc1tpXSk7 DQo+ID4gIAl9DQo+ID4NCj4gPiAgCW1lbXNldCgmcnhfYWRhcHRlci0+c3RhdHMsIDAsIHNpemVv ZihyeF9hZGFwdGVyLT5zdGF0cykpOyBAQCAtDQo+IDMyMjksNw0KPiA+ICszMjI0LDcgQEAgcnRl X2V2ZW50X2V0aF9yeF9hZGFwdGVyX3F1ZXVlX3N0YXRzX3Jlc2V0KHVpbnQ4X3QgaWQsDQo+ID4N Cj4gPiAgCWRldiA9ICZydGVfZXZlbnRkZXZzW3J4X2FkYXB0ZXItPmV2ZW50ZGV2X2lkXTsNCj4g PiAgCWlmIChkZXYtPmRldl9vcHMtPmV0aF9yeF9hZGFwdGVyX3F1ZXVlX3N0YXRzX3Jlc2V0ICE9 IE5VTEwpIHsNCj4gPiAtCQlyZXR1cm4gKCpkZXYtPmRldl9vcHMtDQo+ID4gPmV0aF9yeF9hZGFw dGVyX3F1ZXVlX3N0YXRzX3Jlc2V0KShkZXYsDQo+ID4gKwkJcmV0dXJuIGRldi0+ZGV2X29wcy0N Cj4gPmV0aF9yeF9hZGFwdGVyX3F1ZXVlX3N0YXRzX3Jlc2V0KGRldiwNCj4gPg0KPiAJJnJ0ZV9l dGhfZGV2aWNlc1tldGhfZGV2X2lkXSwNCj4gPiAgCQkJCQkJcnhfcXVldWVfaWQpOw0KPiA+ICAJ fQ0KPiA+IEBAIC0zMzk2LDEwICszMzkxLDkgQEANCj4gcnRlX2V2ZW50X2V0aF9yeF9hZGFwdGVy X3F1ZXVlX2NvbmZfZ2V0KHVpbnQ4X3QNCj4gPiBpZCwNCj4gPg0KPiA+ICAJZGV2ID0gJnJ0ZV9l dmVudGRldnNbcnhfYWRhcHRlci0+ZXZlbnRkZXZfaWRdOw0KPiA+ICAJaWYgKGRldi0+ZGV2X29w cy0+ZXRoX3J4X2FkYXB0ZXJfcXVldWVfY29uZl9nZXQgIT0gTlVMTCkgew0KPiA+IC0JCXJldCA9 ICgqZGV2LT5kZXZfb3BzLT5ldGhfcnhfYWRhcHRlcl9xdWV1ZV9jb25mX2dldCkoZGV2LA0KPiA+ IC0NCj4gCSZydGVfZXRoX2RldmljZXNbZXRoX2Rldl9pZF0sDQo+ID4gLQkJCQkJCXJ4X3F1ZXVl X2lkLA0KPiA+IC0JCQkJCQlxdWV1ZV9jb25mKTsNCj4gPiArCQlyZXQgPSBkZXYtPmRldl9vcHMt PmV0aF9yeF9hZGFwdGVyX3F1ZXVlX2NvbmZfZ2V0KGRldiwNCj4gPiArDQo+ID4gJnJ0ZV9ldGhf ZGV2aWNlc1tldGhfZGV2X2lkXSwNCj4gPiArCQkJCQkJCQkgIHJ4X3F1ZXVlX2lkLA0KPiA+IHF1 ZXVlX2NvbmYpOw0KPiA+ICAJCXJldHVybiByZXQ7DQo+ID4gIAl9DQo+ID4NCj4gPiBkaWZmIC0t Z2l0IGEvbGliL2V2ZW50ZGV2L3J0ZV9ldmVudGRldi5jIGIvbGliL2V2ZW50ZGV2L3J0ZV9ldmVu dGRldi5jIGluZGV4DQo+ID4gMTA3OGUwYmNlZS4uNDNjZDk1ZDc2NSAxMDA2NDQNCj4gPiAtLS0g YS9saWIvZXZlbnRkZXYvcnRlX2V2ZW50ZGV2LmMNCj4gPiArKysgYi9saWIvZXZlbnRkZXYvcnRl X2V2ZW50ZGV2LmMNCj4gPiBAQCAtMTAwLDkgKzEwMCw5IEBAIHJ0ZV9ldmVudF9kZXZfaW5mb19n ZXQodWludDhfdCBkZXZfaWQsIHN0cnVjdA0KPiA+IHJ0ZV9ldmVudF9kZXZfaW5mbyAqZGV2X2lu Zm8pDQo+ID4NCj4gPiAgCW1lbXNldChkZXZfaW5mbywgMCwgc2l6ZW9mKHN0cnVjdCBydGVfZXZl bnRfZGV2X2luZm8pKTsNCj4gPg0KPiA+IC0JaWYgKCpkZXYtPmRldl9vcHMtPmRldl9pbmZvc19n ZXQgPT0gTlVMTCkNCj4gPiArCWlmIChkZXYtPmRldl9vcHMtPmRldl9pbmZvc19nZXQgPT0gTlVM TCkNCj4gPiAgCQlyZXR1cm4gLUVOT1RTVVA7DQo+ID4gLQkoKmRldi0+ZGV2X29wcy0+ZGV2X2lu Zm9zX2dldCkoZGV2LCBkZXZfaW5mbyk7DQo+ID4gKwlkZXYtPmRldl9vcHMtPmRldl9pbmZvc19n ZXQoZGV2LCBkZXZfaW5mbyk7DQo+ID4NCj4gPiAgCWRldl9pbmZvLT5kZXF1ZXVlX3RpbWVvdXRf bnMgPSBkZXYtPmRhdGEtDQo+ID4gPmRldl9jb25mLmRlcXVldWVfdGltZW91dF9uczsNCj4gPg0K PiA+IEBAIC0xMzcsMTAgKzEzNyw4IEBAIHJ0ZV9ldmVudF9ldGhfcnhfYWRhcHRlcl9jYXBzX2dl dCh1aW50OF90DQo+IGRldl9pZCwNCj4gPiB1aW50MTZfdCBldGhfcG9ydF9pZCwNCj4gPiAgCQkq Y2FwcyA9IDA7DQo+ID4NCj4gPiAgCXJldHVybiBkZXYtPmRldl9vcHMtPmV0aF9yeF9hZGFwdGVy X2NhcHNfZ2V0ID8NCj4gPiAtCQkJCSgqZGV2LT5kZXZfb3BzLQ0KPiA+ID5ldGhfcnhfYWRhcHRl cl9jYXBzX2dldCkoZGV2LA0KPiA+IC0NCj4gPiAJJnJ0ZV9ldGhfZGV2aWNlc1tldGhfcG9ydF9p ZF0sDQo+ID4gLQkJCQkJCWNhcHMpDQo+ID4gLQkJCQk6IDA7DQo+ID4gKwkJZGV2LT5kZXZfb3Bz LT5ldGhfcnhfYWRhcHRlcl9jYXBzX2dldChkZXYsDQo+ID4gJnJ0ZV9ldGhfZGV2aWNlc1tldGhf cG9ydF9pZF0sIGNhcHMpDQo+ID4gKwkJOiAwOw0KPiA+ICB9DQo+ID4NCj4gPiAgaW50DQo+ID4g QEAgLTE2NCwxMSArMTYyLDggQEAgcnRlX2V2ZW50X3RpbWVyX2FkYXB0ZXJfY2Fwc19nZXQodWlu dDhfdA0KPiBkZXZfaWQsDQo+ID4gdWludDMyX3QgKmNhcHMpDQo+ID4gIAkJKmNhcHMgPSAwOw0K PiA+DQo+ID4gIAlyZXR1cm4gZGV2LT5kZXZfb3BzLT50aW1lcl9hZGFwdGVyX2NhcHNfZ2V0ID8N Cj4gPiAtCQkJCSgqZGV2LT5kZXZfb3BzLQ0KPiA+ID50aW1lcl9hZGFwdGVyX2NhcHNfZ2V0KShk ZXYsDQo+ID4gLQkJCQkJCQkJCTAsDQo+ID4gLQkJCQkJCQkJCWNhcHMsDQo+ID4gLQkJCQkJCQkJ CSZvcHMpDQo+ID4gLQkJCQk6IDA7DQo+ID4gKwkJZGV2LT5kZXZfb3BzLT50aW1lcl9hZGFwdGVy X2NhcHNfZ2V0KGRldiwgMCwgY2FwcywgJm9wcykNCj4gPiArCQk6IDA7DQo+ID4gIH0NCj4gPg0K PiA+ICBpbnQNCj4gPiBAQCAtMTk2LDggKzE5MSw3IEBAIHJ0ZV9ldmVudF9jcnlwdG9fYWRhcHRl cl9jYXBzX2dldCh1aW50OF90DQo+IGRldl9pZCwNCj4gPiB1aW50OF90IGNkZXZfaWQsDQo+ID4g IAkJKmNhcHMgPSAwOw0KPiA+DQo+ID4gIAlyZXR1cm4gZGV2LT5kZXZfb3BzLT5jcnlwdG9fYWRh cHRlcl9jYXBzX2dldCA/DQo+ID4gLQkJKCpkZXYtPmRldl9vcHMtPmNyeXB0b19hZGFwdGVyX2Nh cHNfZ2V0KQ0KPiA+IC0JCShkZXYsIGNkZXYsIGNhcHMpIDogMDsNCj4gPiArCQlkZXYtPmRldl9v cHMtPmNyeXB0b19hZGFwdGVyX2NhcHNfZ2V0KGRldiwgY2RldiwgY2FwcykgOiAwOw0KPiA+ICB9 DQo+ID4NCj4gPiAgaW50DQo+ID4gQEAgLTIyNCwxMCArMjE4LDggQEAgcnRlX2V2ZW50X2V0aF90 eF9hZGFwdGVyX2NhcHNfZ2V0KHVpbnQ4X3QNCj4gZGV2X2lkLA0KPiA+IHVpbnQxNl90IGV0aF9w b3J0X2lkLA0KPiA+ICAJCSpjYXBzID0gMDsNCj4gPg0KPiA+ICAJcmV0dXJuIGRldi0+ZGV2X29w cy0+ZXRoX3R4X2FkYXB0ZXJfY2Fwc19nZXQgPw0KPiA+IC0JCQkoKmRldi0+ZGV2X29wcy0+ZXRo X3R4X2FkYXB0ZXJfY2Fwc19nZXQpKGRldiwNCj4gPiAtCQkJCQkJCQlldGhfZGV2LA0KPiA+IC0J CQkJCQkJCWNhcHMpDQo+ID4gLQkJCTogMDsNCj4gPiArCQlkZXYtPmRldl9vcHMtPmV0aF90eF9h ZGFwdGVyX2NhcHNfZ2V0KGRldiwgZXRoX2RldiwgY2FwcykNCj4gPiArCQk6IDA7DQo+ID4gIH0N Cj4gPg0KPiA+ICBpbnQNCj4gPiBAQCAtMjQ3LDcgKzIzOSw3IEBAIHJ0ZV9ldmVudF9kbWFfYWRh cHRlcl9jYXBzX2dldCh1aW50OF90IGRldl9pZCwNCj4gPiB1aW50OF90IGRtYV9kZXZfaWQsIHVp bnQzMl90ICpjYXANCj4gPiAgCSpjYXBzID0gMDsNCj4gPg0KPiA+ICAJaWYgKGRldi0+ZGV2X29w cy0+ZG1hX2FkYXB0ZXJfY2Fwc19nZXQpDQo+ID4gLQkJcmV0dXJuICgqZGV2LT5kZXZfb3BzLT5k bWFfYWRhcHRlcl9jYXBzX2dldCkoZGV2LA0KPiA+IGRtYV9kZXZfaWQsIGNhcHMpOw0KPiA+ICsJ CXJldHVybiBkZXYtPmRldl9vcHMtPmRtYV9hZGFwdGVyX2NhcHNfZ2V0KGRldiwNCj4gPiBkbWFf ZGV2X2lkLCBjYXBzKTsNCj4gPg0KPiA+ICAJcmV0dXJuIDA7DQo+ID4gIH0NCj4gPiBAQCAtMjY0 LDExICsyNTYsMTEgQEAgZXZlbnRfZGV2X3F1ZXVlX2NvbmZpZyhzdHJ1Y3QgcnRlX2V2ZW50ZGV2 DQo+ICpkZXYsDQo+ID4gdWludDhfdCBuYl9xdWV1ZXMpDQo+ID4NCj4gPiAgCWlmIChuYl9xdWV1 ZXMgIT0gMCkgew0KPiA+ICAJCXF1ZXVlc19jZmcgPSBkZXYtPmRhdGEtPnF1ZXVlc19jZmc7DQo+ ID4gLQkJaWYgKCpkZXYtPmRldl9vcHMtPnF1ZXVlX3JlbGVhc2UgPT0gTlVMTCkNCj4gPiArCQlp ZiAoZGV2LT5kZXZfb3BzLT5xdWV1ZV9yZWxlYXNlID09IE5VTEwpDQo+ID4gIAkJCXJldHVybiAt RU5PVFNVUDsNCj4gPg0KPiA+ICAJCWZvciAoaSA9IG5iX3F1ZXVlczsgaSA8IG9sZF9uYl9xdWV1 ZXM7IGkrKykNCj4gPiAtCQkJKCpkZXYtPmRldl9vcHMtPnF1ZXVlX3JlbGVhc2UpKGRldiwgaSk7 DQo+ID4gKwkJCWRldi0+ZGV2X29wcy0+cXVldWVfcmVsZWFzZShkZXYsIGkpOw0KPiA+DQo+ID4N Cj4gPiAgCQlpZiAobmJfcXVldWVzID4gb2xkX25iX3F1ZXVlcykgew0KPiA+IEBAIC0yNzgsMTEg KzI3MCwxMSBAQCBldmVudF9kZXZfcXVldWVfY29uZmlnKHN0cnVjdCBydGVfZXZlbnRkZXYNCj4g KmRldiwNCj4gPiB1aW50OF90IG5iX3F1ZXVlcykNCj4gPiAgCQkJCXNpemVvZihxdWV1ZXNfY2Zn WzBdKSAqIG5ld19xcyk7DQo+ID4gIAkJfQ0KPiA+ICAJfSBlbHNlIHsNCj4gPiAtCQlpZiAoKmRl di0+ZGV2X29wcy0+cXVldWVfcmVsZWFzZSA9PSBOVUxMKQ0KPiA+ICsJCWlmIChkZXYtPmRldl9v cHMtPnF1ZXVlX3JlbGVhc2UgPT0gTlVMTCkNCj4gPiAgCQkJcmV0dXJuIC1FTk9UU1VQOw0KPiA+ DQo+ID4gIAkJZm9yIChpID0gbmJfcXVldWVzOyBpIDwgb2xkX25iX3F1ZXVlczsgaSsrKQ0KPiA+ IC0JCQkoKmRldi0+ZGV2X29wcy0+cXVldWVfcmVsZWFzZSkoZGV2LCBpKTsNCj4gPiArCQkJZGV2 LT5kZXZfb3BzLT5xdWV1ZV9yZWxlYXNlKGRldiwgaSk7DQo+ID4gIAl9DQo+ID4NCj4gPiAgCWRl di0+ZGF0YS0+bmJfcXVldWVzID0gbmJfcXVldWVzOw0KPiA+IEBAIC0zMDQsMTQgKzI5NiwxNCBA QCBldmVudF9kZXZfcG9ydF9jb25maWcoc3RydWN0IHJ0ZV9ldmVudGRldg0KPiAqZGV2LA0KPiA+ IHVpbnQ4X3QgbmJfcG9ydHMpDQo+ID4gIAkJCSBkZXYtPmRhdGEtPmRldl9pZCk7DQo+ID4NCj4g PiAgCWlmIChuYl9wb3J0cyAhPSAwKSB7IC8qIHJlLWNvbmZpZyAqLw0KPiA+IC0JCWlmICgqZGV2 LT5kZXZfb3BzLT5wb3J0X3JlbGVhc2UgPT0gTlVMTCkNCj4gPiArCQlpZiAoZGV2LT5kZXZfb3Bz LT5wb3J0X3JlbGVhc2UgPT0gTlVMTCkNCj4gPiAgCQkJcmV0dXJuIC1FTk9UU1VQOw0KPiA+DQo+ ID4gIAkJcG9ydHMgPSBkZXYtPmRhdGEtPnBvcnRzOw0KPiA+ICAJCXBvcnRzX2NmZyA9IGRldi0+ ZGF0YS0+cG9ydHNfY2ZnOw0KPiA+DQo+ID4gIAkJZm9yIChpID0gbmJfcG9ydHM7IGkgPCBvbGRf bmJfcG9ydHM7IGkrKykNCj4gPiAtCQkJKCpkZXYtPmRldl9vcHMtPnBvcnRfcmVsZWFzZSkocG9y dHNbaV0pOw0KPiA+ICsJCQkoZGV2LT5kZXZfb3BzLT5wb3J0X3JlbGVhc2UpKHBvcnRzW2ldKTsN Cj4gPg0KPiA+ICAJCWlmIChuYl9wb3J0cyA+IG9sZF9uYl9wb3J0cykgew0KPiA+ICAJCQl1aW50 OF90IG5ld19wcyA9IG5iX3BvcnRzIC0gb2xkX25iX3BvcnRzOyBAQCAtDQo+ID4gMzMxLDEyICsz MjMsMTIgQEAgZXZlbnRfZGV2X3BvcnRfY29uZmlnKHN0cnVjdCBydGVfZXZlbnRkZXYgKmRldiwN Cj4gdWludDhfdA0KPiA+IG5iX3BvcnRzKQ0KPiA+ICAJCQl9DQo+ID4gIAkJfQ0KPiA+ICAJfSBl bHNlIHsNCj4gPiAtCQlpZiAoKmRldi0+ZGV2X29wcy0+cG9ydF9yZWxlYXNlID09IE5VTEwpDQo+ ID4gKwkJaWYgKGRldi0+ZGV2X29wcy0+cG9ydF9yZWxlYXNlID09IE5VTEwpDQo+ID4gIAkJCXJl dHVybiAtRU5PVFNVUDsNCj4gPg0KPiA+ICAJCXBvcnRzID0gZGV2LT5kYXRhLT5wb3J0czsNCj4g PiAgCQlmb3IgKGkgPSBuYl9wb3J0czsgaSA8IG9sZF9uYl9wb3J0czsgaSsrKSB7DQo+ID4gLQkJ CSgqZGV2LT5kZXZfb3BzLT5wb3J0X3JlbGVhc2UpKHBvcnRzW2ldKTsNCj4gPiArCQkJKGRldi0+ ZGV2X29wcy0+cG9ydF9yZWxlYXNlKShwb3J0c1tpXSk7DQo+ID4gIAkJCXBvcnRzW2ldID0gTlVM TDsNCj4gPiAgCQl9DQo+ID4gIAl9DQo+ID4gQEAgLTM1Niw5ICszNDgsOSBAQCBydGVfZXZlbnRf ZGV2X2NvbmZpZ3VyZSh1aW50OF90IGRldl9pZCwNCj4gPiAgCVJURV9FVkVOVERFVl9WQUxJRF9E RVZJRF9PUl9FUlJfUkVUKGRldl9pZCwgLUVJTlZBTCk7DQo+ID4gIAlkZXYgPSAmcnRlX2V2ZW50 ZGV2c1tkZXZfaWRdOw0KPiA+DQo+ID4gLQlpZiAoKmRldi0+ZGV2X29wcy0+ZGV2X2luZm9zX2dl dCA9PSBOVUxMKQ0KPiA+ICsJaWYgKGRldi0+ZGV2X29wcy0+ZGV2X2luZm9zX2dldCA9PSBOVUxM KQ0KPiA+ICAJCXJldHVybiAtRU5PVFNVUDsNCj4gPiAtCWlmICgqZGV2LT5kZXZfb3BzLT5kZXZf Y29uZmlndXJlID09IE5VTEwpDQo+ID4gKwlpZiAoZGV2LT5kZXZfb3BzLT5kZXZfY29uZmlndXJl ID09IE5VTEwpDQo+ID4gIAkJcmV0dXJuIC1FTk9UU1VQOw0KPiA+DQo+ID4gIAlpZiAoZGV2LT5k YXRhLT5kZXZfc3RhcnRlZCkgew0KPiA+IEBAIC0zNzAsNyArMzYyLDcgQEAgcnRlX2V2ZW50X2Rl dl9jb25maWd1cmUodWludDhfdCBkZXZfaWQsDQo+ID4gIAlpZiAoZGV2X2NvbmYgPT0gTlVMTCkN Cj4gPiAgCQlyZXR1cm4gLUVJTlZBTDsNCj4gPg0KPiA+IC0JKCpkZXYtPmRldl9vcHMtPmRldl9p bmZvc19nZXQpKGRldiwgJmluZm8pOw0KPiA+ICsJZGV2LT5kZXZfb3BzLT5kZXZfaW5mb3NfZ2V0 KGRldiwgJmluZm8pOw0KPiA+DQo+ID4gIAkvKiBDaGVjayBkZXF1ZXVlX3RpbWVvdXRfbnMgdmFs dWUgaXMgaW4gbGltaXQgKi8NCj4gPiAgCWlmICghKGRldl9jb25mLT5ldmVudF9kZXZfY2ZnICYN Cj4gPiBSVEVfRVZFTlRfREVWX0NGR19QRVJfREVRVUVVRV9USU1FT1VUKSkgeyBAQCAtNTI0LDcg KzUxNiw3IEBADQo+ID4gcnRlX2V2ZW50X2Rldl9jb25maWd1cmUodWludDhfdCBkZXZfaWQsDQo+ ID4gIAlldmVudF9kZXZfZnBfb3BzX3Jlc2V0KHJ0ZV9ldmVudF9mcF9vcHMgKyBkZXZfaWQpOw0K PiA+DQo+ID4gIAkvKiBDb25maWd1cmUgdGhlIGRldmljZSAqLw0KPiA+IC0JZGlhZyA9ICgqZGV2 LT5kZXZfb3BzLT5kZXZfY29uZmlndXJlKShkZXYpOw0KPiA+ICsJZGlhZyA9IChkZXYtPmRldl9v cHMtPmRldl9jb25maWd1cmUpKGRldik7DQo+ID4gIAlpZiAoZGlhZyAhPSAwKSB7DQo+ID4gIAkJ UlRFX0VERVZfTE9HX0VSUigiZGV2JWQgZGV2X2NvbmZpZ3VyZSA9ICVkIiwgZGV2X2lkLA0KPiA+ IGRpYWcpOw0KPiA+ICAJCWV2ZW50X2Rldl9mcF9vcHNfcmVzZXQocnRlX2V2ZW50X2ZwX29wcyAr IGRldl9pZCk7IEBAIC0NCj4gPiA1NjQsMTAgKzU1NiwxMCBAQCBydGVfZXZlbnRfcXVldWVfZGVm YXVsdF9jb25mX2dldCh1aW50OF90IGRldl9pZCwNCj4gPiB1aW50OF90IHF1ZXVlX2lkLA0KPiA+ ICAJCXJldHVybiAtRUlOVkFMOw0KPiA+ICAJfQ0KPiA+DQo+ID4gLQlpZiAoKmRldi0+ZGV2X29w cy0+cXVldWVfZGVmX2NvbmYgPT0gTlVMTCkNCj4gPiArCWlmIChkZXYtPmRldl9vcHMtPnF1ZXVl X2RlZl9jb25mID09IE5VTEwpDQo+ID4gIAkJcmV0dXJuIC1FTk9UU1VQOw0KPiA+ICAJbWVtc2V0 KHF1ZXVlX2NvbmYsIDAsIHNpemVvZihzdHJ1Y3QgcnRlX2V2ZW50X3F1ZXVlX2NvbmYpKTsNCj4g PiAtCSgqZGV2LT5kZXZfb3BzLT5xdWV1ZV9kZWZfY29uZikoZGV2LCBxdWV1ZV9pZCwgcXVldWVf Y29uZik7DQo+ID4gKwlkZXYtPmRldl9vcHMtPnF1ZXVlX2RlZl9jb25mKGRldiwgcXVldWVfaWQs IHF1ZXVlX2NvbmYpOw0KPiA+DQo+ID4gIAlydGVfZXZlbnRkZXZfdHJhY2VfcXVldWVfZGVmYXVs dF9jb25mX2dldChkZXZfaWQsIGRldiwgcXVldWVfaWQsDQo+ID4gcXVldWVfY29uZik7DQo+ID4N Cj4gPiBAQCAtNjU0LDE5ICs2NDYsMTkgQEAgcnRlX2V2ZW50X3F1ZXVlX3NldHVwKHVpbnQ4X3Qg ZGV2X2lkLCB1aW50OF90DQo+ID4gcXVldWVfaWQsDQo+ID4gIAkJcmV0dXJuIC1FQlVTWTsNCj4g PiAgCX0NCj4gPg0KPiA+IC0JaWYgKCpkZXYtPmRldl9vcHMtPnF1ZXVlX3NldHVwID09IE5VTEwp DQo+ID4gKwlpZiAoZGV2LT5kZXZfb3BzLT5xdWV1ZV9zZXR1cCA9PSBOVUxMKQ0KPiA+ICAJCXJl dHVybiAtRU5PVFNVUDsNCj4gPg0KPiA+ICAJaWYgKHF1ZXVlX2NvbmYgPT0gTlVMTCkgew0KPiA+ IC0JCWlmICgqZGV2LT5kZXZfb3BzLT5xdWV1ZV9kZWZfY29uZiA9PSBOVUxMKQ0KPiA+ICsJCWlm IChkZXYtPmRldl9vcHMtPnF1ZXVlX2RlZl9jb25mID09IE5VTEwpDQo+ID4gIAkJCXJldHVybiAt RU5PVFNVUDsNCj4gPiAtCQkoKmRldi0+ZGV2X29wcy0+cXVldWVfZGVmX2NvbmYpKGRldiwgcXVl dWVfaWQsDQo+ICZkZWZfY29uZik7DQo+ID4gKwkJZGV2LT5kZXZfb3BzLT5xdWV1ZV9kZWZfY29u ZihkZXYsIHF1ZXVlX2lkLCAmZGVmX2NvbmYpOw0KPiA+ICAJCXF1ZXVlX2NvbmYgPSAmZGVmX2Nv bmY7DQo+ID4gIAl9DQo+ID4NCj4gPiAgCWRldi0+ZGF0YS0+cXVldWVzX2NmZ1txdWV1ZV9pZF0g PSAqcXVldWVfY29uZjsNCj4gPiAgCXJ0ZV9ldmVudGRldl90cmFjZV9xdWV1ZV9zZXR1cChkZXZf aWQsIHF1ZXVlX2lkLCBxdWV1ZV9jb25mKTsNCj4gPiAtCXJldHVybiAoKmRldi0+ZGV2X29wcy0+ cXVldWVfc2V0dXApKGRldiwgcXVldWVfaWQsIHF1ZXVlX2NvbmYpOw0KPiA+ICsJcmV0dXJuIGRl di0+ZGV2X29wcy0+cXVldWVfc2V0dXAoZGV2LCBxdWV1ZV9pZCwgcXVldWVfY29uZik7DQo+ID4g IH0NCj4gPg0KPiA+ICBzdGF0aWMgaW5saW5lIGludA0KPiA+IEBAIC02OTUsMTAgKzY4NywxMCBA QCBydGVfZXZlbnRfcG9ydF9kZWZhdWx0X2NvbmZfZ2V0KHVpbnQ4X3QgZGV2X2lkLA0KPiA+IHVp bnQ4X3QgcG9ydF9pZCwNCj4gPiAgCQlyZXR1cm4gLUVJTlZBTDsNCj4gPiAgCX0NCj4gPg0KPiA+ IC0JaWYgKCpkZXYtPmRldl9vcHMtPnBvcnRfZGVmX2NvbmYgPT0gTlVMTCkNCj4gPiArCWlmIChk ZXYtPmRldl9vcHMtPnBvcnRfZGVmX2NvbmYgPT0gTlVMTCkNCj4gPiAgCQlyZXR1cm4gLUVOT1RT VVA7DQo+ID4gIAltZW1zZXQocG9ydF9jb25mLCAwLCBzaXplb2Yoc3RydWN0IHJ0ZV9ldmVudF9w b3J0X2NvbmYpKTsNCj4gPiAtCSgqZGV2LT5kZXZfb3BzLT5wb3J0X2RlZl9jb25mKShkZXYsIHBv cnRfaWQsIHBvcnRfY29uZik7DQo+ID4gKwlkZXYtPmRldl9vcHMtPnBvcnRfZGVmX2NvbmYoZGV2 LCBwb3J0X2lkLCBwb3J0X2NvbmYpOw0KPiA+DQo+ID4gIAlydGVfZXZlbnRkZXZfdHJhY2VfcG9y dF9kZWZhdWx0X2NvbmZfZ2V0KGRldl9pZCwgZGV2LCBwb3J0X2lkLA0KPiA+IHBvcnRfY29uZik7 DQo+ID4NCj4gPiBAQCAtNzcwLDE5ICs3NjIsMTkgQEAgcnRlX2V2ZW50X3BvcnRfc2V0dXAodWlu dDhfdCBkZXZfaWQsIHVpbnQ4X3QNCj4gPiBwb3J0X2lkLA0KPiA+ICAJCXJldHVybiAtRUJVU1k7 DQo+ID4gIAl9DQo+ID4NCj4gPiAtCWlmICgqZGV2LT5kZXZfb3BzLT5wb3J0X3NldHVwID09IE5V TEwpDQo+ID4gKwlpZiAoZGV2LT5kZXZfb3BzLT5wb3J0X3NldHVwID09IE5VTEwpDQo+ID4gIAkJ cmV0dXJuIC1FTk9UU1VQOw0KPiA+DQo+ID4gIAlpZiAocG9ydF9jb25mID09IE5VTEwpIHsNCj4g PiAtCQlpZiAoKmRldi0+ZGV2X29wcy0+cG9ydF9kZWZfY29uZiA9PSBOVUxMKQ0KPiA+ICsJCWlm IChkZXYtPmRldl9vcHMtPnBvcnRfZGVmX2NvbmYgPT0gTlVMTCkNCj4gPiAgCQkJcmV0dXJuIC1F Tk9UU1VQOw0KPiA+IC0JCSgqZGV2LT5kZXZfb3BzLT5wb3J0X2RlZl9jb25mKShkZXYsIHBvcnRf aWQsICZkZWZfY29uZik7DQo+ID4gKwkJZGV2LT5kZXZfb3BzLT5wb3J0X2RlZl9jb25mKGRldiwg cG9ydF9pZCwgJmRlZl9jb25mKTsNCj4gPiAgCQlwb3J0X2NvbmYgPSAmZGVmX2NvbmY7DQo+ID4g IAl9DQo+ID4NCj4gPiAgCWRldi0+ZGF0YS0+cG9ydHNfY2ZnW3BvcnRfaWRdID0gKnBvcnRfY29u ZjsNCj4gPg0KPiA+IC0JZGlhZyA9ICgqZGV2LT5kZXZfb3BzLT5wb3J0X3NldHVwKShkZXYsIHBv cnRfaWQsIHBvcnRfY29uZik7DQo+ID4gKwlkaWFnID0gZGV2LT5kZXZfb3BzLT5wb3J0X3NldHVw KGRldiwgcG9ydF9pZCwgcG9ydF9jb25mKTsNCj4gPg0KPiA+ICAJLyogVW5saW5rIGFsbCB0aGUg cXVldWVzIGZyb20gdGhpcyBwb3J0KGRlZmF1bHQgc3RhdGUgYWZ0ZXIgc2V0dXApICovDQo+ID4g IAlpZiAoIWRpYWcpDQo+ID4gQEAgLTgxMiw4ICs4MDQsNyBAQCBydGVfZXZlbnRfcG9ydF9xdWll c2NlKHVpbnQ4X3QgZGV2X2lkLCB1aW50OF90DQo+ID4gcG9ydF9pZCwNCj4gPiAgCX0NCj4gPg0K PiA+ICAJaWYgKGRldi0+ZGV2X29wcy0+cG9ydF9xdWllc2NlKQ0KPiA+IC0JCSgqZGV2LT5kZXZf b3BzLT5wb3J0X3F1aWVzY2UpKGRldiwgZGV2LT5kYXRhLQ0KPiA+cG9ydHNbcG9ydF9pZF0sDQo+ ID4gLQkJCQkJICAgICAgcmVsZWFzZV9jYiwgYXJncyk7DQo+ID4gKwkJZGV2LT5kZXZfb3BzLT5w b3J0X3F1aWVzY2UoZGV2LCBkZXYtPmRhdGEtPnBvcnRzW3BvcnRfaWRdLA0KPiA+ICtyZWxlYXNl X2NiLCBhcmdzKTsNCj4gPiAgfQ0KPiA+DQo+ID4gIGludA0KPiA+IEBAIC05NzksMTAgKzk3MCw5 IEBAIHJ0ZV9ldmVudF9xdWV1ZV9hdHRyX3NldCh1aW50OF90IGRldl9pZCwgdWludDhfdA0KPiA+ IHF1ZXVlX2lkLCB1aW50MzJfdCBhdHRyX2lkLA0KPiA+ICAJCXJldHVybiAtRU5PVFNVUDsNCj4g PiAgCX0NCj4gPg0KPiA+IC0JaWYgKCpkZXYtPmRldl9vcHMtPnF1ZXVlX2F0dHJfc2V0ID09IE5V TEwpDQo+ID4gKwlpZiAoZGV2LT5kZXZfb3BzLT5xdWV1ZV9hdHRyX3NldCA9PSBOVUxMKQ0KPiA+ ICAJCXJldHVybiAtRU5PVFNVUDsNCj4gPiAtCXJldHVybiAoKmRldi0+ZGV2X29wcy0+cXVldWVf YXR0cl9zZXQpKGRldiwgcXVldWVfaWQsIGF0dHJfaWQsDQo+ID4gLQkJCQkJICAgICAgIGF0dHJf dmFsdWUpOw0KPiA+ICsJcmV0dXJuIGRldi0+ZGV2X29wcy0+cXVldWVfYXR0cl9zZXQoZGV2LCBx dWV1ZV9pZCwgYXR0cl9pZCwNCj4gPiArYXR0cl92YWx1ZSk7DQo+ID4gIH0NCj4gPg0KPiA+ICBp bnQNCj4gPiBAQCAtMTAwNywyMyArOTk3LDIzIEBAIHJ0ZV9ldmVudF9wb3J0X3Byb2ZpbGVfbGlu a3Nfc2V0KHVpbnQ4X3QNCj4gZGV2X2lkLA0KPiA+IHVpbnQ4X3QgcG9ydF9pZCwgY29uc3QgdWlu dDhfdA0KPiA+ICAJUlRFX0VWRU5UREVWX1ZBTElEX0RFVklEX09SX0VSUk5PX1JFVChkZXZfaWQs IEVJTlZBTCwgMCk7DQo+ID4gIAlkZXYgPSAmcnRlX2V2ZW50ZGV2c1tkZXZfaWRdOw0KPiA+DQo+ ID4gLQlpZiAoKmRldi0+ZGV2X29wcy0+ZGV2X2luZm9zX2dldCA9PSBOVUxMKQ0KPiA+ICsJaWYg KGRldi0+ZGV2X29wcy0+ZGV2X2luZm9zX2dldCA9PSBOVUxMKQ0KPiA+ICAJCXJldHVybiAtRU5P VFNVUDsNCj4gPg0KPiA+IC0JKCpkZXYtPmRldl9vcHMtPmRldl9pbmZvc19nZXQpKGRldiwgJmlu Zm8pOw0KPiA+ICsJZGV2LT5kZXZfb3BzLT5kZXZfaW5mb3NfZ2V0KGRldiwgJmluZm8pOw0KPiA+ ICAJaWYgKHByb2ZpbGVfaWQgPj0gUlRFX0VWRU5UX01BWF9QUk9GSUxFU19QRVJfUE9SVCB8fA0K PiA+ICAJICAgIHByb2ZpbGVfaWQgPj0gaW5mby5tYXhfcHJvZmlsZXNfcGVyX3BvcnQpIHsNCj4g PiAgCQlSVEVfRURFVl9MT0dfRVJSKCJJbnZhbGlkIHByb2ZpbGVfaWQ9JSIgUFJJdTgsIHByb2Zp bGVfaWQpOw0KPiA+ICAJCXJldHVybiAtRUlOVkFMOw0KPiA+ICAJfQ0KPiA+DQo+ID4gLQlpZiAo KmRldi0+ZGV2X29wcy0+cG9ydF9saW5rID09IE5VTEwpIHsNCj4gPiArCWlmIChkZXYtPmRldl9v cHMtPnBvcnRfbGluayA9PSBOVUxMKSB7DQo+ID4gIAkJUlRFX0VERVZfTE9HX0VSUigiRnVuY3Rp b24gbm90IHN1cHBvcnRlZCIpOw0KPiA+ICAJCXJ0ZV9lcnJubyA9IEVOT1RTVVA7DQo+ID4gIAkJ cmV0dXJuIDA7DQo+ID4gIAl9DQo+ID4NCj4gPiAtCWlmIChwcm9maWxlX2lkICYmICpkZXYtPmRl dl9vcHMtPnBvcnRfbGlua19wcm9maWxlID09IE5VTEwpIHsNCj4gPiArCWlmIChwcm9maWxlX2lk ICYmIGRldi0+ZGV2X29wcy0+cG9ydF9saW5rX3Byb2ZpbGUgPT0gTlVMTCkgew0KPiA+ICAJCVJU RV9FREVWX0xPR19FUlIoIkZ1bmN0aW9uIG5vdCBzdXBwb3J0ZWQiKTsNCj4gPiAgCQlydGVfZXJy bm8gPSBFTk9UU1VQOw0KPiA+ICAJCXJldHVybiAwOw0KPiA+IEBAIC0xMDU3LDExICsxMDQ3LDEx IEBAIHJ0ZV9ldmVudF9wb3J0X3Byb2ZpbGVfbGlua3Nfc2V0KHVpbnQ4X3QNCj4gZGV2X2lkLA0K PiA+IHVpbnQ4X3QgcG9ydF9pZCwgY29uc3QgdWludDhfdA0KPiA+ICAJCX0NCj4gPg0KPiA+ICAJ aWYgKHByb2ZpbGVfaWQpDQo+ID4gLQkJZGlhZyA9ICgqZGV2LT5kZXZfb3BzLT5wb3J0X2xpbmtf cHJvZmlsZSkoZGV2LCBkZXYtPmRhdGEtDQo+ID4gPnBvcnRzW3BvcnRfaWRdLCBxdWV1ZXMsDQo+ ID4gLQkJCQkJCQkgIHByaW9yaXRpZXMsIG5iX2xpbmtzLA0KPiA+IHByb2ZpbGVfaWQpOw0KPiA+ ICsJCWRpYWcgPSBkZXYtPmRldl9vcHMtPnBvcnRfbGlua19wcm9maWxlKGRldiwgZGV2LT5kYXRh LQ0KPiA+ID5wb3J0c1twb3J0X2lkXSwgcXVldWVzLA0KPiA+ICsJCQkJCQkgICAgICAgcHJpb3Jp dGllcywgbmJfbGlua3MsDQo+ID4gcHJvZmlsZV9pZCk7DQo+ID4gIAllbHNlDQo+ID4gLQkJZGlh ZyA9ICgqZGV2LT5kZXZfb3BzLT5wb3J0X2xpbmspKGRldiwgZGV2LT5kYXRhLQ0KPiA+ID5wb3J0 c1twb3J0X2lkXSwgcXVldWVzLA0KPiA+IC0JCQkJCQkgIHByaW9yaXRpZXMsIG5iX2xpbmtzKTsN Cj4gPiArCQlkaWFnID0gZGV2LT5kZXZfb3BzLT5wb3J0X2xpbmsoZGV2LCBkZXYtPmRhdGEtDQo+ ID5wb3J0c1twb3J0X2lkXSwNCj4gPiBxdWV1ZXMsDQo+ID4gKwkJCQkJICAgICAgIHByaW9yaXRp ZXMsIG5iX2xpbmtzKTsNCj4gPiAgCWlmIChkaWFnIDwgMCkNCj4gPiAgCQlyZXR1cm4gZGlhZzsN Cj4gPg0KPiA+IEBAIC0xMDk1LDIzICsxMDg1LDIzIEBAIHJ0ZV9ldmVudF9wb3J0X3Byb2ZpbGVf dW5saW5rKHVpbnQ4X3QgZGV2X2lkLA0KPiA+IHVpbnQ4X3QgcG9ydF9pZCwgdWludDhfdCBxdWV1 ZXNbXSwNCj4gPiAgCVJURV9FVkVOVERFVl9WQUxJRF9ERVZJRF9PUl9FUlJOT19SRVQoZGV2X2lk LCBFSU5WQUwsIDApOw0KPiA+ICAJZGV2ID0gJnJ0ZV9ldmVudGRldnNbZGV2X2lkXTsNCj4gPg0K PiA+IC0JaWYgKCpkZXYtPmRldl9vcHMtPmRldl9pbmZvc19nZXQgPT0gTlVMTCkNCj4gPiArCWlm IChkZXYtPmRldl9vcHMtPmRldl9pbmZvc19nZXQgPT0gTlVMTCkNCj4gPiAgCQlyZXR1cm4gLUVO T1RTVVA7DQo+ID4NCj4gPiAtCSgqZGV2LT5kZXZfb3BzLT5kZXZfaW5mb3NfZ2V0KShkZXYsICZp bmZvKTsNCj4gPiArCWRldi0+ZGV2X29wcy0+ZGV2X2luZm9zX2dldChkZXYsICZpbmZvKTsNCj4g PiAgCWlmIChwcm9maWxlX2lkID49IFJURV9FVkVOVF9NQVhfUFJPRklMRVNfUEVSX1BPUlQgfHwN Cj4gPiAgCSAgICBwcm9maWxlX2lkID49IGluZm8ubWF4X3Byb2ZpbGVzX3Blcl9wb3J0KSB7DQo+ ID4gIAkJUlRFX0VERVZfTE9HX0VSUigiSW52YWxpZCBwcm9maWxlX2lkPSUiIFBSSXU4LCBwcm9m aWxlX2lkKTsNCj4gPiAgCQlyZXR1cm4gLUVJTlZBTDsNCj4gPiAgCX0NCj4gPg0KPiA+IC0JaWYg KCpkZXYtPmRldl9vcHMtPnBvcnRfdW5saW5rID09IE5VTEwpIHsNCj4gPiArCWlmIChkZXYtPmRl dl9vcHMtPnBvcnRfdW5saW5rID09IE5VTEwpIHsNCj4gPiAgCQlSVEVfRURFVl9MT0dfRVJSKCJG dW5jdGlvbiBub3Qgc3VwcG9ydGVkIik7DQo+ID4gIAkJcnRlX2Vycm5vID0gRU5PVFNVUDsNCj4g PiAgCQlyZXR1cm4gMDsNCj4gPiAgCX0NCj4gPg0KPiA+IC0JaWYgKHByb2ZpbGVfaWQgJiYgKmRl di0+ZGV2X29wcy0+cG9ydF91bmxpbmtfcHJvZmlsZSA9PSBOVUxMKSB7DQo+ID4gKwlpZiAocHJv ZmlsZV9pZCAmJiBkZXYtPmRldl9vcHMtPnBvcnRfdW5saW5rX3Byb2ZpbGUgPT0gTlVMTCkgew0K PiA+ICAJCVJURV9FREVWX0xPR19FUlIoIkZ1bmN0aW9uIG5vdCBzdXBwb3J0ZWQiKTsNCj4gPiAg CQlydGVfZXJybm8gPSBFTk9UU1VQOw0KPiA+ICAJCXJldHVybiAwOw0KPiA+IEBAIC0xMTUzLDEx ICsxMTQzLDExIEBAIHJ0ZV9ldmVudF9wb3J0X3Byb2ZpbGVfdW5saW5rKHVpbnQ4X3QgZGV2X2lk LA0KPiA+IHVpbnQ4X3QgcG9ydF9pZCwgdWludDhfdCBxdWV1ZXNbXSwNCj4gPiAgCQl9DQo+ID4N Cj4gPiAgCWlmIChwcm9maWxlX2lkKQ0KPiA+IC0JCWRpYWcgPSAoKmRldi0+ZGV2X29wcy0+cG9y dF91bmxpbmtfcHJvZmlsZSkoZGV2LCBkZXYtPmRhdGEtDQo+ID4gPnBvcnRzW3BvcnRfaWRdLCBx dWV1ZXMsDQo+ID4gLQkJCQkJCQkgICAgbmJfdW5saW5rcywNCj4gPiBwcm9maWxlX2lkKTsNCj4g PiArCQlkaWFnID0gZGV2LT5kZXZfb3BzLT5wb3J0X3VubGlua19wcm9maWxlKGRldiwgZGV2LT5k YXRhLQ0KPiA+ID5wb3J0c1twb3J0X2lkXSwgcXVldWVzLA0KPiA+ICsJCQkJCQkJIG5iX3VubGlu a3MsDQo+ID4gcHJvZmlsZV9pZCk7DQo+ID4gIAllbHNlDQo+ID4gLQkJZGlhZyA9ICgqZGV2LT5k ZXZfb3BzLT5wb3J0X3VubGluaykoZGV2LCBkZXYtPmRhdGEtDQo+ID4gPnBvcnRzW3BvcnRfaWRd LCBxdWV1ZXMsDQo+ID4gLQkJCQkJCSAgICBuYl91bmxpbmtzKTsNCj4gPiArCQlkaWFnID0gZGV2 LT5kZXZfb3BzLT5wb3J0X3VubGluayhkZXYsIGRldi0+ZGF0YS0NCj4gPiA+cG9ydHNbcG9ydF9p ZF0sIHF1ZXVlcywNCj4gPiArCQkJCQkJIG5iX3VubGlua3MpOw0KPiA+ICAJaWYgKGRpYWcgPCAw KQ0KPiA+ICAJCXJldHVybiBkaWFnOw0KPiA+DQo+ID4gQEAgLTExODYsMTEgKzExNzYsMTAgQEAg cnRlX2V2ZW50X3BvcnRfdW5saW5rc19pbl9wcm9ncmVzcyh1aW50OF90DQo+ID4gZGV2X2lkLCB1 aW50OF90IHBvcnRfaWQpDQo+ID4gIAkgKiBUaGlzIGFsbG93cyBQTURzIHdoaWNoIGhhbmRsZSB1 bmxpbmsgc3luY2hyb25vdXNseSB0byBub3QNCj4gPiBpbXBsZW1lbnQNCj4gPiAgCSAqIHRoaXMg ZnVuY3Rpb24gYXQgYWxsLg0KPiA+ICAJICovDQo+ID4gLQlpZiAoKmRldi0+ZGV2X29wcy0+cG9y dF91bmxpbmtzX2luX3Byb2dyZXNzID09IE5VTEwpDQo+ID4gKwlpZiAoZGV2LT5kZXZfb3BzLT5w b3J0X3VubGlua3NfaW5fcHJvZ3Jlc3MgPT0gTlVMTCkNCj4gPiAgCQlyZXR1cm4gMDsNCj4gPg0K PiA+IC0JcmV0dXJuICgqZGV2LT5kZXZfb3BzLT5wb3J0X3VubGlua3NfaW5fcHJvZ3Jlc3MpKGRl diwNCj4gPiAtCQkJZGV2LT5kYXRhLT5wb3J0c1twb3J0X2lkXSk7DQo+ID4gKwlyZXR1cm4gZGV2 LT5kZXZfb3BzLT5wb3J0X3VubGlua3NfaW5fcHJvZ3Jlc3MoZGV2LA0KPiA+ICtkZXYtPmRhdGEt PnBvcnRzW3BvcnRfaWRdKTsNCj4gPiAgfQ0KPiA+DQo+ID4gIGludA0KPiA+IEBAIC0xMjM3LDEw ICsxMjI2LDEwIEBAIHJ0ZV9ldmVudF9wb3J0X3Byb2ZpbGVfbGlua3NfZ2V0KHVpbnQ4X3QNCj4g ZGV2X2lkLA0KPiA+IHVpbnQ4X3QgcG9ydF9pZCwgdWludDhfdCBxdWV1ZXMNCj4gPiAgCVJURV9F VkVOVERFVl9WQUxJRF9ERVZJRF9PUl9FUlJfUkVUKGRldl9pZCwgLUVJTlZBTCk7DQo+ID4NCj4g PiAgCWRldiA9ICZydGVfZXZlbnRkZXZzW2Rldl9pZF07DQo+ID4gLQlpZiAoKmRldi0+ZGV2X29w cy0+ZGV2X2luZm9zX2dldCA9PSBOVUxMKQ0KPiA+ICsJaWYgKGRldi0+ZGV2X29wcy0+ZGV2X2lu Zm9zX2dldCA9PSBOVUxMKQ0KPiA+ICAJCXJldHVybiAtRU5PVFNVUDsNCj4gPg0KPiA+IC0JKCpk ZXYtPmRldl9vcHMtPmRldl9pbmZvc19nZXQpKGRldiwgJmluZm8pOw0KPiA+ICsJZGV2LT5kZXZf b3BzLT5kZXZfaW5mb3NfZ2V0KGRldiwgJmluZm8pOw0KPiA+ICAJaWYgKHByb2ZpbGVfaWQgPj0g UlRFX0VWRU5UX01BWF9QUk9GSUxFU19QRVJfUE9SVCB8fA0KPiA+ICAJICAgIHByb2ZpbGVfaWQg Pj0gaW5mby5tYXhfcHJvZmlsZXNfcGVyX3BvcnQpIHsNCj4gPiAgCQlSVEVfRURFVl9MT0dfRVJS KCJJbnZhbGlkIHByb2ZpbGVfaWQ9JSIgUFJJdTgsIHByb2ZpbGVfaWQpOw0KPiA+IEBAIC0xMjc4 LDEzICsxMjY3LDEzIEBAIHJ0ZV9ldmVudF9kZXF1ZXVlX3RpbWVvdXRfdGlja3ModWludDhfdA0K PiBkZXZfaWQsDQo+ID4gdWludDY0X3QgbnMsDQo+ID4NCj4gPiAgCVJURV9FVkVOVERFVl9WQUxJ RF9ERVZJRF9PUl9FUlJfUkVUKGRldl9pZCwgLUVJTlZBTCk7DQo+ID4gIAlkZXYgPSAmcnRlX2V2 ZW50ZGV2c1tkZXZfaWRdOw0KPiA+IC0JaWYgKCpkZXYtPmRldl9vcHMtPnRpbWVvdXRfdGlja3Mg PT0gTlVMTCkNCj4gPiArCWlmIChkZXYtPmRldl9vcHMtPnRpbWVvdXRfdGlja3MgPT0gTlVMTCkN Cj4gPiAgCQlyZXR1cm4gLUVOT1RTVVA7DQo+ID4NCj4gPiAgCWlmICh0aW1lb3V0X3RpY2tzID09 IE5VTEwpDQo+ID4gIAkJcmV0dXJuIC1FSU5WQUw7DQo+ID4NCj4gPiAtCXJldHVybiAoKmRldi0+ ZGV2X29wcy0+dGltZW91dF90aWNrcykoZGV2LCBucywgdGltZW91dF90aWNrcyk7DQo+ID4gKwly ZXR1cm4gZGV2LT5kZXZfb3BzLT50aW1lb3V0X3RpY2tzKGRldiwgbnMsIHRpbWVvdXRfdGlja3Mp Ow0KPiA+ICB9DQo+ID4NCj4gPiAgaW50DQo+ID4gQEAgLTEzMTMsMTIgKzEzMDIsMTIgQEAgcnRl X2V2ZW50X2Rldl9kdW1wKHVpbnQ4X3QgZGV2X2lkLCBGSUxFICpmKQ0KPiA+DQo+ID4gIAlSVEVf RVZFTlRERVZfVkFMSURfREVWSURfT1JfRVJSX1JFVChkZXZfaWQsIC1FSU5WQUwpOw0KPiA+ICAJ ZGV2ID0gJnJ0ZV9ldmVudGRldnNbZGV2X2lkXTsNCj4gPiAtCWlmICgqZGV2LT5kZXZfb3BzLT5k dW1wID09IE5VTEwpDQo+ID4gKwlpZiAoZGV2LT5kZXZfb3BzLT5kdW1wID09IE5VTEwpDQo+ID4g IAkJcmV0dXJuIC1FTk9UU1VQOw0KPiA+ICAJaWYgKGYgPT0gTlVMTCkNCj4gPiAgCQlyZXR1cm4g LUVJTlZBTDsNCj4gPg0KPiA+IC0JKCpkZXYtPmRldl9vcHMtPmR1bXApKGRldiwgZik7DQo+ID4g KwlkZXYtPmRldl9vcHMtPmR1bXAoZGV2LCBmKTsNCj4gPiAgCXJldHVybiAwOw0KPiA+DQo+ID4g IH0NCj4gPiBAQCAtMTMyOSw5ICsxMzE4LDcgQEAgeHN0YXRzX2dldF9jb3VudCh1aW50OF90IGRl dl9pZCwgZW51bQ0KPiA+IHJ0ZV9ldmVudF9kZXZfeHN0YXRzX21vZGUgbW9kZSwgIHsNCj4gPiAg CXN0cnVjdCBydGVfZXZlbnRkZXYgKmRldiA9ICZydGVfZXZlbnRkZXZzW2Rldl9pZF07DQo+ID4g IAlpZiAoZGV2LT5kZXZfb3BzLT54c3RhdHNfZ2V0X25hbWVzICE9IE5VTEwpDQo+ID4gLQkJcmV0 dXJuICgqZGV2LT5kZXZfb3BzLT54c3RhdHNfZ2V0X25hbWVzKShkZXYsIG1vZGUsDQo+ID4gLQkJ CQkJCQlxdWV1ZV9wb3J0X2lkLA0KPiA+IC0JCQkJCQkJTlVMTCwgTlVMTCwgMCk7DQo+ID4gKwkJ cmV0dXJuIGRldi0+ZGV2X29wcy0+eHN0YXRzX2dldF9uYW1lcyhkZXYsIG1vZGUsDQo+ID4gcXVl dWVfcG9ydF9pZCwgTlVMTCwNCj4gPiArTlVMTCwgMCk7DQo+ID4gIAlyZXR1cm4gMDsNCj4gPiAg fQ0KPiA+DQo+ID4gQEAgLTEzNTIsOCArMTMzOSw4IEBAIHJ0ZV9ldmVudF9kZXZfeHN0YXRzX25h bWVzX2dldCh1aW50OF90DQo+IGRldl9pZCwNCj4gPiAgCWNvbnN0IHN0cnVjdCBydGVfZXZlbnRk ZXYgKmRldiA9ICZydGVfZXZlbnRkZXZzW2Rldl9pZF07DQo+ID4NCj4gPiAgCWlmIChkZXYtPmRl dl9vcHMtPnhzdGF0c19nZXRfbmFtZXMgIT0gTlVMTCkNCj4gPiAtCQlyZXR1cm4gKCpkZXYtPmRl dl9vcHMtPnhzdGF0c19nZXRfbmFtZXMpKGRldiwgbW9kZSwNCj4gPiAtCQkJCXF1ZXVlX3BvcnRf aWQsIHhzdGF0c19uYW1lcywgaWRzLCBzaXplKTsNCj4gPiArCQlyZXR1cm4gZGV2LT5kZXZfb3Bz LT54c3RhdHNfZ2V0X25hbWVzKGRldiwgbW9kZSwNCj4gPiBxdWV1ZV9wb3J0X2lkLA0KPiA+ICsJ CQkJCQkgICAgICB4c3RhdHNfbmFtZXMsIGlkcywgc2l6ZSk7DQo+ID4NCj4gPiAgCXJldHVybiAt RU5PVFNVUDsNCj4gPiAgfQ0KPiA+IEBAIC0xMzY5LDggKzEzNTYsOCBAQCBydGVfZXZlbnRfZGV2 X3hzdGF0c19nZXQodWludDhfdCBkZXZfaWQsIGVudW0NCj4gPiBydGVfZXZlbnRfZGV2X3hzdGF0 c19tb2RlIG1vZGUsDQo+ID4NCj4gPiAgCS8qIGltcGxlbWVudGVkIGJ5IHRoZSBkcml2ZXIgKi8N Cj4gPiAgCWlmIChkZXYtPmRldl9vcHMtPnhzdGF0c19nZXQgIT0gTlVMTCkNCj4gPiAtCQlyZXR1 cm4gKCpkZXYtPmRldl9vcHMtPnhzdGF0c19nZXQpKGRldiwgbW9kZSwNCj4gcXVldWVfcG9ydF9p ZCwNCj4gPiAtCQkJCWlkcywgdmFsdWVzLCBuKTsNCj4gPiArCQlyZXR1cm4gZGV2LT5kZXZfb3Bz LT54c3RhdHNfZ2V0KGRldiwgbW9kZSwgcXVldWVfcG9ydF9pZCwNCj4gPiArCQkJCQkJaWRzLCB2 YWx1ZXMsIG4pOw0KPiA+ICAJcmV0dXJuIC1FTk9UU1VQOw0KPiA+ICB9DQo+ID4NCj4gPiBAQCAt MTM4OSw3ICsxMzc2LDcgQEAgcnRlX2V2ZW50X2Rldl94c3RhdHNfYnlfbmFtZV9nZXQodWludDhf dA0KPiBkZXZfaWQsDQo+ID4gY29uc3QgY2hhciAqbmFtZSwNCj4gPg0KPiA+ICAJLyogaW1wbGVt ZW50ZWQgYnkgZHJpdmVyICovDQo+ID4gIAlpZiAoZGV2LT5kZXZfb3BzLT54c3RhdHNfZ2V0X2J5 X25hbWUgIT0gTlVMTCkNCj4gPiAtCQlyZXR1cm4gKCpkZXYtPmRldl9vcHMtPnhzdGF0c19nZXRf YnlfbmFtZSkoZGV2LCBuYW1lLCBpZCk7DQo+ID4gKwkJcmV0dXJuIGRldi0+ZGV2X29wcy0+eHN0 YXRzX2dldF9ieV9uYW1lKGRldiwgbmFtZSwgaWQpOw0KPiA+ICAJcmV0dXJuIC1FTk9UU1VQOw0K PiA+ICB9DQo+ID4NCj4gPiBAQCAtMTQwMSw4ICsxMzg4LDcgQEAgaW50IHJ0ZV9ldmVudF9kZXZf eHN0YXRzX3Jlc2V0KHVpbnQ4X3QgZGV2X2lkLA0KPiA+ICAJc3RydWN0IHJ0ZV9ldmVudGRldiAq ZGV2ID0gJnJ0ZV9ldmVudGRldnNbZGV2X2lkXTsNCj4gPg0KPiA+ICAJaWYgKGRldi0+ZGV2X29w cy0+eHN0YXRzX3Jlc2V0ICE9IE5VTEwpDQo+ID4gLQkJcmV0dXJuICgqZGV2LT5kZXZfb3BzLT54 c3RhdHNfcmVzZXQpKGRldiwgbW9kZSwNCj4gPiBxdWV1ZV9wb3J0X2lkLA0KPiA+IC0JCQkJCQkJ aWRzLCBuYl9pZHMpOw0KPiA+ICsJCXJldHVybiBkZXYtPmRldl9vcHMtPnhzdGF0c19yZXNldChk ZXYsIG1vZGUsDQo+IHF1ZXVlX3BvcnRfaWQsDQo+ID4gaWRzLA0KPiA+ICtuYl9pZHMpOw0KPiA+ ICAJcmV0dXJuIC1FTk9UU1VQOw0KPiA+ICB9DQo+ID4NCj4gPiBAQCAtMTQyMyw3ICsxNDA5LDcg QEAgaW50IHJ0ZV9ldmVudF9kZXZfc2VsZnRlc3QodWludDhfdCBkZXZfaWQpDQo+ID4NCj4gPiAJ cnRlX21idWZfZHluZmllbGRfcmVnaXN0ZXIoJnRlc3Rfc2Vxbl9keW5maWVsZF9kZXNjKTsNCj4g PiAgCQlpZiAocnRlX2V2ZW50X3BtZF9zZWxmdGVzdF9zZXFuX2R5bmZpZWxkX29mZnNldCA8IDAp DQo+ID4gIAkJCXJldHVybiAtRU5PTUVNOw0KPiA+IC0JCXJldHVybiAoKmRldi0+ZGV2X29wcy0+ ZGV2X3NlbGZ0ZXN0KSgpOw0KPiA+ICsJCXJldHVybiBkZXYtPmRldl9vcHMtPmRldl9zZWxmdGVz dCgpOw0KPiA+ICAJfQ0KPiA+ICAJcmV0dXJuIC1FTk9UU1VQOw0KPiA+ICB9DQo+ID4gQEAgLTE0 ODMsNyArMTQ2OSw3IEBAIHJ0ZV9ldmVudF9kZXZfc3RhcnQodWludDhfdCBkZXZfaWQpDQo+ID4N Cj4gPiAgCVJURV9FVkVOVERFVl9WQUxJRF9ERVZJRF9PUl9FUlJfUkVUKGRldl9pZCwgLUVJTlZB TCk7DQo+ID4gIAlkZXYgPSAmcnRlX2V2ZW50ZGV2c1tkZXZfaWRdOw0KPiA+IC0JaWYgKCpkZXYt PmRldl9vcHMtPmRldl9zdGFydCA9PSBOVUxMKQ0KPiA+ICsJaWYgKGRldi0+ZGV2X29wcy0+ZGV2 X3N0YXJ0ID09IE5VTEwpDQo+ID4gIAkJcmV0dXJuIC1FTk9UU1VQOw0KPiA+DQo+ID4gIAlpZiAo ZGV2LT5kYXRhLT5kZXZfc3RhcnRlZCAhPSAwKSB7DQo+ID4gQEAgLTE0OTIsNyArMTQ3OCw3IEBA IHJ0ZV9ldmVudF9kZXZfc3RhcnQodWludDhfdCBkZXZfaWQpDQo+ID4gIAkJcmV0dXJuIDA7DQo+ ID4gIAl9DQo+ID4NCj4gPiAtCWRpYWcgPSAoKmRldi0+ZGV2X29wcy0+ZGV2X3N0YXJ0KShkZXYp Ow0KPiA+ICsJZGlhZyA9IChkZXYtPmRldl9vcHMtPmRldl9zdGFydCkoZGV2KTsNCj4gPiAgCXJ0 ZV9ldmVudGRldl90cmFjZV9zdGFydChkZXZfaWQsIGRpYWcpOw0KPiA+ICAJaWYgKGRpYWcgPT0g MCkNCj4gPiAgCQlkZXYtPmRhdGEtPmRldl9zdGFydGVkID0gMTsNCj4gPiBAQCAtMTUzMyw3ICsx NTE5LDcgQEAgcnRlX2V2ZW50X2Rldl9zdG9wKHVpbnQ4X3QgZGV2X2lkKQ0KPiA+DQo+ID4gIAlS VEVfRVZFTlRERVZfVkFMSURfREVWSURfT1JfUkVUKGRldl9pZCk7DQo+ID4gIAlkZXYgPSAmcnRl X2V2ZW50ZGV2c1tkZXZfaWRdOw0KPiA+IC0JaWYgKCpkZXYtPmRldl9vcHMtPmRldl9zdG9wID09 IE5VTEwpDQo+ID4gKwlpZiAoZGV2LT5kZXZfb3BzLT5kZXZfc3RvcCA9PSBOVUxMKQ0KPiA+ICAJ CXJldHVybjsNCj4gPg0KPiA+ICAJaWYgKGRldi0+ZGF0YS0+ZGV2X3N0YXJ0ZWQgPT0gMCkgew0K PiA+IEBAIC0xNTQzLDcgKzE1MjksNyBAQCBydGVfZXZlbnRfZGV2X3N0b3AodWludDhfdCBkZXZf aWQpDQo+ID4gIAl9DQo+ID4NCj4gPiAgCWRldi0+ZGF0YS0+ZGV2X3N0YXJ0ZWQgPSAwOw0KPiA+ IC0JKCpkZXYtPmRldl9vcHMtPmRldl9zdG9wKShkZXYpOw0KPiA+ICsJZGV2LT5kZXZfb3BzLT5k ZXZfc3RvcChkZXYpOw0KPiA+ICAJcnRlX2V2ZW50ZGV2X3RyYWNlX3N0b3AoZGV2X2lkKTsNCj4g PiAgCWV2ZW50X2Rldl9mcF9vcHNfcmVzZXQocnRlX2V2ZW50X2ZwX29wcyArIGRldl9pZCk7ICB9 IEBAIC0xNTU1LDcNCj4gPiArMTU0MSw3IEBAIHJ0ZV9ldmVudF9kZXZfY2xvc2UodWludDhfdCBk ZXZfaWQpDQo+ID4NCj4gPiAgCVJURV9FVkVOVERFVl9WQUxJRF9ERVZJRF9PUl9FUlJfUkVUKGRl dl9pZCwgLUVJTlZBTCk7DQo+ID4gIAlkZXYgPSAmcnRlX2V2ZW50ZGV2c1tkZXZfaWRdOw0KPiA+ IC0JaWYgKCpkZXYtPmRldl9vcHMtPmRldl9jbG9zZSA9PSBOVUxMKQ0KPiA+ICsJaWYgKGRldi0+ ZGV2X29wcy0+ZGV2X2Nsb3NlID09IE5VTEwpDQo+ID4gIAkJcmV0dXJuIC1FTk9UU1VQOw0KPiA+ DQo+ID4gIAkvKiBEZXZpY2UgbXVzdCBiZSBzdG9wcGVkIGJlZm9yZSBpdCBjYW4gYmUgY2xvc2Vk ICovIEBAIC0xNTY3LDcNCj4gPiArMTU1Myw3IEBAIHJ0ZV9ldmVudF9kZXZfY2xvc2UodWludDhf dCBkZXZfaWQpDQo+ID4NCj4gPiAgCWV2ZW50X2Rldl9mcF9vcHNfcmVzZXQocnRlX2V2ZW50X2Zw X29wcyArIGRldl9pZCk7DQo+ID4gIAlydGVfZXZlbnRkZXZfdHJhY2VfY2xvc2UoZGV2X2lkKTsN Cj4gPiAtCXJldHVybiAoKmRldi0+ZGV2X29wcy0+ZGV2X2Nsb3NlKShkZXYpOw0KPiA+ICsJcmV0 dXJuIGRldi0+ZGV2X29wcy0+ZGV2X2Nsb3NlKGRldik7DQo+ID4gIH0NCj4gPg0KPiA+ICBzdGF0 aWMgaW5saW5lIGludA0KPiA+IC0tDQo+ID4gMi40Ny4yDQoNCg==