From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 78F4DC433EF for ; Mon, 3 Jan 2022 18:17:53 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id B649C89780; Mon, 3 Jan 2022 18:17:52 +0000 (UTC) Received: from mga06.intel.com (mga06.intel.com [134.134.136.31]) by gabe.freedesktop.org (Postfix) with ESMTPS id 4AD7889780; Mon, 3 Jan 2022 18:17:51 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1641233871; x=1672769871; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=DzMePJuRN4wN34Y7vZh/xqmqZSDSkKFEVSfKurBtYc0=; b=MU6GUgV/mCAXknQDO3OBDeLUn3XYSVHz5G+ucTjz9eKgAjyHYMd4kXG5 +AmW1atuq9HwOLWCkutwhpSlBNRw2EredsdUp7eysoTx5s/OxtZ7/fEmz ita/t8YZ71F4qRUSHhazQn8byXzhF6dANqPd3mu5h+3vDK4Q8dzkJ2RhO GCaqlVoIXEBFhzbzMpUfdaviYoStnkA5AHX/8efdRM6xeACOLDedj6HO9 tWN0kAYzNirfP5pn14Xvt9Y6v/+gVa9GyB3QVsmgHetBcWWeRFQchB8pR 59+gUmwVJilmXbtbhI2cZuU/WU/1FGFMIl7RuS4WVzoDDaXsPuaRo4c+v A==; X-IronPort-AV: E=McAfee;i="6200,9189,10215"; a="302854853" X-IronPort-AV: E=Sophos;i="5.88,258,1635231600"; d="scan'208";a="302854853" Received: from fmsmga004.fm.intel.com ([10.253.24.48]) by orsmga104.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 03 Jan 2022 10:17:50 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.88,258,1635231600"; d="scan'208";a="590444750" Received: from orsmsx603.amr.corp.intel.com ([10.22.229.16]) by fmsmga004.fm.intel.com with ESMTP; 03 Jan 2022 10:17:50 -0800 Received: from orsmsx612.amr.corp.intel.com (10.22.229.25) by ORSMSX603.amr.corp.intel.com (10.22.229.16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2308.20; Mon, 3 Jan 2022 10:17:49 -0800 Received: from orsmsx610.amr.corp.intel.com (10.22.229.23) by ORSMSX612.amr.corp.intel.com (10.22.229.25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2308.20; Mon, 3 Jan 2022 10:17:49 -0800 Received: from ORSEDG601.ED.cps.intel.com (10.7.248.6) 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.2308.20 via Frontend Transport; Mon, 3 Jan 2022 10:17:49 -0800 Received: from NAM10-MW2-obe.outbound.protection.outlook.com (104.47.55.105) by edgegateway.intel.com (134.134.137.102) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2308.20; Mon, 3 Jan 2022 10:17:48 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=OboqPPxSgbGqXvzXXEK6Rwju3bSd7LLL5Z89YXpC/HQXV63Y1TVpqHJsGVpGacS2OvDCWmDhVATpFnFaxDbFg7Z2iYQV9BLO7t3nqW/7HDKtf/sgo2GBmhkVZJKsFpuUEA2649FPGS3GqZJRf2yy0OvIk3jrpVGje2X1rEHKIRMqDYY7dwa8ep+q9IBHNaQfpQplNRro6aIhvz2VsLuExH15/HvnnIBpmOEhm6L6efQfpoyHbA6u20yf1Bz9FiBwSLTaUBuZzum4KFaX1t9JgR5qoeVwGwAkmvNM9NPZIOoTA5ghC9NqRlaXyGOn611jYDoeIyKUChI+EsaIxJpc6Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=DzMePJuRN4wN34Y7vZh/xqmqZSDSkKFEVSfKurBtYc0=; b=cAVBhaB/HU8mMU/O58OYhNlCIuwS5X9LKYsDV8RVyTVOBiByh2DRjcZHFyH861WNJLNhk3cf1wFAVZQa7iPCZM3FTACPRGq2cIfW5vw9YLEz1iDA557/MR5G+Idg/GKo41FaRa3jjLHZOT2fAfL/Wp3ToiQ9RH8qfeczKSHBdeE92/rNciprexB7oZ+NW4vnfuyitpuvky9ygG3JlBiy8WdRY2C2i6akbJlp4x+2I9S+tDOngbj1mEYQ3JxWu7a25983CsgEnT10tC4t4b/rqocHp/pvSBMhFCpg85rfghBK/AcTB3amP+RnOHRuVgcVQKqhmHLkWEZhBZlpmonYzQ== 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 Received: from BN6PR11MB1633.namprd11.prod.outlook.com (2603:10b6:405:e::22) by BN6PR11MB1362.namprd11.prod.outlook.com (2603:10b6:404:3c::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4844.15; Mon, 3 Jan 2022 18:17:44 +0000 Received: from BN6PR11MB1633.namprd11.prod.outlook.com ([fe80::a596:16ca:5cb5:c51d]) by BN6PR11MB1633.namprd11.prod.outlook.com ([fe80::a596:16ca:5cb5:c51d%4]) with mapi id 15.20.4844.016; Mon, 3 Jan 2022 18:17:44 +0000 From: "Zeng, Oak" To: =?utf-8?B?VGhvbWFzIEhlbGxzdHLDtm0=?= , "intel-gfx@lists.freedesktop.org" , "dri-devel@lists.freedesktop.org" Subject: RE: [Intel-gfx] [PATCH v4 2/4] drm/i915: Use the vma resource as argument for gtt binding / unbinding Thread-Topic: [Intel-gfx] [PATCH v4 2/4] drm/i915: Use the vma resource as argument for gtt binding / unbinding Thread-Index: AQHYAJmRthuhDmy2bUeW15AsxzqtF6xRmrIg Date: Mon, 3 Jan 2022 18:17:44 +0000 Message-ID: References: <20220103115947.92688-1-thomas.hellstrom@linux.intel.com> <20220103115947.92688-3-thomas.hellstrom@linux.intel.com> In-Reply-To: <20220103115947.92688-3-thomas.hellstrom@linux.intel.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-product: dlpe-windows dlp-version: 11.6.200.16 dlp-reaction: no-action authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: dd3983cc-3c86-48d4-1b1b-08d9cee55688 x-ms-traffictypediagnostic: BN6PR11MB1362:EE_ x-ld-processed: 46c98d88-e344-4ed4-8496-4ed7712e255d,ExtAddr x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:612; x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: Zz20b58r7CQwDLHUrK8kZWWw4kRdDC2isZXFRS2/OtrvX++OwH72P5NjpLI9Wui5cZ0XD/ovzu/6R+0gQi15ZT8jjyrMDlhs8FsCaHdyemcEl3t9fb5FK3MsGQ8zBAnBUskwmBRZogh4q4nFKsc0RhBeTfU17v1MMHAAfNUk3Y5iShhh6xvAvtDCoFjGKtQQaVaNRaF1QpDGwZWkSlf0zpzaxMk/cHIIGO3J8gUD798kMQlvPxBpCp+f/E0KmlsEaUqxzg6iASjGM4ZzsgJ3Lim8BvoPnNJkJgSiNysxHptsc/HDliTHDrpE1ljMh/FOn/sW7GUhMW3QLx7MYygS7YUffKeLYUHhZsma/2Hxeg8jFUdC8stRBCVNgCrFmrnxeZdChVDvqvzMmb/LWrSx6RgjQygnOZUzOARCKdCN2De8jOygkZLNHuCx5BN+jAh65ZDPZyGNCcDA+xSaYMbrEFyxyOK+Ap1TWaPdSIrA7HwoGrD84jSibe4F5UxK12lzyX5TRrc3aDiYbd04ENxqLR23zmEegpKAaVnqC6Kf9cEQobdLNdlLQ8Fx97y5AvEtPXDpw9mF+znmjbAvUOLAappT1e0oM92T+XdsB6EX/P83uuBPQbV9KLhBhE4lE+HXb6FZrng2+KlgmP3eYtBN9AUQIUtNMSy4GH4ics4f9q/riKKddXC9sWXbz3VxAcBpQ1Xxrh8r8vAp3XwIhbD/6A== x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:BN6PR11MB1633.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFS:(366004)(71200400001)(86362001)(53546011)(66446008)(2906002)(6506007)(7696005)(4326008)(122000001)(33656002)(38070700005)(9686003)(66946007)(66476007)(38100700002)(66556008)(76116006)(186003)(52536014)(66574015)(5660300002)(110136005)(82960400001)(64756008)(26005)(316002)(30864003)(508600001)(83380400001)(8676002)(55016003)(8936002)(559001)(579004); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?cnVrcXdzeDQxWTFtdHgyWWR0dCtWeC9scXJNY2gxMHdSMnRYWnVIeHBXTDlR?= =?utf-8?B?YmloRUN5ZVlWL2JxN2dYKzVjUFBtQzhyRTZWOVpFaGdYWlM3dUhKT1NqSkZF?= =?utf-8?B?UnhEaVZOSGJGU1oyczRnYVlFRzcrUFJZQ1g3WVFxRDZ1dkJ4eXRVSURHeHVH?= =?utf-8?B?WG9hWGtwOWMwOWN4WHRSQlVLNjlvNml0Zk1NNm5OeWdnTUxCa25LNEhhV3Jz?= =?utf-8?B?T3lFVEtiMzRROC94K0RPRzRQSTR2dUVYZ2VzQ2RVNXFGaUEyMUROT1FtUG5u?= =?utf-8?B?S0VUdHZuUjh4ZnJnaFlzdHJQcHR2WXhBS3EyRjE0aVdFRFh1ME5VMEdNTGcw?= =?utf-8?B?d3Bmd2Z0N3c1b0kzZkFwZUQzNk4ySU9yMHRvczA2a2dIOHJ5SkV2MHFXREhw?= =?utf-8?B?dFdtdHZPbE9abGdTcU41YXJJSVUxWFh1Unc5TDhrWVdQSm1rR09DRnpTQ1Zu?= =?utf-8?B?eEZuQndoQWZINm04MVZzSG9YWXFzM1p4Q0h1ZkZmNjdJaktGQ3p4UEdRd244?= =?utf-8?B?TWxjTU1YOWNsRlpZOVZGR29DOFpXYzNpbTNoREJqeFFUR1hZaXc4RzNsWUVN?= =?utf-8?B?SmNhRXhqRElXVG0wWlJmNHJ4dll4VjVHUk10WUczRndMOTNjWi94dEEyMkI4?= =?utf-8?B?eGx4SDNQVFdUZUZUUzFSemk0Q0NIV3AwUWpISmM5VUJKSCtiRlR2K1ZzTmdG?= =?utf-8?B?YnhCVHFOMmRGNlVZendsK05nb1JVOXVrbVRWWnN6cEVjMU8xTnJLWVBaL2xp?= =?utf-8?B?Y1RTZXpwTkM2d3ZiWGRmdWloYkFHcjMvQ0o1Z0JJUnlSMUJwd1FueDJ1U1Vq?= =?utf-8?B?aFlGbjBxZm9QUUJhQktTTXEyczMvTGpoSUxWZHFxQ3lUVlNqOEc0dzY5Wm1Q?= =?utf-8?B?TktJOXNlVzhMZ0t6Z3FRSzMwQ1ZFWVJXWGQzUDBVbE5QYUdwaGJRWXdPa3RR?= =?utf-8?B?YXVtZHQ3OHRhRU5saUJCbzJFdTltUWhOakh3SW42K2d0eDIrcWd1S3BRWUxW?= =?utf-8?B?bmVuajJ0Uy9KbU5BVTAyMmJBRHNrdzJDSWJPVnJUS3I5MHJwSzZrN2hhb2NR?= =?utf-8?B?QkNpN0loTk5UbEFBUG9NZmtYUmQ0blRlaExBUXR2enYxblZwTUVKRyswaHVy?= =?utf-8?B?MVBqd0RDTTc1bXZHMXlxWWp1N0djM1hoa24zR2pmRHpMblVIVWkxaThxRnBm?= =?utf-8?B?U3BXbEUzaDdDWU56SURSTW1uRTVDMFdqRnV3ZFBiWVJ6dEREcjRybloyc3A4?= =?utf-8?B?QWlNbFMxOW5qYXNKWmpCZTViaExWZE5LMUNJckxqaVkxeDRnSXNtM0JVMjBP?= =?utf-8?B?RW5jajBLdk51SGdmcGNQeGhtYURrRFpMd1hiWWtEUGQ3ZnplM2xQbU8wTjFL?= =?utf-8?B?Y0w2OUU5UWE0SFJMZ1YwcHZjRmJjTWk5Q0xRbjNKTGsxY0E5c3hQYU1yTFI5?= =?utf-8?B?NExXc3h4UUJWWllodmlMZWxlT2NoSEE2MUkxUFFNNUd0SGRBUkxnTmtZbUhS?= =?utf-8?B?R3QyZjc3QlZHK0RRemp0RHptd09WdTl5dEYrVHQvd2JsdDV2OS9QcXBneHBP?= =?utf-8?B?QXcwTzU1c1NGNnphMFRoQlpnNkxQdGt6a2UzWjBVYm5UcXA5QkhLZ0djNVh0?= =?utf-8?B?cmRQbTZ2SVk4aVVNREJNNENXQ0ZQWG9SRGtjcjRzZ3VFYUlXNHdHMnhjRW9Y?= =?utf-8?B?NmVWMTd6eHhQRjZVK1I4MlhYYW1JUmlpckxZVkRtL3IwR3R0U05ickhsOWVD?= =?utf-8?B?QWhLL3l5ZmVpck5haDg1bUc2RnBSYnhTUXNFb2Nvaks1clBzYWZCQUZPNDNK?= =?utf-8?B?VFRlZWRVcTBPeHhCbnVUeDM4VWd6NUJpVDI0bE1oTEdXS3VBRGtZdkw0Nkgx?= =?utf-8?B?UnNPV2M5dlRwSkdnbXB0ZGZFVWtEM1FHbzg3cjI4M3FaWW1ZZ25KYml6d3Z0?= =?utf-8?B?cHRCM2FuQmxVZnk4T3FPTHhoL2h5c3pVZ0MzVXZVOEsrdzM3M2tFaWtQUzBK?= =?utf-8?B?akFTbEFTOXJmTDlmVmZCb3JtSDcrTm9ESllyM2NJcU9ybUZpaVVUZ0VtQUxj?= =?utf-8?B?aGU2NmJXdndnWDJzNVdKN004RXpldnNaaGRLanlmWHpIMVZjRk5ONUhmbmFr?= =?utf-8?B?VzJKekhLYVFraVRlMkU3MURVQzQrczB5dTNWQ1g1MG1MYmxkaDRzM1RtVFR4?= =?utf-8?B?emc9PQ==?= 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: BN6PR11MB1633.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: dd3983cc-3c86-48d4-1b1b-08d9cee55688 X-MS-Exchange-CrossTenant-originalarrivaltime: 03 Jan 2022 18:17:44.2978 (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: yJMCH2aeF1ZXBQdOS62h5+kY3OShJ4nV0EOKzxZstbAvrxOT4MIjQdDdRPxWkdbNbceTTmkwMiDsgZ5druapdg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN6PR11MB1362 X-OriginatorOrg: intel.com X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "Auld, Matthew" Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" DQoNClJlZ2FyZHMsDQpPYWsNCg0KPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9t OiBJbnRlbC1nZnggPGludGVsLWdmeC1ib3VuY2VzQGxpc3RzLmZyZWVkZXNrdG9wLm9yZz4gT24g QmVoYWxmIE9mIFRob21hcyBIZWxsc3Ryw7ZtDQo+IFNlbnQ6IEphbnVhcnkgMywgMjAyMiA3OjAw IEFNDQo+IFRvOiBpbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnOyBkcmktZGV2ZWxAbGlz dHMuZnJlZWRlc2t0b3Aub3JnDQo+IENjOiBUaG9tYXMgSGVsbHN0csO2bSA8dGhvbWFzLmhlbGxz dHJvbUBsaW51eC5pbnRlbC5jb20+OyBBdWxkLCBNYXR0aGV3IDxtYXR0aGV3LmF1bGRAaW50ZWwu Y29tPg0KPiBTdWJqZWN0OiBbSW50ZWwtZ2Z4XSBbUEFUQ0ggdjQgMi80XSBkcm0vaTkxNTogVXNl IHRoZSB2bWEgcmVzb3VyY2UgYXMgYXJndW1lbnQgZm9yIGd0dCBiaW5kaW5nIC8gdW5iaW5kaW5n DQo+IA0KPiBXaGVuIGludHJvZHVjaW5nIGFzeW5jaHJvbm91cyB1bmJpbmRpbmcsIHRoZSB2bWEg aXRzZWxmIG1heSBubyBsb25nZXINCj4gYmUgYWxpdmUgd2hlbiB0aGUgYWN0dWFsIGJpbmRpbmcg b3IgdW5iaW5kaW5nIHRha2VzIHBsYWNlLg0KDQpDYW4gd2UgdGFrZSBhbiBleHRyYSByZWZlcmVu Y2UgY291bnRlciBvZiB0aGUgdm1hIHRvIGtlZXAgdGhlIHZtYSBhbGl2ZSwgdW50aWwgdGhlIGFj dHVhbCBiaW5kaW5nL3VuYmluZGluZyB0YWtlcyBwbGFjZT8NCg0KUmVnYXJkcywNCk9haw0KDQo+ IA0KPiBVcGRhdGUgdGhlIGd0dCBpOTE1X3ZtYV9vcHMgYWNjb3JkaW5nbHkgdG8gdGFrZSBhIHN0 cnVjdCBpOTE1X3ZtYV9yZXNvdXJjZQ0KPiBpbnN0ZWFkIG9mIGEgc3RydWN0IGk5MTVfdm1hIGZv ciB0aGUgYmluZF92bWEoKSBhbmQgdW5iaW5kX3ZtYSgpIG9wcy4NCj4gU2ltaWxhcmx5IGNoYW5n ZSB0aGUgaW5zZXJ0X2VudHJpZXMoKSBvcCBmb3Igc3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZS4N Cj4gDQo+IFJlcGxhY2UgYSBjb3VwbGUgb2YgaTkxNV92bWFfc25hcHNob3QgbWVtYmVycyB3aXRo IHRoZWlyIG5ld2x5IGludHJvZHVjZWQNCj4gaTkxNV92bWFfcmVzb3VyY2UgY291bnRlcnBhcnRz LCBzaW5jZSB0aGV5IGhhdmUgdGhlIHNhbWUgbGlmZXRpbWUuDQo+IA0KPiBBbHNvIG1ha2Ugc3Vy ZSB0byBhdm9pZCBjaGFuZ2luZyB0aGUgc3RydWN0IGk5MTVfdm1hX2ZsYWdzIChpbiBwYXJ0aWN1 bGFyDQo+IHRoZSBiaW5kIGZsYWdzKSBhc3luYy4gVGhhdCBzaG91bGQgbm93IG9ubHkgYmUgZG9u ZSBzeW5jIHVuZGVyIHRoZQ0KPiB2bSBtdXRleC4NCj4gDQo+IHYyOg0KPiAtIFVwZGF0ZSB0aGUg dm1hX3Jlczo6Ym91bmRfZmxhZ3Mgd2hlbiBiaW5kaW5nIHRvIHRoZSBhbGlhc2VkIGdndHQNCj4g DQo+IFNpZ25lZC1vZmYtYnk6IFRob21hcyBIZWxsc3Ryw7ZtIDx0aG9tYXMuaGVsbHN0cm9tQGxp bnV4LmludGVsLmNvbT4NCj4gLS0tDQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2lu dGVsX2RwdC5jICAgICAgfCAyNyArKy0tLQ0KPiAgLi4uL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9n ZW1fb2JqZWN0X3R5cGVzLmggIHwgMjcgKy0tLS0NCj4gIC4uLi9ncHUvZHJtL2k5MTUvZ2VtL3Nl bGZ0ZXN0cy9odWdlX3BhZ2VzLmMgICB8IDM3ICsrKy0tLS0NCj4gIGRyaXZlcnMvZ3B1L2RybS9p OTE1L2d0L2dlbjZfcHBndHQuYyAgICAgICAgICB8IDE5ICsrLS0NCj4gIGRyaXZlcnMvZ3B1L2Ry bS9pOTE1L2d0L2dlbjhfcHBndHQuYyAgICAgICAgICB8IDM3ICsrKy0tLS0NCj4gIGRyaXZlcnMv Z3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZV9jcy5jICAgICB8ICA0ICstDQo+ICBkcml2ZXJz L2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9nZ3R0LmMgICAgICAgICAgfCA3MCArKysrKystLS0tLS0t DQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9ndHQuaCAgICAgICAgICAgfCAxNiAr LS0NCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3BwZ3R0LmMgICAgICAgICB8IDIy ICsrKy0tDQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF91Y19mdy5jICAgICAg fCAxMyArKy0NCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX3VjX2Z3LmggICAg ICB8ICAyICstDQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYyAgICAgICAg ICAgfCAgMyArLQ0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ncHVfZXJyb3IuYyAgICAg ICAgIHwgIDYgKy0NCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfdm1hLmMgICAgICAgICAg ICAgICB8IDI0ICsrKystDQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3ZtYS5oICAgICAg ICAgICAgICAgfCAxMSArLS0NCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfdm1hX3Jlc291 cmNlLmMgICAgICB8ICA5ICstDQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3ZtYV9yZXNv dXJjZS5oICAgICAgfCA5OSArKysrKysrKysrKysrKysrKystDQo+ICBkcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X3ZtYV9zbmFwc2hvdC5jICAgICAgfCAgNCAtDQo+ICBkcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X3ZtYV9zbmFwc2hvdC5oICAgICAgfCAgOCAtLQ0KPiAgZHJpdmVycy9ncHUvZHJt L2k5MTUvc2VsZnRlc3RzL2k5MTVfZ2VtX2d0dC5jIHwgNjQgKysrKysrKystLS0tDQo+ICBkcml2 ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvbW9ja19ndHQuYyAgICAgfCAxMiArLS0NCj4gIDIx IGZpbGVzIGNoYW5nZWQsIDMwOCBpbnNlcnRpb25zKCspLCAyMDYgZGVsZXRpb25zKC0pDQo+IA0K PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kcHQuYyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZHB0LmMNCj4gaW5kZXggOGY2NzQ3 NDVlN2UwLi42M2E4M2Q1Zjg1YTEgMTAwNjQ0DQo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2Rpc3BsYXkvaW50ZWxfZHB0LmMNCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxh eS9pbnRlbF9kcHQuYw0KPiBAQCAtNDgsNyArNDgsNyBAQCBzdGF0aWMgdm9pZCBkcHRfaW5zZXJ0 X3BhZ2Uoc3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAqdm0sDQo+ICB9DQo+IA0KPiAgc3RhdGlj IHZvaWQgZHB0X2luc2VydF9lbnRyaWVzKHN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZtLA0K PiAtCQkJICAgICAgIHN0cnVjdCBpOTE1X3ZtYSAqdm1hLA0KPiArCQkJICAgICAgIHN0cnVjdCBp OTE1X3ZtYV9yZXNvdXJjZSAqdm1hX3JlcywNCj4gIAkJCSAgICAgICBlbnVtIGk5MTVfY2FjaGVf bGV2ZWwgbGV2ZWwsDQo+ICAJCQkgICAgICAgdTMyIGZsYWdzKQ0KPiAgew0KPiBAQCAtNjQsOCAr NjQsOCBAQCBzdGF0aWMgdm9pZCBkcHRfaW5zZXJ0X2VudHJpZXMoc3RydWN0IGk5MTVfYWRkcmVz c19zcGFjZSAqdm0sDQo+ICAJICogbm90IHRvIGFsbG93IHRoZSB1c2VyIHRvIG92ZXJyaWRlIGFj Y2VzcyB0byBhIHJlYWQgb25seSBwYWdlLg0KPiAgCSAqLw0KPiANCj4gLQlpID0gdm1hLT5ub2Rl LnN0YXJ0IC8gSTkxNV9HVFRfUEFHRV9TSVpFOw0KPiAtCWZvcl9lYWNoX3NndF9kYWRkcihhZGRy LCBzZ3RfaXRlciwgdm1hLT5wYWdlcykNCj4gKwlpID0gdm1hX3Jlcy0+c3RhcnQgLyBJOTE1X0dU VF9QQUdFX1NJWkU7DQo+ICsJZm9yX2VhY2hfc2d0X2RhZGRyKGFkZHIsIHNndF9pdGVyLCB2bWFf cmVzLT5iaS5wYWdlcykNCj4gIAkJZ2VuOF9zZXRfcHRlKCZiYXNlW2krK10sIHB0ZV9lbmNvZGUg fCBhZGRyKTsNCj4gIH0NCj4gDQo+IEBAIC03NiwzNSArNzYsMzggQEAgc3RhdGljIHZvaWQgZHB0 X2NsZWFyX3JhbmdlKHN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZtLA0KPiANCj4gIHN0YXRp YyB2b2lkIGRwdF9iaW5kX3ZtYShzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2bSwNCj4gIAkJ CSBzdHJ1Y3QgaTkxNV92bV9wdF9zdGFzaCAqc3Rhc2gsDQo+IC0JCQkgc3RydWN0IGk5MTVfdm1h ICp2bWEsDQo+ICsJCQkgc3RydWN0IGk5MTVfdm1hX3Jlc291cmNlICp2bWFfcmVzLA0KPiAgCQkJ IGVudW0gaTkxNV9jYWNoZV9sZXZlbCBjYWNoZV9sZXZlbCwNCj4gIAkJCSB1MzIgZmxhZ3MpDQo+ ICB7DQo+IC0Jc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiA9IHZtYS0+b2JqOw0KPiAg CXUzMiBwdGVfZmxhZ3M7DQo+IA0KPiArCWlmICh2bWFfcmVzLT5ib3VuZF9mbGFncykNCj4gKwkJ cmV0dXJuOw0KPiArDQo+ICAJLyogQXBwbGljYWJsZSB0byBWTFYgKGdlbjgrIGRvIG5vdCBzdXBw b3J0IFJPIGluIHRoZSBHR1RUKSAqLw0KPiAgCXB0ZV9mbGFncyA9IDA7DQo+IC0JaWYgKHZtYS0+ dm0tPmhhc19yZWFkX29ubHkgJiYgaTkxNV9nZW1fb2JqZWN0X2lzX3JlYWRvbmx5KG9iaikpDQo+ ICsJaWYgKHZtLT5oYXNfcmVhZF9vbmx5ICYmIHZtYV9yZXMtPmJpLnJlYWRvbmx5KQ0KPiAgCQlw dGVfZmxhZ3MgfD0gUFRFX1JFQURfT05MWTsNCj4gLQlpZiAoaTkxNV9nZW1fb2JqZWN0X2lzX2xt ZW0ob2JqKSkNCj4gKwlpZiAodm1hX3Jlcy0+YmkubG1lbSkNCj4gIAkJcHRlX2ZsYWdzIHw9IFBU RV9MTTsNCj4gDQo+IC0Jdm1hLT52bS0+aW5zZXJ0X2VudHJpZXModm1hLT52bSwgdm1hLCBjYWNo ZV9sZXZlbCwgcHRlX2ZsYWdzKTsNCj4gKwl2bS0+aW5zZXJ0X2VudHJpZXModm0sIHZtYV9yZXMs IGNhY2hlX2xldmVsLCBwdGVfZmxhZ3MpOw0KPiANCj4gLQl2bWEtPnBhZ2Vfc2l6ZXMuZ3R0ID0g STkxNV9HVFRfUEFHRV9TSVpFOw0KPiArCXZtYV9yZXMtPnBhZ2Vfc2l6ZXNfZ3R0ID0gSTkxNV9H VFRfUEFHRV9TSVpFOw0KPiANCj4gIAkvKg0KPiAgCSAqIFdpdGhvdXQgYWxpYXNpbmcgUFBHVFQg dGhlcmUncyBubyBkaWZmZXJlbmNlIGJldHdlZW4NCj4gIAkgKiBHTE9CQUwvTE9DQUxfQklORCwg aXQncyBhbGwgdGhlIHNhbWUgcHRlcy4gSGVuY2UgdW5jb25kaXRpb25hbGx5DQo+ICAJICogdXBn cmFkZSB0byBib3RoIGJvdW5kIGlmIHdlIGJpbmQgZWl0aGVyIHRvIGF2b2lkIGRvdWJsZS1iaW5k aW5nLg0KPiAgCSAqLw0KPiAtCWF0b21pY19vcihJOTE1X1ZNQV9HTE9CQUxfQklORCB8IEk5MTVf Vk1BX0xPQ0FMX0JJTkQsICZ2bWEtPmZsYWdzKTsNCj4gKwl2bWFfcmVzLT5ib3VuZF9mbGFncyA9 IEk5MTVfVk1BX0dMT0JBTF9CSU5EIHwgSTkxNV9WTUFfTE9DQUxfQklORDsNCj4gIH0NCj4gDQo+ IC1zdGF0aWMgdm9pZCBkcHRfdW5iaW5kX3ZtYShzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2 bSwgc3RydWN0IGk5MTVfdm1hICp2bWEpDQo+ICtzdGF0aWMgdm9pZCBkcHRfdW5iaW5kX3ZtYShz dHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2bSwNCj4gKwkJCSAgIHN0cnVjdCBpOTE1X3ZtYV9y ZXNvdXJjZSAqdm1hX3JlcykNCj4gIHsNCj4gLQl2bS0+Y2xlYXJfcmFuZ2Uodm0sIHZtYS0+bm9k ZS5zdGFydCwgdm1hLT5zaXplKTsNCj4gKwl2bS0+Y2xlYXJfcmFuZ2Uodm0sIHZtYV9yZXMtPnN0 YXJ0LCB2bWFfcmVzLT52bWFfc2l6ZSk7DQo+ICB9DQo+IA0KPiAgc3RhdGljIHZvaWQgZHB0X2Ns ZWFudXAoc3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAqdm0pDQo+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fb2JqZWN0X3R5cGVzLmggYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fb2JqZWN0X3R5cGVzLmgNCj4gaW5kZXggZjlmN2U0NDA5 OWZlLi5mOTlkMjYwZTA2ODQgMTAwNjQ0DQo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dl bS9pOTE1X2dlbV9vYmplY3RfdHlwZXMuaA0KPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9n ZW0vaTkxNV9nZW1fb2JqZWN0X3R5cGVzLmgNCj4gQEAgLTE1LDYgKzE1LDcgQEANCj4gDQo+ICAj aW5jbHVkZSAiaTkxNV9hY3RpdmUuaCINCj4gICNpbmNsdWRlICJpOTE1X3NlbGZ0ZXN0LmgiDQo+ ICsjaW5jbHVkZSAiaTkxNV92bWFfcmVzb3VyY2UuaCINCj4gDQo+ICBzdHJ1Y3QgZHJtX2k5MTVf Z2VtX29iamVjdDsNCj4gIHN0cnVjdCBpbnRlbF9mcm9uYnVmZmVyOw0KPiBAQCAtNTQ5LDMxICs1 NTAsNyBAQCBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCB7DQo+ICAJCXN0cnVjdCBzZ190YWJs ZSAqcGFnZXM7DQo+ICAJCXZvaWQgKm1hcHBpbmc7DQo+IA0KPiAtCQlzdHJ1Y3QgaTkxNV9wYWdl X3NpemVzIHsNCj4gLQkJCS8qKg0KPiAtCQkJICogVGhlIHNnIG1hc2sgb2YgdGhlIHBhZ2VzIHNn X3RhYmxlLiBpLmUgdGhlIG1hc2sgb2YNCj4gLQkJCSAqIG9mIHRoZSBsZW5ndGhzIGZvciBlYWNo IHNnIGVudHJ5Lg0KPiAtCQkJICovDQo+IC0JCQl1bnNpZ25lZCBpbnQgcGh5czsNCj4gLQ0KPiAt CQkJLyoqDQo+IC0JCQkgKiBUaGUgZ3R0IHBhZ2Ugc2l6ZXMgd2UgYXJlIGFsbG93ZWQgdG8gdXNl IGdpdmVuIHRoZQ0KPiAtCQkJICogc2cgbWFzayBhbmQgdGhlIHN1cHBvcnRlZCBwYWdlIHNpemVz LiBUaGlzIHdpbGwNCj4gLQkJCSAqIGV4cHJlc3MgdGhlIHNtYWxsZXN0IHVuaXQgd2UgY2FuIHVz ZSBmb3IgdGhlIHdob2xlDQo+IC0JCQkgKiBvYmplY3QsIGFzIHdlbGwgYXMgdGhlIGxhcmdlciBz aXplcyB3ZSBtYXkgYmUgYWJsZQ0KPiAtCQkJICogdG8gdXNlIG9wcG9ydHVuaXN0aWNhbGx5Lg0K PiAtCQkJICovDQo+IC0JCQl1bnNpZ25lZCBpbnQgc2c7DQo+IC0NCj4gLQkJCS8qKg0KPiAtCQkJ ICogVGhlIGFjdHVhbCBndHQgcGFnZSBzaXplIHVzYWdlLiBTaW5jZSB3ZSBjYW4gaGF2ZQ0KPiAt CQkJICogbXVsdGlwbGUgdm1hIGFzc29jaWF0ZWQgd2l0aCB0aGlzIG9iamVjdCB3ZSBuZWVkIHRv DQo+IC0JCQkgKiBwcmV2ZW50IGFueSB0cmFtcGxpbmcgb2Ygc3RhdGUsIGhlbmNlIGEgY29weSBv ZiB0aGlzDQo+IC0JCQkgKiBzdHJ1Y3QgYWxzbyBsaXZlcyBpbiBlYWNoIHZtYSwgdGhlcmVmb3Jl IHRoZSBndHQNCj4gLQkJCSAqIHZhbHVlIGhlcmUgc2hvdWxkIG9ubHkgYmUgcmVhZC93cml0ZSB0 aHJvdWdoIHRoZSB2bWEuDQo+IC0JCQkgKi8NCj4gLQkJCXVuc2lnbmVkIGludCBndHQ7DQo+IC0J CX0gcGFnZV9zaXplczsNCj4gKwkJc3RydWN0IGk5MTVfcGFnZV9zaXplcyBwYWdlX3NpemVzOw0K PiANCj4gIAkJSTkxNV9TRUxGVEVTVF9ERUNMQVJFKHVuc2lnbmVkIGludCBwYWdlX21hc2spOw0K PiANCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9zZWxmdGVzdHMvaHVn ZV9wYWdlcy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL3NlbGZ0ZXN0cy9odWdlX3BhZ2Vz LmMNCj4gaW5kZXggMTFmMGFhNjVmOGEzLi4yNmY5OTdjMzc2YTIgMTAwNjQ0DQo+IC0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9zZWxmdGVzdHMvaHVnZV9wYWdlcy5jDQo+ICsrKyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9zZWxmdGVzdHMvaHVnZV9wYWdlcy5jDQo+IEBAIC0zNzAs OSArMzcwLDkgQEAgc3RhdGljIGludCBpZ3RfY2hlY2tfcGFnZV9zaXplcyhzdHJ1Y3QgaTkxNV92 bWEgKnZtYSkNCj4gIAkJZXJyID0gLUVJTlZBTDsNCj4gIAl9DQo+IA0KPiAtCWlmICghSEFTX1BB R0VfU0laRVMoaTkxNSwgdm1hLT5wYWdlX3NpemVzLmd0dCkpIHsNCj4gKwlpZiAoIUhBU19QQUdF X1NJWkVTKGk5MTUsIHZtYS0+cmVzb3VyY2UtPnBhZ2Vfc2l6ZXNfZ3R0KSkgew0KPiAgCQlwcl9l cnIoInVuc3VwcG9ydGVkIHBhZ2Vfc2l6ZXMuZ3R0PSV1LCBzdXBwb3J0ZWQ9JXVcbiIsDQo+IC0J CSAgICAgICB2bWEtPnBhZ2Vfc2l6ZXMuZ3R0ICYgfnN1cHBvcnRlZCwgc3VwcG9ydGVkKTsNCj4g KwkJICAgICAgIHZtYS0+cmVzb3VyY2UtPnBhZ2Vfc2l6ZXNfZ3R0ICYgfnN1cHBvcnRlZCwgc3Vw cG9ydGVkKTsNCj4gIAkJZXJyID0gLUVJTlZBTDsNCj4gIAl9DQo+IA0KPiBAQCAtNDAzLDE1ICs0 MDMsOSBAQCBzdGF0aWMgaW50IGlndF9jaGVja19wYWdlX3NpemVzKHN0cnVjdCBpOTE1X3ZtYSAq dm1hKQ0KPiAgCWlmIChpOTE1X2dlbV9vYmplY3RfaXNfbG1lbShvYmopICYmDQo+ICAJICAgIElT X0FMSUdORUQodm1hLT5ub2RlLnN0YXJ0LCBTWl8yTSkgJiYNCj4gIAkgICAgdm1hLT5wYWdlX3Np emVzLnNnICYgU1pfMk0gJiYNCj4gLQkgICAgdm1hLT5wYWdlX3NpemVzLmd0dCA8IFNaXzJNKSB7 DQo+ICsJICAgIHZtYS0+cmVzb3VyY2UtPnBhZ2Vfc2l6ZXNfZ3R0IDwgU1pfMk0pIHsNCj4gIAkJ cHJfZXJyKCJndHQgcGFnZXMgbWlzbWF0Y2ggZm9yIExNRU0sIGV4cGVjdGVkIDJNIEdUVCBwYWdl cywgc2coJXUpLCBndHQoJXUpXG4iLA0KPiAtCQkgICAgICAgdm1hLT5wYWdlX3NpemVzLnNnLCB2 bWEtPnBhZ2Vfc2l6ZXMuZ3R0KTsNCj4gLQkJZXJyID0gLUVJTlZBTDsNCj4gLQl9DQo+IC0NCj4g LQlpZiAob2JqLT5tbS5wYWdlX3NpemVzLmd0dCkgew0KPiAtCQlwcl9lcnIoIm9iai0+cGFnZV9z aXplcy5ndHQoJXUpIHNob3VsZCBuZXZlciBiZSBzZXRcbiIsDQo+IC0JCSAgICAgICBvYmotPm1t LnBhZ2Vfc2l6ZXMuZ3R0KTsNCj4gKwkJICAgICAgIHZtYS0+cGFnZV9zaXplcy5zZywgdm1hLT5y ZXNvdXJjZS0+cGFnZV9zaXplc19ndHQpOw0KPiAgCQllcnIgPSAtRUlOVkFMOw0KPiAgCX0NCj4g DQo+IEBAIC01NDcsOSArNTQxLDkgQEAgc3RhdGljIGludCBpZ3RfbW9ja19tZW1vcnlfcmVnaW9u X2h1Z2VfcGFnZXModm9pZCAqYXJnKQ0KPiAgCQkJCWdvdG8gb3V0X3VucGluOw0KPiAgCQkJfQ0K PiANCj4gLQkJCWlmICh2bWEtPnBhZ2Vfc2l6ZXMuZ3R0ICE9IHBhZ2Vfc2l6ZSkgew0KPiArCQkJ aWYgKHZtYS0+cmVzb3VyY2UtPnBhZ2Vfc2l6ZXNfZ3R0ICE9IHBhZ2Vfc2l6ZSkgew0KPiAgCQkJ CXByX2VycigiJXMgcGFnZV9zaXplcy5ndHQ9JXUsIGV4cGVjdGVkPSV1XG4iLA0KPiAtCQkJCSAg ICAgICBfX2Z1bmNfXywgdm1hLT5wYWdlX3NpemVzLmd0dCwNCj4gKwkJCQkgICAgICAgX19mdW5j X18sIHZtYS0+cmVzb3VyY2UtPnBhZ2Vfc2l6ZXNfZ3R0LA0KPiAgCQkJCSAgICAgICBwYWdlX3Np emUpOw0KPiAgCQkJCWVyciA9IC1FSU5WQUw7DQo+ICAJCQkJZ290byBvdXRfdW5waW47DQo+IEBA IC02MzAsOSArNjI0LDkgQEAgc3RhdGljIGludCBpZ3RfbW9ja19wcGd0dF9taXNhbGlnbmVkX2Rt YSh2b2lkICphcmcpDQo+IA0KPiAgCQllcnIgPSBpZ3RfY2hlY2tfcGFnZV9zaXplcyh2bWEpOw0K PiANCj4gLQkJaWYgKHZtYS0+cGFnZV9zaXplcy5ndHQgIT0gcGFnZV9zaXplKSB7DQo+ICsJCWlm ICh2bWEtPnJlc291cmNlLT5wYWdlX3NpemVzX2d0dCAhPSBwYWdlX3NpemUpIHsNCj4gIAkJCXBy X2VycigicGFnZV9zaXplcy5ndHQ9JXUsIGV4cGVjdGVkICV1XG4iLA0KPiAtCQkJICAgICAgIHZt YS0+cGFnZV9zaXplcy5ndHQsIHBhZ2Vfc2l6ZSk7DQo+ICsJCQkgICAgICAgdm1hLT5yZXNvdXJj ZS0+cGFnZV9zaXplc19ndHQsIHBhZ2Vfc2l6ZSk7DQo+ICAJCQllcnIgPSAtRUlOVkFMOw0KPiAg CQl9DQo+IA0KPiBAQCAtNjU3LDkgKzY1MSwxMCBAQCBzdGF0aWMgaW50IGlndF9tb2NrX3BwZ3R0 X21pc2FsaWduZWRfZG1hKHZvaWQgKmFyZykNCj4gDQo+ICAJCQllcnIgPSBpZ3RfY2hlY2tfcGFn ZV9zaXplcyh2bWEpOw0KPiANCj4gLQkJCWlmICh2bWEtPnBhZ2Vfc2l6ZXMuZ3R0ICE9IEk5MTVf R1RUX1BBR0VfU0laRV80Sykgew0KPiArCQkJaWYgKHZtYS0+cmVzb3VyY2UtPnBhZ2Vfc2l6ZXNf Z3R0ICE9IEk5MTVfR1RUX1BBR0VfU0laRV80Sykgew0KPiAgCQkJCXByX2VycigicGFnZV9zaXpl cy5ndHQ9JXUsIGV4cGVjdGVkICVsbHVcbiIsDQo+IC0JCQkJICAgICAgIHZtYS0+cGFnZV9zaXpl cy5ndHQsIEk5MTVfR1RUX1BBR0VfU0laRV80Syk7DQo+ICsJCQkJICAgICAgIHZtYS0+cmVzb3Vy Y2UtPnBhZ2Vfc2l6ZXNfZ3R0LA0KPiArCQkJCSAgICAgICBJOTE1X0dUVF9QQUdFX1NJWkVfNEsp Ow0KPiAgCQkJCWVyciA9IC1FSU5WQUw7DQo+ICAJCQl9DQo+IA0KPiBAQCAtODA1LDkgKzgwMCw5 IEBAIHN0YXRpYyBpbnQgaWd0X21vY2tfcHBndHRfaHVnZV9maWxsKHZvaWQgKmFyZykNCj4gIAkJ CX0NCj4gIAkJfQ0KPiANCj4gLQkJaWYgKHZtYS0+cGFnZV9zaXplcy5ndHQgIT0gZXhwZWN0ZWRf Z3R0KSB7DQo+ICsJCWlmICh2bWEtPnJlc291cmNlLT5wYWdlX3NpemVzX2d0dCAhPSBleHBlY3Rl ZF9ndHQpIHsNCj4gIAkJCXByX2VycigiZ3R0PSV1LCBleHBlY3RlZD0ldSwgc2l6ZT0lemQsIHNp bmdsZT0lc1xuIiwNCj4gLQkJCSAgICAgICB2bWEtPnBhZ2Vfc2l6ZXMuZ3R0LCBleHBlY3RlZF9n dHQsDQo+ICsJCQkgICAgICAgdm1hLT5yZXNvdXJjZS0+cGFnZV9zaXplc19ndHQsIGV4cGVjdGVk X2d0dCwNCj4gIAkJCSAgICAgICBvYmotPmJhc2Uuc2l6ZSwgeWVzbm8oISFzaW5nbGUpKTsNCj4g IAkJCWVyciA9IC1FSU5WQUw7DQo+ICAJCQlicmVhazsNCj4gQEAgLTk2MSwxMCArOTU2LDEwIEBA IHN0YXRpYyBpbnQgaWd0X21vY2tfcHBndHRfNjRLKHZvaWQgKmFyZykNCj4gIAkJCQl9DQo+ICAJ CQl9DQo+IA0KPiAtCQkJaWYgKHZtYS0+cGFnZV9zaXplcy5ndHQgIT0gZXhwZWN0ZWRfZ3R0KSB7 DQo+ICsJCQlpZiAodm1hLT5yZXNvdXJjZS0+cGFnZV9zaXplc19ndHQgIT0gZXhwZWN0ZWRfZ3R0 KSB7DQo+ICAJCQkJcHJfZXJyKCJndHQ9JXUsIGV4cGVjdGVkPSV1LCBpPSVkLCBzaW5nbGU9JXNc biIsDQo+IC0JCQkJICAgICAgIHZtYS0+cGFnZV9zaXplcy5ndHQsIGV4cGVjdGVkX2d0dCwgaSwN Cj4gLQkJCQkgICAgICAgeWVzbm8oISFzaW5nbGUpKTsNCj4gKwkJCQkgICAgICAgdm1hLT5yZXNv dXJjZS0+cGFnZV9zaXplc19ndHQsDQo+ICsJCQkJICAgICAgIGV4cGVjdGVkX2d0dCwgaSwgeWVz bm8oISFzaW5nbGUpKTsNCj4gIAkJCQllcnIgPSAtRUlOVkFMOw0KPiAgCQkJCWdvdG8gb3V0X3Zt YV91bnBpbjsNCj4gIAkJCX0NCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0 L2dlbjZfcHBndHQuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2dlbjZfcHBndHQuYw0KPiBp bmRleCA2ZTkyOTI5MThiZmMuLmQ2NTdmZmQ2Yzg2YSAxMDA2NDQNCj4gLS0tIGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvZ3QvZ2VuNl9wcGd0dC5jDQo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2d0L2dlbjZfcHBndHQuYw0KPiBAQCAtMTA0LDE3ICsxMDQsMTcgQEAgc3RhdGljIHZvaWQgZ2Vu Nl9wcGd0dF9jbGVhcl9yYW5nZShzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2bSwNCj4gIH0N Cj4gDQo+ICBzdGF0aWMgdm9pZCBnZW42X3BwZ3R0X2luc2VydF9lbnRyaWVzKHN0cnVjdCBpOTE1 X2FkZHJlc3Nfc3BhY2UgKnZtLA0KPiAtCQkJCSAgICAgIHN0cnVjdCBpOTE1X3ZtYSAqdm1hLA0K PiArCQkJCSAgICAgIHN0cnVjdCBpOTE1X3ZtYV9yZXNvdXJjZSAqdm1hX3JlcywNCj4gIAkJCQkg ICAgICBlbnVtIGk5MTVfY2FjaGVfbGV2ZWwgY2FjaGVfbGV2ZWwsDQo+ICAJCQkJICAgICAgdTMy IGZsYWdzKQ0KPiAgew0KPiAgCXN0cnVjdCBpOTE1X3BwZ3R0ICpwcGd0dCA9IGk5MTVfdm1fdG9f cHBndHQodm0pOw0KPiAgCXN0cnVjdCBpOTE1X3BhZ2VfZGlyZWN0b3J5ICogY29uc3QgcGQgPSBw cGd0dC0+cGQ7DQo+IC0JdW5zaWduZWQgaW50IGZpcnN0X2VudHJ5ID0gdm1hLT5ub2RlLnN0YXJ0 IC8gSTkxNV9HVFRfUEFHRV9TSVpFOw0KPiArCXVuc2lnbmVkIGludCBmaXJzdF9lbnRyeSA9IHZt YV9yZXMtPnN0YXJ0IC8gSTkxNV9HVFRfUEFHRV9TSVpFOw0KPiAgCXVuc2lnbmVkIGludCBhY3Rf cHQgPSBmaXJzdF9lbnRyeSAvIEdFTjZfUFRFUzsNCj4gIAl1bnNpZ25lZCBpbnQgYWN0X3B0ZSA9 IGZpcnN0X2VudHJ5ICUgR0VONl9QVEVTOw0KPiAgCWNvbnN0IHUzMiBwdGVfZW5jb2RlID0gdm0t PnB0ZV9lbmNvZGUoMCwgY2FjaGVfbGV2ZWwsIGZsYWdzKTsNCj4gLQlzdHJ1Y3Qgc2d0X2RtYSBp dGVyID0gc2d0X2RtYSh2bWEpOw0KPiArCXN0cnVjdCBzZ3RfZG1hIGl0ZXIgPSBzZ3RfZG1hKHZt YV9yZXMpOw0KPiAgCWdlbjZfcHRlX3QgKnZhZGRyOw0KPiANCj4gIAlHRU1fQlVHX09OKCFwZC0+ ZW50cnlbYWN0X3B0XSk7DQo+IEBAIC0xNDAsNyArMTQwLDcgQEAgc3RhdGljIHZvaWQgZ2VuNl9w cGd0dF9pbnNlcnRfZW50cmllcyhzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2bSwNCj4gIAkJ fQ0KPiAgCX0gd2hpbGUgKDEpOw0KPiANCj4gLQl2bWEtPnBhZ2Vfc2l6ZXMuZ3R0ID0gSTkxNV9H VFRfUEFHRV9TSVpFOw0KPiArCXZtYV9yZXMtPnBhZ2Vfc2l6ZXNfZ3R0ID0gSTkxNV9HVFRfUEFH RV9TSVpFOw0KPiAgfQ0KPiANCj4gIHN0YXRpYyB2b2lkIGdlbjZfZmx1c2hfcGQoc3RydWN0IGdl bjZfcHBndHQgKnBwZ3R0LCB1NjQgc3RhcnQsIHU2NCBlbmQpDQo+IEBAIC0yNzEsMTMgKzI3MSwx MyBAQCBzdGF0aWMgdm9pZCBnZW42X3BwZ3R0X2NsZWFudXAoc3RydWN0IGk5MTVfYWRkcmVzc19z cGFjZSAqdm0pDQo+IA0KPiAgc3RhdGljIHZvaWQgcGRfdm1hX2JpbmQoc3RydWN0IGk5MTVfYWRk cmVzc19zcGFjZSAqdm0sDQo+ICAJCQlzdHJ1Y3QgaTkxNV92bV9wdF9zdGFzaCAqc3Rhc2gsDQo+ IC0JCQlzdHJ1Y3QgaTkxNV92bWEgKnZtYSwNCj4gKwkJCXN0cnVjdCBpOTE1X3ZtYV9yZXNvdXJj ZSAqdm1hX3JlcywNCj4gIAkJCWVudW0gaTkxNV9jYWNoZV9sZXZlbCBjYWNoZV9sZXZlbCwNCj4g IAkJCXUzMiB1bnVzZWQpDQo+ICB7DQo+ICAJc3RydWN0IGk5MTVfZ2d0dCAqZ2d0dCA9IGk5MTVf dm1fdG9fZ2d0dCh2bSk7DQo+IC0Jc3RydWN0IGdlbjZfcHBndHQgKnBwZ3R0ID0gdm1hLT5wcml2 YXRlOw0KPiAtCXUzMiBnZ3R0X29mZnNldCA9IGk5MTVfZ2d0dF9vZmZzZXQodm1hKSAvIEk5MTVf R1RUX1BBR0VfU0laRTsNCj4gKwlzdHJ1Y3QgZ2VuNl9wcGd0dCAqcHBndHQgPSB2bWFfcmVzLT5w cml2YXRlOw0KPiArCXUzMiBnZ3R0X29mZnNldCA9IHZtYV9yZXMtPnN0YXJ0IC8gSTkxNV9HVFRf UEFHRV9TSVpFOw0KPiANCj4gIAlwcGd0dC0+cHBfZGlyID0gZ2d0dF9vZmZzZXQgKiBzaXplb2Yo Z2VuNl9wdGVfdCkgPDwgMTA7DQo+ICAJcHBndHQtPnBkX2FkZHIgPSAoZ2VuNl9wdGVfdCBfX2lv bWVtICopZ2d0dC0+Z3NtICsgZ2d0dF9vZmZzZXQ7DQo+IEBAIC0yODUsOSArMjg1LDEwIEBAIHN0 YXRpYyB2b2lkIHBkX3ZtYV9iaW5kKHN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZtLA0KPiAg CWdlbjZfZmx1c2hfcGQocHBndHQsIDAsIHBwZ3R0LT5iYXNlLnZtLnRvdGFsKTsNCj4gIH0NCj4g DQo+IC1zdGF0aWMgdm9pZCBwZF92bWFfdW5iaW5kKHN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2Ug KnZtLCBzdHJ1Y3QgaTkxNV92bWEgKnZtYSkNCj4gK3N0YXRpYyB2b2lkIHBkX3ZtYV91bmJpbmQo c3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAqdm0sDQo+ICsJCQkgIHN0cnVjdCBpOTE1X3ZtYV9y ZXNvdXJjZSAqdm1hX3JlcykNCj4gIHsNCj4gLQlzdHJ1Y3QgZ2VuNl9wcGd0dCAqcHBndHQgPSB2 bWEtPnByaXZhdGU7DQo+ICsJc3RydWN0IGdlbjZfcHBndHQgKnBwZ3R0ID0gdm1hX3Jlcy0+cHJp dmF0ZTsNCj4gIAlzdHJ1Y3QgaTkxNV9wYWdlX2RpcmVjdG9yeSAqIGNvbnN0IHBkID0gcHBndHQt PmJhc2UucGQ7DQo+ICAJc3RydWN0IGk5MTVfcGFnZV90YWJsZSAqcHQ7DQo+ICAJdW5zaWduZWQg aW50IHBkZTsNCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2dlbjhfcHBn dHQuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2dlbjhfcHBndHQuYw0KPiBpbmRleCBiMDEy YzUwZjdjZTcuLmM0M2U3MjRhZmE5ZiAxMDA2NDQNCj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvZ3QvZ2VuOF9wcGd0dC5jDQo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2dlbjhf cHBndHQuYw0KPiBAQCAtNDUzLDIwICs0NTMsMjEgQEAgZ2VuOF9wcGd0dF9pbnNlcnRfcHRlKHN0 cnVjdCBpOTE1X3BwZ3R0ICpwcGd0dCwNCj4gIAlyZXR1cm4gaWR4Ow0KPiAgfQ0KPiANCj4gLXN0 YXRpYyB2b2lkIGdlbjhfcHBndHRfaW5zZXJ0X2h1Z2Uoc3RydWN0IGk5MTVfdm1hICp2bWEsDQo+ ICtzdGF0aWMgdm9pZCBnZW44X3BwZ3R0X2luc2VydF9odWdlKHN0cnVjdCBpOTE1X2FkZHJlc3Nf c3BhY2UgKnZtLA0KPiArCQkJCSAgIHN0cnVjdCBpOTE1X3ZtYV9yZXNvdXJjZSAqdm1hX3JlcywN Cj4gIAkJCQkgICBzdHJ1Y3Qgc2d0X2RtYSAqaXRlciwNCj4gIAkJCQkgICBlbnVtIGk5MTVfY2Fj aGVfbGV2ZWwgY2FjaGVfbGV2ZWwsDQo+ICAJCQkJICAgdTMyIGZsYWdzKQ0KPiAgew0KPiAgCWNv bnN0IGdlbjhfcHRlX3QgcHRlX2VuY29kZSA9IGdlbjhfcHRlX2VuY29kZSgwLCBjYWNoZV9sZXZl bCwgZmxhZ3MpOw0KPiAgCXVuc2lnbmVkIGludCByZW0gPSBzZ19kbWFfbGVuKGl0ZXItPnNnKTsN Cj4gLQl1NjQgc3RhcnQgPSB2bWEtPm5vZGUuc3RhcnQ7DQo+ICsJdTY0IHN0YXJ0ID0gdm1hX3Jl cy0+c3RhcnQ7DQo+IA0KPiAtCUdFTV9CVUdfT04oIWk5MTVfdm1faXNfNGx2bCh2bWEtPnZtKSk7 DQo+ICsJR0VNX0JVR19PTighaTkxNV92bV9pc180bHZsKHZtKSk7DQo+IA0KPiAgCWRvIHsNCj4g IAkJc3RydWN0IGk5MTVfcGFnZV9kaXJlY3RvcnkgKiBjb25zdCBwZHAgPQ0KPiAtCQkJZ2VuOF9w ZHBfZm9yX3BhZ2VfYWRkcmVzcyh2bWEtPnZtLCBzdGFydCk7DQo+ICsJCQlnZW44X3BkcF9mb3Jf cGFnZV9hZGRyZXNzKHZtLCBzdGFydCk7DQo+ICAJCXN0cnVjdCBpOTE1X3BhZ2VfZGlyZWN0b3J5 ICogY29uc3QgcGQgPQ0KPiAgCQkJaTkxNV9wZF9lbnRyeShwZHAsIF9fZ2VuOF9wdGVfaW5kZXgo c3RhcnQsIDIpKTsNCj4gIAkJZ2VuOF9wdGVfdCBlbmNvZGUgPSBwdGVfZW5jb2RlOw0KPiBAQCAt NDc1LDcgKzQ3Niw3IEBAIHN0YXRpYyB2b2lkIGdlbjhfcHBndHRfaW5zZXJ0X2h1Z2Uoc3RydWN0 IGk5MTVfdm1hICp2bWEsDQo+ICAJCWdlbjhfcHRlX3QgKnZhZGRyOw0KPiAgCQl1MTYgaW5kZXg7 DQo+IA0KPiAtCQlpZiAodm1hLT5wYWdlX3NpemVzLnNnICYgSTkxNV9HVFRfUEFHRV9TSVpFXzJN ICYmDQo+ICsJCWlmICh2bWFfcmVzLT5iaS5wYWdlX3NpemVzLnNnICYgSTkxNV9HVFRfUEFHRV9T SVpFXzJNICYmDQo+ICAJCSAgICBJU19BTElHTkVEKGl0ZXItPmRtYSwgSTkxNV9HVFRfUEFHRV9T SVpFXzJNKSAmJg0KPiAgCQkgICAgcmVtID49IEk5MTVfR1RUX1BBR0VfU0laRV8yTSAmJg0KPiAg CQkgICAgIV9fZ2VuOF9wdGVfaW5kZXgoc3RhcnQsIDApKSB7DQo+IEBAIC00OTIsNyArNDkzLDcg QEAgc3RhdGljIHZvaWQgZ2VuOF9wcGd0dF9pbnNlcnRfaHVnZShzdHJ1Y3QgaTkxNV92bWEgKnZt YSwNCj4gIAkJCXBhZ2Vfc2l6ZSA9IEk5MTVfR1RUX1BBR0VfU0laRTsNCj4gDQo+ICAJCQlpZiAo IWluZGV4ICYmDQo+IC0JCQkgICAgdm1hLT5wYWdlX3NpemVzLnNnICYgSTkxNV9HVFRfUEFHRV9T SVpFXzY0SyAmJg0KPiArCQkJICAgIHZtYV9yZXMtPmJpLnBhZ2Vfc2l6ZXMuc2cgJiBJOTE1X0dU VF9QQUdFX1NJWkVfNjRLICYmDQo+ICAJCQkgICAgSVNfQUxJR05FRChpdGVyLT5kbWEsIEk5MTVf R1RUX1BBR0VfU0laRV82NEspICYmDQo+ICAJCQkgICAgKElTX0FMSUdORUQocmVtLCBJOTE1X0dU VF9QQUdFX1NJWkVfNjRLKSB8fA0KPiAgCQkJICAgICByZW0gPj0gKEk5MTVfUERFUyAtIGluZGV4 KSAqIEk5MTVfR1RUX1BBR0VfU0laRSkpDQo+IEBAIC01NDEsOSArNTQyLDkgQEAgc3RhdGljIHZv aWQgZ2VuOF9wcGd0dF9pbnNlcnRfaHVnZShzdHJ1Y3QgaTkxNV92bWEgKnZtYSwNCj4gIAkJICov DQo+ICAJCWlmIChtYXliZV82NEsgIT0gLTEgJiYNCj4gIAkJICAgIChpbmRleCA9PSBJOTE1X1BE RVMgfHwNCj4gLQkJICAgICAoaTkxNV92bV9oYXNfc2NyYXRjaF82NEsodm1hLT52bSkgJiYNCj4g LQkJICAgICAgIWl0ZXItPnNnICYmIElTX0FMSUdORUQodm1hLT5ub2RlLnN0YXJ0ICsNCj4gLQkJ CQkJICAgICAgdm1hLT5ub2RlLnNpemUsDQo+ICsJCSAgICAgKGk5MTVfdm1faGFzX3NjcmF0Y2hf NjRLKHZtKSAmJg0KPiArCQkgICAgICAhaXRlci0+c2cgJiYgSVNfQUxJR05FRCh2bWFfcmVzLT5z dGFydCArDQo+ICsJCQkJCSAgICAgIHZtYV9yZXMtPm5vZGVfc2l6ZSwNCj4gIAkJCQkJICAgICAg STkxNV9HVFRfUEFHRV9TSVpFXzJNKSkpKSB7DQo+ICAJCQl2YWRkciA9IHB4X3ZhZGRyKHBkKTsN Cj4gIAkJCXZhZGRyW21heWJlXzY0S10gfD0gR0VOOF9QREVfSVBTXzY0SzsNCj4gQEAgLTU1OSwx MCArNTYwLDEwIEBAIHN0YXRpYyB2b2lkIGdlbjhfcHBndHRfaW5zZXJ0X2h1Z2Uoc3RydWN0IGk5 MTVfdm1hICp2bWEsDQo+ICAJCQkgKiBpbnN0ZWFkIC0gd2hpY2ggd2UgZGV0ZWN0IGFzIG1pc3Np bmcgcmVzdWx0cyBkdXJpbmcNCj4gIAkJCSAqIHNlbGZ0ZXN0cy4NCj4gIAkJCSAqLw0KPiAtCQkJ aWYgKEk5MTVfU0VMRlRFU1RfT05MWSh2bWEtPnZtLT5zY3J1Yl82NEspKSB7DQo+ICsJCQlpZiAo STkxNV9TRUxGVEVTVF9PTkxZKHZtLT5zY3J1Yl82NEspKSB7DQo+ICAJCQkJdTE2IGk7DQo+IA0K PiAtCQkJCWVuY29kZSA9IHZtYS0+dm0tPnNjcmF0Y2hbMF0tPmVuY29kZTsNCj4gKwkJCQllbmNv ZGUgPSB2bS0+c2NyYXRjaFswXS0+ZW5jb2RlOw0KPiAgCQkJCXZhZGRyID0gcHhfdmFkZHIoaTkx NV9wdF9lbnRyeShwZCwgbWF5YmVfNjRLKSk7DQo+IA0KPiAgCQkJCWZvciAoaSA9IDE7IGkgPCBp bmRleDsgaSArPSAxNikNCj4gQEAgLTU3MiwyMiArNTczLDIyIEBAIHN0YXRpYyB2b2lkIGdlbjhf cHBndHRfaW5zZXJ0X2h1Z2Uoc3RydWN0IGk5MTVfdm1hICp2bWEsDQo+ICAJCQl9DQo+ICAJCX0N Cj4gDQo+IC0JCXZtYS0+cGFnZV9zaXplcy5ndHQgfD0gcGFnZV9zaXplOw0KPiArCQl2bWFfcmVz LT5wYWdlX3NpemVzX2d0dCB8PSBwYWdlX3NpemU7DQo+ICAJfSB3aGlsZSAoaXRlci0+c2cgJiYg c2dfZG1hX2xlbihpdGVyLT5zZykpOw0KPiAgfQ0KPiANCj4gIHN0YXRpYyB2b2lkIGdlbjhfcHBn dHRfaW5zZXJ0KHN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZtLA0KPiAtCQkJICAgICAgc3Ry dWN0IGk5MTVfdm1hICp2bWEsDQo+ICsJCQkgICAgICBzdHJ1Y3QgaTkxNV92bWFfcmVzb3VyY2Ug KnZtYV9yZXMsDQo+ICAJCQkgICAgICBlbnVtIGk5MTVfY2FjaGVfbGV2ZWwgY2FjaGVfbGV2ZWws DQo+ICAJCQkgICAgICB1MzIgZmxhZ3MpDQo+ICB7DQo+ICAJc3RydWN0IGk5MTVfcHBndHQgKiBj b25zdCBwcGd0dCA9IGk5MTVfdm1fdG9fcHBndHQodm0pOw0KPiAtCXN0cnVjdCBzZ3RfZG1hIGl0 ZXIgPSBzZ3RfZG1hKHZtYSk7DQo+ICsJc3RydWN0IHNndF9kbWEgaXRlciA9IHNndF9kbWEodm1h X3Jlcyk7DQo+IA0KPiAtCWlmICh2bWEtPnBhZ2Vfc2l6ZXMuc2cgPiBJOTE1X0dUVF9QQUdFX1NJ WkUpIHsNCj4gLQkJZ2VuOF9wcGd0dF9pbnNlcnRfaHVnZSh2bWEsICZpdGVyLCBjYWNoZV9sZXZl bCwgZmxhZ3MpOw0KPiArCWlmICh2bWFfcmVzLT5iaS5wYWdlX3NpemVzLnNnID4gSTkxNV9HVFRf UEFHRV9TSVpFKSB7DQo+ICsJCWdlbjhfcHBndHRfaW5zZXJ0X2h1Z2Uodm0sIHZtYV9yZXMsICZp dGVyLCBjYWNoZV9sZXZlbCwgZmxhZ3MpOw0KPiAgCX0gZWxzZSAgew0KPiAtCQl1NjQgaWR4ID0g dm1hLT5ub2RlLnN0YXJ0ID4+IEdFTjhfUFRFX1NISUZUOw0KPiArCQl1NjQgaWR4ID0gdm1hX3Jl cy0+c3RhcnQgPj4gR0VOOF9QVEVfU0hJRlQ7DQo+IA0KPiAgCQlkbyB7DQo+ICAJCQlzdHJ1Y3Qg aTkxNV9wYWdlX2RpcmVjdG9yeSAqIGNvbnN0IHBkcCA9DQo+IEBAIC01OTcsNyArNTk4LDcgQEAg c3RhdGljIHZvaWQgZ2VuOF9wcGd0dF9pbnNlcnQoc3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAq dm0sDQo+ICAJCQkJCQkgICAgY2FjaGVfbGV2ZWwsIGZsYWdzKTsNCj4gIAkJfSB3aGlsZSAoaWR4 KTsNCj4gDQo+IC0JCXZtYS0+cGFnZV9zaXplcy5ndHQgPSBJOTE1X0dUVF9QQUdFX1NJWkU7DQo+ ICsJCXZtYV9yZXMtPnBhZ2Vfc2l6ZXNfZ3R0ID0gSTkxNV9HVFRfUEFHRV9TSVpFOw0KPiAgCX0N Cj4gIH0NCj4gDQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9l bmdpbmVfY3MuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZV9jcy5jDQo+ IGluZGV4IDM1MjI1NGUwMDFiNC4uNzRhYTkwNTg3MDYxIDEwMDY0NA0KPiAtLS0gYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVfY3MuYw0KPiArKysgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVfY3MuYw0KPiBAQCAtMTcxOCw4ICsxNzE4LDggQEAgc3Rh dGljIHZvaWQgcHJpbnRfcmVxdWVzdF9yaW5nKHN0cnVjdCBkcm1fcHJpbnRlciAqbSwgc3RydWN0 IGk5MTVfcmVxdWVzdCAqcnEpDQo+ICAJZHJtX3ByaW50ZihtLA0KPiAgCQkgICAiW2hlYWQgJTA0 eCwgcG9zdGZpeCAlMDR4LCB0YWlsICUwNHgsIGJhdGNoIDB4JTA4eF8lMDh4XTpcbiIsDQo+ICAJ CSAgIHJxLT5oZWFkLCBycS0+cG9zdGZpeCwgcnEtPnRhaWwsDQo+IC0JCSAgIHZzbmFwID8gdXBw ZXJfMzJfYml0cyh2c25hcC0+Z3R0X29mZnNldCkgOiB+MHUsDQo+IC0JCSAgIHZzbmFwID8gbG93 ZXJfMzJfYml0cyh2c25hcC0+Z3R0X29mZnNldCkgOiB+MHUpOw0KPiArCQkgICB2c25hcCA/IHVw cGVyXzMyX2JpdHModnNuYXAtPnZtYV9yZXNvdXJjZS0+c3RhcnQpIDogfjB1LA0KPiArCQkgICB2 c25hcCA/IGxvd2VyXzMyX2JpdHModnNuYXAtPnZtYV9yZXNvdXJjZS0+c3RhcnQpIDogfjB1KTsN Cj4gDQo+ICAJc2l6ZSA9IHJxLT50YWlsIC0gcnEtPmhlYWQ7DQo+ICAJaWYgKHJxLT50YWlsIDwg cnEtPmhlYWQpDQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9n Z3R0LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9nZ3R0LmMNCj4gaW5kZXggNTI2 M2RkYTdmOGQ1Li4wMTM3YjZhZjA5NzMgMTAwNjQ0DQo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2d0L2ludGVsX2dndHQuYw0KPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRl bF9nZ3R0LmMNCj4gQEAgLTIzNSw3ICsyMzUsNyBAQCBzdGF0aWMgdm9pZCBnZW44X2dndHRfaW5z ZXJ0X3BhZ2Uoc3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAqdm0sDQo+ICB9DQo+IA0KPiAgc3Rh dGljIHZvaWQgZ2VuOF9nZ3R0X2luc2VydF9lbnRyaWVzKHN0cnVjdCBpOTE1X2FkZHJlc3Nfc3Bh Y2UgKnZtLA0KPiAtCQkJCSAgICAgc3RydWN0IGk5MTVfdm1hICp2bWEsDQo+ICsJCQkJICAgICBz dHJ1Y3QgaTkxNV92bWFfcmVzb3VyY2UgKnZtYV9yZXMsDQo+ICAJCQkJICAgICBlbnVtIGk5MTVf Y2FjaGVfbGV2ZWwgbGV2ZWwsDQo+ICAJCQkJICAgICB1MzIgZmxhZ3MpDQo+ICB7DQo+IEBAIC0y NTIsMTAgKzI1MiwxMCBAQCBzdGF0aWMgdm9pZCBnZW44X2dndHRfaW5zZXJ0X2VudHJpZXMoc3Ry dWN0IGk5MTVfYWRkcmVzc19zcGFjZSAqdm0sDQo+ICAJICovDQo+IA0KPiAgCWd0ZSA9IChnZW44 X3B0ZV90IF9faW9tZW0gKilnZ3R0LT5nc207DQo+IC0JZ3RlICs9IHZtYS0+bm9kZS5zdGFydCAv IEk5MTVfR1RUX1BBR0VfU0laRTsNCj4gLQllbmQgPSBndGUgKyB2bWEtPm5vZGUuc2l6ZSAvIEk5 MTVfR1RUX1BBR0VfU0laRTsNCj4gKwlndGUgKz0gdm1hX3Jlcy0+c3RhcnQgLyBJOTE1X0dUVF9Q QUdFX1NJWkU7DQo+ICsJZW5kID0gZ3RlICsgdm1hX3Jlcy0+bm9kZV9zaXplIC8gSTkxNV9HVFRf UEFHRV9TSVpFOw0KPiANCj4gLQlmb3JfZWFjaF9zZ3RfZGFkZHIoYWRkciwgaXRlciwgdm1hLT5w YWdlcykNCj4gKwlmb3JfZWFjaF9zZ3RfZGFkZHIoYWRkciwgaXRlciwgdm1hX3Jlcy0+YmkucGFn ZXMpDQo+ICAJCWdlbjhfc2V0X3B0ZShndGUrKywgcHRlX2VuY29kZSB8IGFkZHIpOw0KPiAgCUdF TV9CVUdfT04oZ3RlID4gZW5kKTsNCj4gDQo+IEBAIC0yOTIsNyArMjkyLDcgQEAgc3RhdGljIHZv aWQgZ2VuNl9nZ3R0X2luc2VydF9wYWdlKHN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZtLA0K PiAgICogdGhyb3VnaCB0aGUgR01BRFIgbWFwcGVkIEJBUiAoaTkxNS0+bW0uZ3R0LT5ndHQpLg0K PiAgICovDQo+ICBzdGF0aWMgdm9pZCBnZW42X2dndHRfaW5zZXJ0X2VudHJpZXMoc3RydWN0IGk5 MTVfYWRkcmVzc19zcGFjZSAqdm0sDQo+IC0JCQkJICAgICBzdHJ1Y3QgaTkxNV92bWEgKnZtYSwN Cj4gKwkJCQkgICAgIHN0cnVjdCBpOTE1X3ZtYV9yZXNvdXJjZSAqdm1hX3JlcywNCj4gIAkJCQkg ICAgIGVudW0gaTkxNV9jYWNoZV9sZXZlbCBsZXZlbCwNCj4gIAkJCQkgICAgIHUzMiBmbGFncykN Cj4gIHsNCj4gQEAgLTMwMywxMCArMzAzLDEwIEBAIHN0YXRpYyB2b2lkIGdlbjZfZ2d0dF9pbnNl cnRfZW50cmllcyhzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2bSwNCj4gIAlkbWFfYWRkcl90 IGFkZHI7DQo+IA0KPiAgCWd0ZSA9IChnZW42X3B0ZV90IF9faW9tZW0gKilnZ3R0LT5nc207DQo+ IC0JZ3RlICs9IHZtYS0+bm9kZS5zdGFydCAvIEk5MTVfR1RUX1BBR0VfU0laRTsNCj4gLQllbmQg PSBndGUgKyB2bWEtPm5vZGUuc2l6ZSAvIEk5MTVfR1RUX1BBR0VfU0laRTsNCj4gKwlndGUgKz0g dm1hX3Jlcy0+c3RhcnQgLyBJOTE1X0dUVF9QQUdFX1NJWkU7DQo+ICsJZW5kID0gZ3RlICsgdm1h X3Jlcy0+bm9kZV9zaXplIC8gSTkxNV9HVFRfUEFHRV9TSVpFOw0KPiANCj4gLQlmb3JfZWFjaF9z Z3RfZGFkZHIoYWRkciwgaXRlciwgdm1hLT5wYWdlcykNCj4gKwlmb3JfZWFjaF9zZ3RfZGFkZHIo YWRkciwgaXRlciwgdm1hX3Jlcy0+YmkucGFnZXMpDQo+ICAJCWlvd3JpdGUzMih2bS0+cHRlX2Vu Y29kZShhZGRyLCBsZXZlbCwgZmxhZ3MpLCBndGUrKyk7DQo+ICAJR0VNX0JVR19PTihndGUgPiBl bmQpOw0KPiANCj4gQEAgLTM4OSw3ICszODksNyBAQCBzdGF0aWMgdm9pZCBieHRfdnRkX2dndHRf aW5zZXJ0X3BhZ2VfX0JLTChzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2bSwNCj4gDQo+ICBz dHJ1Y3QgaW5zZXJ0X2VudHJpZXMgew0KPiAgCXN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZt Ow0KPiAtCXN0cnVjdCBpOTE1X3ZtYSAqdm1hOw0KPiArCXN0cnVjdCBpOTE1X3ZtYV9yZXNvdXJj ZSAqdm1hX3JlczsNCj4gIAllbnVtIGk5MTVfY2FjaGVfbGV2ZWwgbGV2ZWw7DQo+ICAJdTMyIGZs YWdzOw0KPiAgfTsNCj4gQEAgLTM5OCwxOCArMzk4LDE4IEBAIHN0YXRpYyBpbnQgYnh0X3Z0ZF9n Z3R0X2luc2VydF9lbnRyaWVzX19jYih2b2lkICpfYXJnKQ0KPiAgew0KPiAgCXN0cnVjdCBpbnNl cnRfZW50cmllcyAqYXJnID0gX2FyZzsNCj4gDQo+IC0JZ2VuOF9nZ3R0X2luc2VydF9lbnRyaWVz KGFyZy0+dm0sIGFyZy0+dm1hLCBhcmctPmxldmVsLCBhcmctPmZsYWdzKTsNCj4gKwlnZW44X2dn dHRfaW5zZXJ0X2VudHJpZXMoYXJnLT52bSwgYXJnLT52bWFfcmVzLCBhcmctPmxldmVsLCBhcmct PmZsYWdzKTsNCj4gIAlieHRfdnRkX2dndHRfd2EoYXJnLT52bSk7DQo+IA0KPiAgCXJldHVybiAw Ow0KPiAgfQ0KPiANCj4gIHN0YXRpYyB2b2lkIGJ4dF92dGRfZ2d0dF9pbnNlcnRfZW50cmllc19f QktMKHN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZtLA0KPiAtCQkJCQkgICAgIHN0cnVjdCBp OTE1X3ZtYSAqdm1hLA0KPiArCQkJCQkgICAgIHN0cnVjdCBpOTE1X3ZtYV9yZXNvdXJjZSAqdm1h X3JlcywNCj4gIAkJCQkJICAgICBlbnVtIGk5MTVfY2FjaGVfbGV2ZWwgbGV2ZWwsDQo+ICAJCQkJ CSAgICAgdTMyIGZsYWdzKQ0KPiAgew0KPiAtCXN0cnVjdCBpbnNlcnRfZW50cmllcyBhcmcgPSB7 IHZtLCB2bWEsIGxldmVsLCBmbGFncyB9Ow0KPiArCXN0cnVjdCBpbnNlcnRfZW50cmllcyBhcmcg PSB7IHZtLCB2bWFfcmVzLCBsZXZlbCwgZmxhZ3MgfTsNCj4gDQo+ICAJc3RvcF9tYWNoaW5lKGJ4 dF92dGRfZ2d0dF9pbnNlcnRfZW50cmllc19fY2IsICZhcmcsIE5VTEwpOw0KPiAgfQ0KPiBAQCAt NDQ4LDE0ICs0NDgsMTQgQEAgc3RhdGljIHZvaWQgaTkxNV9nZ3R0X2luc2VydF9wYWdlKHN0cnVj dCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZtLA0KPiAgfQ0KPiANCj4gIHN0YXRpYyB2b2lkIGk5MTVf Z2d0dF9pbnNlcnRfZW50cmllcyhzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2bSwNCj4gLQkJ CQkgICAgIHN0cnVjdCBpOTE1X3ZtYSAqdm1hLA0KPiArCQkJCSAgICAgc3RydWN0IGk5MTVfdm1h X3Jlc291cmNlICp2bWFfcmVzLA0KPiAgCQkJCSAgICAgZW51bSBpOTE1X2NhY2hlX2xldmVsIGNh Y2hlX2xldmVsLA0KPiAgCQkJCSAgICAgdTMyIHVudXNlZCkNCj4gIHsNCj4gIAl1bnNpZ25lZCBp bnQgZmxhZ3MgPSAoY2FjaGVfbGV2ZWwgPT0gSTkxNV9DQUNIRV9OT05FKSA/DQo+ICAJCUFHUF9V U0VSX01FTU9SWSA6IEFHUF9VU0VSX0NBQ0hFRF9NRU1PUlk7DQo+IA0KPiAtCWludGVsX2d0dF9p bnNlcnRfc2dfZW50cmllcyh2bWEtPnBhZ2VzLCB2bWEtPm5vZGUuc3RhcnQgPj4gUEFHRV9TSElG VCwNCj4gKwlpbnRlbF9ndHRfaW5zZXJ0X3NnX2VudHJpZXModm1hX3Jlcy0+YmkucGFnZXMsIHZt YV9yZXMtPnN0YXJ0ID4+IFBBR0VfU0hJRlQsDQo+ICAJCQkJICAgIGZsYWdzKTsNCj4gIH0NCj4g DQo+IEBAIC00NjcsMzAgKzQ2NywzMiBAQCBzdGF0aWMgdm9pZCBpOTE1X2dndHRfY2xlYXJfcmFu Z2Uoc3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAqdm0sDQo+IA0KPiAgc3RhdGljIHZvaWQgZ2d0 dF9iaW5kX3ZtYShzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2bSwNCj4gIAkJCSAgc3RydWN0 IGk5MTVfdm1fcHRfc3Rhc2ggKnN0YXNoLA0KPiAtCQkJICBzdHJ1Y3QgaTkxNV92bWEgKnZtYSwN Cj4gKwkJCSAgc3RydWN0IGk5MTVfdm1hX3Jlc291cmNlICp2bWFfcmVzLA0KPiAgCQkJICBlbnVt IGk5MTVfY2FjaGVfbGV2ZWwgY2FjaGVfbGV2ZWwsDQo+ICAJCQkgIHUzMiBmbGFncykNCj4gIHsN Cj4gLQlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqID0gdm1hLT5vYmo7DQo+ICAJdTMy IHB0ZV9mbGFnczsNCj4gDQo+IC0JaWYgKGk5MTVfdm1hX2lzX2JvdW5kKHZtYSwgfmZsYWdzICYg STkxNV9WTUFfQklORF9NQVNLKSkNCj4gKwlpZiAodm1hX3Jlcy0+Ym91bmRfZmxhZ3MgJiAofmZs YWdzICYgSTkxNV9WTUFfQklORF9NQVNLKSkNCj4gIAkJcmV0dXJuOw0KPiANCj4gKwl2bWFfcmVz LT5ib3VuZF9mbGFncyB8PSBmbGFnczsNCj4gKw0KPiAgCS8qIEFwcGxpY2FibGUgdG8gVkxWIChn ZW44KyBkbyBub3Qgc3VwcG9ydCBSTyBpbiB0aGUgR0dUVCkgKi8NCj4gIAlwdGVfZmxhZ3MgPSAw Ow0KPiAtCWlmIChpOTE1X2dlbV9vYmplY3RfaXNfcmVhZG9ubHkob2JqKSkNCj4gKwlpZiAodm1h X3Jlcy0+YmkucmVhZG9ubHkpDQo+ICAJCXB0ZV9mbGFncyB8PSBQVEVfUkVBRF9PTkxZOw0KPiAt CWlmIChpOTE1X2dlbV9vYmplY3RfaXNfbG1lbShvYmopKQ0KPiArCWlmICh2bWFfcmVzLT5iaS5s bWVtKQ0KPiAgCQlwdGVfZmxhZ3MgfD0gUFRFX0xNOw0KPiANCj4gLQl2bS0+aW5zZXJ0X2VudHJp ZXModm0sIHZtYSwgY2FjaGVfbGV2ZWwsIHB0ZV9mbGFncyk7DQo+IC0Jdm1hLT5wYWdlX3NpemVz Lmd0dCA9IEk5MTVfR1RUX1BBR0VfU0laRTsNCj4gKwl2bS0+aW5zZXJ0X2VudHJpZXModm0sIHZt YV9yZXMsIGNhY2hlX2xldmVsLCBwdGVfZmxhZ3MpOw0KPiArCXZtYV9yZXMtPnBhZ2Vfc2l6ZXNf Z3R0ID0gSTkxNV9HVFRfUEFHRV9TSVpFOw0KPiAgfQ0KPiANCj4gLXN0YXRpYyB2b2lkIGdndHRf dW5iaW5kX3ZtYShzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2bSwgc3RydWN0IGk5MTVfdm1h ICp2bWEpDQo+ICtzdGF0aWMgdm9pZCBnZ3R0X3VuYmluZF92bWEoc3RydWN0IGk5MTVfYWRkcmVz c19zcGFjZSAqdm0sDQo+ICsJCQkgICAgc3RydWN0IGk5MTVfdm1hX3Jlc291cmNlICp2bWFfcmVz KQ0KPiAgew0KPiAtCXZtLT5jbGVhcl9yYW5nZSh2bSwgdm1hLT5ub2RlLnN0YXJ0LCB2bWEtPnNp emUpOw0KPiArCXZtLT5jbGVhcl9yYW5nZSh2bSwgdm1hX3Jlcy0+c3RhcnQsIHZtYV9yZXMtPnZt YV9zaXplKTsNCj4gIH0NCj4gDQo+ICBzdGF0aWMgaW50IGdndHRfcmVzZXJ2ZV9ndWNfdG9wKHN0 cnVjdCBpOTE1X2dndHQgKmdndHQpDQo+IEBAIC02MjMsNyArNjI1LDcgQEAgc3RhdGljIGludCBp bml0X2dndHQoc3RydWN0IGk5MTVfZ2d0dCAqZ2d0dCkNCj4gDQo+ICBzdGF0aWMgdm9pZCBhbGlh c2luZ19ndHRfYmluZF92bWEoc3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAqdm0sDQo+ICAJCQkJ ICBzdHJ1Y3QgaTkxNV92bV9wdF9zdGFzaCAqc3Rhc2gsDQo+IC0JCQkJICBzdHJ1Y3QgaTkxNV92 bWEgKnZtYSwNCj4gKwkJCQkgIHN0cnVjdCBpOTE1X3ZtYV9yZXNvdXJjZSAqdm1hX3JlcywNCj4g IAkJCQkgIGVudW0gaTkxNV9jYWNoZV9sZXZlbCBjYWNoZV9sZXZlbCwNCj4gIAkJCQkgIHUzMiBm bGFncykNCj4gIHsNCj4gQEAgLTYzMSwyNSArNjMzLDI3IEBAIHN0YXRpYyB2b2lkIGFsaWFzaW5n X2d0dF9iaW5kX3ZtYShzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2bSwNCj4gDQo+ICAJLyog Q3VycmVudGx5IGFwcGxpY2FibGUgb25seSB0byBWTFYgKi8NCj4gIAlwdGVfZmxhZ3MgPSAwOw0K PiAtCWlmIChpOTE1X2dlbV9vYmplY3RfaXNfcmVhZG9ubHkodm1hLT5vYmopKQ0KPiArCWlmICh2 bWFfcmVzLT5iaS5yZWFkb25seSkNCj4gIAkJcHRlX2ZsYWdzIHw9IFBURV9SRUFEX09OTFk7DQo+ IA0KPiAgCWlmIChmbGFncyAmIEk5MTVfVk1BX0xPQ0FMX0JJTkQpDQo+ICAJCXBwZ3R0X2JpbmRf dm1hKCZpOTE1X3ZtX3RvX2dndHQodm0pLT5hbGlhcy0+dm0sDQo+IC0JCQkgICAgICAgc3Rhc2gs IHZtYSwgY2FjaGVfbGV2ZWwsIGZsYWdzKTsNCj4gKwkJCSAgICAgICBzdGFzaCwgdm1hX3Jlcywg Y2FjaGVfbGV2ZWwsIGZsYWdzKTsNCj4gDQo+ICAJaWYgKGZsYWdzICYgSTkxNV9WTUFfR0xPQkFM X0JJTkQpDQo+IC0JCXZtLT5pbnNlcnRfZW50cmllcyh2bSwgdm1hLCBjYWNoZV9sZXZlbCwgcHRl X2ZsYWdzKTsNCj4gKwkJdm0tPmluc2VydF9lbnRyaWVzKHZtLCB2bWFfcmVzLCBjYWNoZV9sZXZl bCwgcHRlX2ZsYWdzKTsNCj4gKw0KPiArCXZtYV9yZXMtPmJvdW5kX2ZsYWdzIHw9IGZsYWdzOw0K PiAgfQ0KPiANCj4gIHN0YXRpYyB2b2lkIGFsaWFzaW5nX2d0dF91bmJpbmRfdm1hKHN0cnVjdCBp OTE1X2FkZHJlc3Nfc3BhY2UgKnZtLA0KPiAtCQkJCSAgICBzdHJ1Y3QgaTkxNV92bWEgKnZtYSkN Cj4gKwkJCQkgICAgc3RydWN0IGk5MTVfdm1hX3Jlc291cmNlICp2bWFfcmVzKQ0KPiAgew0KPiAt CWlmIChpOTE1X3ZtYV9pc19ib3VuZCh2bWEsIEk5MTVfVk1BX0dMT0JBTF9CSU5EKSkNCj4gLQkJ dm0tPmNsZWFyX3JhbmdlKHZtLCB2bWEtPm5vZGUuc3RhcnQsIHZtYS0+c2l6ZSk7DQo+ICsJaWYg KHZtYV9yZXMtPmJvdW5kX2ZsYWdzICYgSTkxNV9WTUFfR0xPQkFMX0JJTkQpDQo+ICsJCXZtLT5j bGVhcl9yYW5nZSh2bSwgdm1hX3Jlcy0+c3RhcnQsIHZtYV9yZXMtPnZtYV9zaXplKTsNCj4gDQo+ IC0JaWYgKGk5MTVfdm1hX2lzX2JvdW5kKHZtYSwgSTkxNV9WTUFfTE9DQUxfQklORCkpDQo+IC0J CXBwZ3R0X3VuYmluZF92bWEoJmk5MTVfdm1fdG9fZ2d0dCh2bSktPmFsaWFzLT52bSwgdm1hKTsN Cj4gKwlpZiAodm1hX3Jlcy0+Ym91bmRfZmxhZ3MgJiBJOTE1X1ZNQV9MT0NBTF9CSU5EKQ0KPiAr CQlwcGd0dF91bmJpbmRfdm1hKCZpOTE1X3ZtX3RvX2dndHQodm0pLT5hbGlhcy0+dm0sIHZtYV9y ZXMpOw0KPiAgfQ0KPiANCj4gIHN0YXRpYyBpbnQgaW5pdF9hbGlhc2luZ19wcGd0dChzdHJ1Y3Qg aTkxNV9nZ3R0ICpnZ3R0KQ0KPiBAQCAtMTI4MCw3ICsxMjg0LDcgQEAgYm9vbCBpOTE1X2dndHRf cmVzdW1lX3ZtKHN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZtKQ0KPiAgCQkJYXRvbWljX3Jl YWQoJnZtYS0+ZmxhZ3MpICYgSTkxNV9WTUFfQklORF9NQVNLOw0KPiANCj4gIAkJR0VNX0JVR19P Tighd2FzX2JvdW5kKTsNCj4gLQkJdm1hLT5vcHMtPmJpbmRfdm1hKHZtLCBOVUxMLCB2bWEsDQo+ ICsJCXZtYS0+b3BzLT5iaW5kX3ZtYSh2bSwgTlVMTCwgdm1hLT5yZXNvdXJjZSwNCj4gIAkJCQkg ICBvYmogPyBvYmotPmNhY2hlX2xldmVsIDogMCwNCj4gIAkJCQkgICB3YXNfYm91bmQpOw0KPiAg CQlpZiAob2JqKSB7IC8qIG9ubHkgdXNlZCBkdXJpbmcgcmVzdW1lID0+IGV4Y2x1c2l2ZSBhY2Nl c3MgKi8NCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2d0dC5o IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZ3R0LmgNCj4gaW5kZXggMTc3YjQyYjkz NWExLi42NzZiODM5ZDFhMzQgMTAwNjQ0DQo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0 L2ludGVsX2d0dC5oDQo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2d0dC5o DQo+IEBAIC0yNyw2ICsyNyw3IEBADQo+IA0KPiAgI2luY2x1ZGUgImd0L2ludGVsX3Jlc2V0Lmgi DQo+ICAjaW5jbHVkZSAiaTkxNV9zZWxmdGVzdC5oIg0KPiArI2luY2x1ZGUgImk5MTVfdm1hX3Jl c291cmNlLmgiDQo+ICAjaW5jbHVkZSAiaTkxNV92bWFfdHlwZXMuaCINCj4gDQo+ICAjZGVmaW5l IEk5MTVfR0ZQX0FMTE9XX0ZBSUwgKEdGUF9LRVJORUwgfCBfX0dGUF9SRVRSWV9NQVlGQUlMIHwg X19HRlBfTk9XQVJOKQ0KPiBAQCAtMjAwLDcgKzIwMSw3IEBAIHN0cnVjdCBpOTE1X3ZtYV9vcHMg ew0KPiAgCS8qIE1hcCBhbiBvYmplY3QgaW50byBhbiBhZGRyZXNzIHNwYWNlIHdpdGggdGhlIGdp dmVuIGNhY2hlIGZsYWdzLiAqLw0KPiAgCXZvaWQgKCpiaW5kX3ZtYSkoc3RydWN0IGk5MTVfYWRk cmVzc19zcGFjZSAqdm0sDQo+ICAJCQkgc3RydWN0IGk5MTVfdm1fcHRfc3Rhc2ggKnN0YXNoLA0K PiAtCQkJIHN0cnVjdCBpOTE1X3ZtYSAqdm1hLA0KPiArCQkJIHN0cnVjdCBpOTE1X3ZtYV9yZXNv dXJjZSAqdm1hX3JlcywNCj4gIAkJCSBlbnVtIGk5MTVfY2FjaGVfbGV2ZWwgY2FjaGVfbGV2ZWws DQo+ICAJCQkgdTMyIGZsYWdzKTsNCj4gIAkvKg0KPiBAQCAtMjA4LDcgKzIwOSw4IEBAIHN0cnVj dCBpOTE1X3ZtYV9vcHMgew0KPiAgCSAqIHNldHRpbmcgdGhlIHZhbGlkIFBURSBlbnRyaWVzIHRv IGEgcmVzZXJ2ZWQgc2NyYXRjaCBwYWdlLg0KPiAgCSAqLw0KPiAgCXZvaWQgKCp1bmJpbmRfdm1h KShzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2bSwNCj4gLQkJCSAgIHN0cnVjdCBpOTE1X3Zt YSAqdm1hKTsNCj4gKwkJCSAgIHN0cnVjdCBpOTE1X3ZtYV9yZXNvdXJjZSAqdm1hX3Jlcyk7DQo+ ICsNCj4gIH07DQo+IA0KPiAgc3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSB7DQo+IEBAIC0yODUs NyArMjg3LDcgQEAgc3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSB7DQo+ICAJCQkgICAgZW51bSBp OTE1X2NhY2hlX2xldmVsIGNhY2hlX2xldmVsLA0KPiAgCQkJICAgIHUzMiBmbGFncyk7DQo+ICAJ dm9pZCAoKmluc2VydF9lbnRyaWVzKShzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2bSwNCj4g LQkJCSAgICAgICBzdHJ1Y3QgaTkxNV92bWEgKnZtYSwNCj4gKwkJCSAgICAgICBzdHJ1Y3QgaTkx NV92bWFfcmVzb3VyY2UgKnZtYV9yZXMsDQo+ICAJCQkgICAgICAgZW51bSBpOTE1X2NhY2hlX2xl dmVsIGNhY2hlX2xldmVsLA0KPiAgCQkJICAgICAgIHUzMiBmbGFncyk7DQo+ICAJdm9pZCAoKmNs ZWFudXApKHN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZtKTsNCj4gQEAgLTYwMCwxMSArNjAy LDExIEBAIHZvaWQgZ2VuNl9nZ3R0X2ludmFsaWRhdGUoc3RydWN0IGk5MTVfZ2d0dCAqZ2d0dCk7 DQo+IA0KPiAgdm9pZCBwcGd0dF9iaW5kX3ZtYShzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2 bSwNCj4gIAkJICAgIHN0cnVjdCBpOTE1X3ZtX3B0X3N0YXNoICpzdGFzaCwNCj4gLQkJICAgIHN0 cnVjdCBpOTE1X3ZtYSAqdm1hLA0KPiArCQkgICAgc3RydWN0IGk5MTVfdm1hX3Jlc291cmNlICp2 bWFfcmVzLA0KPiAgCQkgICAgZW51bSBpOTE1X2NhY2hlX2xldmVsIGNhY2hlX2xldmVsLA0KPiAg CQkgICAgdTMyIGZsYWdzKTsNCj4gIHZvaWQgcHBndHRfdW5iaW5kX3ZtYShzdHJ1Y3QgaTkxNV9h ZGRyZXNzX3NwYWNlICp2bSwNCj4gLQkJICAgICAgc3RydWN0IGk5MTVfdm1hICp2bWEpOw0KPiAr CQkgICAgICBzdHJ1Y3QgaTkxNV92bWFfcmVzb3VyY2UgKnZtYV9yZXMpOw0KPiANCj4gIHZvaWQg Z3R0X3dyaXRlX3dvcmthcm91bmRzKHN0cnVjdCBpbnRlbF9ndCAqZ3QpOw0KPiANCj4gQEAgLTYy Nyw4ICs2MjksOCBAQCBfX3ZtX2NyZWF0ZV9zY3JhdGNoX2Zvcl9yZWFkX3Bpbm5lZChzdHJ1Y3Qg aTkxNV9hZGRyZXNzX3NwYWNlICp2bSwgdW5zaWduZWQgbG9uZw0KPiAgc3RhdGljIGlubGluZSBz dHJ1Y3Qgc2d0X2RtYSB7DQo+ICAJc3RydWN0IHNjYXR0ZXJsaXN0ICpzZzsNCj4gIAlkbWFfYWRk cl90IGRtYSwgbWF4Ow0KPiAtfSBzZ3RfZG1hKHN0cnVjdCBpOTE1X3ZtYSAqdm1hKSB7DQo+IC0J c3RydWN0IHNjYXR0ZXJsaXN0ICpzZyA9IHZtYS0+cGFnZXMtPnNnbDsNCj4gK30gc2d0X2RtYShz dHJ1Y3QgaTkxNV92bWFfcmVzb3VyY2UgKnZtYV9yZXMpIHsNCj4gKwlzdHJ1Y3Qgc2NhdHRlcmxp c3QgKnNnID0gdm1hX3Jlcy0+YmkucGFnZXMtPnNnbDsNCj4gIAlkbWFfYWRkcl90IGFkZHIgPSBz Z19kbWFfYWRkcmVzcyhzZyk7DQo+IA0KPiAgCXJldHVybiAoc3RydWN0IHNndF9kbWEpeyBzZywg YWRkciwgYWRkciArIHNnX2RtYV9sZW4oc2cpIH07DQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9ndC9pbnRlbF9wcGd0dC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50 ZWxfcHBndHQuYw0KPiBpbmRleCAwODNiMzA5MGM2OWMuLjQ4ZTZlMmY4NzcwMCAxMDA2NDQNCj4g LS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfcHBndHQuYw0KPiArKysgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9wcGd0dC5jDQo+IEBAIC0xNzksMzIgKzE3OSwzNCBA QCBzdHJ1Y3QgaTkxNV9wcGd0dCAqaTkxNV9wcGd0dF9jcmVhdGUoc3RydWN0IGludGVsX2d0ICpn dCwNCj4gDQo+ICB2b2lkIHBwZ3R0X2JpbmRfdm1hKHN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2Ug KnZtLA0KPiAgCQkgICAgc3RydWN0IGk5MTVfdm1fcHRfc3Rhc2ggKnN0YXNoLA0KPiAtCQkgICAg c3RydWN0IGk5MTVfdm1hICp2bWEsDQo+ICsJCSAgICBzdHJ1Y3QgaTkxNV92bWFfcmVzb3VyY2Ug KnZtYV9yZXMsDQo+ICAJCSAgICBlbnVtIGk5MTVfY2FjaGVfbGV2ZWwgY2FjaGVfbGV2ZWwsDQo+ ICAJCSAgICB1MzIgZmxhZ3MpDQo+ICB7DQo+ICAJdTMyIHB0ZV9mbGFnczsNCj4gDQo+IC0JaWYg KCF0ZXN0X2JpdChJOTE1X1ZNQV9BTExPQ19CSVQsIF9faTkxNV92bWFfZmxhZ3Modm1hKSkpIHsN Cj4gLQkJdm0tPmFsbG9jYXRlX3ZhX3JhbmdlKHZtLCBzdGFzaCwgdm1hLT5ub2RlLnN0YXJ0LCB2 bWEtPnNpemUpOw0KPiAtCQlzZXRfYml0KEk5MTVfVk1BX0FMTE9DX0JJVCwgX19pOTE1X3ZtYV9m bGFncyh2bWEpKTsNCj4gKwlpZiAoIXZtYV9yZXMtPmFsbG9jYXRlZCkgew0KPiArCQl2bS0+YWxs b2NhdGVfdmFfcmFuZ2Uodm0sIHN0YXNoLCB2bWFfcmVzLT5zdGFydCwNCj4gKwkJCQkgICAgICB2 bWFfcmVzLT52bWFfc2l6ZSk7DQo+ICsJCXZtYV9yZXMtPmFsbG9jYXRlZCA9IHRydWU7DQo+ICAJ fQ0KPiANCj4gIAkvKiBBcHBsaWNhYmxlIHRvIFZMViwgYW5kIGdlbjgrICovDQo+ICAJcHRlX2Zs YWdzID0gMDsNCj4gLQlpZiAoaTkxNV9nZW1fb2JqZWN0X2lzX3JlYWRvbmx5KHZtYS0+b2JqKSkN Cj4gKwlpZiAodm1hX3Jlcy0+YmkucmVhZG9ubHkpDQo+ICAJCXB0ZV9mbGFncyB8PSBQVEVfUkVB RF9PTkxZOw0KPiAtCWlmIChpOTE1X2dlbV9vYmplY3RfaXNfbG1lbSh2bWEtPm9iaikpDQo+ICsJ aWYgKHZtYV9yZXMtPmJpLmxtZW0pDQo+ICAJCXB0ZV9mbGFncyB8PSBQVEVfTE07DQo+IA0KPiAt CXZtLT5pbnNlcnRfZW50cmllcyh2bSwgdm1hLCBjYWNoZV9sZXZlbCwgcHRlX2ZsYWdzKTsNCj4g Kwl2bS0+aW5zZXJ0X2VudHJpZXModm0sIHZtYV9yZXMsIGNhY2hlX2xldmVsLCBwdGVfZmxhZ3Mp Ow0KPiAgCXdtYigpOw0KPiAgfQ0KPiANCj4gLXZvaWQgcHBndHRfdW5iaW5kX3ZtYShzdHJ1Y3Qg aTkxNV9hZGRyZXNzX3NwYWNlICp2bSwgc3RydWN0IGk5MTVfdm1hICp2bWEpDQo+ICt2b2lkIHBw Z3R0X3VuYmluZF92bWEoc3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAqdm0sDQo+ICsJCSAgICAg IHN0cnVjdCBpOTE1X3ZtYV9yZXNvdXJjZSAqdm1hX3JlcykNCj4gIHsNCj4gLQlpZiAodGVzdF9h bmRfY2xlYXJfYml0KEk5MTVfVk1BX0FMTE9DX0JJVCwgX19pOTE1X3ZtYV9mbGFncyh2bWEpKSkN Cj4gLQkJdm0tPmNsZWFyX3JhbmdlKHZtLCB2bWEtPm5vZGUuc3RhcnQsIHZtYS0+c2l6ZSk7DQo+ ICsJaWYgKHZtYV9yZXMtPmFsbG9jYXRlZCkNCj4gKwkJdm0tPmNsZWFyX3JhbmdlKHZtLCB2bWFf cmVzLT5zdGFydCwgdm1hX3Jlcy0+dm1hX3NpemUpOw0KPiAgfQ0KPiANCj4gIHN0YXRpYyB1bnNp Z25lZCBsb25nIHBkX2NvdW50KHU2NCBzaXplLCBpbnQgc2hpZnQpDQo+IGRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF91Y19mdy5jIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvZ3QvdWMvaW50ZWxfdWNfZncuYw0KPiBpbmRleCBhNWFmMDViZGU2ZjIuLjc3N2ZjNmYw Y2VmZiAxMDA2NDQNCj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfdWNf ZncuYw0KPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF91Y19mdy5jDQo+ IEBAIC00NDgsMjAgKzQ0OCwxOSBAQCBzdGF0aWMgdm9pZCB1Y19md19iaW5kX2dndHQoc3RydWN0 IGludGVsX3VjX2Z3ICp1Y19mdykNCj4gIHsNCj4gIAlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVj dCAqb2JqID0gdWNfZnctPm9iajsNCj4gIAlzdHJ1Y3QgaTkxNV9nZ3R0ICpnZ3R0ID0gX191Y19m d190b19ndCh1Y19mdyktPmdndHQ7DQo+IC0Jc3RydWN0IGk5MTVfdm1hICpkdW1teSA9ICZ1Y19m dy0+ZHVtbXk7DQo+ICsJc3RydWN0IGk5MTVfdm1hX3Jlc291cmNlICpkdW1teSA9ICZ1Y19mdy0+ ZHVtbXk7DQo+ICAJdTMyIHB0ZV9mbGFncyA9IDA7DQo+IA0KPiAtCWR1bW15LT5ub2RlLnN0YXJ0 ID0gdWNfZndfZ2d0dF9vZmZzZXQodWNfZncpOw0KPiAtCWR1bW15LT5ub2RlLnNpemUgPSBvYmot PmJhc2Uuc2l6ZTsNCj4gLQlkdW1teS0+cGFnZXMgPSBvYmotPm1tLnBhZ2VzOw0KPiAtCWR1bW15 LT52bSA9ICZnZ3R0LT52bTsNCj4gKwlkdW1teS0+c3RhcnQgPSB1Y19md19nZ3R0X29mZnNldCh1 Y19mdyk7DQo+ICsJZHVtbXktPm5vZGVfc2l6ZSA9IG9iai0+YmFzZS5zaXplOw0KPiArCWR1bW15 LT5iaS5wYWdlcyA9IG9iai0+bW0ucGFnZXM7DQo+IA0KPiAgCUdFTV9CVUdfT04oIWk5MTVfZ2Vt X29iamVjdF9oYXNfcGlubmVkX3BhZ2VzKG9iaikpOw0KPiAtCUdFTV9CVUdfT04oZHVtbXktPm5v ZGUuc2l6ZSA+IGdndHQtPnVjX2Z3LnNpemUpOw0KPiArCUdFTV9CVUdfT04oZHVtbXktPm5vZGVf c2l6ZSA+IGdndHQtPnVjX2Z3LnNpemUpOw0KPiANCj4gIAkvKiB1Y19mdy0+b2JqIGNhY2hlIGRv bWFpbnMgd2VyZSBub3QgY29udHJvbGxlZCBhY3Jvc3Mgc3VzcGVuZCAqLw0KPiAgCWlmIChpOTE1 X2dlbV9vYmplY3RfaGFzX3N0cnVjdF9wYWdlKG9iaikpDQo+IC0JCWRybV9jbGZsdXNoX3NnKGR1 bW15LT5wYWdlcyk7DQo+ICsJCWRybV9jbGZsdXNoX3NnKGR1bW15LT5iaS5wYWdlcyk7DQo+IA0K PiAgCWlmIChpOTE1X2dlbV9vYmplY3RfaXNfbG1lbShvYmopKQ0KPiAgCQlwdGVfZmxhZ3MgfD0g UFRFX0xNOw0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxf dWNfZncuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX3VjX2Z3LmgNCj4gaW5k ZXggZDlkMWRjMGI0Y2JiLi4zMjI5MDE4ODc3ZDMgMTAwNjQ0DQo+IC0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2d0L3VjL2ludGVsX3VjX2Z3LmgNCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvZ3QvdWMvaW50ZWxfdWNfZncuaA0KPiBAQCAtODUsNyArODUsNyBAQCBzdHJ1Y3QgaW50ZWxf dWNfZncgew0KPiAgCSAqIHRocmVhZGVkIGFzIGl0IGRvbmUgZHVyaW5nIGRyaXZlciBsb2FkIChp bmhlcmVudGx5IHNpbmdsZSB0aHJlYWRlZCkNCj4gIAkgKiBvciBkdXJpbmcgYSBHVCByZXNldCAo bXV0ZXggZ3VhcmFudGVlcyBzaW5nbGUgdGhyZWFkZWQpLg0KPiAgCSAqLw0KPiAtCXN0cnVjdCBp OTE1X3ZtYSBkdW1teTsNCj4gKwlzdHJ1Y3QgaTkxNV92bWFfcmVzb3VyY2UgZHVtbXk7DQo+ICAJ c3RydWN0IGk5MTVfdm1hICpyc2FfZGF0YTsNCj4gDQo+ICAJLyoNCj4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9kZWJ1Z2ZzLmMNCj4gaW5kZXggZTBlMDUyY2RmOGI4Li5mN2QxZmViYTVhYTQgMTAwNjQ0 DQo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jDQo+ICsrKyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jDQo+IEBAIC0xNzAsNyArMTcwLDggQEAg aTkxNV9kZWJ1Z2ZzX2Rlc2NyaWJlX29iaihzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHN0cnVjdCBkcm1f aTkxNV9nZW1fb2JqZWN0ICpvYmopDQo+ICAJCXNlcV9wcmludGYobSwgIiAoJXMgb2Zmc2V0OiAl MDhsbHgsIHNpemU6ICUwOGxseCwgcGFnZXM6ICVzIiwNCj4gIAkJCSAgIHN0cmluZ2lmeV92bWFf dHlwZSh2bWEpLA0KPiAgCQkJICAgdm1hLT5ub2RlLnN0YXJ0LCB2bWEtPm5vZGUuc2l6ZSwNCj4g LQkJCSAgIHN0cmluZ2lmeV9wYWdlX3NpemVzKHZtYS0+cGFnZV9zaXplcy5ndHQsIE5VTEwsIDAp KTsNCj4gKwkJCSAgIHN0cmluZ2lmeV9wYWdlX3NpemVzKHZtYS0+cmVzb3VyY2UtPnBhZ2Vfc2l6 ZXNfZ3R0LA0KPiArCQkJCQkJTlVMTCwgMCkpOw0KPiAgCQlpZiAoaTkxNV92bWFfaXNfZ2d0dCh2 bWEpIHx8IGk5MTVfdm1hX2lzX2RwdCh2bWEpKSB7DQo+ICAJCQlzd2l0Y2ggKHZtYS0+Z2d0dF92 aWV3LnR5cGUpIHsNCj4gIAkJCWNhc2UgSTkxNV9HR1RUX1ZJRVdfTk9STUFMOg0KPiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ncHVfZXJyb3IuYyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZ3B1X2Vycm9yLmMNCj4gaW5kZXggNWFlODEyZDYwYWJlLi4xYWY1NGZm Mzc0ZjkgMTAwNjQ0DQo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3B1X2Vycm9y LmMNCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ncHVfZXJyb3IuYw0KPiBAQCAt MTA0MCw5ICsxMDQwLDkgQEAgaTkxNV92bWFfY29yZWR1bXBfY3JlYXRlKGNvbnN0IHN0cnVjdCBp bnRlbF9ndCAqZ3QsDQo+ICAJc3RyY3B5KGRzdC0+bmFtZSwgdnNuYXAtPm5hbWUpOw0KPiAgCWRz dC0+bmV4dCA9IE5VTEw7DQo+IA0KPiAtCWRzdC0+Z3R0X29mZnNldCA9IHZzbmFwLT5ndHRfb2Zm c2V0Ow0KPiAtCWRzdC0+Z3R0X3NpemUgPSB2c25hcC0+Z3R0X3NpemU7DQo+IC0JZHN0LT5ndHRf cGFnZV9zaXplcyA9IHZzbmFwLT5wYWdlX3NpemVzOw0KPiArCWRzdC0+Z3R0X29mZnNldCA9IHZz bmFwLT52bWFfcmVzb3VyY2UtPnN0YXJ0Ow0KPiArCWRzdC0+Z3R0X3NpemUgPSB2c25hcC0+dm1h X3Jlc291cmNlLT5ub2RlX3NpemU7DQo+ICsJZHN0LT5ndHRfcGFnZV9zaXplcyA9IHZzbmFwLT52 bWFfcmVzb3VyY2UtPnBhZ2Vfc2l6ZXNfZ3R0Ow0KPiAgCWRzdC0+dW51c2VkID0gMDsNCj4gDQo+ ICAJcmV0ID0gLUVJTlZBTDsNCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfdm1hLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3ZtYS5jDQo+IGluZGV4IDcwOTdj NTAxNjQzMS4uMWQ0ZTQ0OGQyMmQ5IDEwMDY0NA0KPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X3ZtYS5jDQo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfdm1hLmMNCj4g QEAgLTI5OCw3ICsyOTgsNyBAQCBzdGF0aWMgdm9pZCBfX3ZtYV9iaW5kKHN0cnVjdCBkbWFfZmVu Y2Vfd29yayAqd29yaykNCj4gIAlzdHJ1Y3QgaTkxNV92bWEgKnZtYSA9IHZ3LT52bWE7DQo+IA0K PiAgCXZtYS0+b3BzLT5iaW5kX3ZtYSh2dy0+dm0sICZ2dy0+c3Rhc2gsDQo+IC0JCQkgICB2bWEs IHZ3LT5jYWNoZV9sZXZlbCwgdnctPmZsYWdzKTsNCj4gKwkJCSAgIHZtYS0+cmVzb3VyY2UsIHZ3 LT5jYWNoZV9sZXZlbCwgdnctPmZsYWdzKTsNCj4gIH0NCj4gDQo+ICBzdGF0aWMgdm9pZCBfX3Zt YV9yZWxlYXNlKHN0cnVjdCBkbWFfZmVuY2Vfd29yayAqd29yaykNCj4gQEAgLTM3NSw2ICszNzUs MjEgQEAgc3RhdGljIGludCBpOTE1X3ZtYV92ZXJpZnlfYmluZF9jb21wbGV0ZShzdHJ1Y3QgaTkx NV92bWEgKnZtYSkNCj4gICNkZWZpbmUgaTkxNV92bWFfdmVyaWZ5X2JpbmRfY29tcGxldGUoX3Zt YSkgMA0KPiAgI2VuZGlmDQo+IA0KPiArSTkxNV9TRUxGVEVTVF9FWFBPUlQgdm9pZA0KPiAraTkx NV92bWFfcmVzb3VyY2VfaW5pdF9mcm9tX3ZtYShzdHJ1Y3QgaTkxNV92bWFfcmVzb3VyY2UgKnZt YV9yZXMsDQo+ICsJCQkJc3RydWN0IGk5MTVfdm1hICp2bWEpDQo+ICt7DQo+ICsJc3RydWN0IGRy bV9pOTE1X2dlbV9vYmplY3QgKm9iaiA9IHZtYS0+b2JqOw0KPiArDQo+ICsJaTkxNV92bWFfcmVz b3VyY2VfaW5pdCh2bWFfcmVzLCB2bWEtPnBhZ2VzLCAmdm1hLT5wYWdlX3NpemVzLA0KPiArCQkJ ICAgICAgIGk5MTVfZ2VtX29iamVjdF9pc19yZWFkb25seShvYmopLA0KPiArCQkJICAgICAgIGk5 MTVfZ2VtX29iamVjdF9pc19sbWVtKG9iaiksDQo+ICsJCQkgICAgICAgdm1hLT5wcml2YXRlLA0K PiArCQkJICAgICAgIHZtYS0+bm9kZS5zdGFydCwNCj4gKwkJCSAgICAgICB2bWEtPm5vZGUuc2l6 ZSwNCj4gKwkJCSAgICAgICB2bWEtPnNpemUpOw0KPiArfQ0KPiArDQo+ICAvKioNCj4gICAqIGk5 MTVfdm1hX2JpbmQgLSBTZXRzIHVwIFBURXMgZm9yIGFuIFZNQSBpbiBpdCdzIGNvcnJlc3BvbmRp bmcgYWRkcmVzcyBzcGFjZS4NCj4gICAqIEB2bWE6IFZNQSB0byBtYXANCj4gQEAgLTQzMiw3ICs0 NDcsNyBAQCBpbnQgaTkxNV92bWFfYmluZChzdHJ1Y3QgaTkxNV92bWEgKnZtYSwNCj4gIAkJR0VN X1dBUk5fT04oIXZtYV9mbGFncyk7DQo+ICAJCWtmcmVlKHZtYV9yZXMpOw0KPiAgCX0gZWxzZSB7 DQo+IC0JCWk5MTVfdm1hX3Jlc291cmNlX2luaXQodm1hX3Jlcyk7DQo+ICsJCWk5MTVfdm1hX3Jl c291cmNlX2luaXRfZnJvbV92bWEodm1hX3Jlcywgdm1hKTsNCj4gIAkJdm1hLT5yZXNvdXJjZSA9 IHZtYV9yZXM7DQo+ICAJfQ0KPiAgCXRyYWNlX2k5MTVfdm1hX2JpbmQodm1hLCBiaW5kX2ZsYWdz KTsNCj4gQEAgLTQ3Miw3ICs0ODcsOCBAQCBpbnQgaTkxNV92bWFfYmluZChzdHJ1Y3QgaTkxNV92 bWEgKnZtYSwNCj4gIAkJCWlmIChyZXQpDQo+ICAJCQkJcmV0dXJuIHJldDsNCj4gIAkJfQ0KPiAt CQl2bWEtPm9wcy0+YmluZF92bWEodm1hLT52bSwgTlVMTCwgdm1hLCBjYWNoZV9sZXZlbCwgYmlu ZF9mbGFncyk7DQo+ICsJCXZtYS0+b3BzLT5iaW5kX3ZtYSh2bWEtPnZtLCBOVUxMLCB2bWEtPnJl c291cmNlLCBjYWNoZV9sZXZlbCwNCj4gKwkJCQkgICBiaW5kX2ZsYWdzKTsNCj4gIAl9DQo+IA0K PiAgCWF0b21pY19vcihiaW5kX2ZsYWdzLCAmdm1hLT5mbGFncyk7DQo+IEBAIC0xNzc4LDcgKzE3 OTQsNyBAQCB2b2lkIF9faTkxNV92bWFfZXZpY3Qoc3RydWN0IGk5MTVfdm1hICp2bWEpDQo+IA0K PiAgCWlmIChsaWtlbHkoYXRvbWljX3JlYWQoJnZtYS0+dm0tPm9wZW4pKSkgew0KPiAgCQl0cmFj ZV9pOTE1X3ZtYV91bmJpbmQodm1hKTsNCj4gLQkJdm1hLT5vcHMtPnVuYmluZF92bWEodm1hLT52 bSwgdm1hKTsNCj4gKwkJdm1hLT5vcHMtPnVuYmluZF92bWEodm1hLT52bSwgdm1hLT5yZXNvdXJj ZSk7DQo+ICAJfQ0KPiAgCWF0b21pY19hbmQofihJOTE1X1ZNQV9CSU5EX01BU0sgfCBJOTE1X1ZN QV9FUlJPUiB8IEk5MTVfVk1BX0dHVFRfV1JJVEUpLA0KPiAgCQkgICAmdm1hLT5mbGFncyk7DQo+ IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3ZtYS5oIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV92bWEuaA0KPiBpbmRleCBkZTBmM2U0NGNkZmEuLjFkZjU3ZWM4MzJi ZCAxMDA2NDQNCj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV92bWEuaA0KPiArKysg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3ZtYS5oDQo+IEBAIC0zMzksMTIgKzMzOSw2IEBA IHZvaWQgX19pb21lbSAqaTkxNV92bWFfcGluX2lvbWFwKHN0cnVjdCBpOTE1X3ZtYSAqdm1hKTsN Cj4gICAqLw0KPiAgdm9pZCBpOTE1X3ZtYV91bnBpbl9pb21hcChzdHJ1Y3QgaTkxNV92bWEgKnZt YSk7DQo+IA0KPiAtc3RhdGljIGlubGluZSBzdHJ1Y3QgcGFnZSAqaTkxNV92bWFfZmlyc3RfcGFn ZShzdHJ1Y3QgaTkxNV92bWEgKnZtYSkNCj4gLXsNCj4gLQlHRU1fQlVHX09OKCF2bWEtPnBhZ2Vz KTsNCj4gLQlyZXR1cm4gc2dfcGFnZSh2bWEtPnBhZ2VzLT5zZ2wpOw0KPiAtfQ0KPiAtDQo+ICAv KioNCj4gICAqIGk5MTVfdm1hX3Bpbl9mZW5jZSAtIHBpbiBmZW5jaW5nIHN0YXRlDQo+ICAgKiBA dm1hOiB2bWEgdG8gcGluIGZlbmNpbmcgZm9yDQo+IEBAIC00NDUsNiArNDM5LDExIEBAIGk5MTVf dm1hX2dldF9jdXJyZW50X3Jlc291cmNlKHN0cnVjdCBpOTE1X3ZtYSAqdm1hKQ0KPiAgCXJldHVy biBpOTE1X3ZtYV9yZXNvdXJjZV9nZXQodm1hLT5yZXNvdXJjZSk7DQo+ICB9DQo+IA0KPiArI2lm IElTX0VOQUJMRUQoQ09ORklHX0RSTV9JOTE1X1NFTEZURVNUKQ0KPiArdm9pZCBpOTE1X3ZtYV9y ZXNvdXJjZV9pbml0X2Zyb21fdm1hKHN0cnVjdCBpOTE1X3ZtYV9yZXNvdXJjZSAqdm1hX3JlcywN Cj4gKwkJCQkgICAgIHN0cnVjdCBpOTE1X3ZtYSAqdm1hKTsNCj4gKyNlbmRpZg0KPiArDQo+ICB2 b2lkIGk5MTVfdm1hX21vZHVsZV9leGl0KHZvaWQpOw0KPiAgaW50IGk5MTVfdm1hX21vZHVsZV9p bml0KHZvaWQpOw0KPiANCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf dm1hX3Jlc291cmNlLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3ZtYV9yZXNvdXJjZS5j DQo+IGluZGV4IDgzM2U5ODdiZWQyYS4uYzg2ZGI4OWFiNWQyIDEwMDY0NA0KPiAtLS0gYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3ZtYV9yZXNvdXJjZS5jDQo+ICsrKyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfdm1hX3Jlc291cmNlLmMNCj4gQEAgLTIzLDE1ICsyMywxMiBAQCBzdGF0 aWMgc3RydWN0IGRtYV9mZW5jZV9vcHMgdW5iaW5kX2ZlbmNlX29wcyA9IHsNCj4gIH07DQo+IA0K PiAgLyoqDQo+IC0gKiBpOTE1X3ZtYV9yZXNvdXJjZV9pbml0IC0gSW5pdGlhbGl6ZSBhIHZtYSBy ZXNvdXJjZS4NCj4gKyAqIF9faTkxNV92bWFfcmVzb3VyY2VfaW5pdCAtIEluaXRpYWxpemUgYSB2 bWEgcmVzb3VyY2UuDQo+ICAgKiBAdm1hX3JlczogVGhlIHZtYSByZXNvdXJjZSB0byBpbml0aWFs aXplDQo+ICAgKg0KPiAtICogSW5pdGlhbGl6ZXMgYSB2bWEgcmVzb3VyY2UgYWxsb2NhdGVkIHVz aW5nIGk5MTVfdm1hX3Jlc291cmNlX2FsbG9jKCkuDQo+IC0gKiBUaGUgcmVhc29uIGZvciBoYXZp bmcgc2VwYXJhdGUgYWxsb2NhdGUgYW5kIGluaXRpYWxpemUgZnVuY3Rpb24gaXMgdGhhdA0KPiAt ICogaW5pdGlhbGl6YXRpb24gbWF5IG5lZWQgdG8gYmUgcGVyZm9ybWVkIGZyb20gdW5kZXIgYSBs b2NrIHdoZXJlDQo+IC0gKiBhbGxvY2F0aW9uIGlzIG5vdCBhbGxvd2VkLg0KPiArICogSW5pdGlh bGl6ZXMgdGhlIHByaXZhdGUgbWVtYmVycyBvZiBhIHZtYSByZXNvdXJjZS4NCj4gICAqLw0KPiAt dm9pZCBpOTE1X3ZtYV9yZXNvdXJjZV9pbml0KHN0cnVjdCBpOTE1X3ZtYV9yZXNvdXJjZSAqdm1h X3JlcykNCj4gK3ZvaWQgX19pOTE1X3ZtYV9yZXNvdXJjZV9pbml0KHN0cnVjdCBpOTE1X3ZtYV9y ZXNvdXJjZSAqdm1hX3JlcykNCj4gIHsNCj4gIAlzcGluX2xvY2tfaW5pdCgmdm1hX3Jlcy0+bG9j ayk7DQo+ICAJZG1hX2ZlbmNlX2luaXQoJnZtYV9yZXMtPnVuYmluZF9mZW5jZSwgJnVuYmluZF9m ZW5jZV9vcHMsDQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3ZtYV9y ZXNvdXJjZS5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV92bWFfcmVzb3VyY2UuaA0KPiBp bmRleCAzNDc0NGRhMjMwNzIuLjk4NzJkZTU4MjY4YiAxMDA2NDQNCj4gLS0tIGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV92bWFfcmVzb3VyY2UuaA0KPiArKysgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X3ZtYV9yZXNvdXJjZS5oDQo+IEBAIC05LDYgKzksMjUgQEANCj4gICNpbmNsdWRl IDxsaW51eC9kbWEtZmVuY2UuaD4NCj4gICNpbmNsdWRlIDxsaW51eC9yZWZjb3VudC5oPg0KPiAN Cj4gKyNpbmNsdWRlICJpOTE1X2dlbS5oIg0KPiArDQo+ICtzdHJ1Y3QgaTkxNV9wYWdlX3NpemVz IHsNCj4gKwkvKioNCj4gKwkgKiBUaGUgc2cgbWFzayBvZiB0aGUgcGFnZXMgc2dfdGFibGUuIGku ZSB0aGUgbWFzayBvZg0KPiArCSAqIHRoZSBsZW5ndGhzIGZvciBlYWNoIHNnIGVudHJ5Lg0KPiAr CSAqLw0KPiArCXVuc2lnbmVkIGludCBwaHlzOw0KPiArDQo+ICsJLyoqDQo+ICsJICogVGhlIGd0 dCBwYWdlIHNpemVzIHdlIGFyZSBhbGxvd2VkIHRvIHVzZSBnaXZlbiB0aGUNCj4gKwkgKiBzZyBt YXNrIGFuZCB0aGUgc3VwcG9ydGVkIHBhZ2Ugc2l6ZXMuIFRoaXMgd2lsbA0KPiArCSAqIGV4cHJl c3MgdGhlIHNtYWxsZXN0IHVuaXQgd2UgY2FuIHVzZSBmb3IgdGhlIHdob2xlDQo+ICsJICogb2Jq ZWN0LCBhcyB3ZWxsIGFzIHRoZSBsYXJnZXIgc2l6ZXMgd2UgbWF5IGJlIGFibGUNCj4gKwkgKiB0 byB1c2Ugb3Bwb3J0dW5pc3RpY2FsbHkuDQo+ICsJICovDQo+ICsJdW5zaWduZWQgaW50IHNnOw0K PiArfTsNCj4gKw0KPiAgLyoqDQo+ICAgKiBzdHJ1Y3QgaTkxNV92bWFfcmVzb3VyY2UgLSBTbmFw c2hvdHRlZCB1bmJpbmQgaW5mb3JtYXRpb24uDQo+ICAgKiBAdW5iaW5kX2ZlbmNlOiBGZW5jZSB0 byBtYXJrIHVuYmluZGluZyBjb21wbGV0ZS4gTm90ZSB0aGF0IHRoaXMgZmVuY2UNCj4gQEAgLTIw LDYgKzM5LDEzIEBADQo+ICAgKiBAaG9sZF9jb3VudDogTnVtYmVyIG9mIGhvbGRlcnMgYmxvY2tp bmcgdGhlIGZlbmNlIGZyb20gZmluaXNoaW5nLg0KPiAgICogVGhlIHZtYSBpdHNlbGYgaXMga2Vl cGluZyBhIGhvbGQsIHdoaWNoIGlzIHJlbGVhc2VkIHdoZW4gdW5iaW5kDQo+ICAgKiBpcyBzY2hl ZHVsZWQuDQo+ICsgKiBAcHJpdmF0ZTogQmluZCBiYWNrZW5kIHByaXZhdGUgaW5mby4NCj4gKyAq IEBzdGFydDogT2Zmc2V0IGludG8gdGhlIGFkZHJlc3Mgc3BhY2Ugb2YgYmluZCByYW5nZSBzdGFy dC4NCj4gKyAqIEBub2RlX3NpemU6IFNpemUgb2YgdGhlIGFsbG9jYXRlZCByYW5nZSBtYW5hZ2Vy IG5vZGUuDQo+ICsgKiBAdm1hX3NpemU6IEJpbmQgc2l6ZS4NCj4gKyAqIEBwYWdlX3NpemVzX2d0 dDogUmVzdWx0aW5nIHBhZ2Ugc2l6ZXMgZnJvbSB0aGUgYmluZCBvcGVyYXRpb24uDQo+ICsgKiBA Ym91bmRfZmxhZ3M6IEZsYWdzIGluZGljYXRpbmcgYmluZGluZyBzdGF0dXMuDQo+ICsgKiBAYWxs b2NhdGVkOiBCYWNrZW5kIHByaXZhdGUgZGF0YS4gVE9ETzogU2hvdWxkIG1vdmUgaW50byBAcHJp dmF0ZS4NCj4gICAqDQo+ICAgKiBUaGUgbGlmZXRpbWUgb2YgYSBzdHJ1Y3QgaTkxNV92bWFfcmVz b3VyY2UgaXMgZnJvbSBhIGJpbmRpbmcgcmVxdWVzdCB0bw0KPiAgICogdGhlIGFjdHVhbCBwb3Nz aWJsZSBhc3luY2hyb25vdXMgdW5iaW5kIGhhcyBjb21wbGV0ZWQuDQo+IEBAIC0yOSw2ICs1NSwz MiBAQCBzdHJ1Y3QgaTkxNV92bWFfcmVzb3VyY2Ugew0KPiAgCS8qIFNlZSBhYm92ZSBmb3IgZGVz Y3JpcHRpb24gb2YgdGhlIGxvY2suICovDQo+ICAJc3BpbmxvY2tfdCBsb2NrOw0KPiAgCXJlZmNv dW50X3QgaG9sZF9jb3VudDsNCj4gKw0KPiArCS8qKg0KPiArCSAqIHN0cnVjdCBpOTE1X3ZtYV9i aW5kaW5mbyAtIEluZm9ybWF0aW9uIG5lZWRlZCBmb3IgYXN5bmMgYmluZA0KPiArCSAqIG9ubHkg YnV0IHRoYXQgY2FuIGJlIGRyb3BwZWQgYWZ0ZXIgdGhlIGJpbmQgaGFzIHRha2VuIHBsYWNlLg0K PiArCSAqIENvbnNpZGVyIG1ha2luZyB0aGlzIGEgc2VwYXJhdGUgYXJndW1lbnQgdG8gdGhlIGJp bmRfdm1hDQo+ICsJICogb3AsIGNvYWxlc2Npbmcgd2l0aCBvdGhlciBhcmd1bWVudHMgbGlrZSB2 bSwgc3Rhc2gsIGNhY2hlX2xldmVsDQo+ICsJICogYW5kIGZsYWdzDQo+ICsJICogQHBhZ2VzOiBU aGUgcGFnZXMgc2ctdGFibGUuDQo+ICsJICogQHBhZ2Vfc2l6ZXM6IFBhZ2Ugc2l6ZXMgb2YgdGhl IHBhZ2VzLg0KPiArCSAqIEByZWFkb25seTogV2hldGhlciB0aGUgdm1hIHNob3VsZCBiZSBib3Vu ZCByZWFkLW9ubHkuDQo+ICsJICogQGxtZW06IFdoZXRoZXIgdGhlIHZtYSBwb2ludHMgdG8gbG1l bS4NCj4gKwkgKi8NCj4gKwlzdHJ1Y3QgaTkxNV92bWFfYmluZGluZm8gew0KPiArCQlzdHJ1Y3Qg c2dfdGFibGUgKnBhZ2VzOw0KPiArCQlzdHJ1Y3QgaTkxNV9wYWdlX3NpemVzIHBhZ2Vfc2l6ZXM7 DQo+ICsJCWJvb2wgcmVhZG9ubHk6MTsNCj4gKwkJYm9vbCBsbWVtOjE7DQo+ICsJfSBiaTsNCj4g Kw0KPiArCXZvaWQgKnByaXZhdGU7DQo+ICsJdW5zaWduZWQgbG9uZyBzdGFydDsNCj4gKwl1bnNp Z25lZCBsb25nIG5vZGVfc2l6ZTsNCj4gKwl1bnNpZ25lZCBsb25nIHZtYV9zaXplOw0KPiArCXUz MiBwYWdlX3NpemVzX2d0dDsNCj4gKwl1MzIgYm91bmRfZmxhZ3M7DQo+ICsJYm9vbCBhbGxvY2F0 ZWQ6MTsNCj4gIH07DQo+IA0KPiAgYm9vbCBpOTE1X3ZtYV9yZXNvdXJjZV9ob2xkKHN0cnVjdCBp OTE1X3ZtYV9yZXNvdXJjZSAqdm1hX3JlcywNCj4gQEAgLTQxLDYgKzkzLDggQEAgc3RydWN0IGk5 MTVfdm1hX3Jlc291cmNlICppOTE1X3ZtYV9yZXNvdXJjZV9hbGxvYyh2b2lkKTsNCj4gDQo+ICBz dHJ1Y3QgZG1hX2ZlbmNlICppOTE1X3ZtYV9yZXNvdXJjZV91bmJpbmQoc3RydWN0IGk5MTVfdm1h X3Jlc291cmNlICp2bWFfcmVzKTsNCj4gDQo+ICt2b2lkIF9faTkxNV92bWFfcmVzb3VyY2VfaW5p dChzdHJ1Y3QgaTkxNV92bWFfcmVzb3VyY2UgKnZtYV9yZXMpOw0KPiArDQo+ICAvKioNCj4gICAq IGk5MTVfdm1hX3Jlc291cmNlX2dldCAtIFRha2UgYSByZWZlcmVuY2Ugb24gYSB2bWEgcmVzb3Vy Y2UNCj4gICAqIEB2bWFfcmVzOiBUaGUgdm1hIHJlc291cmNlIG9uIHdoaWNoIHRvIHRha2UgYSBy ZWZlcmVuY2UuDQo+IEBAIC02Myw4ICsxMTcsNDcgQEAgc3RhdGljIGlubGluZSB2b2lkIGk5MTVf dm1hX3Jlc291cmNlX3B1dChzdHJ1Y3QgaTkxNV92bWFfcmVzb3VyY2UgKnZtYV9yZXMpDQo+ICAJ ZG1hX2ZlbmNlX3B1dCgmdm1hX3Jlcy0+dW5iaW5kX2ZlbmNlKTsNCj4gIH0NCj4gDQo+IC0jaWYg SVNfRU5BQkxFRChDT05GSUdfRFJNX0k5MTVfU0VMRlRFU1QpDQo+IC12b2lkIGk5MTVfdm1hX3Jl c291cmNlX2luaXQoc3RydWN0IGk5MTVfdm1hX3Jlc291cmNlICp2bWFfcmVzKTsNCj4gLSNlbmRp Zg0KPiArLyoqDQo+ICsgKiBpOTE1X3ZtYV9yZXNvdXJjZV9pbml0IC0gSW5pdGlhbGl6ZSBhIHZt YSByZXNvdXJjZS4NCj4gKyAqIEB2bWFfcmVzOiBUaGUgdm1hIHJlc291cmNlIHRvIGluaXRpYWxp emUNCj4gKyAqIEBwYWdlczogVGhlIHBhZ2VzIHNnLXRhYmxlLg0KPiArICogQHBhZ2Vfc2l6ZXM6 IFBhZ2Ugc2l6ZXMgb2YgdGhlIHBhZ2VzLg0KPiArICogQHJlYWRvbmx5OiBXaGV0aGVyIHRoZSB2 bWEgc2hvdWxkIGJlIGJvdW5kIHJlYWQtb25seS4NCj4gKyAqIEBsbWVtOiBXaGV0aGVyIHRoZSB2 bWEgcG9pbnRzIHRvIGxtZW0uDQo+ICsgKiBAcHJpdmF0ZTogQmluZCBiYWNrZW5kIHByaXZhdGUg aW5mby4NCj4gKyAqIEBzdGFydDogT2Zmc2V0IGludG8gdGhlIGFkZHJlc3Mgc3BhY2Ugb2YgYmlu ZCByYW5nZSBzdGFydC4NCj4gKyAqIEBub2RlX3NpemU6IFNpemUgb2YgdGhlIGFsbG9jYXRlZCBy YW5nZSBtYW5hZ2VyIG5vZGUuDQo+ICsgKiBAc2l6ZTogQmluZCBzaXplLg0KPiArICoNCj4gKyAq IEluaXRpYWxpemVzIGEgdm1hIHJlc291cmNlIGFsbG9jYXRlZCB1c2luZyBpOTE1X3ZtYV9yZXNv dXJjZV9hbGxvYygpLg0KPiArICogVGhlIHJlYXNvbiBmb3IgaGF2aW5nIHNlcGFyYXRlIGFsbG9j YXRlIGFuZCBpbml0aWFsaXplIGZ1bmN0aW9uIGlzIHRoYXQNCj4gKyAqIGluaXRpYWxpemF0aW9u IG1heSBuZWVkIHRvIGJlIHBlcmZvcm1lZCBmcm9tIHVuZGVyIGEgbG9jayB3aGVyZQ0KPiArICog YWxsb2NhdGlvbiBpcyBub3QgYWxsb3dlZC4NCj4gKyAqLw0KPiArc3RhdGljIGlubGluZSB2b2lk IGk5MTVfdm1hX3Jlc291cmNlX2luaXQoc3RydWN0IGk5MTVfdm1hX3Jlc291cmNlICp2bWFfcmVz LA0KPiArCQkJCQkgIHN0cnVjdCBzZ190YWJsZSAqcGFnZXMsDQo+ICsJCQkJCSAgY29uc3Qgc3Ry dWN0IGk5MTVfcGFnZV9zaXplcyAqcGFnZV9zaXplcywNCj4gKwkJCQkJICBib29sIHJlYWRvbmx5 LA0KPiArCQkJCQkgIGJvb2wgbG1lbSwNCj4gKwkJCQkJICB2b2lkICpwcml2YXRlLA0KPiArCQkJ CQkgIHVuc2lnbmVkIGxvbmcgc3RhcnQsDQo+ICsJCQkJCSAgdW5zaWduZWQgbG9uZyBub2RlX3Np emUsDQo+ICsJCQkJCSAgdW5zaWduZWQgbG9uZyBzaXplKQ0KPiArew0KPiArCV9faTkxNV92bWFf cmVzb3VyY2VfaW5pdCh2bWFfcmVzKTsNCj4gKwl2bWFfcmVzLT5iaS5wYWdlcyA9IHBhZ2VzOw0K PiArCXZtYV9yZXMtPmJpLnBhZ2Vfc2l6ZXMgPSAqcGFnZV9zaXplczsNCj4gKwl2bWFfcmVzLT5i aS5yZWFkb25seSA9IHJlYWRvbmx5Ow0KPiArCXZtYV9yZXMtPmJpLmxtZW0gPSBsbWVtOw0KPiAr CXZtYV9yZXMtPnByaXZhdGUgPSBwcml2YXRlOw0KPiArCXZtYV9yZXMtPnN0YXJ0ID0gc3RhcnQ7 DQo+ICsJdm1hX3Jlcy0+bm9kZV9zaXplID0gbm9kZV9zaXplOw0KPiArCXZtYV9yZXMtPnZtYV9z aXplID0gc2l6ZTsNCj4gK30NCj4gKw0KPiArc3RhdGljIGlubGluZSB2b2lkIGk5MTVfdm1hX3Jl c291cmNlX2Zpbmkoc3RydWN0IGk5MTVfdm1hX3Jlc291cmNlICp2bWFfcmVzKQ0KPiArew0KPiAr CUdFTV9CVUdfT04ocmVmY291bnRfcmVhZCgmdm1hX3Jlcy0+aG9sZF9jb3VudCkgIT0gMSk7DQo+ ICt9DQo+IA0KPiAgI2VuZGlmDQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X3ZtYV9zbmFwc2hvdC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV92bWFfc25hcHNo b3QuYw0KPiBpbmRleCBmNzMzM2M3YTJmNWUuLjY5ZjYyYzFjYTk2NyAxMDA2NDQNCj4gLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV92bWFfc25hcHNob3QuYw0KPiArKysgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X3ZtYV9zbmFwc2hvdC5jDQo+IEBAIC0yNCwxMSArMjQsNyBAQCB2 b2lkIGk5MTVfdm1hX3NuYXBzaG90X2luaXQoc3RydWN0IGk5MTVfdm1hX3NuYXBzaG90ICp2c25h cCwNCj4gIAkJYXNzZXJ0X29iamVjdF9oZWxkKHZtYS0+b2JqKTsNCj4gDQo+ICAJdnNuYXAtPm5h bWUgPSBuYW1lOw0KPiAtCXZzbmFwLT5zaXplID0gdm1hLT5zaXplOw0KPiAgCXZzbmFwLT5vYmpf c2l6ZSA9IHZtYS0+b2JqLT5iYXNlLnNpemU7DQo+IC0JdnNuYXAtPmd0dF9vZmZzZXQgPSB2bWEt Pm5vZGUuc3RhcnQ7DQo+IC0JdnNuYXAtPmd0dF9zaXplID0gdm1hLT5ub2RlLnNpemU7DQo+IC0J dnNuYXAtPnBhZ2Vfc2l6ZXMgPSB2bWEtPnBhZ2Vfc2l6ZXMuZ3R0Ow0KPiAgCXZzbmFwLT5wYWdl cyA9IHZtYS0+cGFnZXM7DQo+ICAJdnNuYXAtPnBhZ2VzX3JzZ3QgPSBOVUxMOw0KPiAgCXZzbmFw LT5tciA9IE5VTEw7DQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3Zt YV9zbmFwc2hvdC5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV92bWFfc25hcHNob3QuaA0K PiBpbmRleCBlNzQ1ODhkZDY3NmIuLjFiMDhjZTlmODU3NiAxMDA2NDQNCj4gLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV92bWFfc25hcHNob3QuaA0KPiArKysgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X3ZtYV9zbmFwc2hvdC5oDQo+IEBAIC0yMywzMSArMjMsMjMgQEAgc3RydWN0 IHNnX3RhYmxlOw0KPiANCj4gIC8qKg0KPiAgICogc3RydWN0IGk5MTVfdm1hX3NuYXBzaG90IC0g U25hcHNob3Qgb2Ygdm1hIG1ldGFkYXRhLg0KPiAtICogQHNpemU6IFRoZSB2bWEgc2l6ZSBpbiBi eXRlcy4NCj4gICAqIEBvYmpfc2l6ZTogVGhlIHNpemUgb2YgdGhlIHVuZGVybHlpbmcgb2JqZWN0 IGluIGJ5dGVzLg0KPiAtICogQGd0dF9vZmZzZXQ6IFRoZSBndHQgb2Zmc2V0IHRoZSB2bWEgaXMg Ym91bmQgdG8uDQo+IC0gKiBAZ3R0X3NpemU6IFRoZSBzaXplIGluIGJ5dGVzIGFsbG9jYXRlZCBm b3IgdGhlIHZtYSBpbiB0aGUgR1RULg0KPiAgICogQHBhZ2VzOiBUaGUgc3RydWN0IHNnX3RhYmxl IHBvaW50aW5nIHRvIHRoZSBwYWdlcyBib3VuZC4NCj4gICAqIEBwYWdlc19yc2d0OiBUaGUgcmVm Y291bnRlZCBzZ190YWJsZSBob2xkaW5nIHRoZSByZWZlcmVuY2UgZm9yIEBwYWdlcyBpZiBhbnku DQo+ICAgKiBAbXI6IFRoZSBtZW1vcnkgcmVnaW9uIHBvaW50ZWQgZm9yIHRoZSBwYWdlcyBib3Vu ZC4NCj4gICAqIEBrcmVmOiBSZWZlcmVuY2UgZm9yIHRoaXMgc3RydWN0dXJlLg0KPiAgICogQHZt YV9yZXNvdXJjZTogUG9pbnRlciB0byB0aGUgdm1hIHJlc291cmNlIHJlcHJlc2VudGluZyB0aGUg dm1hIGJpbmRpbmcuDQo+IC0gKiBAcGFnZV9zaXplczogVGhlIHZtYSBHVFQgcGFnZSBzaXplcyBp bmZvcm1hdGlvbi4NCj4gICAqIEBvbnN0YWNrOiBXaGV0aGVyIHRoZSBzdHJ1Y3R1cmUgc2hvdWxk bid0IGJlIGZyZWVkIG9uIGZpbmFsIHB1dC4NCj4gICAqIEBwcmVzZW50OiBXaGV0aGVyIHRoZSBz dHJ1Y3R1cmUgaXMgcHJlc2VudCBhbmQgaW5pdGlhbGl6ZWQuDQo+ICAgKi8NCj4gIHN0cnVjdCBp OTE1X3ZtYV9zbmFwc2hvdCB7DQo+ICAJY29uc3QgY2hhciAqbmFtZTsNCj4gLQlzaXplX3Qgc2l6 ZTsNCj4gIAlzaXplX3Qgb2JqX3NpemU7DQo+IC0Jc2l6ZV90IGd0dF9vZmZzZXQ7DQo+IC0Jc2l6 ZV90IGd0dF9zaXplOw0KPiAgCXN0cnVjdCBzZ190YWJsZSAqcGFnZXM7DQo+ICAJc3RydWN0IGk5 MTVfcmVmY3Rfc2d0ICpwYWdlc19yc2d0Ow0KPiAgCXN0cnVjdCBpbnRlbF9tZW1vcnlfcmVnaW9u ICptcjsNCj4gIAlzdHJ1Y3Qga3JlZiBrcmVmOw0KPiAgCXN0cnVjdCBpOTE1X3ZtYV9yZXNvdXJj ZSAqdm1hX3Jlc291cmNlOw0KPiAtCXUzMiBwYWdlX3NpemVzOw0KPiAgCWJvb2wgb25zdGFjazox Ow0KPiAgCWJvb2wgcHJlc2VudDoxOw0KPiAgfTsNCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X2dlbV9ndHQuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L3NlbGZ0ZXN0cy9pOTE1X2dlbV9ndHQuYw0KPiBpbmRleCA1NGJlODgwZTU1YzMuLjcwYjVjNDc4 OTBiOSAxMDA2NDQNCj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVf Z2VtX2d0dC5jDQo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X2dl bV9ndHQuYw0KPiBAQCAtMjM5LDExICsyMzksMTEgQEAgc3RhdGljIGludCBsb3dsZXZlbF9ob2xl KHN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZtLA0KPiAgCQkJIHVuc2lnbmVkIGxvbmcgZW5k X3RpbWUpDQo+ICB7DQo+ICAJSTkxNV9STkRfU1RBVEUoc2VlZF9wcm5nKTsNCj4gLQlzdHJ1Y3Qg aTkxNV92bWEgKm1vY2tfdm1hOw0KPiArCXN0cnVjdCBpOTE1X3ZtYV9yZXNvdXJjZSAqbW9ja192 bWFfcmVzOw0KPiAgCXVuc2lnbmVkIGludCBzaXplOw0KPiANCj4gLQltb2NrX3ZtYSA9IGt6YWxs b2Moc2l6ZW9mKCptb2NrX3ZtYSksIEdGUF9LRVJORUwpOw0KPiAtCWlmICghbW9ja192bWEpDQo+ ICsJbW9ja192bWFfcmVzID0ga3phbGxvYyhzaXplb2YoKm1vY2tfdm1hX3JlcyksIEdGUF9LRVJO RUwpOw0KPiArCWlmICghbW9ja192bWFfcmVzKQ0KPiAgCQlyZXR1cm4gLUVOT01FTTsNCj4gDQo+ ICAJLyogS2VlcCBjcmVhdGluZyBsYXJnZXIgb2JqZWN0cyB1bnRpbCBvbmUgY2Fubm90IGZpdCBp bnRvIHRoZSBob2xlICovDQo+IEBAIC0yNjksNyArMjY5LDcgQEAgc3RhdGljIGludCBsb3dsZXZl bF9ob2xlKHN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZtLA0KPiAgCQkJCWJyZWFrOw0KPiAg CQl9IHdoaWxlIChjb3VudCA+Pj0gMSk7DQo+ICAJCWlmICghY291bnQpIHsNCj4gLQkJCWtmcmVl KG1vY2tfdm1hKTsNCj4gKwkJCWtmcmVlKG1vY2tfdm1hX3Jlcyk7DQo+ICAJCQlyZXR1cm4gLUVO T01FTTsNCj4gIAkJfQ0KPiAgCQlHRU1fQlVHX09OKCFvcmRlcik7DQo+IEBAIC0zNDMsMTIgKzM0 MywxMiBAQCBzdGF0aWMgaW50IGxvd2xldmVsX2hvbGUoc3RydWN0IGk5MTVfYWRkcmVzc19zcGFj ZSAqdm0sDQo+ICAJCQkJCWJyZWFrOw0KPiAgCQkJfQ0KPiANCj4gLQkJCW1vY2tfdm1hLT5wYWdl cyA9IG9iai0+bW0ucGFnZXM7DQo+IC0JCQltb2NrX3ZtYS0+bm9kZS5zaXplID0gQklUX1VMTChz aXplKTsNCj4gLQkJCW1vY2tfdm1hLT5ub2RlLnN0YXJ0ID0gYWRkcjsNCj4gKwkJCW1vY2tfdm1h X3Jlcy0+YmkucGFnZXMgPSBvYmotPm1tLnBhZ2VzOw0KPiArCQkJbW9ja192bWFfcmVzLT5ub2Rl X3NpemUgPSBCSVRfVUxMKHNpemUpOw0KPiArCQkJbW9ja192bWFfcmVzLT5zdGFydCA9IGFkZHI7 DQo+IA0KPiAgCQkJd2l0aF9pbnRlbF9ydW50aW1lX3BtKHZtLT5ndC0+dW5jb3JlLT5ycG0sIHdh a2VyZWYpDQo+IC0JCQkJdm0tPmluc2VydF9lbnRyaWVzKHZtLCBtb2NrX3ZtYSwNCj4gKwkJCSAg dm0tPmluc2VydF9lbnRyaWVzKHZtLCBtb2NrX3ZtYV9yZXMsDQo+ICAJCQkJCQkgICBJOTE1X0NB Q0hFX05PTkUsIDApOw0KPiAgCQl9DQo+ICAJCWNvdW50ID0gbjsNCj4gQEAgLTM3MSw3ICszNzEs NyBAQCBzdGF0aWMgaW50IGxvd2xldmVsX2hvbGUoc3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAq dm0sDQo+ICAJCWNsZWFudXBfZnJlZWRfb2JqZWN0cyh2bS0+aTkxNSk7DQo+ICAJfQ0KPiANCj4g LQlrZnJlZShtb2NrX3ZtYSk7DQo+ICsJa2ZyZWUobW9ja192bWFfcmVzKTsNCj4gIAlyZXR1cm4g MDsNCj4gIH0NCj4gDQo+IEBAIC0xMjgwLDYgKzEyODAsNyBAQCBzdGF0aWMgdm9pZCB0cmFja192 bWFfYmluZChzdHJ1Y3QgaTkxNV92bWEgKnZtYSkNCj4gIAlhdG9taWNfc2V0KCZ2bWEtPnBhZ2Vz X2NvdW50LCBJOTE1X1ZNQV9QQUdFU19BQ1RJVkUpOw0KPiAgCV9faTkxNV9nZW1fb2JqZWN0X3Bp bl9wYWdlcyhvYmopOw0KPiAgCXZtYS0+cGFnZXMgPSBvYmotPm1tLnBhZ2VzOw0KPiArCXZtYS0+ cmVzb3VyY2UtPmJpLnBhZ2VzID0gdm1hLT5wYWdlczsNCj4gDQo+ICAJbXV0ZXhfbG9jaygmdm1h LT52bS0+bXV0ZXgpOw0KPiAgCWxpc3RfYWRkX3RhaWwoJnZtYS0+dm1fbGluaywgJnZtYS0+dm0t PmJvdW5kX2xpc3QpOw0KPiBAQCAtMTM1NCw3ICsxMzU1LDcgQEAgc3RhdGljIGludCByZXNlcnZl X2d0dF93aXRoX3Jlc291cmNlKHN0cnVjdCBpOTE1X3ZtYSAqdm1hLCB1NjQgb2Zmc2V0KQ0KPiAg CQkJCSAgIG9iai0+Y2FjaGVfbGV2ZWwsDQo+ICAJCQkJICAgMCk7DQo+ICAJaWYgKCFlcnIpIHsN Cj4gLQkJaTkxNV92bWFfcmVzb3VyY2VfaW5pdCh2bWFfcmVzKTsNCj4gKwkJaTkxNV92bWFfcmVz b3VyY2VfaW5pdF9mcm9tX3ZtYSh2bWFfcmVzLCB2bWEpOw0KPiAgCQl2bWEtPnJlc291cmNlID0g dm1hX3JlczsNCj4gIAl9IGVsc2Ugew0KPiAgCQlrZnJlZSh2bWFfcmVzKTsNCj4gQEAgLTE1MzMs NyArMTUzNCw3IEBAIHN0YXRpYyBpbnQgaW5zZXJ0X2d0dF93aXRoX3Jlc291cmNlKHN0cnVjdCBp OTE1X3ZtYSAqdm1hKQ0KPiAgCWVyciA9IGk5MTVfZ2VtX2d0dF9pbnNlcnQodm0sICZ2bWEtPm5v ZGUsIG9iai0+YmFzZS5zaXplLCAwLA0KPiAgCQkJCSAgb2JqLT5jYWNoZV9sZXZlbCwgMCwgdm0t PnRvdGFsLCAwKTsNCj4gIAlpZiAoIWVycikgew0KPiAtCQlpOTE1X3ZtYV9yZXNvdXJjZV9pbml0 KHZtYV9yZXMpOw0KPiArCQlpOTE1X3ZtYV9yZXNvdXJjZV9pbml0X2Zyb21fdm1hKHZtYV9yZXMs IHZtYSk7DQo+ICAJCXZtYS0+cmVzb3VyY2UgPSB2bWFfcmVzOw0KPiAgCX0gZWxzZSB7DQo+ICAJ CWtmcmVlKHZtYV9yZXMpOw0KPiBAQCAtMTk1OCw2ICsxOTU5LDcgQEAgc3RhdGljIGludCBpZ3Rf Y3NfdGxiKHZvaWQgKmFyZykNCj4gIAkJCXN0cnVjdCBpOTE1X3ZtX3B0X3N0YXNoIHN0YXNoID0g e307DQo+ICAJCQlzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycTsNCj4gIAkJCXN0cnVjdCBpOTE1X2dl bV93d19jdHggd3c7DQo+ICsJCQlzdHJ1Y3QgaTkxNV92bWFfcmVzb3VyY2UgKnZtYV9yZXM7DQo+ ICAJCQl1NjQgb2Zmc2V0Ow0KPiANCj4gIAkJCW9mZnNldCA9IGlndF9yYW5kb21fb2Zmc2V0KCZw cm5nLA0KPiBAQCAtMTk3OCw2ICsxOTgwLDEzIEBAIHN0YXRpYyBpbnQgaWd0X2NzX3RsYih2b2lk ICphcmcpDQo+ICAJCQlpZiAoZXJyKQ0KPiAgCQkJCWdvdG8gZW5kOw0KPiANCj4gKwkJCXZtYV9y ZXMgPSBpOTE1X3ZtYV9yZXNvdXJjZV9hbGxvYygpOw0KPiArCQkJaWYgKElTX0VSUih2bWFfcmVz KSkgew0KPiArCQkJCWk5MTVfdm1hX3B1dF9wYWdlcyh2bWEpOw0KPiArCQkJCWVyciA9IFBUUl9F UlIodm1hX3Jlcyk7DQo+ICsJCQkJZ290byBlbmQ7DQo+ICsJCQl9DQo+ICsNCj4gIAkJCWk5MTVf Z2VtX3d3X2N0eF9pbml0KCZ3dywgZmFsc2UpOw0KPiAgcmV0cnk6DQo+ICAJCQllcnIgPSBpOTE1 X3ZtX2xvY2tfb2JqZWN0cyh2bSwgJnd3KTsNCj4gQEAgLTE5OTksMzMgKzIwMDgsNDEgQEAgc3Rh dGljIGludCBpZ3RfY3NfdGxiKHZvaWQgKmFyZykNCj4gIAkJCQkJZ290byByZXRyeTsNCj4gIAkJ CX0NCj4gIAkJCWk5MTVfZ2VtX3d3X2N0eF9maW5pKCZ3dyk7DQo+IC0JCQlpZiAoZXJyKQ0KPiAr CQkJaWYgKGVycikgew0KPiArCQkJCWtmcmVlKHZtYV9yZXMpOw0KPiAgCQkJCWdvdG8gZW5kOw0K PiArCQkJfQ0KPiANCj4gKwkJCWk5MTVfdm1hX3Jlc291cmNlX2luaXRfZnJvbV92bWEodm1hX3Jl cywgdm1hKTsNCj4gIAkJCS8qIFByaW1lIHRoZSBUTEIgd2l0aCB0aGUgZHVtbXkgcGFnZXMgKi8N Cj4gIAkJCWZvciAoaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7DQo+IC0JCQkJdm1hLT5ub2RlLnN0 YXJ0ID0gb2Zmc2V0ICsgaSAqIFBBR0VfU0laRTsNCj4gLQkJCQl2bS0+aW5zZXJ0X2VudHJpZXMo dm0sIHZtYSwgSTkxNV9DQUNIRV9OT05FLCAwKTsNCj4gKwkJCQl2bWFfcmVzLT5zdGFydCA9IG9m ZnNldCArIGkgKiBQQUdFX1NJWkU7DQo+ICsJCQkJdm0tPmluc2VydF9lbnRyaWVzKHZtLCB2bWFf cmVzLCBJOTE1X0NBQ0hFX05PTkUsDQo+ICsJCQkJCQkgICAwKTsNCj4gDQo+IC0JCQkJcnEgPSBz dWJtaXRfYmF0Y2goY2UsIHZtYS0+bm9kZS5zdGFydCk7DQo+ICsJCQkJcnEgPSBzdWJtaXRfYmF0 Y2goY2UsIHZtYV9yZXMtPnN0YXJ0KTsNCj4gIAkJCQlpZiAoSVNfRVJSKHJxKSkgew0KPiAgCQkJ CQllcnIgPSBQVFJfRVJSKHJxKTsNCj4gKwkJCQkJaTkxNV92bWFfcmVzb3VyY2VfZmluaSh2bWFf cmVzKTsNCj4gKwkJCQkJa2ZyZWUodm1hX3Jlcyk7DQo+ICAJCQkJCWdvdG8gZW5kOw0KPiAgCQkJ CX0NCj4gIAkJCQlpOTE1X3JlcXVlc3RfcHV0KHJxKTsNCj4gIAkJCX0NCj4gLQ0KPiArCQkJaTkx NV92bWFfcmVzb3VyY2VfZmluaSh2bWFfcmVzKTsNCj4gIAkJCWk5MTVfdm1hX3B1dF9wYWdlcyh2 bWEpOw0KPiANCj4gIAkJCWVyciA9IGNvbnRleHRfc3luYyhjZSk7DQo+ICAJCQlpZiAoZXJyKSB7 DQo+ICAJCQkJcHJfZXJyKCIlczogZHVtbXkgc2V0dXAgdGltZWQgb3V0XG4iLA0KPiAgCQkJCSAg ICAgICBjZS0+ZW5naW5lLT5uYW1lKTsNCj4gKwkJCQlrZnJlZSh2bWFfcmVzKTsNCj4gIAkJCQln b3RvIGVuZDsNCj4gIAkJCX0NCj4gDQo+ICAJCQl2bWEgPSBpOTE1X3ZtYV9pbnN0YW5jZShhY3Qs IHZtLCBOVUxMKTsNCj4gIAkJCWlmIChJU19FUlIodm1hKSkgew0KPiArCQkJCWtmcmVlKHZtYV9y ZXMpOw0KPiAgCQkJCWVyciA9IFBUUl9FUlIodm1hKTsNCj4gIAkJCQlnb3RvIGVuZDsNCj4gIAkJ CX0NCj4gQEAgLTIwMzMsMTkgKzIwNTAsMjIgQEAgc3RhdGljIGludCBpZ3RfY3NfdGxiKHZvaWQg KmFyZykNCj4gIAkJCWk5MTVfZ2VtX29iamVjdF9sb2NrKGFjdCwgTlVMTCk7DQo+ICAJCQllcnIg PSBpOTE1X3ZtYV9nZXRfcGFnZXModm1hKTsNCj4gIAkJCWk5MTVfZ2VtX29iamVjdF91bmxvY2so YWN0KTsNCj4gLQkJCWlmIChlcnIpDQo+ICsJCQlpZiAoZXJyKSB7DQo+ICsJCQkJa2ZyZWUodm1h X3Jlcyk7DQo+ICAJCQkJZ290byBlbmQ7DQo+ICsJCQl9DQo+IA0KPiArCQkJaTkxNV92bWFfcmVz b3VyY2VfaW5pdF9mcm9tX3ZtYSh2bWFfcmVzLCB2bWEpOw0KPiAgCQkJLyogUmVwbGFjZSB0aGUg VExCIHdpdGggdGFyZ2V0IGJhdGNoZXMgKi8NCj4gIAkJCWZvciAoaSA9IDA7IGkgPCBjb3VudDsg aSsrKSB7DQo+ICAJCQkJc3RydWN0IGk5MTVfcmVxdWVzdCAqcnE7DQo+ICAJCQkJdTMyICpjcyA9 IGJhdGNoICsgaSAqIDY0IC8gc2l6ZW9mKCpjcyk7DQo+ICAJCQkJdTY0IGFkZHI7DQo+IA0KPiAt CQkJCXZtYS0+bm9kZS5zdGFydCA9IG9mZnNldCArIGkgKiBQQUdFX1NJWkU7DQo+IC0JCQkJdm0t Pmluc2VydF9lbnRyaWVzKHZtLCB2bWEsIEk5MTVfQ0FDSEVfTk9ORSwgMCk7DQo+ICsJCQkJdm1h X3Jlcy0+c3RhcnQgPSBvZmZzZXQgKyBpICogUEFHRV9TSVpFOw0KPiArCQkJCXZtLT5pbnNlcnRf ZW50cmllcyh2bSwgdm1hX3JlcywgSTkxNV9DQUNIRV9OT05FLCAwKTsNCj4gDQo+IC0JCQkJYWRk ciA9IHZtYS0+bm9kZS5zdGFydCArIGkgKiA2NDsNCj4gKwkJCQlhZGRyID0gdm1hX3Jlcy0+c3Rh cnQgKyBpICogNjQ7DQo+ICAJCQkJY3NbNF0gPSBNSV9OT09QOw0KPiAgCQkJCWNzWzZdID0gbG93 ZXJfMzJfYml0cyhhZGRyKTsNCj4gIAkJCQljc1s3XSA9IHVwcGVyXzMyX2JpdHMoYWRkcik7DQo+ IEBAIC0yMDU0LDYgKzIwNzQsOCBAQCBzdGF0aWMgaW50IGlndF9jc190bGIodm9pZCAqYXJnKQ0K PiAgCQkJCXJxID0gc3VibWl0X2JhdGNoKGNlLCBhZGRyKTsNCj4gIAkJCQlpZiAoSVNfRVJSKHJx KSkgew0KPiAgCQkJCQllcnIgPSBQVFJfRVJSKHJxKTsNCj4gKwkJCQkJaTkxNV92bWFfcmVzb3Vy Y2VfZmluaSh2bWFfcmVzKTsNCj4gKwkJCQkJa2ZyZWUodm1hX3Jlcyk7DQo+ICAJCQkJCWdvdG8g ZW5kOw0KPiAgCQkJCX0NCj4gDQo+IEBAIC0yMDcwLDYgKzIwOTIsOCBAQCBzdGF0aWMgaW50IGln dF9jc190bGIodm9pZCAqYXJnKQ0KPiAgCQkJfQ0KPiAgCQkJZW5kX3NwaW4oYmF0Y2gsIGNvdW50 IC0gMSk7DQo+IA0KPiArCQkJaTkxNV92bWFfcmVzb3VyY2VfZmluaSh2bWFfcmVzKTsNCj4gKwkJ CWtmcmVlKHZtYV9yZXMpOw0KPiAgCQkJaTkxNV92bWFfcHV0X3BhZ2VzKHZtYSk7DQo+IA0KPiAg CQkJZXJyID0gY29udGV4dF9zeW5jKGNlKTsNCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L3NlbGZ0ZXN0cy9tb2NrX2d0dC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRl c3RzL21vY2tfZ3R0LmMNCj4gaW5kZXggMTgwMmJhZjgwYTE3Li5kNDA1MTllM2NhMzggMTAwNjQ0 DQo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9tb2NrX2d0dC5jDQo+ICsr KyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9tb2NrX2d0dC5jDQo+IEBAIC0zMywy MyArMzMsMjMgQEAgc3RhdGljIHZvaWQgbW9ja19pbnNlcnRfcGFnZShzdHJ1Y3QgaTkxNV9hZGRy ZXNzX3NwYWNlICp2bSwNCj4gIH0NCj4gDQo+ICBzdGF0aWMgdm9pZCBtb2NrX2luc2VydF9lbnRy aWVzKHN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZtLA0KPiAtCQkJCXN0cnVjdCBpOTE1X3Zt YSAqdm1hLA0KPiArCQkJCXN0cnVjdCBpOTE1X3ZtYV9yZXNvdXJjZSAqdm1hX3JlcywNCj4gIAkJ CQllbnVtIGk5MTVfY2FjaGVfbGV2ZWwgbGV2ZWwsIHUzMiBmbGFncykNCj4gIHsNCj4gIH0NCj4g DQo+ICBzdGF0aWMgdm9pZCBtb2NrX2JpbmRfcHBndHQoc3RydWN0IGk5MTVfYWRkcmVzc19zcGFj ZSAqdm0sDQo+ICAJCQkgICAgc3RydWN0IGk5MTVfdm1fcHRfc3Rhc2ggKnN0YXNoLA0KPiAtCQkJ ICAgIHN0cnVjdCBpOTE1X3ZtYSAqdm1hLA0KPiArCQkJICAgIHN0cnVjdCBpOTE1X3ZtYV9yZXNv dXJjZSAqdm1hX3JlcywNCj4gIAkJCSAgICBlbnVtIGk5MTVfY2FjaGVfbGV2ZWwgY2FjaGVfbGV2 ZWwsDQo+ICAJCQkgICAgdTMyIGZsYWdzKQ0KPiAgew0KPiAgCUdFTV9CVUdfT04oZmxhZ3MgJiBJ OTE1X1ZNQV9HTE9CQUxfQklORCk7DQo+IC0Jc2V0X2JpdChJOTE1X1ZNQV9MT0NBTF9CSU5EX0JJ VCwgX19pOTE1X3ZtYV9mbGFncyh2bWEpKTsNCj4gKwl2bWFfcmVzLT5ib3VuZF9mbGFncyB8PSBm bGFnczsNCj4gIH0NCj4gDQo+ICBzdGF0aWMgdm9pZCBtb2NrX3VuYmluZF9wcGd0dChzdHJ1Y3Qg aTkxNV9hZGRyZXNzX3NwYWNlICp2bSwNCj4gLQkJCSAgICAgIHN0cnVjdCBpOTE1X3ZtYSAqdm1h KQ0KPiArCQkJICAgICAgc3RydWN0IGk5MTVfdm1hX3Jlc291cmNlICp2bWFfcmVzKQ0KPiAgew0K PiAgfQ0KPiANCj4gQEAgLTkzLDE0ICs5MywxNCBAQCBzdHJ1Y3QgaTkxNV9wcGd0dCAqbW9ja19w cGd0dChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwgY29uc3QgY2hhciAqbmFtZSkNCj4g DQo+ICBzdGF0aWMgdm9pZCBtb2NrX2JpbmRfZ2d0dChzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNl ICp2bSwNCj4gIAkJCSAgIHN0cnVjdCBpOTE1X3ZtX3B0X3N0YXNoICpzdGFzaCwNCj4gLQkJCSAg IHN0cnVjdCBpOTE1X3ZtYSAqdm1hLA0KPiArCQkJICAgc3RydWN0IGk5MTVfdm1hX3Jlc291cmNl ICp2bWFfcmVzLA0KPiAgCQkJICAgZW51bSBpOTE1X2NhY2hlX2xldmVsIGNhY2hlX2xldmVsLA0K PiAgCQkJICAgdTMyIGZsYWdzKQ0KPiAgew0KPiAgfQ0KPiANCj4gIHN0YXRpYyB2b2lkIG1vY2tf dW5iaW5kX2dndHQoc3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAqdm0sDQo+IC0JCQkgICAgIHN0 cnVjdCBpOTE1X3ZtYSAqdm1hKQ0KPiArCQkJICAgICBzdHJ1Y3QgaTkxNV92bWFfcmVzb3VyY2Ug KnZtYV9yZXMpDQo+ICB7DQo+ICB9DQo+IA0KPiAtLQ0KPiAyLjMxLjENCg0K