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 2716FA0C4C; Mon, 4 Oct 2021 10:51:45 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id A565F412E8; Mon, 4 Oct 2021 10:51:44 +0200 (CEST) Received: from mx0b-0016f401.pphosted.com (mx0a-0016f401.pphosted.com [67.231.148.174]) by mails.dpdk.org (Postfix) with ESMTP id 8612F412E6 for ; Mon, 4 Oct 2021 10:51:42 +0200 (CEST) Received: from pps.filterd (m0045849.ppops.net [127.0.0.1]) by mx0a-0016f401.pphosted.com (8.16.1.2/8.16.1.2) with SMTP id 194193eU032628; Mon, 4 Oct 2021 01:51:39 -0700 Received: from nam02-bn1-obe.outbound.protection.outlook.com (mail-bn1nam07lp2044.outbound.protection.outlook.com [104.47.51.44]) by mx0a-0016f401.pphosted.com with ESMTP id 3bfqptrxyp-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 04 Oct 2021 01:51:39 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Yk6n4tvW9HAB5vfGQIR8YzBHCzeQjgKKNqupZ9G7cGgocyQcALImn8fMUNngzW6RtmnUUvPq4rqbuPr5TPDehWFd0LMe31KaSQyYTfxS+RM7nJq6Z8lzIMo0kq83QTCG+koI0MAUIDmzj2FiB/mggFAFrxNXYDWkK3FIoKyHdjCuJbVtA1SsciwHhMX5GcuN2IR1xKIZXIJNZKMzE6GJhrtr96EAzQ/R6ntfqvb7tyQRbYA7UTW7lDUkIEx5QP44p3C6btzWc48n+LIRtSaJQ5sdL3+r6030b+tFuk5POlcpXsI5MRPKOhDOJisC3wjiehPoinnBes8LOdvqIQSJ0Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=q7SB1Qa53igttLGSM2yxy5WhWEpFxhtGJuqj+UEhUFM=; b=RSLF1mpc9qdzs+11jD5uIVdY/aUMW55ueZ6EG7rXMbcbOm47bpx6YquAUQ4CRuZ8kiL6ObSm5ANm/BShXRQd8cmveqSjnrndJtlsiS5DwGXyLDrUgusr/X9UTKLhnrb4GHFUksfjv8Cb212k1yWXfum/LyomxdYMeckx/7w4EuiA+dCNGL4Fo/Ydl2MUsV1cKqiAnjCpgIHjpP9PdcGgh48nUQw1KszlaIC9SmrEyQu8WRq5JSCr0ppYXuKF6Gyv7DLMgkVkxTePKn9VtMmeiZRxW4wQqz7uv/ZCCK8dRDqxHluLTtRN7jrcPy6YPt/GEw8c5ngWqhEwJhqs/8h44Q== 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=q7SB1Qa53igttLGSM2yxy5WhWEpFxhtGJuqj+UEhUFM=; b=Z/ZJRlTvTpZq27GDrKTDe++dDsI7QbGNy/3M3JZ52eMx2M9y2U0iliD3H6WQQYGJULplee9yHGC6V+voP3DHTefLSyIHaf8Z/ghVvHSiOFAzBe3hKkoYi4ZQUpf+Iz5/I7GdZ9MWWTUnBoSM7qlb4uKKv9Oq2aMCgZnQwYadYg4= Received: from BN9PR18MB4204.namprd18.prod.outlook.com (2603:10b6:408:119::18) by BN8PR18MB2484.namprd18.prod.outlook.com (2603:10b6:408:6b::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4566.14; Mon, 4 Oct 2021 08:51:36 +0000 Received: from BN9PR18MB4204.namprd18.prod.outlook.com ([fe80::29f4:8e3d:264f:26b1]) by BN9PR18MB4204.namprd18.prod.outlook.com ([fe80::29f4:8e3d:264f:26b1%7]) with mapi id 15.20.4566.022; Mon, 4 Oct 2021 08:51:36 +0000 From: Harman Kalra To: David Marchand CC: dev , Ray Kinsella Thread-Topic: [EXT] Re: [dpdk-dev] [PATCH v1 2/7] eal/interrupts: implement get set APIs Thread-Index: AQHXoMEXRUmGnDOfBEuyfrELGqzD26u5voqAgAjyH0A= Date: Mon, 4 Oct 2021 08:51:36 +0000 Message-ID: References: <20210826145726.102081-1-hkalra@marvell.com> <20210903124102.47425-1-hkalra@marvell.com> <20210903124102.47425-3-hkalra@marvell.com> In-Reply-To: Accept-Language: en-GB, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: d411b259-4010-4db9-2424-08d987142c8e x-ms-traffictypediagnostic: BN8PR18MB2484: x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:644; x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: cNqZZMC9dzKC+nLocbY5J+h808S0wNNgyAilFJ6NtktnofT8Mx2QFmDJ/6rbnmYpCEOmm38SBn2erxW+OKRQoW10k3wiGzpRbQVmecSvT7dl/DrpQ5uRqFFT+4vQc7fMrACWZkfLanHJgpPfex47OxrOLWigPwhp394MiV1Y/k/AT5yVJsEwDIdh/Mhk5iO4Mfhb3kYqgXQES20+12aDYVP6des9pz3EqSZtBxIwD8POmhAQrEDOVgPMUCJVf3vGCnUE1bLUa1V0YnBA/y556XRvp8/+sBJ0UiyA/KgQCbuoey+D/o1y4gsoc4I5fA5zFhjsbd3OiGNm9inSj1kO4wwyizTO1OmjcHbYViEYjEaf8ZQaW5t49AFb5wf7DHUrK7LsDrn17sQCqy9jXOZcU6aEP9FF2r6Sll43niIMPJU7EE2vdXzmkgdfjEY1+lT7aVH1QRGL69o8vCUoSIMKNK1u7gd106TDLGi+4jht5jlE6/v6pUhhz77LemwtPLDQsl+iuvVXvfJgLA+eLjvhMVhXntw1Vu7S8JO9vdqVACcH04kZPEA3tBtQE6eOkExLSTm8SHvvyovpt8+IcNDrDUEBQNlU9CLHRwstJF8ZHb9ZRc/USbXQ4s1RXE8OgZp1e14YnSYMm2K9kgTATTzqhICLo4onIQ8jzTsHTTC0z5S9sbWnFGRL5qW51PNNX6h0RZbhDSS33imiRJHX1oNOnA== x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:BN9PR18MB4204.namprd18.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(366004)(55016002)(33656002)(53546011)(5660300002)(6506007)(83380400001)(186003)(66476007)(8676002)(66446008)(66556008)(8936002)(76116006)(38070700005)(2906002)(9686003)(7696005)(64756008)(52536014)(66946007)(26005)(30864003)(508600001)(86362001)(38100700002)(54906003)(6916009)(4326008)(71200400001)(316002)(122000001)(579004); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?TUtLWVpXN3pHTStOYmhHMklIQ3htY1MrUG01elpxOXRLalRreGphQnZzSXU2?= =?utf-8?B?K0FoUUEyYllEdjRXVXUxQUpvQ0c0NTdEMk5FdlB2N2gyYVk0ZUpBNVNoNHhl?= =?utf-8?B?VUhmeEhwNkdjTUExTkRJeExLNVh3WDJFYXhpVmRqM2NoTUZERUl3MlRIWTJC?= =?utf-8?B?L3NsNkx2d0RVY0ZvSTUxUWlKdmwvaXVPYWlhSnRjdVhqSUo0cXFsSlpud2F4?= =?utf-8?B?SDVMQSt1SVNPRkpqUndpYWkwcS9SVWZsbG5lVVY1c1ZqR3c3cy9EUjMrYW9L?= =?utf-8?B?VkxMMC94QWlzbUQ4NkVTdDNsTVRERjVMWXYxR090cmdTd0tjdHBsVHZsWlJ1?= =?utf-8?B?dUVsTlorQjg3b3JQb1ZRS29jSG5BTGRPSko4WjNwSFVBeDBDRk9PcUp5LzQ1?= =?utf-8?B?NElybG9QTGpiQWV1T08yTjVUS25LUEFKSEhNbHluN1RCUHY0bkc2Z0NKN2o3?= =?utf-8?B?cURkUEhVRG1sQWwxUHd5cjFqL0dYSHdFdmlFajVFN252Wkg2VzYvanF6dnpY?= =?utf-8?B?d0p3YXpQNDNSa0V5eVdFVUNXamI4NERxby9XVUZhYkJEaE9NeFJIUVpsYUNv?= =?utf-8?B?REpoU3FjSUhvaGdoc1Uxa3laSm1JVmNNbm9xTHVVU1pRS2JTYThLblBpQmdm?= =?utf-8?B?VTdVN3dsbWh2bUlLaExFSllTUWxjSDMwZFpYQiszTXk1VkJIc0Yxdk9RQXY0?= =?utf-8?B?cXJkbXdhanN5aHFXU3Z6ZEJ0ZlhjOWJyMzBJaWI0b1hMYjN2VlZEeFhaT08y?= =?utf-8?B?amQ2dHNEYkdrK3dFUUZOVkord0x0N09kQXRWQ212QmJkT1BJaUp2K2pjOHBS?= =?utf-8?B?ditVZjg5dzdXUW1XallOWHBGWGdiK0dLb2NicmQzM0N0SW02QXdDVFZaVFhv?= =?utf-8?B?WTcra0Evd1V4aWlwMVpDc1hQSkl1cGxZUGZVZUd3OEpNdGRlVm5IOFV3ODZx?= =?utf-8?B?OUorOU1nbGpuWnNhL1VUYUF1eWdwTVNHa2pxbkEyZUJybmlId1pxZHd0Nmdh?= =?utf-8?B?Mml5K1RXNHQ2Zy9SU2hqc3kweEV3WTZlVmtFMVRnZUhOcTRqMUp3cy9SVC92?= =?utf-8?B?ZExkU2NvOHFDSk12SWdJVjNOOE9heTJlZEUyMjBHZ2xUcDZraU91WHcvdEp6?= =?utf-8?B?QTQ5M2VaSGxxZW85d2RzTHYySll0KzZDdFdNZExtZXdFMzNqSUw5M0IwL08v?= =?utf-8?B?a1BBT2JhNjJkUktIenJIeW5MVlRINjdrNk1RdHBKbDZ1RGFIODVncjNWQXkz?= =?utf-8?B?Y0JkRjJTckY3NUFQUzFWbkg5bHpFaUVwYWZjRjdQOWZkUzFNSDJBaUlpSk51?= =?utf-8?B?aXJWVkdoT2hXR0tvUWFjUkQyOE1NWTdkeEw2RlBiVU80T1ZuZGdpREQ3bE9H?= =?utf-8?B?UXJObkUzZGhmSko2YVNZVzVSdTRZd09KOVFLb1NHSjA3ekI1aGVWM095dDJz?= =?utf-8?B?ODRtZGNvMllEN2t4bjZmMEdqWlFIelUyY0ZBU0FkVmZwZGJlT3dLSGsrK2JT?= =?utf-8?B?aFRxZHlFQkV5OG9BTU9IeXArMTFEWHppaVpITWJhajNMcjJjdHg1Ny90aFM0?= =?utf-8?B?cXVua0IxeTIyS1dRWDloUFhneGJoSDlyamEya1J1OE83RnRRSll3dkNtdFFy?= =?utf-8?B?K0hOR3I1OGJtZ2N6TnlkeksveGtDSzFIWTc5YzB3YjNUbjlOMHFrVzVobUFm?= =?utf-8?B?NnVPUzViZVgxbU51eFFvcy9GOXFFSzNGS1pySnBEQ1FjdE1TTmV1WDhFcUJT?= =?utf-8?Q?403CrWGEg7K2Vn+krw=3D?= x-ms-exchange-transport-forked: True 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: BN9PR18MB4204.namprd18.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: d411b259-4010-4db9-2424-08d987142c8e X-MS-Exchange-CrossTenant-originalarrivaltime: 04 Oct 2021 08:51:36.5796 (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: lY8Q4mtwVCn09tiDu/qGLnfy7A86tT5pFz8LbVKCQao2Jr1QAvv2i9yBCO9HU4Mckurh30pKZysDnzkTTSLfrQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN8PR18MB2484 X-Proofpoint-GUID: gwPpnC7rYCdX3FuGOIn1PGH0pTv6dV88 X-Proofpoint-ORIG-GUID: gwPpnC7rYCdX3FuGOIn1PGH0pTv6dV88 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.182.1,Aquarius:18.0.790,Hydra:6.0.391,FMLib:17.0.607.475 definitions=2021-10-04_02,2021-10-01_02,2020-04-07_01 Subject: Re: [dpdk-dev] [EXT] Re: [PATCH v1 2/7] eal/interrupts: implement get set APIs 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 Sender: "dev" SGkgRGF2aWQsDQoNClRoYW5rcyBmb3IgdGhlIHJldmlldy4NClBsZWFzZSBzZWUgbXkgY29tbWVu dHMgaW5saW5lLg0KDQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogRGF2 aWQgTWFyY2hhbmQgPGRhdmlkLm1hcmNoYW5kQHJlZGhhdC5jb20+DQo+IFNlbnQ6IFR1ZXNkYXks IFNlcHRlbWJlciAyOCwgMjAyMSA5OjE3IFBNDQo+IFRvOiBIYXJtYW4gS2FscmEgPGhrYWxyYUBt YXJ2ZWxsLmNvbT4NCj4gQ2M6IGRldiA8ZGV2QGRwZGsub3JnPjsgUmF5IEtpbnNlbGxhIDxtZHJA YXNocm9lLmV1Pg0KPiBTdWJqZWN0OiBbRVhUXSBSZTogW2RwZGstZGV2XSBbUEFUQ0ggdjEgMi83 XSBlYWwvaW50ZXJydXB0czogaW1wbGVtZW50IGdldA0KPiBzZXQgQVBJcw0KPiANCj4gRXh0ZXJu YWwgRW1haWwNCj4gDQo+IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCj4gT24gRnJpLCBTZXAgMywgMjAyMSBhdCAy OjQyIFBNIEhhcm1hbiBLYWxyYSA8aGthbHJhQG1hcnZlbGwuY29tPiB3cm90ZToNCj4gPg0KPiA+ IEltcGxlbWVudGluZyBnZXQgc2V0IEFQSXMgZm9yIGludGVycnVwdCBoYW5kbGUgZmllbGRzLg0K PiA+IFRvIG1ha2UgYW55IGNoYW5nZSB0byB0aGUgaW50ZXJydXB0IGhhbmRsZSBmaWVsZHMsIG9u ZSBzaG91bGQgbWFrZSB1c2UNCj4gPiBvZiB0aGVzZSBBUElzLg0KPiANCg0KPiBTb21lIGdsb2Jh bCBjb21tZW50cy4NCj4gDQo+IC0gUGxlYXNlIG1lcmdlIEFQSSBwcm90b3R5cGUgKGZyb20gcGF0 Y2ggMSkgYW5kIGFjdHVhbCBpbXBsZW1lbnRhdGlvbiBpbiBhDQo+IHNpbmdsZSBwYXRjaC4NCg0K PEhLPiAgU3VyZSwgd2lsbCBkby4NCg0KPiAtIHJ0ZV9pbnRyX2hhbmRsZV8gc2VlbXMgYSByYXRo ZXIgbG9uZyBwcmVmaXgsIGRvZXMgaXQgcmVhbGx5IG1hdHRlciB0byBoYXZlDQo+IHRoZSBfaGFu ZGxlIHBhcnQ/DQoNCjxISz4gV2lsbCBmaXggdGhlIEFQSSBuYW1lcy4NCg0KDQo+IC0gd2hhdCBw YXJ0IG9mIHRoaXMgQVBJIG5lZWRzIHRvIGJlIGV4cG9ydGVkIHRvIGFwcGxpY2F0aW9ucz8gTGV0 J3MgaGlkZSBhcw0KPiBtdWNoIGFzIHdlIGNhbiB3aXRoIF9fcnRlX2ludGVybmFsLg0KDQo8SEs+ IEkgd2lsbCBtYWtlIGFsbCB0aGUgQVBJcyAobmV3IGFuZCBzb21lIG9sZCkgbm90IHVzZWQgaW4g dGVzdCBzdWl0ZSBhbmQgZXhhbXBsZSBhcHAgYXMgX19ydGVfaW50ZXJuYWwuIA0KDQo+IA0KPiAN Cj4gPg0KPiA+IFNpZ25lZC1vZmYtYnk6IEhhcm1hbiBLYWxyYSA8aGthbHJhQG1hcnZlbGwuY29t Pg0KPiA+IEFja2VkLWJ5OiBSYXkgS2luc2VsbGEgPG1kckBhc2hyb2UuZXU+DQo+ID4gLS0tDQo+ ID4gIGxpYi9lYWwvY29tbW9uL2VhbF9jb21tb25faW50ZXJydXB0cy5jIHwgNTA2DQo+ICsrKysr KysrKysrKysrKysrKysrKysrKysNCj4gPiAgbGliL2VhbC9jb21tb24vbWVzb24uYnVpbGQgICAg ICAgICAgICAgfCAgIDIgKw0KPiA+ICBsaWIvZWFsL2luY2x1ZGUvcnRlX2VhbF9pbnRlcnJ1cHRz LmggICB8ICAgNiArLQ0KPiA+ICBsaWIvZWFsL3ZlcnNpb24ubWFwICAgICAgICAgICAgICAgICAg ICB8ICAzMCArKw0KPiA+ICA0IGZpbGVzIGNoYW5nZWQsIDU0MyBpbnNlcnRpb25zKCspLCAxIGRl bGV0aW9uKC0pICBjcmVhdGUgbW9kZSAxMDA2NDQNCj4gPiBsaWIvZWFsL2NvbW1vbi9lYWxfY29t bW9uX2ludGVycnVwdHMuYw0KPiA+DQo+ID4gZGlmZiAtLWdpdCBhL2xpYi9lYWwvY29tbW9uL2Vh bF9jb21tb25faW50ZXJydXB0cy5jDQo+ID4gYi9saWIvZWFsL2NvbW1vbi9lYWxfY29tbW9uX2lu dGVycnVwdHMuYw0KPiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ID4gaW5kZXggMDAwMDAwMDAw MC4uMmU0ZmVkOTZmMA0KPiA+IC0tLSAvZGV2L251bGwNCj4gPiArKysgYi9saWIvZWFsL2NvbW1v bi9lYWxfY29tbW9uX2ludGVycnVwdHMuYw0KPiA+IEBAIC0wLDAgKzEsNTA2IEBADQo+ID4gKy8q IFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UNCj4gPiArICogQ29weXJpZ2h0 KEMpIDIwMjEgTWFydmVsbC4NCj4gPiArICovDQo+ID4gKw0KPiA+ICsjaW5jbHVkZSA8c3RkbGli Lmg+DQo+ID4gKyNpbmNsdWRlIDxzdHJpbmcuaD4NCj4gPiArDQo+ID4gKyNpbmNsdWRlIDxydGVf ZXJybm8uaD4NCj4gPiArI2luY2x1ZGUgPHJ0ZV9sb2cuaD4NCj4gPiArI2luY2x1ZGUgPHJ0ZV9t YWxsb2MuaD4NCj4gPiArDQo+ID4gKyNpbmNsdWRlIDxydGVfaW50ZXJydXB0cy5oPg0KPiA+ICsN Cj4gPiArDQo+ID4gK3N0cnVjdCBydGVfaW50cl9oYW5kbGUgKnJ0ZV9pbnRyX2hhbmRsZV9pbnN0 YW5jZV9hbGxvYyhpbnQgc2l6ZSwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgYm9vbA0KPiA+ICtmcm9tX2h1Z2VwYWdlKSB7DQo+ID4g KyAgICAgICBzdHJ1Y3QgcnRlX2ludHJfaGFuZGxlICppbnRyX2hhbmRsZTsNCj4gPiArICAgICAg IGludCBpOw0KPiA+ICsNCj4gPiArICAgICAgIGlmIChmcm9tX2h1Z2VwYWdlKQ0KPiA+ICsgICAg ICAgICAgICAgICBpbnRyX2hhbmRsZSA9IHJ0ZV96bWFsbG9jKE5VTEwsDQo+ID4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZSAqIHNpemVvZihzdHJ1Y3QgcnRl X2ludHJfaGFuZGxlKSwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAwKTsNCj4gPiArICAgICAgIGVsc2UNCj4gPiArICAgICAgICAgICAgICAgaW50cl9oYW5k bGUgPSBjYWxsb2MoMSwgc2l6ZSAqIHNpemVvZihzdHJ1Y3QNCj4gPiArIHJ0ZV9pbnRyX2hhbmRs ZSkpOw0KPiANCj4gV2UgY2FuIGNhbGwgRFBESyBhbGxvY2F0b3IgaW4gYWxsIGNhc2VzLg0KPiBU aGF0IHdvdWxkIGF2b2lkIGhlYWRhY2hlcyBvbiB3aHkgbXVsdGlwcm9jZXNzIGRvZXMgbm90IHdv cmsgaW4gc29tZQ0KPiByYXJlbHkgdGVzdGVkIGNhc2VzLg0KPiBXZHl0Pw0KPiANCj4gUGx1cyAi ZnJvbV9odWdlcGFnZSIgaXMgbWlzbGVhZGluZywgeW91IGNvdWxkIGJlIGluIC0tbm8taHVnZSBt b2RlLA0KPiBydGVfem1hbGxvYyBzdGlsbCB3b3Jrcy4NCg0KPEhLPiBJbiBtZWxsYW5veCA1IGRy aXZlciBpbnRlcnJ1cHQgaGFuZGxlIGluc3RhbmNlIGlzIGZyZWVkIGluIGRlc3RydWN0b3IgDQoi IG1seDVfcG1kX2ludGVycnVwdF9oYW5kbGVyX3VuaW5zdGFsbCgpIiB3aGlsZSBEUERLIG1lbW9y eSBhbGxvY2F0b3JzDQphcmUgYWxyZWFkeSBjbGVhbmVkIHVwIGluICJydGVfZWFsX2NsZWFudXAi LiBIZW5jZSBJIGFsbG9jYXRlZCBpbnRlcnJ1cHQNCmluc3RhbmNlcyBmb3Igc3VjaCBjYXNlcyBm cm9tIG5vcm1hbCBoZWFwLiBUaGVyZSBjb3VsZCBiZSBvdGhlciBzdWNoIGNhc2VzDQpzbyBJIHRo aW5rIGl0cyBvayB0byBrZWVwIHRoaXMgc3VwcG9ydC4NCg0KUmVnYXJkaW5nIG5hbWUsIEkgd2ls bCBjaGFuZ2UgIiBmcm9tX2h1Z2VwYWdlIiB0byAiZHBka19hbGxvY2F0b3IiLg0KDQpBcyBwZXIg c3VnZ2VzdGlvbiBmcm9tIERtaXRyeSwgSSB3aWxsIHJlcGxhY2UgYm9vbCBhcmcgd2l0aCBhIGZs YWcgdmFyaWFibGUsIHRvIA0Kc3VwcG9ydCBtb3JlIHN1Y2ggY29uZmlndXJhdGlvbnMgaW4gZnV0 dXJlLg0KDQoNCj4gDQo+IA0KPiA+ICsgICAgICAgaWYgKCFpbnRyX2hhbmRsZSkgew0KPiA+ICsg ICAgICAgICAgICAgICBSVEVfTE9HKEVSUiwgRUFMLCAiRmFpbCB0byBhbGxvY2F0ZSBpbnRyX2hh bmRsZVxuIik7DQo+ID4gKyAgICAgICAgICAgICAgIHJ0ZV9lcnJubyA9IEVOT01FTTsNCj4gPiAr ICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7DQo+ID4gKyAgICAgICB9DQo+ID4gKw0KPiA+ICsg ICAgICAgZm9yIChpID0gMDsgaSA8IHNpemU7IGkrKykgew0KPiA+ICsgICAgICAgICAgICAgICBp bnRyX2hhbmRsZVtpXS5uYl9pbnRyID0gUlRFX01BWF9SWFRYX0lOVFJfVkVDX0lEOw0KPiA+ICsg ICAgICAgICAgICAgICBpbnRyX2hhbmRsZVtpXS5hbGxvY19mcm9tX2h1Z2VwYWdlID0gZnJvbV9o dWdlcGFnZTsNCj4gPiArICAgICAgIH0NCj4gPiArDQo+ID4gKyAgICAgICByZXR1cm4gaW50cl9o YW5kbGU7DQo+ID4gK30NCj4gPiArDQo+ID4gK3N0cnVjdCBydGVfaW50cl9oYW5kbGUgKnJ0ZV9p bnRyX2hhbmRsZV9pbnN0YW5jZV9pbmRleF9nZXQoDQo+ID4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBzdHJ1Y3QgcnRlX2ludHJfaGFuZGxlICppbnRyX2hhbmRsZSwNCj4gPiAraW50 IGluZGV4KSB7DQo+ID4gKyAgICAgICBpZiAoaW50cl9oYW5kbGUgPT0gTlVMTCkgew0KPiA+ICsg ICAgICAgICAgICAgICBSVEVfTE9HKEVSUiwgRUFMLCAiSW50ZXJydXB0IGluc3RhbmNlIHVuYWxs b2NhdGVkXG4iKTsNCj4gPiArICAgICAgICAgICAgICAgcnRlX2Vycm5vID0gRU5PTUVNOw0KPiA+ ICsgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsNCj4gPiArICAgICAgIH0NCj4gPiArDQo+ID4g KyAgICAgICByZXR1cm4gJmludHJfaGFuZGxlW2luZGV4XTsNCj4gPiArfQ0KPiA+ICsNCj4gPiAr aW50IHJ0ZV9pbnRyX2hhbmRsZV9pbnN0YW5jZV9pbmRleF9zZXQoc3RydWN0IHJ0ZV9pbnRyX2hh bmRsZQ0KPiAqaW50cl9oYW5kbGUsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgY29uc3Qgc3RydWN0IHJ0ZV9pbnRyX2hhbmRsZSAqc3JjLA0KPiA+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBpbmRleCkgew0KPiA+ICsgICAgICAg aWYgKGludHJfaGFuZGxlID09IE5VTEwpIHsNCj4gPiArICAgICAgICAgICAgICAgUlRFX0xPRyhF UlIsIEVBTCwgIkludGVycnVwdCBpbnN0YW5jZSB1bmFsbG9jYXRlZFxuIik7DQo+ID4gKyAgICAg ICAgICAgICAgIHJ0ZV9lcnJubyA9IEVOT1RTVVA7DQo+ID4gKyAgICAgICAgICAgICAgIGdvdG8g ZmFpbDsNCj4gPiArICAgICAgIH0NCj4gPiArDQo+ID4gKyAgICAgICBpZiAoc3JjID09IE5VTEwp IHsNCj4gPiArICAgICAgICAgICAgICAgUlRFX0xPRyhFUlIsIEVBTCwgIlNvdXJjZSBpbnRlcnJ1 cHQgaW5zdGFuY2UgdW5hbGxvY2F0ZWRcbiIpOw0KPiA+ICsgICAgICAgICAgICAgICBydGVfZXJy bm8gPSBFSU5WQUw7DQo+ID4gKyAgICAgICAgICAgICAgIGdvdG8gZmFpbDsNCj4gPiArICAgICAg IH0NCj4gPiArDQo+ID4gKyAgICAgICBpZiAoaW5kZXggPCAwKSB7DQo+ID4gKyAgICAgICAgICAg ICAgIFJURV9MT0coRVJSLCBFQUwsICJJbmRleCBjYW55IGJlIG5lZ2F0aXZlIik7DQo+ID4gKyAg ICAgICAgICAgICAgIHJ0ZV9lcnJubyA9IEVJTlZBTDsNCj4gPiArICAgICAgICAgICAgICAgZ290 byBmYWlsOw0KPiA+ICsgICAgICAgfQ0KPiA+ICsNCj4gPiArICAgICAgIGludHJfaGFuZGxlW2lu ZGV4XS5mZCA9IHNyYy0+ZmQ7DQo+ID4gKyAgICAgICBpbnRyX2hhbmRsZVtpbmRleF0udmZpb19k ZXZfZmQgPSBzcmMtPnZmaW9fZGV2X2ZkOw0KPiA+ICsgICAgICAgaW50cl9oYW5kbGVbaW5kZXhd LnR5cGUgPSBzcmMtPnR5cGU7DQo+ID4gKyAgICAgICBpbnRyX2hhbmRsZVtpbmRleF0ubWF4X2lu dHIgPSBzcmMtPm1heF9pbnRyOw0KPiA+ICsgICAgICAgaW50cl9oYW5kbGVbaW5kZXhdLm5iX2Vm ZCA9IHNyYy0+bmJfZWZkOw0KPiA+ICsgICAgICAgaW50cl9oYW5kbGVbaW5kZXhdLmVmZF9jb3Vu dGVyX3NpemUgPSBzcmMtPmVmZF9jb3VudGVyX3NpemU7DQo+ID4gKw0KPiA+ICsgICAgICAgbWVt Y3B5KGludHJfaGFuZGxlW2luZGV4XS5lZmRzLCBzcmMtPmVmZHMsIHNyYy0+bmJfaW50cik7DQo+ ID4gKyAgICAgICBtZW1jcHkoaW50cl9oYW5kbGVbaW5kZXhdLmVsaXN0LCBzcmMtPmVsaXN0LCBz cmMtPm5iX2ludHIpOw0KPiA+ICsNCj4gPiArICAgICAgIHJldHVybiAwOw0KPiA+ICtmYWlsOg0K PiA+ICsgICAgICAgcmV0dXJuIHJ0ZV9lcnJubzsNCj4gPiArfQ0KPiA+ICsNCj4gPiArdm9pZCBy dGVfaW50cl9oYW5kbGVfaW5zdGFuY2VfZnJlZShzdHJ1Y3QgcnRlX2ludHJfaGFuZGxlDQo+ID4g KyppbnRyX2hhbmRsZSkgew0KPiA+ICsgICAgICAgaWYgKGludHJfaGFuZGxlID09IE5VTEwpIHsN Cj4gPiArICAgICAgICAgICAgICAgUlRFX0xPRyhFUlIsIEVBTCwgIkludGVycnVwdCBpbnN0YW5j ZSB1bmFsbG9jYXRlZFxuIik7DQo+ID4gKyAgICAgICAgICAgICAgIHJ0ZV9lcnJubyA9IEVOT1RT VVA7DQo+ID4gKyAgICAgICB9DQo+ID4gKw0KPiA+ICsgICAgICAgaWYgKGludHJfaGFuZGxlLT5h bGxvY19mcm9tX2h1Z2VwYWdlKQ0KPiA+ICsgICAgICAgICAgICAgICBydGVfZnJlZShpbnRyX2hh bmRsZSk7DQo+ID4gKyAgICAgICBlbHNlDQo+ID4gKyAgICAgICAgICAgICAgIGZyZWUoaW50cl9o YW5kbGUpOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICtpbnQgcnRlX2ludHJfaGFuZGxlX2ZkX3NldChz dHJ1Y3QgcnRlX2ludHJfaGFuZGxlICppbnRyX2hhbmRsZSwgaW50DQo+ID4gK2ZkKSB7DQo+ID4g KyAgICAgICBpZiAoaW50cl9oYW5kbGUgPT0gTlVMTCkgew0KPiA+ICsgICAgICAgICAgICAgICBS VEVfTE9HKEVSUiwgRUFMLCAiSW50ZXJydXB0IGluc3RhbmNlIHVuYWxsb2NhdGVkXG4iKTsNCj4g PiArICAgICAgICAgICAgICAgcnRlX2Vycm5vID0gRU5PVFNVUDsNCj4gPiArICAgICAgICAgICAg ICAgZ290byBmYWlsOw0KPiA+ICsgICAgICAgfQ0KPiA+ICsNCj4gPiArICAgICAgIGludHJfaGFu ZGxlLT5mZCA9IGZkOw0KPiA+ICsNCj4gPiArICAgICAgIHJldHVybiAwOw0KPiA+ICtmYWlsOg0K PiA+ICsgICAgICAgcmV0dXJuIHJ0ZV9lcnJubzsNCj4gPiArfQ0KPiA+ICsNCj4gPiAraW50IHJ0 ZV9pbnRyX2hhbmRsZV9mZF9nZXQoY29uc3Qgc3RydWN0IHJ0ZV9pbnRyX2hhbmRsZSAqaW50cl9o YW5kbGUpDQo+ID4gK3sNCj4gPiArICAgICAgIGlmIChpbnRyX2hhbmRsZSA9PSBOVUxMKSB7DQo+ ID4gKyAgICAgICAgICAgICAgIFJURV9MT0coRVJSLCBFQUwsICJJbnRlcnJ1cHQgaW5zdGFuY2Ug dW5hbGxvY2F0ZWRcbiIpOw0KPiA+ICsgICAgICAgICAgICAgICBydGVfZXJybm8gPSBFTk9UU1VQ Ow0KPiA+ICsgICAgICAgICAgICAgICBnb3RvIGZhaWw7DQo+ID4gKyAgICAgICB9DQo+ID4gKw0K PiA+ICsgICAgICAgcmV0dXJuIGludHJfaGFuZGxlLT5mZDsNCj4gPiArZmFpbDoNCj4gPiArICAg ICAgIHJldHVybiBydGVfZXJybm87DQo+ID4gK30NCj4gPiArDQo+ID4gK2ludCBydGVfaW50cl9o YW5kbGVfdHlwZV9zZXQoc3RydWN0IHJ0ZV9pbnRyX2hhbmRsZSAqaW50cl9oYW5kbGUsDQo+ID4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnVtIHJ0ZV9pbnRyX2hhbmRsZV90eXBlIHR5 cGUpIHsNCj4gPiArICAgICAgIGlmIChpbnRyX2hhbmRsZSA9PSBOVUxMKSB7DQo+ID4gKyAgICAg ICAgICAgICAgIFJURV9MT0coRVJSLCBFQUwsICJJbnRlcnJ1cHQgaW5zdGFuY2UgdW5hbGxvY2F0 ZWRcbiIpOw0KPiA+ICsgICAgICAgICAgICAgICBydGVfZXJybm8gPSBFTk9UU1VQOw0KPiA+ICsg ICAgICAgICAgICAgICBnb3RvIGZhaWw7DQo+ID4gKyAgICAgICB9DQo+ID4gKw0KPiA+ICsgICAg ICAgaW50cl9oYW5kbGUtPnR5cGUgPSB0eXBlOw0KPiA+ICsNCj4gPiArICAgICAgIHJldHVybiAw Ow0KPiA+ICtmYWlsOg0KPiA+ICsgICAgICAgcmV0dXJuIHJ0ZV9lcnJubzsNCj4gPiArfQ0KPiA+ ICsNCj4gPiArZW51bSBydGVfaW50cl9oYW5kbGVfdHlwZSBydGVfaW50cl9oYW5kbGVfdHlwZV9n ZXQoDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgcnRl X2ludHJfaGFuZGxlDQo+ID4gKyppbnRyX2hhbmRsZSkgew0KPiA+ICsgICAgICAgaWYgKGludHJf aGFuZGxlID09IE5VTEwpIHsNCj4gPiArICAgICAgICAgICAgICAgUlRFX0xPRyhFUlIsIEVBTCwg IkludGVycnVwdCBpbnN0YW5jZSB1bmFsbG9jYXRlZFxuIik7DQo+ID4gKyAgICAgICAgICAgICAg IHJ0ZV9lcnJubyA9IEVOT1RTVVA7DQo+ID4gKyAgICAgICAgICAgICAgIHJldHVybiBSVEVfSU5U Ul9IQU5ETEVfVU5LTk9XTjsNCj4gPiArICAgICAgIH0NCj4gPiArDQo+ID4gKyAgICAgICByZXR1 cm4gaW50cl9oYW5kbGUtPnR5cGU7DQo+ID4gK30NCj4gPiArDQo+ID4gK2ludCBydGVfaW50cl9o YW5kbGVfZGV2X2ZkX3NldChzdHJ1Y3QgcnRlX2ludHJfaGFuZGxlICppbnRyX2hhbmRsZSwNCj4g PiAraW50IGZkKSB7DQo+ID4gKyAgICAgICBpZiAoaW50cl9oYW5kbGUgPT0gTlVMTCkgew0KPiA+ ICsgICAgICAgICAgICAgICBSVEVfTE9HKEVSUiwgRUFMLCAiSW50ZXJydXB0IGluc3RhbmNlIHVu YWxsb2NhdGVkXG4iKTsNCj4gPiArICAgICAgICAgICAgICAgcnRlX2Vycm5vID0gRU5PVFNVUDsN Cj4gPiArICAgICAgICAgICAgICAgZ290byBmYWlsOw0KPiA+ICsgICAgICAgfQ0KPiA+ICsNCj4g PiArICAgICAgIGludHJfaGFuZGxlLT52ZmlvX2Rldl9mZCA9IGZkOw0KPiA+ICsNCj4gPiArICAg ICAgIHJldHVybiAwOw0KPiA+ICtmYWlsOg0KPiA+ICsgICAgICAgcmV0dXJuIHJ0ZV9lcnJubzsN Cj4gPiArfQ0KPiA+ICsNCj4gPiAraW50IHJ0ZV9pbnRyX2hhbmRsZV9kZXZfZmRfZ2V0KGNvbnN0 IHN0cnVjdCBydGVfaW50cl9oYW5kbGUNCj4gPiArKmludHJfaGFuZGxlKSB7DQo+ID4gKyAgICAg ICBpZiAoaW50cl9oYW5kbGUgPT0gTlVMTCkgew0KPiA+ICsgICAgICAgICAgICAgICBSVEVfTE9H KEVSUiwgRUFMLCAiSW50ZXJydXB0IGluc3RhbmNlIHVuYWxsb2NhdGVkXG4iKTsNCj4gPiArICAg ICAgICAgICAgICAgcnRlX2Vycm5vID0gRU5PVFNVUDsNCj4gPiArICAgICAgICAgICAgICAgZ290 byBmYWlsOw0KPiA+ICsgICAgICAgfQ0KPiA+ICsNCj4gPiArICAgICAgIHJldHVybiBpbnRyX2hh bmRsZS0+dmZpb19kZXZfZmQ7DQo+ID4gK2ZhaWw6DQo+ID4gKyAgICAgICByZXR1cm4gcnRlX2Vy cm5vOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICtpbnQgcnRlX2ludHJfaGFuZGxlX21heF9pbnRyX3Nl dChzdHJ1Y3QgcnRlX2ludHJfaGFuZGxlICppbnRyX2hhbmRsZSwNCj4gPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBpbnQgbWF4X2ludHIpIHsNCj4gPiArICAgICAgIGlmIChpbnRy X2hhbmRsZSA9PSBOVUxMKSB7DQo+ID4gKyAgICAgICAgICAgICAgIFJURV9MT0coRVJSLCBFQUws ICJJbnRlcnJ1cHQgaW5zdGFuY2UgdW5hbGxvY2F0ZWRcbiIpOw0KPiA+ICsgICAgICAgICAgICAg ICBydGVfZXJybm8gPSBFTk9UU1VQOw0KPiA+ICsgICAgICAgICAgICAgICBnb3RvIGZhaWw7DQo+ ID4gKyAgICAgICB9DQo+ID4gKw0KPiA+ICsgICAgICAgaWYgKG1heF9pbnRyID4gaW50cl9oYW5k bGUtPm5iX2ludHIpIHsNCj4gPiArICAgICAgICAgICAgICAgUlRFX0xPRyhFUlIsIEVBTCwgIk1h eF9pbnRyPSVkIGdyZWF0ZXIgdGhhbg0KPiBQTFRfTUFYX1JYVFhfSU5UUl9WRUNfSUQ9JWQiLA0K PiA+ICsgICAgICAgICAgICAgICAgICAgICAgIG1heF9pbnRyLCBpbnRyX2hhbmRsZS0+bmJfaW50 cik7DQo+ID4gKyAgICAgICAgICAgICAgIHJ0ZV9lcnJubyA9IEVSQU5HRTsNCj4gPiArICAgICAg ICAgICAgICAgZ290byBmYWlsOw0KPiA+ICsgICAgICAgfQ0KPiA+ICsNCj4gPiArICAgICAgIGlu dHJfaGFuZGxlLT5tYXhfaW50ciA9IG1heF9pbnRyOw0KPiA+ICsNCj4gPiArICAgICAgIHJldHVy biAwOw0KPiA+ICtmYWlsOg0KPiA+ICsgICAgICAgcmV0dXJuIHJ0ZV9lcnJubzsNCj4gPiArfQ0K PiA+ICsNCj4gPiAraW50IHJ0ZV9pbnRyX2hhbmRsZV9tYXhfaW50cl9nZXQoY29uc3Qgc3RydWN0 IHJ0ZV9pbnRyX2hhbmRsZQ0KPiA+ICsqaW50cl9oYW5kbGUpIHsNCj4gPiArICAgICAgIGlmIChp bnRyX2hhbmRsZSA9PSBOVUxMKSB7DQo+ID4gKyAgICAgICAgICAgICAgIFJURV9MT0coRVJSLCBF QUwsICJJbnRlcnJ1cHQgaW5zdGFuY2UgdW5hbGxvY2F0ZWRcbiIpOw0KPiA+ICsgICAgICAgICAg ICAgICBydGVfZXJybm8gPSBFTk9UU1VQOw0KPiA+ICsgICAgICAgICAgICAgICBnb3RvIGZhaWw7 DQo+ID4gKyAgICAgICB9DQo+ID4gKw0KPiA+ICsgICAgICAgcmV0dXJuIGludHJfaGFuZGxlLT5t YXhfaW50cjsNCj4gPiArZmFpbDoNCj4gPiArICAgICAgIHJldHVybiBydGVfZXJybm87DQo+ID4g K30NCj4gPiArDQo+ID4gK2ludCBydGVfaW50cl9oYW5kbGVfbmJfZWZkX3NldChzdHJ1Y3QgcnRl X2ludHJfaGFuZGxlICppbnRyX2hhbmRsZSwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBpbnQgbmJfZWZkKSB7DQo+ID4gKyAgICAgICBpZiAoaW50cl9oYW5kbGUgPT0gTlVM TCkgew0KPiA+ICsgICAgICAgICAgICAgICBSVEVfTE9HKEVSUiwgRUFMLCAiSW50ZXJydXB0IGlu c3RhbmNlIHVuYWxsb2NhdGVkXG4iKTsNCj4gPiArICAgICAgICAgICAgICAgcnRlX2Vycm5vID0g RU5PVFNVUDsNCj4gPiArICAgICAgICAgICAgICAgZ290byBmYWlsOw0KPiA+ICsgICAgICAgfQ0K PiA+ICsNCj4gPiArICAgICAgIGludHJfaGFuZGxlLT5uYl9lZmQgPSBuYl9lZmQ7DQo+ID4gKw0K PiA+ICsgICAgICAgcmV0dXJuIDA7DQo+ID4gK2ZhaWw6DQo+ID4gKyAgICAgICByZXR1cm4gcnRl X2Vycm5vOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICtpbnQgcnRlX2ludHJfaGFuZGxlX25iX2VmZF9n ZXQoY29uc3Qgc3RydWN0IHJ0ZV9pbnRyX2hhbmRsZQ0KPiA+ICsqaW50cl9oYW5kbGUpIHsNCj4g PiArICAgICAgIGlmIChpbnRyX2hhbmRsZSA9PSBOVUxMKSB7DQo+ID4gKyAgICAgICAgICAgICAg IFJURV9MT0coRVJSLCBFQUwsICJJbnRlcnJ1cHQgaW5zdGFuY2UgdW5hbGxvY2F0ZWRcbiIpOw0K PiA+ICsgICAgICAgICAgICAgICBydGVfZXJybm8gPSBFTk9UU1VQOw0KPiA+ICsgICAgICAgICAg ICAgICBnb3RvIGZhaWw7DQo+ID4gKyAgICAgICB9DQo+ID4gKw0KPiA+ICsgICAgICAgcmV0dXJu IGludHJfaGFuZGxlLT5uYl9lZmQ7DQo+ID4gK2ZhaWw6DQo+ID4gKyAgICAgICByZXR1cm4gcnRl X2Vycm5vOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICtpbnQgcnRlX2ludHJfaGFuZGxlX25iX2ludHJf Z2V0KGNvbnN0IHN0cnVjdCBydGVfaW50cl9oYW5kbGUNCj4gPiArKmludHJfaGFuZGxlKSB7DQo+ ID4gKyAgICAgICBpZiAoaW50cl9oYW5kbGUgPT0gTlVMTCkgew0KPiA+ICsgICAgICAgICAgICAg ICBSVEVfTE9HKEVSUiwgRUFMLCAiSW50ZXJydXB0IGluc3RhbmNlIHVuYWxsb2NhdGVkXG4iKTsN Cj4gPiArICAgICAgICAgICAgICAgcnRlX2Vycm5vID0gRU5PVFNVUDsNCj4gPiArICAgICAgICAg ICAgICAgZ290byBmYWlsOw0KPiA+ICsgICAgICAgfQ0KPiA+ICsNCj4gPiArICAgICAgIHJldHVy biBpbnRyX2hhbmRsZS0+bmJfaW50cjsNCj4gPiArZmFpbDoNCj4gPiArICAgICAgIHJldHVybiBy dGVfZXJybm87DQo+ID4gK30NCj4gPiArDQo+ID4gK2ludCBydGVfaW50cl9oYW5kbGVfZWZkX2Nv dW50ZXJfc2l6ZV9zZXQoc3RydWN0IHJ0ZV9pbnRyX2hhbmRsZQ0KPiAqaW50cl9oYW5kbGUsDQo+ ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDhfdCBlZmRfY291bnRlcl9z aXplKSB7DQo+ID4gKyAgICAgICBpZiAoaW50cl9oYW5kbGUgPT0gTlVMTCkgew0KPiA+ICsgICAg ICAgICAgICAgICBSVEVfTE9HKEVSUiwgRUFMLCAiSW50ZXJydXB0IGluc3RhbmNlIHVuYWxsb2Nh dGVkXG4iKTsNCj4gPiArICAgICAgICAgICAgICAgcnRlX2Vycm5vID0gRU5PVFNVUDsNCj4gPiAr ICAgICAgICAgICAgICAgZ290byBmYWlsOw0KPiA+ICsgICAgICAgfQ0KPiA+ICsNCj4gPiArICAg ICAgIGludHJfaGFuZGxlLT5lZmRfY291bnRlcl9zaXplID0gZWZkX2NvdW50ZXJfc2l6ZTsNCj4g PiArDQo+ID4gKyAgICAgICByZXR1cm4gMDsNCj4gPiArZmFpbDoNCj4gPiArICAgICAgIHJldHVy biBydGVfZXJybm87DQo+ID4gK30NCj4gPiArDQo+ID4gK2ludCBydGVfaW50cl9oYW5kbGVfZWZk X2NvdW50ZXJfc2l6ZV9nZXQoDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj b25zdCBzdHJ1Y3QgcnRlX2ludHJfaGFuZGxlDQo+ID4gKyppbnRyX2hhbmRsZSkgew0KPiA+ICsg ICAgICAgaWYgKGludHJfaGFuZGxlID09IE5VTEwpIHsNCj4gPiArICAgICAgICAgICAgICAgUlRF X0xPRyhFUlIsIEVBTCwgIkludGVycnVwdCBpbnN0YW5jZSB1bmFsbG9jYXRlZFxuIik7DQo+ID4g KyAgICAgICAgICAgICAgIHJ0ZV9lcnJubyA9IEVOT1RTVVA7DQo+ID4gKyAgICAgICAgICAgICAg IGdvdG8gZmFpbDsNCj4gPiArICAgICAgIH0NCj4gPiArDQo+ID4gKyAgICAgICByZXR1cm4gaW50 cl9oYW5kbGUtPmVmZF9jb3VudGVyX3NpemU7DQo+ID4gK2ZhaWw6DQo+ID4gKyAgICAgICByZXR1 cm4gcnRlX2Vycm5vOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICtpbnQgKnJ0ZV9pbnRyX2hhbmRsZV9l ZmRzX2Jhc2Uoc3RydWN0IHJ0ZV9pbnRyX2hhbmRsZSAqaW50cl9oYW5kbGUpIHsNCj4gPiArICAg ICAgIGlmIChpbnRyX2hhbmRsZSA9PSBOVUxMKSB7DQo+ID4gKyAgICAgICAgICAgICAgIFJURV9M T0coRVJSLCBFQUwsICJJbnRlcnJ1cHQgaW5zdGFuY2UgdW5hbGxvY2F0ZWRcbiIpOw0KPiA+ICsg ICAgICAgICAgICAgICBydGVfZXJybm8gPSBFTk9UU1VQOw0KPiA+ICsgICAgICAgICAgICAgICBn b3RvIGZhaWw7DQo+ID4gKyAgICAgICB9DQo+ID4gKw0KPiA+ICsgICAgICAgcmV0dXJuIGludHJf aGFuZGxlLT5lZmRzOw0KPiA+ICtmYWlsOg0KPiA+ICsgICAgICAgcmV0dXJuIE5VTEw7DQo+ID4g K30NCj4gDQo+IFdlIGRvbid0IG5lZWQgdGhpcyBuZXcgYWNjZXNzb3IuDQo+IEl0IGxlYWtzIHRo ZSBpbnRlcm5hbCByZXByZXNlbnRhdGlvbiB0byB0aGUgQVBJIGNhbGxlci4NCj4gSWYgdGhlIGlu dGVybmFsIHJlcHJlc2VudGF0aW9uIGlzIGxhdGVyIGNoYW5nZWQsIHdlIHdvdWxkIGhhdmUgdG8g bWFpbnRhaW4NCj4gdGhpcyBhcnJheSB0aGluZy4NCj4gDQo+IFRoZSBvbmx5IHVzZXIgaXMgZHJp dmVycy9yYXcvaWZwZ2EvaWZwZ2FfcmF3ZGV2LmMuDQo+IFRoaXMgZHJpdmVyIGNhbiBidWlsZCBh biBhcnJheSBpdHNlbGYsIGFuZCBjYWxsDQo+IHJ0ZV9pbnRyX2hhbmRsZV9lZmRzX2luZGV4X2dl dCgpIGFzIG11Y2ggYXMgbmVlZGVkLg0KDQo8SEs+IFllcywgaXTigJlzIGEgbGVhayBJIHdpbGwg cmVtb3ZlIHRoZXNlIGJhc2UgQVBJcyBhbmQgZml4IHRoZSBpZnBnYV9yYXdkZXYuYyBkcml2ZXIu DQoNCj4gDQo+IA0KPiANCj4gPiArDQo+ID4gK2ludCBydGVfaW50cl9oYW5kbGVfZWZkc19pbmRl eF9nZXQoY29uc3Qgc3RydWN0IHJ0ZV9pbnRyX2hhbmRsZQ0KPiAqaW50cl9oYW5kbGUsDQo+ID4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgaW5kZXgpIHsNCj4gPiArICAg ICAgIGlmIChpbnRyX2hhbmRsZSA9PSBOVUxMKSB7DQo+ID4gKyAgICAgICAgICAgICAgIFJURV9M T0coRVJSLCBFQUwsICJJbnRlcnJ1cHQgaW5zdGFuY2UgdW5hbGxvY2F0ZWRcbiIpOw0KPiA+ICsg ICAgICAgICAgICAgICBydGVfZXJybm8gPSBFTk9UU1VQOw0KPiA+ICsgICAgICAgICAgICAgICBn b3RvIGZhaWw7DQo+ID4gKyAgICAgICB9DQo+ID4gKw0KPiA+ICsgICAgICAgaWYgKGluZGV4ID49 IGludHJfaGFuZGxlLT5uYl9pbnRyKSB7DQo+ID4gKyAgICAgICAgICAgICAgIFJURV9MT0coRVJS LCBFQUwsICJJbnZhbGlkIHNpemUgJWQsIG1heCBsaW1pdCAlZFxuIiwgaW5kZXgsDQo+ID4gKyAg ICAgICAgICAgICAgICAgICAgICAgaW50cl9oYW5kbGUtPm5iX2ludHIpOw0KPiA+ICsgICAgICAg ICAgICAgICBydGVfZXJybm8gPSBFSU5WQUw7DQo+ID4gKyAgICAgICAgICAgICAgIGdvdG8gZmFp bDsNCj4gPiArICAgICAgIH0NCj4gPiArDQo+ID4gKyAgICAgICByZXR1cm4gaW50cl9oYW5kbGUt PmVmZHNbaW5kZXhdOw0KPiA+ICtmYWlsOg0KPiA+ICsgICAgICAgcmV0dXJuIHJ0ZV9lcnJubzsN Cj4gPiArfQ0KPiA+ICsNCj4gPiAraW50IHJ0ZV9pbnRyX2hhbmRsZV9lZmRzX2luZGV4X3NldChz dHJ1Y3QgcnRlX2ludHJfaGFuZGxlICppbnRyX2hhbmRsZSwNCj4gPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGludCBpbmRleCwgaW50IGZkKSB7DQo+ID4gKyAgICAgICBpZiAo aW50cl9oYW5kbGUgPT0gTlVMTCkgew0KPiA+ICsgICAgICAgICAgICAgICBSVEVfTE9HKEVSUiwg RUFMLCAiSW50ZXJydXB0IGluc3RhbmNlIHVuYWxsb2NhdGVkXG4iKTsNCj4gPiArICAgICAgICAg ICAgICAgcnRlX2Vycm5vID0gRU5PVFNVUDsNCj4gPiArICAgICAgICAgICAgICAgZ290byBmYWls Ow0KPiA+ICsgICAgICAgfQ0KPiA+ICsNCj4gPiArICAgICAgIGlmIChpbmRleCA+PSBpbnRyX2hh bmRsZS0+bmJfaW50cikgew0KPiA+ICsgICAgICAgICAgICAgICBSVEVfTE9HKEVSUiwgRUFMLCAi SW52YWxpZCBzaXplICVkLCBtYXggbGltaXQgJWRcbiIsIGluZGV4LA0KPiA+ICsgICAgICAgICAg ICAgICAgICAgICAgIGludHJfaGFuZGxlLT5uYl9pbnRyKTsNCj4gPiArICAgICAgICAgICAgICAg cnRlX2Vycm5vID0gRVJBTkdFOw0KPiA+ICsgICAgICAgICAgICAgICBnb3RvIGZhaWw7DQo+ID4g KyAgICAgICB9DQo+ID4gKw0KPiA+ICsgICAgICAgaW50cl9oYW5kbGUtPmVmZHNbaW5kZXhdID0g ZmQ7DQo+ID4gKw0KPiA+ICsgICAgICAgcmV0dXJuIDA7DQo+ID4gK2ZhaWw6DQo+ID4gKyAgICAg ICByZXR1cm4gcnRlX2Vycm5vOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICtzdHJ1Y3QgcnRlX2Vwb2xs X2V2ZW50ICpydGVfaW50cl9oYW5kbGVfZWxpc3RfaW5kZXhfZ2V0KA0KPiA+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHJ0ZV9pbnRyX2hhbmRsZSAqaW50cl9oYW5kbGUs DQo+ID4gK2ludCBpbmRleCkgew0KPiA+ICsgICAgICAgaWYgKGludHJfaGFuZGxlID09IE5VTEwp IHsNCj4gPiArICAgICAgICAgICAgICAgUlRFX0xPRyhFUlIsIEVBTCwgIkludGVycnVwdCBpbnN0 YW5jZSB1bmFsbG9jYXRlZFxuIik7DQo+ID4gKyAgICAgICAgICAgICAgIHJ0ZV9lcnJubyA9IEVO T1RTVVA7DQo+ID4gKyAgICAgICAgICAgICAgIGdvdG8gZmFpbDsNCj4gPiArICAgICAgIH0NCj4g PiArDQo+ID4gKyAgICAgICBpZiAoaW5kZXggPj0gaW50cl9oYW5kbGUtPm5iX2ludHIpIHsNCj4g PiArICAgICAgICAgICAgICAgUlRFX0xPRyhFUlIsIEVBTCwgIkludmFsaWQgc2l6ZSAlZCwgbWF4 IGxpbWl0ICVkXG4iLCBpbmRleCwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICBpbnRyX2hh bmRsZS0+bmJfaW50cik7DQo+ID4gKyAgICAgICAgICAgICAgIHJ0ZV9lcnJubyA9IEVSQU5HRTsN Cj4gPiArICAgICAgICAgICAgICAgZ290byBmYWlsOw0KPiA+ICsgICAgICAgfQ0KPiA+ICsNCj4g PiArICAgICAgIHJldHVybiAmaW50cl9oYW5kbGUtPmVsaXN0W2luZGV4XTsNCj4gPiArZmFpbDoN Cj4gPiArICAgICAgIHJldHVybiBOVUxMOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICtpbnQgcnRlX2lu dHJfaGFuZGxlX2VsaXN0X2luZGV4X3NldChzdHJ1Y3QgcnRlX2ludHJfaGFuZGxlICppbnRyX2hh bmRsZSwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBpbmRleCwg c3RydWN0IHJ0ZV9lcG9sbF9ldmVudA0KPiA+ICtlbGlzdCkgew0KPiA+ICsgICAgICAgaWYgKGlu dHJfaGFuZGxlID09IE5VTEwpIHsNCj4gPiArICAgICAgICAgICAgICAgUlRFX0xPRyhFUlIsIEVB TCwgIkludGVycnVwdCBpbnN0YW5jZSB1bmFsbG9jYXRlZFxuIik7DQo+ID4gKyAgICAgICAgICAg ICAgIHJ0ZV9lcnJubyA9IEVOT1RTVVA7DQo+ID4gKyAgICAgICAgICAgICAgIGdvdG8gZmFpbDsN Cj4gPiArICAgICAgIH0NCj4gPiArDQo+ID4gKyAgICAgICBpZiAoaW5kZXggPj0gaW50cl9oYW5k bGUtPm5iX2ludHIpIHsNCj4gPiArICAgICAgICAgICAgICAgUlRFX0xPRyhFUlIsIEVBTCwgIklu dmFsaWQgc2l6ZSAlZCwgbWF4IGxpbWl0ICVkXG4iLCBpbmRleCwNCj4gPiArICAgICAgICAgICAg ICAgICAgICAgICBpbnRyX2hhbmRsZS0+bmJfaW50cik7DQo+ID4gKyAgICAgICAgICAgICAgIHJ0 ZV9lcnJubyA9IEVSQU5HRTsNCj4gPiArICAgICAgICAgICAgICAgZ290byBmYWlsOw0KPiA+ICsg ICAgICAgfQ0KPiA+ICsNCj4gPiArICAgICAgIGludHJfaGFuZGxlLT5lbGlzdFtpbmRleF0gPSBl bGlzdDsNCj4gPiArDQo+ID4gKyAgICAgICByZXR1cm4gMDsNCj4gPiArZmFpbDoNCj4gPiArICAg ICAgIHJldHVybiBydGVfZXJybm87DQo+ID4gK30NCj4gPiArDQo+ID4gK2ludCAqcnRlX2ludHJf aGFuZGxlX3ZlY19saXN0X2Jhc2UoY29uc3Qgc3RydWN0IHJ0ZV9pbnRyX2hhbmRsZQ0KPiA+ICsq aW50cl9oYW5kbGUpIHsNCj4gPiArICAgICAgIGlmIChpbnRyX2hhbmRsZSA9PSBOVUxMKSB7DQo+ ID4gKyAgICAgICAgICAgICAgIFJURV9MT0coRVJSLCBFQUwsICJJbnRlcnJ1cHQgaW5zdGFuY2Ug dW5hbGxvY2F0ZWRcbiIpOw0KPiA+ICsgICAgICAgICAgICAgICBydGVfZXJybm8gPSBFTk9UU1VQ Ow0KPiA+ICsgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsNCj4gPiArICAgICAgIH0NCj4gPiAr DQo+ID4gKyAgICAgICByZXR1cm4gaW50cl9oYW5kbGUtPmludHJfdmVjOw0KPiA+ICt9DQo+IA0K PiANCj4gcnRlX2ludHJfaGFuZGxlX3ZlY19saXN0X2Jhc2UgbGVha3MgYW4gaW50ZXJuYWwgcmVw cmVzZW50YXRpb24gdG9vLg0KPiANCj4gQWZhaWNzIHdpdGggdGhlIHdob2xlIHNlcmllcyBhcHBs aWVkLCBpdCBpcyBhbHdheXMgcGFpcmVkIHdpdGggYQ0KPiBydGVfaW50cl9oYW5kbGVfdmVjX2xp c3RfYWxsb2Mgb3IgcnRlX2ludHJfaGFuZGxlX3ZlY19saXN0X2ZyZWUuDQo+IHJ0ZV9pbnRyX2hh bmRsZV92ZWNfbGlzdF9hbGxvYyBjb3VsZCBkbyB0aGlzIGNoZWNrIGl0c2VsZi4NCj4gQW5kIHJ0 ZV9pbnRyX2hhbmRsZV92ZWNfbGlzdF9mcmVlIHNob3VsZCBhbHJlYWR5IGJlIGZpbmUsIHNpbmNl IGl0IHNldHMNCj4gaW50cl92ZWMgdG8gTlVMTC4NCg0KDQo8SEs+IFllcywgYmFzZSBBUEkgbm90 IHJlcXVpcmVkLg0KDQpUaGFua3MNCkhhcm1hbg0KPiANCj4gDQo+IA0KPiANCj4gDQo+ID4gKw0K PiA+ICtpbnQgcnRlX2ludHJfaGFuZGxlX3ZlY19saXN0X2FsbG9jKHN0cnVjdCBydGVfaW50cl9o YW5kbGUgKmludHJfaGFuZGxlLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgY29uc3QgY2hhciAqbmFtZSwgaW50IHNpemUpIHsNCj4gPiArICAgICAgIGlmIChpbnRyX2hh bmRsZSA9PSBOVUxMKSB7DQo+ID4gKyAgICAgICAgICAgICAgIFJURV9MT0coRVJSLCBFQUwsICJJ bnRlcnJ1cHQgaW5zdGFuY2UgdW5hbGxvY2F0ZWRcbiIpOw0KPiA+ICsgICAgICAgICAgICAgICBy dGVfZXJybm8gPSBFTk9UU1VQOw0KPiA+ICsgICAgICAgICAgICAgICBnb3RvIGZhaWw7DQo+ID4g KyAgICAgICB9DQo+ID4gKw0KPiA+ICsgICAgICAgLyogVmVjdG9yIGxpc3QgYWxyZWFkeSBhbGxv Y2F0ZWQgKi8NCj4gPiArICAgICAgIGlmIChpbnRyX2hhbmRsZS0+aW50cl92ZWMpDQo+ID4gKyAg ICAgICAgICAgICAgIHJldHVybiAwOw0KPiA+ICsNCj4gPiArICAgICAgIGlmIChzaXplID4gaW50 cl9oYW5kbGUtPm5iX2ludHIpIHsNCj4gPiArICAgICAgICAgICAgICAgUlRFX0xPRyhFUlIsIEVB TCwgIkludmFsaWQgc2l6ZSAlZCwgbWF4IGxpbWl0ICVkXG4iLCBzaXplLA0KPiA+ICsgICAgICAg ICAgICAgICAgICAgICAgaW50cl9oYW5kbGUtPm5iX2ludHIpOw0KPiA+ICsgICAgICAgICAgICAg ICBydGVfZXJybm8gPSBFUkFOR0U7DQo+ID4gKyAgICAgICAgICAgICAgIGdvdG8gZmFpbDsNCj4g PiArICAgICAgIH0NCj4gPiArDQo+ID4gKyAgICAgICBpbnRyX2hhbmRsZS0+aW50cl92ZWMgPSBy dGVfem1hbGxvYyhuYW1lLCBzaXplICogc2l6ZW9mKGludCksIDApOw0KPiA+ICsgICAgICAgaWYg KCFpbnRyX2hhbmRsZS0+aW50cl92ZWMpIHsNCj4gPiArICAgICAgICAgICAgICAgUlRFX0xPRyhF UlIsIEVBTCwgIkZhaWxlZCB0byBhbGxvY2F0ZSAlZCBpbnRyX3ZlYyIsIHNpemUpOw0KPiA+ICsg ICAgICAgICAgICAgICAgICAgICAgIHJ0ZV9lcnJubyA9IEVOT01FTTsNCj4gPiArICAgICAgICAg ICAgICAgICAgICAgICBnb3RvIGZhaWw7DQo+ID4gKyAgICAgICB9DQo+ID4gKw0KPiA+ICsgICAg ICAgaW50cl9oYW5kbGUtPnZlY19saXN0X3NpemUgPSBzaXplOw0KPiA+ICsNCj4gPiArICAgICAg IHJldHVybiAwOw0KPiA+ICtmYWlsOg0KPiA+ICsgICAgICAgcmV0dXJuIHJ0ZV9lcnJubzsNCj4g PiArfQ0KPiA+ICsNCj4gPiAraW50IHJ0ZV9pbnRyX2hhbmRsZV92ZWNfbGlzdF9pbmRleF9nZXQo DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IHJ0ZV9pbnRyX2hhbmRs ZSAqaW50cl9oYW5kbGUsIGludA0KPiA+ICtpbmRleCkgew0KPiA+ICsgICAgICAgaWYgKGludHJf aGFuZGxlID09IE5VTEwpIHsNCj4gPiArICAgICAgICAgICAgICAgUlRFX0xPRyhFUlIsIEVBTCwg IkludGVycnVwdCBpbnN0YW5jZSB1bmFsbG9jYXRlZFxuIik7DQo+ID4gKyAgICAgICAgICAgICAg IHJ0ZV9lcnJubyA9IEVOT1RTVVA7DQo+ID4gKyAgICAgICAgICAgICAgIGdvdG8gZmFpbDsNCj4g PiArICAgICAgIH0NCj4gPiArDQo+ID4gKyAgICAgICBpZiAoIWludHJfaGFuZGxlLT5pbnRyX3Zl Yykgew0KPiA+ICsgICAgICAgICAgICAgICBSVEVfTE9HKEVSUiwgRUFMLCAiSW50ciB2ZWN0b3Ig bGlzdCBub3QgYWxsb2NhdGVkXG4iKTsNCj4gPiArICAgICAgICAgICAgICAgcnRlX2Vycm5vID0g RU5PVFNVUDsNCj4gPiArICAgICAgICAgICAgICAgZ290byBmYWlsOw0KPiA+ICsgICAgICAgfQ0K PiA+ICsNCj4gPiArICAgICAgIGlmIChpbmRleCA+IGludHJfaGFuZGxlLT52ZWNfbGlzdF9zaXpl KSB7DQo+ID4gKyAgICAgICAgICAgICAgIFJURV9MT0coRVJSLCBFQUwsICJJbmRleCAlZCBncmVh dGVyIHRoYW4gdmVjIGxpc3Qgc2l6ZSAlZFxuIiwNCj4gPiArICAgICAgICAgICAgICAgICAgICAg ICBpbmRleCwgaW50cl9oYW5kbGUtPnZlY19saXN0X3NpemUpOw0KPiA+ICsgICAgICAgICAgICAg ICBydGVfZXJybm8gPSBFUkFOR0U7DQo+ID4gKyAgICAgICAgICAgICAgIGdvdG8gZmFpbDsNCj4g PiArICAgICAgIH0NCj4gPiArDQo+ID4gKyAgICAgICByZXR1cm4gaW50cl9oYW5kbGUtPmludHJf dmVjW2luZGV4XTsNCj4gPiArZmFpbDoNCj4gPiArICAgICAgIHJldHVybiBydGVfZXJybm87DQo+ ID4gK30NCj4gPiArDQo+ID4gK2ludCBydGVfaW50cl9oYW5kbGVfdmVjX2xpc3RfaW5kZXhfc2V0 KHN0cnVjdCBydGVfaW50cl9oYW5kbGUNCj4gKmludHJfaGFuZGxlLA0KPiA+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgaW50IGluZGV4LCBpbnQgdmVjKSB7DQo+ID4gKyAgICAg ICBpZiAoaW50cl9oYW5kbGUgPT0gTlVMTCkgew0KPiA+ICsgICAgICAgICAgICAgICBSVEVfTE9H KEVSUiwgRUFMLCAiSW50ZXJydXB0IGluc3RhbmNlIHVuYWxsb2NhdGVkXG4iKTsNCj4gPiArICAg ICAgICAgICAgICAgcnRlX2Vycm5vID0gRU5PVFNVUDsNCj4gPiArICAgICAgICAgICAgICAgZ290 byBmYWlsOw0KPiA+ICsgICAgICAgfQ0KPiA+ICsNCj4gPiArICAgICAgIGlmICghaW50cl9oYW5k bGUtPmludHJfdmVjKSB7DQo+ID4gKyAgICAgICAgICAgICAgIFJURV9MT0coRVJSLCBFQUwsICJJ bnRyIHZlY3RvciBsaXN0IG5vdCBhbGxvY2F0ZWRcbiIpOw0KPiA+ICsgICAgICAgICAgICAgICBy dGVfZXJybm8gPSBFTk9UU1VQOw0KPiA+ICsgICAgICAgICAgICAgICBnb3RvIGZhaWw7DQo+ID4g KyAgICAgICB9DQo+ID4gKw0KPiA+ICsgICAgICAgaWYgKGluZGV4ID4gaW50cl9oYW5kbGUtPnZl Y19saXN0X3NpemUpIHsNCj4gPiArICAgICAgICAgICAgICAgUlRFX0xPRyhFUlIsIEVBTCwgIklu ZGV4ICVkIGdyZWF0ZXIgdGhhbiB2ZWMgbGlzdCBzaXplICVkXG4iLA0KPiA+ICsgICAgICAgICAg ICAgICAgICAgICAgIGluZGV4LCBpbnRyX2hhbmRsZS0+dmVjX2xpc3Rfc2l6ZSk7DQo+ID4gKyAg ICAgICAgICAgICAgIHJ0ZV9lcnJubyA9IEVSQU5HRTsNCj4gPiArICAgICAgICAgICAgICAgZ290 byBmYWlsOw0KPiA+ICsgICAgICAgfQ0KPiA+ICsNCj4gPiArICAgICAgIGludHJfaGFuZGxlLT5p bnRyX3ZlY1tpbmRleF0gPSB2ZWM7DQo+ID4gKw0KPiA+ICsgICAgICAgcmV0dXJuIDA7DQo+ID4g K2ZhaWw6DQo+ID4gKyAgICAgICByZXR1cm4gcnRlX2Vycm5vOw0KPiA+ICt9DQo+ID4gKw0KPiA+ ICt2b2lkIHJ0ZV9pbnRyX2hhbmRsZV92ZWNfbGlzdF9mcmVlKHN0cnVjdCBydGVfaW50cl9oYW5k bGUNCj4gPiArKmludHJfaGFuZGxlKSB7DQo+ID4gKyAgICAgICBpZiAoaW50cl9oYW5kbGUgPT0g TlVMTCkgew0KPiA+ICsgICAgICAgICAgICAgICBSVEVfTE9HKEVSUiwgRUFMLCAiSW50ZXJydXB0 IGluc3RhbmNlIHVuYWxsb2NhdGVkXG4iKTsNCj4gPiArICAgICAgICAgICAgICAgcnRlX2Vycm5v ID0gRU5PVFNVUDsNCj4gPiArICAgICAgIH0NCj4gPiArDQo+ID4gKyAgICAgICBydGVfZnJlZShp bnRyX2hhbmRsZS0+aW50cl92ZWMpOw0KPiA+ICsgICAgICAgaW50cl9oYW5kbGUtPmludHJfdmVj ID0gTlVMTDsNCj4gPiArfQ0KPiA+IGRpZmYgLS1naXQgYS9saWIvZWFsL2NvbW1vbi9tZXNvbi5i dWlsZCBiL2xpYi9lYWwvY29tbW9uL21lc29uLmJ1aWxkDQo+ID4gaW5kZXggZWRmY2E3Nzc3OS4u NDdmMjk3NzUzOSAxMDA2NDQNCj4gPiAtLS0gYS9saWIvZWFsL2NvbW1vbi9tZXNvbi5idWlsZA0K PiA+ICsrKyBiL2xpYi9lYWwvY29tbW9uL21lc29uLmJ1aWxkDQo+ID4gQEAgLTE3LDYgKzE3LDcg QEAgaWYgaXNfd2luZG93cw0KPiA+ICAgICAgICAgICAgICAnZWFsX2NvbW1vbl9lcnJuby5jJywN Cj4gPiAgICAgICAgICAgICAgJ2VhbF9jb21tb25fZmJhcnJheS5jJywNCj4gPiAgICAgICAgICAg ICAgJ2VhbF9jb21tb25faGV4ZHVtcC5jJywNCj4gPiArICAgICAgICAgICAgJ2VhbF9jb21tb25f aW50ZXJydXB0cy5jJywNCj4gPiAgICAgICAgICAgICAgJ2VhbF9jb21tb25fbGF1bmNoLmMnLA0K PiA+ICAgICAgICAgICAgICAnZWFsX2NvbW1vbl9sY29yZS5jJywNCj4gPiAgICAgICAgICAgICAg J2VhbF9jb21tb25fbG9nLmMnLA0KPiA+IEBAIC01Myw2ICs1NCw3IEBAIHNvdXJjZXMgKz0gZmls ZXMoDQo+ID4gICAgICAgICAgJ2VhbF9jb21tb25fZmJhcnJheS5jJywNCj4gPiAgICAgICAgICAn ZWFsX2NvbW1vbl9oZXhkdW1wLmMnLA0KPiA+ICAgICAgICAgICdlYWxfY29tbW9uX2h5cGVydmlz b3IuYycsDQo+ID4gKyAgICAgICAgJ2VhbF9jb21tb25faW50ZXJydXB0cy5jJywNCj4gPiAgICAg ICAgICAnZWFsX2NvbW1vbl9sYXVuY2guYycsDQo+ID4gICAgICAgICAgJ2VhbF9jb21tb25fbGNv cmUuYycsDQo+ID4gICAgICAgICAgJ2VhbF9jb21tb25fbG9nLmMnLA0KPiA+IGRpZmYgLS1naXQg YS9saWIvZWFsL2luY2x1ZGUvcnRlX2VhbF9pbnRlcnJ1cHRzLmgNCj4gPiBiL2xpYi9lYWwvaW5j bHVkZS9ydGVfZWFsX2ludGVycnVwdHMuaA0KPiA+IGluZGV4IDY4Y2EzYTA0MmQuLjIxNmFlY2U2 MWIgMTAwNjQ0DQo+ID4gLS0tIGEvbGliL2VhbC9pbmNsdWRlL3J0ZV9lYWxfaW50ZXJydXB0cy5o DQo+ID4gKysrIGIvbGliL2VhbC9pbmNsdWRlL3J0ZV9lYWxfaW50ZXJydXB0cy5oDQo+ID4gQEAg LTU1LDEzICs1NSwxNyBAQCBzdHJ1Y3QgcnRlX2ludHJfaGFuZGxlIHsNCj4gPiAgICAgICAgICAg ICAgICAgfTsNCj4gPiAgICAgICAgICAgICAgICAgdm9pZCAqaGFuZGxlOyAvKio8IGRldmljZSBk cml2ZXIgaGFuZGxlIChXaW5kb3dzKSAqLw0KPiA+ICAgICAgICAgfTsNCj4gPiArICAgICAgIGJv b2wgYWxsb2NfZnJvbV9odWdlcGFnZTsNCj4gPiAgICAgICAgIGVudW0gcnRlX2ludHJfaGFuZGxl X3R5cGUgdHlwZTsgIC8qKjwgaGFuZGxlIHR5cGUgKi8NCj4gPiAgICAgICAgIHVpbnQzMl90IG1h eF9pbnRyOyAgICAgICAgICAgICAvKio8IG1heCBpbnRlcnJ1cHQgcmVxdWVzdGVkICovDQo+ID4g ICAgICAgICB1aW50MzJfdCBuYl9lZmQ7ICAgICAgICAgICAgICAgLyoqPCBudW1iZXIgb2YgYXZh aWxhYmxlIGVmZChldmVudCBmZCkgKi8NCj4gPiAgICAgICAgIHVpbnQ4X3QgZWZkX2NvdW50ZXJf c2l6ZTsgICAgICAvKio8IHNpemUgb2YgZWZkIGNvdW50ZXIsIHVzZWQgZm9yIHZkZXYgKi8NCj4g PiArICAgICAgIHVpbnQxNl90IG5iX2ludHI7DQo+ID4gKyAgICAgICAgICAgICAgIC8qKjwgTWF4 IHZlY3RvciBjb3VudCwgZGVmYXVsdA0KPiA+ICsgUlRFX01BWF9SWFRYX0lOVFJfVkVDX0lEICov DQo+ID4gICAgICAgICBpbnQgZWZkc1tSVEVfTUFYX1JYVFhfSU5UUl9WRUNfSURdOyAgLyoqPCBp bnRyIHZlY3RvcnMvZWZkcw0KPiBtYXBwaW5nICovDQo+ID4gICAgICAgICBzdHJ1Y3QgcnRlX2Vw b2xsX2V2ZW50IGVsaXN0W1JURV9NQVhfUlhUWF9JTlRSX1ZFQ19JRF07DQo+ID4gLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyoqPCBpbnRyIHZlY3RvciBlcG9sbCBldmVu dCAqLw0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IC8qKjwgaW50ciB2ZWN0b3IgZXBvbGwgZXZlbnQgKi8NCj4gPiArICAgICAgIHVpbnQxNl90IHZl Y19saXN0X3NpemU7DQo+ID4gICAgICAgICBpbnQgKmludHJfdmVjOyAgICAgICAgICAgICAgICAg LyoqPCBpbnRyIHZlY3RvciBudW1iZXIgYXJyYXkgKi8NCj4gPiAgfTsNCj4gPg0KPiA+IGRpZmYg LS1naXQgYS9saWIvZWFsL3ZlcnNpb24ubWFwIGIvbGliL2VhbC92ZXJzaW9uLm1hcCBpbmRleA0K PiA+IGJlZWI5ODZhZGMuLjU2MTA4ZDA5OTggMTAwNjQ0DQo+ID4gLS0tIGEvbGliL2VhbC92ZXJz aW9uLm1hcA0KPiA+ICsrKyBiL2xpYi9lYWwvdmVyc2lvbi5tYXANCj4gPiBAQCAtNDI2LDYgKzQy NiwzNiBAQCBFWFBFUklNRU5UQUwgew0KPiA+DQo+ID4gICAgICAgICAjIGFkZGVkIGluIDIxLjA4 DQo+ID4gICAgICAgICBydGVfcG93ZXJfbW9uaXRvcl9tdWx0aTsgIyBXSU5ET1dTX05PX0VYUE9S VA0KPiA+ICsNCj4gPiArICAgICAgICMgYWRkZWQgaW4gMjEuMTENCj4gPiArICAgICAgIHJ0ZV9p bnRyX2hhbmRsZV9mZF9zZXQ7DQo+ID4gKyAgICAgICBydGVfaW50cl9oYW5kbGVfZmRfZ2V0Ow0K PiA+ICsgICAgICAgcnRlX2ludHJfaGFuZGxlX2Rldl9mZF9zZXQ7DQo+ID4gKyAgICAgICBydGVf aW50cl9oYW5kbGVfZGV2X2ZkX2dldDsNCj4gPiArICAgICAgIHJ0ZV9pbnRyX2hhbmRsZV90eXBl X3NldDsNCj4gPiArICAgICAgIHJ0ZV9pbnRyX2hhbmRsZV90eXBlX2dldDsNCj4gPiArICAgICAg IHJ0ZV9pbnRyX2hhbmRsZV9pbnN0YW5jZV9hbGxvYzsNCj4gPiArICAgICAgIHJ0ZV9pbnRyX2hh bmRsZV9pbnN0YW5jZV9pbmRleF9nZXQ7DQo+ID4gKyAgICAgICBydGVfaW50cl9oYW5kbGVfaW5z dGFuY2VfZnJlZTsNCj4gPiArICAgICAgIHJ0ZV9pbnRyX2hhbmRsZV9pbnN0YW5jZV9pbmRleF9z ZXQ7DQo+ID4gKyAgICAgICBydGVfaW50cl9oYW5kbGVfZXZlbnRfbGlzdF91cGRhdGU7DQo+ID4g KyAgICAgICBydGVfaW50cl9oYW5kbGVfbWF4X2ludHJfc2V0Ow0KPiA+ICsgICAgICAgcnRlX2lu dHJfaGFuZGxlX21heF9pbnRyX2dldDsNCj4gPiArICAgICAgIHJ0ZV9pbnRyX2hhbmRsZV9uYl9l ZmRfc2V0Ow0KPiA+ICsgICAgICAgcnRlX2ludHJfaGFuZGxlX25iX2VmZF9nZXQ7DQo+ID4gKyAg ICAgICBydGVfaW50cl9oYW5kbGVfbmJfaW50cl9nZXQ7DQo+ID4gKyAgICAgICBydGVfaW50cl9o YW5kbGVfZWZkc19pbmRleF9zZXQ7DQo+ID4gKyAgICAgICBydGVfaW50cl9oYW5kbGVfZWZkc19p bmRleF9nZXQ7DQo+ID4gKyAgICAgICBydGVfaW50cl9oYW5kbGVfZWZkc19iYXNlOw0KPiA+ICsg ICAgICAgcnRlX2ludHJfaGFuZGxlX2VsaXN0X2luZGV4X3NldDsNCj4gPiArICAgICAgIHJ0ZV9p bnRyX2hhbmRsZV9lbGlzdF9pbmRleF9nZXQ7DQo+ID4gKyAgICAgICBydGVfaW50cl9oYW5kbGVf ZWZkX2NvdW50ZXJfc2l6ZV9zZXQ7DQo+ID4gKyAgICAgICBydGVfaW50cl9oYW5kbGVfZWZkX2Nv dW50ZXJfc2l6ZV9nZXQ7DQo+ID4gKyAgICAgICBydGVfaW50cl9oYW5kbGVfdmVjX2xpc3RfYWxs b2M7DQo+ID4gKyAgICAgICBydGVfaW50cl9oYW5kbGVfdmVjX2xpc3RfaW5kZXhfc2V0Ow0KPiA+ ICsgICAgICAgcnRlX2ludHJfaGFuZGxlX3ZlY19saXN0X2luZGV4X2dldDsNCj4gPiArICAgICAg IHJ0ZV9pbnRyX2hhbmRsZV92ZWNfbGlzdF9mcmVlOw0KPiA+ICsgICAgICAgcnRlX2ludHJfaGFu ZGxlX3ZlY19saXN0X2Jhc2U7DQo+ID4gIH07DQo+ID4NCj4gPiAgSU5URVJOQUwgew0KPiA+IC0t DQo+ID4gMi4xOC4wDQo+ID4NCj4gDQo+IA0KPiAtLQ0KPiBEYXZpZCBNYXJjaGFuZA0KDQo=