From mboxrd@z Thu Jan  1 00:00:00 1970
Return-Path: <Alexandre.DERUMIER@groupe-cyllene.com>
Received: from firstgate.proxmox.com (firstgate.proxmox.com [212.224.123.68])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (2048 bits))
 (No client certificate requested)
 by lists.proxmox.com (Postfix) with ESMTPS id 3CFFB84542
 for <pve-devel@lists.proxmox.com>; Mon, 13 Dec 2021 11:59:23 +0100 (CET)
Received: from firstgate.proxmox.com (localhost [127.0.0.1])
 by firstgate.proxmox.com (Proxmox) with ESMTP id 1629316DC2
 for <pve-devel@lists.proxmox.com>; Mon, 13 Dec 2021 11:58:53 +0100 (CET)
Received: from mail02.cetsi.fr (mail02.cetsi.fr [91.151.64.22])
 (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by firstgate.proxmox.com (Proxmox) with ESMTPS id 8EF9616DAE
 for <pve-devel@lists.proxmox.com>; Mon, 13 Dec 2021 11:58:49 +0100 (CET)
Received: from CYLNEXC01.cyllene.corp (unknown [10.0.250.28])
 by mail02.cetsi.fr (Postfix) with ESMTP id 7F7594073C38
 for <pve-devel@lists.proxmox.com>; Mon, 13 Dec 2021 11:58:39 +0100 (CET)
DKIM-Filter: OpenDKIM Filter v2.11.0 mail02.cetsi.fr 7F7594073C38
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=groupe-cyllene.com;
 s=dkim; t=1639393119;
 bh=inANKpD0gzDQ3UAS9hO4VqAcgejnIy91gKcaGXZWiWk=;
 h=From:To:Subject:Date:References:In-Reply-To:From;
 b=YXYhCllvepbSzDGJL7Z9BVulULHI0Nwq5B7IPIi4ktnYnZiEAVzVrpVDsq+aqA7h4
 5oRUr2vdNUmVAkxOnRz4e8vluXWf2iE3mf4qn1z9Zg/MGVqc7PbBXkVh3TiDWpNh26
 hKsHIqf7WNAAz77uvngMbdqV+0pa68YBpF8cnOmw=
Received: from CYLNEXC01.cyllene.corp (10.0.250.28) by CYLNEXC01.cyllene.corp
 (10.0.250.28) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2308.20; Mon, 13 Dec
 2021 11:58:37 +0100
Received: from FRA01-PR2-obe.outbound.protection.outlook.com (10.0.250.254) by
 CYLNEXC01.cyllene.corp (10.0.250.28) with Microsoft SMTP Server
 (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.1.2308.20 via Frontend Transport; Mon, 13 Dec 2021 11:58:37 +0100
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
 b=NTXFuJwvP4r5FhEz4xEOmkL08ZmLiD28scBJEeLwc+3lUa3TchDcyrOeksM5EGuoN8kFPF5DgRt/WiXoQpwf4ybm9YSUFNKZlehTA7Qd1kCvGlLXL2q+0OFMywx/iigGPEgddf0JcqVCz4Ca1rsfx48gIMvA3dJVfewneNeq91Zn0Op3Vob+IiZpZvVv29k1n73puWSOQeqh5IAq5lGt73g/xRCufwOnKvTNTrHPewCgH5nULRUuWavyn0b6fiO82nq7wOglGzuUgRZUeBJ+IJpTnI1yePOH56RkC7OURL1hp+v4yYAI8WjOHSYkWFWEe+wc72Vff2DbXcsxJfZKPg==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; 
 s=arcselector9901;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=inANKpD0gzDQ3UAS9hO4VqAcgejnIy91gKcaGXZWiWk=;
 b=jE6Ovjl1KKldySkbab6GsvRnw/G9A3KJNS68NPhNRXjk27052c5hVnKmDd/TRh94VzELNX3GALVtkT7SO80K+u6BTVaWqsF5vE05wBd824hxEVNZiEO1oIi4fdOBOMcFfEDIyxo1Y8e8A1CFXS6v+OdDJkInJ88O0qSvrgbsHN0xMbI73fDMiUySCYznTMD+c5h+V2loPhpbkKnKWke8Lyl0MWENkkn/wxQOjtFVdjNk8GDYE58pMfHSQjF0F+GC5VzotWcxawvxqGrfRouU+xAgAIt/jNGFeu4HWMpmNN/HTzU1BbfiAS6KU8uRFFiU4Pjr76VtdWQTwlLFUfA7Yg==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=groupe-cyllene.com; dmarc=pass action=none
 header.from=groupe-cyllene.com; dkim=pass header.d=groupe-cyllene.com;
 arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=groupecyllene.onmicrosoft.com; s=selector2-groupecyllene-onmicrosoft-com;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=inANKpD0gzDQ3UAS9hO4VqAcgejnIy91gKcaGXZWiWk=;
 b=RknuSVgpl5olVxytTJ3LYmXz+Sn0Dgccp6uPvxWvA1gF7hJgT/MNiaFFLRfnygk2h91j819snQwlGqnsKs2U8L5GJpnIfN1YQjVQT+H1si+6Z6h1qGCXYo6gB3JtTLj+XrVIpUsX80IVAhnBewKBrbvOJw5sf2+cYuj0TPp1uLo=
Received: from MR1P264MB2481.FRAP264.PROD.OUTLOOK.COM (2603:10a6:501:32::17)
 by MR2P264MB0804.FRAP264.PROD.OUTLOOK.COM (2603:10a6:500:7::14) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4778.15; Mon, 13 Dec
 2021 10:58:36 +0000
Received: from MR1P264MB2481.FRAP264.PROD.OUTLOOK.COM
 ([fe80::1053:4fb1:4041:2221]) by MR1P264MB2481.FRAP264.PROD.OUTLOOK.COM
 ([fe80::1053:4fb1:4041:2221%9]) with mapi id 15.20.4778.017; Mon, 13 Dec 2021
 10:58:36 +0000
From: "DERUMIER, Alexandre" <Alexandre.DERUMIER@groupe-cyllene.com>
To: "pve-devel@lists.proxmox.com" <pve-devel@lists.proxmox.com>,
 "aderumier@odiso.com" <aderumier@odiso.com>
Thread-Topic: [pve-devel] [PATCH pve-ha-manager 1/3] add ressource awareness
 manager
Thread-Index: AQHX7/UoneQ4TxBwfk+vYJXOOhcFaKwwMbYAgAAPH4A=
Date: Mon, 13 Dec 2021 10:58:35 +0000
Message-ID: <feeb375dcb6d494497359b67cd8f60657e31682f.camel@groupe-cyllene.com>
References: <20211213074316.2565139-1-aderumier@odiso.com>
 <20211213074316.2565139-2-aderumier@odiso.com>
 <6402c0c7-20ac-82d5-ecf8-a0b20899e154@proxmox.com>
In-Reply-To: <6402c0c7-20ac-82d5-ecf8-a0b20899e154@proxmox.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
user-agent: Evolution 3.42.2 
authentication-results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=groupe-cyllene.com;
x-ms-publictraffictype: Email
x-ms-office365-filtering-correlation-id: 41332580-a72e-4840-32e2-08d9be2782fa
x-ms-traffictypediagnostic: MR2P264MB0804:EE_
x-microsoft-antispam-prvs: <MR2P264MB0804E40687FFEEC472B03270A1749@MR2P264MB0804.FRAP264.PROD.OUTLOOK.COM>
x-ms-oob-tlc-oobclassifiers: OLM:1091;
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam: BCL:0;
x-microsoft-antispam-message-info: J5MEDpSXTDrrRXk+ZX4dFhufw8efI2dHhmN9yulY0BlMbK1ZWCcyzsu6Mt0j7pyxoc963VseVbo/hmDilLM2ESu3CznM0DhxGRlVxDb5D+ZiMypvyeBcqTMjNiGqOIajd3UYLHl4QbT4QX+OSlpZtPQk9KxDrOu4uafEe4aHqjPFeN7DsTro+1hP6ex9I1Yev90Naf8BdjwNncoYPUvfwpA6CIsuRrDmyY8VKq6q3Dz8L/5mhBcHE6M7dwVFbqid0y+ktFXU71BNNlX8NJEhpDpMwm4Ze/k4KcesUmi14gT2HJkDV3mNo7oh2lI9yzDK63Ftt/eG5GulOG8/KUiTtfBU5mdSrR73S+vuzyc0OmWAMzdNmSu0dIxLvZVn9OGrFCw3NMHmS8XJGFT6OoAbY9RZdGY2fqrsIVuCxvy6KY/Saw+/Zqf3ZECDZr+MwiUJa5NFgn0skPmjOM/rbuNKbqO3npnSGyEunXaRDPc90RV4xS50WCo0GH4GlqVRBKF6P2R3T9ony4oByvca4mNZqUmCzcyvWJezYYJk3UIBY2BA2/JeC3RIwFm4WChXvcMBhom/TKFvKfcGvyEr9CKY0qxhTrc8U7vSFhw6ARuGwH6aRhh7f1kDKjpC/y0dS6nxNHFhwh9hoWn4qjsMgg16I45gPs4dmeEo4davZFS7PFjCBuTAGgoAiwW4JEL1sQ8kNlL553tUEUJBPyuUunau0k7XGJc6W2nEddst6ojOodL6mVlYfnyuFZCaIO6bsPaXgfmmhuTL9eTASMq9Mm6EZcvZUbDKcl6lYbHsnefr6ccnO6GwjrFYR9TV3LMXjt+a
x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:;
 IPV:NLI; SFV:NSPM; H:MR1P264MB2481.FRAP264.PROD.OUTLOOK.COM; PTR:; CAT:NONE;
 SFS:(4636009)(366004)(110136005)(66574015)(6486002)(8676002)(83380400001)(8936002)(19627235002)(36756003)(5660300002)(6506007)(30864003)(6512007)(508600001)(66556008)(71200400001)(86362001)(53546011)(122000001)(316002)(38070700005)(186003)(38100700002)(66446008)(76116006)(64756008)(91956017)(66476007)(66946007)(2616005)(2906002)(166002)(966005)(579004);
 DIR:OUT; SFP:1101; 
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0: =?utf-8?B?TU9nbTVRVHNBcTJiTXpQYzVZd0M3Zmhsem1xRFd2Z3QxSWZUSW5jVGVZUi9F?=
 =?utf-8?B?dVJobmlBQnFyOXpnTGM3OUU1RndQMTdNM0RTVGlmUkdlL1BlQkh2dVBtaE5B?=
 =?utf-8?B?Nm9nQkNXYVk3dUh4N0ZxdFo2U2Q5SXp6VGNKTUpkR0JWN1p0MXJvSzhPelc5?=
 =?utf-8?B?WjUyN3N4S2pTUzdYNUJIUmxkMDZuR1hhV1M4YjhsWmw4VHFuM1hQUksxL1BE?=
 =?utf-8?B?Y0o1eGwxNDJWcUhNdmhteDZoY1B6OWJqaTVHd1VaQWF0VWUrbWRybEFjdDA5?=
 =?utf-8?B?MVhPNVplbFFZeGxKVWhDWndDOFArUnRUTm1MclE2S00wMExlUjFYdnNDem1k?=
 =?utf-8?B?WEdGSVlLdy8rV0k5b1BWSjllQUxxdk5KeitOWmhwNU45eGExQko1TnZad0hV?=
 =?utf-8?B?aUVFR3M1UmJRVHNDNk45TDVsU2hUYU5kOHdjeWJZTVluOTIxWHRDMlRlNVFJ?=
 =?utf-8?B?VWgybXJtL01ZZFh3VW8wb2FyMDc3bWRyc0tUQlE4REt4MnordjhsLy8ralg3?=
 =?utf-8?B?NkZxQ2N3SUFyRDBWSElQZysySms4NjdDRGw1M0QwVFIzS3hVRkgwbEd1SEFI?=
 =?utf-8?B?VUs0NWFkK3c2WnZxTGtsYStNZzd0L0RzL1ZraHhEVms4RXVRTFE1anJydFc5?=
 =?utf-8?B?cjJMNWZuaUYwY0JjUEJITUU4NXVHSWtvV3NyVVMrQ0RJUFpWSFFQTmVieE54?=
 =?utf-8?B?bUxWb2Q4YVZzVFRmT2xkM1lSU202eS9FeGk5dTcyLzRFQ004VmY2TVhwYzI5?=
 =?utf-8?B?anlhN2VuMmc1TmhLZjFGWVZGdTZrYWNNNUptS3hIWlNwTURIUityUDA1dHR0?=
 =?utf-8?B?bTNTVnhjbE9zT252OGYxMkNnZU02L1Z4V1FVVkt2SHduc3NCS2lrSzFSUkcx?=
 =?utf-8?B?RjBQV0wxbmdQeDRiRlo2SXVJL2RERnEyRHBoMDZKWVlKeXQ5Qlp0TFN2Tjdt?=
 =?utf-8?B?cHVtMGdCOG53TSttbXk0Z1pmdHVLVzlGSUVEclM4cVB6eHM5VWlsb01iNjhZ?=
 =?utf-8?B?RTJBdXB4cXdHZE1zTGNId0FYSlJPbTNuM0piWWxmZjRWSGxRa2duTFh2WWhm?=
 =?utf-8?B?d0hVM0FxMmJlc2I1YUNEaVlwSmFFbmtSbVpEbkc0emRNeXJmSWpobVZ1ODVC?=
 =?utf-8?B?L2tPeFdzNHNKMEk3MmdkWUJrMW5rZXk3RXlkVjJrTE9SU1k1YStaQXZIb211?=
 =?utf-8?B?ckZYMTF3bENKRmNWWDZCL05maGNUc2FxdzExVnYzMHBRdlNCeDNVS2hrZDlG?=
 =?utf-8?B?V09Vem4vaGdCbndiaytTekpmOGhtWmxwL0J0dkRETjJXU2hxU2IvenV3b3lY?=
 =?utf-8?B?VXZtWHZHQ0luazF2bGMvVmNlVmZ6U0dhUStabFdxL01IaUIrRUhXNENuVDRv?=
 =?utf-8?B?cm9MS2dBVWFkV0ZvaEdyQ3pORzJ6Y1hLdDk4RHJRMG9NdnQxeDMweVlsSXQw?=
 =?utf-8?B?eUxCRVFmZ1VJd2xPYTVUZUdzNlp1NHRYOTBDcC8rQm1Lck13V1g5djRWUUJY?=
 =?utf-8?B?NTlqdWdReFRDa1VlU2szUHdSZUJTcUJHMkVZRjVZbUhhdXFMdXNBUnltVSsy?=
 =?utf-8?B?ZXIyNjFYWXo1b2hzMVdyWngvd1h4SUhYQjFZOE5vb0tmM2trVlc1WHdZOCtX?=
 =?utf-8?B?VlFRZDVpckttS3g0M3Ivamt0Y1huQkpoL25JVW5aNlRzSmhOczhQMU15N0Rh?=
 =?utf-8?B?R3lTK3NjdGJDQjFzaHI4cDkyZmVwWWR4Q1FEaU11STRTNXVadVJsc013dGph?=
 =?utf-8?B?MVl1VHZCUzRPZmJwQUxnZlhNekpoV0l0YVU5WFNmWnVoVnFrUzVHYmYwT2dU?=
 =?utf-8?B?Vi82VDNaOW84cDJ0WUhjQ1FCbUVYa0hxRFdTdk1vaEVJenZOR0xHaUNKUytQ?=
 =?utf-8?B?V3hlcFE2b25WbnhUNE1KTVd3RDB4TmVXZy9qWU1Ya0FjZ1RRQjVucTdwekVW?=
 =?utf-8?B?WXpleTVHSkFTTjVuazdrSk9mU3F4dmxvYnJ5VFN0a21KT0NNdWUvSG9NWVZs?=
 =?utf-8?B?dENoQTAzd1FiUi96YStFeDE3MTFkTXVSYjBNMERkUkhBNmNSY3g4dlJoSzF0?=
 =?utf-8?B?Uk1BNnNDUzhqVitRTEp4NnQ1a2xYWFlxMnZWL0wrZWtrR0cxWjNMSWZJTGc5?=
 =?utf-8?B?TmZJZE5iQStpVm9IMVlNZ3M1aEEwbmNGK3U3R2t5MmJCaCsya2IwN0VHMmdI?=
 =?utf-8?B?M0JjdVQ0RTRFVHN4eDJDMlhTa2phNFpKaFJZdmwrTmpndC9zRkNkTFdZcWVO?=
 =?utf-8?B?WXFxd0xDSlJOOVFhRjNjMnRKTTRqOEJFSzR3aWxlZ2s1a3Y5dXlOYjZRWngv?=
 =?utf-8?B?RXoweXRFMXI1RG9yNmRsSnF5d0krZFVoSEpFSityVFh5M1RYRy80cTFsT05v?=
 =?utf-8?Q?/vgNt0F1+AIQ8Cyk=3D?=
MIME-Version: 1.0
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: MR1P264MB2481.FRAP264.PROD.OUTLOOK.COM
X-MS-Exchange-CrossTenant-Network-Message-Id: 41332580-a72e-4840-32e2-08d9be2782fa
X-MS-Exchange-CrossTenant-originalarrivaltime: 13 Dec 2021 10:58:35.9067 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: ee11ccf7-112c-4284-848b-f229745e715b
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: +8nHpgYDNyc8Hk1CSEAq87lZ9uz0oxImhWJlOhODe1Jc7BDOhmtHwp5D0eJYRVmJ8Afx8UvJE/pCNuiKlwst+h92ByRRG9gbUKc44eIc1UEf1d59Ora9RDOtauvNgSFj
X-MS-Exchange-Transport-CrossTenantHeadersStamped: MR2P264MB0804
X-OriginatorOrg: groupe-cyllene.com
X-SPAM-LEVEL: Spam detection results:  0
 AWL -1.499 Adjusted score from AWL reputation of From: address
 BAYES_00                 -1.9 Bayes spam probability is 0 to 1%
 DKIM_SIGNED               0.1 Message has a DKIM or DK signature,
 not necessarily valid
 DKIM_VALID -0.1 Message has at least one valid DKIM or DK signature
 DKIM_VALID_AU -0.1 Message has a valid DKIM or DK signature from author's
 domain
 DKIM_VALID_EF -0.1 Message has a valid DKIM or DK signature from envelope-from
 domain HTML_MESSAGE            0.001 HTML included in message
 RCVD_IN_MSPIKE_H2      -0.001 Average reputation (+2)
 SPF_HELO_NONE           0.001 SPF: HELO does not publish an SPF Record
 SPF_PASS               -0.001 SPF: sender matches SPF record
 URI_DOTEDU              1.997 Has .edu URI
 URI_DOTEDU_ENTITY           1 Via .edu MTA + suspicious HTML content
X-Mailman-Approved-At: Mon, 13 Dec 2021 12:09:36 +0100
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
X-Content-Filtered-By: Mailman/MimeDel 2.1.29
Subject: Re: [pve-devel] [PATCH pve-ha-manager 1/3] add ressource awareness
 manager
X-BeenThere: pve-devel@lists.proxmox.com
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: Proxmox VE development discussion <pve-devel.lists.proxmox.com>
List-Unsubscribe: <https://lists.proxmox.com/cgi-bin/mailman/options/pve-devel>, 
 <mailto:pve-devel-request@lists.proxmox.com?subject=unsubscribe>
List-Archive: <http://lists.proxmox.com/pipermail/pve-devel/>
List-Post: <mailto:pve-devel@lists.proxmox.com>
List-Help: <mailto:pve-devel-request@lists.proxmox.com?subject=help>
List-Subscribe: <https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel>, 
 <mailto:pve-devel-request@lists.proxmox.com?subject=subscribe>
X-List-Received-Date: Mon, 13 Dec 2021 10:59:23 -0000

SGkgVGhvbWFzLA0KVGhhbmtzIGZvciB0aGUgZmFzdCByZXZpZXcgIQ0KDQpJJ2xsIHJld29yayB0
aGUgcGF0Y2hlcyB3aXRoIHlvdXIgY29tbWVudHMuDQpEbyB5b3UgcHJlZmVyIHNvbWUgYW5vdGhl
ciBjb21taXRzIHBhdGNoZXMgZm9yIGVhY2ggb2YgeW91ciByZW1hcmsgZm9yIGVhc2llciByZXZp
ZXcgPyAgb3IgY2FuIEkgc2VuZCBhIHYyIGRpcmVjdGx5IHRoZSBjaGFuZ2VzIGFscmVhZHkgbWVy
Z2VkID8NCg0KDQoNCg0Kc2VtaS1yZWxhdGVkLCBEaWV0bWFyIGFuZCBJIHRhbGtlZCBhYm91dCBh
ZGFwdGluZyB0aGUgUlJEIGZvcm1hdCBhbmQgaGlnaGVyIHJlc29sdXRpb24NCmZyb20gUEJTIGFs
c28gZm9yIFBWRSwgZHJvcHBpbmcgdGhlIGRlcGVuZGVuY3kgb24gcnJkY2FjaGVkLCBidXQgUFZF
IHdpdGggdGhlIGNsdXN0ZXINCmFuZCBicm9hZGNhc3RpbmcgaXMgcXVpdGUgYSBiaXQgbW9yZSBj
b21wbGV4IGNvbXBhcmVkIHRvIFBCUywgc28gdGhlIGVmZm9ydCBzdGFsbGVkLg0KDQpJZiB3ZSBt
YWtlIG1vcmUgdXNlIG9mIHRob3NlIG1ldHJpY3MgaGVyZSBpdCB3b3VsZCBhZGQgZnVydGhlciBj
b3VwbGluZyB0byB0aGUgZXhpc3RpbmcNCmludGVyZmFjZSBzbyBtYXliZSB3ZSdkIHJldGhpbmsg
dGhhdCB0aHJvdWdoIC0gYnV0IG5vdGhpbmcgdGhhdCBuZWVkcyB0byBzdGFsbCB0aGlzDQpjb21w
bGV0ZWx5LCBjaGFuZ2luZyBSUkQgd291bGQgYmUgYmV0dGVyIGRvbmUgYXQgYSBtYWpvciByZWxl
YXNlIGFueXdheSB3aGVyZSB3ZQ0KY2FuIGhhbmRsZSB0aGlzIHNvbWV3aGF0IGNsZWFubHkuDQoN
CkkgdGhpbmsgd2UgaGFkIHRhbGtlZCBsYXN0IHllYXIgYWJvdXQgc2luZ2xlIHJyZCBmaWxlIGJ5
IG1ldHJpYywgYnV0IEknbSBub3Qgc3VyZSBpdCdzIHRoZSBiZXN0IHdheQ0KKHdpdGggdGhlIG51
bWJlciBvZiBmaWxlcyBpdCBjb3VsZCBiZSBnZW5lcmF0ZSkuDQpJIHdvdWxkIGxpa2UgdG8gaGF2
ZSBhbm90aGVyIG1ldHJpY3MgaW4gcnJkLCBsaWtlIHByZXNzdXJlIG9mIGNwdS9tZW0sIG9yIHRy
dWUgdm0gY2dyb3VwIG1lbS9jcHUuDQpJIHRoaW5rIHdlIGFscmVhZHkgc3RyZWFtIHRoZW0sIGJ1
dCBycmQgcGFydCBpcyBub3QgeWV0IGRvbmUuDQoNCg0KKyAgICAkc3RhdHMtPntjcHV9ID0gcGVy
Y2VudGlsZSgkcGVyY2VudGlsZSwgXEBjcHUpIHx8IDA7DQorICAgICRzdGF0cy0+e21lbX0gPSBw
ZXJjZW50aWxlKCRwZXJjZW50aWxlLCBcQG1lbSkgfHwgMDsNCisgICAgJHN0YXRzLT57bWF4bWVt
fSA9IHBlcmNlbnRpbGUoJHBlcmNlbnRpbGUsIFxAbWF4bWVtKSB8fCAwOw0KKyAgICAkc3RhdHMt
PnttYXhjcHV9ID0gcGVyY2VudGlsZSgkcGVyY2VudGlsZSwgXEBtYXhjcHUpIHx8IDA7DQorICAg
ICRzdGF0cy0+e3RvdGFsY3B1fSA9ICRzdGF0cy0+e2NwdX0gKiAkc3RhdHMtPnttYXhjcHV9ICog
MTAwOw0KDQp3aGF0IGlzIGNwdS9tYXhjcHUgZXhhY3RseSwgdGhlIG11bHRpcGxpY2F0aW9uIG9m
IGJvdGggc3RyaWtlcyBtZSBhcyBhIGJpdCB3ZWlyZD8NCg0KbWF4Y3B1IGlzIHRoZSBudW1iZXIg
b2YgY29yZSxzbyB0b3RhbGNwdSBpcyB0aGUgbnVtYmVyIG9mIGNvcmVzICogY3VycmVudCBwZXJj
ZW50IHVzYWdlICogMTAwLg0KKFRoaXMgaXMgdG8gYmUgYWJsZSB0byBjb21wYXJlIHZtL2hvc3Qg
d2l0aCBkaWZmZXJlbnRzIG51bWJlciBvZiBjb3JlcykNCkJ1dCBpbmRlZWQsIG1heWJlIEknbSB3
cm9uZyB3aXRoIG15IG1hdGhzIDspIEkgbmVlZCB0byBjaGVjayBhIGxpdHRsZSBiaXQgdGhlIG9y
ZGVyaW5nIGFuZCBjb21wYXJlIGNvZGUuDQoNCg0KDQorICAgICAgICAjIyMjIEZJTFRFUklORyBO
T0RFUyBXSVRIIEhBUkQgQ09OU1RSQUlOVFMgKHZtIGNhbid0IGJlIHN0YXJ0ZWQpDQorICAgICAg
IG5leHQgaWYgIWNoZWNrX2hhcmRfY29uc3RyYWludHMoJGhhZW52LCAkdm1pZCwgJGNkLCAkbm9k
ZW5hbWUsICRub2RlX3N0YXRzLCAkdm1fc3RhdHMsICRzdG9yZWNmZywgJGdyb3VwX21lbWJlcnNf
cHJpbyk7DQoNCkkgbWVhbiwgbW9zdCBvZiB0aG9zZSBzaG91bGQgYmUgY292ZXJlZCBieSB0aGUg
Z3JvdXBpbmcgYWxyZWFkeT8NCg0KZG8geW91IG1lYW46IG1hbnVhbGx5IGdyb3VwaW5nIGJ5IHVz
ZXIgPyBpZiB5ZXMsIHRoZSBwb2ludCBpcyBoZXJlIHRvIGdldCBpdCBkb25lIGF1dG8gKGZvciBz
dG9yYWdlIGF2YWxhYmlsaXR5LCBudW1iZXIgZGUgaG9zdCBjb3JlLG1heWJlIHZtYnIgYXZhaWxh
YmlsaXR5LC4uLi4pLCBiZWNhdXNlIHRoaXMgaXMgYSBwYWluIHRvIHNldHVwLg0KRm9yIGV4YW1w
bGUsIGN1cnJlbnRseSwgaWYgeW91IGZvcmdvdCBpdCwgYSB2bSB3aXRoIGEgbG9jYWwgc3RvcmFn
ZSBjb3VsZCBiZSBtaWdyYXRlZCB0byBhbm90aGVyIG5vZGUgYnkgSEEgKHdpdGggZXJyb3IpLiBU
aGVuIHVzZXIgZG9uJ3Qga25vd24gaG93IHRvIG1pZ3JhdGUgaXQgYmFjayB0byBvcmlnaW5hbCBu
b2RlLg0KDQpCdXQgaXQncyBhbHNvIGNoZWNraW5nIGR5bmFtaWMgdmFsdWVzIGxpa2UgYXZhaWxh
YmxlIGNwdS9yYW0gb24gaG9zdC4NCg0KDQoNCg0KTGUgbHVuZGkgMTMgZMOpY2VtYnJlIDIwMjEg
w6AgMTE6MDQgKzAxMDAsIFRob21hcyBMYW1wcmVjaHQgYSDDqWNyaXQgOg0Kc29tZSBwYXJ0cyBv
ZiB5b3VyIGNvdmVyLWxldHRlciAoYmFzaWMgYXBwcm9hY2gvZGVjaXNpb25zKSBzaG91bGQgZ28g
aGVyZSBzbyB0aGF0DQppdCBjYW4gYmUgZm91bmQgbW9yZSBlYXNpbHkgd2hlbiB3b3JraW5nIHdp
dGggZ2l0Lg0KDQpTb21lIGNvbW1lbnRzIGlubGluZSwgZGlzY2xhaW1lcjogSSBwcmV0dHkgbXVj
aCByZWFkIGl0IGRvd24gZnJvbSBoZXJlLCBkaWQgbm90DQp0cmllZCBvdXQgdG8gbXVjaCBhbmQg
SSBwb3NzaWJseSBtYXkganVzdCBoYXZlIG92ZXJsb29rZWQgc29tZXRoaW5nLg0KDQpPbiAxMy4x
Mi4yMSAwODo0MywgQWxleGFuZHJlIERlcnVtaWVyIHdyb3RlOg0KLS0tDQogc3JjL1BWRS9IQS9F
bnYucG0gICAgICAgICB8ICAyNCArKysrDQogc3JjL1BWRS9IQS9FbnYvUFZFMi5wbSAgICB8ICA5
MCArKysrKysrKysrKysrKw0KIHNyYy9QVkUvSEEvTWFuYWdlci5wbSAgICAgfCAyNDYgKysrKysr
KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0NCiBzcmMvUFZFL0hBL1NpbS9UZXN0RW52
LnBtIHwgIDI3ICsrKysrDQogNCBmaWxlcyBjaGFuZ2VkLCAzODAgaW5zZXJ0aW9ucygrKSwgNyBk
ZWxldGlvbnMoLSkNCg0KZGlmZiAtLWdpdCBhL3NyYy9QVkUvSEEvRW52LnBtIGIvc3JjL1BWRS9I
QS9FbnYucG0NCmluZGV4IGFjNTY5YTkuLjczYjY0MDcgMTAwNjQ0DQotLS0gYS9zcmMvUFZFL0hB
L0Vudi5wbQ0KKysrIGIvc3JjL1BWRS9IQS9FbnYucG0NCkBAIC0yNjksNCArMjY5LDI4IEBAIHN1
YiBnZXRfaGFfc2V0dGluZ3Mgew0KICAgICByZXR1cm4gJHNlbGYtPntwbHVnfS0+Z2V0X2hhX3Nl
dHRpbmdzKCk7DQogfQ0KDQorc3ViIGdldF9ub2RlX3JyZF9zdGF0cyB7DQorICAgIG15ICgkc2Vs
ZiwgJG5vZGUpID0gQF87DQorDQorICAgIHJldHVybiAkc2VsZi0+e3BsdWd9LT5nZXRfbm9kZV9y
cmRfc3RhdHMoJG5vZGUpOw0KK30NCisNCitzdWIgZ2V0X3ZtX3JyZF9zdGF0cyB7DQorICAgIG15
ICgkc2VsZiwgJHZtaWQsICRwZXJjZW50aWxlKSA9IEBfOw0KKw0KKyAgICByZXR1cm4gJHNlbGYt
PntwbHVnfS0+Z2V0X3ZtX3JyZF9zdGF0cygkdm1pZCwgJHBlcmNlbnRpbGUpOw0KK30NCisNCitz
dWIgcmVhZF92bV9jb25maWcgew0KKyAgICBteSAoJHNlbGYsICR2bWlkKSA9IEBfOw0KKw0KKyAg
ICByZXR1cm4gJHNlbGYtPntwbHVnfS0+cmVhZF92bV9jb25maWcoJHZtaWQpOw0KDQpJJ2QgbGlr
ZSB0byBhdm9pZCByZXR1cm5pbmcgdGhlIHdob2xlIGd1ZXN0IGNvbmZpZyBidXQgcmF0aGVyIGFu
IGFic3RyYWN0IGZvcm1hdA0KdGhhdCBvbmx5IHNldHMgc29tZSBrZXlzIGxpa2UgIm1lbW9yeSIg
YW5kICJjcHUiIHRoYXQgd2UgYWN0dWFsbHkgcmVxdWlyZSwgdGhhdCdkDQptYWtlIGl0IG1vcmUg
ZGVmaW5lZCBhbmQgZWFzaWVyIHRvIHNlZSB3aGF0IHBvc3NpYmxlIGltcGFjdCBmYWN0b3JzIGFy
ZSAtIHRoZSB0ZXN0DQpvciBzaW0gc3lzdGVtIGlzIGFsc28gc2xpZ2h0bHkgZWFzaWVyIHRvIGFk
ZCB0aGF0IHdheS4NCg0KQXMgdGhhdCdzIHRoZSBiYXNpYyBqb2Igb2YgdGhlIEVudiBwbHVnaW4g
c3lzdGVtLCB0cmFuc2Zvcm0gdGhlIG1peGVkL2NvbXBsZXgNClBWRSBtZXRyaWNzIGFuZCBjb250
cm9scyBpbiBzb21lIHNpbXBsZXIgYWJzdHJhY3Rpb24gdG8gdXNlIGludGVybmFsbHksIG1ha2lu
Zw0KaXQgZWFzeSB0byBzaW11bGF0ZS90ZXN0IHRoZW0uDQoNCg0KK30NCisNCitzdWIgcmVhZF9j
dF9jb25maWcgew0KKyAgICBteSAoJHNlbGYsICR2bWlkKSA9IEBfOw0KKw0KKyAgICByZXR1cm4g
JHNlbGYtPntwbHVnfS0+cmVhZF9jdF9jb25maWcoJHZtaWQpOw0KK30NCisNCiAxOw0KZGlmZiAt
LWdpdCBhL3NyYy9QVkUvSEEvRW52L1BWRTIucG0gYi9zcmMvUFZFL0hBL0Vudi9QVkUyLnBtDQpp
bmRleCA1ZTBhNjgzLi4yZTE1ODVjIDEwMDY0NA0KLS0tIGEvc3JjL1BWRS9IQS9FbnYvUFZFMi5w
bQ0KKysrIGIvc3JjL1BWRS9IQS9FbnYvUFZFMi5wbQ0KQEAgLTksOSArOSwxNCBAQCB1c2UgSU86
OlNvY2tldDo6VU5JWDsNCiB1c2UgUFZFOjpTYWZlU3lzbG9nOw0KIHVzZSBQVkU6OlRvb2xzOw0K
IHVzZSBQVkU6OkNsdXN0ZXIgcXcoY2ZzX3JlZ2lzdGVyX2ZpbGUgY2ZzX3JlYWRfZmlsZSBjZnNf
d3JpdGVfZmlsZSBjZnNfbG9ja19maWxlKTsNCit1c2UgUFZFOjpDbHVzdGVyOw0KDQpDbHVzdGVy
IGlzIGFscmVhZHkgaW1wb3J0ZWQgYSBsaW5lIGFib3ZlDQoNCiB1c2UgUFZFOjpEYXRhQ2VudGVy
Q29uZmlnOw0KIHVzZSBQVkU6OklOb3RpZnk7DQogdXNlIFBWRTo6UlBDRW52aXJvbm1lbnQ7DQor
dXNlIFBWRTo6QVBJMlRvb2xzOw0KK3VzZSBQVkU6OlFlbXVDb25maWc7DQordXNlIFBWRTo6TFhD
OjpDb25maWc7DQordXNlIFJSRHM7DQoNCiB1c2UgUFZFOjpIQTo6VG9vbHMgJzpleGl0X2NvZGVz
JzsNCiB1c2UgUFZFOjpIQTo6RW52Ow0KQEAgLTQ1OSw0ICs0NjQsODkgQEAgc3ViIGdldF9oYV9z
ZXR0aW5ncyB7DQogICAgIHJldHVybiAkZGF0YWNlbnRlcmNvbmZpZy0+e2hhfTsNCiB9DQoNCitz
dWIgZ2V0X25vZGVfcnJkX3N0YXRzIHsNCisgICAgbXkgKCRzZWxmLCAkbm9kZSkgPSBAXzsNCisN
CisgICAgbXkgJHJyZCA9IFBWRTo6Q2x1c3Rlcjo6cnJkX2R1bXAoKTsNCisgICAgbXkgJG1lbWJl
cnMgPSBQVkU6OkNsdXN0ZXI6OmdldF9tZW1iZXJzKCk7DQorDQorICAgIG15ICRzdGF0cyA9IFBW
RTo6QVBJMlRvb2xzOjpleHRyYWN0X25vZGVfc3RhdHMoJG5vZGUsICRtZW1iZXJzLCAkcnJkKTsN
CisNCisgICAgcmV0dXJuICRzdGF0czsNCit9DQorDQorc3ViIGdldF92bV9ycmRfc3RhdHMgew0K
KyAgICBteSAoJHNlbGYsICR2bWlkLCAkcGVyY2VudGlsZSkgPSBAXzsNCisNCisgICAgbXkgJHJy
ZG5hbWUgPSAicHZlMi12bS8kdm1pZCI7DQorICAgIG15ICRycmRkaXIgPSAiL3Zhci9saWIvcnJk
Y2FjaGVkL2RiIjsNCisNCisgICAgbXkgJHJyZCA9ICIkcnJkZGlyLyRycmRuYW1lIjsNCisNCisg
ICAgbXkgJGNmID0gIkFWRVJBR0UiOw0KKw0KKyAgICBteSAkcmVzbyA9IDYwOw0KKyAgICBteSAk
Y3RpbWUgID0gJHJlc28qaW50KHRpbWUoKS8kcmVzbyk7DQorDQorICAgICNsYXN0IDIwbWludXRl
cw0KKyAgICBteSAkcmVxX3N0YXJ0ID0gJGN0aW1lIC0gJHJlc28qMjA7DQorICAgIG15ICRyZXFf
ZW5kID0gJGN0aW1lIC0gJHJlc28qMTsNCisNCisgICAgbXkgQGFyZ3MgPSAoDQorICAgICAgICAi
LXMiID0+ICRyZXFfc3RhcnQsDQorICAgICAgICAiLWUiID0+ICRyZXFfZW5kLA0KKyAgICAgICAg
Ii1yIiA9PiAkcmVzbywNCisgICAgICAgICk7DQorDQorICAgIG15ICRzb2NrZXQgPSAiL3Zhci9y
dW4vcnJkY2FjaGVkLnNvY2siOw0KKyAgICBwdXNoIEBhcmdzLCAiLS1kYWVtb24iID0+ICJ1bml4
OiRzb2NrZXQiIGlmIC1TICRzb2NrZXQ7DQorDQorICAgIG15ICgkc3RhcnQsICRzdGVwLCAkbmFt
ZXMsICRkYXRhKSA9IFJSRHM6OmZldGNoKCRycmQsICRjZiwgQGFyZ3MpOw0KDQpzZW1pLXJlbGF0
ZWQsIERpZXRtYXIgYW5kIEkgdGFsa2VkIGFib3V0IGFkYXB0aW5nIHRoZSBSUkQgZm9ybWF0IGFu
ZCBoaWdoZXIgcmVzb2x1dGlvbg0KZnJvbSBQQlMgYWxzbyBmb3IgUFZFLCBkcm9wcGluZyB0aGUg
ZGVwZW5kZW5jeSBvbiBycmRjYWNoZWQsIGJ1dCBQVkUgd2l0aCB0aGUgY2x1c3Rlcg0KYW5kIGJy
b2FkY2FzdGluZyBpcyBxdWl0ZSBhIGJpdCBtb3JlIGNvbXBsZXggY29tcGFyZWQgdG8gUEJTLCBz
byB0aGUgZWZmb3J0IHN0YWxsZWQuDQoNCklmIHdlIG1ha2UgbW9yZSB1c2Ugb2YgdGhvc2UgbWV0
cmljcyBoZXJlIGl0IHdvdWxkIGFkZCBmdXJ0aGVyIGNvdXBsaW5nIHRvIHRoZSBleGlzdGluZw0K
aW50ZXJmYWNlIHNvIG1heWJlIHdlJ2QgcmV0aGluayB0aGF0IHRocm91Z2ggLSBidXQgbm90aGlu
ZyB0aGF0IG5lZWRzIHRvIHN0YWxsIHRoaXMNCmNvbXBsZXRlbHksIGNoYW5naW5nIFJSRCB3b3Vs
ZCBiZSBiZXR0ZXIgZG9uZSBhdCBhIG1ham9yIHJlbGVhc2UgYW55d2F5IHdoZXJlIHdlDQpjYW4g
aGFuZGxlIHRoaXMgc29tZXdoYXQgY2xlYW5seS4NCg0KKw0KKyAgICBteSBAY3B1ID0gKCk7DQor
ICAgIG15IEBtZW0gPSAoKTsNCisgICAgbXkgQG1heG1lbSA9ICgpOw0KKyAgICBteSBAbWF4Y3B1
ID0gKCk7DQorDQorICAgIGZvcmVhY2ggbXkgJHJlYyAoQCRkYXRhKSB7DQorICAgICAgICBteSAk
bWF4Y3B1ID0gQCRyZWNbMF0gfHwgMDsNCisgICAgICAgIG15ICRjcHUgPSBAJHJlY1sxXSB8fCAw
Ow0KKyAgICAgICAgbXkgJG1heG1lbSA9IEAkcmVjWzJdIHx8IDA7DQorICAgICAgICBteSAkbWVt
ID0gQCRyZWNbM10gfHwgMDsNCisgICAgICAgICNza2lwIHplcm9zIHZhbHVlcyBpZiB2bSBpcyBk
b3duDQorICAgICAgICBwdXNoIEBjcHUsICRjcHUqJG1heGNwdSBpZiAkY3B1ID4gMDsNCisgICAg
ICAgIHB1c2ggQG1lbSwgJG1lbSBpZiAkbWVtID4gMDsNCisgICAgICAgIHB1c2ggQG1heGNwdSwg
JG1heGNwdSBpZiAkbWF4Y3B1ID4gMDsNCisgICAgICAgIHB1c2ggQG1heG1lbSwgJG1heG1lbSBp
ZiAkbWF4bWVtID4gMDsNCisgICAgfQ0KKw0KKyAgICBteSAkc3RhdHMgPSB7fTsNCg0KDQptYXli
ZSBjcmVhdGUgdGhpcyBuZXN0ZWQNCg0KbXkgJHN0YXRzID0gew0KICBjcHUgPT4gew0KICAgIGF2
ZyA9PiBwZXJjZW50aWxlKCRwZXJjZW50aWxlLCBcQGNwdSkgfHwgMDsNCiAgICBtYXggPT4gcGVy
Y2VudGlsZSgkcGVyY2VudGlsZSwgXEBtYXhjcHUpIHx8IDA7DQogICAgdG90YWwgIC4uLg0KICB9
LA0KfTsNCg0KKyAgICAkc3RhdHMtPntjcHV9ID0gcGVyY2VudGlsZSgkcGVyY2VudGlsZSwgXEBj
cHUpIHx8IDA7DQorICAgICRzdGF0cy0+e21lbX0gPSBwZXJjZW50aWxlKCRwZXJjZW50aWxlLCBc
QG1lbSkgfHwgMDsNCisgICAgJHN0YXRzLT57bWF4bWVtfSA9IHBlcmNlbnRpbGUoJHBlcmNlbnRp
bGUsIFxAbWF4bWVtKSB8fCAwOw0KKyAgICAkc3RhdHMtPnttYXhjcHV9ID0gcGVyY2VudGlsZSgk
cGVyY2VudGlsZSwgXEBtYXhjcHUpIHx8IDA7DQorICAgICRzdGF0cy0+e3RvdGFsY3B1fSA9ICRz
dGF0cy0+e2NwdX0gKiAkc3RhdHMtPnttYXhjcHV9ICogMTAwOw0KDQp3aGF0IGlzIGNwdS9tYXhj
cHUgZXhhY3RseSwgdGhlIG11bHRpcGxpY2F0aW9uIG9mIGJvdGggc3RyaWtlcyBtZSBhcyBhIGJp
dCB3ZWlyZD8NCg0KDQorDQorICAgIHJldHVybiAkc3RhdHM7DQorfQ0KKw0KK3N1YiBwZXJjZW50
aWxlIHsNCisgICAgbXkgKCRwLCAkYXJlZikgPSBAXzsNCisgICAgbXkgJHBlcmNlbnRpbGUgPSBp
bnQoJHAgKiAkI3skYXJlZn0vMTAwKTsNCisgICAgcmV0dXJuIChzb3J0IEAkYXJlZilbJHBlcmNl
bnRpbGVdOw0KK30NCisNCitzdWIgcmVhZF92bV9jb25maWcgew0KKyAgICBteSAoJHNlbGYsICR2
bWlkKSA9IEBfOw0KKw0KKyAgICByZXR1cm4gUFZFOjpRZW11Q29uZmlnLT5sb2FkX2NvbmZpZygk
dm1pZCk7DQorfQ0KKw0KK3N1YiByZWFkX2N0X2NvbmZpZyB7DQorICAgIG15ICgkc2VsZiwgJHZt
aWQpID0gQF87DQorDQorICAgIHJldHVybiBQVkU6OkxYQzo6Q29uZmlnLT5sb2FkX2NvbmZpZygk
dm1pZCk7DQorfQ0KKw0KIDE7DQpkaWZmIC0tZ2l0IGEvc3JjL1BWRS9IQS9NYW5hZ2VyLnBtIGIv
c3JjL1BWRS9IQS9NYW5hZ2VyLnBtDQppbmRleCAxYzY2YjQzLi5hZTVmYmNiIDEwMDY0NA0KLS0t
IGEvc3JjL1BWRS9IQS9NYW5hZ2VyLnBtDQorKysgYi9zcmMvUFZFL0hBL01hbmFnZXIucG0NCkBA
IC0xLDggKzEsMTMgQEANCisNCiBwYWNrYWdlIFBWRTo6SEE6Ok1hbmFnZXI7DQoNCiB1c2Ugc3Ry
aWN0Ow0KIHVzZSB3YXJuaW5nczsNCiB1c2UgRGlnZXN0OjpNRDUgcXcobWQ1X2Jhc2U2NCk7DQor
dXNlIFJSRHM7DQordXNlIFBPU0lYIHF3L2NlaWwvOw0KK3VzZSBQVkU6OkFQSTJUb29sczsNCit1
c2UgUFZFOjpTdG9yYWdlOw0KDQpBYm92ZSB0d28gYXJlIG5vdCBuZWNlc3NhcmlseSBhdmFpbGFi
bGUgaW4gdGhlIHRlc3Qvc2ltIGVudmlyb25tZW50LCB3aGF0ZXZlciBuZWVkcw0KdGhlbSBuZWVk
cyB0byBiZSBjYXBzdWxlZCBpbiB0aGUgUFZFMiBFbnYgbW9kdWxlLg0KDQoNCiB1c2UgUFZFOjpU
b29sczsNCiB1c2UgUFZFOjpIQTo6VG9vbHMgJzpleGl0X2NvZGVzJzsNCkBAIC0zOTQsOCArMzk5
LDE2IEBAIHN1YiBtYW5hZ2Ugew0KICAgICAgICBteSAkcmVwZWF0ID0gMDsNCg0KICAgICAgICAk
c2VsZi0+cmVjb21wdXRlX29ubGluZV9ub2RlX3VzYWdlKCk7DQorICAgICAgICRzZWxmLT5yZWNv
bXB1dGVfb25saW5lX25vZGVfc3RhdHMoKTsNCg0KLSAgICAgICBmb3JlYWNoIG15ICRzaWQgKHNv
cnQga2V5cyAlJHNzKSB7DQorICAgICAgICRzZWxmLT5nZXRfc2VydmljZV9zdGF0cygkc3MpOw0K
Kw0KKyAgICAgICBmb3JlYWNoIG15ICRzaWQgKA0KKyAgICAgICAgICAgICAgICNvcmRlcmluZyB2
bSBieSBzaXplLCBiaWdnZXIgbWVtIGZpcnN0IHRoZW4gYmlnZ2VyIGNwdQ0KKyAgICAgICAgICAg
ICAgICNjb3VsZCBiZSBpbXByb3ZlZCB3aXRoIGJ1YmJsZXNlYXJjaCBoZXVyaXN0aWMNCisgICAg
ICAgICAgICAgICAjaHR0cHM6Ly9hbnRpcGhpc2hpbmcuY2V0c2kuZnIvcHJveHkvdjM/aT1aazky
VkVGS2FHUTRVbXM0Y25aRVVXTVRwZkhhWEZRR1J3MV9Dbk9vT0gwJnI9YkhBMWRHVjNOV0pRVlVs
b2FXTkZVWlBtMGZpaUJ2aWFpeV9SRGF2MkdRMVU0dXk2bHNERHYzdUJzenB2dldZUU41RnFLcUZE
NldQWXVwZkFVUDFjOWcmZj1TbGhEYkU5dVMybGFTMkphWkZwTld2bXN4YWkxemxKUDlsbGdubDVI
SXYtNGpBamk4RGgyQlFhd3p4SUQ1YnpyNlV2LTNFUWQtZWx1UWJzUGZjVU9UZyZ1PWh0dHBzJTNB
Ly93d3cuY3MudHVmdHMuZWR1L35uci9jczI1Ny9hcmNoaXZlL21pY2hhZWwtbWl0emVubWFjaGVy
L2J1YmJsZXNlYXJjaC5wZGYmaz1YUktVDQorICAgICAgICAgICAgICAgc29ydCB7ICRzcy0+eyRh
fS0+e3N0YXRzfS0+e21lbWd9IDw9PiAkc3MtPnskYn0tPntzdGF0c30tPnttZW1nfSB8fCAkc3Mt
PnskYX0tPntzdGF0c30tPnt0b3RhbGNwdXJvdW5kfSA8PT4gJHNzLT57JGJ9LT57c3RhdHN9LT57
dG90YWxjcHVyb3VuZH0gfHwgJHNzLT57JGF9LT57dHlwZX0gY21wICRzcy0+eyRifS0+e3R5cGV9
fQ0KKyAgICAgICAgICAgICAgIGtleXMgJSRzcykgew0KDQptYXliZSB3ZSBjYW4gbW92ZSB0aGF0
IHNvcnQgaW50byBhIHN1YiB3aXRoIHNvbWUgbGluZSBicmVha3M/DQoNCiAgICAgICAgICAgIG15
ICRzZCA9ICRzcy0+eyRzaWR9Ow0KICAgICAgICAgICAgbXkgJGNkID0gJHNjLT57JHNpZH0gfHwg
eyBzdGF0ZSA9PiAnZGlzYWJsZWQnIH07DQoNCkBAIC04MDIsMTIgKzgxNSw4IEBAIHN1YiBuZXh0
X3N0YXRlX3JlY292ZXJ5IHsNCg0KICAgICAkc2VsZi0+cmVjb21wdXRlX29ubGluZV9ub2RlX3Vz
YWdlKCk7ICMgd2Ugd2FudCB0aGUgbW9zdCBjdXJyZW50IG5vZGUgc3RhdGUNCg0KLSAgICBteSAk
cmVjb3Zlcnlfbm9kZSA9IHNlbGVjdF9zZXJ2aWNlX25vZGUoDQotICAgICAgICRzZWxmLT57Z3Jv
dXBzfSwNCi0gICAgICAgJHNlbGYtPntvbmxpbmVfbm9kZV91c2FnZX0sDQotICAgICAgICRjZCwN
Ci0gICAgICAgJHNkLT57bm9kZX0sDQotICAgICk7DQorICAgIG15ICRzdG9yZWNmZyA9IFBWRTo6
U3RvcmFnZTo6Y29uZmlnKCk7DQoNCnRoYXQgZGVwZW5kZW5jeSBjYW5ub3QgbGl2ZSBoZXJlIGRp
cmVjdGx5IGluIG1hbmFnZXIsIGZyb20gdG9wIG9mIG15IGhlYWQgSSdkIHN1Z2dlc3QgYWRkaW5n
DQphIGNoZWNrX3NlcnZpY2VfY29uc3RyYWludHMoJHNpZCwgJG5vZGUpIHBsdWdpbiBtZXRob2Qg
dG8gZW52DQoNCg0KKyAgICBteSAkcmVjb3Zlcnlfbm9kZSA9IGZpbmRfYmVzdGZpdF9ub2RlX3Rh
cmdldCgkaGFlbnYsICRzaWQsICRjZCAsICRzZC0+e25vZGV9LCAkc2QtPntzdGF0c30sICRzZWxm
LT57b25saW5lX25vZGVfdXNhZ2V9LCAkc2VsZi0+e29ubGluZV9ub2RlX3N0YXRzfSwgJHNlbGYt
Pntncm91cHN9LCAkc3RvcmVjZmcpOw0KDQptYXliZSBqdXN0IHBhc3MgJHNlbGYgdG8gYXZvaWQg
bW9zdCBvZiB0aG9zZSBwYXJhbWV0ZXJzLCBpb3cuIG1ha2UgaXQgYSBibGVzc2VkIG1ldGhvZCBv
ZiB0aGlzDQptb2R1bGUsIHNvbWV0aGluZyBsaWtlOg0KDQokc2VsZi0+ZmluZF9iZXN0Zml0X25v
ZGVfdGFyZ2V0KCRzaWQsICRjZCAsICRzZC0+e25vZGV9LCAkc2QtPntzdGF0c30pOw0KDQpzZWVt
cyB0byBtZSBsaWtlIGEgYmFsYW5jZSBvZiBhdm9pZCBwYXNzaW5nIGV2ZXJ5IGhlbHBlciBtb2R1
bGUvaGFzaCBleHBsaWNpdCBhZ2FpbiB3aGlsZSBrZWVwaW5nDQppdCBhIGJpdCBkZWNvdXBsZWQg
ZnJvbSB0aGUgYmxlc3NlZCBtb2R1bGUgaW5mby4NCg0KDQogICAgIGlmICgkcmVjb3Zlcnlfbm9k
ZSkgew0KICAgICAgICBteSAkbXNnID0gInJlY292ZXIgc2VydmljZSAnJHNpZCcgZnJvbSBmZW5j
ZWQgbm9kZSAnJGZlbmNlZF9ub2RlJyB0byBub2RlICckcmVjb3Zlcnlfbm9kZSciOw0KQEAgLTgy
Miw2ICs4MzEsMTQgQEAgc3ViIG5leHRfc3RhdGVfcmVjb3Zlcnkgew0KICAgICAgICAkaGFlbnYt
PnN0ZWFsX3NlcnZpY2UoJHNpZCwgJHNkLT57bm9kZX0sICRyZWNvdmVyeV9ub2RlKTsNCiAgICAg
ICAgJHNlbGYtPntvbmxpbmVfbm9kZV91c2FnZX0tPnskcmVjb3Zlcnlfbm9kZX0rKzsNCg0KKyAg
ICAgICAjYWRkIHZtIGNwdS9tZW0gdG8gY3VycmVudCBub2RlIHN0YXRzICh0aGlzIGlzIGFuIGVz
dGltYXRpb24gYmFzZWQgb24gbGFzdCAyMG1pbiB2bSBzdGF0cykNCisgICAgICAgbXkgJG5vZGVf
c3RhdHMgPSAkc2VsZi0+e29ubGluZV9ub2RlX3N0YXRzfS0+eyRyZWNvdmVyeV9ub2RlfS0+e3N0
YXRzfTsNCisgICAgICAgJG5vZGVfc3RhdHMtPnt0b3RhbGNwdX0gKz0gJHNkLT57c3RhdHN9LT57
dG90YWxjcHV9Ow0KKyAgICAgICAkbm9kZV9zdGF0cy0+e21lbX0gKz0gJHNkLT57c3RhdHN9LT57
bWVtfTsNCisgICAgICAgJG5vZGVfc3RhdHMtPnt0b3RhbGZyZWVjcHV9ID0gKDEwMCAqICRub2Rl
X3N0YXRzLT57bWF4Y3B1fSkgLSAkbm9kZV9zdGF0cy0+e3RvdGFsY3B1fTsNCisgICAgICAgJG5v
ZGVfc3RhdHMtPntmcmVlbWVtfSA9ICAkbm9kZV9zdGF0cy0+e21heG1lbX0gLSAkbm9kZV9zdGF0
cy0+e21lbX07DQoNCg0KDQorDQorDQogICAgICAgICMgTk9URTogJHNkICppcyBub3JtYWxseSBy
ZWFkLW9ubHkqLCBmZW5jaW5nIGlzIHRoZSBleGNlcHRpb24NCiAgICAgICAgJGNkLT57bm9kZX0g
PSAkc2QtPntub2RlfSA9ICRyZWNvdmVyeV9ub2RlOw0KICAgICAgICBteSAkbmV3X3N0YXRlID0g
KCRjZC0+e3N0YXRlfSBlcSAnc3RhcnRlZCcpID8gJ3N0YXJ0ZWQnIDogJ3JlcXVlc3Rfc3RvcCc7
DQpAQCAtODM5LDQgKzg1NiwyMTkgQEAgc3ViIG5leHRfc3RhdGVfcmVjb3Zlcnkgew0KICAgICB9
DQogfQ0KDQorDQorc3ViIGRvdHByb2Qgew0KKyAgICBteSgkdmVjX2EsICR2ZWNfYiwgJG1vZGUp
ID0gQF87DQorICAgIGRpZSAidGhleSBtdXN0IGhhdmUgdGhlIHNhbWUgc2l6ZVxuIiB1bmxlc3Mg
QCR2ZWNfYSA9PSBAJHZlY19iOw0KKyAgICAkbW9kZSA9ICIiIGlmICEkbW9kZTsNCisgICAgbXkg
JHN1bSA9IDA7DQorICAgIG15ICRub3JtX2EgPSAwOw0KKyAgICBteSAkbm9ybV9iID0gMDsNCisN
CisgICAgZm9yKG15ICRpPTA7ICRpIDwgc2NhbGFyIEB7JHZlY19hfTsgJGkrKykgew0KKyAgICAg
ICBteSAkYSA9IEB7JHZlY19hfVskaV07DQorICAgICAgIG15ICRiID0gQHskdmVjX2J9WyRpXTsN
CisNCisgICAgICAgJHN1bSArPSAkYSAqICRiOw0KKyAgICAgICAkbm9ybV9hICs9ICRhICogJGE7
DQorICAgICAgICRub3JtX2IgKz0gJGIgKiAkYjsNCisgICAgfQ0KKw0KKyAgICBpZigkbW9kZSBl
cSAnbm9ybVInKSB7DQorICAgICAgIHJldHVybiAkc3VtIC8gKHNxcnQoJG5vcm1fYSkgKiBzcXJ0
KCRub3JtX2IpKQ0KKyAgICB9IGVsc2lmICgkbW9kZSBlcSAnbm9ybUMnKSB7DQorICAgICAgIHJl
dHVybiAkc3VtIC8gJG5vcm1fYjsNCisgICAgfQ0KKyAgICByZXR1cm4gJHN1bTsNCit9DQorDQor
c3ViIGV1Y2xpZGVhbl9kaXN0YW5jZSB7DQorICAgIG15KCR2ZWNfYSwgJHZlY19iKSA9IEBfOw0K
Kw0KKyAgICBteSAkc3VtID0gMDsNCisNCisgICAgZm9yKG15ICRpPTA7ICRpIDwgc2NhbGFyIEB7
JHZlY19hfTsgJGkrKykgew0KKyAgICAgICAgbXkgJGEgPSBAeyR2ZWNfYX1bJGldOw0KKyAgICAg
ICAgbXkgJGIgPSBAeyR2ZWNfYn1bJGldOw0KKyAgICAgICAgJHN1bSArPSAoJGIgLSAkYSkqKjI7
DQorICAgIH0NCisNCisgICAgcmV0dXJuIHNxcnQoJHN1bSk7DQorfQ0KDQpXZSBjYW4gYWRkIGEg
ZmV3IGhlbHBlciBtZXRob2RzIHRvIGEgbmV3IG1vZHVsZSBpbiBwcm94bW94LXBlcmwtcnMgZm9y
IGFib3ZlLCBjb3VsZCBtYWtlDQp0aGlzIHF1aXRlIGEgYml0IGZhc3Rlci4NCg0KQWxzbywgYWJv
dmUsIGFuZCBhY3R1YWxseSBhbHNvIGJlbG93IHNob3VsZCBsaXZlIGluIGEgc2VwYXJhdGUgbW9k
dWxlIGluIHRoZSBmdXR1cmUsIGJ1dA0KSSBoYXZlIG5vdGhpbmcgYWdhaW5zdCBrZWVwaW5nIGl0
IGhlcmUgZm9yIGRldmVsb3BtZW50IGZvciBub3cuDQoNCisNCitzdWIgZmluZF9iZXN0Zml0X25v
ZGVfdGFyZ2V0IHsNCisgICAgbXkoJGhhZW52LCAkc2lkLCAkY2QsICRub2RlbmFtZSwgJHZtX3N0
YXRzLCAkb25saW5lX25vZGVfdXNhZ2UsICRvbmxpbmVfbm9kZXMsICRncm91cHMsICRzdG9yZWNm
ZykgPSBAXzsNCisNCisgICAgbXkgKHVuZGVmLCAkdm1pZCkgPSBzcGxpdCgvOi8sICRzaWQpOw0K
DQp3ZSBoYXZlIGEgaGVscGVyIGZvciB0aGF0IElJUkMNCg0KKw0KKyAgICBteSAkaGFncm91cCA9
IGdldF9zZXJ2aWNlX2dyb3VwKCRncm91cHMsICRvbmxpbmVfbm9kZXMsICRjZCk7DQorICAgIG15
ICgkcHJpX2dyb3VwcywgJGdyb3VwX21lbWJlcnNfcHJpbykgPSBnZXRfbm9kZV9wcmlvcml0eV9n
cm91cHMoJGhhZ3JvdXAsICRvbmxpbmVfbm9kZXMpOw0KKw0KKyAgICBteSAkdGFyZ2V0X25vZGVz
ID0ge307DQorICAgIGZvcmVhY2ggbXkgJG5vZGVuYW1lIChrZXlzICUkb25saW5lX25vZGVzKSB7
DQorICAgICAgIG15ICRub2RlX3N0YXRzID0gJG9ubGluZV9ub2Rlcy0+eyRub2RlbmFtZX0tPntz
dGF0c307DQorDQorICAgICAgICAjIyMjIEZJTFRFUklORyBOT0RFUyBXSVRIIEhBUkQgQ09OU1RS
QUlOVFMgKHZtIGNhbid0IGJlIHN0YXJ0ZWQpDQorICAgICAgIG5leHQgaWYgIWNoZWNrX2hhcmRf
Y29uc3RyYWludHMoJGhhZW52LCAkdm1pZCwgJGNkLCAkbm9kZW5hbWUsICRub2RlX3N0YXRzLCAk
dm1fc3RhdHMsICRzdG9yZWNmZywgJGdyb3VwX21lbWJlcnNfcHJpbyk7DQoNCkkgbWVhbiwgbW9z
dCBvZiB0aG9zZSBzaG91bGQgYmUgY292ZXJlZCBieSB0aGUgZ3JvdXBpbmcgYWxyZWFkeT8NCg0K
Kw0KKyAgICAgICAjIyMjIEFERCBwcmlvIGFuZCBldWNsaWRlYW5fZGlzdGFuY2Ugd2VpZ2h0DQor
ICAgICAgICR0YXJnZXRfbm9kZXMtPnskbm9kZW5hbWV9ID0gYWRkX25vZGVfcHJpbygkbm9kZW5h
bWUsICdkaXN0YW5jZScsICRub2RlX3N0YXRzLCAkdm1fc3RhdHMsICRncm91cF9tZW1iZXJzX3By
aW8sICRvbmxpbmVfbm9kZV91c2FnZSk7DQorICAgIH0NCisNCisgICAgI29yZGVyIGJ5IHNvZnRf
Y29uc3RyYWludF9wcmlvLCBoYWdyb3VwIHByaW8sIHdlaWdodCAoQmVzdCBmaXQgYWxnb3JpdGht
LCBsb3dlciBkaXN0YW5jZSBmaXJzdCksIG51bWJlciBvZiBzZXJ2aWNlcywgYW5kIG5vZGVuYW1l
DQorICAgIG15IEB0YXJnZXRfYXJyYXkgPSBzb3J0IHsNCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJHRhcmdldF9ub2Rlcy0+eyRifS0+e3ByaW99IDw9PiAkdGFyZ2V0X25vZGVzLT57
JGF9LT57cHJpb30gfHwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHRhcmdldF9u
b2Rlcy0+eyRhfS0+e3NvZnRfY29uc3RyYWludF9wcmlvfSA8PT4gJHRhcmdldF9ub2Rlcy0+eyRi
fS0+e3NvZnRfY29uc3RyYWludF9wcmlvfSB8fA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAkdGFyZ2V0X25vZGVzLT57JGF9LT57d2VpZ2h0fSA8PT4gJHRhcmdldF9ub2Rlcy0+eyRi
fS0+e3dlaWdodH0gfHwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHRhcmdldF9u
b2Rlcy0+eyRhfS0+e29ubGluZV9ub2RlX3VzYWdlfSA8PT4gJHRhcmdldF9ub2Rlcy0+eyRifS0+
e29ubGluZV9ub2RlX3VzYWdlfSB8fA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAk
dGFyZ2V0X25vZGVzLT57JGF9LT57bmFtZX0gY21wICR0YXJnZXRfbm9kZXMtPnskYn0tPntuYW1l
fQ0KKyAgICAgICAgICAgICAgICAgICAgICAgfSBrZXlzICUkdGFyZ2V0X25vZGVzOw0KKw0KKyAg
ICBteSAkdGFyZ2V0ID0gJHRhcmdldF9hcnJheVswXTsNCisNCisgICAgcmV0dXJuICR0YXJnZXQ7
DQorfQ0KKw0KKw0KK3N1YiBjaGVja19oYXJkX2NvbnN0cmFpbnRzIHsNCisgICAgbXkgKCRoYWVu
diwgJHZtaWQsICRjZCwgJG5vZGUsICRub2RlX3N0YXRzLCAkdm1fc3RhdHMsICRzdG9yZWNmZywg
JGdyb3VwX21lbWJlcnNfcHJpbykgPSBAXzsNCisNCisgICAgI25vZGUgbmVlZCB0byBoYXZlIGEg
cHJpbyhyZXN0cmljdGVkIGdyb3VwKQ0KKyAgICByZXR1cm4gaWYgIWRlZmluZWQoJGdyb3VwX21l
bWJlcnNfcHJpby0+eyRub2RlfSk7DQorDQorICAgICN2bSBjYW4ndCBzdGFydCBpZiBob3N0IGhh
dmUgbGVzcyBjb3JlDQorICAgIHJldHVybiBpZiAkbm9kZV9zdGF0cy0+e21heGNwdX0gPCAkdm1f
c3RhdHMtPnttYXhjcHV9Ow0KKyAgICAjdm0gY2FuJ3Qgc3RhcnQgaWYgbm9kZSBkb24ndCBoYXZl
IGVub3VnaCBtZW0gdG8gaGFuZGxlIHZtIG1heCBtZW0NCisgICAgcmV0dXJuIGlmICRub2RlX3N0
YXRzLT57ZnJlZW1lbX0gPCAkdm1fc3RhdHMtPnttYXhtZW19Ow0KKw0KKyAgICAjbWF4IDk1JSBj
cHUvcmFtDQorICAgIG15ICRtZW1fdGhyZXNob2xkID0gMC45NTsNCisgICAgbXkgJGNwdV90aHJl
c2hvbGQgPSAwLjk1Ow0KKw0KKyAgICAjY2hlY2sgaWYgdGFyZ2V0IG5vZGUgaGF2ZSBlbm91Z2gg
bWVtIHJlc3NvdXJjZXMgdW5kZXIgdGhyZXNob2xkDQorICAgIHJldHVybiBpZiAkbm9kZV9zdGF0
cy0+e2ZyZWVtZW19ICogJG1lbV90aHJlc2hvbGQgPCAkdm1fc3RhdHMtPnttZW19Ow0KKw0KKyAg
ICAjY2hlY2sgaWYgdGFyZ2V0IG5vZGUgaGF2ZSBlbm91Z2ggY3B1IHJlc3NvdXJjZXMgdW5kZXIg
dGhyZXNob2xkDQorICAgIHJldHVybiBpZiAkbm9kZV9zdGF0cy0+e3RvdGFsZnJlZWNwdX0gKiAk
Y3B1X3RocmVzaG9sZCA8ICR2bV9zdGF0cy0+e3RvdGFsY3B1fTsNCisNCisgICAgI2NoZWNrIHN0
b3JhZ2UgYXZhaWxhYmlsaXR5DQorICAgIGlmICgkY2QtPnt0eXBlfSBlcSAndm0nKSB7DQorICAg
ICAgIG15ICRjb25mID0gdW5kZWY7DQorICAgICAgIGV2YWwgeyAkY29uZiA9ICRoYWVudi0+cmVh
ZF92bV9jb25maWcoJHZtaWQpOyB9Ow0KKyAgICAgICBpZiAoISRAKSB7DQorICAgICAgICAgICBl
dmFsIHsgUFZFOjpRZW11U2VydmVyOjpjaGVja19zdG9yYWdlX2F2YWlsYWJpbGl0eSgkc3RvcmVj
ZmcsICRjb25mLCAkbm9kZSkgfTsNCg0Kbm9uLWd1YXJlZCBwdmUtZW52IGNhbGwgY2Fubm90IHN0
YXkgaGVyZSBpbiBtYW5hZ2VyDQoNCisgICAgICAgICAgIHJldHVybiBpZiAkQDsNCisgICAgICAg
fQ0KKw0KKyAgICB9IGVsc2lmICgkY2QtPnt0eXBlfSBlcSAnY3QnKSB7DQorICAgICAgIG15ICRj
b25mID0gdW5kZWY7DQorICAgICAgIGV2YWwgeyAkY29uZiA9ICRoYWVudi0+cmVhZF9jdF9jb25m
aWcoJHZtaWQpOyB9Ow0KKyAgICAgICAjZml4bWUgOiBjaGVjayBzdG9yYWdlIGZvciBseGMgdG9v
DQorICAgIH0NCisNCisgICAgIyBmaXhtZTogY2hlY2sgYnJpZGdlIGF2YWlsYWJpbGl0eQ0KKyAg
ICAjIGZpeG1lOiB2bTogYWRkIGEgY2hlY2sgZm9yIGNwdW1vZGVsIGNvbXBhdGliaWxpdHkgPw0K
KyAgICByZXR1cm4gMTsNCit9DQorDQorc3ViIGNvbXB1dGVfc29mdF9jb25zdHJhaW50cyB7DQor
ICAgIG15ICgkbm9kZV9zdGF0cywgJHZtX3N0YXRzKSA9IEBfOw0KKw0KKyAgICAjdHJ5IHRvIHJl
YWNoIDgwJSBtYXggY3B1L3JhbQ0KKyAgICBteSAkbWVtX3RocmVzaG9sZCA9IDAuODsNCisgICAg
bXkgJGNwdV90aHJlc2hvbGQgPSAwLjg7DQorDQorICAgIG15ICRjb3VudCA9IDA7DQorICAgICNj
aGVjayBpZiB0YXJnZXQgbm9kZSBoYXZlIGVub3VnaCBtZW0gcmVzc291cmNlcyB1bmRlciB0aHJl
c2hvbGQNCisgICAgJGNvdW50KysgaWYgJG5vZGVfc3RhdHMtPntmcmVlbWVtfSAqICRtZW1fdGhy
ZXNob2xkIDwgJHZtX3N0YXRzLT57bWVtfTsNCisNCisgICAgI2NoZWNrIGlmIHRhcmdldCBub2Rl
IGhhdmUgZW5vdWdoIGNwdSByZXNzb3VyY2VzIHVuZGVyIHRocmVzaG9sZA0KKyAgICAkY291bnQr
KyBpZiAkbm9kZV9zdGF0cy0+e3RvdGFsZnJlZWNwdX0gKiAkY3B1X3RocmVzaG9sZCA8ICR2bV9z
dGF0cy0+e3RvdGFsY3B1fTsNCisNCisgICAgI2ZpeG1lIDogYWRkIGFudGlhZmZpbml0eQ0KKw0K
KyAgICByZXR1cm4gJGNvdW50Ow0KK30NCisNCitzdWIgYWRkX25vZGVfcHJpbyB7DQorICAgIG15
ICgkbm9kZW5hbWUsICRtZXRob2QsICRub2RlX3N0YXRzLCAkdm1fc3RhdHMsICRncm91cF9tZW1i
ZXJzX3ByaW8sICRvbmxpbmVfbm9kZV91c2FnZSkgPSBAXzsNCisNCisgICAgI3JvdW5kZWQgdmFs
dWVzIHRvIGNvbXB1dGUgdmVjdG9ycyAoY3B1IDAtMTAwICwgbWVtIDBHLS0+WEcpDQorICAgIG15
ICR2bV90b3RhbGNwdSA9IGNlaWwoJHZtX3N0YXRzLT57dG90YWxjcHV9KTsNCisgICAgbXkgJHZt
X21lbSA9IGNlaWwoJHZtX3N0YXRzLT57bWVtfS8xMDI0LzEwMjQvMTAyNCk7DQorICAgIG15ICRu
b2RlX2ZyZWVjcHUgPSBjZWlsKCRub2RlX3N0YXRzLT57dG90YWxmcmVlY3B1fSk7DQorICAgIG15
ICRub2RlX2ZyZWVtZW0gPSBjZWlsKCRub2RlX3N0YXRzLT57ZnJlZW1lbX0vMTAyNC8xMDI0LzEw
MjQpOw0KKw0KKyAgICBteSBAdmVjX3ZtID0gKCR2bV90b3RhbGNwdSwgJHZtX21lbSk7ICAjPyBh
ZGQgbmV0d29yayB1c2FnZSBkaW1lbnNpb24gPw0KKyAgICBteSBAdmVjX25vZGUgPSAoJG5vZGVf
ZnJlZWNwdSwgJG5vZGVfZnJlZW1lbSk7ICM/IGFkZCBuZXR3b3JrIHVzYWdlIGRpbWVuc2lvbiA/
DQorICAgIG15ICR3ZWlnaHQgPSAwOw0KKyAgICBpZiAoJG1ldGhvZCBlcSAnZGlzdGFuY2UnKSB7
DQorICAgICAgICR3ZWlnaHQgPSBldWNsaWRlYW5fZGlzdGFuY2UoXEB2ZWNfdm0sXEB2ZWNfbm9k
ZSk7DQorICAgIH0gZWxzaWYgKCRtZXRob2QgZXEgJ2RvdHByb2QnKSB7DQorICAgICAgICR3ZWln
aHQgPSBkb3Rwcm9kKFxAdmVjX3ZtLFxAdmVjX25vZGUpOw0KKyAgICB9DQorDQorICAgIG15ICRu
b2RlID0ge307DQorICAgICRub2RlLT57d2VpZ2h0fSA9ICR3ZWlnaHQ7DQorICAgICRub2RlLT57
c29mdF9jb25zdHJhaW50X3ByaW99ID0gY29tcHV0ZV9zb2Z0X2NvbnN0cmFpbnRzKCRub2RlX3N0
YXRzLCAkdm1fc3RhdHMpOw0KKyAgICAkbm9kZS0+e3ByaW99ID0gJGdyb3VwX21lbWJlcnNfcHJp
by0+eyRub2RlbmFtZX07DQorICAgICRub2RlLT57b25saW5lX25vZGVfdXNhZ2V9ID0gJG9ubGlu
ZV9ub2RlX3VzYWdlLT57JG5vZGVuYW1lfTsNCisgICAgJG5vZGUtPntuYW1lfSA9ICRub2RlbmFt
ZTsNCisNCisgICAgcmV0dXJuICRub2RlOw0KK30NCisNCitzdWIgZ2V0X3NlcnZpY2Vfc3RhdHMg
ew0KKyAgIG15ICgkc2VsZiwgJHNzKSA9IEBfOw0KKw0KKyAgICAgICBmb3JlYWNoIG15ICRzaWQg
KHNvcnQga2V5cyAlJHNzKSB7DQorDQorICAgICAgICAgICBpZiAoJHNpZCA9fiBtL14odm18Y3R8
ZmEpOihcZCspJC8pIHsNCg0KQ291bGQgdXNlIFBWRTo6SEE6OkNvbmZpZzo6cGFyc2Vfc2lkDQoN
CisgICAgICAgICAgICAgICAkc3MtPnskc2lkfS0+e3R5cGV9ID0gJDE7DQorICAgICAgICAgICAg
ICAgJHNzLT57JHNpZH0tPntuYW1lfSA9ICQyOw0KKyAgICAgICAgICAgfQ0KKw0KKyAgICAgICAg
ICAgbXkgJHN0YXRzID0ge307DQorICAgICAgICAgICAkc3RhdHMtPntjcHV9ID0gMDsNCisgICAg
ICAgICAgICRzdGF0cy0+e21heGNwdX0gPSAwOw0KKyAgICAgICAgICAgJHN0YXRzLT57bWVtfSA9
IDA7DQorICAgICAgICAgICAkc3RhdHMtPnttYXhtZW19ID0gMDsNCg0Kc2FtZSBoZXJlLCBtYXli
ZSBuZXN0ZWQgYW5kIChuaXQpIEkgZmluZCBpdCBlYXNpZXIgdG8gcmVhZCB0byBkaXJlY3RseSBk
ZWNsYXJlIHRoZSBoYXNoDQppbiBzdWNoIGNhc2VzOg0KDQpteSAkc3RhdHMgPSB7DQogICAgY3B1
ID0+IC4uLg0KfTsNCg0KKw0KKyAgICAgICAgICAgI2F2b2lkIHRvIGNvbXB1dGUgYWxsIHN0YXRz
LCBhcyBjdXJyZW50bHkgd2Ugb25seSBzdXBwb3J0IHJlY292ZXJ5DQoNCmFoIG9rYXksIHlvdSBh
bHJlYWR5IGRvIGl0IG9ubHkgb24gcmVjb3ZlcnkgLSBvdmVybG9va2VkIHRoYXQgd2hlbiByZWFk
aW5nIHRoZSBjb3Zlcg0KbGV0dGVyDQoNCisgICAgICAgICAgIGlmICgkc3MtPnskc2lkfS0+e3N0
YXRlfSBlcSAncmVjb3ZlcnknKSB7DQorDQorICAgICAgICAgICAgICAgI2dldCB2bS9jdCBzdGF0
cyA1bWluIGJlZm9yZSBvbiBsYXN0IDIwbWluDQorICAgICAgICAgICAgICAgJHN0YXRzID0gJHNl
bGYtPntoYWVudn0tPmdldF92bV9ycmRfc3RhdHMoJHNzLT57JHNpZH0tPntuYW1lfSwgOTUpOw0K
KyAgICAgICAgICAgfQ0KKyAgICAgICAgICAgI2ZpeG1lOiB3aW5kb3dzIHZtIGZpbGwgbWVtb3J5
IHdpdGggemVybyBhdCBib290LCBzbyBtZW0gPSBtYXhtZW0NCisNCisgICAgICAgICAgICNyb3Vu
ZGVkIHZhbHVlcyBmb3Igb3JkZXJpbmcNCg0Kbml0OiBjZWlsICE9IHJvdW5kDQoNCisgICAgICAg
ICAgICRzdGF0cy0+e3RvdGFsY3B1cm91bmR9ID0gY2VpbCgkc3RhdHMtPntjcHV9ICogMTAwICog
JHN0YXRzLT57bWF4Y3B1fSk7DQorICAgICAgICAgICAkc3RhdHMtPnttZW1nfSA9IGNlaWwoICRz
dGF0cy0+e21lbX0gLzEwMjQgLzEwMjQgLzEwMjQpOw0KKw0KKyAgICAgICAgICAgJHNzLT57JHNp
ZH0tPntzdGF0c30gPSAkc3RhdHM7DQorICAgICAgIH0NCit9DQorDQorc3ViIHJlY29tcHV0ZV9v
bmxpbmVfbm9kZV9zdGF0cyB7DQorICAgIG15ICgkc2VsZikgPSBAXzsNCisNCisgICAgbXkgJG9u
bGluZV9ub2RlX3N0YXRzID0ge307DQorICAgIG15ICRvbmxpbmVfbm9kZXMgPSAkc2VsZi0+e25z
fS0+bGlzdF9vbmxpbmVfbm9kZXMoKTsNCisNCisgICAgZm9yZWFjaCBteSAkbm9kZSAoQCRvbmxp
bmVfbm9kZXMpIHsNCisgICAgICAgbXkgJHN0YXRzID0gJHNlbGYtPntoYWVudn0tPmdldF9ub2Rl
X3JyZF9zdGF0cygkbm9kZSk7DQorICAgICAgICAkc3RhdHMtPntjcHV9ID0gMCBpZiAhZGVmaW5l
ZCgkc3RhdHMtPntjcHV9KTsNCisgICAgICAgICRzdGF0cy0+e21heGNwdX0gPSAwIGlmICFkZWZp
bmVkKCRzdGF0cy0+e21heGNwdX0pOw0KKyAgICAgICAgJHN0YXRzLT57bWVtfSA9IDAgaWYgIWRl
ZmluZWQoJHN0YXRzLT57bWVtfSk7DQorICAgICAgICAkc3RhdHMtPnttYXhtZW19ID0gMCBpZiAh
ZGVmaW5lZCgkc3RhdHMtPnttYXhtZW19KTsNCisgICAgICAgICRzdGF0cy0+e3RvdGFsY3B1fSA9
ICRzdGF0cy0+e2NwdX0gKiAxMDAgKiAkc3RhdHMtPnttYXhjcHV9OyAjaG93IHRvIGhhbmRsZSBk
aWZmZXJlbnQgY3B1IG1vZGVsIHBvd2VyID8gYm9nb21pcHMgPw0KDQpCb2dvTWlwcyBpcyBmb3Ig
YSBzaW5nbGUgY29yZSBsb29wIElJUkMsIHNvIGl0J2QgYmUgYGNvcmVzIHggYm9nby1taXBzYCBJ
IGd1ZXNzLg0KDQorICAgICAgICAkc3RhdHMtPnt0b3RhbGZyZWVjcHV9ID0gKDEwMCAqICRzdGF0
cy0+e21heGNwdX0pIC0gJHN0YXRzLT57dG90YWxjcHV9Ow0KKyAgICAgICAgJHN0YXRzLT57ZnJl
ZW1lbX0gPSAkc3RhdHMtPnttYXhtZW19IC0gJHN0YXRzLT57bWVtfTsNCisgICAgICAgICRvbmxp
bmVfbm9kZV9zdGF0cy0+eyRub2RlfS0+e3N0YXRzfSA9ICRzdGF0czsNCisgICAgfQ0KKw0KKyAg
ICAkc2VsZi0+e29ubGluZV9ub2RlX3N0YXRzfSA9ICRvbmxpbmVfbm9kZV9zdGF0czsNCit9DQor
DQogMTsNCmRpZmYgLS1naXQgYS9zcmMvUFZFL0hBL1NpbS9UZXN0RW52LnBtIGIvc3JjL1BWRS9I
QS9TaW0vVGVzdEVudi5wbQ0KaW5kZXggNjcxOGQ4Yy4uMDhmMjdjNyAxMDA2NDQNCi0tLSBhL3Ny
Yy9QVkUvSEEvU2ltL1Rlc3RFbnYucG0NCisrKyBiL3NyYy9QVkUvSEEvU2ltL1Rlc3RFbnYucG0N
CkBAIC0xMTgsNCArMTE4LDMxIEBAIHN1YiBnZXRfbWF4X3dvcmtlcnMgew0KICAgICByZXR1cm4g
MDsNCiB9DQoNCitzdWIgZ2V0X25vZGVfcnJkX3N0YXRzIHsNCisgICAgbXkgKCRzZWxmLCAkbm9k
ZSkgPSBAXzsNCisNCg0KSXQgZ2V0cyBhZGRlZCBpbiB0aGUgbmV4dCBwYXRjaCwgYnV0IChlbHNl
KSBpdCdkIGRlZi4gbmVlZCBhICNGSVhNRSBjb21tZW50IF5eDQoNClRoYXQgbWFrZXMgbWUgdGhp
bms6IEZvciBhIHBhdGNoL2NvbW1pdCBzZXBhdGF0aW9uIHBlcnNwZWN0aXZlIGl0IGNvdWxkIGJl
IG5pY2UNCnRvIHNwbGl0IHRoaXMgb25lIGludG8gdHdvLA0KDQoxLiBhZGQgdXNhZ2UgYWNjb3Vu
dGluZyBmb3IgdGhlIHNwZWNpZmljIHJlY292ZXJ5IGNhc2UNCjIuIHVzZSB0aGF0IHRvIGFjdHVh
bGx5IGZpbmQgYSBsb3coZXIpLWxvYWRlZCBub2RlIG9uIHJlY292ZXJ5Lg0KDQorICAgIG15ICRz
dGF0cyA9IHt9Ow0KKyAgICAkc3RhdHMtPntjcHV9ID0gMDsNCisgICAgJHN0YXRzLT57bWF4Y3B1
fSA9IDA7DQorICAgICRzdGF0cy0+e21lbX0gPSAwOw0KKyAgICAkc3RhdHMtPnttYXhtZW19ID0g
MDsNCisNCisgICAgcmV0dXJuICRzdGF0czsNCit9DQorDQorc3ViIGdldF92bV9ycmRfc3RhdHMg
ew0KKyAgICBteSAoJHNlbGYsICR2bWlkLCAkcGVyY2VudGlsZSkgPSBAXzsNCisNCisgICAgbXkg
JHN0YXRzID0ge307DQorPiArICAgICRzdGF0cy0+e2NwdX0gPSAwOw0KKyAgICAkc3RhdHMtPntt
ZW19ID0gMDsNCisgICAgJHN0YXRzLT57bWF4bWVtfSA9IDA7DQorICAgICRzdGF0cy0+e21heGNw
dX0gPSAwOw0KKyAgICAkc3RhdHMtPntjcHV9ID0gJHN0YXRzLT57Y3B1fSAqIDEwMDsNCisgICAg
JHN0YXRzLT57dG90YWxjcHV9ID0gJHN0YXRzLT57Y3B1fSAqICRzdGF0cy0+e21heGNwdX07DQor
DQorICAgIHJldHVybiAkc3RhdHM7DQorfQ0KKw0KIDE7DQoNCg0KDQpfX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXw0KcHZlLWRldmVsIG1haWxpbmcgbGlzdA0K
cHZlLWRldmVsQGxpc3RzLnByb3htb3guY29tPG1haWx0bzpwdmUtZGV2ZWxAbGlzdHMucHJveG1v
eC5jb20+DQpodHRwczovL2FudGlwaGlzaGluZy5jZXRzaS5mci9wcm94eS92Mz9pPVprOTJWRUZL
YUdRNFVtczRjblpFVVdNVHBmSGFYRlFHUncxX0NuT29PSDAmcj1iSEExZEdWM05XSlFWVWxvYVdO
RlVaUG0wZmlpQnZpYWl5X1JEYXYyR1ExVTR1eTZsc0REdjN1QnN6cHZ2V1lRTjVGcUtxRkQ2V1BZ
dXBmQVVQMWM5ZyZmPVNsaERiRTl1UzJsYVMySmFaRnBOV3Ztc3hhaTF6bEpQOWxsZ25sNUhJdi00
akFqaThEaDJCUWF3enhJRDVienI2VXYtM0VRZC1lbHVRYnNQZmNVT1RnJnU9aHR0cHMlM0EvL2xp
c3RzLnByb3htb3guY29tL2NnaS1iaW4vbWFpbG1hbi9saXN0aW5mby9wdmUtZGV2ZWwmaz1YUktV
DQoNCg0K