Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vwFsP-00CiiZ-1Y for pgsql-hackers@arkaria.postgresql.org; Sat, 28 Feb 2026 08:40:42 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vwFsO-00AVNP-0h for pgsql-hackers@arkaria.postgresql.org; Sat, 28 Feb 2026 08:40:40 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vwFsN-00AVNG-0t for pgsql-hackers@lists.postgresql.org; Sat, 28 Feb 2026 08:40:39 +0000 Received: from mail-japanwestazlp170100003.outbound.protection.outlook.com ([2a01:111:f403:c407::3] helo=OS0P286CU011.outbound.protection.outlook.com) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.98.2) (envelope-from ) id 1vwFsJ-00000001eaN-28gC for pgsql-hackers@lists.postgresql.org; Sat, 28 Feb 2026 08:40:38 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=CqXlJP3Ok+ky+r8gT5WeGXC3a0ZLN/FJRWp2vbBohpLKWRQOIC27BW4PBX8yQojZVq63GVXhfoCrnHOA1Sh9BNaZt46Ppm2OCiriAL4soQR7kL18wpiyK+/Mq7S9vmdBmXxN/yTb3JwwkAd4P85ou/jiN35HHINVaD6DSKXnBXVRynEba/k6uPxvUEybvBtxPw8IGQ0d0rcyzkC590FTRA2AkdYkvoSut6F9JMZ0SN4evS/bwgoo8e3Wd3qUQ2VNdiqIpb95RgFC1Gofjwt2l/ucST0rzJsZU3EFlZZSKex5tBfSz903AKqNe159fFENsLY4hF36YIlyQJHsSiC1Kw== 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=q8Ui6xaVPIouUuLx3PUtptvwO8CAAjzs30t9iMaVPVM=; b=CifF4fxLgcAHqZLcbungyaheMuox1hwCawN9Ht7C/Ox2LkY0/2FOuUcZieMDNvFmnf+FDVPsFARkNv11DKTa3qAuURHplosqmnwZILd7aCnt2p7pgB13e89g6Zunhl91bXQIU+08YAA2+pYToUYi9A/YPKLP7jDrPzJbH9mY40jaSx7wQY4qQJKZg+BAom0ghK/aF4xSsF3A05qrGN1X7R/ykZU12QlQ5aAyirJJHkWorzEImnX4NxwSWFr6X3YzLkvHiL/mQa6GKUIbSkMfyRvVhHkrXB1y/ayx0B+CVynGV2l2Y4OhEcRHP5AkoQL9N9Eym91CVWUWF+JHIBh09Q== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=fujitsu.com; dmarc=pass action=none header.from=fujitsu.com; dkim=pass header.d=fujitsu.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=fujitsu.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=q8Ui6xaVPIouUuLx3PUtptvwO8CAAjzs30t9iMaVPVM=; b=DH061cE+l3oPsOnT/DI3BfSjPe1rbAU4BddS9M9N0GEbC4EtnZhGW1twXHVbH7C4QsqaUqrAUHSoZjuXwSoKkZ6qWpLSGDkyo/yiJs/vClJiBrQNE8epBNFrmN1jJgCP1PvJfw/q5Sm8yILno7lITW6jEEztwobD+vSa6ZH9MCQCbPI8QEA72+NeUZsxrQCU1kdSXcOPe2OalcuQyUWy6pTMzfEGGOF1SJy/q4sxIHxW+PCvG0SZ+D0nVSHvlJXfy0p7bLcuZeq1f7iQJ0RM4w6PsvAu+JjImcCEeNMYh1EPm3yUAh/cf+Xar38AQ9EZ6jvX2prDVk0p1MPfa12iTg== Received: from OS9PR01MB16913.jpnprd01.prod.outlook.com (2603:1096:604:408::18) by OS7PR01MB17523.jpnprd01.prod.outlook.com (2603:1096:604:43b::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9654.16; Sat, 28 Feb 2026 08:40:31 +0000 Received: from OS9PR01MB16913.jpnprd01.prod.outlook.com ([fe80::e4c2:7af5:b91f:347]) by OS9PR01MB16913.jpnprd01.prod.outlook.com ([fe80::e4c2:7af5:b91f:347%6]) with mapi id 15.20.9654.015; Sat, 28 Feb 2026 08:40:31 +0000 From: "Zhijie Hou (Fujitsu)" To: Amit Kapila , Ajin Cherian CC: "Hayato Kuroda (Fujitsu)" , shveta malik , Ashutosh Sharma , PostgreSQL Hackers Subject: RE: [PATCH] Support automatic sequence replication Thread-Topic: [PATCH] Support automatic sequence replication Thread-Index: AQHclMAEzANLvjhWZU6Kdy4EwfRGq7VwxE4AgALLp4CAAdjUAIAAAIgAgAd6mACAAfU5gIAH/IAAgAEknICAACZ5gIAAMc0AgAMzVQCABBduAIAB47QAgABQMgCABLf1qYABZaZQ Date: Sat, 28 Feb 2026 08:40:31 +0000 Message-ID: References: In-Reply-To: Accept-Language: en-AS, ja-JP, en-US Content-Language: ja-JP X-MS-Has-Attach: yes X-MS-TNEF-Correlator: msip_labels: =?utf-8?B?TVNJUF9MYWJlbF9hNzI5NWNjMS1kMjc5LTQyYWMtYWI0ZC0zYjBmNGZlY2Uw?= =?utf-8?B?NTBfQWN0aW9uSWQ9MWU2YjAyYmQtM2Y2Zi00YTk1LTk4MDItMzAzNTljOGZh?= =?utf-8?B?NTZhO01TSVBfTGFiZWxfYTcyOTVjYzEtZDI3OS00MmFjLWFiNGQtM2IwZjRm?= =?utf-8?B?ZWNlMDUwX0NvbnRlbnRCaXRzPTA7TVNJUF9MYWJlbF9hNzI5NWNjMS1kMjc5?= =?utf-8?B?LTQyYWMtYWI0ZC0zYjBmNGZlY2UwNTBfRW5hYmxlZD10cnVlO01TSVBfTGFi?= =?utf-8?B?ZWxfYTcyOTVjYzEtZDI3OS00MmFjLWFiNGQtM2IwZjRmZWNlMDUwX01ldGhv?= =?utf-8?B?ZD1TdGFuZGFyZDtNU0lQX0xhYmVsX2E3Mjk1Y2MxLWQyNzktNDJhYy1hYjRk?= =?utf-8?B?LTNiMGY0ZmVjZTA1MF9OYW1lPUZVSklUU1UtUkVTVFJJQ1RFROKAiztNU0lQ?= =?utf-8?B?X0xhYmVsX2E3Mjk1Y2MxLWQyNzktNDJhYy1hYjRkLTNiMGY0ZmVjZTA1MF9T?= =?utf-8?B?ZXREYXRlPTIwMjYtMDItMjhUMDg6Mjc6NTdaO01TSVBfTGFiZWxfYTcyOTVj?= =?utf-8?B?YzEtZDI3OS00MmFjLWFiNGQtM2IwZjRmZWNlMDUwX1NpdGVJZD1hMTlmMTIx?= =?utf-8?B?ZC04MWUxLTQ4NTgtYTlkOC03MzZlMjY3ZmQ0Yzc7TVNJUF9MYWJlbF9hNzI5?= =?utf-8?B?NWNjMS1kMjc5LTQyYWMtYWI0ZC0zYjBmNGZlY2UwNTBfVGFnPTEwLCAzLCAw?= =?utf-8?Q?,_1;?= authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=fujitsu.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: OS9PR01MB16913:EE_|OS7PR01MB17523:EE_ x-ms-office365-filtering-correlation-id: fb0e41fb-1643-49b9-05d6-08de76a50850 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0;ARA:13230040|366016|1800799024|376014|6049299003|1580799027|38070700021|4053099003; x-microsoft-antispam-message-info: T2Un6+Th+NVC779wO6hqnefJY2AuVCN+un3IC21F7zKj3srg3+lCfHDxedla4WkkkK9W5UoSW3nYTUHLEvy7ew78/Kss+gsgb2BrEGTQoYpmTQMaSL9EaW8UFm0nAaMatxroa8PCu5MHVTjRp8Z9D58agEu6QDu2pIyooIUYYX2mA5+cNowYpovouQhp6GRkA7Rlm/rsfPJaAaM6ZbWSxGLUqpTS2KW9mn0N1DYSaLdRcrbeZX45128teWnGz8XyZewjxaD/H5ngq2MK4/nszuJpMZBVZEDsl5d7chhR559a0gXIs4V8YniKaWXSBzoW9siXJXG6cEAsclfi6z7efWwCJH+WNme0iR5yh8UhET3f4T1Wt+sLz3ANchn+uADKHpspdOjOlaDLRVDlLLWE9evJVuecJpYn4DvB8/WBR0/SuaHheHxfV7F+fFg08rHVGrDdJFWEIgvvauQpBd5itDjpODjNQCq6MQ5p/UPCFCRRMm+5+9JtXXPHfSqViYgPsGLcZ/LtWyC1GSBulOwhzNiQ7OjML03KJlx0DFFBsIYk8Wlj+TedmFUA4GoiD7B65fdSg0ZCbSwDC4wltej+NiEiNDI0F5xpDFQtVDTmnAzv7Zriy5s/99CET8zLsE6qnxP+EEH8GnDaRMAuzIoUmlv2eSm58HtktAgAv+Bexf5JclYPx/xeVeKN43UphgS/Vq8gJTQc9KKm14gklXDrewuoIJXTj+BUIPlQdI3QyEY9+MItK2oEYkM8zrHyoo+xCeRRpg7TNFIoXc33udzc67ThbY1G4ONB6KiqWt9eJpfeMY1FPNSZTiF3js6TtDlMgysNKQH8+ZlqkhqwdFd8YA== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:ja;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:OS9PR01MB16913.jpnprd01.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(1800799024)(376014)(6049299003)(1580799027)(38070700021)(4053099003);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?WlFvMTVpWEk1b0dmOHRNQ3czU29uMGJFNzgzN2dHaFRnOWhSMHJJWnowakJw?= =?utf-8?B?OHJVMzJ4MzFpYzBHUWxtdVdBbmZHNUN0bS91ekY5ZmJ3QWFzV21XLzM5Q3l1?= =?utf-8?B?cGlpZGpNRlFyazJndmZHK3FyMklQbGl3Q2U3UmUweVFCTExiUW9ZemFTUVlC?= =?utf-8?B?S09La1cxOVhwakV0MHFzUU90dllhek9YZDkwVHlLTFN1U1ZRQjdQMDduU3Vq?= =?utf-8?B?ZWZSYVFQcXVDS0RuVS8zSzhwa0l2VW1YQ2tBYlNhOTVpMTJCZGtFeVpYNHZ5?= =?utf-8?B?WXdDdDVMNm1KUXYxWGwrWjA3QU1oVFJVanprYWhrYnhsZnBGcmFSblQrWGly?= =?utf-8?B?ZWZUVk04UlJyckliZlpicDVaMjBNd2dsd0JxTVA1d1E2elhCYVREeGQ2SEVj?= =?utf-8?B?bnN3TWJZWVZSS1RVQVJrVzZjM2pqcDlncmFibzNGS0NydlpVZjB4SjFyQWJv?= =?utf-8?B?RXJ4dm40TGlXV0cwUGJ3aHEvd2J3K05rZ1FLZkJ3djY4YVlUbDhqcVNUY0pj?= =?utf-8?B?dkovQTk5MG1jMnNGc05FbDF4ZGt3UXVLUHp6Wll0bU02YUwwNk5MV1BOV0FU?= =?utf-8?B?YnhxNisydGx1L3F0ays1Rmo1Y0NlVDM2SC9JQlh2WHhWblFzNVZoT0ZPc1dB?= =?utf-8?B?ZHJXSDRWaDBVcXF4OTJ3RndwNVFUNUM1TkF4YjNnQ0JUb0x4QzBPb3N2Qzdy?= =?utf-8?B?WDFVRHp2eXFaTFdmTzZYY1NQcnVVUHY5Z0swMVFKN0gwa1JvSUFKaDV5R1pX?= =?utf-8?B?YTJMNlpaNHdlZHNmKzE2dUFmY25HdlhuRHZoVFdTZEFCbUsrY2JLeEtjcENN?= =?utf-8?B?c3FjV1EyTmppaGJWb3RjYm1qQVdWa0lxYVBDVXlYS0xQdnpSV1paZU82T1Vt?= =?utf-8?B?eUpWK0lsZUx2TjU0UElpV1JNRU9WNTlLcWhRbllxTlZoNUNtWnBicmlxdUpj?= =?utf-8?B?L3hRVExlQ3R5bGErbjMzQS9hdEJwOVdSQ0Zuam5heTFxRDBkeHQrejZBMTJt?= =?utf-8?B?UGVjdm9iSTk3NGpxK0VRdnhOTHd0TnZsRXBTMXdsWXM5RDlPN1JwSHUvMXRR?= =?utf-8?B?VzUwdnByVXJSWjRWYVd1SXFhMlloVEsyenFteERkNHE1L3BNdE9QendaakVo?= =?utf-8?B?OTZyTEZtNElzRGt3WXFId05LcU5lY2NwRGtDZ09tZ1NsaXRCRkNVVWV1aCs1?= =?utf-8?B?akE2dWRQQTdQOG1GVmhtZWdRL3ZGNC9WekRRRHVyOUxlL0t6VlI2RTA4QkpS?= =?utf-8?B?elM1ZUg5Sm9QOWIrNkExbE8ydHRHKzA5RndYOStCNUxPTU5zdjMrREdqdDV1?= =?utf-8?B?ZmVVd2h5MHd4WkNxcGM1bW05RkNab0ppM1BKMHVyNzZtdDRmQXhiSkhXMG1N?= =?utf-8?B?QllmMEFBcG5LdCt4bzVPQVdtUExMVHJMN1V1Q3l3OXZ1WGNabjlzVlVNcmd5?= =?utf-8?B?cFhJZWcxOFlvTjhmZGg4T2EycjlnMXF5Ym1KMmIyYXYyUHR4SnhjT1dNbGxs?= =?utf-8?B?WFkwVy9pWU9VMWk2bFlremVLRFVGUzNLczc4RUUyRFlybzJ6aStBYWxla3dr?= =?utf-8?B?NGRNcFVEWFFPOUFSU05ibXNTdjQ0RFh1RkdBSmRwK1M0QVFqTWlXNnFheENH?= =?utf-8?B?YUE0aGozTklmbU1jV3F2RWptMVlvZjVuRUMxS3lNS0NvS2owNkFFTHZTUnlM?= =?utf-8?B?WkJkZk1WRnNESkRqbTFzS0NNb01uV29rc2hGWlIxdlFhMDV3cGpRaGYwVXN3?= =?utf-8?B?L1VNaU9BemVJM2NvU3U3SGFQVjlrM1RzUnB2K09FekdNWEhOSFJBbTZUOCtO?= =?utf-8?B?cjI3S3pkRFp2R283WU1wSnBOMURWOW9jMWJGM3JXdmwvaWdFOVROUjBiR3hL?= =?utf-8?B?VTlFTUs0VGEzSHY0bFVIVTV1S28yd3hybFV2a3RUbnJEZ1VIOFdXSlZteG91?= =?utf-8?B?QWx6aURyVEt4Q1ZxREdiRi9QTHdubnV3alMxQndjUkJwK0ZydkJDbGZCQjVI?= =?utf-8?B?elppZ29GNHFubGFvUkJaQWt5MTlIaHRSc3ovMTE2MlF1MXJ3c1JsaXZNckNj?= =?utf-8?B?UWdKZWVSNkJrSzRJM3h4UVFIMGYxOWZxRGlsejFodVFsUkIwdVNyaUQwTXFY?= =?utf-8?B?KzE2WnlZQjVxejlDVXNHajY0VEx0a1FuV2tNVWFYNHNVUlNqSXFubmliMFhR?= =?utf-8?B?SjRaSEh0UXVqVHFlMUtsMFB6My9ITkZ1a2g5VDl1RDB0ZjA2dXEzMWkvcWk1?= =?utf-8?B?c0s4QllncDBLLzNJWVhlSDY2UE91T3AxMzBQYW1VWkRrVktQQTB1VmVMdGRG?= =?utf-8?B?WFVQZUxLWmd0Mm93K1FLSnN3UEQveXpwWlVseEIybms0eU9lOXg5UT09?= Content-Type: multipart/mixed; boundary="_003_OS9PR01MB1691377CDB1468CDC9820BBEB9470AOS9PR01MB16913jp_" MIME-Version: 1.0 X-OriginatorOrg: fujitsu.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: OS9PR01MB16913.jpnprd01.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: fb0e41fb-1643-49b9-05d6-08de76a50850 X-MS-Exchange-CrossTenant-originalarrivaltime: 28 Feb 2026 08:40:31.4005 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: a19f121d-81e1-4858-a9d8-736e267fd4c7 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: P3l14fSip9v9MhsjHrrjNIMeO0ilfRL1GsDYqd8xIKNzfAKUtoHQGiYSzEzY2xO0Q3pcOU+jn0EeaY1tpcFaWg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: OS7PR01MB17523 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --_003_OS9PR01MB1691377CDB1468CDC9820BBEB9470AOS9PR01MB16913jp_ Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 T24gRnJpZGF5LCBGZWJydWFyeSAyNywgMjAyNiA3OjA3IFBNIEFtaXQgS2FwaWxhIDxhbWl0Lmth cGlsYTE2QGdtYWlsLmNvbT4gd3JvdGU6DQo+IEZldyBjb21tZW50czoNCj4gPT09PT09PT09PT09 PQ0KPiAxLg0KPiArIG9sZGN0eCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhTZXF1ZW5jZVN5bmND b250ZXh0KTsNCj4gDQo+IC0gaW5pdFN0cmluZ0luZm8oJmFwcF9uYW1lKTsNCj4gLSBhcHBlbmRT dHJpbmdJbmZvKCZhcHBfbmFtZSwgInBnXyV1X3NlcXVlbmNlX3N5bmNfIiBVSU5UNjRfRk9STUFU LA0KPiAtIE15U3Vic2NyaXB0aW9uLT5vaWQsIEdldFN5c3RlbUlkZW50aWZpZXIoKSk7DQo+ICsg LyogUHJvY2VzcyBzZXF1ZW5jZXMgKi8NCj4gKyBzZXF1ZW5jZV9jb3BpZWQgPSBjb3B5X3NlcXVl bmNlcyhjb25uLCBzZXFpbmZvcyk7DQo+IA0KPiAtIC8qDQo+IC0gKiBFc3RhYmxpc2ggdGhlIGNv bm5lY3Rpb24gdG8gdGhlIHB1Ymxpc2hlciBmb3Igc2VxdWVuY2Ugc3luY2hyb25pemF0aW9uLg0K PiAtICovDQo+IC0gTG9nUmVwV29ya2VyV2FsUmN2Q29ubiA9DQo+IC0gd2FscmN2X2Nvbm5lY3Qo TXlTdWJzY3JpcHRpb24tPmNvbm5pbmZvLCB0cnVlLCB0cnVlLA0KPiAtICAgIG11c3RfdXNlX3Bh c3N3b3JkLA0KPiAtICAgIGFwcF9uYW1lLmRhdGEsICZlcnIpOw0KPiAtIGlmIChMb2dSZXBXb3Jr ZXJXYWxSY3ZDb25uID09IE5VTEwpDQo+IC0gZXJlcG9ydChFUlJPUiwNCj4gLSBlcnJjb2RlKEVS UkNPREVfQ09OTkVDVElPTl9GQUlMVVJFKSwNCj4gLSBlcnJtc2coInNlcXVlbmNlc3luYyB3b3Jr ZXIgZm9yIHN1YnNjcmlwdGlvbiBcIiVzXCIgY291bGQgbm90IGNvbm5lY3QgdG8NCj4gdGhlIHB1 Ymxpc2hlcjogJXMiLA0KPiAtICAgIE15U3Vic2NyaXB0aW9uLT5uYW1lLCBlcnIpKTsNCj4gLQ0K PiAtIHBmcmVlKGFwcF9uYW1lLmRhdGEpOw0KPiAtDQo+IC0gY29weV9zZXF1ZW5jZXMoTG9nUmVw V29ya2VyV2FsUmN2Q29ubik7DQo+ICsgTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGN0eCk7DQo+ IA0KPiBJdCBpcyBiZXR0ZXIgdG8gc3dpdGNoIHRvIFNlcXVlbmNlU3luY0NvbnRleHQgYXQgdGhl IGNhbGxlciBvZg0KPiBMb2dpY2FsUmVwU3luY1NlcXVlbmNlcyBzaW1pbGFyIHRvIHdoYXQgd2Ug YXJlIGRvaW5nIGZvcg0KPiBBcHBseU1lc3NhZ2VDb250ZXh0Lg0KDQpBZ3JlZWQuIEkgY2hhbmdl ZCBhcyBzdWdnZXN0ZWQuDQoNCj4gDQo+IDIuDQo+IEBAIC00MjIxLDYgKzQyMjEsNyBAQCBMb2dp Y2FsUmVwQXBwbHlMb29wKFhMb2dSZWNQdHIgbGFzdF9yZWNlaXZlZCkNCj4gICBQcm9jZXNzQ29u ZmlnRmlsZShQR0NfU0lHSFVQKTsNCj4gICB9DQo+IA0KPiArDQo+ICAgaWYgKHJjICYgV0xfVElN RU9VVCkNCj4gDQo+IFNwdXJpb3VzIGxpbmUgYWRkaXRpb24uDQo+IA0KPiAzLiBBcGFydCBmcm9t IGFib3ZlLCB0aGUgYXR0YWNoZWQgcGF0Y2ggY29udGFpbnMgY29tbWVudHMgYW5kIGNvc21ldGlj DQo+IGNoYW5nZXMuDQoNClRoYW5rcyBmb3IgdGhlIHBhdGNoLCBJIGhhdmUgbWVyZ2VkIHRoZW0g aW50byAwMDAxLg0KDQpIZXJlIGlzIHRoZSBWOCBwYXRjaCBzZXQgYWRkcmVzc2luZyB0aGUgcHJl dmlvdXMgcmV2aWV3IGNvbW1lbnRzOg0KDQotIEZvciAwMDAxLCBJIG5vdGljZWQgdGhhdCB0aGUg R2V0U2VxdWVuY2UoKSBmdW5jdGlvbiBhZGRlZCBpbiB0aGUgcGF0Y2gNCiAgZmV0Y2hlcyB0aGUg bG9jYWwgc2VxdWVuY2UgdmFsdWUgd2l0aG91dCBhbnkgcHJpdmlsZWdlIGNoZWNrLiBUaGlzDQog IGFsbG93cyB0aGUgd29ya2VyIHRvIHJlYWQgc2VxdWVuY2UgZGF0YSBldmVuIHdpdGhvdXQgcHJv cGVyIFNFTEVDVA0KICBwcml2aWxlZ2UsIHdoaWNoIHNlZW1zIHVuc2FmZS4gSSd2ZSBhZGRlZCBh IFNFTEVDVCBwcml2aWxlZ2UgY2hlY2sNCiAgYmVmb3JlIGZldGNoaW5nIHRoZSBzZXF1ZW5jZSB2 YWx1ZS4gQWRkaXRpb25hbGx5LCBJJ3ZlIHVwZGF0ZWQgc2V2ZXJhbA0KICBjb21tZW50cywgbWFk ZSBjb3NtZXRpYyBjaGFuZ2VzLCBjb21taXQgbWVzc2FnZSB1cGRhdGUsIGFuZCBydW4NCiAgcGdp bmRlbnQgb24gYWxsIHBhdGNoZXMuDQoNCi0gMDAwMiBpbmNsdWRlcyB0aGUgY2hhbmdlcyB0byBz eW5jaHJvbml6ZSBzZXF1ZW5jZXMgZGlyZWN0bHkgaW4gdGhlDQogIFJFRlJFU0ggU0VRVUVOQ0VT IGNvbW1hbmQNCg0KQmVzdCBSZWdhcmRzLA0KSG91IHpqDQo= --_003_OS9PR01MB1691377CDB1468CDC9820BBEB9470AOS9PR01MB16913jp_ Content-Type: application/octet-stream; name="v8-0001-Support-automatic-sequence-replication.patch" Content-Description: v8-0001-Support-automatic-sequence-replication.patch Content-Disposition: attachment; filename="v8-0001-Support-automatic-sequence-replication.patch"; size=42318; creation-date="Sat, 28 Feb 2026 08:32:38 GMT"; modification-date="Sat, 28 Feb 2026 08:40:30 GMT" Content-Transfer-Encoding: base64 RnJvbSBhOTBkYmMyZDlhYmM3MGQwNjZhNGExODBjNTMzNDk4MGQ4ZDJjODgwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBamluIENoZXJpYW4gPGl0c2FqaW5AZ21haWwuY29tPgpEYXRl OiBUdWUsIDI0IEZlYiAyMDI2IDIxOjM3OjAxICsxMTAwClN1YmplY3Q6IFtQQVRDSCB2OCAxLzJd IFN1cHBvcnQgYXV0b21hdGljIHNlcXVlbmNlIHJlcGxpY2F0aW9uLgoKQ3VycmVudGx5LCBzZXF1 ZW5jZSB2YWx1ZXMgYXJlIHN5bmNocm9uaXplZCBmcm9tIHB1Ymxpc2hlciB0byBzdWJzY3JpYmVy IG9ubHkKd2hlbiB0aGUgdXNlciBtYW51YWxseSBydW5zIEFMVEVSIFNVQlNDUklQVElPTiAuLi4g UkVGUkVTSCBQVUJMSUNBVElPTiAod2hpY2gKYWZmZWN0cyBvbmx5IG5ld2x5IHN1YnNjcmliZWQg c2VxdWVuY2VzKSBvciBSRUZSRVNIIFNFUVVFTkNFUy4gVGhlIHNlcXVlbmNlIHN5bmMKd29ya2Vy IGV4aXRzIGltbWVkaWF0ZWx5IGFmdGVyIGNvbXBsZXRpbmcgZWFjaCBzeW5jaHJvbml6YXRpb24g cm91bmQuCgpUaGUgcHJpbWFyeSB1c2UgY2FzZSBmb3Igc2VxdWVuY2UgcmVwbGljYXRpb24gaXMg ZHVyaW5nIHVwZ3JhZGVzLCB3aGVyZSBpdCdzCnJlY29tbWVuZGVkIHRoYXQgdXNlcnMgZW5zdXJl IHNlcXVlbmNlcyBhcmUgaW4gc3luYyBieSBydW5uaW5nIFJFRlJFU0ggU0VRVUVOQ0VTCmJlZm9y ZSBmaW5pc2hpbmcgdGhlIHVwZ3JhZGUuIEhvd2V2ZXIsIHRoaXMgY29tbWFuZCBjYW4gYmUgc2xv dyB3aGVuCnN5bmNocm9uaXppbmcgYSBsYXJnZSBudW1iZXIgb2Ygc2VxdWVuY2VzLCBwb3RlbnRp YWxseSBpbmNyZWFzaW5nIGRvd250aW1lLgoKVG8gYWRkcmVzcyB0aGlzLCB0aGlzIGNvbW1pdCBt YWtlcyB0aGUgc2VxdWVuY2Ugc3luYyB3b3JrZXIgbG9uZy1saXZlZCwKY29udGludW91c2x5IG1v bml0b3Jpbmcgc2VxdWVuY2VzIGFuZCByZXN5bmNocm9uaXppbmcgdGhlbSB3aGVuIGRyaWZ0IGlz CmRldGVjdGVkLiBUaGUgd29ya2VyIHVzZXMgYW4gYWRhcHRpdmUgc2xlZXAgaW50ZXJ2YWw6IGl0 IHN0YXJ0cyBhdCAyIHNlY29uZHMsCmRvdWJsZXMgdXAgdG8gYSBtYXhpbXVtIG9mIDMwIHNlY29u ZHMgd2hlbiBubyBkcmlmdCBpcyBvYnNlcnZlZCwgYW5kIHJlc2V0cyB0bwp0aGUgbWluaW11bSBp bnRlcnZhbCBvbmNlIGRyaWZ0IGlzIGZvdW5kLgoKV2l0aCB0aGlzIGNoYW5nZSwgbW9zdCBzZXF1 ZW5jZXMgYXJlIHNpbGVudGx5IHN5bmNocm9uaXplZCBpbiB0aGUgYmFja2dyb3VuZCwKZWxpbWlu YXRpbmcgdGhlIG5lZWQgdG8gcnVuIFJFRlJFU0ggU0VRVUVOQ0VTIGZvciB0aGUgbWFqb3JpdHkg b2YgY2FzZXMuCgpIb3dldmVyLCBmcmVxdWVudGx5IHVwZGF0ZWQgc2VxdWVuY2VzIG1heSBzdGls bCBsYWcgYmVoaW5kLCByZXF1aXJpbmcgYSBmaW5hbApSRUZSRVNIIFNFUVVFTkNFUyBiZWZvcmUg dXBncmFkZSBjb21wbGV0aW9uLiBVc2VycyBjYW4gbW9uaXRvciBwcm9ncmVzcyBieQpjaGVja2lu ZyB3aGV0aGVyIHNlcXVlbmNlIHN0YXRlcyB0cmFuc2l0aW9uIGZyb20gSU5JVCB0byBSRUFEWSBp bgpwZ19zdWJzY3JpcHRpb25fcmVsLgoKVGhlIFJFRlJFU0ggU0VRVUVOQ0VTIGNvbW1hbmQgaXMg cmV0YWluZWQgZm9yIHRoaXMgZmluYWwgc3luY2hyb25pemF0aW9uIHN0ZXAsCnRob3VnaCBpdCBj dXJyZW50bHkgdXBkYXRlcyBhbGwgc2VxdWVuY2Ugc3RhdGVzIHRvIElOSVQsIHdoaWNoIGhhcyBy b29tIGZvcgppbXByb3ZlbWVudC4gQSBmdXR1cmUgcGF0Y2ggd2lsbCBlbmhhbmNlIHRoaXMgY29t bWFuZCB0byBzeW5jaHJvbml6ZSBzZXF1ZW5jZXMKZGlyZWN0bHkgd2l0aG91dCBsYXVuY2hpbmcg YSB3b3JrZXIsIHJlZHVjaW5nIGNhdGFsb2cgb3ZlcmhlYWQuCgpBdXRob3I6IEFqaW4gQ2hlcmlh biA8aXRzYWppbkBnbWFpbC5jb20+CkF1dGhvcjogWmhpamllIEhvdSA8aG91emouZm5zdEBmdWpp dHN1LmNvbT4KUmV2aWV3ZWQtYnk6IFNodmV0YSBNYWxpayA8c2h2ZXRhLm1hbGlrQGdtYWlsLmNv bT4KUmV2aWV3ZWQtYnk6IFBldGVyIFNtaXRoIDxzbWl0aHBiMjI1MEBnbWFpbC5jb20+ClJldmll d2VkLWJ5OiBBc2h1dG9zaCBTaGFybWEgPGFzaHUuY29lazg4QGdtYWlsLmNvbT4KUmV2aWV3ZWQt Ynk6IEFtaXQgS2FwaWxhIDxhbWl0LmthcGlsYTE2QGdtYWlsLmNvbT4KLS0tCiBkb2Mvc3JjL3Nn bWwvbG9naWNhbC1yZXBsaWNhdGlvbi5zZ21sICAgICAgICAgfCAgMjMgKy0KIGRvYy9zcmMvc2dt bC9yZWYvYWx0ZXJfc3Vic2NyaXB0aW9uLnNnbWwgICAgICB8ICAgNSAtCiBzcmMvYmFja2VuZC9j b21tYW5kcy9zZXF1ZW5jZS5jICAgICAgICAgICAgICAgfCAgMjkgKysKIC4uLi9yZXBsaWNhdGlv bi9sb2dpY2FsL3NlcXVlbmNlc3luYy5jICAgICAgICB8IDM3MyArKysrKysrKysrKysrLS0tLS0K IHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvc3luY3V0aWxzLmMgICB8ICA0NyArLS0K IHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMgICAgICB8ICAxMSArCiBz cmMvaW5jbHVkZS9jYXRhbG9nL3BnX3N1YnNjcmlwdGlvbl9yZWwuaCAgICAgfCAgIDEgKwogc3Jj L2luY2x1ZGUvY29tbWFuZHMvc2VxdWVuY2UuaCAgICAgICAgICAgICAgIHwgICAxICsKIHNyYy9p bmNsdWRlL3JlcGxpY2F0aW9uL3dvcmtlcl9pbnRlcm5hbC5oICAgICB8ICAgMiArLQogc3JjL3Rl c3Qvc3Vic2NyaXB0aW9uL3QvMDI2X3N0YXRzLnBsICAgICAgICAgIHwgICAyICsKIHNyYy90ZXN0 L3N1YnNjcmlwdGlvbi90LzAzNl9zZXF1ZW5jZXMucGwgICAgICB8ICA3OSArLS0tCiAxMSBmaWxl cyBjaGFuZ2VkLCAzNjkgaW5zZXJ0aW9ucygrKSwgMjA0IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdp dCBhL2RvYy9zcmMvc2dtbC9sb2dpY2FsLXJlcGxpY2F0aW9uLnNnbWwgYi9kb2Mvc3JjL3NnbWwv bG9naWNhbC1yZXBsaWNhdGlvbi5zZ21sCmluZGV4IDUwMjhmZTlhZjA5Li5iYjUyM2FmNWQzNyAx MDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL2xvZ2ljYWwtcmVwbGljYXRpb24uc2dtbAorKysgYi9k b2Mvc3JjL3NnbWwvbG9naWNhbC1yZXBsaWNhdGlvbi5zZ21sCkBAIC0xNzg3LDggKzE3ODcsOSBA QCBQdWJsaWNhdGlvbnM6CiAKICAgPHBhcmE+CiAgICBBIDxmaXJzdHRlcm0+c2VxdWVuY2Ugc3lu Y2hyb25pemF0aW9uIHdvcmtlcjwvZmlyc3R0ZXJtPiB3aWxsIGJlIHN0YXJ0ZWQKLSAgIGFmdGVy IGV4ZWN1dGluZyBhbnkgb2YgdGhlIGFib3ZlIHN1YnNjcmliZXIgY29tbWFuZHMsIGFuZCB3aWxs IGV4aXQgb25jZSB0aGUKLSAgIHNlcXVlbmNlcyBhcmUgc3luY2hyb25pemVkLgorICAgYWZ0ZXIg ZXhlY3V0aW5nIGFueSBvZiB0aGUgYWJvdmUgc3Vic2NyaWJlciBjb21tYW5kcy4gVGhlIHdvcmtl ciB3aWxsCisgICByZW1haW4gcnVubmluZyBmb3IgdGhlIGxpZmUgb2YgdGhlIHN1YnNjcmlwdGlv biwgcGVyaW9kaWNhbGx5CisgICBzeW5jaHJvbml6aW5nIGFsbCBwdWJsaXNoZWQgc2VxdWVuY2Vz LgogICA8L3BhcmE+CiAgIDxwYXJhPgogICAgVGhlIGFiaWxpdHkgdG8gbGF1bmNoIGEgc2VxdWVu Y2Ugc3luY2hyb25pemF0aW9uIHdvcmtlciBpcyBsaW1pdGVkIGJ5IHRoZQpAQCAtMTgxNyw3ICsx ODE4LDcgQEAgUHVibGljYXRpb25zOgogICA8c2VjdDIgaWQ9InNlcXVlbmNlcy1vdXQtb2Ytc3lu YyI+CiAgICA8dGl0bGU+UmVmcmVzaGluZyBPdXQtb2YtU3luYyBTZXF1ZW5jZXM8L3RpdGxlPgog ICAgPHBhcmE+Ci0gICAgU3Vic2NyaWJlciBzZXF1ZW5jZSB2YWx1ZXMgd2lsbCBiZWNvbWUgb3V0 IG9mIHN5bmMgYXMgdGhlIHB1Ymxpc2hlcgorICAgIFN1YnNjcmliZXIgc2VxdWVuY2UgdmFsdWVz IGNhbiBiZWNvbWUgb3V0IG9mIHN5bmMgYXMgdGhlIHB1Ymxpc2hlcgogICAgIGFkdmFuY2VzIHRo ZW0uCiAgICA8L3BhcmE+CiAgICA8cGFyYT4KQEAgLTIzMzUsMTUgKzIzMzYsMTMgQEAgQ09OVEVY VDogIHByb2Nlc3NpbmcgcmVtb3RlIGRhdGEgZm9yIHJlcGxpY2F0aW9uIG9yaWdpbiAicGdfMTYz OTUiIGR1cmluZyAiSU5TRVIKIAogICAgPGxpc3RpdGVtPgogICAgIDxwYXJhPgotICAgICBJbmNy ZW1lbnRhbCBzZXF1ZW5jZSBjaGFuZ2VzIGFyZSBub3QgcmVwbGljYXRlZC4gIEFsdGhvdWdoIHRo ZSBkYXRhIGluCi0gICAgIHNlcmlhbCBvciBpZGVudGl0eSBjb2x1bW5zIGJhY2tlZCBieSBzZXF1 ZW5jZXMgd2lsbCBiZSByZXBsaWNhdGVkIGFzIHBhcnQKLSAgICAgb2YgdGhlIHRhYmxlLCB0aGUg c2VxdWVuY2VzIHRoZW1zZWx2ZXMgZG8gbm90IHJlcGxpY2F0ZSBvbmdvaW5nIGNoYW5nZXMuCi0g ICAgIE9uIHRoZSBzdWJzY3JpYmVyLCBhIHNlcXVlbmNlIHdpbGwgcmV0YWluIHRoZSBsYXN0IHZh bHVlIGl0IHN5bmNocm9uaXplZAotICAgICBmcm9tIHRoZSBwdWJsaXNoZXIuIElmIHRoZSBzdWJz Y3JpYmVyIGlzIHVzZWQgYXMgYSByZWFkLW9ubHkgZGF0YWJhc2UsCi0gICAgIHRoZW4gdGhpcyBz aG91bGQgdHlwaWNhbGx5IG5vdCBiZSBhIHByb2JsZW0uICBJZiwgaG93ZXZlciwgc29tZSBraW5k IG9mCi0gICAgIHN3aXRjaG92ZXIgb3IgZmFpbG92ZXIgdG8gdGhlIHN1YnNjcmliZXIgZGF0YWJh c2UgaXMgaW50ZW5kZWQsIHRoZW4gdGhlCi0gICAgIHNlcXVlbmNlcyB3b3VsZCBuZWVkIHRvIGJl IHVwZGF0ZWQgdG8gdGhlIGxhdGVzdCB2YWx1ZXMsIGVpdGhlciBieQotICAgICBleGVjdXRpbmcg PGxpbmsgbGlua2VuZD0ic3FsLWFsdGVyc3Vic2NyaXB0aW9uLXBhcmFtcy1yZWZyZXNoLXNlcXVl bmNlcyI+CisgICAgIEluY3JlbWVudGFsIHNlcXVlbmNlIGNoYW5nZXMgYXJlIGNvbnRpbnVvdXNs eSByZXBsaWNhdGVkLiBJZiwgaG93ZXZlciwKKyAgICAgc29tZSBraW5kIG9mIHN3aXRjaG92ZXIg b3IgZmFpbG92ZXIgdG8gdGhlIHN1YnNjcmliZXIgZGF0YWJhc2UgaXMKKyAgICAgaW50ZW5kZWQs IHRoZW4gdGhlIHNlcXVlbmNlcyByZXBsaWNhdGlvbiBjb3VsZCBiZSBsYWdnaW5nIGJlaGluZCBh bmQKKyAgICAgdGhlIHNlcXVlbmNlcyBvbiB0aGUgc3Vic2NyaWJlciBzaG91bGQgYmUgY29tcGFy ZWQgd2l0aCB0aGF0IG9mIHRoZQorICAgICBwdWJsaXNoZXIgdG8gbWFrZSBzdXJlIHRoYXQgdGhl eSBhcmUgdXAgdG8gZGF0ZSwgaWYgbm90IHRoZXkKKyAgICAgbmVlZCB0byBiZSB1cGRhdGVkIHRv IHRoZSBsYXRlc3QgdmFsdWVzLCBlaXRoZXIgYnkgZXhlY3V0aW5nCisgICAgIDxsaW5rIGxpbmtl bmQ9InNxbC1hbHRlcnN1YnNjcmlwdGlvbi1wYXJhbXMtcmVmcmVzaC1zZXF1ZW5jZXMiPgogICAg ICA8Y29tbWFuZD5BTFRFUiBTVUJTQ1JJUFRJT04gLi4uIFJFRlJFU0ggU0VRVUVOQ0VTPC9jb21t YW5kPjwvbGluaz4KICAgICAgb3IgYnkgY29weWluZyB0aGUgY3VycmVudCBkYXRhIGZyb20gdGhl IHB1Ymxpc2hlciAocGVyaGFwcyB1c2luZwogICAgICA8Y29tbWFuZD5wZ19kdW1wPC9jb21tYW5k Pikgb3IgYnkgZGV0ZXJtaW5pbmcgYSBzdWZmaWNpZW50bHkgaGlnaCB2YWx1ZQpkaWZmIC0tZ2l0 IGEvZG9jL3NyYy9zZ21sL3JlZi9hbHRlcl9zdWJzY3JpcHRpb24uc2dtbCBiL2RvYy9zcmMvc2dt bC9yZWYvYWx0ZXJfc3Vic2NyaXB0aW9uLnNnbWwKaW5kZXggNTMxODk5OGU4MGMuLjVhN2I0ZjNj MmMyIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVmL2FsdGVyX3N1YnNjcmlwdGlvbi5zZ21s CisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvYWx0ZXJfc3Vic2NyaXB0aW9uLnNnbWwKQEAgLTE5MCwx MSArMTkwLDYgQEAgQUxURVIgU1VCU0NSSVBUSU9OIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1l dGVyIj5uYW1lPC9yZXBsYWNlYWJsZT4gUkVOQU1FIFRPIDwKICAgICAgICAgICBQcmV2aW91c2x5 IHN1YnNjcmliZWQgdGFibGVzIGFyZSBub3QgY29waWVkLCBldmVuIGlmIGEgdGFibGUncyByb3cK ICAgICAgICAgICBmaWx0ZXIgPGxpdGVyYWw+V0hFUkU8L2xpdGVyYWw+IGNsYXVzZSBoYXMgc2lu Y2UgYmVlbiBtb2RpZmllZC4KICAgICAgICAgIDwvcGFyYT4KLSAgICAgICAgIDxwYXJhPgotICAg ICAgICAgIFByZXZpb3VzbHkgc3Vic2NyaWJlZCBzZXF1ZW5jZXMgYXJlIG5vdCByZS1zeW5jaHJv bml6ZWQuIFRvIGRvIHRoYXQsCi0gICAgICAgICAgdXNlIDxsaW5rIGxpbmtlbmQ9InNxbC1hbHRl cnN1YnNjcmlwdGlvbi1wYXJhbXMtcmVmcmVzaC1zZXF1ZW5jZXMiPgotICAgICAgICAgIDxjb21t YW5kPkFMVEVSIFNVQlNDUklQVElPTiAuLi4gUkVGUkVTSCBTRVFVRU5DRVM8L2NvbW1hbmQ+PC9s aW5rPi4KLSAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDxwYXJhPgogICAgICAgICAgIFNlZSA8 eHJlZiBsaW5rZW5kPSJzZXF1ZW5jZS1kZWZpbml0aW9uLW1pc21hdGNoZXMiLz4gZm9yIHJlY29t bWVuZGF0aW9ucyBvbiBob3cKICAgICAgICAgICB0byBoYW5kbGUgYW55IHdhcm5pbmdzIGFib3V0 IHNlcXVlbmNlIGRlZmluaXRpb24gZGlmZmVyZW5jZXMgYmV0d2VlbgpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvY29tbWFuZHMvc2VxdWVuY2UuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3NlcXVl bmNlLmMKaW5kZXggZTFiODA4YmJiNjAuLmFjNWEwMTk3ZTFjIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9jb21tYW5kcy9zZXF1ZW5jZS5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3NlcXVl bmNlLmMKQEAgLTkyOSw2ICs5MjksMzUgQEAgbGFzdHZhbChQR19GVU5DVElPTl9BUkdTKQogCVBH X1JFVFVSTl9JTlQ2NChyZXN1bHQpOwogfQogCisvKgorICogUmVhZCB0aGUgY3VycmVudCBzZXF1 ZW5jZSB2YWx1ZXMgKGxhc3RfdmFsdWUgYW5kIGlzX2NhbGxlZCkKKyAqCisgKiBUaGlzIGlzIGEg cmVhZC1vbmx5IG9wZXJhdGlvbiB1c2VkIGJ5IGxvZ2ljYWwgcmVwbGljYXRpb24gc2VxdWVuY2UK KyAqIHN5bmNocm9uaXphdGlvbiB0byBkZXRlY3QgZHJpZnQuIFRoZSBjYWxsZXIgbXVzdCBob2xk IGEgbG9jayBvbiB0aGUgc2VxdWVuY2UKKyAqIGFuZCBoYXZlIHN1ZmZpY2llbnQgcHJpdmlsZWdl cyB0byBhY2Nlc3MgaXQuCisgKi8KK3ZvaWQKK0dldFNlcXVlbmNlKFJlbGF0aW9uIHNlcXJlbCwg aW50NjQgKmxhc3RfdmFsdWUsIGJvb2wgKmlzX2NhbGxlZCkKK3sKKwlCdWZmZXIJCWJ1ZjsKKwlI ZWFwVHVwbGVEYXRhIHNlcXR1cGxlOworCUZvcm1fcGdfc2VxdWVuY2VfZGF0YSBzZXE7CisKKwkv KiBDb25maXJtIHRoYXQgdGhlIHJlbGF0aW9uIGlzIGEgc2VxdWVuY2UgYW5kIGlzIGxvY2tlZCAq LworCUFzc2VydChzZXFyZWwtPnJkX3JlbC0+cmVsa2luZCA9PSBSRUxLSU5EX1NFUVVFTkNFKTsK KwlBc3NlcnQoQ2hlY2tSZWxhdGlvbkxvY2tlZEJ5TWUoc2VxcmVsLCBBY2Nlc3NTaGFyZUxvY2ss IHRydWUpKTsKKworCS8qIFJlYWQgdGhlIHNlcXVlbmNlIHR1cGxlICovCisJc2VxID0gcmVhZF9z ZXFfdHVwbGUoc2VxcmVsLCAmYnVmLCAmc2VxdHVwbGUpOworCisJLyogRXh0cmFjdCB0aGUgdmFs dWVzICovCisJKmxhc3RfdmFsdWUgPSBzZXEtPmxhc3RfdmFsdWU7CisJKmlzX2NhbGxlZCA9IHNl cS0+aXNfY2FsbGVkOworCisJLyogUmVsZWFzZSBidWZmZXIgKi8KKwlVbmxvY2tSZWxlYXNlQnVm ZmVyKGJ1Zik7Cit9CisKIC8qCiAgKiBNYWluIGludGVybmFsIHByb2NlZHVyZSB0aGF0IGhhbmRs ZXMgMiAmIDMgYXJnIGZvcm1zIG9mIFNFVFZBTC4KICAqCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3NlcXVlbmNlc3luYy5jIGIvc3JjL2JhY2tlbmQvcmVwbGlj YXRpb24vbG9naWNhbC9zZXF1ZW5jZXN5bmMuYwppbmRleCA5YzkyZmRkZDYyNC4uN2RmODcxYWU3 YmMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvc2VxdWVuY2Vz eW5jLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9zZXF1ZW5jZXN5bmMu YwpAQCAtMTksMTAgKzE5LDYgQEAKICAqIENSRUFURSBTVUJTQ1JJUFRJT04KICAqIEFMVEVSIFNV QlNDUklQVElPTiAuLi4gUkVGUkVTSCBQVUJMSUNBVElPTgogICoKLSAqIEV4ZWN1dGluZyB0aGUg Zm9sbG93aW5nIGNvbW1hbmQgcmVzZXRzIGFsbCBzZXF1ZW5jZXMgaW4gdGhlIHN1YnNjcmlwdGlv biB0bwotICogc3RhdGUgSU5JVCwgdHJpZ2dlcmluZyByZS1zeW5jaHJvbml6YXRpb246Ci0gKiBB TFRFUiBTVUJTQ1JJUFRJT04gLi4uIFJFRlJFU0ggU0VRVUVOQ0VTCi0gKgogICogVGhlIGFwcGx5 IHdvcmtlciBwZXJpb2RpY2FsbHkgc2NhbnMgcGdfc3Vic2NyaXB0aW9uX3JlbCBmb3Igc2VxdWVu Y2VzIGluCiAgKiBJTklUIHN0YXRlLiBXaGVuIHN1Y2ggc2VxdWVuY2VzIGFyZSBmb3VuZCwgaXQg c3Bhd25zIGEgc2VxdWVuY2VzeW5jIHdvcmtlcgogICogdG8gaGFuZGxlIHN5bmNocm9uaXphdGlv bi4KQEAgLTM2LDggKzMyLDI0IEBACiAgKiBsb2NhbCBzdWJzY3JpYmVyLCBhbmQgZmluYWxseSBt YXJrcyBlYWNoIHNlcXVlbmNlIGFzIFJFQURZIHVwb24gc3VjY2Vzc2Z1bAogICogc3luY2hyb25p emF0aW9uLgogICoKKyAqIFRoZSBzZXF1ZW5jZXN5bmMgd29ya2VyIHRoZW4gZmV0Y2hlcyBhbGwg c2VxdWVuY2VzIHRoYXQgYXJlCisgKiBpbiB0aGUgUkVBRFkgc3RhdGUsIHF1ZXJpZXMgdGhlIHB1 Ymxpc2hlciBmb3IgY3VycmVudCBzZXF1ZW5jZSB2YWx1ZXMsIGFuZAorICogdXBkYXRlcyBhbnkg c2VxdWVuY2VzIHRoYXQgaGF2ZSBkcmlmdGVkIGFuZCB0aGVuIGdvZXMgdG8gc2xlZXAuIFRoZSBz bGVlcAorICogaW50ZXJ2YWwgc3RhcnRzIGFzIFNFUVNZTkNfTUlOX1NMRUVQX01TIGFuZCBkb3Vi bGVzIGFmdGVyIGVhY2ggd2FrZSBjeWNsZQorICogKHVwIHRvIFNFUVNZTkNfTUFYX1NMRUVQX01T KS4gV2hlbiBkcmlmdCBpcyBkZXRlY3RlZCwgdGhlIGludGVydmFsIHJlc2V0cyB0bworICogdGhl IG1pbmltdW0gdG8gZW5zdXJlIHRpbWVseSB1cGRhdGVzLgorICoKKyAqIEFmdGVyIENSRUFURSBT VUJTQ1JJUFRJT04sIHNlcXVlbmNlcyBiZWdpbiBpbiB0aGUgSU5JVCBzdGF0ZS4gU2VxdWVuY2Vz CisgKiBhZGRlZCB0aHJvdWdoIEFMVEVSIFNVQlNDUklQVElPTi4uIFJFRlJFU0ggUFVCTElDQVRJ T04gYWxzbyBzdGFydCBpbiB0aGUgSU5JVAorICogc3RhdGUuIEFsbCBJTklUIHNlcXVlbmNlcyBh cmUgc3luY2hyb25pemVkIHVuY29uZGl0aW9uYWxseSwgdGhlbiB0cmFuc2l0aW9uCisgKiB0byB0 aGUgUkVBRFkgc3RhdGUuIE9uY2UgaW4gdGhlIFJFQURZIHN0YXRlLCBzZXF1ZW5jZXMgYXJlIGNo ZWNrZWQgZm9yIGRyaWZ0CisgKiBmcm9tIHRoZSBwdWJsaXNoZXIgYW5kIHN5bmNocm9uaXplZCBv bmx5IHdoZW4gZHJpZnQgaXMgZGV0ZWN0ZWQuCisgKgogICogU2VxdWVuY2Ugc3RhdGUgdHJhbnNp dGlvbnMgZm9sbG93IHRoaXMgcGF0dGVybjoKLSAqICAgSU5JVCAtPiBSRUFEWQorICogIElOSVQg LS0+IFJFQURZIC0+LSsKKyAqICAgICAgICAgICAgIF4gICAgICB8IChjaGVjay9zeW5jaHJvbml6 ZSkKKyAqICAgICAgICAgICAgIHwgICAgICB8CisgKiAgICAgICAgICAgICArLS08LS0tKwogICoK ICAqIFRvIGF2b2lkIGNyZWF0aW5nIHRvbyBtYW55IHRyYW5zYWN0aW9ucywgdXAgdG8gTUFYX1NF UVVFTkNFU19TWU5DX1BFUl9CQVRDSAogICogc2VxdWVuY2VzIGFyZSBzeW5jaHJvbml6ZWQgcGVy IHRyYW5zYWN0aW9uLiBUaGUgbG9ja3Mgb24gdGhlIHNlcXVlbmNlCkBAIC03OCwyMyArOTAsMzUg QEAgdHlwZWRlZiBlbnVtIENvcHlTZXFSZXN1bHQKIAlDT1BZU0VRX1NVQ0NFU1MsCiAJQ09QWVNF UV9NSVNNQVRDSCwKIAlDT1BZU0VRX0lOU1VGRklDSUVOVF9QRVJNLAotCUNPUFlTRVFfU0tJUFBF RAorCUNPUFlTRVFfU0tJUFBFRCwKKwlDT1BZU0VRX05PX0RSSUZULAogfSBDb3B5U2VxUmVzdWx0 OwogCi1zdGF0aWMgTGlzdCAqc2VxaW5mb3MgPSBOSUw7CisvKiBTbGVlcCBpbnRlcnZhbHMgZm9y IHN5bmMgKi8KKyNkZWZpbmUgU0VRU1lOQ19NSU5fU0xFRVBfTVMgMjAwMAkvKiAyIHNlY29uZHMg Ki8KKyNkZWZpbmUgU0VRU1lOQ19NQVhfU0xFRVBfTVMgMzAwMDAJLyogMzAgc2Vjb25kcyAqLwor CitzdGF0aWMgbG9uZyBzbGVlcF9tcyA9IFNFUVNZTkNfTUlOX1NMRUVQX01TOworCitzdGF0aWMg TWVtb3J5Q29udGV4dCBTZXF1ZW5jZVN5bmNDb250ZXh0ID0gTlVMTDsKIAogLyoKLSAqIEFwcGx5 IHdvcmtlciBkZXRlcm1pbmVzIGlmIHNlcXVlbmNlIHN5bmNocm9uaXphdGlvbiBpcyBuZWVkZWQu CisgKiBBcHBseSB3b3JrZXIgZGV0ZXJtaW5lcyB3aGV0aGVyIGEgc2VxdWVuY2Ugc3luYyB3b3Jr ZXIgaXMgbmVlZGVkLgorICoKKyAqIENoZWNrIGlmIHRoZSBzdWJzY3JpcHRpb24gaW5jbHVkZXMg c2VxdWVuY2VzIGFuZCBzdGFydCBhIHNlcXVlbmNlc3luYworICogd29ya2VyIGlmIG9uZSBpcyBu b3QgYWxyZWFkeSBydW5uaW5nLiBUaGUgYWN0aXZlIHNlcXVlbmNlc3luYyB3b3JrZXIgd2lsbAor ICogaGFuZGxlIGFsbCBwZW5kaW5nIHNlcXVlbmNlIHN5bmNocm9uaXphdGlvbi4gSWYgYW55IHNl cXVlbmNlcyByZW1haW4KKyAqIHVuc3luY2hyb25pemVkIGFmdGVyIGl0IGV4aXRzLCBhIG5ldyB3 b3JrZXIgY2FuIGJlIHN0YXJ0ZWQgaW4gdGhlIG5leHQKKyAqIGl0ZXJhdGlvbi4KICAqCi0gKiBT dGFydCBhIHNlcXVlbmNlc3luYyB3b3JrZXIgaWYgb25lIGlzIG5vdCBhbHJlYWR5IHJ1bm5pbmcu IFRoZSBhY3RpdmUKLSAqIHNlcXVlbmNlc3luYyB3b3JrZXIgd2lsbCBoYW5kbGUgYWxsIHBlbmRp bmcgc2VxdWVuY2Ugc3luY2hyb25pemF0aW9uLiBJZiBhbnkKLSAqIHNlcXVlbmNlcyByZW1haW4g dW5zeW5jaHJvbml6ZWQgYWZ0ZXIgaXQgZXhpdHMsIGEgbmV3IHdvcmtlciBjYW4gYmUgc3RhcnRl ZAotICogaW4gdGhlIG5leHQgaXRlcmF0aW9uLgorICogVGhlIHBvaW50ZXIgdG8gdGhlIHNlcXVl bmNlc3luYyB3b3JrZXIgaXMgY2FjaGVkIHRvIGF2b2lkIHNjYW5uaW5nIHRoZQorICogd29ya2Vy cyBhcnJheSBlYWNoIHRpbWUgdmlhIGxvZ2ljYWxyZXBfd29ya2VyX2ZpbmQoKS4KICAqLwogdm9p ZAotUHJvY2Vzc1NlcXVlbmNlc0ZvclN5bmModm9pZCkKK01heWJlTGF1bmNoU2VxdWVuY2VTeW5j V29ya2VyKHZvaWQpCiB7Ci0JTG9naWNhbFJlcFdvcmtlciAqc2VxdWVuY2VzeW5jX3dvcmtlcjsK KwlzdGF0aWMgTG9naWNhbFJlcFdvcmtlciAqc2VxdWVuY2VzeW5jX3dvcmtlciA9IE5VTEw7CisK IAlpbnQJCQluc3luY3dvcmtlcnM7CiAJYm9vbAkJaGFzX3BlbmRpbmdfc2VxdWVuY2VzOwogCWJv b2wJCXN0YXJ0ZWRfdHg7CkBAIC0xMTIsNiArMTM2LDE5IEBAIFByb2Nlc3NTZXF1ZW5jZXNGb3JT eW5jKHZvaWQpCiAKIAlMV0xvY2tBY3F1aXJlKExvZ2ljYWxSZXBXb3JrZXJMb2NrLCBMV19TSEFS RUQpOwogCisJLyoKKwkgKiBRdWljayBleGl0IGlmIHRoZSBzZXF1ZW5jZSBzeW5jIHdvcmtlciBm b3IgdGhlIGN1cnJlbnQgc3Vic2NyaXB0aW9uIGlzCisJICogYWxyZWFkeSBhbGl2ZS4KKwkgKi8K KwlpZiAoc2VxdWVuY2VzeW5jX3dvcmtlciAmJgorCQlzZXF1ZW5jZXN5bmNfd29ya2VyLT5wcm9j ICYmCisJCWlzU2VxdWVuY2VTeW5jV29ya2VyKHNlcXVlbmNlc3luY193b3JrZXIpICYmCisJCXNl cXVlbmNlc3luY193b3JrZXItPnN1YmlkID09IE15TG9naWNhbFJlcFdvcmtlci0+c3ViaWQpCisJ eworCQlMV0xvY2tSZWxlYXNlKExvZ2ljYWxSZXBXb3JrZXJMb2NrKTsKKwkJcmV0dXJuOworCX0K KwogCS8qIENoZWNrIGlmIHRoZXJlIGlzIGEgc2VxdWVuY2VzeW5jIHdvcmtlciBhbHJlYWR5IHJ1 bm5pbmc/ICovCiAJc2VxdWVuY2VzeW5jX3dvcmtlciA9IGxvZ2ljYWxyZXBfd29ya2VyX2ZpbmQo V09SS0VSVFlQRV9TRVFVRU5DRVNZTkMsCiAJCQkJCQkJCQkJCQkgTXlMb2dpY2FsUmVwV29ya2Vy LT5zdWJpZCwKQEAgLTE0NCw3ICsxODEsNyBAQCBQcm9jZXNzU2VxdWVuY2VzRm9yU3luYyh2b2lk KQogICogZm9yIHRoZSBnaXZlbiBsaXN0IG9mIHNlcXVlbmNlIGluZGV4ZXMuCiAgKi8KIHN0YXRp YyB2b2lkCi1nZXRfc2VxdWVuY2VzX3N0cmluZyhMaXN0ICpzZXFpbmRleGVzLCBTdHJpbmdJbmZv IGJ1ZikKK2dldF9zZXF1ZW5jZXNfc3RyaW5nKExpc3QgKnNlcWluZGV4ZXMsIExpc3QgKnNlcWlu Zm9zLCBTdHJpbmdJbmZvIGJ1ZikKIHsKIAlyZXNldFN0cmluZ0luZm8oYnVmKTsKIAlmb3JlYWNo X2ludChzZXFpZHgsIHNlcWluZGV4ZXMpCkBAIC0xNzEsNyArMjA4LDcgQEAgZ2V0X3NlcXVlbmNl c19zdHJpbmcoTGlzdCAqc2VxaW5kZXhlcywgU3RyaW5nSW5mbyBidWYpCiAgKi8KIHN0YXRpYyB2 b2lkCiByZXBvcnRfc2VxdWVuY2VfZXJyb3JzKExpc3QgKm1pc21hdGNoZWRfc2Vxc19pZHgsIExp c3QgKmluc3VmZnBlcm1fc2Vxc19pZHgsCi0JCQkJCSAgIExpc3QgKm1pc3Npbmdfc2Vxc19pZHgp CisJCQkJCSAgIExpc3QgKm1pc3Npbmdfc2Vxc19pZHgsIExpc3QgKnNlcWluZm9zKQogewogCVN0 cmluZ0luZm8Jc2Vxc3RyOwogCkBAIC0xODMsNyArMjIwLDcgQEAgcmVwb3J0X3NlcXVlbmNlX2Vy cm9ycyhMaXN0ICptaXNtYXRjaGVkX3NlcXNfaWR4LCBMaXN0ICppbnN1ZmZwZXJtX3NlcXNfaWR4 LAogCiAJaWYgKG1pc21hdGNoZWRfc2Vxc19pZHgpCiAJewotCQlnZXRfc2VxdWVuY2VzX3N0cmlu ZyhtaXNtYXRjaGVkX3NlcXNfaWR4LCBzZXFzdHIpOworCQlnZXRfc2VxdWVuY2VzX3N0cmluZyht aXNtYXRjaGVkX3NlcXNfaWR4LCBzZXFpbmZvcywgc2Vxc3RyKTsKIAkJZXJlcG9ydChXQVJOSU5H LAogCQkJCWVycmNvZGUoRVJSQ09ERV9PQkpFQ1RfTk9UX0lOX1BSRVJFUVVJU0lURV9TVEFURSks CiAJCQkJZXJybXNnX3BsdXJhbCgibWlzbWF0Y2hlZCBvciByZW5hbWVkIHNlcXVlbmNlIG9uIHN1 YnNjcmliZXIgKCVzKSIsCkBAIC0xOTQsNyArMjMxLDcgQEAgcmVwb3J0X3NlcXVlbmNlX2Vycm9y cyhMaXN0ICptaXNtYXRjaGVkX3NlcXNfaWR4LCBMaXN0ICppbnN1ZmZwZXJtX3NlcXNfaWR4LAog CiAJaWYgKGluc3VmZnBlcm1fc2Vxc19pZHgpCiAJewotCQlnZXRfc2VxdWVuY2VzX3N0cmluZyhp bnN1ZmZwZXJtX3NlcXNfaWR4LCBzZXFzdHIpOworCQlnZXRfc2VxdWVuY2VzX3N0cmluZyhpbnN1 ZmZwZXJtX3NlcXNfaWR4LCBzZXFpbmZvcywgc2Vxc3RyKTsKIAkJZXJlcG9ydChXQVJOSU5HLAog CQkJCWVycmNvZGUoRVJSQ09ERV9PQkpFQ1RfTk9UX0lOX1BSRVJFUVVJU0lURV9TVEFURSksCiAJ CQkJZXJybXNnX3BsdXJhbCgiaW5zdWZmaWNpZW50IHByaXZpbGVnZXMgb24gc2VxdWVuY2UgKCVz KSIsCkBAIC0yMDUsNyArMjQyLDcgQEAgcmVwb3J0X3NlcXVlbmNlX2Vycm9ycyhMaXN0ICptaXNt YXRjaGVkX3NlcXNfaWR4LCBMaXN0ICppbnN1ZmZwZXJtX3NlcXNfaWR4LAogCiAJaWYgKG1pc3Np bmdfc2Vxc19pZHgpCiAJewotCQlnZXRfc2VxdWVuY2VzX3N0cmluZyhtaXNzaW5nX3NlcXNfaWR4 LCBzZXFzdHIpOworCQlnZXRfc2VxdWVuY2VzX3N0cmluZyhtaXNzaW5nX3NlcXNfaWR4LCBzZXFp bmZvcywgc2Vxc3RyKTsKIAkJZXJlcG9ydChXQVJOSU5HLAogCQkJCWVycmNvZGUoRVJSQ09ERV9P QkpFQ1RfTk9UX0lOX1BSRVJFUVVJU0lURV9TVEFURSksCiAJCQkJZXJybXNnX3BsdXJhbCgibWlz c2luZyBzZXF1ZW5jZSBvbiBwdWJsaXNoZXIgKCVzKSIsCkBAIC0yMjksNyArMjY2LDggQEAgcmVw b3J0X3NlcXVlbmNlX2Vycm9ycyhMaXN0ICptaXNtYXRjaGVkX3NlcXNfaWR4LCBMaXN0ICppbnN1 ZmZwZXJtX3NlcXNfaWR4LAogICovCiBzdGF0aWMgQ29weVNlcVJlc3VsdAogZ2V0X2FuZF92YWxp ZGF0ZV9zZXFfaW5mbyhUdXBsZVRhYmxlU2xvdCAqc2xvdCwgUmVsYXRpb24gKnNlcXVlbmNlX3Jl bCwKLQkJCQkJCSAgTG9naWNhbFJlcFNlcXVlbmNlSW5mbyAqKnNlcWluZm8sIGludCAqc2VxaWR4 KQorCQkJCQkJICBMb2dpY2FsUmVwU2VxdWVuY2VJbmZvICoqc2VxaW5mbywgaW50ICpzZXFpZHgs CisJCQkJCQkgIExpc3QgKnNlcWluZm9zKQogewogCWJvb2wJCWlzbnVsbDsKIAlpbnQJCQljb2wg PSAwOwpAQCAtMzI1LDMyICszNjMsNzcgQEAgZ2V0X2FuZF92YWxpZGF0ZV9zZXFfaW5mbyhUdXBs ZVRhYmxlU2xvdCAqc2xvdCwgUmVsYXRpb24gKnNlcXVlbmNlX3JlbCwKIH0KIAogLyoKLSAqIEFw cGx5IHJlbW90ZSBzZXF1ZW5jZSBzdGF0ZSB0byBsb2NhbCBzZXF1ZW5jZSBhbmQgbWFyayBpdCBh cwotICogc3luY2hyb25pemVkIChSRUFEWSkuCisgKiBQcmVsaW1pbmFyeSBjaGVjayB0byBkZXRl cm1pbmUgaWYgY29weWluZyB0aGUgc2VxdWVuY2UgaXMgYWxsb3dlZC4KICAqLwogc3RhdGljIENv cHlTZXFSZXN1bHQKLWNvcHlfc2VxdWVuY2UoTG9naWNhbFJlcFNlcXVlbmNlSW5mbyAqc2VxaW5m bywgT2lkIHNlcW93bmVyKQordmFsaWRhdGVfc2Vxc3luY19zdGF0ZShMb2dpY2FsUmVwU2VxdWVu Y2VJbmZvICpzZXFpbmZvLCBSZWxhdGlvbiBzZXF1ZW5jZV9yZWwpCiB7Ci0JVXNlckNvbnRleHQg dWN4dDsKIAlBY2xSZXN1bHQJYWNscmVzdWx0OworCU9pZAkJCXNlcW9pZCA9IHNlcWluZm8tPmxv Y2FscmVsaWQ7CisJaW50NjQJCWxvY2FsX2xhc3RfdmFsdWU7CisJYm9vbAkJbG9jYWxfaXNfY2Fs bGVkOworCisJLyogUGVyZm9ybSBkcmlmdCBjaGVjayBpZiBpdCdzIG5vdCB0aGUgaW5pdGlhbCBz eW5jICovCisJaWYgKHNlcWluZm8tPnJlbHN0YXRlID09IFNVQlJFTF9TVEFURV9SRUFEWSkKKwl7 CisJCS8qCisJCSAqIFZlcmlmeSB0aGF0IHRoZSBjdXJyZW50IHVzZXIgaGFzIFNFTEVDVCBwcml2 aWxlZ2Ugb24gdGhlIHNlcXVlbmNlLgorCQkgKiBUaGlzIGlzIHJlcXVpcmVkIHRvIHJlYWQgdGhl IHNlcXVlbmNlIHN0YXRlIGJlbG93LgorCQkgKi8KKwkJYWNscmVzdWx0ID0gcGdfY2xhc3NfYWNs Y2hlY2soc2Vxb2lkLCBHZXRVc2VySWQoKSwgQUNMX1NFTEVDVCk7CisKKwkJaWYgKGFjbHJlc3Vs dCAhPSBBQ0xDSEVDS19PSykKKwkJCXJldHVybiBDT1BZU0VRX0lOU1VGRklDSUVOVF9QRVJNOwor CisJCS8qIEdldCBjdXJyZW50IGxvY2FsIHNlcXVlbmNlIHN0YXRlICovCisJCUdldFNlcXVlbmNl KHNlcXVlbmNlX3JlbCwgJmxvY2FsX2xhc3RfdmFsdWUsICZsb2NhbF9pc19jYWxsZWQpOworCisJ CS8qCisJCSAqIFNraXAgc3luY2hyb25pemF0aW9uIGlmIHRoZSBzZXF1ZW5jZSBpcyBhbHJlYWR5 IGluIFJFQURZIHN0YXRlIGFuZAorCQkgKiBoYXMgbm90IGRyaWZ0ZWQgZnJvbSB0aGUgcHVibGlz aGVyJ3MgdmFsdWUuCisJCSAqLworCQlpZiAobG9jYWxfbGFzdF92YWx1ZSA9PSBzZXFpbmZvLT5s YXN0X3ZhbHVlICYmCisJCQlsb2NhbF9pc19jYWxsZWQgPT0gc2VxaW5mby0+aXNfY2FsbGVkKQor CQkJcmV0dXJuIENPUFlTRVFfTk9fRFJJRlQ7CisJfQorCisJLyogVmVyaWZ5IHRoYXQgdGhlIGN1 cnJlbnQgdXNlciBjYW4gdXBkYXRlIHRoZSBzZXF1ZW5jZSAqLworCWFjbHJlc3VsdCA9IHBnX2Ns YXNzX2FjbGNoZWNrKHNlcW9pZCwgR2V0VXNlcklkKCksIEFDTF9VUERBVEUpOworCisJaWYgKGFj bHJlc3VsdCAhPSBBQ0xDSEVDS19PSykKKwkJcmV0dXJuIENPUFlTRVFfSU5TVUZGSUNJRU5UX1BF Uk07CisKKwlyZXR1cm4gQ09QWVNFUV9TVUNDRVNTOworfQorCisvKgorICogQXBwbHkgcmVtb3Rl IHNlcXVlbmNlIHN0YXRlIHRvIGxvY2FsIHNlcXVlbmNlLiBJZiB3ZSBhcmUgZG9pbmcgdGhpcwor ICogZm9yIHNlcXVlbmNlcyBpbiB0aGUgSU5JVCBzdGF0ZSwgbW92ZSB0aGVtIHRvIHRoZSBSRUFE WSBzdGF0ZSBvbmNlCisgKiBzeW5jaHJvbml6ZWQuCisgKi8KK3N0YXRpYyBDb3B5U2VxUmVzdWx0 Citjb3B5X3NlcXVlbmNlKExvZ2ljYWxSZXBTZXF1ZW5jZUluZm8gKnNlcWluZm8sIFJlbGF0aW9u IHNlcXVlbmNlX3JlbCkKK3sKKwlVc2VyQ29udGV4dCB1Y3h0OwogCWJvb2wJCXJ1bl9hc19vd25l ciA9IE15U3Vic2NyaXB0aW9uLT5ydW5hc293bmVyOwogCU9pZAkJCXNlcW9pZCA9IHNlcWluZm8t PmxvY2FscmVsaWQ7CisJQ29weVNlcVJlc3VsdCByZXN1bHQ7CiAKIAkvKgogCSAqIElmIHRoZSB1 c2VyIGRpZCBub3Qgb3B0IHRvIHJ1biBhcyB0aGUgb3duZXIgb2YgdGhlIHN1YnNjcmlwdGlvbgog CSAqICgncnVuX2FzX293bmVyJyksIHRoZW4gY29weSB0aGUgc2VxdWVuY2UgYXMgdGhlIG93bmVy IG9mIHRoZSBzZXF1ZW5jZS4KIAkgKi8KIAlpZiAoIXJ1bl9hc19vd25lcikKLQkJU3dpdGNoVG9V bnRydXN0ZWRVc2VyKHNlcW93bmVyLCAmdWN4dCk7CisJCVN3aXRjaFRvVW50cnVzdGVkVXNlcihz ZXF1ZW5jZV9yZWwtPnJkX3JlbC0+cmVsb3duZXIsICZ1Y3h0KTsKIAotCWFjbHJlc3VsdCA9IHBn X2NsYXNzX2FjbGNoZWNrKHNlcW9pZCwgR2V0VXNlcklkKCksIEFDTF9VUERBVEUpOworCXJlc3Vs dCA9IHZhbGlkYXRlX3NlcXN5bmNfc3RhdGUoc2VxaW5mbywgc2VxdWVuY2VfcmVsKTsKIAotCWlm IChhY2xyZXN1bHQgIT0gQUNMQ0hFQ0tfT0spCisJaWYgKHJlc3VsdCAhPSBDT1BZU0VRX1NVQ0NF U1MpCiAJewogCQlpZiAoIXJ1bl9hc19vd25lcikKIAkJCVJlc3RvcmVVc2VyQ29udGV4dCgmdWN4 dCk7CiAKLQkJcmV0dXJuIENPUFlTRVFfSU5TVUZGSUNJRU5UX1BFUk07CisJCXJldHVybiByZXN1 bHQ7CiAJfQogCiAJLyoKQEAgLTM2OCwxOSArNDUxLDI2IEBAIGNvcHlfc2VxdWVuY2UoTG9naWNh bFJlcFNlcXVlbmNlSW5mbyAqc2VxaW5mbywgT2lkIHNlcW93bmVyKQogCiAJLyoKIAkgKiBSZWNv cmQgdGhlIHJlbW90ZSBzZXF1ZW5jZSdzIExTTiBpbiBwZ19zdWJzY3JpcHRpb25fcmVsIGFuZCBt YXJrIHRoZQotCSAqIHNlcXVlbmNlIGFzIFJFQURZLgorCSAqIHNlcXVlbmNlIGFzIFJFQURZIGlm IHVwZGF0aW5nIGEgc2VxdWVuY2UgdGhhdCBpcyBpbiBJTklUIHN0YXRlLgogCSAqLwotCVVwZGF0 ZVN1YnNjcmlwdGlvblJlbFN0YXRlKE15U3Vic2NyaXB0aW9uLT5vaWQsIHNlcW9pZCwgU1VCUkVM X1NUQVRFX1JFQURZLAotCQkJCQkJCSAgIHNlcWluZm8tPnBhZ2VfbHNuLCBmYWxzZSk7CisJaWYg KHNlcWluZm8tPnJlbHN0YXRlID09IFNVQlJFTF9TVEFURV9JTklUKQorCQlVcGRhdGVTdWJzY3Jp cHRpb25SZWxTdGF0ZShNeVN1YnNjcmlwdGlvbi0+b2lkLCBzZXFvaWQsIFNVQlJFTF9TVEFURV9S RUFEWSwKKwkJCQkJCQkJICAgc2VxaW5mby0+cGFnZV9sc24sIGZhbHNlKTsKIAogCXJldHVybiBD T1BZU0VRX1NVQ0NFU1M7CiB9CiAKIC8qCiAgKiBDb3B5IGV4aXN0aW5nIGRhdGEgb2Ygc2VxdWVu Y2VzIGZyb20gdGhlIHB1Ymxpc2hlci4KKyAqCisgKiBJZiByZWxzdGF0ZSBpcyBTVUJSRUxfU1RB VEVfUkVBRFksIG9ubHkgc3luY2hyb25pemUgc2VxdWVuY2VzIHRoYXQKKyAqIGhhdmUgZHJpZnRl ZCBmcm9tIHRoZWlyIHB1Ymxpc2hlciB2YWx1ZXMuIE90aGVyd2lzZSwgc3luY2hyb25pemUKKyAq IGFsbCBzZXF1ZW5jZXMuCisgKgorICogUmV0dXJucyB0cnVlL2ZhbHNlIGlmIGFueSBzZXF1ZW5j ZXMgd2VyZSBhY3R1YWxseSBjb3BpZWQuCiAgKi8KLXN0YXRpYyB2b2lkCi1jb3B5X3NlcXVlbmNl cyhXYWxSZWNlaXZlckNvbm4gKmNvbm4pCitzdGF0aWMgYm9vbAorY29weV9zZXF1ZW5jZXMoV2Fs UmVjZWl2ZXJDb25uICpjb25uLCBMaXN0ICpzZXFpbmZvcykKIHsKIAlpbnQJCQljdXJfYmF0Y2hf YmFzZV9pbmRleCA9IDA7CiAJaW50CQkJbl9zZXFpbmZvcyA9IGxpc3RfbGVuZ3RoKHNlcWluZm9z KTsKQEAgLTM5MCwxMyArNDgwLDEwIEBAIGNvcHlfc2VxdWVuY2VzKFdhbFJlY2VpdmVyQ29ubiAq Y29ubikKIAlTdHJpbmdJbmZvCXNlcXN0ciA9IG1ha2VTdHJpbmdJbmZvKCk7CiAJU3RyaW5nSW5m bwljbWQgPSBtYWtlU3RyaW5nSW5mbygpOwogCU1lbW9yeUNvbnRleHQgb2xkY3R4OworCWJvb2wJ CXNlcXVlbmNlX2NvcGllZCA9IGZhbHNlOwogCiAjZGVmaW5lIE1BWF9TRVFVRU5DRVNfU1lOQ19Q RVJfQkFUQ0ggMTAwCiAKLQllbG9nKERFQlVHMSwKLQkJICJsb2dpY2FsIHJlcGxpY2F0aW9uIHNl cXVlbmNlIHN5bmNocm9uaXphdGlvbiBmb3Igc3Vic2NyaXB0aW9uIFwiJXNcIiAtIHRvdGFsIHVu c3luY2hyb25pemVkOiAlZCIsCi0JCSBNeVN1YnNjcmlwdGlvbi0+bmFtZSwgbl9zZXFpbmZvcyk7 Ci0KIAl3aGlsZSAoY3VyX2JhdGNoX2Jhc2VfaW5kZXggPCBuX3NlcWluZm9zKQogCXsKIAkJT2lk CQkJc2VxUm93W1JFTU9URV9TRVFfQ09MX0NPVU5UXSA9IHtJTlQ4T0lELCBJTlQ4T0lELApAQCAt NDA2LDYgKzQ5Myw3IEBAIGNvcHlfc2VxdWVuY2VzKFdhbFJlY2VpdmVyQ29ubiAqY29ubikKIAkJ aW50CQkJYmF0Y2hfbWlzbWF0Y2hlZF9jb3VudCA9IDA7CiAJCWludAkJCWJhdGNoX3NraXBwZWRf Y291bnQgPSAwOwogCQlpbnQJCQliYXRjaF9pbnN1ZmZwZXJtX2NvdW50ID0gMDsKKwkJaW50CQkJ YmF0Y2hfbm9fZHJpZnQgPSAwOwogCQlpbnQJCQliYXRjaF9taXNzaW5nX2NvdW50OwogCQlSZWxh dGlvbglzZXF1ZW5jZV9yZWwgPSBOVUxMOwogCkBAIC01MDEsNDYgKzU4OSw1MyBAQCBjb3B5X3Nl cXVlbmNlcyhXYWxSZWNlaXZlckNvbm4gKmNvbm4pCiAJCQl9CiAKIAkJCXN5bmNfc3RhdHVzID0g Z2V0X2FuZF92YWxpZGF0ZV9zZXFfaW5mbyhzbG90LCAmc2VxdWVuY2VfcmVsLAotCQkJCQkJCQkJ CQkJCSZzZXFpbmZvLCAmc2VxaWR4KTsKKwkJCQkJCQkJCQkJCQkmc2VxaW5mbywgJnNlcWlkeCwg c2VxaW5mb3MpOworCisJCQkvKgorCQkJICogRm9yIHNlcXVlbmNlcyBpbiBJTklUIHN0YXRlLCBh bHdheXMgc3luYy4gT3RoZXJ3aXNlLCBmb3IKKwkJCSAqIHNlcXVlbmNlcyBpbiBSRUFEWSBzdGF0 ZSwgb25seSBzeW5jIGlmIHRoZXJlJ3MgZHJpZnQuCisJCQkgKi8KIAkJCWlmIChzeW5jX3N0YXR1 cyA9PSBDT1BZU0VRX1NVQ0NFU1MpCi0JCQkJc3luY19zdGF0dXMgPSBjb3B5X3NlcXVlbmNlKHNl cWluZm8sCi0JCQkJCQkJCQkJCXNlcXVlbmNlX3JlbC0+cmRfcmVsLT5yZWxvd25lcik7CisJCQkJ c3luY19zdGF0dXMgPSBjb3B5X3NlcXVlbmNlKHNlcWluZm8sIHNlcXVlbmNlX3JlbCk7CiAKIAkJ CXN3aXRjaCAoc3luY19zdGF0dXMpCiAJCQl7CiAJCQkJY2FzZSBDT1BZU0VRX1NVQ0NFU1M6CiAJ CQkJCWVsb2coREVCVUcxLAotCQkJCQkJICJsb2dpY2FsIHJlcGxpY2F0aW9uIHN5bmNocm9uaXph dGlvbiBmb3Igc3Vic2NyaXB0aW9uIFwiJXNcIiwgc2VxdWVuY2UgXCIlcy4lc1wiIGhhcyBmaW5p c2hlZCIsCi0JCQkJCQkgTXlTdWJzY3JpcHRpb24tPm5hbWUsIHNlcWluZm8tPm5zcG5hbWUsCi0J CQkJCQkgc2VxaW5mby0+c2VxbmFtZSk7CisJCQkJCQkgImxvZ2ljYWwgcmVwbGljYXRpb24gc3lu Y2hyb25pemF0aW9uIGhhcyB1cGRhdGVkIHNlcXVlbmNlIFwiJXMuJXNcIiBpbiBzdWJzY3JpcHRp b24gXCIlc1wiIiwKKwkJCQkJCSBzZXFpbmZvLT5uc3BuYW1lLCBzZXFpbmZvLT5zZXFuYW1lLCBN eVN1YnNjcmlwdGlvbi0+bmFtZSk7CiAJCQkJCWJhdGNoX3N1Y2NlZWRlZF9jb3VudCsrOworCQkJ CQlzZXF1ZW5jZV9jb3BpZWQgPSB0cnVlOwogCQkJCQlicmVhazsKKwogCQkJCWNhc2UgQ09QWVNF UV9NSVNNQVRDSDoKIAogCQkJCQkvKgotCQkJCQkgKiBSZW1lbWJlciBtaXNtYXRjaGVkIHNlcXVl bmNlcyBpbiBhIGxvbmctbGl2ZWQgbWVtb3J5Ci0JCQkJCSAqIGNvbnRleHQgc2luY2UgdGhlc2Ug d2lsbCBiZSB1c2VkIGFmdGVyIHRoZSB0cmFuc2FjdGlvbgotCQkJCQkgKiBpcyBjb21taXR0ZWQu CisJCQkJCSAqIFJlbWVtYmVyIG1pc21hdGNoZWQgc2VxdWVuY2VzIGluIFNlcXVlbmNlU3luY0Nv bnRleHQKKwkJCQkJICogc2luY2UgdGhlc2Ugd2lsbCBiZSB1c2VkIGFmdGVyIHRoZSB0cmFuc2Fj dGlvbiBpcworCQkJCQkgKiBjb21taXR0ZWQuCiAJCQkJCSAqLwotCQkJCQlvbGRjdHggPSBNZW1v cnlDb250ZXh0U3dpdGNoVG8oQXBwbHlDb250ZXh0KTsKKwkJCQkJb2xkY3R4ID0gTWVtb3J5Q29u dGV4dFN3aXRjaFRvKFNlcXVlbmNlU3luY0NvbnRleHQpOwogCQkJCQltaXNtYXRjaGVkX3NlcXNf aWR4ID0gbGFwcGVuZF9pbnQobWlzbWF0Y2hlZF9zZXFzX2lkeCwKIAkJCQkJCQkJCQkJCQkgIHNl cWlkeCk7CiAJCQkJCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjdHgpOwogCQkJCQliYXRjaF9t aXNtYXRjaGVkX2NvdW50Kys7CiAJCQkJCWJyZWFrOworCiAJCQkJY2FzZSBDT1BZU0VRX0lOU1VG RklDSUVOVF9QRVJNOgogCiAJCQkJCS8qCi0JCQkJCSAqIFJlbWVtYmVyIHNlcXVlbmNlcyB3aXRo IGluc3VmZmljaWVudCBwcml2aWxlZ2VzIGluIGEKLQkJCQkJICogbG9uZy1saXZlZCBtZW1vcnkg Y29udGV4dCBzaW5jZSB0aGVzZSB3aWxsIGJlIHVzZWQKLQkJCQkJICogYWZ0ZXIgdGhlIHRyYW5z YWN0aW9uIGlzIGNvbW1pdHRlZC4KKwkJCQkJICogUmVtZW1iZXIgc2VxdWVuY2VzIHdpdGggaW5z dWZmaWNpZW50IHByaXZpbGVnZXMgaW4KKwkJCQkJICogU2VxdWVuY2VTeW5jQ29udGV4dCBzaW5j ZSB0aGVzZSB3aWxsIGJlIHVzZWQgYWZ0ZXIgdGhlCisJCQkJCSAqIHRyYW5zYWN0aW9uIGlzIGNv bW1pdHRlZC4KIAkJCQkJICovCi0JCQkJCW9sZGN0eCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhB cHBseUNvbnRleHQpOworCQkJCQlvbGRjdHggPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8oU2VxdWVu Y2VTeW5jQ29udGV4dCk7CiAJCQkJCWluc3VmZnBlcm1fc2Vxc19pZHggPSBsYXBwZW5kX2ludChp bnN1ZmZwZXJtX3NlcXNfaWR4LAogCQkJCQkJCQkJCQkJCSAgc2VxaWR4KTsKIAkJCQkJTWVtb3J5 Q29udGV4dFN3aXRjaFRvKG9sZGN0eCk7CiAJCQkJCWJhdGNoX2luc3VmZnBlcm1fY291bnQrKzsK IAkJCQkJYnJlYWs7CisKIAkJCQljYXNlIENPUFlTRVFfU0tJUFBFRDoKIAogCQkJCQkvKgpAQCAt NTU4LDYgKzY1MywxNSBAQCBjb3B5X3NlcXVlbmNlcyhXYWxSZWNlaXZlckNvbm4gKmNvbm4pCiAJ CQkJCQliYXRjaF9za2lwcGVkX2NvdW50Kys7CiAJCQkJCX0KIAkJCQkJYnJlYWs7CisKKwkJCQlj YXNlIENPUFlTRVFfTk9fRFJJRlQ6CisJCQkJCS8qIE5vdGhpbmcgdG8gZG8gKi8KKwkJCQkJYmF0 Y2hfbm9fZHJpZnQrKzsKKwkJCQkJYnJlYWs7CisKKwkJCQlkZWZhdWx0OgorCQkJCQllbG9nKEVS Uk9SLCAidW5yZWNvZ25pemVkIFNlcXVlbmNlIHJlcGxpY2F0aW9uIHJlc3VsdDogJWQiLCAoaW50 KSBzeW5jX3N0YXR1cyk7CisKIAkJCX0KIAogCQkJaWYgKHNlcXVlbmNlX3JlbCkKQEAgLTU2Niwy MCArNjcwLDE5IEBAIGNvcHlfc2VxdWVuY2VzKFdhbFJlY2VpdmVyQ29ubiAqY29ubikKIAogCQlF eGVjRHJvcFNpbmdsZVR1cGxlVGFibGVTbG90KHNsb3QpOwogCQl3YWxyY3ZfY2xlYXJfcmVzdWx0 KHJlcyk7Ci0JCXJlc2V0U3RyaW5nSW5mbyhzZXFzdHIpOwotCQlyZXNldFN0cmluZ0luZm8oY21k KTsKIAogCQliYXRjaF9taXNzaW5nX2NvdW50ID0gYmF0Y2hfc2l6ZSAtIChiYXRjaF9zdWNjZWVk ZWRfY291bnQgKwogCQkJCQkJCQkJCQliYXRjaF9taXNtYXRjaGVkX2NvdW50ICsKIAkJCQkJCQkJ CQkJYmF0Y2hfaW5zdWZmcGVybV9jb3VudCArCi0JCQkJCQkJCQkJCWJhdGNoX3NraXBwZWRfY291 bnQpOworCQkJCQkJCQkJCQliYXRjaF9za2lwcGVkX2NvdW50ICsKKwkJCQkJCQkJCQkJYmF0Y2hf bm9fZHJpZnQpOwogCiAJCWVsb2coREVCVUcxLAotCQkJICJsb2dpY2FsIHJlcGxpY2F0aW9uIHNl cXVlbmNlIHN5bmNocm9uaXphdGlvbiBmb3Igc3Vic2NyaXB0aW9uIFwiJXNcIiAtIGJhdGNoICMl ZCA9ICVkIGF0dGVtcHRlZCwgJWQgc3VjY2VlZGVkLCAlZCBtaXNtYXRjaGVkLCAlZCBpbnN1ZmZp Y2llbnQgcGVybWlzc2lvbiwgJWQgbWlzc2luZyBmcm9tIHB1Ymxpc2hlciwgJWQgc2tpcHBlZCIs CisJCQkgImxvZ2ljYWwgcmVwbGljYXRpb24gc2VxdWVuY2Ugc3luY2hyb25pemF0aW9uIGZvciBz dWJzY3JpcHRpb24gXCIlc1wiIC0gYmF0Y2ggIyVkID0gJWQgYXR0ZW1wdGVkLCAlZCBzdWNjZWVk ZWQsICVkIG1pc21hdGNoZWQsICVkIGluc3VmZmljaWVudCBwZXJtaXNzaW9uLCAlZCBtaXNzaW5n IGZyb20gcHVibGlzaGVyLCAlZCBza2lwcGVkLCAlZCBubyBkcmlmdCIsCiAJCQkgTXlTdWJzY3Jp cHRpb24tPm5hbWUsCiAJCQkgKGN1cl9iYXRjaF9iYXNlX2luZGV4IC8gTUFYX1NFUVVFTkNFU19T WU5DX1BFUl9CQVRDSCkgKyAxLAogCQkJIGJhdGNoX3NpemUsIGJhdGNoX3N1Y2NlZWRlZF9jb3Vu dCwgYmF0Y2hfbWlzbWF0Y2hlZF9jb3VudCwKLQkJCSBiYXRjaF9pbnN1ZmZwZXJtX2NvdW50LCBi YXRjaF9taXNzaW5nX2NvdW50LCBiYXRjaF9za2lwcGVkX2NvdW50KTsKKwkJCSBiYXRjaF9pbnN1 ZmZwZXJtX2NvdW50LCBiYXRjaF9taXNzaW5nX2NvdW50LCBiYXRjaF9za2lwcGVkX2NvdW50LCBi YXRjaF9ub19kcmlmdCk7CiAKIAkJLyogQ29tbWl0IHRoaXMgYmF0Y2gsIGFuZCBwcmVwYXJlIGZv ciBuZXh0IGJhdGNoICovCiAJCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOwpAQCAtNjA3LDUx ICs3MTAsNTUgQEAgY29weV9zZXF1ZW5jZXMoV2FsUmVjZWl2ZXJDb25uICpjb25uKQogCiAJLyog UmVwb3J0IG1pc21hdGNoZXMsIHBlcm1pc3Npb24gaXNzdWVzLCBvciBtaXNzaW5nIHNlcXVlbmNl cyAqLwogCXJlcG9ydF9zZXF1ZW5jZV9lcnJvcnMobWlzbWF0Y2hlZF9zZXFzX2lkeCwgaW5zdWZm cGVybV9zZXFzX2lkeCwKLQkJCQkJCSAgIG1pc3Npbmdfc2Vxc19pZHgpOworCQkJCQkJICAgbWlz c2luZ19zZXFzX2lkeCwgc2VxaW5mb3MpOworCisJcmV0dXJuIHNlcXVlbmNlX2NvcGllZDsKIH0K IAogLyoKICAqIElkZW50aWZpZXMgc2VxdWVuY2VzIHRoYXQgcmVxdWlyZSBzeW5jaHJvbml6YXRp b24gYW5kIGluaXRpYXRlcyB0aGUKICAqIHN5bmNocm9uaXphdGlvbiBwcm9jZXNzLgorICoKKyAq IFJldHVybnMgdHJ1ZSBpZiBzZXF1ZW5jZXMgaGF2ZSBiZWVuIHVwZGF0ZWQuCiAgKi8KLXN0YXRp YyB2b2lkCi1Mb2dpY2FsUmVwU3luY1NlcXVlbmNlcyh2b2lkKQorc3RhdGljIGJvb2wKK0xvZ2lj YWxSZXBTeW5jU2VxdWVuY2VzKFdhbFJlY2VpdmVyQ29ubiAqY29ubikKIHsKLQljaGFyCSAgICpl cnI7Ci0JYm9vbAkJbXVzdF91c2VfcGFzc3dvcmQ7CiAJUmVsYXRpb24JcmVsOwogCUhlYXBUdXBs ZQl0dXA7Ci0JU2NhbktleURhdGEgc2tleVsyXTsKKwlTY2FuS2V5RGF0YSBza2V5WzFdOwogCVN5 c1NjYW5EZXNjIHNjYW47CiAJT2lkCQkJc3ViaWQgPSBNeUxvZ2ljYWxSZXBXb3JrZXItPnN1Ymlk OwotCVN0cmluZ0luZm9EYXRhIGFwcF9uYW1lOworCWJvb2wJCXNlcXVlbmNlX2NvcGllZCA9IGZh bHNlOworCUxpc3QJICAgKnNlcWluZm9zID0gTklMOworCU1lbW9yeUNvbnRleHQgb2xkY3R4Owor CisJQXNzZXJ0KFNlcXVlbmNlU3luY0NvbnRleHQpOwogCiAJU3RhcnRUcmFuc2FjdGlvbkNvbW1h bmQoKTsKIAogCXJlbCA9IHRhYmxlX29wZW4oU3Vic2NyaXB0aW9uUmVsUmVsYXRpb25JZCwgQWNj ZXNzU2hhcmVMb2NrKTsKIAorCS8qIFNjYW4gZm9yIGFsbCBzZXF1ZW5jZXMgYmVsb25naW5nIHRv IHRoaXMgc3Vic2NyaXB0aW9uICovCiAJU2NhbktleUluaXQoJnNrZXlbMF0sCiAJCQkJQW51bV9w Z19zdWJzY3JpcHRpb25fcmVsX3Nyc3ViaWQsCiAJCQkJQlRFcXVhbFN0cmF0ZWd5TnVtYmVyLCBG X09JREVRLAogCQkJCU9iamVjdElkR2V0RGF0dW0oc3ViaWQpKTsKIAotCVNjYW5LZXlJbml0KCZz a2V5WzFdLAotCQkJCUFudW1fcGdfc3Vic2NyaXB0aW9uX3JlbF9zcnN1YnN0YXRlLAotCQkJCUJU RXF1YWxTdHJhdGVneU51bWJlciwgRl9DSEFSRVEsCi0JCQkJQ2hhckdldERhdHVtKFNVQlJFTF9T VEFURV9JTklUKSk7Ci0KIAlzY2FuID0gc3lzdGFibGVfYmVnaW5zY2FuKHJlbCwgSW52YWxpZE9p ZCwgZmFsc2UsCi0JCQkJCQkJICBOVUxMLCAyLCBza2V5KTsKKwkJCQkJCQkgIE5VTEwsIDEsIHNr ZXkpOworCiAJd2hpbGUgKEhlYXBUdXBsZUlzVmFsaWQodHVwID0gc3lzdGFibGVfZ2V0bmV4dChz Y2FuKSkpCiAJewogCQlGb3JtX3BnX3N1YnNjcmlwdGlvbl9yZWwgc3VicmVsOwogCQlMb2dpY2Fs UmVwU2VxdWVuY2VJbmZvICpzZXE7CiAJCVJlbGF0aW9uCXNlcXVlbmNlX3JlbDsKLQkJTWVtb3J5 Q29udGV4dCBvbGRjdHg7CisJCWNoYXIJCXJlbHN0YXRlOwogCiAJCUNIRUNLX0ZPUl9JTlRFUlJV UFRTKCk7CiAKIAkJc3VicmVsID0gKEZvcm1fcGdfc3Vic2NyaXB0aW9uX3JlbCkgR0VUU1RSVUNU KHR1cCk7CisJCXJlbHN0YXRlID0gc3VicmVsLT5zcnN1YnN0YXRlOwogCiAJCXNlcXVlbmNlX3Jl bCA9IHRyeV90YWJsZV9vcGVuKHN1YnJlbC0+c3JyZWxpZCwgUm93RXhjbHVzaXZlTG9jayk7CiAK QEAgLTY2NiwxOCArNzczLDE5IEBAIExvZ2ljYWxSZXBTeW5jU2VxdWVuY2VzKHZvaWQpCiAJCQlj b250aW51ZTsKIAkJfQogCisJCUFzc2VydChyZWxzdGF0ZSA9PSBTVUJSRUxfU1RBVEVfSU5JVCB8 fCByZWxzdGF0ZSA9PSBTVUJSRUxfU1RBVEVfUkVBRFkpOworCiAJCS8qCiAJCSAqIFdvcmtlciBu ZWVkcyB0byBwcm9jZXNzIHNlcXVlbmNlcyBhY3Jvc3MgdHJhbnNhY3Rpb24gYm91bmRhcnksIHNv Ci0JCSAqIGFsbG9jYXRlIHRoZW0gdW5kZXIgbG9uZy1saXZlZCBjb250ZXh0LgorCQkgKiBhbGxv Y2F0ZSB0aGVtIHVuZGVyIFNlcXVlbmNlU3luY0NvbnRleHQuCiAJCSAqLwotCQlvbGRjdHggPSBN ZW1vcnlDb250ZXh0U3dpdGNoVG8oQXBwbHlDb250ZXh0KTsKLQorCQlvbGRjdHggPSBNZW1vcnlD b250ZXh0U3dpdGNoVG8oU2VxdWVuY2VTeW5jQ29udGV4dCk7CiAJCXNlcSA9IHBhbGxvYzBfb2Jq ZWN0KExvZ2ljYWxSZXBTZXF1ZW5jZUluZm8pOwogCQlzZXEtPmxvY2FscmVsaWQgPSBzdWJyZWwt PnNycmVsaWQ7CiAJCXNlcS0+bnNwbmFtZSA9IGdldF9uYW1lc3BhY2VfbmFtZShSZWxhdGlvbkdl dE5hbWVzcGFjZShzZXF1ZW5jZV9yZWwpKTsKIAkJc2VxLT5zZXFuYW1lID0gcHN0cmR1cChSZWxh dGlvbkdldFJlbGF0aW9uTmFtZShzZXF1ZW5jZV9yZWwpKTsKKwkJc2VxLT5yZWxzdGF0ZSA9IHJl bHN0YXRlOwogCQlzZXFpbmZvcyA9IGxhcHBlbmQoc2VxaW5mb3MsIHNlcSk7Ci0KIAkJTWVtb3J5 Q29udGV4dFN3aXRjaFRvKG9sZGN0eCk7CiAKIAkJdGFibGVfY2xvc2Uoc2VxdWVuY2VfcmVsLCBO b0xvY2spOwpAQCAtNjkzLDM2ICs4MDEsMTYgQEAgTG9naWNhbFJlcFN5bmNTZXF1ZW5jZXModm9p ZCkKIAkgKiBFeGl0IGVhcmx5IGlmIG5vIGNhdGFsb2cgZW50cmllcyBmb3VuZCwgbGlrZWx5IGR1 ZSB0byBjb25jdXJyZW50IGRyb3BzLgogCSAqLwogCWlmICghc2VxaW5mb3MpCi0JCXJldHVybjsK LQotCS8qIElzIHRoZSB1c2Ugb2YgYSBwYXNzd29yZCBtYW5kYXRvcnk/ICovCi0JbXVzdF91c2Vf cGFzc3dvcmQgPSBNeVN1YnNjcmlwdGlvbi0+cGFzc3dvcmRyZXF1aXJlZCAmJgotCQkhTXlTdWJz Y3JpcHRpb24tPm93bmVyc3VwZXJ1c2VyOworCQlyZXR1cm4gZmFsc2U7CiAKLQlpbml0U3RyaW5n SW5mbygmYXBwX25hbWUpOwotCWFwcGVuZFN0cmluZ0luZm8oJmFwcF9uYW1lLCAicGdfJXVfc2Vx dWVuY2Vfc3luY18iIFVJTlQ2NF9GT1JNQVQsCi0JCQkJCSBNeVN1YnNjcmlwdGlvbi0+b2lkLCBH ZXRTeXN0ZW1JZGVudGlmaWVyKCkpOworCS8qIFByb2Nlc3Mgc2VxdWVuY2VzICovCisJc2VxdWVu Y2VfY29waWVkID0gY29weV9zZXF1ZW5jZXMoY29ubiwgc2VxaW5mb3MpOwogCi0JLyoKLQkgKiBF c3RhYmxpc2ggdGhlIGNvbm5lY3Rpb24gdG8gdGhlIHB1Ymxpc2hlciBmb3Igc2VxdWVuY2Ugc3lu Y2hyb25pemF0aW9uLgotCSAqLwotCUxvZ1JlcFdvcmtlcldhbFJjdkNvbm4gPQotCQl3YWxyY3Zf Y29ubmVjdChNeVN1YnNjcmlwdGlvbi0+Y29ubmluZm8sIHRydWUsIHRydWUsCi0JCQkJCSAgIG11 c3RfdXNlX3Bhc3N3b3JkLAotCQkJCQkgICBhcHBfbmFtZS5kYXRhLCAmZXJyKTsKLQlpZiAoTG9n UmVwV29ya2VyV2FsUmN2Q29ubiA9PSBOVUxMKQotCQllcmVwb3J0KEVSUk9SLAotCQkJCWVycmNv ZGUoRVJSQ09ERV9DT05ORUNUSU9OX0ZBSUxVUkUpLAotCQkJCWVycm1zZygic2VxdWVuY2VzeW5j IHdvcmtlciBmb3Igc3Vic2NyaXB0aW9uIFwiJXNcIiBjb3VsZCBub3QgY29ubmVjdCB0byB0aGUg cHVibGlzaGVyOiAlcyIsCi0JCQkJCSAgIE15U3Vic2NyaXB0aW9uLT5uYW1lLCBlcnIpKTsKLQot CXBmcmVlKGFwcF9uYW1lLmRhdGEpOwotCi0JY29weV9zZXF1ZW5jZXMoTG9nUmVwV29ya2VyV2Fs UmN2Q29ubik7CisJcmV0dXJuIHNlcXVlbmNlX2NvcGllZDsKIH0KIAogLyoKLSAqIEV4ZWN1dGUg dGhlIGluaXRpYWwgc3luYyB3aXRoIGVycm9yIGhhbmRsaW5nLiBEaXNhYmxlIHRoZSBzdWJzY3Jp cHRpb24sCisgKiBFeGVjdXRlIHRoZSBzZXF1ZW5jZSBzeW5jIHdpdGggZXJyb3IgaGFuZGxpbmcu IERpc2FibGUgdGhlIHN1YnNjcmlwdGlvbiwKICAqIGlmIHJlcXVpcmVkLgogICoKICAqIE5vdGUg dGhhdCB3ZSBkb24ndCBoYW5kbGUgRkFUQUwgZXJyb3JzIHdoaWNoIGFyZSBwcm9iYWJseSBiZWNh dXNlIG9mIHN5c3RlbQpAQCAtNzM1LDggKzgyMyw5MSBAQCBzdGFydF9zZXF1ZW5jZV9zeW5jKHZv aWQpCiAKIAlQR19UUlkoKTsKIAl7Ci0JCS8qIENhbGwgaW5pdGlhbCBzeW5jLiAqLwotCQlMb2dp Y2FsUmVwU3luY1NlcXVlbmNlcygpOworCQljaGFyCSAgICplcnI7CisJCWJvb2wJCW11c3RfdXNl X3Bhc3N3b3JkOworCQlTdHJpbmdJbmZvRGF0YSBhcHBfbmFtZTsKKworCQkvKiBJcyB0aGUgdXNl IG9mIGEgcGFzc3dvcmQgbWFuZGF0b3J5PyAqLworCQltdXN0X3VzZV9wYXNzd29yZCA9IE15U3Vi c2NyaXB0aW9uLT5wYXNzd29yZHJlcXVpcmVkICYmCisJCQkhTXlTdWJzY3JpcHRpb24tPm93bmVy c3VwZXJ1c2VyOworCisJCWluaXRTdHJpbmdJbmZvKCZhcHBfbmFtZSk7CisJCWFwcGVuZFN0cmlu Z0luZm8oJmFwcF9uYW1lLCAicGdfJXVfc2VxdWVuY2Vfc3luY18iIFVJTlQ2NF9GT1JNQVQsCisJ CQkJCQkgTXlTdWJzY3JpcHRpb24tPm9pZCwgR2V0U3lzdGVtSWRlbnRpZmllcigpKTsKKworCQkv KgorCQkgKiBFc3RhYmxpc2ggdGhlIGNvbm5lY3Rpb24gdG8gdGhlIHB1Ymxpc2hlciBmb3Igc2Vx dWVuY2UKKwkJICogc3luY2hyb25pemF0aW9uLgorCQkgKi8KKwkJTG9nUmVwV29ya2VyV2FsUmN2 Q29ubiA9CisJCQl3YWxyY3ZfY29ubmVjdChNeVN1YnNjcmlwdGlvbi0+Y29ubmluZm8sIHRydWUs IHRydWUsCisJCQkJCQkgICBtdXN0X3VzZV9wYXNzd29yZCwKKwkJCQkJCSAgIGFwcF9uYW1lLmRh dGEsICZlcnIpOworCQlpZiAoTG9nUmVwV29ya2VyV2FsUmN2Q29ubiA9PSBOVUxMKQorCQkJZXJl cG9ydChFUlJPUiwKKwkJCQkJZXJyY29kZShFUlJDT0RFX0NPTk5FQ1RJT05fRkFJTFVSRSksCisJ CQkJCWVycm1zZygic2VxdWVuY2VzeW5jIHdvcmtlciBmb3Igc3Vic2NyaXB0aW9uIFwiJXNcIiBj b3VsZCBub3QgY29ubmVjdCB0byB0aGUgcHVibGlzaGVyOiAlcyIsCisJCQkJCQkgICBNeVN1YnNj cmlwdGlvbi0+bmFtZSwgZXJyKSk7CisKKwkJcGZyZWUoYXBwX25hbWUuZGF0YSk7CisKKwkJLyoK KwkJICogSW5pdCB0aGUgU2VxdWVuY2VTeW5jQ29udGV4dCB3aGljaCB3ZSBjbGVhbiB1cCBhZnRl ciBlYWNoIHNlcXVlbmNlCisJCSAqIHN5bmNocm9uaXphdGlvbi4KKwkJICovCisJCVNlcXVlbmNl U3luY0NvbnRleHQgPSBBbGxvY1NldENvbnRleHRDcmVhdGUoQXBwbHlDb250ZXh0LAorCQkJCQkJ CQkJCQkJCSJTZXF1ZW5jZVN5bmNDb250ZXh0IiwKKwkJCQkJCQkJCQkJCQlBTExPQ1NFVF9ERUZB VUxUX1NJWkVTKTsKKworCQlmb3IgKDs7KQorCQl7CisJCQlib29sCQlzZXF1ZW5jZV9jb3BpZWQg PSBmYWxzZTsKKwkJCU1lbW9yeUNvbnRleHQgb2xkY3R4OworCisJCQlDSEVDS19GT1JfSU5URVJS VVBUUygpOworCisJCQkvKiBQcm9jZXNzIGFueSBpbnZhbGlkYXRpb24gbWVzc2FnZXMgdGhhdCBt aWdodCBoYXZlIGFjY3VtdWxhdGVkICovCisJCQlBY2NlcHRJbnZhbGlkYXRpb25NZXNzYWdlcygp OworCQkJbWF5YmVfcmVyZWFkX3N1YnNjcmlwdGlvbigpOworCisJCQkvKgorCQkJICogUGVyZm9y bSBzZXF1ZW5jZSBzeW5jaHJvbml6YXRpb24gdW5kZXIgU2VxdWVuY2VTeW5jQ29udGV4dCBhbmQK KwkJCSAqIHJlc2V0IGl0IGVhY2ggY3ljbGUgdG8gYXZvaWQgbWFudWFsIG1lbW9yeSBtYW5hZ2Vt ZW50LgorCQkJICovCisJCQlvbGRjdHggPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8oU2VxdWVuY2VT eW5jQ29udGV4dCk7CisKKwkJCS8qCisJCQkgKiBTeW5jaHJvbml6ZSBhbGwgc2VxdWVuY2VzIChi b3RoIFJFQURZIGFuZCBJTklUIHN0YXRlcykuCisJCQkgKi8KKwkJCXNlcXVlbmNlX2NvcGllZCA9 IExvZ2ljYWxSZXBTeW5jU2VxdWVuY2VzKExvZ1JlcFdvcmtlcldhbFJjdkNvbm4pOworCisJCQlN ZW1vcnlDb250ZXh0UmVzZXQoU2VxdWVuY2VTeW5jQ29udGV4dCk7CisJCQlNZW1vcnlDb250ZXh0 U3dpdGNoVG8ob2xkY3R4KTsKKworCQkJLyoKKwkJCSAqIEFkanVzdCBzbGVlcCBpbnRlcnZhbCBi YXNlZCBvbiB3aGV0aGVyIHNlcXVlbmNlcyB3ZXJlIGNvcGllZAorCQkJICogb3ZlcgorCQkJICov CisJCQlpZiAoc2VxdWVuY2VfY29waWVkKQorCQkJeworCQkJCXNsZWVwX21zID0gU0VRU1lOQ19N SU5fU0xFRVBfTVM7CisJCQl9CisJCQllbHNlCisJCQl7CisJCQkJLyoKKwkJCQkgKiBEb3VibGUg dGhlIHNsZWVwIHRpbWUsIGJ1dCBub3QgYmV5b25kIHRoZSBtYXhpbXVtIGFsbG93YWJsZQorCQkJ CSAqIHZhbHVlLgorCQkJCSAqLworCQkJCXNsZWVwX21zID0gTWluKHNsZWVwX21zICogMiwgU0VR U1lOQ19NQVhfU0xFRVBfTVMpOworCQkJfQorCisJCQkvKiBTbGVlcCBmb3IgdGhlIGNvbmZpZ3Vy ZWQgaW50ZXJ2YWwgKi8KKwkJCSh2b2lkKSBXYWl0TGF0Y2goTXlMYXRjaCwKKwkJCQkJCQkgV0xf TEFUQ0hfU0VUIHwgV0xfVElNRU9VVCB8IFdMX0VYSVRfT05fUE1fREVBVEgsCisJCQkJCQkJIHNs ZWVwX21zLAorCQkJCQkJCSBXQUlUX0VWRU5UX0xPR0lDQUxfU1lOQ19TVEFURV9DSEFOR0UpOwor CQkJUmVzZXRMYXRjaChNeUxhdGNoKTsKKwkJfQogCX0KIAlQR19DQVRDSCgpOwogCXsKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvc3luY3V0aWxzLmMgYi9zcmMv YmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3N5bmN1dGlscy5jCmluZGV4IGVmNjFjYTA0Mzdk Li4yMzNhYzdhZTg3MyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNh bC9zeW5jdXRpbHMuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3N5bmN1 dGlscy5jCkBAIC0xNzIsNyArMTcyLDkgQEAgUHJvY2Vzc1N5bmNpbmdSZWxhdGlvbnMoWExvZ1Jl Y1B0ciBjdXJyZW50X2xzbikKIAogCQljYXNlIFdPUktFUlRZUEVfQVBQTFk6CiAJCQlQcm9jZXNz U3luY2luZ1RhYmxlc0ZvckFwcGx5KGN1cnJlbnRfbHNuKTsKLQkJCVByb2Nlc3NTZXF1ZW5jZXNG b3JTeW5jKCk7CisKKwkJCS8qIENoZWNrIGlmIHNlcXVlbmNlIHdvcmtlciBuZWVkcyB0byBiZSBz dGFydGVkICovCisJCQlNYXliZUxhdW5jaFNlcXVlbmNlU3luY1dvcmtlcigpOwogCQkJYnJlYWs7 CiAKIAkJY2FzZSBXT1JLRVJUWVBFX1NFUVVFTkNFU1lOQzoKQEAgLTE5MSwxMyArMTkzLDEzIEBA IFByb2Nlc3NTeW5jaW5nUmVsYXRpb25zKFhMb2dSZWNQdHIgY3VycmVudF9sc24pCiAgKgogICog VGhlIHBnX3N1YnNjcmlwdGlvbl9yZWwgY2F0YWxvZyBpcyBzaGFyZWQgYnkgdGFibGVzIGFuZCBz ZXF1ZW5jZXMuIENoYW5nZXMKICAqIHRvIGVpdGhlciBzZXF1ZW5jZXMgb3IgdGFibGVzIGNhbiBh ZmZlY3QgdGhlIHZhbGlkaXR5IG9mIHJlbGF0aW9uIHN0YXRlcywgc28KLSAqIHdlIGlkZW50aWZ5 IG5vbi1SRUFEWSB0YWJsZXMgYW5kIG5vbi1SRUFEWSBzZXF1ZW5jZXMgdG9nZXRoZXIgdG8gZW5z dXJlCisgKiB3ZSBpZGVudGlmeSBub24tUkVBRFkgdGFibGVzIGFuZCBzZXF1ZW5jZXMgKGluIGFu eSBzdGF0ZSkgdG9nZXRoZXIgdG8gZW5zdXJlCiAgKiBjb25zaXN0ZW5jeS4KICAqCiAgKiBoYXNf cGVuZGluZ19zdWJ0YWJsZXM6IHRydWUgaWYgdGhlIHN1YnNjcmlwdGlvbiBoYXMgb25lIG9yIG1v cmUgdGFibGVzIHRoYXQKICAqIGFyZSBub3QgaW4gUkVBRFkgc3RhdGUsIG90aGVyd2lzZSBmYWxz ZS4KICAqIGhhc19wZW5kaW5nX3N1YnNlcXVlbmNlczogdHJ1ZSBpZiB0aGUgc3Vic2NyaXB0aW9u IGhhcyBvbmUgb3IgbW9yZSBzZXF1ZW5jZXMKLSAqIHRoYXQgYXJlIG5vdCBpbiBSRUFEWSBzdGF0 ZSwgb3RoZXJ3aXNlIGZhbHNlLgorICogKGluIGFueSBzdGF0ZSksIG90aGVyd2lzZSBmYWxzZS4K ICAqLwogdm9pZAogRmV0Y2hSZWxhdGlvblN0YXRlcyhib29sICpoYXNfcGVuZGluZ19zdWJ0YWJs ZXMsCkBAIC0yMDUsMjMgKzIwNywyMiBAQCBGZXRjaFJlbGF0aW9uU3RhdGVzKGJvb2wgKmhhc19w ZW5kaW5nX3N1YnRhYmxlcywKIAkJCQkJYm9vbCAqc3RhcnRlZF90eCkKIHsKIAkvKgotCSAqIGhh c19zdWJ0YWJsZXMgYW5kIGhhc19zdWJzZXF1ZW5jZXNfbm9uX3JlYWR5IGFyZSBkZWNsYXJlZCBh cyBzdGF0aWMsCi0JICogc2luY2UgdGhlIHNhbWUgdmFsdWUgY2FuIGJlIHVzZWQgdW50aWwgdGhl IHN5c3RlbSB0YWJsZSBpcyBpbnZhbGlkYXRlZC4KKwkgKiBoYXNfc3VidGFibGVzIGFuZCBoYXNf c3Vic2VxdWVuY2VzIGFyZSBkZWNsYXJlZCBhcyBzdGF0aWMsIHNpbmNlIHRoZQorCSAqIHNhbWUg dmFsdWUgY2FuIGJlIHVzZWQgdW50aWwgdGhlIHN5c3RlbSB0YWJsZSBpcyBpbnZhbGlkYXRlZC4K IAkgKi8KIAlzdGF0aWMgYm9vbCBoYXNfc3VidGFibGVzID0gZmFsc2U7Ci0Jc3RhdGljIGJvb2wg aGFzX3N1YnNlcXVlbmNlc19ub25fcmVhZHkgPSBmYWxzZTsKKwlzdGF0aWMgYm9vbCBoYXNfc3Vi c2VxdWVuY2VzID0gZmFsc2U7CiAKIAkqc3RhcnRlZF90eCA9IGZhbHNlOwotCiAJaWYgKHJlbGF0 aW9uX3N0YXRlc192YWxpZGl0eSAhPSBTWU5DX1JFTEFUSU9OU19TVEFURV9WQUxJRCkKIAl7CiAJ CU1lbW9yeUNvbnRleHQgb2xkY3R4OwogCQlMaXN0CSAgICpyc3RhdGVzOworCQlMaXN0CSAgICpz ZXFfc3RhdGVzOwogCQlTdWJzY3JpcHRpb25SZWxTdGF0ZSAqcnN0YXRlOwogCiAJCXJlbGF0aW9u X3N0YXRlc192YWxpZGl0eSA9IFNZTkNfUkVMQVRJT05TX1NUQVRFX1JFQlVJTERfU1RBUlRFRDsK LQkJaGFzX3N1YnNlcXVlbmNlc19ub25fcmVhZHkgPSBmYWxzZTsKLQorCQloYXNfc3Vic2VxdWVu Y2VzID0gZmFsc2U7CiAJCS8qIENsZWFuIHRoZSBvbGQgbGlzdHMuICovCiAJCWxpc3RfZnJlZV9k ZWVwKHRhYmxlX3N0YXRlc19ub3RfcmVhZHkpOwogCQl0YWJsZV9zdGF0ZXNfbm90X3JlYWR5ID0g TklMOwpAQCAtMjMxLDI3ICsyMzIsMjcgQEAgRmV0Y2hSZWxhdGlvblN0YXRlcyhib29sICpoYXNf cGVuZGluZ19zdWJ0YWJsZXMsCiAJCQlTdGFydFRyYW5zYWN0aW9uQ29tbWFuZCgpOwogCQkJKnN0 YXJ0ZWRfdHggPSB0cnVlOwogCQl9Ci0KLQkJLyogRmV0Y2ggdGFibGVzIGFuZCBzZXF1ZW5jZXMg dGhhdCBhcmUgaW4gbm9uLVJFQURZIHN0YXRlLiAqLwotCQlyc3RhdGVzID0gR2V0U3Vic2NyaXB0 aW9uUmVsYXRpb25zKE15U3Vic2NyaXB0aW9uLT5vaWQsIHRydWUsIHRydWUsCisJCS8qIEZldGNo IHRhYmxlcyB0aGF0IGFyZSBpbiBub24tUkVBRFkgc3RhdGUuICovCisJCXJzdGF0ZXMgPSBHZXRT dWJzY3JpcHRpb25SZWxhdGlvbnMoTXlTdWJzY3JpcHRpb24tPm9pZCwgdHJ1ZSwgZmFsc2UsCiAJ CQkJCQkJCQkJICAgdHJ1ZSk7Ci0KKwkJLyogRmV0Y2ggYWxsIHNlcXVlbmNlcyAocmVnYXJkbGVz cyBvZiBzdGF0ZSkuICovCisJCXNlcV9zdGF0ZXMgPSBHZXRTdWJzY3JpcHRpb25SZWxhdGlvbnMo TXlTdWJzY3JpcHRpb24tPm9pZCwgZmFsc2UsIHRydWUsCisJCQkJCQkJCQkJCSAgZmFsc2UpOwog CQkvKiBBbGxvY2F0ZSB0aGUgdHJhY2tpbmcgaW5mbyBpbiBhIHBlcm1hbmVudCBtZW1vcnkgY29u dGV4dC4gKi8KIAkJb2xkY3R4ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKENhY2hlTWVtb3J5Q29u dGV4dCk7CiAJCWZvcmVhY2hfcHRyKFN1YnNjcmlwdGlvblJlbFN0YXRlLCBzdWJyZWwsIHJzdGF0 ZXMpCiAJCXsKLQkJCWlmIChnZXRfcmVsX3JlbGtpbmQoc3VicmVsLT5yZWxpZCkgPT0gUkVMS0lO RF9TRVFVRU5DRSkKLQkJCQloYXNfc3Vic2VxdWVuY2VzX25vbl9yZWFkeSA9IHRydWU7Ci0JCQll bHNlCi0JCQl7Ci0JCQkJcnN0YXRlID0gcGFsbG9jX29iamVjdChTdWJzY3JpcHRpb25SZWxTdGF0 ZSk7Ci0JCQkJbWVtY3B5KHJzdGF0ZSwgc3VicmVsLCBzaXplb2YoU3Vic2NyaXB0aW9uUmVsU3Rh dGUpKTsKLQkJCQl0YWJsZV9zdGF0ZXNfbm90X3JlYWR5ID0gbGFwcGVuZCh0YWJsZV9zdGF0ZXNf bm90X3JlYWR5LAotCQkJCQkJCQkJCQkJIHJzdGF0ZSk7Ci0JCQl9CisJCQlyc3RhdGUgPSBwYWxs b2Nfb2JqZWN0KFN1YnNjcmlwdGlvblJlbFN0YXRlKTsKKwkJCW1lbWNweShyc3RhdGUsIHN1YnJl bCwgc2l6ZW9mKFN1YnNjcmlwdGlvblJlbFN0YXRlKSk7CisJCQl0YWJsZV9zdGF0ZXNfbm90X3Jl YWR5ID0gbGFwcGVuZCh0YWJsZV9zdGF0ZXNfbm90X3JlYWR5LAorCQkJCQkJCQkJCQkgcnN0YXRl KTsKIAkJfQorCQkvKiBDaGVjayBpZiB0aGVyZSBhcmUgYW55IHNlcXVlbmNlcy4gKi8KKwkJaGFz X3N1YnNlcXVlbmNlcyA9IChzZXFfc3RhdGVzICE9IE5JTCk7CiAJCU1lbW9yeUNvbnRleHRTd2l0 Y2hUbyhvbGRjdHgpOwogCisJCWxpc3RfZnJlZV9kZWVwKHNlcV9zdGF0ZXMpOworCiAJCS8qCiAJ CSAqIERvZXMgdGhlIHN1YnNjcmlwdGlvbiBoYXZlIHRhYmxlcz8KIAkJICoKQEAgLTI3Nyw1ICsy NzgsNSBAQCBGZXRjaFJlbGF0aW9uU3RhdGVzKGJvb2wgKmhhc19wZW5kaW5nX3N1YnRhYmxlcywK IAkJKmhhc19wZW5kaW5nX3N1YnRhYmxlcyA9IGhhc19zdWJ0YWJsZXM7CiAKIAlpZiAoaGFzX3Bl bmRpbmdfc3Vic2VxdWVuY2VzKQotCQkqaGFzX3BlbmRpbmdfc3Vic2VxdWVuY2VzID0gaGFzX3N1 YnNlcXVlbmNlc19ub25fcmVhZHk7CisJCSpoYXNfcGVuZGluZ19zdWJzZXF1ZW5jZXMgPSBoYXNf c3Vic2VxdWVuY2VzOwogfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9n aWNhbC93b3JrZXIuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMK aW5kZXggYmFlOGMwMTEzOTAuLjkzYjdlMWI5OTkzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9y ZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9u L2xvZ2ljYWwvd29ya2VyLmMKQEAgLTUwOTgsNiArNTA5OCw5IEBAIG1heWJlX3JlcmVhZF9zdWJz Y3JpcHRpb24odm9pZCkKIAkgKiB3b3JrZXIgd29uJ3QgcmVzdGFydCBpZiB0aGUgc3RyZWFtaW5n IG9wdGlvbidzIHZhbHVlIGlzIGNoYW5nZWQgZnJvbQogCSAqICdwYXJhbGxlbCcgdG8gYW55IG90 aGVyIHZhbHVlIG9yIHRoZSBzZXJ2ZXIgZGVjaWRlcyBub3QgdG8gc3RyZWFtIHRoZQogCSAqIGlu LXByb2dyZXNzIHRyYW5zYWN0aW9uLgorCSAqCisJICogTm90ZTogc29tZSBwYXJhbWV0ZXJzIG1h eSBub3QgYmUgcmVsZXZhbnQgdG8gdGhlIHNlcXVlbmNlIHN5bmMgd29ya2VyLAorCSAqIGJ1dCBl eGl0IGFueXdheS4KIAkgKi8KIAlpZiAoc3RyY21wKG5ld3N1Yi0+Y29ubmluZm8sIE15U3Vic2Ny aXB0aW9uLT5jb25uaW5mbykgIT0gMCB8fAogCQlzdHJjbXAobmV3c3ViLT5uYW1lLCBNeVN1YnNj cmlwdGlvbi0+bmFtZSkgIT0gMCB8fApAQCAtNTExMyw2ICs1MTE2LDEwIEBAIG1heWJlX3JlcmVh ZF9zdWJzY3JpcHRpb24odm9pZCkKIAkJCWVyZXBvcnQoTE9HLAogCQkJCQkoZXJybXNnKCJsb2dp Y2FsIHJlcGxpY2F0aW9uIHBhcmFsbGVsIGFwcGx5IHdvcmtlciBmb3Igc3Vic2NyaXB0aW9uIFwi JXNcIiB3aWxsIHN0b3AgYmVjYXVzZSBvZiBhIHBhcmFtZXRlciBjaGFuZ2UiLAogCQkJCQkJCU15 U3Vic2NyaXB0aW9uLT5uYW1lKSkpOworCQllbHNlIGlmIChhbV9zZXF1ZW5jZXN5bmNfd29ya2Vy KCkpCisJCQllcmVwb3J0KExPRywKKwkJCQkJKGVycm1zZygibG9naWNhbCByZXBsaWNhdGlvbiBz ZXF1ZW5jZSBzeW5jaHJvbml6YXRpb24gd29ya2VyIGZvciBzdWJzY3JpcHRpb24gXCIlc1wiIHdp bGwgc3RvcCBiZWNhdXNlIG9mIGEgcGFyYW1ldGVyIGNoYW5nZSIsCisJCQkJCQkJTXlTdWJzY3Jp cHRpb24tPm5hbWUpKSk7CiAJCWVsc2UKIAkJCWVyZXBvcnQoTE9HLAogCQkJCQkoZXJybXNnKCJs b2dpY2FsIHJlcGxpY2F0aW9uIHdvcmtlciBmb3Igc3Vic2NyaXB0aW9uIFwiJXNcIiB3aWxsIHJl c3RhcnQgYmVjYXVzZSBvZiBhIHBhcmFtZXRlciBjaGFuZ2UiLApAQCAtNTEzMSw2ICs1MTM4LDEw IEBAIG1heWJlX3JlcmVhZF9zdWJzY3JpcHRpb24odm9pZCkKIAkJCWVyZXBvcnQoTE9HLAogCQkJ CQllcnJtc2coImxvZ2ljYWwgcmVwbGljYXRpb24gcGFyYWxsZWwgYXBwbHkgd29ya2VyIGZvciBz dWJzY3JpcHRpb24gXCIlc1wiIHdpbGwgc3RvcCBiZWNhdXNlIHRoZSBzdWJzY3JpcHRpb24gb3du ZXIncyBzdXBlcnVzZXIgcHJpdmlsZWdlcyBoYXZlIGJlZW4gcmV2b2tlZCIsCiAJCQkJCQkgICBN eVN1YnNjcmlwdGlvbi0+bmFtZSkpOworCQllbHNlIGlmIChhbV9zZXF1ZW5jZXN5bmNfd29ya2Vy KCkpCisJCQllcmVwb3J0KExPRywKKwkJCQkJZXJybXNnKCJsb2dpY2FsIHJlcGxpY2F0aW9uIHNl cXVlbmNlIHN5bmNocm9uaXphdGlvbiB3b3JrZXIgZm9yIHN1YnNjcmlwdGlvbiBcIiVzXCIgd2ls bCBzdG9wIGJlY2F1c2UgdGhlIHN1YnNjcmlwdGlvbiBvd25lcidzIHN1cGVydXNlciBwcml2aWxl Z2VzIGhhdmUgYmVlbiByZXZva2VkIiwKKwkJCQkJCSAgIE15U3Vic2NyaXB0aW9uLT5uYW1lKSk7 CiAJCWVsc2UKIAkJCWVyZXBvcnQoTE9HLAogCQkJCQllcnJtc2coImxvZ2ljYWwgcmVwbGljYXRp b24gd29ya2VyIGZvciBzdWJzY3JpcHRpb24gXCIlc1wiIHdpbGwgcmVzdGFydCBiZWNhdXNlIHRo ZSBzdWJzY3JpcHRpb24gb3duZXIncyBzdXBlcnVzZXIgcHJpdmlsZWdlcyBoYXZlIGJlZW4gcmV2 b2tlZCIsCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3N1YnNjcmlwdGlvbl9y ZWwuaCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfc3Vic2NyaXB0aW9uX3JlbC5oCmluZGV4IDUw MjY0MGQzMDE4Li44NjU3NGI2OTE2OSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9w Z19zdWJzY3JpcHRpb25fcmVsLmgKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19zdWJzY3Jp cHRpb25fcmVsLmgKQEAgLTk2LDYgKzk2LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgTG9naWNhbFJlcFNl cXVlbmNlSW5mbwogCWNoYXIJICAgKnNlcW5hbWU7CiAJY2hhcgkgICAqbnNwbmFtZTsKIAlPaWQJ CQlsb2NhbHJlbGlkOworCWNoYXIJCXJlbHN0YXRlOwogCiAJLyogU2VxdWVuY2UgaW5mb3JtYXRp b24gcmV0cmlldmVkIGZyb20gdGhlIHB1Ymxpc2hlciBub2RlICovCiAJWExvZ1JlY1B0cglwYWdl X2xzbjsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NvbW1hbmRzL3NlcXVlbmNlLmggYi9zcmMv aW5jbHVkZS9jb21tYW5kcy9zZXF1ZW5jZS5oCmluZGV4IDJjM2M0YTNmMDc0Li5mMDBlZWE5ZmJk MSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY29tbWFuZHMvc2VxdWVuY2UuaAorKysgYi9zcmMv aW5jbHVkZS9jb21tYW5kcy9zZXF1ZW5jZS5oCkBAIC00Nyw2ICs0Nyw3IEBAIGV4dGVybiBPYmpl Y3RBZGRyZXNzIEFsdGVyU2VxdWVuY2UoUGFyc2VTdGF0ZSAqcHN0YXRlLCBBbHRlclNlcVN0bXQg KnN0bXQpOwogZXh0ZXJuIHZvaWQgU2VxdWVuY2VDaGFuZ2VQZXJzaXN0ZW5jZShPaWQgcmVsaWQs IGNoYXIgbmV3cmVscGVyc2lzdGVuY2UpOwogZXh0ZXJuIHZvaWQgRGVsZXRlU2VxdWVuY2VUdXBs ZShPaWQgcmVsaWQpOwogZXh0ZXJuIHZvaWQgUmVzZXRTZXF1ZW5jZShPaWQgc2VxX3JlbGlkKTsK K2V4dGVybiB2b2lkIEdldFNlcXVlbmNlKFJlbGF0aW9uIHNlcXJlbCwgaW50NjQgKmxhc3RfdmFs dWUsIGJvb2wgKmlzX2NhbGxlZCk7CiBleHRlcm4gdm9pZCBTZXRTZXF1ZW5jZShPaWQgcmVsaWQs IGludDY0IG5leHQsIGJvb2wgaXNjYWxsZWQpOwogZXh0ZXJuIHZvaWQgUmVzZXRTZXF1ZW5jZUNh Y2hlcyh2b2lkKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vd29ya2Vy X2ludGVybmFsLmggYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93b3JrZXJfaW50ZXJuYWwuaApp bmRleCA0ZWNiZGNmYWRhYy4uYTQxY2IwNDVmMTkgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3Jl cGxpY2F0aW9uL3dvcmtlcl9pbnRlcm5hbC5oCisrKyBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9u L3dvcmtlcl9pbnRlcm5hbC5oCkBAIC0yODYsNyArMjg2LDcgQEAgZXh0ZXJuIHZvaWQgVXBkYXRl VHdvUGhhc2VTdGF0ZShPaWQgc3Vib2lkLCBjaGFyIG5ld19zdGF0ZSk7CiAKIGV4dGVybiB2b2lk IFByb2Nlc3NTeW5jaW5nVGFibGVzRm9yU3luYyhYTG9nUmVjUHRyIGN1cnJlbnRfbHNuKTsKIGV4 dGVybiB2b2lkIFByb2Nlc3NTeW5jaW5nVGFibGVzRm9yQXBwbHkoWExvZ1JlY1B0ciBjdXJyZW50 X2xzbik7Ci1leHRlcm4gdm9pZCBQcm9jZXNzU2VxdWVuY2VzRm9yU3luYyh2b2lkKTsKK2V4dGVy biB2b2lkIE1heWJlTGF1bmNoU2VxdWVuY2VTeW5jV29ya2VyKHZvaWQpOwogCiBwZ19ub3JldHVy biBleHRlcm4gdm9pZCBGaW5pc2hTeW5jV29ya2VyKHZvaWQpOwogZXh0ZXJuIHZvaWQgSW52YWxp ZGF0ZVN5bmNpbmdSZWxTdGF0ZXMoRGF0dW0gYXJnLCBTeXNDYWNoZUlkZW50aWZpZXIgY2FjaGVp ZCwKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAyNl9zdGF0cy5wbCBiL3Ny Yy90ZXN0L3N1YnNjcmlwdGlvbi90LzAyNl9zdGF0cy5wbAppbmRleCA1ZDQ1NzA2MGEwMi4uMmZl MjA5ZjQ2MWYgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAyNl9zdGF0cy5w bAorKysgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMjZfc3RhdHMucGwKQEAgLTE2LDYgKzE2 LDggQEAgJG5vZGVfcHVibGlzaGVyLT5zdGFydDsKICMgQ3JlYXRlIHN1YnNjcmliZXIgbm9kZS4K IG15ICRub2RlX3N1YnNjcmliZXIgPSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyLT5uZXcoJ3N1 YnNjcmliZXInKTsKICRub2RlX3N1YnNjcmliZXItPmluaXQ7Ciskbm9kZV9zdWJzY3JpYmVyLT5h cHBlbmRfY29uZigncG9zdGdyZXNxbC5jb25mJywKKwkibWF4X2xvZ2ljYWxfcmVwbGljYXRpb25f d29ya2VycyA9IDEwIik7CiAkbm9kZV9zdWJzY3JpYmVyLT5zdGFydDsKIAogCmRpZmYgLS1naXQg YS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMzZfc2VxdWVuY2VzLnBsIGIvc3JjL3Rlc3Qvc3Vi c2NyaXB0aW9uL3QvMDM2X3NlcXVlbmNlcy5wbAppbmRleCA0NzE3ODBhMzU4NS4uMWQ4MTUxOGZl MjIgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAzNl9zZXF1ZW5jZXMucGwK KysrIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDM2X3NlcXVlbmNlcy5wbApAQCAtNzUsOCAr NzUsNyBAQCBpcygkcmVzdWx0LCAnMTAwfHQnLAogCiAjIyMjIyMjIyMjCiAjIyBBTFRFUiBTVUJT Q1JJUFRJT04gLi4uIFJFRlJFU0ggUFVCTElDQVRJT04gc2hvdWxkIGNhdXNlIHN5bmMgb2YgbmV3 Ci0jIHNlcXVlbmNlcyBvZiB0aGUgcHVibGlzaGVyLCBidXQgY2hhbmdlcyB0byBleGlzdGluZyBz ZXF1ZW5jZXMgc2hvdWxkCi0jIG5vdCBiZSBzeW5jZWQuCisjIHNlcXVlbmNlcyBvZiB0aGUgcHVi bGlzaGVyLgogIyMjIyMjIyMjIwogCiAjIENyZWF0ZSBhIG5ldyBzZXF1ZW5jZSAncmVncmVzc19z MicsIGFuZCB1cGRhdGUgZXhpc3Rpbmcgc2VxdWVuY2UgJ3JlZ3Jlc3NfczEnCkBAIC04NCw5ICs4 Myw2IEBAICRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAogCSdwb3N0Z3JlcycsIHFxKAogCUNS RUFURSBTRVFVRU5DRSByZWdyZXNzX3MyOwogCUlOU0VSVCBJTlRPIHJlZ3Jlc3Nfc2VxX3Rlc3Qg U0VMRUNUIG5leHR2YWwoJ3JlZ3Jlc3NfczInKSBGUk9NIGdlbmVyYXRlX3NlcmllcygxLDEwMCk7 Ci0KLQktLSBFeGlzdGluZyBzZXF1ZW5jZQotCUlOU0VSVCBJTlRPIHJlZ3Jlc3Nfc2VxX3Rlc3Qg U0VMRUNUIG5leHR2YWwoJ3JlZ3Jlc3NfczEnKSBGUk9NIGdlbmVyYXRlX3NlcmllcygxLDEwMCk7 CiApKTsKIAogIyBEbyBBTFRFUiBTVUJTQ1JJUFRJT04gLi4uIFJFRlJFU0ggUFVCTElDQVRJT04K QEAgLTk3LDE5ICs5Myw2IEBAICRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwo CiAkbm9kZV9zdWJzY3JpYmVyLT5wb2xsX3F1ZXJ5X3VudGlsKCdwb3N0Z3JlcycsICRzeW5jZWRf cXVlcnkpCiAgIG9yIGRpZSAiVGltZWQgb3V0IHdoaWxlIHdhaXRpbmcgZm9yIHN1YnNjcmliZXIg dG8gc3luY2hyb25pemUgZGF0YSI7CiAKLSRyZXN1bHQgPSAkbm9kZV9wdWJsaXNoZXItPnNhZmVf cHNxbCgKLQkncG9zdGdyZXMnLCBxcSgKLQlTRUxFQ1QgbGFzdF92YWx1ZSwgaXNfY2FsbGVkIEZS T00gcmVncmVzc19zMTsKLSkpOwotaXMoJHJlc3VsdCwgJzIwMHx0JywgJ0NoZWNrIHNlcXVlbmNl IHZhbHVlIGluIHRoZSBwdWJsaXNoZXInKTsKLQotIyBDaGVjayAtIGV4aXN0aW5nIHNlcXVlbmNl ICgncmVncmVzc19zMScpIGlzIG5vdCBzeW5jZWQKLSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVy LT5zYWZlX3BzcWwoCi0JJ3Bvc3RncmVzJywgcXEoCi0JU0VMRUNUIGxhc3RfdmFsdWUsIGlzX2Nh bGxlZCBGUk9NIHJlZ3Jlc3NfczE7Ci0pKTsKLWlzKCRyZXN1bHQsICcxMDB8dCcsICdSRUZSRVNI IFBVQkxJQ0FUSU9OIHdpbGwgbm90IHN5bmMgZXhpc3Rpbmcgc2VxdWVuY2UnKTsKLQogIyBDaGVj ayAtIG5ld2x5IHB1Ymxpc2hlZCBzZXF1ZW5jZSAoJ3JlZ3Jlc3NfczInKSBpcyBzeW5jZWQKICRy ZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoCiAJJ3Bvc3RncmVzJywgcXEoCkBA IC0xMTksMTYgKzEwMiwxMyBAQCBpcygkcmVzdWx0LCAnMTAwfHQnLAogCSdSRUZSRVNIIFBVQkxJ Q0FUSU9OIHdpbGwgc3luYyBuZXdseSBwdWJsaXNoZWQgc2VxdWVuY2UnKTsKIAogIyMjIyMjIyMj IwotIyBUZXN0OiBSRUZSRVNIIFNFUVVFTkNFUyBhbmQgUkVGUkVTSCBQVUJMSUNBVElPTiAoY29w eV9kYXRhID0gZmFsc2UpCi0jCi0jIDEuIEFMVEVSIFNVQlNDUklQVElPTiAuLi4gUkVGUkVTSCBT RVFVRU5DRVMgc2hvdWxkIHJlLXN5bmNocm9uaXplIGFsbAotIyAgICBleGlzdGluZyBzZXF1ZW5j ZXMsIGJ1dCBub3Qgc3luY2hyb25pemUgbmV3bHkgYWRkZWQgb25lcy4KLSMgMi4gQUxURVIgU1VC U0NSSVBUSU9OIC4uLiBSRUZSRVNIIFBVQkxJQ0FUSU9OIHdpdGggKGNvcHlfZGF0YSA9IGZhbHNl KSBzaG91bGQKLSMgICAgYWxzbyBub3QgdXBkYXRlIHNlcXVlbmNlIHZhbHVlcyBmb3IgbmV3bHkg YWRkZWQgc2VxdWVuY2VzLgorIyBUZXN0OgorIyAxLiBBdXRvbWF0aWMgdXBkYXRlIG9mIGV4aXN0 aW5nIHNlcXVlbmNlIHZhbHVlcworIyAyLiBOZXdseSBhZGRlZCBzZXF1ZW5jZXMgYXJlIG5vdCBh dXRvbWF0aWNhbGx5IHVwZGF0ZWQuCiAjIyMjIyMjIyMjCiAKLSMgQ3JlYXRlIGEgbmV3IHNlcXVl bmNlICdyZWdyZXNzX3MzJywgYW5kIHVwZGF0ZSB0aGUgZXhpc3Rpbmcgc2VxdWVuY2UKLSMgJ3Jl Z3Jlc3NfczInLgorIyBDcmVhdGUgYSBuZXcgc2VxdWVuY2UgJ3JlZ3Jlc3NfczMnLCBhbmQgdXBk YXRlIHRoZSBleGlzdGluZyBzZXF1ZW5jZXMKKyMgJ3JlZ3Jlc3NfczInIGFuZCAncmVncmVzc19z MScuCiAkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKIAkncG9zdGdyZXMnLCBxcSgKIAlDUkVB VEUgU0VRVUVOQ0UgcmVncmVzc19zMzsKQEAgLTEzNiw1MyArMTE2LDI4IEBAICRub2RlX3B1Ymxp c2hlci0+c2FmZV9wc3FsKAogCiAJLS0gRXhpc3Rpbmcgc2VxdWVuY2UKIAlJTlNFUlQgSU5UTyBy ZWdyZXNzX3NlcV90ZXN0IFNFTEVDVCBuZXh0dmFsKCdyZWdyZXNzX3MyJykgRlJPTSBnZW5lcmF0 ZV9zZXJpZXMoMSwxMDApOworCUlOU0VSVCBJTlRPIHJlZ3Jlc3Nfc2VxX3Rlc3QgU0VMRUNUIG5l eHR2YWwoJ3JlZ3Jlc3NfczEnKSBGUk9NIGdlbmVyYXRlX3NlcmllcygxLDEwMCk7CiApKTsKIAot IyAxLiBEbyBBTFRFUiBTVUJTQ1JJUFRJT04gLi4uIFJFRlJFU0ggU0VRVUVOQ0VTCi0kcmVzdWx0 ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKAotCSdwb3N0Z3JlcycsIHFxKAotCUFMVEVS IFNVQlNDUklQVElPTiByZWdyZXNzX3NlcV9zdWIgUkVGUkVTSCBTRVFVRU5DRVM7Ci0pKTsKLSRu b2RlX3N1YnNjcmliZXItPnBvbGxfcXVlcnlfdW50aWwoJ3Bvc3RncmVzJywgJHN5bmNlZF9xdWVy eSkKLSAgb3IgZGllICJUaW1lZCBvdXQgd2hpbGUgd2FpdGluZyBmb3Igc3Vic2NyaWJlciB0byBz eW5jaHJvbml6ZSBkYXRhIjsKLQogIyBDaGVjayAtIGV4aXN0aW5nIHNlcXVlbmNlcyAoJ3JlZ3Jl c3NfczEnIGFuZCAncmVncmVzc19zMicpIGFyZSBzeW5jZWQKLSRyZXN1bHQgPSAkbm9kZV9zdWJz Y3JpYmVyLT5zYWZlX3BzcWwoCi0JJ3Bvc3RncmVzJywgcXEoCi0JU0VMRUNUIGxhc3RfdmFsdWUs IGlzX2NhbGxlZCBGUk9NIHJlZ3Jlc3NfczE7Ci0pKTsKLWlzKCRyZXN1bHQsICcyMDB8dCcsICdS RUZSRVNIIFNFUVVFTkNFUyB3aWxsIHN5bmMgZXhpc3Rpbmcgc2VxdWVuY2VzJyk7Ci0kcmVzdWx0 ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKAotCSdwb3N0Z3JlcycsIHFxKAotCVNFTEVD VCBsYXN0X3ZhbHVlLCBpc19jYWxsZWQgRlJPTSByZWdyZXNzX3MyOwotKSk7Ci1pcygkcmVzdWx0 LCAnMjAwfHQnLCAnUkVGUkVTSCBTRVFVRU5DRVMgd2lsbCBzeW5jIGV4aXN0aW5nIHNlcXVlbmNl cycpOwogCi0jIENoZWNrIC0gbmV3bHkgcHVibGlzaGVkIHNlcXVlbmNlICgncmVncmVzc19zMycp IGlzIG5vdCBzeW5jZWQKLSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoCi0J J3Bvc3RncmVzJywgcXEoCi0JU0VMRUNUIGxhc3RfdmFsdWUsIGlzX2NhbGxlZCBGUk9NIHJlZ3Jl c3NfczM7Ci0pKTsKLWlzKCRyZXN1bHQsICcxfGYnLAotCSdSRUZSRVNIIFNFUVVFTkNFUyB3aWxs IG5vdCBzeW5jIG5ld2x5IHB1Ymxpc2hlZCBzZXF1ZW5jZScpOworIyBQb2xsIHVudGlsIHJlZ3Jl c3NfczEgcmVmbGVjdHMgdGhlIHVwZGF0ZWQgc2VxdWVuY2UgdmFsdWUKKyRub2RlX3N1YnNjcmli ZXItPnBvbGxfcXVlcnlfdW50aWwoJ3Bvc3RncmVzJywKKyAgICBxcShTRUxFQ1QgbGFzdF92YWx1 ZSA9IDIwMCBBTkQgaXNfY2FsbGVkID0gJ3QnIEZST00gcmVncmVzc19zMTspKQorICBvciBkaWUg IlRpbWVkIG91dCB3aGlsZSB3YWl0aW5nIGZvciByZWdyZXNzX3MxIHNlcXVlbmNlIHRvIHN5bmMi OwogCi0jIDIuIERvIEFMVEVSIFNVQlNDUklQVElPTiAuLi4gUkVGUkVTSCBQVUJMSUNBVElPTiB3 aXRoIGNvcHlfZGF0YSBhcyBmYWxzZQotJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVf cHNxbCgKLQkncG9zdGdyZXMnLCBxcSgKLQlBTFRFUiBTVUJTQ1JJUFRJT04gcmVncmVzc19zZXFf c3ViIFJFRlJFU0ggUFVCTElDQVRJT04gV0lUSCAoY29weV9kYXRhID0gZmFsc2UpOwotKSk7Ci0k bm9kZV9zdWJzY3JpYmVyLT5wb2xsX3F1ZXJ5X3VudGlsKCdwb3N0Z3JlcycsICRzeW5jZWRfcXVl cnkpCi0gIG9yIGRpZSAiVGltZWQgb3V0IHdoaWxlIHdhaXRpbmcgZm9yIHN1YnNjcmliZXIgdG8g c3luY2hyb25pemUgZGF0YSI7CisjIFBvbGwgdW50aWwgcmVncmVzc19zMiByZWZsZWN0cyB0aGUg dXBkYXRlZCBzZXF1ZW5jZSB2YWx1ZQorJG5vZGVfc3Vic2NyaWJlci0+cG9sbF9xdWVyeV91bnRp bCgncG9zdGdyZXMnLAorICAgIHFxKFNFTEVDVCBsYXN0X3ZhbHVlID0gMjAwIEFORCBpc19jYWxs ZWQgPSAndCcgRlJPTSByZWdyZXNzX3MyOykpCisgIG9yIGRpZSAiVGltZWQgb3V0IHdoaWxlIHdh aXRpbmcgZm9yIHJlZ3Jlc3NfczIgc2VxdWVuY2UgdG8gc3luYyI7CiAKLSMgQ2hlY2sgLSBuZXds eSBwdWJsaXNoZWQgc2VxdWVuY2UgKCdyZWdyZXNzX3MzJykgaXMgbm90IHN5bmNlZCB3aXRoIGNv cHlfZGF0YQotIyBhcyBmYWxzZS4KKyMgQ2hlY2sgLSBuZXdseSBwdWJsaXNoZWQgc2VxdWVuY2Ug KCdyZWdyZXNzX3MzJykgaXMgbm90IHN5bmNlZAogJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXIt PnNhZmVfcHNxbCgKIAkncG9zdGdyZXMnLCBxcSgKIAlTRUxFQ1QgbGFzdF92YWx1ZSwgaXNfY2Fs bGVkIEZST00gcmVncmVzc19zMzsKICkpOwogaXMoJHJlc3VsdCwgJzF8ZicsCi0JJ1JFRlJFU0gg UFVCTElDQVRJT04gd2lsbCBub3Qgc3luYyBuZXdseSBwdWJsaXNoZWQgc2VxdWVuY2Ugd2l0aCBj b3B5X2RhdGEgYXMgZmFsc2UnCi0pOworCSdOZXdseSBwdWJsaXNoZWQgc2VxdWVuY2VzIGFyZSBu b3Qgc3luY2VkIGF1dG9tYXRpY2FsbHknKTsKIAogIyMjIyMjIyMjIwogIyBBTFRFUiBTVUJTQ1JJ UFRJT04gLi4uIFJFRlJFU0ggUFVCTElDQVRJT04gc2hvdWxkIHJlcG9ydCBhbiBlcnJvciB3aGVu OgotLSAKMi41MS4xLndpbmRvd3MuMQoK --_003_OS9PR01MB1691377CDB1468CDC9820BBEB9470AOS9PR01MB16913jp_ Content-Type: application/octet-stream; name="v8-0002-Synchronize-sequences-directly-in-REFRESH-SEQUENC.patch" Content-Description: v8-0002-Synchronize-sequences-directly-in-REFRESH-SEQUENC.patch Content-Disposition: attachment; filename="v8-0002-Synchronize-sequences-directly-in-REFRESH-SEQUENC.patch"; size=17632; creation-date="Sat, 28 Feb 2026 08:40:10 GMT"; modification-date="Sat, 28 Feb 2026 08:40:30 GMT" Content-Transfer-Encoding: base64 RnJvbSA1M2Q0YTE5OWNiNDcwM2RlYThlYWE1NjhlN2FhNjI0Mjc3NDk2NzkzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBaaGlqaWUgSG91IDxob3V6ai5mbnN0QGZ1aml0c3UuY29tPgpE YXRlOiBTYXQsIDI4IEZlYiAyMDI2IDE2OjE0OjE0ICswODAwClN1YmplY3Q6IFtQQVRDSCB2OCAy LzJdIFN5bmNocm9uaXplIHNlcXVlbmNlcyBkaXJlY3RseSBpbiBSRUZSRVNIIFNFUVVFTkNFUwog Y29tbWFuZAoKVGhlIEFMVEVSIFNVQlNDUklQVElPTiAuLi4gUkVGUkVTSCBTRVFVRU5DRVMgY29t bWFuZCBjdXJyZW50bHkgc2V0cyBhbGwKc2VxdWVuY2Ugc3RhdGVzIGluIHBnX3N1YnNjcmlwdGlv bl9yZWwgdG8gSU5JVCBhbmQgcmVsaWVzIG9uIHRoZSBzZXF1ZW5jZSBzeW5jCndvcmtlciB0byBw ZXJmb3JtIHRoZSBhY3R1YWwgc3luY2hyb25pemF0aW9uIGFuZCB1cGRhdGUgc3RhdGVzIHRvIFJF QURZLgoKV2l0aCB0aGUgcmVjZW50IGNoYW5nZSBtYWtpbmcgdGhlIHNlcXVlbmNlIHN5bmMgd29y a2VyIGxvbmctbGl2ZWQsIG1vc3QKc2VxdWVuY2VzIGFyZSBub3cgc3luY2hyb25pemVkIGluIHRo ZSBiYWNrZ3JvdW5kLCByZWR1Y2luZyB0aGUgbmVlZCBmb3IKUkVGUkVTSCBTRVFVRU5DRVMuIEhv d2V2ZXIsIHRoZSBjb21tYW5kIHJlbWFpbnMgbmVjZXNzYXJ5IGZvciBzZXF1ZW5jZXMgdGhhdApo YXZlbid0IGJlZW4gc3luY2hyb25pemVkLgoKVGhpcyBjb21taXQgZW5oYW5jZXMgUkVGUkVTSCBT RVFVRU5DRVMgdG8gc3luY2hyb25pemUgc2VxdWVuY2VzIGRpcmVjdGx5IHdpdGhpbgp0aGUgY29t bWFuZCBpdHNlbGYsIGVsaW1pbmF0aW5nIHRoZSBvdmVyaGVhZCBvZiBsYXVuY2hpbmcgYSB3b3Jr ZXIgYW5kIHVwZGF0aW5nCmNhdGFsb2cgZW50cmllcyB1bm5lY2Vzc2FyaWx5LgotLS0KIHNyYy9i YWNrZW5kL2NvbW1hbmRzL3N1YnNjcmlwdGlvbmNtZHMuYyAgICAgICB8ICAxNyArLQogLi4uL3Jl cGxpY2F0aW9uL2xvZ2ljYWwvc2VxdWVuY2VzeW5jLmMgICAgICAgIHwgMTY1ICsrKysrKysrKysr KysrLS0tLQogc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbHdvcmtlci5oICAgICAgIHwg ICA1ICsKIHNyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAzNl9zZXF1ZW5jZXMucGwgICAgICB8ICA0 OSArKysrKysKIDQgZmlsZXMgY2hhbmdlZCwgMTkwIGluc2VydGlvbnMoKyksIDQ2IGRlbGV0aW9u cygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3N1YnNjcmlwdGlvbmNtZHMu YyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3N1YnNjcmlwdGlvbmNtZHMuYwppbmRleCA1ZTNjMDk2 NGQzOC4uMGE1YWNmZGEwZmYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3N1YnNj cmlwdGlvbmNtZHMuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9zdWJzY3JpcHRpb25jbWRz LmMKQEAgLTEyNDUsMjUgKzEyNDUsMTAgQEAgQWx0ZXJTdWJzY3JpcHRpb25fcmVmcmVzaF9zZXEo U3Vic2NyaXB0aW9uICpzdWIpCiAKIAlQR19UUlkoKTsKIAl7Ci0JCUxpc3QJICAgKnN1YnJlbF9z dGF0ZXM7Ci0KIAkJY2hlY2tfcHVibGljYXRpb25zX29yaWdpbl9zZXF1ZW5jZXMod3Jjb25uLCBz dWItPnB1YmxpY2F0aW9ucywgdHJ1ZSwKIAkJCQkJCQkJCQkJc3ViLT5vcmlnaW4sIE5VTEwsIDAs IHN1Yi0+bmFtZSk7CiAKLQkJLyogR2V0IGxvY2FsIHNlcXVlbmNlIGxpc3QuICovCi0JCXN1YnJl bF9zdGF0ZXMgPSBHZXRTdWJzY3JpcHRpb25SZWxhdGlvbnMoc3ViLT5vaWQsIGZhbHNlLCB0cnVl LCBmYWxzZSk7Ci0JCWZvcmVhY2hfcHRyKFN1YnNjcmlwdGlvblJlbFN0YXRlLCBzdWJyZWwsIHN1 YnJlbF9zdGF0ZXMpCi0JCXsKLQkJCU9pZAkJCXJlbGlkID0gc3VicmVsLT5yZWxpZDsKLQotCQkJ VXBkYXRlU3Vic2NyaXB0aW9uUmVsU3RhdGUoc3ViLT5vaWQsIHJlbGlkLCBTVUJSRUxfU1RBVEVf SU5JVCwKLQkJCQkJCQkJCSAgIEludmFsaWRYTG9nUmVjUHRyLCBmYWxzZSk7Ci0JCQllcmVwb3J0 KERFQlVHMSwKLQkJCQkJZXJybXNnX2ludGVybmFsKCJzZXF1ZW5jZSBcIiVzLiVzXCIgb2Ygc3Vi c2NyaXB0aW9uIFwiJXNcIiBzZXQgdG8gSU5JVCBzdGF0ZSIsCi0JCQkJCQkJCQlnZXRfbmFtZXNw YWNlX25hbWUoZ2V0X3JlbF9uYW1lc3BhY2UocmVsaWQpKSwKLQkJCQkJCQkJCWdldF9yZWxfbmFt ZShyZWxpZCksCi0JCQkJCQkJCQlzdWItPm5hbWUpKTsKLQkJfQorCQlBbHRlclN1YlN5bmNTZXF1 ZW5jZXMod3Jjb25uLCBzdWItPm9pZCwgc3ViLT5uYW1lLCBzdWItPnJ1bmFzb3duZXIpOwogCX0K IAlQR19GSU5BTExZKCk7CiAJewpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24v bG9naWNhbC9zZXF1ZW5jZXN5bmMuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwv c2VxdWVuY2VzeW5jLmMKaW5kZXggN2RmODcxYWU3YmMuLjcxNDUyMjYxZGQyIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3NlcXVlbmNlc3luYy5jCisrKyBiL3Ny Yy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvc2VxdWVuY2VzeW5jLmMKQEAgLTIwOCw3ICsy MDgsNyBAQCBnZXRfc2VxdWVuY2VzX3N0cmluZyhMaXN0ICpzZXFpbmRleGVzLCBMaXN0ICpzZXFp bmZvcywgU3RyaW5nSW5mbyBidWYpCiAgKi8KIHN0YXRpYyB2b2lkCiByZXBvcnRfc2VxdWVuY2Vf ZXJyb3JzKExpc3QgKm1pc21hdGNoZWRfc2Vxc19pZHgsIExpc3QgKmluc3VmZnBlcm1fc2Vxc19p ZHgsCi0JCQkJCSAgIExpc3QgKm1pc3Npbmdfc2Vxc19pZHgsIExpc3QgKnNlcWluZm9zKQorCQkJ CQkgICBMaXN0ICptaXNzaW5nX3NlcXNfaWR4LCBMaXN0ICpzZXFpbmZvcywgY2hhciAqc3VibmFt ZSkKIHsKIAlTdHJpbmdJbmZvCXNlcXN0cjsKIApAQCAtMjU0LDcgKzI1NCw3IEBAIHJlcG9ydF9z ZXF1ZW5jZV9lcnJvcnMoTGlzdCAqbWlzbWF0Y2hlZF9zZXFzX2lkeCwgTGlzdCAqaW5zdWZmcGVy bV9zZXFzX2lkeCwKIAllcmVwb3J0KEVSUk9SLAogCQkJZXJyY29kZShFUlJDT0RFX09CSkVDVF9O T1RfSU5fUFJFUkVRVUlTSVRFX1NUQVRFKSwKIAkJCWVycm1zZygibG9naWNhbCByZXBsaWNhdGlv biBzZXF1ZW5jZSBzeW5jaHJvbml6YXRpb24gZmFpbGVkIGZvciBzdWJzY3JpcHRpb24gXCIlc1wi IiwKLQkJCQkgICBNeVN1YnNjcmlwdGlvbi0+bmFtZSkpOworCQkJCSAgIHN1Ym5hbWUpKTsKIH0K IAogLyoKQEAgLTI4Miw2ICsyODIsNyBAQCBnZXRfYW5kX3ZhbGlkYXRlX3NlcV9pbmZvKFR1cGxl VGFibGVTbG90ICpzbG90LCBSZWxhdGlvbiAqc2VxdWVuY2VfcmVsLAogCUhlYXBUdXBsZQl0dXA7 CiAJRm9ybV9wZ19zZXF1ZW5jZSBsb2NhbF9zZXE7CiAJTG9naWNhbFJlcFNlcXVlbmNlSW5mbyAq c2VxaW5mb19sb2NhbDsKKwlMT0NLTU9ERQlsb2NrbW9kZTsKIAogCSpzZXFpZHggPSBEYXR1bUdl dEludDMyKHNsb3RfZ2V0YXR0cihzbG90LCArK2NvbCwgJmlzbnVsbCkpOwogCUFzc2VydCghaXNu dWxsKTsKQEAgLTMyOCw3ICszMjksMjAgQEAgZ2V0X2FuZF92YWxpZGF0ZV9zZXFfaW5mbyhUdXBs ZVRhYmxlU2xvdCAqc2xvdCwgUmVsYXRpb24gKnNlcXVlbmNlX3JlbCwKIAogCXNlcWluZm9fbG9j YWwtPmZvdW5kX29uX3B1YiA9IHRydWU7CiAKLQkqc2VxdWVuY2VfcmVsID0gdHJ5X3RhYmxlX29w ZW4oc2VxaW5mb19sb2NhbC0+bG9jYWxyZWxpZCwgUm93RXhjbHVzaXZlTG9jayk7CisJLyoKKwkg KiBXZSB0YWtlIGEgc3Ryb25nZXIgbG9jayBkdXJpbmcgRERMIGNvbW1hbmRzIChjdXJyZW50bHkg b25seSBBTFRFUgorCSAqIFNVQlNDUklQVElPTiAuLi4gUkVGUkVTSCBTRVFVRU5DRVMpIHRvIHBy ZXZlbnQgY29uY3VycmVudCBzZXF1ZW5jZXN5bmMKKwkgKiB3b3JrZXJzIGZyb20gdXBkYXRpbmcg dGhlIHBhZ2VfbHNuIHdoaWxlIHRoZSBEREwgaXMgYWxzbyB1cGRhdGluZyB0aGUKKwkgKiBzYW1l IHNlcXVlbmNlLiBUaGlzIGVuc3VyZXMgd2UgY2FuIGFsd2F5cyBmZXRjaCB0aGUgbGF0ZXN0IHBh Z2VfbHNuIHRvCisJICogZGV0ZXJtaW5lIHdoZXRoZXIgdGhlIHJlbW90ZSBzZXF1ZW5jZSB2YWx1 ZSBzaG91bGQgYmUgc3luY2hyb25pemVkIChzZWUKKwkgKiBzaG91bGRfc3luY19zZXF1ZW5jZSku CisJICovCisJaWYgKElzTG9naWNhbFdvcmtlcigpKQorCQlsb2NrbW9kZSA9IFJvd0V4Y2x1c2l2 ZUxvY2s7CisJZWxzZQorCQlsb2NrbW9kZSA9IFNoYXJlUm93RXhjbHVzaXZlTG9jazsKKworCSpz ZXF1ZW5jZV9yZWwgPSB0cnlfdGFibGVfb3BlbihzZXFpbmZvX2xvY2FsLT5sb2NhbHJlbGlkLCBs b2NrbW9kZSk7CiAKIAkvKiBTZXF1ZW5jZSB3YXMgY29uY3VycmVudGx5IGRyb3BwZWQ/ICovCiAJ aWYgKCEqc2VxdWVuY2VfcmVsKQpAQCAtMzY2LDcgKzM4MCw4IEBAIGdldF9hbmRfdmFsaWRhdGVf c2VxX2luZm8oVHVwbGVUYWJsZVNsb3QgKnNsb3QsIFJlbGF0aW9uICpzZXF1ZW5jZV9yZWwsCiAg KiBQcmVsaW1pbmFyeSBjaGVjayB0byBkZXRlcm1pbmUgaWYgY29weWluZyB0aGUgc2VxdWVuY2Ug aXMgYWxsb3dlZC4KICAqLwogc3RhdGljIENvcHlTZXFSZXN1bHQKLXZhbGlkYXRlX3NlcXN5bmNf c3RhdGUoTG9naWNhbFJlcFNlcXVlbmNlSW5mbyAqc2VxaW5mbywgUmVsYXRpb24gc2VxdWVuY2Vf cmVsKQordmFsaWRhdGVfc2Vxc3luY19zdGF0ZShMb2dpY2FsUmVwU2VxdWVuY2VJbmZvICpzZXFp bmZvLCBSZWxhdGlvbiBzZXF1ZW5jZV9yZWwsCisJCQkJCSAgIFhMb2dSZWNQdHIgbG9jYWxfcGFn ZV9sc24pCiB7CiAJQWNsUmVzdWx0CWFjbHJlc3VsdDsKIAlPaWQJCQlzZXFvaWQgPSBzZXFpbmZv LT5sb2NhbHJlbGlkOwpAQCAtMzc2LDYgKzM5MSwxNiBAQCB2YWxpZGF0ZV9zZXFzeW5jX3N0YXRl KExvZ2ljYWxSZXBTZXF1ZW5jZUluZm8gKnNlcWluZm8sIFJlbGF0aW9uIHNlcXVlbmNlX3JlbCkK IAkvKiBQZXJmb3JtIGRyaWZ0IGNoZWNrIGlmIGl0J3Mgbm90IHRoZSBpbml0aWFsIHN5bmMgKi8K IAlpZiAoc2VxaW5mby0+cmVsc3RhdGUgPT0gU1VCUkVMX1NUQVRFX1JFQURZKQogCXsKKwkJLyoK KwkJICogU2tpcCBzeW5jaHJvbml6YXRpb24gaWYgd2UgYXJlIHByb2Nlc3Npbmcgb3V0ZGF0ZWQg c2VxdWVuY2UgaW5mbworCQkgKiBiYXNlZCBvbiB0aGUgTFNOLiBUaGlzIG9jY3VycyB3aGVuIHRo ZSBzZXF1ZW5jZSBoYXMgYmVlbiB1cGRhdGVkIHRvCisJCSAqIG1vcmUgcmVjZW50IGRhdGEgY29u Y3VycmVudGx5ICh2aWEgZWl0aGVyIEFMVEVSIFNVQlNDUklQVElPTiAuLi4KKwkJICogUkVGUkVT SCBTRVFVRU5DRVMgb3IgdGhlIHNlcXVlbmNlc3luYyB3b3JrZXIpLgorCQkgKi8KKwkJaWYgKFhM b2dSZWNQdHJJc1ZhbGlkKGxvY2FsX3BhZ2VfbHNuKSAmJgorCQkJbG9jYWxfcGFnZV9sc24gPiBz ZXFpbmZvLT5wYWdlX2xzbikKKwkJCXJldHVybiBDT1BZU0VRX05PX0RSSUZUOworCiAJCS8qCiAJ CSAqIFZlcmlmeSB0aGF0IHRoZSBjdXJyZW50IHVzZXIgaGFzIFNFTEVDVCBwcml2aWxlZ2Ugb24g dGhlIHNlcXVlbmNlLgogCQkgKiBUaGlzIGlzIHJlcXVpcmVkIHRvIHJlYWQgdGhlIHNlcXVlbmNl IHN0YXRlIGJlbG93LgpAQCAtMzg5LDkgKzQxNCwzMiBAQCB2YWxpZGF0ZV9zZXFzeW5jX3N0YXRl KExvZ2ljYWxSZXBTZXF1ZW5jZUluZm8gKnNlcWluZm8sIFJlbGF0aW9uIHNlcXVlbmNlX3JlbCkK IAkJR2V0U2VxdWVuY2Uoc2VxdWVuY2VfcmVsLCAmbG9jYWxfbGFzdF92YWx1ZSwgJmxvY2FsX2lz X2NhbGxlZCk7CiAKIAkJLyoKLQkJICogU2tpcCBzeW5jaHJvbml6YXRpb24gaWYgdGhlIHNlcXVl bmNlIGlzIGFscmVhZHkgaW4gUkVBRFkgc3RhdGUgYW5kCi0JCSAqIGhhcyBub3QgZHJpZnRlZCBm cm9tIHRoZSBwdWJsaXNoZXIncyB2YWx1ZS4KKwkJICogU2tpcCBzeW5jaHJvbml6YXRpb24gaWYg dGhlIGxvY2FsIHNlcXVlbmNlIHZhbHVlIGlzIGFscmVhZHkgYWhlYWQgb2YKKwkJICogdGhlIHB1 Ymxpc2hlcidzIHZhbHVlLgorCQkgKgorCQkgKiBYWFggVGhpcyBvY2N1cnMgbm90IG9ubHkgd2hl biB0aGUgbG9jYWwgc2VxdWVuY2UgaGFzIGJlZW4KKwkJICogc3luY2hyb25pemVkIHRvIGEgbmV3 ZXIgdmFsdWUgZnJvbSB0aGUgcHVibGlzaGVyICh3aGVyZSBza2lwcGluZyBpcworCQkgKiBuZWNl c3NhcnkgdG8gYXZvaWQgYmFja3dhcmQgbW92ZW1lbnQpLCBidXQgYWxzbyB3aGVuIHRoZSBsb2Nh bAorCQkgKiBzZXF1ZW5jZSBoYXMgYmVlbiBtYW51YWxseSB1cGRhdGVkIGJ5IHRoZSB1c2VyIG9u IHRoZSBzdWJzY3JpYmVyLiBUaGUKKwkJICogbGF0dGVyIGNvdWxkIGJlIGNvbnNpZGVyZWQgYSBy ZXBsaWNhdGlvbiBjb25mbGljdCwgYW5kIG92ZXJ3cml0aW5nCisJCSAqIHRoZSB1c2VyJ3MgdXBk YXRlIG1pZ2h0IGJlIGFjY2VwdGFibGUuIEhvd2V2ZXIsIHNpbmNlIHdlIGNhbm5vdAorCQkgKiBl YXNpbHkgZGlzdGluZ3Vpc2ggYmV0d2VlbiB0aGVzZSB0d28gc2NlbmFyaW9zLCB3ZSBjaG9vc2Ug dG8gc2tpcAorCQkgKiBzeW5jaHJvbml6YXRpb24gaW4gYWxsIGNhc2VzIGFuZCBlbWl0IGEgV0FS TklORyB0byBub3RpZnkgdGhlIHVzZXIgdG8KKwkJICogbWFudWFsbHkgcmVzb2x2ZSB0aGUgY29u ZmxpY3QuCiAJCSAqLworCQlpZiAobG9jYWxfbGFzdF92YWx1ZSA+IHNlcWluZm8tPmxhc3RfdmFs dWUpCisJCXsKKwkJCWVyZXBvcnQoV0FSTklORywKKwkJCQkJZXJyY29kZShFUlJDT0RFX09CSkVD VF9OT1RfSU5fUFJFUkVRVUlTSVRFX1NUQVRFKSwKKwkJCQkJZXJybXNnKCJza2lwcGVkIHN5bmNo cm9uaXppbmcgdGhlIHNlcXVlbmNlIFwiJXMuJXNcIiIsCisJCQkJCQkgICBzZXFpbmZvLT5uc3Bu YW1lLCBzZXFpbmZvLT5zZXFuYW1lKSwKKwkJCQkJZXJyZGV0YWlsKCJUaGUgbG9jYWwgbGFzdF92 YWx1ZSAlbGxkIGlzIGFoZWFkIG9mIHRoZSBvbmUgb24gcHVibGlzaGVyIiwKKwkJCQkJCQkgIChs b25nIGxvbmcgaW50KSBsb2NhbF9sYXN0X3ZhbHVlKSk7CisKKwkJCXJldHVybiBDT1BZU0VRX05P X0RSSUZUOworCQl9CisKKwkJLyogU2tpcCBzeW5jaHJvbml6YXRpb24gaWYgdGhlIHNlcXVlbmNl IGhhc24ndCBkcmlmdGVkICovCiAJCWlmIChsb2NhbF9sYXN0X3ZhbHVlID09IHNlcWluZm8tPmxh c3RfdmFsdWUgJiYKIAkJCWxvY2FsX2lzX2NhbGxlZCA9PSBzZXFpbmZvLT5pc19jYWxsZWQpCiAJ CQlyZXR1cm4gQ09QWVNFUV9OT19EUklGVDsKQEAgLTQxMiwxMiArNDYwLDE2IEBAIHZhbGlkYXRl X3NlcXN5bmNfc3RhdGUoTG9naWNhbFJlcFNlcXVlbmNlSW5mbyAqc2VxaW5mbywgUmVsYXRpb24g c2VxdWVuY2VfcmVsKQogICogc3luY2hyb25pemVkLgogICovCiBzdGF0aWMgQ29weVNlcVJlc3Vs dAotY29weV9zZXF1ZW5jZShMb2dpY2FsUmVwU2VxdWVuY2VJbmZvICpzZXFpbmZvLCBSZWxhdGlv biBzZXF1ZW5jZV9yZWwpCitjb3B5X3NlcXVlbmNlKExvZ2ljYWxSZXBTZXF1ZW5jZUluZm8gKnNl cWluZm8sIFJlbGF0aW9uIHNlcXVlbmNlX3JlbCwKKwkJCSAgT2lkIHN1YmlkLCBib29sIHJ1bl9h c19vd25lcikKIHsKIAlVc2VyQ29udGV4dCB1Y3h0OwotCWJvb2wJCXJ1bl9hc19vd25lciA9IE15 U3Vic2NyaXB0aW9uLT5ydW5hc293bmVyOwogCU9pZAkJCXNlcW9pZCA9IHNlcWluZm8tPmxvY2Fs cmVsaWQ7CiAJQ29weVNlcVJlc3VsdCByZXN1bHQ7CisJWExvZ1JlY1B0cglsb2NhbF9wYWdlX2xz bjsKKworCSh2b2lkKSBHZXRTdWJzY3JpcHRpb25SZWxTdGF0ZShzdWJpZCwgUmVsYXRpb25HZXRS ZWxpZChzZXF1ZW5jZV9yZWwpLAorCQkJCQkJCQkgICAmbG9jYWxfcGFnZV9sc24pOwogCiAJLyoK IAkgKiBJZiB0aGUgdXNlciBkaWQgbm90IG9wdCB0byBydW4gYXMgdGhlIG93bmVyIG9mIHRoZSBz dWJzY3JpcHRpb24KQEAgLTQyNiw3ICs0NzgsNyBAQCBjb3B5X3NlcXVlbmNlKExvZ2ljYWxSZXBT ZXF1ZW5jZUluZm8gKnNlcWluZm8sIFJlbGF0aW9uIHNlcXVlbmNlX3JlbCkKIAlpZiAoIXJ1bl9h c19vd25lcikKIAkJU3dpdGNoVG9VbnRydXN0ZWRVc2VyKHNlcXVlbmNlX3JlbC0+cmRfcmVsLT5y ZWxvd25lciwgJnVjeHQpOwogCi0JcmVzdWx0ID0gdmFsaWRhdGVfc2Vxc3luY19zdGF0ZShzZXFp bmZvLCBzZXF1ZW5jZV9yZWwpOworCXJlc3VsdCA9IHZhbGlkYXRlX3NlcXN5bmNfc3RhdGUoc2Vx aW5mbywgc2VxdWVuY2VfcmVsLCBsb2NhbF9wYWdlX2xzbik7CiAKIAlpZiAocmVzdWx0ICE9IENP UFlTRVFfU1VDQ0VTUykKIAl7CkBAIC00NTMsOCArNTA1LDkgQEAgY29weV9zZXF1ZW5jZShMb2dp Y2FsUmVwU2VxdWVuY2VJbmZvICpzZXFpbmZvLCBSZWxhdGlvbiBzZXF1ZW5jZV9yZWwpCiAJICog UmVjb3JkIHRoZSByZW1vdGUgc2VxdWVuY2UncyBMU04gaW4gcGdfc3Vic2NyaXB0aW9uX3JlbCBh bmQgbWFyayB0aGUKIAkgKiBzZXF1ZW5jZSBhcyBSRUFEWSBpZiB1cGRhdGluZyBhIHNlcXVlbmNl IHRoYXQgaXMgaW4gSU5JVCBzdGF0ZS4KIAkgKi8KLQlpZiAoc2VxaW5mby0+cmVsc3RhdGUgPT0g U1VCUkVMX1NUQVRFX0lOSVQpCi0JCVVwZGF0ZVN1YnNjcmlwdGlvblJlbFN0YXRlKE15U3Vic2Ny aXB0aW9uLT5vaWQsIHNlcW9pZCwgU1VCUkVMX1NUQVRFX1JFQURZLAorCWlmIChzZXFpbmZvLT5y ZWxzdGF0ZSA9PSBTVUJSRUxfU1RBVEVfSU5JVCB8fAorCQlzZXFpbmZvLT5wYWdlX2xzbiAhPSBs b2NhbF9wYWdlX2xzbikKKwkJVXBkYXRlU3Vic2NyaXB0aW9uUmVsU3RhdGUoc3ViaWQsIHNlcW9p ZCwgU1VCUkVMX1NUQVRFX1JFQURZLAogCQkJCQkJCQkgICBzZXFpbmZvLT5wYWdlX2xzbiwgZmFs c2UpOwogCiAJcmV0dXJuIENPUFlTRVFfU1VDQ0VTUzsKQEAgLTQ3MCw3ICs1MjMsOCBAQCBjb3B5 X3NlcXVlbmNlKExvZ2ljYWxSZXBTZXF1ZW5jZUluZm8gKnNlcWluZm8sIFJlbGF0aW9uIHNlcXVl bmNlX3JlbCkKICAqIFJldHVybnMgdHJ1ZS9mYWxzZSBpZiBhbnkgc2VxdWVuY2VzIHdlcmUgYWN0 dWFsbHkgY29waWVkLgogICovCiBzdGF0aWMgYm9vbAotY29weV9zZXF1ZW5jZXMoV2FsUmVjZWl2 ZXJDb25uICpjb25uLCBMaXN0ICpzZXFpbmZvcykKK2NvcHlfc2VxdWVuY2VzKFdhbFJlY2VpdmVy Q29ubiAqY29ubiwgTGlzdCAqc2VxaW5mb3MsIE9pZCBzdWJpZCwgY2hhciAqc3VibmFtZSwKKwkJ CSAgIGJvb2wgcnVuYXNvd25lcikKIHsKIAlpbnQJCQljdXJfYmF0Y2hfYmFzZV9pbmRleCA9IDA7 CiAJaW50CQkJbl9zZXFpbmZvcyA9IGxpc3RfbGVuZ3RoKHNlcWluZm9zKTsKQEAgLTQ5NiwxMSAr NTUwLDE2IEBAIGNvcHlfc2VxdWVuY2VzKFdhbFJlY2VpdmVyQ29ubiAqY29ubiwgTGlzdCAqc2Vx aW5mb3MpCiAJCWludAkJCWJhdGNoX25vX2RyaWZ0ID0gMDsKIAkJaW50CQkJYmF0Y2hfbWlzc2lu Z19jb3VudDsKIAkJUmVsYXRpb24Jc2VxdWVuY2VfcmVsID0gTlVMTDsKKwkJYm9vbAkJc3RhcnRl ZF90eCA9IGZhbHNlOwogCiAJCVdhbFJjdkV4ZWNSZXN1bHQgKnJlczsKIAkJVHVwbGVUYWJsZVNs b3QgKnNsb3Q7CiAKLQkJU3RhcnRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKKwkJaWYgKCFJc1RyYW5z YWN0aW9uU3RhdGUoKSkKKwkJeworCQkJU3RhcnRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKKwkJCXN0 YXJ0ZWRfdHggPSB0cnVlOworCQl9CiAKIAkJZm9yIChpbnQgaWR4ID0gY3VyX2JhdGNoX2Jhc2Vf aW5kZXg7IGlkeCA8IG5fc2VxaW5mb3M7IGlkeCsrKQogCQl7CkBAIC01OTYsMTQgKzY1NSwxNSBA QCBjb3B5X3NlcXVlbmNlcyhXYWxSZWNlaXZlckNvbm4gKmNvbm4sIExpc3QgKnNlcWluZm9zKQog CQkJICogc2VxdWVuY2VzIGluIFJFQURZIHN0YXRlLCBvbmx5IHN5bmMgaWYgdGhlcmUncyBkcmlm dC4KIAkJCSAqLwogCQkJaWYgKHN5bmNfc3RhdHVzID09IENPUFlTRVFfU1VDQ0VTUykKLQkJCQlz eW5jX3N0YXR1cyA9IGNvcHlfc2VxdWVuY2Uoc2VxaW5mbywgc2VxdWVuY2VfcmVsKTsKKwkJCQlz eW5jX3N0YXR1cyA9IGNvcHlfc2VxdWVuY2Uoc2VxaW5mbywgc2VxdWVuY2VfcmVsLAorCQkJCQkJ CQkJCQlzdWJpZCwgcnVuYXNvd25lcik7CiAKIAkJCXN3aXRjaCAoc3luY19zdGF0dXMpCiAJCQl7 CiAJCQkJY2FzZSBDT1BZU0VRX1NVQ0NFU1M6CiAJCQkJCWVsb2coREVCVUcxLAogCQkJCQkJICJs b2dpY2FsIHJlcGxpY2F0aW9uIHN5bmNocm9uaXphdGlvbiBoYXMgdXBkYXRlZCBzZXF1ZW5jZSBc IiVzLiVzXCIgaW4gc3Vic2NyaXB0aW9uIFwiJXNcIiIsCi0JCQkJCQkgc2VxaW5mby0+bnNwbmFt ZSwgc2VxaW5mby0+c2VxbmFtZSwgTXlTdWJzY3JpcHRpb24tPm5hbWUpOworCQkJCQkJIHNlcWlu Zm8tPm5zcG5hbWUsIHNlcWluZm8tPnNlcW5hbWUsIHN1Ym5hbWUpOwogCQkJCQliYXRjaF9zdWNj ZWVkZWRfY291bnQrKzsKIAkJCQkJc2VxdWVuY2VfY29waWVkID0gdHJ1ZTsKIAkJCQkJYnJlYWs7 CkBAIC02MTEsOSArNjcxLDggQEAgY29weV9zZXF1ZW5jZXMoV2FsUmVjZWl2ZXJDb25uICpjb25u LCBMaXN0ICpzZXFpbmZvcykKIAkJCQljYXNlIENPUFlTRVFfTUlTTUFUQ0g6CiAKIAkJCQkJLyoK LQkJCQkJICogUmVtZW1iZXIgbWlzbWF0Y2hlZCBzZXF1ZW5jZXMgaW4gU2VxdWVuY2VTeW5jQ29u dGV4dAotCQkJCQkgKiBzaW5jZSB0aGVzZSB3aWxsIGJlIHVzZWQgYWZ0ZXIgdGhlIHRyYW5zYWN0 aW9uIGlzCi0JCQkJCSAqIGNvbW1pdHRlZC4KKwkJCQkJICogUmVtZW1iZXIgbWlzbWF0Y2hlZCBz ZXF1ZW5jZXMgaW4gU2VxdWVuY2VTeW5jQ29udGV4dCBzaW5jZQorCQkJCQkgKiB0aGVzZSB3aWxs IGJlIHVzZWQgYWZ0ZXIgdGhlIHRyYW5zYWN0aW9uIGlzIGNvbW1pdHRlZC4KIAkJCQkJICovCiAJ CQkJCW9sZGN0eCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhTZXF1ZW5jZVN5bmNDb250ZXh0KTsK IAkJCQkJbWlzbWF0Y2hlZF9zZXFzX2lkeCA9IGxhcHBlbmRfaW50KG1pc21hdGNoZWRfc2Vxc19p ZHgsCkBAIC02NzksMTMgKzczOCwxNyBAQCBjb3B5X3NlcXVlbmNlcyhXYWxSZWNlaXZlckNvbm4g KmNvbm4sIExpc3QgKnNlcWluZm9zKQogCiAJCWVsb2coREVCVUcxLAogCQkJICJsb2dpY2FsIHJl cGxpY2F0aW9uIHNlcXVlbmNlIHN5bmNocm9uaXphdGlvbiBmb3Igc3Vic2NyaXB0aW9uIFwiJXNc IiAtIGJhdGNoICMlZCA9ICVkIGF0dGVtcHRlZCwgJWQgc3VjY2VlZGVkLCAlZCBtaXNtYXRjaGVk LCAlZCBpbnN1ZmZpY2llbnQgcGVybWlzc2lvbiwgJWQgbWlzc2luZyBmcm9tIHB1Ymxpc2hlciwg JWQgc2tpcHBlZCwgJWQgbm8gZHJpZnQiLAotCQkJIE15U3Vic2NyaXB0aW9uLT5uYW1lLAorCQkJ IHN1Ym5hbWUsCiAJCQkgKGN1cl9iYXRjaF9iYXNlX2luZGV4IC8gTUFYX1NFUVVFTkNFU19TWU5D X1BFUl9CQVRDSCkgKyAxLAogCQkJIGJhdGNoX3NpemUsIGJhdGNoX3N1Y2NlZWRlZF9jb3VudCwg YmF0Y2hfbWlzbWF0Y2hlZF9jb3VudCwKIAkJCSBiYXRjaF9pbnN1ZmZwZXJtX2NvdW50LCBiYXRj aF9taXNzaW5nX2NvdW50LCBiYXRjaF9za2lwcGVkX2NvdW50LCBiYXRjaF9ub19kcmlmdCk7CiAK LQkJLyogQ29tbWl0IHRoaXMgYmF0Y2gsIGFuZCBwcmVwYXJlIGZvciBuZXh0IGJhdGNoICovCi0J CUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOworCQkvKgorCQkgKiBDb21taXQgdGhpcyBiYXRj aCBpZiBzdGFydGVkIGEgdHJhbnNhY3Rpb24sIGFuZCBwcmVwYXJlIGZvciBuZXh0CisJCSAqIGJh dGNoLgorCQkgKi8KKwkJaWYgKHN0YXJ0ZWRfdHgpCisJCQlDb21taXRUcmFuc2FjdGlvbkNvbW1h bmQoKTsKIAogCQlpZiAoYmF0Y2hfbWlzc2luZ19jb3VudCkKIAkJewpAQCAtNzEwLDcgKzc3Myw3 IEBAIGNvcHlfc2VxdWVuY2VzKFdhbFJlY2VpdmVyQ29ubiAqY29ubiwgTGlzdCAqc2VxaW5mb3Mp CiAKIAkvKiBSZXBvcnQgbWlzbWF0Y2hlcywgcGVybWlzc2lvbiBpc3N1ZXMsIG9yIG1pc3Npbmcg c2VxdWVuY2VzICovCiAJcmVwb3J0X3NlcXVlbmNlX2Vycm9ycyhtaXNtYXRjaGVkX3NlcXNfaWR4 LCBpbnN1ZmZwZXJtX3NlcXNfaWR4LAotCQkJCQkJICAgbWlzc2luZ19zZXFzX2lkeCwgc2VxaW5m b3MpOworCQkJCQkJICAgbWlzc2luZ19zZXFzX2lkeCwgc2VxaW5mb3MsIHN1Ym5hbWUpOwogCiAJ cmV0dXJuIHNlcXVlbmNlX2NvcGllZDsKIH0KQEAgLTcyMiwyMCArNzg1LDIzIEBAIGNvcHlfc2Vx dWVuY2VzKFdhbFJlY2VpdmVyQ29ubiAqY29ubiwgTGlzdCAqc2VxaW5mb3MpCiAgKiBSZXR1cm5z IHRydWUgaWYgc2VxdWVuY2VzIGhhdmUgYmVlbiB1cGRhdGVkLgogICovCiBzdGF0aWMgYm9vbAot TG9naWNhbFJlcFN5bmNTZXF1ZW5jZXMoV2FsUmVjZWl2ZXJDb25uICpjb25uKQorTG9naWNhbFJl cFN5bmNTZXF1ZW5jZXMoV2FsUmVjZWl2ZXJDb25uICpjb25uLCBPaWQgc3ViaWQsIGNoYXIgKnN1 Ym5hbWUsCisJCQkJCQlib29sIHJ1bmFzb3duZXIpCiB7CiAJUmVsYXRpb24JcmVsOwogCUhlYXBU dXBsZQl0dXA7CiAJU2NhbktleURhdGEgc2tleVsxXTsKIAlTeXNTY2FuRGVzYyBzY2FuOwotCU9p ZAkJCXN1YmlkID0gTXlMb2dpY2FsUmVwV29ya2VyLT5zdWJpZDsKIAlib29sCQlzZXF1ZW5jZV9j b3BpZWQgPSBmYWxzZTsKIAlMaXN0CSAgICpzZXFpbmZvcyA9IE5JTDsKIAlNZW1vcnlDb250ZXh0 IG9sZGN0eDsKKwlib29sCQlzdGFydGVkX3R4ID0gZmFsc2U7CiAKLQlBc3NlcnQoU2VxdWVuY2VT eW5jQ29udGV4dCk7Ci0KLQlTdGFydFRyYW5zYWN0aW9uQ29tbWFuZCgpOworCWlmICghSXNUcmFu c2FjdGlvblN0YXRlKCkpCisJeworCQlTdGFydFRyYW5zYWN0aW9uQ29tbWFuZCgpOworCQlzdGFy dGVkX3R4ID0gdHJ1ZTsKKwl9CiAKIAlyZWwgPSB0YWJsZV9vcGVuKFN1YnNjcmlwdGlvblJlbFJl bGF0aW9uSWQsIEFjY2Vzc1NoYXJlTG9jayk7CiAKQEAgLTc5NSw3ICs4NjEsOCBAQCBMb2dpY2Fs UmVwU3luY1NlcXVlbmNlcyhXYWxSZWNlaXZlckNvbm4gKmNvbm4pCiAJc3lzdGFibGVfZW5kc2Nh bihzY2FuKTsKIAl0YWJsZV9jbG9zZShyZWwsIEFjY2Vzc1NoYXJlTG9jayk7CiAKLQlDb21taXRU cmFuc2FjdGlvbkNvbW1hbmQoKTsKKwlpZiAoc3RhcnRlZF90eCkKKwkJQ29tbWl0VHJhbnNhY3Rp b25Db21tYW5kKCk7CiAKIAkvKgogCSAqIEV4aXQgZWFybHkgaWYgbm8gY2F0YWxvZyBlbnRyaWVz IGZvdW5kLCBsaWtlbHkgZHVlIHRvIGNvbmN1cnJlbnQgZHJvcHMuCkBAIC04MDQsNyArODcxLDgg QEAgTG9naWNhbFJlcFN5bmNTZXF1ZW5jZXMoV2FsUmVjZWl2ZXJDb25uICpjb25uKQogCQlyZXR1 cm4gZmFsc2U7CiAKIAkvKiBQcm9jZXNzIHNlcXVlbmNlcyAqLwotCXNlcXVlbmNlX2NvcGllZCA9 IGNvcHlfc2VxdWVuY2VzKGNvbm4sIHNlcWluZm9zKTsKKwlzZXF1ZW5jZV9jb3BpZWQgPSBjb3B5 X3NlcXVlbmNlcyhjb25uLCBzZXFpbmZvcywgc3ViaWQsIHN1Ym5hbWUsCisJCQkJCQkJCQkgcnVu YXNvd25lcik7CiAKIAlyZXR1cm4gc2VxdWVuY2VfY29waWVkOwogfQpAQCAtODc5LDcgKzk0Nywx MCBAQCBzdGFydF9zZXF1ZW5jZV9zeW5jKHZvaWQpCiAJCQkvKgogCQkJICogU3luY2hyb25pemUg YWxsIHNlcXVlbmNlcyAoYm90aCBSRUFEWSBhbmQgSU5JVCBzdGF0ZXMpLgogCQkJICovCi0JCQlz ZXF1ZW5jZV9jb3BpZWQgPSBMb2dpY2FsUmVwU3luY1NlcXVlbmNlcyhMb2dSZXBXb3JrZXJXYWxS Y3ZDb25uKTsKKwkJCXNlcXVlbmNlX2NvcGllZCA9IExvZ2ljYWxSZXBTeW5jU2VxdWVuY2VzKExv Z1JlcFdvcmtlcldhbFJjdkNvbm4sCisJCQkJCQkJCQkJCQkJICBNeVN1YnNjcmlwdGlvbi0+b2lk LAorCQkJCQkJCQkJCQkJCSAgTXlTdWJzY3JpcHRpb24tPm5hbWUsCisJCQkJCQkJCQkJCQkJICBN eVN1YnNjcmlwdGlvbi0+cnVuYXNvd25lcik7CiAKIAkJCU1lbW9yeUNvbnRleHRSZXNldChTZXF1 ZW5jZVN5bmNDb250ZXh0KTsKIAkJCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjdHgpOwpAQCAt OTQxLDMgKzEwMTIsMzcgQEAgU2VxdWVuY2VTeW5jV29ya2VyTWFpbihEYXR1bSBtYWluX2FyZykK IAogCUZpbmlzaFN5bmNXb3JrZXIoKTsKIH0KKworLyoKKyAqIFdyYXBwZXIgZm9yIExvZ2ljYWxS ZXBTeW5jU2VxdWVuY2VzIHRvIHN5bmNocm9uaXplIGFsbCBzZXF1ZW5jZXMgb2YgYQorICogc3Vi c2NyaXB0aW9uIGZyb20gb3V0c2lkZSB0aGUgc2VxdWVuY2VzeW5jIHdvcmtlcgorICovCit2b2lk CitBbHRlclN1YlN5bmNTZXF1ZW5jZXMoV2FsUmVjZWl2ZXJDb25uICpjb25uLCBPaWQgc3ViaWQs IGNoYXIgKnN1Ym5hbWUsCisJCQkJCSAgYm9vbCBydW5hc293bmVyKQoreworCS8qCisJICogSW5p dCB0aGUgU2VxdWVuY2VTeW5jQ29udGV4dCB3aGljaCB3ZSBjbGVhbiB1cCBhZnRlciB0aGUgc2Vx dWVuY2UKKwkgKiBzeW5jaHJvbml6YXRpb24uCisJICovCisJU2VxdWVuY2VTeW5jQ29udGV4dCA9 IEFsbG9jU2V0Q29udGV4dENyZWF0ZShDdXJyZW50TWVtb3J5Q29udGV4dCwKKwkJCQkJCQkJCQkJ CSJTZXF1ZW5jZVN5bmNDb250ZXh0IiwKKwkJCQkJCQkJCQkJCUFMTE9DU0VUX0RFRkFVTFRfU0la RVMpOworCisJUEdfVFJZKCk7CisJeworCQlNZW1vcnlDb250ZXh0CW9sZGN0eDsKKworCQlvbGRj dHggPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8oU2VxdWVuY2VTeW5jQ29udGV4dCk7CisKKwkJTG9n aWNhbFJlcFN5bmNTZXF1ZW5jZXMoY29ubiwgc3ViaWQsIHN1Ym5hbWUsIHJ1bmFzb3duZXIpOwor CisJCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjdHgpOworCX0KKwlQR19GSU5BTExZKCk7CisJ eworCQlNZW1vcnlDb250ZXh0RGVsZXRlKFNlcXVlbmNlU3luY0NvbnRleHQpOworCQlTZXF1ZW5j ZVN5bmNDb250ZXh0ID0gTlVMTDsKKwl9CisJUEdfRU5EX1RSWSgpOworfQpkaWZmIC0tZ2l0IGEv c3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbHdvcmtlci5oIGIvc3JjL2luY2x1ZGUvcmVw bGljYXRpb24vbG9naWNhbHdvcmtlci5oCmluZGV4IDdkNzQ4YTI4ZGE4Li43M2FmZDc4NTNkMCAx MDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbHdvcmtlci5oCisrKyBi L3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWx3b3JrZXIuaApAQCAtMTQsNiArMTQsOCBA QAogCiAjaW5jbHVkZSA8c2lnbmFsLmg+CiAKKyNpbmNsdWRlICJyZXBsaWNhdGlvbi93YWxyZWNl aXZlci5oIgorCiBleHRlcm4gUEdETExJTVBPUlQgdm9sYXRpbGUgc2lnX2F0b21pY190IFBhcmFs bGVsQXBwbHlNZXNzYWdlUGVuZGluZzsKIAogZXh0ZXJuIHZvaWQgQXBwbHlXb3JrZXJNYWluKERh dHVtIG1haW5fYXJnKTsKQEAgLTMxLDQgKzMzLDcgQEAgZXh0ZXJuIHZvaWQgTG9naWNhbFJlcFdv cmtlcnNXYWtldXBBdENvbW1pdChPaWQgc3ViaWQpOwogCiBleHRlcm4gdm9pZCBBdEVPWGFjdF9M b2dpY2FsUmVwV29ya2Vycyhib29sIGlzQ29tbWl0KTsKIAorZXh0ZXJuIHZvaWQgQWx0ZXJTdWJT eW5jU2VxdWVuY2VzKFdhbFJlY2VpdmVyQ29ubiAqY29ubiwgT2lkIHN1YmlkLAorCQkJCQkJCQkg IGNoYXIgKnN1Ym5hbWUsIGJvb2wgcnVuYXNvd25lcik7CisKICNlbmRpZgkJCQkJCQkvKiBMT0dJ Q0FMV09SS0VSX0ggKi8KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAzNl9z ZXF1ZW5jZXMucGwgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMzZfc2VxdWVuY2VzLnBsCmlu ZGV4IDFkODE1MThmZTIyLi45YTYxYjdiZDBjOCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3Qvc3Vic2Ny aXB0aW9uL3QvMDM2X3NlcXVlbmNlcy5wbAorKysgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8w MzZfc2VxdWVuY2VzLnBsCkBAIC0xNzYsNCArMTc2LDUzIEBAICRub2RlX3N1YnNjcmliZXItPndh aXRfZm9yX2xvZygKIAlxci9XQVJOSU5HOiAoIFtBLVowLTldKzopPyBtaXNzaW5nIHNlcXVlbmNl IG9uIHB1Ymxpc2hlciBcKCJwdWJsaWMucmVncmVzc19zNCJcKS8sCiAJJGxvZ19vZmZzZXQpOwog CisjIyMjIyMjIyMjCisjIEFMVEVSIFNVQlNDUklQVElPTiAuLi4gUkVGUkVTSCBTRVFVRU5DRVMg c3luY2hyb25pemVzIHNlcXVlbmNlcyBvbmxpbmUsCisjIGVsaW1pbmF0aW5nIHRoZSBuZWVkIHRv IGxhdW5jaCBhIHNlcXVlbmNlc3luYyB3b3JrZXIuCisjIyMjIyMjIyMjCisKKyMgUmVkdWNlIG1h eF9sb2dpY2FsX3JlcGxpY2F0aW9uX3dvcmtlcnMgdG8gZGlzYWxsb3cgc2VxdWVuY2Ugd29ya2Vy IGZyb20gcnVubmluZworJG5vZGVfc3Vic2NyaWJlci0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwu Y29uZicsCisJcXEobWF4X2xvZ2ljYWxfcmVwbGljYXRpb25fd29ya2VycyA9IDApKTsKKyRub2Rl X3N1YnNjcmliZXItPnJlc3RhcnQ7CisKKyMgVmVyaWZ5IHRoZXJlIGlzIG5vIGxvZ2ljYWwgcmVw bGljYXRpb24gYXBwbHkgd29ya2VyIHJ1bm5pbmcKKyRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVy LT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVzJywKKwkiU0VMRUNUIGNvdW50KCopIEZST00gcGdfc3Rh dF9hY3Rpdml0eSBXSEVSRSBiYWNrZW5kX3R5cGUgPSAnbG9naWNhbCByZXBsaWNhdGlvbiBhcHBs eSB3b3JrZXInIik7CisKK2lzKCRyZXN1bHQsICcwJywgJ25vIGxvZ2ljYWwgcmVwbGljYXRpb24g d29ya2VyIGlzIHJ1bm5pbmcnKTsKKworIyBJbmNyZW1lbnQgc2VxdWVuY2Ugb24gcHVibGlzaGVy Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCXFxKFNFTEVDVCBuZXh0 dmFsKCdyZWdyZXNzX3MxJyk7KSk7CisKKyMgVGhlIGNvbW1hbmQgc2hvdWxkIGZhaWwgZHVlIHRv IG1pc3Npbmcgc2VxdWVuY2UgKCdyZWdyZXNzX3M0JykKK215ICgkY21kcmV0LCAkc3Rkb3V0LCAk c3RkZXJyKSA9ICRub2RlX3N1YnNjcmliZXItPnBzcWwoJ3Bvc3RncmVzJywKKwkiQUxURVIgU1VC U0NSSVBUSU9OIHJlZ3Jlc3Nfc2VxX3N1YiBSRUZSRVNIIFNFUVVFTkNFUzsiKTsKKworbGlrZSgK Kwkkc3RkZXJyLAorCXFyL1dBUk5JTkc6ICBtaXNzaW5nIHNlcXVlbmNlIG9uIHB1Ymxpc2hlciBc KCJwdWJsaWMucmVncmVzc19zNCJcKS8sCisJIm91dHB1dCB0aGUgd2FucmluZyBmb3IgdGhlIG1p c3Npbmcgc2VxdWVuY2UgcmVncmVzc19zNCIpOworCitsaWtlKAorCSRzdGRlcnIsCisJcXIvRVJS T1I6ICBsb2dpY2FsIHJlcGxpY2F0aW9uIHNlcXVlbmNlIHN5bmNocm9uaXphdGlvbiBmYWlsZWQg Zm9yIHN1YnNjcmlwdGlvbiBcInJlZ3Jlc3Nfc2VxX3N1YlwiLywKKwkidGhlIGNvbW1hbmQgZmFp bGVkIGR1ZSB0byB0aGUgbWlzc2luZyBzZXF1ZW5jZSByZWdyZXNzX3M0Iik7CisKKyMgUmVmcmVz aCB0aGUgcHVibGljYXRpb24gdG8gcmVtb3ZlIHRoZSBtaXNzaW5nIHNlcXVlbmNlCiskbm9kZV9z dWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQUxURVIgU1VCU0NSSVBUSU9OIHJl Z3Jlc3Nfc2VxX3N1YiBSRUZSRVNIIFBVQkxJQ0FUSU9OOyIpOworCisjIFN5bmMgdGhlIHNlcXVl bmNlIHJlZ3Jlc3NfczEKKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAor CSJBTFRFUiBTVUJTQ1JJUFRJT04gcmVncmVzc19zZXFfc3ViIFJFRlJFU0ggU0VRVUVOQ0VTOyIp OworCisjIEdldCB0aGUgY3VycmVudCBzZXF1ZW5jZSB2YWx1ZSBvbiBzdWJzY3JpYmVyCiskcmVz dWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJcXEoU0VMRUNU IGxhc3RfdmFsdWUgRlJPTSByZWdyZXNzX3MxOykpOworCitpcygkcmVzdWx0LCAnMjAxJywgJ3Nl cXVlbmNlIHJlZ3Jlc3NfczEgaXMgc3luY2VkIG5vdycpOworCiBkb25lX3Rlc3RpbmcoKTsKLS0g CjIuNTEuMS53aW5kb3dzLjEKCg== --_003_OS9PR01MB1691377CDB1468CDC9820BBEB9470AOS9PR01MB16913jp_--