From mboxrd@z Thu Jan  1 00:00:00 1970
Return-Path: <dev-bounces@dpdk.org>
Received: from dpdk.org (dpdk.org [92.243.14.124])
	by inbox.dpdk.org (Postfix) with ESMTP id 35860A2EFC
	for <public@inbox.dpdk.org>; Thu, 19 Sep 2019 08:17:38 +0200 (CEST)
Received: from [92.243.14.124] (localhost [127.0.0.1])
	by dpdk.org (Postfix) with ESMTP id 7AA441E8B7;
	Thu, 19 Sep 2019 08:17:37 +0200 (CEST)
Received: from EUR01-VE1-obe.outbound.protection.outlook.com
 (mail-eopbgr140082.outbound.protection.outlook.com [40.107.14.82])
 by dpdk.org (Postfix) with ESMTP id EC1E31E886
 for <dev@dpdk.org>; Thu, 19 Sep 2019 08:17:35 +0200 (CEST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; 
 s=selector2-armh-onmicrosoft-com;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=WDlN4powndGgE77vXwidE0sV0T+z9mVCZdZIB7t5iKE=;
 b=jLm++LAvSWL5MQ33jYtMBFfyBuC3P/IpqTsoRsGqPh5ssodtuloIwUdzmARcbjKCiq0kpZ5pQLTs4zMROFPnK+zmdNz6en510c1VXjIpFF2xtwZ6BLW0fY05w1S+NPxfeDRixM6ge0ftXuGgLNEKnX/clVaZxRvSNDtohts2sYg=
Received: from AM4PR08CA0055.eurprd08.prod.outlook.com (2603:10a6:205:2::26)
 by DB7PR08MB3196.eurprd08.prod.outlook.com (2603:10a6:5:26::12) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2263.17; Thu, 19 Sep
 2019 06:17:32 +0000
Received: from DB5EUR03FT053.eop-EUR03.prod.protection.outlook.com
 (2a01:111:f400:7e0a::204) by AM4PR08CA0055.outlook.office365.com
 (2603:10a6:205:2::26) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2284.18 via Frontend
 Transport; Thu, 19 Sep 2019 06:17:31 +0000
Authentication-Results: spf=temperror (sender IP is 63.35.35.123)
 smtp.mailfrom=arm.com; dpdk.org; dkim=pass (signature was verified)
 header.d=armh.onmicrosoft.com;dpdk.org; dmarc=none action=none
 header.from=arm.com;
Received-SPF: TempError (protection.outlook.com: error in processing during
 lookup of arm.com: DNS Timeout)
Received: from 64aa7808-outbound-1.mta.getcheckrecipient.com (63.35.35.123) by
 DB5EUR03FT053.mail.protection.outlook.com (10.152.21.119) with
 Microsoft SMTP
 Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.2284.20 via Frontend Transport; Thu, 19 Sep 2019 06:17:30 +0000
Received: ("Tessian outbound 5061e1b5386c:v31");
 Thu, 19 Sep 2019 06:17:28 +0000
X-CR-MTA-TID: 64aa7808
Received: from 2d56be819b37.2 (ip-172-16-0-2.eu-west-1.compute.internal
 [104.47.6.52]) by 64aa7808-outbound-1.mta.getcheckrecipient.com id
 CC1B04D9-8ED0-4AC7-B4A3-DC9776AB8F78.1; 
 Thu, 19 Sep 2019 06:17:23 +0000
Received: from EUR02-VE1-obe.outbound.protection.outlook.com
 (mail-ve1eur02lp2052.outbound.protection.outlook.com [104.47.6.52])
 by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id 2d56be819b37.2
 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-SHA384);
 Thu, 19 Sep 2019 06:17:23 +0000
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
 b=JtqU3Bmj9t8RQaTdP9zMkU+f/kYyGnlhTiAceOsPy9OOa0OLJSd5mMlQYKUNPEp24sFFNMlp2FAK0k8jZADF6a09AcYHomkLkfgZsWH/bWtz457Ng70nl/94iqlkYK9N19tGAqbcyGsXa2XGa7xjEBZJBsW8tq+svkBoN1FZ83tLufOI8rlS8h33bldid2ufM8MYMT/3DEAsqmmn7PyBq23CRTL12jFDogmys0QXDxVD20NKap6G9ui1bIool7XAlkeyep1vveWLmGi8PaKg6cDGjm1IAPny1VVcVXq9FzQHtcF3CUi2XA1fafmnjPhjc146XU9XsQC4HqvS7HRH3Q==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; 
 s=arcselector9901;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=WDlN4powndGgE77vXwidE0sV0T+z9mVCZdZIB7t5iKE=;
 b=H6V8Iflg39tI4bwgJEUlO7js1LLm6pGW5JIGFixpVAEw2fp4dDqp7tSZ4h5Ufkg8ce8KsZVFomkbVLx9rt+uA2ulplp9i6ltduOSl76zAScORdKWSkCAh3Yqf0w+HvaH5MtE/Ve7cicV6P4MPoDFAjrO0lbGMjtg1WHE7dwmz3Hn7VcWuS6YVOnoVmn5Suf9mdjGByIHl8Ar+rl0Q3yMmy5D5j5auK+yaJRs/akU0djUoTS8ZSx3d6CidmzieOcms5kJ2a9wr1DCX2dYEa4BaG+QOv+Iph8q32htBcOwhqFQ0JDu5vxRYXByH/+16lJhtsZ+hkdPKDqmXBLkE4WD5Q==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass
 header.d=arm.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; 
 s=selector2-armh-onmicrosoft-com;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=WDlN4powndGgE77vXwidE0sV0T+z9mVCZdZIB7t5iKE=;
 b=jLm++LAvSWL5MQ33jYtMBFfyBuC3P/IpqTsoRsGqPh5ssodtuloIwUdzmARcbjKCiq0kpZ5pQLTs4zMROFPnK+zmdNz6en510c1VXjIpFF2xtwZ6BLW0fY05w1S+NPxfeDRixM6ge0ftXuGgLNEKnX/clVaZxRvSNDtohts2sYg=
Received: from AM0PR08MB3986.eurprd08.prod.outlook.com (20.178.118.90) by
 AM0PR08MB3619.eurprd08.prod.outlook.com (20.177.111.28) with Microsoft SMTP
 Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.2263.26; Thu, 19 Sep 2019 06:17:21 +0000
Received: from AM0PR08MB3986.eurprd08.prod.outlook.com
 ([fe80::8194:f229:b0d2:b5df]) by AM0PR08MB3986.eurprd08.prod.outlook.com
 ([fe80::8194:f229:b0d2:b5df%7]) with mapi id 15.20.2284.009; Thu, 19 Sep 2019
 06:17:21 +0000
From: "Ruifeng Wang (Arm Technology China)" <Ruifeng.Wang@arm.com>
To: "Medvedkin, Vladimir" <vladimir.medvedkin@intel.com>,
 "bruce.richardson@intel.com" <bruce.richardson@intel.com>,
 "olivier.matz@6wind.com" <olivier.matz@6wind.com>
CC: "dev@dpdk.org" <dev@dpdk.org>, "stephen@networkplumber.org"
 <stephen@networkplumber.org>, "konstantin.ananyev@intel.com"
 <konstantin.ananyev@intel.com>, "Gavin Hu (Arm Technology China)"
 <Gavin.Hu@arm.com>, Honnappa Nagarahalli <Honnappa.Nagarahalli@arm.com>,
 Dharmik Thakkar <Dharmik.Thakkar@arm.com>, nd <nd@arm.com>, nd <nd@arm.com>
Thread-Topic: [PATCH v2 3/6] lib/lpm: integrate RCU QSBR
Thread-Index: AQHVZJf4BdmcQ0naVEuDz+uBndkYxKcxr4KAgADqMlA=
Date: Thu, 19 Sep 2019 06:17:20 +0000
Message-ID: <AM0PR08MB3986A733BBC3E056F7C3134F9E890@AM0PR08MB3986.eurprd08.prod.outlook.com>
References: <20190822063457.41596-1-ruifeng.wang@arm.com>
 <20190906094534.36060-1-ruifeng.wang@arm.com>
 <20190906094534.36060-4-ruifeng.wang@arm.com>
 <47636dc5-a4bd-82b7-ae33-064e8f7d931d@intel.com>
In-Reply-To: <47636dc5-a4bd-82b7-ae33-064e8f7d931d@intel.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-ts-tracking-id: ec68fbbc-271c-4278-8371-d1245bca7b06.0
x-checkrecipientchecked: true
Authentication-Results-Original: spf=none (sender IP is )
 smtp.mailfrom=Ruifeng.Wang@arm.com; 
x-originating-ip: [113.29.88.7]
x-ms-publictraffictype: Email
X-MS-Office365-Filtering-Correlation-Id: 7006aeb7-fa02-4697-c597-08d73cc90d35
X-MS-Office365-Filtering-HT: Tenant
X-Microsoft-Antispam-Untrusted: BCL:0; PCL:0;
 RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(7168020)(4627221)(201703031133081)(201702281549075)(8990200)(5600167)(711020)(4605104)(1401327)(4618075)(2017052603328)(7193020);
 SRVR:AM0PR08MB3619; 
X-MS-TrafficTypeDiagnostic: AM0PR08MB3619:|AM0PR08MB3619:|DB7PR08MB3196:
x-ms-exchange-transport-forked: True
X-Microsoft-Antispam-PRVS: <DB7PR08MB319637DEC1D7C66D27613F269E890@DB7PR08MB3196.eurprd08.prod.outlook.com>
x-checkrecipientrouted: true
x-ms-oob-tlc-oobclassifiers: OLM:10000;OLM:10000;
x-forefront-prvs: 016572D96D
X-Forefront-Antispam-Report-Untrusted: SFV:NSPM;
 SFS:(10009020)(4636009)(396003)(39860400002)(376002)(136003)(366004)(346002)(13464003)(189003)(199004)(6246003)(6506007)(3846002)(14454004)(9686003)(66066001)(486006)(2906002)(256004)(55016002)(52536014)(305945005)(71200400001)(71190400001)(186003)(74316002)(14444005)(478600001)(7736002)(55236004)(102836004)(6116002)(446003)(11346002)(476003)(110136005)(4326008)(66946007)(26005)(30864003)(53546011)(99286004)(66476007)(7696005)(66556008)(64756008)(76176011)(66446008)(5660300002)(25786009)(76116006)(229853002)(2201001)(86362001)(316002)(6436002)(81166006)(2501003)(81156014)(33656002)(8676002)(54906003)(8936002);
 DIR:OUT; SFP:1101; SCL:1; SRVR:AM0PR08MB3619;
 H:AM0PR08MB3986.eurprd08.prod.outlook.com; FPR:; SPF:None; LANG:en;
 PTR:InfoNoRecords; MX:1; A:1; 
received-spf: None (protection.outlook.com: arm.com does not designate
 permitted sender hosts)
X-MS-Exchange-SenderADCheck: 1
X-Microsoft-Antispam-Message-Info-Original: cMMo8YhCWSWB39/g3NQ6GWtRTOd6TpPppNt0S944O+MXCtRhoKE9AGWrLJeyl/k2o41jyIbnRrKBHO2hfzaRA8U/13LVW+GA7gMU4MjsovzUglK8CM2hhtC48P813x4zaT6LzVGiWDa5ZYytd7+ALsEqRn9i7Ap/VNNDlwtkKf/ZrOnw1liCfwl1MPgoUCSUvCCG1Is5FQt0kRhF2P/wLV35Svq/sgy0yoIjzAIbRAnrQMFIJbib+n310opGnoW+a5XvWWWQgGeJuFSboBDmKJuFrSsZwemqZYqIdVn0g2KbybL2FGvUJGCTOVD9huFiYVmycCRmoY+PUksqw1i5rysMIMcMi0k7DgiaJqOi2Kt7kkDYPDfcAku3xP3kl0ZzMgKYNQGKgOdUoF0zpVXVbZaF9P9dI1AOI6Hcrw+SaYk=
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
MIME-Version: 1.0
X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM0PR08MB3619
Original-Authentication-Results: spf=none (sender IP is )
 smtp.mailfrom=Ruifeng.Wang@arm.com; 
X-EOPAttributedMessage: 0
X-MS-Exchange-Transport-CrossTenantHeadersStripped: DB5EUR03FT053.eop-EUR03.prod.protection.outlook.com
X-Forefront-Antispam-Report: CIP:63.35.35.123; IPV:CAL; SCL:-1; CTRY:IE;
 EFV:NLI; SFV:NSPM;
 SFS:(10009020)(4636009)(396003)(136003)(376002)(346002)(39860400002)(199004)(189003)(13464003)(54906003)(7696005)(81156014)(110136005)(478600001)(305945005)(14454004)(2201001)(22756006)(6246003)(33656002)(9686003)(126002)(7736002)(316002)(6116002)(3846002)(25786009)(186003)(26005)(2906002)(53546011)(486006)(6506007)(2501003)(55016002)(74316002)(229853002)(76176011)(102836004)(99286004)(76130400001)(336012)(356004)(5660300002)(8936002)(26826003)(2486003)(476003)(81166006)(23676004)(8676002)(47776003)(66066001)(63350400001)(86362001)(436003)(30864003)(4326008)(14444005)(446003)(70586007)(11346002)(70206006)(52536014)(50466002);
 DIR:OUT; SFP:1101; SCL:1; SRVR:DB7PR08MB3196;
 H:64aa7808-outbound-1.mta.getcheckrecipient.com; FPR:; SPF:TempError; LANG:en;
 PTR:ec2-63-35-35-123.eu-west-1.compute.amazonaws.com; A:1; MX:1; 
X-MS-Office365-Filtering-Correlation-Id-Prvs: 0fc9cdc9-a8e6-4bd2-f3b4-08d73cc907ab
X-Microsoft-Antispam: BCL:0; PCL:0;
 RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600167)(710020)(711020)(4605104)(1401327)(4618075)(2017052603328)(7193020);
 SRVR:DB7PR08MB3196; 
NoDisclaimer: True
X-Forefront-PRVS: 016572D96D
X-Microsoft-Antispam-Message-Info: AhCJzOaN+d2nVDq9H7CUiUHbC2Ip876FUhHLBC39lJDBHZbnbfyUHYL5yKSnja/3crW4cfNihZl3w4bmnG09N9WPo59YNhO9cIW0gWfdZLzC+R37KEbvcq969AOip5Any1gb5SW4IO7REh/tsZjUXPpMLchLqizneuubXkqQPUUVSGa0whQQVe0xBywbmE187JBAleeTb3HUNUVxebLrDZ/kQv97ztjb8f5KSEkBn9TgksTHzYDRPQwyhhmPwBtk/8flqGVCRzODjqehrrt+p5TaK+tksmSmWr7pg3pWn5vSX99aJCL75vLl/DlCgKIc5+euqmkaIBEjs5OPq2OuKWxIRVj1v/AHq3IYZ9OPCvURGg3SPKh5SiOBHUx9E1Xv4agJxzL7KR5JLY4MAq9wyGomVMPApmHlt6EE7N/mb20=
X-OriginatorOrg: arm.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 19 Sep 2019 06:17:30.3448 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 7006aeb7-fa02-4697-c597-08d73cc90d35
X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d; Ip=[63.35.35.123];
 Helo=[64aa7808-outbound-1.mta.getcheckrecipient.com]
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB7PR08MB3196
Subject: Re: [dpdk-dev] [PATCH v2 3/6] lib/lpm: integrate RCU QSBR
X-BeenThere: dev@dpdk.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: DPDK patches and discussions <dev.dpdk.org>
List-Unsubscribe: <https://mails.dpdk.org/options/dev>,
 <mailto:dev-request@dpdk.org?subject=unsubscribe>
List-Archive: <http://mails.dpdk.org/archives/dev/>
List-Post: <mailto:dev@dpdk.org>
List-Help: <mailto:dev-request@dpdk.org?subject=help>
List-Subscribe: <https://mails.dpdk.org/listinfo/dev>,
 <mailto:dev-request@dpdk.org?subject=subscribe>
Errors-To: dev-bounces@dpdk.org
Sender: "dev" <dev-bounces@dpdk.org>

SGkgVmxhZGltaXIsDQoNClRoYW5rcyBmb3IgeW91ciByZXZpZXcgYW5kICB0aGUgY29tbWVudHMu
DQpBbGwgdGhlIGNvbW1lbnRzIHdpbGwgYmUgYWRkcmVzc2VkIGluIG5leHQgdmVyc2lvbi4NCg0K
L1J1aWZlbmcNCg0KPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBNZWR2ZWRr
aW4sIFZsYWRpbWlyIDx2bGFkaW1pci5tZWR2ZWRraW5AaW50ZWwuY29tPg0KPiBTZW50OiBUaHVy
c2RheSwgU2VwdGVtYmVyIDE5LCAyMDE5IDAwOjE2DQo+IFRvOiBSdWlmZW5nIFdhbmcgKEFybSBU
ZWNobm9sb2d5IENoaW5hKSA8UnVpZmVuZy5XYW5nQGFybS5jb20+Ow0KPiBicnVjZS5yaWNoYXJk
c29uQGludGVsLmNvbTsgb2xpdmllci5tYXR6QDZ3aW5kLmNvbQ0KPiBDYzogZGV2QGRwZGsub3Jn
OyBzdGVwaGVuQG5ldHdvcmtwbHVtYmVyLm9yZzsNCj4ga29uc3RhbnRpbi5hbmFueWV2QGludGVs
LmNvbTsgR2F2aW4gSHUgKEFybSBUZWNobm9sb2d5IENoaW5hKQ0KPiA8R2F2aW4uSHVAYXJtLmNv
bT47IEhvbm5hcHBhIE5hZ2FyYWhhbGxpDQo+IDxIb25uYXBwYS5OYWdhcmFoYWxsaUBhcm0uY29t
PjsgRGhhcm1payBUaGFra2FyDQo+IDxEaGFybWlrLlRoYWtrYXJAYXJtLmNvbT47IG5kIDxuZEBh
cm0uY29tPg0KPiBTdWJqZWN0OiBSZTogW1BBVENIIHYyIDMvNl0gbGliL2xwbTogaW50ZWdyYXRl
IFJDVSBRU0JSDQo+IA0KPiBIaSBSdWlmZW5nLA0KPiANCj4gVGhhbmtzIGZvciB0aGlzIHBhdGNo
c2VyaWVzLCBzZWUgY29tbWVudHMgYmVsb3cuDQo+IA0KPiBPbiAwNi8wOS8yMDE5IDEwOjQ1LCBS
dWlmZW5nIFdhbmcgd3JvdGU6DQo+ID4gQ3VycmVudGx5LCB0aGUgdGJsOCBncm91cCBpcyBmcmVl
ZCBldmVuIHRob3VnaCB0aGUgcmVhZGVycyBtaWdodCBiZQ0KPiA+IHVzaW5nIHRoZSB0Ymw4IGdy
b3VwIGVudHJpZXMuIFRoZSBmcmVlZCB0Ymw4IGdyb3VwIGNhbiBiZSByZWFsbG9jYXRlZA0KPiA+
IHF1aWNrbHkuIFRoaXMgcmVzdWx0cyBpbiBpbmNvcnJlY3QgbG9va3VwIHJlc3VsdHMuDQo+ID4N
Cj4gPiBSQ1UgUVNCUiBwcm9jZXNzIGlzIGludGVncmF0ZWQgZm9yIHNhZmUgdGJsOCBncm91cCBy
ZWNsYWltLg0KPiA+IFJlZmVyIHRvIFJDVSBkb2N1bWVudGF0aW9uIHRvIHVuZGVyc3RhbmQgdmFy
aW91cyBhc3BlY3RzIG9mDQo+ID4gaW50ZWdyYXRpbmcgUkNVIGxpYnJhcnkgaW50byBvdGhlciBs
aWJyYXJpZXMuDQo+ID4NCj4gPiBTaWduZWQtb2ZmLWJ5OiBSdWlmZW5nIFdhbmcgPHJ1aWZlbmcu
d2FuZ0Bhcm0uY29tPg0KPiA+IFJldmlld2VkLWJ5OiBIb25uYXBwYSBOYWdhcmFoYWxsaSA8aG9u
bmFwcGEubmFnYXJhaGFsbGlAYXJtLmNvbT4NCj4gPiAtLS0NCj4gPiAgIGxpYi9saWJydGVfbHBt
L01ha2VmaWxlICAgICAgICAgICAgfCAgIDMgKy0NCj4gPiAgIGxpYi9saWJydGVfbHBtL21lc29u
LmJ1aWxkICAgICAgICAgfCAgIDIgKw0KPiA+ICAgbGliL2xpYnJ0ZV9scG0vcnRlX2xwbS5jICAg
ICAgICAgICB8IDIyMyArKysrKysrKysrKysrKysrKysrKysrKysrKystLQ0KPiA+ICAgbGliL2xp
YnJ0ZV9scG0vcnRlX2xwbS5oICAgICAgICAgICB8ICAyMiArKysNCj4gPiAgIGxpYi9saWJydGVf
bHBtL3J0ZV9scG1fdmVyc2lvbi5tYXAgfCAgIDYgKw0KPiA+ICAgbGliL21lc29uLmJ1aWxkICAg
ICAgICAgICAgICAgICAgICB8ICAgMyArLQ0KPiA+ICAgNiBmaWxlcyBjaGFuZ2VkLCAyNDQgaW5z
ZXJ0aW9ucygrKSwgMTUgZGVsZXRpb25zKC0pDQo+ID4NCj4gPiBkaWZmIC0tZ2l0IGEvbGliL2xp
YnJ0ZV9scG0vTWFrZWZpbGUgYi9saWIvbGlicnRlX2xwbS9NYWtlZmlsZSBpbmRleA0KPiA+IGE3
OTQ2YTFjNS4uY2E5ZTE2MzEyIDEwMDY0NA0KPiA+IC0tLSBhL2xpYi9saWJydGVfbHBtL01ha2Vm
aWxlDQo+ID4gKysrIGIvbGliL2xpYnJ0ZV9scG0vTWFrZWZpbGUNCj4gPiBAQCAtNiw5ICs2LDEw
IEBAIGluY2x1ZGUgJChSVEVfU0RLKS9tay9ydGUudmFycy5taw0KPiA+ICAgIyBsaWJyYXJ5IG5h
bWUNCj4gPiAgIExJQiA9IGxpYnJ0ZV9scG0uYQ0KPiA+DQo+ID4gK0NGTEFHUyArPSAtREFMTE9X
X0VYUEVSSU1FTlRBTF9BUEkNCj4gPiAgIENGTEFHUyArPSAtTzMNCj4gPiAgIENGTEFHUyArPSAk
KFdFUlJPUl9GTEFHUykgLUkkKFNSQ0RJUikgLUxETElCUyArPSAtbHJ0ZV9lYWwNCj4gPiAtbHJ0
ZV9oYXNoDQo+ID4gK0xETElCUyArPSAtbHJ0ZV9lYWwgLWxydGVfaGFzaCAtbHJ0ZV9yY3UNCj4g
Pg0KPiA+ICAgRVhQT1JUX01BUCA6PSBydGVfbHBtX3ZlcnNpb24ubWFwDQo+ID4NCj4gPiBkaWZm
IC0tZ2l0IGEvbGliL2xpYnJ0ZV9scG0vbWVzb24uYnVpbGQgYi9saWIvbGlicnRlX2xwbS9tZXNv
bi5idWlsZA0KPiA+IGluZGV4IGE1MTc2ZDhhZS4uMTlhMzUxMDdmIDEwMDY0NA0KPiA+IC0tLSBh
L2xpYi9saWJydGVfbHBtL21lc29uLmJ1aWxkDQo+ID4gKysrIGIvbGliL2xpYnJ0ZV9scG0vbWVz
b24uYnVpbGQNCj4gPiBAQCAtMiw5ICsyLDExIEBADQo+ID4gICAjIENvcHlyaWdodChjKSAyMDE3
IEludGVsIENvcnBvcmF0aW9uDQo+ID4NCj4gPiAgIHZlcnNpb24gPSAyDQo+ID4gK2FsbG93X2V4
cGVyaW1lbnRhbF9hcGlzID0gdHJ1ZQ0KPiA+ICAgc291cmNlcyA9IGZpbGVzKCdydGVfbHBtLmMn
LCAncnRlX2xwbTYuYycpDQo+ID4gICBoZWFkZXJzID0gZmlsZXMoJ3J0ZV9scG0uaCcsICdydGVf
bHBtNi5oJykNCj4gPiAgICMgc2luY2UgaGVhZGVyIGZpbGVzIGhhdmUgZGlmZmVyZW50IG5hbWVz
LCB3ZSBjYW4gaW5zdGFsbCBhbGwgdmVjdG9yIGhlYWRlcnMNCj4gPiAgICMgd2l0aG91dCB3b3Jy
eWluZyBhYm91dCB3aGljaCBhcmNoaXRlY3R1cmUgd2UgYWN0dWFsbHkgbmVlZA0KPiA+ICAgaGVh
ZGVycyArPSBmaWxlcygncnRlX2xwbV9hbHRpdmVjLmgnLCAncnRlX2xwbV9uZW9uLmgnLCAncnRl
X2xwbV9zc2UuaCcpDQo+ID4gICBkZXBzICs9IFsnaGFzaCddDQo+ID4gK2RlcHMgKz0gWydyY3Un
XQ0KPiA+IGRpZmYgLS1naXQgYS9saWIvbGlicnRlX2xwbS9ydGVfbHBtLmMgYi9saWIvbGlicnRl
X2xwbS9ydGVfbHBtLmMgaW5kZXgNCj4gPiAzYTkyOWExYjEuLjk3NjRiOGRlNiAxMDA2NDQNCj4g
PiAtLS0gYS9saWIvbGlicnRlX2xwbS9ydGVfbHBtLmMNCj4gPiArKysgYi9saWIvbGlicnRlX2xw
bS9ydGVfbHBtLmMNCj4gPiBAQCAtMSw1ICsxLDYgQEANCj4gPiAgIC8qIFNQRFgtTGljZW5zZS1J
ZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UNCj4gPiAgICAqIENvcHlyaWdodChjKSAyMDEwLTIwMTQg
SW50ZWwgQ29ycG9yYXRpb24NCj4gPiArICogQ29weXJpZ2h0KGMpIDIwMTkgQXJtIExpbWl0ZWQN
Cj4gPiAgICAqLw0KPiA+DQo+ID4gICAjaW5jbHVkZSA8c3RyaW5nLmg+DQo+ID4gQEAgLTIyLDYg
KzIzLDcgQEANCj4gPiAgICNpbmNsdWRlIDxydGVfcndsb2NrLmg+DQo+ID4gICAjaW5jbHVkZSA8
cnRlX3NwaW5sb2NrLmg+DQo+ID4gICAjaW5jbHVkZSA8cnRlX3RhaWxxLmg+DQo+ID4gKyNpbmNs
dWRlIDxydGVfcmluZy5oPg0KPiA+DQo+ID4gICAjaW5jbHVkZSAicnRlX2xwbS5oIg0KPiA+DQo+
ID4gQEAgLTM5LDYgKzQxLDExIEBAIGVudW0gdmFsaWRfZmxhZyB7DQo+ID4gICAJVkFMSUQNCj4g
PiAgIH07DQo+ID4NCj4gPiArc3RydWN0IF9fcnRlX2xwbV9xc19pdGVtIHsNCj4gPiArCXVpbnQ2
NF90IHRva2VuOwkvKio8IFFTQlIgdG9rZW4uKi8NCj4gPiArCXVpbnQzMl90IGluZGV4OwkvKio8
IHRibDggZ3JvdXAgaW5kZXguKi8NCj4gPiArfTsNCj4gPiArDQo+ID4gICAvKiBNYWNybyB0byBl
bmFibGUvZGlzYWJsZSBydW4tdGltZSBjaGVja3MuICovDQo+ID4gICAjaWYgZGVmaW5lZChSVEVf
TElCUlRFX0xQTV9ERUJVRykNCj4gPiAgICNpbmNsdWRlIDxydGVfZGVidWcuaD4NCj4gPiBAQCAt
MzgxLDYgKzM4OCw3IEBAIHJ0ZV9scG1fZnJlZV92MTYwNChzdHJ1Y3QgcnRlX2xwbSAqbHBtKQ0K
PiA+DQo+ID4gICAJcnRlX21jZmdfdGFpbHFfd3JpdGVfdW5sb2NrKCk7DQo+ID4NCj4gPiArCXJ0
ZV9yaW5nX2ZyZWUobHBtLT5xc19maWZvKTsNCj4gPiAgIAlydGVfZnJlZShscG0tPnRibDgpOw0K
PiA+ICAgCXJ0ZV9mcmVlKGxwbS0+cnVsZXNfdGJsKTsNCj4gPiAgIAlydGVfZnJlZShscG0pOw0K
PiA+IEBAIC0zOTAsNiArMzk4LDE0NyBAQCBCSU5EX0RFRkFVTFRfU1lNQk9MKHJ0ZV9scG1fZnJl
ZSwgX3YxNjA0LA0KPiAxNi4wNCk7DQo+ID4gICBNQVBfU1RBVElDX1NZTUJPTCh2b2lkIHJ0ZV9s
cG1fZnJlZShzdHJ1Y3QgcnRlX2xwbSAqbHBtKSwNCj4gPiAgIAkJcnRlX2xwbV9mcmVlX3YxNjA0
KTsNCj4gPg0KPiA+ICsvKiBBZGQgYW4gaXRlbSBpbnRvIEZJRk8uDQo+ID4gKyAqIHJldHVybjog
MCAtIHN1Y2Nlc3MNCj4gPiArICovDQo+ID4gK3N0YXRpYyBpbnQNCj4gPiArX19ydGVfbHBtX3Jj
dV9xc2JyX2ZpZm9fcHVzaChzdHJ1Y3QgcnRlX3JpbmcgKmZpZm8sDQo+ID4gKwlzdHJ1Y3QgX19y
dGVfbHBtX3FzX2l0ZW0gKml0ZW0pDQo+ID4gK3sNCj4gPiArCWlmIChydGVfcmluZ19mcmVlX2Nv
dW50KGZpZm8pIDwgMikgew0KPiA+ICsJCVJURV9MT0coRVJSLCBMUE0sICJRUyBGSUZPIGZ1bGxc
biIpOw0KPiA+ICsJCXJ0ZV9lcnJubyA9IEVOT1NQQzsNCj4gPiArCQlyZXR1cm4gMTsNCj4gPiAr
CX0NCj4gPiArDQo+ID4gKwkodm9pZClydGVfcmluZ19zcF9lbnF1ZXVlKGZpZm8sICh2b2lkICop
KHVpbnRwdHJfdClpdGVtLT50b2tlbik7DQo+ID4gKwkodm9pZClydGVfcmluZ19zcF9lbnF1ZXVl
KGZpZm8sICh2b2lkICopKHVpbnRwdHJfdClpdGVtLT5pbmRleCk7DQo+ID4gKw0KPiA+ICsJcmV0
dXJuIDA7DQo+ID4gK30NCj4gPiArDQo+ID4gKy8qIFJlbW92ZSBpdGVtIGZyb20gRklGTy4NCj4g
PiArICogVXNlZCB3aGVuIGRhdGEgb2JzZXJ2ZWQgYnkgcnRlX3JpbmdfcGVlay4NCj4gPiArICov
DQo+ID4gK3N0YXRpYyB2b2lkDQo+ID4gK19fcnRlX2xwbV9yY3VfcXNicl9maWZvX3BvcChzdHJ1
Y3QgcnRlX3JpbmcgKmZpZm8sDQo+ID4gKwlzdHJ1Y3QgX19ydGVfbHBtX3FzX2l0ZW0gKml0ZW0p
DQo+IElzIGl0IG5lY2Vzc2FyeSB0byBwYXNzIHRoZSBwb2ludGVyIGZvciBzdHJ1Y3QgX19ydGVf
bHBtX3FzX2l0ZW0/DQo+IEFjY29yZGluZyB0byBjb2RlIG9ubHkgaXRlbS5pbmRleCBpcyB1c2Vk
IGFmdGVyIHRoaXMgY2FsbC4NCj4gPiArew0KPiA+ICsJdm9pZCAqb2JqX3Rva2VuID0gTlVMTDsN
Cj4gPiArCXZvaWQgKm9ial9pbmRleCA9IE5VTEw7DQo+ID4gKw0KPiA+ICsJKHZvaWQpcnRlX3Jp
bmdfc2NfZGVxdWV1ZShmaWZvLCAmb2JqX3Rva2VuKTsNCj4gSSB0aGluayBpdCBpcyBub3QgbmVj
ZXNzYXJ5IHRvIGNhc3QgaGVyZS4NCj4gPiArCSh2b2lkKXJ0ZV9yaW5nX3NjX2RlcXVldWUoZmlm
bywgJm9ial9pbmRleCk7DQo+ID4gKw0KPiA+ICsJaWYgKGl0ZW0pIHsNCj4gSSB0aGluayBpdCBp
cyByZWR1bmRhbnQsIGl0IGlzIGFsd2F5cyBub3QgTlVMTC4NCj4gPiArCQlpdGVtLT50b2tlbiA9
ICh1aW50NjRfdCkoKHVpbnRwdHJfdClvYmpfdG9rZW4pOw0KPiA+ICsJCWl0ZW0tPmluZGV4ID0g
KHVpbnQzMl90KSgodWludHB0cl90KW9ial9pbmRleCk7DQo+ID4gKwl9DQo+ID4gK30NCj4gPiAr
DQo+ID4gKy8qIE1heCBudW1iZXIgb2YgdGJsOCBncm91cHMgdG8gcmVjbGFpbSBhdCBvbmUgdGlt
ZS4gKi8NCj4gPiArI2RlZmluZSBSQ1VfUVNCUl9SRUNMQUlNX1NJWkUJOA0KPiA+ICsNCj4gPiAr
LyogV2hlbiBSQ1UgUVNCUiBGSUZPIHVzYWdlIGlzIGFib3ZlDQo+IDEvKDJeUkNVX1FTQlJfUkVD
TEFJTV9MRVZFTCksDQo+ID4gKyAqIHJlY2xhaW0gd2lsbCBiZSB0cmlnZ2VyZWQgYnkgdGJsOF9m
cmVlLg0KPiA+ICsgKi8NCj4gPiArI2RlZmluZSBSQ1VfUVNCUl9SRUNMQUlNX0xFVkVMCTMNCj4g
PiArDQo+ID4gKy8qIFJlY2xhaW0gc29tZSB0Ymw4IGdyb3VwcyBiYXNlZCBvbiBxdWllc2NlbnQg
c3RhdGUgY2hlY2suDQo+ID4gKyAqIFJDVV9RU0JSX1JFQ0xBSU1fU0laRSBncm91cHMgd2lsbCBi
ZSByZWNsYWltZWQgYXQgbWF4Lg0KPiA+ICsgKiBQYXJhbXM6IGxwbSAgIC0gbHBtIG9iamVjdCBo
YW5kbGUNCj4gPiArICogICAgICAgICBpbmRleCAtIChvbnB1dCkgb25lIG9mIHN1Y2Nlc3NmdWxs
eSByZWNsYWltZWQgdGJsOCBncm91cHMNCj4gPiArICogcmV0dXJuOiAwIC0gc3VjY2VzcywgMSAt
IG5vIGdyb3VwIHJlY2xhaW1lZC4NCj4gPiArICovDQo+ID4gK3N0YXRpYyB1aW50MzJfdA0KPiA+
ICtfX3J0ZV9scG1fcmN1X3FzYnJfcmVjbGFpbV9jaHVuayhzdHJ1Y3QgcnRlX2xwbSAqbHBtLCB1
aW50MzJfdA0KPiA+ICsqaW5kZXgpIHsNCj4gPiArCXN0cnVjdCBfX3J0ZV9scG1fcXNfaXRlbSBx
c19pdGVtOw0KPiA+ICsJc3RydWN0IHJ0ZV9scG1fdGJsX2VudHJ5ICp0Ymw4X2VudHJ5ID0gTlVM
TDsNCj4gSXQgaXMgbm90IG5lY2Vzc2FyeSB0byBpbml0IGl0IHdpdGggTlVMTC4NCj4gPiArCXZv
aWQgKm9ial90b2tlbjsNCj4gPiArCXVpbnQzMl90IGNudCA9IDA7DQo+ID4gKw0KPiA+ICsJUlRF
X0xPRyhERUJVRywgTFBNLCAiUkNVIFFTQlIgcmVjbGFpbWF0aW9uIHRyaWdnZXJlZC5cbiIpOw0K
PiA+ICsJLyogQ2hlY2sgcmVhZGVyIHRocmVhZHMgcXVpZXNjZW50IHN0YXRlIGFuZA0KPiA+ICsJ
ICogcmVjbGFpbSBhcyBtdWNoIHRibDggZ3JvdXBzIGFzIHBvc3NpYmxlLg0KPiA+ICsJICovDQo+
ID4gKwl3aGlsZSAoKGNudCA8IFJDVV9RU0JSX1JFQ0xBSU1fU0laRSkgJiYNCj4gPiArCQkocnRl
X3JpbmdfcGVlayhscG0tPnFzX2ZpZm8sICZvYmpfdG9rZW4pID09IDApICYmDQo+ID4gKwkJKHJ0
ZV9yY3VfcXNicl9jaGVjayhscG0tPnFzdiwNCj4gKHVpbnQ2NF90KSgodWludHB0cl90KW9ial90
b2tlbiksDQo+ID4gKwkJCQkJZmFsc2UpID09IDEpKSB7DQo+ID4gKwkJX19ydGVfbHBtX3JjdV9x
c2JyX2ZpZm9fcG9wKGxwbS0+cXNfZmlmbywgJnFzX2l0ZW0pOw0KPiA+ICsNCj4gPiArCQl0Ymw4
X2VudHJ5ID0gJmxwbS0+dGJsOFtxc19pdGVtLmluZGV4ICoNCj4gPiArDQo+IAlSVEVfTFBNX1RC
TDhfR1JPVVBfTlVNX0VOVFJJRVNdOw0KPiA+ICsJCW1lbXNldCgmdGJsOF9lbnRyeVswXSwgMCwN
Cj4gPiArCQkJCVJURV9MUE1fVEJMOF9HUk9VUF9OVU1fRU5UUklFUyAqDQo+ID4gKwkJCQlzaXpl
b2YodGJsOF9lbnRyeVswXSkpOw0KPiA+ICsJCWNudCsrOw0KPiA+ICsJfQ0KPiA+ICsNCj4gPiAr
CVJURV9MT0coREVCVUcsIExQTSwgIlJDVSBRU0JSIHJlY2xhaW1lZCAldSBncm91cHMuXG4iLCBj
bnQpOw0KPiA+ICsJaWYgKGNudCkgew0KPiA+ICsJCWlmIChpbmRleCkNCj4gPiArCQkJKmluZGV4
ID0gcXNfaXRlbS5pbmRleDsNCj4gPiArCQlyZXR1cm4gMDsNCj4gPiArCX0NCj4gPiArCXJldHVy
biAxOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICsvKiBUcmlnZ2VyIHRibDggZ3JvdXAgcmVjbGFpbSB3
aGVuIG5lY2Vzc2FyeS4NCj4gPiArICogUmVjbGFpbSBoYXBwZW5zIHdoZW4gUkNVIFFTQlIgcXVl
dWUgdXNhZ2UNCj4gPiArICogaXMgb3ZlciAxLygyXlJDVV9RU0JSX1JFQ0xBSU1fTEVWRUwpLg0K
PiA+ICsgKi8NCj4gPiArc3RhdGljIHZvaWQNCj4gPiArX19ydGVfbHBtX3JjdV9xc2JyX3RyeV9y
ZWNsYWltKHN0cnVjdCBydGVfbHBtICpscG0pIHsNCj4gPiArCWlmIChscG0tPnFzdiA9PSBOVUxM
KQ0KPiA+ICsJCXJldHVybjsNCj4gVGhpcyBjaGVjayBpcyByZWR1bmRhbnQuDQo+ID4gKw0KPiA+
ICsJaWYgKHJ0ZV9yaW5nX2NvdW50KGxwbS0+cXNfZmlmbykgPA0KPiA+ICsJCShydGVfcmluZ19n
ZXRfY2FwYWNpdHkobHBtLT5xc19maWZvKSA+Pg0KPiBSQ1VfUVNCUl9SRUNMQUlNX0xFVkVMKSkN
Cj4gPiArCQlyZXR1cm47DQo+ID4gKw0KPiA+ICsJKHZvaWQpX19ydGVfbHBtX3JjdV9xc2JyX3Jl
Y2xhaW1fY2h1bmsobHBtLCBOVUxMKTsgfQ0KPiA+ICsNCj4gPiArLyogQXNzb2NpYXRlIFFTQlIg
dmFyaWFibGUgd2l0aCBhbiBMUE0gb2JqZWN0Lg0KPiA+ICsgKi8NCj4gPiAraW50DQo+ID4gK3J0
ZV9scG1fcmN1X3FzYnJfYWRkKHN0cnVjdCBydGVfbHBtICpscG0sIHN0cnVjdCBydGVfcmN1X3Fz
YnIgKnYpIHsNCj4gPiArCXVpbnQzMl90IHFzX2ZpZm9fc2l6ZTsNCj4gPiArCWNoYXIgcmN1X3Jp
bmdfbmFtZVtSVEVfUklOR19OQU1FU0laRV07DQo+ID4gKw0KPiA+ICsJaWYgKChscG0gPT0gTlVM
TCkgfHwgKHYgPT0gTlVMTCkpIHsNCj4gPiArCQlydGVfZXJybm8gPSBFSU5WQUw7DQo+ID4gKwkJ
cmV0dXJuIDE7DQo+ID4gKwl9DQo+ID4gKw0KPiA+ICsJaWYgKGxwbS0+cXN2KSB7DQo+ID4gKwkJ
cnRlX2Vycm5vID0gRUVYSVNUOw0KPiA+ICsJCXJldHVybiAxOw0KPiA+ICsJfQ0KPiA+ICsNCj4g
PiArCS8qIHJvdW5kIHVwIHFzX2ZpZm9fc2l6ZSB0byBuZXh0IHBvd2VyIG9mIHR3byB0aGF0IGlz
IG5vdCBsZXNzIHRoYW4NCj4gPiArCSAqIG51bWJlcl90Ymw4cy4gV2lsbCBzdG9yZSAndG9rZW4n
IGFuZCAnaW5kZXgnLg0KPiA+ICsJICovDQo+ID4gKwlxc19maWZvX3NpemUgPSBydGVfYWxpZ24z
MnBvdzIoKDIgKiBscG0tPm51bWJlcl90Ymw4cykgKyAxKTsNCj4gPiArDQo+ID4gKwkvKiBJbml0
IFFTQlIgcmVjbGFpbWluZyBGSUZPLiAqLw0KPiA+ICsJc25wcmludGYocmN1X3JpbmdfbmFtZSwg
c2l6ZW9mKHJjdV9yaW5nX25hbWUpLCAiTFBNX1JDVV8lcyIsDQo+IGxwbS0+bmFtZSk7DQo+ID4g
KwlscG0tPnFzX2ZpZm8gPSBydGVfcmluZ19jcmVhdGUocmN1X3JpbmdfbmFtZSwgcXNfZmlmb19z
aXplLA0KPiA+ICsJCQkJCVNPQ0tFVF9JRF9BTlksIDApOw0KPiA+ICsJaWYgKGxwbS0+cXNfZmlm
byA9PSBOVUxMKSB7DQo+ID4gKwkJUlRFX0xPRyhFUlIsIExQTSwgIkxQTSBRUyBGSUZPIG1lbW9y
eSBhbGxvY2F0aW9uDQo+IGZhaWxlZFxuIik7DQo+ID4gKwkJcnRlX2Vycm5vID0gRU5PTUVNOw0K
PiBydGVfcmluZ19jcmVhdGUoKSBzZXRzIHJ0ZV9lcnJubyBvbiBlcnJvciwgSSBkb24ndCB0aGlu
ayB3ZSBuZWVkIHRvIHJld3JpdGUgaXQNCj4gaGVyZS4NCj4gPiArCQlyZXR1cm4gMTsNCj4gPiAr
CX0NCj4gPiArCWxwbS0+cXN2ID0gdjsNCj4gPiArDQo+ID4gKwlyZXR1cm4gMDsNCj4gPiArfQ0K
PiA+ICsNCj4gPiAgIC8qDQo+ID4gICAgKiBBZGRzIGEgcnVsZSB0byB0aGUgcnVsZSB0YWJsZS4N
Cj4gPiAgICAqDQo+ID4gQEAgLTY0MCw2ICs3ODksMzUgQEAgcnVsZV9maW5kX3YxNjA0KHN0cnVj
dCBydGVfbHBtICpscG0sIHVpbnQzMl90DQo+IGlwX21hc2tlZCwgdWludDhfdCBkZXB0aCkNCj4g
PiAgIAlyZXR1cm4gLUVJTlZBTDsNCj4gPiAgIH0NCj4gPg0KPiA+ICtzdGF0aWMgaW50MzJfdA0K
PiA+ICt0Ymw4X2FsbG9jX3JlY2xhaW1lZChzdHJ1Y3QgcnRlX2xwbSAqbHBtKSB7DQo+ID4gKwlz
dHJ1Y3QgcnRlX2xwbV90YmxfZW50cnkgKnRibDhfZW50cnkgPSBOVUxMOw0KPiA+ICsJdWludDMy
X3QgaW5kZXg7DQo+ID4gKw0KPiA+ICsJaWYgKGxwbS0+cXN2ICE9IE5VTEwpIHsNCj4gPiArCQlp
ZiAoX19ydGVfbHBtX3JjdV9xc2JyX3JlY2xhaW1fY2h1bmsobHBtLCAmaW5kZXgpID09IDApIHsN
Cj4gPiArCQkJLyogU2V0IHRoZSBsYXN0IHJlY2xhaW1lZCB0Ymw4IGdyb3VwIGFzIFZBTElELiAq
Lw0KPiA+ICsJCQlzdHJ1Y3QgcnRlX2xwbV90YmxfZW50cnkgbmV3X3RibDhfZW50cnkgPSB7DQo+
ID4gKwkJCQkubmV4dF9ob3AgPSAwLA0KPiA+ICsJCQkJLnZhbGlkID0gSU5WQUxJRCwNCj4gPiAr
CQkJCS5kZXB0aCA9IDAsDQo+ID4gKwkJCQkudmFsaWRfZ3JvdXAgPSBWQUxJRCwNCj4gPiArCQkJ
fTsNCj4gPiArDQo+ID4gKwkJCXRibDhfZW50cnkgPSAmbHBtLT50Ymw4W2luZGV4ICoNCj4gPiAr
DQo+IAlSVEVfTFBNX1RCTDhfR1JPVVBfTlVNX0VOVFJJRVNdOw0KPiA+ICsJCQlfX2F0b21pY19z
dG9yZSh0Ymw4X2VudHJ5LCAmbmV3X3RibDhfZW50cnksDQo+ID4gKwkJCQkJX19BVE9NSUNfUkVM
QVhFRCk7DQo+ID4gKw0KPiA+ICsJCQkvKiBSZXR1cm4gZ3JvdXAgaW5kZXggZm9yIHJlY2xhaW1l
ZCB0Ymw4IGdyb3VwLiAqLw0KPiA+ICsJCQlyZXR1cm4gaW5kZXg7DQo+ID4gKwkJfQ0KPiA+ICsJ
fQ0KPiA+ICsNCj4gPiArCXJldHVybiAtRU5PU1BDOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICAgLyoN
Cj4gPiAgICAqIEZpbmQsIGNsZWFuIGFuZCBhbGxvY2F0ZSBhIHRibDguDQo+ID4gICAgKi8NCj4g
PiBAQCAtNjc5LDE0ICs4NTcsMTUgQEAgdGJsOF9hbGxvY192MjAoc3RydWN0IHJ0ZV9scG1fdGJs
X2VudHJ5X3YyMA0KPiAqdGJsOCkNCj4gPiAgIH0NCj4gPg0KPiA+ICAgc3RhdGljIGludDMyX3QN
Cj4gPiAtdGJsOF9hbGxvY192MTYwNChzdHJ1Y3QgcnRlX2xwbV90YmxfZW50cnkgKnRibDgsIHVp
bnQzMl90DQo+ID4gbnVtYmVyX3RibDhzKQ0KPiA+ICt0Ymw4X2FsbG9jX3YxNjA0KHN0cnVjdCBy
dGVfbHBtICpscG0pDQo+ID4gICB7DQo+ID4gICAJdWludDMyX3QgZ3JvdXBfaWR4OyAvKiB0Ymw4
IGdyb3VwIGluZGV4LiAqLw0KPiA+ICAgCXN0cnVjdCBydGVfbHBtX3RibF9lbnRyeSAqdGJsOF9l
bnRyeTsNCj4gPg0KPiA+ICAgCS8qIFNjYW4gdGhyb3VnaCB0Ymw4IHRvIGZpbmQgYSBmcmVlIChp
LmUuIElOVkFMSUQpIHRibDggZ3JvdXAuICovDQo+ID4gLQlmb3IgKGdyb3VwX2lkeCA9IDA7IGdy
b3VwX2lkeCA8IG51bWJlcl90Ymw4czsgZ3JvdXBfaWR4KyspIHsNCj4gPiAtCQl0Ymw4X2VudHJ5
ID0gJnRibDhbZ3JvdXBfaWR4ICoNCj4gUlRFX0xQTV9UQkw4X0dST1VQX05VTV9FTlRSSUVTXTsN
Cj4gPiArCWZvciAoZ3JvdXBfaWR4ID0gMDsgZ3JvdXBfaWR4IDwgbHBtLT5udW1iZXJfdGJsOHM7
IGdyb3VwX2lkeCsrKSB7DQo+ID4gKwkJdGJsOF9lbnRyeSA9ICZscG0tPnRibDhbZ3JvdXBfaWR4
ICoNCj4gPiArDQo+IAlSVEVfTFBNX1RCTDhfR1JPVVBfTlVNX0VOVFJJRVNdOw0KPiA+ICAgCQkv
KiBJZiBhIGZyZWUgdGJsOCBncm91cCBpcyBmb3VuZCBjbGVhbiBpdCBhbmQgc2V0IGFzIFZBTElE
LiAqLw0KPiA+ICAgCQlpZiAoIXRibDhfZW50cnktPnZhbGlkX2dyb3VwKSB7DQo+ID4gICAJCQlz
dHJ1Y3QgcnRlX2xwbV90YmxfZW50cnkgbmV3X3RibDhfZW50cnkgPSB7IEBAIC0NCj4gNzA4LDgg
Kzg4Nyw4IEBADQo+ID4gdGJsOF9hbGxvY192MTYwNChzdHJ1Y3QgcnRlX2xwbV90YmxfZW50cnkg
KnRibDgsIHVpbnQzMl90IG51bWJlcl90Ymw4cykNCj4gPiAgIAkJfQ0KPiA+ICAgCX0NCj4gPg0K
PiA+IC0JLyogSWYgdGhlcmUgYXJlIG5vIHRibDggZ3JvdXBzIGZyZWUgdGhlbiByZXR1cm4gZXJy
b3IuICovDQo+ID4gLQlyZXR1cm4gLUVOT1NQQzsNCj4gPiArCS8qIElmIHRoZXJlIGFyZSBubyB0
Ymw4IGdyb3VwcyBmcmVlIHRoZW4gY2hlY2sgcmVjbGFpbSBxdWV1ZS4gKi8NCj4gPiArCXJldHVy
biB0Ymw4X2FsbG9jX3JlY2xhaW1lZChscG0pOw0KPiA+ICAgfQ0KPiA+DQo+ID4gICBzdGF0aWMg
dm9pZA0KPiA+IEBAIC03MjgsMTMgKzkwNywzMSBAQCB0Ymw4X2ZyZWVfdjIwKHN0cnVjdCBydGVf
bHBtX3RibF9lbnRyeV92MjANCj4gKnRibDgsIHVpbnQzMl90IHRibDhfZ3JvdXBfc3RhcnQpDQo+
ID4gICB9DQo+ID4NCj4gPiAgIHN0YXRpYyB2b2lkDQo+ID4gLXRibDhfZnJlZV92MTYwNChzdHJ1
Y3QgcnRlX2xwbV90YmxfZW50cnkgKnRibDgsIHVpbnQzMl90DQo+ID4gdGJsOF9ncm91cF9zdGFy
dCkNCj4gPiArdGJsOF9mcmVlX3YxNjA0KHN0cnVjdCBydGVfbHBtICpscG0sIHVpbnQzMl90IHRi
bDhfZ3JvdXBfc3RhcnQpDQo+ID4gICB7DQo+ID4gLQkvKiBTZXQgdGJsOCBncm91cCBpbnZhbGlk
Ki8NCj4gPiArCXN0cnVjdCBfX3J0ZV9scG1fcXNfaXRlbSBxc19pdGVtOw0KPiA+ICAgCXN0cnVj
dCBydGVfbHBtX3RibF9lbnRyeSB6ZXJvX3RibDhfZW50cnkgPSB7MH07DQo+ID4NCj4gPiAtCV9f
YXRvbWljX3N0b3JlKCZ0Ymw4W3RibDhfZ3JvdXBfc3RhcnRdLCAmemVyb190Ymw4X2VudHJ5LA0K
PiA+IC0JCQlfX0FUT01JQ19SRUxBWEVEKTsNCj4gPiArCWlmIChscG0tPnFzdiAhPSBOVUxMKSB7
DQo+ID4gKwkJLyogUHVzaCBpbnRvIFFTQlIgRklGTy4gKi8NCj4gPiArCQlxc19pdGVtLnRva2Vu
ID0gcnRlX3JjdV9xc2JyX3N0YXJ0KGxwbS0+cXN2KTsNCj4gPiArCQlxc19pdGVtLmluZGV4ID0N
Cj4gPiArCQkJdGJsOF9ncm91cF9zdGFydCAvDQo+IFJURV9MUE1fVEJMOF9HUk9VUF9OVU1fRU5U
UklFUzsNCj4gPiArCQlpZiAoX19ydGVfbHBtX3JjdV9xc2JyX2ZpZm9fcHVzaChscG0tPnFzX2Zp
Zm8sDQo+ICZxc19pdGVtKSAhPSAwKQ0KPiA+ICsJCQkvKiBUaGlzIHNob3VsZCBuZXZlciBoYXBw
ZW4gYXMgRklGTyBzaXplIGlzIGJpZw0KPiBlbm91Z2gNCj4gPiArCQkJICogdG8gaG9sZCBhbGwg
dGJsOCBncm91cHMuDQo+ID4gKwkJCSAqLw0KPiA+ICsJCQlSVEVfTE9HKEVSUiwgTFBNLCAiRmFp
bGVkIHRvIHB1c2ggUVNCUiBGSUZPXG4iKTsNCj4gPiArDQo+ID4gKwkJLyogU3BlY3VsYXRpdmVs
eSByZWNsYWltIHRibDggZ3JvdXBzLg0KPiA+ICsJCSAqIEhlbHAgc3ByZWFkIHRoZSByZWNsYWlt
IHdvcmsgbG9hZCBhY3Jvc3MgbXVsdGlwbGUgY2FsbHMuDQo+ID4gKwkJICovDQo+ID4gKwkJX19y
dGVfbHBtX3JjdV9xc2JyX3RyeV9yZWNsYWltKGxwbSk7DQo+ID4gKwl9IGVsc2Ugew0KPiA+ICsJ
CS8qIFNldCB0Ymw4IGdyb3VwIGludmFsaWQqLw0KPiA+ICsJCV9fYXRvbWljX3N0b3JlKCZscG0t
PnRibDhbdGJsOF9ncm91cF9zdGFydF0sDQo+ICZ6ZXJvX3RibDhfZW50cnksDQo+ID4gKwkJCQlf
X0FUT01JQ19SRUxBWEVEKTsNCj4gPiArCX0NCj4gPiAgIH0NCj4gPg0KPiA+ICAgc3RhdGljIF9f
cnRlX25vaW5saW5lIGludDMyX3QNCj4gPiBAQCAtMTAzNyw3ICsxMjM0LDcgQEAgYWRkX2RlcHRo
X2JpZ192MTYwNChzdHJ1Y3QgcnRlX2xwbSAqbHBtLA0KPiA+IHVpbnQzMl90IGlwX21hc2tlZCwg
dWludDhfdCBkZXB0aCwNCj4gPg0KPiA+ICAgCWlmICghbHBtLT50YmwyNFt0YmwyNF9pbmRleF0u
dmFsaWQpIHsNCj4gPiAgIAkJLyogU2VhcmNoIGZvciBhIGZyZWUgdGJsOCBncm91cC4gKi8NCj4g
PiAtCQl0Ymw4X2dyb3VwX2luZGV4ID0gdGJsOF9hbGxvY192MTYwNChscG0tPnRibDgsIGxwbS0N
Cj4gPm51bWJlcl90Ymw4cyk7DQo+ID4gKwkJdGJsOF9ncm91cF9pbmRleCA9IHRibDhfYWxsb2Nf
djE2MDQobHBtKTsNCj4gPg0KPiA+ICAgCQkvKiBDaGVjayB0Ymw4IGFsbG9jYXRpb24gd2FzIHN1
Y2Nlc3NmdWwuICovDQo+ID4gICAJCWlmICh0Ymw4X2dyb3VwX2luZGV4IDwgMCkgew0KPiA+IEBA
IC0xMDgzLDcgKzEyODAsNyBAQCBhZGRfZGVwdGhfYmlnX3YxNjA0KHN0cnVjdCBydGVfbHBtICps
cG0sDQo+IHVpbnQzMl90IGlwX21hc2tlZCwgdWludDhfdCBkZXB0aCwNCj4gPiAgIAl9IC8qIElm
IHZhbGlkIGVudHJ5IGJ1dCBub3QgZXh0ZW5kZWQgY2FsY3VsYXRlIHRoZSBpbmRleCBpbnRvIFRh
YmxlOC4gKi8NCj4gPiAgIAllbHNlIGlmIChscG0tPnRibDI0W3RibDI0X2luZGV4XS52YWxpZF9n
cm91cCA9PSAwKSB7DQo+ID4gICAJCS8qIFNlYXJjaCBmb3IgZnJlZSB0Ymw4IGdyb3VwLiAqLw0K
PiA+IC0JCXRibDhfZ3JvdXBfaW5kZXggPSB0Ymw4X2FsbG9jX3YxNjA0KGxwbS0+dGJsOCwgbHBt
LQ0KPiA+bnVtYmVyX3RibDhzKTsNCj4gPiArCQl0Ymw4X2dyb3VwX2luZGV4ID0gdGJsOF9hbGxv
Y192MTYwNChscG0pOw0KPiA+DQo+ID4gICAJCWlmICh0Ymw4X2dyb3VwX2luZGV4IDwgMCkgew0K
PiA+ICAgCQkJcmV0dXJuIHRibDhfZ3JvdXBfaW5kZXg7DQo+ID4gQEAgLTE4MTgsNyArMjAxNSw3
IEBAIGRlbGV0ZV9kZXB0aF9iaWdfdjE2MDQoc3RydWN0IHJ0ZV9scG0gKmxwbSwNCj4gdWludDMy
X3QgaXBfbWFza2VkLA0KPiA+ICAgCQkgKi8NCj4gPiAgIAkJbHBtLT50YmwyNFt0YmwyNF9pbmRl
eF0udmFsaWQgPSAwOw0KPiA+ICAgCQlfX2F0b21pY190aHJlYWRfZmVuY2UoX19BVE9NSUNfUkVM
RUFTRSk7DQo+ID4gLQkJdGJsOF9mcmVlX3YxNjA0KGxwbS0+dGJsOCwgdGJsOF9ncm91cF9zdGFy
dCk7DQo+ID4gKwkJdGJsOF9mcmVlX3YxNjA0KGxwbSwgdGJsOF9ncm91cF9zdGFydCk7DQo+ID4g
ICAJfSBlbHNlIGlmICh0Ymw4X3JlY3ljbGVfaW5kZXggPiAtMSkgew0KPiA+ICAgCQkvKiBVcGRh
dGUgdGJsMjQgZW50cnkuICovDQo+ID4gICAJCXN0cnVjdCBydGVfbHBtX3RibF9lbnRyeSBuZXdf
dGJsMjRfZW50cnkgPSB7IEBAIC0xODM0LDcNCj4gKzIwMzEsNyBAQA0KPiA+IGRlbGV0ZV9kZXB0
aF9iaWdfdjE2MDQoc3RydWN0IHJ0ZV9scG0gKmxwbSwgdWludDMyX3QgaXBfbWFza2VkLA0KPiA+
ICAgCQlfX2F0b21pY19zdG9yZSgmbHBtLT50YmwyNFt0YmwyNF9pbmRleF0sDQo+ICZuZXdfdGJs
MjRfZW50cnksDQo+ID4gICAJCQkJX19BVE9NSUNfUkVMQVhFRCk7DQo+ID4gICAJCV9fYXRvbWlj
X3RocmVhZF9mZW5jZShfX0FUT01JQ19SRUxFQVNFKTsNCj4gPiAtCQl0Ymw4X2ZyZWVfdjE2MDQo
bHBtLT50Ymw4LCB0Ymw4X2dyb3VwX3N0YXJ0KTsNCj4gPiArCQl0Ymw4X2ZyZWVfdjE2MDQobHBt
LCB0Ymw4X2dyb3VwX3N0YXJ0KTsNCj4gPiAgIAl9DQo+ID4gICAjdW5kZWYgZ3JvdXBfaWR4DQo+
ID4gICAJcmV0dXJuIDA7DQo+ID4gZGlmZiAtLWdpdCBhL2xpYi9saWJydGVfbHBtL3J0ZV9scG0u
aCBiL2xpYi9saWJydGVfbHBtL3J0ZV9scG0uaCBpbmRleA0KPiA+IDkwNmVjNDQ4My4uNTA3OWZi
MjYyIDEwMDY0NA0KPiA+IC0tLSBhL2xpYi9saWJydGVfbHBtL3J0ZV9scG0uaA0KPiA+ICsrKyBi
L2xpYi9saWJydGVfbHBtL3J0ZV9scG0uaA0KPiA+IEBAIC0xLDUgKzEsNiBAQA0KPiA+ICAgLyog
U1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZQ0KPiA+ICAgICogQ29weXJpZ2h0
KGMpIDIwMTAtMjAxNCBJbnRlbCBDb3Jwb3JhdGlvbg0KPiA+ICsgKiBDb3B5cmlnaHQoYykgMjAx
OSBBcm0gTGltaXRlZA0KPiA+ICAgICovDQo+ID4NCj4gPiAgICNpZm5kZWYgX1JURV9MUE1fSF8N
Cj4gPiBAQCAtMjEsNiArMjIsNyBAQA0KPiA+ICAgI2luY2x1ZGUgPHJ0ZV9jb21tb24uaD4NCj4g
PiAgICNpbmNsdWRlIDxydGVfdmVjdC5oPg0KPiA+ICAgI2luY2x1ZGUgPHJ0ZV9jb21wYXQuaD4N
Cj4gPiArI2luY2x1ZGUgPHJ0ZV9yY3VfcXNici5oPg0KPiA+DQo+ID4gICAjaWZkZWYgX19jcGx1
c3BsdXMNCj4gPiAgIGV4dGVybiAiQyIgew0KPiA+IEBAIC0xODYsNiArMTg4LDggQEAgc3RydWN0
IHJ0ZV9scG0gew0KPiA+ICAgCQkJX19ydGVfY2FjaGVfYWxpZ25lZDsgLyoqPCBMUE0gdGJsMjQg
dGFibGUuICovDQo+ID4gICAJc3RydWN0IHJ0ZV9scG1fdGJsX2VudHJ5ICp0Ymw4OyAvKio8IExQ
TSB0Ymw4IHRhYmxlLiAqLw0KPiA+ICAgCXN0cnVjdCBydGVfbHBtX3J1bGUgKnJ1bGVzX3RibDsg
LyoqPCBMUE0gcnVsZXMuICovDQo+ID4gKwlzdHJ1Y3QgcnRlX3JjdV9xc2JyICpxc3Y7CS8qKjwg
UkNVIFFTQlIgdmFyaWFibGUgZm9yIHRibDgNCj4gZ3JvdXAuKi8NCj4gPiArCXN0cnVjdCBydGVf
cmluZyAqcXNfZmlmbzsJLyoqPCBSQ1UgUVNCUiByZWNsYWltaW5nIHF1ZXVlLiAqLw0KPiA+ICAg
fTsNCj4gPg0KPiA+ICAgLyoqDQo+ID4gQEAgLTI0OCw2ICsyNTIsMjQgQEAgcnRlX2xwbV9mcmVl
X3YyMChzdHJ1Y3QgcnRlX2xwbV92MjAgKmxwbSk7DQo+ID4gICB2b2lkDQo+ID4gICBydGVfbHBt
X2ZyZWVfdjE2MDQoc3RydWN0IHJ0ZV9scG0gKmxwbSk7DQo+ID4NCj4gPiArLyoqDQo+ID4gKyAq
IEFzc29jaWF0ZSBSQ1UgUVNCUiB2YXJpYWJsZSB3aXRoIGFuIExQTSBvYmplY3QuDQo+ID4gKyAq
DQo+ID4gKyAqIEBwYXJhbSBscG0NCj4gPiArICogICB0aGUgbHBtIG9iamVjdCB0byBhZGQgUkNV
IFFTQlINCj4gPiArICogQHBhcmFtIHYNCj4gPiArICogICBSQ1UgUVNCUiB2YXJpYWJsZQ0KPiA+
ICsgKiBAcmV0dXJuDQo+ID4gKyAqICAgT24gc3VjY2VzcyAtIDANCj4gPiArICogICBPbiBlcnJv
ciAtIDEgd2l0aCBlcnJvciBjb2RlIHNldCBpbiBydGVfZXJybm8uDQo+ID4gKyAqICAgUG9zc2li
bGUgcnRlX2Vycm5vIGNvZGVzIGFyZToNCj4gPiArICogICAtIEVJTlZBTCAtIGludmFsaWQgcG9p
bnRlcg0KPiA+ICsgKiAgIC0gRUVYSVNUIC0gYWxyZWFkeSBhZGRlZCBRU0JSDQo+ID4gKyAqICAg
LSBFTk9NRU0gLSBtZW1vcnkgYWxsb2NhdGlvbiBmYWlsdXJlDQo+ID4gKyAqLw0KPiA+ICtfX3J0
ZV9leHBlcmltZW50YWwNCj4gPiAraW50IHJ0ZV9scG1fcmN1X3FzYnJfYWRkKHN0cnVjdCBydGVf
bHBtICpscG0sIHN0cnVjdCBydGVfcmN1X3FzYnINCj4gPiArKnYpOw0KPiA+ICsNCj4gPiAgIC8q
Kg0KPiA+ICAgICogQWRkIGEgcnVsZSB0byB0aGUgTFBNIHRhYmxlLg0KPiA+ICAgICoNCj4gPiBk
aWZmIC0tZ2l0IGEvbGliL2xpYnJ0ZV9scG0vcnRlX2xwbV92ZXJzaW9uLm1hcA0KPiA+IGIvbGli
L2xpYnJ0ZV9scG0vcnRlX2xwbV92ZXJzaW9uLm1hcA0KPiA+IGluZGV4IDkwYmVhYzg1My4uYjM1
M2FhYmQyIDEwMDY0NA0KPiA+IC0tLSBhL2xpYi9saWJydGVfbHBtL3J0ZV9scG1fdmVyc2lvbi5t
YXANCj4gPiArKysgYi9saWIvbGlicnRlX2xwbS9ydGVfbHBtX3ZlcnNpb24ubWFwDQo+ID4gQEAg
LTQ0LDMgKzQ0LDkgQEAgRFBES18xNy4wNSB7DQo+ID4gICAJcnRlX2xwbTZfbG9va3VwX2J1bGtf
ZnVuYzsNCj4gPg0KPiA+ICAgfSBEUERLXzE2LjA0Ow0KPiA+ICsNCj4gPiArRVhQRVJJTUVOVEFM
IHsNCj4gPiArCWdsb2JhbDoNCj4gPiArDQo+ID4gKwlydGVfbHBtX3JjdV9xc2JyX2FkZDsNCj4g
PiArfTsNCj4gPiBkaWZmIC0tZ2l0IGEvbGliL21lc29uLmJ1aWxkIGIvbGliL21lc29uLmJ1aWxk
IGluZGV4DQo+ID4gZTVmZjgzODkzLi4zYTk2ZjAwNWQgMTAwNjQ0DQo+ID4gLS0tIGEvbGliL21l
c29uLmJ1aWxkDQo+ID4gKysrIGIvbGliL21lc29uLmJ1aWxkDQo+ID4gQEAgLTExLDYgKzExLDcg
QEANCj4gPiAgIGxpYnJhcmllcyA9IFsNCj4gPiAgIAkna3ZhcmdzJywgIyBlYWwgZGVwZW5kcyBv
biBrdmFyZ3MNCj4gPiAgIAknZWFsJywgIyBldmVyeXRoaW5nIGRlcGVuZHMgb24gZWFsDQo+ID4g
KwkncmN1JywgIyBoYXNoIGFuZCBscG0gZGVwZW5kcyBvbiB0aGlzDQo+ID4gICAJJ3JpbmcnLCAn
bWVtcG9vbCcsICdtYnVmJywgJ25ldCcsICdtZXRlcicsICdldGhkZXYnLCAncGNpJywgIyBjb3Jl
DQo+ID4gICAJJ2NtZGxpbmUnLA0KPiA+ICAgCSdtZXRyaWNzJywgIyBiaXRyYXRlL2xhdGVuY3kg
c3RhdHMgZGVwZW5kcyBvbiB0aGlzIEBAIC0yMiw3ICsyMyw3DQo+ID4gQEAgbGlicmFyaWVzID0g
Ww0KPiA+ICAgCSdncm8nLCAnZ3NvJywgJ2lwX2ZyYWcnLCAnam9ic3RhdHMnLA0KPiA+ICAgCSdr
bmknLCAnbGF0ZW5jeXN0YXRzJywgJ2xwbScsICdtZW1iZXInLA0KPiA+ICAgCSdwb3dlcicsICdw
ZHVtcCcsICdyYXdkZXYnLA0KPiA+IC0JJ3JjdScsICdyZW9yZGVyJywgJ3NjaGVkJywgJ3NlY3Vy
aXR5JywgJ3N0YWNrJywgJ3Zob3N0JywNCj4gPiArCSdyZW9yZGVyJywgJ3NjaGVkJywgJ3NlY3Vy
aXR5JywgJ3N0YWNrJywgJ3Zob3N0JywNCj4gPiAgIAkjIGlwc2VjIGxpYiBkZXBlbmRzIG9uIG5l
dCwgY3J5cHRvIGFuZCBzZWN1cml0eQ0KPiA+ICAgCSdpcHNlYycsDQo+ID4gICAJIyBhZGQgcGt0
IGZyYW1ld29yayBsaWJzIHdoaWNoIHVzZSBvdGhlciBsaWJzIGZyb20gYWJvdmUNCj4gDQo+IC0t
DQo+IFJlZ2FyZHMsDQo+IFZsYWRpbWlyDQoNCg==