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 60830A04F3;
	Fri, 20 Dec 2019 07:52:38 +0100 (CET)
Received: from [92.243.14.124] (localhost [127.0.0.1])
	by dpdk.org (Postfix) with ESMTP id 627E5330;
	Fri, 20 Dec 2019 07:52:37 +0100 (CET)
Received: from EUR03-AM5-obe.outbound.protection.outlook.com
 (mail-eopbgr30040.outbound.protection.outlook.com [40.107.3.40])
 by dpdk.org (Postfix) with ESMTP id A420A1F5
 for <dev@dpdk.org>; Fri, 20 Dec 2019 07:52:35 +0100 (CET)
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=4x6/f3PoTUR/zLRVbYjQimZA50GKTf+Bjocm7z+hiI8=;
 b=I86EanAGgzCq8DtdDh4WreStW4gTtHMCt51edZlUuOdd90J2dWNXxsQhMIW/japj73L73wR4WAky2D6RXLRaaok96FwPCrXKYb3roQO7UIz603BLWO0g0OrtqP0sGpW2STcn4FFOSfax1zwL77Eej8LxftHI5UzBmtxN+3sCyIY=
Received: from VI1PR0801CA0081.eurprd08.prod.outlook.com
 (2603:10a6:800:7d::25) by AM0PR08MB3266.eurprd08.prod.outlook.com
 (2603:10a6:208:66::25) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2559.16; Fri, 20 Dec
 2019 06:52:33 +0000
Received: from AM5EUR03FT052.eop-EUR03.prod.protection.outlook.com
 (2a01:111:f400:7e08::200) by VI1PR0801CA0081.outlook.office365.com
 (2603:10a6:800:7d::25) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2559.14 via Frontend
 Transport; Fri, 20 Dec 2019 06:52:32 +0000
Authentication-Results: spf=pass (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=bestguesspass action=none
 header.from=arm.com;
Received-SPF: Pass (protection.outlook.com: domain of arm.com designates
 63.35.35.123 as permitted sender) receiver=protection.outlook.com;
 client-ip=63.35.35.123; helo=64aa7808-outbound-1.mta.getcheckrecipient.com;
Received: from 64aa7808-outbound-1.mta.getcheckrecipient.com (63.35.35.123) by
 AM5EUR03FT052.mail.protection.outlook.com (10.152.17.161) with
 Microsoft SMTP
 Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.2559.14 via Frontend Transport; Fri, 20 Dec 2019 06:52:32 +0000
Received: ("Tessian outbound 4f3bc9719026:v40");
 Fri, 20 Dec 2019 06:52:32 +0000
X-CR-MTA-TID: 64aa7808
Received: from a01c1f600496.3
 by 64aa7808-outbound-1.mta.getcheckrecipient.com id
 2E6BA224-3ED6-4D06-AA1F-81D8E5DC902C.1; 
 Fri, 20 Dec 2019 06:52:27 +0000
Received: from EUR04-VI1-obe.outbound.protection.outlook.com
 by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id a01c1f600496.3
 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384);
 Fri, 20 Dec 2019 06:52:27 +0000
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
 b=ZRqpSrNd0kMoGRA91m2nJlT5lChbTnq+XAfDL3ZGqsQ077hTlJMqfKI/FRGFQWhd6PEZRhc23dMFYX/F8r0Cud3yaKDtl7Q98MkLiWbsPR9d/7u5eJlHUDGOEztoDnFFgK3FkAb52qisuSPlc6QrydiAmcMOdoWUOhWQqJMTUcRYldq5lc/rCCYYW4FRxhuRI0QvsONoFKAyavYMC0PBdApXlOiIV/yo0r9MXB5BnH7vKZ7244m5ZkU0kjUiWc12Z6NSgpKulJXlYFK1sScUKjHAlWMyxbwNM9qNTuEVW+fX3u8Ntkfc6NLGabWzmGVO4of5zBkzY0KWs3UlojuyTQ==
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=4x6/f3PoTUR/zLRVbYjQimZA50GKTf+Bjocm7z+hiI8=;
 b=aRoQV6/H+71iu3tKRM4aUAeZ+56apOShldolfUtjyQ2OB+o2u03U1OfGRVD1mxHgV3m7zOcn5zZ07tVfUsv+gAQ3mAH2E7DeVS1KAnuysqQ7K918xVqF0B7LDJUCS7kqc0oqjcfdeX7p13Y66EKo4+2WuhzHs09YQLLee35R+NKUNeFJ0nGuHornrDYR0+d51KySkFPckZdImO53HVvtXy88rjnWOg482lXJNWfUXeTveu4aiIWq7EQCSFJeyiwAszkgzyAwPEEDayrO6sASTPhLVmg1XOeyzkTIyskt62y8KIv3yO6qDLi9P88i9+iuVKZZ2hRXkFEbUprHx602Vw==
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=4x6/f3PoTUR/zLRVbYjQimZA50GKTf+Bjocm7z+hiI8=;
 b=I86EanAGgzCq8DtdDh4WreStW4gTtHMCt51edZlUuOdd90J2dWNXxsQhMIW/japj73L73wR4WAky2D6RXLRaaok96FwPCrXKYb3roQO7UIz603BLWO0g0OrtqP0sGpW2STcn4FFOSfax1zwL77Eej8LxftHI5UzBmtxN+3sCyIY=
Received: from VE1PR08MB5149.eurprd08.prod.outlook.com (20.179.30.27) by
 VE1PR08MB4896.eurprd08.prod.outlook.com (10.255.27.18) with Microsoft SMTP
 Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.2559.15; Fri, 20 Dec 2019 06:52:24 +0000
Received: from VE1PR08MB5149.eurprd08.prod.outlook.com
 ([fe80::9df4:7af6:b62d:f94e]) by VE1PR08MB5149.eurprd08.prod.outlook.com
 ([fe80::9df4:7af6:b62d:f94e%7]) with mapi id 15.20.2538.019; Fri, 20 Dec 2019
 06:52:24 +0000
From: Honnappa Nagarahalli <Honnappa.Nagarahalli@arm.com>
To: Joyce Kong <Joyce.Kong@arm.com>, "thomas@monjalon.net"
 <thomas@monjalon.net>, "stephen@networkplumber.org"
 <stephen@networkplumber.org>, "david.marchand@redhat.com"
 <david.marchand@redhat.com>, "mb@smartsharesystems.com"
 <mb@smartsharesystems.com>, "jerinj@marvell.com" <jerinj@marvell.com>,
 "bruce.richardson@intel.com" <bruce.richardson@intel.com>,
 "ravi1.kumar@amd.com" <ravi1.kumar@amd.com>, "rmody@marvell.com"
 <rmody@marvell.com>, "shshaikh@marvell.com" <shshaikh@marvell.com>,
 "xuanziyang2@huawei.com" <xuanziyang2@huawei.com>,
 "cloud.wangxiaoyun@huawei.com" <cloud.wangxiaoyun@huawei.com>,
 "zhouguoyang@huawei.com" <zhouguoyang@huawei.com>, Phil Yang
 <Phil.Yang@arm.com>, Gavin Hu <Gavin.Hu@arm.com>, Honnappa Nagarahalli
 <Honnappa.Nagarahalli@arm.com>
CC: nd <nd@arm.com>, "dev@dpdk.org" <dev@dpdk.org>, nd <nd@arm.com>
Thread-Topic: [PATCH v6 1/6] lib/eal: implement the family of rte bit
 operation APIs
Thread-Index: AQHVtWiBQ1n0Dk5tDEKroTViQBZDeKfCfMMA
Date: Fri, 20 Dec 2019 06:52:23 +0000
Message-ID: <VE1PR08MB514950694BD1532A840ABA9B982D0@VE1PR08MB5149.eurprd08.prod.outlook.com>
References: <1571125801-45773-1-git-send-email-joyce.kong@arm.com>
 <1576648808-24765-2-git-send-email-joyce.kong@arm.com>
In-Reply-To: <1576648808-24765-2-git-send-email-joyce.kong@arm.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-ts-tracking-id: 2f0c46d2-271d-4656-82df-62a2d71c4e3a.0
x-checkrecipientchecked: true
Authentication-Results-Original: spf=none (sender IP is )
 smtp.mailfrom=Honnappa.Nagarahalli@arm.com; 
x-originating-ip: [217.140.111.135]
x-ms-publictraffictype: Email
X-MS-Office365-Filtering-HT: Tenant
X-MS-Office365-Filtering-Correlation-Id: fab5fa64-f929-408f-3b0d-08d785193054
X-MS-TrafficTypeDiagnostic: VE1PR08MB4896:|VE1PR08MB4896:|AM0PR08MB3266:
x-ld-processed: f34e5979-57d9-4aaa-ad4d-b122a662184d,ExtAddr
x-ms-exchange-transport-forked: True
X-Microsoft-Antispam-PRVS: <AM0PR08MB32664F0C981A8C66F3ADEA91982D0@AM0PR08MB3266.eurprd08.prod.outlook.com>
x-checkrecipientrouted: true
x-ms-oob-tlc-oobclassifiers: OLM:4125;OLM:4125;
x-forefront-prvs: 025796F161
X-Forefront-Antispam-Report-Untrusted: SFV:NSPM;
 SFS:(10009020)(4636009)(396003)(376002)(136003)(346002)(366004)(39860400002)(13464003)(199004)(189003)(66574012)(9686003)(71200400001)(4326008)(52536014)(86362001)(8676002)(478600001)(2906002)(5660300002)(54906003)(110136005)(316002)(6506007)(53546011)(81156014)(186003)(81166006)(26005)(8936002)(7696005)(33656002)(30864003)(55016002)(66476007)(7416002)(66556008)(64756008)(66446008)(66946007)(76116006)(87944003)(921003)(1121003);
 DIR:OUT; SFP:1101; SCL:1; SRVR:VE1PR08MB4896;
 H:VE1PR08MB5149.eurprd08.prod.outlook.com; FPR:; SPF:None; LANG:en;
 PTR:InfoNoRecords; A:1; MX:1; 
received-spf: None (protection.outlook.com: arm.com does not designate
 permitted sender hosts)
X-MS-Exchange-SenderADCheck: 1
X-Microsoft-Antispam-Untrusted: BCL:0;
X-Microsoft-Antispam-Message-Info-Original: NxdlQm4DI/f9uM0TXW3ENrsYj258CUxWE69/lc201vEX13AlJmPI6fnp/bz9jRNDgUGuvWAGjUtLVjWjDVhYfKMwLBVhjudfGcFPL/TvumyMrgmmAbuT0CINy9AYVbH3mRd1nayJirnbSDmPBidFlMRUjO71w9G53nCP8+56k8KlrHmumkno4z4k3fr/SmL4VVSS/IMUkbRLebqWTaETzb5xJ1iOsbKZmSYCoTD/iG5LP0Yxiq75z7IYX5ivXReOeCEJzrBGebNvAKxVPSjqAvHbUsAqLKXSDwSiX7JmsB8cfT8iXPygLiKYl4qrZxPeRKic4fXgvQ8WZyR4qwpNHgI6nblxX5BsElwLE2zMZoZs1ExVOaXocV4WC6OFBJQP8+lO7us4kMV3eyjdeHjX3bKW1LWdYHVFyZUdX3fUE0jykZ3JeofMye4+8t9HkMEzsMYu+ftFXHdfSin85IHtXyuo5fseceZcH2VdReBh7bsMEy5I9uMNM2FG/qAfnE/HXYsM0wgIbdgP2EDmbkNBYh2wPm1GGOfrlogd//PlebwBSBnalcYmcm0iJyAAt2Nn
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
MIME-Version: 1.0
X-MS-Exchange-Transport-CrossTenantHeadersStamped: VE1PR08MB4896
Original-Authentication-Results: spf=none (sender IP is )
 smtp.mailfrom=Honnappa.Nagarahalli@arm.com; 
X-EOPAttributedMessage: 0
X-MS-Exchange-Transport-CrossTenantHeadersStripped: AM5EUR03FT052.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)(39860400002)(396003)(376002)(136003)(346002)(189003)(199004)(13464003)(54906003)(6506007)(53546011)(55016002)(356004)(36906005)(110136005)(81156014)(81166006)(8676002)(9686003)(33656002)(7696005)(26005)(2906002)(336012)(86362001)(30864003)(76130400001)(52536014)(66574012)(8936002)(4326008)(5660300002)(478600001)(316002)(26826003)(70586007)(70206006)(186003)(87944003)(921003)(1121003);
 DIR:OUT; SFP:1101; SCL:1; SRVR:AM0PR08MB3266;
 H:64aa7808-outbound-1.mta.getcheckrecipient.com; FPR:; SPF:Pass; LANG:en;
 PTR:ec2-63-35-35-123.eu-west-1.compute.amazonaws.com; MX:1; A:1; 
X-MS-Office365-Filtering-Correlation-Id-Prvs: 929ec893-c421-4804-8e1e-08d785192b44
NoDisclaimer: True
X-Forefront-PRVS: 025796F161
X-Microsoft-Antispam: BCL:0;
X-Microsoft-Antispam-Message-Info: y4C62M0/l/sKKYWzxMQrunbg0xjEtuOm755ID1Dq05wh/orPZFaTOpbnO2tg/D9JQramOZchuwEnOtpVbd0PJTGXmLLH5R0GyrqGkcgTQawllV3om6Vdg95riuaO/tufm7Tv5fQU0DYk/ABBiYI9mnpAcasbQt/zZXnWYfC3krIVTbICdRqs1E7gC5E2XY5FJci5OkfoIBrIttNrA0xn6es/RO+HlNtza+GNv2pHqf2/rbKoe0VW3/NzF5VA/0AqE+cdvyCVuJGsG9YkGU3/V+oO83F/hrtgp2U2vPoiN7BYBo4wOuEWYrQqb/3+SkGvSb/JPzmEN77magnupEYMhGjp0iZv8PpgdjlVtar0ATjrd6W4Lv40ropwdD8WGKn8lS4ATcz5sBK+kLY6wWaaxBpDAjKA2jkizA1hxFvv/44PytBTljzsC3SIWlqbsc3NlEMqShkAKkN9ERfxC7eC7gt9e3D+VOS+8IZXkeqLdBtsmbWgtq+V4Pot7oOhpfLAy6biUhYpi6YJxh0qnFVqN9b/zlPM0LzoS8kYn9nRB0XArPAsTNHvLjBnhPR74j3U
X-OriginatorOrg: arm.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Dec 2019 06:52:32.6937 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: fab5fa64-f929-408f-3b0d-08d785193054
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: AM0PR08MB3266
Subject: Re: [dpdk-dev] [PATCH v6 1/6] lib/eal: implement the family of rte
 bit operation APIs
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>

SGkgSm95Y2UsDQoJVGhlc2UgQVBJcyBzZWVtIHRvIGJlIHdyaXR0ZW4gY29uc2lkZXJpbmcgdGhl
IFBNRCByZXF1aXJlbWVudHMuIElzIHRoZXJlIGEgbmVlZCB0byBleHBvc2UgdGhlc2UgdG8gYXBw
bGljYXRpb25zIChleHRlcm5hbCB0byBEUERLPykuDQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdl
LS0tLS0NCj4gRnJvbTogSm95Y2UgS29uZyA8am95Y2Uua29uZ0Bhcm0uY29tPg0KPiBTZW50OiBX
ZWRuZXNkYXksIERlY2VtYmVyIDE4LCAyMDE5IDEyOjAwIEFNDQo+IFRvOiB0aG9tYXNAbW9uamFs
b24ubmV0OyBzdGVwaGVuQG5ldHdvcmtwbHVtYmVyLm9yZzsNCj4gZGF2aWQubWFyY2hhbmRAcmVk
aGF0LmNvbTsgbWJAc21hcnRzaGFyZXN5c3RlbXMuY29tOw0KPiBqZXJpbmpAbWFydmVsbC5jb207
IGJydWNlLnJpY2hhcmRzb25AaW50ZWwuY29tOyByYXZpMS5rdW1hckBhbWQuY29tOw0KPiBybW9k
eUBtYXJ2ZWxsLmNvbTsgc2hzaGFpa2hAbWFydmVsbC5jb207IHh1YW56aXlhbmcyQGh1YXdlaS5j
b207DQo+IGNsb3VkLndhbmd4aWFveXVuQGh1YXdlaS5jb207IHpob3VndW95YW5nQGh1YXdlaS5j
b207IEhvbm5hcHBhDQo+IE5hZ2FyYWhhbGxpIDxIb25uYXBwYS5OYWdhcmFoYWxsaUBhcm0uY29t
PjsgUGhpbCBZYW5nDQo+IDxQaGlsLllhbmdAYXJtLmNvbT47IEdhdmluIEh1IDxHYXZpbi5IdUBh
cm0uY29tPg0KPiBDYzogbmQgPG5kQGFybS5jb20+OyBkZXZAZHBkay5vcmcNCj4gU3ViamVjdDog
W1BBVENIIHY2IDEvNl0gbGliL2VhbDogaW1wbGVtZW50IHRoZSBmYW1pbHkgb2YgcnRlIGJpdCBv
cGVyYXRpb24NCj4gQVBJcw0KPiANCj4gVGhlcmUgYXJlIGEgbG90IGZ1bmN0aW9ucyBvZiBiaXQg
b3BlcmF0aW9ucyBzY2F0dGVyZWQgYW5kIGR1cGxpY2F0ZWQgaW4gUE1EcywNCj4gY29uc29saWRh
dGluZyB0aGVtIGludG8gYSBjb21tb24gQVBJIGZhbWlseSBpcyBuZWNlc3NhcnkuIEZ1cnRoZXJt
b3JlLA0KPiB3aGVuIHRoZSBiaXQgb3BlcmF0aW9uIGlzIGFwcGxpZWQgdG8gdGhlIElPIGRldmlj
ZXMsIHVzZSBfX0FUT01JQ19BQ1FfUkVMDQo+IHRvIGVuc3VyZSB0aGUgb3JkZXJpbmcgZm9yIGlv
IGJpdCBvcGVyYXRpb24uDQo+IA0KPiBTaWduZWQtb2ZmLWJ5OiBKb3ljZSBLb25nIDxqb3ljZS5r
b25nQGFybS5jb20+DQo+IFJldmlld2VkLWJ5OiBHYXZpbiBIdSA8Z2F2aW4uaHVAYXJtLmNvbT4N
Cj4gUmV2aWV3ZWQtYnk6IFBoaWwgWWFuZyA8cGhpbC55YW5nQGFybS5jb20+DQo+IEFja2VkLWJ5
OiBNb3J0ZW4gQnLDuHJ1cCA8bWJAc21hcnRzaGFyZXN5c3RlbXMuY29tPg0KPiAtLS0NCj4gIE1B
SU5UQUlORVJTICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgNSArDQo+ICBkb2Mv
YXBpL2RveHktYXBpLWluZGV4Lm1kICAgICAgICAgICAgICAgICAgfCAgIDUgKy0NCj4gIGxpYi9s
aWJydGVfZWFsL2NvbW1vbi9NYWtlZmlsZSAgICAgICAgICAgICB8ICAgMSArDQo+ICBsaWIvbGli
cnRlX2VhbC9jb21tb24vaW5jbHVkZS9ydGVfYml0b3BzLmggfCA0NzQNCj4gKysrKysrKysrKysr
KysrKysrKysrKysrKysrKysNCj4gIGxpYi9saWJydGVfZWFsL2NvbW1vbi9tZXNvbi5idWlsZCAg
ICAgICAgICB8ICAgMyArLQ0KPiAgNSBmaWxlcyBjaGFuZ2VkLCA0ODUgaW5zZXJ0aW9ucygrKSwg
MyBkZWxldGlvbnMoLSkgIGNyZWF0ZSBtb2RlIDEwMDY0NA0KPiBsaWIvbGlicnRlX2VhbC9jb21t
b24vaW5jbHVkZS9ydGVfYml0b3BzLmgNCj4gDQo+IGRpZmYgLS1naXQgYS9NQUlOVEFJTkVSUyBi
L01BSU5UQUlORVJTDQo+IGluZGV4IDQzOTVkOGQuLmQyYTI5YTIgMTAwNjQ0DQo+IC0tLSBhL01B
SU5UQUlORVJTDQo+ICsrKyBiL01BSU5UQUlORVJTDQo+IEBAIC0yMzYsNiArMjM2LDExIEBAIE06
IENyaXN0aWFuIER1bWl0cmVzY3UNCj4gPGNyaXN0aWFuLmR1bWl0cmVzY3VAaW50ZWwuY29tPg0K
PiAgRjogbGliL2xpYnJ0ZV9lYWwvY29tbW9uL2luY2x1ZGUvcnRlX2JpdG1hcC5oDQo+ICBGOiBh
cHAvdGVzdC90ZXN0X2JpdG1hcC5jDQo+IA0KPiArQml0b3BzDQo+ICtNOiBKb3ljZSBLb25nIDxq
b3ljZS5rb25nQGFybS5jb20+DQo+ICtGOiBsaWIvbGlicnRlX2VhbC9jb21tb24vaW5jbHVkZS9y
dGVfYml0b3BzLmgNCj4gK0Y6IGFwcC90ZXN0L3Rlc3RfYml0b3BzLmMNCj4gKw0KPiAgTUNTbG9j
ayAtIEVYUEVSSU1FTlRBTA0KPiAgTTogUGhpbCBZYW5nIDxwaGlsLnlhbmdAYXJtLmNvbT4NCj4g
IEY6IGxpYi9saWJydGVfZWFsL2NvbW1vbi9pbmNsdWRlL2dlbmVyaWMvcnRlX21jc2xvY2suaA0K
PiBkaWZmIC0tZ2l0IGEvZG9jL2FwaS9kb3h5LWFwaS1pbmRleC5tZCBiL2RvYy9hcGkvZG94eS1h
cGktaW5kZXgubWQgaW5kZXgNCj4gZGZmNDk2Yi4uYWRlN2MwMSAxMDA2NDQNCj4gLS0tIGEvZG9j
L2FwaS9kb3h5LWFwaS1pbmRleC5tZA0KPiArKysgYi9kb2MvYXBpL2RveHktYXBpLWluZGV4Lm1k
DQo+IEBAIC0xMzMsMTIgKzEzMywxMyBAQCBUaGUgcHVibGljIEFQSSBoZWFkZXJzIGFyZSBncm91
cGVkIGJ5IHRvcGljczoNCj4gICAgW0JQRl0gICAgICAgICAgICAgICAgKEByZWYgcnRlX2JwZi5o
KQ0KPiANCj4gIC0gKipjb250YWluZXJzKio6DQo+ICsgIFtiaXRtYXBdICAgICAgICAgICAgIChA
cmVmIHJ0ZV9iaXRtYXAuaCksDQo+ICsgIFtiaXRvcHNdICAgICAgICAgICAgIChAcmVmIHJ0ZV9i
aXRvcHMuaCksDQo+ICAgIFttYnVmXSAgICAgICAgICAgICAgIChAcmVmIHJ0ZV9tYnVmLmgpLA0K
PiAgICBbbWJ1ZiBwb29sIG9wc10gICAgICAoQHJlZiBydGVfbWJ1Zl9wb29sX29wcy5oKSwNCj4g
ICAgW3JpbmddICAgICAgICAgICAgICAgKEByZWYgcnRlX3JpbmcuaCksDQo+ICAgIFtzdGFja10g
ICAgICAgICAgICAgIChAcmVmIHJ0ZV9zdGFjay5oKSwNCj4gLSAgW3RhaWxxXSAgICAgICAgICAg
ICAgKEByZWYgcnRlX3RhaWxxLmgpLA0KPiAtICBbYml0bWFwXSAgICAgICAgICAgICAoQHJlZiBy
dGVfYml0bWFwLmgpDQo+ICsgIFt0YWlscV0gICAgICAgICAgICAgIChAcmVmIHJ0ZV90YWlscS5o
KQ0KPiANCj4gIC0gKipwYWNrZXQgZnJhbWV3b3JrKio6DQo+ICAgICogW3BvcnRdICAgICAgICAg
ICAgIChAcmVmIHJ0ZV9wb3J0LmgpOg0KPiBkaWZmIC0tZ2l0IGEvbGliL2xpYnJ0ZV9lYWwvY29t
bW9uL01ha2VmaWxlDQo+IGIvbGliL2xpYnJ0ZV9lYWwvY29tbW9uL01ha2VmaWxlIGluZGV4IGMy
YzZkOTIuLmRkMDI1YzEgMTAwNjQ0DQo+IC0tLSBhL2xpYi9saWJydGVfZWFsL2NvbW1vbi9NYWtl
ZmlsZQ0KPiArKysgYi9saWIvbGlicnRlX2VhbC9jb21tb24vTWFrZWZpbGUNCj4gQEAgLTE5LDYg
KzE5LDcgQEAgSU5DICs9IHJ0ZV9tYWxsb2MuaCBydGVfa2VlcGFsaXZlLmggcnRlX3RpbWUuaCAg
SU5DICs9DQo+IHJ0ZV9zZXJ2aWNlLmggcnRlX3NlcnZpY2VfY29tcG9uZW50LmggIElOQyArPSBy
dGVfYml0bWFwLmggcnRlX3ZmaW8uaA0KPiBydGVfaHlwZXJ2aXNvci5oIHJ0ZV90ZXN0LmggIElO
QyArPSBydGVfcmVjaXByb2NhbC5oIHJ0ZV9mYmFycmF5LmggcnRlX3V1aWQuaA0KPiArSU5DICs9
IHJ0ZV9iaXRvcHMuaA0KPiANCj4gIEdFTkVSSUNfSU5DIDo9IHJ0ZV9hdG9taWMuaCBydGVfYnl0
ZW9yZGVyLmggcnRlX2N5Y2xlcy5oIHJ0ZV9wcmVmZXRjaC5oDQo+IEdFTkVSSUNfSU5DICs9IHJ0
ZV9tZW1jcHkuaCBydGVfY3B1ZmxhZ3MuaCBkaWZmIC0tZ2l0DQo+IGEvbGliL2xpYnJ0ZV9lYWwv
Y29tbW9uL2luY2x1ZGUvcnRlX2JpdG9wcy5oDQo+IGIvbGliL2xpYnJ0ZV9lYWwvY29tbW9uL2lu
Y2x1ZGUvcnRlX2JpdG9wcy5oDQo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4IDAwMDAw
MDAuLjM0MTU4ZDENCj4gLS0tIC9kZXYvbnVsbA0KPiArKysgYi9saWIvbGlicnRlX2VhbC9jb21t
b24vaW5jbHVkZS9ydGVfYml0b3BzLmgNCj4gQEAgLTAsMCArMSw0NzQgQEANCj4gKy8qIFNQRFgt
TGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UNCj4gKyAqIENvcHlyaWdodChjKSAyMDE5
IEFybSBMaW1pdGVkDQo+ICsgKi8NCj4gKw0KPiArI2lmbmRlZiBfUlRFX0JJVE9QU19IXw0KPiAr
I2RlZmluZSBfUlRFX0JJVE9QU19IXw0KPiArDQo+ICsvKioNCj4gKyAqIEBmaWxlDQo+ICsgKiBC
aXQgT3BlcmF0aW9ucw0KPiArICoNCj4gKyAqIFRoaXMgZmlsZSBkZWZpbmVzIGEgQVBJIGZvciBi
aXQgb3BlcmF0aW9ucyB3aXRob3V0L3dpdGggbWVtb3J5IG9yZGVyaW5nLg0KPiArICovDQo+ICsN
Cj4gKyNpbmNsdWRlIDxzdGRpbnQuaD4NCj4gKyNpbmNsdWRlIDxydGVfZGVidWcuaD4NCj4gKyNp
bmNsdWRlIDxydGVfY29tcGF0Lmg+DQo+ICsNCj4gKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLSAzMiBiaXQgb3BlcmF0aW9ucw0KPiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSov
DQo+ICsNCj4gKy8qKg0KPiArICogQHdhcm5pbmcNCj4gKyAqIEBiIEVYUEVSSU1FTlRBTDogdGhp
cyBBUEkgbWF5IGNoYW5nZSwgb3IgYmUgcmVtb3ZlZCwgd2l0aG91dCBwcmlvcg0KPiArbm90aWNl
DQo+ICsgKg0KPiArICogR2V0IHRoZSB0YXJnZXQgYml0IGZyb20gYSAzMi1iaXQgdmFsdWUgd2l0
aG91dCBtZW1vcnkgb3JkZXJpbmcuDQo+ICsgKg0KPiArICogQHBhcmFtIG5yDQo+ICsgKiAgIFRo
ZSB0YXJnZXQgYml0IHRvIGdldC4NCj4gKyAqIEBwYXJhbSBhZGRyDQo+ICsgKiAgIFRoZSBhZGRy
ZXNzIGhvbGRpbmcgdGhlIGJpdC4NCj4gKyAqIEByZXR1cm4NCj4gKyAqICAgVGhlIHRhcmdldCBi
aXQuDQo+ICsgKi8NCj4gK19fcnRlX2V4cGVyaW1lbnRhbA0KPiArc3RhdGljIGlubGluZSB1aW50
MzJfdA0KPiArcnRlX2dldF9iaXQzMl9yZWxheGVkKHVuc2lnbmVkIGludCBuciwgdWludDMyX3Qg
KmFkZHIpIHsNCldoeSBub3QgcGFzcyB0aGUgbWVtb3J5IG9yZGVyIGFzIGEgcGFyYW1ldGVyPyBJ
dCB3b3VsZCByZWR1Y2UgdGhlIG51bWJlciBvZiBBUEkgY2FsbHMgYnkgaGFsZi4NCg0KPiArCVJU
RV9BU1NFUlQobnIgPCAzMik7DQo+ICsNCj4gKwl1aW50MzJfdCBtYXNrID0gVUlOVDMyX0MoMSkg
PDwgbnI7DQo+ICsJcmV0dXJuIF9fYXRvbWljX2xvYWRfbihhZGRyLCBfX0FUT01JQ19SRUxBWEVE
KSAmIG1hc2s7IH0NCj4gKw0KPiArLyoqDQo+ICsgKiBAd2FybmluZw0KPiArICogQGIgRVhQRVJJ
TUVOVEFMOiB0aGlzIEFQSSBtYXkgY2hhbmdlLCBvciBiZSByZW1vdmVkLCB3aXRob3V0IHByaW9y
DQo+ICtub3RpY2UNCj4gKyAqDQo+ICsgKiBTZXQgdGhlIHRhcmdldCBiaXQgaW4gYSAzMi1iaXQg
dmFsdWUgdG8gMSB3aXRob3V0IG1lbW9yeSBvcmRlcmluZy4NCj4gKyAqDQo+ICsgKiBAcGFyYW0g
bnINCj4gKyAqICAgVGhlIHRhcmdldCBiaXQgdG8gc2V0Lg0KPiArICogQHBhcmFtIGFkZHINCj4g
KyAqICAgVGhlIGFkZHJlc3MgaG9sZGluZyB0aGUgYml0Lg0KPiArICovDQo+ICtfX3J0ZV9leHBl
cmltZW50YWwNCj4gK3N0YXRpYyBpbmxpbmUgdm9pZA0KPiArcnRlX3NldF9iaXQzMl9yZWxheGVk
KHVuc2lnbmVkIGludCBuciwgdWludDMyX3QgKmFkZHIpIHsNCj4gKwlSVEVfQVNTRVJUKG5yIDwg
MzIpOw0KPiArDQo+ICsJdWludDMyX3QgbWFzayA9IFVJTlQzMl9DKDEpIDw8IG5yOw0KPiArCV9f
YXRvbWljX2ZldGNoX29yKGFkZHIsIG1hc2ssIF9fQVRPTUlDX1JFTEFYRUQpOyB9DQo+ICsNCj4g
Ky8qKg0KPiArICogQHdhcm5pbmcNCj4gKyAqIEBiIEVYUEVSSU1FTlRBTDogdGhpcyBBUEkgbWF5
IGNoYW5nZSwgb3IgYmUgcmVtb3ZlZCwgd2l0aG91dCBwcmlvcg0KPiArbm90aWNlDQo+ICsgKg0K
PiArICogQ2xlYXIgdGhlIHRhcmdldCBiaXQgaW4gYSAzMi1iaXQgdmFsdWUgdG8gMCB3aXRob3V0
IG1lbW9yeSBvcmRlcmluZy4NCj4gKyAqDQo+ICsgKiBAcGFyYW0gbnINCj4gKyAqICAgVGhlIHRh
cmdldCBiaXQgdG8gY2xlYXIuDQo+ICsgKiBAcGFyYW0gYWRkcg0KPiArICogICBUaGUgYWRkcmVz
cyBob2xkaW5nIHRoZSBiaXQuDQo+ICsgKi8NCj4gK19fcnRlX2V4cGVyaW1lbnRhbA0KPiArc3Rh
dGljIGlubGluZSB2b2lkDQo+ICtydGVfY2xlYXJfYml0MzJfcmVsYXhlZCh1bnNpZ25lZCBpbnQg
bnIsIHVpbnQzMl90ICphZGRyKSB7DQo+ICsJUlRFX0FTU0VSVChuciA8IDMyKTsNCj4gKw0KPiAr
CXVpbnQzMl90IG1hc2sgPSBVSU5UMzJfQygxKSA8PCBucjsNCj4gKwlfX2F0b21pY19mZXRjaF9h
bmQoYWRkciwgfm1hc2ssIF9fQVRPTUlDX1JFTEFYRUQpOyB9DQo+ICsNCj4gKy8qKg0KPiArICog
QHdhcm5pbmcNCj4gKyAqIEBiIEVYUEVSSU1FTlRBTDogdGhpcyBBUEkgbWF5IGNoYW5nZSwgb3Ig
YmUgcmVtb3ZlZCwgd2l0aG91dCBwcmlvcg0KPiArbm90aWNlDQo+ICsgKg0KPiArICogUmV0dXJu
IHRoZSBvcmlnaW5hbCBiaXQgZnJvbSBhIDMyLWJpdCB2YWx1ZSwgdGhlbiBzZXQgaXQgdG8gMQ0K
PiArd2l0aG91dA0KPiArICogbWVtb3J5IG9yZGVyaW5nLg0KPiArICoNCj4gKyAqIEBwYXJhbSBu
cg0KPiArICogICBUaGUgdGFyZ2V0IGJpdCB0byBnZXQgYW5kIHNldC4NCj4gKyAqIEBwYXJhbSBh
ZGRyDQo+ICsgKiAgIFRoZSBhZGRyZXNzIGhvbGRpbmcgdGhlIGJpdC4NCj4gKyAqIEByZXR1cm4N
Cj4gKyAqICAgVGhlIG9yaWdpbmFsIGJpdC4NCj4gKyAqLw0KPiArX19ydGVfZXhwZXJpbWVudGFs
DQo+ICtzdGF0aWMgaW5saW5lIHVpbnQzMl90DQo+ICtydGVfdGVzdF9hbmRfc2V0X2JpdDMyX3Jl
bGF4ZWQodW5zaWduZWQgaW50IG5yLCB1aW50MzJfdCAqYWRkcikgew0KPiArCVJURV9BU1NFUlQo
bnIgPCAzMik7DQo+ICsNCj4gKwl1aW50MzJfdCBtYXNrID0gVUlOVDMyX0MoMSkgPDwgbnI7DQo+
ICsJcmV0dXJuIF9fYXRvbWljX2ZldGNoX29yKGFkZHIsIG1hc2ssIF9fQVRPTUlDX1JFTEFYRUQp
ICYgbWFzazsgfQ0KPiArDQo+ICsvKioNCj4gKyAqIEB3YXJuaW5nDQo+ICsgKiBAYiBFWFBFUklN
RU5UQUw6IHRoaXMgQVBJIG1heSBjaGFuZ2UsIG9yIGJlIHJlbW92ZWQsIHdpdGhvdXQgcHJpb3IN
Cj4gK25vdGljZQ0KPiArICoNCj4gKyAqIFJldHVybiB0aGUgb3JpZ2luYWwgYml0IGZyb20gYSAz
Mi1iaXQgdmFsdWUsIHRoZW4gY2xlYXIgaXQgdG8gMA0KPiArd2l0aG91dA0KPiArICogbWVtb3J5
IG9yZGVyaW5nLg0KPiArICoNCj4gKyAqIEBwYXJhbSBucg0KPiArICogICBUaGUgdGFyZ2V0IGJp
dCB0byBnZXQgYW5kIGNsZWFyLg0KPiArICogQHBhcmFtIGFkZHINCj4gKyAqICAgVGhlIGFkZHJl
c3MgaG9sZGluZyB0aGUgYml0Lg0KPiArICogQHJldHVybg0KPiArICogICBUaGUgb3JpZ2luYWwg
Yml0Lg0KPiArICovDQo+ICtfX3J0ZV9leHBlcmltZW50YWwNCj4gK3N0YXRpYyBpbmxpbmUgdWlu
dDMyX3QNCj4gK3J0ZV90ZXN0X2FuZF9jbGVhcl9iaXQzMl9yZWxheGVkKHVuc2lnbmVkIGludCBu
ciwgdWludDMyX3QgKmFkZHIpIHsNCj4gKwlSVEVfQVNTRVJUKG5yIDwgMzIpOw0KPiArDQo+ICsJ
dWludDMyX3QgbWFzayA9IFVJTlQzMl9DKDEpIDw8IG5yOw0KPiArCXJldHVybiBfX2F0b21pY19m
ZXRjaF9hbmQoYWRkciwgfm1hc2ssIF9fQVRPTUlDX1JFTEFYRUQpICYNCj4gbWFzazsgfQ0KPiAr
DQo+ICsvKioNCj4gKyAqIEB3YXJuaW5nDQo+ICsgKiBAYiBFWFBFUklNRU5UQUw6IHRoaXMgQVBJ
IG1heSBjaGFuZ2UsIG9yIGJlIHJlbW92ZWQsIHdpdGhvdXQgcHJpb3INCj4gK25vdGljZQ0KPiAr
ICoNCj4gKyAqIEdldCB0aGUgdGFyZ2V0IGJpdCBmcm9tIGEgMzItYml0IHZhbHVlIHdpdGggbWVt
b3J5IG9yZGVyaW5nLg0KPiArICoNCj4gKyAqIEBwYXJhbSBucg0KPiArICogICBUaGUgdGFyZ2V0
IGJpdCB0byBnZXQuDQo+ICsgKiBAcGFyYW0gYWRkcg0KPiArICogICBUaGUgYWRkcmVzcyBob2xk
aW5nIHRoZSBiaXQuDQo+ICsgKiBAcmV0dXJuDQo+ICsgKiAgIFRoZSB0YXJnZXQgYml0Lg0KPiAr
ICovDQo+ICtfX3J0ZV9leHBlcmltZW50YWwNCj4gK3N0YXRpYyBpbmxpbmUgdWludDMyX3QNCj4g
K3J0ZV9nZXRfYml0MzIodW5zaWduZWQgaW50IG5yLCB1aW50MzJfdCAqYWRkcikgew0KX19hdG9t
aWNfbG9hZF9uIHRha2VzIG90aGVyIG1lbW9yeSBvcmRlcnMgYWxvbmcgd2l0aCByZWxheGVkIGFu
ZCBhY3F1aXJlLiBUaGUgQVBJIG5hbWUgbmVlZHMgdG8gY2hhbmdlIHRvIGluZGljYXRlIGFjcXVp
cmUgbWVtb3J5IG9yZGVyIGhlcmU/DQoNCj4gKwlSVEVfQVNTRVJUKG5yIDwgMzIpOw0KPiArDQo+
ICsJdWludDMyX3QgbWFzayA9IFVJTlQzMl9DKDEpIDw8IG5yOw0KPiArCXJldHVybiBfX2F0b21p
Y19sb2FkX24oYWRkciwgX19BVE9NSUNfQUNRVUlSRSkgJiBtYXNrOyB9DQo+ICsNCj4gKy8qKg0K
PiArICogQHdhcm5pbmcNCj4gKyAqIEBiIEVYUEVSSU1FTlRBTDogdGhpcyBBUEkgbWF5IGNoYW5n
ZSwgb3IgYmUgcmVtb3ZlZCwgd2l0aG91dCBwcmlvcg0KPiArbm90aWNlDQo+ICsgKg0KPiArICog
U2V0IHRoZSB0YXJnZXQgYml0IGluIGEgMzItYml0IHZhbHVlIHRvIDEgd2l0aCBtZW1vcnkgb3Jk
ZXJpbmcuDQo+ICsgKg0KPiArICogQHBhcmFtIG5yDQo+ICsgKiAgIFRoZSB0YXJnZXQgYml0IHRv
IHNldC4NCj4gKyAqIEBwYXJhbSBhZGRyDQo+ICsgKiAgIFRoZSBhZGRyZXNzIGhvbGRpbmcgdGhl
IGJpdC4NCj4gKyAqLw0KPiArX19ydGVfZXhwZXJpbWVudGFsDQo+ICtzdGF0aWMgaW5saW5lIHZv
aWQNCj4gK3J0ZV9zZXRfYml0MzIodW5zaWduZWQgaW50IG5yLCB1aW50MzJfdCAqYWRkcikgew0K
PiArCVJURV9BU1NFUlQobnIgPCAzMik7DQo+ICsNCj4gKwl1aW50MzJfdCBtYXNrID0gVUlOVDMy
X0MoMSkgPDwgbnI7DQo+ICsJX19hdG9taWNfZmV0Y2hfb3IoYWRkciwgbWFzaywgX19BVE9NSUNf
QUNRX1JFTCk7IH0NCldoeSBub3QgdXNlIGp1c3QgJ19fQVRPTUlDX1JFTEVBU0UnIGhlcmU/IFRo
ZSBmdWxsIGJhcnJpZXIgbWlnaHQgbm90IGJlIHJlcXVpcmVkIGluIGFsbCB1c2UgY2FzZXMuDQoN
Cj4gKw0KPiArLyoqDQo+ICsgKiBAd2FybmluZw0KPiArICogQGIgRVhQRVJJTUVOVEFMOiB0aGlz
IEFQSSBtYXkgY2hhbmdlLCBvciBiZSByZW1vdmVkLCB3aXRob3V0IHByaW9yDQo+ICtub3RpY2UN
Cj4gKyAqDQo+ICsgKiBDbGVhciB0aGUgdGFyZ2V0IGJpdCBpbiBhIDMyLWJpdCB2YWx1ZSB0byAw
IHdpdGggbWVtb3J5IG9yZGVyaW5nLg0KPiArICoNCj4gKyAqIEBwYXJhbSBucg0KPiArICogICBU
aGUgdGFyZ2V0IGJpdCB0byBjbGVhci4NCj4gKyAqIEBwYXJhbSBhZGRyDQo+ICsgKiAgIFRoZSBh
ZGRyZXNzIGhvbGRpbmcgdGhlIGJpdC4NCj4gKyAqLw0KPiArX19ydGVfZXhwZXJpbWVudGFsDQo+
ICtzdGF0aWMgaW5saW5lIHZvaWQNCj4gK3J0ZV9jbGVhcl9iaXQzMih1bnNpZ25lZCBpbnQgbnIs
IHVpbnQzMl90ICphZGRyKSB7DQo+ICsJUlRFX0FTU0VSVChuciA8IDMyKTsNCj4gKw0KPiArCXVp
bnQzMl90IG1hc2sgPSBVSU5UMzJfQygxKSA8PCBucjsNCj4gKwlfX2F0b21pY19mZXRjaF9hbmQo
YWRkciwgfm1hc2ssIF9fQVRPTUlDX0FDUV9SRUwpOyB9DQpXaHkgbm90IHVzZSBqdXN0ICdfX0FU
T01JQ19SRUxFQVNFJyBoZXJlPyBUaGUgZnVsbCBiYXJyaWVyIG1pZ2h0IG5vdCBiZSByZXF1aXJl
ZCBpbiBhbGwgdXNlIGNhc2VzLiBJIHNlZSBzaW1pbGFyIGlzc3VlIGluIG90aGVyIEFQSXMgYmVs
b3cuDQoNCj4gKw0KPiArLyoqDQo+ICsgKiBAd2FybmluZw0KPiArICogQGIgRVhQRVJJTUVOVEFM
OiB0aGlzIEFQSSBtYXkgY2hhbmdlLCBvciBiZSByZW1vdmVkLCB3aXRob3V0IHByaW9yDQo+ICtu
b3RpY2UNCj4gKyAqDQo+ICsgKiBSZXR1cm4gdGhlIG9yaWdpbmFsIGJpdCBmcm9tIGEgMzItYml0
IHZhbHVlLCB0aGVuIHNldCBpdCB0byAxIHdpdGgNCj4gKyAqIG1lbW9yeSBvcmRlcmluZy4NCj4g
KyAqDQo+ICsgKiBAcGFyYW0gbnINCj4gKyAqICAgVGhlIHRhcmdldCBiaXQgdG8gZ2V0IGFuZCBz
ZXQuDQo+ICsgKiBAcGFyYW0gYWRkcg0KPiArICogICBUaGUgYWRkcmVzcyBob2xkaW5nIHRoZSBi
aXQuDQo+ICsgKiBAcmV0dXJuDQo+ICsgKiAgIFRoZSBvcmlnaW5hbCBiaXQuDQo+ICsgKi8NCj4g
K19fcnRlX2V4cGVyaW1lbnRhbA0KPiArc3RhdGljIGlubGluZSB1aW50MzJfdA0KPiArcnRlX3Rl
c3RfYW5kX3NldF9iaXQzMih1bnNpZ25lZCBpbnQgbnIsIHVpbnQzMl90ICphZGRyKSB7DQo+ICsJ
UlRFX0FTU0VSVChuciA8IDMyKTsNCj4gKw0KPiArCXVpbnQzMl90IG1hc2sgPSBVSU5UMzJfQygx
KSA8PCBucjsNCj4gKwlyZXR1cm4gX19hdG9taWNfZmV0Y2hfb3IoYWRkciwgbWFzaywgX19BVE9N
SUNfQUNRX1JFTCkgJg0KPiBtYXNrOyB9DQo+ICsNCj4gKy8qKg0KPiArICogQHdhcm5pbmcNCj4g
KyAqIEBiIEVYUEVSSU1FTlRBTDogdGhpcyBBUEkgbWF5IGNoYW5nZSwgb3IgYmUgcmVtb3ZlZCwg
d2l0aG91dCBwcmlvcg0KPiArbm90aWNlDQo+ICsgKg0KPiArICogUmV0dXJuIHRoZSBvcmlnaW5h
bCBiaXQgZnJvbSBhIDMyLWJpdCB2YWx1ZSwgdGhlbiBjbGVhciBpdCB0byAwIHdpdGgNCj4gKyAq
IG1lbW9yeSBvcmRlcmluZy4NCj4gKyAqDQo+ICsgKiBAcGFyYW0gbnINCj4gKyAqICAgVGhlIHRh
cmdldCBiaXQgdG8gZ2V0IGFuZCBjbGVhci4NCj4gKyAqIEBwYXJhbSBhZGRyDQo+ICsgKiAgIFRo
ZSBhZGRyZXNzIGhvbGRpbmcgdGhlIGJpdC4NCj4gKyAqIEByZXR1cm4NCj4gKyAqICAgVGhlIG9y
aWdpbmFsIGJpdC4NCj4gKyAqLw0KPiArX19ydGVfZXhwZXJpbWVudGFsDQo+ICtzdGF0aWMgaW5s
aW5lIHVpbnQzMl90DQo+ICtydGVfdGVzdF9hbmRfY2xlYXJfYml0MzIodW5zaWduZWQgaW50IG5y
LCB1aW50MzJfdCAqYWRkcikgew0KPiArCVJURV9BU1NFUlQobnIgPCAzMik7DQo+ICsNCj4gKwl1
aW50MzJfdCBtYXNrID0gVUlOVDMyX0MoMSkgPDwgbnI7DQo+ICsJcmV0dXJuIF9fYXRvbWljX2Zl
dGNoX2FuZChhZGRyLCB+bWFzaywgX19BVE9NSUNfQUNRX1JFTCkgJg0KPiBtYXNrOyB9DQo+ICsN
Cj4gKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSA2NCBiaXQgb3BlcmF0aW9ucw0KPiAr
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQo+ICsNCj4gKy8qKg0KPiArICogQHdhcm5p
bmcNCj4gKyAqIEBiIEVYUEVSSU1FTlRBTDogdGhpcyBBUEkgbWF5IGNoYW5nZSwgb3IgYmUgcmVt
b3ZlZCwgd2l0aG91dCBwcmlvcg0KPiArbm90aWNlDQo+ICsgKg0KPiArICogR2V0IHRoZSB0YXJn
ZXQgYml0IGZyb20gYSA2NC1iaXQgdmFsdWUgd2l0aG91dCBtZW1vcnkgb3JkZXJpbmcuDQo+ICsg
Kg0KPiArICogQHBhcmFtIG5yDQo+ICsgKiAgIFRoZSB0YXJnZXQgYml0IHRvIGdldC4NCj4gKyAq
IEBwYXJhbSBhZGRyDQo+ICsgKiAgIFRoZSBhZGRyZXNzIGhvbGRpbmcgdGhlIGJpdC4NCj4gKyAq
IEByZXR1cm4NCj4gKyAqICAgVGhlIHRhcmdldCBiaXQuDQo+ICsgKi8NCj4gK19fcnRlX2V4cGVy
aW1lbnRhbA0KPiArc3RhdGljIGlubGluZSB1aW50NjRfdA0KPiArcnRlX2dldF9iaXQ2NF9yZWxh
eGVkKHVuc2lnbmVkIGludCBuciwgdWludDY0X3QgKmFkZHIpIHsNCj4gKwlSVEVfQVNTRVJUKG5y
IDwgNjQpOw0KPiArDQo+ICsJdWludDY0X3QgbWFzayA9IFVJTlQ2NF9DKDEpIDw8IG5yOw0KPiAr
CXJldHVybiBfX2F0b21pY19sb2FkX24oYWRkciwgX19BVE9NSUNfUkVMQVhFRCkgJiBtYXNrOyB9
DQo+ICsNCj4gKy8qKg0KPiArICogQHdhcm5pbmcNCj4gKyAqIEBiIEVYUEVSSU1FTlRBTDogdGhp
cyBBUEkgbWF5IGNoYW5nZSwgb3IgYmUgcmVtb3ZlZCwgd2l0aG91dCBwcmlvcg0KPiArbm90aWNl
DQo+ICsgKg0KPiArICogU2V0IHRoZSB0YXJnZXQgYml0IGluIGEgNjQtYml0IHZhbHVlIHRvIDEg
d2l0aG91dCBtZW1vcnkgb3JkZXJpbmcuDQo+ICsgKg0KPiArICogQHBhcmFtIG5yDQo+ICsgKiAg
IFRoZSB0YXJnZXQgYml0IHRvIHNldC4NCj4gKyAqIEBwYXJhbSBhZGRyDQo+ICsgKiAgIFRoZSBh
ZGRyZXNzIGhvbGRpbmcgdGhlIGJpdC4NCj4gKyAqLw0KPiArX19ydGVfZXhwZXJpbWVudGFsDQo+
ICtzdGF0aWMgaW5saW5lIHZvaWQNCj4gK3J0ZV9zZXRfYml0NjRfcmVsYXhlZCh1bnNpZ25lZCBp
bnQgbnIsIHVpbnQ2NF90ICphZGRyKSB7DQo+ICsJUlRFX0FTU0VSVChuciA8IDY0KTsNCj4gKw0K
PiArCXVpbnQ2NF90IG1hc2sgPSBVSU5UNjRfQygxKSA8PCBucjsNCj4gKwlfX2F0b21pY19mZXRj
aF9vcihhZGRyLCBtYXNrLCBfX0FUT01JQ19SRUxBWEVEKTsgfQ0KPiArDQo+ICsvKioNCj4gKyAq
IEB3YXJuaW5nDQo+ICsgKiBAYiBFWFBFUklNRU5UQUw6IHRoaXMgQVBJIG1heSBjaGFuZ2UsIG9y
IGJlIHJlbW92ZWQsIHdpdGhvdXQgcHJpb3INCj4gK25vdGljZQ0KPiArICoNCj4gKyAqIENsZWFy
IHRoZSB0YXJnZXQgYml0IGluIGEgNjQtYml0IHZhbHVlIHRvIDAgd2l0aG91dCBtZW1vcnkgb3Jk
ZXJpbmcuDQo+ICsgKg0KPiArICogQHBhcmFtIG5yDQo+ICsgKiAgIFRoZSB0YXJnZXQgYml0IHRv
IGNsZWFyLg0KPiArICogQHBhcmFtIGFkZHINCj4gKyAqICAgVGhlIGFkZHJlc3MgaG9sZGluZyB0
aGUgYml0Lg0KPiArICovDQo+ICtfX3J0ZV9leHBlcmltZW50YWwNCj4gK3N0YXRpYyBpbmxpbmUg
dm9pZA0KPiArcnRlX2NsZWFyX2JpdDY0X3JlbGF4ZWQodW5zaWduZWQgaW50IG5yLCB1aW50NjRf
dCAqYWRkcikgew0KPiArCVJURV9BU1NFUlQobnIgPCA2NCk7DQo+ICsNCj4gKwl1aW50NjRfdCBt
YXNrID0gVUlOVDY0X0MoMSkgPDwgbnI7DQo+ICsJX19hdG9taWNfZmV0Y2hfYW5kKGFkZHIsIH5t
YXNrLCBfX0FUT01JQ19SRUxBWEVEKTsgfQ0KPiArDQo+ICsvKioNCj4gKyAqIEB3YXJuaW5nDQo+
ICsgKiBAYiBFWFBFUklNRU5UQUw6IHRoaXMgQVBJIG1heSBjaGFuZ2UsIG9yIGJlIHJlbW92ZWQs
IHdpdGhvdXQgcHJpb3INCj4gK25vdGljZQ0KPiArICoNCj4gKyAqIFJldHVybiB0aGUgb3JpZ2lu
YWwgYml0IGZyb20gYSA2NC1iaXQgdmFsdWUsIHRoZW4gc2V0IGl0IHRvIDENCj4gK3dpdGhvdXQN
Cj4gKyAqIG1lbW9yeSBvcmRlcmluZy4NCj4gKyAqDQo+ICsgKiBAcGFyYW0gbnINCj4gKyAqICAg
VGhlIHRhcmdldCBiaXQgdG8gZ2V0IGFuZCBzZXQuDQo+ICsgKiBAcGFyYW0gYWRkcg0KPiArICog
ICBUaGUgYWRkcmVzcyBob2xkaW5nIHRoZSBiaXQuDQo+ICsgKiBAcmV0dXJuDQo+ICsgKiAgIFRo
ZSBvcmlnaW5hbCBiaXQuDQo+ICsgKi8NCj4gK19fcnRlX2V4cGVyaW1lbnRhbA0KPiArc3RhdGlj
IGlubGluZSB1aW50NjRfdA0KPiArcnRlX3Rlc3RfYW5kX3NldF9iaXQ2NF9yZWxheGVkKHVuc2ln
bmVkIGludCBuciwgdWludDY0X3QgKmFkZHIpIHsNCj4gKwlSVEVfQVNTRVJUKG5yIDwgNjQpOw0K
PiArDQo+ICsJdWludDY0X3QgbWFzayA9IFVJTlQ2NF9DKDEpIDw8IG5yOw0KPiArCXJldHVybiBf
X2F0b21pY19mZXRjaF9vcihhZGRyLCBtYXNrLCBfX0FUT01JQ19SRUxBWEVEKSAmIG1hc2s7IH0N
Cj4gKw0KPiArLyoqDQo+ICsgKiBAd2FybmluZw0KPiArICogQGIgRVhQRVJJTUVOVEFMOiB0aGlz
IEFQSSBtYXkgY2hhbmdlLCBvciBiZSByZW1vdmVkLCB3aXRob3V0IHByaW9yDQo+ICtub3RpY2UN
Cj4gKyAqDQo+ICsgKiBSZXR1cm4gdGhlIG9yaWdpbmFsIGJpdCBmcm9tIGEgNjQtYml0IHZhbHVl
LCB0aGVuIGNsZWFyIGl0IHRvIDANCj4gK3dpdGhvdXQNCj4gKyAqIG1lbW9yeSBvcmRlcmluZy4N
Cj4gKyAqDQo+ICsgKiBAcGFyYW0gbnINCj4gKyAqICAgVGhlIHRhcmdldCBiaXQgdG8gZ2V0IGFu
ZCBjbGVhci4NCj4gKyAqIEBwYXJhbSBhZGRyDQo+ICsgKiAgIFRoZSBhZGRyZXNzIGhvbGRpbmcg
dGhlIGJpdC4NCj4gKyAqIEByZXR1cm4NCj4gKyAqICAgVGhlIG9yaWdpbmFsIGJpdC4NCj4gKyAq
Lw0KPiArX19ydGVfZXhwZXJpbWVudGFsDQo+ICtzdGF0aWMgaW5saW5lIHVpbnQ2NF90DQo+ICty
dGVfdGVzdF9hbmRfY2xlYXJfYml0NjRfcmVsYXhlZCh1bnNpZ25lZCBpbnQgbnIsIHVpbnQ2NF90
ICphZGRyKSB7DQo+ICsJUlRFX0FTU0VSVChuciA8IDY0KTsNCj4gKw0KPiArCXVpbnQ2NF90IG1h
c2sgPSBVSU5UNjRfQygxKSA8PCBucjsNCj4gKwlyZXR1cm4gX19hdG9taWNfZmV0Y2hfYW5kKGFk
ZHIsIH5tYXNrLCBfX0FUT01JQ19SRUxBWEVEKSAmDQo+IG1hc2s7IH0NCj4gKw0KPiArLyoqDQo+
ICsgKiBAd2FybmluZw0KPiArICogQGIgRVhQRVJJTUVOVEFMOiB0aGlzIEFQSSBtYXkgY2hhbmdl
LCBvciBiZSByZW1vdmVkLCB3aXRob3V0IHByaW9yDQo+ICtub3RpY2UNCj4gKyAqDQo+ICsgKiBH
ZXQgdGhlIHRhcmdldCBiaXQgZnJvbSBhIDY0LWJpdCB2YWx1ZSB3aXRoIG1lbW9yeSBvcmRlcmlu
Zy4NCj4gKyAqDQo+ICsgKiBAcGFyYW0gbnINCj4gKyAqICAgVGhlIHRhcmdldCBiaXQgdG8gZ2V0
Lg0KPiArICogQHBhcmFtIGFkZHINCj4gKyAqICAgVGhlIGFkZHJlc3MgaG9sZGluZyB0aGUgYml0
Lg0KPiArICogQHJldHVybg0KPiArICogICBUaGUgdGFyZ2V0IGJpdC4NCj4gKyAqLw0KPiArX19y
dGVfZXhwZXJpbWVudGFsDQo+ICtzdGF0aWMgaW5saW5lIHVpbnQ2NF90DQo+ICtydGVfZ2V0X2Jp
dDY0KHVuc2lnbmVkIGludCBuciwgdWludDY0X3QgKmFkZHIpIHsNCj4gKwlSVEVfQVNTRVJUKG5y
IDwgNjQpOw0KPiArDQo+ICsJdWludDY0X3QgbWFzayA9IFVJTlQ2NF9DKDEpIDw8IG5yOw0KPiAr
CXJldHVybiBfX2F0b21pY19sb2FkX24oYWRkciwgX19BVE9NSUNfQUNRVUlSRSkgJiBtYXNrOyB9
DQo+ICsNCj4gKy8qKg0KPiArICogQHdhcm5pbmcNCj4gKyAqIEBiIEVYUEVSSU1FTlRBTDogdGhp
cyBBUEkgbWF5IGNoYW5nZSwgb3IgYmUgcmVtb3ZlZCwgd2l0aG91dCBwcmlvcg0KPiArbm90aWNl
DQo+ICsgKg0KPiArICogU2V0IHRoZSB0YXJnZXQgYml0IGluIGEgNjQtYml0IHZhbHVlIHRvIDEg
d2l0aCBtZW1vcnkgb3JkZXJpbmcuDQo+ICsgKg0KPiArICogQHBhcmFtIG5yDQo+ICsgKiAgIFRo
ZSB0YXJnZXQgYml0IHRvIHNldC4NCj4gKyAqIEBwYXJhbSBhZGRyDQo+ICsgKiAgIFRoZSBhZGRy
ZXNzIGhvbGRpbmcgdGhlIGJpdC4NCj4gKyAqLw0KPiArX19ydGVfZXhwZXJpbWVudGFsDQo+ICtz
dGF0aWMgaW5saW5lIHZvaWQNCj4gK3J0ZV9zZXRfYml0NjQodW5zaWduZWQgaW50IG5yLCB1aW50
NjRfdCAqYWRkcikgew0KPiArCVJURV9BU1NFUlQobnIgPCA2NCk7DQo+ICsNCj4gKwl1aW50NjRf
dCBtYXNrID0gVUlOVDY0X0MoMSkgPDwgbnI7DQo+ICsJX19hdG9taWNfZmV0Y2hfb3IoYWRkciwg
bWFzaywgX19BVE9NSUNfQUNRX1JFTCk7IH0NCj4gKw0KPiArLyoqDQo+ICsgKiBAd2FybmluZw0K
PiArICogQGIgRVhQRVJJTUVOVEFMOiB0aGlzIEFQSSBtYXkgY2hhbmdlLCBvciBiZSByZW1vdmVk
LCB3aXRob3V0IHByaW9yDQo+ICtub3RpY2UNCj4gKyAqDQo+ICsgKiBDbGVhciB0aGUgdGFyZ2V0
IGJpdCBpbiBhIDY0LWJpdCB2YWx1ZSB0byAwIHdpdGggbWVtb3J5IG9yZGVyaW5nLg0KPiArICoN
Cj4gKyAqIEBwYXJhbSBucg0KPiArICogICBUaGUgdGFyZ2V0IGJpdCB0byBjbGVhci4NCj4gKyAq
IEBwYXJhbSBhZGRyDQo+ICsgKiAgIFRoZSBhZGRyZXNzIGhvbGRpbmcgdGhlIGJpdC4NCj4gKyAq
Lw0KPiArX19ydGVfZXhwZXJpbWVudGFsDQo+ICtzdGF0aWMgaW5saW5lIHZvaWQNCj4gK3J0ZV9j
bGVhcl9iaXQ2NCh1bnNpZ25lZCBpbnQgbnIsIHVpbnQ2NF90ICphZGRyKSB7DQo+ICsJUlRFX0FT
U0VSVChuciA8IDY0KTsNCj4gKw0KPiArCXVpbnQ2NF90IG1hc2sgPSBVSU5UNjRfQygxKSA8PCBu
cjsNCj4gKwlfX2F0b21pY19mZXRjaF9hbmQoYWRkciwgfm1hc2ssIF9fQVRPTUlDX0FDUV9SRUwp
OyB9DQo+ICsNCj4gKy8qKg0KPiArICogQHdhcm5pbmcNCj4gKyAqIEBiIEVYUEVSSU1FTlRBTDog
dGhpcyBBUEkgbWF5IGNoYW5nZSwgb3IgYmUgcmVtb3ZlZCwgd2l0aG91dCBwcmlvcg0KPiArbm90
aWNlDQo+ICsgKg0KPiArICogUmV0dXJuIHRoZSBvcmlnaW5hbCBiaXQgZnJvbSBhIDY0LWJpdCB2
YWx1ZSwgdGhlbiBzZXQgaXQgdG8gMSB3aXRoDQo+ICsgKiBtZW1vcnkgb3JkZXJpbmcuDQo+ICsg
Kg0KPiArICogQHBhcmFtIG5yDQo+ICsgKiAgIFRoZSB0YXJnZXQgYml0IHRvIGdldCBhbmQgc2V0
Lg0KPiArICogQHBhcmFtIGFkZHINCj4gKyAqICAgVGhlIGFkZHJlc3MgaG9sZGluZyB0aGUgYml0
Lg0KPiArICogQHJldHVybg0KPiArICogICBUaGUgb3JpZ2luYWwgYml0Lg0KPiArICovDQo+ICtf
X3J0ZV9leHBlcmltZW50YWwNCj4gK3N0YXRpYyBpbmxpbmUgdWludDY0X3QNCj4gK3J0ZV90ZXN0
X2FuZF9zZXRfYml0NjQodW5zaWduZWQgaW50IG5yLCB1aW50NjRfdCAqYWRkcikgew0KPiArCVJU
RV9BU1NFUlQobnIgPCA2NCk7DQo+ICsNCj4gKwl1aW50NjRfdCBtYXNrID0gVUlOVDY0X0MoMSkg
PDwgbnI7DQo+ICsJcmV0dXJuIF9fYXRvbWljX2ZldGNoX29yKGFkZHIsIG1hc2ssIF9fQVRPTUlD
X0FDUV9SRUwpICYNCj4gbWFzazsgfQ0KPiArDQo+ICsvKioNCj4gKyAqIEB3YXJuaW5nDQo+ICsg
KiBAYiBFWFBFUklNRU5UQUw6IHRoaXMgQVBJIG1heSBjaGFuZ2UsIG9yIGJlIHJlbW92ZWQsIHdp
dGhvdXQgcHJpb3INCj4gK25vdGljZQ0KPiArICoNCj4gKyAqIFJldHVybiB0aGUgb3JpZ2luYWwg
Yml0IGZyb20gYSA2NC1iaXQgdmFsdWUsIHRoZW4gY2xlYXIgaXQgdG8gMCB3aXRoDQo+ICsgKiBt
ZW1vcnkgb3JkZXJpbmcuDQo+ICsgKg0KPiArICogQHBhcmFtIG5yDQo+ICsgKiAgIFRoZSB0YXJn
ZXQgYml0IHRvIGdldCBhbmQgY2xlYXIuDQo+ICsgKiBAcGFyYW0gYWRkcg0KPiArICogICBUaGUg
YWRkcmVzcyBob2xkaW5nIHRoZSBiaXQuDQo+ICsgKiBAcmV0dXJuDQo+ICsgKiAgIFRoZSBvcmln
aW5hbCBiaXQuDQo+ICsgKi8NCj4gK19fcnRlX2V4cGVyaW1lbnRhbA0KPiArc3RhdGljIGlubGlu
ZSB1aW50NjRfdA0KPiArcnRlX3Rlc3RfYW5kX2NsZWFyX2JpdDY0KHVuc2lnbmVkIGludCBuciwg
dWludDY0X3QgKmFkZHIpIHsNCj4gKwlSVEVfQVNTRVJUKG5yIDwgNjQpOw0KPiArDQo+ICsJdWlu
dDY0X3QgbWFzayA9IFVJTlQ2NF9DKDEpIDw8IG5yOw0KPiArCXJldHVybiBfX2F0b21pY19mZXRj
aF9hbmQoYWRkciwgfm1hc2ssIF9fQVRPTUlDX0FDUV9SRUwpICYNCj4gbWFzazsgfQ0KPiArI2Vu
ZGlmIC8qIF9SVEVfQklUT1BTX0hfICovDQo+IGRpZmYgLS1naXQgYS9saWIvbGlicnRlX2VhbC9j
b21tb24vbWVzb24uYnVpbGQNCj4gYi9saWIvbGlicnRlX2VhbC9jb21tb24vbWVzb24uYnVpbGQN
Cj4gaW5kZXggMmI5NzcxNS4uNzY2ZWRiZCAxMDA2NDQNCj4gLS0tIGEvbGliL2xpYnJ0ZV9lYWwv
Y29tbW9uL21lc29uLmJ1aWxkDQo+ICsrKyBiL2xpYi9saWJydGVfZWFsL2NvbW1vbi9tZXNvbi5i
dWlsZA0KPiBAQCAtNTAsOSArNTAsMTAgQEAgY29tbW9uX29ianMgKz0gZWFsX2NvbW1vbl9hcmNo
X29ianMNCj4gDQo+ICBjb21tb25faGVhZGVycyA9IGZpbGVzKA0KPiAgCSdpbmNsdWRlL3J0ZV9h
bGFybS5oJywNCj4gKwknaW5jbHVkZS9ydGVfYml0bWFwLmgnLA0KPiArCSdpbmNsdWRlL3J0ZV9i
aXRvcHMuaCcsDQo+ICAJJ2luY2x1ZGUvcnRlX2JyYW5jaF9wcmVkaWN0aW9uLmgnLA0KPiAgCSdp
bmNsdWRlL3J0ZV9idXMuaCcsDQo+IC0JJ2luY2x1ZGUvcnRlX2JpdG1hcC5oJywNCj4gIAknaW5j
bHVkZS9ydGVfY2xhc3MuaCcsDQo+ICAJJ2luY2x1ZGUvcnRlX2NvbW1vbi5oJywNCj4gIAknaW5j
bHVkZS9ydGVfY29tcGF0LmgnLA0KPiAtLQ0KPiAyLjcuNA0KDQo=