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 kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 30F03C433FE for ; Thu, 20 Oct 2022 03:30:13 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 3E4356B0071; Wed, 19 Oct 2022 23:30:13 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 36CEB6B0073; Wed, 19 Oct 2022 23:30:13 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 198756B0074; Wed, 19 Oct 2022 23:30:13 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0014.hostedemail.com [216.40.44.14]) by kanga.kvack.org (Postfix) with ESMTP id 029526B0071 for ; Wed, 19 Oct 2022 23:30:12 -0400 (EDT) Received: from smtpin12.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay10.hostedemail.com (Postfix) with ESMTP id BDCC7C0311 for ; Thu, 20 Oct 2022 03:30:12 +0000 (UTC) X-FDA: 80039899464.12.FE0AAA3 Received: from mx0a-00082601.pphosted.com (mx0b-00082601.pphosted.com [67.231.153.30]) by imf09.hostedemail.com (Postfix) with ESMTP id 43597140036 for ; Thu, 20 Oct 2022 03:30:11 +0000 (UTC) Received: from pps.filterd (m0089730.ppops.net [127.0.0.1]) by m0089730.ppops.net (8.17.1.5/8.17.1.5) with ESMTP id 29JJuYNQ011422; Wed, 19 Oct 2022 20:29:55 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=meta.com; h=from : to : cc : subject : date : message-id : references : in-reply-to : content-type : content-id : content-transfer-encoding : mime-version; s=s2048-2021-q4; bh=0Z6p+/X8ECQBNNnniql2R2IcGIrSth34FY7bAasIV0w=; b=HJj7zHfdwFAaodsPk6pM44AVdJcsfKY2yDJQ/OdEPIQUoiGXDLOOn11cXofpVDmQlzCV cgBH9tNnU4TPVlI6WbPKIOBkJ+dvH0OnkdF5MhVymZNrTBFLyjn3TEmmPy9Qtb4j9WxC U/8xHk27Hls6DlrhXnqIOjbw7BlaXduL2cG8DrrRJnFc5yDFGe0AkKamOp8fzgZLZK1e cYiPnmOFbCnq7gz11mhrZr+ECoN1NuVIAMizCZHBSi0uW1n2Cq/opqdttykG/Rs1jetn yPyeyYmpsZ1V+YZ6UUpbWDmDg6Soa5qlAOwS83QQIyWkd0QhNBcALPsiNDHV4qtsMwmJ Og== Received: from nam04-bn8-obe.outbound.protection.outlook.com (mail-bn8nam04lp2040.outbound.protection.outlook.com [104.47.74.40]) by m0089730.ppops.net (PPS) with ESMTPS id 3kagxa998r-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 19 Oct 2022 20:29:55 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Q3CSGS/ipGxMNPI7rF1qQTubHUlAR8Ks8n6Xb/yBtkITUik8KXyaGJA3pStk0ropRNioQDkRgFzYsoA0VsGNzl9t/VmuMB56GJBaZOkLS0altK0xqYJmeOLhBHJAWZkE4kA/ikjzXUVPdMYYp/m+Yf6rym47PKaQ53NCPe7rpauARlqvBqbatTvOz5r3oSmY0DXo4wAIJp6ccWWNoibPWVKcFdbaQJAL9xQiIHnu0zOEe7llIrY2rrO8ULCH81V51Ty8DProaLG8BNZt9PRnTQ8eqW5/E7c7N2lljcmRdDDhljexVBwo28y11iloTU1EJi+9ZoLZfe93xXdcd5/4Wg== 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=0Z6p+/X8ECQBNNnniql2R2IcGIrSth34FY7bAasIV0w=; b=fGZbjuS/p9VfuN99i0bOPQYGbcR9WQ0sTYixiShc+krunIQcPAHt1iOvCJghMKxQzCyscrmk92rsa9M1HeN0w6SGYYxkMx7/UVGrZHv8BWGgphg0p8CEs7cONxoavOY+Pwos0k5HO+SfwCAjjn2HbZ1hMCUqPsXVXEkHvFP+Jkk/rZ9kLBSSYkhG2yQ08whtBUr8ewnMd0A89frDvkcINfHa2mwsebvvJKTh+7/z3MJE3mteTpLG09NlP7pCm0r6HR46tW2f3r96O1STivz5ruX3fqe0liZ3cn0Ylw1FZFYhtMmwWISYVsz6DEqbhiFmtNOSwPMHnzJD9/pOnRVz6w== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=meta.com; dmarc=pass action=none header.from=meta.com; dkim=pass header.d=meta.com; arc=none Received: from MWHPR15MB1742.namprd15.prod.outlook.com (2603:10b6:301:59::8) by DM6PR15MB2700.namprd15.prod.outlook.com (2603:10b6:5:1ad::28) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5723.32; Thu, 20 Oct 2022 03:29:51 +0000 Received: from MWHPR15MB1742.namprd15.prod.outlook.com ([fe80::3167:368d:3127:1266]) by MWHPR15MB1742.namprd15.prod.outlook.com ([fe80::3167:368d:3127:1266%11]) with mapi id 15.20.5723.034; Thu, 20 Oct 2022 03:29:51 +0000 From: "Alex Zhu (Kernel)" To: "Huang, Ying" CC: Ning Zhang , Yu Zhao , "Alex Zhu (Kernel)" , "linux-mm@kvack.org" , Kernel Team , "willy@infradead.org" , "hannes@cmpxchg.org" , "riel@surriel.com" Subject: Re: [PATCH v3 3/3] mm: THP low utilization shrinker Thread-Topic: [PATCH v3 3/3] mm: THP low utilization shrinker Thread-Index: AQHY3ov4xE/oymI8I0CpAa1tUN4wBK4VVSaHgADKL4CAAGkiBYAAIt2A Date: Thu, 20 Oct 2022 03:29:51 +0000 Message-ID: <2017B57F-DE06-4B78-A518-43985304EEF4@fb.com> References: <87zgdsnvka.fsf@yhuang6-desk2.ccr.corp.intel.com> <5D3EC059-F7E6-4943-AD16-CBE73FCA0357@fb.com> <875ygfnv7r.fsf@yhuang6-desk2.ccr.corp.intel.com> In-Reply-To: <875ygfnv7r.fsf@yhuang6-desk2.ccr.corp.intel.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ms-publictraffictype: Email x-ms-traffictypediagnostic: MWHPR15MB1742:EE_|DM6PR15MB2700:EE_ x-ms-office365-filtering-correlation-id: b015bb26-9cda-4c47-a075-08dab24b5960 x-fb-source: Internal x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: +FfBHIgt6+zQVSDIGhwRiE/Jw8ocZh2J/cdpZy0WbyV3EICFGMwgRpGcTBKFP6vpzz73g0wKhGnbaDbhxPxf1vNv7rzibzKLp0CM0Hae+21TNIJqka9rH5kTLXg+631AvJpC2lSnBOQ7+/NLIMSJ6gXMZrhT4Vx2vPi55dQuN5ZH187JqvAyb/EqmTMywt9FODWU9/qG0hGOIDQ00lqTBlvNiLwbZWEiXjWinp6Q/9HAN2/ZvnTFNNgEWwkPfboW37yjB2GCS/eJ+qhwNa1wUQAXjO+f5JwGiFpaUqRL6V5D+Om3u/nHnFYAiauHJM61vlLS1Vb3Hm6MJqpHEBwlBDLD6OiwnAkqIQ+W+FwwsTq4uGlxEu53AufDOFJivgEplgbr3ezylSLApgsJOcs8frhsARrrP5n3/YxJ60NXnOeZ1VTLn8l5dKSjg//N5mLo33C+Viob9RGrFvw27Jz+gYOugp0vkWtwDuEJa9KQ+D6R9KUnh8CWX0PkjlfFhWpFe4HEfS8OX2Ux9OE2V8+0HJIzztys4GoUHB4eM4sEhhrsHE9GzkgkAVz5Rg9wUdPDp8VymdwxLecKiV3SqQMu7V7CcCBbM8JAVcGsCy9TWIzFZ8Wl/KYE0Uf0WE40yh2oiLhJd56v8hCjajfip/RHG7FexydB2fuZ55r7PcRqp2h2xlbOS0uBWhG9AQjYApdxEm/IV15cmW1Sbq2dXnO+aQFXGmdSJY4h4CoyYK2AeNyQpy0pumGSgmMtLub2w7bywIByvYwVhGTqbAzTrUcBUQ== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:MWHPR15MB1742.namprd15.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230022)(4636009)(346002)(136003)(376002)(396003)(366004)(39860400002)(451199015)(36756003)(33656002)(30864003)(86362001)(2906002)(38100700002)(5660300002)(54906003)(122000001)(71200400001)(186003)(6916009)(6486002)(38070700005)(83380400001)(66476007)(6506007)(53546011)(76116006)(316002)(91956017)(66946007)(478600001)(9686003)(66446008)(6512007)(66556008)(41300700001)(8936002)(64756008)(4326008)(8676002)(579004);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?SjBiUnBYVEVKcVRpNzMzaUUyOFU3ZnRXR0h6NFBFelhTUzkxNmdxeXZaV3M2?= =?utf-8?B?SjdFVHdycllqZDZjakcvR0lmN2g4SkRTTjJhRERocXExcmtwUFVGWi9panQz?= =?utf-8?B?STl6WVlHT0hrRFJxVC9NMWdwSUg5cDlIRVhLNERKTTVRVWtpTkhsQVpkUEtF?= =?utf-8?B?U0tTUUFKMzVrdXErQ2FnYy8vYysvK3BmUms1azRkT3pUTHZBeC9IRDhsN2N3?= =?utf-8?B?YTdicUQ4YVVTZFBxSlE5ZnBNdi9qOGpNRm5TSVh2d3hSY204S2ZDYkFuT0hj?= =?utf-8?B?aVV1OFhlUmExWUVuNldrRnhXSm5wZUd3OG1WeHpFS2Eyc01nZHAvMk5PVndx?= =?utf-8?B?Z1dpMUpVdEx5VW91MUpJMW9mRThTKzdqVFR2ekswT1hYUzh0SDhyZy9iZkJW?= =?utf-8?B?Nk4rZFJvNHJxdjZpa2lNVzE4TXB3YjV1MjZNb0E2VWxSS05sN1dmcmkvaEpQ?= =?utf-8?B?cFA0NU4vVnV6VnJZcU4wUjNYalpaM1VRT0hvcGZhQXFNckUzQlIxNGlkbEJx?= =?utf-8?B?emlBUnpodE5RVVNIcEQyTHZHVmlnOFc0Z1kzUTRia0dmUk5Dc1BUL2FTUEVN?= =?utf-8?B?TjNObDJhTjlpZ1JMdXFmdkoxeGpWU3Z3Mi9UTDlQRXpUdEZLWERVVU9xTndD?= =?utf-8?B?RklCbFp3dVpSdmFqQ3dHN2dZbU15Z0J5dXFhUUwrbDRyYlZxNnEzcGRWUmp4?= =?utf-8?B?MHNlUk1WSkFhZjdTOGE1VEpjZkVXeGY4VUdKT0llaWwzSm9Sc2dxSW45NjBJ?= =?utf-8?B?dk5lRG9uelN6akJtSUUvbHlVM1JOeWhUQ0xwU1VzWXhnNXRQL2p2VmZGSFdV?= =?utf-8?B?RldvQWlvOUhEV0pqVkJYS1hJMmVPL1pQSkRuMnZMbGlSd2hkQzZUd1JoWmo2?= =?utf-8?B?enBXOWVNbG4vTy9FRUVCbVM2UXo4V05jeWdEa2kvalU2T2tGTHFZOWhTd0RN?= =?utf-8?B?ak9lWmViclVIWHV4NjdzS2QyR0hRVnhHY2ZYRW1QRWJDWFpZdU4zV3BJU200?= =?utf-8?B?bnBtRmthWE1ZcWZxZnBvaVdiZlA1RVpROFk1Z3NValF3UHAyQVBSdFZBZkxv?= =?utf-8?B?NmUvQ3IwbThlb0tuRGFhZ0R6Q01NS2NHTDdLSE5hR1NzU1Axd1lIT2dMZ0Ja?= =?utf-8?B?SnphNjRoalJ1cnJGbERlcWhEV2JVa2xFaU5kemxSY0tScTRYT2xOUURnN2Zq?= =?utf-8?B?RERVYW1qcWVlclpKd3UySGxXVkxJZzc4VlJZUWJNVHRFUG91azhIRzRhWjZU?= =?utf-8?B?MVZSQ3JQb296Z1lZaUl5SzBHM2FnUldZQThoK2czUUFWSlN6MkFsbzVpUEtV?= =?utf-8?B?TUNqM1NRU3J1VzU4cUNrdXIzbG9aMU1nRHd3c3lWUGNja0o0SkFhUmwyWlNV?= =?utf-8?B?eVpCTVJhM0FRZ0JiQUI5Wm8weFdrRW1iZ0hyVUdCa2labEZhQmdDMlVHbzVE?= =?utf-8?B?SkovRWtPWnRWK2JiTzFTTFNqdTIrVkJwQWxuMWVpQ3FlMXRRQzE3Y0JyL21y?= =?utf-8?B?Q0Fkc0F6RldkeElhMTFKMENvZnc1MHZ4L1ZsajRHQTRtSHNySWxXdjZodVMx?= =?utf-8?B?VUp3YitRclNkZUZRS0NZL1hMMXVrQUY3dzJybUhQc1phU0NrTWNYUW56K3cw?= =?utf-8?B?cW1pbm1CVmpQblVreXc4SGxRWmRyU1ZpeFNiL2E4clFOR0gzc0lIMitQd0dV?= =?utf-8?B?MW9ZNEJmdGV6N3lCQUN0ZEJZekpubHFkSW9YWmswaStDcksxN2R6bDA4Yi9l?= =?utf-8?B?SU8rY2QzRTgxZStWdmJGK3V1V1pWRFk3UVZLdmp5SVJ1L25xeUdLVUI1RGNK?= =?utf-8?B?VlE5RE5teDlMYW95QXZRVklNalZRNWgrTE1kMkJNYkc3MEovYjM0VWM1a3lh?= =?utf-8?B?ZTMxa1lRWjNMTVlBRnlLRkRZVjB5R2VqckhEVzFOeUFWR0c2SHZMRVpMUG9B?= =?utf-8?B?VWdnTVg4VDIzNURObGJGMlBOQjI3L201R2FxSWxLcUFSOTRuTHVRZDg1VTQ4?= =?utf-8?B?V0F0TjFHVXFrcjNXc0dVbnh4dVh1YVExNWVFczBlUjU4YTFKaFdPSkhlSk1P?= =?utf-8?B?WXl1TU9QRmNyc2dKMkdrUDViNlltcFJpVlkzekVteld4RFlMdGhRZ1J0dmxv?= =?utf-8?B?MGNwaGI2NGdBSmdUUENzM1VpNkh3RmxtMENSbExZVXptQkpOVk1tU1BGbmF2?= =?utf-8?Q?oPFy6QL1z6+DlWq5SKDMvvo=3D?= Content-Type: text/plain; charset="utf-8" Content-ID: <7E39B1F52CFFA1459C99EECECEB2643E@namprd15.prod.outlook.com> Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: meta.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: MWHPR15MB1742.namprd15.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: b015bb26-9cda-4c47-a075-08dab24b5960 X-MS-Exchange-CrossTenant-originalarrivaltime: 20 Oct 2022 03:29:51.7673 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 8ae927fe-1255-47a7-a2af-5f3a069daaa2 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: fW932L2OHpEXh+7zoPmr9cGMJ8ATJtDrJYtcXTMKJ1XN0Gjdp9yKPp8lneLjbzhgZ0H+GzkfxzsrJ6to7HnWHw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR15MB2700 X-Proofpoint-ORIG-GUID: 8-JrIiJdhuXm1rOKbCwCyzUqzd4dnLdN X-Proofpoint-GUID: 8-JrIiJdhuXm1rOKbCwCyzUqzd4dnLdN X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.205,Aquarius:18.0.895,Hydra:6.0.545,FMLib:17.11.122.1 definitions=2022-10-19_13,2022-10-19_04,2022-06-22_01 ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1666236611; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=0Z6p+/X8ECQBNNnniql2R2IcGIrSth34FY7bAasIV0w=; b=HUZ05+TyZ2NuM/uHyvQ7qsu/riWTps9nJ+kKkmhlTtDX7lrBK91MN11gy/gb5pC2RrTi8b lUrJCcHQvBUT3FrbZ0Ltjbg5wc4z0F3TbtppgvnFsqgP0sXZ+OY85/GJKFjXm53smjWw10 0fWnEGgY5mwI8DnTytnpCWFexw/xOtw= ARC-Authentication-Results: i=2; imf09.hostedemail.com; dkim=pass header.d=meta.com header.s=s2048-2021-q4 header.b=HJj7zHfd; arc=pass ("microsoft.com:s=arcselector9901:i=1"); spf=pass (imf09.hostedemail.com: domain of "prvs=1292481dba=alexlzhu@meta.com" designates 67.231.153.30 as permitted sender) smtp.mailfrom="prvs=1292481dba=alexlzhu@meta.com"; dmarc=pass (policy=reject) header.from=meta.com ARC-Seal: i=2; s=arc-20220608; d=hostedemail.com; t=1666236611; a=rsa-sha256; cv=pass; b=j1e6lc8ja8+MTa74Mfkr7J/7pC1InggUF2I+jUGBgNv/qgPj+1TNj0Qogi4saz9n3rg7vI daUIjCgn1HIbsto4ESuH6To4Nkj7ECGeKPmiQDJk2g8R5pSpe0/SWzM9VrA73EcDlblZzG ylJav6zG5MRpahIghk+Rmm1+c1yakXU= Authentication-Results: imf09.hostedemail.com; dkim=pass header.d=meta.com header.s=s2048-2021-q4 header.b=HJj7zHfd; arc=pass ("microsoft.com:s=arcselector9901:i=1"); spf=pass (imf09.hostedemail.com: domain of "prvs=1292481dba=alexlzhu@meta.com" designates 67.231.153.30 as permitted sender) smtp.mailfrom="prvs=1292481dba=alexlzhu@meta.com"; dmarc=pass (policy=reject) header.from=meta.com X-Stat-Signature: t8awce8p38a39yeozbdoz3qs814xfmbn X-Rspamd-Queue-Id: 43597140036 X-Rspam-User: X-Rspamd-Server: rspam04 X-HE-Tag: 1666236611-857987 X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: DQoNCj4gT24gT2N0IDE5LCAyMDIyLCBhdCA2OjI0IFBNLCBIdWFuZywgWWluZyA8eWluZy5odWFu Z0BpbnRlbC5jb20+IHdyb3RlOg0KPiANCj4gIkFsZXggWmh1IChLZXJuZWwpIiA8YWxleGx6aHVA bWV0YS5jb20+IHdyaXRlczoNCj4gDQo+Pj4gT24gT2N0IDE5LCAyMDIyLCBhdCAxMjowNCBBTSwg SHVhbmcsIFlpbmcgPHlpbmcuaHVhbmdAaW50ZWwuY29tPiB3cm90ZToNCj4+PiANCj4+Pj4gDQo+ Pj4gPGFsZXhsemh1QGZiLmNvbT4gd3JpdGVzOg0KPj4+IA0KPj4+PiBGcm9tOiBBbGV4YW5kZXIg Wmh1IDxhbGV4bHpodUBmYi5jb20+DQo+Pj4+IA0KPj4+PiBUaGlzIHBhdGNoIGludHJvZHVjZXMg YSBzaHJpbmtlciB0aGF0IHdpbGwgcmVtb3ZlIFRIUHMgaW4gdGhlIGxvd2VzdA0KPj4+PiB1dGls aXphdGlvbiBidWNrZXQuIEFzIHByZXZpb3VzbHkgbWVudGlvbmVkLCB3ZSBoYXZlIG9ic2VydmVk IHRoYXQNCj4+Pj4gYWxtb3N0IGFsbCBvZiB0aGUgbWVtb3J5IHdhc3RlIHdoZW4gVEhQcyBhcmUg YWx3YXlzIGVuYWJsZWQNCj4+Pj4gaXMgY29udGFpbmVkIGluIHRoZSBsb3dlc3QgdXRpbGl6YXRp b24gYnVja2V0LiBUaGUgc2hyaW5rZXIgd2lsbA0KPj4+PiBhZGQgdGhlc2UgVEhQcyB0byBhIGxp c3RfbHJ1IGFuZCBzcGxpdCBhbm9ueW1vdXMgVEhQcyBiYXNlZCBvZmYNCj4+Pj4gaW5mb3JtYXRp b24gZnJvbSBrc3dhcGQuIEl0IHJlcXVpcmVzIHRoZSBjaGFuZ2VzIGZyb20NCj4+Pj4gdGhwX3V0 aWxpemF0aW9uIHRvIGlkZW50aWZ5IHRoZSBsZWFzdCB1dGlsaXplZCBUSFBzLCBhbmQgdGhlDQo+ Pj4+IGNoYW5nZXMgdG8gc3BsaXRfaHVnZV9wYWdlIHRvIGlkZW50aWZ5IGFuZCBmcmVlIHplcm8g cGFnZXMNCj4+Pj4gd2l0aGluIFRIUHMuDQo+Pj4+IA0KPj4+PiBTaWduZWQtb2ZmLWJ5OiBBbGV4 YW5kZXIgWmh1IDxhbGV4bHpodUBmYi5jb20+DQo+Pj4+IC0tLQ0KPj4+PiB2MiB0byB2Mw0KPj4+ PiAtcHV0X3BhZ2UoKSBhZnRlciB0cnlsb2NrX3BhZ2UgaW4gbG93X3V0aWxfZnJlZV9wYWdlLiBw dXQoKSB0byBiZSBjYWxsZWQgYWZ0ZXIgZ2V0KCkgY2FsbCANCj4+Pj4gLXJlbW92ZWQgc3Bpbl91 bmxvY2tfaXJxIGluIGxvd191dGlsX2ZyZWVfcGFnZSBhYm92ZSBMUlVfU0tJUC4gVGhlcmUgd2Fz IGEgZG91YmxlIHVubG9jay4gICAgDQo+Pj4+IC1tb3ZlZCBzcGluX3VubG9ja19pcnEoKSB0byBi ZWxvdyBsaXN0X2xydV9pc29sYXRlKCkgaW4gbG93X3V0aWxfZnJlZV9wYWdlLiBUaGlzIGlzIHRv IHNob3J0ZW4gdGhlIGNyaXRpY2FsIHNlY3Rpb24uDQo+Pj4+IC1tb3ZlZCBsb2NrX3BhZ2UgaW4g YWRkX3VuZGVydXRpbGl6ZWRfdGhwIHN1Y2ggdGhhdCB3ZSBvbmx5IGxvY2sgd2hlbiBhbGxvY2F0 aW5nIGFuZCBhZGRpbmcgdG8gdGhlIGxpc3RfbHJ1ICANCj4+Pj4gLXJlbW92ZWQgbGlzdF9scnVf YWxsb2MgaW4gbGlzdF9scnVfYWRkX3BhZ2UgYW5kIGxpc3RfbHJ1X2RlbGV0ZV9wYWdlIGFzIHRo ZXNlIGFyZSBubyBsb25nZXIgbmVlZGVkLiANCj4+Pj4gDQo+Pj4+IHYxIHRvIHYyDQo+Pj4+IC1D aGFuZ2VkIGxydV9sb2NrIHRvIGJlIGlycSBzYWZlLiBBZGRlZCBpcnFfc2F2ZSBhbmQgcmVzdG9y ZSBhcm91bmQgbGlzdF9scnUgYWRkcy9kZWxldGVzLg0KPj4+PiAtQ2hhbmdlZCBsb3dfdXRpbF9m cmVlX3BhZ2UoKSB0byB0cnlsb2NrIHRoZSBwYWdlLCBhbmQgaWYgaXQgZmFpbHMsIHVubG9jayBs cnVfbG9jayBhbmQgcmV0dXJuIExSVV9TS0lQLiBUaGlzIGlzIHRvIGF2b2lkIGRlYWRsb2NrIGJl dHdlZW4gcmVjbGFpbSwgd2hpY2ggY2FsbHMgc3BsaXRfaHVnZV9wYWdlKCkgYW5kIHRoZSBUSFAg U2hyaW5rZXINCj4+Pj4gLUNoYW5nZWQgbG93X3V0aWxfZnJlZV9wYWdlKCkgdG8gdW5sb2NrIGxy dV9sb2NrLCBzcGxpdF9odWdlX3BhZ2UsIHRoZW4gbG9jayBscnVfbG9jay4gVGhpcyB3YXkgc3Bs aXRfaHVnZV9wYWdlIGlzIG5vdCBjYWxsZWQgd2l0aCB0aGUgbHJ1X2xvY2sgaGVsZC4gVGhhdCBs ZWFkcyB0byBkZWFkbG9jayBhcyBzcGxpdF9odWdlX3BhZ2UgY2FsbHMgb25fZWFjaF9jcHVfbWFz ayANCj4+Pj4gLUNoYW5nZWQgbGlzdF9scnVfc2hyaW5rX3dhbGsgdG8gbGlzdF9scnVfc2hyaW5r X3dhbGtfaXJxLiANCj4+Pj4gDQo+Pj4+IFJGQyB0byB2MQ0KPj4+PiAtUmVtb3ZlIGFsbCBUSFBz IHRoYXQgYXJlIG5vdCBpbiB0aGUgdG9wIHV0aWxpemF0aW9uIGJ1Y2tldC4gVGhpcyBpcyB3aGF0 IHdlIGhhdmUgZm91bmQgdG8gcGVyZm9ybSB0aGUgYmVzdCBpbiBwcm9kdWN0aW9uIHRlc3Rpbmcs IHdlIGhhdmUgZm91bmQgdGhhdCB0aGVyZSBhcmUgYW4gYWxtb3N0IHRyaXZpYWwgbnVtYmVyIG9m IFRIUHMgaW4gdGhlIG1pZGRsZSByYW5nZSBvZiBidWNrZXRzIHRoYXQgYWNjb3VudCBmb3IgbW9z dCBvZiB0aGUgbWVtb3J5IHdhc3RlLiANCj4+Pj4gLUFkZGVkIGNoZWNrIGZvciBUSFAgdXRpbGl6 YXRpb24gcHJpb3IgdG8gc3BsaXRfaHVnZV9wYWdlIGZvciB0aGUgVEhQIFNocmlua2VyLiBUaGlz IGlzIHRvIGFjY291bnQgZm9yIFRIUHMgdGhhdCBtb3ZlIHRvIHRoZSB0b3AgYnVja2V0LCBidXQg d2VyZSB1bmRlcnV0aWxpemVkIGF0IHRoZSB0aW1lIHRoZXkgd2VyZSBhZGRlZCB0byB0aGUgbGlz dF9scnUuIA0KPj4+PiAtTXVsdGlwbHkgdGhlIHNocmlua19jb3VudCBhbmQgc2Nhbl9jb3VudCBi eSBIUEFHRV9QTURfTlIuIFRoaXMgaXMgYmVjYXVzZSBhIFRIUCBpcyA1MTIgcGFnZXMsIGFuZCBz aG91bGQgY291bnQgYXMgNTEyIG9iamVjdHMgaW4gcmVjbGFpbS4gVGhpcyB3YXkgcmVjbGFpbSBp cyB0cmlnZ2VyZWQgYXQgYSBtb3JlIGFwcHJvcHJpYXRlIGZyZXF1ZW5jeSB0aGFuIGluIHRoZSBS RkMuIA0KPj4+PiANCj4+Pj4gaW5jbHVkZS9saW51eC9odWdlX21tLmggIHwgICA3ICsrKw0KPj4+ PiBpbmNsdWRlL2xpbnV4L2xpc3RfbHJ1LmggfCAgMjQgKysrKysrKysrDQo+Pj4+IGluY2x1ZGUv bGludXgvbW1fdHlwZXMuaCB8ICAgNSArKw0KPj4+PiBtbS9odWdlX21lbW9yeS5jICAgICAgICAg fCAxMTQgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystDQo+Pj4+IG1tL2xp c3RfbHJ1LmMgICAgICAgICAgICB8ICA0OSArKysrKysrKysrKysrKysrKw0KPj4+PiBtbS9wYWdl X2FsbG9jLmMgICAgICAgICAgfCAgIDYgKysrDQo+Pj4+IDYgZmlsZXMgY2hhbmdlZCwgMjAzIGlu c2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pDQo+Pj4+IA0KPj4+PiBkaWZmIC0tZ2l0IGEvaW5j bHVkZS9saW51eC9odWdlX21tLmggYi9pbmNsdWRlL2xpbnV4L2h1Z2VfbW0uaA0KPj4+PiBpbmRl eCAxM2FjN2IyZjI5YWUuLjc1ZTQwODAyNTZiZSAxMDA2NDQNCj4+Pj4gLS0tIGEvaW5jbHVkZS9s aW51eC9odWdlX21tLmgNCj4+Pj4gKysrIGIvaW5jbHVkZS9saW51eC9odWdlX21tLmgNCj4+Pj4g QEAgLTE5Miw2ICsxOTIsOCBAQCBzdGF0aWMgaW5saW5lIGludCBzcGxpdF9odWdlX3BhZ2Uoc3Ry dWN0IHBhZ2UgKnBhZ2UpDQo+Pj4+IH0NCj4+Pj4gdm9pZCBkZWZlcnJlZF9zcGxpdF9odWdlX3Bh Z2Uoc3RydWN0IHBhZ2UgKnBhZ2UpOw0KPj4+PiANCj4+Pj4gK3ZvaWQgYWRkX3VuZGVydXRpbGl6 ZWRfdGhwKHN0cnVjdCBwYWdlICpwYWdlKTsNCj4+Pj4gKw0KPj4+PiB2b2lkIF9fc3BsaXRfaHVn ZV9wbWQoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsIHBtZF90ICpwbWQsDQo+Pj4+IAkJdW5z aWduZWQgbG9uZyBhZGRyZXNzLCBib29sIGZyZWV6ZSwgc3RydWN0IGZvbGlvICpmb2xpbyk7DQo+ Pj4+IA0KPj4+PiBAQCAtMzA1LDYgKzMwNywxMSBAQCBzdGF0aWMgaW5saW5lIHN0cnVjdCBsaXN0 X2hlYWQgKnBhZ2VfZGVmZXJyZWRfbGlzdChzdHJ1Y3QgcGFnZSAqcGFnZSkNCj4+Pj4gCXJldHVy biAmcGFnZVsyXS5kZWZlcnJlZF9saXN0Ow0KPj4+PiB9DQo+Pj4+IA0KPj4+PiArc3RhdGljIGlu bGluZSBzdHJ1Y3QgbGlzdF9oZWFkICpwYWdlX3VuZGVydXRpbGl6ZWRfdGhwX2xpc3Qoc3RydWN0 IHBhZ2UgKnBhZ2UpDQo+Pj4+ICt7DQo+Pj4+ICsJcmV0dXJuICZwYWdlWzNdLnVuZGVydXRpbGl6 ZWRfdGhwX2xpc3Q7DQo+Pj4+ICt9DQo+Pj4+ICsNCj4+Pj4gI2Vsc2UgLyogQ09ORklHX1RSQU5T UEFSRU5UX0hVR0VQQUdFICovDQo+Pj4+ICNkZWZpbmUgSFBBR0VfUE1EX1NISUZUICh7IEJVSUxE X0JVRygpOyAwOyB9KQ0KPj4+PiAjZGVmaW5lIEhQQUdFX1BNRF9NQVNLICh7IEJVSUxEX0JVRygp OyAwOyB9KQ0KPj4+PiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9saXN0X2xydS5oIGIvaW5j bHVkZS9saW51eC9saXN0X2xydS5oDQo+Pj4+IGluZGV4IGIzNTk2OGVlOWZiNS4uYzJjZjE0NmVh ODgwIDEwMDY0NA0KPj4+PiAtLS0gYS9pbmNsdWRlL2xpbnV4L2xpc3RfbHJ1LmgNCj4+Pj4gKysr IGIvaW5jbHVkZS9saW51eC9saXN0X2xydS5oDQo+Pj4+IEBAIC04OSw2ICs4OSwxOCBAQCB2b2lk IG1lbWNnX3JlcGFyZW50X2xpc3RfbHJ1cyhzdHJ1Y3QgbWVtX2Nncm91cCAqbWVtY2csIHN0cnVj dCBtZW1fY2dyb3VwICpwYXJlbg0KPj4+PiAqLw0KPj4+PiBib29sIGxpc3RfbHJ1X2FkZChzdHJ1 Y3QgbGlzdF9scnUgKmxydSwgc3RydWN0IGxpc3RfaGVhZCAqaXRlbSk7DQo+Pj4+IA0KPj4+PiAr LyoqDQo+Pj4+ICsgKiBsaXN0X2xydV9hZGRfcGFnZTogYWRkIGFuIGVsZW1lbnQgdG8gdGhlIGxy dSBsaXN0J3MgdGFpbA0KPj4+PiArICogQGxpc3RfbHJ1OiB0aGUgbHJ1IHBvaW50ZXINCj4+Pj4g KyAqIEBwYWdlOiB0aGUgcGFnZSBjb250YWluaW5nIHRoZSBpdGVtDQo+Pj4+ICsgKiBAaXRlbTog dGhlIGl0ZW0gdG8gYmUgZGVsZXRlZC4NCj4+Pj4gKyAqDQo+Pj4+ICsgKiBUaGlzIGZ1bmN0aW9u IHdvcmtzIHRoZSBzYW1lIGFzIGxpc3RfbHJ1X2FkZCBpbiB0ZXJtcyBvZiBsaXN0DQo+Pj4+ICsg KiBtYW5pcHVsYXRpb24uIFVzZWQgZm9yIG5vbiBzbGFiIG9iamVjdHMgY29udGFpbmVkIGluIHRo ZSBwYWdlLg0KPj4+PiArICoNCj4+Pj4gKyAqIFJldHVybiB2YWx1ZTogdHJ1ZSBpZiB0aGUgbGlz dCB3YXMgdXBkYXRlZCwgZmFsc2Ugb3RoZXJ3aXNlDQo+Pj4+ICsgKi8NCj4+Pj4gK2Jvb2wgbGlz dF9scnVfYWRkX3BhZ2Uoc3RydWN0IGxpc3RfbHJ1ICpscnUsIHN0cnVjdCBwYWdlICpwYWdlLCBz dHJ1Y3QgbGlzdF9oZWFkICppdGVtKTsNCj4+Pj4gLyoqDQo+Pj4+ICogbGlzdF9scnVfZGVsOiBk ZWxldGUgYW4gZWxlbWVudCB0byB0aGUgbHJ1IGxpc3QNCj4+Pj4gKiBAbGlzdF9scnU6IHRoZSBs cnUgcG9pbnRlcg0KPj4+PiBAQCAtMTAyLDYgKzExNCwxOCBAQCBib29sIGxpc3RfbHJ1X2FkZChz dHJ1Y3QgbGlzdF9scnUgKmxydSwgc3RydWN0IGxpc3RfaGVhZCAqaXRlbSk7DQo+Pj4+ICovDQo+ Pj4+IGJvb2wgbGlzdF9scnVfZGVsKHN0cnVjdCBsaXN0X2xydSAqbHJ1LCBzdHJ1Y3QgbGlzdF9o ZWFkICppdGVtKTsNCj4+Pj4gDQo+Pj4+ICsvKioNCj4+Pj4gKyAqIGxpc3RfbHJ1X2RlbF9wYWdl OiBkZWxldGUgYW4gZWxlbWVudCB0byB0aGUgbHJ1IGxpc3QNCj4+Pj4gKyAqIEBsaXN0X2xydTog dGhlIGxydSBwb2ludGVyDQo+Pj4+ICsgKiBAcGFnZTogdGhlIHBhZ2UgY29udGFpbmluZyB0aGUg aXRlbQ0KPj4+PiArICogQGl0ZW06IHRoZSBpdGVtIHRvIGJlIGRlbGV0ZWQuDQo+Pj4+ICsgKg0K Pj4+PiArICogVGhpcyBmdW5jdGlvbiB3b3JrcyB0aGUgc2FtZSBhcyBsaXN0X2xydV9kZWwgaW4g dGVybXMgb2YgbGlzdA0KPj4+PiArICogbWFuaXB1bGF0aW9uLiBVc2VkIGZvciBub24gc2xhYiBv YmplY3RzIGNvbnRhaW5lZCBpbiB0aGUgcGFnZS4NCj4+Pj4gKyAqDQo+Pj4+ICsgKiBSZXR1cm4g dmFsdWU6IHRydWUgaWYgdGhlIGxpc3Qgd2FzIHVwZGF0ZWQsIGZhbHNlIG90aGVyd2lzZQ0KPj4+ PiArICovDQo+Pj4+ICtib29sIGxpc3RfbHJ1X2RlbF9wYWdlKHN0cnVjdCBsaXN0X2xydSAqbHJ1 LCBzdHJ1Y3QgcGFnZSAqcGFnZSwgc3RydWN0IGxpc3RfaGVhZCAqaXRlbSk7DQo+Pj4+IC8qKg0K Pj4+PiAqIGxpc3RfbHJ1X2NvdW50X29uZTogcmV0dXJuIHRoZSBudW1iZXIgb2Ygb2JqZWN0cyBj dXJyZW50bHkgaGVsZCBieSBAbHJ1DQo+Pj4+ICogQGxydTogdGhlIGxydSBwb2ludGVyLg0KPj4+ PiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9tbV90eXBlcy5oIGIvaW5jbHVkZS9saW51eC9t bV90eXBlcy5oDQo+Pj4+IGluZGV4IDUwMGU1MzY3OTZjYS4uZGExZDFjZjQyMTU4IDEwMDY0NA0K Pj4+PiAtLS0gYS9pbmNsdWRlL2xpbnV4L21tX3R5cGVzLmgNCj4+Pj4gKysrIGIvaW5jbHVkZS9s aW51eC9tbV90eXBlcy5oDQo+Pj4+IEBAIC0xNTIsNiArMTUyLDExIEBAIHN0cnVjdCBwYWdlIHsN Cj4+Pj4gCQkJLyogRm9yIGJvdGggZ2xvYmFsIGFuZCBtZW1jZyAqLw0KPj4+PiAJCQlzdHJ1Y3Qg bGlzdF9oZWFkIGRlZmVycmVkX2xpc3Q7DQo+Pj4+IAkJfTsNCj4+Pj4gKwkJc3RydWN0IHsgLyog VGhpcmQgdGFpbCBwYWdlIG9mIGNvbXBvdW5kIHBhZ2UgKi8NCj4+Pj4gKwkJCXVuc2lnbmVkIGxv bmcgX2NvbXBvdW5kX3BhZF8zOyAvKiBjb21wb3VuZF9oZWFkICovDQo+Pj4+ICsJCQl1bnNpZ25l ZCBsb25nIF9jb21wb3VuZF9wYWRfNDsNCj4+Pj4gKwkJCXN0cnVjdCBsaXN0X2hlYWQgdW5kZXJ1 dGlsaXplZF90aHBfbGlzdDsNCj4+Pj4gKwkJfTsNCj4+Pj4gCQlzdHJ1Y3QgewkvKiBQYWdlIHRh YmxlIHBhZ2VzICovDQo+Pj4+IAkJCXVuc2lnbmVkIGxvbmcgX3B0X3BhZF8xOwkvKiBjb21wb3Vu ZF9oZWFkICovDQo+Pj4+IAkJCXBndGFibGVfdCBwbWRfaHVnZV9wdGU7IC8qIHByb3RlY3RlZCBi eSBwYWdlLT5wdGwgKi8NCj4+Pj4gZGlmZiAtLWdpdCBhL21tL2h1Z2VfbWVtb3J5LmMgYi9tbS9o dWdlX21lbW9yeS5jDQo+Pj4+IGluZGV4IGEwODg4NTIyOGNiMi4uMzYyZGY5NzdjYzczIDEwMDY0 NA0KPj4+PiAtLS0gYS9tbS9odWdlX21lbW9yeS5jDQo+Pj4+ICsrKyBiL21tL2h1Z2VfbWVtb3J5 LmMNCj4+Pj4gQEAgLTgxLDYgKzgxLDggQEAgc3RhdGljIGF0b21pY190IGh1Z2VfemVyb19yZWZj b3VudDsNCj4+Pj4gc3RydWN0IHBhZ2UgKmh1Z2VfemVyb19wYWdlIF9fcmVhZF9tb3N0bHk7DQo+ Pj4+IHVuc2lnbmVkIGxvbmcgaHVnZV96ZXJvX3BmbiBfX3JlYWRfbW9zdGx5ID0gfjBVTDsNCj4+ Pj4gDQo+Pj4+ICtzdGF0aWMgc3RydWN0IGxpc3RfbHJ1IGh1Z2VfbG93X3V0aWxfcGFnZV9scnU7 DQo+Pj4+ICsNCj4+Pj4gc3RhdGljIHZvaWQgdGhwX3V0aWxpemF0aW9uX3dvcmtmbihzdHJ1Y3Qg d29ya19zdHJ1Y3QgKndvcmspOw0KPj4+PiBzdGF0aWMgREVDTEFSRV9ERUxBWUVEX1dPUksodGhw X3V0aWxpemF0aW9uX3dvcmssIHRocF91dGlsaXphdGlvbl93b3JrZm4pOw0KPj4+PiANCj4+Pj4g QEAgLTI2Myw2ICsyNjUsNTcgQEAgc3RhdGljIHN0cnVjdCBzaHJpbmtlciBodWdlX3plcm9fcGFn ZV9zaHJpbmtlciA9IHsNCj4+Pj4gCS5zZWVrcyA9IERFRkFVTFRfU0VFS1MsDQo+Pj4+IH07DQo+ Pj4+IA0KPj4+PiArc3RhdGljIGVudW0gbHJ1X3N0YXR1cyBsb3dfdXRpbF9mcmVlX3BhZ2Uoc3Ry dWN0IGxpc3RfaGVhZCAqaXRlbSwNCj4+Pj4gKwkJCQkJICBzdHJ1Y3QgbGlzdF9scnVfb25lICps cnUsDQo+Pj4+ICsJCQkJCSAgc3BpbmxvY2tfdCAqbG9jaywNCj4+Pj4gKwkJCQkJICB2b2lkICpj Yl9hcmcpDQo+Pj4+ICt7DQo+Pj4+ICsJaW50IGJ1Y2tldCwgbnVtX3V0aWxpemVkX3BhZ2VzOw0K Pj4+PiArCXN0cnVjdCBwYWdlICpoZWFkID0gY29tcG91bmRfaGVhZChsaXN0X2VudHJ5KGl0ZW0s DQo+Pj4+ICsJCQkJCQkJCQlzdHJ1Y3QgcGFnZSwNCj4+Pj4gKwkJCQkJCQkJCXVuZGVydXRpbGl6 ZWRfdGhwX2xpc3QpKTsNCj4+Pj4gKw0KPj4+PiArCWlmIChnZXRfcGFnZV91bmxlc3NfemVybyho ZWFkKSkgew0KPj4+PiArCQlpZiAoIXRyeWxvY2tfcGFnZShoZWFkKSkgew0KPj4+PiArCQkJcHV0 X3BhZ2UoaGVhZCk7DQo+Pj4+ICsJCQlyZXR1cm4gTFJVX1NLSVA7DQo+Pj4+ICsJCX0NCj4+Pj4g KwkJbGlzdF9scnVfaXNvbGF0ZShscnUsIGl0ZW0pOw0KPj4+PiArCQlzcGluX3VubG9ja19pcnEo bG9jayk7DQo+Pj4+ICsJCW51bV91dGlsaXplZF9wYWdlcyA9IHRocF9udW1iZXJfdXRpbGl6ZWRf cGFnZXMoaGVhZCk7DQo+Pj4+ICsJCWJ1Y2tldCA9IHRocF91dGlsaXphdGlvbl9idWNrZXQobnVt X3V0aWxpemVkX3BhZ2VzKTsNCj4+Pj4gKwkJaWYgKGJ1Y2tldCA8IFRIUF9VVElMX0JVQ0tFVF9O UiAtIDEpIHsNCj4+PiANCj4+PiBJZiBteSB1bmRlcnN0YW5kaW5nIHdlcmUgY29ycmVjdCwgdGhl IFRIUCB3aWxsIGJlIGNvbnNpZGVyZWQgdW5kZXINCj4+PiB1dGlsaXplZCBpZiB1dGlsaXphdGlv biBwZXJjZW50YWdlIDwgOTAlLiAgUmlnaHQ/ICBJZiBzbywgSSB0aG91Z2h0DQo+Pj4gc29tZXRo aW5nIGxpa2UgdXRpbGl6YXRpb24gcGVyY2VudGFnZSA8IDUwJSBhcHBlYXJzIG1vcmUgYXBwcm9w cmlhdGUuDQo+PiANCj4+IFllcywgPCA5MCUuIFRoYXQgaXMganVzdCB0aGUgYmVzdCBudW1iZXIg d2UgaGF2ZSBmb3VuZCBzbyBmYXIgZnJvbSBvdXINCj4+IGV4cGVyaW1lbnRzLCBhcyBpdCBzZWVt cyBhbG1vc3QgYWxsIFRIUHMgYXJlIDwxMCUgdXRpbGl6ZWQgb3IgPjkwJQ0KPj4gdXRpbGl6ZWQg LiBUaGVyZSBhcmUgYW4gYWxtb3N0IHRyaXZpYWwgbnVtYmVyIG9mIHBhZ2VzIGluIGJldHdlZW4u DQo+IA0KPiBTbywgZXZlbiBpZiBpdCdzIDw9IDEwJSwgdGhlIHJlc3VsdHMgd2lsbCBiZSBhbG1v c3QgYmVzdC4gIFllcz8gIElmIHNvLA0KPiB3aHkgdXNlIDkwJT8gIFdoaWNoIGlzIGFwcGVhcnMg dG9vIGV4dHJlbWUuDQo+IA0KPj4+IA0KPj4+PiArCQkJc3BsaXRfaHVnZV9wYWdlKGhlYWQpOw0K Pj4+PiArCQkJc3Bpbl9sb2NrX2lycShsb2NrKTsNCj4+Pj4gKwkJfQ0KPj4+PiArCQl1bmxvY2tf cGFnZShoZWFkKTsNCj4+Pj4gKwkJcHV0X3BhZ2UoaGVhZCk7DQo+Pj4+ICsJfQ0KPj4+PiArDQo+ Pj4+ICsJcmV0dXJuIExSVV9SRU1PVkVEX1JFVFJZOw0KPj4+PiArfQ0KPj4+PiArDQo+Pj4+ICtz dGF0aWMgdW5zaWduZWQgbG9uZyBzaHJpbmtfaHVnZV9sb3dfdXRpbF9wYWdlX2NvdW50KHN0cnVj dCBzaHJpbmtlciAqc2hyaW5rLA0KPj4+PiArCQkJCQkJICAgICBzdHJ1Y3Qgc2hyaW5rX2NvbnRy b2wgKnNjKQ0KPj4+PiArew0KPj4+PiArCXJldHVybiBIUEFHRV9QTURfTlIgKiBsaXN0X2xydV9z aHJpbmtfY291bnQoJmh1Z2VfbG93X3V0aWxfcGFnZV9scnUsIHNjKTsNCj4+Pj4gK30NCj4+Pj4g Kw0KPj4+PiArc3RhdGljIHVuc2lnbmVkIGxvbmcgc2hyaW5rX2h1Z2VfbG93X3V0aWxfcGFnZV9z Y2FuKHN0cnVjdCBzaHJpbmtlciAqc2hyaW5rLA0KPj4+PiArCQkJCQkJICAgIHN0cnVjdCBzaHJp bmtfY29udHJvbCAqc2MpDQo+Pj4+ICt7DQo+Pj4+ICsJcmV0dXJuIEhQQUdFX1BNRF9OUiAqIGxp c3RfbHJ1X3Nocmlua193YWxrX2lycSgmaHVnZV9sb3dfdXRpbF9wYWdlX2xydSwNCj4+Pj4gKwkJ CQkJCQlzYywgbG93X3V0aWxfZnJlZV9wYWdlLCBOVUxMKTsNCj4+Pj4gK30NCj4+Pj4gKw0KPj4+ PiArc3RhdGljIHN0cnVjdCBzaHJpbmtlciBodWdlX2xvd191dGlsX3BhZ2Vfc2hyaW5rZXIgPSB7 DQo+Pj4+ICsJLmNvdW50X29iamVjdHMgPSBzaHJpbmtfaHVnZV9sb3dfdXRpbF9wYWdlX2NvdW50 LA0KPj4+PiArCS5zY2FuX29iamVjdHMgPSBzaHJpbmtfaHVnZV9sb3dfdXRpbF9wYWdlX3NjYW4s DQo+Pj4+ICsJLnNlZWtzID0gREVGQVVMVF9TRUVLUywNCj4+Pj4gKwkuZmxhZ3MgPSBTSFJJTktF Ul9OVU1BX0FXQVJFIHwgU0hSSU5LRVJfTUVNQ0dfQVdBUkUgfA0KPj4+PiArCQlTSFJJTktFUl9O T05TTEFCLA0KPj4+PiArfTsNCj4+Pj4gKw0KPj4+PiAjaWZkZWYgQ09ORklHX1NZU0ZTDQo+Pj4+ IHN0YXRpYyBzc2l6ZV90IGVuYWJsZWRfc2hvdyhzdHJ1Y3Qga29iamVjdCAqa29iaiwNCj4+Pj4g CQkJICAgIHN0cnVjdCBrb2JqX2F0dHJpYnV0ZSAqYXR0ciwgY2hhciAqYnVmKQ0KPj4+PiBAQCAt NTE1LDYgKzU2OCw5IEBAIHN0YXRpYyBpbnQgX19pbml0IGh1Z2VwYWdlX2luaXQodm9pZCkNCj4+ Pj4gCQlnb3RvIGVycl9zbGFiOw0KPj4+PiANCj4+Pj4gCXNjaGVkdWxlX2RlbGF5ZWRfd29yaygm dGhwX3V0aWxpemF0aW9uX3dvcmssIEhaKTsNCj4+Pj4gKwllcnIgPSByZWdpc3Rlcl9zaHJpbmtl cigmaHVnZV9sb3dfdXRpbF9wYWdlX3Nocmlua2VyLCAidGhwLWxvdy11dGlsIik7DQo+Pj4+ICsJ aWYgKGVycikNCj4+Pj4gKwkJZ290byBlcnJfbG93X3V0aWxfc2hyaW5rZXI7DQo+Pj4+IAllcnIg PSByZWdpc3Rlcl9zaHJpbmtlcigmaHVnZV96ZXJvX3BhZ2Vfc2hyaW5rZXIsICJ0aHAtemVybyIp Ow0KPj4+PiAJaWYgKGVycikNCj4+Pj4gCQlnb3RvIGVycl9oenBfc2hyaW5rZXI7DQo+Pj4+IEBA IC01MjIsNiArNTc4LDkgQEAgc3RhdGljIGludCBfX2luaXQgaHVnZXBhZ2VfaW5pdCh2b2lkKQ0K Pj4+PiAJaWYgKGVycikNCj4+Pj4gCQlnb3RvIGVycl9zcGxpdF9zaHJpbmtlcjsNCj4+Pj4gDQo+ Pj4+ICsJZXJyID0gbGlzdF9scnVfaW5pdF9tZW1jZygmaHVnZV9sb3dfdXRpbF9wYWdlX2xydSwg Jmh1Z2VfbG93X3V0aWxfcGFnZV9zaHJpbmtlcik7DQo+Pj4+ICsJaWYgKGVycikNCj4+Pj4gKwkJ Z290byBlcnJfbG93X3V0aWxfbGlzdF9scnU7DQo+Pj4+IAkvKg0KPj4+PiAJICogQnkgZGVmYXVs dCBkaXNhYmxlIHRyYW5zcGFyZW50IGh1Z2VwYWdlcyBvbiBzbWFsbGVyIHN5c3RlbXMsDQo+Pj4+ IAkgKiB3aGVyZSB0aGUgZXh0cmEgbWVtb3J5IHVzZWQgY291bGQgaHVydCBtb3JlIHRoYW4gVExC IG92ZXJoZWFkDQo+Pj4+IEBAIC01MzgsMTAgKzU5NywxNCBAQCBzdGF0aWMgaW50IF9faW5pdCBo dWdlcGFnZV9pbml0KHZvaWQpDQo+Pj4+IA0KPj4+PiAJcmV0dXJuIDA7DQo+Pj4+IGVycl9raHVn ZXBhZ2VkOg0KPj4+PiArCWxpc3RfbHJ1X2Rlc3Ryb3koJmh1Z2VfbG93X3V0aWxfcGFnZV9scnUp Ow0KPj4+PiArZXJyX2xvd191dGlsX2xpc3RfbHJ1Og0KPj4+PiAJdW5yZWdpc3Rlcl9zaHJpbmtl cigmZGVmZXJyZWRfc3BsaXRfc2hyaW5rZXIpOw0KPj4+PiBlcnJfc3BsaXRfc2hyaW5rZXI6DQo+ Pj4+IAl1bnJlZ2lzdGVyX3Nocmlua2VyKCZodWdlX3plcm9fcGFnZV9zaHJpbmtlcik7DQo+Pj4+ IGVycl9oenBfc2hyaW5rZXI6DQo+Pj4+ICsJdW5yZWdpc3Rlcl9zaHJpbmtlcigmaHVnZV9sb3df dXRpbF9wYWdlX3Nocmlua2VyKTsNCj4+Pj4gK2Vycl9sb3dfdXRpbF9zaHJpbmtlcjoNCj4+Pj4g CWtodWdlcGFnZWRfZGVzdHJveSgpOw0KPj4+PiBlcnJfc2xhYjoNCj4+Pj4gCWh1Z2VwYWdlX2V4 aXRfc3lzZnMoaHVnZXBhZ2Vfa29iaik7DQo+Pj4+IEBAIC02MTYsNiArNjc5LDcgQEAgdm9pZCBw cmVwX3RyYW5zaHVnZV9wYWdlKHN0cnVjdCBwYWdlICpwYWdlKQ0KPj4+PiAJICovDQo+Pj4+IA0K Pj4+PiAJSU5JVF9MSVNUX0hFQUQocGFnZV9kZWZlcnJlZF9saXN0KHBhZ2UpKTsNCj4+Pj4gKwlJ TklUX0xJU1RfSEVBRChwYWdlX3VuZGVydXRpbGl6ZWRfdGhwX2xpc3QocGFnZSkpOw0KPj4+PiAJ c2V0X2NvbXBvdW5kX3BhZ2VfZHRvcihwYWdlLCBUUkFOU0hVR0VfUEFHRV9EVE9SKTsNCj4+Pj4g fQ0KPj4+PiANCj4+Pj4gQEAgLTI1MjksOCArMjU5Myw3IEBAIHN0YXRpYyB2b2lkIF9fc3BsaXRf aHVnZV9wYWdlX3RhaWwoc3RydWN0IHBhZ2UgKmhlYWQsIGludCB0YWlsLA0KPj4+PiAJCQkgTFJV X0dFTl9NQVNLIHwgTFJVX1JFRlNfTUFTSykpOw0KPj4+PiANCj4+Pj4gCS8qIC0+bWFwcGluZyBp biBmaXJzdCB0YWlsIHBhZ2UgaXMgY29tcG91bmRfbWFwY291bnQgKi8NCj4+Pj4gLQlWTV9CVUdf T05fUEFHRSh0YWlsID4gMiAmJiBwYWdlX3RhaWwtPm1hcHBpbmcgIT0gVEFJTF9NQVBQSU5HLA0K Pj4+PiAtCQkJcGFnZV90YWlsKTsNCj4+Pj4gKwlWTV9CVUdfT05fUEFHRSh0YWlsID4gMyAmJiBw YWdlX3RhaWwtPm1hcHBpbmcgIT0gVEFJTF9NQVBQSU5HLCBwYWdlX3RhaWwpOw0KPj4+PiAJcGFn ZV90YWlsLT5tYXBwaW5nID0gaGVhZC0+bWFwcGluZzsNCj4+Pj4gCXBhZ2VfdGFpbC0+aW5kZXgg PSBoZWFkLT5pbmRleCArIHRhaWw7DQo+Pj4+IAlwYWdlX3RhaWwtPnByaXZhdGUgPSAwOw0KPj4+ PiBAQCAtMjczNyw2ICsyODAwLDcgQEAgaW50IHNwbGl0X2h1Z2VfcGFnZV90b19saXN0KHN0cnVj dCBwYWdlICpwYWdlLCBzdHJ1Y3QgbGlzdF9oZWFkICpsaXN0KQ0KPj4+PiAJc3RydWN0IGZvbGlv ICpmb2xpbyA9IHBhZ2VfZm9saW8ocGFnZSk7DQo+Pj4+IAlzdHJ1Y3QgZGVmZXJyZWRfc3BsaXQg KmRzX3F1ZXVlID0gZ2V0X2RlZmVycmVkX3NwbGl0X3F1ZXVlKCZmb2xpby0+cGFnZSk7DQo+Pj4+ IAlYQV9TVEFURSh4YXMsICZmb2xpby0+bWFwcGluZy0+aV9wYWdlcywgZm9saW8tPmluZGV4KTsN Cj4+Pj4gKwlzdHJ1Y3QgbGlzdF9oZWFkICp1bmRlcnV0aWxpemVkX3RocF9saXN0ID0gcGFnZV91 bmRlcnV0aWxpemVkX3RocF9saXN0KCZmb2xpby0+cGFnZSk7DQo+Pj4+IAlzdHJ1Y3QgYW5vbl92 bWEgKmFub25fdm1hID0gTlVMTDsNCj4+Pj4gCXN0cnVjdCBhZGRyZXNzX3NwYWNlICptYXBwaW5n ID0gTlVMTDsNCj4+Pj4gCWludCBleHRyYV9waW5zLCByZXQ7DQo+Pj4+IEBAIC0yODQ0LDYgKzI5 MDgsOSBAQCBpbnQgc3BsaXRfaHVnZV9wYWdlX3RvX2xpc3Qoc3RydWN0IHBhZ2UgKnBhZ2UsIHN0 cnVjdCBsaXN0X2hlYWQgKmxpc3QpDQo+Pj4+IAkJCWxpc3RfZGVsKHBhZ2VfZGVmZXJyZWRfbGlz dCgmZm9saW8tPnBhZ2UpKTsNCj4+Pj4gCQl9DQo+Pj4+IAkJc3Bpbl91bmxvY2soJmRzX3F1ZXVl LT5zcGxpdF9xdWV1ZV9sb2NrKTsNCj4+Pj4gKwkJaWYgKCFsaXN0X2VtcHR5KHVuZGVydXRpbGl6 ZWRfdGhwX2xpc3QpKQ0KPj4+PiArCQkJbGlzdF9scnVfZGVsX3BhZ2UoJmh1Z2VfbG93X3V0aWxf cGFnZV9scnUsICZmb2xpby0+cGFnZSwNCj4+Pj4gKwkJCQkJICB1bmRlcnV0aWxpemVkX3RocF9s aXN0KTsNCj4+Pj4gCQlpZiAobWFwcGluZykgew0KPj4+PiAJCQlpbnQgbnIgPSBmb2xpb19ucl9w YWdlcyhmb2xpbyk7DQo+Pj4+IA0KPj4+PiBAQCAtMjg4Niw2ICsyOTUzLDcgQEAgaW50IHNwbGl0 X2h1Z2VfcGFnZV90b19saXN0KHN0cnVjdCBwYWdlICpwYWdlLCBzdHJ1Y3QgbGlzdF9oZWFkICps aXN0KQ0KPj4+PiB2b2lkIGZyZWVfdHJhbnNodWdlX3BhZ2Uoc3RydWN0IHBhZ2UgKnBhZ2UpDQo+ Pj4+IHsNCj4+Pj4gCXN0cnVjdCBkZWZlcnJlZF9zcGxpdCAqZHNfcXVldWUgPSBnZXRfZGVmZXJy ZWRfc3BsaXRfcXVldWUocGFnZSk7DQo+Pj4+ICsJc3RydWN0IGxpc3RfaGVhZCAqdW5kZXJ1dGls aXplZF90aHBfbGlzdCA9IHBhZ2VfdW5kZXJ1dGlsaXplZF90aHBfbGlzdChwYWdlKTsNCj4+Pj4g CXVuc2lnbmVkIGxvbmcgZmxhZ3M7DQo+Pj4+IA0KPj4+PiAJc3Bpbl9sb2NrX2lycXNhdmUoJmRz X3F1ZXVlLT5zcGxpdF9xdWV1ZV9sb2NrLCBmbGFncyk7DQo+Pj4+IEBAIC0yODk0LDYgKzI5NjIs MTIgQEAgdm9pZCBmcmVlX3RyYW5zaHVnZV9wYWdlKHN0cnVjdCBwYWdlICpwYWdlKQ0KPj4+PiAJ CWxpc3RfZGVsKHBhZ2VfZGVmZXJyZWRfbGlzdChwYWdlKSk7DQo+Pj4+IAl9DQo+Pj4+IAlzcGlu X3VubG9ja19pcnFyZXN0b3JlKCZkc19xdWV1ZS0+c3BsaXRfcXVldWVfbG9jaywgZmxhZ3MpOw0K Pj4+PiArCWlmICghbGlzdF9lbXB0eSh1bmRlcnV0aWxpemVkX3RocF9saXN0KSkNCj4+Pj4gKwkJ bGlzdF9scnVfZGVsX3BhZ2UoJmh1Z2VfbG93X3V0aWxfcGFnZV9scnUsIHBhZ2UsIHVuZGVydXRp bGl6ZWRfdGhwX2xpc3QpOw0KPj4+PiArDQo+Pj4+ICsJaWYgKFBhZ2VMUlUocGFnZSkpDQo+Pj4+ ICsJCV9fZm9saW9fY2xlYXJfbHJ1X2ZsYWdzKHBhZ2VfZm9saW8ocGFnZSkpOw0KPj4+PiArDQo+ Pj4+IAlmcmVlX2NvbXBvdW5kX3BhZ2UocGFnZSk7DQo+Pj4+IH0NCj4+Pj4gDQo+Pj4+IEBAIC0y OTM0LDYgKzMwMDgsMzkgQEAgdm9pZCBkZWZlcnJlZF9zcGxpdF9odWdlX3BhZ2Uoc3RydWN0IHBh Z2UgKnBhZ2UpDQo+Pj4+IAlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZkc19xdWV1ZS0+c3BsaXRf cXVldWVfbG9jaywgZmxhZ3MpOw0KPj4+PiB9DQo+Pj4+IA0KPj4+PiArdm9pZCBhZGRfdW5kZXJ1 dGlsaXplZF90aHAoc3RydWN0IHBhZ2UgKnBhZ2UpDQo+Pj4+ICt7DQo+Pj4+ICsJVk1fQlVHX09O X1BBR0UoIVBhZ2VUcmFuc0h1Z2UocGFnZSksIHBhZ2UpOw0KPj4+IA0KPj4+IEJlY2F1c2Ugd2Ug aGF2ZW4ndCBnZXQgcmVmZXJlbmNlIG9mIHRoZSBwYWdlLCB0aGUgcGFnZSBtYXkgYmUgc3BsaXQg b3INCj4+PiBmcmVlIHVuZGVyIHVzLCBzbyBWTV9CVUdfT05fUEFHRSgpIGhlcmUgbWF5IGJlIHRy aWdnZXJlZCB3cm9uZ2x5Pw0KPj4+IA0KPj4+PiArDQo+Pj4+ICsJaWYgKFBhZ2VTd2FwQ2FjaGUo cGFnZSkpDQo+Pj4+ICsJCXJldHVybjsNCj4+Pj4gKw0KPj4+PiArCS8qDQo+Pj4+ICsJICogTmVl ZCB0byB0YWtlIGEgcmVmZXJlbmNlIG9uIHRoZSBwYWdlIHRvIHByZXZlbnQgdGhlIHBhZ2UgZnJv bSBnZXR0aW5nIGZyZWUnZCBmcm9tDQo+Pj4+ICsJICogdW5kZXIgdXMgd2hpbGUgd2UgYXJlIGFk ZGluZyB0aGUgVEhQIHRvIHRoZSBzaHJpbmtlci4NCj4+Pj4gKwkgKi8NCj4+Pj4gKwlpZiAoIWdl dF9wYWdlX3VubGVzc196ZXJvKHBhZ2UpKQ0KPj4+PiArCQlyZXR1cm47DQo+Pj4+ICsNCj4+Pj4g KwlpZiAoIWlzX2Fub25fdHJhbnNwYXJlbnRfaHVnZXBhZ2UocGFnZSkpDQo+Pj4+ICsJCWdvdG8g b3V0X3B1dDsNCj4+Pj4gKw0KPj4+PiArCWlmIChpc19odWdlX3plcm9fcGFnZShwYWdlKSkNCj4+ Pj4gKwkJZ290byBvdXRfcHV0Ow0KPj4+IA0KPj4+IGlzX2h1Z2VfemVyb19wYWdlKCkgY2hlY2sg Y2FuIGJlIGRvbmUgaW4gdGhwX3V0aWxfc2NhbigpIHRvbz8NCj4+IA0KPj4gU291bmRzIGdvb2Qu DQo+Pj4gDQo+Pj4+ICsNCj4+Pj4gKwlsb2NrX3BhZ2UocGFnZSk7DQo+Pj4+ICsNCj4+Pj4gKwlp ZiAobWVtY2dfbGlzdF9scnVfYWxsb2MocGFnZV9tZW1jZyhwYWdlKSwgJmh1Z2VfbG93X3V0aWxf cGFnZV9scnUsIEdGUF9LRVJORUwpKQ0KPj4+PiArCQlnb3RvIG91dF91bmxvY2s7DQo+Pj4+ICsN Cj4+Pj4gKwlsaXN0X2xydV9hZGRfcGFnZSgmaHVnZV9sb3dfdXRpbF9wYWdlX2xydSwgcGFnZSwg cGFnZV91bmRlcnV0aWxpemVkX3RocF9saXN0KHBhZ2UpKTsNCj4+Pj4gKw0KPj4+PiArb3V0X3Vu bG9jazoNCj4+Pj4gKwl1bmxvY2tfcGFnZShwYWdlKTsNCj4+Pj4gK291dF9wdXQ6DQo+Pj4+ICsJ cHV0X3BhZ2UocGFnZSk7DQo+Pj4+ICt9DQo+Pj4+ICsNCj4+Pj4gc3RhdGljIHVuc2lnbmVkIGxv bmcgZGVmZXJyZWRfc3BsaXRfY291bnQoc3RydWN0IHNocmlua2VyICpzaHJpbmssDQo+Pj4+IAkJ c3RydWN0IHNocmlua19jb250cm9sICpzYykNCj4+Pj4gew0KPj4+PiBAQCAtMzQ3OCw2ICszNTg1 LDkgQEAgc3RhdGljIHZvaWQgdGhwX3V0aWxfc2Nhbih1bnNpZ25lZCBsb25nIHBmbl9lbmQpDQo+ Pj4+IAkJaWYgKGJ1Y2tldCA8IDApDQo+Pj4+IAkJCWNvbnRpbnVlOw0KPj4+PiANCj4+Pj4gKwkJ aWYgKGJ1Y2tldCA8IFRIUF9VVElMX0JVQ0tFVF9OUiAtIDEpDQo+Pj4+ICsJCQlhZGRfdW5kZXJ1 dGlsaXplZF90aHAocGFnZSk7DQo+Pj4+ICsNCj4+Pj4gCQl0aHBfc2Nhbi5idWNrZXRzW2J1Y2tl dF0ubnJfdGhwcysrOw0KPj4+PiAJCXRocF9zY2FuLmJ1Y2tldHNbYnVja2V0XS5ucl96ZXJvX3Bh Z2VzICs9IChIUEFHRV9QTURfTlIgLSBudW1fdXRpbGl6ZWRfcGFnZXMpOw0KPj4+PiAJfQ0KPj4+ PiBkaWZmIC0tZ2l0IGEvbW0vbGlzdF9scnUuYyBiL21tL2xpc3RfbHJ1LmMNCj4+Pj4gaW5kZXgg YTA1ZTViZWYzYjQwLi44Y2M1NmE4NGI1NTQgMTAwNjQ0DQo+Pj4+IC0tLSBhL21tL2xpc3RfbHJ1 LmMNCj4+Pj4gKysrIGIvbW0vbGlzdF9scnUuYw0KPj4+PiBAQCAtMTQwLDYgKzE0MCwzMiBAQCBi b29sIGxpc3RfbHJ1X2FkZChzdHJ1Y3QgbGlzdF9scnUgKmxydSwgc3RydWN0IGxpc3RfaGVhZCAq aXRlbSkNCj4+Pj4gfQ0KPj4+PiBFWFBPUlRfU1lNQk9MX0dQTChsaXN0X2xydV9hZGQpOw0KPj4+ PiANCj4+Pj4gK2Jvb2wgbGlzdF9scnVfYWRkX3BhZ2Uoc3RydWN0IGxpc3RfbHJ1ICpscnUsIHN0 cnVjdCBwYWdlICpwYWdlLCBzdHJ1Y3QgbGlzdF9oZWFkICppdGVtKQ0KPj4+PiArew0KPj4+PiAr CWludCBuaWQgPSBwYWdlX3RvX25pZChwYWdlKTsNCj4+Pj4gKwlzdHJ1Y3QgbGlzdF9scnVfbm9k ZSAqbmxydSA9ICZscnUtPm5vZGVbbmlkXTsNCj4+Pj4gKwlzdHJ1Y3QgbGlzdF9scnVfb25lICps Ow0KPj4+PiArCXN0cnVjdCBtZW1fY2dyb3VwICptZW1jZzsNCj4+Pj4gKwl1bnNpZ25lZCBsb25n IGZsYWdzOw0KPj4+PiArDQo+Pj4+ICsJc3Bpbl9sb2NrX2lycXNhdmUoJm5scnUtPmxvY2ssIGZs YWdzKTsNCj4+Pj4gKwlpZiAobGlzdF9lbXB0eShpdGVtKSkgew0KPj4+PiArCQltZW1jZyA9IHBh Z2VfbWVtY2cocGFnZSk7DQo+Pj4+ICsJCWwgPSBsaXN0X2xydV9mcm9tX21lbWNnX2lkeChscnUs IG5pZCwgbWVtY2dfa21lbV9pZChtZW1jZykpOw0KPj4+PiArCQlsaXN0X2FkZF90YWlsKGl0ZW0s ICZsLT5saXN0KTsNCj4+Pj4gKwkJLyogU2V0IHNocmlua2VyIGJpdCBpZiB0aGUgZmlyc3QgZWxl bWVudCB3YXMgYWRkZWQgKi8NCj4+Pj4gKwkJaWYgKCFsLT5ucl9pdGVtcysrKQ0KPj4+PiArCQkJ c2V0X3Nocmlua2VyX2JpdChtZW1jZywgbmlkLA0KPj4+PiArCQkJCQkgbHJ1X3Nocmlua2VyX2lk KGxydSkpOw0KPj4+PiArCQlubHJ1LT5ucl9pdGVtcysrOw0KPj4+PiArCQlzcGluX3VubG9ja19p cnFyZXN0b3JlKCZubHJ1LT5sb2NrLCBmbGFncyk7DQo+Pj4+ICsJCXJldHVybiB0cnVlOw0KPj4+ PiArCX0NCj4+Pj4gKwlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZubHJ1LT5sb2NrLCBmbGFncyk7 DQo+Pj4+ICsJcmV0dXJuIGZhbHNlOw0KPj4+PiArfQ0KPj4+PiArRVhQT1JUX1NZTUJPTF9HUEwo bGlzdF9scnVfYWRkX3BhZ2UpOw0KPj4+PiArDQo+Pj4gDQo+Pj4gSXQgYXBwZWFycyB0aGF0IG9u bHkgMiBsaW5lcyBhcmUgZGlmZmVyZW50IGZyb20gbGlzdF9scnVfYWRkKCkuICBJcyBpdA0KPj4+ IHBvc3NpYmxlIGZvciB1cyB0byBzaGFyZSBjb2RlPyAgRm9yIGV4YW1wbGUsIGFkZCBhbm90aGVy IGZsYWcgZm9yDQo+Pj4gcGFnZV9tZW1jZygpIGNhc2U/DQo+PiANCj4+IEkgYmVsaWV2ZSB0aGVy ZSBhcmUgNCBsaW5lcy4gVGhlIHBhZ2VfdG9fbmlkKHBhZ2UpIGFuZCB0aGUgc3Bpbl9sb2NrX2ly cXNhdmUvcmVzdG9yZS4gDQo+PiBJdCB3YXMgaW1wbGVtZW50ZWQgdGhpcyB3YXkgYXMgd2UgZm91 bmQgd2UgbmVlZGVkIHRvIHRha2UgYSBwYWdlIGFzIGEgcGFyYW1ldGVyIGFuZCBvYnRhaW4gdGhl IG5vZGUgaWQgZnJvbQ0KPj4gdGhlIHBhZ2UuIFRoaXMgaXMgYmVjYXVzZSB0aGUgVEhQIGlzIG5v dCBuZWNlc3NhcmlseSBhIHNsYWIgb2JqZWN0LCBhcyB0aGUgbGlzdF9scnVfYWRkL2RlbGV0ZSBj b2RlIGFzc3VtZXMuIA0KPj4gDQo+PiBBbHNvLCB0aGVyZSBpcyBhIHBvdGVudGlhbCBkZWFkbG9j ayB3aGVuIHNwbGl0X2h1Z2VfcGFnZSBpcyBjYWxsZWQgZnJvbSByZWNsYWltIGFuZCB3aGVuIHNw bGl0X2h1Z2VfcGFnZSBpcyBjYWxsZWQgDQo+PiBieSB0aGUgVEhQIFNocmlua2VyLCB3aGljaCBp cyB3aHkgd2UgbmVlZCBpcnFzYXZlL3Jlc3RvcmUuIA0KPiANCj4gQ2FuIHlvdSBwcm92aWRlIG1v cmUgZGV0YWlscyBvbiB0aGlzPyAgSWYgaXQncyBuZWNlc3NhcnksIEkgdGhpbmsgaXQgc2hvdWxk IGJlIE9LIHRvIHVzZSBpcnFzYXZlL3Jlc3RvcmUuDQoNClRoZXJlIGlzIGFuIEFCQkEgZGVhZGxv Y2sgYmV0d2VlbiByZWNsYWltIGFuZCB0aGUgVEhQIHNocmlua2VyIHdoZXJlIG9uZSB3YWl0cyBm b3IgdGhlIHBhZ2UgbG9jayBhbmQgdGhlIG90aGVyIHdhaXRzIGZvciB0aGUgDQpsaXN0X2xydSBs b2NrLiBUaGVyZSBpcyBhbm90aGVyIGRlYWRsb2NrIHdoZXJlIGZyZWVfdHJhbnNodWdlX3BhZ2Ug aW50ZXJydXB0cyB0aGUgVEhQIHNocmlua2VyIHdoaWxlIGl0IGlzIHNwbGl0dGluZyBUSFBzICho YXMgdGhlDQpsaXN0X2xydSBsb2NrKSBhbmQgdGhlbiBhY3F1aXJlcyB0aGUgc2FtZSBsaXN0X2xy dSBsb2NrIChzZWxmIGRlYWRsb2NrKS4gVGhlc2UgaGFwcGVuZWQgaW4gb3VyIHByb2QgZXhwZXJp bWVudHMuIA0KSSBkbyBiZWxpZXZlIGlycXNhdmUvcmVzdG9yZSBpcyBuZWNlc3NhcnkuIA0KDQo+ IA0KPj4gSSB0aG91Z2ggdGhpcyB3b3VsZCBiZSBjbGVhbmVyIHRoYW4gYXR0ZW1wdGluZyB0byBz aGFyZWQgY29kZSB3aXRoIGxpc3RfbHJ1X2FkZC9kZWxldGUuIE9ubHkgdGhlIHNocmlua2VyIG1h a2VzIHVzZSBvZiB0aGlzLiANCj4+IEFsbCBvdGhlciB1c2UgY2FzZXMgYXNzdW1lIHNsYWIgb2Jq ZWN0cy4NCj4gDQo+IE5vdCBvbmx5IGZvciBzbGFiIG9iamVjdHMgbm93LiAgVGhlIG9yaWdpbmFs IGNvZGUgd29ya3MgZm9yIHNsYWIgYW5kDQo+IG5vcm1hbCBwYWdlLiAgV2hpY2ggaXMgY29udHJv bGxlZCBieSBsaXN0X2xydS0+bWVtY2dfYXdhcmUuICBZb3UgY2FuIGFkZA0KPiBhbm90aGVyIGZs YWcgZm9yIHlvdXIgbmV3IHVzZSBjYXNlLCBvciByZWZhY3RvciBpdCB0byB1c2UgYSBmdW5jdGlv bg0KPiBwb2ludGVyLg0KPiANCj4gQmVzdCBSZWdhcmRzLA0KPiBIdWFuZywgWWluZw0KDQpJ4oCZ bGwgdGFrZSBhIGxvb2sgYXQgdGhpcyB0b21vcnJvdyBhbmQgZ2V0IGJhY2sgdG8geW91LiBUaGFu a3MgZm9yIHRoZSBzdWdnZXN0aW9uISANCj4gDQo+Pj4gDQo+Pj4+IGJvb2wgbGlzdF9scnVfZGVs KHN0cnVjdCBsaXN0X2xydSAqbHJ1LCBzdHJ1Y3QgbGlzdF9oZWFkICppdGVtKQ0KPj4+PiB7DQo+ Pj4+IAlpbnQgbmlkID0gcGFnZV90b19uaWQodmlydF90b19wYWdlKGl0ZW0pKTsNCj4+Pj4gQEAg LTE2MCw2ICsxODYsMjkgQEAgYm9vbCBsaXN0X2xydV9kZWwoc3RydWN0IGxpc3RfbHJ1ICpscnUs IHN0cnVjdCBsaXN0X2hlYWQgKml0ZW0pDQo+Pj4+IH0NCj4+Pj4gRVhQT1JUX1NZTUJPTF9HUEwo bGlzdF9scnVfZGVsKTsNCj4+Pj4gDQo+Pj4+ICtib29sIGxpc3RfbHJ1X2RlbF9wYWdlKHN0cnVj dCBsaXN0X2xydSAqbHJ1LCBzdHJ1Y3QgcGFnZSAqcGFnZSwgc3RydWN0IGxpc3RfaGVhZCAqaXRl bSkNCj4+Pj4gK3sNCj4+Pj4gKwlpbnQgbmlkID0gcGFnZV90b19uaWQocGFnZSk7DQo+Pj4+ICsJ c3RydWN0IGxpc3RfbHJ1X25vZGUgKm5scnUgPSAmbHJ1LT5ub2RlW25pZF07DQo+Pj4+ICsJc3Ry dWN0IGxpc3RfbHJ1X29uZSAqbDsNCj4+Pj4gKwlzdHJ1Y3QgbWVtX2Nncm91cCAqbWVtY2c7DQo+ Pj4+ICsJdW5zaWduZWQgbG9uZyBmbGFnczsNCj4+Pj4gKw0KPj4+PiArCXNwaW5fbG9ja19pcnFz YXZlKCZubHJ1LT5sb2NrLCBmbGFncyk7DQo+Pj4+ICsJaWYgKCFsaXN0X2VtcHR5KGl0ZW0pKSB7 DQo+Pj4+ICsJCW1lbWNnID0gcGFnZV9tZW1jZyhwYWdlKTsNCj4+Pj4gKwkJbCA9IGxpc3RfbHJ1 X2Zyb21fbWVtY2dfaWR4KGxydSwgbmlkLCBtZW1jZ19rbWVtX2lkKG1lbWNnKSk7DQo+Pj4+ICsJ CWxpc3RfZGVsX2luaXQoaXRlbSk7DQo+Pj4+ICsJCWwtPm5yX2l0ZW1zLS07DQo+Pj4+ICsJCW5s cnUtPm5yX2l0ZW1zLS07DQo+Pj4+ICsJCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJm5scnUtPmxv Y2ssIGZsYWdzKTsNCj4+Pj4gKwkJcmV0dXJuIHRydWU7DQo+Pj4+ICsJfQ0KPj4+PiArCXNwaW5f dW5sb2NrX2lycXJlc3RvcmUoJm5scnUtPmxvY2ssIGZsYWdzKTsNCj4+Pj4gKwlyZXR1cm4gZmFs c2U7DQo+Pj4+ICt9DQo+Pj4+ICtFWFBPUlRfU1lNQk9MX0dQTChsaXN0X2xydV9kZWxfcGFnZSk7 DQo+Pj4+ICsNCj4+Pj4gdm9pZCBsaXN0X2xydV9pc29sYXRlKHN0cnVjdCBsaXN0X2xydV9vbmUg Kmxpc3QsIHN0cnVjdCBsaXN0X2hlYWQgKml0ZW0pDQo+Pj4+IHsNCj4+Pj4gCWxpc3RfZGVsX2lu aXQoaXRlbSk7DQo+Pj4+IGRpZmYgLS1naXQgYS9tbS9wYWdlX2FsbG9jLmMgYi9tbS9wYWdlX2Fs bG9jLmMNCj4+Pj4gaW5kZXggYWMyYzlmMTJhN2IyLi40NjhlYWFhZGU3ZmUgMTAwNjQ0DQo+Pj4+ IC0tLSBhL21tL3BhZ2VfYWxsb2MuYw0KPj4+PiArKysgYi9tbS9wYWdlX2FsbG9jLmMNCj4+Pj4g QEAgLTEzMzUsNiArMTMzNSwxMiBAQCBzdGF0aWMgaW50IGZyZWVfdGFpbF9wYWdlc19jaGVjayhz dHJ1Y3QgcGFnZSAqaGVhZF9wYWdlLCBzdHJ1Y3QgcGFnZSAqcGFnZSkNCj4+Pj4gCQkgKiBkZWZl cnJlZF9saXN0Lm5leHQgLS0gaWdub3JlIHZhbHVlLg0KPj4+PiAJCSAqLw0KPj4+PiAJCWJyZWFr Ow0KPj4+PiArCWNhc2UgMzoNCj4+Pj4gKwkJLyoNCj4+Pj4gKwkJICogdGhlIHRoaXJkIHRhaWwg cGFnZTogLT5tYXBwaW5nIGlzDQo+Pj4+ICsJCSAqIHVuZGVydXRpbGl6ZWRfdGhwX2xpc3QubmV4 dCAtLSBpZ25vcmUgdmFsdWUuDQo+Pj4+ICsJCSAqLw0KPj4+PiArCQlicmVhazsNCj4+Pj4gCWRl ZmF1bHQ6DQo+Pj4+IAkJaWYgKHBhZ2UtPm1hcHBpbmcgIT0gVEFJTF9NQVBQSU5HKSB7DQo+Pj4+ IAkJCWJhZF9wYWdlKHBhZ2UsICJjb3JydXB0ZWQgbWFwcGluZyBpbiB0YWlsIHBhZ2UiKTsNCj4+ PiANCj4+PiBCZXN0IFJlZ2FyZHMsDQo+Pj4gSHVhbmcsIFlpbmcNCg0K