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 20414A0564;
	Tue, 24 Mar 2020 10:40:42 +0100 (CET)
Received: from [92.243.14.124] (localhost [127.0.0.1])
	by dpdk.org (Postfix) with ESMTP id 8644B1C0C3;
	Tue, 24 Mar 2020 10:40:41 +0100 (CET)
Received: from mx0b-0016f401.pphosted.com (mx0a-0016f401.pphosted.com
 [67.231.148.174]) by dpdk.org (Postfix) with ESMTP id 10F231C0C2
 for <dev@dpdk.org>; Tue, 24 Mar 2020 10:40:39 +0100 (CET)
Received: from pps.filterd (m0045849.ppops.net [127.0.0.1])
 by mx0a-0016f401.pphosted.com (8.16.0.42/8.16.0.42) with SMTP id
 02O9dw0a013445; Tue, 24 Mar 2020 02:40:36 -0700
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=marvell.com;
 h=from : to : cc :
 subject : date : message-id : references : in-reply-to : content-type :
 content-transfer-encoding : mime-version; s=pfpt0818;
 bh=HMgajmRqQvW+wQky/tUnsMnSk3n2P9t669zNBcHamGo=;
 b=wECG4byBkpKhbLNUyeobXD2MOh8RmSco/6a3PYbeQPOYGmemNMaEEv2Z3mUNNsYUnlWx
 sm1ehfkf0LtKe7PK5EBSuTG5vs1+nhyeCAFWjgoC5mBUuSWUXiRf5rSnWZkJ2Ug52zmU
 klfcgGvSlWq8MAvkMYT7tgG5hyYnnjaijphl8N7H3zfAAKDc+evTZ06hNhdhmlCI0His
 Jfvp7IHrKxoul9cjL5CeH1eByBMny5FtwFzCFKDiYNB92Y/yqe8qhPLXGrviBsIm6UsP
 Hgwy65V+9ZtatSk1hX39/p3V+Pro3q/799IT+wXmuoPHeY9bXmSwwl7dpE3hVyf6JK4a Zw== 
Received: from sc-exch03.marvell.com ([199.233.58.183])
 by mx0a-0016f401.pphosted.com with ESMTP id 2ywg9njfxa-1
 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-SHA384 bits=256 verify=NOT);
 Tue, 24 Mar 2020 02:40:36 -0700
Received: from SC-EXCH03.marvell.com (10.93.176.83) by SC-EXCH03.marvell.com
 (10.93.176.83) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Tue, 24 Mar
 2020 02:40:35 -0700
Received: from NAM10-BN7-obe.outbound.protection.outlook.com (104.47.70.102)
 by SC-EXCH03.marvell.com (10.93.176.83) with Microsoft SMTP Server (TLS) id
 15.0.1497.2 via Frontend Transport; Tue, 24 Mar 2020 02:40:34 -0700
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
 b=TC4PDUiXOnashK0Wl7pYzdDe30TjgluVza/1SzbYvnONOyCKUJM8kDtH2ac1GqcKMIS/mfPsoBcnO3WPn+Fsm8N7+wjiChg7Dk0dtd8/mm3QZwlDeV/aVw/Rt2CWR0GU9lh8pm6Tbv21vCpnireWRFxnxKsXntcGp8msqZeTFsjrqrgJ/b/8+IP66RY5ugJ/fjNz2nTB2/zkppTHhB0m8V2J/u1jABT3+5j6OkzLm2tF+/fDeiqvVuj5tVbgOZ+bKny+4myjmA33KFBf6gfwS2reNZ8akDS9j5Yso8PB3R3vapuLTg52KIRdkTWVYlvJEeY0lCWtHIVk+JKPHHXXeg==
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=HMgajmRqQvW+wQky/tUnsMnSk3n2P9t669zNBcHamGo=;
 b=kbpMWMc0SnUAeJcgZKsa+sETMnAc05eNrGn4+OWrWRiFdcazt9X6Kq0ps1dr4G6fq4v31JcppZOMKDI7WYbql7cChPLI+weVovcLlHWYlaleQjbkOASSfjL+H4MU2CL1Lm61Sq5b8oxOpNIkZvLHNguw9iK4Xj2hhL1HjfhplydPFcekkd4gdL19uoJSJSv/juIzWwEW1JxtbO8m/nCYwZi2SapXiVsmUrQ1FFiRN3PapazKj7vk2Zu2w5nO96cdQA38iR+9onTAGgBQSLnyv/1S4ItRtb0C+Y8/maftBVJtKc27MyUkq6eRRSZT1bMEenfNKlaVO/512D507rZa9Q==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=marvell.com; dmarc=pass action=none header.from=marvell.com;
 dkim=pass header.d=marvell.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=marvell.onmicrosoft.com; s=selector1-marvell-onmicrosoft-com;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=HMgajmRqQvW+wQky/tUnsMnSk3n2P9t669zNBcHamGo=;
 b=ROgxSZPRWKc+3E9oul11QQefZFSoDTVjz800YN7jMd99OjOxvoVe9SlcUMjEH1Lv0iaWKeTRaBIlCnJ6CCLp+aMO3KJ252HxiId3TwuLPLJx6wzG1+as10hZtDqtJdb6crt9YCvSyYIWkVEWbkjsBtOwxqjvVCZwzFiP4JkTSb8=
Received: from CY4PR1801MB1863.namprd18.prod.outlook.com
 (2603:10b6:910:7b::32) by CY4PR1801MB1830.namprd18.prod.outlook.com
 (2603:10b6:910:7e::34) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2835.22; Tue, 24 Mar
 2020 09:40:33 +0000
Received: from CY4PR1801MB1863.namprd18.prod.outlook.com
 ([fe80::3ce0:be16:b19f:6383]) by CY4PR1801MB1863.namprd18.prod.outlook.com
 ([fe80::3ce0:be16:b19f:6383%7]) with mapi id 15.20.2835.021; Tue, 24 Mar 2020
 09:40:33 +0000
From: Pavan Nikhilesh Bhagavatula <pbhagavatula@marvell.com>
To: Ray Kinsella <mdr@ashroe.eu>, Jerin Jacob Kollanukkaran
 <jerinj@marvell.com>, Nithin Kumar Dabilpuram <ndabilpuram@marvell.com>
CC: "dev@dpdk.org" <dev@dpdk.org>, "thomas@monjalon.net" <thomas@monjalon.net>,
 "david.marchand@redhat.com" <david.marchand@redhat.com>,
 "mattias.ronnblom@ericsson.com" <mattias.ronnblom@ericsson.com>,
 Kiran Kumar Kokkilagadda <kirankumark@marvell.com>
Thread-Topic: [EXT] Re: [dpdk-dev] [PATCH v1 20/26] node: ipv4 lookup for x86
Thread-Index: AQHV/W1QZK9hb7vUJEq1M59lDqobbqhP2A4AgAAbR1CAAB4TAIAABcvwgAEd0YCABjsZsA==
Date: Tue, 24 Mar 2020 09:40:32 +0000
Message-ID: <CY4PR1801MB18638826B6A256A7CB9C1A23DEF10@CY4PR1801MB1863.namprd18.prod.outlook.com>
References: <20200318213551.3489504-1-jerinj@marvell.com>
 <20200318213551.3489504-21-jerinj@marvell.com>
 <02c4c25a-83ba-dac5-20e6-7b140cbcb4f1@ashroe.eu>
 <CY4PR1801MB1863F49710B8F5A60D350B0EDEF40@CY4PR1801MB1863.namprd18.prod.outlook.com>
 <5a99e696-3853-5782-0a4c-0debcc74faa8@ashroe.eu>
 <CY4PR1801MB1863BCCB6987C1A826D98263DEF40@CY4PR1801MB1863.namprd18.prod.outlook.com>
 <20a3cb35-d57b-4799-f084-919f3f55da6f@ashroe.eu>
In-Reply-To: <20a3cb35-d57b-4799-f084-919f3f55da6f@ashroe.eu>
Accept-Language: en-IN, en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-originating-ip: [122.172.110.222]
x-ms-publictraffictype: Email
x-ms-office365-filtering-correlation-id: 892a3923-fe96-47e7-56cf-08d7cfd765e6
x-ms-traffictypediagnostic: CY4PR1801MB1830:
x-ms-exchange-transport-forked: True
x-microsoft-antispam-prvs: <CY4PR1801MB183002AB2A01C41FFEFF64F9DEF10@CY4PR1801MB1830.namprd18.prod.outlook.com>
x-ms-oob-tlc-oobclassifiers: OLM:5797;
x-forefront-prvs: 03524FBD26
x-forefront-antispam-report: SFV:NSPM;
 SFS:(10009020)(4636009)(39860400002)(346002)(376002)(396003)(136003)(366004)(110136005)(54906003)(81166006)(4326008)(66946007)(8676002)(81156014)(66446008)(71200400001)(33656002)(7696005)(316002)(86362001)(55016002)(66476007)(53546011)(6506007)(64756008)(76116006)(9686003)(8936002)(5660300002)(66556008)(2906002)(186003)(30864003)(107886003)(52536014)(478600001)(6636002)(26005);
 DIR:OUT; SFP:1101; SCL:1; SRVR:CY4PR1801MB1830;
 H:CY4PR1801MB1863.namprd18.prod.outlook.com; FPR:; SPF:None; LANG:en;
 PTR:InfoNoRecords; 
received-spf: None (protection.outlook.com: marvell.com does not designate
 permitted sender hosts)
x-ms-exchange-senderadcheck: 1
x-microsoft-antispam: BCL:0;
x-microsoft-antispam-message-info: bCYiE0EincHXtE8XeQl2nvz5PbERmkebW5xkV1ucn5hPARlA9wqt9fXKFWPA5APezPrrZ4DuS81gwFsDlEy7hea16AM3xnDA7aDx5suMc7V7n1X/oHt+7T04BMknDDQ7sFdtJWaXx+3WAd+RPK7bwbjZKGfRlMpZ/Afoxg3WSh5JozbvZiuuG53yeGMUJ5aaicz0ra6+PfwG5+j+A0wuhLGTYXW40IDZmfF7NXcwqXrRe/0SoEaHS8EPArBZdSzjmIJI/7IlaNbYrCdReK/QxB4e7c70/6kG9ZIr+eHyHpf6bACTqkySJrvlxx0be0PtdKWV5+Pkb+DI/bj1wkJg7hYtrbEI2rl3n+47HOY9CJ7+BE2Eo6ppF/gj+XiVlZ8Gr1EbPCoL9LcyolnB/0ldcz1VS3G4k3gTvpZbOmQlRiJYqTPB7wG9jqDmANvW1j/e
x-ms-exchange-antispam-messagedata: f2Rjk/EIr3jQimzwJBramLBvSVRGy0X9QkJIrdtjPTlZe3FJdXxvKYDdIeECJpNE/sJj9ZddpKPJmqhB9I839PoUBYqGTTpIvKcOKcIAfX/S7pyxpb7G6x2hTgjVm6iI2QOj56BbGPzM1dkVylhp6Q==
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
MIME-Version: 1.0
X-MS-Exchange-CrossTenant-Network-Message-Id: 892a3923-fe96-47e7-56cf-08d7cfd765e6
X-MS-Exchange-CrossTenant-originalarrivaltime: 24 Mar 2020 09:40:32.8678 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 70e1fb47-1155-421d-87fc-2e58f638b6e0
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: 9iczTvQQOI+POiKwSZ5WWw7klK78KI0vgI669RcJbBW1IWfSAMkLVSkL1UJNmhNOlUdJXKT+My5izT7L4kfR7r1fZGUdqsbI3vT0fnzzBAs=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY4PR1801MB1830
X-OriginatorOrg: marvell.com
X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.138, 18.0.645
 definitions=2020-03-24_02:2020-03-23,
 2020-03-24 signatures=0
Subject: Re: [dpdk-dev] [EXT] Re: [PATCH v1 20/26] node: ipv4 lookup for x86
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>

SGkgUmF5LCANCg0KSSBoYXZlIHRyaWVkIHRvIGF2b2lkIGhhbmQgdW5yb2xsaW5nIGxvb3BzIGFu
ZCBmb3VuZCB0aGUgZm9sbG93aW5nIG9ic2VydmF0aW9ucy4NCg0KMS4gQWx0aG91Z2ggaXQgZGVj
cmVhc2VzIExPQyBpdCBhbHNvIHRha2VzIGF3YXkgcmVhZGFiaWxpdHkgdG9vLg0KCUV4YW1wbGU6
IA0KCUF2b2lkaW5nIHVucm9sbGVkIGNvZGUgYmVsb3cNCg0KICAgICAgICAgICAgICAgIHByaXZb
MF0udTY0WzBdID0gcnRlX25vZGVfbWJ1Zl9wcml2MShtYnVmWzBdKS0+dTsNCiAgICAgICAgICAg
ICAgICBwcml2WzBdLnU2NFsxXSA9IHJ0ZV9ub2RlX21idWZfcHJpdjEobWJ1ZlsxXSktPnU7DQog
ICAgICAgICAgICAgICAgcHJpdlsxXS51NjRbMF0gPSBydGVfbm9kZV9tYnVmX3ByaXYxKG1idWZb
Ml0pLT51Ow0KICAgICAgICAgICAgICAgIHByaXZbMV0udTY0WzFdID0gcnRlX25vZGVfbWJ1Zl9w
cml2MShtYnVmWzNdKS0+dTsNCg0KICAgICAgICAgICAgICAgIC8qIEluY3JlbWVudCBjaGVja3N1
bSBieSBvbmUuICovDQogICAgICAgICAgICAgICAgcHJpdlswXS51MzJbMV0gKz0gcnRlX2NwdV90
b19iZV8xNigweDAxMDApOw0KICAgICAgICAgICAgICAgIHByaXZbMF0udTMyWzNdICs9IHJ0ZV9j
cHVfdG9fYmVfMTYoMHgwMTAwKTsNCiAgICAgICAgICAgICAgICBwcml2WzFdLnUzMlsxXSArPSBy
dGVfY3B1X3RvX2JlXzE2KDB4MDEwMCk7DQogICAgICAgICAgICAgICAgcHJpdlsxXS51MzJbM10g
Kz0gcnRlX2NwdV90b19iZV8xNigweDAxMDApOw0KDQogICAgICAgICAgICAgICAgZCA9IHJ0ZV9w
a3RtYnVmX210b2QobWJ1ZlswXSwgdm9pZCAqKTsNCiAgICAgICAgICAgICAgICBydGVfbWVtY3B5
KGQsIG5oW3ByaXZbMF0udTE2WzBdXS5yZXdyaXRlX2RhdGEsDQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG5oW3ByaXZbMF0udTE2WzBdXS5yZXdyaXRlX2xlbik7DQogICAgICAgICAg
ICAgICAgbmV4dFswXSA9IG5oW3ByaXZbMF0udTE2WzBdXS50eF9ub2RlOw0KICAgICAgICAgICAg
ICAgIGlwID0gKHN0cnVjdCBydGVfaXB2NF9oZHIgKikoKHVpbnQ4X3QgKilkICsNCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKHN0cnVjdCBydGVfZXRoZXJfaGRyKSk7DQog
ICAgICAgICAgICAgICAgaXAtPnRpbWVfdG9fbGl2ZSA9IHByaXZbMF0udTE2WzFdIC0gMTsNCiAg
ICAgICAgICAgICAgICBpcC0+aGRyX2NoZWNrc3VtID0gcHJpdlswXS51MTZbMl0gKyBwcml2WzBd
LnUxNlszXTsNCg0KICAgICAgICAgICAgICAgIGQgPSBydGVfcGt0bWJ1Zl9tdG9kKG1idWZbMV0s
IHZvaWQgKik7DQogICAgICAgICAgICAgICAgcnRlX21lbWNweShkLCBuaFtwcml2WzBdLnUxNls0
XV0ucmV3cml0ZV9kYXRhLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgbmhbcHJpdlswXS51
MTZbNF1dLnJld3JpdGVfbGVuKTsNCiAgICAgICAgICAgICAgICBuZXh0WzFdID0gbmhbcHJpdlsw
XS51MTZbNF1dLnR4X25vZGU7DQogICAgICAgICAgICAgICAgaXAgPSAoc3RydWN0IHJ0ZV9pcHY0
X2hkciAqKSgodWludDhfdCAqKWQgKw0KICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihzdHJ1
Y3QgcnRlX2V0aGVyX2hkcikpOw0KICAgICAgICAgICAgICAgIGlwLT50aW1lX3RvX2xpdmUgPSBw
cml2WzBdLnUxNls1XSAtIDE7DQogICAgICAgICAgICAgICAgaXAtPmhkcl9jaGVja3N1bSA9IHBy
aXZbMF0udTE2WzZdICsgcHJpdlswXS51MTZbN107DQoNCiAgICAgICAgICAgICAgICBkID0gcnRl
X3BrdG1idWZfbXRvZChtYnVmWzJdLCB2b2lkICopOw0KICAgICAgICAgICAgICAgIHJ0ZV9tZW1j
cHkoZCwgbmhbcHJpdlsxXS51MTZbMF1dLnJld3JpdGVfZGF0YSwNCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG5oW3ByaXZbMV0udTE2WzBdXS5yZXdyaXRlX2xlbik7DQogICAgICAgICAgICAg
ICAgbmV4dFsyXSA9IG5oW3ByaXZbMV0udTE2WzBdXS50eF9ub2RlOw0KICAgICAgICAgICAgICAg
IGlwID0gKHN0cnVjdCBydGVfaXB2NF9oZHIgKikoKHVpbnQ4X3QgKilkICsNCiAgICAgICAgICAg
ICAgICAgICAgICBzaXplb2Yoc3RydWN0IHJ0ZV9ldGhlcl9oZHIpKTsNCiAgICAgICAgICAgICAg
ICBpcC0+dGltZV90b19saXZlID0gcHJpdlsxXS51MTZbMV0gLSAxOw0KICAgICAgICAgICAgICAg
IGlwLT5oZHJfY2hlY2tzdW0gPSBwcml2WzFdLnUxNlsyXSArIHByaXZbMV0udTE2WzNdOw0KDQog
ICAgICAgICAgICAgICAgZCA9IHJ0ZV9wa3RtYnVmX210b2QobWJ1ZlszXSwgdm9pZCAqKTsNCiAg
ICAgICAgICAgICAgICBydGVfbWVtY3B5KGQsIG5oW3ByaXZbMV0udTE2WzRdXS5yZXdyaXRlX2Rh
dGEsDQogICAgICAgICAgICAgICAgICAgICAgICAgICBuaFtwcml2WzFdLnUxNls0XV0ucmV3cml0
ZV9sZW4pOw0KICAgICAgICAgICAgICAgIG5leHRbM10gPSBuaFtwcml2WzFdLnUxNls0XV0udHhf
bm9kZTsNCiAgICAgICAgICAgICAgICBpcCA9IChzdHJ1Y3QgcnRlX2lwdjRfaGRyICopKCh1aW50
OF90ICopZCArDQogICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKHN0cnVjdCBydGVfZXRoZXJf
aGRyKSk7DQogICAgICAgICAgICAgICAgaXAtPnRpbWVfdG9fbGl2ZSA9IHByaXZbMV0udTE2WzVd
IC0gMTsNCiAgICAgICAgICAgICAgICBpcC0+aGRyX2NoZWNrc3VtID0gcHJpdlsxXS51MTZbNl0g
KyBwcml2WzFdLnUxNls3XTsNCg0KCUxlYWRzIHRvIHNvbWV0aGluZyBsaWtlOg0KCQ0KICAgICAg
ICAgICAgICAgIGZvciAoaSA9IDAsIGogPSAwOyBpIDwgQlVGX1BFUl9MT09QOyBpICs9IDIsIGor
Kykgew0KICAgICAgICAgICAgICAgICAgICAgICAgcHJpdltqXS51NjRbMF0gPSBydGVfbm9kZV9t
YnVmX3ByaXYxKG1idWZbaV0pLT51Ow0KICAgICAgICAgICAgICAgICAgICAgICAgcHJpdltqXS51
MzJbMV0gKz0gcnRlX2NwdV90b19iZV8xNigweDAxMDApOw0KICAgICAgICAgICAgICAgICAgICAg
ICAgZCA9IHJ0ZV9wa3RtYnVmX210b2QobWJ1ZltpXSwgdm9pZCAqKTsNCiAgICAgICAgICAgICAg
ICAgICAgICAgIGlwID0gKHN0cnVjdCBydGVfaXB2NF9oZHIgKikoKHVpbnQ4X3QgKilkICsNCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKHN0cnVjdCBy
dGVfZXRoZXJfaGRyKSk7DQogICAgICAgICAgICAgICAgICAgICAgICBpcC0+dGltZV90b19saXZl
ID0gcHJpdltqXS51MTZbMV0gLSAxOw0KICAgICAgICAgICAgICAgICAgICAgICAgaXAtPmhkcl9j
aGVja3N1bSA9IHByaXZbal0udTE2WzJdICsgcHJpdltqXS51MTZbM107DQogICAgICAgICAgICAg
ICAgICAgICAgICBydGVfbWVtY3B5KGQsIG5oW3ByaXZbal0udTE2WzBdXS5yZXdyaXRlX2RhdGEs
DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5oW3ByaXZbal0udTE2WzBdXS5y
ZXdyaXRlX2xlbik7DQoNCiAgICAgICAgICAgICAgICAgICAgICAgIG5leHRbaV0gPSBuaFtwcml2
W2pdLnUxNlswXV0udHhfbm9kZTsNCg0KICAgICAgICAgICAgICAgICAgICAgICAgcHJpdltqXS51
NjRbMV0gPSBydGVfbm9kZV9tYnVmX3ByaXYxKG1idWZbaSArIDFdKS0+dTsNCiAgICAgICAgICAg
ICAgICAgICAgICAgIHByaXZbal0udTMyWzNdICs9IHJ0ZV9jcHVfdG9fYmVfMTYoMHgwMTAwKTsN
CiAgICAgICAgICAgICAgICAgICAgICAgIGQgPSBydGVfcGt0bWJ1Zl9tdG9kKG1idWZbaSArIDFd
LCB2b2lkICopOw0KICAgICAgICAgICAgICAgICAgICAgICAgaXAgPSAoc3RydWN0IHJ0ZV9pcHY0
X2hkciAqKSgodWludDhfdCAqKWQgKw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNpemVvZihzdHJ1Y3QgcnRlX2V0aGVyX2hkcikpOw0KICAgICAgICAgICAgICAgICAg
ICAgICAgaXAtPnRpbWVfdG9fbGl2ZSA9IHByaXZbal0udTE2WzVdIC0gMTsNCiAgICAgICAgICAg
ICAgICAgICAgICAgIGlwLT5oZHJfY2hlY2tzdW0gPSBwcml2W2pdLnUxNls2XSArIHByaXZbal0u
dTE2WzddOw0KICAgICAgICAgICAgICAgICAgICAgICAgcnRlX21lbWNweShkLCBuaFtwcml2W2pd
LnUxNls0XV0ucmV3cml0ZV9kYXRhLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBuaFtwcml2W2pdLnUxNls0XV0ucmV3cml0ZV9sZW4pOw0KDQogICAgICAgICAgICAgICAgICAg
ICAgICBuZXh0W2kgKyAxXSA9IG5oW3ByaXZbal0udTE2WzRdXS50eF9ub2RlOw0KICAgICAgICAg
ICAgICAgIH0NCglXaGljaCBpcyBraW5kIG9mIHVucmVhZGFibGUuDQoNCjIuIE5vdCBhbGwgY29t
cGlsZXJzIGFyZSBtYWRlIGVxdWFsLiBJIGZvdW5kIHRoYXQgbW9zdCBvZiB0aGUgY29tcGlsZXJz
IGRvbuKAmXQgDQogICAgIFVucm9sbCB0aGUgbG9vcCBhYm92ZSBldmVuIHdoZW4gY29tcGlsZWQg
d2l0aCBgLWZ1bnJvbGwtYWxsLWxvb3BzYC4NCiAgICAgSSBoYXZlIGNoZWNrZWQgd2l0aCBmb2xs
b3dpbmcgY29tcGlsZXJzOg0KCUdDQyA5LjIuMA0KCUNsYW5nIDkuMC4xDQoJQWFyY2g2NCBHQ0Mg
Ny4zLjANCglBYXJjaDY0IEdDQyA5LjIuMA0KCQkJDQoNCjMuIFBlcmZvcm1hbmNlIHdpc2UgSSBz
ZWUgYSBsb3Qgb2YgZGVncmFkYXRpb24gb24gb3VyIHBsYXRmb3JtIGF0IGxlYXN0IDEzJS4NCiAg
ICBPbiBJQSB3aXRoIGEgQnJvYWR3ZWxsKFhlb24gRTUtMjY5MCkgYW5kIGk0MGUgdGhlIHBlcmZv
cm1hbmNlIHJlbWFpbiBzYW1lIHcuci50IFJ4L1R4IHNpbmNlIHRoZSANCiAgICBob3RzcG90IGlz
IGluIHRoZSBUeCBwYXRoIG9mIHRoZSBkcml2ZXIgd2hpY2ggbGltaXRzIHRoZSBwZXIgY29yZSBj
YXBhYmlsaXR5Lg0KICAgIEJ1dCB0aGUgcGVyZm9ybWFuY2UgZGlmZmVyZW5jZSBpbiBudW1iZXIg
b2YgY3ljbGVzIHBlciBub2RlIGNhbiBiZSBzZWVuIGJlbG93Og0KDQoJSGFuZCB1bnJvbGxpbmc6
DQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0t
LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t
Ky0tLS0tLS0tLS0tKw0KfE5vZGUgICAgICAgICAgICAgICAgICAgICAgICAgICB8Y2FsbHMgICAg
ICAgICAgfG9ianMgICAgICAgICAgIHxyZWFsbG9jX2NvdW50ICB8b2Jqcy9jYWxsICAgICAgfG9i
anMvc2VjKDEwRTYpIHxjeWNsZXMvY2FsbHwNCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0t
LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rDQp8aXA0X2xvb2t1cCAgICAg
ICAgICAgICAgICAgICAgIHw3NzY1OTE4ICAgICAgICB8MjQ4NTA5MzQ0ICAgICAgfDEgICAgICAg
ICAgICAgIHwzMi4wMDAgICAgICAgICB8MjcuNzI1NDA4ICAgICAgfDc3OS4wMDAwICAgfA0KfGlw
NF9yZXdyaXRlICAgICAgICAgICAgICAgICAgICB8Nzc2NTkyNSAgICAgICAgfDI0ODUwOTU2OCAg
ICAgIHwxICAgICAgICAgICAgICB8MzIuMDAwICAgICAgICAgfDI3LjcyNTQwOCAgICAgIHw0MjUu
MDAwMCAgIHwNCnxldGhkZXZfdHgtMSAgICAgICAgICAgICAgICAgICAgfDc3NjU5MjcgICAgICAg
IHwyMDQwNTYyMjMgICAgICB8MSAgICAgICAgICAgICAgfDI2LjAwMCAgICAgICAgIHwyMi43NjI3
MjAgICAgICB8NTk3LjAwMDAgICB8DQp8cGt0X2Ryb3AgICAgICAgICAgICAgICAgICAgICAgIHwx
Mzg5MTcwICAgICAgICB8NDQ0NTM0MDkgICAgICAgfDEgICAgICAgICAgICAgIHwzMi4wMDAgICAg
ICAgICB8NC45NjI2ODggICAgICAgfDI5OC4wMDAwICAgfA0KfGV0aGRldl9yeC0wLTAgICAgICAg
ICAgICAgICAgICB8NjM2MDQxMTEgICAgICAgfDI0ODUwOTc5MiAgICAgIHwyICAgICAgICAgICAg
ICB8MzIuMDAwICAgICAgICAgfDI3LjcyNTQwOCAgICAgIHw5ODIuMDAwMCAgIHwNCistLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0r
LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t
LS0rDQoJDQoJVy9vIHVucm9sbGluZzoNCg0KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0t
LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSsNCnxOb2RlICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfGNhbGxzICAgICAgICAgIHxvYmpzICAgICAgICAgICB8cmVhbGxvY19j
b3VudCAgfG9ianMvY2FsbCAgICAgIHxvYmpzL3NlYygxMEU2KSB8Y3ljbGVzL2NhbGx8DQorLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t
LS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0t
LS0tLS0tKw0KfGlwNF9sb29rdXAgICAgICAgICAgICAgICAgICAgICB8MTg4NjQ2NDAgICAgICAg
fDYwMzY2ODQ0OCAgICAgIHwxICAgICAgICAgICAgICB8MzIuMDAwICAgICAgICAgfDI2LjA1MTMy
OCAgICAgIHw4MjguMDAwMCAgIHwNCnxpcDRfcmV3cml0ZSAgICAgICAgICAgICAgICAgICAgfDE4
ODY0NjQ2ICAgICAgIHw2MDM2Njg2NDAgICAgICB8MSAgICAgICAgICAgICAgfDMyLjAwMCAgICAg
ICAgIHwyNi4wNTEzMjggICAgICB8NTM0LjAwMDAgICB8DQp8ZXRoZGV2X3R4LTEgICAgICAgICAg
ICAgICAgICAgIHwxODg2NDY0OCAgICAgICB8NTI3ODc0MTc1ICAgICAgfDEgICAgICAgICAgICAg
IHwyNy4wMDAgICAgICAgICB8MjIuNzgwMjU2ICAgICAgfDYzMy4wMDAwICAgfA0KfHBrdF9kcm9w
ICAgICAgICAgICAgICAgICAgICAgICB8MjM2ODU4MCAgICAgICAgfDc1Nzk0NTI5ICAgICAgIHwx
ICAgICAgICAgICAgICB8MzIuMDAwICAgICAgICAgfDMuMjcxMDcyICAgICAgIHwyODYuMDAwMCAg
IHwNCnxldGhkZXZfcngtMC0wICAgICAgICAgICAgICAgICAgfDI4MjA1ODIyNiAgICAgIHw2MDM2
Njg4NjQgICAgICB8MiAgICAgICAgICAgICAgfDMyLjAwMCAgICAgICAgIHwyNi4wNTEzMjggICAg
ICB8OTk0LjAwMDAgICB8DQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t
LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0r
LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKw0KDQpDb25zaWRlcmluZyB0aGUgYWJvdmUgZmlu
ZGluZ3Mgd2Ugd291bGQgbGlrZSB0byBjb250aW51ZSB1bnJvbGxpbmcgdGhlIGxvb3BzIGJ5IGhh
bmQuDQoNClJlZ2FyZHMsDQpQYXZhbi4NCg0KPi0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+
RnJvbTogUmF5IEtpbnNlbGxhIDxtZHJAYXNocm9lLmV1Pg0KPlNlbnQ6IEZyaWRheSwgTWFyY2gg
MjAsIDIwMjAgMjo0NCBQTQ0KPlRvOiBQYXZhbiBOaWtoaWxlc2ggQmhhZ2F2YXR1bGEgPHBiaGFn
YXZhdHVsYUBtYXJ2ZWxsLmNvbT47IEplcmluDQo+SmFjb2IgS29sbGFudWtrYXJhbiA8amVyaW5q
QG1hcnZlbGwuY29tPjsgTml0aGluIEt1bWFyIERhYmlscHVyYW0NCj48bmRhYmlscHVyYW1AbWFy
dmVsbC5jb20+DQo+Q2M6IGRldkBkcGRrLm9yZzsgdGhvbWFzQG1vbmphbG9uLm5ldDsNCj5kYXZp
ZC5tYXJjaGFuZEByZWRoYXQuY29tOyBtYXR0aWFzLnJvbm5ibG9tQGVyaWNzc29uLmNvbTsgS2ly
YW4NCj5LdW1hciBLb2traWxhZ2FkZGEgPGtpcmFua3VtYXJrQG1hcnZlbGwuY29tPg0KPlN1Ympl
Y3Q6IFJlOiBbRVhUXSBSZTogW2RwZGstZGV2XSBbUEFUQ0ggdjEgMjAvMjZdIG5vZGU6IGlwdjQg
bG9va3VwDQo+Zm9yIHg4Ng0KPg0KPg0KPg0KPk9uIDE5LzAzLzIwMjAgMTY6MTMsIFBhdmFuIE5p
a2hpbGVzaCBCaGFnYXZhdHVsYSB3cm90ZToNCj4+DQo+Pg0KPj4+IC0tLS0tT3JpZ2luYWwgTWVz
c2FnZS0tLS0tDQo+Pj4gRnJvbTogUmF5IEtpbnNlbGxhIDxtZHJAYXNocm9lLmV1Pg0KPj4+IFNl
bnQ6IFRodXJzZGF5LCBNYXJjaCAxOSwgMjAyMCA5OjIxIFBNDQo+Pj4gVG86IFBhdmFuIE5pa2hp
bGVzaCBCaGFnYXZhdHVsYSA8cGJoYWdhdmF0dWxhQG1hcnZlbGwuY29tPjsNCj5KZXJpbg0KPj4+
IEphY29iIEtvbGxhbnVra2FyYW4gPGplcmluakBtYXJ2ZWxsLmNvbT47IE5pdGhpbiBLdW1hcg0K
PkRhYmlscHVyYW0NCj4+PiA8bmRhYmlscHVyYW1AbWFydmVsbC5jb20+DQo+Pj4gQ2M6IGRldkBk
cGRrLm9yZzsgdGhvbWFzQG1vbmphbG9uLm5ldDsNCj4+PiBkYXZpZC5tYXJjaGFuZEByZWRoYXQu
Y29tOyBtYXR0aWFzLnJvbm5ibG9tQGVyaWNzc29uLmNvbTsNCj5LaXJhbg0KPj4+IEt1bWFyIEtv
a2tpbGFnYWRkYSA8a2lyYW5rdW1hcmtAbWFydmVsbC5jb20+DQo+Pj4gU3ViamVjdDogUmU6IFtF
WFRdIFJlOiBbZHBkay1kZXZdIFtQQVRDSCB2MSAyMC8yNl0gbm9kZTogaXB2NA0KPmxvb2t1cA0K
Pj4+IGZvciB4ODYNCj4+Pg0KPj4+DQo+Pj4NCj4+PiBPbiAxOS8wMy8yMDIwIDE0OjIyLCBQYXZh
biBOaWtoaWxlc2ggQmhhZ2F2YXR1bGEgd3JvdGU6DQo+Pj4+PiBPbiAxOC8wMy8yMDIwIDIxOjM1
LCBqZXJpbmpAbWFydmVsbC5jb20gd3JvdGU6DQo+Pj4+Pj4gRnJvbTogUGF2YW4gTmlraGlsZXNo
IDxwYmhhZ2F2YXR1bGFAbWFydmVsbC5jb20+DQo+Pj4+Pj4NCj4+Pj4+PiBBZGQgSVB2NCBsb29r
dXAgcHJvY2VzcyBmdW5jdGlvbiBmb3IgaXA0X2xvb2t1cA0KPj4+Pj4+IHJ0ZV9ub2RlLiBUaGlz
IG5vZGUgcGVyZm9ybXMgTFBNIGxvb2t1cCB1c2luZyB4ODZfNjQNCj4+Pj4+PiB2ZWN0b3Igc3Vw
cG9ydGVkIFJURV9MUE0gQVBJIG9uIGV2ZXJ5IHBhY2tldCByZWNlaXZlZA0KPj4+Pj4+IGFuZCBm
b3J3YXJkcyBpdCB0byBhIG5leHQgbm9kZSB0aGF0IGlzIGlkZW50aWZpZWQgYnkNCj4+Pj4+PiBs
b29rdXAgcmVzdWx0Lg0KPj4+Pj4+DQo+Pj4+Pj4gU2lnbmVkLW9mZi1ieTogUGF2YW4gTmlraGls
ZXNoIDxwYmhhZ2F2YXR1bGFAbWFydmVsbC5jb20+DQo+Pj4+Pj4gU2lnbmVkLW9mZi1ieTogTml0
aGluIERhYmlscHVyYW0gPG5kYWJpbHB1cmFtQG1hcnZlbGwuY29tPg0KPj4+Pj4+IFNpZ25lZC1v
ZmYtYnk6IEtpcmFuIEt1bWFyIEsgPGtpcmFua3VtYXJrQG1hcnZlbGwuY29tPg0KPj4+Pj4+IC0t
LQ0KPj4+Pj4+ICBsaWIvbGlicnRlX25vZGUvaXA0X2xvb2t1cC5jIHwgMjQ1DQo+Pj4+PiArKysr
KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKw0KPj4+Pj4+ICAxIGZpbGUgY2hhbmdlZCwg
MjQ1IGluc2VydGlvbnMoKykNCj4+Pj4+Pg0KPj4+Pj4+IGRpZmYgLS1naXQgYS9saWIvbGlicnRl
X25vZGUvaXA0X2xvb2t1cC5jDQo+Pj4+PiBiL2xpYi9saWJydGVfbm9kZS9pcDRfbG9va3VwLmMN
Cj4+Pj4+PiBpbmRleCBkN2ZjZDExNTguLmMwMDNlOWM5MSAxMDA2NDQNCj4+Pj4+PiAtLS0gYS9s
aWIvbGlicnRlX25vZGUvaXA0X2xvb2t1cC5jDQo+Pj4+Pj4gKysrIGIvbGliL2xpYnJ0ZV9ub2Rl
L2lwNF9sb29rdXAuYw0KPj4+Pj4+IEBAIC0yNjQsNiArMjY0LDI1MSBAQCBpcDRfbG9va3VwX25v
ZGVfcHJvY2VzcyhzdHJ1Y3QNCj4+PiBydGVfZ3JhcGgNCj4+Pj4+ICpncmFwaCwgc3RydWN0IHJ0
ZV9ub2RlICpub2RlLA0KPj4+Pj4+ICAJcmV0dXJuIG5iX29ianM7DQo+Pj4+Pj4gIH0NCj4+Pj4+
Pg0KPj4+Pj4+ICsjZWxpZiBkZWZpbmVkKFJURV9BUkNIX1g4NikNCj4+Pj4+PiArDQo+Pj4+Pj4g
Ky8qIFg4NiBTU0UgKi8NCj4+Pj4+PiArc3RhdGljIHVpbnQxNl90DQo+Pj4+Pj4gK2lwNF9sb29r
dXBfbm9kZV9wcm9jZXNzKHN0cnVjdCBydGVfZ3JhcGggKmdyYXBoLCBzdHJ1Y3QNCj4+PiBydGVf
bm9kZQ0KPj4+Pj4gKm5vZGUsDQo+Pj4+Pj4gKwkJCXZvaWQgKipvYmpzLCB1aW50MTZfdCBuYl9v
YmpzKQ0KPj4+Pj4+ICt7DQo+Pj4+Pj4gKwlzdHJ1Y3QgcnRlX21idWYgKm1idWYwLCAqbWJ1ZjEs
ICptYnVmMiwgKm1idWYzLA0KPioqcGt0czsNCj4+Pj4+PiArCXJ0ZV9lZGdlX3QgbmV4dDAsIG5l
eHQxLCBuZXh0MiwgbmV4dDMsIG5leHRfaW5kZXg7DQo+Pj4+Pj4gKwlzdHJ1Y3QgcnRlX2lwdjRf
aGRyICppcHY0X2hkcjsNCj4+Pj4+PiArCXN0cnVjdCBydGVfZXRoZXJfaGRyICpldGhfaGRyOw0K
Pj4+Pj4+ICsJdWludDMyX3QgaXAwLCBpcDEsIGlwMiwgaXAzOw0KPj4+Pj4+ICsJdm9pZCAqKnRv
X25leHQsICoqZnJvbTsNCj4+Pj4+PiArCXVpbnQxNl90IGxhc3Rfc3BlYyA9IDA7DQo+Pj4+Pj4g
Kwl1aW50MTZfdCBuX2xlZnRfZnJvbTsNCj4+Pj4+PiArCXN0cnVjdCBydGVfbHBtICpscG07DQo+
Pj4+Pj4gKwl1aW50MTZfdCBoZWxkID0gMDsNCj4+Pj4+PiArCXVpbnQzMl90IGRyb3Bfbmg7DQo+
Pj4+Pj4gKwlydGVfeG1tX3QgZHN0Ow0KPj4+Pj4+ICsJX19tMTI4aSBkaXA7IC8qIFNTRSByZWdp
c3RlciAqLw0KPj4+Pj4+ICsJaW50IHJjLCBpOw0KPj4+Pj4+ICsNCj4+Pj4+PiArCS8qIFNwZWN1
bGF0aXZlIG5leHQgKi8NCj4+Pj4+PiArCW5leHRfaW5kZXggPQ0KPlJURV9OT0RFX0lQNF9MT09L
VVBfTkVYVF9SRVdSSVRFOw0KPj4+Pj4+ICsJLyogRHJvcCBub2RlICovDQo+Pj4+Pj4gKwlkcm9w
X25oID0NCj4+Pj4+ICgodWludDMyX3QpUlRFX05PREVfSVA0X0xPT0tVUF9ORVhUX1BLVF9EUk9Q
KSA8PCAxNjsNCj4+Pj4+PiArDQo+Pj4+Pj4gKwkvKiBHZXQgc29ja2V0IHNwZWNpZmljIExQTSBm
cm9tIGN0eCAqLw0KPj4+Pj4+ICsJbHBtID0gKigoc3RydWN0IHJ0ZV9scG0gKiopbm9kZS0+Y3R4
KTsNCj4+Pj4+PiArDQo+Pj4+Pj4gKwlwa3RzID0gKHN0cnVjdCBydGVfbWJ1ZiAqKilvYmpzOw0K
Pj4+Pj4+ICsJZnJvbSA9IG9ianM7DQo+Pj4+Pj4gKwluX2xlZnRfZnJvbSA9IG5iX29ianM7DQo+
Pj4+Pg0KPj4+Pj4gSSBkb3VidCB0aGlzIGluaXRpYWwgcHJlZmV0Y2ggb2YgdGhlIGZpcnN0IDQg
cGFja2V0cyBoYXMgYW55IGJlbmVmaXQuDQo+Pj4+DQo+Pj4+IEFjayB3aWxsIHJlbW92ZSBpbiB2
MiBmb3IgeDg2Lg0KPj4+Pg0KPj4+Pj4NCj4+Pj4+PiArCWlmIChuX2xlZnRfZnJvbSA+PSA0KSB7
DQo+Pj4+Pj4gKwkJZm9yIChpID0gMDsgaSA8IDQ7IGkrKykgew0KPj4+Pj4+ICsNCj4JcnRlX3By
ZWZldGNoMChydGVfcGt0bWJ1Zl9tdG9kKHBrdHNbaV0sDQo+Pj4+Pj4gKwkJCQkJCSAgICAgICBz
dHJ1Y3QNCj5ydGVfZXRoZXJfaGRyDQo+Pj4+PiAqKSArDQo+Pj4+Pj4gKwkJCQkgICAgICAxKTsN
Cj4+Pj4+PiArCQl9DQo+Pj4+Pj4gKwl9DQo+Pj4+Pj4gKw0KPj4+Pj4+ICsJLyogR2V0IHN0cmVh
bSBmb3IgdGhlIHNwZWN1bGF0ZWQgbmV4dCBub2RlICovDQo+Pj4+Pj4gKwl0b19uZXh0ID0gcnRl
X25vZGVfbmV4dF9zdHJlYW1fZ2V0KGdyYXBoLCBub2RlLA0KPj4+Pj4gbmV4dF9pbmRleCwgbmJf
b2Jqcyk7DQo+Pj4+Pg0KPj4+Pj4gU3VnZ2VzdCB5b3UgZG9uJ3QgcmV1c2UgdGhlIGhhbmQtdW5y
b2xsaW5nIG9wdGltaXphdGlvbiBmcm9tDQo+RkQuaW8NCj4+Pj4+IFZQUC4NCj4+Pj4+IEkgaGF2
ZSBuZXZlciBmb3VuZCBhbnkgcGVyZm9ybWFuY2UgYmVuZWZpdCBmcm9tIHRoZW0sIGFuZCB0aGV5
DQo+Pj4+PiBtYWtlIHRoZSBjb2RlIHVubmVjZXNzYXJpbHkgdmVyYm9zZS4NCj4+Pj4+DQo+Pj4+
DQo+Pj4+IEhvdyB3b3VsZCBiZSB0YWtlIHRoZSBiZW5lZml0IG9mIHJ0ZV9scG1fbG9va3VweDQg
d2l0aG91dA0KPj4+IHVucm9sbGluZyB0aGUgbG9vcD8uDQo+Pj4+IEFsc28sIGluIGZ1dHVyZSBp
ZiB3ZSBhcmUgdXNpbmcgcnRlX3JpYiBhbmQgZmliIHdpdGggYSBDUFUgc3VwcG9ydGluZw0KPj4+
IHdpZGVyIFNJTUQgd2UgbWlnaHQNCj4+Pj4gbmVlZCB0byB1bnJvbGwgdGhlbSBmdXJ0aGVyIChB
VlgyNTYgQU5EIDUxMiBjdXJyZW50bHkNCj4+PiBydGVfbHBtX2xvb2t1cCB1c2VzIG9ubHkgMTI4
Yml0DQo+Pj4+IHNpbmNlIGl0IGlzIG9ubHkgdXNlcyBTU0UgZXh0ZW5zaW9uKS4NCj4+Pg0KPj4+
IExldCB0aGUgY29tcGlsZXIgZG8gaXQgZm9yIHlvdSwgYnV0IHVzaW5nIGEgY29uc3RhbnQgdmVj
dG9yIGxlbmd0aC4NCj4+PiBmb3IgKGludCBpPTA7IGkgPCA0OyArK2kpIHsgLi4uIH0NCj4+Pg0K
Pj4NCj4+IE9rLCBJIHRoaW5rIEkgbWlzdW5kZXJzdG9vZCB0aGUgcHJldmlvdXMgY29tbWVudC4N
Cj4+IEl0IHdhcyBvbmx5IGZvciB0aGUgcHJlZmV0Y2hlcyBpbiB0aGUgbG9vcCByaWdodD8NCj4N
Cj4NCj5ubywgaXQgd2FzIGZvciBhbGwgdGhlIG5lZWRsZXNzIHJlcGV0aXRpb24uDQo+aGFuZC11
bnJvbGxpbmcgbG9vcHMgc2VydmUgbm8gcHVycG9zZSBidXQgdG8gYWRkIHZlcmJvc2l0eS4NCj4N
Cj4+DQo+Pj4+DQo+Pj4+Pg0KPj4+Pj4+ICsJd2hpbGUgKG5fbGVmdF9mcm9tID49IDQpIHsNCj4+
Pj4+PiArCQkvKiBQcmVmZXRjaCBuZXh0LW5leHQgbWJ1ZnMgKi8NCj4+Pj4+PiArCQlpZiAobGlr
ZWx5KG5fbGVmdF9mcm9tID49IDExKSkgew0KPj4+Pj4+ICsJCQlydGVfcHJlZmV0Y2gwKHBrdHNb
OF0pOw0KPj4+Pj4+ICsJCQlydGVfcHJlZmV0Y2gwKHBrdHNbOV0pOw0KPj4+Pj4+ICsJCQlydGVf
cHJlZmV0Y2gwKHBrdHNbMTBdKTsNCj4+Pj4+PiArCQkJcnRlX3ByZWZldGNoMChwa3RzWzExXSk7
DQo+Pj4+Pj4gKwkJfQ0KPj4+Pj4+ICsNCj4+Pj4+PiArCQkvKiBQcmVmZXRjaCBuZXh0IG1idWYg
ZGF0YSAqLw0KPj4+Pj4+ICsJCWlmIChsaWtlbHkobl9sZWZ0X2Zyb20gPj0gNykpIHsNCj4+Pj4+
PiArDQo+CXJ0ZV9wcmVmZXRjaDAocnRlX3BrdG1idWZfbXRvZChwa3RzWzRdLA0KPj4+Pj4+ICsJ
CQkJCQkgICAgICAgc3RydWN0DQo+cnRlX2V0aGVyX2hkcg0KPj4+Pj4gKikgKw0KPj4+Pj4+ICsJ
CQkJICAgICAgMSk7DQo+Pj4+Pj4gKw0KPglydGVfcHJlZmV0Y2gwKHJ0ZV9wa3RtYnVmX210b2Qo
cGt0c1s1XSwNCj4+Pj4+PiArCQkJCQkJICAgICAgIHN0cnVjdA0KPnJ0ZV9ldGhlcl9oZHINCj4+
Pj4+ICopICsNCj4+Pj4+PiArCQkJCSAgICAgIDEpOw0KPj4+Pj4+ICsNCj4JcnRlX3ByZWZldGNo
MChydGVfcGt0bWJ1Zl9tdG9kKHBrdHNbNl0sDQo+Pj4+Pj4gKwkJCQkJCSAgICAgICBzdHJ1Y3QN
Cj5ydGVfZXRoZXJfaGRyDQo+Pj4+PiAqKSArDQo+Pj4+Pj4gKwkJCQkgICAgICAxKTsNCj4+Pj4+
PiArDQo+CXJ0ZV9wcmVmZXRjaDAocnRlX3BrdG1idWZfbXRvZChwa3RzWzddLA0KPj4+Pj4+ICsJ
CQkJCQkgICAgICAgc3RydWN0DQo+cnRlX2V0aGVyX2hkcg0KPj4+Pj4gKikgKw0KPj4+Pj4+ICsJ
CQkJICAgICAgMSk7DQo+Pj4+Pj4gKwkJfQ0KPj4+Pj4+ICsNCj4+Pj4+PiArCQltYnVmMCA9IHBr
dHNbMF07DQo+Pj4+Pj4gKwkJbWJ1ZjEgPSBwa3RzWzFdOw0KPj4+Pj4+ICsJCW1idWYyID0gcGt0
c1syXTsNCj4+Pj4+PiArCQltYnVmMyA9IHBrdHNbM107DQo+Pj4+Pj4gKw0KPj4+Pj4+ICsJCXBr
dHMgKz0gNDsNCj4+Pj4+PiArCQluX2xlZnRfZnJvbSAtPSA0Ow0KPj4+Pj4+ICsNCj4+Pj4+PiAr
CQkvKiBFeHRyYWN0IERJUCBvZiBtYnVmMCAqLw0KPj4+Pj4+ICsJCWV0aF9oZHIgPSBydGVfcGt0
bWJ1Zl9tdG9kKG1idWYwLCBzdHJ1Y3QNCj4+Pj4+IHJ0ZV9ldGhlcl9oZHIgKik7DQo+Pj4+Pj4g
KwkJaXB2NF9oZHIgPSAoc3RydWN0IHJ0ZV9pcHY0X2hkciAqKShldGhfaGRyICsgMSk7DQo+Pj4+
Pj4gKwkJaXAwID0gaXB2NF9oZHItPmRzdF9hZGRyOw0KPj4+Pj4+ICsJCS8qIEV4dHJhY3QgY2tz
dW0sIHR0bCBhcyBpcHY0IGhkciBpcyBpbiBjYWNoZSAqLw0KPj4+Pj4+ICsJCXJ0ZV9ub2RlX21i
dWZfcHJpdjEobWJ1ZjApLT5ja3N1bSA9DQo+aXB2NF9oZHItDQo+Pj4+Pj4gaGRyX2NoZWNrc3Vt
Ow0KPj4+Pj4+ICsJCXJ0ZV9ub2RlX21idWZfcHJpdjEobWJ1ZjApLT50dGwgPSBpcHY0X2hkci0N
Cj4+Pj4+PiB0aW1lX3RvX2xpdmU7DQo+Pj4+Pj4gKw0KPj4+Pj4+ICsJCS8qIEV4dHJhY3QgRElQ
IG9mIG1idWYxICovDQo+Pj4+Pj4gKwkJZXRoX2hkciA9IHJ0ZV9wa3RtYnVmX210b2QobWJ1ZjEs
IHN0cnVjdA0KPj4+Pj4gcnRlX2V0aGVyX2hkciAqKTsNCj4+Pj4+PiArCQlpcHY0X2hkciA9IChz
dHJ1Y3QgcnRlX2lwdjRfaGRyICopKGV0aF9oZHIgKyAxKTsNCj4+Pj4+PiArCQlpcDEgPSBpcHY0
X2hkci0+ZHN0X2FkZHI7DQo+Pj4+Pj4gKwkJLyogRXh0cmFjdCBja3N1bSwgdHRsIGFzIGlwdjQg
aGRyIGlzIGluIGNhY2hlICovDQo+Pj4+Pj4gKwkJcnRlX25vZGVfbWJ1Zl9wcml2MShtYnVmMSkt
PmNrc3VtID0NCj5pcHY0X2hkci0NCj4+Pj4+PiBoZHJfY2hlY2tzdW07DQo+Pj4+Pj4gKwkJcnRl
X25vZGVfbWJ1Zl9wcml2MShtYnVmMSktPnR0bCA9IGlwdjRfaGRyLQ0KPj4+Pj4+IHRpbWVfdG9f
bGl2ZTsNCj4+Pj4+PiArDQo+Pj4+Pj4gKwkJLyogRXh0cmFjdCBESVAgb2YgbWJ1ZjIgKi8NCj4+
Pj4+PiArCQlldGhfaGRyID0gcnRlX3BrdG1idWZfbXRvZChtYnVmMiwgc3RydWN0DQo+Pj4+PiBy
dGVfZXRoZXJfaGRyICopOw0KPj4+Pj4+ICsJCWlwdjRfaGRyID0gKHN0cnVjdCBydGVfaXB2NF9o
ZHIgKikoZXRoX2hkciArIDEpOw0KPj4+Pj4+ICsJCWlwMiA9IGlwdjRfaGRyLT5kc3RfYWRkcjsN
Cj4+Pj4+PiArCQkvKiBFeHRyYWN0IGNrc3VtLCB0dGwgYXMgaXB2NCBoZHIgaXMgaW4gY2FjaGUg
Ki8NCj4+Pj4+PiArCQlydGVfbm9kZV9tYnVmX3ByaXYxKG1idWYyKS0+Y2tzdW0gPQ0KPmlwdjRf
aGRyLQ0KPj4+Pj4+IGhkcl9jaGVja3N1bTsNCj4+Pj4+PiArCQlydGVfbm9kZV9tYnVmX3ByaXYx
KG1idWYyKS0+dHRsID0gaXB2NF9oZHItDQo+Pj4+Pj4gdGltZV90b19saXZlOw0KPj4+Pj4+ICsN
Cj4+Pj4+PiArCQkvKiBFeHRyYWN0IERJUCBvZiBtYnVmMyAqLw0KPj4+Pj4+ICsJCWV0aF9oZHIg
PSBydGVfcGt0bWJ1Zl9tdG9kKG1idWYzLCBzdHJ1Y3QNCj4+Pj4+IHJ0ZV9ldGhlcl9oZHIgKik7
DQo+Pj4+Pj4gKwkJaXB2NF9oZHIgPSAoc3RydWN0IHJ0ZV9pcHY0X2hkciAqKShldGhfaGRyICsg
MSk7DQo+Pj4+Pj4gKwkJaXAzID0gaXB2NF9oZHItPmRzdF9hZGRyOw0KPj4+Pj4+ICsNCj4+Pj4+
PiArCQkvKiBQcmVwYXJlIGZvciBsb29rdXAgeDQgKi8NCj4+Pj4+PiArCQlkaXAgPSBfbW1fc2V0
X2VwaTMyKGlwMywgaXAyLCBpcDEsIGlwMCk7DQo+Pj4+Pj4gKw0KPj4+Pj4+ICsJCS8qIEJ5dGUg
c3dhcCA0IElQVjQgYWRkcmVzc2VzLiAqLw0KPj4+Pj4+ICsJCWNvbnN0IF9fbTEyOGkgYnN3YXBf
bWFzayA9IF9tbV9zZXRfZXBpOCgNCj4+Pj4+PiArCQkJMTIsIDEzLCAxNCwgMTUsIDgsIDksIDEw
LCAxMSwgNCwgNSwgNiwgNywgMCwgMSwNCj4yLCAzKTsNCj4+Pj4+PiArCQlkaXAgPSBfbW1fc2h1
ZmZsZV9lcGk4KGRpcCwgYnN3YXBfbWFzayk7DQo+Pj4+Pj4gKw0KPj4+Pj4+ICsJCS8qIEV4dHJh
Y3QgY2tzdW0sIHR0bCBhcyBpcHY0IGhkciBpcyBpbiBjYWNoZSAqLw0KPj4+Pj4+ICsJCXJ0ZV9u
b2RlX21idWZfcHJpdjEobWJ1ZjMpLT5ja3N1bSA9DQo+aXB2NF9oZHItDQo+Pj4+Pj4gaGRyX2No
ZWNrc3VtOw0KPj4+Pj4+ICsJCXJ0ZV9ub2RlX21idWZfcHJpdjEobWJ1ZjMpLT50dGwgPSBpcHY0
X2hkci0NCj4+Pj4+PiB0aW1lX3RvX2xpdmU7DQo+Pj4+Pj4gKw0KPj4+Pj4+ICsJCS8qIFBlcmZv
cm0gTFBNIGxvb2t1cCB0byBnZXQgTkggYW5kIG5leHQNCj5ub2RlICovDQo+Pj4+Pj4gKwkJcnRl
X2xwbV9sb29rdXB4NChscG0sIGRpcCwgZHN0LnUzMiwgZHJvcF9uaCk7DQo+Pj4+Pj4gKw0KPj4+
Pj4+ICsJCS8qIEV4dHJhY3QgbmV4dCBub2RlIGlkIGFuZCBOSCAqLw0KPj4+Pj4+ICsJCXJ0ZV9u
b2RlX21idWZfcHJpdjEobWJ1ZjApLT5uaCA9IGRzdC51MzJbMF0NCj4mDQo+Pj4+PiAweEZGRkY7
DQo+Pj4+Pj4gKwkJbmV4dDAgPSAoZHN0LnUzMlswXSA+PiAxNik7DQo+Pj4+Pj4gKw0KPj4+Pj4+
ICsJCXJ0ZV9ub2RlX21idWZfcHJpdjEobWJ1ZjEpLT5uaCA9IGRzdC51MzJbMV0NCj4mDQo+Pj4+
PiAweEZGRkY7DQo+Pj4+Pj4gKwkJbmV4dDEgPSAoZHN0LnUzMlsxXSA+PiAxNik7DQo+Pj4+Pj4g
Kw0KPj4+Pj4+ICsJCXJ0ZV9ub2RlX21idWZfcHJpdjEobWJ1ZjIpLT5uaCA9IGRzdC51MzJbMl0N
Cj4mDQo+Pj4+PiAweEZGRkY7DQo+Pj4+Pj4gKwkJbmV4dDIgPSAoZHN0LnUzMlsyXSA+PiAxNik7
DQo+Pj4+Pj4gKw0KPj4+Pj4+ICsJCXJ0ZV9ub2RlX21idWZfcHJpdjEobWJ1ZjMpLT5uaCA9IGRz
dC51MzJbM10NCj4mDQo+Pj4+PiAweEZGRkY7DQo+Pj4+Pj4gKwkJbmV4dDMgPSAoZHN0LnUzMlsz
XSA+PiAxNik7DQo+Pj4+Pj4gKw0KPj4+Pj4+ICsJCS8qIEVucXVldWUgZm91ciB0byBuZXh0IG5v
ZGUgKi8NCj4+Pj4+PiArCQlydGVfZWRnZV90IGZpeF9zcGVjID0NCj4+Pj4+PiArCQkJKG5leHRf
aW5kZXggXiBuZXh0MCkgfCAobmV4dF9pbmRleCBeDQo+bmV4dDEpIHwNCj4+Pj4+PiArCQkJKG5l
eHRfaW5kZXggXiBuZXh0MikgfCAobmV4dF9pbmRleCBeDQo+bmV4dDMpOw0KPj4+Pj4+ICsNCj4+
Pj4+PiArCQlpZiAodW5saWtlbHkoZml4X3NwZWMpKSB7DQo+Pj4+Pj4gKwkJCS8qIENvcHkgdGhp
bmdzIHN1Y2Nlc3NmdWxseSBzcGVjdWxhdGVkDQo+dGlsbCBub3cNCj4+Pj4+ICovDQo+Pj4+Pj4g
KwkJCXJ0ZV9tZW1jcHkodG9fbmV4dCwgZnJvbSwgbGFzdF9zcGVjICoNCj4+Pj4+IHNpemVvZihm
cm9tWzBdKSk7DQo+Pj4+Pj4gKwkJCWZyb20gKz0gbGFzdF9zcGVjOw0KPj4+Pj4+ICsJCQl0b19u
ZXh0ICs9IGxhc3Rfc3BlYzsNCj4+Pj4+PiArCQkJaGVsZCArPSBsYXN0X3NwZWM7DQo+Pj4+Pj4g
KwkJCWxhc3Rfc3BlYyA9IDA7DQo+Pj4+Pj4gKw0KPj4+Pj4+ICsJCQkvKiBOZXh0MCAqLw0KPj4+
Pj4+ICsJCQlpZiAobmV4dF9pbmRleCA9PSBuZXh0MCkgew0KPj4+Pj4+ICsJCQkJdG9fbmV4dFsw
XSA9IGZyb21bMF07DQo+Pj4+Pj4gKwkJCQl0b19uZXh0Kys7DQo+Pj4+Pj4gKwkJCQloZWxkKys7
DQo+Pj4+Pj4gKwkJCX0gZWxzZSB7DQo+Pj4+Pj4gKwkJCQlydGVfbm9kZV9lbnF1ZXVlX3gxKGdy
YXBoLA0KPm5vZGUsDQo+Pj4+PiBuZXh0MCwNCj4+Pj4+PiArCQkJCQkJICAgIGZyb21bMF0pOw0K
Pj4+Pj4+ICsJCQl9DQo+Pj4+Pj4gKw0KPj4+Pj4+ICsJCQkvKiBOZXh0MSAqLw0KPj4+Pj4+ICsJ
CQlpZiAobmV4dF9pbmRleCA9PSBuZXh0MSkgew0KPj4+Pj4+ICsJCQkJdG9fbmV4dFswXSA9IGZy
b21bMV07DQo+Pj4+Pj4gKwkJCQl0b19uZXh0Kys7DQo+Pj4+Pj4gKwkJCQloZWxkKys7DQo+Pj4+
Pj4gKwkJCX0gZWxzZSB7DQo+Pj4+Pj4gKwkJCQlydGVfbm9kZV9lbnF1ZXVlX3gxKGdyYXBoLA0K
Pm5vZGUsDQo+Pj4+PiBuZXh0MSwNCj4+Pj4+PiArCQkJCQkJICAgIGZyb21bMV0pOw0KPj4+Pj4+
ICsJCQl9DQo+Pj4+Pj4gKw0KPj4+Pj4+ICsJCQkvKiBOZXh0MiAqLw0KPj4+Pj4+ICsJCQlpZiAo
bmV4dF9pbmRleCA9PSBuZXh0Mikgew0KPj4+Pj4+ICsJCQkJdG9fbmV4dFswXSA9IGZyb21bMl07
DQo+Pj4+Pj4gKwkJCQl0b19uZXh0Kys7DQo+Pj4+Pj4gKwkJCQloZWxkKys7DQo+Pj4+Pj4gKwkJ
CX0gZWxzZSB7DQo+Pj4+Pj4gKwkJCQlydGVfbm9kZV9lbnF1ZXVlX3gxKGdyYXBoLA0KPm5vZGUs
DQo+Pj4+PiBuZXh0MiwNCj4+Pj4+PiArCQkJCQkJICAgIGZyb21bMl0pOw0KPj4+Pj4+ICsJCQl9
DQo+Pj4+Pj4gKw0KPj4+Pj4+ICsJCQkvKiBOZXh0MyAqLw0KPj4+Pj4+ICsJCQlpZiAobmV4dF9p
bmRleCA9PSBuZXh0Mykgew0KPj4+Pj4+ICsJCQkJdG9fbmV4dFswXSA9IGZyb21bM107DQo+Pj4+
Pj4gKwkJCQl0b19uZXh0Kys7DQo+Pj4+Pj4gKwkJCQloZWxkKys7DQo+Pj4+Pj4gKwkJCX0gZWxz
ZSB7DQo+Pj4+Pj4gKwkJCQlydGVfbm9kZV9lbnF1ZXVlX3gxKGdyYXBoLA0KPm5vZGUsDQo+Pj4+
PiBuZXh0MywNCj4+Pj4+PiArCQkJCQkJICAgIGZyb21bM10pOw0KPj4+Pj4+ICsJCQl9DQo+Pj4+
Pj4gKw0KPj4+Pj4+ICsJCQlmcm9tICs9IDQ7DQo+Pj4+Pj4gKw0KPj4+Pj4+ICsJCX0gZWxzZSB7
DQo+Pj4+Pj4gKwkJCWxhc3Rfc3BlYyArPSA0Ow0KPj4+Pj4+ICsJCX0NCj4+Pj4+PiArCX0NCj4+
Pj4+PiArDQo+Pj4+Pj4gKwl3aGlsZSAobl9sZWZ0X2Zyb20gPiAwKSB7DQo+Pj4+Pj4gKwkJdWlu
dDMyX3QgbmV4dF9ob3A7DQo+Pj4+Pj4gKw0KPj4+Pj4+ICsJCW1idWYwID0gcGt0c1swXTsNCj4+
Pj4+PiArDQo+Pj4+Pj4gKwkJcGt0cyArPSAxOw0KPj4+Pj4+ICsJCW5fbGVmdF9mcm9tIC09IDE7
DQo+Pj4+Pj4gKw0KPj4+Pj4+ICsJCS8qIEV4dHJhY3QgRElQIG9mIG1idWYwICovDQo+Pj4+Pj4g
KwkJZXRoX2hkciA9IHJ0ZV9wa3RtYnVmX210b2QobWJ1ZjAsIHN0cnVjdA0KPj4+Pj4gcnRlX2V0
aGVyX2hkciAqKTsNCj4+Pj4+PiArCQlpcHY0X2hkciA9IChzdHJ1Y3QgcnRlX2lwdjRfaGRyICop
KGV0aF9oZHIgKyAxKTsNCj4+Pj4+PiArCQkvKiBFeHRyYWN0IGNrc3VtLCB0dGwgYXMgaXB2NCBo
ZHIgaXMgaW4gY2FjaGUgKi8NCj4+Pj4+PiArCQlydGVfbm9kZV9tYnVmX3ByaXYxKG1idWYwKS0+
Y2tzdW0gPQ0KPmlwdjRfaGRyLQ0KPj4+Pj4+IGhkcl9jaGVja3N1bTsNCj4+Pj4+PiArCQlydGVf
bm9kZV9tYnVmX3ByaXYxKG1idWYwKS0+dHRsID0gaXB2NF9oZHItDQo+Pj4+Pj4gdGltZV90b19s
aXZlOw0KPj4+Pj4+ICsNCj4+Pj4+PiArCQlyYyA9IHJ0ZV9scG1fbG9va3VwKGxwbSwNCj5ydGVf
YmVfdG9fY3B1XzMyKGlwdjRfaGRyLQ0KPj4+Pj4+IGRzdF9hZGRyKSwNCj4+Pj4+PiArCQkJCSAg
ICAmbmV4dF9ob3ApOw0KPj4+Pj4+ICsJCW5leHRfaG9wID0gKHJjID09IDApID8gbmV4dF9ob3Ag
OiBkcm9wX25oOw0KPj4+Pj4+ICsNCj4+Pj4+PiArCQlydGVfbm9kZV9tYnVmX3ByaXYxKG1idWYw
KS0+bmggPSBuZXh0X2hvcA0KPiYNCj4+Pj4+IDB4RkZGRjsNCj4+Pj4+PiArCQluZXh0MCA9IChu
ZXh0X2hvcCA+PiAxNik7DQo+Pj4+Pj4gKw0KPj4+Pj4+ICsJCWlmICh1bmxpa2VseShuZXh0X2lu
ZGV4IF4gbmV4dDApKSB7DQo+Pj4+Pj4gKwkJCS8qIENvcHkgdGhpbmdzIHN1Y2Nlc3NmdWxseSBz
cGVjdWxhdGVkDQo+dGlsbCBub3cNCj4+Pj4+ICovDQo+Pj4+Pj4gKwkJCXJ0ZV9tZW1jcHkodG9f
bmV4dCwgZnJvbSwgbGFzdF9zcGVjICoNCj4+Pj4+IHNpemVvZihmcm9tWzBdKSk7DQo+Pj4+Pj4g
KwkJCWZyb20gKz0gbGFzdF9zcGVjOw0KPj4+Pj4+ICsJCQl0b19uZXh0ICs9IGxhc3Rfc3BlYzsN
Cj4+Pj4+PiArCQkJaGVsZCArPSBsYXN0X3NwZWM7DQo+Pj4+Pj4gKwkJCWxhc3Rfc3BlYyA9IDA7
DQo+Pj4+Pj4gKw0KPj4+Pj4+ICsJCQlydGVfbm9kZV9lbnF1ZXVlX3gxKGdyYXBoLCBub2RlLA0K
Pm5leHQwLA0KPj4+Pj4gZnJvbVswXSk7DQo+Pj4+Pj4gKwkJCWZyb20gKz0gMTsNCj4+Pj4+PiAr
CQl9IGVsc2Ugew0KPj4+Pj4+ICsJCQlsYXN0X3NwZWMgKz0gMTsNCj4+Pj4+PiArCQl9DQo+Pj4+
Pj4gKwl9DQo+Pj4+Pj4gKw0KPj4+Pj4+ICsJLyogISEhIEhvbWUgcnVuICEhISAqLw0KPj4+Pj4+
ICsJaWYgKGxpa2VseShsYXN0X3NwZWMgPT0gbmJfb2JqcykpIHsNCj4+Pj4+PiArCQlydGVfbm9k
ZV9uZXh0X3N0cmVhbV9tb3ZlKGdyYXBoLCBub2RlLA0KPj4+Pj4gbmV4dF9pbmRleCk7DQo+Pj4+
Pj4gKwkJcmV0dXJuIG5iX29ianM7DQo+Pj4+Pj4gKwl9DQo+Pj4+Pj4gKw0KPj4+Pj4+ICsJaGVs
ZCArPSBsYXN0X3NwZWM7DQo+Pj4+Pj4gKwkvKiBDb3B5IHRoaW5ncyBzdWNjZXNzZnVsbHkgc3Bl
Y3VsYXRlZCB0aWxsIG5vdyAqLw0KPj4+Pj4+ICsJcnRlX21lbWNweSh0b19uZXh0LCBmcm9tLCBs
YXN0X3NwZWMgKg0KPnNpemVvZihmcm9tWzBdKSk7DQo+Pj4+Pj4gKwlydGVfbm9kZV9uZXh0X3N0
cmVhbV9wdXQoZ3JhcGgsIG5vZGUsIG5leHRfaW5kZXgsDQo+aGVsZCk7DQo+Pj4+Pj4gKw0KPj4+
Pj4+ICsJcmV0dXJuIG5iX29ianM7DQo+Pj4+Pj4gK30NCj4+Pj4+PiArDQo+Pj4+Pj4gICNlbHNl
DQo+Pj4+Pj4NCj4+Pj4+PiAgc3RhdGljIHVpbnQxNl90DQo+Pj4+Pj4NCg==