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 772FEA0C41; Thu, 30 Sep 2021 07:19:04 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 54194410ED; Thu, 30 Sep 2021 07:19:04 +0200 (CEST) Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by mails.dpdk.org (Postfix) with ESMTP id 2D870410EA for ; Thu, 30 Sep 2021 07:19:02 +0200 (CEST) X-IronPort-AV: E=McAfee;i="6200,9189,10122"; a="225174899" X-IronPort-AV: E=Sophos;i="5.85,335,1624345200"; d="scan'208";a="225174899" Received: from orsmga007.jf.intel.com ([10.7.209.58]) by orsmga103.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 29 Sep 2021 22:19:01 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.85,335,1624345200"; d="scan'208";a="476873750" Received: from orsmsx602.amr.corp.intel.com ([10.22.229.15]) by orsmga007.jf.intel.com with ESMTP; 29 Sep 2021 22:19:01 -0700 Received: from orsmsx610.amr.corp.intel.com (10.22.229.23) by ORSMSX602.amr.corp.intel.com (10.22.229.15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2242.12; Wed, 29 Sep 2021 22:19:00 -0700 Received: from ORSEDG602.ED.cps.intel.com (10.7.248.7) by orsmsx610.amr.corp.intel.com (10.22.229.23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2242.12 via Frontend Transport; Wed, 29 Sep 2021 22:19:00 -0700 Received: from NAM10-DM6-obe.outbound.protection.outlook.com (104.47.58.107) by edgegateway.intel.com (134.134.137.103) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2242.12; Wed, 29 Sep 2021 22:19:00 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=f96+gtRKw+K/Q9pMRT3l1RC2wVx+KQxP5wsNfOaHMGeOSXk0gpPe3ECTKpehhS7dnYIh78cNqaehW1L2IhY6fFzxEVYLfKjQGfh9hPJafntPFbBUIBDlgDa6GjDXtf/tWblzZEDqX1nJenIkB2eADvhl07XoEb5cf4IbYQp92/puvPL2usIBdTjkRELR30o21qiwI2oJQO486NEh8RoieCTN8ve5TlkS9yh18VGaNc9wwzVbwEmA6jmYQX+LA2h1eUM0B1rr6NGXVNw8vJv8bdCoqPb6JJwtQIHhyOe3DG6CHWiOIgIEQGsUfcjBOA5eSsifYsTF54momJKTSDn4+w== 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; bh=sptJMa7U6WyQQX/UaMzVfc9eSgaFXzgnR3wIDlePwxw=; b=M4+HWnl9+b81b8PTPRp98zOxHdITRGuwU1yqib5YGNXqRXZ0LQPCO5gIJ5DCmvuMjXLjWf5AByY7z2Mghw/QmKHcuFUHQ6qRKhnpZo8cugDiJWTc9+vmnw216bLPidoBZQmY8mQgqY627xFRpcnFmVmO4idR/L/Avrrt3YSkR8BkWbWk6b0f2aelFWWF0HQyBLjy2f67eGYVjjvJUuXgvmR+fj5F8Ux2AECVlNMe2hLn7fjVBe2UOzyGBkoJ2kC4w+Rw/+H9EQq4KyfbGDKAl0v3vjg632C3bRJQ16tgZ6CXS1X71zRTnzOX18BXnaOBcHOg5SWPE4sIGxV/eVsHKg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=intel.onmicrosoft.com; s=selector2-intel-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=sptJMa7U6WyQQX/UaMzVfc9eSgaFXzgnR3wIDlePwxw=; b=u3xs+OjjcZrGWe2CDI8lEhFA+YbCKHR/1jKL5gDh82b5FJKr7r9+O1ZWjSh9pFvaGmDn16j54kMa1cYVGiKgT+v+qJZHGMWdNjukqve9NXhfzwWmzxX/XoCqiDJvXWPxZXxI16k0x4/9LUWxgFy96oSYzA/ewWVOhsRhhE7NSPY= Received: from DM8PR11MB5591.namprd11.prod.outlook.com (2603:10b6:8:38::23) by DM8PR11MB5608.namprd11.prod.outlook.com (2603:10b6:8:35::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4544.13; Thu, 30 Sep 2021 05:18:53 +0000 Received: from DM8PR11MB5591.namprd11.prod.outlook.com ([fe80::904:ace8:b3b:c1a2]) by DM8PR11MB5591.namprd11.prod.outlook.com ([fe80::904:ace8:b3b:c1a2%4]) with mapi id 15.20.4566.015; Thu, 30 Sep 2021 05:18:53 +0000 From: "Peng, ZhihongX" To: "Burakov, Anatoly" , "Ananyev, Konstantin" , "stephen@networkplumber.org" CC: "dev@dpdk.org" , "Lin, Xueqin" Thread-Topic: [PATCH v3] Enable AddressSanitizer feature on DPDK Thread-Index: AQHXrGHxrMSNwZERbEWuoORjLey9IKu31mGAgARB1dA= Date: Thu, 30 Sep 2021 05:18:53 +0000 Message-ID: References: <20210916013843.342366-1-zhihongx.peng@intel.com> <20210918074155.872358-1-zhihongx.peng@intel.com> In-Reply-To: Accept-Language: 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=intel.com; x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: e71acea5-f7ec-48fe-63dd-08d983d1cbb1 x-ms-traffictypediagnostic: DM8PR11MB5608: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:9508; x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: GdoegGLUTYZAVFmhceiBEQUnzwY+qTLLKWX/diHuLP0SXj0rdriUNvjLEGzvldhb07RIkicYoiyNOCDyVT3mlmFg8aaFUV7oFhQt9vj/W7kRR6BuJQueGV1LOntrpz1gdiLOq3bmLFidQQb4yL6RUP46SH/NfP8mvu08BY1GksMhVC2gxLnoZyt2r25ey0l1Y6KPNSldgc6AHsNz++YO+kWKaRXElse9a04jRLzqmx5/yTL/OIw2MckNHP1vy1PSczBXHYJWN+M+yUKclbrztrcpQDWd8tDO7/aGptAGJLZkqJF2VRvcfD7CTF8+yIsA/gSrElFQ24n5a0u4RvPZ+lMkDxPI7wxmKpI2WETKC2DNRurEmIPJ9ROhIMu2AA5V9ELPkjhuzXHv6E1xzOXJIAzLAwS50SdJ+FQ6XfUc+2ZZAuukJDC58P2dwlUQMENkThlPk4mFxN2SOK6UkOJnE97zJSsmcTkruWbIFIAGwxp1Qkk6hUzeMnJ467yQS/lGdxDkUO5z1LJ1f/3LI0rYgilucENZu8LM5vziwMvx//s652VgkjSZ5Cx2+L1Ft1Em+Rxu54ioY5LmntUCdLc6X/e/BesNbXFAqIHNfLrzWF7HaWCK/DVAG8rrZOJefM/H3Dezpg+xImSGusDuCJcIqKB599VlECgSpPPiGJ0P6R6YRnZJ0KI3ChKQ6ewi9EBfs+fZhh0PZXJnSRVLugUV98FfpwYYm3aqHj20yaMCmbeNfE2z8WZpWSg+6BYJepl0D9i2Eph55i8yDxjE5dEuLGZMFwUIBvuzRsQgMMbCA19piljqJxCOm2CdoQBc9o56P+dF9s53T0YUmWRguhj1++lUmtpduu+wYJjDcQnjnzQMgPqFt1Sf4ekZwVKnowXUp3WVhLibWb8JhN9X3iZRZA== x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DM8PR11MB5591.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(366004)(54906003)(38070700005)(7696005)(107886003)(53546011)(110136005)(86362001)(508600001)(4326008)(316002)(6506007)(83380400001)(186003)(66946007)(8936002)(71200400001)(55016002)(64756008)(9686003)(30864003)(66476007)(2906002)(33656002)(26005)(8676002)(66446008)(38100700002)(122000001)(52536014)(76116006)(66556008)(5660300002)(49343001)(579004)(559001)(505234006); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?U0k2OGxNelllbnM2K2FrdXc2MHdhZmlKS0tMQ0pWNm5aZUhwNThYUGowS0s2?= =?utf-8?B?dU5ZMmVPVldXanNLYjZrTFBiWWJCZVZjOC9IMkk2MGNFVzl4L01LeUxoaU5q?= =?utf-8?B?SzRQR2VpeGloMEFTUEg0UU5TVzRjL2JrMzRkdzhnU05zeFdQQUFLSTJ1K3BN?= =?utf-8?B?c3J6c25XcDJaRHljbDBwaHU5ZThvZStOamx0ZTZqOUdMNHI5MmRmWURqUTZP?= =?utf-8?B?ZG9nSUM3bUpSV0JqOWw0WVpmL1RQckh1cHFrcDJOVkdhWXhHSWwvdUhqalZw?= =?utf-8?B?Q3E4VWVCWTF0N09nYXRVbE91MFNXK0loVUlxWXFRWGhJbnM5L3RJQUw4QWFr?= =?utf-8?B?UXBraDZWdkoxVVZ5UUpyZmdvKzh2bEdNSWZxTE02RVVLZ05HQVlNUXlTaU5m?= =?utf-8?B?b21zVlhoallkaHd5OWpFT0QwWnFyU2F4RmxtOUNnN3BUN2ZjZDRWOTJZVno1?= =?utf-8?B?VUxjc1JJOXJ2WWhMK1pBSzZGTmZWeFNNL0E1anNlYk9ZcjJwcnVKNU91czZS?= =?utf-8?B?bWdEMDJiQ0FLeXIybm5rSjRvUkpBSFJzdHN5RnpVenltYk9jTWVDQW56WHo2?= =?utf-8?B?UkdmWEtONWkycGJlbU5kUjU4UVFLbjZkeGw0bHRuMm9nYW5YOE5EOTN1aGFy?= =?utf-8?B?ckJYWWhCeHM1MEZTNlI1bU41UmRleWJaOXBNcUg1MUthTVZsSWJOUzdFek0z?= =?utf-8?B?Sm03c3ZIRnN4VVJsTlVDV25FSTBhUFRXZmh2ZWV4UVY0ZEhRRmovUVRLZTAw?= =?utf-8?B?M20xZmxwaldoYTRkVTlqVHVrNjFjNmhCdlAzNnlSTGdNdC9CZUNxc3RBV2Rw?= =?utf-8?B?VDcxYmd6ZGgxRVoyMTQxZUtkdjl3WW52RkozSmd2RnpnbWlBeVpsOEdTOGFP?= =?utf-8?B?Z25ObG1iY3Nvd2JqSjRXWEU3cHpVR3NVYlRNdnJJQWtnNWgrV3ROWE43bmFC?= =?utf-8?B?US9uMWY2V25wV211WTVrcGcvbkhHOVlnVHZSckY3MGNCcXVaWFpvdVZ4aW9w?= =?utf-8?B?WUZRcmliNkZjc0ZVek8wMExneGc5eFVJYnU4T1Q4aEVOOUNhV1UvejN0cFpM?= =?utf-8?B?WGFIT2hRaExLa1RsUmJRc1NsZVBYUlE5MzNQSEoyWmhSdG9VMjd6ekJQY0wz?= =?utf-8?B?ekpaSncvNUxMRm40TXhOWlI5c2dPa2w4Z3YrUmxoRDQ3Z1VPTjMyOTlHTVFn?= =?utf-8?B?dVd0QkMxQmd6YVVEbCttU0hzZjZycVNyVlVGLzFLYmdjUndEQzFOZnlTZjM2?= =?utf-8?B?WVR4a3I1VmpWRkEzR2NWQyt6bDZvTnFRR1c2YjVLQmpYczF3ZGF0eGFDVGda?= =?utf-8?B?VnU0eWZVQVJ5SktwczVQRWF4aG1CQ0JwQkp5NkEvb0RNeU9EekhpYzErYUVn?= =?utf-8?B?bnljb2Z2YUNxTUphYjZUOS9UdC9NbW13MEc1Ylg2am80TkJBUW5uL2lwV21U?= =?utf-8?B?VzNEUzZVcjQ0NTB1VUxBVWlRcmRlM0ZkUEFYS1p2T3ZLY2ExcmJnQWNZS04y?= =?utf-8?B?MnhLNXBZdFZqYnBOdU1KL2pESitsUlZiWUVJaUZnc2tXR0Uwd1krczNicEVO?= =?utf-8?B?OHlpcU9iT2MzT09acnJCTk9MY0x0QjJPQ0FhU0xRWUU3RXlsSkRoRmhITTFl?= =?utf-8?B?M2dLQ2h4S3U5OWFpYWU5emJvSHJENUNUZ3hMOXk4RDZvb3VFcXZ0VkFPRC9l?= =?utf-8?B?NFV0Ylptb1E2dGZsd1VsVDZKdzg5UFlkOExSZkI3MVl2R3lDLys1dnBReHZ1?= =?utf-8?Q?mOrYe8ikABwhUciusD2UBdafLB3G1OtlfXkjwtT?= Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: DM8PR11MB5591.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: e71acea5-f7ec-48fe-63dd-08d983d1cbb1 X-MS-Exchange-CrossTenant-originalarrivaltime: 30 Sep 2021 05:18:53.7105 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: i7AKnYM4ymqBccrqaSGWo5j01QFB22CSurQu38PmAVzLz8oXJMy/Ky2bhCe4MChZjSN4kq0WLdtAyKrGwkE7yg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM8PR11MB5608 X-OriginatorOrg: intel.com Subject: Re: [dpdk-dev] [PATCH v3] Enable AddressSanitizer feature on DPDK 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" PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBCdXJha292LCBBbmF0b2x5IDxh bmF0b2x5LmJ1cmFrb3ZAaW50ZWwuY29tPg0KPiBTZW50OiBNb25kYXksIFNlcHRlbWJlciAyNywg MjAyMSA4OjAzIFBNDQo+IFRvOiBQZW5nLCBaaGlob25nWCA8emhpaG9uZ3gucGVuZ0BpbnRlbC5j b20+OyBBbmFueWV2LCBLb25zdGFudGluDQo+IDxrb25zdGFudGluLmFuYW55ZXZAaW50ZWwuY29t Pjsgc3RlcGhlbkBuZXR3b3JrcGx1bWJlci5vcmcNCj4gQ2M6IGRldkBkcGRrLm9yZzsgTGluLCBY dWVxaW4gPHh1ZXFpbi5saW5AaW50ZWwuY29tPg0KPiBTdWJqZWN0OiBSZTogW1BBVENIIHYzXSBF bmFibGUgQWRkcmVzc1Nhbml0aXplciBmZWF0dXJlIG9uIERQREsNCj4gDQo+IE9uIDE4LVNlcC0y MSA4OjQxIEFNLCB6aGlob25neC5wZW5nQGludGVsLmNvbSB3cm90ZToNCj4gPiBGcm9tOiBaaGlo b25nIFBlbmcgPHpoaWhvbmd4LnBlbmdAaW50ZWwuY29tPg0KPiA+DQo+ID4gQWRkcmVzc1Nhbml0 aXplciAoQVNhbikgaXMgYSBnb29nbGUgbWVtb3J5IGVycm9yIGRldGVjdCBzdGFuZGFyZCB0b29s Lg0KPiA+IEl0IGNvdWxkIGhlbHAgdG8gZGV0ZWN0IHVzZS1hZnRlci1mcmVlIGFuZCB7aGVhcCxz dGFjayxnbG9iYWx9LWJ1ZmZlcg0KPiA+IG92ZXJmbG93IGJ1Z3MgaW4gQy9DKysgcHJvZ3JhbXMs IHByaW50IGRldGFpbGVkIGVycm9yIGluZm9ybWF0aW9uIHdoZW4NCj4gPiBlcnJvciBoYXBwZW5z LCBsYXJnZSBpbXByb3ZlIGRlYnVnIGVmZmljaWVuY3kuDQo+ID4NCj4gPiBCeSByZWZlcnJpbmcg dG8gaXRzIGltcGxlbWVudGF0aW9uIGFsZ29yaXRobQ0KPiA+IChodHRwczovL2dpdGh1Yi5jb20v Z29vZ2xlL3Nhbml0aXplcnMvd2lraS9BZGRyZXNzU2FuaXRpemVyQWxnb3JpdGhtKSwNCj4gPiBl bmFibGUgaGVhcC1idWZmZXItb3ZlcmZsb3cgYW5kIHVzZS1hZnRlci1mcmVlIGZ1bmN0aW9ucyBv biBkcGRrLg0KPiA+IERQREsgQVNBTiBmdW5jdGlvbiBjdXJyZW50bHkgb25seSBzdXBwb3J0cyBv biBMaW51eCB4ODZfNjQuDQo+ID4NCj4gPiBIZXJlIGlzIGFuIGV4YW1wbGUgb2YgaGVhcC1idWZm ZXItb3ZlcmZsb3cgYnVnOg0KPiA+ICAgICAgICAgIC4uLi4uLg0KPiA+ICAgICAgICAgIGNoYXIg KnAgPSBydGVfem1hbGxvYyhOVUxMLCA3LCAwKTsNCj4gPiAgICAgICAgICBwWzddID0gJ2EnOw0K PiA+ICAgICAgICAgIC4uLi4uLg0KPiA+DQo+ID4gSGVyZSBpcyBhbiBleGFtcGxlIG9mIHVzZS1h ZnRlci1mcmVlIGJ1ZzoNCj4gPiAgICAgICAgICAuLi4uLi4NCj4gPiAgICAgICAgICBjaGFyICpw ID0gcnRlX3ptYWxsb2MoTlVMTCwgNywgMCk7DQo+ID4gICAgICAgICAgcnRlX2ZyZWUocCk7DQo+ ID4gICAgICAgICAgKnAgPSAnYSc7DQo+ID4gICAgICAgICAgLi4uLi4uDQo+ID4NCj4gPiBJZiB5 b3Ugd2FudCB0byB1c2UgdGhpcyBmZWF0dXJlLA0KPiA+IHlvdSBuZWVkIHRvIGFkZCBiZWxvdyBj b21waWxhdGlvbiBvcHRpb25zIHdoZW4gY29tcGlsaW5nIGNvZGU6DQo+ID4gLURidWlsZHR5cGU9 ZGVidWcgLURiX2x1bmRlZj1mYWxzZSAtRGJfc2FuaXRpemU9YWRkcmVzcw0KPiA+ICItRGJ1aWxk dHlwZT1kZWJ1ZyI6IERpc3BsYXkgY29kZSBpbmZvcm1hdGlvbiB3aGVuIGNvcmVkdW1wIG9jY3Vy cyBpbg0KPiA+IHRoZSBwcm9ncmFtLg0KPiA+ICItRGJfbHVuZGVmPWZhbHNlIjogSXQgaXMgZW5h YmxlZCBieSBkZWZhdWx0LCBhbmQgbmVlZHMgdG8gYmUgZGlzYWJsZWQNCj4gPiB3aGVuIHVzaW5n IGFzYW4uDQo+ID4NCj4gPiBTaWduZWQtb2ZmLWJ5OiBYdWVxaW4gTGluIDx4dWVxaW4ubGluQGlu dGVsLmNvbT4NCj4gPiBTaWduZWQtb2ZmLWJ5OiBaaGlob25nIFBlbmcgPHpoaWhvbmd4LnBlbmdA aW50ZWwuY29tPg0KPiA+IC0tLQ0KPiA+ICAgZG9jL2d1aWRlcy9wcm9nX2d1aWRlL2FzYW4ucnN0 ICB8IDEzMCArKysrKysrKysrKysrKysrKysrKysrDQo+ID4gICBkb2MvZ3VpZGVzL3Byb2dfZ3Vp ZGUvaW5kZXgucnN0IHwgICAxICsNCj4gPiAgIGxpYi9lYWwvY29tbW9uL21hbGxvY19lbGVtLmMg ICAgfCAgMjYgKysrKy0NCj4gPiAgIGxpYi9lYWwvY29tbW9uL21hbGxvY19lbGVtLmggICAgfCAx ODQNCj4gKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0NCj4gPiAgIGxpYi9lYWwvY29t bW9uL21hbGxvY19oZWFwLmMgICAgfCAgMTIgKysrDQo+ID4gICBsaWIvZWFsL2NvbW1vbi9ydGVf bWFsbG9jLmMgICAgIHwgICA5ICstDQo+ID4gICBsaWIvcGlwZWxpbmUvcnRlX3N3eF9waXBlbGlu ZS5jIHwgICA0ICstDQo+ID4gICA3IGZpbGVzIGNoYW5nZWQsIDM1OSBpbnNlcnRpb25zKCspLCA3 IGRlbGV0aW9ucygtKQ0KPiA+ICAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRvYy9ndWlkZXMvcHJvZ19n dWlkZS9hc2FuLnJzdA0KPiA+DQo+ID4gZGlmZiAtLWdpdCBhL2RvYy9ndWlkZXMvcHJvZ19ndWlk ZS9hc2FuLnJzdA0KPiA+IGIvZG9jL2d1aWRlcy9wcm9nX2d1aWRlL2FzYW4ucnN0IG5ldyBmaWxl IG1vZGUgMTAwNjQ0IGluZGV4DQo+ID4gMDAwMDAwMDAwMC4uYTA1ODlkOWI4YQ0KPiA+IC0tLSAv ZGV2L251bGwNCj4gPiArKysgYi9kb2MvZ3VpZGVzL3Byb2dfZ3VpZGUvYXNhbi5yc3QNCj4gPiBA QCAtMCwwICsxLDEzMCBAQA0KPiA+ICsuLiBDb3B5cmlnaHQgKGMpIDwyMDIxPiwgSW50ZWwgQ29y cG9yYXRpb24NCj4gPiArICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4NCj4gPiArDQo+ID4gK01lbW9y eSBlcnJvciBkZXRlY3Qgc3RhbmRhcmQgdG9vbCAtIEFkZHJlc3NTYW5pdGl6ZXIoQXNhbikNCj4g Pg0KPiArPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09DQo+ID0NCj4gPiArDQo+ID4gK0FkZHJlc3NTYW5pdGl6ZXIgKEFTYW4pIGlzIGEgZ29v Z2xlIG1lbW9yeSBlcnJvciBkZXRlY3Qgc3RhbmRhcmQNCj4gPiArdG9vbC4gSXQgY291bGQgaGVs cCB0byBkZXRlY3QgdXNlLWFmdGVyLWZyZWUgYW5kDQo+ID4gK3toZWFwLHN0YWNrLGdsb2JhbH0t YnVmZmVyIG92ZXJmbG93IGJ1Z3MgaW4gQy9DKysgcHJvZ3JhbXMsIHByaW50DQo+ID4gK2RldGFp bGVkIGVycm9yIGluZm9ybWF0aW9uIHdoZW4gZXJyb3IgaGFwcGVucywgbGFyZ2UgaW1wcm92ZSBk ZWJ1Zw0KPiA+ICtlZmZpY2llbmN5Lg0KPiA+ICsNCj4gPiArQnkgcmVmZXJyaW5nIHRvIGl0cyBp bXBsZW1lbnRhdGlvbiBhbGdvcml0aG0NCj4gPiArKGh0dHBzOi8vZ2l0aHViLmNvbS9nb29nbGUv c2FuaXRpemVycy93aWtpL0FkZHJlc3NTYW5pdGl6ZXJBbGdvcml0aG0pDQo+ID4gKywgZW5hYmxl ZCBoZWFwLWJ1ZmZlci1vdmVyZmxvdyBhbmQgdXNlLWFmdGVyLWZyZWUgZnVuY3Rpb25zIG9uIGRw ZGsuDQo+ID4gK0RQREsgQVNBTiBmdW5jdGlvbiBjdXJyZW50bHkgb25seSBzdXBwb3J0cyBvbiBM aW51eCB4ODZfNjQuDQo+IA0KPiBJIHRoaW5rIHRoZSBkZXNjcmlwdGlvbiBpcyBhIGxpdHRsZSB0 byB3b3JkeSBhbmQgdW5uZWNlc3NhcmlseSByZWR1bmRhbnQgKHB1bg0KPiBpbnRlbmRlZCEpIGlu IHBsYWNlcy4gU3VnZ2VzdGVkIHJld29yZGluZzoNCj4gDQo+IGBBZGRyZXNzU2FuaXRpemVyDQo+ IDxodHRwczovL2dpdGh1Yi5jb20vZ29vZ2xlL3Nhbml0aXplcnMvd2lraS9BZGRyZXNzU2FuaXRp emVyPmAgKEFTYW4pIGlzIGENCj4gd2lkZWx5LXVzZWQgZGVidWdnaW5nIHRvb2wgdG8gZGV0ZWN0 IG1lbW9yeSBhY2Nlc3MgZXJyb3JzLiBJdCBoZWxwcyBkZXRlY3QNCj4gaXNzdWVzIGxpa2UgdXNl LWFmdGVyLWZyZWUsIHZhcmlvdXMga2luZHMgb2YgYnVmZmVyIG92ZXJydW5zIGluIEMvQysrIHBy b2dyYW1zLA0KPiBhbmQgb3RoZXIgc2ltaWxhciBlcnJvcnMsIGFzIHdlbGwgYXMgcHJpbnRpbmcg b3V0IGRldGFpbGVkIGRlYnVnIGluZm9ybWF0aW9uDQo+IHdoZW5ldmVyIGFuIGVycm9yIGlzIGRl dGVjdGVkLg0KPiANCj4gRFBESyBBU2FuIGZ1bmN0aW9uYWxpdHkgaXMgY3VycmVudGx5IG9ubHkg c3VwcG9ydGVkIExpbnV4IHg4Nl82NC4NCj4gDQoNClRoZSB2NiB2ZXJzaW9uIHdpbGwgYmUgbW9k aWZpZWQuDQoNCj4gPiArDQo+ID4gK0FkZHJlc3NTYW5pdGl6ZXIgaXMgYSBwYXJ0IG9mIExMVk0o My4xKylhbmQgR0NDKDQuOCspLg0KPiA+ICsNCj4gPiArRXhhbXBsZSBoZWFwLWJ1ZmZlci1vdmVy ZmxvdyBlcnJvcg0KPiA+ICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQo+ID4g Kw0KPiA+ICtGb2xsb3dpbmcgZXJyb3Igd2FzIHJlcG9ydGVkIHdoZW4gQXNhbiB3YXMgZW5hYmxl ZDo6DQo+ID4gKw0KPiA+ICsgICAgQXBwbGllZCA5IGJ5dGVzIG9mIG1lbW9yeSwgYnV0IGFjY2Vz c2VkIHRoZSAxMHRoIGJ5dGUgb2YgbWVtb3J5LA0KPiA+ICsgICAgc28gaGVhcC1idWZmZXItb3Zl cmZsb3cgYXBwZWFyZWQuDQo+ID4gKw0KPiA+ICtCZWxvdyBjb2RlIHJlc3VsdHMgaW4gdGhpcyBl cnJvcjo6DQo+ID4gKw0KPiA+ICsgICAgY2hhciAqcCA9IHJ0ZV96bWFsbG9jKE5VTEwsIDksIDAp Ow0KPiA+ICsgICAgaWYgKCFwKSB7DQo+ID4gKyAgICAgICAgcHJpbnRmKCJydGVfem1hbGxvYyBl cnJvci4iKTsNCj4gPiArICAgICAgICByZXR1cm4gLTE7DQo+ID4gKyAgICB9DQo+ID4gKyAgICBw WzldID0gJ2EnOw0KPiA+ICsNCj4gPiArVGhlIGVycm9yIGxvZzo6DQo+ID4gKw0KPiA+ICsgICAg PT00OTQzMz09RVJST1I6IEFkZHJlc3NTYW5pdGl6ZXI6IGhlYXAtYnVmZmVyLW92ZXJmbG93IG9u IGFkZHJlc3MNCj4gMHg3Zjc3M2ZhZmEyNDkgYXQgcGMgMHg1NTU2YjEzYmRhZTQgYnAgMHg3ZmZl YjQ5NjVlNDAgc3AgMHg3ZmZlYjQ5NjVlMzANCj4gV1JJVEUgb2Ygc2l6ZSAxIGF0IDB4N2Y3NzNm YWZhMjQ5IHRocmVhZCBUMA0KPiA+ICsgICAgIzAgMHg1NTU2YjEzYmRhZTMgaW4NCj4gYXNhbl9o ZWFwX2J1ZmZlcl9vdmVyZmxvdyAuLi9hcHAvdGVzdC90ZXN0X2FzYW5faGVhcF9idWZmZXJfb3Zl cmZsb3cuDQo+IGM6MjUNCj4gPiArICAgICMxIDB4NTU1NmIwNDNlOWQ0IGluDQo+IGNtZF9hdXRv dGVzdF9wYXJzZWQgLi4vYXBwL3Rlc3QvY29tbWFuZHMuYzo3MQ0KPiA+ICsgICAgIzIgMHg1NTU2 YjFjZGQ0YjAgaW4NCj4gY21kbGluZV9wYXJzZSAuLi9saWIvY21kbGluZS9jbWRsaW5lX3BhcnNl LmM6MjkwDQo+ID4gKyAgICAjMyAweDU1NTZiMWNkODk4NyBpbiBjbWRsaW5lX3ZhbGlkX2J1ZmZl ciAuLi9saWIvY21kbGluZS9jbWRsaW5lLmM6MjYNCj4gPiArICAgICM0IDB4NTU1NmIxY2U0Nzdh IGluIHJkbGluZV9jaGFyX2luIC4uL2xpYi9jbWRsaW5lL2NtZGxpbmVfcmRsaW5lLmM6NDIxDQo+ ID4gKyAgICAjNSAweDU1NTZiMWNkOTIzZSBpbiBjbWRsaW5lX2luIC4uL2xpYi9jbWRsaW5lL2Nt ZGxpbmUuYzoxNDkNCj4gPiArICAgICM2IDB4NTU1NmIxY2Q5NzY5IGluIGNtZGxpbmVfaW50ZXJh Y3QgLi4vbGliL2NtZGxpbmUvY21kbGluZS5jOjIyMw0KPiA+ICsgICAgIzcgMHg1NTU2YjA0NWY1 M2IgaW4gbWFpbiAuLi9hcHAvdGVzdC90ZXN0LmM6MjM0DQo+ID4gKyAgICAjOCAweDdmN2YxZWJh OTBiMiBpbiBfX2xpYmNfc3RhcnRfbWFpbiAoL2xpYi94ODZfNjQtbGludXgtDQo+IGdudS9saWJj LnNvLjYrMHgyNzBiMikNCj4gPiArICAgICM5IDB4NTU1NmIwNDNlNzBkIGluIF9zdGFydA0KPiA+ ICsgKC9ob21lL3B6aC95eXkveDg2XzY0LW5hdGl2ZS1saW51eGFwcC1nY2MvYXBwL3Rlc3QvZHBk ay0NCj4gdGVzdCsweDdjZTcwDQo+ID4gKyBkKQ0KPiA+ICsNCj4gPiArICAgIEFkZHJlc3MgMHg3 Zjc3M2ZhZmEyNDkgaXMgYSB3aWxkIHBvaW50ZXIuDQo+ID4gKyAgICBTVU1NQVJZOiBBZGRyZXNz U2FuaXRpemVyOiBoZWFwLWJ1ZmZlci0NCj4gb3ZlcmZsb3cgLi4vYXBwL3Rlc3QvdGVzdF9hc2Fu X2hlYXBfYnVmZmVyX292ZXJmbG93LmM6MjUgaW4NCj4gYXNhbl9oZWFwX2J1ZmZlcl9vdmVyZmxv dw0KPiA+ICsgICAgU2hhZG93IGJ5dGVzIGFyb3VuZCB0aGUgYnVnZ3kgYWRkcmVzczoNCj4gPiAr ICAgIDB4MGZlZjY3ZjU3M2YwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw MCAwMCAwMCAwMA0KPiA+ICsgICAgMHgwZmVmNjdmNTc0MDA6IGZhIGZhIDAwIDAwIDAwIDAwIDAw IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwDQo+ID4gKyAgICAweDBmZWY2N2Y1NzQxMDogMDAg MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDANCj4gPiArICAgIDB4 MGZlZjY3ZjU3NDIwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw MCAwMA0KPiA+ICsgICAgMHgwZmVmNjdmNTc0MzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAw IDAwIDAwIDAwIDAwIDAwIDAwIDAwDQo+ID4gKyAgICA9PjB4MGZlZjY3ZjU3NDQwOiAwMCAwMCAw MCAwMCAwMCAwMCBmYSBmYSAwMFswMV1mYSAwMCAwMCAwMCAwMCAwMA0KPiA+ICsgICAgMHgwZmVm NjdmNTc0NTA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAw DQo+ID4gKyAgICAweDBmZWY2N2Y1NzQ2MDogMDAgMDAgMDAgMDAgMDAgMDAgZmEgZmEgMDAgMDAg MDAgMDAgMDAgMDAgMDAgMDANCj4gPiArICAgIDB4MGZlZjY3ZjU3NDcwOiAwMCAwMCAwMCAwMCAw MCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMA0KPiA+ICsgICAgMHgwZmVmNjdmNTc0 ODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwDQo+ID4g Kw0KPiA+ICtFeGFtcGxlIHVzZS1hZnRlci1mcmVlIGVycm9yDQo+ID4gKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0NCj4gPiArDQo+ID4gK0ZvbGxvd2luZyBlcnJvciB3YXMgcmVwb3J0ZWQg d2hlbiBBc2FuIHdhcyBlbmFibGVkOjoNCj4gPiArDQo+ID4gKyAgICBBcHBsaWVkIGZvciA5IGJ5 dGVzIG9mIG1lbW9yeSwgYW5kIGFjY2Vzc2VkIHRoZSBmaXJzdCBieXRlIGFmdGVyDQo+ID4gKyAg ICByZWxlYXNlZCwgc28gaGVhcC11c2UtYWZ0ZXItZnJlZSBhcHBlYXJlZC4NCj4gPiArDQo+ID4g K0JlbG93IGNvZGUgcmVzdWx0cyBpbiB0aGlzIGVycm9yOjoNCj4gPiArDQo+ID4gKyAgICBjaGFy ICpwID0gcnRlX3ptYWxsb2MoTlVMTCwgOSwgMCk7DQo+ID4gKyAgICBpZiAoIXApIHsNCj4gPiAr ICAgICAgICBwcmludGYoInJ0ZV96bWFsbG9jIGVycm9yLiIpOw0KPiA+ICsgICAgICAgIHJldHVy biAtMTsNCj4gPiArICAgIH0NCj4gPiArICAgIHJ0ZV9mcmVlKHApOw0KPiA+ICsgICAgKnAgPSAn YSc7DQo+ID4gKw0KPiA+ICtUaGUgZXJyb3IgbG9nOjoNCj4gPiArDQo+ID4gKyAgICA9PTQ5NDc4 PT1FUlJPUjogQWRkcmVzc1Nhbml0aXplcjogaGVhcC11c2UtYWZ0ZXItZnJlZSBvbiBhZGRyZXNz DQo+IDB4N2ZlMmZmYWZhMjQwIGF0IHBjIDB4NTY0MDliMDg0YmM4IGJwIDB4N2ZmZWY2MmM1N2Qw IHNwIDB4N2ZmZWY2MmM1N2MwDQo+IFdSSVRFIG9mIHNpemUgMSBhdCAweDdmZTJmZmFmYTI0MCB0 aHJlYWQgVDANCj4gPiArICAgICMwIDB4NTY0MDliMDg0YmM3IGluDQo+IGFzYW5fdXNlX2FmdGVy X2ZyZWUgLi4vYXBwL3Rlc3QvdGVzdF9hc2FuX3VzZV9hZnRlcl9mcmVlLmM6MjYNCj4gPiArICAg ICMxIDB4NTY0MDlhMTA1OWQ0IGluDQo+IGNtZF9hdXRvdGVzdF9wYXJzZWQgLi4vYXBwL3Rlc3Qv Y29tbWFuZHMuYzo3MQ0KPiA+ICsgICAgIzIgMHg1NjQwOWI5YTQ0YjAgaW4NCj4gY21kbGluZV9w YXJzZSAuLi9saWIvY21kbGluZS9jbWRsaW5lX3BhcnNlLmM6MjkwDQo+ID4gKyAgICAjMyAweDU2 NDA5Yjk5Zjk4NyBpbiBjbWRsaW5lX3ZhbGlkX2J1ZmZlciAuLi9saWIvY21kbGluZS9jbWRsaW5l LmM6MjYNCj4gPiArICAgICM0IDB4NTY0MDliOWFiNzdhIGluDQo+IHJkbGluZV9jaGFyX2luIC4u L2xpYi9jbWRsaW5lL2NtZGxpbmVfcmRsaW5lLmM6NDIxDQo+ID4gKyAgICAjNSAweDU2NDA5Yjlh MDIzZSBpbiBjbWRsaW5lX2luIC4uL2xpYi9jbWRsaW5lL2NtZGxpbmUuYzoxNDkNCj4gPiArICAg ICM2IDB4NTY0MDliOWEwNzY5IGluIGNtZGxpbmVfaW50ZXJhY3QgLi4vbGliL2NtZGxpbmUvY21k bGluZS5jOjIyMw0KPiA+ICsgICAgIzcgMHg1NjQwOWExMjY1M2IgaW4gbWFpbiAuLi9hcHAvdGVz dC90ZXN0LmM6MjM0DQo+ID4gKyAgICAjOCAweDdmZWFmYWZjMjBiMiBpbiBfX2xpYmNfc3RhcnRf bWFpbiAoL2xpYi94ODZfNjQtbGludXgtDQo+IGdudS9saWJjLnNvLjYrMHgyNzBiMikNCj4gPiAr ICAgICM5IDB4NTY0MDlhMTA1NzBkIGluIF9zdGFydA0KPiA+ICsgKC9ob21lL3B6aC95eXkveDg2 XzY0LW5hdGl2ZS1saW51eGFwcC1nY2MvYXBwL3Rlc3QvZHBkay0NCj4gdGVzdCsweDdjZTcwDQo+ ID4gKyBkKQ0KPiA+ICsNCj4gPiArICAgIEFkZHJlc3MgMHg3ZmUyZmZhZmEyNDAgaXMgYSB3aWxk IHBvaW50ZXIuDQo+ID4gKyAgICBTVU1NQVJZOiBBZGRyZXNzU2FuaXRpemVyOiBoZWFwLXVzZS1h ZnRlci0NCj4gZnJlZSAuLi9hcHAvdGVzdC90ZXN0X2FzYW5fdXNlX2FmdGVyX2ZyZWUuYzoyNiBp biBhc2FuX3VzZV9hZnRlcl9mcmVlDQo+ID4gKyAgICBTaGFkb3cgYnl0ZXMgYXJvdW5kIHRoZSBi dWdneSBhZGRyZXNzOg0KPiA+ICsgICAgMHgwZmZjZGZmNTczZjA6IDAwIDAwIDAwIDAwIDAwIDAw IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwDQo+ID4gKyAgICAweDBmZmNkZmY1NzQwMDog ZmEgZmEgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDANCj4gPiArICAg IDB4MGZmY2RmZjU3NDEwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw MCAwMCAwMA0KPiA+ICsgICAgMHgwZmZjZGZmNTc0MjA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAw IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwDQo+ID4gKyAgICAweDBmZmNkZmY1NzQzMDogMDAgMDAg MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDANCj4gPiArICAgID0+MHgw ZmZjZGZmNTc0NDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwW2ZkXWZkIGZkIGZkIGZkIGZkIGZk IGZkDQo+ID4gKyAgICAweDBmZmNkZmY1NzQ1MDogMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAg MDAgMDAgMDAgMDAgMDAgMDAgMDANCj4gPiArICAgIDB4MGZmY2RmZjU3NDYwOiAwMCAwMCAwMCAw MCAwMCAwMCBmYSBmYSAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMA0KPiA+ICsgICAgMHgwZmZjZGZm NTc0NzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwDQo+ ID4gKyAgICAweDBmZmNkZmY1NzQ4MDogMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAg MDAgMDAgMDAgMDAgMDANCj4gPiArICAgIDB4MGZmY2RmZjU3NDkwOiAwMCAwMCAwMCAwMCAwMCAw MCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMA0KPiA+ICsNCj4gPiArVXNhZ2UNCj4gPiAr LS0tLS0NCj4gPiArDQo+ID4gK21lc29uIGJ1aWxkDQo+ID4gK15eXl5eXl5eXl5eDQo+ID4gKw0K PiA+ICtUbyBlbmFibGUgQXNhbiBpbiBtZXNvbiBidWlsZCBzeXN0ZW0sIHVzZSBmb2xsb3dpbmcg bWVzb24gYnVpbGQNCj4gY29tbWFuZDoNCj4gPiArDQo+ID4gK0V4YW1wbGUgdXNhZ2U6Og0KPiA+ ICsNCj4gPiArIG1lc29uIGJ1aWxkIC1EYnVpbGR0eXBlPWRlYnVnIC1EYl9sdW5kZWY9ZmFsc2Ug LURiX3Nhbml0aXplPWFkZHJlc3MNCj4gPiArIG5pbmphIC1DIGJ1aWxkDQo+ID4gKw0KPiA+ICsu LiBOb3RlOjoNCj4gPiArDQo+ID4gKyAgYSkgVGhlIGlzc3VlIG9mIGFzYW4gd2lsZCBwb2ludGVy IGlzIHRoYXQgZHBkayBhc2FuIHRvb2wgaXMgbm90IGZ1bGx5DQo+IGFkYXB0ZWQgdG8gZ29vZ2xl IGFzYW4uDQo+ID4gKyAgICAgRm9yIGV4YW1wbGU6IEFkZHJlc3MgMHg3ZmUyZmZhZmEyNDAgaXMg YSB3aWxkIHBvaW50ZXIuDQo+ID4gKyAgYikgQ2VudG9zOCBuZWVkcyB0byBpbnN0YWxsIGxpYmFz YW4gc2VwYXJhdGVseS4NCj4gPiArICBjKSBJZiB0aGUgcHJvZ3JhbSB1c2VzIGNtZGxpbmUsIHdo ZW4gYSBtZW1vcnkgYnVnIG9jY3VycywgbmVlZCB0bw0KPiBleGVjdXRlIHRoZSAic3R0eSBlY2hv IiBjb21tYW5kLg0KPiANCj4gSSB0aGluayBhbGwgb2YgdGhlIHRlcm1zIHVzZWQgaGVyZSBzaG91 bGQgYmUgcHJvcGVybHkgY2FwaXRhbGl6ZWQsIGUuZy4NCj4gIkFTYW4iIGluc3RlYWQgb2YgImFz YW4iLCAiRFBESyIgaW5zdGVhZCBvZiAiZHBkayIsIGV0Yy4NCj4gDQo+IEFsc28sIGkgZG9uJ3Qg cXVpdGUgZm9sbG93IHRoZSAnYSknIHNlY3Rpb24gLSB3aGF0IGV4YWN0bHkgaXMgYSB3aWxkIHBv aW50ZXI/IFdoYXQNCj4gbWFrZXMgYSBwb2ludGVyICd3aWxkJywgYW5kIHdoeSBkbyB3ZSBjYXJl PyBJZiB0aGUgcG9pbnQgaXMgdGhhdCBEUERLJ3MgQVNhbg0KPiBpbXBsZW1lbnRhdGlvbiBkb2Vz IG5vdCBzdXBwb3J0IGFsbCBBU2FuIGZlYXR1cmVzLCB0aGVuIG1heWJlIHRoaXMgY291bGQNCj4g YmUgd29yZGVkIGJldHRlciwgZS5nLiBsaWtlIHNvOg0KPiANCj4gYSkgU29tZSBvZiB0aGUgZmVh dHVyZXMgb2YgQVNhbiAoZm9yIGV4YW1wbGUsICd3aWxkIHBvaW50ZXJzJykgYXJlIG5vdA0KPiBj dXJyZW50bHkgc3VwcG9ydGVkIGJ5IERQREsncyBpbXBsZW1lbnRhdGlvbg0KDQpUaGUgdjYgdmVy c2lvbiB3aWxsIGJlIG1vZGlmaWVkLg0KDQo+ID4gZGlmZiAtLWdpdCBhL2RvYy9ndWlkZXMvcHJv Z19ndWlkZS9pbmRleC5yc3QNCj4gPiBiL2RvYy9ndWlkZXMvcHJvZ19ndWlkZS9pbmRleC5yc3Qg aW5kZXggMmRjZTUwN2Y0Ni4uZGY4YTRiOTNlMSAxMDA2NDQNCj4gPiAtLS0gYS9kb2MvZ3VpZGVz L3Byb2dfZ3VpZGUvaW5kZXgucnN0DQo+ID4gKysrIGIvZG9jL2d1aWRlcy9wcm9nX2d1aWRlL2lu ZGV4LnJzdA0KPiA+IEBAIC03MSwzICs3MSw0IEBAIFByb2dyYW1tZXIncyBHdWlkZQ0KPiA+ICAg ICAgIGx0bw0KPiA+ICAgICAgIHByb2ZpbGVfYXBwDQo+ID4gICAgICAgZ2xvc3NhcnkNCj4gPiAr ICAgIGFzYW4NCj4gPiBkaWZmIC0tZ2l0IGEvbGliL2VhbC9jb21tb24vbWFsbG9jX2VsZW0uYw0K PiA+IGIvbGliL2VhbC9jb21tb24vbWFsbG9jX2VsZW0uYyBpbmRleCBjMmM5NDYxZjFkLi5iZGQy MGExNjJlIDEwMDY0NA0KPiA+IC0tLSBhL2xpYi9lYWwvY29tbW9uL21hbGxvY19lbGVtLmMNCj4g PiArKysgYi9saWIvZWFsL2NvbW1vbi9tYWxsb2NfZWxlbS5jDQo+ID4gQEAgLTQ0Niw2ICs0NDYs OCBAQCBtYWxsb2NfZWxlbV9hbGxvYyhzdHJ1Y3QgbWFsbG9jX2VsZW0gKmVsZW0sDQo+IHNpemVf dCBzaXplLCB1bnNpZ25lZCBhbGlnbiwNCj4gPiAgIAkJc3RydWN0IG1hbGxvY19lbGVtICpuZXdf ZnJlZV9lbGVtID0NCj4gPiAgIAkJCQlSVEVfUFRSX0FERChuZXdfZWxlbSwgc2l6ZSArDQo+IE1B TExPQ19FTEVNX09WRVJIRUFEKTsNCj4gPg0KPiA+ICsJCWFzYW5fY2xlYXJfc3BsaXRfYWxsb2N6 b25lKG5ld19mcmVlX2VsZW0pOw0KPiA+ICsNCj4gPiAgIAkJc3BsaXRfZWxlbShlbGVtLCBuZXdf ZnJlZV9lbGVtKTsNCj4gPiAgIAkJbWFsbG9jX2VsZW1fZnJlZV9saXN0X2luc2VydChuZXdfZnJl ZV9lbGVtKTsNCj4gPg0KPiA+IEBAIC00NTgsNiArNDYwLDggQEAgbWFsbG9jX2VsZW1fYWxsb2Mo c3RydWN0IG1hbGxvY19lbGVtICplbGVtLA0KPiBzaXplX3Qgc2l6ZSwgdW5zaWduZWQgYWxpZ24s DQo+ID4gICAJCWVsZW0tPnN0YXRlID0gRUxFTV9CVVNZOw0KPiA+ICAgCQllbGVtLT5wYWQgPSBv bGRfZWxlbV9zaXplOw0KPiA+DQo+ID4gKwkJYXNhbl9jbGVhcl9hbGxvY3pvbmUoZWxlbSk7DQo+ ID4gKw0KPiA+ICAgCQkvKiBwdXQgYSBkdW1teSBoZWFkZXIgaW4gcGFkZGluZywgdG8gcG9pbnQg dG8gcmVhbCBlbGVtZW50DQo+IGhlYWRlciAqLw0KPiA+ICAgCQlpZiAoZWxlbS0+cGFkID4gMCkg eyAvKiBwYWQgd2lsbCBiZSBhdCBsZWFzdCA2NC1ieXRlcywgYXMNCj4gZXZlcnl0aGluZw0KPiA+ ICAgCQkgICAgICAgICAgICAgICAgICAgICAqIGlzIGNhY2hlLWxpbmUgYWxpZ25lZCAqLyBAQCAt NDcwLDEyICs0NzQsMTgNCj4gPiBAQCBtYWxsb2NfZWxlbV9hbGxvYyhzdHJ1Y3QgbWFsbG9jX2Vs ZW0gKmVsZW0sIHNpemVfdCBzaXplLCB1bnNpZ25lZA0KPiBhbGlnbiwNCj4gPiAgIAkJcmV0dXJu IG5ld19lbGVtOw0KPiA+ICAgCX0NCj4gPg0KPiA+ICsJYXNhbl9jbGVhcl9zcGxpdF9hbGxvY3pv bmUobmV3X2VsZW0pOw0KPiA+ICsNCj4gPiAgIAkvKiB3ZSBhcmUgZ29pbmcgdG8gc3BsaXQgdGhl IGVsZW1lbnQgaW4gdHdvLiBUaGUgb3JpZ2luYWwgZWxlbWVudA0KPiA+ICAgCSAqIHJlbWFpbnMg ZnJlZSwgYW5kIHRoZSBuZXcgZWxlbWVudCBpcyB0aGUgb25lIGFsbG9jYXRlZC4NCj4gPiAgIAkg KiBSZS1pbnNlcnQgb3JpZ2luYWwgZWxlbWVudCwgaW4gY2FzZSBpdHMgbmV3IHNpemUgbWFrZXMg aXQNCj4gPiAgIAkgKiBiZWxvbmcgb24gYSBkaWZmZXJlbnQgbGlzdC4NCj4gPiAgIAkgKi8NCj4g PiArDQo+ID4gICAJc3BsaXRfZWxlbShlbGVtLCBuZXdfZWxlbSk7DQo+ID4gKw0KPiA+ICsJYXNh bl9jbGVhcl9hbGxvY3pvbmUobmV3X2VsZW0pOw0KPiA+ICsNCj4gPiAgIAluZXdfZWxlbS0+c3Rh dGUgPSBFTEVNX0JVU1k7DQo+ID4gICAJbWFsbG9jX2VsZW1fZnJlZV9saXN0X2luc2VydChlbGVt KTsNCj4gPg0KPiA+IEBAIC02MDEsNiArNjExLDggQEAgbWFsbG9jX2VsZW1faGlkZV9yZWdpb24o c3RydWN0IG1hbGxvY19lbGVtDQo+ICplbGVtLCB2b2lkICpzdGFydCwgc2l6ZV90IGxlbikNCj4g PiAgIAlpZiAobmV4dCAmJiBuZXh0X2VsZW1faXNfYWRqYWNlbnQoZWxlbSkpIHsNCj4gPiAgIAkJ bGVuX2FmdGVyID0gUlRFX1BUUl9ESUZGKG5leHQsIGhpZGVfZW5kKTsNCj4gPiAgIAkJaWYgKGxl bl9hZnRlciA+PSBNQUxMT0NfRUxFTV9PVkVSSEVBRCArDQo+IE1JTl9EQVRBX1NJWkUpIHsNCj4g PiArCQkJYXNhbl9jbGVhcl9zcGxpdF9hbGxvY3pvbmUoaGlkZV9lbmQpOw0KPiA+ICsNCj4gPiAg IAkJCS8qIHNwbGl0IGFmdGVyICovDQo+ID4gICAJCQlzcGxpdF9lbGVtKGVsZW0sIGhpZGVfZW5k KTsNCj4gPg0KPiA+IEBAIC02MTUsNiArNjI3LDggQEAgbWFsbG9jX2VsZW1faGlkZV9yZWdpb24o c3RydWN0IG1hbGxvY19lbGVtDQo+ICplbGVtLCB2b2lkICpzdGFydCwgc2l6ZV90IGxlbikNCj4g PiAgIAlpZiAocHJldiAmJiBwcmV2X2VsZW1faXNfYWRqYWNlbnQoZWxlbSkpIHsNCj4gPiAgIAkJ bGVuX2JlZm9yZSA9IFJURV9QVFJfRElGRihoaWRlX3N0YXJ0LCBlbGVtKTsNCj4gPiAgIAkJaWYg KGxlbl9iZWZvcmUgPj0gTUFMTE9DX0VMRU1fT1ZFUkhFQUQgKw0KPiBNSU5fREFUQV9TSVpFKSB7 DQo+ID4gKwkJCWFzYW5fY2xlYXJfc3BsaXRfYWxsb2N6b25lKGhpZGVfc3RhcnQpOw0KPiA+ICsN Cj4gPiAgIAkJCS8qIHNwbGl0IGJlZm9yZSAqLw0KPiA+ICAgCQkJc3BsaXRfZWxlbShlbGVtLCBo aWRlX3N0YXJ0KTsNCj4gPg0KPiA+IEBAIC02MjgsNiArNjQyLDggQEAgbWFsbG9jX2VsZW1faGlk ZV9yZWdpb24oc3RydWN0IG1hbGxvY19lbGVtDQo+ICplbGVtLCB2b2lkICpzdGFydCwgc2l6ZV90 IGxlbikNCj4gPiAgIAkJfQ0KPiA+ICAgCX0NCj4gPg0KPiA+ICsJYXNhbl9jbGVhcl9hbGxvY3pv bmUoZWxlbSk7DQo+ID4gKw0KPiA+ICAgCXJlbW92ZV9lbGVtKGVsZW0pOw0KPiA+ICAgfQ0KPiA+ DQo+ID4gQEAgLTY0MSw4ICs2NTcsMTAgQEAgbWFsbG9jX2VsZW1fcmVzaXplKHN0cnVjdCBtYWxs b2NfZWxlbSAqZWxlbSwNCj4gc2l6ZV90IHNpemUpDQo+ID4gICAJY29uc3Qgc2l6ZV90IG5ld19z aXplID0gc2l6ZSArIGVsZW0tPnBhZCArDQo+IE1BTExPQ19FTEVNX09WRVJIRUFEOw0KPiA+DQo+ ID4gICAJLyogaWYgd2UgcmVxdWVzdCBhIHNtYWxsZXIgc2l6ZSwgdGhlbiBhbHdheXMgcmV0dXJu IG9rICovDQo+ID4gLQlpZiAoZWxlbS0+c2l6ZSA+PSBuZXdfc2l6ZSkNCj4gPiArCWlmIChlbGVt LT5zaXplID49IG5ld19zaXplKSB7DQo+ID4gKwkJYXNhbl9jbGVhcl9hbGxvY3pvbmUoZWxlbSk7 DQo+ID4gICAJCXJldHVybiAwOw0KPiA+ICsJfQ0KPiA+DQo+ID4gICAJLyogY2hlY2sgaWYgdGhl cmUgaXMgYSBuZXh0IGVsZW1lbnQsIGl0J3MgZnJlZSBhbmQgYWRqYWNlbnQgKi8NCj4gPiAgIAlp ZiAoIWVsZW0tPm5leHQgfHwgZWxlbS0+bmV4dC0+c3RhdGUgIT0gRUxFTV9GUkVFIHx8IEBAIC02 NjEsOQ0KPiA+ICs2NzksMTUgQEAgbWFsbG9jX2VsZW1fcmVzaXplKHN0cnVjdCBtYWxsb2NfZWxl bSAqZWxlbSwgc2l6ZV90IHNpemUpDQo+ID4gICAJCS8qIG5vdyB3ZSBoYXZlIGEgYmlnIGJsb2Nr IHRvZ2V0aGVyLiBMZXRzIGN1dCBpdCBkb3duIGEgYml0LA0KPiBieSBzcGxpdHRpbmcgKi8NCj4g PiAgIAkJc3RydWN0IG1hbGxvY19lbGVtICpzcGxpdF9wdCA9IFJURV9QVFJfQUREKGVsZW0sDQo+ IG5ld19zaXplKTsNCj4gPiAgIAkJc3BsaXRfcHQgPSBSVEVfUFRSX0FMSUdOX0NFSUwoc3BsaXRf cHQsDQo+IFJURV9DQUNIRV9MSU5FX1NJWkUpOw0KPiA+ICsNCj4gPiArCQlhc2FuX2NsZWFyX3Nw bGl0X2FsbG9jem9uZShzcGxpdF9wdCk7DQo+ID4gKw0KPiA+ICAgCQlzcGxpdF9lbGVtKGVsZW0s IHNwbGl0X3B0KTsNCj4gPiAgIAkJbWFsbG9jX2VsZW1fZnJlZV9saXN0X2luc2VydChzcGxpdF9w dCk7DQo+ID4gICAJfQ0KPiA+ICsNCj4gPiArCWFzYW5fY2xlYXJfYWxsb2N6b25lKGVsZW0pOw0K PiA+ICsNCj4gPiAgIAlyZXR1cm4gMDsNCj4gPiAgIH0NCj4gPg0KPiA+IGRpZmYgLS1naXQgYS9s aWIvZWFsL2NvbW1vbi9tYWxsb2NfZWxlbS5oDQo+ID4gYi9saWIvZWFsL2NvbW1vbi9tYWxsb2Nf ZWxlbS5oIGluZGV4IGExZTVmN2YwMmMuLjAxYTczOWYyZWEgMTAwNjQ0DQo+ID4gLS0tIGEvbGli L2VhbC9jb21tb24vbWFsbG9jX2VsZW0uaA0KPiA+ICsrKyBiL2xpYi9lYWwvY29tbW9uL21hbGxv Y19lbGVtLmgNCj4gPiBAQCAtNyw2ICs3LDE0IEBADQo+ID4NCj4gPiAgICNpbmNsdWRlIDxzdGRi b29sLmg+DQo+ID4NCj4gPiArI2lmZGVmIF9fU0FOSVRJWkVfQUREUkVTU19fDQo+ID4gKyNkZWZp bmUgUlRFX01BTExPQ19BU0FODQo+ID4gKyNlbGlmIGRlZmluZWQoX19oYXNfZmVhdHVyZSkNCj4g PiArIyBpZiBfX2hhc19mZWF0dXJlKGFkZHJlc3Nfc2FuaXRpemVyKSAjZGVmaW5lIFJURV9NQUxM T0NfQVNBTiAjDQo+IGVuZGlmDQo+ID4gKyNlbmRpZg0KPiA+ICsNCj4gPiAgICNkZWZpbmUgTUlO X0RBVEFfU0laRSAoUlRFX0NBQ0hFX0xJTkVfU0laRSkNCj4gPg0KPiA+ICAgLyogZHVtbXkgZGVm aW5pdGlvbiBvZiBzdHJ1Y3Qgc28gd2UgY2FuIHVzZSBwb2ludGVycyB0byBpdCBpbg0KPiA+IG1h bGxvY19lbGVtIHN0cnVjdCAqLyBAQCAtMzYsMTAgKzQ0LDIwIEBAIHN0cnVjdCBtYWxsb2NfZWxl bSB7DQo+ID4gICAJdWludDY0X3QgaGVhZGVyX2Nvb2tpZTsgICAgICAgICAvKiBDb29raWUgbWFy a2luZyBzdGFydCBvZiBkYXRhICovDQo+ID4gICAJICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAvKiB0cmFpbGVyIGNvb2tpZSBhdCBzdGFydCArIHNpemUgKi8NCj4gPiAgICNlbmRpZg0K PiA+ICsjaWZkZWYgUlRFX01BTExPQ19BU0FODQo+ID4gKwlzaXplX3QgdXNlcl9zaXplOw0KPiA+ ICsJdWludDY0X3QgYXNhbl9jb29raWVbMl07IC8qbXVzdCBiZSBuZXh0IHRvIGhlYWRlcl9jb29r aWUqLyAjZW5kaWYNCj4gPiAgIH0gX19ydGVfY2FjaGVfYWxpZ25lZDsNCj4gPg0KPiA+ICtzdGF0 aWMgY29uc3QgdW5zaWduZWQgaW50IE1BTExPQ19FTEVNX0hFQURFUl9MRU4gPSBzaXplb2Yoc3Ry dWN0DQo+ID4gK21hbGxvY19lbGVtKTsNCj4gPiArDQo+ID4gICAjaWZuZGVmIFJURV9NQUxMT0Nf REVCVUcNCj4gPiAtc3RhdGljIGNvbnN0IHVuc2lnbmVkIE1BTExPQ19FTEVNX1RSQUlMRVJfTEVO ID0gMDsNCj4gPiArI2lmZGVmIFJURV9NQUxMT0NfQVNBTg0KPiA+ICtzdGF0aWMgY29uc3QgdW5z aWduZWQgaW50IE1BTExPQ19FTEVNX1RSQUlMRVJfTEVOID0NCj4gPiArUlRFX0NBQ0hFX0xJTkVf U0laRTsgI2Vsc2Ugc3RhdGljIGNvbnN0IHVuc2lnbmVkIGludA0KPiA+ICtNQUxMT0NfRUxFTV9U UkFJTEVSX0xFTjsgI2VuZGlmDQo+ID4NCj4gPiAgIC8qIGR1bW15IGZ1bmN0aW9uIC0ganVzdCBj aGVjayBpZiBwb2ludGVyIGlzIG5vbi1udWxsICovDQo+ID4gICBzdGF0aWMgaW5saW5lIGludA0K PiA+IEBAIC01NSw3ICs3Myw3IEBAIHNldF90cmFpbGVyKHN0cnVjdCBtYWxsb2NfZWxlbSAqZWxl bSBfX3J0ZV91bnVzZWQpew0KPiA+IH0NCj4gPg0KPiA+DQo+ID4gICAjZWxzZQ0KPiA+IC1zdGF0 aWMgY29uc3QgdW5zaWduZWQgTUFMTE9DX0VMRU1fVFJBSUxFUl9MRU4gPQ0KPiBSVEVfQ0FDSEVf TElORV9TSVpFOw0KPiA+ICtzdGF0aWMgY29uc3QgdW5zaWduZWQgaW50IE1BTExPQ19FTEVNX1RS QUlMRVJfTEVOID0NCj4gPiArUlRFX0NBQ0hFX0xJTkVfU0laRTsNCj4gDQo+IFRoaXMgZG9lc24n dCBsb29rIGxpa2UgaXQncyBjaGFuZ2luZyBhbnl0aGluZyAtIG1heWJlIGRyb3AgdGhpcyBwYXJ0 aWN1bGFyIGh1bg0KPiBmcm9tIHRoZSBwYXRjaD8NCj4NCg0KU29sdmUgdGhlIGlzc3VlIG9mIHN0 YXRpYyBjb2RlIGluc3BlY3Rpb24uDQoNCj4gPg0KPiA+ICAgI2RlZmluZSBNQUxMT0NfSEVBREVS X0NPT0tJRSAgIDB4YmFkYmFkYmFkYWRkMmU1NVVMTCAvKio8DQo+IEhlYWRlciBjb29raWUuICov DQo+ID4gICAjZGVmaW5lIE1BTExPQ19UUkFJTEVSX0NPT0tJRSAgMHhhZGQyZTU1YmFkYmFkYmFk VUxMIC8qKjwgVHJhaWxlcg0KPiA+IGNvb2tpZS4qLyBAQCAtOTAsOSArMTA4LDE2OSBAQCBtYWxs b2NfZWxlbV9jb29raWVzX29rKGNvbnN0IHN0cnVjdA0KPiA+IG1hbGxvY19lbGVtICplbGVtKQ0K PiA+DQo+ID4gICAjZW5kaWYNCj4gPg0KPiA+IC1zdGF0aWMgY29uc3QgdW5zaWduZWQgTUFMTE9D X0VMRU1fSEVBREVSX0xFTiA9IHNpemVvZihzdHJ1Y3QNCj4gbWFsbG9jX2VsZW0pOw0KPiA+ICAg I2RlZmluZSBNQUxMT0NfRUxFTV9PVkVSSEVBRCAoTUFMTE9DX0VMRU1fSEVBREVSX0xFTiArDQo+ ID4gTUFMTE9DX0VMRU1fVFJBSUxFUl9MRU4pDQo+ID4NCj4gPiArI2lmZGVmIFJURV9NQUxMT0Nf QVNBTg0KPiA+ICsNCj4gPiArI2RlZmluZSBBU0FOX1NIQURPV19HUkFJTl9TSVpFCTgNCj4gPiAr I2RlZmluZSBBU0FOX01FTV9GUkVFX0ZMQUcJMHhmZA0KPiA+ICsjZGVmaW5lIEFTQU5fTUVNX1JF RFpPTkVfRkxBRwkweGZhDQo+ID4gKyNkZWZpbmUgQVNBTl9NRU1fVE9fU0hBRE9XKG1lbSkgKCgo bWVtKSA+PiAzKSArDQo+IDB4MDAwMDdmZmY4MDAwKQ0KPiANCj4gTWF5YmUgbWFrZSBpdCBtb3Jl IHBvaW50ZXItc2FmZSwgbGlrZSBzbz8NCj4gDQo+ICNkZWZpbmUgQVNBTl9NRU1fU0hJRlQobWVt KSAoKHZvaWQqKSgodWludHB0cl90KW1lbSA+PiAzKSkgI2RlZmluZQ0KPiBBU0FOX0JBU0VfQURE UiAweDAwMDA3ZmZmODAwMCAjZGVmaW5lIEFTQU5fTUVNX1RPX1NIQURPVyhtZW0pDQo+IFJURV9Q VFJfQUREKEFTQU5fTUVNX1NISUZUKG1lbSksDQo+IEFTQU5fQkFTRV9BRERSKQ0KPiANCg0KVGhl IHY2IHZlcnNpb24gd2lsbCBiZSBtb2RpZmllZC4NCg0KPiBXZSBjb3VsZCBldmVuIGFkZCBhIG5l dyBydGVfY29tbW9uLmggbWFjcm9zIGZvcg0KPiBSVEVfUFRSX0xTSElGVC9SU0hJRlQuDQo+IFRo ZSBhZHZhbnRhZ2Ugb2YgdGhpcyBzdWdnZXN0aW9uIGlzIHRoYXQgeW91IHdvbid0IG5lZWQgdG8g bWFrZSBzbyBtYW55DQo+IHR5cGVjYXN0cyBhbnkgbW9yZS4NCj4gDQo+ID4gKw0KPiA+ICsjaWYg ZGVmaW5lZChfX2NsYW5nX18pDQo+ID4gK19fYXR0cmlidXRlX18oKG5vX3Nhbml0aXplKCJhZGRy ZXNzIiwgImh3YWRkcmVzcyIpKSkgI2Vsc2UNCj4gPiArX19hdHRyaWJ1dGVfXygobm9fc2FuaXRp emVfYWRkcmVzcykpDQo+ID4gKyNlbmRpZg0KPiA+ICtzdGF0aWMgaW5saW5lIHZvaWQNCj4gPiAr YXNhbl9zZXRfc2hhZG93KHZvaWQgKmFkZHIsIGNoYXIgdmFsKSB7DQo+ID4gKwkqKGNoYXIgKilh ZGRyID0gdmFsOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICtzdGF0aWMgaW5saW5lIHZvaWQNCj4gPiAr YXNhbl9zZXRfem9uZSh2b2lkICpwdHIsIHNpemVfdCBsZW4sIHVpbnQzMl90IHZhbCkgew0KPiA+ ICsJc2l6ZV90IG9mZnNldDsNCj4gPiArCWNoYXIgKnNoYWRvdzsNCj4gPiArCXNpemVfdCB6b25l X2xlbiA9IGxlbiAvIEFTQU5fU0hBRE9XX0dSQUlOX1NJWkU7DQo+ID4gKwlpZiAobGVuICUgQVNB Tl9TSEFET1dfR1JBSU5fU0laRSAhPSAwKQ0KPiA+ICsJCXpvbmVfbGVuICs9IDE7DQo+ID4gKw0K PiA+ICsJZm9yIChzaXplX3QgaSA9IDA7IGkgPCB6b25lX2xlbjsgaSsrKSB7DQo+ID4gKwkJb2Zm c2V0ID0gaSAqIEFTQU5fU0hBRE9XX0dSQUlOX1NJWkU7DQo+ID4gKwkJc2hhZG93ID0gKGNoYXIg KilBU0FOX01FTV9UT19TSEFET1coKChpbnQ2NF90KXB0ciArDQo+IG9mZnNldCkpOw0KPiANCj4g SG93IGFib3V0DQo+IA0KPiAJc2hhZG93ID0gQVNBTl9NRU1fVE9fU0hBRE9XKFJURV9QVFJfQURE KHB0ciwgb2Zmc2V0KSk7DQo+IA0KPiA/IFRoZSAnc2hhZG93JyB2YXJpYWJsZSBjYW4gYmUgdm9p ZCosIHNvIHlvdSBjYW4gZHJvcCB0aGUgY2FzdCBoZXJlIHRvby4NCj4gDQoNClRoZSB2NiB2ZXJz aW9uIHdpbGwgYmUgbW9kaWZpZWQuDQoNCj4gPiArCQlhc2FuX3NldF9zaGFkb3coc2hhZG93LCB2 YWwpOw0KPiA+ICsJfQ0KPiA+ICt9DQo+ID4gKw0KPiA+ICsvKg0KPiA+ICsgKiBXaGVuIHRoZSBt ZW1vcnkgaXMgcmVsZWFzZWQsIHRoZSByZWxlYXNlIG1hcmsgaXMNCj4gPiArICogc2V0IGluIHRo ZSBjb3JyZXNwb25kaW5nIHJhbmdlIG9mIHRoZSBzaGFkb3cgYXJlYS4NCj4gPiArICovDQo+ID4g K3N0YXRpYyBpbmxpbmUgdm9pZA0KPiA+ICthc2FuX3NldF9mcmVlem9uZSh2b2lkICpwdHIsIHNp emVfdCBzaXplKSB7DQo+ID4gKwlhc2FuX3NldF96b25lKHB0ciwgc2l6ZSwgQVNBTl9NRU1fRlJF RV9GTEFHKTsgfQ0KPiA+ICsNCj4gPiArLyoNCj4gPiArICogV2hlbiB0aGUgbWVtb3J5IGlzIGFs bG9jYXRlZCwgbWVtb3J5IHN0YXRlIG11c3Qgc2V0IGFzIGFjY2Vzc2libGUuDQo+ID4gKyAqLw0K PiA+ICtzdGF0aWMgaW5saW5lIHZvaWQNCj4gPiArYXNhbl9jbGVhcl9hbGxvY3pvbmUoc3RydWN0 IG1hbGxvY19lbGVtICplbGVtKQ0KPiA+ICt7DQo+ID4gKwlhc2FuX3NldF96b25lKCh2b2lkICop ZWxlbSwgZWxlbS0+c2l6ZSwgMHgwKTsNCj4gPiArfQ0KPiA+ICsNCj4gPiArc3RhdGljIGlubGlu ZSB2b2lkDQo+ID4gK2FzYW5fY2xlYXJfc3BsaXRfYWxsb2N6b25lKHN0cnVjdCBtYWxsb2NfZWxl bSAqZWxlbSkNCj4gPiArew0KPiA+ICsJdm9pZCAqcHRyID0gUlRFX1BUUl9TVUIoZWxlbSwgTUFM TE9DX0VMRU1fVFJBSUxFUl9MRU4pOw0KPiA+ICsJYXNhbl9zZXRfem9uZShwdHIsIE1BTExPQ19F TEVNX09WRVJIRUFELCAweDApOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICsvKg0KPiA+ICsgKiBXaGVu IHRoZSBtZW1vcnkgaXMgYWxsb2NhdGVkLCB0aGUgbWVtb3J5IGJvdW5kYXJ5IGlzDQo+ID4gKyAq IG1hcmtlZCBpbiB0aGUgY29ycmVzcG9uZGluZyByYW5nZSBvZiB0aGUgc2hhZG93IGFyZWEuDQo+ ID4gKyAqLw0KPiA+ICtzdGF0aWMgaW5saW5lIHZvaWQNCj4gPiArYXNhbl9zZXRfcmVkem9uZShz dHJ1Y3QgbWFsbG9jX2VsZW0gKmVsZW0sIHNpemVfdCB1c2VyX3NpemUpDQo+ID4gK3sNCj4gPiAr CXVpbnQ2NF90IHB0cjsNCj4gPiArCWNoYXIgKnNoYWRvdzsNCj4gPiArCWlmIChlbGVtICE9IE5V TEwpIHsNCj4gPiArCQlpZiAoZWxlbS0+c3RhdGUgIT0gRUxFTV9QQUQpDQo+ID4gKwkJCWVsZW0g PSBSVEVfUFRSX0FERChlbGVtLCBlbGVtLT5wYWQpOw0KPiA+ICsNCj4gPiArCQllbGVtLT51c2Vy X3NpemUgPSB1c2VyX3NpemU7DQo+ID4gKw0KPiA+ICsJCS8qIFNldCBtYXJrIGJlZm9yZSB0aGUg c3RhcnQgb2YgdGhlIGFsbG9jYXRlZCBtZW1vcnkgKi8NCj4gPiArCQlwdHIgPSAodWludDY0X3Qp UlRFX1BUUl9BREQoZWxlbSwNCj4gTUFMTE9DX0VMRU1fSEVBREVSX0xFTikNCj4gPiArCQkJLSBB U0FOX1NIQURPV19HUkFJTl9TSVpFOw0KPiA+ICsJCXNoYWRvdyA9IChjaGFyICopQVNBTl9NRU1f VE9fU0hBRE9XKHB0cik7DQo+ID4gKwkJYXNhbl9zZXRfc2hhZG93KHNoYWRvdywgQVNBTl9NRU1f UkVEWk9ORV9GTEFHKTsNCj4gPiArCQlzaGFkb3cgPSAoY2hhciAqKUFTQU5fTUVNX1RPX1NIQURP VyhwdHINCj4gPiArCQkJCS0gQVNBTl9TSEFET1dfR1JBSU5fU0laRSk7DQo+ID4gKwkJYXNhbl9z ZXRfc2hhZG93KHNoYWRvdywgQVNBTl9NRU1fUkVEWk9ORV9GTEFHKTsNCj4gPiArDQo+ID4gKwkJ LyogU2V0IG1hcmsgYWZ0ZXIgdGhlIGVuZCBvZiB0aGUgYWxsb2NhdGVkIG1lbW9yeSAqLw0KPiA+ ICsJCXB0ciA9ICh1aW50NjRfdClSVEVfUFRSX0FERChlbGVtLA0KPiBNQUxMT0NfRUxFTV9IRUFE RVJfTEVODQo+ID4gKwkJCQkrIGVsZW0tPnVzZXJfc2l6ZSk7DQo+ID4gKwkJc2hhZG93ID0gKGNo YXIgKilBU0FOX01FTV9UT19TSEFET1cocHRyKTsNCj4gPiArCQl1aW50MzJfdCB2YWwgPSAocHRy ICUgQVNBTl9TSEFET1dfR1JBSU5fU0laRSk7DQo+IA0KPiBJIHRoaW5rIERQREsgY29kZSBzdHls ZSBpcyB0byBkZWNsYXJlIGFsbCB2YXJpYWJsZXMgYXQgdGhlIGJlZ2lubmluZyBvZg0KPiB0aGUg YmxvY2suDQoNClRoZSB2NiB2ZXJzaW9uIHdpbGwgYmUgbW9kaWZpZWQuDQoNCj4gDQo+ID4gKwkJ dmFsID0gKHZhbCA9PSAwKSA/IEFTQU5fTUVNX1JFRFpPTkVfRkxBRyA6IHZhbDsNCj4gPiArCQlh c2FuX3NldF9zaGFkb3coc2hhZG93LCB2YWwpOw0KPiA+ICsJCXNoYWRvdyA9IChjaGFyICopQVNB Tl9NRU1fVE9fU0hBRE9XKHB0cg0KPiA+ICsJCQkJKyBBU0FOX1NIQURPV19HUkFJTl9TSVpFKTsN Cj4gPiArCQlhc2FuX3NldF9zaGFkb3coc2hhZG93LCBBU0FOX01FTV9SRURaT05FX0ZMQUcpOw0K PiANCj4gSXQgc2VlbXMgdG8gbWUgdGhhdCB0aGUgY29kZSBjYW4gYmUgcmV3cml0dGVuIHRvIGJl IG1vcmUgdW5kZXJzdGFuZGFibGUuDQo+IEZvciBleGFtcGxlLCB5b3UgY291bGQgb3B0IGZvciBt b3JlIG1lYW5pbmdmdWwgdmFyaWFibGUgbmFtZXMgYW5kIG5vdA0KPiByZXVzZSAncHRyJyBmb3Ig ZXZlcnl0aGluZy4gRXguOg0KPiANCj4gCWVsZW1fc3RhcnQgPSBSVEVfUFRSX0FERChlbGVtLCBN QUxMT0NfRUxFTV9IRUFERVJfTEVOKTsNCj4gCXN0YXJ0X3B0ciA9IFJURV9QVFJfU1VCKGVsZW1f c3RhcnQsIEFTQU5fU0hBRE9XX0dSQUlOX1NJWkUpOw0KPiAJc3RhcnRfc2hhZG93ID0gQVNBTl9N RU1fVE9fU0hBRE9XKHN0YXJ0X3B0cik7DQo+IAkvLyBqdXN0IGZvbGxvd2luZyB5b3VyIGNvZGUg aGVyZSwgYnV0IHdoeSBhcmUgd2UgZG9pbmcgaXQgdHdpY2U/DQo+IAlzdGFydF9yZWR6b25lID0g UlRFX1BUUl9TVUIoc3RhcnRfc2hhZG93LA0KPiBBU0FOX1NIQURPV19HUkFJTl9TSVpFKTsNCj4g DQo+IAlhc2FuX3NldF9zaGFkb3coc3RhcnRfc2hhZG93LCBBU0FOX01FTV9SRURaT05FX0ZMQUcp Ow0KPiAJYXNhbl9zZXRfc2hhZG93KHN0YXJ0X3JlZHpvbmUsIEFTQU5fTUVNX1JFRFpPTkVfRkxB Ryk7DQo+IA0KPiAJLi4uDQo+IA0KPiBBbmQgc2ltaWxhciBmb3IgdGhlIHJlc3Qgb2YgdGhlIGNv ZGU6IG1vcmUgbWVhbmluZ2Z1bCB2YXJpYWJsZSBuYW1lcywNCj4gbW9yZSBpbnRlcm1lZGlhdGUg dmFyaWFibGVzLCBsZXNzIHJhdyBiaXQvcHRyIG1hbmlwdWxhdGlvbiBwbGVhc2UgOikNCg0KVGhl IHY2IHZlcnNpb24gd2lsbCBiZSBtb2RpZmllZC4NCg0KPiA+ICsJfQ0KPiA+ICt9DQo+ID4gKw0K PiA+ICsvKg0KPiA+ICsgKiBXaGVuIHRoZSBtZW1vcnkgaXMgcmVsZWFzZWQsIHRoZSBtYXJrIG9m IHRoZSBtZW1vcnkgYm91bmRhcnkNCj4gPiArICogaW4gdGhlIGNvcnJlc3BvbmRpbmcgcmFuZ2Ug b2YgdGhlIHNoYWRvdyBhcmVhIGlzIGNsZWFyZWQuDQo+ID4gKyAqLw0KPiA+ICtzdGF0aWMgaW5s aW5lIHZvaWQNCj4gPiArYXNhbl9jbGVhcl9yZWR6b25lKHN0cnVjdCBtYWxsb2NfZWxlbSAqZWxl bSkNCj4gPiArew0KPiA+ICsJdWludDY0X3QgcHRyOw0KPiA+ICsJY2hhciAqc2hhZG93Ow0KPiA+ ICsJaWYgKGVsZW0gIT0gTlVMTCkgew0KPiA+ICsJCWVsZW0gPSBSVEVfUFRSX0FERChlbGVtLCBl bGVtLT5wYWQpOw0KPiA+ICsNCj4gPiArCQkvKiBDbGVhciBtYXJrIGJlZm9yZSB0aGUgc3RhcnQg b2YgdGhlIGFsbG9jYXRlZCBtZW1vcnkgKi8NCj4gPiArCQlwdHIgPSAodWludDY0X3QpUlRFX1BU Ul9BREQoZWxlbSwNCj4gTUFMTE9DX0VMRU1fSEVBREVSX0xFTikNCj4gPiArCQkJLSBBU0FOX1NI QURPV19HUkFJTl9TSVpFOw0KPiA+ICsJCXNoYWRvdyA9IChjaGFyICopQVNBTl9NRU1fVE9fU0hB RE9XKHB0cik7DQo+ID4gKwkJYXNhbl9zZXRfc2hhZG93KHNoYWRvdywgMHgwMCk7DQo+ID4gKwkJ c2hhZG93ID0gKGNoYXIgKilBU0FOX01FTV9UT19TSEFET1cocHRyDQo+ID4gKwkJCQktIEFTQU5f U0hBRE9XX0dSQUlOX1NJWkUpOw0KPiA+ICsJCWFzYW5fc2V0X3NoYWRvdyhzaGFkb3csIDB4MDAp Ow0KPiA+ICsNCj4gPiArCQkvKiBDbGVhciBtYXJrIGFmdGVyIHRoZSBlbmQgb2YgdGhlIGFsbG9j YXRlZCBtZW1vcnkgKi8NCj4gPiArCQlwdHIgPSAodWludDY0X3QpUlRFX1BUUl9BREQoZWxlbSwN Cj4gTUFMTE9DX0VMRU1fSEVBREVSX0xFTg0KPiA+ICsJCQkJKyBlbGVtLT51c2VyX3NpemUpOw0K PiA+ICsJCXNoYWRvdyA9IChjaGFyICopQVNBTl9NRU1fVE9fU0hBRE9XKHB0cik7DQo+ID4gKwkJ YXNhbl9zZXRfc2hhZG93KHNoYWRvdywgMHgwMCk7DQo+ID4gKwkJc2hhZG93ID0gKGNoYXIgKilB U0FOX01FTV9UT19TSEFET1cocHRyDQo+ID4gKwkJCQkrIEFTQU5fU0hBRE9XX0dSQUlOX1NJWkUp Ow0KPiA+ICsJCWFzYW5fc2V0X3NoYWRvdyhzaGFkb3csIDB4MDApOw0KPiANCj4gSXQgc2VlbXMg dG8gbWUgdGhhdCB5b3UncmUgcmVwZWF0aW5nIGEgbG90IG9mIGNvZGUgaGVyZSB0aGF0IHlvdSBh bHJlYWR5DQo+IGhhdmUgaW4gYGFzYW5fc2V0X3JlZHpvbmUoKWAgLSBtYXliZSBmYWN0b3IgY29t bW9uIGJpdHMgb3V0IGludG8gYQ0KPiBmdW5jdGlvbj8gRm9yIGV4YW1wbGUsDQo+IA0KDQo+IHN0 YXRpYyBpbmxpbmQgdm9pZCBwdHJfc2V0X3NoYWRvdyh2b2lkICpwdHIsIGludCBzaGFkb3dfZmxh Z3MpIHsNCj4gCXN0YXJ0cHRyID0gUlRFX1BUUl9TVUIocHRyLCBBU0FOX1NIQURPV19HUkFJTl9T SVpFKTsNCj4gCXNoYWRvdyA9IEFTQU5fTUVNX1RPX1NIQURPVyhzdGFydHB0cik7DQo+IAlhc2Fu X3NldF9zaGFkb3coc2hhZG93LCBzaGFkb3dfZmxhZ3MpOw0KPiAJc2hhZG93ID0gUlRFX1BUUl9T VUIoc2hhZG93LCBBU0FOX1NIQURPV19HUkFJTl9TSVpFKTsNCj4gCWFzYW5fc2V0X3NoYWRvdyhz aGFkb3csIHNoYWRvd19mbGFncyk7DQo+IH0NCj4gDQo+IC4uLg0KPiANCj4gYW5kIHRoZW4gY2Fs bCB0aGlzIGZyb20gd2hlcmV2ZXIgeW91IGxpa2U/IEJlY2F1c2UgdGhpcyBwYXR0ZXJuIHNlZW1z IHRvDQo+IGJlIHJlcGVhdGluZyBldmVyeXdoZXJlLCB0aGUgb25seSBkaWZmZXJlbmNlIGJlaW5n IHRoZSBwdHIgdmFsdWUgYW5kIHRoZQ0KPiBzZXRfc2hhZG93IGZsYWdzLg0KDQpUaGUgdmFyaWFi bGUgbmFtZXMgaGF2ZSBiZWVuIG1vZGlmaWVkIHRvIG1ha2UgdGhlIGNvZGUgY2xlYXJlci4NCkV4 dHJhY3RpbmcgcHVibGljIGZ1bmN0aW9ucyBpcyBub3QgcGFydGljdWxhcmx5IHVzZWZ1bCwgYW5k DQp0aGlzIGlzIGEgbG9naWNhbCBpbXBsZW1lbnRhdGlvbiwgbm90IGdlbmVyYWwgY29kZS4NCg0K c3RhdGljIGlubGluZSB2b2lkDQphc2FuX2NsZWFyX3JlZHpvbmUoc3RydWN0IG1hbGxvY19lbGVt ICplbGVtKQ0Kew0KCXVpbnRwdHJfdCBoZWFkX3JlZHpvbmU7DQoJdWludHB0cl90IHRhaWxfcmVk em9uZTsNCgl2b2lkICpoZWFkX3NoYWRvdzsNCgl2b2lkICp0YWlsX3NoYWRvdzsNCg0KCWlmIChl bGVtICE9IE5VTEwpIHsNCgkJZWxlbSA9IFJURV9QVFJfQUREKGVsZW0sIGVsZW0tPnBhZCk7DQoN CgkJLyogQ2xlYXIgbWFyayBiZWZvcmUgdGhlIHN0YXJ0IG9mIHRoZSBhbGxvY2F0ZWQgbWVtb3J5 ICovDQoJCWhlYWRfcmVkem9uZSA9ICh1aW50cHRyX3QpUlRFX1BUUl9BREQoZWxlbSwNCgkJCU1B TExPQ19FTEVNX0hFQURFUl9MRU4gLSBBU0FOX1NIQURPV19HUkFJTl9TSVpFKTsNCgkJaGVhZF9z aGFkb3cgPSBBU0FOX01FTV9UT19TSEFET1coaGVhZF9yZWR6b25lKTsNCgkJYXNhbl9zZXRfc2hh ZG93KGhlYWRfc2hhZG93LCAweDAwKTsNCgkJaGVhZF9zaGFkb3cgPSBBU0FOX01FTV9UT19TSEFE T1coaGVhZF9yZWR6b25lDQoJCQkJLSBBU0FOX1NIQURPV19HUkFJTl9TSVpFKTsNCgkJYXNhbl9z ZXRfc2hhZG93KGhlYWRfc2hhZG93LCAweDAwKTsNCg0KCQkvKiBDbGVhciBtYXJrIGFmdGVyIHRo ZSBlbmQgb2YgdGhlIGFsbG9jYXRlZCBtZW1vcnkgKi8NCgkJdGFpbF9yZWR6b25lID0gKHVpbnRw dHJfdClSVEVfUFRSX0FERChlbGVtLA0KCQkJTUFMTE9DX0VMRU1fSEVBREVSX0xFTiArIGVsZW0t PnVzZXJfc2l6ZSk7DQoJCXRhaWxfc2hhZG93ID0gQVNBTl9NRU1fVE9fU0hBRE9XKHRhaWxfcmVk em9uZSk7DQoJCWFzYW5fc2V0X3NoYWRvdyh0YWlsX3NoYWRvdywgMHgwMCk7DQoJCXRhaWxfc2hh ZG93ID0gQVNBTl9NRU1fVE9fU0hBRE9XKHRhaWxfcmVkem9uZQ0KCQkJCSsgQVNBTl9TSEFET1df R1JBSU5fU0laRSk7DQoJCWFzYW5fc2V0X3NoYWRvdyh0YWlsX3NoYWRvdywgMHgwMCk7DQoJfQ0K fQ0KDQo+ID4gKwl9DQo+ID4gK30NCj4gPiArDQo+ID4gK3N0YXRpYyBpbmxpbmUgc2l6ZV90DQo+ ID4gK29sZF9tYWxsb2Nfc2l6ZShzdHJ1Y3QgbWFsbG9jX2VsZW0gKmVsZW0pDQo+ID4gK3sNCj4g PiArCWlmIChlbGVtLT5zdGF0ZSAhPSBFTEVNX1BBRCkNCj4gPiArCQllbGVtID0gUlRFX1BUUl9B REQoZWxlbSwgZWxlbS0+cGFkKTsNCj4gPiArDQo+ID4gKwlyZXR1cm4gZWxlbS0+dXNlcl9zaXpl Ow0KPiA+ICt9DQo+ID4gKyNlbHNlDQo+ID4gK3N0YXRpYyBpbmxpbmUgdm9pZA0KPiA+ICthc2Fu X3NldF9mcmVlem9uZSh2b2lkICpwdHIgX19ydGVfdW51c2VkLCBzaXplX3Qgc2l6ZSBfX3J0ZV91 bnVzZWQpIHsgfQ0KPiA+ICsNCj4gPiArc3RhdGljIGlubGluZSB2b2lkDQo+ID4gK2FzYW5fY2xl YXJfYWxsb2N6b25lKHN0cnVjdCBtYWxsb2NfZWxlbSAqZWxlbSBfX3J0ZV91bnVzZWQpIHsgfQ0K PiA+ICsNCj4gPiArc3RhdGljIGlubGluZSB2b2lkDQo+ID4gK2FzYW5fY2xlYXJfc3BsaXRfYWxs b2N6b25lKHN0cnVjdCBtYWxsb2NfZWxlbSAqZWxlbSBfX3J0ZV91bnVzZWQpIHsgfQ0KPiA+ICsN Cj4gPiArc3RhdGljIGlubGluZSB2b2lkDQo+ID4gK2FzYW5fc2V0X3JlZHpvbmUoc3RydWN0IG1h bGxvY19lbGVtICplbGVtIF9fcnRlX3VudXNlZCwNCj4gPiArCQkJCQlzaXplX3QgdXNlcl9zaXpl IF9fcnRlX3VudXNlZCkgeyB9DQo+ID4gKw0KPiA+ICtzdGF0aWMgaW5saW5lIHZvaWQNCj4gPiAr YXNhbl9jbGVhcl9yZWR6b25lKHN0cnVjdCBtYWxsb2NfZWxlbSAqZWxlbSBfX3J0ZV91bnVzZWQp IHsgfQ0KPiA+ICsNCj4gPiArc3RhdGljIGlubGluZSBzaXplX3QNCj4gPiArb2xkX21hbGxvY19z aXplKHN0cnVjdCBtYWxsb2NfZWxlbSAqZWxlbSkNCj4gPiArew0KPiA+ICsJcmV0dXJuIGVsZW0t PnNpemUgLSBlbGVtLT5wYWQgLSBNQUxMT0NfRUxFTV9PVkVSSEVBRDsNCj4gPiArfQ0KPiA+ICsj ZW5kaWYNCj4gPiArDQo+ID4gICAvKg0KPiA+ICAgICogR2l2ZW4gYSBwb2ludGVyIHRvIHRoZSBz dGFydCBvZiBhIG1lbW9yeSBibG9jayByZXR1cm5lZCBieSBtYWxsb2MsIGdldA0KPiA+ICAgICog dGhlIGFjdHVhbCBtYWxsb2NfZWxlbSBoZWFkZXIgZm9yIHRoYXQgYmxvY2suDQo+ID4gZGlmZiAt LWdpdCBhL2xpYi9lYWwvY29tbW9uL21hbGxvY19oZWFwLmMNCj4gYi9saWIvZWFsL2NvbW1vbi9t YWxsb2NfaGVhcC5jDQo+ID4gaW5kZXggZWU0MDBmMzhlYy4uNzc1ZDY3ODlkZiAxMDA2NDQNCj4g PiAtLS0gYS9saWIvZWFsL2NvbW1vbi9tYWxsb2NfaGVhcC5jDQo+ID4gKysrIGIvbGliL2VhbC9j b21tb24vbWFsbG9jX2hlYXAuYw0KPiA+IEBAIC0yMzcsNiArMjM3LDcgQEAgaGVhcF9hbGxvYyhz dHJ1Y3QgbWFsbG9jX2hlYXAgKmhlYXAsIGNvbnN0IGNoYXINCj4gKnR5cGUgX19ydGVfdW51c2Vk LCBzaXplX3Qgc2l6ZSwNCj4gPiAgIAkJdW5zaWduZWQgaW50IGZsYWdzLCBzaXplX3QgYWxpZ24s IHNpemVfdCBib3VuZCwgYm9vbCBjb250aWcpDQo+ID4gICB7DQo+ID4gICAJc3RydWN0IG1hbGxv Y19lbGVtICplbGVtOw0KPiA+ICsJc2l6ZV90IHVzZXJfc2l6ZSA9IHNpemU7DQo+ID4NCj4gPiAg IAlzaXplID0gUlRFX0NBQ0hFX0xJTkVfUk9VTkRVUChzaXplKTsNCj4gPiAgIAlhbGlnbiA9IFJU RV9DQUNIRV9MSU5FX1JPVU5EVVAoYWxpZ24pOw0KPiA+IEBAIC0yNTAsNiArMjUxLDggQEAgaGVh cF9hbGxvYyhzdHJ1Y3QgbWFsbG9jX2hlYXAgKmhlYXAsIGNvbnN0IGNoYXINCj4gKnR5cGUgX19y dGVfdW51c2VkLCBzaXplX3Qgc2l6ZSwNCj4gPg0KPiA+ICAgCQkvKiBpbmNyZWFzZSBoZWFwJ3Mg Y291bnQgb2YgYWxsb2NhdGVkIGVsZW1lbnRzICovDQo+ID4gICAJCWhlYXAtPmFsbG9jX2NvdW50 Kys7DQo+ID4gKw0KPiA+ICsJCWFzYW5fc2V0X3JlZHpvbmUoZWxlbSwgdXNlcl9zaXplKTsNCj4g PiAgIAl9DQo+ID4NCj4gPiAgIAlyZXR1cm4gZWxlbSA9PSBOVUxMID8gTlVMTCA6ICh2b2lkICop KCZlbGVtWzFdKTsNCj4gPiBAQCAtMjcwLDYgKzI3Myw4IEBAIGhlYXBfYWxsb2NfYmlnZ2VzdChz dHJ1Y3QgbWFsbG9jX2hlYXAgKmhlYXAsDQo+IGNvbnN0IGNoYXIgKnR5cGUgX19ydGVfdW51c2Vk LA0KPiA+DQo+ID4gICAJCS8qIGluY3JlYXNlIGhlYXAncyBjb3VudCBvZiBhbGxvY2F0ZWQgZWxl bWVudHMgKi8NCj4gPiAgIAkJaGVhcC0+YWxsb2NfY291bnQrKzsNCj4gPiArDQo+ID4gKwkJYXNh bl9zZXRfcmVkem9uZShlbGVtLCBzaXplKTsNCj4gPiAgIAl9DQo+ID4NCj4gPiAgIAlyZXR1cm4g ZWxlbSA9PSBOVUxMID8gTlVMTCA6ICh2b2lkICopKCZlbGVtWzFdKTsNCj4gPiBAQCAtODQxLDYg Kzg0Niw4IEBAIG1hbGxvY19oZWFwX2ZyZWUoc3RydWN0IG1hbGxvY19lbGVtICplbGVtKQ0KPiA+ ICAgCWlmICghbWFsbG9jX2VsZW1fY29va2llc19vayhlbGVtKSB8fCBlbGVtLT5zdGF0ZSAhPSBF TEVNX0JVU1kpDQo+ID4gICAJCXJldHVybiAtMTsNCj4gPg0KPiA+ICsJYXNhbl9jbGVhcl9yZWR6 b25lKGVsZW0pOw0KPiA+ICsNCj4gPiAgIAkvKiBlbGVtIG1heSBiZSBtZXJnZWQgd2l0aCBwcmV2 aW91cyBlbGVtZW50LCBzbyBrZWVwIGhlYXANCj4gYWRkcmVzcyAqLw0KPiA+ICAgCWhlYXAgPSBl bGVtLT5oZWFwOw0KPiA+ICAgCW1zbCA9IGVsZW0tPm1zbDsNCj4gPiBAQCAtODQ4LDYgKzg1NSw5 IEBAIG1hbGxvY19oZWFwX2ZyZWUoc3RydWN0IG1hbGxvY19lbGVtICplbGVtKQ0KPiA+DQo+ID4g ICAJcnRlX3NwaW5sb2NrX2xvY2soJihoZWFwLT5sb2NrKSk7DQo+ID4NCj4gPiArCXZvaWQgKmFz YW5fcHRyID0gUlRFX1BUUl9BREQoZWxlbSwgTUFMTE9DX0VMRU1fSEVBREVSX0xFTg0KPiArIGVs ZW0tPnBhZCk7DQo+ID4gKwlzaXplX3QgYXNhbl9kYXRhX2xlbiA9IGVsZW0tPnNpemUgLSBNQUxM T0NfRUxFTV9PVkVSSEVBRCAtDQo+IGVsZW0tPnBhZDsNCj4gPiArDQo+ID4gICAJLyogbWFyayBl bGVtZW50IGFzIGZyZWUgKi8NCj4gPiAgIAllbGVtLT5zdGF0ZSA9IEVMRU1fRlJFRTsNCj4gPg0K PiA+IEBAIC0xMDAxLDYgKzEwMTEsOCBAQCBtYWxsb2NfaGVhcF9mcmVlKHN0cnVjdCBtYWxsb2Nf ZWxlbSAqZWxlbSkNCj4gPg0KPiA+ICAgCXJ0ZV9tY2ZnX21lbV93cml0ZV91bmxvY2soKTsNCj4g PiAgIGZyZWVfdW5sb2NrOg0KPiA+ICsJYXNhbl9zZXRfZnJlZXpvbmUoYXNhbl9wdHIsIGFzYW5f ZGF0YV9sZW4pOw0KPiA+ICsNCj4gPiAgIAlydGVfc3BpbmxvY2tfdW5sb2NrKCYoaGVhcC0+bG9j aykpOw0KPiA+ICAgCXJldHVybiByZXQ7DQo+ID4gICB9DQo+ID4gZGlmZiAtLWdpdCBhL2xpYi9l YWwvY29tbW9uL3J0ZV9tYWxsb2MuYyBiL2xpYi9lYWwvY29tbW9uL3J0ZV9tYWxsb2MuYw0KPiA+ IGluZGV4IDlkMzllNThjMDguLmQwYmVjMjY5MjAgMTAwNjQ0DQo+ID4gLS0tIGEvbGliL2VhbC9j b21tb24vcnRlX21hbGxvYy5jDQo+ID4gKysrIGIvbGliL2VhbC9jb21tb24vcnRlX21hbGxvYy5j DQo+ID4gQEAgLTE2Miw2ICsxNjIsOCBAQCBydGVfY2FsbG9jKGNvbnN0IGNoYXIgKnR5cGUsIHNp emVfdCBudW0sIHNpemVfdCBzaXplLA0KPiB1bnNpZ25lZCBhbGlnbikNCj4gPiAgIHZvaWQgKg0K PiA+ICAgcnRlX3JlYWxsb2Nfc29ja2V0KHZvaWQgKnB0ciwgc2l6ZV90IHNpemUsIHVuc2lnbmVk IGludCBhbGlnbiwgaW50IHNvY2tldCkNCj4gPiAgIHsNCj4gPiArCXNpemVfdCB1c2VyX3NpemU7 DQo+ID4gKw0KPiA+ICAgCWlmIChwdHIgPT0gTlVMTCkNCj4gPiAgIAkJcmV0dXJuIHJ0ZV9tYWxs b2Nfc29ja2V0KE5VTEwsIHNpemUsIGFsaWduLCBzb2NrZXQpOw0KPiA+DQo+ID4gQEAgLTE3MSw2 ICsxNzMsOCBAQCBydGVfcmVhbGxvY19zb2NrZXQodm9pZCAqcHRyLCBzaXplX3Qgc2l6ZSwgdW5z aWduZWQNCj4gaW50IGFsaWduLCBpbnQgc29ja2V0KQ0KPiA+ICAgCQlyZXR1cm4gTlVMTDsNCj4g PiAgIAl9DQo+ID4NCj4gPiArCXVzZXJfc2l6ZSA9IHNpemU7DQo+ID4gKw0KPiA+ICAgCXNpemUg PSBSVEVfQ0FDSEVfTElORV9ST1VORFVQKHNpemUpLCBhbGlnbiA9DQo+IFJURV9DQUNIRV9MSU5F X1JPVU5EVVAoYWxpZ24pOw0KPiA+DQo+ID4gICAJLyogY2hlY2sgcmVxdWVzdGVkIHNvY2tldCBp ZCBhbmQgYWxpZ25tZW50IG1hdGNoZXMgZmlyc3QsIGFuZCBpZiBvaywNCj4gPiBAQCAtMTgxLDYg KzE4NSw5IEBAIHJ0ZV9yZWFsbG9jX3NvY2tldCh2b2lkICpwdHIsIHNpemVfdCBzaXplLCB1bnNp Z25lZA0KPiBpbnQgYWxpZ24sIGludCBzb2NrZXQpDQo+ID4gICAJCQlSVEVfUFRSX0FMSUdOKHB0 ciwgYWxpZ24pID09IHB0ciAmJg0KPiA+ICAgCQkJbWFsbG9jX2hlYXBfcmVzaXplKGVsZW0sIHNp emUpID09IDApIHsNCj4gPiAgIAkJcnRlX2VhbF90cmFjZV9tZW1fcmVhbGxvYyhzaXplLCBhbGln biwgc29ja2V0LCBwdHIpOw0KPiA+ICsNCj4gPiArCQlhc2FuX3NldF9yZWR6b25lKGVsZW0sIHVz ZXJfc2l6ZSk7DQo+ID4gKw0KPiA+ICAgCQlyZXR1cm4gcHRyOw0KPiA+ICAgCX0NCj4gPg0KPiA+ IEBAIC0xOTIsNyArMTk5LDcgQEAgcnRlX3JlYWxsb2Nfc29ja2V0KHZvaWQgKnB0ciwgc2l6ZV90 IHNpemUsIHVuc2lnbmVkDQo+IGludCBhbGlnbiwgaW50IHNvY2tldCkNCj4gPiAgIAlpZiAobmV3 X3B0ciA9PSBOVUxMKQ0KPiA+ICAgCQlyZXR1cm4gTlVMTDsNCj4gPiAgIAkvKiBlbGVtOiB8cGFk fGRhdGFfZWxlbXxkYXRhfHRyYWlsZXJ8ICovDQo+ID4gLQljb25zdCBzaXplX3Qgb2xkX3NpemUg PSBlbGVtLT5zaXplIC0gZWxlbS0+cGFkIC0NCj4gTUFMTE9DX0VMRU1fT1ZFUkhFQUQ7DQo+ID4g Kwljb25zdCBzaXplX3Qgb2xkX3NpemUgPSBvbGRfbWFsbG9jX3NpemUoZWxlbSk7DQo+ID4gICAJ cnRlX21lbWNweShuZXdfcHRyLCBwdHIsIG9sZF9zaXplIDwgc2l6ZSA/IG9sZF9zaXplIDogc2l6 ZSk7DQo+ID4gICAJcnRlX2ZyZWUocHRyKTsNCj4gPg0KPiA+IGRpZmYgLS1naXQgYS9saWIvcGlw ZWxpbmUvcnRlX3N3eF9waXBlbGluZS5jDQo+IGIvbGliL3BpcGVsaW5lL3J0ZV9zd3hfcGlwZWxp bmUuYw0KPiA+IGluZGV4IDhlYjk3OGEzMGMuLmFhYTAxMDdkMDIgMTAwNjQ0DQo+ID4gLS0tIGEv bGliL3BpcGVsaW5lL3J0ZV9zd3hfcGlwZWxpbmUuYw0KPiA+ICsrKyBiL2xpYi9waXBlbGluZS9y dGVfc3d4X3BpcGVsaW5lLmMNCj4gPiBAQCAtNjM0MCw3ICs2MzQwLDcgQEAgaW5zdHJfbWV0ZXJf dHJhbnNsYXRlKHN0cnVjdCBydGVfc3d4X3BpcGVsaW5lICpwLA0KPiA+ICAgCQlyZXR1cm4gMDsN Cj4gPiAgIAl9DQo+ID4NCj4gPiAtCUNIRUNLKDAsIEVJTlZBTCk7DQo+ID4gKwlyZXR1cm4gLUVJ TlZBTDsNCj4gDQo+IFdoeSBpcyB0aGlzIGhlcmU/IEFjY2lkZW50YWwgY2hhbmdlPw0KPiANCg0K QWZ0ZXIgYWRkaW5nIEFTYW4sIHRoZSBnY2MgY29tcGlsYXRpb24gY2hlY2sgd2lsbCBiZSBzdHJp Y3Rlci4NCiJDb250cm9sIHJlYWNoZXMgZW5kIG9mIG5vbi12b2lkIGZ1bmN0aW9uIiBlcnJvciBv Y2N1cnMgaGVyZS4gV2lsbCBiZSBzcGxpdCBpbnRvIHR3byBwYXRjaGVzLg0KDQo+ID4gICB9DQo+ ID4NCj4gPiAgIHN0YXRpYyBpbmxpbmUgc3RydWN0IG1ldGVyICoNCj4gPiBAQCAtODAyNSw3ICs4 MDI1LDcgQEAgaW5zdHJfdHJhbnNsYXRlKHN0cnVjdCBydGVfc3d4X3BpcGVsaW5lICpwLA0KPiA+ ICAgCQkJCQkgICAgICBpbnN0ciwNCj4gPiAgIAkJCQkJICAgICAgZGF0YSk7DQo+ID4NCj4gPiAt CUNIRUNLKDAsIEVJTlZBTCk7DQo+ID4gKwlyZXR1cm4gLUVJTlZBTDsNCj4gDQo+IFNhbWUgYXMg YWJvdmUgLSBhY2NpZGVudGFsIGNoYW5nZT8NCj4gDQo+ID4gICB9DQo+ID4NCj4gPiAgIHN0YXRp YyBzdHJ1Y3QgaW5zdHJ1Y3Rpb25fZGF0YSAqDQo+ID4NCj4gDQo+IC0tDQo+IFRoYW5rcywNCj4g QW5hdG9seQ0K