From mboxrd@z Thu Jan  1 00:00:00 1970
Return-Path: <ffmpeg-devel-bounces@ffmpeg.org>
Received: from ffbox0-bg.ffmpeg.org (ffbox0-bg.ffmpeg.org [79.124.17.100])
	by master.gitmailbox.com (Postfix) with ESMTPS id 782AA4C5E2
	for <ffmpegdev@gitmailbox.com>; Mon, 26 May 2025 07:50:00 +0000 (UTC)
Received: from [127.0.1.1] (localhost [127.0.0.1])
	by ffbox0-bg.ffmpeg.org (Postfix) with ESMTP id 3F63968D29D;
	Mon, 26 May 2025 10:49:55 +0300 (EEST)
Received: from SY8PR01CU002.outbound.protection.outlook.com
 (mail-australiaeastazolkn19010018.outbound.protection.outlook.com
 [52.103.72.18])
 by ffbox0-bg.ffmpeg.org (Postfix) with ESMTPS id D364C68C8C5
 for <ffmpeg-devel@ffmpeg.org>; Mon, 26 May 2025 10:49:47 +0300 (EEST)
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=vyI2jRMLn/GRsZ2hsSJFz79CvBWHm0pdV6uuIObq4FBFyi8M29HQvsfFk2wkIcIcVr6mavXtLNhJ1XlAB7OhflZFPfo8onnXdyThvKhP7TgDjcBNCLtWQEmhNS/NaFWMWeRnq4hiKzqEH9izMAucPoV7rmolSXTyEaN66dEBsAJMfHSU7xfVtIDpYcKTdw0OquTMf0KcaOMcx9s+0bbLKyw9CEaUDn43e5MWKX6fwDL7SyKCkN+6Ha8z6fbpejjQLCdD2IrNOv5BAoqfp60jzlUIjsXE5/ZtlO0h8Zl6G4ihETzjtecXgBejGkCNspSzOi4enwsNDmfc2DfSR7IsbA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; 
 s=arcselector10001;
 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=amNTWkgftjnjqSOKtw2sHYjD2fRi/NLjo6oEEWtDI6c=;
 b=O5GGSNmxZe2UpyKy+lsSJ3dZ69n48SFlhjGe+vaXf33lKlp+LJhW34erGXcyVq55xIcubBjM6NebFOv1d2dFHKIw87fNw8j9k57dT2/hIDjAJaD+yTbcVUQJPj5UpV1QdhY+kgAjmLBCWw7l8NSCEc0HAoWdmscS1kTKkQXIDxac3FU0ZzpwiCCtctlx50jU7Kc0o8qG29QMEF7QNq11kDgznpgCM8oOEBmOVwa3+N+voe18u11a5xYzNb0B/6Q2m+bTxaO4MYsz/Vfw26WbGJuKM+TG+fzTYTOH5IDE1JqyKATHMElpev/s1iqRyEBapLfrz9MQdUD92LzRq7RB5A==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none;
 dkim=none; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=outlook.com;
 s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=amNTWkgftjnjqSOKtw2sHYjD2fRi/NLjo6oEEWtDI6c=;
 b=YEIdEkJawlqLDtDIcH4oD2Syea3Ax7X6m8b94HK2ZbwZf1bOs2h0BCCfPVP6d+Bug+TStSIhKaIF8vnPurb2dLHGB35Q642wIXi/gia7mF4LaxwRrF4Pq6q+pBzYh7Qp7U40jQyAyxYBkCoaHt0gIKISfWV3nijRfzc/uEip3KTjY3olXDidb3iRx4jNgVnxxxyMC7/ES+nTXH01dYP9mMbj2GW21KmrxpoVRMB2Qz7UZ7+JBN1E5eR/7a4SD4cBzU3lfNOxJDq8x3ylY1jq4gaU/Xk9TACoo0a+2cZjOeWg1YxPIFjhT31/pFcTQ7vO2V6v/NyePh1dNCOVd9oO3Q==
Received: from MEYP282MB1878.AUSP282.PROD.OUTLOOK.COM (2603:10c6:220:be::15)
 by MEYP282MB1592.AUSP282.PROD.OUTLOOK.COM (2603:10c6:220:bb::12) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8769.25; Mon, 26 May
 2025 07:49:43 +0000
Received: from MEYP282MB1878.AUSP282.PROD.OUTLOOK.COM
 ([fe80::dc32:4068:a067:92b8]) by MEYP282MB1878.AUSP282.PROD.OUTLOOK.COM
 ([fe80::dc32:4068:a067:92b8%3]) with mapi id 15.20.8769.025; Mon, 26 May 2025
 07:49:43 +0000
From: Yibo Fang <blueybf777@outlook.com>
To: "ffmpeg-devel@ffmpeg.org" <ffmpeg-devel@ffmpeg.org>
Thread-Topic: [FFmpeg-devel] [PATCH] avfilter: add PCM dumping between filters
 for audio debugging
Thread-Index: AQHbs4FR7I/oWjJTTUybqSSDOZn5ULO0wauAgC/4h3yAAAQhkA==
Date: Mon, 26 May 2025 07:49:43 +0000
Message-ID: <MEYP282MB1878E2E6E43B5BA206A78E2F8865A@MEYP282MB1878.AUSP282.PROD.OUTLOOK.COM>
References: <MEYP282MB18784DCA03D764E54E08FC8D88BB2@MEYP282MB1878.AUSP282.PROD.OUTLOOK.COM>
 <AS8P250MB0744B9A650221901E60022778F842@AS8P250MB0744.EURP250.PROD.OUTLOOK.COM>
 <MEYP282MB1878FF228716762A576B6BD38865A@MEYP282MB1878.AUSP282.PROD.OUTLOOK.COM>
In-Reply-To: <MEYP282MB1878FF228716762A576B6BD38865A@MEYP282MB1878.AUSP282.PROD.OUTLOOK.COM>
Accept-Language: en-GB, zh-CN, en-US
Content-Language: en-GB
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
msip_labels: 
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: MEYP282MB1878:EE_|MEYP282MB1592:EE_
x-ms-office365-filtering-correlation-id: 4a455ee8-1b20-49df-7801-08dd9c29e0c9
x-microsoft-antispam: BCL:0;
 ARA:14566002|7092599006|461199028|12050799012|41001999006|19110799006|15080799009|8060799009|15030799003|9400799033|8062599006|440099028|3412199025|26104999006|12091999003|10035399007|102099032|56899033;
x-microsoft-antispam-message-info: =?gb2312?B?S3JoUy9Wc3VIcnVpMlNTYjVNeTNUQWg0Tm9GUmJSQ3ljNUdQaUR5VmRJN053?=
 =?gb2312?B?Wm9PdGJMbzFPZFZSdVlUZURQUytySzhQdDd6Um40NUk4UVJqQUNYd0F5S3N3?=
 =?gb2312?B?VlNoSHNqdGdFVGdvaDB6YXF4NnZrSk8zUTFrbnZNaU1QUTJ2ajNsZW5wUXkx?=
 =?gb2312?B?em5SeTVmUTd2dnBxOFA5Ukk0RWRJOUFNcEZHSDBUVko3ai9LTmM3a0FaWEpL?=
 =?gb2312?B?Y254UWFER1ZYMDh3c3lhUFVXaFRnMmd4ZjVnak8yYk5WMGpyZGxERFBYaGJi?=
 =?gb2312?B?RHQ0SUN4QnhkN2ozVXg4QjFNYnY4WVpSUEFHUkRZdk0vTWhueDdEUk9ZWStB?=
 =?gb2312?B?NlZGRDFXZGdwR29oVTFtejVXbTQzMU9DMC9laGRVNm5RM1l6ZENNMUV2bVNC?=
 =?gb2312?B?Y0htZC8vZjYybU50azgxcUFPSiszNWJKaW5jNXdSNnFEMkNsTStEd1Qwa0FN?=
 =?gb2312?B?Y0lZZHJxMFdPdFJtL1dQWjEzVzVZS05jay9BYkZscktHMWpyZW41K2pLU3Y5?=
 =?gb2312?B?Q0JUQ1lRMzhJaytzcmJVS0hPMDVQMnVrSjJsbjJFVGR0ZkxyVDF1Z1JId2xn?=
 =?gb2312?B?ajMrQTlLSjFKZ3JpejdFWjJMditENzBTNTdPdmxQNDV0cmxZK2hDWkhYZGVp?=
 =?gb2312?B?eHErOTdnSE0xUHRvUnczWktWZE1OZWtCRTZaNFd4MDAvMUJVa3FmcVdUelV4?=
 =?gb2312?B?ZXN2VWN0RURqMjlJckxNeXVVelpwUTR2SUhwM1BBU29xNUpjQy9UdDNndldQ?=
 =?gb2312?B?R1hGcnRVUDRRV3AvRnNtNFV3VGJ4dEFEQXF3SUFmVUZDOXdnblJaNUpFUzZR?=
 =?gb2312?B?djMrTEdpS1l5c3VOc2ZQa3U5N0NQK0UxUWxpNnJlRXdOOHFBYlY4ckdQZDh2?=
 =?gb2312?B?MVFad0grQ0NQSFplV0JxT2xkTFhxalJSY2lBQkFENkRBbGdMeFd3YytpaW10?=
 =?gb2312?B?U0sweDdCTGtXakVkK2ZteDR4Uk53OXk2NnVCL1dEZGxhcUdza2hCaGY2VEcw?=
 =?gb2312?B?eGFZbHR1dENUaHd5dlhVS0lheGJLbkJaL2lvMkhuKzBjQXkvQzFyY1hxSEpC?=
 =?gb2312?B?a2lLZXkrOElkSG9CbXUzMWhpT2YxcGxJRDlQSFo1dXFENXhEU1hHU1UySVpT?=
 =?gb2312?B?SjlwRStISlRNUWFzd1ZNOERRc3FnTkljd0djS2NpdVlBL0UyQ1puUHVzZ0lX?=
 =?gb2312?B?V09CZmU5RE8xS0VTK2pHdFdGdi82b3JzUCtSemxHSkFUWnhSZDhFQnc2a0hP?=
 =?gb2312?B?eHVrTkh0NSt3dTlMalBWdzRqTDB2U3YzQXMwTG9oS1EvVmVZRkxuVWx5cnhN?=
 =?gb2312?B?SUlGNTI3UW45bGIwUGNETlFNOXdWWk1kSld1YlBIWndrMG1FYXZMeXV2M21V?=
 =?gb2312?B?M2gwQ2MyV09iUk5LV25lZ0pQdEFueVdMVjJKSHlHU2htSXJoQURkc1U0cXFW?=
 =?gb2312?B?c1Z3OHlmTmNEYnhNTjRmMGtWSkl1RTVXR0dsTWhKUTJSbkJ2ajFZazFOYmJX?=
 =?gb2312?B?N21tbHlEN1NmaWNQYTFRMXFRQk9KQkJXOTFhZU5tYjh1Q0Vnbkt0WGs5QjM3?=
 =?gb2312?B?YnRTS25pNjllRHlORVF5eG9PT3pic2RVYThTUEtVRUwyamNwVEhYaXJ6MTdL?=
 =?gb2312?B?U0tOb1d1V29MT0VLb1RIUWN6bUdMOEtrb2VZSXhJV2lnbDlHVE1yWTE5bEtl?=
 =?gb2312?B?U0lVaHY1U3o1N3ZwcVFJTnVkQzR6MEpTY09UQVJvdDJiOEVqcUNJZ0todW1m?=
 =?gb2312?B?N1JDeko4bm1PbE80N2FBZHlCSEVkeHQyS2ZNQVVOdXFSK1JYdkJKd3l6R2l1?=
 =?gb2312?B?UGVlM1hycEs0VGJodk41dlE1bUN4ZVh6eW5nV2tDSytuZzN2eC9RSjBnWFow?=
 =?gb2312?B?Qm9VRmN6VjF4cEUzNUc4aEI5Mk9aRWhCRmJMYitJMXl2ZEE9PQ==?=
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0: =?gb2312?B?RUd4RHNUeG9aMVdwSXdQMzVTTzY2aGVHSGpDWFg1am1VcEFaMmJjM25ZRzVU?=
 =?gb2312?B?dTlaSGlCazlIaEpGSDA0NzN1aDhRcUk0MGZRbFgxeHNteEJVcWFMQlRsbTJ2?=
 =?gb2312?B?U1lXZS9jbk5oOGJaYUVHZnJ4YURTd2dNMEFFRkpXQUlxNGt6a2piRDJsL3FM?=
 =?gb2312?B?b0xBYzBVNjVOM2pyYU9aTkhyRlZzTzVZalFGTFp0N3NwaTk2OWNyUmdLaWxk?=
 =?gb2312?B?YndCSXFVVThNZDRqVEk4UnkzMFJQWmI5ejNFUGFnT2c2aHh1UE5wbWQzMVRz?=
 =?gb2312?B?WXRtUVBtaXVTbG9kSEdNYlRxTmRrSkRlSmtKeXdIYzZoY2ZWSkJhNjJsQXo4?=
 =?gb2312?B?K2VkUjhwMUx3emwvQ25FZTdFN2FIOXdybkZOQnZEb3A1OTdlNTJnWmUvREt0?=
 =?gb2312?B?b2pZYkZ4U1RmNWczU0hBMHFMTDhrZmxjR2lEbUo5STRNcHNkUUZQMk9OTUk1?=
 =?gb2312?B?enVHQ0UvM2ZkRmRYdEQweFZIVUZQNmNPS0xUTDFrVUJRTFIvZkdtbEJoaDlH?=
 =?gb2312?B?aU5FT2lrTTVzaFZRSHBSTDlIejA5eXpXMDIxSk40RGhsWml5VXduY1hVV3NL?=
 =?gb2312?B?SFpUbWE4TEwvWXRQVFFVNm92QXNBd3ZoWGVpcGlGK1BEWmR0V0Zhd1RPVzB2?=
 =?gb2312?B?aFphTysyRlFsOHM4NTFDK2EyanZOdVZTU2l0Z1RrTXlHZFlsNnVmSjdOeFNB?=
 =?gb2312?B?YzdMd0RSZjRyWno4V3h6V2NGOUJ2Ym96TlhaVVlpRkxtWEJabzZmOXIvRUFN?=
 =?gb2312?B?Z0lmbTBEaDQ2bUJ4d2ZPQVFwNGUxWXlxbFZLTTdmQjMvNDRWV0tSbVFWOVRu?=
 =?gb2312?B?bkNDL0ZYTmJwcFZtYW1IVHNWT3JLdlJzbnlMOTVDZEd6cDNyRVd2RzVaSjF2?=
 =?gb2312?B?Nzh5OWN6RnQwOHlDUHFGVGFBQWFPR0FITmJITW1CNHZweDgydU9rTnFCUS9D?=
 =?gb2312?B?ZWwwVytrbTBOVXVpWTJsMHBLYkN1RzMzN2JMNm43T2pIMlJCVXppUTZsbE9I?=
 =?gb2312?B?aDZIMjIwVnU1SmVEalk2dXFxckxSTDA5Q3hILzRydVlLWW1saHhId3hLSFRj?=
 =?gb2312?B?RGp0bm9uOXBJQnhzQlI0S1gxUWMrR21BUzExZnNZQ2JCNjZlNTcwbmxtenR6?=
 =?gb2312?B?UmtSZEgrQUQvdDF6U1gzTytmeDlyWmNCSERmMk5ZTk5TS1FhZzB0R0JPS29V?=
 =?gb2312?B?dEhJQ0xtZ1AwdTQrcU9FREZtVllmTTd0ODdOaGR0MmZnK2lNYVVYdCt2ZzNN?=
 =?gb2312?B?MFNGZzBTVktNTkpmWENnbjlvNXluS1FXT1BPUmhaenZGYzVVWkh4S0FzNlk5?=
 =?gb2312?B?aWtWTEs0THhxeUREcWFGdGo3ejZPWkR6WExWZ1k4QUV0WUI3NXViUlpHcmd3?=
 =?gb2312?B?b2VPMTZxSkVXcTFOdjNIT2hMTnJLSmF2NUM0Wk1lTUluN2lUQzgzMXBXcUJw?=
 =?gb2312?B?aURvQTNoWWh2VzM4VFNaekx1aVVRVlhvNWpkZ0M0YmNVa1JmaHE2bDk2ZlN5?=
 =?gb2312?B?S0pPc2U0Q294M2YvRmY0dytCOTBYenhYS0VnT1NkdDNFUVhoM3ZZNXZ3RGhK?=
 =?gb2312?B?WGVyM0VTVC9KQnI2bWRIckpLdEJyMHhFRFlwUzhJdDEyaFVDOGhxN3FWVXFr?=
 =?gb2312?Q?nWUwZHMAKNCtG4e5oZatnLvzNT3qF/fIfhX3KB4E6SJ8=3D?=
MIME-Version: 1.0
X-OriginatorOrg: outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: MEYP282MB1878.AUSP282.PROD.OUTLOOK.COM
X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000
X-MS-Exchange-CrossTenant-Network-Message-Id: 4a455ee8-1b20-49df-7801-08dd9c29e0c9
X-MS-Exchange-CrossTenant-originalarrivaltime: 26 May 2025 07:49:43.4947 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa
X-MS-Exchange-CrossTenant-rms-persistedconsumerorg: 00000000-0000-0000-0000-000000000000
X-MS-Exchange-Transport-CrossTenantHeadersStamped: MEYP282MB1592
X-Content-Filtered-By: Mailman/MimeDel 2.1.29
Subject: Re: [FFmpeg-devel] [PATCH] avfilter: add PCM dumping between
 filters for audio debugging
X-BeenThere: ffmpeg-devel@ffmpeg.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: FFmpeg development discussions and patches <ffmpeg-devel.ffmpeg.org>
List-Unsubscribe: <https://ffmpeg.org/mailman/options/ffmpeg-devel>,
 <mailto:ffmpeg-devel-request@ffmpeg.org?subject=unsubscribe>
List-Archive: <https://ffmpeg.org/pipermail/ffmpeg-devel>
List-Post: <mailto:ffmpeg-devel@ffmpeg.org>
List-Help: <mailto:ffmpeg-devel-request@ffmpeg.org?subject=help>
List-Subscribe: <https://ffmpeg.org/mailman/listinfo/ffmpeg-devel>,
 <mailto:ffmpeg-devel-request@ffmpeg.org?subject=subscribe>
Reply-To: FFmpeg development discussions and patches <ffmpeg-devel@ffmpeg.org>
Content-Type: text/plain; charset="gb2312"
Content-Transfer-Encoding: base64
Errors-To: ffmpeg-devel-bounces@ffmpeg.org
Sender: "ffmpeg-devel" <ffmpeg-devel-bounces@ffmpeg.org>
Archived-At: <https://master.gitmailbox.com/ffmpegdev/MEYP282MB1878E2E6E43B5BA206A78E2F8865A@MEYP282MB1878.AUSP282.PROD.OUTLOOK.COM/>
List-Archive: <https://master.gitmailbox.com/ffmpegdev/>
List-Post: <mailto:ffmpegdev@gitmailbox.com>

W0ZGbXBlZy1kZXZlbCx2MiwwLzJdIGF2ZmlsdGVyOiBhZGQgUENNIGR1bXBpbmcgYmV0d2VlbiBm
aWx0ZXJzIGZvciBhdWRpbyBkZWJ1Z2dpbmcNCkZyb206IFlpYm8gRmFuZyA8Ymx1ZXliZjc3N0Bv
dXRsb29rLmNvbT4NClN1YmplY3Q6IFtGRm1wZWctZGV2ZWwsdjIsMC8yXSBhdmZpbHRlcjogYWRk
IFBDTSBkdW1waW5nIGJldHdlZW4gZmlsdGVycyBmb3IgYXVkaW8gZGVidWdnaW5nDQpEYXRlOiBX
ZWQsIDIzIEFwciAyMDI1IDEwOjU3OjAwICswODAwDQpNZXNzYWdlLUlkOiA8Y292ZXIuMC4yQGZm
bXBlZz4NCg0KVGhpcyBzZXJpZXMgYWRkcyBhIGRlYnVnZ2luZyBmZWF0dXJlIHRoYXQgbGV0cyBk
ZXZlbG9wZXJzIGR1bXAgcmF3DQpQQ00gYXVkaW8gYmV0d2VlbiBmaWx0ZXJzLiAgVGhlIGRhdGEg
YXJlIHdyaXR0ZW4gdG8gZmlsZXMgaW4gYSB1c2VyLQ0Kc2VsZWN0ZWQgZGlyZWN0b3J5IHZpYSB0
d28gbmV3IGNvbW1hbmRzOg0KDQogICAgZHVtcF9yYXdfc3RhcnQgZmlsZT0vcGF0aC90by9kaXIv
DQogICAgZHVtcF9yYXdfc3RvcA0KDQpQbGFuYXIgYXVkaW8gaXMgYXV0b21hdGljYWxseSBpbnRl
cmxlYXZlZDsgb25seSBhdWRpbyBsaW5rcyBhcmUNCmFmZmVjdGVkLiAgUGF0Y2ggMS8yIGltcGxl
bWVudHMgdGhlIGZlYXR1cmUsIHBhdGNoIDIvMiBkb2N1bWVudHMgaXQuDQoNClJlZ2FyZHMsDQpZ
aWJvIEZhbmcNCg0KLS0tDQoNCkZyb20gMmRmNTZlNzQyNzNkNDc3YWUyNzAwM2UwOTgxMjIwNzQ5
YTZiNThjZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDENCkZyb206IFlpYm8gRmFuZyA8Ymx1ZXli
Zjc3N0BvdXRsb29rLmNvbT4NCkRhdGU6IFdlZCwgMjMgQXByIDIwMjUgMTA6NTg6NTUgKzA4MDAN
ClN1YmplY3Q6IFtQQVRDSCAxLzJdIGF2ZmlsdGVyOiBhZGQgUENNIGR1bXBpbmcgYmV0d2VlbiBm
aWx0ZXJzIGZvciBhdWRpbw0KIGRlYnVnZ2luZw0KDQpUaGlzIHBhdGNoIGludHJvZHVjZXMgUENN
IGR1bXBpbmcgc3VwcG9ydCBiZXR3ZWVuIEFWRmlsdGVyIGxpbmtzLA0KaW50ZW5kZWQgZm9yIGF1
ZGlvIGRlYnVnZ2luZyBhbmQgZmlsdGVyLWdyYXBoIGluc3BlY3Rpb24uDQoNClR3byBmaWx0ZXIg
Y29tbWFuZHMgYXJlIGFkZGVkOg0KDQogICAgZHVtcF9yYXdfc3RhcnQgZmlsZT0vcGF0aC90by9v
dXRwdXQvZGlyLw0KICAgIGR1bXBfcmF3X3N0b3ANCg0KV2hlbiBkdW1waW5nIGlzIGVuYWJsZWQs
IGF1ZGlvIGxlYXZpbmcgdGhlIHNlbGVjdGVkIGZpbHRlciBvdXRwdXQgaXMNCndyaXR0ZW4gdG8g
YW4gYXV0b21hdGljYWxseSBuYW1lZCBmaWxlOg0KDQogICAgPHNyY19maWx0ZXI+LTxkc3RfZmls
dGVyPi5wY20NCg0KUGxhbmFyIGZvcm1hdHMgYXJlIGNvbnZlcnRlZCB0byBwYWNrZWQuICBGaWxl
IGRlc2NyaXB0b3JzIGFyZSBvcGVuZWQNCm9uIGRlbWFuZCBhbmQgY2xvc2VkIGF1dG9tYXRpY2Fs
bHkuICBXb3JrcyBvbmx5IG9uIGF1ZGlvIGxpbmtzLg0KDQpFeGFtcGxlIChDIEFQSSk6DQogICAg
YXZmaWx0ZXJfcHJvY2Vzc19jb21tYW5kKGZpbHRlciwgImR1bXBfcmF3X3N0YXJ0IiwNCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgImZpbGU9L3RtcC8iLCBOVUxMLCAwLCAwKTsNCg0KU2ln
bmVkLW9mZi1ieTogWWlibyBGYW5nIDxibHVleWJmNzc3QG91dGxvb2suY29tPg0KLS0tDQogbGli
YXZmaWx0ZXIvYXZmaWx0ZXIuYyB8IDE0NCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr
KysrKysrKysrKw0KIGxpYmF2ZmlsdGVyL2F2ZmlsdGVyLmggfCAgIDUgKysNCiAyIGZpbGVzIGNo
YW5nZWQsIDE0OSBpbnNlcnRpb25zKCspDQoNCmRpZmYgLS1naXQgYS9saWJhdmZpbHRlci9hdmZp
bHRlci5jIGIvbGliYXZmaWx0ZXIvYXZmaWx0ZXIuYw0KaW5kZXggNjRjMTA3NWM0MC4uYjcwMzQ1
NjlkYiAxMDA2NDQNCi0tLSBhL2xpYmF2ZmlsdGVyL2F2ZmlsdGVyLmMNCisrKyBiL2xpYmF2Zmls
dGVyL2F2ZmlsdGVyLmMNCkBAIC0xOSw2ICsxOSw5IEBADQogICogRm91bmRhdGlvbiwgSW5jLiwg
NTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxIFVT
QQ0KICAqLw0KDQorI2luY2x1ZGUgPGZjbnRsLmg+DQorI2luY2x1ZGUgPHVuaXN0ZC5oPg0KKw0K
ICNpbmNsdWRlICJsaWJhdnV0aWwvYXZhc3NlcnQuaCINCiAjaW5jbHVkZSAibGliYXZ1dGlsL2F2
c3RyaW5nLmgiDQogI2luY2x1ZGUgImxpYmF2dXRpbC9icHJpbnQuaCINCkBADQogICAgIHJldHVy
biAwOw0KIH0NCg0KKy8qIC0tLS0tLS0tLS0gUENNIGR1bXAgaGVscGVycyAtLS0tLS0tLS0tICov
DQorDQorc3RhdGljIGF2X2NvbGQgdm9pZCBsaW5rX3VuaW5pdF9kdW1wX3BjbShBVkZpbHRlckxp
bmsgKmxpbmspDQorew0KKyAgICBpZiAobGluay0+ZHVtcF9wY21fZmRzKSB7DQorICAgICAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGluay0+bmJfZHVtcF9wY21fZmRzOyBpKyspDQorICAg
ICAgICAgICAgaWYgKGxpbmstPmR1bXBfcGNtX2Zkc1tpXSA+PSAwKQ0KKyAgICAgICAgICAgICAg
ICBjbG9zZShsaW5rLT5kdW1wX3BjbV9mZHNbaV0pOw0KKyAgICAgICAgYXZfZnJlZXAoJmxpbmst
PmR1bXBfcGNtX2Zkcyk7DQorICAgICAgICBsaW5rLT5uYl9kdW1wX3BjbV9mZHMgPSAwOw0KKyAg
ICB9DQorICAgIGF2X2ZyZWVwKCZsaW5rLT5kdW1wX3BjbV9wYXRoKTsNCisgICAgbGluay0+ZHVt
cF9wY20gPSAwOw0KK30NCisNCitzdGF0aWMgYXZfY29sZCBpbnQgbGlua19pbml0X2R1bXBfcGNt
KEFWRmlsdGVyTGluayAqbGluaykNCit7DQorICAgIC8qIGJ1aWxkIGZ1bGwgcGF0aCAiPGRpcj4v
PHNyYz4tPGRzdD4ucGNtIiAqLw0KKyAgICBjb25zdCBjaGFyICpkaXIgPSBsaW5rLT5kdW1wX3Bj
bV9wYXRoOw0KKyAgICBjb25zdCBjaGFyICpzZXAgPSBkaXJbc3RybGVuKGRpcikgLSAxXSA9PSAn
LycgPyAiIiA6ICIvIjsNCisgICAgY2hhciBwYXRoWzQwOTZdOw0KKyAgICBzbnByaW50ZihwYXRo
LCBzaXplb2YocGF0aCksICIlcyVzJS4xNnMtJS44cy5wY20iLA0KKyAgICAgICAgICAgICBkaXIs
IHNlcCwgbGluay0+c3JjLT5uYW1lLCBsaW5rLT5kc3QtPm5hbWUpOw0KKw0KKyAgICBsaW5rLT5u
Yl9kdW1wX3BjbV9mZHMgPSAxOw0KKyAgICBsaW5rLT5kdW1wX3BjbV9mZHMgPSBhdl9tYWxsb2Mo
c2l6ZW9mKGludCkpOw0KKyAgICBpZiAoIWxpbmstPmR1bXBfcGNtX2ZkcykNCisgICAgICAgIHJl
dHVybiBBVkVSUk9SKEVOT01FTSk7DQorDQorICAgIGludCBmZCA9IG9wZW4ocGF0aCwgT19XUk9O
TFkgfCBPX0NSRUFUIHwgT19UUlVOQyB8IE9fRVhDTCwgMDY0NCk7DQorICAgIGlmIChmZCA8IDAp
IHsNCisgICAgICAgIGxpbmtfdW5pbml0X2R1bXBfcGNtKGxpbmspOw0KKyAgICAgICAgcmV0dXJu
IEFWRVJST1IoZXJybm8pOw0KKyAgICB9DQorICAgIGxpbmstPmR1bXBfcGNtX2Zkc1swXSA9IGZk
Ow0KKyAgICBhdl9sb2cobGluay0+ZHN0LCBBVl9MT0dfSU5GTywgIlBDTSBkdW1wIGZpbGU6ICVz
XG4iLCBwYXRoKTsNCisgICAgcmV0dXJuIDA7DQorfQ0KKw0KK3N0YXRpYyBpbnQgZmlsdGVyX3Nl
dF9kdW1wX3BjbShBVkZpbHRlckNvbnRleHQgKmYsIGNvbnN0IGNoYXIgKmFyZywgaW50IHNldCkN
Cit7DQorICAgIGNvbnN0IGNoYXIgKnByZWZpeCA9ICJmaWxlPSI7DQorICAgIGlmICghYXJnIHx8
IGF2X3N0cm5jYXNlY21wKGFyZywgcHJlZml4LCBzdHJsZW4ocHJlZml4KSkpIHsNCisgICAgICAg
IGF2X2xvZyhmLCBBVl9MT0dfRVJST1IsDQorICAgICAgICAgICAgICAgImR1bXBfcmF3XyogZXhw
ZWN0cyBhcmd1bWVudCBmaWxlPS9kaXIvXG4iKTsNCisgICAgICAgIHJldHVybiBBVkVSUk9SKEVJ
TlZBTCk7DQorICAgIH0NCisgICAgY29uc3QgY2hhciAqZGlyID0gYXJnICsgc3RybGVuKHByZWZp
eCk7DQorDQorICAgIGZvciAoaW50IGkgPSAwOyBpIDwgZi0+bmJfb3V0cHV0czsgaSsrKSB7DQor
ICAgICAgICBBVkZpbHRlckxpbmsgKmwgPSBmLT5vdXRwdXRzW2ldOw0KKyAgICAgICAgaWYgKGwt
PnR5cGUgIT0gQVZNRURJQV9UWVBFX0FVRElPKQ0KKyAgICAgICAgICAgIGNvbnRpbnVlOw0KKyAg
ICAgICAgaWYgKHNldCkgew0KKyAgICAgICAgICAgIGF2X2ZyZWVwKCZsLT5kdW1wX3BjbV9wYXRo
KTsNCisgICAgICAgICAgICBsLT5kdW1wX3BjbV9wYXRoID0gYXZfc3RyZHVwKGRpcik7DQorICAg
ICAgICAgICAgaWYgKCFsLT5kdW1wX3BjbV9wYXRoKQ0KKyAgICAgICAgICAgICAgICByZXR1cm4g
QVZFUlJPUihFTk9NRU0pOw0KKyAgICAgICAgICAgIGwtPmR1bXBfcGNtID0gMTsNCisgICAgICAg
IH0gZWxzZQ0KKyAgICAgICAgICAgIGxpbmtfdW5pbml0X2R1bXBfcGNtKGwpOw0KKyAgICB9DQor
ICAgIHJldHVybiAwOw0KK30NCisNCisvKiB3cml0ZSBvbmUgZnJhbWUgKi8NCitzdGF0aWMgaW50
IGxpbmtfZHVtcF9mcmFtZShBVkZpbHRlckxpbmsgKmxpbmssIEFWRnJhbWUgKmZyYW1lKQ0KK3sN
CisgICAgaW50IHJldDsNCisgICAgaWYgKCFsaW5rLT5kdW1wX3BjbV9mZHMgJiYNCisgICAgICAg
IChyZXQgPSBsaW5rX2luaXRfZHVtcF9wY20obGluaykpIDwgMCkNCisgICAgICAgIHJldHVybiBy
ZXQ7DQorDQorICAgIGNvbnN0IGludCBjaCAgICAgPSBmcmFtZS0+Y2hfbGF5b3V0Lm5iX2NoYW5u
ZWxzOw0KKyAgICBjb25zdCBpbnQgYnBzICAgID0gYXZfZ2V0X2J5dGVzX3Blcl9zYW1wbGUoZnJh
bWUtPmZvcm1hdCk7DQorICAgIGNvbnN0IGludCBucyAgICAgPSBmcmFtZS0+bmJfc2FtcGxlczsN
CisgICAgY29uc3QgaW50IHRvdGxlbiA9IGNoICogbnMgKiBicHM7DQorDQorICAgIC8qIGludGVy
bGVhdmUgcGxhbmFyIHRvIHBhY2tlZCBpZiBuZWNlc3NhcnkgKi8NCisgICAgaWYgKGF2X3NhbXBs
ZV9mbXRfaXNfcGxhbmFyKGZyYW1lLT5mb3JtYXQpKSB7DQorICAgICAgICB1aW50OF90ICpidWYg
PSBhdl9tYWxsb2ModG90bGVuKTsNCisgICAgICAgIGlmICghYnVmKQ0KKyAgICAgICAgICAgIHJl
dHVybiBBVkVSUk9SKEVOT01FTSk7DQorICAgICAgICBmb3IgKGludCBzID0gMDsgcyA8IG5zOyBz
KyspDQorICAgICAgICAgICAgZm9yIChpbnQgYyA9IDA7IGMgPCBjaDsgYysrKQ0KKyAgICAgICAg
ICAgICAgICBtZW1jcHkoYnVmICsgKHMqY2ggKyBjKSpicHMsDQorICAgICAgICAgICAgICAgICAg
ICAgICAodWludDhfdCopZnJhbWUtPmV4dGVuZGVkX2RhdGFbY10gKyBzKmJwcywNCisgICAgICAg
ICAgICAgICAgICAgICAgIGJwcyk7DQorICAgICAgICByZXQgPSB3cml0ZShsaW5rLT5kdW1wX3Bj
bV9mZHNbMF0sIGJ1ZiwgdG90bGVuKTsNCisgICAgICAgIGF2X2ZyZWUoYnVmKTsNCisgICAgfSBl
bHNlDQorICAgICAgICByZXQgPSB3cml0ZShsaW5rLT5kdW1wX3BjbV9mZHNbMF0sIGZyYW1lLT5k
YXRhWzBdLCB0b3RsZW4pOw0KKw0KKyAgICBpZiAocmV0IDwgMCkgew0KKyAgICAgICAgYXZfbG9n
KGxpbmstPmRzdCwgQVZfTE9HX0VSUk9SLCAiUENNIGR1bXAgd3JpdGUgZmFpbGVkOiAlc1xuIiwN
CisgICAgICAgICAgICAgICBhdl9lcnIyc3RyKHJldCkpOw0KKyAgICAgICAgbGlua191bmluaXRf
ZHVtcF9wY20obGluayk7DQorICAgICAgICByZXR1cm4gcmV0Ow0KKyAgICB9DQorICAgIHJldHVy
biAwOw0KK30NCisNCiBzdGF0aWMgdm9pZCBsaW5rX2ZyZWUoQVZGaWx0ZXJMaW5rICoqbGluaykN
CiB7DQpAQA0KDQogaW50IGF2ZmlsdGVyX3Byb2Nlc3NfY29tbWFuZChBVkZpbHRlckNvbnRleHQg
KmZpbHRlciwgY29uc3QgY2hhciAqY21kLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgY2hhciAqYXJnLCBjaGFyICpyZXMsIGludCByZXNfbGVuLCBpbnQgZmxhZ3MpDQogew0K
QEANCi0gICAgICAgIGlmIChyZXMgPT0gbG9jYWxfcmVzKQ0KLSAgICAgICAgICAgIGF2X2xvZyhm
aWx0ZXIsIEFWX0xPR19JTkZPLCAiJXMiLCByZXMpOw0KLSAgICAgICAgcmV0dXJuIDA7DQorICAg
ICAgICBpZiAocmVzID09IGxvY2FsX3JlcykNCisgICAgICAgICAgICBhdl9sb2coZmlsdGVyLCBB
Vl9MT0dfSU5GTywgIiVzIiwgcmVzKTsNCisgICAgICAgIHJldHVybiAwOw0KKyAgICB9IGVsc2Ug
aWYgKCFzdHJjbXAoY21kLCAiZHVtcF9yYXdfc3RhcnQiKSkgew0KKyAgICAgICAgcmV0dXJuIGZp
bHRlcl9zZXRfZHVtcF9wY20oZmlsdGVyLCBhcmcsIDEpOw0KKyAgICB9IGVsc2UgaWYgKCFzdHJj
bXAoY21kLCAiZHVtcF9yYXdfc3RvcCIpKSB7DQorICAgICAgICByZXR1cm4gZmlsdGVyX3NldF9k
dW1wX3BjbShmaWx0ZXIsIGFyZywgMCk7DQogICAgIH0gZWxzZSBpZighc3RyY21wKGNtZCwgImVu
YWJsZSIpKSB7DQogICAgICAgICByZXR1cm4gc2V0X2VuYWJsZV9leHByKGZmZmlsdGVyY3R4KGZp
bHRlciksIGFyZyk7DQpAQA0KICAgICAvKiAuLi4gZXhpc3RpbmcgY29kZSAuLi4gKi8NCg0KKyAg
ICBpZiAobGluay0+ZHVtcF9wY20gJiYgbGluay0+dHlwZSA9PSBBVk1FRElBX1RZUEVfQVVESU8p
IHsNCisgICAgICAgIHJldCA9IGxpbmtfZHVtcF9mcmFtZShsaW5rLCBmcmFtZSk7DQorICAgICAg
ICBpZiAocmV0IDwgMCkNCisgICAgICAgICAgICBhdl9sb2cobGluay0+ZHN0LCBBVl9MT0dfRVJS
T1IsDQorICAgICAgICAgICAgICAgICAgICJQQ00gZHVtcCBmYWlsZWQgd2l0aCAlc1xuIiwgYXZf
ZXJyMnN0cihyZXQpKTsNCisgICAgfQ0KKw0KICAgICBsaS0+ZnJhbWVfYmxvY2tlZF9pbiA9IGxp
LT5mcmFtZV93YW50ZWRfb3V0ID0gMDsNCkBADQpkaWZmIC0tZ2l0IGEvbGliYXZmaWx0ZXIvYXZm
aWx0ZXIuaCBiL2xpYmF2ZmlsdGVyL2F2ZmlsdGVyLmgNCmluZGV4IGE4OWQzY2Y2NTguLjBkNGM5
MWJiNmIgMTAwNjQ0DQotLS0gYS9saWJhdmZpbHRlci9hdmZpbHRlci5oDQorKysgYi9saWJhdmZp
bHRlci9hdmZpbHRlci5oDQpAQA0KICAgICBBVkNoYW5uZWxMYXlvdXQgY2hfbGF5b3V0OyAgLy8v
PCBjaGFubmVsIGxheW91dCBvZiBjdXJyZW50IGJ1ZmZlcg0KDQorICAgIGludCAgICAgIGR1bXBf
cGNtOyAgICAgICAgICAvLy88IGVuYWJsZSBkdW1waW5nIG9uIHRoaXMgbGluaw0KKyAgICBpbnQg
ICAgICpkdW1wX3BjbV9mZHM7ICAgICAgLy8vPCBvbmUgRkQgcGVyIGxpbmsgKGN1cnJlbnRseSAx
KQ0KKyAgICB1bnNpZ25lZCBuYl9kdW1wX3BjbV9mZHM7ICAgLy8vPCBudW1iZXIgb2YgRkRzDQor
ICAgIGNoYXIgICAgKmR1bXBfcGNtX3BhdGg7ICAgICAvLy88IHVzZXItc3VwcGxpZWQgZGlyZWN0
b3J5DQorDQogICAgIC8qKg0KICAgICAgKiBEZWZpbmUgdGhlIHRpbWUgYmFzZSB1c2VkIGJ5IHRo
ZSBQVFMgb2YgdGhlIGZyYW1lcy9zYW1wbGVzDQogICAgICAqIHdoaWNoIHdpbGwgcGFzcyB0aHJv
dWdoIHRoaXMgbGluay4NCi0tDQoyLjM0LjENCg0KLS0tDQoNCkZyb20gOGNmN2JmYTUyYTEwYmU4
N2UwZjE3Yjk3ODMxNTliMGU4M2Y5NjBmNyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDENCkZyb206
IFlpYm8gRmFuZyA8Ymx1ZXliZjc3N0BvdXRsb29rLmNvbT4NCkRhdGU6IFdlZCwgMjMgQXByIDIw
MjUgMTI6Mzg6MDAgKzA4MDANClN1YmplY3Q6IFtQQVRDSCAyLzJdIGRvYy9maWx0ZXJzOiBkb2N1
bWVudCBkdW1wX3Jhd19zdGFydCBhbmQgZHVtcF9yYXdfc3RvcA0KIGNvbW1hbmRzDQoNClNpZ25l
ZC1vZmYtYnk6IFlpYm8gRmFuZyA8Ymx1ZXliZjc3N0BvdXRsb29rLmNvbT4NCi0tLQ0KIGRvYy9m
aWx0ZXJzLnRleGkgfCA0NSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr
KysrKysNCiAxIGZpbGUgY2hhbmdlZCwgNDUgaW5zZXJ0aW9ucygrKQ0KDQpkaWZmIC0tZ2l0IGEv
ZG9jL2ZpbHRlcnMudGV4aSBiL2RvYy9maWx0ZXJzLnRleGkNCmluZGV4IDQ1YjNlMDNlNWUuLjZh
MmQyM2RmM2YgMTAwNjQ0DQotLS0gYS9kb2MvZmlsdGVycy50ZXhpDQorKysgYi9kb2MvZmlsdGVy
cy50ZXhpDQpAQA0KIEBzZWN0aW9uIGFkdW1wcGNtDQoNCiBEdW1wIHJhdyBQQ00gYXVkaW8gZGF0
YSBmb3IgZGVidWdnaW5nIGJldHdlZW4gZmlsdGVycy4NCg0KIFRoaXMgZmlsdGVyIGFsbG93cyB3
cml0aW5nIHJhdyBhdWRpbyBkYXRhIHRvIGRpc2sgZnJvbSBhbnkgYXVkaW8gbGluaw0KIGluIHRo
ZSBmaWx0ZXJncmFwaCBmb3IgaW5zcGVjdGlvbi4gSXQgc3VwcG9ydHMgcGxhbmFyIGFuZCBwYWNr
ZWQgZm9ybWF0cywNCiBhdXRvbWF0aWNhbGx5IGludGVybGVhdmluZyBwbGFuYXIgZGF0YSBmb3Ig
d3JpdGluZy4NCg0KIEBzdWJzZWN0aW9uIFN5bnRheA0KDQogQGV4YW1wbGUNCiBkdW1wX3Jhd19z
dGFydD1maWxlPS95b3VyL2R1bXAvZGlyZWN0b3J5Lw0KIEBlbmQgZXhhbXBsZQ0KDQogQHN1YnNl
Y3Rpb24gVXNhZ2UNCg0KIFRvIGVuYWJsZSBkdW1waW5nLCB1c2UgdGhlIEBjb2Rle2R1bXBfcmF3
X3N0YXJ0fSBjb21tYW5kOg0KDQogQGV4YW1wbGUNCiBmZm1wZWcgLWkgaW5wdXQud2F2IC1hZiAi
dm9sdW1lLGFzZW5kY21kPScwLjAgZHVtcF9yYXdfc3RhcnQgZmlsZT0vdG1wL3BjbS8nIiAtZiBu
dWxsIC0NCiBAZW5kIGV4YW1wbGUNCg0KIFRvIHN0b3AgZHVtcGluZzoNCg0KIEBleGFtcGxlDQog
YXNlbmRjbWQ9JzUuMCBkdW1wX3Jhd19zdG9wJw0KIEBlbmQgZXhhbXBsZQ0KDQogQHN1YnNlY3Rp
b24gT3B0aW9ucw0KDQogQHRhYmxlIEBvcHRpb24NCiBAaXRlbSBmaWxlDQogU3BlY2lmeSBhIGRp
cmVjdG9yeSBwYXRoIChub3QgYSBmaWxlbmFtZSkgd2hlcmUgUENNIGRhdGEgd2lsbCBiZSBkdW1w
ZWQuDQogVGhlIGR1bXBlZCBmaWxlIGlzIG5hbWVkIEBjb2RlezxzcmM+LTxkc3Q+LnBjbX0gYW5k
IHdpbGwgYmUgb3ZlcndyaXR0ZW4gaWYgaXQgYWxyZWFkeSBleGlzdHMuDQogQGVuZCB0YWJsZQ0K
LS0NCjIuMzQuMQ0KDQpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXw0KRnJvbTogRmFu
ZyBZaWJvIDxibHVleWJmNzc3QG91dGxvb2suY29tPg0KU2VudDogMjYgTWF5IDIwMjUgMTU6NDMN
ClRvOiBmZm1wZWctZGV2ZWxAZmZtcGVnLm9yZyA8ZmZtcGVnLWRldmVsQGZmbXBlZy5vcmc+DQpT
dWJqZWN0OiC72Li0OiBbRkZtcGVnLWRldmVsXSBbUEFUQ0hdIGF2ZmlsdGVyOiBhZGQgUENNIGR1
bXBpbmcgYmV0d2VlbiBmaWx0ZXJzIGZvciBhdWRpbyBkZWJ1Z2dpbmcNCg0KUmU6IFtGRm1wZWct
ZGV2ZWwsdjIsMC8yXSBhdmZpbHRlcjogYWRkIFBDTSBkdW1waW5nIGJldHdlZW4gZmlsdGVycyBm
b3IgYXVkaW8gZGVidWdnaW5nDQoNCkZyb206IFlpYm8gRmFuZyA8Ymx1ZXliZjc3N0BvdXRsb29r
LmNvbT4NClN1YmplY3Q6IFtGRm1wZWctZGV2ZWwsdjIsMC8yXSBhdmZpbHRlcjogYWRkIFBDTSBk
dW1waW5nIGJldHdlZW4gZmlsdGVycyBmb3IgYXVkaW8gZGVidWdnaW5nDQpEYXRlOiBXZWQsIDIz
IEFwciAyMDI1IDEwOjU3OjAwICswODAwDQpNZXNzYWdlLUlkOiA8Y292ZXIuMC4yQGZmbXBlZz4N
Cg0KVGhpcyBzZXJpZXMgYWRkcyBhIGRlYnVnZ2luZyBmZWF0dXJlIHRoYXQgbGV0cyBkZXZlbG9w
ZXJzIGR1bXAgcmF3DQpQQ00gYXVkaW8gYmV0d2VlbiBmaWx0ZXJzLiAgVGhlIGRhdGEgYXJlIHdy
aXR0ZW4gdG8gZmlsZXMgaW4gYSB1c2VyLQ0Kc2VsZWN0ZWQgZGlyZWN0b3J5IHZpYSB0d28gbmV3
IGNvbW1hbmRzOg0KDQogICAgZHVtcF9yYXdfc3RhcnQgZmlsZT0vcGF0aC90by9kaXIvDQogICAg
ZHVtcF9yYXdfc3RvcA0KDQpQbGFuYXIgYXVkaW8gaXMgYXV0b21hdGljYWxseSBpbnRlcmxlYXZl
ZDsgb25seSBhdWRpbyBsaW5rcyBhcmUNCmFmZmVjdGVkLiAgUGF0Y2ggMS8yIGltcGxlbWVudHMg
dGhlIGZlYXR1cmUsIHBhdGNoIDIvMiBkb2N1bWVudHMgaXQuDQoNClJlZ2FyZHMsDQpZaWJvIEZh
bmcNCg0KLS0tDQoNCkZyb20gMmRmNTZlNzQyNzNkNDc3YWUyNzAwM2UwOTgxMjIwNzQ5YTZiNThj
ZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDENCkZyb206IFlpYm8gRmFuZyA8Ymx1ZXliZjc3N0Bv
dXRsb29rLmNvbT4NCkRhdGU6IFdlZCwgMjMgQXByIDIwMjUgMTA6NTg6NTUgKzA4MDANClN1Ympl
Y3Q6IFtQQVRDSCAxLzJdIGF2ZmlsdGVyOiBhZGQgUENNIGR1bXBpbmcgYmV0d2VlbiBmaWx0ZXJz
IGZvciBhdWRpbw0KIGRlYnVnZ2luZw0KDQpUaGlzIHBhdGNoIGludHJvZHVjZXMgUENNIGR1bXBp
bmcgc3VwcG9ydCBiZXR3ZWVuIEFWRmlsdGVyIGxpbmtzLA0KaW50ZW5kZWQgZm9yIGF1ZGlvIGRl
YnVnZ2luZyBhbmQgZmlsdGVyLWdyYXBoIGluc3BlY3Rpb24uDQoNClR3byBmaWx0ZXIgY29tbWFu
ZHMgYXJlIGFkZGVkOg0KDQogICAgZHVtcF9yYXdfc3RhcnQgZmlsZT0vcGF0aC90by9vdXRwdXQv
ZGlyLw0KICAgIGR1bXBfcmF3X3N0b3ANCg0KV2hlbiBkdW1waW5nIGlzIGVuYWJsZWQsIGF1ZGlv
IGxlYXZpbmcgdGhlIHNlbGVjdGVkIGZpbHRlciBvdXRwdXQgaXMNCndyaXR0ZW4gdG8gYW4gYXV0
b21hdGljYWxseSBuYW1lZCBmaWxlOg0KDQogICAgPHNyY19maWx0ZXI+LTxkc3RfZmlsdGVyPi5w
Y20NCg0KUGxhbmFyIGZvcm1hdHMgYXJlIGNvbnZlcnRlZCB0byBwYWNrZWQuICBGaWxlIGRlc2Ny
aXB0b3JzIGFyZSBvcGVuZWQNCm9uIGRlbWFuZCBhbmQgY2xvc2VkIGF1dG9tYXRpY2FsbHkuICBX
b3JrcyBvbmx5IG9uIGF1ZGlvIGxpbmtzLg0KDQpFeGFtcGxlIChDIEFQSSk6DQogICAgYXZmaWx0
ZXJfcHJvY2Vzc19jb21tYW5kKGZpbHRlciwgImR1bXBfcmF3X3N0YXJ0IiwNCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgImZpbGU9L3RtcC8iLCBOVUxMLCAwLCAwKTsNCg0KU2lnbmVkLW9m
Zi1ieTogWWlibyBGYW5nIDxibHVleWJmNzc3QG91dGxvb2suY29tPg0KLS0tDQogbGliYXZmaWx0
ZXIvYXZmaWx0ZXIuYyB8IDE0NCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr
KysrKw0KIGxpYmF2ZmlsdGVyL2F2ZmlsdGVyLmggfCAgIDUgKysNCiAyIGZpbGVzIGNoYW5nZWQs
IDE0OSBpbnNlcnRpb25zKCspDQoNCmRpZmYgLS1naXQgYS9saWJhdmZpbHRlci9hdmZpbHRlci5j
IGIvbGliYXZmaWx0ZXIvYXZmaWx0ZXIuYw0KaW5kZXggNjRjMTA3NWM0MC4uYjcwMzQ1NjlkYiAx
MDA2NDQNCi0tLSBhL2xpYmF2ZmlsdGVyL2F2ZmlsdGVyLmMNCisrKyBiL2xpYmF2ZmlsdGVyL2F2
ZmlsdGVyLmMNCkBAIC0xOSw2ICsxOSw5IEBADQogICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJh
bmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxIFVTQQ0KICAq
Lw0KDQorI2luY2x1ZGUgPGZjbnRsLmg+DQorI2luY2x1ZGUgPHVuaXN0ZC5oPg0KKw0KICNpbmNs
dWRlICJsaWJhdnV0aWwvYXZhc3NlcnQuaCINCiAjaW5jbHVkZSAibGliYXZ1dGlsL2F2c3RyaW5n
LmgiDQogI2luY2x1ZGUgImxpYmF2dXRpbC9icHJpbnQuaCINCkBADQogICAgIHJldHVybiAwOw0K
IH0NCg0KKy8qIC0tLS0tLS0tLS0gUENNIGR1bXAgaGVscGVycyAtLS0tLS0tLS0tICovDQorDQor
c3RhdGljIGF2X2NvbGQgdm9pZCBsaW5rX3VuaW5pdF9kdW1wX3BjbShBVkZpbHRlckxpbmsgKmxp
bmspDQorew0KKyAgICBpZiAobGluay0+ZHVtcF9wY21fZmRzKSB7DQorICAgICAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgbGluay0+bmJfZHVtcF9wY21fZmRzOyBpKyspDQorICAgICAgICAg
ICAgaWYgKGxpbmstPmR1bXBfcGNtX2Zkc1tpXSA+PSAwKQ0KKyAgICAgICAgICAgICAgICBjbG9z
ZShsaW5rLT5kdW1wX3BjbV9mZHNbaV0pOw0KKyAgICAgICAgYXZfZnJlZXAoJmxpbmstPmR1bXBf
cGNtX2Zkcyk7DQorICAgICAgICBsaW5rLT5uYl9kdW1wX3BjbV9mZHMgPSAwOw0KKyAgICB9DQor
ICAgIGF2X2ZyZWVwKCZsaW5rLT5kdW1wX3BjbV9wYXRoKTsNCisgICAgbGluay0+ZHVtcF9wY20g
PSAwOw0KK30NCisNCitzdGF0aWMgYXZfY29sZCBpbnQgbGlua19pbml0X2R1bXBfcGNtKEFWRmls
dGVyTGluayAqbGluaykNCit7DQorICAgIC8qIGJ1aWxkIGZ1bGwgcGF0aCAiPGRpcj4vPHNyYz4t
PGRzdD4ucGNtIiAqLw0KKyAgICBjb25zdCBjaGFyICpkaXIgPSBsaW5rLT5kdW1wX3BjbV9wYXRo
Ow0KKyAgICBjb25zdCBjaGFyICpzZXAgPSBkaXJbc3RybGVuKGRpcikgLSAxXSA9PSAnLycgPyAi
IiA6ICIvIjsNCisgICAgY2hhciBwYXRoWzQwOTZdOw0KKyAgICBzbnByaW50ZihwYXRoLCBzaXpl
b2YocGF0aCksICIlcyVzJS4xNnMtJS44cy5wY20iLA0KKyAgICAgICAgICAgICBkaXIsIHNlcCwg
bGluay0+c3JjLT5uYW1lLCBsaW5rLT5kc3QtPm5hbWUpOw0KKw0KKyAgICBsaW5rLT5uYl9kdW1w
X3BjbV9mZHMgPSAxOw0KKyAgICBsaW5rLT5kdW1wX3BjbV9mZHMgPSBhdl9tYWxsb2Moc2l6ZW9m
KGludCkpOw0KKyAgICBpZiAoIWxpbmstPmR1bXBfcGNtX2ZkcykNCisgICAgICAgIHJldHVybiBB
VkVSUk9SKEVOT01FTSk7DQorDQorICAgIGludCBmZCA9IG9wZW4ocGF0aCwgT19XUk9OTFkgfCBP
X0NSRUFUIHwgT19UUlVOQyB8IE9fRVhDTCwgMDY0NCk7DQorICAgIGlmIChmZCA8IDApIHsNCisg
ICAgICAgIGxpbmtfdW5pbml0X2R1bXBfcGNtKGxpbmspOw0KKyAgICAgICAgcmV0dXJuIEFWRVJS
T1IoZXJybm8pOw0KKyAgICB9DQorICAgIGxpbmstPmR1bXBfcGNtX2Zkc1swXSA9IGZkOw0KKyAg
ICBhdl9sb2cobGluay0+ZHN0LCBBVl9MT0dfSU5GTywgIlBDTSBkdW1wIGZpbGU6ICVzXG4iLCBw
YXRoKTsNCisgICAgcmV0dXJuIDA7DQorfQ0KKw0KK3N0YXRpYyBpbnQgZmlsdGVyX3NldF9kdW1w
X3BjbShBVkZpbHRlckNvbnRleHQgKmYsIGNvbnN0IGNoYXIgKmFyZywgaW50IHNldCkNCit7DQor
ICAgIGNvbnN0IGNoYXIgKnByZWZpeCA9ICJmaWxlPSI7DQorICAgIGlmICghYXJnIHx8IGF2X3N0
cm5jYXNlY21wKGFyZywgcHJlZml4LCBzdHJsZW4ocHJlZml4KSkpIHsNCisgICAgICAgIGF2X2xv
ZyhmLCBBVl9MT0dfRVJST1IsDQorICAgICAgICAgICAgICAgImR1bXBfcmF3XyogZXhwZWN0cyBh
cmd1bWVudCBmaWxlPS9kaXIvXG4iKTsNCisgICAgICAgIHJldHVybiBBVkVSUk9SKEVJTlZBTCk7
DQorICAgIH0NCisgICAgY29uc3QgY2hhciAqZGlyID0gYXJnICsgc3RybGVuKHByZWZpeCk7DQor
DQorICAgIGZvciAoaW50IGkgPSAwOyBpIDwgZi0+bmJfb3V0cHV0czsgaSsrKSB7DQorICAgICAg
ICBBVkZpbHRlckxpbmsgKmwgPSBmLT5vdXRwdXRzW2ldOw0KKyAgICAgICAgaWYgKGwtPnR5cGUg
IT0gQVZNRURJQV9UWVBFX0FVRElPKQ0KKyAgICAgICAgICAgIGNvbnRpbnVlOw0KKyAgICAgICAg
aWYgKHNldCkgew0KKyAgICAgICAgICAgIGF2X2ZyZWVwKCZsLT5kdW1wX3BjbV9wYXRoKTsNCisg
ICAgICAgICAgICBsLT5kdW1wX3BjbV9wYXRoID0gYXZfc3RyZHVwKGRpcik7DQorICAgICAgICAg
ICAgaWYgKCFsLT5kdW1wX3BjbV9wYXRoKQ0KKyAgICAgICAgICAgICAgICByZXR1cm4gQVZFUlJP
UihFTk9NRU0pOw0KKyAgICAgICAgICAgIGwtPmR1bXBfcGNtID0gMTsNCisgICAgICAgIH0gZWxz
ZQ0KKyAgICAgICAgICAgIGxpbmtfdW5pbml0X2R1bXBfcGNtKGwpOw0KKyAgICB9DQorICAgIHJl
dHVybiAwOw0KK30NCisNCisvKiB3cml0ZSBvbmUgZnJhbWUgKi8NCitzdGF0aWMgaW50IGxpbmtf
ZHVtcF9mcmFtZShBVkZpbHRlckxpbmsgKmxpbmssIEFWRnJhbWUgKmZyYW1lKQ0KK3sNCisgICAg
aW50IHJldDsNCisgICAgaWYgKCFsaW5rLT5kdW1wX3BjbV9mZHMgJiYNCisgICAgICAgIChyZXQg
PSBsaW5rX2luaXRfZHVtcF9wY20obGluaykpIDwgMCkNCisgICAgICAgIHJldHVybiByZXQ7DQor
DQorICAgIGNvbnN0IGludCBjaCAgICAgPSBmcmFtZS0+Y2hfbGF5b3V0Lm5iX2NoYW5uZWxzOw0K
KyAgICBjb25zdCBpbnQgYnBzICAgID0gYXZfZ2V0X2J5dGVzX3Blcl9zYW1wbGUoZnJhbWUtPmZv
cm1hdCk7DQorICAgIGNvbnN0IGludCBucyAgICAgPSBmcmFtZS0+bmJfc2FtcGxlczsNCisgICAg
Y29uc3QgaW50IHRvdGxlbiA9IGNoICogbnMgKiBicHM7DQorDQorICAgIC8qIGludGVybGVhdmUg
cGxhbmFyIHRvIHBhY2tlZCBpZiBuZWNlc3NhcnkgKi8NCisgICAgaWYgKGF2X3NhbXBsZV9mbXRf
aXNfcGxhbmFyKGZyYW1lLT5mb3JtYXQpKSB7DQorICAgICAgICB1aW50OF90ICpidWYgPSBhdl9t
YWxsb2ModG90bGVuKTsNCisgICAgICAgIGlmICghYnVmKQ0KKyAgICAgICAgICAgIHJldHVybiBB
VkVSUk9SKEVOT01FTSk7DQorICAgICAgICBmb3IgKGludCBzID0gMDsgcyA8IG5zOyBzKyspDQor
ICAgICAgICAgICAgZm9yIChpbnQgYyA9IDA7IGMgPCBjaDsgYysrKQ0KKyAgICAgICAgICAgICAg
ICBtZW1jcHkoYnVmICsgKHMqY2ggKyBjKSpicHMsDQorICAgICAgICAgICAgICAgICAgICAgICAo
dWludDhfdCopZnJhbWUtPmV4dGVuZGVkX2RhdGFbY10gKyBzKmJwcywNCisgICAgICAgICAgICAg
ICAgICAgICAgIGJwcyk7DQorICAgICAgICByZXQgPSB3cml0ZShsaW5rLT5kdW1wX3BjbV9mZHNb
MF0sIGJ1ZiwgdG90bGVuKTsNCisgICAgICAgIGF2X2ZyZWUoYnVmKTsNCisgICAgfSBlbHNlDQor
ICAgICAgICByZXQgPSB3cml0ZShsaW5rLT5kdW1wX3BjbV9mZHNbMF0sIGZyYW1lLT5kYXRhWzBd
LCB0b3RsZW4pOw0KKw0KKyAgICBpZiAocmV0IDwgMCkgew0KKyAgICAgICAgYXZfbG9nKGxpbmst
PmRzdCwgQVZfTE9HX0VSUk9SLCAiUENNIGR1bXAgd3JpdGUgZmFpbGVkOiAlc1xuIiwNCisgICAg
ICAgICAgICAgICBhdl9lcnIyc3RyKHJldCkpOw0KKyAgICAgICAgbGlua191bmluaXRfZHVtcF9w
Y20obGluayk7DQorICAgICAgICByZXR1cm4gcmV0Ow0KKyAgICB9DQorICAgIHJldHVybiAwOw0K
K30NCisNCiBzdGF0aWMgdm9pZCBsaW5rX2ZyZWUoQVZGaWx0ZXJMaW5rICoqbGluaykNCiB7DQpA
QA0KDQogaW50IGF2ZmlsdGVyX3Byb2Nlc3NfY29tbWFuZChBVkZpbHRlckNvbnRleHQgKmZpbHRl
ciwgY29uc3QgY2hhciAqY21kLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
Y2hhciAqYXJnLCBjaGFyICpyZXMsIGludCByZXNfbGVuLCBpbnQgZmxhZ3MpDQogew0KQEANCi0g
ICAgICAgIGlmIChyZXMgPT0gbG9jYWxfcmVzKQ0KLSAgICAgICAgICAgIGF2X2xvZyhmaWx0ZXIs
IEFWX0xPR19JTkZPLCAiJXMiLCByZXMpOw0KLSAgICAgICAgcmV0dXJuIDA7DQorICAgICAgICBp
ZiAocmVzID09IGxvY2FsX3JlcykNCisgICAgICAgICAgICBhdl9sb2coZmlsdGVyLCBBVl9MT0df
SU5GTywgIiVzIiwgcmVzKTsNCisgICAgICAgIHJldHVybiAwOw0KKyAgICB9IGVsc2UgaWYgKCFz
dHJjbXAoY21kLCAiZHVtcF9yYXdfc3RhcnQiKSkgew0KKyAgICAgICAgcmV0dXJuIGZpbHRlcl9z
ZXRfZHVtcF9wY20oZmlsdGVyLCBhcmcsIDEpOw0KKyAgICB9IGVsc2UgaWYgKCFzdHJjbXAoY21k
LCAiZHVtcF9yYXdfc3RvcCIpKSB7DQorICAgICAgICByZXR1cm4gZmlsdGVyX3NldF9kdW1wX3Bj
bShmaWx0ZXIsIGFyZywgMCk7DQogICAgIH0gZWxzZSBpZighc3RyY21wKGNtZCwgImVuYWJsZSIp
KSB7DQogICAgICAgICByZXR1cm4gc2V0X2VuYWJsZV9leHByKGZmZmlsdGVyY3R4KGZpbHRlciks
IGFyZyk7DQpAQA0KICAgICAvKiAuLi4gZXhpc3RpbmcgY29kZSAuLi4gKi8NCg0KKyAgICBpZiAo
bGluay0+ZHVtcF9wY20gJiYgbGluay0+dHlwZSA9PSBBVk1FRElBX1RZUEVfQVVESU8pIHsNCisg
ICAgICAgIHJldCA9IGxpbmtfZHVtcF9mcmFtZShsaW5rLCBmcmFtZSk7DQorICAgICAgICBpZiAo
cmV0IDwgMCkNCisgICAgICAgICAgICBhdl9sb2cobGluay0+ZHN0LCBBVl9MT0dfRVJST1IsDQor
ICAgICAgICAgICAgICAgICAgICJQQ00gZHVtcCBmYWlsZWQgd2l0aCAlc1xuIiwgYXZfZXJyMnN0
cihyZXQpKTsNCisgICAgfQ0KKw0KICAgICBsaS0+ZnJhbWVfYmxvY2tlZF9pbiA9IGxpLT5mcmFt
ZV93YW50ZWRfb3V0ID0gMDsNCkBADQpkaWZmIC0tZ2l0IGEvbGliYXZmaWx0ZXIvYXZmaWx0ZXIu
aCBiL2xpYmF2ZmlsdGVyL2F2ZmlsdGVyLmgNCmluZGV4IGE4OWQzY2Y2NTguLjBkNGM5MWJiNmIg
MTAwNjQ0DQotLS0gYS9saWJhdmZpbHRlci9hdmZpbHRlci5oDQorKysgYi9saWJhdmZpbHRlci9h
dmZpbHRlci5oDQpAQA0KICAgICBBVkNoYW5uZWxMYXlvdXQgY2hfbGF5b3V0OyAgLy8vPCBjaGFu
bmVsIGxheW91dCBvZiBjdXJyZW50IGJ1ZmZlcg0KDQorICAgIGludCAgICAgIGR1bXBfcGNtOyAg
ICAgICAgICAvLy88IGVuYWJsZSBkdW1waW5nIG9uIHRoaXMgbGluaw0KKyAgICBpbnQgICAgICpk
dW1wX3BjbV9mZHM7ICAgICAgLy8vPCBvbmUgRkQgcGVyIGxpbmsgKGN1cnJlbnRseSAxKQ0KKyAg
ICB1bnNpZ25lZCBuYl9kdW1wX3BjbV9mZHM7ICAgLy8vPCBudW1iZXIgb2YgRkRzDQorICAgIGNo
YXIgICAgKmR1bXBfcGNtX3BhdGg7ICAgICAvLy88IHVzZXItc3VwcGxpZWQgZGlyZWN0b3J5DQor
DQogICAgIC8qKg0KICAgICAgKiBEZWZpbmUgdGhlIHRpbWUgYmFzZSB1c2VkIGJ5IHRoZSBQVFMg
b2YgdGhlIGZyYW1lcy9zYW1wbGVzDQogICAgICAqIHdoaWNoIHdpbGwgcGFzcyB0aHJvdWdoIHRo
aXMgbGluay4NCi0tDQoyLjM0LjENCg0KLS0tDQoNCkZyb20gOGNmN2JmYTUyYTEwYmU4N2UwZjE3
Yjk3ODMxNTliMGU4M2Y5NjBmNyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDENCkZyb206IFlpYm8g
RmFuZyA8Ymx1ZXliZjc3N0BvdXRsb29rLmNvbT4NCkRhdGU6IFdlZCwgMjMgQXByIDIwMjUgMTI6
Mzg6MDAgKzA4MDANClN1YmplY3Q6IFtQQVRDSCAyLzJdIGRvYy9maWx0ZXJzOiBkb2N1bWVudCBk
dW1wX3Jhd19zdGFydCBhbmQgZHVtcF9yYXdfc3RvcA0KIGNvbW1hbmRzDQoNClNpZ25lZC1vZmYt
Ynk6IFlpYm8gRmFuZyA8Ymx1ZXliZjc3N0BvdXRsb29rLmNvbT4NCi0tLQ0KIGRvYy9maWx0ZXJz
LnRleGkgfCA0NSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysN
CiAxIGZpbGUgY2hhbmdlZCwgNDUgaW5zZXJ0aW9ucygrKQ0KDQpkaWZmIC0tZ2l0IGEvZG9jL2Zp
bHRlcnMudGV4aSBiL2RvYy9maWx0ZXJzLnRleGkNCmluZGV4IDQ1YjNlMDNlNWUuLjZhMmQyM2Rm
M2YgMTAwNjQ0DQotLS0gYS9kb2MvZmlsdGVycy50ZXhpDQorKysgYi9kb2MvZmlsdGVycy50ZXhp
DQpAQA0KIEBzZWN0aW9uIGFkdW1wcGNtDQoNCiBEdW1wIHJhdyBQQ00gYXVkaW8gZGF0YSBmb3Ig
ZGVidWdnaW5nIGJldHdlZW4gZmlsdGVycy4NCg0KIFRoaXMgZmlsdGVyIGFsbG93cyB3cml0aW5n
IHJhdyBhdWRpbyBkYXRhIHRvIGRpc2sgZnJvbSBhbnkgYXVkaW8gbGluaw0KIGluIHRoZSBmaWx0
ZXJncmFwaCBmb3IgaW5zcGVjdGlvbi4gSXQgc3VwcG9ydHMgcGxhbmFyIGFuZCBwYWNrZWQgZm9y
bWF0cywNCiBhdXRvbWF0aWNhbGx5IGludGVybGVhdmluZyBwbGFuYXIgZGF0YSBmb3Igd3JpdGlu
Zy4NCg0KIEBzdWJzZWN0aW9uIFN5bnRheA0KDQogQGV4YW1wbGUNCiBkdW1wX3Jhd19zdGFydD1m
aWxlPS95b3VyL2R1bXAvZGlyZWN0b3J5Lw0KIEBlbmQgZXhhbXBsZQ0KDQogQHN1YnNlY3Rpb24g
VXNhZ2UNCg0KIFRvIGVuYWJsZSBkdW1waW5nLCB1c2UgdGhlIEBjb2Rle2R1bXBfcmF3X3N0YXJ0
fSBjb21tYW5kOg0KDQogQGV4YW1wbGUNCiBmZm1wZWcgLWkgaW5wdXQud2F2IC1hZiAidm9sdW1l
LGFzZW5kY21kPScwLjAgZHVtcF9yYXdfc3RhcnQgZmlsZT0vdG1wL3BjbS8nIiAtZiBudWxsIC0N
CiBAZW5kIGV4YW1wbGUNCg0KIFRvIHN0b3AgZHVtcGluZzoNCg0KIEBleGFtcGxlDQogYXNlbmRj
bWQ9JzUuMCBkdW1wX3Jhd19zdG9wJw0KIEBlbmQgZXhhbXBsZQ0KDQogQHN1YnNlY3Rpb24gT3B0
aW9ucw0KDQogQHRhYmxlIEBvcHRpb24NCiBAaXRlbSBmaWxlDQogU3BlY2lmeSBhIGRpcmVjdG9y
eSBwYXRoIChub3QgYSBmaWxlbmFtZSkgd2hlcmUgUENNIGRhdGEgd2lsbCBiZSBkdW1wZWQuDQog
VGhlIGR1bXBlZCBmaWxlIGlzIG5hbWVkIEBjb2RlezxzcmM+LTxkc3Q+LnBjbX0gYW5kIHdpbGwg
YmUgb3ZlcndyaXR0ZW4gaWYgaXQgYWxyZWFkeSBleGlzdHMuDQogQGVuZCB0YWJsZQ0KLS0NCjIu
MzQuMQ0KDQoNCg0KX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18NCkZyb206IGZmbXBl
Zy1kZXZlbCA8ZmZtcGVnLWRldmVsLWJvdW5jZXNAZmZtcGVnLm9yZz4gb24gYmVoYWxmIG9mIEFu
ZHJlYXMgUmhlaW5oYXJkdCA8YW5kcmVhcy5yaGVpbmhhcmR0QG91dGxvb2suY29tPg0KU2VudDog
MjYgQXByaWwgMjAyNSAzOjAwDQpUbzogZmZtcGVnLWRldmVsQGZmbXBlZy5vcmcgPGZmbXBlZy1k
ZXZlbEBmZm1wZWcub3JnPg0KU3ViamVjdDogUmU6IFtGRm1wZWctZGV2ZWxdIFtQQVRDSF0gYXZm
aWx0ZXI6IGFkZCBQQ00gZHVtcGluZyBiZXR3ZWVuIGZpbHRlcnMgZm9yIGF1ZGlvIGRlYnVnZ2lu
Zw0KDQrSu9a7tPMgt8rDqDoNCj4gVGhpcyBwYXRjaCBpbnRyb2R1Y2VzIFBDTSBkdW1waW5nIHN1
cHBvcnQgYmV0d2VlbiBBVkZpbHRlciBsaW5rcywgaW50ZW5kZWQgZm9yIGF1ZGlvIGRlYnVnZ2lu
Zy4NCj4NCj4gSXQgYWRkcyBhIGNvbmZpZ3VyZS10aW1lIG9wdGlvbiBgLS1kdW1wZGlyPVBBVEhg
IHRvIHNwZWNpZnkgdGhlIG91dHB1dCBkaXJlY3RvcnkgZm9yIHJhdyBQQ00gZGF0YSAoZGVmYXVs
dDogL3RtcC8pLg0KPg0KPiBUd28gY29tbWFuZHMgYXJlIGV4cG9zZWQgdG8gY29udHJvbCBkdW1w
aW5nOg0KPiAgIC0gZHVtcF9yYXdfc3RhcnQgPGRzdF9maWx0ZXJfbmFtZT4NCj4gICAtIGR1bXBf
cmF3X3N0b3AgPGRzdF9maWx0ZXJfbmFtZT4NCj4NCj4gRHVtcCBmaWxlcyBhcmUgd3JpdHRlbiBh
czogc3JjbmFtZS1kc3RuYW1lLWNoYW5uZWwucGNtDQo+DQo+IFN1cHBvcnRzIHBhY2tlZCBhbmQg
cGxhbmFyIGZvcm1hdHMuIEZpbGUgZGVzY3JpcHRvcnMgYXJlIG1hbmFnZWQgYXV0b21hdGljYWxs
eSBhbmQgd29yayBvbmx5IG9uIGF1ZGlvIGxpbmtzLg0KPg0KPiBFeGFtcGxlIHVzYWdlOg0KPiAg
ICAgYXZmaWx0ZXJfcHJvY2Vzc19jb21tYW5kKGZpbHRlciwgImR1bXBfcmF3X3N0YXJ0IiwgInZv
bHVtZSIsIE5VTEwsIDAsIDApOw0KPg0KPiBUaGlzIGZlYXR1cmUgaGVscHMgZGV2ZWxvcGVycyBk
ZWJ1ZyBmaWx0ZXIgYmVoYXZpb3IgYnkgaW5zcGVjdGluZyBpbnRlcm1lZGlhdGUgYXVkaW8gZGF0
YS4NCj4gLS0tDQo+IEZyb20gNmEzMWM4NWFmZDI4MDBjMDkwNzZjMWUyYjdjNzM0YzdiNzE5Zjcz
ZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDENCj4gRnJvbTogWWlibyBGYW5nIDxibHVleWJmNzc3
QG91dGxvb2suY29tPg0KPiBEYXRlOiBXZWQsIDIzIEFwciAyMDI1IDA5OjE3OjUxICswODAwDQo+
IFN1YmplY3Q6IFtQQVRDSCAxLzFdIGF2ZmlsdGVyOiBhZGQgUENNIGR1bXBpbmcgYmV0d2VlbiBm
aWx0ZXJzIGZvciBhdWRpbw0KPiAgZGVidWdnaW5nDQo+DQo+IFRoaXMgcGF0Y2ggYWRkcyB0aGUg
YWJpbGl0eSB0byBkdW1wIHJhdyBQQ00gYXVkaW8gZGF0YSBiZXR3ZWVuIEFWRmlsdGVyIGxpbmtz
Lg0KPiBJdCBpbnRyb2R1Y2VzIGEgY29uZmlndXJlLXRpbWUgb3B0aW9uIGAtLWR1bXBkaXI9UEFU
SGAgdG8gY29udHJvbCB0aGUgb3V0cHV0DQo+IGRpcmVjdG9yeSBvZiBkdW1wIGZpbGVzIChkZWZh
dWx0OiAvdG1wLykuIFRoaXMgZmVhdHVyZSBpcyBoZWxwZnVsIGZvciBkZWJ1Z2dpbmcNCj4gZmls
dGVyIGJlaGF2aW9yIGFuZCB2ZXJpZnlpbmcgYXVkaW8gcHJvY2Vzc2luZy4NCj4NCj4gVHdvIGZp
bHRlciBjb21tYW5kcyBhcmUgYWRkZWQ6DQo+ICAgLSBkdW1wX3Jhd19zdGFydCA8ZHN0X2ZpbHRl
cl9uYW1lPg0KPiAgIC0gZHVtcF9yYXdfc3RvcCA8ZHN0X2ZpbHRlcl9uYW1lPg0KPg0KPiBUaGUg
UENNIGZpbGVzIGFyZSB3cml0dGVuIGluIHRoZSBmb3JtYXQ6IHNyY25hbWUtZHN0bmFtZS08Y2hh
bm5lbD4ucGNtLg0KPg0KPiBTdXBwb3J0cyBib3RoIHBhY2tlZCBhbmQgcGxhbmFyIGZvcm1hdHMu
IEZpbGUgZGVzY3JpcHRvcnMgYXJlIGF1dG9tYXRpY2FsbHkNCj4gbWFuYWdlZC4gV29ya3Mgb25s
eSBvbiBhdWRpbyBsaW5rcy4NCj4NCj4gRXhhbXBsZSB1c2FnZToNCj4gICBhdmZpbHRlcl9wcm9j
ZXNzX2NvbW1hbmQoZmlsdGVyLCAiZHVtcF9yYXdfc3RhcnQiLCAidm9sdW1lIiwgTlVMTCwgMCwg
MCk7DQo+DQo+IFNpZ25lZC1vZmYtYnk6IFlpYm8gRmFuZyA8Ymx1ZXliZjc3N0BvdXRsb29rLmNv
bT4NCj4gLS0tDQo+ICBjb25maWd1cmUgICAgICAgICAgICAgIHwgICA3ICsrKw0KPiAgbGliYXZm
aWx0ZXIvYXZmaWx0ZXIuYyB8IDExMCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr
KysrKysrKw0KPiAgbGliYXZmaWx0ZXIvYXZmaWx0ZXIuaCB8ICAgNCArKw0KPiAgMyBmaWxlcyBj
aGFuZ2VkLCAxMjEgaW5zZXJ0aW9ucygrKQ0KPg0KPiBkaWZmIC0tZ2l0IGEvY29uZmlndXJlIGIv
Y29uZmlndXJlDQo+IGluZGV4IGM5NGI4ZWFjNDMuLjM4MTYzMzc0OWQgMTAwNzU1DQo+IC0tLSBh
L2NvbmZpZ3VyZQ0KPiArKysgYi9jb25maWd1cmUNCj4gQEAgLTUyNCw2ICs1MjQsNyBAQCBEZXZl
bG9wZXIgb3B0aW9ucyAodXNlZnVsIHdoZW4gd29ya2luZyBvbiBGRm1wZWcgaXRzZWxmKToNCj4g
ICAgLS1kaXNhYmxlLWxhcmdlLXRlc3RzICAgIGRpc2FibGUgdGVzdHMgdGhhdCB1c2UgYSBsYXJn
ZSBhbW91bnQgb2YgbWVtb3J5DQo+ICAgIC0tZGlzYWJsZS1wdHgtY29tcHJlc3Npb24gZG9uJ3Qg
Y29tcHJlc3MgQ1VEQSBQVFggY29kZSBldmVuIHdoZW4gcG9zc2libGUNCj4gICAgLS1kaXNhYmxl
LXZlcnNpb24tdHJhY2tpbmcgZG9uJ3QgaW5jbHVkZSB0aGUgZ2l0L3JlbGVhc2UgdmVyc2lvbiBp
biB0aGUgYnVpbGQNCj4gKyAgLS1kdW1wZGlyPVBBVEggICAgICAgICAgIGxvY2F0aW9uIG9mIHBj
bSBkdW1wIGZpbGVzIHRvIHNhdmUuDQo+DQo+ICBOT1RFOiBPYmplY3QgZmlsZXMgYXJlIGJ1aWx0
IGF0IHRoZSBwbGFjZSB3aGVyZSBjb25maWd1cmUgaXMgbGF1bmNoZWQuDQo+ICBFT0YNCj4gQEAg
LTI2OTAsNiArMjY5MSw3IEBAIFBBVEhTX0xJU1Q9Ig0KPiAgICAgIHByZWZpeA0KPiAgICAgIHNo
bGliZGlyDQo+ICAgICAgaW5zdGFsbF9uYW1lX2Rpcg0KPiArICAgIGR1bXBkaXINCj4gICINCj4N
Cj4gIENNRExJTkVfU0VUPSINCj4gQEAgLTQxMjMsNiArNDEyNSw5IEBAIGluY2Rpcl9kZWZhdWx0
PScke3ByZWZpeH0vaW5jbHVkZScNCj4gIGxpYmRpcl9kZWZhdWx0PScke3ByZWZpeH0vbGliJw0K
PiAgbWFuZGlyX2RlZmF1bHQ9JyR7cHJlZml4fS9zaGFyZS9tYW4nDQo+DQo+ICsjIHJ1bnRpbWUg
cGF0aA0KPiArZHVtcGRpcl9kZWZhdWx0PScvdG1wLycNCj4gKw0KPiAgIyB0b29sY2hhaW4NCj4g
IGFyX2RlZmF1bHQ9ImFyIg0KPiAgY2NfZGVmYXVsdD0iZ2NjIg0KPiBAQCAtODExOCw2ICs4MTIz
LDcgQEAgRE9DRElSPVwkKERFU1RESVIpJGRvY2Rpcg0KPiAgTUFORElSPVwkKERFU1RESVIpJG1h
bmRpcg0KPiAgUEtHQ09ORklHRElSPVwkKERFU1RESVIpJHBrZ2NvbmZpZ2Rpcg0KPiAgSU5TVEFM
TF9OQU1FX0RJUj0kaW5zdGFsbF9uYW1lX2Rpcg0KPiArRFVNUERJUj0kZHVtcGRpcg0KPiAgU1JD
X1BBVEg9JHNvdXJjZV9wYXRoDQo+ICBTUkNfTElOSz0kc291cmNlX2xpbmsNCj4gIGlmbmRlZiBN
QUlOX01BS0VGSUxFDQo+IEBAIC04MjY3LDYgKzgyNzMsNyBAQCBjYXQgPiAkVE1QSCA8PEVPRg0K
PiAgI2RlZmluZSBDT05GSUdfVEhJU19ZRUFSIDIwMjUNCj4gICNkZWZpbmUgRkZNUEVHX0RBVEFE
SVIgIiQoZXZhbCBjX2VzY2FwZSAkZGF0YWRpcikiDQo+ICAjZGVmaW5lIEFWQ09OVl9EQVRBRElS
ICIkKGV2YWwgY19lc2NhcGUgJGRhdGFkaXIpIg0KPiArI2RlZmluZSBGRk1QRUdfRFVNUERJUiAi
JChldmFsIGNfZXNjYXBlICRkdW1wZGlyKSINCj4gICNkZWZpbmUgQ0NfSURFTlQgIiQoY19lc2Nh
cGUgJHtjY19pZGVudDotVW5rbm93biBjb21waWxlcn0pIg0KPiAgI2RlZmluZSBPU19OQU1FICR0
YXJnZXRfb3MNCj4gICNkZWZpbmUgRVhURVJOX1BSRUZJWCAiJHtleHRlcm5fcHJlZml4fSINCj4g
ZGlmZiAtLWdpdCBhL2xpYmF2ZmlsdGVyL2F2ZmlsdGVyLmMgYi9saWJhdmZpbHRlci9hdmZpbHRl
ci5jDQo+IGluZGV4IDY0YzEwNzVjNDAuLjlmYzYzMDg1NDQgMTAwNjQ0DQo+IC0tLSBhL2xpYmF2
ZmlsdGVyL2F2ZmlsdGVyLmMNCj4gKysrIGIvbGliYXZmaWx0ZXIvYXZmaWx0ZXIuYw0KPiBAQCAt
MTksNiArMTksOSBAQA0KPiAgICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0
LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxIFVTQQ0KPiAgICovDQo+DQo+ICsj
aW5jbHVkZSA8ZmNudGwuaD4NCj4gKyNpbmNsdWRlIDx1bmlzdGQuaD4NCj4gKw0KPiAgI2luY2x1
ZGUgImxpYmF2dXRpbC9hdmFzc2VydC5oIg0KPiAgI2luY2x1ZGUgImxpYmF2dXRpbC9hdnN0cmlu
Zy5oIg0KPiAgI2luY2x1ZGUgImxpYmF2dXRpbC9icHJpbnQuaCINCj4gQEAgLTE5NSw2ICsxOTgs
NjYgQEAgaW50IGF2ZmlsdGVyX2xpbmsoQVZGaWx0ZXJDb250ZXh0ICpzcmMsIHVuc2lnbmVkIHNy
Y3BhZCwNCj4gICAgICByZXR1cm4gMDsNCj4gIH0NCj4NCj4gK3N0YXRpYyBhdl9jb2xkIHZvaWQg
bGlua191bmluaXRfZHVtcF9wY20oQVZGaWx0ZXJMaW5rICpsaW5rLCBpbnQgc3RvcCkNCj4gK3sN
Cj4gKyAgICBpZiAobGluay0+ZHVtcF9wY21fZmRzKSB7DQo+ICsgICAgICAgIGludCBpOw0KPiAr
ICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbGluay0+bmJfZHVtcF9wY21fZmRzOyBpKyspIHsNCj4g
KyAgICAgICAgICAgIGlmIChsaW5rLT5kdW1wX3BjbV9mZHNbaV0pDQo+ICsgICAgICAgICAgICAg
ICAgY2xvc2UobGluay0+ZHVtcF9wY21fZmRzW2ldKTsNCj4gKyAgICAgICAgfQ0KPiArICAgICAg
ICBhdl9mcmVlKGxpbmstPmR1bXBfcGNtX2Zkcyk7DQo+ICsgICAgICAgIGxpbmstPmR1bXBfcGNt
X2ZkcyAgICA9IE5VTEw7DQo+ICsgICAgICAgIGxpbmstPm5iX2R1bXBfcGNtX2ZkcyA9IDA7DQo+
ICsgICAgfQ0KPiArDQo+ICsgICAgaWYgKHN0b3ApDQo+ICsgICAgICAgIGxpbmstPmR1bXBfcGNt
ID0gMDsNCj4gK30NCj4gKw0KPiArc3RhdGljIGF2X2NvbGQgaW50IGxpbmtfaW5pdF9kdW1wX3Bj
bShBVkZpbHRlckxpbmsgKmxpbmspDQo+ICt7DQo+ICsgICAgY2hhciBwYXRoWzQwOTZdOw0KPiAr
ICAgIGludCBmZCwgaTsNCj4gKw0KPiArICAgIGxpbmstPm5iX2R1bXBfcGNtX2ZkcyA9IGF2X3Nh
bXBsZV9mbXRfaXNfcGxhbmFyKGxpbmstPmZvcm1hdCk/IGxpbmstPmNoX2xheW91dC5uYl9jaGFu
bmVscyA6IDE7DQo+ICsgICAgbGluay0+ZHVtcF9wY21fZmRzID0gYXZfbWFsbG9jX2FycmF5KGxp
bmstPm5iX2R1bXBfcGNtX2Zkcywgc2l6ZW9mKGludCkpOw0KPiArICAgIGlmICghbGluay0+ZHVt
cF9wY21fZmRzKQ0KPiArICAgICAgICByZXR1cm4gQVZFUlJPUihFTk9NRU0pOw0KPiArDQo+ICsg
ICAgZm9yIChpID0gMDsgaSA8IGxpbmstPm5iX2R1bXBfcGNtX2ZkczsgaSsrKSB7DQo+ICsgICAg
ICAgIHNucHJpbnRmKHBhdGgsIHNpemVvZihwYXRoKSwgRkZNUEVHX0RVTVBESVIiJS4xNnMtJS44
cy0lZC5wY20iLCBsaW5rLT5zcmMtPm5hbWUsIGxpbmstPmRzdC0+bmFtZSwgaSk7DQo+ICsgICAg
ICAgIGZkID0gb3BlbihwYXRoLCBPX1dST05MWSB8IE9fQ1JFQVQgfCBPX1RSVU5DLCAwNjQ0KTsN
Cj4gKyAgICAgICAgaWYgKGZkIDwgMCkgew0KPiArICAgICAgICAgICAgbGlua191bmluaXRfZHVt
cF9wY20obGluaywgMSk7DQo+ICsgICAgICAgICAgICByZXR1cm4gQVZFUlJPUihlcnJubyk7DQo+
ICsgICAgICAgIH0NCj4gKyAgICAgICAgbGluay0+ZHVtcF9wY21fZmRzW2ldID0gZmQ7DQo+ICsg
ICAgfQ0KPiArDQo+ICsgICAgcmV0dXJuIDA7DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyBpbnQgZmls
dGVyX3NldF9kdW1wX3BjbShBVkZpbHRlckNvbnRleHQgKmZpbHRlciwgY29uc3QgY2hhciAqdGFy
Z2V0LCBpbnQgc2V0KQ0KPiArew0KPiArICAgIGludCBpOw0KPiArDQo+ICsgICAgZm9yIChpID0g
MDsgaSA8IGZpbHRlci0+bmJfb3V0cHV0czsgaSsrKSB7DQo+ICsgICAgICAgIEFWRmlsdGVyTGlu
ayAqbGluayA9IGZpbHRlci0+b3V0cHV0c1tpXTsNCj4gKyAgICAgICAgaWYgKCF0YXJnZXQgfHwg
IXN0cmNtcChsaW5rLT5kc3QtPm5hbWUsIHRhcmdldCkpIHsNCj4gKyAgICAgICAgICAgIGlmIChz
ZXQpIHsNCj4gKyAgICAgICAgICAgICAgICBsaW5rLT5kdW1wX3BjbSA9IDE7DQo+ICsgICAgICAg
ICAgICB9IGVsc2UNCj4gKyAgICAgICAgICAgICAgICBsaW5rX3VuaW5pdF9kdW1wX3BjbShsaW5r
LCAxKTsNCj4gKw0KPiArICAgICAgICAgICAgaWYgKHRhcmdldCkNCj4gKyAgICAgICAgICAgICAg
ICByZXR1cm4gMDsNCj4gKyAgICAgICAgfQ0KPiArICAgIH0NCj4gKw0KPiArICAgIHJldHVybiB0
YXJnZXQgPyBBVkVSUk9SKEVJTlZBTCkgOiAwOw0KPiArfQ0KPiArDQo+ICBzdGF0aWMgdm9pZCBs
aW5rX2ZyZWUoQVZGaWx0ZXJMaW5rICoqbGluaykNCj4gIHsNCj4gICAgICBGaWx0ZXJMaW5rSW50
ZXJuYWwgKmxpOw0KPiBAQCAtMjA4LDYgKzI3MSw4IEBAIHN0YXRpYyB2b2lkIGxpbmtfZnJlZShB
VkZpbHRlckxpbmsgKipsaW5rKQ0KPiAgICAgIGF2X2NoYW5uZWxfbGF5b3V0X3VuaW5pdCgmKCps
aW5rKS0+Y2hfbGF5b3V0KTsNCj4gICAgICBhdl9mcmFtZV9zaWRlX2RhdGFfZnJlZSgmKCpsaW5r
KS0+c2lkZV9kYXRhLCAmKCpsaW5rKS0+bmJfc2lkZV9kYXRhKTsNCj4NCj4gKyAgICBsaW5rX3Vu
aW5pdF9kdW1wX3BjbSgqbGluaywgMSk7DQo+ICsNCj4gICAgICBhdl9idWZmZXJfdW5yZWYoJmxp
LT5sLmh3X2ZyYW1lc19jdHgpOw0KPg0KPiAgICAgIGF2X2ZyZWVwKGxpbmspOw0KPiBAQCAtNjE3
LDYgKzY4MiwxMCBAQCBpbnQgYXZmaWx0ZXJfcHJvY2Vzc19jb21tYW5kKEFWRmlsdGVyQ29udGV4
dCAqZmlsdGVyLCBjb25zdCBjaGFyICpjbWQsIGNvbnN0IGNoYQ0KPiAgICAgICAgICBpZiAocmVz
ID09IGxvY2FsX3JlcykNCj4gICAgICAgICAgICAgIGF2X2xvZyhmaWx0ZXIsIEFWX0xPR19JTkZP
LCAiJXMiLCByZXMpOw0KPiAgICAgICAgICByZXR1cm4gMDsNCj4gKyAgICB9ZWxzZSBpZighc3Ry
Y21wKGNtZCwgImR1bXBfcmF3X3N0YXJ0IikpIHsNCj4gKyAgICAgICAgcmV0dXJuIGZpbHRlcl9z
ZXRfZHVtcF9wY20oZmlsdGVyLCBhcmcsIDEpOw0KPiArICAgIH1lbHNlIGlmKCFzdHJjbXAoY21k
LCAiZHVtcF9yYXdfc3RvcCIpKSB7DQo+ICsgICAgICAgIHJldHVybiBmaWx0ZXJfc2V0X2R1bXBf
cGNtKGZpbHRlciwgYXJnLCAwKTsNCj4gICAgICB9ZWxzZSBpZighc3RyY21wKGNtZCwgImVuYWJs
ZSIpKSB7DQo+ICAgICAgICAgIHJldHVybiBzZXRfZW5hYmxlX2V4cHIoZmZmaWx0ZXJjdHgoZmls
dGVyKSwgYXJnKTsNCj4gICAgICB9ZWxzZSBpZiAoZmZmaWx0ZXIoZmlsdGVyLT5maWx0ZXIpLT5w
cm9jZXNzX2NvbW1hbmQpIHsNCj4gQEAgLTEwNTAsNiArMTExOSw0MSBAQCBmYWlsOg0KPiAgICAg
IHJldHVybiByZXQ7DQo+ICB9DQo+DQo+ICtzdGF0aWMgaW50IGxpbmtfZHVtcF9mcmFtZShBVkZp
bHRlckxpbmsgKmxpbmssIEFWRnJhbWUgKmZyYW1lKQ0KPiArew0KPiArICAgIGludCBzYW1wbGVz
X3NpemUsIHJldDsNCj4gKw0KPiArICAgIGlmICghbGluay0+ZHVtcF9wY21fZmRzKSB7DQo+ICsg
ICAgICAgIHJldCA9IGxpbmtfaW5pdF9kdW1wX3BjbShsaW5rKTsNCj4gKyAgICAgICAgaWYgKHJl
dCA8IDApDQo+ICsgICAgICAgICAgICByZXR1cm4gcmV0Ow0KPiArICAgIH0NCj4gKw0KPiArICAg
IHNhbXBsZXNfc2l6ZSA9IGF2X2dldF9ieXRlc19wZXJfc2FtcGxlKGZyYW1lLT5mb3JtYXQpICog
ZnJhbWUtPm5iX3NhbXBsZXM7DQo+ICsgICAgaWYgKGF2X3NhbXBsZV9mbXRfaXNfcGxhbmFyKGZy
YW1lLT5mb3JtYXQpKSB7DQo+ICsgICAgICAgIGludCBpOw0KPiArICAgICAgICBmb3IgKGkgPSAw
OyBpIDwgbGluay0+bmJfZHVtcF9wY21fZmRzICYmIGkgPCBmcmFtZS0+Y2hfbGF5b3V0Lm5iX2No
YW5uZWxzOyBpKyspIHsNCj4gKyAgICAgICAgICAgIGlmIChpIDwgQVZfTlVNX0RBVEFfUE9JTlRF
UlMpIHsNCj4gKyAgICAgICAgICAgICAgICByZXQgPSB3cml0ZShsaW5rLT5kdW1wX3BjbV9mZHNb
aV0sIGZyYW1lLT5kYXRhW2ldLCBzYW1wbGVzX3NpemUpOw0KPiArICAgICAgICAgICAgfSBlbHNl
DQo+ICsgICAgICAgICAgICAgICAgcmV0ID0gd3JpdGUobGluay0+ZHVtcF9wY21fZmRzW2ldLCBm
cmFtZS0+ZXh0ZW5kZWRfZGF0YVtpIC0gQVZfTlVNX0RBVEFfUE9JTlRFUlNdLCBzYW1wbGVzX3Np
emUpOw0KPiArDQo+ICsgICAgICAgICAgICBpZiAocmV0IDwgMCkNCj4gKyAgICAgICAgICAgICAg
ICBnb3RvIGVycjsNCj4gKyAgICAgICAgfQ0KPiArICAgIH0gZWxzZSB7DQo+ICsgICAgICAgIHJl
dCA9IHdyaXRlKGxpbmstPmR1bXBfcGNtX2Zkc1swXSwgZnJhbWUtPmRhdGFbMF0sIHNhbXBsZXNf
c2l6ZSAqIGZyYW1lLT5jaF9sYXlvdXQubmJfY2hhbm5lbHMpOw0KPiArICAgICAgICBpZiAocmV0
IDwgMCkNCj4gKyAgICAgICAgICAgIGdvdG8gZXJyOw0KPiArDQo+ICsgICAgfQ0KPiArDQo+ICsg
ICAgcmV0dXJuIDA7DQo+ICtlcnI6DQo+ICsgICAgbGlua191bmluaXRfZHVtcF9wY20obGluaywg
MSk7DQo+ICsgICAgcmV0dXJuIEFWRVJST1IoZXJybm8pOw0KPiArfQ0KPiArDQo+ICBpbnQgZmZf
ZmlsdGVyX2ZyYW1lKEFWRmlsdGVyTGluayAqbGluaywgQVZGcmFtZSAqZnJhbWUpDQo+ICB7DQo+
ICAgICAgRmlsdGVyTGlua0ludGVybmFsICogY29uc3QgbGkgPSBmZl9saW5rX2ludGVybmFsKGxp
bmspOw0KPiBAQCAtMTA4Nyw2ICsxMTkxLDEyIEBAIGludCBmZl9maWx0ZXJfZnJhbWUoQVZGaWx0
ZXJMaW5rICpsaW5rLCBBVkZyYW1lICpmcmFtZSkNCj4gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGxpbmstPnRpbWVfYmFzZSk7DQo+ICAgICAgfQ0KPg0KPiArICAgIGlm
IChsaW5rLT5kdW1wX3BjbSAmJiBsaW5rLT50eXBlID09IEFWTUVESUFfVFlQRV9BVURJTykgew0K
PiArICAgICAgICByZXQgPSBsaW5rX2R1bXBfZnJhbWUobGluaywgZnJhbWUpOw0KPiArICAgICAg
ICBpZiAocmV0IDwgMCkNCj4gKyAgICAgICAgICAgIGF2X2xvZyhsaW5rLT5kc3QsIEFWX0xPR19F
UlJPUiwgIkR1bXAgcGNtIGZpbGVzIGZhaWxlZCB3aXRoICVkXG4iLCByZXQpOw0KPiArICAgIH0N
Cj4gKw0KPiAgICAgIGxpLT5mcmFtZV9ibG9ja2VkX2luID0gbGktPmZyYW1lX3dhbnRlZF9vdXQg
PSAwOw0KPiAgICAgIGxpLT5sLmZyYW1lX2NvdW50X2luKys7DQo+ICAgICAgbGktPmwuc2FtcGxl
X2NvdW50X2luICs9IGZyYW1lLT5uYl9zYW1wbGVzOw0KPiBkaWZmIC0tZ2l0IGEvbGliYXZmaWx0
ZXIvYXZmaWx0ZXIuaCBiL2xpYmF2ZmlsdGVyL2F2ZmlsdGVyLmgNCj4gaW5kZXggYTg5ZDNjZjY1
OC4uNmQwNGI5ZGE3NyAxMDA2NDQNCj4gLS0tIGEvbGliYXZmaWx0ZXIvYXZmaWx0ZXIuaA0KPiAr
KysgYi9saWJhdmZpbHRlci9hdmZpbHRlci5oDQo+IEBAIC00MDQsNiArNDA0LDEwIEBAIHN0cnVj
dCBBVkZpbHRlckxpbmsgew0KPiAgICAgIGludCBzYW1wbGVfcmF0ZTsgICAgICAgICAgICAvLy88
IHNhbXBsZXMgcGVyIHNlY29uZA0KPiAgICAgIEFWQ2hhbm5lbExheW91dCBjaF9sYXlvdXQ7ICAv
Ly88IGNoYW5uZWwgbGF5b3V0IG9mIGN1cnJlbnQgYnVmZmVyIChzZWUgbGliYXZ1dGlsL2NoYW5u
ZWxfbGF5b3V0LmgpDQo+DQo+ICsgICAgaW50ICAgICAgICBkdW1wX3BjbTsgICAgICAgLy8vPCBm
bGFnIHRvIGR1bXAgcGNtDQo+ICsgICAgaW50ICAgICAgICAqZHVtcF9wY21fZmRzOyAgIC8vLzwg
ZHVtcCBmaWxlcw0KPiArICAgIHVuc2lnbmVkIG5iX2R1bXBfcGNtX2ZkczsgICAvLy88IG51bWJl
ciBvZiBkdW1wIGZpbGUNCj4gKw0KPiAgICAgIC8qKg0KPiAgICAgICAqIERlZmluZSB0aGUgdGlt
ZSBiYXNlIHVzZWQgYnkgdGhlIFBUUyBvZiB0aGUgZnJhbWVzL3NhbXBsZXMNCj4gICAgICAgKiB3
aGljaCB3aWxsIHBhc3MgdGhyb3VnaCB0aGlzIGxpbmsuDQo+IC0tDQo+IDIuMzQuMQ0KPg0KDQpD
YW4ndCB5b3UgdXNlIHRoZSBhc3BsaXQgZmlsdGVyIHRvIGR1cGxpY2F0ZSB0aGUgYXVkaW8/DQoN
Ci0gQW5kcmVhcw0KDQpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fXw0KZmZtcGVnLWRldmVsIG1haWxpbmcgbGlzdA0KZmZtcGVnLWRldmVsQGZmbXBlZy5vcmcN
Cmh0dHBzOi8vZmZtcGVnLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ZmbXBlZy1kZXZlbA0KDQpUbyB1
bnN1YnNjcmliZSwgdmlzaXQgbGluayBhYm92ZSwgb3IgZW1haWwNCmZmbXBlZy1kZXZlbC1yZXF1
ZXN0QGZmbXBlZy5vcmcgd2l0aCBzdWJqZWN0ICJ1bnN1YnNjcmliZSIuDQpfX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpmZm1wZWctZGV2ZWwgbWFpbGluZyBs
aXN0CmZmbXBlZy1kZXZlbEBmZm1wZWcub3JnCmh0dHBzOi8vZmZtcGVnLm9yZy9tYWlsbWFuL2xp
c3RpbmZvL2ZmbXBlZy1kZXZlbAoKVG8gdW5zdWJzY3JpYmUsIHZpc2l0IGxpbmsgYWJvdmUsIG9y
IGVtYWlsCmZmbXBlZy1kZXZlbC1yZXF1ZXN0QGZmbXBlZy5vcmcgd2l0aCBzdWJqZWN0ICJ1bnN1
YnNjcmliZSIuCg==