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 C70D5A0524; Wed, 14 Apr 2021 06:55:16 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 8DA0A16167B; Wed, 14 Apr 2021 06:55:16 +0200 (CEST) Received: from NAM12-DM6-obe.outbound.protection.outlook.com (mail-dm6nam12on2089.outbound.protection.outlook.com [40.107.243.89]) by mails.dpdk.org (Postfix) with ESMTP id C462D161668 for ; Wed, 14 Apr 2021 06:55:13 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=IbtpS7JUDq/8bT+8Kf8utVFOv7MfatNuooBKxCXID+3GWu5A2HAYz9tsQR1uy/7RtUT60DJmAEyfeNE9fCStIknRb2DiMPWHN4v9wHv+eBUhuGSgFOj7poSLNgEoTTVw76k+1S3hboJ5VCUUFNg+oNudBqHDLjH2zQAn9rafIxntTzbhbbNjLy4NBZlz3pE3UrRkZg3NZVsnEEDNhdIG7fQTufaUxR+FgxnpucdzshiK6t0/NVLajUd6AX5w4/DyOpDisEQrGjPYRjnHduTfd9UbJLAyCbFyoVUq02jlFUJc1lif3j7N5VEm9KLQVyDTuHOdOzwUgmc8WpMmjSKypw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=U3RKC+698WICrCKspCT0QnUJXT0jvemndp0t9oTemCA=; b=lPDip/dGQvXEhKExx0noZRwT49wFniYWP3vgwAQP8GG0Fg7DfeqoxYKUQos6QTuqYy/ahaLI2vydvOz26Kk0w+GAQZG2ukhL+llR/U4j1AYSu52KVo4xclNZY1eQeQT98iKb/sG09MGHYxMFouU8vXeYrJjA2rTGkZhTZO/glry5AFEJ/34lS2bmuV26m6OdIiSRT/NZr4TUvJd3uEc3uXJJYfKIdB5EjNbfqDPHFbe0saIJEn1s/w0jHoFMhqSNjqNyKB0034Nu/sHbmSJlfYKLm01nQrMcaAzfV0+T/pwtogrkOwU8grj11Q/8k5mS8w0hQSszeCECyW4BnJVM1Q== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nvidia.com; dmarc=pass action=none header.from=nvidia.com; dkim=pass header.d=nvidia.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=U3RKC+698WICrCKspCT0QnUJXT0jvemndp0t9oTemCA=; b=UwUWNUdvled/Qv5OV8Hv/AdtezeInob6H75Vc7oXA7k4X036IjGZTj5V5gTe8mdRgnCgMT8OtHbrGfOydDUGKS5OOQxk43/4qsCn1rSNKogbA41Fy84CF/yKgJwl68v1OCUSsrKgANijAk9nTg0gQSvJN2cBTDEyLDXQrhwJq6zsleso6ihMsgab/W+wF0zaT8OIOTdorHb8q9GaD3xuBAhC4OyWkUTPlCH7APxcRo1cYgHl08IFOACZDjXtsZHWaS7tluKZqPeLDqqTRHRptO/F7/4wp+7/tz9LTlsewC73EP8QR6ZeZUv+YicDPN60GYX97sRLjevFivf6kWQq8Q== Received: from DM6PR12MB4090.namprd12.prod.outlook.com (2603:10b6:5:217::11) by DM5PR12MB1580.namprd12.prod.outlook.com (2603:10b6:4:10::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4042.16; Wed, 14 Apr 2021 04:55:05 +0000 Received: from DM6PR12MB4090.namprd12.prod.outlook.com ([fe80::fd19:da7e:347b:87da]) by DM6PR12MB4090.namprd12.prod.outlook.com ([fe80::fd19:da7e:347b:87da%4]) with mapi id 15.20.4020.023; Wed, 14 Apr 2021 04:55:05 +0000 From: Li Zhang To: "Dumitrescu, Cristian" , "dekelp@nvidia.com" , Ori Kam , Slava Ovsiienko , Matan Azrad , Shahaf Shuler , "lironh@marvell.com" , Wisam Monther , "Li, Xiaoyun" , "Singh, Jasvinder" , NBU-Contact-Thomas Monjalon , "Yigit, Ferruh" , Andrew Rybchenko , Ray Kinsella , Neil Horman , Jerin Jacob , Hemant Agrawal CC: "dev@dpdk.org" , Raslan Darawsheh , Roni Bar Yanai , Haifei Luo , "Jiawei(Jonny) Wang" Thread-Topic: [PATCH v3 1/2] ethdev: add pre-defined meter policy API Thread-Index: AQHXMHW5yIwGcMe8JEqKD9UyeVyGTKqzW1+Q Date: Wed, 14 Apr 2021 04:55:05 +0000 Message-ID: References: <20210318085815.804896-1-lizh@nvidia.com> <20210413001428.1999959-1-lizh@nvidia.com> <20210413001428.1999959-2-lizh@nvidia.com> In-Reply-To: Accept-Language: zh-CN, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: intel.com; dkim=none (message not signed) header.d=none;intel.com; dmarc=none action=none header.from=nvidia.com; x-originating-ip: [139.227.253.12] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: d0f43cab-6949-434e-4e1c-08d8ff017869 x-ms-traffictypediagnostic: DM5PR12MB1580: x-ld-processed: 43083d15-7273-40c1-b7db-39efd9ccc17a,ExtAddr x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:12; x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: XXDSWOLZLMwaoo6J276H06zq2jphLGTTDcBcJ/L2Fsx6CFr1+0fcY4Z5LGO1UkCrexPLTkG7u+zKfXB7/lbFoXxs+bSqcrDGf9DPkwHUqGdAkOWRkpOzyDZ2rmVfd7l2V1+7ao4etzRHV4HCrQYChOHFjSjee5bB1zyHUbCZgccjSOVjbX8n/iwbqUL9UUsMVW52xM25DQs+etitpmf2swcyW7a8OIIONB+zH3r7DGsnDGXmytD2D7NHSWBuLKgN7LbEirQoyscQc56BWWygA0q2R6wTDTsQOcEglGFxPqlN2Bxm+z9l6DAbrJhpisDc4dB4PI2pLT/5MILRXp/w+viQkwqf6iq1CHVodZbfmYEIYXLqjtqJ3X7QFMMCm4zu8ILZ/8M34wRLWqgLAogEHQhsMR6J0iMO5MOZfvJKon0sFmgGkBaECc/H4DimJPVdPPSZ4hUe6FpcXq60bVx+CcXf/qubmyfOglFqt6f98FRlLjqV9EwI+J+i6acWTFa+SZfdpFId1QqZV7FSohVJznek3AE2Rz9d+RGbcwMyideiNN0xj+sOK7vWnvzq+s75b1hSrpQ/RcWihT7rWKkSwCU710EoIm5kNmcQ36mV7Eub5lAS95hc3ApGp0iCgat9CPGZWC6aLOwcGq7yfFyALEaN3Xqhb5msFN7Ymg2ocJY= x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DM6PR12MB4090.namprd12.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(376002)(39860400002)(346002)(396003)(136003)(366004)(7416002)(8676002)(86362001)(8936002)(4326008)(83380400001)(107886003)(921005)(52536014)(6506007)(53546011)(5660300002)(2906002)(122000001)(38100700002)(9686003)(54906003)(110136005)(316002)(30864003)(7696005)(33656002)(55016002)(76116006)(66446008)(64756008)(66556008)(66946007)(66476007)(478600001)(186003)(71200400001)(26005)(579004)(559001)(569008); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata: =?utf-8?B?b1J1UHRjTmt2dUpPKzRPc28zdldLV3Yzc2NEeW1GUFVJVnk4MGQ1STBlM2VG?= =?utf-8?B?bWFQb3NFTDRZTFJCb1U4bGg4SXRHT0JadEpDWng5dWZCZXY1SFh1VHdHY1hU?= =?utf-8?B?cVhnVzJUN2tjZndmMDdVVUUvVU93dUVhc0g3RDJhRHRFTDEzbzlzNGxFOTh3?= =?utf-8?B?OWsxa1QwTG9pcExyOEgyRWtJWjNOZmFpa2JKdjRPRjFaVVRLZ0RvTWxYZnRY?= =?utf-8?B?ekZQdFhHOFl2QnY2a24vSWlCdWo0SGQxN01HRmVGeEV4QUdlVFl5R1BpRWk1?= =?utf-8?B?SjNiSk1sem9MUWE5eHpGZktXZ3BZUW00K09LeTdTZDlVbUJtS0ZQSTlxVWEy?= =?utf-8?B?QXVxaHZMNlZiZWRxVko4NHEwZWtXcjBLc1hXazJ4SzhTcDVnb3hrS1pEcS8y?= =?utf-8?B?ZStsKzE5UFdPbkYyb2NRTjY3SzVWYmtMeEZSY1RUSnhYZ3g2OHJpa3VHZ1Bq?= =?utf-8?B?am5EQmRoM2RaMngvWUUydzhidTN5b3A0M2NpU2VNTkVGaHlLb0VOdTVKM1BP?= =?utf-8?B?VXBPbjVUak5ITG5PZWRJeVAybHo0dnNFYy9UNXMzTTAzTE1sR1ozUGowVXVv?= =?utf-8?B?UXlMc3I3dERSaDR1Y3crQlFVK3g2R0VBcWNiTFA5dlpYbjdySnZ5TTVsTk10?= =?utf-8?B?TVVJNjdpMWx3VWNIdGpYTU1EK2xHaUUzVTdpNDRGcXRBTlJGNkptb0o5SkZw?= =?utf-8?B?ZjBxaWhJZUJMNUExQktpM2pMdFBMRVJ4MHpwQitITktPRkljUWRBUHVVMmxq?= =?utf-8?B?eDZiTkJlTTRwaTZiVzN2cTVYMDBnZXpIMmFaRndaYjIvL1B4TG5LRzNOOWRs?= =?utf-8?B?cHFOcXVMOUtuWVVCVzNrQSs2QSsxQ2xJRmE0OGVXWWRFa1RrTmdRT3lLc2F0?= =?utf-8?B?ZVJJdkoxSitUbWZJczg5TU9SYVl4aDJNOVZFMGtpTnVib0svWjNiajBMcW85?= =?utf-8?B?LzNtVFhvcmUxYjJ5UkFmaTg3a1M2RzA2UEEvdU8xeHVaT0FCeHJUcHZsa3Bz?= =?utf-8?B?S3FGdHdTMkdMdmlqM0owSlJlOHo5UEFXOVd6eGVOREsxbks3Zm9jSEVMRS9h?= =?utf-8?B?cmZDRmJ4QkhlcVFReExZbGpyV2FjODZxUGdDd25HRmVVa3ZTVWlrUGhRSFFH?= =?utf-8?B?N0h3SHA3cmQ1dGdoS3JOZW9PeUt6TGU3eThQQnZmRWdhcmRHa2N6bUtsNHhs?= =?utf-8?B?MVpPc2NuaU1rY0tXdEY4NkJMcE9ZTVAvUEpEaGFTRkdPenROcXlIUXlMUitW?= =?utf-8?B?elFNWHJTYitmNU5yRFZSQkE2Q2Q1dFB1MWttK3R2enZmUkxEVUg5ZDgvamFJ?= =?utf-8?B?NXQzeTM2Wi9YYkNzMkVLSjNZYVF2c043dnBiVHhheGZvSVNDQVd6dlBYdlFU?= =?utf-8?B?YlZxUzk2ejJ1YTN6RW9yd1EzWW02bjFnclhqNEdDMFVaQUxSbEdoRGhYL0Y0?= =?utf-8?B?R1dLbUFaZUxqRHBMTlk2RXhWWDJNWm1SUThjTnBINGcvRFpCVUQxVjJibmNh?= =?utf-8?B?TWNDcWhrdE5vNE9Db3oxaDVybnhHQ09KOEI3MTBmWE9ma2twYUNlL3NpdXR5?= =?utf-8?B?TjZMRFdIczd2ZU9KY2twN0dMcGRVWGhadHpvSDlNUnV3RjRjdjdnMGl3cE1I?= =?utf-8?B?bnJEWm1wRXJYSWNGeDlkbXBETTFVWHBXSEFhVVJrcHg0empNTXQ1bkxCeXUr?= =?utf-8?B?STUwZGdRUlFmc0VFaStDUFlxR0JuTlZ3ZnVkZTZ4SXJzeTJCN2tiNk9VbENo?= =?utf-8?Q?SgzW7qk5IiF2SkadWK9ne2zCdywI4/T1iWdN/7k?= Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: DM6PR12MB4090.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: d0f43cab-6949-434e-4e1c-08d8ff017869 X-MS-Exchange-CrossTenant-originalarrivaltime: 14 Apr 2021 04:55:05.2127 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: FqAELmCxTBrCHabLaR+KFsyJpOhOA/84mWp8qVhmE9uUD+wF5kg1j3RNFkhcdWLT X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM5PR12MB1580 Subject: Re: [dpdk-dev] [PATCH v3 1/2] ethdev: add pre-defined meter policy API 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" SGkgQ3Jpc3RpYW4sDQo+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+IEZyb206IGRldiA8 ZGV2LWJvdW5jZXNAZHBkay5vcmc+IE9uIEJlaGFsZiBPZiBEdW1pdHJlc2N1LCBDcmlzdGlhbg0K PiBTZW50OiBUdWVzZGF5LCBBcHJpbCAxMywgMjAyMSAxMTowMCBQTQ0KPiBUbzogTGkgWmhhbmcg PGxpemhAbnZpZGlhLmNvbT47IGRla2VscEBudmlkaWEuY29tOyBPcmkgS2FtDQo+IDxvcmlrYUBu dmlkaWEuY29tPjsgU2xhdmEgT3ZzaWllbmtvIDx2aWFjaGVzbGF2b0BudmlkaWEuY29tPjsgTWF0 YW4NCj4gQXpyYWQgPG1hdGFuQG52aWRpYS5jb20+OyBTaGFoYWYgU2h1bGVyIDxzaGFoYWZzQG52 aWRpYS5jb20+Ow0KPiBsaXJvbmhAbWFydmVsbC5jb207IFdpc2FtIE1vbnRoZXIgPHdpc2FtbUBu dmlkaWEuY29tPjsgTGksIFhpYW95dW4NCj4gPHhpYW95dW4ubGlAaW50ZWwuY29tPjsgU2luZ2gs IEphc3ZpbmRlciA8amFzdmluZGVyLnNpbmdoQGludGVsLmNvbT47IE5CVS0NCj4gQ29udGFjdC1U aG9tYXMgTW9uamFsb24gPHRob21hc0Btb25qYWxvbi5uZXQ+OyBZaWdpdCwgRmVycnVoDQo+IDxm ZXJydWgueWlnaXRAaW50ZWwuY29tPjsgQW5kcmV3IFJ5YmNoZW5rbw0KPiA8YW5kcmV3LnJ5YmNo ZW5rb0Bva3RldGxhYnMucnU+OyBSYXkgS2luc2VsbGEgPG1kckBhc2hyb2UuZXU+OyBOZWlsDQo+ IEhvcm1hbiA8bmhvcm1hbkB0dXhkcml2ZXIuY29tPjsgSmVyaW4gSmFjb2IgPGplcmluamFjb2Jr QGdtYWlsLmNvbT47DQo+IEhlbWFudCBBZ3Jhd2FsIDxoZW1hbnQuYWdyYXdhbEBueHAuY29tPg0K PiBDYzogZGV2QGRwZGsub3JnOyBSYXNsYW4gRGFyYXdzaGVoIDxyYXNsYW5kQG52aWRpYS5jb20+ OyBSb25pIEJhciBZYW5haQ0KPiA8cm9uaWJhQG52aWRpYS5jb20+OyBIYWlmZWkgTHVvIDxoYWlm ZWlsQG52aWRpYS5jb20+OyBKaWF3ZWkoSm9ubnkpIFdhbmcNCj4gPGppYXdlaXdAbnZpZGlhLmNv bT4NCj4gU3ViamVjdDogUmU6IFtkcGRrLWRldl0gW1BBVENIIHYzIDEvMl0gZXRoZGV2OiBhZGQg cHJlLWRlZmluZWQgbWV0ZXIgcG9saWN5DQo+IEFQSQ0KPiANCj4gRXh0ZXJuYWwgZW1haWw6IFVz ZSBjYXV0aW9uIG9wZW5pbmcgbGlua3Mgb3IgYXR0YWNobWVudHMNCj4gDQo+IA0KPiBIaSBMaSwN Cj4gDQo+IEhlcmUgYXJlIHNvbWUgaW5pdGlhbCBjb21tZW50cyB3aGlsZSB3YWl0aW5nIGZvciBh IG5ldyB2ZXJzaW9uIHRoYXQgYXBwbGllcw0KPiBjbGVhbmx5Lg0KPiANCj4gPiAtLS0tLU9yaWdp bmFsIE1lc3NhZ2UtLS0tLQ0KPiA+IEZyb206IExpIFpoYW5nIDxsaXpoQG52aWRpYS5jb20+DQo+ ID4gU2VudDogVHVlc2RheSwgQXByaWwgMTMsIDIwMjEgMToxNCBBTQ0KPiA+IFRvOiBkZWtlbHBA bnZpZGlhLmNvbTsgb3Jpa2FAbnZpZGlhLmNvbTsgdmlhY2hlc2xhdm9AbnZpZGlhLmNvbTsNCj4g PiBtYXRhbkBudmlkaWEuY29tOyBzaGFoYWZzQG52aWRpYS5jb207IER1bWl0cmVzY3UsIENyaXN0 aWFuDQo+ID4gPGNyaXN0aWFuLmR1bWl0cmVzY3VAaW50ZWwuY29tPjsgbGlyb25oQG1hcnZlbGwu Y29tOyBXaXNhbSBKYWRkbw0KPiA+IDx3aXNhbW1AbnZpZGlhLmNvbT47IExpLCBYaWFveXVuIDx4 aWFveXVuLmxpQGludGVsLmNvbT47IFNpbmdoLA0KPiBKYXN2aW5kZXINCj4gPiA8amFzdmluZGVy LnNpbmdoQGludGVsLmNvbT47IFRob21hcyBNb25qYWxvbiA8dGhvbWFzQG1vbmphbG9uLm5ldD47 DQo+ID4gWWlnaXQsIEZlcnJ1aCA8ZmVycnVoLnlpZ2l0QGludGVsLmNvbT47IEFuZHJldyBSeWJj aGVua28NCj4gPiA8YW5kcmV3LnJ5YmNoZW5rb0Bva3RldGxhYnMucnU+OyBSYXkgS2luc2VsbGEg PG1kckBhc2hyb2UuZXU+OyBOZWlsDQo+ID4gSG9ybWFuIDxuaG9ybWFuQHR1eGRyaXZlci5jb20+ DQo+ID4gQ2M6IGRldkBkcGRrLm9yZzsgcmFzbGFuZEBudmlkaWEuY29tOyByb25pYmFAbnZpZGlh LmNvbTsgSGFpZmVpIEx1bw0KPiA+IDxoYWlmZWlsQG52aWRpYS5jb20+OyBKaWF3ZWkgV2FuZyA8 amlhd2Vpd0BudmlkaWEuY29tPg0KPiA+IFN1YmplY3Q6IFtQQVRDSCB2MyAxLzJdIGV0aGRldjog YWRkIHByZS1kZWZpbmVkIG1ldGVyIHBvbGljeSBBUEkNCj4gPg0KPiA+IEN1cnJlbnRseSwgdGhl IGZsb3cgbWV0ZXIgcG9saWN5IGRvZXMgbm90IHN1cHBvcnQgbXVsdGlwbGUgYWN0aW9ucw0KPiA+ IHBlciBjb2xvcjsgYWxzbyB0aGUgYWxsb3dlZCBhY3Rpb24gdHlwZXMgcGVyIGNvbG9yIGFyZSB2 ZXJ5IGxpbWl0ZWQuDQo+ID4gSW4gYWRkaXRpb24sIHRoZSBwb2xpY3kgY2Fubm90IGJlIHByZS1k ZWZpbmVkLg0KPiA+DQo+ID4gRHVlIHRvIHRoZSBncm93aW5nIGluIGZsb3cgYWN0aW9ucyBvZmZs b2FkIGFiaWxpdGllcyB0aGVyZSBpcyBhIHBvdGVudGlhbA0KPiA+IGZvciB0aGUgdXNlciB0byB1 c2UgdmFyaWV0eSBvZiBhY3Rpb25zIHBlciBjb2xvciBkaWZmZXJlbnRseS4NCj4gPiBUaGlzIG5l dyBtZXRlciBwb2xpY3kgQVBJIGNvbWVzIHRvIGFsbG93IHRoaXMgcG90ZW50aWFsIGluIHRoZSBt b3N0IGV0aGRldg0KPiA+IGNvbW1vbiB3YXkgdXNpbmcgcnRlX2Zsb3cgYWN0aW9uIGRlZmluaXRp b24uDQo+ID4gQSBsaXN0IG9mIHJ0ZV9mbG93IGFjdGlvbnMgd2lsbCBiZSBwcm92aWRlZCBieSB0 aGUgdXNlciBwZXIgY29sb3INCj4gPiBpbiBvcmRlciB0byBjcmVhdGUgYSBtZXRlciBwb2xpY3ku DQo+ID4gSW4gYWRkaXRpb24sIHRoZSBBUEkgZm9yY2VzIHRvIHByZS1kZWZpbmUgdGhlIHBvbGlj eSBiZWZvcmUNCj4gPiB0aGUgbWV0ZXJzIGNyZWF0aW9uIGluIG9yZGVyIHRvIGFsbG93IHNoYXJp bmcgb2Ygc2luZ2xlIHBvbGljeQ0KPiA+IHdpdGggbXVsdGlwbGUgbWV0ZXJzIGVmZmljaWVudGx5 Lg0KPiA+DQo+ID4gbWV0ZXJfcG9saWN5X2lkIGlzIGFkZGVkIGludG8gc3RydWN0IHJ0ZV9tdHJf cGFyYW1zLg0KPiA+IFNvIHRoYXQgaXQgY2FuIGdldCB0aGUgcG9saWN5IGR1cmluZyB0aGUgbWV0 ZXJzIGNyZWF0aW9uLg0KPiA+DQo+ID4gQWxsb3cgY29sb3JpbmcgdGhlIHBhY2tldCB1c2luZyBh IG5ldyBydGVfZmxvd19hY3Rpb25fY29sb3INCj4gPiBhcyBjb3VsZCBiZSBkb25lIGJ5IHRoZSBv bGQgcG9saWN5IEFQSS4NCj4gPg0KPiA+IFRoZSBuZXh0IEFQSSBmdW5jdGlvbiB3ZXJlIGFkZGVk Og0KPiA+IC0gcnRlX210cl9tZXRlcl9wb2xpY3lfY3JlYXRlDQo+ID4gLSBydGVfbXRyX21ldGVy X3BvbGljeV9kZWxldGUNCj4gPiAtIHJ0ZV9tdHJfbWV0ZXJfcG9saWN5X3VwZGF0ZQ0KPiA+IC0g cnRlX210cl9tZXRlcl9wb2xpY3lfdmFsaWRhdGUNCj4gPiBUaGUgbmV4dCBzdHJ1Y3Qgd2FzIGNo YW5nZWQ6DQo+ID4gLSBydGVfbXRyX3BhcmFtcw0KPiA+IC0gcnRlX210cl9jYXBhYmlsaXRpZXMN Cj4gPiBUaGUgbmV4dCBBUEkgd2FzIGRlbGV0ZWQ6DQo+ID4gLSBydGVfbXRyX3BvbGljZXJfYWN0 aW9uc191cGRhdGUNCj4gPg0KPiA+IFRvIHN1cHBvcnQgdGhpcyBBUEkgdGhlIGZvbGxvd2luZyBh cHAgd2VyZSBjaGFuZ2VkOg0KPiA+IGFwcC90ZXN0LWZsb3ctcGVyZjogY2xlYW4gbWV0ZXIgcG9s aWNlcg0KPiA+IGFwcC90ZXN0cG1kOiBjbGVhbiBtZXRlciBwb2xpY2VyDQo+ID4NCj4gPiBUbyBz dXBwb3J0IHRoaXMgQVBJIHRoZSBmb2xsb3dpbmcgZHJpdmVycyB3ZXJlIGNoYW5nZWQ6DQo+ID4g bmV0L3NvZnRuaWM6IHN1cHBvcnQgbWV0ZXIgcG9saWN5IEFQSQ0KPiA+IDEuIGNsZWFucyBtZXRl ciBydGVfbXRyX3BvbGljZXJfYWN0aW9uLg0KPiA+IDIuIFN1cHBvcnQgcG9saWN5IEFQSSB0byBn ZXQgY29sb3IgYWN0aW9uIGFzIHBvbGljZXIgYWN0aW9uIGRpZC4NCj4gPiAgICBUaGUgY29sb3Ig YWN0aW9uIHdpbGwgYmUgbWFwcGVkIGludG8gcnRlX3RhYmxlX2FjdGlvbl9wb2xpY2VyLg0KPiA+ DQo+ID4gbmV0L21seDU6IGNsZWFuIG1ldGVyIGNyZWF0aW9uIG1hbmFnZW1lbnQNCj4gPiBDbGVh bnMgYW5kIGJyZWFrcyBwYXJ0IG9mIHRoZSBjdXJyZW50IG1ldGVyIG1hbmFnZW1lbnQNCj4gPiBp biBvcmRlciB0byBhbGxvdyBiZXR0ZXIgZGVzaWduIHdpdGggcG9saWN5IEFQSS4NCj4gPg0KPiA+ IFNpZ25lZC1vZmYtYnk6IExpIFpoYW5nIDxsaXpoQG52aWRpYS5jb20+DQo+ID4gU2lnbmVkLW9m Zi1ieTogSGFpZmVpIEx1byA8aGFpZmVpbEBudmlkaWEuY29tPg0KPiA+IFNpZ25lZC1vZmYtYnk6 IEppYXdlaSBXYW5nIDxqaWF3ZWl3QG52aWRpYS5jb20+DQo+ID4gQWNrZWQtYnk6IE1hdGFuIEF6 cmFkIDxtYXRhbkBudmlkaWEuY29tPg0KPiA+IC0tLQ0KPiA+ICBhcHAvdGVzdC1mbG93LXBlcmYv bWFpbi5jICAgICAgICAgICAgICAgICAgICAgfCAgIDcgLQ0KPiA+ICBhcHAvdGVzdC1wbWQvY21k bGluZS5jICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDEgLQ0KPiA+ICBhcHAvdGVzdC1wbWQv Y21kbGluZV9tdHIuYyAgICAgICAgICAgICAgICAgICAgfCAxNzIgLS0tLS0tLQ0KPiA+ICBhcHAv dGVzdC1wbWQvY21kbGluZV9tdHIuaCAgICAgICAgICAgICAgICAgICAgfCAgIDEgLQ0KPiA+ICBk b2MvZ3VpZGVzL3Byb2dfZ3VpZGUvcnRlX2Zsb3cucnN0ICAgICAgICAgICAgfCAgMjEgKw0KPiA+ ICAuLi4vdHJhZmZpY19tZXRlcmluZ19hbmRfcG9saWNpbmcucnN0ICAgICAgICAgfCAgMTYgKy0N Cj4gPiAgZG9jL2d1aWRlcy9yZWxfbm90ZXMvcmVsZWFzZV8yMV8wNS5yc3QgICAgICAgIHwgIDIy ICstDQo+ID4gIGRvYy9ndWlkZXMvdGVzdHBtZF9hcHBfdWcvdGVzdHBtZF9mdW5jcy5yc3QgICB8 ICAxOCAtDQo+ID4gIGRyaXZlcnMvbmV0L21seDUvbWx4NS5oICAgICAgICAgICAgICAgICAgICAg ICB8ICAyNCArLQ0KPiA+ICBkcml2ZXJzL25ldC9tbHg1L21seDVfZmxvdy5jICAgICAgICAgICAg ICAgICAgfCAgNDYgLS0NCj4gPiAgZHJpdmVycy9uZXQvbWx4NS9tbHg1X2Zsb3cuaCAgICAgICAg ICAgICAgICAgIHwgIDE4ICstDQo+ID4gIGRyaXZlcnMvbmV0L21seDUvbWx4NV9mbG93X2Fzby5j ICAgICAgICAgICAgICB8ICAgOCArLQ0KPiA+ICBkcml2ZXJzL25ldC9tbHg1L21seDVfZmxvd19k di5jICAgICAgICAgICAgICAgfCA0NjEgKy0tLS0tLS0tLS0tLS0tLS0tDQo+ID4gIGRyaXZlcnMv bmV0L21seDUvbWx4NV9mbG93X21ldGVyLmMgICAgICAgICAgICB8IDM2OSArLS0tLS0tLS0tLS0t LQ0KPiA+ICBkcml2ZXJzL25ldC9zb2Z0bmljL3J0ZV9ldGhfc29mdG5pY19mbG93LmMgICAgfCAg MTkgKy0NCj4gPiAgLi4uL25ldC9zb2Z0bmljL3J0ZV9ldGhfc29mdG5pY19pbnRlcm5hbHMuaCAg IHwgIDE4ICstDQo+ID4gIGRyaXZlcnMvbmV0L3NvZnRuaWMvcnRlX2V0aF9zb2Z0bmljX21ldGVy LmMgICB8IDI2NCArKysrKysrLS0tDQo+ID4gIGxpYi9saWJydGVfZXRoZGV2L3J0ZV9mbG93Lmgg ICAgICAgICAgICAgICAgICB8ICAyMiArDQo+ID4gIGxpYi9saWJydGVfZXRoZGV2L3J0ZV9tdHIu YyAgICAgICAgICAgICAgICAgICB8ICA1NSArKy0NCj4gPiAgbGliL2xpYnJ0ZV9ldGhkZXYvcnRl X210ci5oICAgICAgICAgICAgICAgICAgIHwgMjE1ICsrKysrKy0tDQo+ID4gIGxpYi9saWJydGVf ZXRoZGV2L3J0ZV9tdHJfZHJpdmVyLmggICAgICAgICAgICB8ICA0NCArLQ0KPiA+ICBsaWIvbGli cnRlX2V0aGRldi92ZXJzaW9uLm1hcCAgICAgICAgICAgICAgICAgfCAgIDUgKy0NCj4gPiAgMjIg ZmlsZXMgY2hhbmdlZCwgNTY4IGluc2VydGlvbnMoKyksIDEyNTggZGVsZXRpb25zKC0pDQo+ID4N Cj4gPiBkaWZmIC0tZ2l0IGEvYXBwL3Rlc3QtZmxvdy1wZXJmL21haW4uYyBiL2FwcC90ZXN0LWZs b3ctcGVyZi9tYWluLmMNCj4gPiBpbmRleCAwYWVmNzY3MzUwLi5jMWYzOGNiZWM1IDEwMDY0NA0K PiA+IC0tLSBhL2FwcC90ZXN0LWZsb3ctcGVyZi9tYWluLmMNCj4gPiArKysgYi9hcHAvdGVzdC1m bG93LXBlcmYvbWFpbi5jDQo+ID4gQEAgLTkyMSwxMyArOTIxLDYgQEAgY3JlYXRlX21ldGVyX3J1 bGUoaW50IHBvcnRfaWQsIHVpbnQzMl90IGNvdW50ZXIpDQo+ID4NCj4gPiAgICAgICAvKmNyZWF0 ZSBtZXRlciovDQo+ID4gICAgICAgcGFyYW1zLm1ldGVyX3Byb2ZpbGVfaWQgPSBkZWZhdWx0X3By b2ZfaWQ7DQo+ID4gLSAgICAgcGFyYW1zLmFjdGlvbltSVEVfQ09MT1JfR1JFRU5dID0NCj4gPiAt ICAgICAgICAgICAgIE1UUl9QT0xJQ0VSX0FDVElPTl9DT0xPUl9HUkVFTjsNCj4gPiAtICAgICBw YXJhbXMuYWN0aW9uW1JURV9DT0xPUl9ZRUxMT1ddID0NCj4gPiAtICAgICAgICAgICAgIE1UUl9Q T0xJQ0VSX0FDVElPTl9DT0xPUl9ZRUxMT1c7DQo+ID4gLSAgICAgcGFyYW1zLmFjdGlvbltSVEVf Q09MT1JfUkVEXSA9DQo+ID4gLSAgICAgICAgICAgICBNVFJfUE9MSUNFUl9BQ1RJT05fRFJPUDsN Cj4gPiAtDQo+ID4gICAgICAgcmV0ID0gcnRlX210cl9jcmVhdGUocG9ydF9pZCwgY291bnRlciwg JnBhcmFtcywgMSwgJmVycm9yKTsNCj4gPiAgICAgICBpZiAocmV0ICE9IDApIHsNCj4gPiAgICAg ICAgICAgICAgIHByaW50ZigiUG9ydCAldSBjcmVhdGUgbWV0ZXIgaWR4KCVkKSBlcnJvciglZCkg bWVzc2FnZToNCj4gPiAlc1xuIiwNCj4gPiBkaWZmIC0tZ2l0IGEvYXBwL3Rlc3QtcG1kL2NtZGxp bmUuYyBiL2FwcC90ZXN0LXBtZC9jbWRsaW5lLmMNCj4gPiBpbmRleCBmNDQxMTZiMDg3Li5mYWU3 OWQ0Yzg1IDEwMDY0NA0KPiA+IC0tLSBhL2FwcC90ZXN0LXBtZC9jbWRsaW5lLmMNCj4gPiArKysg Yi9hcHAvdGVzdC1wbWQvY21kbGluZS5jDQo+ID4gQEAgLTE3MDcxLDcgKzE3MDcxLDYgQEAgY21k bGluZV9wYXJzZV9jdHhfdCBtYWluX2N0eFtdID0gew0KPiA+ICAgICAgIChjbWRsaW5lX3BhcnNl X2luc3RfdCAqKSZjbWRfZGVsX3BvcnRfbWV0ZXIsDQo+ID4gICAgICAgKGNtZGxpbmVfcGFyc2Vf aW5zdF90ICopJmNtZF9zZXRfcG9ydF9tZXRlcl9wcm9maWxlLA0KPiA+ICAgICAgIChjbWRsaW5l X3BhcnNlX2luc3RfdCAqKSZjbWRfc2V0X3BvcnRfbWV0ZXJfZHNjcF90YWJsZSwNCj4gPiAtICAg ICAoY21kbGluZV9wYXJzZV9pbnN0X3QgKikmY21kX3NldF9wb3J0X21ldGVyX3BvbGljZXJfYWN0 aW9uLA0KPiA+ICAgICAgIChjbWRsaW5lX3BhcnNlX2luc3RfdCAqKSZjbWRfc2V0X3BvcnRfbWV0 ZXJfc3RhdHNfbWFzaywNCj4gPiAgICAgICAoY21kbGluZV9wYXJzZV9pbnN0X3QgKikmY21kX3No b3dfcG9ydF9tZXRlcl9zdGF0cywNCj4gPiAgICAgICAoY21kbGluZV9wYXJzZV9pbnN0X3QgKikm Y21kX21jYXN0X2FkZHIsDQo+ID4gZGlmZiAtLWdpdCBhL2FwcC90ZXN0LXBtZC9jbWRsaW5lX210 ci5jIGIvYXBwL3Rlc3QtcG1kL2NtZGxpbmVfbXRyLmMNCj4gPiBpbmRleCAzOTgyNzg3ZDIwLi40 NDM5NGUzZWExIDEwMDY0NA0KPiA+IC0tLSBhL2FwcC90ZXN0LXBtZC9jbWRsaW5lX210ci5jDQo+ ID4gKysrIGIvYXBwL3Rlc3QtcG1kL2NtZGxpbmVfbXRyLmMNCj4gPiBAQCAtMTQ2LDUzICsxNDYs NiBAQCBwYXJzZV9tZXRlcl9jb2xvcl9zdHIoY2hhciAqY19zdHIsIHVpbnQzMl90DQo+ID4gKnVz ZV9wcmV2X21ldGVyX2NvbG9yLA0KPiA+ICAgICAgIHJldHVybiAwOw0KPiA+ICB9DQo+ID4NCj4g PiAtc3RhdGljIGludA0KPiA+IC1zdHJpbmdfdG9fcG9saWNlcl9hY3Rpb24oY2hhciAqcykNCj4g PiAtew0KPiA+IC0gICAgIGlmICgoc3RyY21wKHMsICJHIikgPT0gMCkgfHwgKHN0cmNtcChzLCAi ZyIpID09IDApKQ0KPiA+IC0gICAgICAgICAgICAgcmV0dXJuIE1UUl9QT0xJQ0VSX0FDVElPTl9D T0xPUl9HUkVFTjsNCj4gPiAtDQo+ID4gLSAgICAgaWYgKChzdHJjbXAocywgIlkiKSA9PSAwKSB8 fCAoc3RyY21wKHMsICJ5IikgPT0gMCkpDQo+ID4gLSAgICAgICAgICAgICByZXR1cm4gTVRSX1BP TElDRVJfQUNUSU9OX0NPTE9SX1lFTExPVzsNCj4gPiAtDQo+ID4gLSAgICAgaWYgKChzdHJjbXAo cywgIlIiKSA9PSAwKSB8fCAoc3RyY21wKHMsICJyIikgPT0gMCkpDQo+ID4gLSAgICAgICAgICAg ICByZXR1cm4gTVRSX1BPTElDRVJfQUNUSU9OX0NPTE9SX1JFRDsNCj4gPiAtDQo+ID4gLSAgICAg aWYgKChzdHJjbXAocywgIkQiKSA9PSAwKSB8fCAoc3RyY21wKHMsICJkIikgPT0gMCkpDQo+ID4g LSAgICAgICAgICAgICByZXR1cm4gTVRSX1BPTElDRVJfQUNUSU9OX0RST1A7DQo+ID4gLQ0KPiA+ IC0gICAgIHJldHVybiAtMTsNCj4gPiAtfQ0KPiA+IC0NCj4gPiAtc3RhdGljIGludA0KPiA+IC1w YXJzZV9wb2xpY2VyX2FjdGlvbl9zdHJpbmcoY2hhciAqcF9zdHIsIHVpbnQzMl90IGFjdGlvbl9t YXNrLA0KPiA+IC0gICAgIGVudW0gcnRlX210cl9wb2xpY2VyX2FjdGlvbiBhY3Rpb25zW10pDQo+ ID4gLXsNCj4gPiAtICAgICBjaGFyICp0b2tlbjsNCj4gPiAtICAgICBpbnQgY291bnQgPSBfX2J1 aWx0aW5fcG9wY291bnQoYWN0aW9uX21hc2spOw0KPiA+IC0gICAgIGludCBnX2NvbG9yID0gMCwg eV9jb2xvciA9IDAsIGFjdGlvbiwgaTsNCj4gPiAtDQo+ID4gLSAgICAgZm9yIChpID0gMDsgaSA8 IGNvdW50OyBpKyspIHsNCj4gPiAtICAgICAgICAgICAgIHRva2VuID0gc3RydG9rX3IocF9zdHIs IFBBUlNFX0RFTElNSVRFUiwgJnBfc3RyKTsNCj4gPiAtICAgICAgICAgICAgIGlmICh0b2tlbiA9 PSAgTlVMTCkNCj4gPiAtICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOw0KPiA+IC0NCj4g PiAtICAgICAgICAgICAgIGFjdGlvbiA9IHN0cmluZ190b19wb2xpY2VyX2FjdGlvbih0b2tlbik7 DQo+ID4gLSAgICAgICAgICAgICBpZiAoYWN0aW9uID09IC0xKQ0KPiA+IC0gICAgICAgICAgICAg ICAgICAgICByZXR1cm4gLTE7DQo+ID4gLQ0KPiA+IC0gICAgICAgICAgICAgaWYgKGdfY29sb3Ig PT0gMCAmJiAoYWN0aW9uX21hc2sgJiAweDEpKSB7DQo+ID4gLSAgICAgICAgICAgICAgICAgICAg IGFjdGlvbnNbUlRFX0NPTE9SX0dSRUVOXSA9IGFjdGlvbjsNCj4gPiAtICAgICAgICAgICAgICAg ICAgICAgZ19jb2xvciA9IDE7DQo+ID4gLSAgICAgICAgICAgICB9IGVsc2UgaWYgKHlfY29sb3Ig PT0gMCAmJiAoYWN0aW9uX21hc2sgJiAweDIpKSB7DQo+ID4gLSAgICAgICAgICAgICAgICAgICAg IGFjdGlvbnNbUlRFX0NPTE9SX1lFTExPV10gPSBhY3Rpb247DQo+ID4gLSAgICAgICAgICAgICAg ICAgICAgIHlfY29sb3IgPSAxOw0KPiA+IC0gICAgICAgICAgICAgfSBlbHNlDQo+ID4gLSAgICAg ICAgICAgICAgICAgICAgIGFjdGlvbnNbUlRFX0NPTE9SX1JFRF0gPSBhY3Rpb247DQo+ID4gLSAg ICAgfQ0KPiA+IC0gICAgIHJldHVybiAwOw0KPiA+IC19DQo+ID4gLQ0KPiA+ICBzdGF0aWMgaW50 DQo+ID4gIHBhcnNlX211bHRpX3Rva2VuX3N0cmluZyhjaGFyICp0X3N0ciwgdWludDE2X3QgKnBv cnRfaWQsDQo+ID4gICAgICAgdWludDMyX3QgKm10cl9pZCwgZW51bSBydGVfY29sb3IgKipkc2Nw X3RhYmxlKQ0KPiA+IEBAIC0zMDIsMTAgKzI1NSw2IEBAIHN0YXRpYyB2b2lkIGNtZF9zaG93X3Bv cnRfbWV0ZXJfY2FwX3BhcnNlZCh2b2lkDQo+ID4gKnBhcnNlZF9yZXN1bHQsDQo+ID4gICAgICAg ICAgICAgICBjYXAuY29sb3JfYXdhcmVfdHJ0Y21fcmZjMjY5OF9zdXBwb3J0ZWQpOw0KPiA+ICAg ICAgIHByaW50ZigiY2FwLmNvbG9yX2F3YXJlX3RydGNtX3JmYzQxMTVfc3VwcG9ydGVkICUiIFBS SWQzMiAiXG4iLA0KPiA+ICAgICAgICAgICAgICAgY2FwLmNvbG9yX2F3YXJlX3RydGNtX3JmYzQx MTVfc3VwcG9ydGVkKTsNCj4gPiAtICAgICBwcmludGYoImNhcC5wb2xpY2VyX2FjdGlvbl9yZWNv bG9yX3N1cHBvcnRlZCAlIiBQUklkMzIgIlxuIiwNCj4gPiAtICAgICAgICAgICAgIGNhcC5wb2xp Y2VyX2FjdGlvbl9yZWNvbG9yX3N1cHBvcnRlZCk7DQo+ID4gLSAgICAgcHJpbnRmKCJjYXAucG9s aWNlcl9hY3Rpb25fZHJvcF9zdXBwb3J0ZWQgJSIgUFJJZDMyICJcbiIsDQo+ID4gLSAgICAgICAg ICAgICBjYXAucG9saWNlcl9hY3Rpb25fZHJvcF9zdXBwb3J0ZWQpOw0KPiA+ICAgICAgIHByaW50 ZigiY2FwLnN0YXRzX21hc2sgJSIgUFJJeDY0ICJcbiIsIGNhcC5zdGF0c19tYXNrKTsNCj4gPiAg fQ0KPiA+DQo+ID4gQEAgLTgwOCwxMiArNzU3LDYgQEAgc3RhdGljIHZvaWQgY21kX2NyZWF0ZV9w b3J0X21ldGVyX3BhcnNlZCh2b2lkDQo+ID4gKnBhcnNlZF9yZXN1bHQsDQo+ID4gICAgICAgZWxz ZQ0KPiA+ICAgICAgICAgICAgICAgcGFyYW1zLm1ldGVyX2VuYWJsZSA9IDA7DQo+ID4NCj4gPiAt ICAgICBwYXJhbXMuYWN0aW9uW1JURV9DT0xPUl9HUkVFTl0gPQ0KPiA+IC0gICAgICAgICAgICAg c3RyaW5nX3RvX3BvbGljZXJfYWN0aW9uKHJlcy0+Z19hY3Rpb24pOw0KPiA+IC0gICAgIHBhcmFt cy5hY3Rpb25bUlRFX0NPTE9SX1lFTExPV10gPQ0KPiA+IC0gICAgICAgICAgICAgc3RyaW5nX3Rv X3BvbGljZXJfYWN0aW9uKHJlcy0+eV9hY3Rpb24pOw0KPiA+IC0gICAgIHBhcmFtcy5hY3Rpb25b UlRFX0NPTE9SX1JFRF0gPQ0KPiA+IC0gICAgICAgICAgICAgc3RyaW5nX3RvX3BvbGljZXJfYWN0 aW9uKHJlcy0+cl9hY3Rpb24pOw0KPiA+ICAgICAgIHBhcmFtcy5zdGF0c19tYXNrID0gcmVzLT5z dGF0aXN0aWNzX21hc2s7DQo+ID4NCj4gPiAgICAgICByZXQgPSBydGVfbXRyX2NyZWF0ZShwb3J0 X2lkLCBtdHJfaWQsICZwYXJhbXMsIHNoYXJlZCwgJmVycm9yKTsNCj4gPiBAQCAtMTE4MSwxMjEg KzExMjQsNiBAQCBjbWRsaW5lX3BhcnNlX2luc3RfdA0KPiA+IGNtZF9zZXRfcG9ydF9tZXRlcl9k c2NwX3RhYmxlID0gew0KPiA+ICAgICAgIH0sDQo+ID4gIH07DQo+ID4NCj4gPiAtLyogKioqIFNl dCBQb3J0IE1ldGVyIFBvbGljZXIgQWN0aW9uICoqKiAqLw0KPiA+IC1zdHJ1Y3QgY21kX3NldF9w b3J0X21ldGVyX3BvbGljZXJfYWN0aW9uX3Jlc3VsdCB7DQo+ID4gLSAgICAgY21kbGluZV9maXhl ZF9zdHJpbmdfdCBzZXQ7DQo+ID4gLSAgICAgY21kbGluZV9maXhlZF9zdHJpbmdfdCBwb3J0Ow0K PiA+IC0gICAgIGNtZGxpbmVfZml4ZWRfc3RyaW5nX3QgbWV0ZXI7DQo+ID4gLSAgICAgY21kbGlu ZV9maXhlZF9zdHJpbmdfdCBwb2xpY2VyOw0KPiA+IC0gICAgIGNtZGxpbmVfZml4ZWRfc3RyaW5n X3QgYWN0aW9uOw0KPiA+IC0gICAgIHVpbnQxNl90IHBvcnRfaWQ7DQo+ID4gLSAgICAgdWludDMy X3QgbXRyX2lkOw0KPiA+IC0gICAgIHVpbnQzMl90IGFjdGlvbl9tYXNrOw0KPiA+IC0gICAgIGNt ZGxpbmVfbXVsdGlfc3RyaW5nX3QgcG9saWNlcl9hY3Rpb247DQo+ID4gLX07DQo+ID4gLQ0KPiA+ IC1jbWRsaW5lX3BhcnNlX3Rva2VuX3N0cmluZ190IGNtZF9zZXRfcG9ydF9tZXRlcl9wb2xpY2Vy X2FjdGlvbl9zZXQgPQ0KPiA+IC0gICAgIFRPS0VOX1NUUklOR19JTklUSUFMSVpFUigNCj4gPiAt ICAgICAgICAgICAgIHN0cnVjdCBjbWRfc2V0X3BvcnRfbWV0ZXJfcG9saWNlcl9hY3Rpb25fcmVz dWx0LCBzZXQsDQo+ID4gInNldCIpOw0KPiA+IC1jbWRsaW5lX3BhcnNlX3Rva2VuX3N0cmluZ190 IGNtZF9zZXRfcG9ydF9tZXRlcl9wb2xpY2VyX2FjdGlvbl9wb3J0ID0NCj4gPiAtICAgICBUT0tF Tl9TVFJJTkdfSU5JVElBTElaRVIoDQo+ID4gLSAgICAgICAgICAgICBzdHJ1Y3QgY21kX3NldF9w b3J0X21ldGVyX3BvbGljZXJfYWN0aW9uX3Jlc3VsdCwgcG9ydCwNCj4gPiAicG9ydCIpOw0KPiA+ IC1jbWRsaW5lX3BhcnNlX3Rva2VuX3N0cmluZ190IGNtZF9zZXRfcG9ydF9tZXRlcl9wb2xpY2Vy X2FjdGlvbl9tZXRlcg0KPiA+ID0NCj4gPiAtICAgICBUT0tFTl9TVFJJTkdfSU5JVElBTElaRVIo DQo+ID4gLSAgICAgICAgICAgICBzdHJ1Y3QgY21kX3NldF9wb3J0X21ldGVyX3BvbGljZXJfYWN0 aW9uX3Jlc3VsdCwgbWV0ZXIsDQo+ID4gLSAgICAgICAgICAgICAibWV0ZXIiKTsNCj4gPiAtY21k bGluZV9wYXJzZV90b2tlbl9zdHJpbmdfdA0KPiA+IGNtZF9zZXRfcG9ydF9tZXRlcl9wb2xpY2Vy X2FjdGlvbl9wb2xpY2VyID0NCj4gPiAtICAgICBUT0tFTl9TVFJJTkdfSU5JVElBTElaRVIoDQo+ ID4gLSAgICAgICAgICAgICBzdHJ1Y3QgY21kX3NldF9wb3J0X21ldGVyX3BvbGljZXJfYWN0aW9u X3Jlc3VsdCwgcG9saWNlciwNCj4gPiAtICAgICAgICAgICAgICJwb2xpY2VyIik7DQo+ID4gLWNt ZGxpbmVfcGFyc2VfdG9rZW5fc3RyaW5nX3QgY21kX3NldF9wb3J0X21ldGVyX3BvbGljZXJfYWN0 aW9uX2FjdGlvbg0KPiA+ID0NCj4gPiAtICAgICBUT0tFTl9TVFJJTkdfSU5JVElBTElaRVIoDQo+ ID4gLSAgICAgICAgICAgICBzdHJ1Y3QgY21kX3NldF9wb3J0X21ldGVyX3BvbGljZXJfYWN0aW9u X3Jlc3VsdCwgYWN0aW9uLA0KPiA+IC0gICAgICAgICAgICAgImFjdGlvbiIpOw0KPiA+IC1jbWRs aW5lX3BhcnNlX3Rva2VuX251bV90DQo+ID4gY21kX3NldF9wb3J0X21ldGVyX3BvbGljZXJfYWN0 aW9uX3BvcnRfaWQgPQ0KPiA+IC0gICAgIFRPS0VOX05VTV9JTklUSUFMSVpFUigNCj4gPiAtICAg ICAgICAgICAgIHN0cnVjdCBjbWRfc2V0X3BvcnRfbWV0ZXJfcG9saWNlcl9hY3Rpb25fcmVzdWx0 LCBwb3J0X2lkLA0KPiA+IC0gICAgICAgICAgICAgUlRFX1VJTlQxNik7DQo+ID4gLWNtZGxpbmVf cGFyc2VfdG9rZW5fbnVtX3QgY21kX3NldF9wb3J0X21ldGVyX3BvbGljZXJfYWN0aW9uX210cl9p ZA0KPiA+ID0NCj4gPiAtICAgICBUT0tFTl9OVU1fSU5JVElBTElaRVIoDQo+ID4gLSAgICAgICAg ICAgICBzdHJ1Y3QgY21kX3NldF9wb3J0X21ldGVyX3BvbGljZXJfYWN0aW9uX3Jlc3VsdCwgbXRy X2lkLA0KPiA+IC0gICAgICAgICAgICAgUlRFX1VJTlQzMik7DQo+ID4gLWNtZGxpbmVfcGFyc2Vf dG9rZW5fbnVtX3QNCj4gPiBjbWRfc2V0X3BvcnRfbWV0ZXJfcG9saWNlcl9hY3Rpb25fYWN0aW9u X21hc2sgPQ0KPiA+IC0gICAgIFRPS0VOX05VTV9JTklUSUFMSVpFUigNCj4gPiAtICAgICAgICAg ICAgIHN0cnVjdCBjbWRfc2V0X3BvcnRfbWV0ZXJfcG9saWNlcl9hY3Rpb25fcmVzdWx0LA0KPiA+ IGFjdGlvbl9tYXNrLA0KPiA+IC0gICAgICAgICAgICAgUlRFX1VJTlQzMik7DQo+ID4gLWNtZGxp bmVfcGFyc2VfdG9rZW5fc3RyaW5nX3QNCj4gPiBjbWRfc2V0X3BvcnRfbWV0ZXJfcG9saWNlcl9h Y3Rpb25fcG9saWNlcl9hY3Rpb24gPQ0KPiA+IC0gICAgIFRPS0VOX1NUUklOR19JTklUSUFMSVpF UigNCj4gPiAtICAgICAgICAgICAgIHN0cnVjdCBjbWRfc2V0X3BvcnRfbWV0ZXJfcG9saWNlcl9h Y3Rpb25fcmVzdWx0LA0KPiA+IC0gICAgICAgICAgICAgcG9saWNlcl9hY3Rpb24sIFRPS0VOX1NU UklOR19NVUxUSSk7DQo+ID4gLQ0KPiA+IC1zdGF0aWMgdm9pZCBjbWRfc2V0X3BvcnRfbWV0ZXJf cG9saWNlcl9hY3Rpb25fcGFyc2VkKHZvaWQNCj4gPiAqcGFyc2VkX3Jlc3VsdCwNCj4gPiAtICAg ICBfX3J0ZV91bnVzZWQgc3RydWN0IGNtZGxpbmUgKmNsLA0KPiA+IC0gICAgIF9fcnRlX3VudXNl ZCB2b2lkICpkYXRhKQ0KPiA+IC17DQo+ID4gLSAgICAgc3RydWN0IGNtZF9zZXRfcG9ydF9tZXRl cl9wb2xpY2VyX2FjdGlvbl9yZXN1bHQgKnJlcyA9DQo+ID4gcGFyc2VkX3Jlc3VsdDsNCj4gPiAt ICAgICBlbnVtIHJ0ZV9tdHJfcG9saWNlcl9hY3Rpb24gKmFjdGlvbnM7DQo+ID4gLSAgICAgc3Ry dWN0IHJ0ZV9tdHJfZXJyb3IgZXJyb3I7DQo+ID4gLSAgICAgdWludDMyX3QgbXRyX2lkID0gcmVz LT5tdHJfaWQ7DQo+ID4gLSAgICAgdWludDMyX3QgYWN0aW9uX21hc2sgPSByZXMtPmFjdGlvbl9t YXNrOw0KPiA+IC0gICAgIHVpbnQxNl90IHBvcnRfaWQgPSByZXMtPnBvcnRfaWQ7DQo+ID4gLSAg ICAgY2hhciAqcF9zdHIgPSByZXMtPnBvbGljZXJfYWN0aW9uOw0KPiA+IC0gICAgIGludCByZXQ7 DQo+ID4gLQ0KPiA+IC0gICAgIGlmIChwb3J0X2lkX2lzX2ludmFsaWQocG9ydF9pZCwgRU5BQkxF RF9XQVJOKSkNCj4gPiAtICAgICAgICAgICAgIHJldHVybjsNCj4gPiAtDQo+ID4gLSAgICAgLyog Q2hlY2s6IGFjdGlvbiBtYXNrICovDQo+ID4gLSAgICAgaWYgKGFjdGlvbl9tYXNrID09IDAgfHwg KGFjdGlvbl9tYXNrICYgKH4weDdVTCkpKSB7DQo+ID4gLSAgICAgICAgICAgICBwcmludGYoIiBQ b2xpY2VyIGFjdGlvbiBtYXNrIG5vdCBjb3JyZWN0IChlcnJvcilcbiIpOw0KPiA+IC0gICAgICAg ICAgICAgcmV0dXJuOw0KPiA+IC0gICAgIH0NCj4gPiAtDQo+ID4gLSAgICAgLyogQWxsb2NhdGUg bWVtb3J5IGZvciBwb2xpY2VyIGFjdGlvbnMgKi8NCj4gPiAtICAgICBhY3Rpb25zID0gKGVudW0g cnRlX210cl9wb2xpY2VyX2FjdGlvbiAqKW1hbGxvYyhSVEVfQ09MT1JTICoNCj4gPiAtICAgICAg ICAgICAgIHNpemVvZihlbnVtIHJ0ZV9tdHJfcG9saWNlcl9hY3Rpb24pKTsNCj4gPiAtICAgICBp ZiAoYWN0aW9ucyA9PSBOVUxMKSB7DQo+ID4gLSAgICAgICAgICAgICBwcmludGYoIk1lbW9yeSBm b3IgcG9saWNlciBhY3Rpb25zIG5vdCBhbGxvY2F0ZWQgKGVycm9yKVxuIik7DQo+ID4gLSAgICAg ICAgICAgICByZXR1cm47DQo+ID4gLSAgICAgfQ0KPiA+IC0gICAgIC8qIFBhcnNlIHBvbGljZXIg YWN0aW9uIHN0cmluZyAqLw0KPiA+IC0gICAgIHJldCA9IHBhcnNlX3BvbGljZXJfYWN0aW9uX3N0 cmluZyhwX3N0ciwgYWN0aW9uX21hc2ssIGFjdGlvbnMpOw0KPiA+IC0gICAgIGlmIChyZXQpIHsN Cj4gPiAtICAgICAgICAgICAgIHByaW50ZigiIFBvbGljZXIgYWN0aW9uIHN0cmluZyBwYXJzZSBl cnJvclxuIik7DQo+ID4gLSAgICAgICAgICAgICBmcmVlKGFjdGlvbnMpOw0KPiA+IC0gICAgICAg ICAgICAgcmV0dXJuOw0KPiA+IC0gICAgIH0NCj4gPiAtDQo+ID4gLSAgICAgcmV0ID0gcnRlX210 cl9wb2xpY2VyX2FjdGlvbnNfdXBkYXRlKHBvcnRfaWQsIG10cl9pZCwNCj4gPiAtICAgICAgICAg ICAgIGFjdGlvbl9tYXNrLCBhY3Rpb25zLCAmZXJyb3IpOw0KPiA+IC0gICAgIGlmIChyZXQgIT0g MCkgew0KPiA+IC0gICAgICAgICAgICAgZnJlZShhY3Rpb25zKTsNCj4gPiAtICAgICAgICAgICAg IHByaW50X2Vycl9tc2coJmVycm9yKTsNCj4gPiAtICAgICAgICAgICAgIHJldHVybjsNCj4gPiAt ICAgICB9DQo+ID4gLQ0KPiA+IC0gICAgIGZyZWUoYWN0aW9ucyk7DQo+ID4gLX0NCj4gPiAtDQo+ ID4gLWNtZGxpbmVfcGFyc2VfaW5zdF90IGNtZF9zZXRfcG9ydF9tZXRlcl9wb2xpY2VyX2FjdGlv biA9IHsNCj4gPiAtICAgICAuZiA9IGNtZF9zZXRfcG9ydF9tZXRlcl9wb2xpY2VyX2FjdGlvbl9w YXJzZWQsDQo+ID4gLSAgICAgLmRhdGEgPSBOVUxMLA0KPiA+IC0gICAgIC5oZWxwX3N0ciA9ICJz ZXQgcG9ydCBtZXRlciBwb2xpY2VyIGFjdGlvbiA8cG9ydF9pZD4gPG10cl9pZD4gIg0KPiA+IC0g ICAgICAgICAgICAgIjxhY3Rpb25fbWFzaz4gPGFjdGlvbjA+IFs8YWN0aW9uMT4gPGFjdGlvbjI+ XSIsDQo+ID4gLSAgICAgLnRva2VucyA9IHsNCj4gPiAtICAgICAgICAgICAgICh2b2lkICopJmNt ZF9zZXRfcG9ydF9tZXRlcl9wb2xpY2VyX2FjdGlvbl9zZXQsDQo+ID4gLSAgICAgICAgICAgICAo dm9pZCAqKSZjbWRfc2V0X3BvcnRfbWV0ZXJfcG9saWNlcl9hY3Rpb25fcG9ydCwNCj4gPiAtICAg ICAgICAgICAgICh2b2lkICopJmNtZF9zZXRfcG9ydF9tZXRlcl9wb2xpY2VyX2FjdGlvbl9tZXRl ciwNCj4gPiAtICAgICAgICAgICAgICh2b2lkICopJmNtZF9zZXRfcG9ydF9tZXRlcl9wb2xpY2Vy X2FjdGlvbl9wb2xpY2VyLA0KPiA+IC0gICAgICAgICAgICAgKHZvaWQgKikmY21kX3NldF9wb3J0 X21ldGVyX3BvbGljZXJfYWN0aW9uX2FjdGlvbiwNCj4gPiAtICAgICAgICAgICAgICh2b2lkICop JmNtZF9zZXRfcG9ydF9tZXRlcl9wb2xpY2VyX2FjdGlvbl9wb3J0X2lkLA0KPiA+IC0gICAgICAg ICAgICAgKHZvaWQgKikmY21kX3NldF9wb3J0X21ldGVyX3BvbGljZXJfYWN0aW9uX210cl9pZCwN Cj4gPiAtICAgICAgICAgICAgICh2b2lkICopJmNtZF9zZXRfcG9ydF9tZXRlcl9wb2xpY2VyX2Fj dGlvbl9hY3Rpb25fbWFzaywNCj4gPiAtICAgICAgICAgICAgICh2b2lkDQo+ID4gKikmY21kX3Nl dF9wb3J0X21ldGVyX3BvbGljZXJfYWN0aW9uX3BvbGljZXJfYWN0aW9uLA0KPiA+IC0gICAgICAg ICAgICAgTlVMTCwNCj4gPiAtICAgICB9LA0KPiA+IC19Ow0KPiA+IC0NCj4gPiAgLyogKioqIFNl dCBQb3J0IE1ldGVyIFN0YXRzIE1hc2sgKioqICovDQo+ID4gIHN0cnVjdCBjbWRfc2V0X3BvcnRf bWV0ZXJfc3RhdHNfbWFza19yZXN1bHQgew0KPiA+ICAgICAgIGNtZGxpbmVfZml4ZWRfc3RyaW5n X3Qgc2V0Ow0KPiA+IGRpZmYgLS1naXQgYS9hcHAvdGVzdC1wbWQvY21kbGluZV9tdHIuaCBiL2Fw cC90ZXN0LXBtZC9jbWRsaW5lX210ci5oDQo+ID4gaW5kZXggZTY5ZDZkYTAyMy4uN2UyNzEzY2Vh MyAxMDA2NDQNCj4gPiAtLS0gYS9hcHAvdGVzdC1wbWQvY21kbGluZV9tdHIuaA0KPiA+ICsrKyBi L2FwcC90ZXN0LXBtZC9jbWRsaW5lX210ci5oDQo+ID4gQEAgLTE3LDcgKzE3LDYgQEAgZXh0ZXJu IGNtZGxpbmVfcGFyc2VfaW5zdF90IGNtZF9kaXNhYmxlX3BvcnRfbWV0ZXI7DQo+ID4gIGV4dGVy biBjbWRsaW5lX3BhcnNlX2luc3RfdCBjbWRfZGVsX3BvcnRfbWV0ZXI7DQo+ID4gIGV4dGVybiBj bWRsaW5lX3BhcnNlX2luc3RfdCBjbWRfc2V0X3BvcnRfbWV0ZXJfcHJvZmlsZTsNCj4gPiAgZXh0 ZXJuIGNtZGxpbmVfcGFyc2VfaW5zdF90IGNtZF9zZXRfcG9ydF9tZXRlcl9kc2NwX3RhYmxlOw0K PiA+IC1leHRlcm4gY21kbGluZV9wYXJzZV9pbnN0X3QgY21kX3NldF9wb3J0X21ldGVyX3BvbGlj ZXJfYWN0aW9uOw0KPiA+ICBleHRlcm4gY21kbGluZV9wYXJzZV9pbnN0X3QgY21kX3NldF9wb3J0 X21ldGVyX3N0YXRzX21hc2s7DQo+ID4gIGV4dGVybiBjbWRsaW5lX3BhcnNlX2luc3RfdCBjbWRf c2hvd19wb3J0X21ldGVyX3N0YXRzOw0KPiA+DQo+ID4gZGlmZiAtLWdpdCBhL2RvYy9ndWlkZXMv cHJvZ19ndWlkZS9ydGVfZmxvdy5yc3QNCj4gPiBiL2RvYy9ndWlkZXMvcHJvZ19ndWlkZS9ydGVf Zmxvdy5yc3QNCj4gPiBpbmRleCBlMWI5M2VjZWRmLi4yZjVhNmUwYzMxIDEwMDY0NA0KPiA+IC0t LSBhL2RvYy9ndWlkZXMvcHJvZ19ndWlkZS9ydGVfZmxvdy5yc3QNCj4gPiArKysgYi9kb2MvZ3Vp ZGVzL3Byb2dfZ3VpZGUvcnRlX2Zsb3cucnN0DQo+ID4gQEAgLTI4NDEsNiArMjg0MSwyNyBAQCBm b3IgYGBSVEVfRkxPV19GSUVMRF9WQUxVRWBgIGFuZA0KPiA+IGBgUlRFX0ZMT1dfRklFTERfUE9J TlRFUmBgIHJlc3BlY3RpdmVseS4NCj4gPiAgICAgfCBgYHZhbHVlYGAgICAgIHwgaW1tZWRpYXRl IHZhbHVlIG9yIGEgcG9pbnRlciB0byB0aGlzIHZhbHVlICAgICAgICAgICAgICAgfA0KPiA+ICAg ICArLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0rDQo+ID4NCj4gPiArQWN0aW9uOiBgYE1FVEVSX0NPTE9SYGAN Cj4gPiArXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl4NCj4gPiArDQo+ID4gK0NvbG9yIHRoZSBwYWNr ZXQgdG8gcmVmbGVjdCB0aGUgbWV0ZXIgY29sb3IgcmVzdWx0Lg0KPiA+ICsNCj4gPiArVGhlIG1l dGVyIGFjdGlvbiBtdXN0IGJlIGNvbmZpZ3VyZWQgYmVmb3JlIG1ldGVyIGNvbG9yIGFjdGlvbi4N Cj4gPiArTWV0ZXIgY29sb3IgYWN0aW9uIGlzIHNldCB0byBhIGNvbG9yIHRvIHJlZmxlY3QgdGhl IG1ldGVyIGNvbG9yIHJlc3VsdC4NCj4gPiArU2V0IHRoZSBtZXRlciBjb2xvciBpbiB0aGUgbWJ1 ZiB0byB0aGUgc2VsZWN0ZWQgY29sb3IuDQo+ID4gK1RoZSBtZXRlciBjb2xvciBhY3Rpb24gb3V0 cHV0IGNvbG9yIGlzIHRoZSBvdXRwdXQgY29sb3Igb2YgdGhlIHBhY2tldCwNCj4gPiArd2hpY2gg aXMgc2V0IGluIHRoZSBwYWNrZXQgbWV0YS1kYXRhIChpLmUuIHN0cnVjdCBgYHJ0ZV9tYnVmOjpz Y2hlZDo6Y29sb3JgYCkNCj4gPiArDQo+ID4gKy4uIF90YWJsZV9ydGVfZmxvd19hY3Rpb25fbWV0 ZXJfY29sb3I6DQo+ID4gKw0KPiA+ICsuLiB0YWJsZTo6IE1FVEVSX0NPTE9SDQo+ID4gKw0KPiA+ ICsgICArLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rDQo+ID4gKyAgIHwgRmllbGQg ICAgICAgICAgIHwgVmFsdWUgICAgICAgIHwNCj4gPiArICAgKz09PT09PT09PT09PT09PT09Kz09 PT09PT09PT09PT09Kw0KPiA+ICsgICB8IGBgbWV0ZXJfY29sb3JgYCB8IFBhY2tldCBjb2xvciB8 DQo+ID4gKyAgICstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSsNCj4gPiArDQo+ID4g IE5lZ2F0aXZlIHR5cGVzDQo+ID4gIH5+fn5+fn5+fn5+fn5+DQo+ID4NCj4gPiBkaWZmIC0tZ2l0 IGEvZG9jL2d1aWRlcy9wcm9nX2d1aWRlL3RyYWZmaWNfbWV0ZXJpbmdfYW5kX3BvbGljaW5nLnJz dA0KPiA+IGIvZG9jL2d1aWRlcy9wcm9nX2d1aWRlL3RyYWZmaWNfbWV0ZXJpbmdfYW5kX3BvbGlj aW5nLnJzdA0KPiA+IGluZGV4IDkwYzc4MWViMWQuLmMwNTM3ZTY1M2MgMTAwNjQ0DQo+ID4gLS0t IGEvZG9jL2d1aWRlcy9wcm9nX2d1aWRlL3RyYWZmaWNfbWV0ZXJpbmdfYW5kX3BvbGljaW5nLnJz dA0KPiA+ICsrKyBiL2RvYy9ndWlkZXMvcHJvZ19ndWlkZS90cmFmZmljX21ldGVyaW5nX2FuZF9w b2xpY2luZy5yc3QNCj4gPiBAQCAtNTYsMTggKzU2LDEwIEBAIFRoZSBwcm9jZXNzaW5nIGRvbmUg Zm9yIGVhY2ggaW5wdXQgcGFja2V0IGhpdHRpbmcgYW4NCj4gPiBNVFIgb2JqZWN0IGlzOg0KPiA+ ICAgIGNvbG9yIGJsaW5kIG1vZGUsIHdoaWNoIGlzIGVxdWl2YWxlbnQgdG8gY29uc2lkZXJpbmcg YWxsIGlucHV0IHBhY2tldHMNCj4gPiAgICBpbml0aWFsbHkgY29sb3JlZCBhcyBncmVlbi4NCj4g Pg0KPiA+IC0qIFBvbGljaW5nOiBUaGVyZSBpcyBhIHNlcGFyYXRlIHBvbGljZXIgYWN0aW9uIGNv bmZpZ3VyZWQgZm9yIGVhY2ggbWV0ZXINCj4gPiAtICBvdXRwdXQgY29sb3IsIHdoaWNoIGNhbjoN Cj4gPiAtDQo+ID4gLSAgKiBEcm9wIHRoZSBwYWNrZXQuDQo+ID4gLQ0KPiA+IC0gICogS2VlcCB0 aGUgc2FtZSBwYWNrZXQgY29sb3I6IHRoZSBwb2xpY2VyIG91dHB1dCBjb2xvciBtYXRjaGVzIHRo ZSBtZXRlcg0KPiA+IC0gICAgb3V0cHV0IGNvbG9yIChlc3NlbnRpYWxseSBhIG5vLW9wIGFjdGlv bikuDQo+ID4gLQ0KPiA+IC0gICogUmVjb2xvciB0aGUgcGFja2V0OiB0aGUgcG9saWNlciBvdXRw dXQgY29sb3IgaXMgc2V0IHRvIGEgZGlmZmVyZW50IGNvbG9yDQo+ID4gLSAgICB0aGFuIHRoZSBt ZXRlciBvdXRwdXQgY29sb3IuIFRoZSBwb2xpY2VyIG91dHB1dCBjb2xvciBpcyB0aGUgb3V0cHV0 IGNvbG9yDQo+ID4gLSAgICBvZiB0aGUgcGFja2V0LCB3aGljaCBpcyBzZXQgaW4gdGhlIHBhY2tl dCBtZXRhLWRhdGEgKGkuZS4gc3RydWN0DQo+ID4gLSAgICBgYHJ0ZV9tYnVmOjpzY2hlZDo6Y29s b3JgYCkuDQo+ID4gKyogVGhlcmUgaXMgYSBtZXRlciBwb2xpY3kgQVBJIHRvIG1hbmFnZSBwcmUt ZGVmaW5lZCBwb2xpY2llcyBmb3IgbWV0ZXIuDQo+ID4gKyAgQW55IHJ0ZV9mbG93IGFjdGlvbiBs aXN0IGNhbiBiZSBjb25maWd1cmVkIHBlciBjb2xvciBmb3IgZWFjaCBwb2xpY3kuDQo+ID4gKyAg QSBtZXRlciBvYmplY3QgY29uZmlndXJlZCB3aXRoIGEgcG9saWN5IGV4ZWN1dGVzIHRoZSBhY3Rp b25zIHBlciBwYWNrZXQNCj4gPiArICBhY2NvcmRpbmcgdG8gdGhlIHBhY2tldCBjb2xvci4NCj4g Pg0KPiA+ICAqIFN0YXRpc3RpY3M6IFRoZSBzZXQgb2YgY291bnRlcnMgbWFpbnRhaW5lZCBmb3Ig ZWFjaCBNVFIgb2JqZWN0IGlzDQo+ID4gICAgY29uZmlndXJhYmxlIGFuZCBzdWJqZWN0IHRvIHRo ZSBpbXBsZW1lbnRhdGlvbiBzdXBwb3J0LiBUaGlzIHNldCBpbmNsdWRlcw0KPiA+IGRpZmYgLS1n aXQgYS9kb2MvZ3VpZGVzL3JlbF9ub3Rlcy9yZWxlYXNlXzIxXzA1LnJzdA0KPiA+IGIvZG9jL2d1 aWRlcy9yZWxfbm90ZXMvcmVsZWFzZV8yMV8wNS5yc3QNCj4gPiBpbmRleCAxMTNiMzdjZGRjLi4x YjFiNDM2OGY2IDEwMDY0NA0KPiA+IC0tLSBhL2RvYy9ndWlkZXMvcmVsX25vdGVzL3JlbGVhc2Vf MjFfMDUucnN0DQo+ID4gKysrIGIvZG9jL2d1aWRlcy9yZWxfbm90ZXMvcmVsZWFzZV8yMV8wNS5y c3QNCj4gPiBAQCAtMTYxLDcgKzE2MSwyNyBAQCBOZXcgRmVhdHVyZXMNCj4gPiAgICAgIGBgZHBk ay10ZXN0cG1kIC0tIC0tZXRoLWxpbmstc3BlZWQgTmBgDQo+ID4gICAgKiBBZGRlZCBjb21tYW5k IHRvIGRpc3BsYXkgUnggcXVldWUgdXNlZCBkZXNjcmlwdG9yIGNvdW50Lg0KPiA+ICAgICAgYGBz aG93IHBvcnQgKHBvcnRfaWQpIHJ4cSAocXVldWVfaWQpIGRlc2MgdXNlZCBjb3VudGBgDQo+ID4g LQ0KPiA+ICsgICogZGVsZXRlZCB0aGUgcG9ydCBtZXRlciBwb2xpY2VyIGFjdGlvbiBjb21tYW5k IC4NCj4gPiArICAgIGBgc2V0IHBvcnQgbWV0ZXIgcG9saWNlciBhY3Rpb24gKHBvcnRfaWQpICht dHJfaWQpIChhY3Rpb25fbWFzaykgLi4uYGANCj4gPiArICAqIEFkZGVkIGNvbW1hbmQgdG8gY3Jl YXRlIG1ldGVyIHBvbGljeS4NCj4gPiArICAgIGBgYWRkIHBvcnQgbWV0ZXIgcG9saWN5IChwb3J0 X2lkKSAocG9saWN5X2lkKSBnX2FjdGlvbnMge2FjdGlvbn0gZW5kDQo+ID4geV9hY3Rpb25zIHth Y3Rpb259IGVuZCByX2FjdGlvbnMge2FjdGlvbn0gZW5kYGANCj4gPiArICAqIEFkZGVkIGNvbW1h bmQgdG8gZGVsZXRlIG1ldGVyIHBvbGljeS4NCj4gPiArICAgIGBgZGVsIHBvcnQgbWV0ZXIgcG9s aWN5IChwb3J0X2lkKSAocG9saWN5X2lkKWBgDQo+ID4gKw0KPiA+ICsqICoqVXBkYXRlZCBtZXRl ciBBUEkuKioNCj4gPiArDQo+ID4gKyAgKiBldGhkZXY6IERlbGV0ZWQgbWV0ZXIgcG9saWNlciBB UEkgdG8gc3VwcG9ydCBwb2xpY3kgQVBJLg0KPiA+ICsgICAgYGBydGVfbXRyX3BvbGljZXJfYWN0 aW9uc191cGRhdGUoKWBgDQo+ID4gKyAgKiBldGhkZXY6IEFkZGVkIG1ldGVyIEFQSSB0byBzdXBw b3J0IHByZS1kZWZpbmVkIHBvbGljeSwgcnRlX2Zsb3cgYWN0aW9uDQo+ID4gbGlzdCBwZXIgY29s b3IuDQo+ID4gKyAgICBgYHJ0ZV9tdHJfbWV0ZXJfcG9saWN5X2NyZWF0ZSgpYGAsIGBgcnRlX210 cl9tZXRlcl9wb2xpY3lfZGVsZXRlKClgYA0KPiA+IGFuZA0KPiA+ICsgICAgYGBydGVfbXRyX2Ny ZWF0ZV93aXRoX3BvbGljeSgpYGANCj4gPiArICAqIGV0aGRldjogUmVtb3ZlZCBydGVfbXRyX3Bv bGljZXJfYWN0aW9uIGZyb20gcnRlX210cl9wYXJhbXMNCj4gPiBzdHJ1Y3R1cmVzLg0KPiA+ICsg ICogZXRoZGV2OiBBZGRlZCBydGVfbXRyX21ldGVyX3BvbGljeV9wYXJhbXMgc3RydWN0dXJlcyB0 byBzdXBwb3J0DQo+ID4gcG9saWN5IEFQSS4NCj4gPiArICAqIGV0aGRldjogQWRkZWQgbWV0ZXJf cG9saWN5X2lkIGludG8gcnRlX210cl9wYXJhbXMgc3RydWN0dXJlcy4NCj4gPiArICAqIGV0aGRl djogUmVtb3ZlZCBwb2xpY2VyX2FjdGlvbl9yZWNvbG9yX3N1cHBvcnRlZCBhbmQNCj4gPiBwb2xp Y2VyX2FjdGlvbl9kcm9wX3N1cHBvcnRlZCBmcm9tIHJ0ZV9tdHJfY2FwYWJpbGl0aWVzIHN0cnVj dHVyZXMuDQo+ID4gKyAgKiBldGhkZXY6IEFkZGVkIG1ldGVyX3BvbGljeV9uX21heCBpbnRvIHJ0 ZV9tdHJfY2FwYWJpbGl0aWVzDQo+ID4gc3RydWN0dXJlcy4NCj4gPiArICAqIGV0aGRldjogQWRk ZWQgUlRFX0ZMT1dfQUNUSU9OX1RZUEVfTUVURVJfQ09MT1IgaW4gZW51bQ0KPiA+IHJ0ZV9mbG93 X2FjdGlvbl90eXBlLg0KPiA+ICsgICogZXRoZGV2OiBBZGRlZCBSVEVfTVRSX0VSUk9SX1RZUEVf TUVURVJfUE9MSUNZX0lEIGFuZA0KPiA+IFJURV9NVFJfRVJST1JfVFlQRV9NRVRFUl9QT0xJQ1lf SUQgaW50byBydGVfbXRyX2Vycm9yX3R5cGUuDQo+ID4NCj4gPiAgUmVtb3ZlZCBJdGVtcw0KPiA+ ICAtLS0tLS0tLS0tLS0tDQo+ID4gZGlmZiAtLWdpdCBhL2RvYy9ndWlkZXMvdGVzdHBtZF9hcHBf dWcvdGVzdHBtZF9mdW5jcy5yc3QNCj4gPiBiL2RvYy9ndWlkZXMvdGVzdHBtZF9hcHBfdWcvdGVz dHBtZF9mdW5jcy5yc3QNCj4gPiBpbmRleCAzNmYwYTMyOGE1Li4zZjdhMWMwZTMzIDEwMDY0NA0K PiA+IC0tLSBhL2RvYy9ndWlkZXMvdGVzdHBtZF9hcHBfdWcvdGVzdHBtZF9mdW5jcy5yc3QNCj4g PiArKysgYi9kb2MvZ3VpZGVzL3Rlc3RwbWRfYXBwX3VnL3Rlc3RwbWRfZnVuY3MucnN0DQo+ID4g QEAgLTI4MzAsMjQgKzI4MzAsNiBAQCBTZXQgbWV0ZXIgZHNjcCB0YWJsZSBmb3IgdGhlIGV0aGVy bmV0IGRldmljZTo6DQo+ID4gICAgIHRlc3RwbWQ+IHNldCBwb3J0IG1ldGVyIGRzY3AgdGFibGUg KHBvcnRfaWQpIChtdHJfaWQpIFsoZHNjcF90YmxfZW50cnkwKSBcDQo+ID4gICAgIChkc2NwX3Ri bF9lbnRyeTEpLi4uKGRzY3BfdGJsX2VudHJ5NjMpXQ0KPiA+DQo+ID4gLXNldCBwb3J0IG1ldGVy IHBvbGljZXIgYWN0aW9uDQo+ID4gLX5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+DQo+ID4g LQ0KPiA+IC1TZXQgbWV0ZXIgcG9saWNlciBhY3Rpb24gZm9yIHRoZSBldGhlcm5ldCBkZXZpY2U6 Og0KPiA+IC0NCj4gPiAtICAgdGVzdHBtZD4gc2V0IHBvcnQgbWV0ZXIgcG9saWNlciBhY3Rpb24g KHBvcnRfaWQpIChtdHJfaWQpIChhY3Rpb25fbWFzaykgXA0KPiA+IC0gICAoYWN0aW9uMCkgWyhh Y3Rpb24xKSAoYWN0aW9uMSldDQo+ID4gLQ0KPiA+IC13aGVyZToNCj4gPiAtDQo+ID4gLSogYGBh Y3Rpb25fbWFza2BgOiBCaXQgbWFzayBpbmRpY2F0aW5nIHdoaWNoIHBvbGljZXIgYWN0aW9ucyBu ZWVkIHRvIGJlDQo+ID4gLSAgdXBkYXRlZC4gT25lIG9yIG1vcmUgcG9saWNlciBhY3Rpb25zIGNh biBiZSB1cGRhdGVkIGluIGEgc2luZ2xlIGZ1bmN0aW9uDQo+ID4gLSAgaW52b2NhdGlvbi4gVG8g dXBkYXRlIHRoZSBwb2xpY2VyIGFjdGlvbiBhc3NvY2lhdGVkIHdpdGggY29sb3IgQywgYml0DQo+ ID4gLSAgKDEgPDwgQykgbmVlZHMgdG8gYmUgc2V0IGluICphY3Rpb25fbWFzayogYW5kIGVsZW1l bnQgYXQgcG9zaXRpb24gQw0KPiA+IC0gIGluIHRoZSAqYWN0aW9ucyogYXJyYXkgbmVlZHMgdG8g YmUgdmFsaWQuDQo+ID4gLSogYGBhY3Rpb254YGA6IFBvbGljZXIgYWN0aW9uIGZvciB0aGUgY29s b3IgeCwNCj4gPiAtICBSVEVfTVRSX0dSRUVOIDw9IHggPCBSVEVfTVRSX0NPTE9SUw0KPiA+IC0N Cj4gPiAgc2V0IHBvcnQgbWV0ZXIgc3RhdHMgbWFzaw0KPiA+ICB+fn5+fn5+fn5+fn5+fn5+fn5+ fn5+fn5+DQo+ID4NCj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvbWx4NS9tbHg1LmggYi9k cml2ZXJzL25ldC9tbHg1L21seDUuaA0KPiA+IGluZGV4IDlhMDJhYTQ0ODguLmE4ZTExMDIzY2Mg MTAwNjQ0DQo+ID4gLS0tIGEvZHJpdmVycy9uZXQvbWx4NS9tbHg1LmgNCj4gPiArKysgYi9kcml2 ZXJzL25ldC9tbHg1L21seDUuaA0KPiA+IEBAIC01ODQsMTQgKzU4NCw2IEBAIHN0cnVjdCBtbHg1 X2Rldl9zaGFyZWRfcG9ydCB7DQo+ID4gIC8qIE1vZGlmeSB0aGlzIHZhbHVlIGlmIGVudW0gcnRl X210cl9jb2xvciBjaGFuZ2VzLiAqLw0KPiA+ICAjZGVmaW5lIFJURV9NVFJfRFJPUFBFRCBSVEVf Q09MT1JTDQo+ID4NCj4gPiAtLyogTWV0ZXIgcG9saWNlciBzdGF0aXN0aWNzICovDQo+ID4gLXN0 cnVjdCBtbHg1X2Zsb3dfcG9saWNlcl9zdGF0cyB7DQo+ID4gLSAgICAgdWludDMyX3QgcGFzc19j bnQ7DQo+ID4gLSAgICAgLyoqPCBDb2xvciBjb3VudGVyIGZvciBwYXNzLiAqLw0KPiA+IC0gICAg IHVpbnQzMl90IGRyb3BfY250Ow0KPiA+IC0gICAgIC8qKjwgQ29sb3IgY291bnRlciBmb3IgZHJv cC4gKi8NCj4gPiAtfTsNCj4gPiAtDQo+ID4gIC8qIE1ldGVyIHRhYmxlIHN0cnVjdHVyZS4gKi8N Cj4gPiAgc3RydWN0IG1seDVfbWV0ZXJfZG9tYWluX2luZm8gew0KPiA+ICAgICAgIHN0cnVjdCBt bHg1X2Zsb3dfdGJsX3Jlc291cmNlICp0Ymw7DQo+ID4gQEAgLTYzMCwyNCArNjIyLDEyIEBAIHN0 cnVjdCBtbHg1X21ldGVyX2RvbWFpbnNfaW5mb3Mgew0KPiA+DQo+ID4gIC8qIE1ldGVyIHBhcmFt ZXRlciBzdHJ1Y3R1cmUuICovDQo+ID4gIHN0cnVjdCBtbHg1X2Zsb3dfbWV0ZXJfaW5mbyB7DQo+ ID4gLSAgICAgdWludDMyX3QgbWV0ZXJfaWQ7DQo+ID4gLSAgICAgLyoqPCBNZXRlciBpZC4gKi8N Cj4gPiAgICAgICBzdHJ1Y3QgbWx4NV9mbG93X21ldGVyX3Byb2ZpbGUgKnByb2ZpbGU7DQo+ID4g ICAgICAgLyoqPCBNZXRlciBwcm9maWxlIHBhcmFtZXRlcnMuICovDQo+ID4gICAgICAgcnRlX3Nw aW5sb2NrX3Qgc2w7IC8qKjwgTWV0ZXIgYWN0aW9uIHNwaW5sb2NrLiAqLw0KPiA+IC0gICAgIC8q KiBQb2xpY2VyIGFjdGlvbnMgKHBlciBtZXRlciBvdXRwdXQgY29sb3IpLiAqLw0KPiA+IC0gICAg IGVudW0gcnRlX210cl9wb2xpY2VyX2FjdGlvbiBhY3Rpb25bUlRFX0NPTE9SU107DQo+ID4gICAg ICAgLyoqIFNldCBvZiBzdGF0cyBjb3VudGVycyB0byBiZSBlbmFibGVkLg0KPiA+ICAgICAgICAq IEBzZWUgZW51bSBydGVfbXRyX3N0YXRzX3R5cGUNCj4gPiAgICAgICAgKi8NCj4gPiAtICAgICB1 aW50MzJfdCBncmVlbl9ieXRlczoxOw0KPiA+IC0gICAgIC8qKiBTZXQgZ3JlZW4gYnl0ZXMgc3Rh dHMgdG8gYmUgZW5hYmxlZC4gKi8NCj4gPiAtICAgICB1aW50MzJfdCBncmVlbl9wa3RzOjE7DQo+ ID4gLSAgICAgLyoqIFNldCBncmVlbiBwYWNrZXRzIHN0YXRzIHRvIGJlIGVuYWJsZWQuICovDQo+ ID4gLSAgICAgdWludDMyX3QgcmVkX2J5dGVzOjE7DQo+ID4gLSAgICAgLyoqIFNldCByZWQgYnl0 ZXMgc3RhdHMgdG8gYmUgZW5hYmxlZC4gKi8NCj4gPiAtICAgICB1aW50MzJfdCByZWRfcGt0czox Ow0KPiA+IC0gICAgIC8qKiBTZXQgcmVkIHBhY2tldHMgc3RhdHMgdG8gYmUgZW5hYmxlZC4gKi8N Cj4gPiAgICAgICB1aW50MzJfdCBieXRlc19kcm9wcGVkOjE7DQo+ID4gICAgICAgLyoqIFNldCBi eXRlcyBkcm9wcGVkIHN0YXRzIHRvIGJlIGVuYWJsZWQuICovDQo+ID4gICAgICAgdWludDMyX3Qg cGt0c19kcm9wcGVkOjE7DQo+ID4gQEAgLTY4Miw4ICs2NjIsOCBAQCBzdHJ1Y3QgbWx4NV9mbG93 X21ldGVyX2luZm8gew0KPiA+ICAgICAgIHVpbnQzMl90IHRyYW5zZmVyOjE7DQo+ID4gICAgICAg c3RydWN0IG1seDVfbWV0ZXJfZG9tYWluc19pbmZvcyAqbWZ0czsNCj4gPiAgICAgICAvKio8IEZs b3cgdGFibGUgY3JlYXRlZCBmb3IgdGhpcyBtZXRlci4gKi8NCj4gPiAtICAgICBzdHJ1Y3QgbWx4 NV9mbG93X3BvbGljZXJfc3RhdHMgcG9saWNlcl9zdGF0czsNCj4gPiAtICAgICAvKio8IE1ldGVy IHBvbGljZXIgc3RhdGlzdGljcy4gKi8NCj4gPiArICAgICB1aW50MzJfdCBkcm9wX2NudDsNCj4g PiArICAgICAvKio8IENvbG9yIGNvdW50ZXIgZm9yIGRyb3AuICovDQo+ID4gICAgICAgdWludDMy X3QgcmVmX2NudDsNCj4gPiAgICAgICAvKio8IFVzZSBjb3VudC4gKi8NCj4gPiAgICAgICBzdHJ1 Y3QgbWx4NV9pbmRleGVkX3Bvb2wgKmZsb3dfaXBvb2w7DQo+ID4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvbmV0L21seDUvbWx4NV9mbG93LmMgYi9kcml2ZXJzL25ldC9tbHg1L21seDVfZmxvdy5jDQo+ ID4gaW5kZXggMjQyYzZmMjI4OC4uZWUyYzM1MTY0OSAxMDA2NDQNCj4gPiAtLS0gYS9kcml2ZXJz L25ldC9tbHg1L21seDVfZmxvdy5jDQo+ID4gKysrIGIvZHJpdmVycy9uZXQvbWx4NS9tbHg1X2Zs b3cuYw0KPiA+IEBAIC02NjQ3LDUyICs2NjQ3LDYgQEAgbWx4NV9mbG93X2Rlc3Ryb3lfbXRyX3Ri bHMoc3RydWN0IHJ0ZV9ldGhfZGV2DQo+ID4gKmRldiwNCj4gPiAgICAgICByZXR1cm4gZm9wcy0+ ZGVzdHJveV9tdHJfdGJscyhkZXYsIHRibHMpOw0KPiA+ICB9DQo+ID4NCj4gPiAtLyoqDQo+ID4g LSAqIFByZXBhcmUgcG9saWNlciBydWxlcy4NCj4gPiAtICoNCj4gPiAtICogQHBhcmFtW2luXSBk ZXYNCj4gPiAtICogICBQb2ludGVyIHRvIEV0aGVybmV0IGRldmljZS4NCj4gPiAtICogQHBhcmFt W2luXSBmbQ0KPiA+IC0gKiAgIFBvaW50ZXIgdG8gZmxvdyBtZXRlciBzdHJ1Y3R1cmUuDQo+ID4g LSAqIEBwYXJhbVtpbl0gYXR0cg0KPiA+IC0gKiAgIFBvaW50ZXIgdG8gZmxvdyBhdHRyaWJ1dGVz Lg0KPiA+IC0gKg0KPiA+IC0gKiBAcmV0dXJuDQo+ID4gLSAqICAgMCBvbiBzdWNjZXNzLCAtMSBv dGhlcndpc2UuDQo+ID4gLSAqLw0KPiA+IC1pbnQNCj4gPiAtbWx4NV9mbG93X3ByZXBhcmVfcG9s aWNlcl9ydWxlcyhzdHJ1Y3QgcnRlX2V0aF9kZXYgKmRldiwNCj4gPiAtICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHN0cnVjdCBtbHg1X2Zsb3dfbWV0ZXJfaW5mbyAqZm0sDQo+ID4gLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgcnRlX2Zsb3dfYXR0ciAqYXR0cikN Cj4gPiAtew0KPiA+IC0gICAgIGNvbnN0IHN0cnVjdCBtbHg1X2Zsb3dfZHJpdmVyX29wcyAqZm9w czsNCj4gPiAtDQo+ID4gLSAgICAgZm9wcyA9IGZsb3dfZ2V0X2Rydl9vcHMoTUxYNV9GTE9XX1RZ UEVfRFYpOw0KPiA+IC0gICAgIHJldHVybiBmb3BzLT5wcmVwYXJlX3BvbGljZXJfcnVsZXMoZGV2 LCBmbSwgYXR0cik7DQo+ID4gLX0NCj4gPiAtDQo+ID4gLS8qKg0KPiA+IC0gKiBEZXN0cm95IHBv bGljZXIgcnVsZXMuDQo+ID4gLSAqDQo+ID4gLSAqIEBwYXJhbVtpbl0gZm0NCj4gPiAtICogICBQ b2ludGVyIHRvIGZsb3cgbWV0ZXIgc3RydWN0dXJlLg0KPiA+IC0gKiBAcGFyYW1baW5dIGF0dHIN Cj4gPiAtICogICBQb2ludGVyIHRvIGZsb3cgYXR0cmlidXRlcy4NCj4gPiAtICoNCj4gPiAtICog QHJldHVybg0KPiA+IC0gKiAgIDAgb24gc3VjY2VzcywgLTEgb3RoZXJ3aXNlLg0KPiA+IC0gKi8N Cj4gPiAtaW50DQo+ID4gLW1seDVfZmxvd19kZXN0cm95X3BvbGljZXJfcnVsZXMoc3RydWN0IHJ0 ZV9ldGhfZGV2ICpkZXYsDQo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0 IG1seDVfZmxvd19tZXRlcl9pbmZvICpmbSwNCj4gPiAtICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBjb25zdCBzdHJ1Y3QgcnRlX2Zsb3dfYXR0ciAqYXR0cikNCj4gPiAtew0KPiA+IC0gICAg IGNvbnN0IHN0cnVjdCBtbHg1X2Zsb3dfZHJpdmVyX29wcyAqZm9wczsNCj4gPiAtDQo+ID4gLSAg ICAgZm9wcyA9IGZsb3dfZ2V0X2Rydl9vcHMoTUxYNV9GTE9XX1RZUEVfRFYpOw0KPiA+IC0gICAg IHJldHVybiBmb3BzLT5kZXN0cm95X3BvbGljZXJfcnVsZXMoZGV2LCBmbSwgYXR0cik7DQo+ID4g LX0NCj4gPiAtDQo+ID4gIC8qKg0KPiA+ICAgKiBBbGxvY2F0ZSB0aGUgbmVlZGVkIGFzbyBmbG93 IG1ldGVyIGlkLg0KPiA+ICAgKg0KPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9tbHg1L21s eDVfZmxvdy5oIGIvZHJpdmVycy9uZXQvbWx4NS9tbHg1X2Zsb3cuaA0KPiA+IGluZGV4IGNiMjgw M2QwODAuLjdmYTE1ZWVmN2IgMTAwNjQ0DQo+ID4gLS0tIGEvZHJpdmVycy9uZXQvbWx4NS9tbHg1 X2Zsb3cuaA0KPiA+ICsrKyBiL2RyaXZlcnMvbmV0L21seDUvbWx4NV9mbG93LmgNCj4gPiBAQCAt ODM5LDYgKzgzOSw4IEBAIHN0cnVjdCBtbHg1X2xlZ2FjeV9mbG93X21ldGVyIHsNCj4gPiAgICAg ICAvKiBNdXN0IGJlIHRoZSBmaXJzdCBpbiBzdHJ1Y3QuICovDQo+ID4gICAgICAgVEFJTFFfRU5U UlkobWx4NV9sZWdhY3lfZmxvd19tZXRlcikgbmV4dDsNCj4gPiAgICAgICAvKio8IFBvaW50ZXIg dG8gdGhlIG5leHQgZmxvdyBtZXRlciBzdHJ1Y3R1cmUuICovDQo+ID4gKyAgICAgdWludDMyX3Qg bWV0ZXJfaWQ7DQo+ID4gKyAgICAgLyoqPCBNZXRlciBpZC4gKi8NCj4gPiAgICAgICB1aW50MzJf dCBpZHg7IC8qIEluZGV4IHRvIG1ldGVyIG9iamVjdC4gKi8NCj4gPiAgfTsNCj4gPg0KPiA+IEBA IC0xMDk3LDE0ICsxMDk5LDYgQEAgdHlwZWRlZiBzdHJ1Y3QgbWx4NV9tZXRlcl9kb21haW5zX2lu Zm9zDQo+ID4gKigqbWx4NV9mbG93X2NyZWF0ZV9tdHJfdGJsc190KQ0KPiA+ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzdHJ1Y3QgcnRlX2V0aF9kZXYgKmRldik7 DQo+ID4gIHR5cGVkZWYgaW50ICgqbWx4NV9mbG93X2Rlc3Ryb3lfbXRyX3RibHNfdCkoc3RydWN0 IHJ0ZV9ldGhfZGV2ICpkZXYsDQo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBzdHJ1Y3QgbWx4NV9tZXRlcl9kb21haW5zX2luZm9zDQo+ID4gKnRibHMpOw0KPiA+IC10 eXBlZGVmIGludCAoKm1seDVfZmxvd19jcmVhdGVfcG9saWNlcl9ydWxlc190KQ0KPiA+IC0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHN0cnVjdCBydGVfZXRoX2RldiAqZGV2 LA0KPiA+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBtbHg1 X2Zsb3dfbWV0ZXJfaW5mbyAqZm0sDQo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgY29uc3Qgc3RydWN0IHJ0ZV9mbG93X2F0dHIgKmF0dHIpOw0KPiA+IC10eXBlZGVm IGludCAoKm1seDVfZmxvd19kZXN0cm95X3BvbGljZXJfcnVsZXNfdCkNCj4gPiAtICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzdHJ1Y3QgcnRlX2V0aF9kZXYgKmRldiwNCj4g PiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgbWx4 NV9mbG93X21ldGVyX2luZm8NCj4gPiAqZm0sDQo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IHJ0ZV9mbG93X2F0dHIgKmF0dHIpOw0KPiA+ICB0 eXBlZGVmIHVpbnQzMl90ICgqbWx4NV9mbG93X210cl9hbGxvY190KQ0KPiA+ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzdHJ1Y3QgcnRlX2V0aF9kZXYgKmRldik7 DQo+ID4gIHR5cGVkZWYgdm9pZCAoKm1seDVfZmxvd19tdHJfZnJlZV90KShzdHJ1Y3QgcnRlX2V0 aF9kZXYgKmRldiwNCj4gPiBAQCAtMTE2MSw4ICsxMTU1LDYgQEAgc3RydWN0IG1seDVfZmxvd19k cml2ZXJfb3BzIHsNCj4gPiAgICAgICBtbHg1X2Zsb3dfcXVlcnlfdCBxdWVyeTsNCj4gPiAgICAg ICBtbHg1X2Zsb3dfY3JlYXRlX210cl90YmxzX3QgY3JlYXRlX210cl90YmxzOw0KPiA+ICAgICAg IG1seDVfZmxvd19kZXN0cm95X210cl90YmxzX3QgZGVzdHJveV9tdHJfdGJsczsNCj4gPiAtICAg ICBtbHg1X2Zsb3dfY3JlYXRlX3BvbGljZXJfcnVsZXNfdCBwcmVwYXJlX3BvbGljZXJfcnVsZXM7 DQo+ID4gLSAgICAgbWx4NV9mbG93X2Rlc3Ryb3lfcG9saWNlcl9ydWxlc190IGRlc3Ryb3lfcG9s aWNlcl9ydWxlczsNCj4gPiAgICAgICBtbHg1X2Zsb3dfbXRyX2FsbG9jX3QgY3JlYXRlX21ldGVy Ow0KPiA+ICAgICAgIG1seDVfZmxvd19tdHJfZnJlZV90IGZyZWVfbWV0ZXI7DQo+ID4gICAgICAg bWx4NV9mbG93X2NvdW50ZXJfYWxsb2NfdCBjb3VudGVyX2FsbG9jOw0KPiA+IEBAIC0xMzkyLDEy ICsxMzg0LDYgQEAgc3RydWN0IG1seDVfbWV0ZXJfZG9tYWluc19pbmZvcw0KPiA+ICptbHg1X2Zs b3dfY3JlYXRlX210cl90YmxzDQo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAoc3RydWN0IHJ0ZV9ldGhfZGV2ICpkZXYpOw0KPiA+ICBpbnQgbWx4NV9mbG93X2Rlc3Ry b3lfbXRyX3RibHMoc3RydWN0IHJ0ZV9ldGhfZGV2ICpkZXYsDQo+ID4gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBzdHJ1Y3QgbWx4NV9tZXRlcl9kb21haW5zX2luZm9zICp0YmwpOw0KPiA+ IC1pbnQgbWx4NV9mbG93X3ByZXBhcmVfcG9saWNlcl9ydWxlcyhzdHJ1Y3QgcnRlX2V0aF9kZXYg KmRldiwNCj4gPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgbWx4NV9m bG93X21ldGVyX2luZm8gKmZtLA0KPiA+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGNvbnN0IHN0cnVjdCBydGVfZmxvd19hdHRyICphdHRyKTsNCj4gPiAtaW50IG1seDVfZmxvd19k ZXN0cm95X3BvbGljZXJfcnVsZXMoc3RydWN0IHJ0ZV9ldGhfZGV2ICpkZXYsDQo+ID4gLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBtbHg1X2Zsb3dfbWV0ZXJfaW5mbyAq Zm0sDQo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBy dGVfZmxvd19hdHRyICphdHRyKTsNCj4gPiAgaW50IG1seDVfZmxvd19tZXRlcl9mbHVzaChzdHJ1 Y3QgcnRlX2V0aF9kZXYgKmRldiwNCj4gPiAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qg cnRlX210cl9lcnJvciAqZXJyb3IpOw0KPiA+ICBpbnQgbWx4NV9mbG93X2R2X2Rpc2NvdmVyX2Nv dW50ZXJfb2Zmc2V0X3N1cHBvcnQoc3RydWN0IHJ0ZV9ldGhfZGV2DQo+ID4gKmRldik7DQo+ID4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L21seDUvbWx4NV9mbG93X2Fzby5jDQo+ID4gYi9kcml2 ZXJzL25ldC9tbHg1L21seDVfZmxvd19hc28uYw0KPiA+IGluZGV4IGNkMmNjMDE2YjkuLjYyZDJk ZjA1NGIgMTAwNjQ0DQo+ID4gLS0tIGEvZHJpdmVycy9uZXQvbWx4NS9tbHg1X2Zsb3dfYXNvLmMN Cj4gPiArKysgYi9kcml2ZXJzL25ldC9tbHg1L21seDVfZmxvd19hc28uYw0KPiA+IEBAIC04MDgs OCArODA4LDggQEAgbWx4NV9hc29fbWV0ZXJfdXBkYXRlX2J5X3dxZShzdHJ1Y3QNCj4gPiBtbHg1 X2Rldl9jdHhfc2hhcmVkICpzaCwNCj4gPiAgICAgICAgICAgICAgIC8qIFdhaXRpbmcgZm9yIHdx ZSByZXNvdXJjZS4gKi8NCj4gPg0KPiA+ICAgICAgIHJ0ZV9kZWxheV91c19zbGVlcChNTFg1X0FT T19XUUVfQ1FFX1JFU1BPTlNFX0RFTEFZKTsNCj4gPiAgICAgICB9IHdoaWxlICgtLXBvbGxfd3Fl X3RpbWVzKTsNCj4gPiAtICAgICBEUlZfTE9HKEVSUiwgIkZhaWwgdG8gc2VuZCBXUUUgZm9yIEFT TyBtZXRlciAlZCIsDQo+ID4gLSAgICAgICAgICAgICAgICAgICAgIG10ci0+Zm0ubWV0ZXJfaWQp Ow0KPiA+ICsgICAgIERSVl9MT0coRVJSLCAiRmFpbCB0byBzZW5kIFdRRSBmb3IgQVNPIG1ldGVy IG9mZnNldCAlZCIsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgIG10ci0+b2Zmc2V0KTsNCj4g PiAgICAgICByZXR1cm4gLTE7DQo+ID4gIH0NCj4gPg0KPiA+IEBAIC04NDQsNyArODQ0LDcgQEAg bWx4NV9hc29fbXRyX3dhaXQoc3RydWN0IG1seDVfZGV2X2N0eF9zaGFyZWQNCj4gPiAqc2gsDQo+ ID4gICAgICAgICAgICAgICAvKiBXYWl0aW5nIGZvciBDUUUgcmVhZHkuICovDQo+ID4NCj4gPiAg ICAgICBydGVfZGVsYXlfdXNfc2xlZXAoTUxYNV9BU09fV1FFX0NRRV9SRVNQT05TRV9ERUxBWSk7 DQo+ID4gICAgICAgfSB3aGlsZSAoLS1wb2xsX2NxZV90aW1lcyk7DQo+ID4gLSAgICAgRFJWX0xP RyhFUlIsICJGYWlsIHRvIHBvbGwgQ1FFIHJlYWR5IGZvciBBU08gbWV0ZXIgJWQiLA0KPiA+IC0g ICAgICAgICAgICAgICAgICAgICBtdHItPmZtLm1ldGVyX2lkKTsNCj4gPiArICAgICBEUlZfTE9H KEVSUiwgIkZhaWwgdG8gcG9sbCBDUUUgcmVhZHkgZm9yIEFTTyBtZXRlciBvZmZzZXQgJWQiLA0K PiA+ICsgICAgICAgICAgICAgICAgICAgICBtdHItPm9mZnNldCk7DQo+ID4gICAgICAgcmV0dXJu IC0xOw0KPiA+ICB9DQo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L21seDUvbWx4NV9mbG93 X2R2LmMNCj4gPiBiL2RyaXZlcnMvbmV0L21seDUvbWx4NV9mbG93X2R2LmMNCj4gPiBpbmRleCBk OGVhNDQwNjY4Li5hZjMzOTdmYjU1IDEwMDY0NA0KPiA+IC0tLSBhL2RyaXZlcnMvbmV0L21seDUv bWx4NV9mbG93X2R2LmMNCj4gPiArKysgYi9kcml2ZXJzL25ldC9tbHg1L21seDVfZmxvd19kdi5j DQo+ID4gQEAgLTE4NCwzMSArMTg0LDYgQEAgZmxvd19kdl9hdHRyX2luaXQoY29uc3Qgc3RydWN0 IHJ0ZV9mbG93X2l0ZW0gKml0ZW0sDQo+ID4gdW5pb24gZmxvd19kdl9hdHRyICphdHRyLA0KPiA+ ICAgICAgIGF0dHItPnZhbGlkID0gMTsNCj4gPiAgfQ0KPiA+DQo+ID4gLS8qKg0KPiA+IC0gKiBD b252ZXJ0IHJ0ZV9tdHJfY29sb3IgdG8gbWx4NSBjb2xvci4NCj4gPiAtICoNCj4gPiAtICogQHBh cmFtW2luXSByY29sDQo+ID4gLSAqICAgcnRlX210cl9jb2xvci4NCj4gPiAtICoNCj4gPiAtICog QHJldHVybg0KPiA+IC0gKiAgIG1seDUgY29sb3IuDQo+ID4gLSAqLw0KPiA+IC1zdGF0aWMgaW50 DQo+ID4gLXJ0ZV9jb2xfMl9tbHg1X2NvbChlbnVtIHJ0ZV9jb2xvciByY29sKQ0KPiA+IC17DQo+ ID4gLSAgICAgc3dpdGNoIChyY29sKSB7DQo+ID4gLSAgICAgY2FzZSBSVEVfQ09MT1JfR1JFRU46 DQo+ID4gLSAgICAgICAgICAgICByZXR1cm4gTUxYNV9GTE9XX0NPTE9SX0dSRUVOOw0KPiA+IC0g ICAgIGNhc2UgUlRFX0NPTE9SX1lFTExPVzoNCj4gPiAtICAgICAgICAgICAgIHJldHVybiBNTFg1 X0ZMT1dfQ09MT1JfWUVMTE9XOw0KPiA+IC0gICAgIGNhc2UgUlRFX0NPTE9SX1JFRDoNCj4gPiAt ICAgICAgICAgICAgIHJldHVybiBNTFg1X0ZMT1dfQ09MT1JfUkVEOw0KPiA+IC0gICAgIGRlZmF1 bHQ6DQo+ID4gLSAgICAgICAgICAgICBicmVhazsNCj4gPiAtICAgICB9DQo+ID4gLSAgICAgcmV0 dXJuIE1MWDVfRkxPV19DT0xPUl9VTkRFRklORUQ7DQo+ID4gLX0NCj4gPiAtDQo+ID4gIHN0cnVj dCBmaWVsZF9tb2RpZnlfaW5mbyB7DQo+ID4gICAgICAgdWludDMyX3Qgc2l6ZTsgLyogU2l6ZSBv ZiBmaWVsZCBpbiBwcm90b2NvbCBoZWFkZXIsIGluIGJ5dGVzLiAqLw0KPiA+ICAgICAgIHVpbnQz Ml90IG9mZnNldDsgLyogT2Zmc2V0IG9mIGZpZWxkIGluIHByb3RvY29sIGhlYWRlciwgaW4gYnl0 ZXMuICovDQo+ID4gQEAgLTYwMjUsMTIgKzYwMDAsMTAgQEAgZmxvd19kdl9tdHJfcG9vbF9jcmVh dGUoc3RydWN0IHJ0ZV9ldGhfZGV2DQo+ID4gKmRldiwNCj4gPiAgICAgICBtdHJtbmctPm5fdmFs aWQrKzsNCj4gPiAgICAgICBmb3IgKGkgPSAxOyBpIDwgTUxYNV9BU09fTVRSU19QRVJfUE9PTDsg KytpKSB7DQo+ID4gICAgICAgICAgICAgICBwb29sLT5tdHJzW2ldLm9mZnNldCA9IGk7DQo+ID4g LSAgICAgICAgICAgICBwb29sLT5tdHJzW2ldLmZtLm1ldGVyX2lkID0gVUlOVDMyX01BWDsNCj4g PiAgICAgICAgICAgICAgIExJU1RfSU5TRVJUX0hFQUQoJm10cm1uZy0+bWV0ZXJzLA0KPiA+ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcG9vbC0+bXRyc1tp XSwgbmV4dCk7DQo+ID4gICAgICAgfQ0KPiA+ICAgICAgIHBvb2wtPm10cnNbMF0ub2Zmc2V0ID0g MDsNCj4gPiAtICAgICBwb29sLT5tdHJzWzBdLmZtLm1ldGVyX2lkID0gVUlOVDMyX01BWDsNCj4g PiAgICAgICAqbXRyX2ZyZWUgPSAmcG9vbC0+bXRyc1swXTsNCj4gPiAgICAgICByZXR1cm4gcG9v bDsNCj4gPiAgfQ0KPiA+IEBAIC02MDU0LDcgKzYwMjcsNiBAQCBmbG93X2R2X2Fzb19tdHJfcmVs ZWFzZV90b19wb29sKHN0cnVjdA0KPiA+IHJ0ZV9ldGhfZGV2ICpkZXYsIHVpbnQzMl90IG10cl9p ZHgpDQo+ID4gICAgICAgcnRlX3NwaW5sb2NrX2xvY2soJm10cm1uZy0+bXRyc2wpOw0KPiA+ICAg ICAgIG1lbXNldCgmYXNvX210ci0+Zm0sIDAsIHNpemVvZihzdHJ1Y3QgbWx4NV9mbG93X21ldGVy X2luZm8pKTsNCj4gPiAgICAgICBhc29fbXRyLT5zdGF0ZSA9IEFTT19NRVRFUl9GUkVFOw0KPiA+ IC0gICAgIGFzb19tdHItPmZtLm1ldGVyX2lkID0gVUlOVDMyX01BWDsNCj4gPiAgICAgICBMSVNU X0lOU0VSVF9IRUFEKCZtdHJtbmctPm1ldGVycywgYXNvX210ciwgbmV4dCk7DQo+ID4gICAgICAg cnRlX3NwaW5sb2NrX3VubG9jaygmbXRybW5nLT5tdHJzbCk7DQo+ID4gIH0NCj4gPiBAQCAtNjA5 NCw4ICs2MDY2LDggQEAgZmxvd19kdl9tdHJfYWxsb2Moc3RydWN0IHJ0ZV9ldGhfZGV2ICpkZXYp DQo+ID4gICAgICAgbXRyX2ZyZWUtPnN0YXRlID0gQVNPX01FVEVSX1dBSVQ7DQo+ID4gICAgICAg cnRlX3NwaW5sb2NrX3VubG9jaygmbXRybW5nLT5tdHJzbCk7DQo+ID4gICAgICAgcG9vbCA9IGNv bnRhaW5lcl9vZihtdHJfZnJlZSwNCj4gPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHN0cnVjdCBtbHg1X2Fzb19tdHJfcG9vbCwNCj4gPiAtICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIG10cnNbbXRyX2ZyZWUtPm9mZnNldF0pOw0KPiA+ICsgICAgICAg ICAgICAgICAgICAgICBzdHJ1Y3QgbWx4NV9hc29fbXRyX3Bvb2wsDQo+ID4gKyAgICAgICAgICAg ICAgICAgICAgIG10cnNbbXRyX2ZyZWUtPm9mZnNldF0pOw0KPiA+ICAgICAgIG10cl9pZHggPSBN TFg1X01BS0VfTVRSX0lEWChwb29sLT5pbmRleCwgbXRyX2ZyZWUtPm9mZnNldCk7DQo+ID4gICAg ICAgaWYgKCFtdHJfZnJlZS0+Zm0ubWV0ZXJfYWN0aW9uKSB7DQo+ID4gICNpZmRlZiBIQVZFX01M WDVfRFJfQ1JFQVRFX0FDVElPTl9BU08NCj4gPiBAQCAtMTM3MDIsNDMzICsxMzY3NCw2IEBAIGZs b3dfZHZfY3JlYXRlX210cl90Ymwoc3RydWN0IHJ0ZV9ldGhfZGV2DQo+ID4gKmRldikNCj4gPiAg ICAgICByZXR1cm4gTlVMTDsNCj4gPiAgfQ0KPiA+DQo+ID4gLS8qKg0KPiA+IC0gKiBEZXN0cm95 IHRoZSBtZXRlciB0YWJsZSBtYXRjaGVycy4NCj4gPiAtICogTG9jayBmcmVlLCAobXV0ZXggc2hv dWxkIGJlIGFjcXVpcmVkIGJ5IGNhbGxlcikuDQo+ID4gLSAqDQo+ID4gLSAqIEBwYXJhbVtpbl0g ZGV2DQo+ID4gLSAqICAgUG9pbnRlciB0byBFdGhlcm5ldCBkZXZpY2UuDQo+ID4gLSAqIEBwYXJh bVtpbixvdXRdIGR0Yg0KPiA+IC0gKiAgIFBvaW50ZXIgdG8gRFYgbWV0ZXIgdGFibGUuDQo+ID4g LSAqDQo+ID4gLSAqIEByZXR1cm4NCj4gPiAtICogICBBbHdheXMgMC4NCj4gPiAtICovDQo+ID4g LXN0YXRpYyBpbnQNCj4gPiAtZmxvd19kdl9kZXN0cm95X210cl9tYXRjaGVycyhzdHJ1Y3QgcnRl X2V0aF9kZXYgKmRldiwNCj4gPiAtICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgbWx4 NV9tZXRlcl9kb21haW5faW5mbyAqZHRiKQ0KPiA+IC17DQo+ID4gLSAgICAgc3RydWN0IG1seDVf cHJpdiAqcHJpdiA9IGRldi0+ZGF0YS0+ZGV2X3ByaXZhdGU7DQo+ID4gLSAgICAgc3RydWN0IG1s eDVfZmxvd190YmxfZGF0YV9lbnRyeSAqdGJsOw0KPiA+IC0NCj4gPiAtICAgICBpZiAoIXByaXYt PmNvbmZpZy5kdl9mbG93X2VuKQ0KPiA+IC0gICAgICAgICAgICAgcmV0dXJuIDA7DQo+ID4gLSAg ICAgaWYgKGR0Yi0+ZHJvcF9tYXRjaGVyKSB7DQo+ID4gLSAgICAgICAgICAgICB0YmwgPSBjb250 YWluZXJfb2YoZHRiLT5kcm9wX21hdGNoZXItPnRibCwgdHlwZW9mKCp0YmwpLA0KPiA+IHRibCk7 DQo+ID4gLSAgICAgICAgICAgICBtbHg1X2NhY2hlX3VucmVnaXN0ZXIoJnRibC0+bWF0Y2hlcnMs DQo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmR0Yi0+ZHJvcF9tYXRj aGVyLT5lbnRyeSk7DQo+ID4gLSAgICAgICAgICAgICBkdGItPmRyb3BfbWF0Y2hlciA9IE5VTEw7 DQo+ID4gLSAgICAgfQ0KPiA+IC0gICAgIGlmIChkdGItPmNvbG9yX21hdGNoZXIpIHsNCj4gPiAt ICAgICAgICAgICAgIHRibCA9IGNvbnRhaW5lcl9vZihkdGItPmNvbG9yX21hdGNoZXItPnRibCwg dHlwZW9mKCp0YmwpLA0KPiA+IHRibCk7DQo+ID4gLSAgICAgICAgICAgICBtbHg1X2NhY2hlX3Vu cmVnaXN0ZXIoJnRibC0+bWF0Y2hlcnMsDQo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgJmR0Yi0+Y29sb3JfbWF0Y2hlci0+ZW50cnkpOw0KPiA+IC0gICAgICAgICAgICAg ZHRiLT5jb2xvcl9tYXRjaGVyID0gTlVMTDsNCj4gPiAtICAgICB9DQo+ID4gLSAgICAgcmV0dXJu IDA7DQo+ID4gLX0NCj4gPiAtDQo+ID4gLS8qKg0KPiA+IC0gKiBDcmVhdGUgdGhlIG1hdGNoZXJz IGZvciBtZXRlciB0YWJsZS4NCj4gPiAtICoNCj4gPiAtICogQHBhcmFtW2luXSBkZXYNCj4gPiAt ICogICBQb2ludGVyIHRvIEV0aGVybmV0IGRldmljZS4NCj4gPiAtICogQHBhcmFtW2luXSBjb2xv cl9yZWdfY19pZHgNCj4gPiAtICogICBSZWcgQyBpbmRleCBmb3IgY29sb3IgbWF0Y2guDQo+ID4g LSAqIEBwYXJhbVtpbl0gbXRyX2lkX3JlZ19jX2lkeA0KPiA+IC0gKiAgIFJlZyBDIGluZGV4IGZv ciBtZXRlcl9pZCBtYXRjaC4NCj4gPiAtICogQHBhcmFtW2luXSBtdHJfaWRfbWFzaw0KPiA+IC0g KiAgIE1hc2sgZm9yIG1ldGVyX2lkIG1hdGNoIGNyaXRlcmlhLg0KPiA+IC0gKiBAcGFyYW1baW4s b3V0XSBkdGINCj4gPiAtICogICBQb2ludGVyIHRvIERWIG1ldGVyIHRhYmxlLg0KPiA+IC0gKiBA cGFyYW1bb3V0XSBlcnJvcg0KPiA+IC0gKiAgIFBlcmZvcm0gdmVyYm9zZSBlcnJvciByZXBvcnRp bmcgaWYgbm90IE5VTEwuDQo+ID4gLSAqDQo+ID4gLSAqIEByZXR1cm4NCj4gPiAtICogICAwIG9u IHN1Y2Nlc3MsIGEgbmVnYXRpdmUgZXJybm8gdmFsdWUgb3RoZXJ3aXNlIGFuZCBydGVfZXJybm8g aXMgc2V0Lg0KPiA+IC0gKi8NCj4gPiAtc3RhdGljIGludA0KPiA+IC1mbG93X2R2X3ByZXBhcmVf bXRyX21hdGNoZXJzKHN0cnVjdCBydGVfZXRoX2RldiAqZGV2LA0KPiA+IC0gICAgICAgICAgICAg ICAgICAgICAgICAgIHVpbnQzMl90IGNvbG9yX3JlZ19jX2lkeCwNCj4gPiAtICAgICAgICAgICAg ICAgICAgICAgICAgICB1aW50MzJfdCBtdHJfaWRfcmVnX2NfaWR4LA0KPiA+IC0gICAgICAgICAg ICAgICAgICAgICAgICAgIHVpbnQzMl90IG10cl9pZF9tYXNrLA0KPiA+IC0gICAgICAgICAgICAg ICAgICAgICAgICAgIHN0cnVjdCBtbHg1X21ldGVyX2RvbWFpbl9pbmZvICpkdGIsDQo+ID4gLSAg ICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHJ0ZV9mbG93X2Vycm9yICplcnJvcikNCj4g PiAtew0KPiA+IC0gICAgIHN0cnVjdCBtbHg1X3ByaXYgKnByaXYgPSBkZXYtPmRhdGEtPmRldl9w cml2YXRlOw0KPiA+IC0gICAgIHN0cnVjdCBtbHg1X2Zsb3dfdGJsX2RhdGFfZW50cnkgKnRibF9k YXRhOw0KPiA+IC0gICAgIHN0cnVjdCBtbHg1X2NhY2hlX2VudHJ5ICplbnRyeTsNCj4gPiAtICAg ICBzdHJ1Y3QgbWx4NV9mbG93X2R2X21hdGNoZXIgbWF0Y2hlciA9IHsNCj4gPiAtICAgICAgICAg ICAgIC5tYXNrID0gew0KPiA+IC0gICAgICAgICAgICAgICAgICAgICAuc2l6ZSA9IHNpemVvZiht YXRjaGVyLm1hc2suYnVmKSAtDQo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTUxY NV9TVF9TWl9CWVRFUyhmdGVfbWF0Y2hfc2V0X21pc2M0KSwNCj4gPiAtICAgICAgICAgICAgIH0s DQo+ID4gLSAgICAgICAgICAgICAudGJsID0gZHRiLT50YmwsDQo+ID4gLSAgICAgfTsNCj4gPiAt ICAgICBzdHJ1Y3QgbWx4NV9mbG93X2R2X21hdGNoX3BhcmFtcyB2YWx1ZSA9IHsNCj4gPiAtICAg ICAgICAgICAgIC5zaXplID0gc2l6ZW9mKHZhbHVlLmJ1ZikgLQ0KPiA+IC0gICAgICAgICAgICAg ICAgICAgICBNTFg1X1NUX1NaX0JZVEVTKGZ0ZV9tYXRjaF9zZXRfbWlzYzQpLA0KPiA+IC0gICAg IH07DQo+ID4gLSAgICAgc3RydWN0IG1seDVfZmxvd19jYl9jdHggY3R4ID0gew0KPiA+IC0gICAg ICAgICAgICAgLmVycm9yID0gZXJyb3IsDQo+ID4gLSAgICAgICAgICAgICAuZGF0YSA9ICZtYXRj aGVyLA0KPiA+IC0gICAgIH07DQo+ID4gLSAgICAgdWludDMyX3QgY29sb3JfbWFzayA9IChVSU5U MzJfQygxKSA8PCBNTFg1X01UUl9DT0xPUl9CSVRTKSAtDQo+ID4gMTsNCj4gPiAtDQo+ID4gLSAg ICAgdGJsX2RhdGEgPSBjb250YWluZXJfb2YoZHRiLT50YmwsIHN0cnVjdCBtbHg1X2Zsb3dfdGJs X2RhdGFfZW50cnksDQo+ID4gdGJsKTsNCj4gPiAtICAgICBpZiAoIWR0Yi0+ZHJvcF9tYXRjaGVy KSB7DQo+ID4gLSAgICAgICAgICAgICAvKiBDcmVhdGUgbWF0Y2hlcnMgZm9yIERyb3AuICovDQo+ ID4gLSAgICAgICAgICAgICBmbG93X2R2X21hdGNoX21ldGFfcmVnKG1hdGNoZXIubWFzay5idWYs IHZhbHVlLmJ1ZiwNCj4gPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXRy X2lkX3JlZ19jX2lkeCwgMCwgbXRyX2lkX21hc2spOw0KPiA+IC0gICAgICAgICAgICAgbWF0Y2hl ci5wcmlvcml0eSA9IE1MWDVfUkVHX0JJVFMgKiAyIC0gcHJpdi0+bWF4X210cl9iaXRzOw0KPiA+ IC0gICAgICAgICAgICAgbWF0Y2hlci5jcmMgPSBydGVfcmF3X2Nrc3VtKChjb25zdCB2b2lkDQo+ ID4gKiltYXRjaGVyLm1hc2suYnVmLA0KPiA+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgbWF0Y2hlci5tYXNrLnNpemUpOw0KPiA+IC0gICAgICAgICAgICAgZW50cnkgPSBt bHg1X2NhY2hlX3JlZ2lzdGVyKCZ0YmxfZGF0YS0+bWF0Y2hlcnMsICZjdHgpOw0KPiA+IC0gICAg ICAgICAgICAgaWYgKCFlbnRyeSkgew0KPiA+IC0gICAgICAgICAgICAgICAgICAgICBEUlZfTE9H KEVSUiwgIkZhaWxlZCB0byByZWdpc3RlciBtZXRlciBkcm9wDQo+ID4gbWF0Y2hlci4iKTsNCj4g PiAtICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOw0KPiA+IC0gICAgICAgICAgICAgfQ0K PiA+IC0gICAgICAgICAgICAgZHRiLT5kcm9wX21hdGNoZXIgPQ0KPiA+IC0gICAgICAgICAgICAg ICAgICAgICBjb250YWluZXJfb2YoZW50cnksIHN0cnVjdCBtbHg1X2Zsb3dfZHZfbWF0Y2hlciwN Cj4gPiBlbnRyeSk7DQo+ID4gLSAgICAgfQ0KPiA+IC0gICAgIGlmICghZHRiLT5jb2xvcl9tYXRj aGVyKSB7DQo+ID4gLSAgICAgICAgICAgICAvKiBDcmVhdGUgbWF0Y2hlcnMgZm9yIENvbG9yICsg bWV0ZXJfaWQuICovDQo+ID4gLSAgICAgICAgICAgICBpZiAocHJpdi0+bXRyX3JlZ19zaGFyZSkg ew0KPiA+IC0gICAgICAgICAgICAgICAgICAgICBmbG93X2R2X21hdGNoX21ldGFfcmVnKG1hdGNo ZXIubWFzay5idWYsDQo+ID4gdmFsdWUuYnVmLA0KPiA+IC0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgY29sb3JfcmVnX2NfaWR4LCAwLA0KPiA+IC0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKG10cl9pZF9tYXNrIHwgY29sb3JfbWFzaykpOw0KPiA+IC0g ICAgICAgICAgICAgfSBlbHNlIHsNCj4gPiAtICAgICAgICAgICAgICAgICAgICAgZmxvd19kdl9t YXRjaF9tZXRhX3JlZyhtYXRjaGVyLm1hc2suYnVmLA0KPiA+IHZhbHVlLmJ1ZiwNCj4gPiAtICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yX3JlZ19jX2lkeCwgMCwgY29s b3JfbWFzayk7DQo+ID4gLSAgICAgICAgICAgICAgICAgICAgIGZsb3dfZHZfbWF0Y2hfbWV0YV9y ZWcobWF0Y2hlci5tYXNrLmJ1ZiwNCj4gPiB2YWx1ZS5idWYsDQo+ID4gLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBtdHJfaWRfcmVnX2NfaWR4LCAwLCBtdHJfaWRfbWFzayk7 DQo+ID4gLSAgICAgICAgICAgICB9DQo+ID4gLSAgICAgICAgICAgICBtYXRjaGVyLnByaW9yaXR5 ID0gTUxYNV9SRUdfQklUUyAtIHByaXYtPm1heF9tdHJfYml0czsNCj4gPiAtICAgICAgICAgICAg IG1hdGNoZXIuY3JjID0gcnRlX3Jhd19ja3N1bSgoY29uc3Qgdm9pZA0KPiA+ICopbWF0Y2hlci5t YXNrLmJ1ZiwNCj4gPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNo ZXIubWFzay5zaXplKTsNCj4gPiAtICAgICAgICAgICAgIGVudHJ5ID0gbWx4NV9jYWNoZV9yZWdp c3RlcigmdGJsX2RhdGEtPm1hdGNoZXJzLCAmY3R4KTsNCj4gPiAtICAgICAgICAgICAgIGlmICgh ZW50cnkpIHsNCj4gPiAtICAgICAgICAgICAgICAgICAgICAgRFJWX0xPRyhFUlIsICJGYWlsZWQg dG8gcmVnaXN0ZXIgbWV0ZXIgY29sb3INCj4gPiBtYXRjaGVyLiIpOw0KPiA+IC0gICAgICAgICAg ICAgICAgICAgICByZXR1cm4gLTE7DQo+ID4gLSAgICAgICAgICAgICB9DQo+ID4gLSAgICAgICAg ICAgICBkdGItPmNvbG9yX21hdGNoZXIgPQ0KPiA+IC0gICAgICAgICAgICAgICAgICAgICBjb250 YWluZXJfb2YoZW50cnksIHN0cnVjdCBtbHg1X2Zsb3dfZHZfbWF0Y2hlciwNCj4gPiBlbnRyeSk7 DQo+ID4gLSAgICAgfQ0KPiA+IC0gICAgIHJldHVybiAwOw0KPiA+IC19DQo+ID4gLQ0KPiA+IC0v KioNCj4gPiAtICogRGVzdHJveSBkb21haW4gcG9saWNlciBydWxlLg0KPiA+IC0gKg0KPiA+IC0g KiBAcGFyYW1baW5dIGRldg0KPiA+IC0gKiAgIFBvaW50ZXIgdG8gRXRoZXJuZXQgZGV2aWNlLg0K PiA+IC0gKiBAcGFyYW1baW5dIGR0DQo+ID4gLSAqICAgUG9pbnRlciB0byBkb21haW4gdGFibGUu DQo+ID4gLSAqLw0KPiA+IC1zdGF0aWMgdm9pZA0KPiA+IC1mbG93X2R2X2Rlc3Ryb3lfZG9tYWlu X3BvbGljZXJfcnVsZShzdHJ1Y3QgcnRlX2V0aF9kZXYgKmRldiwNCj4gPiAtICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgc3RydWN0IG1seDVfbWV0ZXJfZG9tYWluX2luZm8gKmR0KQ0K PiA+IC17DQo+ID4gLSAgICAgaWYgKGR0LT5kcm9wX3J1bGUpIHsNCj4gPiAtICAgICAgICAgICAg IGNsYWltX3plcm8obWx4NV9mbG93X29zX2Rlc3Ryb3lfZmxvdyhkdC0+ZHJvcF9ydWxlKSk7DQo+ ID4gLSAgICAgICAgICAgICBkdC0+ZHJvcF9ydWxlID0gTlVMTDsNCj4gPiAtICAgICB9DQo+ID4g LSAgICAgaWYgKGR0LT5ncmVlbl9ydWxlKSB7DQo+ID4gLSAgICAgICAgICAgICBjbGFpbV96ZXJv KG1seDVfZmxvd19vc19kZXN0cm95X2Zsb3coZHQtPmdyZWVuX3J1bGUpKTsNCj4gPiAtICAgICAg ICAgICAgIGR0LT5ncmVlbl9ydWxlID0gTlVMTDsNCj4gPiAtICAgICB9DQo+ID4gLSAgICAgZmxv d19kdl9kZXN0cm95X210cl9tYXRjaGVycyhkZXYsIGR0KTsNCj4gPiAtICAgICBpZiAoZHQtPmp1 bXBfYWN0bikgew0KPiA+IC0gICAgICAgICAgICAgY2xhaW1femVybyhtbHg1X2Zsb3dfb3NfZGVz dHJveV9mbG93X2FjdGlvbihkdC0NCj4gPiA+anVtcF9hY3RuKSk7DQo+ID4gLSAgICAgICAgICAg ICBkdC0+anVtcF9hY3RuID0gTlVMTDsNCj4gPiAtICAgICB9DQo+ID4gLX0NCj4gPiAtDQo+ID4g LS8qKg0KPiA+IC0gKiBEZXN0cm95IHBvbGljZXIgcnVsZXMuDQo+ID4gLSAqDQo+ID4gLSAqIEBw YXJhbVtpbl0gZGV2DQo+ID4gLSAqICAgUG9pbnRlciB0byBFdGhlcm5ldCBkZXZpY2UuDQo+ID4g LSAqIEBwYXJhbVtpbl0gZm0NCj4gPiAtICogICBQb2ludGVyIHRvIGZsb3cgbWV0ZXIgc3RydWN0 dXJlLg0KPiA+IC0gKiBAcGFyYW1baW5dIGF0dHINCj4gPiAtICogICBQb2ludGVyIHRvIGZsb3cg YXR0cmlidXRlcy4NCj4gPiAtICoNCj4gPiAtICogQHJldHVybg0KPiA+IC0gKiAgIEFsd2F5cyAw Lg0KPiA+IC0gKi8NCj4gPiAtc3RhdGljIGludA0KPiA+IC1mbG93X2R2X2Rlc3Ryb3lfcG9saWNl cl9ydWxlcyhzdHJ1Y3QgcnRlX2V0aF9kZXYgKmRldiwNCj4gPiAtICAgICAgICAgICAgICAgICAg ICAgICAgICAgY29uc3Qgc3RydWN0IG1seDVfZmxvd19tZXRlcl9pbmZvICpmbSwNCj4gPiAtICAg ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IHJ0ZV9mbG93X2F0dHIgKmF0dHIp DQo+ID4gLXsNCj4gPiAtICAgICBzdHJ1Y3QgbWx4NV9tZXRlcl9kb21haW5zX2luZm9zICptdGIg PSBmbSA/IGZtLT5tZnRzIDogTlVMTDsNCj4gPiAtDQo+ID4gLSAgICAgaWYgKCFtdGIpDQo+ID4g LSAgICAgICAgICAgICByZXR1cm4gMDsNCj4gPiAtICAgICBpZiAoYXR0ci0+ZWdyZXNzKQ0KPiA+ IC0gICAgICAgICAgICAgZmxvd19kdl9kZXN0cm95X2RvbWFpbl9wb2xpY2VyX3J1bGUoZGV2LCAm bXRiLT5lZ3Jlc3MpOw0KPiA+IC0gICAgIGlmIChhdHRyLT5pbmdyZXNzKQ0KPiA+IC0gICAgICAg ICAgICAgZmxvd19kdl9kZXN0cm95X2RvbWFpbl9wb2xpY2VyX3J1bGUoZGV2LCAmbXRiLQ0KPiA+ ID5pbmdyZXNzKTsNCj4gPiAtICAgICBpZiAoYXR0ci0+dHJhbnNmZXIpDQo+ID4gLSAgICAgICAg ICAgICBmbG93X2R2X2Rlc3Ryb3lfZG9tYWluX3BvbGljZXJfcnVsZShkZXYsICZtdGItDQo+ID4g PnRyYW5zZmVyKTsNCj4gPiAtICAgICByZXR1cm4gMDsNCj4gPiAtfQ0KPiA+IC0NCj4gPiAtLyoq DQo+ID4gLSAqIENyZWF0ZSBzcGVjaWZ5IGRvbWFpbiBtZXRlciBwb2xpY2VyIHJ1bGUuDQo+ID4g LSAqDQo+ID4gLSAqIEBwYXJhbVtpbl0gZGV2DQo+ID4gLSAqICAgUG9pbnRlciB0byBFdGhlcm5l dCBkZXZpY2UuDQo+ID4gLSAqIEBwYXJhbVtpbl0gZm0NCj4gPiAtICogICBQb2ludGVyIHRvIGZs b3cgbWV0ZXIgc3RydWN0dXJlLg0KPiA+IC0gKiBAcGFyYW1baW5dIG10cl9pZHgNCj4gPiAtICog ICBtZXRlciBpbmRleC4NCj4gPiAtICogQHBhcmFtW2luXSBtdGINCj4gPiAtICogICBQb2ludGVy IHRvIERWIG1ldGVyIHRhYmxlIHNldC4NCj4gPiAtICogQHBhcmFtW291dF0gZHJvcF9ydWxlDQo+ ID4gLSAqICAgVGhlIGFkZHJlc3Mgb2YgcG9pbnRlciBzYXZpbmcgZHJvcCBydWxlLg0KPiA+IC0g KiBAcGFyYW1bb3V0XSBjb2xvcl9ydWxlDQo+ID4gLSAqICAgVGhlIGFkZHJlc3Mgb2YgcG9pbnRl ciBzYXZpbmcgZ3JlZW4gcnVsZS4NCj4gPiAtICoNCj4gPiAtICogQHJldHVybg0KPiA+IC0gKiAg IDAgb24gc3VjY2VzcywgLTEgb3RoZXJ3aXNlLg0KPiA+IC0gKi8NCj4gPiAtc3RhdGljIGludA0K PiA+IC1mbG93X2R2X2NyZWF0ZV9wb2xpY2VyX2ZvcndhcmRfcnVsZShzdHJ1Y3QgcnRlX2V0aF9k ZXYgKmRldiwNCj4gPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IG1s eDVfZmxvd19tZXRlcl9pbmZvICpmbSwNCj4gPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgdWludDMyX3QgbXRyX2lkeCwNCj4gPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgc3RydWN0IG1seDVfbWV0ZXJfZG9tYWluX2luZm8gKmR0YiwNCj4gPiAtICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqKmRyb3BfcnVsZSwNCj4gPiAtICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqKmdyZWVuX3J1bGUpDQo+ID4gLXsNCj4gPiAt ICAgICBzdHJ1Y3QgbWx4NV9wcml2ICpwcml2ID0gZGV2LT5kYXRhLT5kZXZfcHJpdmF0ZTsNCj4g PiAtICAgICBzdHJ1Y3QgbWx4NV9mbG93X2R2X21hdGNoX3BhcmFtcyBtYXRjaGVyID0gew0KPiA+ IC0gICAgICAgICAgICAgLnNpemUgPSBzaXplb2YobWF0Y2hlci5idWYpIC0NCj4gPiAtICAgICAg ICAgICAgICAgICAgICAgTUxYNV9TVF9TWl9CWVRFUyhmdGVfbWF0Y2hfc2V0X21pc2M0KSwNCj4g PiAtICAgICB9Ow0KPiA+IC0gICAgIHN0cnVjdCBtbHg1X2Zsb3dfZHZfbWF0Y2hfcGFyYW1zIHZh bHVlID0gew0KPiA+IC0gICAgICAgICAgICAgLnNpemUgPSBzaXplb2YodmFsdWUuYnVmKSAtDQo+ ID4gLSAgICAgICAgICAgICAgICAgICAgIE1MWDVfU1RfU1pfQllURVMoZnRlX21hdGNoX3NldF9t aXNjNCksDQo+ID4gLSAgICAgfTsNCj4gPiAtICAgICBzdHJ1Y3QgbWx4NV9tZXRlcl9kb21haW5z X2luZm9zICptdGIgPSBmbS0+bWZ0czsNCj4gPiAtICAgICBzdHJ1Y3QgcnRlX2Zsb3dfZXJyb3Ig ZXJyb3I7DQo+ID4gLSAgICAgdWludDMyX3QgY29sb3JfcmVnX2MgPSBtbHg1X2Zsb3dfZ2V0X3Jl Z19pZChkZXYsDQo+ID4gTUxYNV9NVFJfQ09MT1IsDQo+ID4gLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCAmZXJyb3IpOw0KPiA+IC0gICAgIHVpbnQz Ml90IG10cl9pZF9yZWdfYyA9IG1seDVfZmxvd19nZXRfcmVnX2lkKGRldiwgTUxYNV9NVFJfSUQs DQo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg MCwgJmVycm9yKTsNCj4gPiAtICAgICB1aW50OF90IG10cl9pZF9vZmZzZXQgPSBwcml2LT5tdHJf cmVnX3NoYXJlID8NCj4gPiBNTFg1X01UUl9DT0xPUl9CSVRTIDogMDsNCj4gPiAtICAgICB1aW50 MzJfdCBtdHJfaWRfbWFzayA9DQo+ID4gLSAgICAgICAgICAgICAoKFVJTlQzMl9DKDEpIDw8IHBy aXYtPm1heF9tdHJfYml0cykgLSAxKSA8PCBtdHJfaWRfb2Zmc2V0Ow0KPiA+IC0gICAgIHZvaWQg KmFjdGlvbnNbTUVURVJfQUNUSU9OU107DQo+ID4gLSAgICAgaW50IGk7DQo+ID4gLSAgICAgaW50 IHJldCA9IDA7DQo+ID4gLQ0KPiA+IC0gICAgIC8qIENyZWF0ZSBqdW1wIGFjdGlvbi4gKi8NCj4g PiAtICAgICBpZiAoIWR0Yi0+anVtcF9hY3RuKQ0KPiA+IC0gICAgICAgICAgICAgcmV0ID0gbWx4 NV9mbG93X29zX2NyZWF0ZV9mbG93X2FjdGlvbl9kZXN0X2Zsb3dfdGJsDQo+ID4gLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKGR0Yi0+c2Z4X3RibC0+b2JqLCAmZHRiLT5qdW1wX2FjdG4p Ow0KPiA+IC0gICAgIGlmIChyZXQpIHsNCj4gPiAtICAgICAgICAgICAgIERSVl9MT0coRVJSLCAi RmFpbGVkIHRvIGNyZWF0ZSBwb2xpY2VyIGp1bXAgYWN0aW9uLiIpOw0KPiA+IC0gICAgICAgICAg ICAgZ290byBlcnJvcjsNCj4gPiAtICAgICB9DQo+ID4gLSAgICAgLyogUHJlcGFyZSBtYXRjaGVy cy4gKi8NCj4gPiAtICAgICBpZiAoIWR0Yi0+ZHJvcF9tYXRjaGVyIHx8ICFkdGItPmNvbG9yX21h dGNoZXIpIHsNCj4gPiAtICAgICAgICAgICAgIHJldCA9IGZsb3dfZHZfcHJlcGFyZV9tdHJfbWF0 Y2hlcnMoZGV2LCBjb2xvcl9yZWdfYywNCj4gPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgbXRyX2lkX3JlZ19jLA0KPiA+IG10cl9pZF9tYXNrLA0KPiA+ IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkdGIsICZl cnJvcik7DQo+ID4gLSAgICAgICAgICAgICBpZiAocmV0KSB7DQo+ID4gLSAgICAgICAgICAgICAg ICAgICAgIERSVl9MT0coRVJSLCAiRmFpbGVkIHRvIHNldHVwIG1hdGNoZXJzIGZvciBtdHINCj4g PiB0YWJsZS4iKTsNCj4gPiAtICAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsNCj4gPiAt ICAgICAgICAgICAgIH0NCj4gPiAtICAgICB9DQo+ID4gLSAgICAgLyogQ3JlYXRlIERyb3AgZmxv dywgbWF0Y2hpbmcgbWV0ZXJfaWQgb25seS4gKi8NCj4gPiAtICAgICBpID0gMDsNCj4gPiAtICAg ICBmbG93X2R2X21hdGNoX21ldGFfcmVnKG1hdGNoZXIuYnVmLCB2YWx1ZS5idWYsIG10cl9pZF9y ZWdfYywNCj4gPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtdHJfaWR4IDw8IG10cl9p ZF9vZmZzZXQpLCBVSU5UMzJfTUFYKTsNCj4gPiAtICAgICBpZiAobXRiLT5kcm9wX2NvdW50KQ0K PiA+IC0gICAgICAgICAgICAgYWN0aW9uc1tpKytdID0gbXRiLT5kcm9wX2NvdW50Ow0KPiA+IC0g ICAgIGFjdGlvbnNbaSsrXSA9IHByaXYtPnNoLT5kcl9kcm9wX2FjdGlvbjsNCj4gPiAtICAgICBy ZXQgPSBtbHg1X2Zsb3dfb3NfY3JlYXRlX2Zsb3coZHRiLT5kcm9wX21hdGNoZXItDQo+ID4gPm1h dGNoZXJfb2JqZWN0LA0KPiA+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo dm9pZCAqKSZ2YWx1ZSwgaSwgYWN0aW9ucywgZHJvcF9ydWxlKTsNCj4gPiAtICAgICBpZiAocmV0 KSB7DQo+ID4gLSAgICAgICAgICAgICBEUlZfTE9HKEVSUiwgIkZhaWxlZCB0byBjcmVhdGUgbWV0 ZXIgcG9saWNlciBkcm9wIHJ1bGUuIik7DQo+ID4gLSAgICAgICAgICAgICBnb3RvIGVycm9yOw0K PiA+IC0gICAgIH0NCj4gPiAtICAgICAvKiBDcmVhdGUgZmxvdyBtYXRjaGluZyBHcmVlbiBjb2xv ciArIG1ldGVyX2lkLiAqLw0KPiA+IC0gICAgIGkgPSAwOw0KPiA+IC0gICAgIGlmIChwcml2LT5t dHJfcmVnX3NoYXJlKSB7DQo+ID4gLSAgICAgICAgICAgICBmbG93X2R2X21hdGNoX21ldGFfcmVn KG1hdGNoZXIuYnVmLCB2YWx1ZS5idWYsDQo+ID4gY29sb3JfcmVnX2MsDQo+ID4gLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobXRyX2lkeCA8PCBtdHJfaWRfb2Zmc2V0KSB8 DQo+ID4gLQ0KPiA+ICAgICAgIHJ0ZV9jb2xfMl9tbHg1X2NvbChSVEVfQ09MT1JfR1JFRU4pKSwN Cj4gPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVUlOVDMyX01BWCk7DQo+ ID4gLSAgICAgfSBlbHNlIHsNCj4gPiAtICAgICAgICAgICAgIGZsb3dfZHZfbWF0Y2hfbWV0YV9y ZWcobWF0Y2hlci5idWYsIHZhbHVlLmJ1ZiwNCj4gPiBjb2xvcl9yZWdfYywNCj4gPiAtICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnRlX2NvbF8yX21seDVfY29sKFJURV9DT0xP Ul9HUkVFTiksDQo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVJTlQz Ml9NQVgpOw0KPiA+IC0gICAgICAgICAgICAgZmxvd19kdl9tYXRjaF9tZXRhX3JlZyhtYXRjaGVy LmJ1ZiwgdmFsdWUuYnVmLA0KPiA+IG10cl9pZF9yZWdfYywNCj4gPiAtICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgbXRyX2lkeCwgVUlOVDMyX01BWCk7DQo+ID4gLSAgICAgfQ0K PiA+IC0gICAgIGlmIChtdGItPmdyZWVuX2NvdW50KQ0KPiA+IC0gICAgICAgICAgICAgYWN0aW9u c1tpKytdID0gbXRiLT5ncmVlbl9jb3VudDsNCj4gPiAtICAgICBhY3Rpb25zW2krK10gPSBkdGIt Pmp1bXBfYWN0bjsNCj4gPiAtICAgICByZXQgPSBtbHg1X2Zsb3dfb3NfY3JlYXRlX2Zsb3coZHRi LT5jb2xvcl9tYXRjaGVyLQ0KPiA+ID5tYXRjaGVyX29iamVjdCwNCj4gPiAtICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKHZvaWQgKikmdmFsdWUsIGksIGFjdGlvbnMsIGdyZWVu X3J1bGUpOw0KPiA+IC0gICAgIGlmIChyZXQpIHsNCj4gPiAtICAgICAgICAgICAgIERSVl9MT0co RVJSLCAiRmFpbGVkIHRvIGNyZWF0ZSBtZXRlciBwb2xpY2VyIGNvbG9yIHJ1bGUuIik7DQo+ID4g LSAgICAgICAgICAgICBnb3RvIGVycm9yOw0KPiA+IC0gICAgIH0NCj4gPiAtICAgICByZXR1cm4g MDsNCj4gPiAtZXJyb3I6DQo+ID4gLSAgICAgcnRlX2Vycm5vID0gZXJybm87DQo+ID4gLSAgICAg cmV0dXJuIC0xOw0KPiA+IC19DQo+ID4gLQ0KPiA+IC0vKioNCj4gPiAtICogUHJlcGFyZSBwb2xp Y2VyIHJ1bGVzIGZvciBhbGwgZG9tYWlucy4NCj4gPiAtICogSWYgbWV0ZXIgYWxyZWFkeSBpbml0 aWFsaXplZCwgdGhpcyB3aWxsIHJlcGxhY2UgYWxsIG9sZCBydWxlcyB3aXRoIG5ldyBvbmVzLg0K PiA+IC0gKg0KPiA+IC0gKiBAcGFyYW1baW5dIGRldg0KPiA+IC0gKiAgIFBvaW50ZXIgdG8gRXRo ZXJuZXQgZGV2aWNlLg0KPiA+IC0gKiBAcGFyYW1baW5dIGZtDQo+ID4gLSAqICAgUG9pbnRlciB0 byBmbG93IG1ldGVyIHN0cnVjdHVyZS4NCj4gPiAtICogQHBhcmFtW2luXSBhdHRyDQo+ID4gLSAq ICAgUG9pbnRlciB0byBmbG93IGF0dHJpYnV0ZXMuDQo+ID4gLSAqDQo+ID4gLSAqIEByZXR1cm4N Cj4gPiAtICogICAwIG9uIHN1Y2Nlc3MsIC0xIG90aGVyd2lzZS4NCj4gPiAtICovDQo+ID4gLXN0 YXRpYyBpbnQNCj4gPiAtZmxvd19kdl9wcmVwYXJlX3BvbGljZXJfcnVsZXMoc3RydWN0IHJ0ZV9l dGhfZGV2ICpkZXYsDQo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBtbHg1 X2Zsb3dfbWV0ZXJfaW5mbyAqZm0sDQo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv bnN0IHN0cnVjdCBydGVfZmxvd19hdHRyICphdHRyKQ0KPiA+IC17DQo+ID4gLSAgICAgc3RydWN0 IG1seDVfcHJpdiAqcHJpdiA9IGRldi0+ZGF0YS0+ZGV2X3ByaXZhdGU7DQo+ID4gLSAgICAgc3Ry dWN0IG1seDVfbWV0ZXJfZG9tYWluc19pbmZvcyAqbXRiID0gZm0tPm1mdHM7DQo+ID4gLSAgICAg Ym9vbCBpbml0aWFsaXplZCA9IGZhbHNlOw0KPiA+IC0gICAgIHN0cnVjdCBtbHg1X2Zsb3dfY291 bnRlciAqY250Ow0KPiA+IC0gICAgIHZvaWQgKmVncmVzc19kcm9wX3J1bGUgPSBOVUxMOw0KPiA+ IC0gICAgIHZvaWQgKmVncmVzc19ncmVlbl9ydWxlID0gTlVMTDsNCj4gPiAtICAgICB2b2lkICpp bmdyZXNzX2Ryb3BfcnVsZSA9IE5VTEw7DQo+ID4gLSAgICAgdm9pZCAqaW5ncmVzc19ncmVlbl9y dWxlID0gTlVMTDsNCj4gPiAtICAgICB2b2lkICp0cmFuc2Zlcl9kcm9wX3J1bGUgPSBOVUxMOw0K PiA+IC0gICAgIHZvaWQgKnRyYW5zZmVyX2dyZWVuX3J1bGUgPSBOVUxMOw0KPiA+IC0gICAgIHVp bnQzMl90IG10cl9pZHg7DQo+ID4gLSAgICAgaW50IHJldDsNCj4gPiAtDQo+ID4gLSAgICAgLyog R2V0IHRoZSBzdGF0aXN0aWNzIGNvdW50ZXJzIGZvciBncmVlbi9kcm9wLiAqLw0KPiA+IC0gICAg IGlmIChmbS0+cG9saWNlcl9zdGF0cy5wYXNzX2NudCkgew0KPiA+IC0gICAgICAgICAgICAgY250 ID0gZmxvd19kdl9jb3VudGVyX2dldF9ieV9pZHgoZGV2LA0KPiA+IC0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgZm0tPnBvbGljZXJfc3RhdHMucGFzc19jbnQsDQo+ID4gLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsNCj4gPiAtICAgICAgICAg ICAgIG10Yi0+Z3JlZW5fY291bnQgPSBjbnQtPmFjdGlvbjsNCj4gPiAtICAgICB9IGVsc2Ugew0K PiA+IC0gICAgICAgICAgICAgbXRiLT5ncmVlbl9jb3VudCA9IE5VTEw7DQo+ID4gLSAgICAgfQ0K PiA+IC0gICAgIGlmIChmbS0+cG9saWNlcl9zdGF0cy5kcm9wX2NudCkgew0KPiA+IC0gICAgICAg ICAgICAgY250ID0gZmxvd19kdl9jb3VudGVyX2dldF9ieV9pZHgoZGV2LA0KPiA+IC0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm0tPnBvbGljZXJfc3RhdHMuZHJvcF9jbnQs DQo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsNCj4gPiAt ICAgICAgICAgICAgIG10Yi0+ZHJvcF9jb3VudCA9IGNudC0+YWN0aW9uOw0KPiA+IC0gICAgIH0g ZWxzZSB7DQo+ID4gLSAgICAgICAgICAgICBtdGItPmRyb3BfY291bnQgPSBOVUxMOw0KPiA+IC0g ICAgIH0NCj4gPiAtICAgICAvKioNCj4gPiAtICAgICAgKiBJZiBmbG93IG1ldGVyIGhhcyBiZWVu IGluaXRpYWxpemVkLCBhbGwgcG9saWNlciBydWxlcw0KPiA+IC0gICAgICAqIGFyZSBjcmVhdGVk LiBTbyBjYW4gZ2V0IGlmIG1ldGVyIGluaXRpYWxpemVkIGJ5IGNoZWNraW5nDQo+ID4gLSAgICAg ICogYW55IHBvbGljZXIgcnVsZS4NCj4gPiAtICAgICAgKi8NCj4gPiAtICAgICBpZiAobXRiLT5l Z3Jlc3MuZHJvcF9ydWxlKQ0KPiA+IC0gICAgICAgICAgICAgaW5pdGlhbGl6ZWQgPSB0cnVlOw0K PiA+IC0gICAgIGlmIChwcml2LT5zaC0+bWV0ZXJfYXNvX2VuKSB7DQo+ID4gLSAgICAgICAgICAg ICBzdHJ1Y3QgbWx4NV9hc29fbXRyICphc29fbXRyID0gTlVMTDsNCj4gPiAtICAgICAgICAgICAg IHN0cnVjdCBtbHg1X2Fzb19tdHJfcG9vbCAqcG9vbDsNCj4gPiAtDQo+ID4gLSAgICAgICAgICAg ICBhc29fbXRyID0gY29udGFpbmVyX29mKGZtLCBzdHJ1Y3QgbWx4NV9hc29fbXRyLCBmbSk7DQo+ ID4gLSAgICAgICAgICAgICBwb29sID0gY29udGFpbmVyX29mKGFzb19tdHIsIHN0cnVjdCBtbHg1 X2Fzb19tdHJfcG9vbCwNCj4gPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXRy c1thc29fbXRyLT5vZmZzZXRdKTsNCj4gPiAtICAgICAgICAgICAgIG10cl9pZHggPSBNTFg1X01B S0VfTVRSX0lEWChwb29sLT5pbmRleCwgYXNvX210ci0NCj4gPiA+b2Zmc2V0KTsNCj4gPiAtICAg ICB9IGVsc2Ugew0KPiA+IC0gICAgICAgICAgICAgc3RydWN0IG1seDVfbGVnYWN5X2Zsb3dfbWV0 ZXIgKmxlZ2FjeV9mbTsNCj4gPiAtDQo+ID4gLSAgICAgICAgICAgICBsZWdhY3lfZm0gPSBjb250 YWluZXJfb2YoZm0sIHN0cnVjdA0KPiA+IG1seDVfbGVnYWN5X2Zsb3dfbWV0ZXIsIGZtKTsNCj4g PiAtICAgICAgICAgICAgIG10cl9pZHggPSBsZWdhY3lfZm0tPmlkeDsNCj4gPiAtICAgICB9DQo+ ID4gLSAgICAgaWYgKGF0dHItPmVncmVzcykgew0KPiA+IC0gICAgICAgICAgICAgcmV0ID0gZmxv d19kdl9jcmVhdGVfcG9saWNlcl9mb3J3YXJkX3J1bGUoZGV2LA0KPiA+IC0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGZtLCBtdHJfaWR4LCAmbXRiLT5lZ3Jlc3MsDQo+ID4gLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgJmVncmVzc19kcm9wX3J1bGUsICZlZ3Jlc3NfZ3JlZW5fcnVs ZSk7DQo+ID4gLSAgICAgICAgICAgICBpZiAocmV0KSB7DQo+ID4gLSAgICAgICAgICAgICAgICAg ICAgIERSVl9MT0coRVJSLCAiRmFpbGVkIHRvIGNyZWF0ZSBlZ3Jlc3MgcG9saWNlci4iKTsNCj4g PiAtICAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsNCj4gPiAtICAgICAgICAgICAgIH0N Cj4gPiAtICAgICB9DQo+ID4gLSAgICAgaWYgKGF0dHItPmluZ3Jlc3MpIHsNCj4gPiAtICAgICAg ICAgICAgIHJldCA9IGZsb3dfZHZfY3JlYXRlX3BvbGljZXJfZm9yd2FyZF9ydWxlKGRldiwNCj4g PiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbSwgbXRyX2lkeCwgJm10Yi0+aW5ncmVz cywNCj4gPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmaW5ncmVzc19kcm9wX3J1bGUs ICZpbmdyZXNzX2dyZWVuX3J1bGUpOw0KPiA+IC0gICAgICAgICAgICAgaWYgKHJldCkgew0KPiA+ IC0gICAgICAgICAgICAgICAgICAgICBEUlZfTE9HKEVSUiwgIkZhaWxlZCB0byBjcmVhdGUgaW5n cmVzcyBwb2xpY2VyLiIpOw0KPiA+IC0gICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOw0K PiA+IC0gICAgICAgICAgICAgfQ0KPiA+IC0gICAgIH0NCj4gPiAtICAgICBpZiAoYXR0ci0+dHJh bnNmZXIpIHsNCj4gPiAtICAgICAgICAgICAgIHJldCA9IGZsb3dfZHZfY3JlYXRlX3BvbGljZXJf Zm9yd2FyZF9ydWxlKGRldiwNCj4gPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbSwg bXRyX2lkeCwgJm10Yi0+dHJhbnNmZXIsDQo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgJnRyYW5zZmVyX2Ryb3BfcnVsZSwNCj4gPiAmdHJhbnNmZXJfZ3JlZW5fcnVsZSk7DQo+ID4g LSAgICAgICAgICAgICBpZiAocmV0KSB7DQo+ID4gLSAgICAgICAgICAgICAgICAgICAgIERSVl9M T0coRVJSLCAiRmFpbGVkIHRvIGNyZWF0ZSB0cmFuc2ZlciBwb2xpY2VyLiIpOw0KPiA+IC0gICAg ICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOw0KPiA+IC0gICAgICAgICAgICAgfQ0KPiA+IC0g ICAgIH0NCj4gPiAtICAgICAvKiBSZXBsYWNlIG9sZCBmbG93cyBpZiBleGlzdGluZy4gKi8NCj4g PiAtICAgICBpZiAobXRiLT5lZ3Jlc3MuZHJvcF9ydWxlKQ0KPiA+IC0gICAgICAgICAgICAgY2xh aW1femVybyhtbHg1X2Zsb3dfb3NfZGVzdHJveV9mbG93KG10Yi0NCj4gPiA+ZWdyZXNzLmRyb3Bf cnVsZSkpOw0KPiA+IC0gICAgIGlmIChtdGItPmVncmVzcy5ncmVlbl9ydWxlKQ0KPiA+IC0gICAg ICAgICAgICAgY2xhaW1femVybyhtbHg1X2Zsb3dfb3NfZGVzdHJveV9mbG93KG10Yi0NCj4gPiA+ ZWdyZXNzLmdyZWVuX3J1bGUpKTsNCj4gPiAtICAgICBpZiAobXRiLT5pbmdyZXNzLmRyb3BfcnVs ZSkNCj4gPiAtICAgICAgICAgICAgIGNsYWltX3plcm8obWx4NV9mbG93X29zX2Rlc3Ryb3lfZmxv dyhtdGItDQo+ID4gPmluZ3Jlc3MuZHJvcF9ydWxlKSk7DQo+ID4gLSAgICAgaWYgKG10Yi0+aW5n cmVzcy5ncmVlbl9ydWxlKQ0KPiA+IC0gICAgICAgICAgICAgY2xhaW1femVybyhtbHg1X2Zsb3df b3NfZGVzdHJveV9mbG93KG10Yi0NCj4gPiA+aW5ncmVzcy5ncmVlbl9ydWxlKSk7DQo+ID4gLSAg ICAgaWYgKG10Yi0+dHJhbnNmZXIuZHJvcF9ydWxlKQ0KPiA+IC0gICAgICAgICAgICAgY2xhaW1f emVybyhtbHg1X2Zsb3dfb3NfZGVzdHJveV9mbG93KG10Yi0NCj4gPiA+dHJhbnNmZXIuZHJvcF9y dWxlKSk7DQo+ID4gLSAgICAgaWYgKG10Yi0+dHJhbnNmZXIuZ3JlZW5fcnVsZSkNCj4gPiAtICAg ICAgICAgICAgIGNsYWltX3plcm8obWx4NV9mbG93X29zX2Rlc3Ryb3lfZmxvdyhtdGItDQo+ID4g PnRyYW5zZmVyLmdyZWVuX3J1bGUpKTsNCj4gPiAtICAgICBtdGItPmVncmVzcy5kcm9wX3J1bGUg PSBlZ3Jlc3NfZHJvcF9ydWxlOw0KPiA+IC0gICAgIG10Yi0+ZWdyZXNzLmdyZWVuX3J1bGUgPSBl Z3Jlc3NfZ3JlZW5fcnVsZTsNCj4gPiAtICAgICBtdGItPmluZ3Jlc3MuZHJvcF9ydWxlID0gaW5n cmVzc19kcm9wX3J1bGU7DQo+ID4gLSAgICAgbXRiLT5pbmdyZXNzLmdyZWVuX3J1bGUgPSBpbmdy ZXNzX2dyZWVuX3J1bGU7DQo+ID4gLSAgICAgbXRiLT50cmFuc2Zlci5kcm9wX3J1bGUgPSB0cmFu c2Zlcl9kcm9wX3J1bGU7DQo+ID4gLSAgICAgbXRiLT50cmFuc2Zlci5ncmVlbl9ydWxlID0gdHJh bnNmZXJfZ3JlZW5fcnVsZTsNCj4gPiAtICAgICByZXR1cm4gMDsNCj4gPiAtZXJyb3I6DQo+ID4g LSAgICAgaWYgKGVncmVzc19kcm9wX3J1bGUpDQo+ID4gLQ0KPiA+ICAgICAgIGNsYWltX3plcm8o bWx4NV9mbG93X29zX2Rlc3Ryb3lfZmxvdyhlZ3Jlc3NfZHJvcF9ydWxlKSk7DQo+ID4gLSAgICAg aWYgKGVncmVzc19ncmVlbl9ydWxlKQ0KPiA+IC0NCj4gPiAgICAgICBjbGFpbV96ZXJvKG1seDVf Zmxvd19vc19kZXN0cm95X2Zsb3coZWdyZXNzX2dyZWVuX3J1bGUpKTsNCj4gPiAtICAgICBpZiAo aW5ncmVzc19kcm9wX3J1bGUpDQo+ID4gLQ0KPiA+ICAgICAgIGNsYWltX3plcm8obWx4NV9mbG93 X29zX2Rlc3Ryb3lfZmxvdyhpbmdyZXNzX2Ryb3BfcnVsZSkpOw0KPiA+IC0gICAgIGlmIChpbmdy ZXNzX2dyZWVuX3J1bGUpDQo+ID4gLQ0KPiA+ICAgICAgIGNsYWltX3plcm8obWx4NV9mbG93X29z X2Rlc3Ryb3lfZmxvdyhpbmdyZXNzX2dyZWVuX3J1bGUpKTsNCj4gPiAtICAgICBpZiAodHJhbnNm ZXJfZHJvcF9ydWxlKQ0KPiA+IC0NCj4gPiAgICAgICBjbGFpbV96ZXJvKG1seDVfZmxvd19vc19k ZXN0cm95X2Zsb3codHJhbnNmZXJfZHJvcF9ydWxlKSk7DQo+ID4gLSAgICAgaWYgKHRyYW5zZmVy X2dyZWVuX3J1bGUpDQo+ID4gLQ0KPiA+ICAgICAgIGNsYWltX3plcm8obWx4NV9mbG93X29zX2Rl c3Ryb3lfZmxvdyh0cmFuc2Zlcl9ncmVlbl9ydWxlKSk7DQo+ID4gLSAgICAgaWYgKCFpbml0aWFs aXplZCkNCj4gPiAtICAgICAgICAgICAgIGZsb3dfZHZfZGVzdHJveV9wb2xpY2VyX3J1bGVzKGRl diwgZm0sIGF0dHIpOw0KPiA+IC0gICAgIHJldHVybiAtMTsNCj4gPiAtfQ0KPiA+IC0NCj4gPiAg LyoqDQo+ID4gICAqIFZhbGlkYXRlIHRoZSBiYXRjaCBjb3VudGVyIHN1cHBvcnQgaW4gcm9vdCB0 YWJsZS4NCj4gPiAgICoNCj4gPiBAQCAtMTQ0MjMsOCArMTM5NjgsNiBAQCBjb25zdCBzdHJ1Y3Qg bWx4NV9mbG93X2RyaXZlcl9vcHMNCj4gPiBtbHg1X2Zsb3dfZHZfZHJ2X29wcyA9IHsNCj4gPiAg ICAgICAucXVlcnkgPSBmbG93X2R2X3F1ZXJ5LA0KPiA+ICAgICAgIC5jcmVhdGVfbXRyX3RibHMg PSBmbG93X2R2X2NyZWF0ZV9tdHJfdGJsLA0KPiA+ICAgICAgIC5kZXN0cm95X210cl90YmxzID0g Zmxvd19kdl9kZXN0cm95X210cl90YmwsDQo+ID4gLSAgICAgLnByZXBhcmVfcG9saWNlcl9ydWxl cyA9IGZsb3dfZHZfcHJlcGFyZV9wb2xpY2VyX3J1bGVzLA0KPiA+IC0gICAgIC5kZXN0cm95X3Bv bGljZXJfcnVsZXMgPSBmbG93X2R2X2Rlc3Ryb3lfcG9saWNlcl9ydWxlcywNCj4gPiAgICAgICAu Y3JlYXRlX21ldGVyID0gZmxvd19kdl9tdHJfYWxsb2MsDQo+ID4gICAgICAgLmZyZWVfbWV0ZXIg PSBmbG93X2R2X2Fzb19tdHJfcmVsZWFzZV90b19wb29sLA0KPiA+ICAgICAgIC5jb3VudGVyX2Fs bG9jID0gZmxvd19kdl9jb3VudGVyX2FsbG9jYXRlLA0KPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJz L25ldC9tbHg1L21seDVfZmxvd19tZXRlci5jDQo+ID4gYi9kcml2ZXJzL25ldC9tbHg1L21seDVf Zmxvd19tZXRlci5jDQo+ID4gaW5kZXggNzE0YjM4MmQ1NS4uYWYwYTFjMThjYiAxMDA2NDQNCj4g PiAtLS0gYS9kcml2ZXJzL25ldC9tbHg1L21seDVfZmxvd19tZXRlci5jDQo+ID4gKysrIGIvZHJp dmVycy9uZXQvbWx4NS9tbHg1X2Zsb3dfbWV0ZXIuYw0KPiA+IEBAIC0zMjksNyArMzI5LDYgQEAg bWx4NV9mbG93X210cl9jYXBfZ2V0KHN0cnVjdCBydGVfZXRoX2RldiAqZGV2LA0KPiA+ICAgICAg IGNhcC0+Y2hhaW5pbmdfbl9tdHJzX3Blcl9mbG93X21heCA9IDE7IC8qIENoYWluaW5nIGlzIG5v dA0KPiA+IHN1cHBvcnRlZC4gKi8NCj4gPiAgICAgICBjYXAtPm1ldGVyX3NydGNtX3JmYzI2OTdf bl9tYXggPSBxYXR0ci0+Zmxvd19tZXRlcl9vbGQgPyBjYXAtDQo+ID4gPm5fbWF4IDogMDsNCj4g PiAgICAgICBjYXAtPm1ldGVyX3JhdGVfbWF4ID0gMVVMTCA8PCA0MDsgLyogMSBUZXJhIHRva2Vu cyBwZXIgc2VjLiAqLw0KPiA+IC0gICAgIGNhcC0+cG9saWNlcl9hY3Rpb25fZHJvcF9zdXBwb3J0 ZWQgPSAxOw0KPiA+ICAgICAgIGNhcC0+c3RhdHNfbWFzayA9IFJURV9NVFJfU1RBVFNfTl9CWVRF U19EUk9QUEVEIHwNCj4gPiAgICAgICAgICAgICAgICAgICAgICAgICBSVEVfTVRSX1NUQVRTX05f UEtUU19EUk9QUEVEOw0KPiA+ICAgICAgIHJldHVybiAwOw0KPiA+IEBAIC00MzYsOTAgKzQzNSw2 IEBAIG1seDVfZmxvd19tZXRlcl9wcm9maWxlX2RlbGV0ZShzdHJ1Y3QNCj4gPiBydGVfZXRoX2Rl diAqZGV2LA0KPiA+ICAgICAgIHJldHVybiAwOw0KPiA+ICB9DQo+ID4NCj4gPiAtLyoqDQo+ID4g LSAqIENvbnZlcnQgd3JvbmcgY29sb3Igc2V0dGluZyBhY3Rpb24gdG8gdmVyYm9zZSBlcnJvci4N Cj4gPiAtICoNCj4gPiAtICogQHBhcmFtW2luXSBhY3Rpb24NCj4gPiAtICogICBQb2xpY3kgY29s b3IgYWN0aW9uLg0KPiA+IC0gKg0KPiA+IC0gKiBAcmV0dXJuDQo+ID4gLSAqICAgVmVyYm9zZSBt ZXRlciBjb2xvciBlcnJvciB0eXBlLg0KPiA+IC0gKi8NCj4gPiAtc3RhdGljIGlubGluZSBlbnVt IHJ0ZV9tdHJfZXJyb3JfdHlwZQ0KPiA+IC1hY3Rpb24yZXJyb3IoZW51bSBydGVfbXRyX3BvbGlj ZXJfYWN0aW9uIGFjdGlvbikNCj4gPiAtew0KPiA+IC0gICAgIHN3aXRjaCAoYWN0aW9uKSB7DQo+ ID4gLSAgICAgY2FzZSBNVFJfUE9MSUNFUl9BQ1RJT05fQ09MT1JfR1JFRU46DQo+ID4gLSAgICAg ICAgICAgICByZXR1cm4gUlRFX01UUl9FUlJPUl9UWVBFX1BPTElDRVJfQUNUSU9OX0dSRUVOOw0K PiA+IC0gICAgIGNhc2UgTVRSX1BPTElDRVJfQUNUSU9OX0NPTE9SX1lFTExPVzoNCj4gPiAtICAg ICAgICAgICAgIHJldHVybiBSVEVfTVRSX0VSUk9SX1RZUEVfUE9MSUNFUl9BQ1RJT05fWUVMTE9X Ow0KPiA+IC0gICAgIGNhc2UgTVRSX1BPTElDRVJfQUNUSU9OX0NPTE9SX1JFRDoNCj4gPiAtICAg ICAgICAgICAgIHJldHVybiBSVEVfTVRSX0VSUk9SX1RZUEVfUE9MSUNFUl9BQ1RJT05fUkVEOw0K PiA+IC0gICAgIGRlZmF1bHQ6DQo+ID4gLSAgICAgICAgICAgICBicmVhazsNCj4gPiAtICAgICB9 DQo+ID4gLSAgICAgcmV0dXJuIFJURV9NVFJfRVJST1JfVFlQRV9VTlNQRUNJRklFRDsNCj4gPiAt fQ0KPiA+IC0NCj4gPiAtLyoqDQo+ID4gLSAqIENoZWNrIG1ldGVyIHZhbGlkYXRpb24uDQo+ID4g LSAqDQo+ID4gLSAqIEBwYXJhbVtpbl0gcHJpdg0KPiA+IC0gKiAgIFBvaW50ZXIgdG8gbWx4NSBw cml2YXRlIGRhdGEgc3RydWN0dXJlLg0KPiA+IC0gKiBAcGFyYW1baW5dIG1ldGVyX2lkDQo+ID4g LSAqICAgTWV0ZXIgaWQuDQo+ID4gLSAqIEBwYXJhbVtpbl0gcGFyYW1zDQo+ID4gLSAqICAgUG9p bnRlciB0byBydGUgbWV0ZXIgcGFyYW1ldGVycy4NCj4gPiAtICogQHBhcmFtW291dF0gZXJyb3IN Cj4gPiAtICogICBQb2ludGVyIHRvIHJ0ZSBtZXRlciBlcnJvciBzdHJ1Y3R1cmUuDQo+ID4gLSAq DQo+ID4gLSAqIEByZXR1cm4NCj4gPiAtICogICAwIG9uIHN1Y2Nlc3MsIGEgbmVnYXRpdmUgZXJy bm8gdmFsdWUgb3RoZXJ3aXNlIGFuZCBydGVfZXJybm8gaXMgc2V0Lg0KPiA+IC0gKi8NCj4gPiAt c3RhdGljIGludA0KPiA+IC1tbHg1X2Zsb3dfbWV0ZXJfdmFsaWRhdGUoc3RydWN0IG1seDVfcHJp diAqcHJpdiwgdWludDMyX3QgbWV0ZXJfaWQsDQo+ID4gLSAgICAgICAgICAgICAgICAgICAgICBz dHJ1Y3QgcnRlX210cl9wYXJhbXMgKnBhcmFtcywNCj4gPiAtICAgICAgICAgICAgICAgICAgICAg IHN0cnVjdCBydGVfbXRyX2Vycm9yICplcnJvcikNCj4gPiAtew0KPiA+IC0gICAgIC8qIE1ldGVy IG11c3QgdXNlIGdsb2JhbCBkcm9wIGFjdGlvbi4gKi8NCj4gPiAtICAgICBpZiAoIXByaXYtPnNo LT5kcl9kcm9wX2FjdGlvbikNCj4gPiAtICAgICAgICAgICAgIHJldHVybiAtcnRlX210cl9lcnJv cl9zZXQoZXJyb3IsIEVOT1RTVVAsDQo+ID4gLQ0KPiA+IFJURV9NVFJfRVJST1JfVFlQRV9NVFJf UEFSQU1TLA0KPiA+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxM LA0KPiA+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTm8gZHJvcCBh Y3Rpb24gcmVhZHkgZm9yIG1ldGVyLiIpOw0KPiA+IC0gICAgIC8qIE1ldGVyIHBhcmFtcyBtdXN0 IG5vdCBiZSBOVUxMLiAqLw0KPiA+IC0gICAgIGlmIChwYXJhbXMgPT0gTlVMTCkNCj4gPiAtICAg ICAgICAgICAgIHJldHVybiAtcnRlX210cl9lcnJvcl9zZXQoZXJyb3IsIEVJTlZBTCwNCj4gPiAt DQo+ID4gUlRFX01UUl9FUlJPUl9UWVBFX01UUl9QQVJBTVMsDQo+ID4gLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsICJNZXRlciBvYmplY3QgcGFyYW1zIG51bGwu Iik7DQo+ID4gLSAgICAgLyogUHJldmlvdXMgbWV0ZXIgY29sb3IgaXMgbm90IHN1cHBvcnRlZC4g Ki8NCj4gPiAtICAgICBpZiAocGFyYW1zLT51c2VfcHJldl9tdHJfY29sb3IpDQo+ID4gLSAgICAg ICAgICAgICByZXR1cm4gLXJ0ZV9tdHJfZXJyb3Jfc2V0KGVycm9yLCBFTk9UU1VQLA0KPiA+IC0N Cj4gPiBSVEVfTVRSX0VSUk9SX1RZUEVfTVRSX1BBUkFNUywNCj4gPiAtICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwNCj4gPiAtICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIlByZXZpb3VzIG1ldGVyIGNvbG9yICINCj4gPiAtICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5vdCBzdXBwb3J0ZWQuIik7DQo+ID4gLSAg ICAgLyogVmFsaWRhdGUgcG9saWNlciBzZXR0aW5ncy4gKi8NCj4gPiAtICAgICBpZiAocGFyYW1z LT5hY3Rpb25bUlRFX0NPTE9SX1JFRF0gIT0NCj4gPiBNVFJfUE9MSUNFUl9BQ1RJT05fRFJPUCkN Cj4gPiAtICAgICAgICAgICAgIHJldHVybiAtcnRlX210cl9lcnJvcl9zZXQNCj4gPiAtICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAoZXJyb3IsIEVOT1RTVVAsDQo+ID4gLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGFjdGlvbjJlcnJvcihwYXJhbXMtDQo+ID4gPmFjdGlvbltSVEVf Q09MT1JfUkVEXSksDQo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsDQo+ ID4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJSZWQgY29sb3Igb25seSBzdXBwb3J0 cyBkcm9wIGFjdGlvbi4iKTsNCj4gPiAtICAgICBpZiAocGFyYW1zLT5hY3Rpb25bUlRFX0NPTE9S X0dSRUVOXSAhPQ0KPiA+IE1UUl9QT0xJQ0VSX0FDVElPTl9DT0xPUl9HUkVFTikNCj4gPiAtICAg ICAgICAgICAgIHJldHVybiAtcnRlX210cl9lcnJvcl9zZXQNCj4gPiAtICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAoZXJyb3IsIEVOT1RTVVAsDQo+ID4gLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGFjdGlvbjJlcnJvcihwYXJhbXMtDQo+ID4gPmFjdGlvbltSVEVfQ09MT1JfR1JF RU5dKSwNCj4gPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwNCj4gPiAtICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIkdyZWVuIGNvbG9yIG9ubHkgc3VwcG9ydHMgcmVj b2xvciBncmVlbg0KPiA+IGFjdGlvbi4iKTsNCj4gPiAtICAgICAvKiBWYWxpZGF0ZSBtZXRlciBp ZC4gKi8NCj4gPiAtICAgICBpZiAobWx4NV9mbG93X21ldGVyX2ZpbmQocHJpdiwgbWV0ZXJfaWQs IE5VTEwpKQ0KPiA+IC0gICAgICAgICAgICAgcmV0dXJuIC1ydGVfbXRyX2Vycm9yX3NldChlcnJv ciwgRUVYSVNULA0KPiA+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBS VEVfTVRSX0VSUk9SX1RZUEVfTVRSX0lELA0KPiA+IE5VTEwsDQo+ID4gLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICJNZXRlciBvYmplY3QgYWxyZWFkeSBleGlzdHMuIik7 DQo+ID4gLSAgICAgcmV0dXJuIDA7DQo+ID4gLX0NCj4gPiAtDQo+ID4gIC8qKg0KPiA+ICAgKiBN b2RpZnkgdGhlIGZsb3cgbWV0ZXIgYWN0aW9uLg0KPiA+ICAgKg0KPiA+IEBAIC02MjksMTY3ICs1 NDQsMTQgQEAgc3RhdGljIHZvaWQNCj4gPiAgbWx4NV9mbG93X21ldGVyX3N0YXRzX2VuYWJsZV91 cGRhdGUoc3RydWN0IG1seDVfZmxvd19tZXRlcl9pbmZvICpmbSwNCj4gPiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB1aW50NjRfdCBzdGF0c19tYXNrKQ0KPiA+ICB7DQo+ID4gLSAgICAg Zm0tPmdyZWVuX2J5dGVzID0gKHN0YXRzX21hc2sgJg0KPiA+IFJURV9NVFJfU1RBVFNfTl9CWVRF U19HUkVFTikgPyAxIDogMDsNCj4gPiAtICAgICBmbS0+Z3JlZW5fcGt0cyA9IChzdGF0c19tYXNr ICYgUlRFX01UUl9TVEFUU19OX1BLVFNfR1JFRU4pDQo+ID4gPyAxIDogMDsNCj4gPiAtICAgICBm bS0+cmVkX2J5dGVzID0gKHN0YXRzX21hc2sgJiBSVEVfTVRSX1NUQVRTX05fQllURVNfUkVEKSA/ IDENCj4gPiA6IDA7DQo+ID4gLSAgICAgZm0tPnJlZF9wa3RzID0gKHN0YXRzX21hc2sgJiBSVEVf TVRSX1NUQVRTX05fUEtUU19SRUQpID8gMSA6DQo+ID4gMDsNCj4gPiAgICAgICBmbS0+Ynl0ZXNf ZHJvcHBlZCA9DQo+ID4gICAgICAgICAgICAgICAoc3RhdHNfbWFzayAmIFJURV9NVFJfU1RBVFNf Tl9CWVRFU19EUk9QUEVEKSA/IDEgOiAwOw0KPiA+ICAgICAgIGZtLT5wa3RzX2Ryb3BwZWQgPSAo c3RhdHNfbWFzayAmDQo+ID4gUlRFX01UUl9TVEFUU19OX1BLVFNfRFJPUFBFRCkgPyAxIDogMDsN Cj4gPiAgfQ0KPiA+DQo+ID4gLS8qKg0KPiA+IC0gKiBDcmVhdGUgbWV0ZXIgcnVsZXMuDQo+ID4g LSAqDQo+ID4gLSAqIEBwYXJhbVtpbl0gZGV2DQo+ID4gLSAqICAgUG9pbnRlciB0byBFdGhlcm5l dCBkZXZpY2UuDQo+ID4gLSAqIEBwYXJhbVtpbl0gbWV0ZXJfaWQNCj4gPiAtICogICBNZXRlciBp ZC4NCj4gPiAtICogQHBhcmFtW2luXSBwYXJhbXMNCj4gPiAtICogICBQb2ludGVyIHRvIHJ0ZSBt ZXRlciBwYXJhbWV0ZXJzLg0KPiA+IC0gKiBAcGFyYW1baW5dIHNoYXJlZA0KPiA+IC0gKiAgIE1l dGVyIHNoYXJlZCB3aXRoIG90aGVyIGZsb3cgb3Igbm90Lg0KPiA+IC0gKiBAcGFyYW1bb3V0XSBl cnJvcg0KPiA+IC0gKiAgIFBvaW50ZXIgdG8gcnRlIG1ldGVyIGVycm9yIHN0cnVjdHVyZS4NCj4g PiAtICoNCj4gPiAtICogQHJldHVybg0KPiA+IC0gKiAgIDAgb24gc3VjY2VzcywgYSBuZWdhdGl2 ZSBlcnJubyB2YWx1ZSBvdGhlcndpc2UgYW5kIHJ0ZV9lcnJubyBpcyBzZXQuDQo+ID4gLSAqLw0K PiA+IC1zdGF0aWMgaW50DQo+ID4gLW1seDVfZmxvd19tZXRlcl9jcmVhdGUoc3RydWN0IHJ0ZV9l dGhfZGV2ICpkZXYsIHVpbnQzMl90IG1ldGVyX2lkLA0KPiA+IC0gICAgICAgICAgICAgICAgICAg IHN0cnVjdCBydGVfbXRyX3BhcmFtcyAqcGFyYW1zLCBpbnQgc2hhcmVkLA0KPiA+IC0gICAgICAg ICAgICAgICAgICAgIHN0cnVjdCBydGVfbXRyX2Vycm9yICplcnJvcikNCj4gPiAtew0KPiA+IC0g ICAgIHN0cnVjdCBtbHg1X3ByaXYgKnByaXYgPSBkZXYtPmRhdGEtPmRldl9wcml2YXRlOw0KPiA+ IC0gICAgIHN0cnVjdCBtbHg1X2xlZ2FjeV9mbG93X21ldGVycyAqZm1zID0gJnByaXYtPmZsb3df bWV0ZXJzOw0KPiA+IC0gICAgIHN0cnVjdCBtbHg1X2Zsb3dfbWV0ZXJfcHJvZmlsZSAqZm1wOw0K PiA+IC0gICAgIHN0cnVjdCBtbHg1X2xlZ2FjeV9mbG93X21ldGVyICpsZWdhY3lfZm07DQo+ID4g LSAgICAgc3RydWN0IG1seDVfZmxvd19tZXRlcl9pbmZvICpmbTsNCj4gPiAtICAgICBjb25zdCBz dHJ1Y3QgcnRlX2Zsb3dfYXR0ciBhdHRyID0gew0KPiA+IC0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgIC5pbmdyZXNzID0gMSwNCj4gPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAu ZWdyZXNzID0gMSwNCj4gPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAudHJhbnNmZXIg PSBwcml2LT5jb25maWcuZHZfZXN3X2VuID8gMSA6IDAsDQo+ID4gLSAgICAgICAgICAgICAgICAg ICAgIH07DQo+ID4gLSAgICAgc3RydWN0IG1seDVfaW5kZXhlZF9wb29sX2NvbmZpZyBmbG93X2lw b29sX2NmZyA9IHsNCj4gPiAtICAgICAgICAgICAgIC5zaXplID0gMCwNCj4gPiAtICAgICAgICAg ICAgIC50cnVua19zaXplID0gNjQsDQo+ID4gLSAgICAgICAgICAgICAubmVlZF9sb2NrID0gMSwN Cj4gPiAtICAgICAgICAgICAgIC50eXBlID0gIm1seDVfZmxvd19tdHJfZmxvd19pZF9wb29sIiwN Cj4gPiAtICAgICB9Ow0KPiA+IC0gICAgIHN0cnVjdCBtbHg1X2Fzb19tdHIgKmFzb19tdHI7DQo+ ID4gLSAgICAgdW5pb24gbWx4NV9sM3RfZGF0YSBkYXRhOw0KPiA+IC0gICAgIHVpbnQzMl90IG10 cl9pZHg7DQo+ID4gLSAgICAgaW50IHJldDsNCj4gPiAtICAgICB1aW50OF90IG10cl9pZF9iaXRz Ow0KPiA+IC0gICAgIHVpbnQ4X3QgbXRyX3JlZ19iaXRzID0gcHJpdi0+bXRyX3JlZ19zaGFyZSA/ DQo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTUxYNV9NVFJfSURMRV9CSVRTX0lO X0NPTE9SX1JFRyA6DQo+ID4gTUxYNV9SRUdfQklUUzsNCj4gPiAtDQo+ID4gLSAgICAgaWYgKCFw cml2LT5tdHJfZW4pDQo+ID4gLSAgICAgICAgICAgICByZXR1cm4gLXJ0ZV9tdHJfZXJyb3Jfc2V0 KGVycm9yLCBFTk9UU1VQLA0KPiA+IC0NCj4gPiBSVEVfTVRSX0VSUk9SX1RZUEVfVU5TUEVDSUZJ RUQsIE5VTEwsDQo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJN ZXRlciBpcyBub3Qgc3VwcG9ydGVkIik7DQo+ID4gLSAgICAgLyogVmFsaWRhdGUgdGhlIHBhcmFt ZXRlcnMuICovDQo+ID4gLSAgICAgcmV0ID0gbWx4NV9mbG93X21ldGVyX3ZhbGlkYXRlKHByaXYs IG1ldGVyX2lkLCBwYXJhbXMsIGVycm9yKTsNCj4gPiAtICAgICBpZiAocmV0KQ0KPiA+IC0gICAg ICAgICAgICAgcmV0dXJuIHJldDsNCj4gPiAtICAgICAvKiBNZXRlciBwcm9maWxlIG11c3QgZXhp c3QuICovDQo+ID4gLSAgICAgZm1wID0gbWx4NV9mbG93X21ldGVyX3Byb2ZpbGVfZmluZChwcml2 LCBwYXJhbXMtDQo+ID4gPm1ldGVyX3Byb2ZpbGVfaWQpOw0KPiA+IC0gICAgIGlmIChmbXAgPT0g TlVMTCkNCj4gPiAtICAgICAgICAgICAgIHJldHVybiAtcnRlX210cl9lcnJvcl9zZXQoZXJyb3Is IEVOT0VOVCwNCj4gPiAtDQo+ID4gUlRFX01UUl9FUlJPUl9UWVBFX01FVEVSX1BST0ZJTEVfSUQs DQo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsICJNZXRl ciBwcm9maWxlIGlkIG5vdCB2YWxpZC4iKTsNCj4gPiAtICAgICAvKiBBbGxvY2F0ZSB0aGUgZmxv dyBtZXRlciBtZW1vcnkuICovDQo+ID4gLSAgICAgaWYgKHByaXYtPnNoLT5tZXRlcl9hc29fZW4p IHsNCj4gPiAtICAgICAgICAgICAgIG10cl9pZHggPSBtbHg1X2Zsb3dfbXRyX2FsbG9jKGRldik7 DQo+ID4gLSAgICAgICAgICAgICBpZiAoIW10cl9pZHgpDQo+ID4gLSAgICAgICAgICAgICAgICAg ICAgIHJldHVybiAtcnRlX210cl9lcnJvcl9zZXQoZXJyb3IsIEVOT01FTSwNCj4gPiAtICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBSVEVfTVRSX0VSUk9SX1RZUEVfVU5TUEVDSUZJRUQsIE5V TEwsDQo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk1lbW9yeSBhbGxvYyBmYWls ZWQgZm9yIG1ldGVyLiIpOw0KPiA+IC0gICAgICAgICAgICAgYXNvX210ciA9IG1seDVfYXNvX21l dGVyX2J5X2lkeChwcml2LCBtdHJfaWR4KTsNCj4gPiAtICAgICAgICAgICAgIGZtID0gJmFzb19t dHItPmZtOw0KPiA+IC0gICAgIH0gZWxzZSB7DQo+ID4gLSAgICAgICAgICAgICBsZWdhY3lfZm0g PSBtbHg1X2lwb29sX3ptYWxsb2MNCj4gPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo cHJpdi0+c2gtPmlwb29sW01MWDVfSVBPT0xfTVRSXSwNCj4gPiAmbXRyX2lkeCk7DQo+ID4gLSAg ICAgICAgICAgICBpZiAobGVnYWN5X2ZtID09IE5VTEwpDQo+ID4gLSAgICAgICAgICAgICAgICAg ICAgIHJldHVybiAtcnRlX210cl9lcnJvcl9zZXQoZXJyb3IsIEVOT01FTSwNCj4gPiAtICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBSVEVfTVRSX0VSUk9SX1RZUEVfVU5TUEVDSUZJRUQsIE5V TEwsDQo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk1lbW9yeSBhbGxvYyBmYWls ZWQgZm9yIG1ldGVyLiIpOw0KPiA+IC0gICAgICAgICAgICAgbGVnYWN5X2ZtLT5pZHggPSBtdHJf aWR4Ow0KPiA+IC0gICAgICAgICAgICAgZm0gPSAmbGVnYWN5X2ZtLT5mbTsNCj4gPiAtICAgICB9 DQo+ID4gLSAgICAgbXRyX2lkX2JpdHMgPSBNTFg1X1JFR19CSVRTIC0gX19idWlsdGluX2Nseiht dHJfaWR4KTsNCj4gPiAtICAgICBpZiAoKG10cl9pZF9iaXRzICsgcHJpdi0+bWF4X210cl9mbG93 X2JpdHMpID4gbXRyX3JlZ19iaXRzKSB7DQo+ID4gLSAgICAgICAgICAgICBEUlZfTE9HKEVSUiwg Ik1ldGVyIG51bWJlciBleGNlZWRzIG1heCBsaW1pdC4iKTsNCj4gPiAtICAgICAgICAgICAgIGdv dG8gZXJyb3I7DQo+ID4gLSAgICAgfQ0KPiA+IC0gICAgIGlmIChtdHJfaWRfYml0cyA+IHByaXYt Pm1heF9tdHJfYml0cykNCj4gPiAtICAgICAgICAgICAgIHByaXYtPm1heF9tdHJfYml0cyA9IG10 cl9pZF9iaXRzOw0KPiA+IC0gICAgIC8qIEZpbGwgdGhlIGZsb3cgbWV0ZXIgcGFyYW1ldGVycy4g Ki8NCj4gPiAtICAgICBmbS0+bWV0ZXJfaWQgPSBtZXRlcl9pZDsNCj4gPiAtICAgICBmbS0+cHJv ZmlsZSA9IGZtcDsNCj4gPiAtICAgICBtZW1jcHkoZm0tPmFjdGlvbiwgcGFyYW1zLT5hY3Rpb24s IHNpemVvZihwYXJhbXMtPmFjdGlvbikpOw0KPiA+IC0gICAgIG1seDVfZmxvd19tZXRlcl9zdGF0 c19lbmFibGVfdXBkYXRlKGZtLCBwYXJhbXMtPnN0YXRzX21hc2spOw0KPiA+IC0gICAgIC8qIEFs bG9jIHBvbGljZXIgY291bnRlcnMuICovDQo+ID4gLSAgICAgaWYgKGZtLT5ncmVlbl9ieXRlcyB8 fCBmbS0+Z3JlZW5fcGt0cykgew0KPiA+IC0gICAgICAgICAgICAgZm0tPnBvbGljZXJfc3RhdHMu cGFzc19jbnQgPSBtbHg1X2NvdW50ZXJfYWxsb2MoZGV2KTsNCj4gPiAtICAgICAgICAgICAgIGlm ICghZm0tPnBvbGljZXJfc3RhdHMucGFzc19jbnQpDQo+ID4gLSAgICAgICAgICAgICAgICAgICAg IGdvdG8gZXJyb3I7DQo+ID4gLSAgICAgfQ0KPiA+IC0gICAgIGlmIChmbS0+cmVkX2J5dGVzIHx8 IGZtLT5yZWRfcGt0cyB8fA0KPiA+IC0gICAgICAgICBmbS0+Ynl0ZXNfZHJvcHBlZCB8fCBmbS0+ cGt0c19kcm9wcGVkKSB7DQo+ID4gLSAgICAgICAgICAgICBmbS0+cG9saWNlcl9zdGF0cy5kcm9w X2NudCA9IG1seDVfY291bnRlcl9hbGxvYyhkZXYpOw0KPiA+IC0gICAgICAgICAgICAgaWYgKCFm bS0+cG9saWNlcl9zdGF0cy5kcm9wX2NudCkNCj4gPiAtICAgICAgICAgICAgICAgICAgICAgZ290 byBlcnJvcjsNCj4gPiAtICAgICB9DQo+ID4gLSAgICAgZm0tPm1mdHMgPSBtbHg1X2Zsb3dfY3Jl YXRlX210cl90YmxzKGRldik7DQo+ID4gLSAgICAgaWYgKCFmbS0+bWZ0cykNCj4gPiAtICAgICAg ICAgICAgIGdvdG8gZXJyb3I7DQo+ID4gLSAgICAgcmV0ID0gbWx4NV9mbG93X3ByZXBhcmVfcG9s aWNlcl9ydWxlcyhkZXYsIGZtLCAmYXR0cik7DQo+ID4gLSAgICAgaWYgKHJldCkNCj4gPiAtICAg ICAgICAgICAgIGdvdG8gZXJyb3I7DQo+ID4gLSAgICAgLyogQWRkIHRvIHRoZSBmbG93IG1ldGVy IGxpc3QuICovDQo+ID4gLSAgICAgaWYgKCFwcml2LT5zaC0+bWV0ZXJfYXNvX2VuKQ0KPiA+IC0g ICAgICAgICAgICAgVEFJTFFfSU5TRVJUX1RBSUwoZm1zLCBsZWdhY3lfZm0sIG5leHQpOw0KPiA+ IC0gICAgIGZtLT5hY3RpdmVfc3RhdGUgPSAxOyAvKiBDb25maWcgbWV0ZXIgc3RhcnRzIGFzIGFj dGl2ZS4gKi8NCj4gPiAtICAgICBmbS0+aXNfZW5hYmxlID0gMTsNCj4gPiAtICAgICBmbS0+c2hh cmVkID0gISFzaGFyZWQ7DQo+ID4gLSAgICAgX19hdG9taWNfYWRkX2ZldGNoKCZmbS0+cHJvZmls ZS0+cmVmX2NudCwgMSwNCj4gPiBfX0FUT01JQ19SRUxBWEVEKTsNCj4gPiAtICAgICBmbS0+Zmxv d19pcG9vbCA9IG1seDVfaXBvb2xfY3JlYXRlKCZmbG93X2lwb29sX2NmZyk7DQo+ID4gLSAgICAg aWYgKCFmbS0+Zmxvd19pcG9vbCkNCj4gPiAtICAgICAgICAgICAgIGdvdG8gZXJyb3I7DQo+ID4g LSAgICAgcnRlX3NwaW5sb2NrX2luaXQoJmZtLT5zbCk7DQo+ID4gLSAgICAgLyogSWYgQVNPIG1l dGVyIHN1cHBvcnRlZCwgYWxsb2NhdGUgQVNPIGZsb3cgbWV0ZXIuICovDQo+ID4gLSAgICAgaWYg KHByaXYtPnNoLT5tZXRlcl9hc29fZW4pIHsNCj4gPiAtICAgICAgICAgICAgIGFzb19tdHIgPSBj b250YWluZXJfb2YoZm0sIHN0cnVjdCBtbHg1X2Fzb19tdHIsIGZtKTsNCj4gPiAtICAgICAgICAg ICAgIHJldCA9IG1seDVfYXNvX21ldGVyX3VwZGF0ZV9ieV93cWUocHJpdi0+c2gsIGFzb19tdHIp Ow0KPiA+IC0gICAgICAgICAgICAgaWYgKHJldCkNCj4gPiAtICAgICAgICAgICAgICAgICAgICAg Z290byBlcnJvcjsNCj4gPiAtICAgICAgICAgICAgIGRhdGEuZHdvcmQgPSBtdHJfaWR4Ow0KPiA+ IC0gICAgICAgICAgICAgaWYgKG1seDVfbDN0X3NldF9lbnRyeShwcml2LT5tdHJfaWR4X3RibCwg bWV0ZXJfaWQsICZkYXRhKSkNCj4gPiAtICAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsN Cj4gPiAtICAgICB9DQo+ID4gLSAgICAgcmV0dXJuIDA7DQo+ID4gLWVycm9yOg0KPiA+IC0gICAg IG1seDVfZmxvd19kZXN0cm95X3BvbGljZXJfcnVsZXMoZGV2LCBmbSwgJmF0dHIpOw0KPiA+IC0g ICAgIG1seDVfZmxvd19kZXN0cm95X210cl90YmxzKGRldiwgZm0tPm1mdHMpOw0KPiA+IC0gICAg IC8qIEZyZWUgcG9saWNlciBjb3VudGVycy4gKi8NCj4gPiAtICAgICBpZiAoZm0tPnBvbGljZXJf c3RhdHMucGFzc19jbnQpDQo+ID4gLSAgICAgICAgICAgICBtbHg1X2NvdW50ZXJfZnJlZShkZXYs IGZtLT5wb2xpY2VyX3N0YXRzLnBhc3NfY250KTsNCj4gPiAtICAgICBpZiAoZm0tPnBvbGljZXJf c3RhdHMuZHJvcF9jbnQpDQo+ID4gLSAgICAgICAgICAgICBtbHg1X2NvdW50ZXJfZnJlZShkZXYs IGZtLT5wb2xpY2VyX3N0YXRzLmRyb3BfY250KTsNCj4gPiAtICAgICBpZiAocHJpdi0+c2gtPm1l dGVyX2Fzb19lbikNCj4gPiAtICAgICAgICAgICAgIG1seDVfZmxvd19tdHJfZnJlZShkZXYsIG10 cl9pZHgpOw0KPiA+IC0gICAgIGVsc2UNCj4gPiAtICAgICAgICAgICAgIG1seDVfaXBvb2xfZnJl ZShwcml2LT5zaC0+aXBvb2xbTUxYNV9JUE9PTF9NVFJdLA0KPiA+IG10cl9pZHgpOw0KPiA+IC0g ICAgIHJldHVybiAtcnRlX210cl9lcnJvcl9zZXQoZXJyb3IsIC1yZXQsDQo+ID4gLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBSVEVfTVRSX0VSUk9SX1RZUEVfVU5TUEVDSUZJRUQsDQo+ ID4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCAiRmFpbGVkIHRvIGNyZWF0 ZSBkZXZ4IG1ldGVyLiIpOw0KPiA+IC19DQo+ID4gLQ0KPiA+ICBzdGF0aWMgaW50DQo+ID4gIG1s eDVfZmxvd19tZXRlcl9wYXJhbXNfZmx1c2goc3RydWN0IHJ0ZV9ldGhfZGV2ICpkZXYsDQo+ID4g ICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBtbHg1X2Zsb3dfbWV0ZXJfaW5mbyAqZm0sDQo+ ID4gLSAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBydGVfZmxvd19hdHRyICphdHRy LA0KPiA+ICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBtdHJfaWR4KQ0KPiA+ICB7DQo+ ID4gICAgICAgc3RydWN0IG1seDVfcHJpdiAqcHJpdiA9IGRldi0+ZGF0YS0+ZGV2X3ByaXZhdGU7 DQo+ID4gQEAgLTgxMCwxNSArNTcyLDEyIEBAIG1seDVfZmxvd19tZXRlcl9wYXJhbXNfZmx1c2go c3RydWN0DQo+ID4gcnRlX2V0aF9kZXYgKmRldiwNCj4gPiAgICAgICAgICAgICAgIGxlZ2FjeV9m bSA9IGNvbnRhaW5lcl9vZihmbSwgc3RydWN0DQo+ID4gbWx4NV9sZWdhY3lfZmxvd19tZXRlciwg Zm0pOw0KPiA+ICAgICAgICAgICAgICAgVEFJTFFfUkVNT1ZFKGZtcywgbGVnYWN5X2ZtLCBuZXh0 KTsNCj4gPiAgICAgICB9DQo+ID4gLSAgICAgLyogRnJlZSBwb2xpY2VyIGNvdW50ZXJzLiAqLw0K PiA+IC0gICAgIGlmIChmbS0+cG9saWNlcl9zdGF0cy5wYXNzX2NudCkNCj4gPiAtICAgICAgICAg ICAgIG1seDVfY291bnRlcl9mcmVlKGRldiwgZm0tPnBvbGljZXJfc3RhdHMucGFzc19jbnQpOw0K PiA+IC0gICAgIGlmIChmbS0+cG9saWNlcl9zdGF0cy5kcm9wX2NudCkNCj4gPiAtICAgICAgICAg ICAgIG1seDVfY291bnRlcl9mcmVlKGRldiwgZm0tPnBvbGljZXJfc3RhdHMuZHJvcF9jbnQpOw0K PiA+ICsgICAgIC8qIEZyZWUgZHJvcCBjb3VudGVycy4gKi8NCj4gPiArICAgICBpZiAoZm0tPmRy b3BfY250KQ0KPiA+ICsgICAgICAgICAgICAgbWx4NV9jb3VudGVyX2ZyZWUoZGV2LCBmbS0+ZHJv cF9jbnQpOw0KPiA+ICAgICAgIC8qIEZyZWUgbWV0ZXIgZmxvdyB0YWJsZS4gKi8NCj4gPiAgICAg ICBpZiAoZm0tPmZsb3dfaXBvb2wpDQo+ID4gICAgICAgICAgICAgICBtbHg1X2lwb29sX2Rlc3Ry b3koZm0tPmZsb3dfaXBvb2wpOw0KPiA+IC0gICAgIG1seDVfZmxvd19kZXN0cm95X3BvbGljZXJf cnVsZXMoZGV2LCBmbSwgYXR0cik7DQo+ID4gICAgICAgbWx4NV9mbG93X2Rlc3Ryb3lfbXRyX3Ri bHMoZGV2LCBmbS0+bWZ0cyk7DQo+ID4gICAgICAgaWYgKHByaXYtPnNoLT5tZXRlcl9hc29fZW4p DQo+ID4gICAgICAgICAgICAgICBtbHg1X2Zsb3dfbXRyX2ZyZWUoZGV2LCBtdHJfaWR4KTsNCj4g PiBAQCAtODQ3LDExICs2MDYsNiBAQCBtbHg1X2Zsb3dfbWV0ZXJfZGVzdHJveShzdHJ1Y3QgcnRl X2V0aF9kZXYNCj4gPiAqZGV2LCB1aW50MzJfdCBtZXRlcl9pZCwNCj4gPiAgew0KPiA+ICAgICAg IHN0cnVjdCBtbHg1X3ByaXYgKnByaXYgPSBkZXYtPmRhdGEtPmRldl9wcml2YXRlOw0KPiA+ICAg ICAgIHN0cnVjdCBtbHg1X2Zsb3dfbWV0ZXJfaW5mbyAqZm07DQo+ID4gLSAgICAgY29uc3Qgc3Ry dWN0IHJ0ZV9mbG93X2F0dHIgYXR0ciA9IHsNCj4gPiAtICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAuaW5ncmVzcyA9IDEsDQo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmVn cmVzcyA9IDEsDQo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnRyYW5zZmVyID0g cHJpdi0+Y29uZmlnLmR2X2Vzd19lbiA/IDEgOiAwLA0KPiA+IC0gICAgICAgICAgICAgICAgICAg ICB9Ow0KPiA+ICAgICAgIHVpbnQzMl90IG10cl9pZHggPSAwOw0KPiA+DQo+ID4gICAgICAgaWYg KCFwcml2LT5tdHJfZW4pDQo+ID4gQEAgLTg3Niw3ICs2MzAsNyBAQCBtbHg1X2Zsb3dfbWV0ZXJf ZGVzdHJveShzdHJ1Y3QgcnRlX2V0aF9kZXYgKmRldiwNCj4gPiB1aW50MzJfdCBtZXRlcl9pZCwN Cj4gPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRmFpbCB0byBkZWxldGUgQVNPIE1l dGVyIGluIGluZGV4IHRhYmxlLiIpOw0KPiA+ICAgICAgIH0NCj4gPiAgICAgICAvKiBEZXN0cm95 IHRoZSBtZXRlciBwcm9maWxlLiAqLw0KPiA+IC0gICAgIGlmIChtbHg1X2Zsb3dfbWV0ZXJfcGFy YW1zX2ZsdXNoKGRldiwgZm0sICZhdHRyLCBtdHJfaWR4KSkNCj4gPiArICAgICBpZiAobWx4NV9m bG93X21ldGVyX3BhcmFtc19mbHVzaChkZXYsIGZtLCBtdHJfaWR4KSkNCj4gPiAgICAgICAgICAg ICAgIHJldHVybiAtcnRlX210cl9lcnJvcl9zZXQoZXJyb3IsIEVJTlZBTCwNCj4gPg0KPiA+ICAg ICAgIFJURV9NVFJfRVJST1JfVFlQRV9NRVRFUl9QUk9GSUxFX0lELA0KPiA+ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgIk1UUiBvYmplY3QgbWV0ZXIgcHJvZmls ZQ0KPiA+IGludmFsaWQuIik7DQo+ID4gQEAgLTExMDIsMTMgKzg1Niw2IEBAIG1seDVfZmxvd19t ZXRlcl9zdGF0c191cGRhdGUoc3RydWN0DQo+ID4gcnRlX2V0aF9kZXYgKmRldiwNCj4gPiAgew0K PiA+ICAgICAgIHN0cnVjdCBtbHg1X3ByaXYgKnByaXYgPSBkZXYtPmRhdGEtPmRldl9wcml2YXRl Ow0KPiA+ICAgICAgIHN0cnVjdCBtbHg1X2Zsb3dfbWV0ZXJfaW5mbyAqZm07DQo+ID4gLSAgICAg Y29uc3Qgc3RydWN0IHJ0ZV9mbG93X2F0dHIgYXR0ciA9IHsNCj4gPiAtICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAuaW5ncmVzcyA9IDEsDQo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgLmVncmVzcyA9IDEsDQo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnRy YW5zZmVyID0gcHJpdi0+Y29uZmlnLmR2X2Vzd19lbiA/IDEgOiAwLA0KPiA+IC0gICAgICAgICAg ICAgICAgICAgICB9Ow0KPiA+IC0gICAgIGJvb2wgbmVlZF91cGRhdGVkID0gZmFsc2U7DQo+ID4g LSAgICAgc3RydWN0IG1seDVfZmxvd19wb2xpY2VyX3N0YXRzIG9sZF9wb2xpY2VyX3N0YXRzOw0K PiA+DQo+ID4gICAgICAgaWYgKCFwcml2LT5tdHJfZW4pDQo+ID4gICAgICAgICAgICAgICByZXR1 cm4gLXJ0ZV9tdHJfZXJyb3Jfc2V0KGVycm9yLCBFTk9UU1VQLA0KPiA+IEBAIC0xMTIwLDY5ICs4 NjcsNiBAQCBtbHg1X2Zsb3dfbWV0ZXJfc3RhdHNfdXBkYXRlKHN0cnVjdA0KPiA+IHJ0ZV9ldGhf ZGV2ICpkZXYsDQo+ID4gICAgICAgICAgICAgICByZXR1cm4gLXJ0ZV9tdHJfZXJyb3Jfc2V0KGVy cm9yLCBFTk9FTlQsDQo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFJURV9NVFJfRVJST1JfVFlQRV9NVFJfSUQsDQo+ID4gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIE5VTEwsICJNZXRlciBvYmplY3QgaWQgbm90IHZhbGlkLiIpOw0KPiA+ IC0gICAgIG9sZF9wb2xpY2VyX3N0YXRzLnBhc3NfY250ID0gMDsNCj4gPiAtICAgICBvbGRfcG9s aWNlcl9zdGF0cy5kcm9wX2NudCA9IDA7DQo+ID4gLSAgICAgaWYgKCEhKChSVEVfTVRSX1NUQVRT X05fUEtUU19HUkVFTiB8DQo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUlRFX01U Ul9TVEFUU19OX0JZVEVTX0dSRUVOKSAmDQo+ID4gc3RhdHNfbWFzaykgIT0NCj4gPiAtICAgICAg ICAgICAgICEhZm0tPnBvbGljZXJfc3RhdHMucGFzc19jbnQpIHsNCj4gPiAtICAgICAgICAgICAg IG5lZWRfdXBkYXRlZCA9IHRydWU7DQo+ID4gLSAgICAgICAgICAgICBpZiAoZm0tPnBvbGljZXJf c3RhdHMucGFzc19jbnQpIHsNCj4gPiAtICAgICAgICAgICAgICAgICAgICAgb2xkX3BvbGljZXJf c3RhdHMucGFzc19jbnQgPSBmbS0NCj4gPiA+cG9saWNlcl9zdGF0cy5wYXNzX2NudDsNCj4gPiAt ICAgICAgICAgICAgICAgICAgICAgZm0tPnBvbGljZXJfc3RhdHMucGFzc19jbnQgPSAwOw0KPiA+ IC0gICAgICAgICAgICAgfSBlbHNlIHsNCj4gPiAtICAgICAgICAgICAgICAgICAgICAgZm0tPnBv bGljZXJfc3RhdHMucGFzc19jbnQgPQ0KPiA+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAg IG1seDVfY291bnRlcl9hbGxvYyhkZXYpOw0KPiA+IC0gICAgICAgICAgICAgICAgICAgICBpZiAo IWZtLT5wb2xpY2VyX3N0YXRzLnBhc3NfY250KQ0KPiA+IC0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHJldHVybiAtcnRlX210cl9lcnJvcl9zZXQoZXJyb3IsIEVOT01FTSwNCj4gPiAtDQo+ ID4gUlRFX01UUl9FUlJPUl9UWVBFX1VOU1BFQ0lGSUVELCBOVUxMLA0KPiA+IC0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ291bnRlciBhbGxvYyBmYWlsZWQgZm9yIG1l dGVyLiIpOw0KPiA+IC0gICAgICAgICAgICAgfQ0KPiA+IC0gICAgIH0NCj4gPiAtICAgICBpZiAo ISEoKFJURV9NVFJfU1RBVFNfTl9QS1RTX1JFRCB8DQo+ID4gUlRFX01UUl9TVEFUU19OX0JZVEVT X1JFRCB8DQo+ID4gLSAgICAgICAgICAgICBSVEVfTVRSX1NUQVRTX05fUEtUU19EUk9QUEVEIHwN Cj4gPiBSVEVfTVRSX1NUQVRTX05fQllURVNfRFJPUFBFRCkgJg0KPiA+IC0gICAgICAgICAgICAg c3RhdHNfbWFzaykgIT0NCj4gPiAtICAgICAgICAgICAgICEhZm0tPnBvbGljZXJfc3RhdHMuZHJv cF9jbnQpIHsNCj4gPiAtICAgICAgICAgICAgIG5lZWRfdXBkYXRlZCA9IHRydWU7DQo+ID4gLSAg ICAgICAgICAgICBpZiAoZm0tPnBvbGljZXJfc3RhdHMuZHJvcF9jbnQpIHsNCj4gPiAtICAgICAg ICAgICAgICAgICAgICAgb2xkX3BvbGljZXJfc3RhdHMuZHJvcF9jbnQgPSBmbS0NCj4gPiA+cG9s aWNlcl9zdGF0cy5kcm9wX2NudDsNCj4gPiAtICAgICAgICAgICAgICAgICAgICAgZm0tPnBvbGlj ZXJfc3RhdHMuZHJvcF9jbnQgPSAwOw0KPiA+IC0gICAgICAgICAgICAgfSBlbHNlIHsNCj4gPiAt ICAgICAgICAgICAgICAgICAgICAgZm0tPnBvbGljZXJfc3RhdHMuZHJvcF9jbnQgPQ0KPiA+IC0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1seDVfY291bnRlcl9hbGxvYyhkZXYpOw0KPiA+ IC0gICAgICAgICAgICAgICAgICAgICBpZiAoIWZtLT5wb2xpY2VyX3N0YXRzLmRyb3BfY250KQ0K PiA+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAtcnRlX210cl9lcnJvcl9z ZXQoZXJyb3IsIEVOT01FTSwNCj4gPiAtDQo+ID4gUlRFX01UUl9FUlJPUl9UWVBFX1VOU1BFQ0lG SUVELCBOVUxMLA0KPiA+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi Q291bnRlciBhbGxvYyBmYWlsZWQgZm9yIG1ldGVyLiIpOw0KPiA+IC0gICAgICAgICAgICAgfQ0K PiA+IC0gICAgIH0NCj4gPiAtICAgICBpZiAobmVlZF91cGRhdGVkKSB7DQo+ID4gLSAgICAgICAg ICAgICBpZiAobWx4NV9mbG93X3ByZXBhcmVfcG9saWNlcl9ydWxlcyhkZXYsIGZtLCAmYXR0cikp IHsNCj4gPiAtICAgICAgICAgICAgICAgICAgICAgaWYgKGZtLT5wb2xpY2VyX3N0YXRzLnBhc3Nf Y250ICYmDQo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm0tPnBvbGljZXJfc3Rh dHMucGFzc19jbnQgIT0NCj4gPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbGRfcG9s aWNlcl9zdGF0cy5wYXNzX2NudCkNCj4gPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICBt bHg1X2NvdW50ZXJfZnJlZShkZXYsDQo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBmbS0+cG9saWNlcl9zdGF0cy5wYXNzX2NudCk7DQo+ID4gLSAgICAgICAgICAgICAg ICAgICAgIGZtLT5wb2xpY2VyX3N0YXRzLnBhc3NfY250ID0NCj4gPiAtICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIG9sZF9wb2xpY2VyX3N0YXRzLnBhc3NfY250Ow0KPiA+IC0g ICAgICAgICAgICAgICAgICAgICBpZiAoZm0tPnBvbGljZXJfc3RhdHMuZHJvcF9jbnQgJiYNCj4g PiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbS0+cG9saWNlcl9zdGF0cy5kcm9wX2Nu dCAhPQ0KPiA+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9sZF9wb2xpY2VyX3N0YXRz LmRyb3BfY250KQ0KPiA+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1seDVfY291bnRl cl9mcmVlKGRldiwNCj4gPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZt LT5wb2xpY2VyX3N0YXRzLmRyb3BfY250KTsNCj4gPiAtICAgICAgICAgICAgICAgICAgICAgZm0t PnBvbGljZXJfc3RhdHMucGFzc19jbnQgPQ0KPiA+IC0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgb2xkX3BvbGljZXJfc3RhdHMucGFzc19jbnQ7DQo+ID4gLSAgICAgICAgICAg ICAgICAgICAgIHJldHVybiAtcnRlX210cl9lcnJvcl9zZXQoZXJyb3IsIEVOT1RTVVAsDQo+ID4g LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUlRFX01UUl9FUlJPUl9UWVBFX1VOU1BFQ0lG SUVELA0KPiA+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsICJGYWlsZWQgdG8g Y3JlYXRlIG1ldGVyIHBvbGljZXIgcnVsZXMuIik7DQo+ID4gLSAgICAgICAgICAgICB9DQo+ID4g LSAgICAgICAgICAgICAvKiBGcmVlIG9sZCBwb2xpY2VyIGNvdW50ZXJzLiAqLw0KPiA+IC0gICAg ICAgICAgICAgaWYgKG9sZF9wb2xpY2VyX3N0YXRzLnBhc3NfY250KQ0KPiA+IC0gICAgICAgICAg ICAgICAgICAgICBtbHg1X2NvdW50ZXJfZnJlZShkZXYsDQo+ID4gLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgb2xkX3BvbGljZXJfc3RhdHMucGFzc19jbnQpOw0KPiA+IC0gICAgICAgICAg ICAgaWYgKG9sZF9wb2xpY2VyX3N0YXRzLmRyb3BfY250KQ0KPiA+IC0gICAgICAgICAgICAgICAg ICAgICBtbHg1X2NvdW50ZXJfZnJlZShkZXYsDQo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgb2xkX3BvbGljZXJfc3RhdHMuZHJvcF9jbnQpOw0KPiA+IC0gICAgIH0NCj4gPiAgICAg ICBtbHg1X2Zsb3dfbWV0ZXJfc3RhdHNfZW5hYmxlX3VwZGF0ZShmbSwgc3RhdHNfbWFzayk7DQo+ ID4gICAgICAgcmV0dXJuIDA7DQo+ID4gIH0NCj4gPiBAQCAtMTIxNiw3ICs5MDAsNiBAQCBtbHg1 X2Zsb3dfbWV0ZXJfc3RhdHNfcmVhZChzdHJ1Y3QgcnRlX2V0aF9kZXYNCj4gPiAqZGV2LA0KPiA+ ICB7DQo+ID4gICAgICAgc3RydWN0IG1seDVfcHJpdiAqcHJpdiA9IGRldi0+ZGF0YS0+ZGV2X3By aXZhdGU7DQo+ID4gICAgICAgc3RydWN0IG1seDVfZmxvd19tZXRlcl9pbmZvICpmbTsNCj4gPiAt ICAgICBzdHJ1Y3QgbWx4NV9mbG93X3BvbGljZXJfc3RhdHMgKnBzOw0KPiA+ICAgICAgIHVpbnQ2 NF90IHBrdHM7DQo+ID4gICAgICAgdWludDY0X3QgYnl0ZXM7DQo+ID4gICAgICAgaW50IHJldCA9 IDA7DQo+ID4gQEAgLTEyMzEsMzUgKzkxNCwxNCBAQCBtbHg1X2Zsb3dfbWV0ZXJfc3RhdHNfcmVh ZChzdHJ1Y3QgcnRlX2V0aF9kZXYNCj4gPiAqZGV2LA0KPiA+ICAgICAgICAgICAgICAgcmV0dXJu IC1ydGVfbXRyX2Vycm9yX3NldChlcnJvciwgRU5PRU5ULA0KPiA+ICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBSVEVfTVRSX0VSUk9SX1RZUEVfTVRSX0lELA0KPiA+ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCAiTWV0ZXIgb2JqZWN0 IGlkIG5vdCB2YWxpZC4iKTsNCj4gPiAtICAgICBwcyA9ICZmbS0+cG9saWNlcl9zdGF0czsNCj4g PiAgICAgICAqc3RhdHNfbWFzayA9IDA7DQo+ID4gLSAgICAgaWYgKGZtLT5ncmVlbl9ieXRlcykN Cj4gPiAtICAgICAgICAgICAgICpzdGF0c19tYXNrIHw9IFJURV9NVFJfU1RBVFNfTl9CWVRFU19H UkVFTjsNCj4gPiAtICAgICBpZiAoZm0tPmdyZWVuX3BrdHMpDQo+ID4gLSAgICAgICAgICAgICAq c3RhdHNfbWFzayB8PSBSVEVfTVRSX1NUQVRTX05fUEtUU19HUkVFTjsNCj4gPiAtICAgICBpZiAo Zm0tPnJlZF9ieXRlcykNCj4gPiAtICAgICAgICAgICAgICpzdGF0c19tYXNrIHw9IFJURV9NVFJf U1RBVFNfTl9CWVRFU19SRUQ7DQo+ID4gLSAgICAgaWYgKGZtLT5yZWRfcGt0cykNCj4gPiAtICAg ICAgICAgICAgICpzdGF0c19tYXNrIHw9IFJURV9NVFJfU1RBVFNfTl9QS1RTX1JFRDsNCj4gPiAg ICAgICBpZiAoZm0tPmJ5dGVzX2Ryb3BwZWQpDQo+ID4gICAgICAgICAgICAgICAqc3RhdHNfbWFz ayB8PSBSVEVfTVRSX1NUQVRTX05fQllURVNfRFJPUFBFRDsNCj4gPiAgICAgICBpZiAoZm0tPnBr dHNfZHJvcHBlZCkNCj4gPiAgICAgICAgICAgICAgICpzdGF0c19tYXNrIHw9IFJURV9NVFJfU1RB VFNfTl9QS1RTX0RST1BQRUQ7DQo+ID4gICAgICAgbWVtc2V0KHN0YXRzLCAwLCBzaXplb2YoKnN0 YXRzKSk7DQo+ID4gLSAgICAgaWYgKHBzLT5wYXNzX2NudCkgew0KPiA+IC0gICAgICAgICAgICAg cmV0ID0gbWx4NV9jb3VudGVyX3F1ZXJ5KGRldiwgcHMtPnBhc3NfY250LCBjbGVhciwgJnBrdHMs DQo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmYnl0 ZXMpOw0KPiA+IC0gICAgICAgICAgICAgaWYgKHJldCkNCj4gPiAtICAgICAgICAgICAgICAgICAg ICAgZ290byBlcnJvcjsNCj4gPiAtICAgICAgICAgICAgIC8qIElmIG5lZWQgdG8gcmVhZCB0aGUg cGFja2V0cywgc2V0IGl0LiAqLw0KPiA+IC0gICAgICAgICAgICAgaWYgKGZtLT5ncmVlbl9wa3Rz KQ0KPiA+IC0gICAgICAgICAgICAgICAgICAgICBzdGF0cy0+bl9wa3RzW1JURV9DT0xPUl9HUkVF Tl0gPSBwa3RzOw0KPiA+IC0gICAgICAgICAgICAgLyogSWYgbmVlZCB0byByZWFkIHRoZSBieXRl cywgc2V0IGl0LiAqLw0KPiA+IC0gICAgICAgICAgICAgaWYgKGZtLT5ncmVlbl9ieXRlcykNCj4g PiAtICAgICAgICAgICAgICAgICAgICAgc3RhdHMtPm5fYnl0ZXNbUlRFX0NPTE9SX0dSRUVOXSA9 IGJ5dGVzOw0KPiA+IC0gICAgIH0NCj4gPiAtICAgICBpZiAocHMtPmRyb3BfY250KSB7DQo+ID4g LSAgICAgICAgICAgICByZXQgPSBtbHg1X2NvdW50ZXJfcXVlcnkoZGV2LCBwcy0+ZHJvcF9jbnQs IGNsZWFyLCAmcGt0cywNCj4gPiArICAgICBpZiAoZm0tPmRyb3BfY250KSB7DQo+ID4gKyAgICAg ICAgICAgICByZXQgPSBtbHg1X2NvdW50ZXJfcXVlcnkoZGV2LCBmbS0+ZHJvcF9jbnQsIGNsZWFy LCAmcGt0cywNCj4gPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICZieXRlcyk7DQo+ID4gICAgICAgICAgICAgICBpZiAocmV0KQ0KPiA+ICAgICAgICAgICAg ICAgICAgICAgICBnb3RvIGVycm9yOw0KPiA+IEBAIC0xMjczLDIwICs5MzUsMTggQEAgbWx4NV9m bG93X21ldGVyX3N0YXRzX3JlYWQoc3RydWN0IHJ0ZV9ldGhfZGV2DQo+ID4gKmRldiwNCj4gPiAg ICAgICByZXR1cm4gMDsNCj4gPiAgZXJyb3I6DQo+ID4gICAgICAgcmV0dXJuIC1ydGVfbXRyX2Vy cm9yX3NldChlcnJvciwgcmV0LCBSVEVfTVRSX0VSUk9SX1RZUEVfU1RBVFMsDQo+ID4gTlVMTCwN Cj4gPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkZhaWxlZCB0byByZWFkIHBvbGlj ZXIgY291bnRlcnMuIik7DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJGYWls ZWQgdG8gcmVhZCBtZXRlciBkcm9wIGNvdW50ZXJzLiIpOw0KPiA+ICB9DQo+ID4NCj4gPiAgc3Rh dGljIGNvbnN0IHN0cnVjdCBydGVfbXRyX29wcyBtbHg1X2Zsb3dfbXRyX29wcyA9IHsNCj4gPiAg ICAgICAuY2FwYWJpbGl0aWVzX2dldCA9IG1seDVfZmxvd19tdHJfY2FwX2dldCwNCj4gPiAgICAg ICAubWV0ZXJfcHJvZmlsZV9hZGQgPSBtbHg1X2Zsb3dfbWV0ZXJfcHJvZmlsZV9hZGQsDQo+ID4g ICAgICAgLm1ldGVyX3Byb2ZpbGVfZGVsZXRlID0gbWx4NV9mbG93X21ldGVyX3Byb2ZpbGVfZGVs ZXRlLA0KPiA+IC0gICAgIC5jcmVhdGUgPSBtbHg1X2Zsb3dfbWV0ZXJfY3JlYXRlLA0KPiA+ICAg ICAgIC5kZXN0cm95ID0gbWx4NV9mbG93X21ldGVyX2Rlc3Ryb3ksDQo+ID4gICAgICAgLm1ldGVy X2VuYWJsZSA9IG1seDVfZmxvd19tZXRlcl9lbmFibGUsDQo+ID4gICAgICAgLm1ldGVyX2Rpc2Fi bGUgPSBtbHg1X2Zsb3dfbWV0ZXJfZGlzYWJsZSwNCj4gPiAgICAgICAubWV0ZXJfcHJvZmlsZV91 cGRhdGUgPSBtbHg1X2Zsb3dfbWV0ZXJfcHJvZmlsZV91cGRhdGUsDQo+ID4gICAgICAgLm1ldGVy X2RzY3BfdGFibGVfdXBkYXRlID0gTlVMTCwNCj4gPiAtICAgICAucG9saWNlcl9hY3Rpb25zX3Vw ZGF0ZSA9IE5VTEwsDQo+ID4gICAgICAgLnN0YXRzX3VwZGF0ZSA9IG1seDVfZmxvd19tZXRlcl9z dGF0c191cGRhdGUsDQo+ID4gICAgICAgLnN0YXRzX3JlYWQgPSBtbHg1X2Zsb3dfbWV0ZXJfc3Rh dHNfcmVhZCwNCj4gPiAgfTsNCj4gPiBAQCAtMTM0NCwxMiArMTAwNCwxMSBAQCBtbHg1X2Zsb3df bWV0ZXJfZmluZChzdHJ1Y3QgbWx4NV9wcml2ICpwcml2LA0KPiA+IHVpbnQzMl90IG1ldGVyX2lk LA0KPiA+ICAgICAgICAgICAgICAgYXNvX210ciA9IG1seDVfYXNvX21ldGVyX2J5X2lkeChwcml2 LCBkYXRhLmR3b3JkKTsNCj4gPiAgICAgICAgICAgICAgIC8qIFJlbW92ZSByZWZlcmVuY2UgdGFr ZW4gYnkgdGhlIG1seDVfbDN0X2dldF9lbnRyeS4gKi8NCj4gPiAgICAgICAgICAgICAgIG1seDVf bDN0X2NsZWFyX2VudHJ5KHByaXYtPm10cl9pZHhfdGJsLCBtZXRlcl9pZCk7DQo+ID4gLSAgICAg ICAgICAgICBNTFg1X0FTU0VSVChtZXRlcl9pZCA9PSBhc29fbXRyLT5mbS5tZXRlcl9pZCk7DQo+ ID4gICAgICAgICAgICAgICBydGVfc3BpbmxvY2tfdW5sb2NrKCZtdHJtbmctPm10cnNsKTsNCj4g PiAgICAgICAgICAgICAgIHJldHVybiAmYXNvX210ci0+Zm07DQo+ID4gICAgICAgfQ0KPiA+ICAg ICAgIFRBSUxRX0ZPUkVBQ0gobGVnYWN5X2ZtLCBmbXMsIG5leHQpDQo+ID4gLSAgICAgICAgICAg ICBpZiAobWV0ZXJfaWQgPT0gbGVnYWN5X2ZtLT5mbS5tZXRlcl9pZCkgew0KPiA+ICsgICAgICAg ICAgICAgaWYgKG1ldGVyX2lkID09IGxlZ2FjeV9mbS0+bWV0ZXJfaWQpIHsNCj4gPiAgICAgICAg ICAgICAgICAgICAgICAgaWYgKG10cl9pZHgpDQo+ID4gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKm10cl9pZHggPSBsZWdhY3lfZm0tPmlkeDsNCj4gPiAgICAgICAgICAgICAgICAgICAg ICAgcmV0dXJuICZsZWdhY3lfZm0tPmZtOw0KPiA+IEBAIC0xNTE3LDExICsxMTc2LDYgQEAgbWx4 NV9mbG93X21ldGVyX2ZsdXNoKHN0cnVjdCBydGVfZXRoX2RldiAqZGV2LA0KPiA+IHN0cnVjdCBy dGVfbXRyX2Vycm9yICplcnJvcikNCj4gPiAgICAgICBzdHJ1Y3QgbWx4NV9sZWdhY3lfZmxvd19t ZXRlciAqbGVnYWN5X2ZtOw0KPiA+ICAgICAgIHN0cnVjdCBtbHg1X2Zsb3dfbWV0ZXJfaW5mbyAq Zm07DQo+ID4gICAgICAgc3RydWN0IG1seDVfYXNvX210cl9wb29sICptdHJfcG9vbDsNCj4gPiAt ICAgICBjb25zdCBzdHJ1Y3QgcnRlX2Zsb3dfYXR0ciBhdHRyID0gew0KPiA+IC0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgIC5pbmdyZXNzID0gMSwNCj4gPiAtICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAuZWdyZXNzID0gMSwNCj4gPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAudHJhbnNmZXIgPSBwcml2LT5jb25maWcuZHZfZXN3X2VuID8gMSA6IDAsDQo+ID4gLSAgICAg ICAgICAgICAgICAgICAgIH07DQo+ID4gICAgICAgdm9pZCAqdG1wOw0KPiA+ICAgICAgIHVpbnQz Ml90IGksIG9mZnNldCwgbXRyX2lkeDsNCj4gPg0KPiA+IEBAIC0xNTMzLDkgKzExODcsOCBAQCBt bHg1X2Zsb3dfbWV0ZXJfZmx1c2goc3RydWN0IHJ0ZV9ldGhfZGV2ICpkZXYsDQo+ID4gc3RydWN0 IHJ0ZV9tdHJfZXJyb3IgKmVycm9yKQ0KPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IG9mZnNldCsrKSB7DQo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm0gPSAmbXRy X3Bvb2wtPm10cnNbb2Zmc2V0XS5mbTsNCj4gPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBtdHJfaWR4ID0gTUxYNV9NQUtFX01UUl9JRFgoaSwgb2Zmc2V0KTsNCj4gPiAtICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBpZiAoZm0tPm1ldGVyX2lkICE9IFVJTlQzMl9NQVggJiYNCj4g PiAtDQo+ID4gICAgICAgbWx4NV9mbG93X21ldGVyX3BhcmFtc19mbHVzaChkZXYsDQo+ID4gLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZtLCAmYXR0ciwgbXRy X2lkeCkpDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1seDVfZmxvd19t ZXRlcl9wYXJhbXNfZmx1c2goZGV2LA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBmbSwgbXRyX2lkeCkpDQo+ID4gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICByZXR1cm4gLXJ0ZV9tdHJfZXJyb3Jfc2V0DQo+ID4gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZXJyb3IsIEVJTlZBTCwNCj4gPg0KPiA+ICAg ICAgIFJURV9NVFJfRVJST1JfVFlQRV9NRVRFUl9QUk9GSUxFX0lELA0KPiA+IEBAIC0xNTQ1LDcg KzExOTgsNyBAQCBtbHg1X2Zsb3dfbWV0ZXJfZmx1c2goc3RydWN0IHJ0ZV9ldGhfZGV2ICpkZXYs DQo+ID4gc3RydWN0IHJ0ZV9tdHJfZXJyb3IgKmVycm9yKQ0KPiA+ICAgICAgIH0gZWxzZSB7DQo+ ID4gICAgICAgICAgICAgICBUQUlMUV9GT1JFQUNIX1NBRkUobGVnYWN5X2ZtLCBmbXMsIG5leHQs IHRtcCkgew0KPiA+ICAgICAgICAgICAgICAgICAgICAgICBmbSA9ICZsZWdhY3lfZm0tPmZtOw0K PiA+IC0gICAgICAgICAgICAgICAgICAgICBpZiAobWx4NV9mbG93X21ldGVyX3BhcmFtc19mbHVz aChkZXYsIGZtLCAmYXR0ciwNCj4gPiAwKSkNCj4gPiArICAgICAgICAgICAgICAgICAgICAgaWYg KG1seDVfZmxvd19tZXRlcl9wYXJhbXNfZmx1c2goZGV2LCBmbSwgMCkpDQo+ID4gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC1ydGVfbXRyX2Vycm9yX3NldChlcnJvciwgRUlO VkFMLA0KPiA+DQo+ID4gICAgICAgUlRFX01UUl9FUlJPUl9UWVBFX01FVEVSX1BST0ZJTEVfSUQs DQo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCAiTVRSIG9i amVjdCBtZXRlciBwcm9maWxlDQo+ID4gaW52YWxpZC4iKTsNCj4gPiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9uZXQvc29mdG5pYy9ydGVfZXRoX3NvZnRuaWNfZmxvdy5jDQo+ID4gYi9kcml2ZXJzL25l dC9zb2Z0bmljL3J0ZV9ldGhfc29mdG5pY19mbG93LmMNCj4gPiBpbmRleCA3OTI1YmFkMWMwLi4y N2VhZjM4MGNkIDEwMDY0NA0KPiA+IC0tLSBhL2RyaXZlcnMvbmV0L3NvZnRuaWMvcnRlX2V0aF9z b2Z0bmljX2Zsb3cuYw0KPiA+ICsrKyBiL2RyaXZlcnMvbmV0L3NvZnRuaWMvcnRlX2V0aF9zb2Z0 bmljX2Zsb3cuYw0KPiA+IEBAIC0xMTY2LDYgKzExNjYsNyBAQCBmbG93X3J1bGVfYWN0aW9uX2dl dChzdHJ1Y3QgcG1kX2ludGVybmFscw0KPiA+ICpzb2Z0bmljLA0KPiA+ICB7DQo+ID4gICAgICAg c3RydWN0IHNvZnRuaWNfdGFibGVfYWN0aW9uX3Byb2ZpbGUgKnByb2ZpbGU7DQo+ID4gICAgICAg c3RydWN0IHNvZnRuaWNfdGFibGVfYWN0aW9uX3Byb2ZpbGVfcGFyYW1zICpwYXJhbXM7DQo+ID4g KyAgICAgc3RydWN0IHNvZnRuaWNfbXRyX21ldGVyX3BvbGljeSAqcG9saWN5Ow0KPiA+ICAgICAg IGludCBuX2p1bXBfcXVldWVfcnNzX2Ryb3AgPSAwOw0KPiA+ICAgICAgIGludCBuX2NvdW50ID0g MDsNCj4gPiAgICAgICBpbnQgbl9tYXJrID0gMDsNCj4gPiBAQCAtMTYyMSwxNSArMTYyMiwyNSBA QCBmbG93X3J1bGVfYWN0aW9uX2dldChzdHJ1Y3QgcG1kX2ludGVybmFscw0KPiA+ICpzb2Z0bmlj LA0KPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOw0K PiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCj4gPiAgICAgICAgICAgICAgICAg ICAgICAgfQ0KPiA+IC0NCj4gPiArICAgICAgICAgICAgICAgICAgICAgLyogTWV0ZXIgcG9saWN5 IG11c3QgZXhpc3QgKi8NCj4gPiArICAgICAgICAgICAgICAgICAgICAgcG9saWN5ID0gc29mdG5p Y19tdHJfbWV0ZXJfcG9saWN5X2ZpbmQoc29mdG5pYywNCj4gPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIG0tPnBhcmFtcy5tZXRlcl9wb2xpY3lfaWQpOw0KPiA+ICsgICAg ICAgICAgICAgICAgICAgICBpZiAocG9saWN5ID09IE5VTEwpIHsNCj4gPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBydGVfZmxvd19lcnJvcl9zZXQoZXJyb3IsDQo+ID4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVJTlZBTCwNCj4gPiArDQo+ID4g ICAgICAgUlRFX0ZMT1dfRVJST1JfVFlQRV9VTlNQRUNJRklFRCwNCj4gPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwNCj4gPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk1FVEVSOiBmYWlsIHRvIGZpbmQgbWV0 ZXINCj4gPiBwb2xpY3kiKTsNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1 cm4gLTE7DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgIH0NCj4gPiAgICAgICAgICAgICAgICAg ICAgICAgLyogUlRFX1RBQkxFX0FDVElPTl9NRVRFUiAqLw0KPiA+ICAgICAgICAgICAgICAgICAg ICAgICBydWxlX2FjdGlvbi0+bXRyLm10clswXS5tZXRlcl9wcm9maWxlX2lkID0NCj4gPiBtZXRl cl9wcm9maWxlX2lkOw0KPiA+ICAgICAgICAgICAgICAgICAgICAgICBydWxlX2FjdGlvbi0+bXRy Lm10clswXS5wb2xpY2VyW1JURV9DT0xPUl9HUkVFTl0NCj4gPiA9DQo+ID4gLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgc29mdG5pY190YWJsZV9hY3Rpb25fcG9saWNlcihtLQ0KPiA+ID5w YXJhbXMuYWN0aW9uW1JURV9DT0xPUl9HUkVFTl0pOw0KPiA+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHBvbGljeS0+cG9saWNlcltSVEVfQ09MT1JfR1JFRU5dOw0KPiA+ICAgICAgICAg ICAgICAgICAgICAgICBydWxlX2FjdGlvbi0NCj4gPiA+bXRyLm10clswXS5wb2xpY2VyW1JURV9D T0xPUl9ZRUxMT1ddID0NCj4gPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb2Z0bmlj X3RhYmxlX2FjdGlvbl9wb2xpY2VyKG0tDQo+ID4gPnBhcmFtcy5hY3Rpb25bUlRFX0NPTE9SX1lF TExPV10pOw0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvbGljeS0+cG9saWNl cltSVEVfQ09MT1JfWUVMTE9XXTsNCj4gPiAgICAgICAgICAgICAgICAgICAgICAgcnVsZV9hY3Rp b24tPm10ci5tdHJbMF0ucG9saWNlcltSVEVfQ09MT1JfUkVEXSA9DQo+ID4gLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgc29mdG5pY190YWJsZV9hY3Rpb25fcG9saWNlcihtLQ0KPiA+ID5w YXJhbXMuYWN0aW9uW1JURV9DT0xPUl9SRURdKTsNCj4gPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBwb2xpY3ktPnBvbGljZXJbUlRFX0NPTE9SX1JFRF07DQo+ID4gICAgICAgICAgICAg ICAgICAgICAgIHJ1bGVfYWN0aW9uLT5tdHIudGNfbWFzayA9IDE7DQo+ID4gICAgICAgICAgICAg ICAgICAgICAgIHJ1bGVfYWN0aW9uLT5hY3Rpb25fbWFzayB8PSAxIDw8DQo+ID4gUlRFX1RBQkxF X0FDVElPTl9NVFI7DQo+ID4gICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KPiA+IGRpZmYg LS1naXQgYS9kcml2ZXJzL25ldC9zb2Z0bmljL3J0ZV9ldGhfc29mdG5pY19pbnRlcm5hbHMuaA0K PiA+IGIvZHJpdmVycy9uZXQvc29mdG5pYy9ydGVfZXRoX3NvZnRuaWNfaW50ZXJuYWxzLmgNCj4g PiBpbmRleCBmYWY5MGE1YThjLi4xYjMxODZlZjBiIDEwMDY0NA0KPiA+IC0tLSBhL2RyaXZlcnMv bmV0L3NvZnRuaWMvcnRlX2V0aF9zb2Z0bmljX2ludGVybmFscy5oDQo+ID4gKysrIGIvZHJpdmVy cy9uZXQvc29mdG5pYy9ydGVfZXRoX3NvZnRuaWNfaW50ZXJuYWxzLmgNCj4gPiBAQCAtODMsNiAr ODMsMTYgQEAgc3RydWN0IHNvZnRuaWNfbXRyX21ldGVyX3Byb2ZpbGUgew0KPiA+DQo+ID4gIFRB SUxRX0hFQUQoc29mdG5pY19tdHJfbWV0ZXJfcHJvZmlsZV9saXN0LCBzb2Z0bmljX210cl9tZXRl cl9wcm9maWxlKTsNCj4gPg0KPiA+ICsvKiBNVFIgbWV0ZXIgcG9saWN5ICovDQo+ID4gK3N0cnVj dCBzb2Z0bmljX210cl9tZXRlcl9wb2xpY3kgew0KPiA+ICsgICAgIFRBSUxRX0VOVFJZKHNvZnRu aWNfbXRyX21ldGVyX3BvbGljeSkgbm9kZTsNCj4gPiArICAgICB1aW50MzJfdCBtZXRlcl9wb2xp Y3lfaWQ7DQo+ID4gKyAgICAgZW51bSBydGVfdGFibGVfYWN0aW9uX3BvbGljZXIgcG9saWNlcltS VEVfQ09MT1JTXTsNCj4gPiArICAgICB1aW50MzJfdCBuX3VzZXJzOw0KPiA+ICt9Ow0KPiA+ICsN Cj4gPiArVEFJTFFfSEVBRChzb2Z0bmljX210cl9tZXRlcl9wb2xpY3lfbGlzdCwgc29mdG5pY19t dHJfbWV0ZXJfcG9saWN5KTsNCj4gPiArDQo+ID4gIC8qIE1UUiBtZXRlciBvYmplY3QgKi8NCj4g PiAgc3RydWN0IHNvZnRuaWNfbXRyIHsNCj4gPiAgICAgICBUQUlMUV9FTlRSWShzb2Z0bmljX210 cikgbm9kZTsNCj4gPiBAQCAtOTUsNiArMTA1LDcgQEAgVEFJTFFfSEVBRChzb2Z0bmljX210cl9s aXN0LCBzb2Z0bmljX210cik7DQo+ID4NCj4gPiAgc3RydWN0IG10cl9pbnRlcm5hbHMgew0KPiA+ ICAgICAgIHN0cnVjdCBzb2Z0bmljX210cl9tZXRlcl9wcm9maWxlX2xpc3QgbWV0ZXJfcHJvZmls ZXM7DQo+ID4gKyAgICAgc3RydWN0IHNvZnRuaWNfbXRyX21ldGVyX3BvbGljeV9saXN0IG1ldGVy X3BvbGljaWVzOw0KPiA+ICAgICAgIHN0cnVjdCBzb2Z0bmljX210cl9saXN0IG10cnM7DQo+ID4g IH07DQo+ID4NCj4gPiBAQCAtNjc4LDYgKzY4OSwxMCBAQCBzdHJ1Y3Qgc29mdG5pY19tdHJfbWV0 ZXJfcHJvZmlsZSAqDQo+ID4gIHNvZnRuaWNfbXRyX21ldGVyX3Byb2ZpbGVfZmluZChzdHJ1Y3Qg cG1kX2ludGVybmFscyAqcCwNCj4gPiAgICAgICB1aW50MzJfdCBtZXRlcl9wcm9maWxlX2lkKTsN Cj4gPg0KPiA+ICtzdHJ1Y3Qgc29mdG5pY19tdHJfbWV0ZXJfcG9saWN5ICoNCj4gPiArc29mdG5p Y19tdHJfbWV0ZXJfcG9saWN5X2ZpbmQoc3RydWN0IHBtZF9pbnRlcm5hbHMgKnAsDQo+ID4gKyAg ICAgdWludDMyX3QgbWV0ZXJfcG9saWN5X2lkKTsNCj4gPiArDQo+ID4gIGV4dGVybiBjb25zdCBz dHJ1Y3QgcnRlX210cl9vcHMgcG1kX210cl9vcHM7DQo+ID4NCj4gPiAgLyoqDQo+ID4gQEAgLTg0 MSw5ICs4NTYsNiBAQCBzb2Z0bmljX3RhYmxlX2FjdGlvbl9wcm9maWxlX2NyZWF0ZShzdHJ1Y3QN Cj4gPiBwbWRfaW50ZXJuYWxzICpwLA0KPiA+ICAgICAgIGNvbnN0IGNoYXIgKm5hbWUsDQo+ID4g ICAgICAgc3RydWN0IHNvZnRuaWNfdGFibGVfYWN0aW9uX3Byb2ZpbGVfcGFyYW1zICpwYXJhbXMp Ow0KPiA+DQo+ID4gLWVudW0gcnRlX3RhYmxlX2FjdGlvbl9wb2xpY2VyDQo+ID4gLXNvZnRuaWNf dGFibGVfYWN0aW9uX3BvbGljZXIoZW51bSBydGVfbXRyX3BvbGljZXJfYWN0aW9uIGFjdGlvbik7 DQo+ID4gLQ0KPiA+ICAvKioNCj4gPiAgICogUGlwZWxpbmUNCj4gPiAgICovDQo+ID4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvbmV0L3NvZnRuaWMvcnRlX2V0aF9zb2Z0bmljX21ldGVyLmMNCj4gPiBi L2RyaXZlcnMvbmV0L3NvZnRuaWMvcnRlX2V0aF9zb2Z0bmljX21ldGVyLmMNCj4gPiBpbmRleCAz MWEyYTBlNmQ5Li4yYTA1YTg1Y2RiIDEwMDY0NA0KPiA+IC0tLSBhL2RyaXZlcnMvbmV0L3NvZnRu aWMvcnRlX2V0aF9zb2Z0bmljX21ldGVyLmMNCj4gPiArKysgYi9kcml2ZXJzL25ldC9zb2Z0bmlj L3J0ZV9ldGhfc29mdG5pY19tZXRlci5jDQo+ID4gQEAgLTY1LDI3ICs2NSw2IEBAIHNvZnRuaWNf bXRyX21ldGVyX3Byb2ZpbGVfZmluZChzdHJ1Y3QgcG1kX2ludGVybmFscw0KPiA+ICpwLA0KPiA+ ICAgICAgIHJldHVybiBOVUxMOw0KPiA+ICB9DQo+ID4NCj4gPiAtZW51bSBydGVfdGFibGVfYWN0 aW9uX3BvbGljZXINCj4gPiAtc29mdG5pY190YWJsZV9hY3Rpb25fcG9saWNlcihlbnVtIHJ0ZV9t dHJfcG9saWNlcl9hY3Rpb24gYWN0aW9uKQ0KPiA+IC17DQo+ID4gLSAgICAgc3dpdGNoIChhY3Rp b24pIHsNCj4gPiAtICAgICBjYXNlIE1UUl9QT0xJQ0VSX0FDVElPTl9DT0xPUl9HUkVFTjoNCj4g PiAtICAgICAgICAgICAgIHJldHVybiBSVEVfVEFCTEVfQUNUSU9OX1BPTElDRVJfQ09MT1JfR1JF RU47DQo+ID4gLQ0KPiA+IC0gICAgICAgICAgICAgLyogRkFMTFRIUk9VR0ggKi8NCj4gPiAtICAg ICBjYXNlIE1UUl9QT0xJQ0VSX0FDVElPTl9DT0xPUl9ZRUxMT1c6DQo+ID4gLSAgICAgICAgICAg ICByZXR1cm4gUlRFX1RBQkxFX0FDVElPTl9QT0xJQ0VSX0NPTE9SX1lFTExPVzsNCj4gPiAtDQo+ ID4gLSAgICAgICAgICAgICAvKiBGQUxMVEhST1VHSCAqLw0KPiA+IC0gICAgIGNhc2UgTVRSX1BP TElDRVJfQUNUSU9OX0NPTE9SX1JFRDoNCj4gPiAtICAgICAgICAgICAgIHJldHVybiBSVEVfVEFC TEVfQUNUSU9OX1BPTElDRVJfQ09MT1JfUkVEOw0KPiA+IC0NCj4gPiAtICAgICAgICAgICAgIC8q IEZBTExUSFJPVUdIICovDQo+ID4gLSAgICAgZGVmYXVsdDoNCj4gPiAtICAgICAgICAgICAgIHJl dHVybiBSVEVfVEFCTEVfQUNUSU9OX1BPTElDRVJfRFJPUDsNCj4gPiAtICAgICB9DQo+ID4gLX0N Cj4gPiAtDQo+ID4gIHN0YXRpYyBpbnQNCj4gPiAgbWV0ZXJfcHJvZmlsZV9jaGVjayhzdHJ1Y3Qg cnRlX2V0aF9kZXYgKmRldiwNCj4gPiAgICAgICB1aW50MzJfdCBtZXRlcl9wcm9maWxlX2lkLA0K PiA+IEBAIC0yMDAsNiArMTc5LDEyOSBAQCBwbWRfbXRyX21ldGVyX3Byb2ZpbGVfZGVsZXRlKHN0 cnVjdA0KPiA+IHJ0ZV9ldGhfZGV2ICpkZXYsDQo+ID4gICAgICAgcmV0dXJuIDA7DQo+ID4gIH0N Cj4gPg0KPiA+ICtzdHJ1Y3Qgc29mdG5pY19tdHJfbWV0ZXJfcG9saWN5ICoNCj4gPiArc29mdG5p Y19tdHJfbWV0ZXJfcG9saWN5X2ZpbmQoc3RydWN0IHBtZF9pbnRlcm5hbHMgKnAsDQo+ID4gKyAg ICAgdWludDMyX3QgbWV0ZXJfcG9saWN5X2lkKQ0KPiA+ICt7DQo+ID4gKyAgICAgc3RydWN0IHNv ZnRuaWNfbXRyX21ldGVyX3BvbGljeV9saXN0ICptcGwgPSAmcC0NCj4gPiA+bXRyLm1ldGVyX3Bv bGljaWVzOw0KPiA+ICsgICAgIHN0cnVjdCBzb2Z0bmljX210cl9tZXRlcl9wb2xpY3kgKm1wOw0K PiA+ICsNCj4gPiArICAgICBUQUlMUV9GT1JFQUNIKG1wLCBtcGwsIG5vZGUpDQo+ID4gKyAgICAg ICAgICAgICBpZiAobWV0ZXJfcG9saWN5X2lkID09IG1wLT5tZXRlcl9wb2xpY3lfaWQpDQo+ID4g KyAgICAgICAgICAgICAgICAgICAgIHJldHVybiBtcDsNCj4gPiArDQo+ID4gKyAgICAgcmV0dXJu IE5VTEw7DQo+ID4gK30NCj4gPiArDQo+ID4gKy8qIE1UUiBtZXRlciBwb2xpY3kgY3JlYXRlICov DQo+ID4gK3N0YXRpYyBpbnQNCj4gPiArcG1kX210cl9tZXRlcl9wb2xpY3lfY3JlYXRlKHN0cnVj dCBydGVfZXRoX2RldiAqZGV2LA0KPiA+ICsgICAgIHVpbnQzMl90IG1ldGVyX3BvbGljeV9pZCwN Cj4gPiArICAgICBzdHJ1Y3QgcnRlX210cl9tZXRlcl9wb2xpY3lfcGFyYW1zICpwb2xpY3ksDQo+ ID4gKyAgICAgc3RydWN0IHJ0ZV9tdHJfZXJyb3IgKmVycm9yKQ0KPiA+ICt7DQo+ID4gKyAgICAg c3RydWN0IHBtZF9pbnRlcm5hbHMgKnAgPSBkZXYtPmRhdGEtPmRldl9wcml2YXRlOw0KPiA+ICsg ICAgIHN0cnVjdCBzb2Z0bmljX210cl9tZXRlcl9wb2xpY3lfbGlzdCAqbXBsID0gJnAtDQo+ID4g Pm10ci5tZXRlcl9wb2xpY2llczsNCj4gPiArICAgICBzdHJ1Y3Qgc29mdG5pY19tdHJfbWV0ZXJf cG9saWN5ICptcDsNCj4gPiArICAgICBjb25zdCBzdHJ1Y3QgcnRlX2Zsb3dfYWN0aW9uICphY3Q7 DQo+ID4gKyAgICAgY29uc3Qgc3RydWN0IHJ0ZV9mbG93X2FjdGlvbl9tZXRlcl9jb2xvciAqcmVj b2xvcjsNCj4gPiArICAgICB1aW50MzJfdCBpOw0KPiA+ICsNCj4gPiArICAgICAvKiBNZXRlciBw b2xpY3kgSUQgbXVzdCBiZSB2YWxpZC4gKi8NCj4gPiArICAgICBpZiAobWV0ZXJfcG9saWN5X2lk ID09IFVJTlQzMl9NQVgpDQo+ID4gKyAgICAgICAgICAgICByZXR1cm4gLXJ0ZV9tdHJfZXJyb3Jf c2V0KGVycm9yLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICBFSU5WQUwsDQo+ID4gKyAgICAg ICAgICAgICAgICAgICAgIFJURV9NVFJfRVJST1JfVFlQRV9NRVRFUl9QT0xJQ1lfSUQsDQo+ID4g KyAgICAgICAgICAgICAgICAgICAgIE5VTEwsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICJN ZXRlciBwb2xpY3kgaWQgbm90IHZhbGlkIik7DQo+ID4gKw0KPiA+ICsgICAgIGZvciAoaSA9IDA7 IGkgPCBSVEVfQ09MT1JTOyBpKyspIHsNCj4gPiArICAgICAgICAgICAgIGFjdCA9IHBvbGljeS0+ YWN0aW9uc1tpXTsNCj4gPiArICAgICAgICAgICAgIGlmIChhY3QgJiYgYWN0LT50eXBlICE9DQo+ ID4gUlRFX0ZMT1dfQUNUSU9OX1RZUEVfTUVURVJfQ09MT1IgJiYNCj4gPiArICAgICAgICAgICAg ICAgICAgICAgYWN0LT50eXBlICE9IFJURV9GTE9XX0FDVElPTl9UWVBFX0RST1ApDQo+ID4gKyAg ICAgICAgICAgICAgICAgICAgIHJldHVybiAtcnRlX210cl9lcnJvcl9zZXQoZXJyb3IsDQo+ID4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUlOVkFMLA0KPiA+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFJURV9NVFJfRVJST1JfVFlQRV9NRVRFUl9QT0xJQ1ksDQo+ID4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwNCj4gPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAiQWN0aW9uIGludmFsaWQiKTsNCj4gPiArICAgICB9DQo+ID4gKw0KPiA+ICsg ICAgIC8qIE1lbW9yeSBhbGxvY2F0aW9uICovDQo+ID4gKyAgICAgbXAgPSBjYWxsb2MoMSwgc2l6 ZW9mKHN0cnVjdCBzb2Z0bmljX210cl9tZXRlcl9wb2xpY3kpKTsNCj4gPiArICAgICBpZiAobXAg PT0gTlVMTCkNCj4gPiArICAgICAgICAgICAgIHJldHVybiAtcnRlX210cl9lcnJvcl9zZXQoZXJy b3IsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgIEVOT01FTSwNCj4gPiArICAgICAgICAgICAg ICAgICAgICAgUlRFX01UUl9FUlJPUl9UWVBFX1VOU1BFQ0lGSUVELA0KPiA+ICsgICAgICAgICAg ICAgICAgICAgICBOVUxMLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAiTWVtb3J5IGFsbG9j IGZhaWxlZCIpOw0KPiA+ICsNCj4gPiArICAgICAvKiBGaWxsIGluICovDQo+ID4gKyAgICAgbXAt Pm1ldGVyX3BvbGljeV9pZCA9IG1ldGVyX3BvbGljeV9pZDsNCj4gPiArICAgICBmb3IgKGkgPSAw OyBpIDwgUlRFX0NPTE9SUzsgaSsrKSB7DQo+ID4gKyAgICAgICAgICAgICBtcC0+cG9saWNlcltp XSA9IFJURV9UQUJMRV9BQ1RJT05fUE9MSUNFUl9EUk9QOw0KPiA+ICsgICAgICAgICAgICAgYWN0 ID0gcG9saWN5LT5hY3Rpb25zW2ldOw0KPiA+ICsgICAgICAgICAgICAgaWYgKCFhY3QpDQo+ID4g KyAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOw0KPiA+ICsgICAgICAgICAgICAgaWYgKGFj dC0+dHlwZSA9PSBSVEVfRkxPV19BQ1RJT05fVFlQRV9NRVRFUl9DT0xPUikgew0KPiA+ICsgICAg ICAgICAgICAgICAgICAgICByZWNvbG9yID0gYWN0LT5jb25mOw0KPiA+ICsgICAgICAgICAgICAg ICAgICAgICBzd2l0Y2ggKHJlY29sb3ItPmNvbG9yKSB7DQo+ID4gKyAgICAgICAgICAgICAgICAg ICAgIGNhc2UgUlRFX0NPTE9SX0dSRUVOOg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIG1wLT5wb2xpY2VyW2ldID0NCj4gPiArDQo+ID4gICAgICAgUlRFX1RBQkxFX0FDVElPTl9Q T0xJQ0VSX0NPTE9SX0dSRUVOOw0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJy ZWFrOw0KPiA+ICsgICAgICAgICAgICAgICAgICAgICBjYXNlIFJURV9DT0xPUl9ZRUxMT1c6DQo+ ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXAtPnBvbGljZXJbaV0gPQ0KPiA+ICsN Cj4gPiAgICAgICBSVEVfVEFCTEVfQUNUSU9OX1BPTElDRVJfQ09MT1JfWUVMTE9XOw0KPiA+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KPiA+ICsgICAgICAgICAgICAgICAg ICAgICBjYXNlIFJURV9DT0xPUl9SRUQ6DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgbXAtPnBvbGljZXJbaV0gPQ0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJU RV9UQUJMRV9BQ1RJT05fUE9MSUNFUl9DT0xPUl9SRUQ7DQo+ID4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgYnJlYWs7DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6DQo+ ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQo+ID4gKyAgICAgICAgICAg ICAgICAgICAgIH0NCj4gPiArICAgICAgICAgICAgIH0NCj4gPiArICAgICB9DQo+ID4gKw0KPiA+ ICsgICAgIC8qIEFkZCB0byBsaXN0ICovDQo+ID4gKyAgICAgVEFJTFFfSU5TRVJUX1RBSUwobXBs LCBtcCwgbm9kZSk7DQo+ID4gKw0KPiA+ICsgICAgIHJldHVybiAwOw0KPiA+ICt9DQo+ID4gKw0K PiA+ICsvKiBNVFIgbWV0ZXIgcG9saWN5IGRlbGV0ZSAqLw0KPiA+ICtzdGF0aWMgaW50DQo+ID4g K3BtZF9tdHJfbWV0ZXJfcG9saWN5X2RlbGV0ZShzdHJ1Y3QgcnRlX2V0aF9kZXYgKmRldiwNCj4g PiArICAgICB1aW50MzJfdCBtZXRlcl9wb2xpY3lfaWQsDQo+ID4gKyAgICAgc3RydWN0IHJ0ZV9t dHJfZXJyb3IgKmVycm9yKQ0KPiA+ICt7DQo+ID4gKyAgICAgc3RydWN0IHBtZF9pbnRlcm5hbHMg KnAgPSBkZXYtPmRhdGEtPmRldl9wcml2YXRlOw0KPiA+ICsgICAgIHN0cnVjdCBzb2Z0bmljX210 cl9tZXRlcl9wb2xpY3kgKm1wOw0KPiA+ICsNCj4gPiArICAgICAvKiBNZXRlciBwb2xpY3kgbXVz dCBleGlzdCAqLw0KPiA+ICsgICAgIG1wID0gc29mdG5pY19tdHJfbWV0ZXJfcG9saWN5X2ZpbmQo cCwgbWV0ZXJfcG9saWN5X2lkKTsNCj4gPiArICAgICBpZiAobXAgPT0gTlVMTCkNCj4gPiArICAg ICAgICAgICAgIHJldHVybiAtcnRlX210cl9lcnJvcl9zZXQoZXJyb3IsDQo+ID4gKyAgICAgICAg ICAgICAgICAgICAgIEVJTlZBTCwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgUlRFX01UUl9F UlJPUl9UWVBFX01FVEVSX1BPTElDWV9JRCwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgTlVM TCwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgIk1ldGVyIHBvbGljeSBpZCBpbnZhbGlkIik7 DQo+ID4gKw0KPiA+ICsgICAgIC8qIENoZWNrIHVudXNlZCAqLw0KPiA+ICsgICAgIGlmIChtcC0+ bl91c2VycykNCj4gPiArICAgICAgICAgICAgIHJldHVybiAtcnRlX210cl9lcnJvcl9zZXQoZXJy b3IsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgIEVCVVNZLA0KPiA+ICsgICAgICAgICAgICAg ICAgICAgICBSVEVfTVRSX0VSUk9SX1RZUEVfTUVURVJfUE9MSUNZX0lELA0KPiA+ICsgICAgICAg ICAgICAgICAgICAgICBOVUxMLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAiTWV0ZXIgcG9s aWN5IGluIHVzZSIpOw0KPiA+ICsNCj4gPiArICAgICAvKiBSZW1vdmUgZnJvbSBsaXN0ICovDQo+ ID4gKyAgICAgVEFJTFFfUkVNT1ZFKCZwLT5tdHIubWV0ZXJfcG9saWNpZXMsIG1wLCBub2RlKTsN Cj4gPiArICAgICBmcmVlKG1wKTsNCj4gPiArDQo+ID4gKyAgICAgcmV0dXJuIDA7DQo+ID4gK30N Cj4gPiArDQo+ID4gIHN0cnVjdCBzb2Z0bmljX210ciAqDQo+ID4gIHNvZnRuaWNfbXRyX2ZpbmQo c3RydWN0IHBtZF9pbnRlcm5hbHMgKnAsIHVpbnQzMl90IG10cl9pZCkNCj4gPiAgew0KPiA+IEBA IC0yNjcsNiArMzY5LDcgQEAgcG1kX210cl9jcmVhdGUoc3RydWN0IHJ0ZV9ldGhfZGV2ICpkZXYs DQo+ID4gICAgICAgc3RydWN0IHBtZF9pbnRlcm5hbHMgKnAgPSBkZXYtPmRhdGEtPmRldl9wcml2 YXRlOw0KPiA+ICAgICAgIHN0cnVjdCBzb2Z0bmljX210cl9saXN0ICptbCA9ICZwLT5tdHIubXRy czsNCj4gPiAgICAgICBzdHJ1Y3Qgc29mdG5pY19tdHJfbWV0ZXJfcHJvZmlsZSAqbXA7DQo+ID4g KyAgICAgc3RydWN0IHNvZnRuaWNfbXRyX21ldGVyX3BvbGljeSAqcG9saWN5Ow0KPiA+ICAgICAg IHN0cnVjdCBzb2Z0bmljX210ciAqbTsNCj4gPiAgICAgICBpbnQgc3RhdHVzOw0KPiA+DQo+ID4g QEAgLTI4NCw2ICszODcsMTYgQEAgcG1kX210cl9jcmVhdGUoc3RydWN0IHJ0ZV9ldGhfZGV2ICpk ZXYsDQo+ID4gICAgICAgICAgICAgICAgICAgICAgIE5VTEwsDQo+ID4gICAgICAgICAgICAgICAg ICAgICAgICJNZXRlciBwcm9maWxlIGlkIG5vdCB2YWxpZCIpOw0KPiA+DQo+ID4gKyAgICAgLyog TWV0ZXIgcG9saWN5IG11c3QgZXhpc3QgKi8NCj4gPiArICAgICBwb2xpY3kgPSBzb2Z0bmljX210 cl9tZXRlcl9wb2xpY3lfZmluZChwLCBwYXJhbXMtDQo+ID4gPm1ldGVyX3BvbGljeV9pZCk7DQo+ ID4gKyAgICAgaWYgKHBvbGljeSA9PSBOVUxMKSB7DQo+ID4gKyAgICAgICAgICAgICByZXR1cm4g LXJ0ZV9tdHJfZXJyb3Jfc2V0KGVycm9yLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIEVJTlZBTCwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSVEVfTVRSX0VS Uk9SX1RZUEVfTUVURVJfUE9MSUNZX0lELA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIE5VTEwsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk1ldGVyIHBvbGlj eSBpZCBpbnZhbGlkIik7DQo+ID4gKyAgICAgfQ0KPiA+ICsNCj4gPiAgICAgICAvKiBNZW1vcnkg YWxsb2NhdGlvbiAqLw0KPiA+ICAgICAgIG0gPSBjYWxsb2MoMSwgc2l6ZW9mKHN0cnVjdCBzb2Z0 bmljX210cikpOw0KPiA+ICAgICAgIGlmIChtID09IE5VTEwpDQo+ID4gQEAgLTMwMiw2ICs0MTUs NyBAQCBwbWRfbXRyX2NyZWF0ZShzdHJ1Y3QgcnRlX2V0aF9kZXYgKmRldiwNCj4gPg0KPiA+ICAg ICAgIC8qIFVwZGF0ZSBkZXBlbmRlbmNpZXMgKi8NCj4gPiAgICAgICBtcC0+bl91c2VycysrOw0K PiA+ICsgICAgIHBvbGljeS0+bl91c2VycysrOw0KPiA+DQo+ID4gICAgICAgcmV0dXJuIDA7DQo+ ID4gIH0NCj4gPiBAQCAtMzE2LDYgKzQzMCw3IEBAIHBtZF9tdHJfZGVzdHJveShzdHJ1Y3QgcnRl X2V0aF9kZXYgKmRldiwNCj4gPiAgICAgICBzdHJ1Y3Qgc29mdG5pY19tdHJfbGlzdCAqbWwgPSAm cC0+bXRyLm10cnM7DQo+ID4gICAgICAgc3RydWN0IHNvZnRuaWNfbXRyX21ldGVyX3Byb2ZpbGUg Km1wOw0KPiA+ICAgICAgIHN0cnVjdCBzb2Z0bmljX210ciAqbTsNCj4gPiArICAgICBzdHJ1Y3Qg c29mdG5pY19tdHJfbWV0ZXJfcG9saWN5ICpwb2xpY3k7DQo+ID4NCj4gPiAgICAgICAvKiBNVFIg b2JqZWN0IG11c3QgZXhpc3QgKi8NCj4gPiAgICAgICBtID0gc29mdG5pY19tdHJfZmluZChwLCBt dHJfaWQpOw0KPiA+IEBAIC0zNDMsOCArNDU4LDE4IEBAIHBtZF9tdHJfZGVzdHJveShzdHJ1Y3Qg cnRlX2V0aF9kZXYgKmRldiwNCj4gPiAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwNCj4gPiAg ICAgICAgICAgICAgICAgICAgICAgIk1UUiBvYmplY3QgbWV0ZXIgcHJvZmlsZSBpbnZhbGlkIik7 DQo+ID4NCj4gPiArICAgICAvKiBNZXRlciBwb2xpY3kgbXVzdCBleGlzdCAqLw0KPiA+ICsgICAg IHBvbGljeSA9IHNvZnRuaWNfbXRyX21ldGVyX3BvbGljeV9maW5kKHAsIG0tDQo+ID4gPnBhcmFt cy5tZXRlcl9wb2xpY3lfaWQpOw0KPiA+ICsgICAgIGlmIChwb2xpY3kgPT0gTlVMTCkNCj4gPiAr ICAgICAgICAgICAgIHJldHVybiAtcnRlX210cl9lcnJvcl9zZXQoZXJyb3IsDQo+ID4gKyAgICAg ICAgICAgICAgICAgICAgIEVJTlZBTCwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgUlRFX01U Ul9FUlJPUl9UWVBFX01FVEVSX1BPTElDWV9JRCwNCj4gPiArICAgICAgICAgICAgICAgICAgICAg TlVMTCwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgIk1UUiBvYmplY3QgbWV0ZXIgcG9saWN5 IGludmFsaWQiKTsNCj4gPiArDQo+ID4gICAgICAgLyogVXBkYXRlIGRlcGVuZGVuY2llcyAqLw0K PiA+ICAgICAgIG1wLT5uX3VzZXJzLS07DQo+ID4gKyAgICAgcG9saWN5LT5uX3VzZXJzLS07DQo+ ID4NCj4gPiAgICAgICAvKiBSZW1vdmUgZnJvbSBsaXN0ICovDQo+ID4gICAgICAgVEFJTFFfUkVN T1ZFKG1sLCBtLCBub2RlKTsNCj4gPiBAQCAtNTA2LDE4ICs2MzEsMTggQEAgcG1kX210cl9tZXRl cl9kc2NwX3RhYmxlX3VwZGF0ZShzdHJ1Y3QNCj4gPiBydGVfZXRoX2RldiAqZGV2LA0KPiA+ICAg ICAgIHJldHVybiAwOw0KPiA+ICB9DQo+ID4NCj4gPiAtLyogTVRSIG9iamVjdCBwb2xpY2VyIGFj dGlvbiB1cGRhdGUgKi8NCj4gPiArLyogTVRSIG9iamVjdCBwb2xpY3kgdXBkYXRlICovDQo+ID4g IHN0YXRpYyBpbnQNCj4gPiAtcG1kX210cl9wb2xpY2VyX2FjdGlvbnNfdXBkYXRlKHN0cnVjdCBy dGVfZXRoX2RldiAqZGV2LA0KPiA+ICtwbWRfbXRyX21ldGVyX3BvbGljeV91cGRhdGUoc3RydWN0 IHJ0ZV9ldGhfZGV2ICpkZXYsDQo+ID4gICAgICAgdWludDMyX3QgbXRyX2lkLA0KPiA+IC0gICAg IHVpbnQzMl90IGFjdGlvbl9tYXNrLA0KPiA+IC0gICAgIGVudW0gcnRlX210cl9wb2xpY2VyX2Fj dGlvbiAqYWN0aW9ucywNCj4gPiArICAgICB1aW50MzJfdCBtZXRlcl9wb2xpY3lfaWQsDQo+ID4g ICAgICAgc3RydWN0IHJ0ZV9tdHJfZXJyb3IgKmVycm9yKQ0KPiA+ICB7DQo+ID4gICAgICAgc3Ry dWN0IHBtZF9pbnRlcm5hbHMgKnAgPSBkZXYtPmRhdGEtPmRldl9wcml2YXRlOw0KPiA+ICAgICAg IHN0cnVjdCBzb2Z0bmljX210ciAqbTsNCj4gPiAgICAgICB1aW50MzJfdCBpOw0KPiA+ICAgICAg IGludCBzdGF0dXM7DQo+ID4gKyAgICAgc3RydWN0IHNvZnRuaWNfbXRyX21ldGVyX3BvbGljeSAq bXBfbmV3LCAqbXBfb2xkOw0KPiA+DQo+ID4gICAgICAgLyogTVRSIG9iamVjdCBpZCBtdXN0IGJl IHZhbGlkICovDQo+ID4gICAgICAgbSA9IHNvZnRuaWNfbXRyX2ZpbmQocCwgbXRyX2lkKTsNCj4g PiBAQCAtNTI3LDI5ICs2NTIsMTQgQEAgcG1kX210cl9wb2xpY2VyX2FjdGlvbnNfdXBkYXRlKHN0 cnVjdA0KPiA+IHJ0ZV9ldGhfZGV2ICpkZXYsDQo+ID4gICAgICAgICAgICAgICAgICAgICAgIFJU RV9NVFJfRVJST1JfVFlQRV9NVFJfSUQsDQo+ID4gICAgICAgICAgICAgICAgICAgICAgIE5VTEws DQo+ID4gICAgICAgICAgICAgICAgICAgICAgICJNVFIgb2JqZWN0IGlkIG5vdCB2YWxpZCIpOw0K PiA+IC0NCj4gPiAtICAgICAvKiBWYWxpZCBwb2xpY2VyIGFjdGlvbnMgKi8NCj4gPiAtICAgICBp ZiAoYWN0aW9ucyA9PSBOVUxMKQ0KPiA+ICsgICAgIC8qIE1ldGVyIHBvbGljeSBtdXN0IGV4aXN0 ICovDQo+ID4gKyAgICAgbXBfbmV3ID0gc29mdG5pY19tdHJfbWV0ZXJfcG9saWN5X2ZpbmQocCwg bWV0ZXJfcG9saWN5X2lkKTsNCj4gPiArICAgICBpZiAobXBfbmV3ID09IE5VTEwpDQo+ID4gICAg ICAgICAgICAgICByZXR1cm4gLXJ0ZV9tdHJfZXJyb3Jfc2V0KGVycm9yLA0KPiA+ICAgICAgICAg ICAgICAgICAgICAgICBFSU5WQUwsDQo+ID4gLSAgICAgICAgICAgICAgICAgICAgIFJURV9NVFJf RVJST1JfVFlQRV9VTlNQRUNJRklFRCwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgUlRFX01U Ul9FUlJPUl9UWVBFX01FVEVSX1BPTElDWV9JRCwNCj4gPiAgICAgICAgICAgICAgICAgICAgICAg TlVMTCwNCj4gPiAtICAgICAgICAgICAgICAgICAgICAgIkludmFsaWQgYWN0aW9ucyIpOw0KPiA+ IC0NCj4gPiAtICAgICBmb3IgKGkgPSAwOyBpIDwgUlRFX0NPTE9SUzsgaSsrKSB7DQo+ID4gLSAg ICAgICAgICAgICBpZiAoYWN0aW9uX21hc2sgJiAoMSA8PCBpKSkgew0KPiA+IC0gICAgICAgICAg ICAgICAgICAgICBpZiAoYWN0aW9uc1tpXSAhPQ0KPiA+IE1UUl9QT0xJQ0VSX0FDVElPTl9DT0xP Ul9HUkVFTiAgJiYNCj4gPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb25zW2ld ICE9DQo+ID4gTVRSX1BPTElDRVJfQUNUSU9OX0NPTE9SX1lFTExPVyAmJg0KPiA+IC0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbnNbaV0gIT0NCj4gPiBNVFJfUE9MSUNFUl9BQ1RJ T05fQ09MT1JfUkVEICYmDQo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9u c1tpXSAhPSBNVFJfUE9MSUNFUl9BQ1RJT05fRFJPUCkgew0KPiA+IC0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHJldHVybiAtcnRlX210cl9lcnJvcl9zZXQoZXJyb3IsDQo+ID4gLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFSU5WQUwsDQo+ID4gLQ0KPiA+ICAgICAg IFJURV9NVFJfRVJST1JfVFlQRV9VTlNQRUNJRklFRCwNCj4gPiAtICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIE5VTEwsDQo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAiIEludmFsaWQgYWN0aW9uIHZhbHVlIik7DQo+ID4gLSAgICAgICAgICAgICAg ICAgICAgIH0NCj4gPiAtICAgICAgICAgICAgIH0NCj4gPiAtICAgICB9DQo+ID4gKyAgICAgICAg ICAgICAgICAgICAgICJNZXRlciBwb2xpY3kgaWQgaW52YWxpZCIpOw0KPiA+DQo+ID4gICAgICAg LyogTVRSIG9iamVjdCBvd25lciB2YWxpZD8gKi8NCj4gPiAgICAgICBpZiAobS0+Zmxvdykgew0K PiA+IEBAIC01NjEsOSArNjcxLDcgQEAgcG1kX210cl9wb2xpY2VyX2FjdGlvbnNfdXBkYXRlKHN0 cnVjdA0KPiA+IHJ0ZV9ldGhfZGV2ICpkZXYsDQo+ID4NCj4gPiAgICAgICAgICAgICAgIC8qIFNl dCBhY3Rpb24gKi8NCj4gPiAgICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBSVEVfQ09MT1JT OyBpKyspDQo+ID4gLSAgICAgICAgICAgICAgICAgICAgIGlmIChhY3Rpb25fbWFzayAmICgxIDw8 IGkpKQ0KPiA+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbi5tdHIubXRyWzBd LnBvbGljZXJbaV0gPQ0KPiA+IC0NCj4gPiAgICAgICBzb2Z0bmljX3RhYmxlX2FjdGlvbl9wb2xp Y2VyKGFjdGlvbnNbaV0pOw0KPiA+ICsgICAgICAgICAgICAgICAgICAgICBhY3Rpb24ubXRyLm10 clswXS5wb2xpY2VyW2ldID0gbXBfbmV3LT5wb2xpY2VyW2ldOw0KPiA+DQo+ID4gICAgICAgICAg ICAgICAvKiBSZS1hZGQgdGhlIHJ1bGUgKi8NCj4gPiAgICAgICAgICAgICAgIHN0YXR1cyA9IHNv ZnRuaWNfcGlwZWxpbmVfdGFibGVfcnVsZV9hZGQocCwNCj4gPiBAQCAtNTg3LDEwICs2OTUsMjAg QEAgcG1kX210cl9wb2xpY2VyX2FjdGlvbnNfdXBkYXRlKHN0cnVjdA0KPiA+IHJ0ZV9ldGhfZGV2 ICpkZXYsDQo+ID4gICAgICAgICAgICAgICAgICAgICAgIDEsIE5VTEwsIDEpOw0KPiA+ICAgICAg IH0NCj4gPg0KPiA+IC0gICAgIC8qIE1ldGVyOiBVcGRhdGUgcG9saWNlciBhY3Rpb25zICovDQo+ ID4gLSAgICAgZm9yIChpID0gMDsgaSA8IFJURV9DT0xPUlM7IGkrKykNCj4gPiAtICAgICAgICAg ICAgIGlmIChhY3Rpb25fbWFzayAmICgxIDw8IGkpKQ0KPiA+IC0gICAgICAgICAgICAgICAgICAg ICBtLT5wYXJhbXMuYWN0aW9uW2ldID0gYWN0aW9uc1tpXTsNCj4gPiArICAgICBtcF9vbGQgPSBz b2Z0bmljX210cl9tZXRlcl9wb2xpY3lfZmluZChwLCBtLQ0KPiA+ID5wYXJhbXMubWV0ZXJfcG9s aWN5X2lkKTsNCj4gPiArICAgICBpZiAobXBfb2xkID09IE5VTEwpDQo+ID4gKyAgICAgICAgICAg ICByZXR1cm4gLXJ0ZV9tdHJfZXJyb3Jfc2V0KGVycm9yLA0KPiA+ICsgICAgICAgICAgICAgICAg ICAgICBFSU5WQUwsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgIFJURV9NVFJfRVJST1JfVFlQ RV9NRVRFUl9QT0xJQ1lfSUQsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgIE5VTEwsDQo+ID4g KyAgICAgICAgICAgICAgICAgICAgICJPbGQgbWV0ZXIgcG9saWN5IGlkIGludmFsaWQiKTsNCj4g PiArDQo+ID4gKyAgICAgLyogTWV0ZXI6IFNldCBtZXRlciBwcm9maWxlICovDQo+ID4gKyAgICAg bS0+cGFyYW1zLm1ldGVyX3BvbGljeV9pZCA9IG1ldGVyX3BvbGljeV9pZDsNCj4gPiArDQo+ID4g KyAgICAgLyogVXBkYXRlIGRlcGVuZGVuY2llcyovDQo+ID4gKyAgICAgbXBfb2xkLT5uX3VzZXJz LS07DQo+ID4gKyAgICAgbXBfbmV3LT5uX3VzZXJzKys7DQo+ID4NCj4gPiAgICAgICByZXR1cm4g MDsNCj4gPiAgfQ0KPiA+IEBAIC02MDcsMjggKzcyNSw0MCBAQCBwbWRfbXRyX3BvbGljZXJfYWN0 aW9uc191cGRhdGUoc3RydWN0DQo+ID4gcnRlX2V0aF9kZXYgKmRldiwNCj4gPg0KPiA+ICAvKiBN VFIgb2JqZWN0IHN0YXRzIHJlYWQgKi8NCj4gPiAgc3RhdGljIHZvaWQNCj4gPiAtbXRyX3N0YXRz X2NvbnZlcnQoc3RydWN0IHNvZnRuaWNfbXRyICptLA0KPiA+ICttdHJfc3RhdHNfY29udmVydChz dHJ1Y3QgcG1kX2ludGVybmFscyAqcCwNCj4gPiArICAgICBzdHJ1Y3Qgc29mdG5pY19tdHIgKm0s DQo+ID4gICAgICAgc3RydWN0IHJ0ZV90YWJsZV9hY3Rpb25fbXRyX2NvdW50ZXJzX3RjICppbiwN Cj4gPiAgICAgICBzdHJ1Y3QgcnRlX210cl9zdGF0cyAqb3V0LA0KPiA+ICAgICAgIHVpbnQ2NF90 ICpvdXRfbWFzaykNCj4gPiAgew0KPiA+ICsgICAgIHN0cnVjdCBzb2Z0bmljX210cl9tZXRlcl9w b2xpY3kgKm1wOw0KPiA+ICsNCj4gPiAgICAgICBtZW1zZXQoJm91dCwgMCwgc2l6ZW9mKG91dCkp Ow0KPiA+ICAgICAgICpvdXRfbWFzayA9IDA7DQo+ID4NCj4gPiArICAgICAvKiBNZXRlciBwb2xp Y3kgbXVzdCBleGlzdCAqLw0KPiA+ICsgICAgIG1wID0gc29mdG5pY19tdHJfbWV0ZXJfcG9saWN5 X2ZpbmQocCwgbS0NCj4gPiA+cGFyYW1zLm1ldGVyX3BvbGljeV9pZCk7DQo+ID4gKyAgICAgaWYg KG1wID09IE5VTEwpDQo+ID4gKyAgICAgICAgICAgICByZXR1cm47DQo+ID4gKw0KPiA+ICAgICAg IGlmIChpbi0+bl9wYWNrZXRzX3ZhbGlkKSB7DQo+ID4gICAgICAgICAgICAgICB1aW50MzJfdCBp Ow0KPiA+DQo+ID4gICAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgUlRFX0NPTE9SUzsgaSsr KSB7DQo+ID4gLSAgICAgICAgICAgICAgICAgICAgIGlmIChtLT5wYXJhbXMuYWN0aW9uW2ldID09 DQo+ID4gTVRSX1BPTElDRVJfQUNUSU9OX0NPTE9SX0dSRUVOKQ0KPiA+ICsgICAgICAgICAgICAg ICAgICAgICBpZiAobXAtPnBvbGljZXJbaV0gPT0NCj4gPiArDQo+ID4gICAgICAgUlRFX1RBQkxF X0FDVElPTl9QT0xJQ0VSX0NPTE9SX0dSRUVOKQ0KPiA+ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIG91dC0+bl9wa3RzW1JURV9DT0xPUl9HUkVFTl0gKz0gaW4tDQo+ID4gPm5fcGFja2V0 c1tpXTsNCj4gPg0KPiA+IC0gICAgICAgICAgICAgICAgICAgICBpZiAobS0+cGFyYW1zLmFjdGlv bltpXSA9PQ0KPiA+IE1UUl9QT0xJQ0VSX0FDVElPTl9DT0xPUl9ZRUxMT1cpDQo+ID4gKyAgICAg ICAgICAgICAgICAgICAgIGlmIChtcC0+cG9saWNlcltpXSA9PQ0KPiA+ICsNCj4gPiAgICAgICBS VEVfVEFCTEVfQUNUSU9OX1BPTElDRVJfQ09MT1JfWUVMTE9XKQ0KPiA+ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIG91dC0+bl9wa3RzW1JURV9DT0xPUl9ZRUxMT1ddICs9IGluLQ0KPiA+ ID5uX3BhY2tldHNbaV07DQo+ID4NCj4gPiAtICAgICAgICAgICAgICAgICAgICAgaWYgKG0tPnBh cmFtcy5hY3Rpb25baV0gPT0NCj4gPiBNVFJfUE9MSUNFUl9BQ1RJT05fQ09MT1JfUkVEKQ0KPiA+ ICsgICAgICAgICAgICAgICAgICAgICBpZiAobXAtPnBvbGljZXJbaV0gPT0NCj4gPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBSVEVfVEFCTEVfQUNUSU9OX1BPTElDRVJfQ09MT1JfUkVE KQ0KPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dC0+bl9wa3RzW1JURV9DT0xP Ul9SRURdICs9IGluLQ0KPiA+ID5uX3BhY2tldHNbaV07DQo+ID4NCj4gPiAtICAgICAgICAgICAg ICAgICAgICAgaWYgKG0tPnBhcmFtcy5hY3Rpb25baV0gPT0NCj4gPiBNVFJfUE9MSUNFUl9BQ1RJ T05fRFJPUCkNCj4gPiArICAgICAgICAgICAgICAgICAgICAgaWYgKG1wLT5wb2xpY2VyW2ldID09 DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUlRFX1RBQkxFX0FDVElPTl9QT0xJ Q0VSX0RST1ApDQo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0LT5uX3BrdHNf ZHJvcHBlZCArPSBpbi0+bl9wYWNrZXRzW2ldOw0KPiA+ICAgICAgICAgICAgICAgfQ0KPiA+DQo+ ID4gQEAgLTYzOSwxNiArNzY5LDIwIEBAIG10cl9zdGF0c19jb252ZXJ0KHN0cnVjdCBzb2Z0bmlj X210ciAqbSwNCj4gPiAgICAgICAgICAgICAgIHVpbnQzMl90IGk7DQo+ID4NCj4gPiAgICAgICAg ICAgICAgIGZvciAoaSA9IDA7IGkgPCBSVEVfQ09MT1JTOyBpKyspIHsNCj4gPiAtICAgICAgICAg ICAgICAgICAgICAgaWYgKG0tPnBhcmFtcy5hY3Rpb25baV0gPT0NCj4gPiBNVFJfUE9MSUNFUl9B Q1RJT05fQ09MT1JfR1JFRU4pDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgIGlmIChtcC0+cG9s aWNlcltpXSA9PQ0KPiA+ICsNCj4gPiAgICAgICBSVEVfVEFCTEVfQUNUSU9OX1BPTElDRVJfQ09M T1JfR1JFRU4pDQo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0LT5uX2J5dGVz W1JURV9DT0xPUl9HUkVFTl0gKz0gaW4tDQo+ID4gPm5fYnl0ZXNbaV07DQo+ID4NCj4gPiAtICAg ICAgICAgICAgICAgICAgICAgaWYgKG0tPnBhcmFtcy5hY3Rpb25baV0gPT0NCj4gPiBNVFJfUE9M SUNFUl9BQ1RJT05fQ09MT1JfWUVMTE9XKQ0KPiA+ICsgICAgICAgICAgICAgICAgICAgICBpZiAo bXAtPnBvbGljZXJbaV0gPT0NCj4gPiArDQo+ID4gICAgICAgUlRFX1RBQkxFX0FDVElPTl9QT0xJ Q0VSX0NPTE9SX1lFTExPVykNCj4gPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQt Pm5fYnl0ZXNbUlRFX0NPTE9SX1lFTExPV10gKz0gaW4tDQo+ID4gPm5fYnl0ZXNbaV07DQo+ID4N Cj4gPiAtICAgICAgICAgICAgICAgICAgICAgaWYgKG0tPnBhcmFtcy5hY3Rpb25baV0gPT0NCj4g PiBNVFJfUE9MSUNFUl9BQ1RJT05fQ09MT1JfUkVEKQ0KPiA+ICsgICAgICAgICAgICAgICAgICAg ICBpZiAobXAtPnBvbGljZXJbaV0gPT0NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBSVEVfVEFCTEVfQUNUSU9OX1BPTElDRVJfQ09MT1JfUkVEKQ0KPiA+ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIG91dC0+bl9ieXRlc1tSVEVfQ09MT1JfUkVEXSArPSBpbi0NCj4gPiA+ bl9ieXRlc1tpXTsNCj4gPg0KPiA+IC0gICAgICAgICAgICAgICAgICAgICBpZiAobS0+cGFyYW1z LmFjdGlvbltpXSA9PQ0KPiA+IE1UUl9QT0xJQ0VSX0FDVElPTl9EUk9QKQ0KPiA+ICsgICAgICAg ICAgICAgICAgICAgICBpZiAobXAtPnBvbGljZXJbaV0gPT0NCj4gPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBSVEVfVEFCTEVfQUNUSU9OX1BPTElDRVJfRFJPUCkNCj4gPiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBvdXQtPm5fYnl0ZXNfZHJvcHBlZCArPSBpbi0+bl9ieXRl c1tpXTsNCj4gPiAgICAgICAgICAgICAgIH0NCj4gPg0KPiA+IEBAIC03MTQsNyArODQ4LDggQEAg cG1kX210cl9zdGF0c19yZWFkKHN0cnVjdCBydGVfZXRoX2RldiAqZGV2LA0KPiA+ICAgICAgICAg ICAgICAgc3RydWN0IHJ0ZV9tdHJfc3RhdHMgczsNCj4gPiAgICAgICAgICAgICAgIHVpbnQ2NF90 IHNfbWFzayA9IDA7DQo+ID4NCj4gPiAtICAgICAgICAgICAgIG10cl9zdGF0c19jb252ZXJ0KG0s DQo+ID4gKyAgICAgICAgICAgICBtdHJfc3RhdHNfY29udmVydChwLA0KPiA+ICsgICAgICAgICAg ICAgICAgICAgICBtLA0KPiA+ICAgICAgICAgICAgICAgICAgICAgICAmY291bnRlcnMuc3RhdHNb MF0sDQo+ID4gICAgICAgICAgICAgICAgICAgICAgICZzLA0KPiA+ICAgICAgICAgICAgICAgICAg ICAgICAmc19tYXNrKTsNCj4gPiBAQCAtNzM1LDYgKzg3MCw5IEBAIGNvbnN0IHN0cnVjdCBydGVf bXRyX29wcyBwbWRfbXRyX29wcyA9IHsNCj4gPiAgICAgICAubWV0ZXJfcHJvZmlsZV9hZGQgPSBw bWRfbXRyX21ldGVyX3Byb2ZpbGVfYWRkLA0KPiA+ICAgICAgIC5tZXRlcl9wcm9maWxlX2RlbGV0 ZSA9IHBtZF9tdHJfbWV0ZXJfcHJvZmlsZV9kZWxldGUsDQo+ID4NCj4gPiArICAgICAubWV0ZXJf cG9saWN5X2NyZWF0ZSA9IHBtZF9tdHJfbWV0ZXJfcG9saWN5X2NyZWF0ZSwNCj4gPiArICAgICAu bWV0ZXJfcG9saWN5X2RlbGV0ZSA9IHBtZF9tdHJfbWV0ZXJfcG9saWN5X2RlbGV0ZSwNCj4gPiAr DQo+ID4gICAgICAgLmNyZWF0ZSA9IHBtZF9tdHJfY3JlYXRlLA0KPiA+ICAgICAgIC5kZXN0cm95 ID0gcG1kX210cl9kZXN0cm95LA0KPiA+ICAgICAgIC5tZXRlcl9lbmFibGUgPSBOVUxMLA0KPiA+ IEBAIC03NDIsNyArODgwLDcgQEAgY29uc3Qgc3RydWN0IHJ0ZV9tdHJfb3BzIHBtZF9tdHJfb3Bz ID0gew0KPiA+DQo+ID4gICAgICAgLm1ldGVyX3Byb2ZpbGVfdXBkYXRlID0gcG1kX210cl9tZXRl cl9wcm9maWxlX3VwZGF0ZSwNCj4gPiAgICAgICAubWV0ZXJfZHNjcF90YWJsZV91cGRhdGUgPSBw bWRfbXRyX21ldGVyX2RzY3BfdGFibGVfdXBkYXRlLA0KPiA+IC0gICAgIC5wb2xpY2VyX2FjdGlv bnNfdXBkYXRlID0gcG1kX210cl9wb2xpY2VyX2FjdGlvbnNfdXBkYXRlLA0KPiA+ICsgICAgIC5t ZXRlcl9wb2xpY3lfdXBkYXRlID0gcG1kX210cl9tZXRlcl9wb2xpY3lfdXBkYXRlLA0KPiA+ICAg ICAgIC5zdGF0c191cGRhdGUgPSBOVUxMLA0KPiA+DQo+ID4gICAgICAgLnN0YXRzX3JlYWQgPSBw bWRfbXRyX3N0YXRzX3JlYWQsDQo+ID4gZGlmZiAtLWdpdCBhL2xpYi9saWJydGVfZXRoZGV2L3J0 ZV9mbG93LmggYi9saWIvbGlicnRlX2V0aGRldi9ydGVfZmxvdy5oDQo+ID4gaW5kZXggNmNjNTcx MzZhYy4uZDRmZDM2ZGQwZSAxMDA2NDQNCj4gPiAtLS0gYS9saWIvbGlicnRlX2V0aGRldi9ydGVf Zmxvdy5oDQo+ID4gKysrIGIvbGliL2xpYnJ0ZV9ldGhkZXYvcnRlX2Zsb3cuaA0KPiA+IEBAIC0z Miw2ICszMiw3IEBADQo+ID4gICNpbmNsdWRlIDxydGVfZWNwcmkuaD4NCj4gPiAgI2luY2x1ZGUg PHJ0ZV9tYnVmLmg+DQo+ID4gICNpbmNsdWRlIDxydGVfbWJ1Zl9keW4uaD4NCj4gPiArI2luY2x1 ZGUgPHJ0ZV9tZXRlci5oPg0KPiA+DQo+ID4gICNpZmRlZiBfX2NwbHVzcGx1cw0KPiA+ICBleHRl cm4gIkMiIHsNCj4gPiBAQCAtMjI2Nyw2ICsyMjY4LDE0IEBAIGVudW0gcnRlX2Zsb3dfYWN0aW9u X3R5cGUgew0KPiA+ICAgICAgICAqIFNlZSBzdHJ1Y3QgcnRlX2Zsb3dfYWN0aW9uX21vZGlmeV9m aWVsZC4NCj4gPiAgICAgICAgKi8NCj4gPiAgICAgICBSVEVfRkxPV19BQ1RJT05fVFlQRV9NT0RJ RllfRklFTEQsDQo+ID4gKw0KPiA+ICsgICAgIC8qKg0KPiA+ICsgICAgICAqIENvbG9yIHRoZSBw YWNrZXQgdG8gcmVmbGVjdCB0aGUgbWV0ZXIgY29sb3IgcmVzdWx0Lg0KPiA+ICsgICAgICAqIFNl dCB0aGUgbWV0ZXIgY29sb3IgaW4gdGhlIG1idWYgdG8gdGhlIHNlbGVjdGVkIGNvbG9yLg0KPiA+ ICsgICAgICAqDQo+ID4gKyAgICAgICogU2VlIHN0cnVjdCBydGVfZmxvd19hY3Rpb25fbWV0ZXJf Y29sb3IuDQo+ID4gKyAgICAgICovDQo+ID4gKyAgICAgUlRFX0ZMT1dfQUNUSU9OX1RZUEVfTUVU RVJfQ09MT1IsDQo+ID4gIH07DQo+ID4NCj4gPiAgLyoqDQo+ID4gQEAgLTI4NTksNiArMjg2OCwx OSBAQCBzdHJ1Y3QgcnRlX2Zsb3dfYWN0aW9uX3NldF9kc2NwIHsNCj4gPiAgICovDQo+ID4gIHN0 cnVjdCBydGVfZmxvd19zaGFyZWRfYWN0aW9uOw0KPiA+DQo+ID4gKy8qKg0KPiA+ICsgKiBAd2Fy bmluZw0KPiA+ICsgKiBAYiBFWFBFUklNRU5UQUw6IHRoaXMgc3RydWN0dXJlIG1heSBjaGFuZ2Ug d2l0aG91dCBwcmlvciBub3RpY2UNCj4gPiArICoNCj4gPiArICogUlRFX0ZMT1dfQUNUSU9OX1RZ UEVfTUVURVJfQ09MT1INCj4gPiArICoNCj4gPiArICogVGhlIG1ldGVyIGNvbG9yIHNob3VsZCBi ZSBzZXQgaW4gdGhlIHBhY2tldCBtZXRhLWRhdGENCj4gPiArICogKGkuZS4gc3RydWN0IHJ0ZV9t YnVmOjpzY2hlZDo6Y29sb3IpLg0KPiA+ICsgKi8NCj4gPiArc3RydWN0IHJ0ZV9mbG93X2FjdGlv bl9tZXRlcl9jb2xvciB7DQo+ID4gKyAgICAgZW51bSBydGVfY29sb3IgY29sb3I7IC8qKjwgUGFj a2V0IGNvbG9yLiAqLw0KPiA+ICt9Ow0KPiA+ICsNCj4gPiAgLyoqDQo+ID4gICAqIEZpZWxkIElE cyBmb3IgTU9ESUZZX0ZJRUxEIGFjdGlvbi4NCj4gPiAgICovDQo+ID4gZGlmZiAtLWdpdCBhL2xp Yi9saWJydGVfZXRoZGV2L3J0ZV9tdHIuYyBiL2xpYi9saWJydGVfZXRoZGV2L3J0ZV9tdHIuYw0K PiA+IGluZGV4IDMwNzNhYzAzZjIuLjliMDNjZjFkNTAgMTAwNjQ0DQo+ID4gLS0tIGEvbGliL2xp YnJ0ZV9ldGhkZXYvcnRlX210ci5jDQo+ID4gKysrIGIvbGliL2xpYnJ0ZV9ldGhkZXYvcnRlX210 ci5jDQo+ID4gQEAgLTkxLDYgKzkxLDQwIEBAIHJ0ZV9tdHJfbWV0ZXJfcHJvZmlsZV9kZWxldGUo dWludDE2X3QgcG9ydF9pZCwNCj4gPiAgICAgICAgICAgICAgIG1ldGVyX3Byb2ZpbGVfaWQsIGVy cm9yKTsNCj4gPiAgfQ0KPiA+DQo+ID4gKy8qIE1UUiBtZXRlciBwb2xpY3kgdmFsaWRhdGUgKi8N Cj4gPiAraW50DQo+ID4gK3J0ZV9tdHJfbWV0ZXJfcG9saWN5X3ZhbGlkYXRlKHVpbnQxNl90IHBv cnRfaWQsDQo+ID4gKyAgICAgc3RydWN0IHJ0ZV9tdHJfbWV0ZXJfcG9saWN5X3BhcmFtcyAqcG9s aWN5LA0KPiA+ICsgICAgIHN0cnVjdCBydGVfbXRyX2Vycm9yICplcnJvcikNCj4gPiArew0KPiA+ ICsgICAgIHN0cnVjdCBydGVfZXRoX2RldiAqZGV2ID0gJnJ0ZV9ldGhfZGV2aWNlc1twb3J0X2lk XTsNCj4gPiArICAgICByZXR1cm4gUlRFX01UUl9GVU5DKHBvcnRfaWQsIG1ldGVyX3BvbGljeV92 YWxpZGF0ZSkoZGV2LA0KPiA+ICsgICAgICAgICAgICAgcG9saWN5LCBlcnJvcik7DQo+ID4gK30N Cj4gPiArDQo+ID4gKy8qIE1UUiBtZXRlciBwb2xpY3kgY3JlYXRlICovDQo+ID4gK2ludA0KPiA+ ICtydGVfbXRyX21ldGVyX3BvbGljeV9jcmVhdGUodWludDE2X3QgcG9ydF9pZCwNCj4gPiArICAg ICB1aW50MzJfdCBwb2xpY3lfaWQsDQo+ID4gKyAgICAgc3RydWN0IHJ0ZV9tdHJfbWV0ZXJfcG9s aWN5X3BhcmFtcyAqcG9saWN5LA0KPiA+ICsgICAgIHN0cnVjdCBydGVfbXRyX2Vycm9yICplcnJv cikNCj4gPiArew0KPiA+ICsgICAgIHN0cnVjdCBydGVfZXRoX2RldiAqZGV2ID0gJnJ0ZV9ldGhf ZGV2aWNlc1twb3J0X2lkXTsNCj4gPiArICAgICByZXR1cm4gUlRFX01UUl9GVU5DKHBvcnRfaWQs IG1ldGVyX3BvbGljeV9jcmVhdGUpKGRldiwNCj4gPiArICAgICAgICAgICAgIHBvbGljeV9pZCwg cG9saWN5LCBlcnJvcik7DQo+ID4gK30NCj4gPiArDQo+ID4gKy8qKiBNVFIgbWV0ZXIgcG9saWN5 IGRlbGV0ZSAqLw0KPiA+ICtpbnQNCj4gPiArcnRlX210cl9tZXRlcl9wb2xpY3lfZGVsZXRlKHVp bnQxNl90IHBvcnRfaWQsDQo+ID4gKyAgICAgdWludDMyX3QgcG9saWN5X2lkLA0KPiA+ICsgICAg IHN0cnVjdCBydGVfbXRyX2Vycm9yICplcnJvcikNCj4gPiArew0KPiA+ICsgICAgIHN0cnVjdCBy dGVfZXRoX2RldiAqZGV2ID0gJnJ0ZV9ldGhfZGV2aWNlc1twb3J0X2lkXTsNCj4gPiArICAgICBy ZXR1cm4gUlRFX01UUl9GVU5DKHBvcnRfaWQsIG1ldGVyX3BvbGljeV9kZWxldGUpKGRldiwNCj4g PiArICAgICAgICAgICAgIHBvbGljeV9pZCwgZXJyb3IpOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICAv KiogTVRSIG9iamVjdCBjcmVhdGUgKi8NCj4gPiAgaW50DQo+ID4gIHJ0ZV9tdHJfY3JlYXRlKHVp bnQxNl90IHBvcnRfaWQsDQo+ID4gQEAgLTE0OSwyOSArMTgzLDI4IEBAIHJ0ZV9tdHJfbWV0ZXJf cHJvZmlsZV91cGRhdGUodWludDE2X3QgcG9ydF9pZCwNCj4gPiAgICAgICAgICAgICAgIG10cl9p ZCwgbWV0ZXJfcHJvZmlsZV9pZCwgZXJyb3IpOw0KPiA+ICB9DQo+ID4NCj4gPiAtLyoqIE1UUiBv YmplY3QgbWV0ZXIgRFNDUCB0YWJsZSB1cGRhdGUgKi8NCj4gPiArLyoqIE1UUiBvYmplY3QgbWV0 ZXIgcG9saWN5IHVwZGF0ZSAqLw0KPiA+ICBpbnQNCj4gPiAtcnRlX210cl9tZXRlcl9kc2NwX3Rh YmxlX3VwZGF0ZSh1aW50MTZfdCBwb3J0X2lkLA0KPiA+ICtydGVfbXRyX21ldGVyX3BvbGljeV91 cGRhdGUodWludDE2X3QgcG9ydF9pZCwNCj4gPiAgICAgICB1aW50MzJfdCBtdHJfaWQsDQo+ID4g LSAgICAgZW51bSBydGVfY29sb3IgKmRzY3BfdGFibGUsDQo+ID4gKyAgICAgdWludDMyX3QgbWV0 ZXJfcG9saWN5X2lkLA0KPiA+ICAgICAgIHN0cnVjdCBydGVfbXRyX2Vycm9yICplcnJvcikNCj4g PiAgew0KPiA+ICAgICAgIHN0cnVjdCBydGVfZXRoX2RldiAqZGV2ID0gJnJ0ZV9ldGhfZGV2aWNl c1twb3J0X2lkXTsNCj4gPiAtICAgICByZXR1cm4gUlRFX01UUl9GVU5DKHBvcnRfaWQsIG1ldGVy X2RzY3BfdGFibGVfdXBkYXRlKShkZXYsDQo+ID4gLSAgICAgICAgICAgICBtdHJfaWQsIGRzY3Bf dGFibGUsIGVycm9yKTsNCj4gPiArICAgICByZXR1cm4gUlRFX01UUl9GVU5DKHBvcnRfaWQsIG1l dGVyX3BvbGljeV91cGRhdGUpKGRldiwNCj4gPiArICAgICAgICAgICAgIG10cl9pZCwgbWV0ZXJf cG9saWN5X2lkLCBlcnJvcik7DQo+ID4gIH0NCj4gPg0KPiA+IC0vKiogTVRSIG9iamVjdCBwb2xp Y2VyIGFjdGlvbiB1cGRhdGUgKi8NCj4gPiArLyoqIE1UUiBvYmplY3QgbWV0ZXIgRFNDUCB0YWJs ZSB1cGRhdGUgKi8NCj4gPiAgaW50DQo+ID4gLXJ0ZV9tdHJfcG9saWNlcl9hY3Rpb25zX3VwZGF0 ZSh1aW50MTZfdCBwb3J0X2lkLA0KPiA+ICtydGVfbXRyX21ldGVyX2RzY3BfdGFibGVfdXBkYXRl KHVpbnQxNl90IHBvcnRfaWQsDQo+ID4gICAgICAgdWludDMyX3QgbXRyX2lkLA0KPiA+IC0gICAg IHVpbnQzMl90IGFjdGlvbl9tYXNrLA0KPiA+IC0gICAgIGVudW0gcnRlX210cl9wb2xpY2VyX2Fj dGlvbiAqYWN0aW9ucywNCj4gPiArICAgICBlbnVtIHJ0ZV9jb2xvciAqZHNjcF90YWJsZSwNCj4g PiAgICAgICBzdHJ1Y3QgcnRlX210cl9lcnJvciAqZXJyb3IpDQo+ID4gIHsNCj4gPiAgICAgICBz dHJ1Y3QgcnRlX2V0aF9kZXYgKmRldiA9ICZydGVfZXRoX2RldmljZXNbcG9ydF9pZF07DQo+ID4g LSAgICAgcmV0dXJuIFJURV9NVFJfRlVOQyhwb3J0X2lkLCBwb2xpY2VyX2FjdGlvbnNfdXBkYXRl KShkZXYsDQo+ID4gLSAgICAgICAgICAgICBtdHJfaWQsIGFjdGlvbl9tYXNrLCBhY3Rpb25zLCBl cnJvcik7DQo+ID4gKyAgICAgcmV0dXJuIFJURV9NVFJfRlVOQyhwb3J0X2lkLCBtZXRlcl9kc2Nw X3RhYmxlX3VwZGF0ZSkoZGV2LA0KPiA+ICsgICAgICAgICAgICAgbXRyX2lkLCBkc2NwX3RhYmxl LCBlcnJvcik7DQo+ID4gIH0NCj4gPg0KPiA+ICAvKiogTVRSIG9iamVjdCBlbmFibGVkIHN0YXRz IHVwZGF0ZSAqLw0KPiA+IGRpZmYgLS1naXQgYS9saWIvbGlicnRlX2V0aGRldi9ydGVfbXRyLmgg Yi9saWIvbGlicnRlX2V0aGRldi9ydGVfbXRyLmgNCj4gPiBpbmRleCA5MTZhMDljNWMzLi45ZjZm NWUxYTQ1IDEwMDY0NA0KPiA+IC0tLSBhL2xpYi9saWJydGVfZXRoZGV2L3J0ZV9tdHIuaA0KPiA+ ICsrKyBiL2xpYi9saWJydGVfZXRoZGV2L3J0ZV9tdHIuaA0KPiA+IEBAIC00OSw2ICs0OSw3IEBA DQo+ID4gICNpbmNsdWRlIDxydGVfY29tcGF0Lmg+DQo+ID4gICNpbmNsdWRlIDxydGVfY29tbW9u Lmg+DQo+ID4gICNpbmNsdWRlIDxydGVfbWV0ZXIuaD4NCj4gPiArI2luY2x1ZGUgPHJ0ZV9mbG93 Lmg+DQo+ID4NCj4gPiAgI2lmZGVmIF9fY3BsdXNwbHVzDQo+ID4gIGV4dGVybiAiQyIgew0KPiA+ IEBAIC0xNzUsMjAgKzE3NiwxNiBAQCBzdHJ1Y3QgcnRlX210cl9tZXRlcl9wcm9maWxlIHsNCj4g PiAgfTsNCj4gPg0KPiA+ICAvKioNCj4gPiAtICogUG9saWNlciBhY3Rpb25zDQo+ID4gKyAqIE1l dGVyIHBvbGljeQ0KPiA+ICAgKi8NCj4gPiAtZW51bSBydGVfbXRyX3BvbGljZXJfYWN0aW9uIHsN Cj4gPiAtICAgICAvKiogUmVjb2xvciB0aGUgcGFja2V0IGFzIGdyZWVuLiAqLw0KPiA+IC0gICAg IE1UUl9QT0xJQ0VSX0FDVElPTl9DT0xPUl9HUkVFTiA9IDAsDQo+ID4gLQ0KPiA+IC0gICAgIC8q KiBSZWNvbG9yIHRoZSBwYWNrZXQgYXMgeWVsbG93LiAqLw0KPiA+IC0gICAgIE1UUl9QT0xJQ0VS X0FDVElPTl9DT0xPUl9ZRUxMT1csDQo+ID4gLQ0KPiA+IC0gICAgIC8qKiBSZWNvbG9yIHRoZSBw YWNrZXQgYXMgcmVkLiAqLw0KPiA+IC0gICAgIE1UUl9QT0xJQ0VSX0FDVElPTl9DT0xPUl9SRUQs DQo+ID4gLQ0KPiA+IC0gICAgIC8qKiBEcm9wIHRoZSBwYWNrZXQuICovDQo+ID4gLSAgICAgTVRS X1BPTElDRVJfQUNUSU9OX0RST1AsDQo+ID4gK3N0cnVjdCBydGVfbXRyX21ldGVyX3BvbGljeV9w YXJhbXMgew0KPiA+ICsgICAgIC8qKg0KPiA+ICsgICAgICAqIFBvbGljeSBhY3Rpb24gbGlzdCBw ZXIgY29sb3IuDQo+ID4gKyAgICAgICogYWN0aW9uc1tpXSBwb3RlbnRpYWxseSByZXByZXNlbnRz IGEgY2hhaW4gb2YgcnRlX2Zsb3cgYWN0aW9ucw0KPiA+ICsgICAgICAqIHRlcm1pbmF0ZWQgYnkg dGhlIEVORCBhY3Rpb24sIGV4YWN0bHkgYXMgc3BlY2lmaWVkIGJ5IHRoZSBydGVfZmxvdw0KPiA+ ICsgICAgICAqIEFQSSBmb3IgdGhlIGZsb3cgZGVmaW5pdGlvbiwgYW5kIG5vdCBqdXN0IGEgc2lu Z2xlIGFjdGlvbi4NCj4gPiArICAgICAgKi8NCj4gPiArICAgICBjb25zdCBzdHJ1Y3QgcnRlX2Zs b3dfYWN0aW9uICphY3Rpb25zW1JURV9DT0xPUlNdOw0KPiA+ICB9Ow0KPiA+DQo+ID4gIC8qKg0K PiA+IEBAIC0yMzIsMTMgKzIyOSwxMyBAQCBzdHJ1Y3QgcnRlX210cl9wYXJhbXMgew0KPiA+ICAg ICAgICAqLw0KPiA+ICAgICAgIGludCBtZXRlcl9lbmFibGU7DQo+ID4NCj4gPiAtICAgICAvKiog UG9saWNlciBhY3Rpb25zIChwZXIgbWV0ZXIgb3V0cHV0IGNvbG9yKS4gKi8NCj4gPiAtICAgICBl bnVtIHJ0ZV9tdHJfcG9saWNlcl9hY3Rpb24gYWN0aW9uW1JURV9DT0xPUlNdOw0KPiA+IC0NCj4g PiAgICAgICAvKiogU2V0IG9mIHN0YXRzIGNvdW50ZXJzIHRvIGJlIGVuYWJsZWQuDQo+ID4gICAg ICAgICogQHNlZSBlbnVtIHJ0ZV9tdHJfc3RhdHNfdHlwZQ0KPiA+ICAgICAgICAqLw0KPiA+ICAg ICAgIHVpbnQ2NF90IHN0YXRzX21hc2s7DQo+ID4gKw0KPiA+ICsgICAgIC8qKiBNZXRlciBwb2xp Y3kgSUQuICovDQo+ID4gKyAgICAgdWludDMyX3QgbWV0ZXJfcG9saWN5X2lkOw0KPiA+ICB9Ow0K PiA+DQo+ID4gIC8qKg0KPiA+IEBAIC0zMjQsNiArMzIxLDEzIEBAIHN0cnVjdCBydGVfbXRyX2Nh cGFiaWxpdGllcyB7DQo+ID4gICAgICAgICovDQo+ID4gICAgICAgdWludDY0X3QgbWV0ZXJfcmF0 ZV9tYXg7DQo+ID4NCj4gPiArICAgICAvKioNCj4gPiArICAgICAgKiBNYXhpbXVtIG51bWJlciBv ZiBwb2xpY3kgb2JqZWN0cyB0aGF0IGNhbiBoYXZlLg0KPiA+ICsgICAgICAqIFRoZSB2YWx1ZSBv ZiAwIGlzIGludmFsaWQuIFBvbGljeSBtdXN0IGJlIHN1cHBvcnRlZCBmb3IgbWV0ZXIuDQo+ID4g KyAgICAgICogVGhlIG1heGltdW0gdmFsdWUgaXMgKm5fbWF4Ki4NCj4gPiArICAgICAgKi8NCj4g PiArICAgICB1aW50NjRfdCBtZXRlcl9wb2xpY3lfbl9tYXg7DQo+ID4gKw0KPiA+ICAgICAgIC8q Kg0KPiA+ICAgICAgICAqIFdoZW4gbm9uLXplcm8sIGl0IGluZGljYXRlcyB0aGF0IGNvbG9yIGF3 YXJlIG1vZGUgaXMgc3VwcG9ydGVkDQo+ID4gZm9yDQo+ID4gICAgICAgICogdGhlIHNyVENNIFJG QyAyNjk3IG1ldGVyaW5nIGFsZ29yaXRobS4NCj4gPiBAQCAtMzQyLDE4ICszNDYsNiBAQCBzdHJ1 Y3QgcnRlX210cl9jYXBhYmlsaXRpZXMgew0KPiA+ICAgICAgICAqLw0KPiA+ICAgICAgIGludCBj b2xvcl9hd2FyZV90cnRjbV9yZmM0MTE1X3N1cHBvcnRlZDsNCj4gPg0KPiA+IC0gICAgIC8qKiBX aGVuIG5vbi16ZXJvLCBpdCBpbmRpY2F0ZXMgdGhhdCB0aGUgcG9saWNlciBwYWNrZXQgcmVjb2xv cg0KPiA+IGFjdGlvbnMNCj4gPiAtICAgICAgKiBhcmUgc3VwcG9ydGVkLg0KPiA+IC0gICAgICAq IEBzZWUgZW51bSBydGVfbXRyX3BvbGljZXJfYWN0aW9uDQo+ID4gLSAgICAgICovDQo+ID4gLSAg ICAgaW50IHBvbGljZXJfYWN0aW9uX3JlY29sb3Jfc3VwcG9ydGVkOw0KPiA+IC0NCj4gPiAtICAg ICAvKiogV2hlbiBub24temVybywgaXQgaW5kaWNhdGVzIHRoYXQgdGhlIHBvbGljZXIgcGFja2V0 IGRyb3AgYWN0aW9uIGlzDQo+ID4gLSAgICAgICogc3VwcG9ydGVkLg0KPiA+IC0gICAgICAqIEBz ZWUgZW51bSBydGVfbXRyX3BvbGljZXJfYWN0aW9uDQo+ID4gLSAgICAgICovDQo+ID4gLSAgICAg aW50IHBvbGljZXJfYWN0aW9uX2Ryb3Bfc3VwcG9ydGVkOw0KPiA+IC0NCj4gPiAgICAgICAvKiog U2V0IG9mIHN1cHBvcnRlZCBzdGF0aXN0aWNzIGNvdW50ZXIgdHlwZXMuDQo+ID4gICAgICAgICog QHNlZSBlbnVtIHJ0ZV9tdHJfc3RhdHNfdHlwZQ0KPiA+ICAgICAgICAqLw0KPiA+IEBAIC0zNzks NiArMzcxLDggQEAgZW51bSBydGVfbXRyX2Vycm9yX3R5cGUgew0KPiA+ICAgICAgIFJURV9NVFJf RVJST1JfVFlQRV9TVEFUU19NQVNLLA0KPiA+ICAgICAgIFJURV9NVFJfRVJST1JfVFlQRV9TVEFU UywNCj4gPiAgICAgICBSVEVfTVRSX0VSUk9SX1RZUEVfU0hBUkVELA0KPiA+ICsgICAgIFJURV9N VFJfRVJST1JfVFlQRV9NRVRFUl9QT0xJQ1lfSUQsDQo+ID4gKyAgICAgUlRFX01UUl9FUlJPUl9U WVBFX01FVEVSX1BPTElDWSwNCj4gPiAgfTsNCj4gPg0KPiA+ICAvKioNCj4gPiBAQCAtNDYyLDYg KzQ1NiwxMzYgQEAgcnRlX210cl9tZXRlcl9wcm9maWxlX2RlbGV0ZSh1aW50MTZfdCBwb3J0X2lk LA0KPiA+ICAgICAgIHVpbnQzMl90IG1ldGVyX3Byb2ZpbGVfaWQsDQo+ID4gICAgICAgc3RydWN0 IHJ0ZV9tdHJfZXJyb3IgKmVycm9yKTsNCj4gPg0KPiA+ICsvKioNCj4gPiArICogQ2hlY2sgd2hl dGhlciBhIG1ldGVyIHBvbGljeSBjYW4gYmUgY3JlYXRlZCBvbiBhIGdpdmVuIHBvcnQuDQo+ID4g KyAqDQo+ID4gKyAqIFRoZSBtZXRlciBwb2xpY3kgaXMgdmFsaWRhdGVkIGZvciBjb3JyZWN0bmVz cyBhbmQNCj4gPiArICogd2hldGhlciBpdCBjb3VsZCBiZSBhY2NlcHRlZCBieSB0aGUgZGV2aWNl IGdpdmVuIHN1ZmZpY2llbnQgcmVzb3VyY2VzLg0KPiA+ICsgKiBUaGUgcG9saWN5IGlzIGNoZWNr ZWQgYWdhaW5zdCB0aGUgY3VycmVudCBjYXBhYmlsaXR5IGluZm9ybWF0aW9uDQo+ID4gKyAqIG1l dGVyX3BvbGljeV9uX21heCBjb25maWd1cmF0aW9uLg0KPiA+ICsgKiBUaGUgcG9saWN5IG1heSBh bHNvIG9wdGlvbmFsbHkgYmUgdmFsaWRhdGVkIGFnYWluc3QgZXhpc3RpbmcNCj4gPiArICogZGV2 aWNlIHBvbGljeSByZXNvdXJjZXMuDQo+ID4gKyAqIFRoaXMgZnVuY3Rpb24gaGFzIG5vIGVmZmVj dCBvbiB0aGUgdGFyZ2V0IGRldmljZS4NCj4gPiArICoNCj4gPiArICogQHBhcmFtW2luXSBwb3J0 X2lkDQo+ID4gKyAqICAgVGhlIHBvcnQgaWRlbnRpZmllciBvZiB0aGUgRXRoZXJuZXQgZGV2aWNl Lg0KPiA+ICsgKiBAcGFyYW1baW5dIHBvbGljeQ0KPiA+ICsgKiAgIEFzc29jaWF0ZWQgYWN0aW9u IGxpc3QgcGVyIGNvbG9yLg0KPiA+ICsgKiAgIGxpc3QgTlVMTCBpcyBsZWdhbCBhbmQgbWVhbnMg bm8gc3BlY2lhbCBhY3Rpb24uDQo+ID4gKyAqICAgKGxpc3QgdGVybWluYXRlZCBieSB0aGUgRU5E IGFjdGlvbikuDQo+ID4gKyAqIEBwYXJhbVtvdXRdIGVycm9yDQo+ID4gKyAqICAgRXJyb3IgZGV0 YWlscy4gRmlsbGVkIGluIG9ubHkgb24gZXJyb3IsIHdoZW4gbm90IE5VTEwuDQo+ID4gKyAqIEBy ZXR1cm4NCj4gPiArICogICAwIG9uIHN1Y2Nlc3MsIG5vbi16ZXJvIGVycm9yIGNvZGUgb3RoZXJ3 aXNlLg0KPiA+ICsgKi8NCj4gPiArX19ydGVfZXhwZXJpbWVudGFsDQo+ID4gK2ludA0KPiA+ICty dGVfbXRyX21ldGVyX3BvbGljeV92YWxpZGF0ZSh1aW50MTZfdCBwb3J0X2lkLA0KPiA+ICsgICAg IHN0cnVjdCBydGVfbXRyX21ldGVyX3BvbGljeV9wYXJhbXMgKnBvbGljeSwNCj4gPiArICAgICBz dHJ1Y3QgcnRlX210cl9lcnJvciAqZXJyb3IpOw0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAqIE1l dGVyIHBvbGljeSBhZGQNCj4gPiArICoNCj4gPiArICogQ3JlYXRlIGEgbmV3IG1ldGVyIHBvbGlj eS4gVGhlIG5ldyBwb2xpY3kNCj4gPiArICogaXMgdXNlZCB0byBjcmVhdGUgc2luZ2xlIG9yIG11 bHRpcGxlIE1UUiBvYmplY3RzLg0KPiA+ICsgKg0KPiANCj4gTWF5YmUgdHdlYWsgdGhlIGV4cGxh bmF0aW9uIGEgYml0OiBUaGUgc2FtZSBwb2xpY3kgY2FuIGJlIHVzZWQgdG8gY3JlYXRlDQo+IG11 bHRpcGxlIE1UUiBvYmplY3RzLg0KPiANClRoYW5rcywgd2lsbCBhZGQgaW4gVjUgcGF0Y2guDQoN Cj4gPiArICogVHdvIGNvbW1vbiBleGFtcGxlcyB0byBkZWZpbmUgbWV0ZXIgcG9saWN5IGFjdGlv biBsaXN0Og0KPiA+ICsgKiBFeGFtcGxlICMxOiBHUkVFTiAtIEdSRUVOLCBZRUxMT1cgLSBZRUxM T1csIFJFRCAtIFJFRA0KPiA+ICsgKiAgIHN0cnVjdCBydGVfbXRyX21ldGVyX3BvbGljeV9wYXJh bXMgcG9saWN5XzAgPQ0KPiA+ICsgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KHN0cnVjdA0KPiA+IHJ0ZV9tdHJfbWV0ZXJfcG9saWN5X3BhcmFtcykgew0KPiA+ICsgKiAgICAg ICAgICAgLmFjdGlvbnNbUlRFX0NPTE9SX0dSRUVOXSA9IChzdHJ1Y3QgcnRlX2Zsb3dfYWN0aW9u W10pIHsNCj4gPiArICogICAgICAgICAgICAgICAgICAgew0KPiA+ICsgKiAgICAgICAgICAgICAg ICAgICAgICAgICAgIC50eXBlID0NCj4gPiBSVEVfRkxPV19BQ1RJT05fVFlQRV9NRVRFUl9DT0xP UiwNCj4gPiArICogICAgICAgICAgICAgICAgICAgICAgICAgICAuY29uZiA9ICYoc3RydWN0DQo+ ID4gcnRlX2Zsb3dfYWN0aW9uX21ldGVyX2NvbG9yKSB7DQo+ID4gKyAqICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAuY29sb3IgPSBSVEVfQ09MT1JfR1JFRU4sDQo+ID4gKyAqICAg ICAgICAgICAgICAgICAgICAgICAgICAgfSwNCj4gPiArICogICAgICAgICAgICAgICAgICAgfSwN Cj4gPiArICogICAgICAgICAgICAgICAgICAgew0KPiA+ICsgKiAgICAgICAgICAgICAgICAgICAg ICAgICAgIC50eXBlID0gUlRFX0ZMT1dfQUNUSU9OX1RZUEVfRU5ELA0KPiA+ICsgKiAgICAgICAg ICAgICAgICAgICB9LA0KPiA+ICsgKiAgICAgICAgICAgfSwNCj4gPiArICogICAgICAgICAgIC5h Y3Rpb25zW1JURV9DT0xPUl9ZRUxMT1ddID0gKHN0cnVjdCBydGVfZmxvd19hY3Rpb25bXSkgew0K PiA+ICsgKiAgICAgICAgICAgICAgICAgICB7DQo+ID4gKyAqICAgICAgICAgICAgICAgICAgICAg ICAgICAgLnR5cGUgPQ0KPiA+IFJURV9GTE9XX0FDVElPTl9UWVBFX01FVEVSX0NPTE9SLA0KPiA+ ICsgKiAgICAgICAgICAgICAgICAgICAgICAgICAgIC5jb25mID0gJihzdHJ1Y3QNCj4gPiBydGVf Zmxvd19hY3Rpb25fbWV0ZXJfY29sb3IpIHsNCj4gPiArICogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIC5jb2xvciA9IFJURV9DT0xPUl9ZRUxMT1csDQo+ID4gKyAqICAgICAgICAg ICAgICAgICAgICAgICAgICAgfSwNCj4gPiArICogICAgICAgICAgICAgICAgICAgfSwNCj4gPiAr ICogICAgICAgICAgICAgICAgICAgew0KPiA+ICsgKiAgICAgICAgICAgICAgICAgICAudHlwZSA9 IFJURV9GTE9XX0FDVElPTl9UWVBFX0VORCwNCj4gPiArICogICAgICAgICAgICAgICAgICAgfSwN Cj4gPiArICogICAgICAgICAgIH0sDQo+ID4gKyAqICAgICAgICAgICAuYWN0aW9uc1tSVEVfQ09M T1JfUkVEXSA9IChzdHJ1Y3QgcnRlX2Zsb3dfYWN0aW9uW10pIHsNCj4gPiArICogICAgICAgICAg ICAgICAgICAgew0KPiA+ICsgKiAgICAgICAgICAgICAgICAgICAgICAgICAgIC50eXBlID0NCj4g PiBSVEVfRkxPV19BQ1RJT05fVFlQRV9NRVRFUl9DT0xPUiwNCj4gPiArICogICAgICAgICAgICAg ICAgICAgICAgICAgICAuY29uZiA9ICYoc3RydWN0DQo+ID4gcnRlX2Zsb3dfYWN0aW9uX21ldGVy X2NvbG9yKSB7DQo+ID4gKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuY29s b3IgPSBSVEVfQ09MT1JfUkVELA0KPiA+ICsgKiAgICAgICAgICAgICAgICAgICAgICAgICAgIH0s DQo+ID4gKyAqICAgICAgICAgICAgICAgICAgIH0sDQo+ID4gKyAqICAgICAgICAgICAgICAgICAg IHsNCj4gPiArICogICAgICAgICAgICAgICAgICAgICAgICAgICAudHlwZSA9IFJURV9GTE9XX0FD VElPTl9UWVBFX0VORCwNCj4gPiArICogICAgICAgICAgICAgICAgICAgfSwNCj4gPiArICogICAg ICAgICAgIH0sDQo+ID4gKyAqICAgfTsNCj4gPiArICoNCj4gPiArICogRXhhbXBsZSAjMjogR1JF RU4gLSBEbyBub3RoaW5nLCBZRUxMT1cgLSBEbyBub3RoaW5nLCBSRUQgLSBEUk9QDQo+ID4gKyAq ICAgc3RydWN0IHJ0ZV9tdHJfbWV0ZXJfcG9saWN5X3BhcmFtcyBwb2xpY3lfMSA9DQo+ID4gKyAq ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3RydWN0DQo+ID4gcnRlX210cl9t ZXRlcl9wb2xpY3lfcGFyYW1zKSB7DQo+ID4gKyAqICAgICAgICAgICAuYWN0aW9uc1tSVEVfQ09M T1JfR1JFRU5dID0gTlVMTCwNCj4gPiArICogICAgICAgICAgIC5hY3Rpb25zW1JURV9DT0xPUl9Z RUxMT1ddID0gTlVMTCwNCj4gPiArICogICAgICAgICAgIC5hY3Rpb25zW1JURV9DT0xPUl9SRURd ID0gKHN0cnVjdCBydGVfZmxvd19hY3Rpb25bXSkgew0KPiA+ICsgKiAgICAgICAgICAgICAgICAg ICB7DQo+ID4gKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgLnR5cGUgPSBSVEVfRkxPV19B Q1RJT05fVFlQRV9EUk9QLA0KPiA+ICsgKiAgICAgICAgICAgICAgICAgICB9LA0KPiA+ICsgKiAg ICAgICAgICAgICAgICAgICB7DQo+ID4gKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgLnR5 cGUgPSBSVEVfRkxPV19BQ1RJT05fVFlQRV9FTkQsDQo+ID4gKyAqICAgICAgICAgICAgICAgICAg IH0sDQo+ID4gKyAqICAgICAgICAgICB9LA0KPiA+ICsgKiAgIH07DQo+ID4gKyAqDQo+IA0KPiBU aGVzZSB0d28gZXhhbXBsZSBwb2xpY2llcyBzaG91bGQgYmUgYXZhaWxhYmxlIHRvIGJlIHVzZWQg c3RyYWlnaHQgYXdheSwNCj4gcGxlYXNlIG1ha2UgdGhlbSByZWFsIGRhdGEgc3RydWN0dXJlcywg bm90IGNvbW1lbnRzLg0KPiANCj4gSSBzdWdnZXN0IHRoZWlyIG5hbWVzIGFzOiBwYXNzX2NvbG9y X3BvbGljeV9wYXJhbXMgYW5kDQo+IGRyb3BfcmVkX3BvbGljeV9wYXJhbXMuDQo+DQpUaGFua3Mu IFdpbGwgY2hhbmdlIHRoZSBuYW1lcy4gQnV0IGl0IGNhbiBub3QgYmUgcmVhbCBkYXRhIHN0cnVj dHVyZXMsIHNpbmNlIGl0IGp1c3Qgb25lIGV4YW1wbGUgZGVmaW5lIGFuZCBubyB1c2UgY29kZS4N Ckl0IHdpbGwgYnJpbmcgYnVpbGQgYXMgYmVsb3c6DQplcnJvcjogJ2Ryb3BfcmVkX3BvbGljeV9w YXJhbXMnIGRlZmluZWQgYnV0IG5vdCB1c2VkLg0KIFVzZXIgY2FuIGNvcHkgdGhlc2UgZXhhbXBs ZSB0byBoaXMgLmMgZmlsZSB3aGVuIGl0IHVzaW5nIHJ0ZV9tdHJfbWV0ZXJfcG9saWN5X2FkZCgp Lg0KDQo+ID4gKyAqIEBwYXJhbVtpbl0gcG9ydF9pZA0KPiA+ICsgKiAgIFRoZSBwb3J0IGlkZW50 aWZpZXIgb2YgdGhlIEV0aGVybmV0IGRldmljZS4NCj4gPiArICogQHBhcmFtW2luXSBwb2xpY3lf aWQNCj4gPiArICogICBQb2xpY3kgaWRlbnRpZmllciBmb3IgdGhlIG5ldyBtZXRlciBwb2xpY3ku DQo+ID4gKyAqIEBwYXJhbVtpbl0gcG9saWN5DQo+ID4gKyAqICAgQXNzb2NpYXRlZCBhY3Rpb25z IHBlciBjb2xvci4NCj4gPiArICogICBsaXN0IE5VTEwgaXMgbGVnYWwgYW5kIG1lYW5zIG5vIHNw ZWNpYWwgYWN0aW9uLg0KPiA+ICsgKiAgIE5vbi1OVUxMIGxpc3QgbXVzdCBiZSB0ZXJtaW5hdGVk Lg0KPiA+ICsgKiAgIChsaXN0IHRlcm1pbmF0ZWQgYnkgdGhlIEVORCBhY3Rpb24pLg0KPiA+ICsg KiBAcGFyYW1bb3V0XSBlcnJvcg0KPiA+ICsgKiAgIEVycm9yIGRldGFpbHMuIEZpbGxlZCBpbiBv bmx5IG9uIGVycm9yLCB3aGVuIG5vdCBOVUxMLg0KPiA+ICsgKiBAcmV0dXJuDQo+ID4gKyAqICAg MCBvbiBzdWNjZXNzLCBub24temVybyBlcnJvciBjb2RlIG90aGVyd2lzZS4NCj4gPiArICovDQo+ ID4gK19fcnRlX2V4cGVyaW1lbnRhbA0KPiA+ICtpbnQNCj4gPiArcnRlX210cl9tZXRlcl9wb2xp Y3lfY3JlYXRlKHVpbnQxNl90IHBvcnRfaWQsDQo+IA0KPiBUaGUgbmFtZSBvZiB0aGlzIGZ1bmN0 aW9uIGF0IHRoZSB0b3Agb2YgaXRzIGRlc2NyaXB0aW9uIGlzIG1lbnRpb25lZCBhcyAibWV0ZXIN Cj4gcG9saWN5IGFkZCIsIHdoaWxlIHRoaXMgZnVuY3Rpb24gbmFtZSBoZXJlIGlzIHBvbGljeSBj cmVhdGUsIHBsZWFzZSBhbGlnbiB0aGUNCj4gdHdvLg0KPiANCj4gU2luY2Ugd2UgYWxyZWFkeSBo YXZlIG90aGVyIEFQSSBmdW5jdGlvbnMgaW4gdGhpcyBmaWxlIGZvciBwcm9maWxlcy9wb2xpY2ll cyB3aXRoDQo+IHRoZSBuYW1pbmcgY29udmVudGlvbiBvZiBhZGQvZGVsZXRlIGFzIG9wcG9zZWQg dG8gY3JlYXRlL2Rlc3Ryb3kNCj4gKHJ0ZV9tdHJfbWV0ZXJfcHJvZmlsZV9hZGQgIGFuZCBydGVf bXRyX21ldGVyX3Byb2ZpbGVfZGVsZXRlKSwgcGxlYXNlIGxldCdzDQo+IHVzZSB0aGUgZXhpc3Rp bmcgY29udmVudGlvbiBhbmQgY2FsbCB0aGVzZSBvbmVzIHJ0ZV9tdHJfbWV0ZXJfcG9saWN5X2Fk ZA0KPiBhbmQgcnRlX210cl9tZXRlcl9wb2xpY3lfZGVsZXRlLg0KPiANClRoYW5rcywgd2lsbCBj aGFuZ2UgaXQgaW4gVjUgcGF0Y2guDQoNCj4gPiArICAgICB1aW50MzJfdCBwb2xpY3lfaWQsDQo+ ID4gKyAgICAgc3RydWN0IHJ0ZV9tdHJfbWV0ZXJfcG9saWN5X3BhcmFtcyAqcG9saWN5LA0KPiA+ ICsgICAgIHN0cnVjdCBydGVfbXRyX2Vycm9yICplcnJvcik7DQo+ID4gKw0KPiA+ICsvKioNCj4g PiArICogTWV0ZXIgcG9saWN5IGRlbGV0ZQ0KPiA+ICsgKg0KPiA+ICsgKiBEZWxldGUgYW4gZXhp c3RpbmcgbWV0ZXIgcG9saWN5LiBUaGlzIG9wZXJhdGlvbiBmYWlscyB3aGVuIHRoZXJlIGlzDQo+ ID4gKyAqIGN1cnJlbnRseSBhdCBsZWFzdCBvbmUgdXNlciAoaS5lLiBNVFIgb2JqZWN0KSBvZiB0 aGlzIHBvbGljeS4NCj4gPiArICoNCj4gPiArICogQHBhcmFtW2luXSBwb3J0X2lkDQo+ID4gKyAq ICAgVGhlIHBvcnQgaWRlbnRpZmllciBvZiB0aGUgRXRoZXJuZXQgZGV2aWNlLg0KPiA+ICsgKiBA cGFyYW1baW5dIHBvbGljeV9pZA0KPiA+ICsgKiAgIFBvbGljeSBpZGVudGlmaWVyLg0KPiA+ICsg KiBAcGFyYW1bb3V0XSBlcnJvcg0KPiA+ICsgKiAgIEVycm9yIGRldGFpbHMuIEZpbGxlZCBpbiBv bmx5IG9uIGVycm9yLCB3aGVuIG5vdCBOVUxMLg0KPiA+ICsgKiBAcmV0dXJuDQo+ID4gKyAqICAg MCBvbiBzdWNjZXNzLCBub24temVybyBlcnJvciBjb2RlIG90aGVyd2lzZS4NCj4gPiArICovDQo+ ID4gK19fcnRlX2V4cGVyaW1lbnRhbA0KPiA+ICtpbnQNCj4gPiArcnRlX210cl9tZXRlcl9wb2xp Y3lfZGVsZXRlKHVpbnQxNl90IHBvcnRfaWQsDQo+ID4gKyAgICAgdWludDMyX3QgcG9saWN5X2lk LA0KPiA+ICsgICAgIHN0cnVjdCBydGVfbXRyX2Vycm9yICplcnJvcik7DQo+ID4gKw0KPiA+ICAv KioNCj4gPiAgICogTVRSIG9iamVjdCBjcmVhdGUNCj4gPiAgICoNCj4gPiBAQCAtNTg3LDE4ICs3 MTEsMTQgQEAgcnRlX210cl9tZXRlcl9wcm9maWxlX3VwZGF0ZSh1aW50MTZfdCBwb3J0X2lkLA0K PiA+ICAgICAgIHN0cnVjdCBydGVfbXRyX2Vycm9yICplcnJvcik7DQo+ID4NCj4gPiAgLyoqDQo+ ID4gLSAqIE1UUiBvYmplY3QgRFNDUCB0YWJsZSB1cGRhdGUNCj4gPiArICogTVRSIG9iamVjdCBt ZXRlciBwb2xpY3kgdXBkYXRlDQo+ID4gICAqDQo+ID4gICAqIEBwYXJhbVtpbl0gcG9ydF9pZA0K PiA+ICAgKiAgIFRoZSBwb3J0IGlkZW50aWZpZXIgb2YgdGhlIEV0aGVybmV0IGRldmljZS4NCj4g PiAgICogQHBhcmFtW2luXSBtdHJfaWQNCj4gPiAgICogICBNVFIgb2JqZWN0IElELiBOZWVkcyB0 byBiZSB2YWxpZC4NCj4gPiAtICogQHBhcmFtW2luXSBkc2NwX3RhYmxlDQo+ID4gLSAqICAgV2hl biBub24tTlVMTDogaXQgcG9pbnRzIHRvIGEgcHJlLWFsbG9jYXRlZCBhbmQgcHJlLXBvcHVsYXRl ZCB0YWJsZQ0KPiA+IHdpdGgNCj4gPiAtICogICBleGFjdGx5IDY0IGVsZW1lbnRzIHByb3ZpZGlu ZyB0aGUgaW5wdXQgY29sb3IgZm9yIGVhY2ggdmFsdWUgb2YgdGhlDQo+ID4gLSAqICAgSVB2NC9J UHY2IERpZmZlcmVudGlhdGVkIFNlcnZpY2VzIENvZGUgUG9pbnQgKERTQ1ApIGlucHV0IHBhY2tl dCBmaWVsZC4NCj4gPiAtICogICBXaGVuIE5VTEw6IGl0IGlzIGVxdWl2YWxlbnQgdG8gc2V0dGlu ZyB0aGlzIHBhcmFtZXRlciB0byBhbiDigJxhbGwtZ3JlZW7igJ0NCj4gPiAtICogICBwb3B1bGF0 ZWQgdGFibGUgKGkuZS4gdGFibGUgd2l0aCBhbGwgdGhlIDY0IGVsZW1lbnRzIHNldCB0byBncmVl biBjb2xvcikuDQo+ID4gKyAqIEBwYXJhbVtpbl0gbWV0ZXJfcG9saWN5X2lkDQo+ID4gKyAqICAg TWV0ZXIgcG9saWN5IElEIGZvciB0aGUgY3VycmVudCBNVFIgb2JqZWN0LiBOZWVkcyB0byBiZSB2 YWxpZC4NCj4gPiAgICogQHBhcmFtW291dF0gZXJyb3INCj4gPiAgICogICBFcnJvciBkZXRhaWxz LiBGaWxsZWQgaW4gb25seSBvbiBlcnJvciwgd2hlbiBub3QgTlVMTC4NCj4gPiAgICogQHJldHVy bg0KPiA+IEBAIC02MDYsMjYgKzcyNiwyNCBAQCBydGVfbXRyX21ldGVyX3Byb2ZpbGVfdXBkYXRl KHVpbnQxNl90IHBvcnRfaWQsDQo+ID4gICAqLw0KPiA+ICBfX3J0ZV9leHBlcmltZW50YWwNCj4g PiAgaW50DQo+ID4gLXJ0ZV9tdHJfbWV0ZXJfZHNjcF90YWJsZV91cGRhdGUodWludDE2X3QgcG9y dF9pZCwNCj4gPiArcnRlX210cl9tZXRlcl9wb2xpY3lfdXBkYXRlKHVpbnQxNl90IHBvcnRfaWQs DQo+ID4gICAgICAgdWludDMyX3QgbXRyX2lkLA0KPiA+IC0gICAgIGVudW0gcnRlX2NvbG9yICpk c2NwX3RhYmxlLA0KPiA+ICsgICAgIHVpbnQzMl90IG1ldGVyX3BvbGljeV9pZCwNCj4gPiAgICAg ICBzdHJ1Y3QgcnRlX210cl9lcnJvciAqZXJyb3IpOw0KPiA+DQo+ID4gIC8qKg0KPiA+IC0gKiBN VFIgb2JqZWN0IHBvbGljZXIgYWN0aW9ucyB1cGRhdGUNCj4gPiArICogTVRSIG9iamVjdCBEU0NQ IHRhYmxlIHVwZGF0ZQ0KPiA+ICAgKg0KPiA+ICAgKiBAcGFyYW1baW5dIHBvcnRfaWQNCj4gPiAg ICogICBUaGUgcG9ydCBpZGVudGlmaWVyIG9mIHRoZSBFdGhlcm5ldCBkZXZpY2UuDQo+ID4gICAq IEBwYXJhbVtpbl0gbXRyX2lkDQo+ID4gICAqICAgTVRSIG9iamVjdCBJRC4gTmVlZHMgdG8gYmUg dmFsaWQuDQo+ID4gLSAqIEBwYXJhbVtpbl0gYWN0aW9uX21hc2sNCj4gPiAtICogICBCaXQgbWFz ayBpbmRpY2F0aW5nIHdoaWNoIHBvbGljZXIgYWN0aW9ucyBuZWVkIHRvIGJlIHVwZGF0ZWQuIE9u ZSBvcg0KPiA+IG1vcmUNCj4gPiAtICogICBwb2xpY2VyIGFjdGlvbnMgY2FuIGJlIHVwZGF0ZWQg aW4gYSBzaW5nbGUgZnVuY3Rpb24gaW52b2NhdGlvbi4gVG8gdXBkYXRlDQo+ID4gLSAqICAgdGhl IHBvbGljZXIgYWN0aW9uIGFzc29jaWF0ZWQgd2l0aCBjb2xvciBDLCBiaXQgKDEgPDwgQykgbmVl ZHMgdG8gYmUgc2V0IGluDQo+ID4gLSAqICAgKmFjdGlvbl9tYXNrKiBhbmQgZWxlbWVudCBhdCBw b3NpdGlvbiBDIGluIHRoZSAqYWN0aW9ucyogYXJyYXkgbmVlZHMgdG8NCj4gPiBiZQ0KPiA+IC0g KiAgIHZhbGlkLg0KPiA+IC0gKiBAcGFyYW1baW5dIGFjdGlvbnMNCj4gPiAtICogICBQcmUtYWxs b2NhdGVkIGFuZCBwcmUtcG9wdWxhdGVkIGFycmF5IG9mIHBvbGljZXIgYWN0aW9ucy4NCj4gPiAr ICogQHBhcmFtW2luXSBkc2NwX3RhYmxlDQo+ID4gKyAqICAgV2hlbiBub24tTlVMTDogaXQgcG9p bnRzIHRvIGEgcHJlLWFsbG9jYXRlZCBhbmQgcHJlLXBvcHVsYXRlZCB0YWJsZQ0KPiA+IHdpdGgN Cj4gPiArICogICBleGFjdGx5IDY0IGVsZW1lbnRzIHByb3ZpZGluZyB0aGUgaW5wdXQgY29sb3Ig Zm9yIGVhY2ggdmFsdWUgb2YgdGhlDQo+ID4gKyAqICAgSVB2NC9JUHY2IERpZmZlcmVudGlhdGVk IFNlcnZpY2VzIENvZGUgUG9pbnQgKERTQ1ApIGlucHV0IHBhY2tldCBmaWVsZC4NCj4gPiArICog ICBXaGVuIE5VTEw6IGl0IGlzIGVxdWl2YWxlbnQgdG8gc2V0dGluZyB0aGlzIHBhcmFtZXRlciB0 byBhbiDigJxhbGwtZ3JlZW7igJ0NCj4gPiArICogICBwb3B1bGF0ZWQgdGFibGUgKGkuZS4gdGFi bGUgd2l0aCBhbGwgdGhlIDY0IGVsZW1lbnRzIHNldCB0byBncmVlbiBjb2xvcikuDQo+ID4gICAq IEBwYXJhbVtvdXRdIGVycm9yDQo+ID4gICAqICAgRXJyb3IgZGV0YWlscy4gRmlsbGVkIGluIG9u bHkgb24gZXJyb3IsIHdoZW4gbm90IE5VTEwuDQo+ID4gICAqIEByZXR1cm4NCj4gPiBAQCAtNjMz LDEwICs3NTEsOSBAQCBydGVfbXRyX21ldGVyX2RzY3BfdGFibGVfdXBkYXRlKHVpbnQxNl90DQo+ ID4gcG9ydF9pZCwNCj4gPiAgICovDQo+ID4gIF9fcnRlX2V4cGVyaW1lbnRhbA0KPiA+ICBpbnQN Cj4gPiAtcnRlX210cl9wb2xpY2VyX2FjdGlvbnNfdXBkYXRlKHVpbnQxNl90IHBvcnRfaWQsDQo+ ID4gK3J0ZV9tdHJfbWV0ZXJfZHNjcF90YWJsZV91cGRhdGUodWludDE2X3QgcG9ydF9pZCwNCj4g PiAgICAgICB1aW50MzJfdCBtdHJfaWQsDQo+ID4gLSAgICAgdWludDMyX3QgYWN0aW9uX21hc2ss DQo+ID4gLSAgICAgZW51bSBydGVfbXRyX3BvbGljZXJfYWN0aW9uICphY3Rpb25zLA0KPiA+ICsg ICAgIGVudW0gcnRlX2NvbG9yICpkc2NwX3RhYmxlLA0KPiA+ICAgICAgIHN0cnVjdCBydGVfbXRy X2Vycm9yICplcnJvcik7DQo+ID4NCj4gPiAgLyoqDQo+ID4gZGlmZiAtLWdpdCBhL2xpYi9saWJy dGVfZXRoZGV2L3J0ZV9tdHJfZHJpdmVyLmgNCj4gPiBiL2xpYi9saWJydGVfZXRoZGV2L3J0ZV9t dHJfZHJpdmVyLmgNCj4gPiBpbmRleCBhMGRkYzJiNWY0Li40NjJhMWU4NjJjIDEwMDY0NA0KPiA+ IC0tLSBhL2xpYi9saWJydGVfZXRoZGV2L3J0ZV9tdHJfZHJpdmVyLmgNCj4gPiArKysgYi9saWIv bGlicnRlX2V0aGRldi9ydGVfbXRyX2RyaXZlci5oDQo+ID4gQEAgLTQxLDYgKzQxLDIyIEBAIHR5 cGVkZWYgaW50ICgqcnRlX210cl9tZXRlcl9wcm9maWxlX2RlbGV0ZV90KShzdHJ1Y3QNCj4gPiBy dGVfZXRoX2RldiAqZGV2LA0KPiA+ICAgICAgIHN0cnVjdCBydGVfbXRyX2Vycm9yICplcnJvcik7 DQo+ID4gIC8qKjwgQGludGVybmFsIE1UUiBtZXRlciBwcm9maWxlIGRlbGV0ZSAqLw0KPiA+DQo+ ID4gK3R5cGVkZWYgaW50ICgqcnRlX210cl9tZXRlcl9wb2xpY3lfdmFsaWRhdGVfdCkoc3RydWN0 IHJ0ZV9ldGhfZGV2ICpkZXYsDQo+ID4gKyAgICAgc3RydWN0IHJ0ZV9tdHJfbWV0ZXJfcG9saWN5 X3BhcmFtcyAqcG9saWN5LA0KPiA+ICsgICAgIHN0cnVjdCBydGVfbXRyX2Vycm9yICplcnJvcik7 DQo+ID4gKy8qKjwgQGludGVybmFsIE1UUiBtZXRlciBwb2xpY3kgdmFsaWRhdGUgKi8NCj4gPiAr DQo+ID4gK3R5cGVkZWYgaW50ICgqcnRlX210cl9tZXRlcl9wb2xpY3lfY3JlYXRlX3QpKHN0cnVj dCBydGVfZXRoX2RldiAqZGV2LA0KPiA+ICsgICAgIHVpbnQzMl90IHBvbGljeV9pZCwNCj4gPiAr ICAgICBzdHJ1Y3QgcnRlX210cl9tZXRlcl9wb2xpY3lfcGFyYW1zICpwb2xpY3ksDQo+ID4gKyAg ICAgc3RydWN0IHJ0ZV9tdHJfZXJyb3IgKmVycm9yKTsNCj4gPiArLyoqPCBAaW50ZXJuYWwgTVRS IG1ldGVyIHBvbGljeSBhZGQgKi8NCj4gPiArDQo+ID4gK3R5cGVkZWYgaW50ICgqcnRlX210cl9t ZXRlcl9wb2xpY3lfZGVsZXRlX3QpKHN0cnVjdCBydGVfZXRoX2RldiAqZGV2LA0KPiA+ICsgICAg IHVpbnQzMl90IHBvbGljeV9pZCwNCj4gPiArICAgICBzdHJ1Y3QgcnRlX210cl9lcnJvciAqZXJy b3IpOw0KPiA+ICsvKio8IEBpbnRlcm5hbCBNVFIgbWV0ZXIgcG9saWN5IGRlbGV0ZSAqLw0KPiA+ ICsNCj4gPiAgdHlwZWRlZiBpbnQgKCpydGVfbXRyX2NyZWF0ZV90KShzdHJ1Y3QgcnRlX2V0aF9k ZXYgKmRldiwNCj4gPiAgICAgICB1aW50MzJfdCBtdHJfaWQsDQo+ID4gICAgICAgc3RydWN0IHJ0 ZV9tdHJfcGFyYW1zICpwYXJhbXMsDQo+ID4gQEAgLTY5LDE4ICs4NSwxNyBAQCB0eXBlZGVmIGlu dA0KPiA+ICgqcnRlX210cl9tZXRlcl9wcm9maWxlX3VwZGF0ZV90KShzdHJ1Y3QgcnRlX2V0aF9k ZXYgKmRldiwNCj4gPiAgICAgICBzdHJ1Y3QgcnRlX210cl9lcnJvciAqZXJyb3IpOw0KPiA+ICAv Kio8IEBpbnRlcm5hbCBNVFIgb2JqZWN0IG1ldGVyIHByb2ZpbGUgdXBkYXRlICovDQo+ID4NCj4g PiAtdHlwZWRlZiBpbnQgKCpydGVfbXRyX21ldGVyX2RzY3BfdGFibGVfdXBkYXRlX3QpKHN0cnVj dCBydGVfZXRoX2Rldg0KPiA+ICpkZXYsDQo+ID4gK3R5cGVkZWYgaW50ICgqcnRlX210cl9tZXRl cl9wb2xpY3lfdXBkYXRlX3QpKHN0cnVjdCBydGVfZXRoX2RldiAqZGV2LA0KPiA+ICAgICAgIHVp bnQzMl90IG10cl9pZCwNCj4gPiAtICAgICBlbnVtIHJ0ZV9jb2xvciAqZHNjcF90YWJsZSwNCj4g PiArICAgICB1aW50MzJfdCBtZXRlcl9wb2xpY3lfaWQsDQo+ID4gICAgICAgc3RydWN0IHJ0ZV9t dHJfZXJyb3IgKmVycm9yKTsNCj4gPiAtLyoqPCBAaW50ZXJuYWwgTVRSIG9iamVjdCBtZXRlciBE U0NQIHRhYmxlIHVwZGF0ZSAqLw0KPiA+ICsvKio8IEBpbnRlcm5hbCBNVFIgb2JqZWN0IG1ldGVy IHBvbGljeSB1cGRhdGUgKi8NCj4gPg0KPiA+IC10eXBlZGVmIGludCAoKnJ0ZV9tdHJfcG9saWNl cl9hY3Rpb25zX3VwZGF0ZV90KShzdHJ1Y3QgcnRlX2V0aF9kZXYgKmRldiwNCj4gPiArdHlwZWRl ZiBpbnQgKCpydGVfbXRyX21ldGVyX2RzY3BfdGFibGVfdXBkYXRlX3QpKHN0cnVjdCBydGVfZXRo X2Rldg0KPiA+ICpkZXYsDQo+ID4gICAgICAgdWludDMyX3QgbXRyX2lkLA0KPiA+IC0gICAgIHVp bnQzMl90IGFjdGlvbl9tYXNrLA0KPiA+IC0gICAgIGVudW0gcnRlX210cl9wb2xpY2VyX2FjdGlv biAqYWN0aW9ucywNCj4gPiArICAgICBlbnVtIHJ0ZV9jb2xvciAqZHNjcF90YWJsZSwNCj4gPiAg ICAgICBzdHJ1Y3QgcnRlX210cl9lcnJvciAqZXJyb3IpOw0KPiA+IC0vKio8IEBpbnRlcm5hbCBN VFIgb2JqZWN0IHBvbGljZXIgYWN0aW9uIHVwZGF0ZSovDQo+ID4gKy8qKjwgQGludGVybmFsIE1U UiBvYmplY3QgbWV0ZXIgRFNDUCB0YWJsZSB1cGRhdGUgKi8NCj4gPg0KPiA+ICB0eXBlZGVmIGlu dCAoKnJ0ZV9tdHJfc3RhdHNfdXBkYXRlX3QpKHN0cnVjdCBydGVfZXRoX2RldiAqZGV2LA0KPiA+ ICAgICAgIHVpbnQzMl90IG10cl9pZCwNCj4gPiBAQCAtMTI0LDE0ICsxMzksMjMgQEAgc3RydWN0 IHJ0ZV9tdHJfb3BzIHsNCj4gPiAgICAgICAvKiogTVRSIG9iamVjdCBtZXRlciBEU0NQIHRhYmxl IHVwZGF0ZSAqLw0KPiA+ICAgICAgIHJ0ZV9tdHJfbWV0ZXJfZHNjcF90YWJsZV91cGRhdGVfdCBt ZXRlcl9kc2NwX3RhYmxlX3VwZGF0ZTsNCj4gPg0KPiA+IC0gICAgIC8qKiBNVFIgb2JqZWN0IHBv bGljZXIgYWN0aW9uIHVwZGF0ZSAqLw0KPiA+IC0gICAgIHJ0ZV9tdHJfcG9saWNlcl9hY3Rpb25z X3VwZGF0ZV90IHBvbGljZXJfYWN0aW9uc191cGRhdGU7DQo+ID4gLQ0KPiA+ICAgICAgIC8qKiBN VFIgb2JqZWN0IGVuYWJsZWQgc3RhdHMgdXBkYXRlICovDQo+ID4gICAgICAgcnRlX210cl9zdGF0 c191cGRhdGVfdCBzdGF0c191cGRhdGU7DQo+ID4NCj4gPiAgICAgICAvKiogTVRSIG9iamVjdCBz dGF0cyByZWFkICovDQo+ID4gICAgICAgcnRlX210cl9zdGF0c19yZWFkX3Qgc3RhdHNfcmVhZDsN Cj4gPiArDQo+ID4gKyAgICAgLyoqIE1UUiBtZXRlciBwb2xpY3kgdmFsaWRhdGUgKi8NCj4gPiAr ICAgICBydGVfbXRyX21ldGVyX3BvbGljeV92YWxpZGF0ZV90IG1ldGVyX3BvbGljeV92YWxpZGF0 ZTsNCj4gPiArDQo+ID4gKyAgICAgLyoqIE1UUiBtZXRlciBwb2xpY3kgY3JlYXRlICovDQo+ID4g KyAgICAgcnRlX210cl9tZXRlcl9wb2xpY3lfY3JlYXRlX3QgbWV0ZXJfcG9saWN5X2NyZWF0ZTsN Cj4gPiArDQo+ID4gKyAgICAgLyoqIE1UUiBtZXRlciBwb2xpY3kgZGVsZXRlICovDQo+ID4gKyAg ICAgcnRlX210cl9tZXRlcl9wb2xpY3lfZGVsZXRlX3QgbWV0ZXJfcG9saWN5X2RlbGV0ZTsNCj4g PiArDQo+ID4gKyAgICAgLyoqIE1UUiBvYmplY3QgbWV0ZXIgcG9saWN5IHVwZGF0ZSAqLw0KPiA+ ICsgICAgIHJ0ZV9tdHJfbWV0ZXJfcG9saWN5X3VwZGF0ZV90IG1ldGVyX3BvbGljeV91cGRhdGU7 DQo+ID4gIH07DQo+ID4NCj4gPiAgLyoqDQo+ID4gZGlmZiAtLWdpdCBhL2xpYi9saWJydGVfZXRo ZGV2L3ZlcnNpb24ubWFwIGIvbGliL2xpYnJ0ZV9ldGhkZXYvdmVyc2lvbi5tYXANCj4gPiBpbmRl eCA5M2FkMzg4ZTk2Li4wMDQ1YmFmZjhjIDEwMDY0NA0KPiA+IC0tLSBhL2xpYi9saWJydGVfZXRo ZGV2L3ZlcnNpb24ubWFwDQo+ID4gKysrIGIvbGliL2xpYnJ0ZV9ldGhkZXYvdmVyc2lvbi5tYXAN Cj4gPiBAQCAtMTM4LDcgKzEzOCw2IEBAIEVYUEVSSU1FTlRBTCB7DQo+ID4gICAgICAgcnRlX210 cl9tZXRlcl9wcm9maWxlX2FkZDsNCj4gPiAgICAgICBydGVfbXRyX21ldGVyX3Byb2ZpbGVfZGVs ZXRlOw0KPiA+ICAgICAgIHJ0ZV9tdHJfbWV0ZXJfcHJvZmlsZV91cGRhdGU7DQo+ID4gLSAgICAg cnRlX210cl9wb2xpY2VyX2FjdGlvbnNfdXBkYXRlOw0KPiA+ICAgICAgIHJ0ZV9tdHJfc3RhdHNf cmVhZDsNCj4gPiAgICAgICBydGVfbXRyX3N0YXRzX3VwZGF0ZTsNCj4gPg0KPiA+IEBAIC0yNDYs NiArMjQ1LDEwIEBAIEVYUEVSSU1FTlRBTCB7DQo+ID4NCj4gPiAgICAgICAjIGFkZGVkIGluIDIx LjA1DQo+ID4gICAgICAgcnRlX2V0aF9yZXByZXNlbnRvcl9pbmZvX2dldDsNCj4gPiArICAgICBy dGVfbXRyX21ldGVyX3BvbGljeV9jcmVhdGU7DQo+ID4gKyAgICAgcnRlX210cl9tZXRlcl9wb2xp Y3lfZGVsZXRlOw0KPiA+ICsgICAgIHJ0ZV9tdHJfbWV0ZXJfcG9saWN5X3VwZGF0ZTsNCj4gPiAr ICAgICBydGVfbXRyX21ldGVyX3BvbGljeV92YWxpZGF0ZTsNCj4gPiAgfTsNCj4gPg0KPiA+ICBJ TlRFUk5BTCB7DQo+ID4gLS0NCj4gPiAyLjI3LjANCj4gDQo+IFJlZ2FyZHMsDQo+IENyaXN0aWFu DQo=