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 1vcfCy-009Pne-3B for pgsql-hackers@arkaria.postgresql.org; Mon, 05 Jan 2026 07:40:58 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vcfCx-000OkZ-2t for pgsql-hackers@arkaria.postgresql.org; Mon, 05 Jan 2026 07:40:56 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vcfCx-000OkQ-0t for pgsql-hackers@lists.postgresql.org; Mon, 05 Jan 2026 07:40:56 +0000 Received: from mail-japaneastazon11011065.outbound.protection.outlook.com ([52.101.125.65] helo=TYVP286CU001.outbound.protection.outlook.com) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vcfCu-004bLs-1T for pgsql-hackers@lists.postgresql.org; Mon, 05 Jan 2026 07:40:55 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=k+VnExVq2aRHeaovIhlPR11A6Lhmpgnf+fKPhtdASbHijuVMYIDHEsryoTEOXvg/ypzTk/72hVqPZIcSK41llr8K7Efd5BBra/xWDFml8PN52tNitiaPdc7C3CadK20ptOta91cTAcpVxQLofjBXDQsb7JjbCbjFf6RTFTyAhSLvgfSyUtBpNwbx1pAGmX8kfyWZjLWx/4R/eWYM1zo6cJbT6KSNSOvpcLGcHRf6b57I/uPLkMko51K4vVByYFpRnlLecRH0uTC4gNAh8450KDcl2Ova0ROX8CPuoEEiV572h/e15Et3moRw+Jyv6IEWYQGn2pPcEueEyr8TvdUmVA== 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=ke3LDV2orJojeRmZ29rjT1RgIzWjtODvuAAxlssKWfU=; b=jStV+dSFzupGtR7IvLHDR5mrejomCSGHcfMPV3PWrcddt2ws+9WsYHmynbpj+EFDF0P0D8gqyHUniYWqEVpYX2QLYa5eitPaJohSLcWEt8051RCYfG4aO13QsOTXzvcJi9IXJjiv9Ymqn2AS9Pppcl4t1OwV7uT58dMqBmoKzih67nOslk7NlPJUrQ39aIEGxWYpxfmx989Wy2Tu/VRW1z3Cyo0/OQaTMz+9zmUjvOoRScThVEACrPDTHNpLomwcZpfU0Y3i2ZMUSKjGdCBhcM3X3SUIXotmAQlwekcIoi9EwSbxa4RwzFUvqwJM7RCEt2s8m2Ua4U0SgPVm97zVyA== 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=ke3LDV2orJojeRmZ29rjT1RgIzWjtODvuAAxlssKWfU=; b=CmJugj5P9ZO/HWWQWQfant0RNqtQPWxAIi3B62KmGINirR20XvQchFUv09vqJC56/ITDPTgABbD5LST+9NQtZeUjEw70BD9FrCrnhwknqFL2tBZzOSl7+cQ0uU45v2GsZUXtXczHyyOR1/tHUEV1jIDgN+C/v6fU3SygpIMMm8scNt7onWq2XqLp0zeTrpv4FJCCCbbqD1thou5hWE8NqGQxvSA3UxKyxM5SnLcZ+Abh+LlAkVRr+qjb+OZyU0B3O0hkdM6edUiOpsGMGmUVFTs+CjhddGmjfJD1Kswh+OqEaQrYQFC8Aplk9VCXFj5DkWyo9GyIWdvpvSDfUSVlrA== Received: from TY7PR01MB14554.jpnprd01.prod.outlook.com (2603:1096:405:241::9) by OS9PR01MB17548.jpnprd01.prod.outlook.com (2603:1096:604:44a::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9499.1; Mon, 5 Jan 2026 07:40:45 +0000 Received: from TY7PR01MB14554.jpnprd01.prod.outlook.com ([fe80::2ddc:aa3d:f13f:746a]) by TY7PR01MB14554.jpnprd01.prod.outlook.com ([fe80::2ddc:aa3d:f13f:746a%5]) with mapi id 15.20.9499.001; Mon, 5 Jan 2026 07:40:45 +0000 From: "Hayato Kuroda (Fujitsu)" To: "Hayato Kuroda (Fujitsu)" , PostgreSQL Hackers CC: Tomas Vondra , Amit Kapila , 'Dilip Kumar' , 'Andrei Lepikhov' , "Zhijie Hou (Fujitsu)" , 'wenhui qiu' Subject: RE: Parallel Apply Thread-Topic: Parallel Apply Thread-Index: AQHcCnrbSLPDc76YRkOqFNG4U4/hWrSEoA6AgHQRIrCAAB/fAIAADGJwgAJFIoCAEiDP0IABUmGAgAAKa6CAH6cfoIAFylXAgAAO3oCAD/diQA== Date: Mon, 5 Jan 2026 07:40:45 +0000 Message-ID: References: In-Reply-To: Accept-Language: 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?NTBfQWN0aW9uSWQ9ZGIxYmQwMTctYzUxNC00YzA0LWIzZjItYzE2OWZmZTBh?= =?utf-8?B?NTYzO01TSVBfTGFiZWxfYTcyOTVjYzEtZDI3OS00MmFjLWFiNGQtM2IwZjRm?= =?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?ZXREYXRlPTIwMjUtMTItMDJUMDc6MDk6MTZaO01TSVBfTGFiZWxfYTcyOTVj?= =?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: TY7PR01MB14554:EE_|OS9PR01MB17548:EE_ x-ms-office365-filtering-correlation-id: 7407b2aa-63fe-4b35-7058-08de4c2dbc81 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0;ARA:13230040|1800799024|366016|376014|1580799027|4053099003|7142099003|38070700021; x-microsoft-antispam-message-info: =?utf-8?B?WXdZRnkrOFlHck11Y09pU01WaGJoa1NQNjJrMTgrZkpWVHJoV2hSNithSXVq?= =?utf-8?B?Q3NQZ3ZJbW81Z2lVem1ocFhXMUowckN2elQzZ3JBZkdKNVhyVm9ySktOU1hs?= =?utf-8?B?Q2ZSZmNWS2dxRmdSRVBWNFlDcTFxcTM0RFI0VzB3K1Y3S21qOGxPNHRYUXhx?= =?utf-8?B?V08yRk1icVN1M2FQVElodkxySjlGZkZNa0hIMU56eUtjM2p1S2grVE1ZbExq?= =?utf-8?B?bE9RMHIyWkh4cTRHWmkxa0M3ZGVNN0NQOWQ2QmlSb1FTamRIcktxaCt0YW80?= =?utf-8?B?N3U4Y3o5MkZOZlVoUGZYRUFJMzJ6SDBOQVg0YzRLRzNMSkJoWXJUYlBtWWQx?= =?utf-8?B?QS9jVkxEZzR0cUxKWGh3TVREZ2NTYlpwQmIvVFVnRVVvMlF6cDl5RGNoWWVK?= =?utf-8?B?MzNEbStzOFRNVDB6WVFnRmZvSG9XWW01a05KUTlvM0ZyQ3FoaUdZZ0ROTnFT?= =?utf-8?B?c2Mzc25URlFpWWVzZzZpeDA2dndscWZBazBtNkZvTXhvYUNKY0JkWVVFQ2Zv?= =?utf-8?B?NkphSi9LTmN3MEhTckVIRGZ1S3JOOGNNd1B4MGZ3L0p6OGVNY3VwNnpZQnlt?= =?utf-8?B?N29JV0NZbTYxUXJaU3MyQlQ2SjljNm5EUjdJMmxkV0NCK1RXYUpWcmpkSllX?= =?utf-8?B?RFJld0VZcytjWWFSV0hMYXBrNlhmNnNKRjM4WjZlVGFnR3c3S25TR1pVV1M1?= =?utf-8?B?MEFkNlJNZmJEOHVRQ2tUSGpob1l1R1RrN05qYmg5L0M1YmdkOG1Vd1NuYmdU?= =?utf-8?B?NEZSS3hQaXFuNm1lV0wzWmUrNXVmSEhNKzZtL0FaK082a0ZnRnhrc0V1dUkv?= =?utf-8?B?L2RjOW56c015OHVGOHZ2d2l0MGdreTVtU2tsejBXSWwwYjZ2K0FQMmFzWm9I?= =?utf-8?B?dEJzaDNNZ28zRUhVNmZZNllpQ3d6NlJOeC80UnlkZGVXaVNJMUwrNzYrU3Z3?= =?utf-8?B?TityNGExYklqYUcxRHE1bWJPUmJhR1pSM1l6azRqQzZ5eGF5NCtZTzlwZTNm?= =?utf-8?B?TTdpRkc4N3Izb2J2djRseVRyUjdCNnBSeXM3Q3pmcGI2UmpVN0FWbGNXekZ6?= =?utf-8?B?S1VESTlHc0g5MDkwUWlWNGtjWUFVQWJHVERoeG9CREJDS3R4b0tyYm16N1dS?= =?utf-8?B?dmMvMW9HZUhYdEFIdnA1Zmc1N0RQWGNvS3RLRTc5RC9WN2dvaEJwSUkxT2xz?= =?utf-8?B?UDJ4UitPYjM0NlkzQjdKYlc2MHp5bjYxVVVRN2tHN3I0NlNXWDN1UlJoOHM3?= =?utf-8?B?K2M3MnUwV0xlQWxuODJaSkhlWm92a0I0MDhTR1JhQTZ1Y0JNSTN3dlNFRzd2?= =?utf-8?B?alN5dHNkMitBMFdDY0orQXNOVmN1VmxsVEE2VWczaDVReGVQak8yZDVNVVFU?= =?utf-8?B?bVFXVUthNjc3QlpuSlBuTzRieG9wV3J1eENvZWZ5QXR2VnArWEM0TjQvdHRo?= =?utf-8?B?bEFYK1hNRlBaT3I0K0VOdkcrNjBJZmFVY00vWTV2VFF0VjBmV2ZwcEJyZmJF?= =?utf-8?B?NDU1SFJxR01uVE1EelVJcGJCeGFyWTN4YTh3eXlncVhUMGZVVnpVUCtFU00v?= =?utf-8?B?VFJKT3F2QlpuSldxVExiNkIrUVp5Z2s4Wnd6NGZaNWgxc0VPNkxNdTIrd0JY?= =?utf-8?B?a1k5U0s5VHlIaFd0MGJKVlhTUWFGQkdqWC9zbnBOYlVoUG12MHpGTVZlQ2Z0?= =?utf-8?B?aW5xK1JrQVhiNFdJUXZNQXc3Nk9YZXhvazc5YjRQQkxHV2REU1dYenVKb0Ja?= =?utf-8?B?VFZVeUtjWllkMnU1dmFPTVhxclR1N3dHbmtHbVNOK05aWXVsdnIxL25CTlIz?= =?utf-8?B?RHNodjQ3TzFYTE9qaDNyaHhOd3EwTUtsbk9Xd3k0bzVoNWdZZnE2NnhCbEM0?= =?utf-8?B?R0ovc2g1VEh6cmNYRmxIRGwzaTRIaXZSaVU3cUxuMUs0YndjaExTbFh6aitl?= =?utf-8?B?N3dtNFY2cnU1MEhFcXdteWhUUWVxT0hnWWhONkg5Q3FQNU1tS0VweS9ZVkFV?= =?utf-8?B?VERCNEdCMngvQUQvV2plNzRFT2EyejB3WUh3c0hnN1JnRlZkY0EyL29ROGp3?= =?utf-8?B?S1RNeVJzRmlySDdYRkxZSHJZZGlNYWFLWWtVYlV2a1FCUkpKSXZ3RUpnZkk4?= =?utf-8?Q?wEyk=3D?= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:ja;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:TY7PR01MB14554.jpnprd01.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(366016)(376014)(1580799027)(4053099003)(7142099003)(38070700021);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?OVJMWWNpRFNwTVJuRXIrejhGdGozZzN5T21ZbzVXY2FiakNSeHhpQ1VnQlRk?= =?utf-8?B?ajZmbDlMZEdHUHF1UG9wd1hrdk5RVko5bFRDdVY2a3hkSG45Q0N0d0xXZ2lX?= =?utf-8?B?NVBQb21UV3ErMVFseW1LSVVIOEpHZExBUTBnbEgySS9vR1ZzbFJKZkJTaEpv?= =?utf-8?B?OWR6OEVFejNLcGFzdlkzNXlWbUhncTRWdUcza1cvUkowY1d4SURRQkV6QURT?= =?utf-8?B?Y2cxQ0JJays0RFNvTlBGaUtYQmpXRkwzeEkyaGNHRDZkeEJ5REM1NHJZUmRa?= =?utf-8?B?ZDBZRENmWkF5NjVDV0hzdzB1cFU0ZnRtZEROTjB6ei9BNW5Fa1YxeExHbFFE?= =?utf-8?B?amNaYm5pdHZNZHNZYit2WFNjeGR2TUgxRi9jNkJvQWE1ZEVWdUJrblhlMzRy?= =?utf-8?B?NVZCTHMzRHFjQmltTHVWSU5Hd0JJRm1NM1JHNmRnNEIyMDRvMERydGJPdFpt?= =?utf-8?B?cTRmSTQ3VHBMVnk0QTYrYjhiS3dhSDNjdkwzVUhmNk9RL21DYWRodlZOaDhH?= =?utf-8?B?aDdUOFN0UEhhTGlBRXF5UVB0THZRRFFtb0FVVGlnaHJxbDIrQVR2SE9sM1pK?= =?utf-8?B?bTVKQnYzMFBYNFRHN290bDRZWGxRVUJPYTZpY1E2R2RxUHp2TGNKRnpVek5w?= =?utf-8?B?a1EwR3hhUkltYzJWUE9SNnpveXY1bXVnLzZGK0dIblN2cEFKcUF5WnlrcUp2?= =?utf-8?B?bTJVSXFhbnQ4SzFndGZvdlVYY09GWEtYTUJJYjRBNEhYYWd6YnYwZEhxb0hn?= =?utf-8?B?VjFHemJIb2gwdHp0MDJ1eE56U1pxT3RlcmJNbTdDYUlJVkVtV25kbnN1OE1Y?= =?utf-8?B?QncreTFhRXVBaVJnTWwwTW5OTVo3aHZsbDNYTVQ1L214d1BRaCs5d1YxTllN?= =?utf-8?B?NnZIcEdaZlB0ekpZY3FUcEdReU1qNmhsdThpQXA0L2xzVjI4c0Z1S2lZNWl2?= =?utf-8?B?V0pCSXdydzNxV2xHQ0pZSGRlLzFhN042T2FseXZhLys5QXAxSm9mUGNwdUUy?= =?utf-8?B?MGo2em1sdWxrNU4yTUFZbFJxU3J4eExJeDNoemlKTkJGc1hZV1UvQkVEeEoy?= =?utf-8?B?SFJsdThNWXN4UzFPdG01c3VEYmhlUkJob1JEVGpoT2ZUdTRCSzBTQUd6amUz?= =?utf-8?B?czRXOFB1K2Q5VmQyckQxQXF6VDg2emZjb3Q2UU11c1cxeFlDc0pxRlRpTEZT?= =?utf-8?B?OW5oUFkzNUluUWx1TjNscWtPSCtPSGxpcjZrMlZCUmNESUFmVzhBUWhvcjhx?= =?utf-8?B?akNNdTFMVG5kQWNQTmV2Rml3N1FzbVAwbE84bzNvQjFLSDBZbFpMMjB4UW1j?= =?utf-8?B?VDhDTUJDOTBtT3dETHl2ZGxqT1VMZkZlZEVBL2Jsa0hjM2FNL0MxbEwyQXRF?= =?utf-8?B?Ylg4UlN2U0hjWjRBOUI4R1R4Tk15QmpyQm5LWEhlYVlQVyt5K2FXeFArUEg5?= =?utf-8?B?eEJyOUxLOVFFWC96ajFFOThpelRJQWYvNWlTZlRUdm5VRGlIRDJRN1RVOWlM?= =?utf-8?B?d1J6eEZpd3EyVDdLditqdjlERkhRTjNkcG1XVXJ2OXgrcTBYV0JBelpNTGJ1?= =?utf-8?B?aVpRVHdNQVZnOENvRXR5M2hlMjlDMnp5Z3A5QTZrbGFuSm15WU04UmU4dmM3?= =?utf-8?B?Z0p0ejJXRWJnUFpiVDFsL0dOaDQ2RG5HZGRzZHA2dXlad01XOWpVSDNreW81?= =?utf-8?B?bWwybWhVQlpERDNsNnRNRmhObmRDRkZiV0liTlFxZExzd2QwOG9GeXRHUGsz?= =?utf-8?B?YlVZSWJMR2JtRitFS2FTN2lWUmcxZFloQnVXb2F1VnpIUnM2cUxjVWpHQnM1?= =?utf-8?B?NEQydHdpejBCMlNYNVlVTFhJNk9VcWI2dmxFeWU5TW16RmpuWW5LOEIxdXd5?= =?utf-8?B?MmJGQTBGcG9rMWpYOWRqQjIrQjVUdTJZWmZMVmpncEUyY1FPRHg4b1A2S0ZN?= =?utf-8?B?bzRjTzJLT09ZOG9ULytHMHVqbFY0dGxibEgzY3JWZ0lTeVVENlNuVm91d0h1?= =?utf-8?B?Q3VtNFVqQVlQZVBXRHp0UVBmZkZLSDVHaWFYak8zRGJacWZrNW5JTldVekFK?= =?utf-8?B?ajcyV0x0aEVjbXArdmw2WTVscENPOUVod1RFZXZmMnY3MHRQRW80Q3VTNTVE?= =?utf-8?B?QzYyWTVOWkN4a3o1c0hRTERDdXhiWXRuRk44VDV5U2RLcUxzcE1PbnI2L3g3?= =?utf-8?B?WU15SmIra3lIWlVZN2N6Q0x1ak5oalQzbHJYMjg1dUQ2emU2cHA3a04xb0Nn?= =?utf-8?B?QVdwV09YbmxuTWNHbDEybjlCcy94SmMrTUdQWTlsZkxuV01jUHlvUGpENUhn?= =?utf-8?B?VFVvSlB0NEV6YjdCT3FHOEZJbzcydFgxczlacUxqZEQ2Y3FQK1pZUVNDL0xN?= =?utf-8?Q?tGd8uJYbJpIE9+9E=3D?= Content-Type: multipart/mixed; boundary="_009_TY7PR01MB145541DD6F5BE4CD403BA39FDF586ATY7PR01MB14554jp_" MIME-Version: 1.0 X-OriginatorOrg: fujitsu.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: TY7PR01MB14554.jpnprd01.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 7407b2aa-63fe-4b35-7058-08de4c2dbc81 X-MS-Exchange-CrossTenant-originalarrivaltime: 05 Jan 2026 07:40:45.2935 (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: LKF2qO9neDHEA10vhS02yOuTOR4H1DTPQ32v26uIVkW6K6r0ydYs8i4+uY86HuZV2YODxLddbDjmPgFcQ9sod2qr7vCLHEva9FHFEBjMRc4= X-MS-Exchange-Transport-CrossTenantHeadersStamped: OS9PR01MB17548 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --_009_TY7PR01MB145541DD6F5BE4CD403BA39FDF586ATY7PR01MB14554jp_ Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 SGFwcHkgbmV3IHllYXIgaGFja2VycywNCg0KSSBmb3VuZCB0aGF0IENGYm90IHNvbWV0aW1lcyBm YWlsZWQgdGVzdHMuIFBlciBteSBhbmFseXNpcywgdGhlcmUgd2VyZSB0d28NCmlzc3VlcyBpbiB0 aGUgMDAwNSBwYXRjaC4gVGhlIGZvbGxvd2luZyBkZXNjcmliZXMgdHdvIGNoYW5nZXMuDQoNCjEp DQpUb29rIGNhcmUgb2YgdGhlIGNhc2Ugd2hlcmUgYW4gZW1wdHkgcHJlcGFyZWQgdHJhbnNhY3Rp b24gd2FzIHJlcGxpY2F0ZWQuDQpUaGUgbGVhZGVyIHdvcmtlciB3b3VsZCBnYXRoZXIgZXZlbiBz dWNoIHRyYW5zYWN0aW9ucyBpbiBnZXRfZmx1c2hfcG9zaXRpb24oKQ0KYW5kIHRyeSB0byBjbGVh biB1cCBhIHJlcGxpY2EgaWRlbnRpdHkgaGFzaC4gSWYgdGhlIGVtcHR5IHRyYW5zYWN0aW9uIGlz IGZpcnN0bHkNCnJlcGxpY2F0ZWQgYWZ0ZXIgdGhlIHdvcmtlciBpcyBsYXVuY2hlZCwgaG93ZXZl ciwgdGhlIHJlcGxpY2EgaWRlbnRpdHkgaGFzaCBpcw0Kbm90IHlldCBpbml0aWFsaXplZCwgd2hp Y2ggY2F1c2VzIHRoZSBzZWdtZW50YXRpb24gZmF1bHQuIFRvIGFkZHJlc3MgdGhlIGlzc3VlLA0K YSBndWFyZCB3YXMgYWRkZWQgdG8gdGhlIGNsZWFudXAgZnVuY3Rpb24uDQoNCkFzIGZhciBhcyBJ IGtub3csIGFuIGVtcHR5IHByZXBhcmVkIHRyYW5zYWN0aW9uIGNhbiBoYXBwZW4gaWYNCiAgYSkg dGhlIHByZXBhcmVkIHRyYW5zYWN0aW9uIGhhcyBhbHJlYWR5IGJlZW4gcm9sbGVkIGJhY2sgd2hp bGUgZGVjb2RpbmcsIG9yDQogIGIpIGFsbCBjaGFuZ2VzIGFyZSBza2lwcGVkLg0KQWRkZWQgdGVz dCBzb21ldGltZXMgbWVldHMgYSkgZHVlIHRvIHRoZSB0aW1pbmcgaXNzdWUuDQoNCjIpDQpGaXhl ZCBhIHRpbWluZyBpc3N1ZSBpbiAwNTBfcGFyYWxsZWxfYXBwbHkucGwuIFRoZSB0ZXN0IHNldHMg dGhlIHR3b19waGFzZQ0Kb3B0aW9uIHRvIHRydWUsIGJ1dCBzb21ldGltZXMgaXQgZmFpbHMgaWYg dGhlIGFwcGx5IHdvcmtlcnMgYXJlIG5vdCB5ZXQgZmluaXNoZWQNCmFmdGVyIHRoZSBzdWJzY3Jp cHRpb24gaXMgZGlzYWJsZWQuIE5vdyB0aGUgdGVzdCBlbnN1cmVzIHRoZXJlIGFyZSBubyBhcHBs eSB3b3JrZXJzLg0KDQpCZXN0IHJlZ2FyZHMsDQpIYXlhdG8gS3Vyb2RhDQpGVUpJVFNVIExJTUlU RUQNCg0K --_009_TY7PR01MB145541DD6F5BE4CD403BA39FDF586ATY7PR01MB14554jp_ Content-Type: application/octet-stream; name="v7-0001-Introduce-new-type-of-logical-replication-message.patch" Content-Description: v7-0001-Introduce-new-type-of-logical-replication-message.patch Content-Disposition: attachment; filename="v7-0001-Introduce-new-type-of-logical-replication-message.patch"; size=6122; creation-date="Mon, 05 Jan 2026 07:38:39 GMT"; modification-date="Mon, 05 Jan 2026 07:40:44 GMT" Content-Transfer-Encoding: base64 RnJvbSA1ZWUwMDkxMzZhMzFlN2ViNWQzNWM4YzQyZDA1YjdjMmY4ZjNmNWM1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIYXlhdG8gS3Vyb2RhIDxrdXJvZGEuaGF5YXRvQGZ1aml0c3Uu Y29tPgpEYXRlOiBNb24sIDEgRGVjIDIwMjUgMTA6Mzc6MjcgKzA5MDAKU3ViamVjdDogW1BBVENI IHY3IDEvOF0gSW50cm9kdWNlIG5ldyB0eXBlIG9mIGxvZ2ljYWwgcmVwbGljYXRpb24gbWVzc2Fn ZXMgdG8KIHRyYWNrIGRlcGVuZGVuY2llcwoKVGhpcyBwYXRjaCBpbnRyb2R1Y2VzIHR3byBsb2dp Y2FsIHJlcGxpY2F0aW9uIG1lc3NhZ2VzLApMT0dJQ0FMX1JFUF9NU0dfSU5URVJOQUxfREVQRU5E RU5DWSBhbmQgTE9HSUNBTF9SRVBfTVNHX0lOVEVSTkFMX1JFTEFUSU9OLgpBcGFydCBmcm9tIG90 aGVyIG1lc3NhZ2VzLCB0aGV5IGFyZSBub3Qgc2VudCBieSB3YWxzbmRlcnM7IHRoZSBsZWFkZXIg d29ya2VyCnNlbmRzIHRvIHBhcmFsbGVsIHdvcmtlcnMgYmFzZWQgb24gdGhlIG5lZWRzLgoKTE9H SUNBTF9SRVBfTVNHX0lOVEVSTkFMX0RFUEVOREVOQ1kgZW5zdXJlcyB0aGF0IGRlcGVuZGVudCB0 cmFuc2FjdGlvbnMgYXJlCmNvbW1pdHRlZCBpbiB0aGUgY29ycmVjdCBvcmRlci4gSXQgaGFzIGEg bGlzdCBvZiB0cmFuc2FjdGlvbiBJRHMgdGhhdCBwYXJhbGxlbAp3b3JrZXJzIG11c3Qgd2FpdCBm b3IuIFRoZSBtZXNzYWdlIHR5cGUgd291bGQgYmUgZ2VuZXJhdGVkIHdoZW4gdGhlIGxlYWRlcgpk ZXRlY3RzIGEgZGVwZW5kZW5jeSBiZXR3ZWVuIHRoZSBjdXJyZW50IGFuZCBvdGhlciB0cmFuc2Fj dGlvbnMsIG9yIGp1c3QgYmVmb3JlCnRoZSBDT01NSVQgbWVzc2FnZS4gVGhlIGxhdHRlciBvbmUg aXMgdXNlZCB0byBwcmVzZXJ2ZSB0aGUgY29tbWl0IG9yZGVyaW5nCmJldHdlZW4gdGhlIHB1Ymxp c2hlciBhbmQgdGhlIHN1YnNjcmliZXIuCgpMT0dJQ0FMX1JFUF9NU0dfSU5URVJOQUxfUkVMQVRJ T04gaXMgdXNlZCB0byBzeW5jaHJvbml6ZSB0aGUgcmVsYXRpb24KaW5mb3JtYXRpb24gYmV0d2Vl biB0aGUgbGVhZGVyIGFuZCBwYXJhbGxlbCB3b3JrZXJzLiBJdCBoYXMgYSBsaXN0IG9mIHJlbGF0 aW9ucwp0aGF0IHRoZSBsZWFkZXIgYWxyZWFkeSBrbm93cywgYW5kIHBhcmFsbGVsIHdvcmtlcnMg YWxzbyB1cGRhdGUgdGhlIHJlbG1hcCBpbgpyZXNwb25zZSB0byB0aGUgbWVzc2FnZS4gVGhpcyB0 eXBlIG9mIG1lc3NhZ2UgaXMgZ2VuZXJhdGVkIHdoZW4gdGhlIGxlYWRlcgphbGxvY2F0ZXMgYSBu ZXcgcGFyYWxsZWwgd29ya2VyIHRvIHRoZSB0cmFuc2FjdGlvbiwgb3Igd2hlbiB0aGUgcHVibGlz aGVyIHNlbmRzCmFkZGl0aW9uYWwgUkVMQVRJT04gbWVzc2FnZXMuCgpBdXRob3I6IEhvdSBaaGlq aWUgPGhvdXpqLmZuc3RAZnVqaXRzdS5jb20+CkF1dGhvcjogSGF5YXRvIEt1cm9kYSA8a3Vyb2Rh LmhheWF0b0BmdWppdHN1LmNvbT4KLS0tCiAuLi4vcmVwbGljYXRpb24vbG9naWNhbC9hcHBseXBh cmFsbGVsd29ya2VyLmMgfCAxNiArKysrKysKIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2lj YWwvcHJvdG8uYyAgICAgICB8ICA0ICsrCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2Fs L3dvcmtlci5jICAgICAgfCA0OSArKysrKysrKysrKysrKysrKysrCiBzcmMvaW5jbHVkZS9yZXBs aWNhdGlvbi9sb2dpY2FscHJvdG8uaCAgICAgICAgfCAgMiArCiBzcmMvaW5jbHVkZS9yZXBsaWNh dGlvbi93b3JrZXJfaW50ZXJuYWwuaCAgICAgfCAgNCArKwogNSBmaWxlcyBjaGFuZ2VkLCA3NSBp bnNlcnRpb25zKCspCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNh bC9hcHBseXBhcmFsbGVsd29ya2VyLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2Fs L2FwcGx5cGFyYWxsZWx3b3JrZXIuYwppbmRleCBhNGFhZmNmNWI2ZS4uMDU1ZmVlYTBiYzUgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvYXBwbHlwYXJhbGxlbHdv cmtlci5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvYXBwbHlwYXJhbGxl bHdvcmtlci5jCkBAIC0xNjQ1LDMgKzE2NDUsMTkgQEAgcGFfeGFjdF9maW5pc2goUGFyYWxsZWxB cHBseVdvcmtlckluZm8gKndpbmZvLCBYTG9nUmVjUHRyIHJlbW90ZV9sc24pCiAKIAlwYV9mcmVl X3dvcmtlcih3aW5mbyk7CiB9CisKKy8qCisgKiBXYWl0IGZvciB0aGUgZ2l2ZW4gdHJhbnNhY3Rp b24gdG8gZmluaXNoLgorICovCit2b2lkCitwYV93YWl0X2Zvcl9kZXBlbmRlZF90cmFuc2FjdGlv bihUcmFuc2FjdGlvbklkIHhpZCkKK3sKKwllbG9nKERFQlVHMSwgIndhaXQgZm9yIGRlcGVuZGVk IHhpZCAldSIsIHhpZCk7CisKKwlmb3IgKDs7KQorCXsKKwkJLyogWFhYIHdhaXQgdW50aWwgZ2l2 ZW4gdHJhbnNhY3Rpb24gaXMgZmluaXNoZWQgKi8KKwl9CisKKwllbG9nKERFQlVHMSwgImZpbmlz aCB3YWl0aW5nIGZvciBkZXBlbmRlZCB4aWQgJXUiLCB4aWQpOworfQpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9wcm90by5jIGIvc3JjL2JhY2tlbmQvcmVwbGlj YXRpb24vbG9naWNhbC9wcm90by5jCmluZGV4IDI3YWQ3NGZkNzU5Li5kZWQ0NmM0OWE4MyAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9wcm90by5jCisrKyBiL3Ny Yy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcHJvdG8uYwpAQCAtMTI1Myw2ICsxMjUzLDEw IEBAIGxvZ2ljYWxyZXBfbWVzc2FnZV90eXBlKExvZ2ljYWxSZXBNc2dUeXBlIGFjdGlvbikKIAkJ CXJldHVybiAiU1RSRUFNIEFCT1JUIjsKIAkJY2FzZSBMT0dJQ0FMX1JFUF9NU0dfU1RSRUFNX1BS RVBBUkU6CiAJCQlyZXR1cm4gIlNUUkVBTSBQUkVQQVJFIjsKKwkJY2FzZSBMT0dJQ0FMX1JFUF9N U0dfSU5URVJOQUxfREVQRU5ERU5DWToKKwkJCXJldHVybiAiSU5URVJOQUwgREVQRU5ERU5DWSI7 CisJCWNhc2UgTE9HSUNBTF9SRVBfTVNHX0lOVEVSTkFMX1JFTEFUSU9OOgorCQkJcmV0dXJuICJJ TlRFUk5BTCBSRUxBVElPTiI7CiAJfQogCiAJLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Jl cGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dp Y2FsL3dvcmtlci5jCmluZGV4IDcxODQwOGJiNTk5Li43M2QzODY0NGM0YSAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYworKysgYi9zcmMvYmFja2Vu ZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jCkBAIC02MjksNiArNjI5LDQ3IEBAIHN0YXRp YyBUcmFuc0FwcGx5QWN0aW9uIGdldF90cmFuc2FjdGlvbl9hcHBseV9hY3Rpb24oVHJhbnNhY3Rp b25JZCB4aWQsCiAKIHN0YXRpYyB2b2lkIHJlcGxvcmlnaW5fcmVzZXQoaW50IGNvZGUsIERhdHVt IGFyZyk7CiAKKy8qCisgKiBIYW5kbGUgaW50ZXJuYWwgZGVwZW5kZW5jeSBpbmZvcm1hdGlvbi4K KyAqCisgKiBXYWl0IGZvciBhbGwgdHJhbnNhY3Rpb25zIGxpc3RlZCBpbiB0aGUgbWVzc2FnZSB0 byBjb21taXQuCisgKi8KK3N0YXRpYyB2b2lkCithcHBseV9oYW5kbGVfaW50ZXJuYWxfZGVwZW5k ZW5jeShTdHJpbmdJbmZvIHMpCit7CisJaW50CQkJbnhpZHMgPSBwcV9nZXRtc2dpbnQocywgNCk7 CisKKwlmb3IgKGludCBpID0gMDsgaSA8IG54aWRzOyBpKyspCisJeworCQlUcmFuc2FjdGlvbklk IHhpZCA9IHBxX2dldG1zZ2ludChzLCA0KTsKKworCQlwYV93YWl0X2Zvcl9kZXBlbmRlZF90cmFu c2FjdGlvbih4aWQpOworCX0KK30KKworLyoKKyAqIEhhbmRsZSBpbnRlcm5hbCByZWxhdGlvbiBp bmZvcm1hdGlvbi4KKyAqCisgKiBVcGRhdGUgYWxsIHJlbGF0aW9uIGRldGFpbHMgaW4gdGhlIHJl bGF0aW9uIG1hcCBjYWNoZS4KKyAqLworc3RhdGljIHZvaWQKK2FwcGx5X2hhbmRsZV9pbnRlcm5h bF9yZWxhdGlvbihTdHJpbmdJbmZvIHMpCit7CisJaW50CQkJbnVtX3JlbHM7CisKKwludW1fcmVs cyA9IHBxX2dldG1zZ2ludChzLCA0KTsKKworCWZvciAoaW50IGkgPSAwOyBpIDwgbnVtX3JlbHM7 IGkrKykKKwl7CisJCUxvZ2ljYWxSZXBSZWxhdGlvbiAqcmVsID0gbG9naWNhbHJlcF9yZWFkX3Jl bChzKTsKKworCQlsb2dpY2FscmVwX3JlbG1hcF91cGRhdGUocmVsKTsKKworCQllbG9nKERFQlVH MSwgInBhcmFsbGVsIGFwcGx5IHdvcmtlciB3b3JrZXIgaW5pdCByZWxtYXAgZm9yICVzIiwKKwkJ CSByZWwtPnJlbG5hbWUpOworCX0KK30KKwogLyoKICAqIEZvcm0gdGhlIG9yaWdpbiBuYW1lIGZv ciB0aGUgc3Vic2NyaXB0aW9uLgogICoKQEAgLTM4NjgsNiArMzkwOSwxNCBAQCBhcHBseV9kaXNw YXRjaChTdHJpbmdJbmZvIHMpCiAJCQlhcHBseV9oYW5kbGVfc3RyZWFtX3ByZXBhcmUocyk7CiAJ CQlicmVhazsKIAorCQljYXNlIExPR0lDQUxfUkVQX01TR19JTlRFUk5BTF9SRUxBVElPTjoKKwkJ CWFwcGx5X2hhbmRsZV9pbnRlcm5hbF9yZWxhdGlvbihzKTsKKwkJCWJyZWFrOworCisJCWNhc2Ug TE9HSUNBTF9SRVBfTVNHX0lOVEVSTkFMX0RFUEVOREVOQ1k6CisJCQlhcHBseV9oYW5kbGVfaW50 ZXJuYWxfZGVwZW5kZW5jeShzKTsKKwkJCWJyZWFrOworCiAJCWRlZmF1bHQ6CiAJCQllcmVwb3J0 KEVSUk9SLAogCQkJCQkoZXJyY29kZShFUlJDT0RFX1BST1RPQ09MX1ZJT0xBVElPTiksCmRpZmYg LS1naXQgYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dpY2FscHJvdG8uaCBiL3NyYy9pbmNs dWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWxwcm90by5oCmluZGV4IGIyNjFjNjBkM2ZhLi41ZDkxZTJh NDI4NyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbHByb3RvLmgK KysrIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbHByb3RvLmgKQEAgLTc1LDYgKzc1 LDggQEAgdHlwZWRlZiBlbnVtIExvZ2ljYWxSZXBNc2dUeXBlCiAJTE9HSUNBTF9SRVBfTVNHX1NU UkVBTV9DT01NSVQgPSAnYycsCiAJTE9HSUNBTF9SRVBfTVNHX1NUUkVBTV9BQk9SVCA9ICdBJywK IAlMT0dJQ0FMX1JFUF9NU0dfU1RSRUFNX1BSRVBBUkUgPSAncCcsCisJTE9HSUNBTF9SRVBfTVNH X0lOVEVSTkFMX0RFUEVOREVOQ1kgPSAnZCcsCisJTE9HSUNBTF9SRVBfTVNHX0lOVEVSTkFMX1JF TEFUSU9OID0gJ2knLAogfSBMb2dpY2FsUmVwTXNnVHlwZTsKIAogLyoKZGlmZiAtLWdpdCBhL3Ny Yy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dvcmtlcl9pbnRlcm5hbC5oIGIvc3JjL2luY2x1ZGUvcmVw bGljYXRpb24vd29ya2VyX2ludGVybmFsLmgKaW5kZXggZjA4MTYxOWYxNTEuLmEzNTI2ZWFlNTc4 IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93b3JrZXJfaW50ZXJuYWwuaAor KysgYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93b3JrZXJfaW50ZXJuYWwuaApAQCAtMzU5LDYg KzM1OSw4IEBAIGV4dGVybiB2b2lkIHBhX2RlY3JfYW5kX3dhaXRfc3RyZWFtX2Jsb2NrKHZvaWQp OwogZXh0ZXJuIHZvaWQgcGFfeGFjdF9maW5pc2goUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKndp bmZvLAogCQkJCQkJICAgWExvZ1JlY1B0ciByZW1vdGVfbHNuKTsKIAorZXh0ZXJuIHZvaWQgcGFf d2FpdF9mb3JfZGVwZW5kZWRfdHJhbnNhY3Rpb24oVHJhbnNhY3Rpb25JZCB4aWQpOworCiAjZGVm aW5lIGlzUGFyYWxsZWxBcHBseVdvcmtlcih3b3JrZXIpICgod29ya2VyKS0+aW5fdXNlICYmIFwK IAkJCQkJCQkJCSAgICh3b3JrZXIpLT50eXBlID09IFdPUktFUlRZUEVfUEFSQUxMRUxfQVBQTFkp CiAjZGVmaW5lIGlzVGFibGVTeW5jV29ya2VyKHdvcmtlcikgKCh3b3JrZXIpLT5pbl91c2UgJiYg XApAQCAtMzY2LDYgKzM2OCw4IEBAIGV4dGVybiB2b2lkIHBhX3hhY3RfZmluaXNoKFBhcmFsbGVs QXBwbHlXb3JrZXJJbmZvICp3aW5mbywKICNkZWZpbmUgaXNTZXF1ZW5jZVN5bmNXb3JrZXIod29y a2VyKSAoKHdvcmtlciktPmluX3VzZSAmJiBcCiAJCQkJCQkJCQkgICh3b3JrZXIpLT50eXBlID09 IFdPUktFUlRZUEVfU0VRVUVOQ0VTWU5DKQogCisjZGVmaW5lIFBBUkFMTEVMX0FQUExZX0lOVEVS TkFMX01FU1NBR0UJJ2knCisKIHN0YXRpYyBpbmxpbmUgYm9vbAogYW1fdGFibGVzeW5jX3dvcmtl cih2b2lkKQogewotLSAKMi40Ny4zCgo= --_009_TY7PR01MB145541DD6F5BE4CD403BA39FDF586ATY7PR01MB14554jp_ Content-Type: application/octet-stream; name="v7-0002-Introduce-a-shared-hash-table-to-store-paralleliz.patch" Content-Description: v7-0002-Introduce-a-shared-hash-table-to-store-paralleliz.patch Content-Disposition: attachment; filename="v7-0002-Introduce-a-shared-hash-table-to-store-paralleliz.patch"; size=8871; creation-date="Mon, 05 Jan 2026 07:38:39 GMT"; modification-date="Mon, 05 Jan 2026 07:40:44 GMT" Content-Transfer-Encoding: base64 RnJvbSA3YmYzNTgxMGJmY2FhNmIzOTg5MTllYTMwNjRjNmQ1YjliNjU5NmY3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIYXlhdG8gS3Vyb2RhIDxrdXJvZGEuaGF5YXRvQGZ1aml0c3Uu Y29tPgpEYXRlOiBNb24sIDEgRGVjIDIwMjUgMTY6Mjg6MzggKzA5MDAKU3ViamVjdDogW1BBVENI IHY3IDIvOF0gSW50cm9kdWNlIGEgc2hhcmVkIGhhc2ggdGFibGUgdG8gc3RvcmUgcGFyYWxsZWxp emVkCiB0cmFuc2FjdGlvbnMKClRoaXMgaGFzaCB0YWJsZSBpcyB1c2VkIGZvciBlbnN1cmluZyB0 aGF0IHBhcmFsbGVsIHdvcmtlcnMgd2FpdCB1bnRpbCBkZXBlbmRlbnQKdHJhbnNhY3Rpb25zIGFy ZSBjb21taXR0ZWQuCgpUaGUgc2hhcmVkIGhhc2ggdGFibGUgY29udGFpbnMgdHJhbnNhY3Rpb24g SURzIHRoYXQgdGhlIGxlYWRlciBhbGxvY2F0ZWQgdG8KcGFyYWxsZWwgd29ya2Vycy4gVGhlIGhh c2ggZW50cmllcyBhcmUgaW5zZXJ0ZWQgd2l0aCBhIHJlbW90ZSBYSUQgd2hlbiB0aGUKbGVhZGVy IGJ5cGFzc2VzIHJlbW90ZSB0cmFuc2FjdGlvbnMgdG8gcGFyYWxsZWwgYXBwbHkgd29ya2Vycy4g RW50cmllcyBhcmUKZGVsZXRlZCB3aGVuIHBhcmFsbGVsIHdvcmtlcnMgYXJlIGNvbW1pdHRlZCB0 byBjb3JyZXNwb25kaW5nIHRyYW5zYWN0aW9ucy4KCldoZW4gdGhlIHBhcmFsbGVsIHdvcmtlciB0 cmllcyB0byB3YWl0IGZvciBvdGhlciB0cmFuc2FjdGlvbnMsIGl0IGNoZWNrcyB0aGUKaGFzaCB0 YWJsZSBmb3IgdGhlIHJlbW90ZSBYSURzLiBUaGUgcHJvY2VzcyBjYW4gZ28gYWhlYWQgb25seSB3 aGVuIGVudHJpZXMgYXJlCnJlbW92ZWQgZnJvbSB0aGUgaGFzaC4KCkF1dGhvcjogSG91IFpoaWpp ZSA8aG91emouZm5zdEBmdWppdHN1LmNvbT4KQXV0aG9yOiBIYXlhdG8gS3Vyb2RhIDxrdXJvZGEu aGF5YXRvQGZ1aml0c3UuY29tPgotLS0KIC4uLi9yZXBsaWNhdGlvbi9sb2dpY2FsL2FwcGx5cGFy YWxsZWx3b3JrZXIuYyB8IDEwMCArKysrKysrKysrKysrKysrKy0KIC4uLi91dGlscy9hY3Rpdml0 eS93YWl0X2V2ZW50X25hbWVzLnR4dCAgICAgICB8ICAgMSArCiBzcmMvaW5jbHVkZS9yZXBsaWNh dGlvbi93b3JrZXJfaW50ZXJuYWwuaCAgICAgfCAgIDQgKwogc3JjL2luY2x1ZGUvc3RvcmFnZS9s d2xvY2tsaXN0LmggICAgICAgICAgICAgIHwgICAxICsKIDQgZmlsZXMgY2hhbmdlZCwgMTA1IGlu c2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBs aWNhdGlvbi9sb2dpY2FsL2FwcGx5cGFyYWxsZWx3b3JrZXIuYyBiL3NyYy9iYWNrZW5kL3JlcGxp Y2F0aW9uL2xvZ2ljYWwvYXBwbHlwYXJhbGxlbHdvcmtlci5jCmluZGV4IDA1NWZlZWEwYmM1Li42 Y2E1Zjc3OGEzYiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9h cHBseXBhcmFsbGVsd29ya2VyLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNh bC9hcHBseXBhcmFsbGVsd29ya2VyLmMKQEAgLTIxOCwxMiArMjE4LDM1IEBAIHR5cGVkZWYgc3Ry dWN0IFBhcmFsbGVsQXBwbHlXb3JrZXJFbnRyeQogCVBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICp3 aW5mbzsKIH0gUGFyYWxsZWxBcHBseVdvcmtlckVudHJ5OwogCisvKiBhbiBlbnRyeSBpbiB0aGUg cGFyYWxsZWxpemVkX3R4bnMgc2hhcmVkIGhhc2ggdGFibGUgKi8KK3R5cGVkZWYgc3RydWN0IFBh cmFsbGVsaXplZFR4bkVudHJ5Cit7CisJVHJhbnNhY3Rpb25JZCB4aWQ7CQkJLyogSGFzaCBrZXkg Ki8KK30gUGFyYWxsZWxpemVkVHhuRW50cnk7CisKIC8qCiAgKiBBIGhhc2ggdGFibGUgdXNlZCB0 byBjYWNoZSB0aGUgc3RhdGUgb2Ygc3RyZWFtaW5nIHRyYW5zYWN0aW9ucyBiZWluZyBhcHBsaWVk CiAgKiBieSB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2Vycy4KICAqLwogc3RhdGljIEhUQUIgKlBh cmFsbGVsQXBwbHlUeG5IYXNoID0gTlVMTDsKIAorLyoKKyAqIEEgaGFzaCB0YWJsZSB1c2VkIHRv IHRyYWNrIHRoZSBwYXJhbGxlbGl6ZWQgdHJhbnNhY3Rpb25zIHRoYXQgY291bGQgYmUKKyAqIGRl cGVuZGVkIG9uIGJ5IG90aGVyIHRyYW5zYWN0aW9ucy4KKyAqLworc3RhdGljIGRzYV9hcmVhICpw YXJhbGxlbF9hcHBseV9kc2FfYXJlYSA9IE5VTEw7CitzdGF0aWMgZHNoYXNoX3RhYmxlICpwYXJh bGxlbGl6ZWRfdHhucyA9IE5VTEw7CisKKy8qIHBhcmFtZXRlcnMgZm9yIHRoZSBwYXJhbGxlbGl6 ZWRfdHhucyBzaGFyZWQgaGFzaCB0YWJsZSAqLworc3RhdGljIGNvbnN0IGRzaGFzaF9wYXJhbWV0 ZXJzIGRzaF9wYXJhbXMgPSB7CisJc2l6ZW9mKFRyYW5zYWN0aW9uSWQpLAorCXNpemVvZihQYXJh bGxlbGl6ZWRUeG5FbnRyeSksCisJZHNoYXNoX21lbWNtcCwKKwlkc2hhc2hfbWVtaGFzaCwKKwlk c2hhc2hfbWVtY3B5LAorCUxXVFJBTkNIRV9QQVJBTExFTF9BUFBMWV9EU0EKK307CisKIC8qCiAq IEEgbGlzdCAocG9vbCkgb2YgYWN0aXZlIHBhcmFsbGVsIGFwcGx5IHdvcmtlcnMuIFRoZSBpbmZv cm1hdGlvbiBmb3IKICogdGhlIG5ldyB3b3JrZXIgaXMgYWRkZWQgdG8gdGhlIGxpc3QgYWZ0ZXIg c3VjY2Vzc2Z1bGx5IGxhdW5jaGluZyBpdC4gVGhlCkBAIC0yNTcsNiArMjgwLDggQEAgc3RhdGlj IExpc3QgKnN1YnhhY3RsaXN0ID0gTklMOwogc3RhdGljIHZvaWQgcGFfZnJlZV93b3JrZXJfaW5m byhQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAqd2luZm8pOwogc3RhdGljIFBhcmFsbGVsVHJhbnNT dGF0ZSBwYV9nZXRfeGFjdF9zdGF0ZShQYXJhbGxlbEFwcGx5V29ya2VyU2hhcmVkICp3c2hhcmVk KTsKIHN0YXRpYyBQYXJ0aWFsRmlsZVNldFN0YXRlIHBhX2dldF9maWxlc2V0X3N0YXRlKHZvaWQp Oworc3RhdGljIHZvaWQgcGFfYXR0YWNoX3BhcmFsbGVsaXplZF90eG5faGFzaChkc2FfaGFuZGxl ICpwYV9kc2FfaGFuZGxlLAorCQkJCQkJCQkJCQlkc2hhc2hfdGFibGVfaGFuZGxlICpwYV9kc2hh c2hfaGFuZGxlKTsKIAogLyoKICAqIFJldHVybnMgdHJ1ZSBpZiBpdCBpcyBPSyB0byBzdGFydCBh IHBhcmFsbGVsIGFwcGx5IHdvcmtlciwgZmFsc2Ugb3RoZXJ3aXNlLgpAQCAtMzM0LDYgKzM1OSwx NSBAQCBwYV9zZXR1cF9kc20oUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKndpbmZvKQogCXNobV9t cQkgICAqbXE7CiAJU2l6ZQkJcXVldWVfc2l6ZSA9IERTTV9RVUVVRV9TSVpFOwogCVNpemUJCWVy cm9yX3F1ZXVlX3NpemUgPSBEU01fRVJST1JfUVVFVUVfU0laRTsKKwlkc2FfaGFuZGxlCXBhcmFs bGVsX2FwcGx5X2RzYV9oYW5kbGU7CisJZHNoYXNoX3RhYmxlX2hhbmRsZSBwYXJhbGxlbGl6ZWRf dHhuc19oYW5kbGU7CisKKwlwYV9hdHRhY2hfcGFyYWxsZWxpemVkX3R4bl9oYXNoKCZwYXJhbGxl bF9hcHBseV9kc2FfaGFuZGxlLAorCQkJCQkJCQkJJnBhcmFsbGVsaXplZF90eG5zX2hhbmRsZSk7 CisKKwlpZiAocGFyYWxsZWxfYXBwbHlfZHNhX2hhbmRsZSA9PSBEU0FfSEFORExFX0lOVkFMSUQg fHwKKwkJcGFyYWxsZWxpemVkX3R4bnNfaGFuZGxlID09IERTSEFTSF9IQU5ETEVfSU5WQUxJRCkK KwkJcmV0dXJuIGZhbHNlOwogCiAJLyoKIAkgKiBFc3RpbWF0ZSBob3cgbXVjaCBzaGFyZWQgbWVt b3J5IHdlIG5lZWQuCkBAIC0zNjksNiArNDAzLDggQEAgcGFfc2V0dXBfZHNtKFBhcmFsbGVsQXBw bHlXb3JrZXJJbmZvICp3aW5mbykKIAlwZ19hdG9taWNfaW5pdF91MzIoJihzaGFyZWQtPnBlbmRp bmdfc3RyZWFtX2NvdW50KSwgMCk7CiAJc2hhcmVkLT5sYXN0X2NvbW1pdF9lbmQgPSBJbnZhbGlk WExvZ1JlY1B0cjsKIAlzaGFyZWQtPmZpbGVzZXRfc3RhdGUgPSBGU19FTVBUWTsKKwlzaGFyZWQt PnBhcmFsbGVsX2FwcGx5X2RzYV9oYW5kbGUgPSBwYXJhbGxlbF9hcHBseV9kc2FfaGFuZGxlOwor CXNoYXJlZC0+cGFyYWxsZWxpemVkX3R4bnNfaGFuZGxlID0gcGFyYWxsZWxpemVkX3R4bnNfaGFu ZGxlOwogCiAJc2htX3RvY19pbnNlcnQodG9jLCBQQVJBTExFTF9BUFBMWV9LRVlfU0hBUkVELCBz aGFyZWQpOwogCkBAIC04NjQsNiArOTAwLDggQEAgUGFyYWxsZWxBcHBseVdvcmtlck1haW4oRGF0 dW0gbWFpbl9hcmcpCiAJc2htX21xCSAgICptcTsKIAlzaG1fbXFfaGFuZGxlICptcWg7CiAJc2ht X21xX2hhbmRsZSAqZXJyb3JfbXFoOworCWRzYV9oYW5kbGUJcGFfZHNhX2hhbmRsZTsKKwlkc2hh c2hfdGFibGVfaGFuZGxlIHBhX2RzaGFzaF9oYW5kbGU7CiAJUmVwT3JpZ2luSWQgb3JpZ2luaWQ7 CiAJaW50CQkJd29ya2VyX3Nsb3QgPSBEYXR1bUdldEludDMyKG1haW5fYXJnKTsKIAljaGFyCQlv cmlnaW5uYW1lW05BTUVEQVRBTEVOXTsKQEAgLTk1MSw2ICs5ODksOCBAQCBQYXJhbGxlbEFwcGx5 V29ya2VyTWFpbihEYXR1bSBtYWluX2FyZykKIAogCUluaXRpYWxpemluZ0FwcGx5V29ya2VyID0g ZmFsc2U7CiAKKwlwYV9hdHRhY2hfcGFyYWxsZWxpemVkX3R4bl9oYXNoKCZwYV9kc2FfaGFuZGxl LCAmcGFfZHNoYXNoX2hhbmRsZSk7CisKIAkvKiBTZXR1cCByZXBsaWNhdGlvbiBvcmlnaW4gdHJh Y2tpbmcuICovCiAJU3RhcnRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKIAlSZXBsaWNhdGlvbk9yaWdp bk5hbWVGb3JMb2dpY2FsUmVwKE15U3Vic2NyaXB0aW9uLT5vaWQsIEludmFsaWRPaWQsCkBAIC0x NjQ2LDYgKzE2ODYsNTEgQEAgcGFfeGFjdF9maW5pc2goUGFyYWxsZWxBcHBseVdvcmtlckluZm8g KndpbmZvLCBYTG9nUmVjUHRyIHJlbW90ZV9sc24pCiAJcGFfZnJlZV93b3JrZXIod2luZm8pOwog fQogCisvKgorICogQXR0YWNoIHRvIHRoZSBzaGFyZWQgaGFzaCB0YWJsZSBmb3IgcGFyYWxsZWxp emVkIHRyYW5zYWN0aW9ucy4KKyAqLworc3RhdGljIHZvaWQKK3BhX2F0dGFjaF9wYXJhbGxlbGl6 ZWRfdHhuX2hhc2goZHNhX2hhbmRsZSAqcGFfZHNhX2hhbmRsZSwKKwkJCQkJCQkJZHNoYXNoX3Rh YmxlX2hhbmRsZSAqcGFfZHNoYXNoX2hhbmRsZSkKK3sKKwlNZW1vcnlDb250ZXh0IG9sZGN0eDsK KworCWlmIChwYXJhbGxlbGl6ZWRfdHhucykKKwl7CisJCUFzc2VydChwYXJhbGxlbF9hcHBseV9k c2FfYXJlYSk7CisJCSpwYV9kc2FfaGFuZGxlID0gZHNhX2dldF9oYW5kbGUocGFyYWxsZWxfYXBw bHlfZHNhX2FyZWEpOworCQkqcGFfZHNoYXNoX2hhbmRsZSA9IGRzaGFzaF9nZXRfaGFzaF90YWJs ZV9oYW5kbGUocGFyYWxsZWxpemVkX3R4bnMpOworCQlyZXR1cm47CisJfQorCisJLyogQmUgc3Vy ZSBhbnkgbG9jYWwgbWVtb3J5IGFsbG9jYXRlZCBieSBEU0Egcm91dGluZXMgaXMgcGVyc2lzdGVu dC4gKi8KKwlvbGRjdHggPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8oQXBwbHlDb250ZXh0KTsKKwor CWlmIChhbV9sZWFkZXJfYXBwbHlfd29ya2VyKCkpCisJeworCQkvKiBJbml0aWFsaXplIGR5bmFt aWMgc2hhcmVkIGhhc2ggdGFibGUgZm9yIGxhc3Qtc3RhcnQgdGltZXMuICovCisJCXBhcmFsbGVs X2FwcGx5X2RzYV9hcmVhID0gZHNhX2NyZWF0ZShMV1RSQU5DSEVfUEFSQUxMRUxfQVBQTFlfRFNB KTsKKwkJZHNhX3BpbihwYXJhbGxlbF9hcHBseV9kc2FfYXJlYSk7CisJCWRzYV9waW5fbWFwcGlu ZyhwYXJhbGxlbF9hcHBseV9kc2FfYXJlYSk7CisJCXBhcmFsbGVsaXplZF90eG5zID0gZHNoYXNo X2NyZWF0ZShwYXJhbGxlbF9hcHBseV9kc2FfYXJlYSwgJmRzaF9wYXJhbXMsIE5VTEwpOworCisJ CS8qIFN0b3JlIGhhbmRsZXMgaW4gc2hhcmVkIG1lbW9yeSBmb3Igb3RoZXIgYmFja2VuZHMgdG8g dXNlLiAqLworCQkqcGFfZHNhX2hhbmRsZSA9IGRzYV9nZXRfaGFuZGxlKHBhcmFsbGVsX2FwcGx5 X2RzYV9hcmVhKTsKKwkJKnBhX2RzaGFzaF9oYW5kbGUgPSBkc2hhc2hfZ2V0X2hhc2hfdGFibGVf aGFuZGxlKHBhcmFsbGVsaXplZF90eG5zKTsKKwl9CisJZWxzZSBpZiAoYW1fcGFyYWxsZWxfYXBw bHlfd29ya2VyKCkpCisJeworCQkvKiBBdHRhY2ggdG8gZXhpc3RpbmcgZHluYW1pYyBzaGFyZWQg aGFzaCB0YWJsZS4gKi8KKwkJcGFyYWxsZWxfYXBwbHlfZHNhX2FyZWEgPSBkc2FfYXR0YWNoKE15 UGFyYWxsZWxTaGFyZWQtPnBhcmFsbGVsX2FwcGx5X2RzYV9oYW5kbGUpOworCQlkc2FfcGluX21h cHBpbmcocGFyYWxsZWxfYXBwbHlfZHNhX2FyZWEpOworCQlwYXJhbGxlbGl6ZWRfdHhucyA9IGRz aGFzaF9hdHRhY2gocGFyYWxsZWxfYXBwbHlfZHNhX2FyZWEsICZkc2hfcGFyYW1zLAorCQkJCQkJ CQkJCSAgTXlQYXJhbGxlbFNoYXJlZC0+cGFyYWxsZWxpemVkX3R4bnNfaGFuZGxlLAorCQkJCQkJ CQkJCSAgTlVMTCk7CisJfQorCisJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGN0eCk7Cit9CisK IC8qCiAgKiBXYWl0IGZvciB0aGUgZ2l2ZW4gdHJhbnNhY3Rpb24gdG8gZmluaXNoLgogICovCkBA IC0xNjU2LDcgKzE3NDEsMjAgQEAgcGFfd2FpdF9mb3JfZGVwZW5kZWRfdHJhbnNhY3Rpb24oVHJh bnNhY3Rpb25JZCB4aWQpCiAKIAlmb3IgKDs7KQogCXsKLQkJLyogWFhYIHdhaXQgdW50aWwgZ2l2 ZW4gdHJhbnNhY3Rpb24gaXMgZmluaXNoZWQgKi8KKwkJUGFyYWxsZWxpemVkVHhuRW50cnkgKnR4 bl9lbnRyeTsKKworCQl0eG5fZW50cnkgPSBkc2hhc2hfZmluZChwYXJhbGxlbGl6ZWRfdHhucywg JnhpZCwgZmFsc2UpOworCisJCS8qIFRoZSBlbnRyeSBpcyByZW1vdmVkIG9ubHkgaWYgdGhlIHRy YW5zYWN0aW9uIGlzIGNvbW1pdHRlZCAqLworCQlpZiAodHhuX2VudHJ5ID09IE5VTEwpCisJCQli cmVhazsKKworCQlkc2hhc2hfcmVsZWFzZV9sb2NrKHBhcmFsbGVsaXplZF90eG5zLCB0eG5fZW50 cnkpOworCisJCXBhX2xvY2tfdHJhbnNhY3Rpb24oeGlkLCBBY2Nlc3NTaGFyZUxvY2spOworCQlw YV91bmxvY2tfdHJhbnNhY3Rpb24oeGlkLCBBY2Nlc3NTaGFyZUxvY2spOworCisJCUNIRUNLX0ZP Ul9JTlRFUlJVUFRTKCk7CiAJfQogCiAJZWxvZyhERUJVRzEsICJmaW5pc2ggd2FpdGluZyBmb3Ig ZGVwZW5kZWQgeGlkICV1IiwgeGlkKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2Fj dGl2aXR5L3dhaXRfZXZlbnRfbmFtZXMudHh0IGIvc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkv d2FpdF9ldmVudF9uYW1lcy50eHQKaW5kZXggZGNmYWRiZDVhYWUuLjUzYjg3YTJkZjEwIDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS93YWl0X2V2ZW50X25hbWVzLnR4dAor KysgYi9zcmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS93YWl0X2V2ZW50X25hbWVzLnR4dApAQCAt NDA2LDYgKzQwNiw3IEBAIFN1YnRyYW5zU0xSVQkiV2FpdGluZyB0byBhY2Nlc3MgdGhlIHN1Yi10 cmFuc2FjdGlvbiBTTFJVIGNhY2hlLiIKIFhhY3RTTFJVCSJXYWl0aW5nIHRvIGFjY2VzcyB0aGUg dHJhbnNhY3Rpb24gc3RhdHVzIFNMUlUgY2FjaGUuIgogUGFyYWxsZWxWYWN1dW1EU0EJIldhaXRp bmcgZm9yIHBhcmFsbGVsIHZhY3V1bSBkeW5hbWljIHNoYXJlZCBtZW1vcnkgYWxsb2NhdGlvbi4i CiBBaW9VcmluZ0NvbXBsZXRpb24JIldhaXRpbmcgZm9yIGFub3RoZXIgcHJvY2VzcyB0byBjb21w bGV0ZSBJTyB2aWEgaW9fdXJpbmcuIgorUGFyYWxsZWxBcHBseURTQQkiV2FpdGluZyBmb3IgcGFy YWxsZWwgYXBwbHkgZHluYW1pYyBzaGFyZWQgbWVtb3J5IGFsbG9jYXRpb24uIgogCiAjIE5vICJB QklfY29tcGF0aWJpbGl0eSIgcmVnaW9uIGhlcmUgYXMgV2FpdEV2ZW50TFdMb2NrIGhhcyBpdHMg b3duIEMgY29kZS4KIApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vd29ya2Vy X2ludGVybmFsLmggYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93b3JrZXJfaW50ZXJuYWwuaApp bmRleCBhMzUyNmVhZTU3OC4uZGRjZGNjMDUwNTMgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3Jl cGxpY2F0aW9uL3dvcmtlcl9pbnRlcm5hbC5oCisrKyBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9u L3dvcmtlcl9pbnRlcm5hbC5oCkBAIC0xNSw2ICsxNSw3IEBACiAjaW5jbHVkZSAiYWNjZXNzL3hs b2dkZWZzLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19zdWJzY3JpcHRpb24uaCIKICNpbmNsdWRl ICJkYXRhdHlwZS90aW1lc3RhbXAuaCIKKyNpbmNsdWRlICJsaWIvZHNoYXNoLmgiCiAjaW5jbHVk ZSAibWlzY2FkbWluLmgiCiAjaW5jbHVkZSAicmVwbGljYXRpb24vbG9naWNhbHJlbGF0aW9uLmgi CiAjaW5jbHVkZSAicmVwbGljYXRpb24vd2FscmVjZWl2ZXIuaCIKQEAgLTE5Nyw2ICsxOTgsOSBA QCB0eXBlZGVmIHN0cnVjdCBQYXJhbGxlbEFwcGx5V29ya2VyU2hhcmVkCiAJICovCiAJUGFydGlh bEZpbGVTZXRTdGF0ZSBmaWxlc2V0X3N0YXRlOwogCUZpbGVTZXQJCWZpbGVzZXQ7CisKKwlkc2Ff aGFuZGxlCXBhcmFsbGVsX2FwcGx5X2RzYV9oYW5kbGU7CisJZHNoYXNoX3RhYmxlX2hhbmRsZSBw YXJhbGxlbGl6ZWRfdHhuc19oYW5kbGU7CiB9IFBhcmFsbGVsQXBwbHlXb3JrZXJTaGFyZWQ7CiAK IC8qCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9zdG9yYWdlL2x3bG9ja2xpc3QuaCBiL3NyYy9p bmNsdWRlL3N0b3JhZ2UvbHdsb2NrbGlzdC5oCmluZGV4IDUzMzM0NDUwOWU5Li5lMTYyOTVlNWEz YiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9sd2xvY2tsaXN0LmgKKysrIGIvc3Jj L2luY2x1ZGUvc3RvcmFnZS9sd2xvY2tsaXN0LmgKQEAgLTEzNywzICsxMzcsNCBAQCBQR19MV0xP Q0tUUkFOQ0hFKFNVQlRSQU5TX1NMUlUsIFN1YnRyYW5zU0xSVSkKIFBHX0xXTE9DS1RSQU5DSEUo WEFDVF9TTFJVLCBYYWN0U0xSVSkKIFBHX0xXTE9DS1RSQU5DSEUoUEFSQUxMRUxfVkFDVVVNX0RT QSwgUGFyYWxsZWxWYWN1dW1EU0EpCiBQR19MV0xPQ0tUUkFOQ0hFKEFJT19VUklOR19DT01QTEVU SU9OLCBBaW9VcmluZ0NvbXBsZXRpb24pCitQR19MV0xPQ0tUUkFOQ0hFKFBBUkFMTEVMX0FQUExZ X0RTQSwgUGFyYWxsZWxBcHBseURTQSkKLS0gCjIuNDcuMwoK --_009_TY7PR01MB145541DD6F5BE4CD403BA39FDF586ATY7PR01MB14554jp_ Content-Type: application/octet-stream; name="v7-0003-Introduce-a-local-hash-table-to-store-replica-ide.patch" Content-Description: v7-0003-Introduce-a-local-hash-table-to-store-replica-ide.patch Content-Disposition: attachment; filename="v7-0003-Introduce-a-local-hash-table-to-store-replica-ide.patch"; size=28326; creation-date="Mon, 05 Jan 2026 07:38:39 GMT"; modification-date="Mon, 05 Jan 2026 07:40:44 GMT" Content-Transfer-Encoding: base64 RnJvbSA1NmM5NjUyODhhODFmOGMzYmFlMzZkNjUxZjdjYTY0Njc3NzJiOTMwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIYXlhdG8gS3Vyb2RhIDxrdXJvZGEuaGF5YXRvQGZ1aml0c3Uu Y29tPgpEYXRlOiBNb24sIDEgRGVjIDIwMjUgMTY6Mzk6MDIgKzA5MDAKU3ViamVjdDogW1BBVENI IHY3IDMvOF0gSW50cm9kdWNlIGEgbG9jYWwgaGFzaCB0YWJsZSB0byBzdG9yZSByZXBsaWNhCiBp ZGVudGl0aWVzCgpUaGlzIGxvY2FsIGhhc2ggdGFibGUgb24gdGhlIGxlYWRlciBpcyB1c2VkIGZv ciBkZXRlY3RpbmcgZGVwZW5kZW5jaWVzIGJldHdlZW4KdHJhbnNhY3Rpb25zLgoKVGhlIGhhc2gg Y29udGFpbnMgdGhlIFJlcGxpY2EgSWRlbnRpdHkgKFJJKSBhcyBhIGtleSBhbmQgdGhlIHJlbW90 ZSBYSUQgdGhhdAptb2RpZmllZCB0aGUgY29ycmVzcG9uZGluZyB0dXBsZS4gVGhlIGhhc2ggZW50 cmllcyBhcmUgaW5zZXJ0ZWQgd2hlbiB0aGUgbGVhZGVyCmZpbmRzIGFuIFJJIGZyb20gYSByZXBs aWNhdGlvbiBtZXNzYWdlLiBFbnRyaWVzIGFyZSBkZWxldGVkIHdoZW4gdHJhbnNhY3Rpb25zCmNv bW1pdHRlZCBieSBwYXJhbGxlbCB3b3JrZXJzIGFyZSBnYXRoZXJlZCwgb3IgdGhlIG51bWJlciBv ZiBlbnRyaWVzIGV4Y2VlZHMgdGhlCmxpbWl0LgoKV2hlbiB0aGUgbGVhZGVyIHNlbmRzIHJlcGxp Y2F0aW9uIGNoYW5nZXMgdG8gcGFyYWxsZWwgd29ya2VycywgaXQgY2hlY2tzIHdoZXRoZXIKb3Ro ZXIgdHJhbnNhY3Rpb25zIGhhdmUgYWxyZWFkeSB1c2VkIHRoZSBSSSBhc3NvY2lhdGVkIHdpdGgg dGhlIGNoYW5nZS4gSWYKc29tZXRoaW5nIGlzIGZvdW5kLCB0aGUgbGVhZGVyIHRyZWF0cyBpdCBh cyBhIGRlcGVuZGVudCB0cmFuc2FjdGlvbiBhbmQgbm90aWZpZXMKcGFyYWxsZWwgd29ya2VycyB0 byB3YWl0IHVudGlsIGl0IGZpbmlzaGVzIHZpYSBMT0dJQ0FMX1JFUF9NU0dfSU5URVJOQUxfREVQ RU5ERU5DWS4KCkF1dGhvcjogSG91IFpoaWppZSA8aG91emouZm5zdEBmdWppdHN1LmNvbT4KQXV0 aG9yOiBIYXlhdG8gS3Vyb2RhIDxrdXJvZGEuaGF5YXRvQGZ1aml0c3UuY29tPgotLS0KIC4uLi9y ZXBsaWNhdGlvbi9sb2dpY2FsL2FwcGx5cGFyYWxsZWx3b3JrZXIuYyB8IDEyMyArKystCiBzcmMv YmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3JlbGF0aW9uLmMgICAgfCAgMjQgKwogc3JjL2Jh Y2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYyAgICAgIHwgNjE2ICsrKysrKysrKysr KysrKysrLQogc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbHJlbGF0aW9uLmggICAgIHwg ICAzICsKIHNyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dvcmtlcl9pbnRlcm5hbC5oICAgICB8ICAg OCArLQogNSBmaWxlcyBjaGFuZ2VkLCA3NzEgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkK CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2FwcGx5cGFyYWxs ZWx3b3JrZXIuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvYXBwbHlwYXJhbGxl bHdvcmtlci5jCmluZGV4IDZjYTVmNzc4YTNiLi5jZjA4MjA2ZDlmZCAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9hcHBseXBhcmFsbGVsd29ya2VyLmMKKysrIGIv c3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9hcHBseXBhcmFsbGVsd29ya2VyLmMKQEAg LTIxNiw2ICsyMTYsNyBAQCB0eXBlZGVmIHN0cnVjdCBQYXJhbGxlbEFwcGx5V29ya2VyRW50cnkK IHsKIAlUcmFuc2FjdGlvbklkIHhpZDsJCQkvKiBIYXNoIGtleSAtLSBtdXN0IGJlIGZpcnN0ICov CiAJUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKndpbmZvOworCVhMb2dSZWNQdHIJbG9jYWxfZW5k OwogfSBQYXJhbGxlbEFwcGx5V29ya2VyRW50cnk7CiAKIC8qIGFuIGVudHJ5IGluIHRoZSBwYXJh bGxlbGl6ZWRfdHhucyBzaGFyZWQgaGFzaCB0YWJsZSAqLwpAQCAtNTA0LDcgKzUwNSw3IEBAIHBh X2xhdW5jaF9wYXJhbGxlbF93b3JrZXIodm9pZCkKICAqIHN0cmVhbWluZyBjaGFuZ2VzLgogICov CiB2b2lkCi1wYV9hbGxvY2F0ZV93b3JrZXIoVHJhbnNhY3Rpb25JZCB4aWQpCitwYV9hbGxvY2F0 ZV93b3JrZXIoVHJhbnNhY3Rpb25JZCB4aWQsIGJvb2wgc3RyZWFtX3R4bikKIHsKIAlib29sCQlm b3VuZDsKIAlQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAqd2luZm8gPSBOVUxMOwpAQCAtNTQ1LDcg KzU0Niw5IEBAIHBhX2FsbG9jYXRlX3dvcmtlcihUcmFuc2FjdGlvbklkIHhpZCkKIAogCXdpbmZv LT5pbl91c2UgPSB0cnVlOwogCXdpbmZvLT5zZXJpYWxpemVfY2hhbmdlcyA9IGZhbHNlOworCXdp bmZvLT5zdHJlYW1fdHhuID0gc3RyZWFtX3R4bjsKIAllbnRyeS0+d2luZm8gPSB3aW5mbzsKKwll bnRyeS0+bG9jYWxfZW5kID0gSW52YWxpZFhMb2dSZWNQdHI7CiB9CiAKIC8qCkBAIC03NDIsNiAr NzQ1LDczIEBAIHBhX3Byb2Nlc3Nfc3Bvb2xlZF9tZXNzYWdlc19pZl9yZXF1aXJlZCh2b2lkKQog CXJldHVybiB0cnVlOwogfQogCisvKgorICogR2V0IHRoZSBsb2NhbCBlbmQgTFNOIGZvciBhIHRy YW5zYWN0aW9uIGFwcGxpZWQgYnkgYSBwYXJhbGxlbCBhcHBseSB3b3JrZXIuCisgKgorICogU2V0 IGRlbGV0ZV9lbnRyeSB0byB0cnVlIGlmIHlvdSBpbnRlbmQgdG8gcmVtb3ZlIHRoZSB0cmFuc2Fj dGlvbiBmcm9tIHRoZQorICogUGFyYWxsZWxBcHBseVR4bkhhc2ggYWZ0ZXIgY29sbGVjdGluZyBp dHMgTFNOLgorICoKKyAqIElmIHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgZGlkIG5vdCB3cml0 ZSBhbnkgY2hhbmdlcyBkdXJpbmcgdGhlIHRyYW5zYWN0aW9uCisgKiBhcHBsaWNhdGlvbiBkdWUg dG8gc2l0dWF0aW9ucyBsaWtlIHVwZGF0ZS9kZWxldGVfbWlzc2luZyBvciBhIGJlZm9yZSB0cmln Z2VyLAorICogdGhlICpza2lwcGVkX3dyaXRlIHdpbGwgYmUgc2V0IHRvIHRydWUuCisgKi8KK1hM b2dSZWNQdHIKK3BhX2dldF9sYXN0X2NvbW1pdF9lbmQoVHJhbnNhY3Rpb25JZCB4aWQsIGJvb2wg ZGVsZXRlX2VudHJ5LCBib29sICpza2lwcGVkX3dyaXRlKQoreworCWJvb2wJCWZvdW5kOworCVBh cmFsbGVsQXBwbHlXb3JrZXJFbnRyeSAqZW50cnk7CisJUGFyYWxsZWxBcHBseVdvcmtlckluZm8g KndpbmZvOworCisJQXNzZXJ0KFRyYW5zYWN0aW9uSWRJc1ZhbGlkKHhpZCkpOworCisJaWYgKHNr aXBwZWRfd3JpdGUpCisJCSpza2lwcGVkX3dyaXRlID0gZmFsc2U7CisKKwkvKiBGaW5kIGFuIGVu dHJ5IGZvciB0aGUgcmVxdWVzdGVkIHRyYW5zYWN0aW9uLiAqLworCWVudHJ5ID0gaGFzaF9zZWFy Y2goUGFyYWxsZWxBcHBseVR4bkhhc2gsICZ4aWQsIEhBU0hfRklORCwgJmZvdW5kKTsKKworCWlm ICghZm91bmQpCisJCXJldHVybiBJbnZhbGlkWExvZ1JlY1B0cjsKKworCS8qCisJICogSWYgd29y a2VyIGluZm8gaXMgTlVMTCwgaXQgaW5kaWNhdGVzIHRoYXQgdGhlIHdvcmtlciBoYXMgYmVlbiBy ZXVzZWQKKwkgKiBmb3IgaGFuZGxpbmcgb3RoZXIgdHJhbnNhY3Rpb25zLiBDb25zZXF1ZW50bHks IHRoZSBsb2NhbCBlbmQgTFNOIGhhcworCSAqIGFscmVhZHkgYmVlbiBjb2xsZWN0ZWQgYW5kIHNh dmVkIGluIGVudHJ5LT5sb2NhbF9lbmQuCisJICovCisJd2luZm8gPSBlbnRyeS0+d2luZm87CisJ aWYgKHdpbmZvID09IE5VTEwpCisJeworCQlpZiAoZGVsZXRlX2VudHJ5ICYmCisJCQkhaGFzaF9z ZWFyY2goUGFyYWxsZWxBcHBseVR4bkhhc2gsICZ4aWQsIEhBU0hfUkVNT1ZFLCBOVUxMKSkKKwkJ CWVsb2coRVJST1IsICJoYXNoIHRhYmxlIGNvcnJ1cHRlZCIpOworCisJCWlmIChza2lwcGVkX3dy aXRlKQorCQkJKnNraXBwZWRfd3JpdGUgPSBYTG9nUmVjUHRySXNJbnZhbGlkKGVudHJ5LT5sb2Nh bF9lbmQpOworCisJCXJldHVybiBlbnRyeS0+bG9jYWxfZW5kOworCX0KKworCS8qIFJldHVybiBJ bnZhbGlkWExvZ1JlY1B0ciBpZiB0aGUgdHJhbnNhY3Rpb24gaXMgc3RpbGwgaW4gcHJvZ3Jlc3Mg Ki8KKwlpZiAocGFfZ2V0X3hhY3Rfc3RhdGUod2luZm8tPnNoYXJlZCkgIT0gUEFSQUxMRUxfVFJB TlNfRklOSVNIRUQpCisJCXJldHVybiBJbnZhbGlkWExvZ1JlY1B0cjsKKworCS8qIENvbGxlY3Qg dGhlIGxvY2FsIGVuZCBMU04gZnJvbSB0aGUgd29ya2VyJ3Mgc2hhcmVkIG1lbW9yeSBhcmVhICov CisJZW50cnktPmxvY2FsX2VuZCA9IHdpbmZvLT5zaGFyZWQtPmxhc3RfY29tbWl0X2VuZDsKKwll bnRyeS0+d2luZm8gPSBOVUxMOworCisJaWYgKHNraXBwZWRfd3JpdGUpCisJCSpza2lwcGVkX3dy aXRlID0gWExvZ1JlY1B0cklzSW52YWxpZChlbnRyeS0+bG9jYWxfZW5kKTsKKworCWVsb2coREVC VUcxLCAic3RvcmUgbG9jYWwgY29tbWl0ICVYLyVYIGVuZCB0byB0eG4gZW50cnk6ICV1IiwKKwkJ IExTTl9GT1JNQVRfQVJHUyhlbnRyeS0+bG9jYWxfZW5kKSwgeGlkKTsKKworCWlmIChkZWxldGVf ZW50cnkgJiYKKwkJIWhhc2hfc2VhcmNoKFBhcmFsbGVsQXBwbHlUeG5IYXNoLCAmeGlkLCBIQVNI X1JFTU9WRSwgTlVMTCkpCisJCWVsb2coRVJST1IsICJoYXNoIHRhYmxlIGNvcnJ1cHRlZCIpOwor CisJcmV0dXJuIGVudHJ5LT5sb2NhbF9lbmQ7Cit9CisKIC8qCiAgKiBJbnRlcnJ1cHQgaGFuZGxl ciBmb3IgbWFpbiBsb29wIG9mIHBhcmFsbGVsIGFwcGx5IHdvcmtlci4KICAqLwpAQCAtMTY4Niw2 ICsxNzU2LDI2IEBAIHBhX3hhY3RfZmluaXNoKFBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICp3aW5m bywgWExvZ1JlY1B0ciByZW1vdGVfbHNuKQogCXBhX2ZyZWVfd29ya2VyKHdpbmZvKTsKIH0KIAor Ym9vbAorcGFfdHJhbnNhY3Rpb25fY29tbWl0dGVkKFRyYW5zYWN0aW9uSWQgeGlkKQoreworCWJv b2wJCWZvdW5kOworCVBhcmFsbGVsQXBwbHlXb3JrZXJFbnRyeSAqZW50cnk7CisKKwlBc3NlcnQo VHJhbnNhY3Rpb25JZElzVmFsaWQoeGlkKSk7CisKKwkvKiBGaW5kIGFuIGVudHJ5IGZvciB0aGUg cmVxdWVzdGVkIHRyYW5zYWN0aW9uICovCisJZW50cnkgPSBoYXNoX3NlYXJjaChQYXJhbGxlbEFw cGx5VHhuSGFzaCwgJnhpZCwgSEFTSF9GSU5ELCAmZm91bmQpOworCisJaWYgKCFmb3VuZCkKKwkJ cmV0dXJuIHRydWU7CisKKwlpZiAoIWVudHJ5LT53aW5mbykKKwkJcmV0dXJuIHRydWU7CisKKwly ZXR1cm4gcGFfZ2V0X3hhY3Rfc3RhdGUoZW50cnktPndpbmZvLT5zaGFyZWQpID09IFBBUkFMTEVM X1RSQU5TX0ZJTklTSEVEOworfQorCiAvKgogICogQXR0YWNoIHRvIHRoZSBzaGFyZWQgaGFzaCB0 YWJsZSBmb3IgcGFyYWxsZWxpemVkIHRyYW5zYWN0aW9ucy4KICAqLwpAQCAtMTczMSw2ICsxODIx LDM3IEBAIHBhX2F0dGFjaF9wYXJhbGxlbGl6ZWRfdHhuX2hhc2goZHNhX2hhbmRsZSAqcGFfZHNh X2hhbmRsZSwKIAlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY3R4KTsKIH0KIAorLyoKKyAqIFJl Y29yZCBpbi1wcm9ncmVzcyB0cmFuc2FjdGlvbnMgZnJvbSB0aGUgZ2l2ZW4gbGlzdCB0aGF0IGFy ZSBiZWluZyBkZXBlbmRlZAorICogb24gaW50byB0aGUgc2hhcmVkIGhhc2ggdGFibGUuCisgKi8K K3ZvaWQKK3BhX3JlY29yZF9kZXBlbmRlbmN5X29uX3RyYW5zYWN0aW9ucyhMaXN0ICpkZXBlbmRz X29uX3hpZHMpCit7CisJZm9yZWFjaF94aWQoeGlkLCBkZXBlbmRzX29uX3hpZHMpCisJeworCQli b29sCQlmb3VuZDsKKwkJUGFyYWxsZWxBcHBseVdvcmtlckVudHJ5ICp3aW5mb19lbnRyeTsKKwkJ UGFyYWxsZWxBcHBseVdvcmtlckluZm8gKndpbmZvOworCQlQYXJhbGxlbGl6ZWRUeG5FbnRyeSAq dHhuX2VudHJ5OworCisJCXdpbmZvX2VudHJ5ID0gaGFzaF9zZWFyY2goUGFyYWxsZWxBcHBseVR4 bkhhc2gsICZ4aWQsIEhBU0hfRklORCwgJmZvdW5kKTsKKwkJd2luZm8gPSB3aW5mb19lbnRyeS0+ d2luZm87CisKKwkJdHhuX2VudHJ5ID0gZHNoYXNoX2ZpbmRfb3JfaW5zZXJ0KHBhcmFsbGVsaXpl ZF90eG5zLCAmeGlkLCAmZm91bmQpOworCisJCS8qCisJCSAqIElmIHRoZSB0cmFuc2FjdGlvbiBo YXMgYmVlbiBjb21taXR0ZWQgbm93LCByZW1vdmUgdGhlIGVudHJ5LAorCQkgKiBvdGhlcndpc2Ug dGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlciB3aWxsIHJlbW92ZSB0aGUgZW50cnkgb25jZQorCQkg KiBjb21taXR0ZWQgdGhlIHRyYW5zYWN0aW9uLgorCQkgKi8KKwkJaWYgKHBhX2dldF94YWN0X3N0 YXRlKHdpbmZvLT5zaGFyZWQpID09IFBBUkFMTEVMX1RSQU5TX0ZJTklTSEVEKQorCQkJZHNoYXNo X2RlbGV0ZV9lbnRyeShwYXJhbGxlbGl6ZWRfdHhucywgdHhuX2VudHJ5KTsKKwkJZWxzZQorCQkJ ZHNoYXNoX3JlbGVhc2VfbG9jayhwYXJhbGxlbGl6ZWRfdHhucywgdHhuX2VudHJ5KTsKKwl9Cit9 CisKIC8qCiAgKiBXYWl0IGZvciB0aGUgZ2l2ZW4gdHJhbnNhY3Rpb24gdG8gZmluaXNoLgogICov CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3JlbGF0aW9uLmMg Yi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3JlbGF0aW9uLmMKaW5kZXggMmM4NDg1 Yjg4MWYuLjEzZjhjYjc0ZTlmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9s b2dpY2FsL3JlbGF0aW9uLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9y ZWxhdGlvbi5jCkBAIC05NTksMyArOTU5LDI3IEBAIEZpbmRMb2dpY2FsUmVwTG9jYWxJbmRleChS ZWxhdGlvbiBsb2NhbHJlbCwgTG9naWNhbFJlcFJlbGF0aW9uICpyZW1vdGVyZWwsCiAKIAlyZXR1 cm4gSW52YWxpZE9pZDsKIH0KKworLyoKKyAqIEdldCB0aGUgTG9naWNhbFJlcFJlbE1hcEVudHJ5 IGNvcnJlc3BvbmRpbmcgdG8gdGhlIGdpdmVuIHJlbGlkIHdpdGhvdXQKKyAqIG9wZW5pbmcgdGhl IGxvY2FsIHJlbGF0aW9uLgorICovCitMb2dpY2FsUmVwUmVsTWFwRW50cnkgKgorbG9naWNhbHJl cF9nZXRfcmVsZW50cnkoTG9naWNhbFJlcFJlbElkIHJlbW90ZWlkKQoreworCUxvZ2ljYWxSZXBS ZWxNYXBFbnRyeSAqZW50cnk7CisJYm9vbAkJZm91bmQ7CisKKwlpZiAoTG9naWNhbFJlcFJlbE1h cCA9PSBOVUxMKQorCQlsb2dpY2FscmVwX3JlbG1hcF9pbml0KCk7CisKKwkvKiBTZWFyY2ggZm9y IGV4aXN0aW5nIGVudHJ5LiAqLworCWVudHJ5ID0gaGFzaF9zZWFyY2goTG9naWNhbFJlcFJlbE1h cCwgKHZvaWQgKikgJnJlbW90ZWlkLAorCQkJCQkJSEFTSF9GSU5ELCAmZm91bmQpOworCisJaWYg KCFmb3VuZCkKKwkJZWxvZyhERUJVRzEsICJubyByZWxhdGlvbiBtYXAgZW50cnkgZm9yIHJlbW90 ZSByZWxhdGlvbiBJRCAldSIsCisJCQkgcmVtb3RlaWQpOworCisJcmV0dXJuIGVudHJ5OworfQpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYyBiL3Ny Yy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMKaW5kZXggNzNkMzg2NDRjNGEu LjBiMWVlZWZlOWM5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2Fs L3dvcmtlci5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMK QEAgLTMwMyw2ICszMDMsNyBAQCB0eXBlZGVmIHN0cnVjdCBGbHVzaFBvc2l0aW9uCiAJZGxpc3Rf bm9kZQlub2RlOwogCVhMb2dSZWNQdHIJbG9jYWxfZW5kOwogCVhMb2dSZWNQdHIJcmVtb3RlX2Vu ZDsKKwlUcmFuc2FjdGlvbklkIHBhX3JlbW90ZV94aWQ7CiB9IEZsdXNoUG9zaXRpb247CiAKIHN0 YXRpYyBkbGlzdF9oZWFkIGxzbl9tYXBwaW5nID0gRExJU1RfU1RBVElDX0lOSVQobHNuX21hcHBp bmcpOwpAQCAtNTQ0LDYgKzU0NSw0OSBAQCB0eXBlZGVmIHN0cnVjdCBBcHBseVN1YlhhY3REYXRh CiAKIHN0YXRpYyBBcHBseVN1YlhhY3REYXRhIHN1YnhhY3RfZGF0YSA9IHswLCAwLCBJbnZhbGlk VHJhbnNhY3Rpb25JZCwgTlVMTH07CiAKK3R5cGVkZWYgc3RydWN0IFJlcGxpY2FJZGVudGl0eUtl eQoreworCU9pZAkJCXJlbGlkOworCUxvZ2ljYWxSZXBUdXBsZURhdGEgKmRhdGE7Cit9IFJlcGxp Y2FJZGVudGl0eUtleTsKKwordHlwZWRlZiBzdHJ1Y3QgUmVwbGljYUlkZW50aXR5RW50cnkKK3sK KwlSZXBsaWNhSWRlbnRpdHlLZXkgKmtleWRhdGE7CisJVHJhbnNhY3Rpb25JZCByZW1vdGVfeGlk OworCisJLyogbmVlZGVkIGZvciBzaW1wbGVoYXNoICovCisJdWludDMyCQloYXNoOworCWNoYXIJ CXN0YXR1czsKK30gUmVwbGljYUlkZW50aXR5RW50cnk7CisKKyNpbmNsdWRlICJjb21tb24vaGFz aGZuLmgiCisKK3N0YXRpYyB1aW50MzIgaGFzaF9yZXBsaWNhX2lkZW50aXR5KFJlcGxpY2FJZGVu dGl0eUtleSAqa2V5KTsKK3N0YXRpYyBib29sIGhhc2hfcmVwbGljYV9pZGVudGl0eV9jb21wYXJl KFJlcGxpY2FJZGVudGl0eUtleSAqYSwKKwkJCQkJCQkJCQkgIFJlcGxpY2FJZGVudGl0eUtleSAq Yik7CisKKy8qIERlZmluZSBwYXJhbWV0ZXJzIGZvciByZXBsaWNhIGlkZW50aXR5IGhhc2ggdGFi bGUgY29kZSBnZW5lcmF0aW9uLiAqLworI2RlZmluZSBTSF9QUkVGSVgJCXJlcGxpY2FfaWRlbnRp dHkKKyNkZWZpbmUgU0hfRUxFTUVOVF9UWVBFCVJlcGxpY2FJZGVudGl0eUVudHJ5CisjZGVmaW5l IFNIX0tFWV9UWVBFCQlSZXBsaWNhSWRlbnRpdHlLZXkgKgorI2RlZmluZQlTSF9LRVkJCQlrZXlk YXRhCisjZGVmaW5lIFNIX0hBU0hfS0VZKHRiLCBrZXkpCWhhc2hfcmVwbGljYV9pZGVudGl0eShr ZXkpCisjZGVmaW5lIFNIX0VRVUFMKHRiLCBhLCBiKQkJaGFzaF9yZXBsaWNhX2lkZW50aXR5X2Nv bXBhcmUoYSwgYikKKyNkZWZpbmUgU0hfU1RPUkVfSEFTSAorI2RlZmluZSBTSF9HRVRfSEFTSCh0 YiwgYSkgKGEpLT5oYXNoCisjZGVmaW5lCVNIX1NDT1BFCQlzdGF0aWMgaW5saW5lCisjZGVmaW5l IFNIX0RFQ0xBUkUKKyNkZWZpbmUgU0hfREVGSU5FCisjaW5jbHVkZSAibGliL3NpbXBsZWhhc2gu aCIKKworI2RlZmluZSBSRVBMSUNBX0lERU5USVRZX0lOSVRJQUxfU0laRSAxMjgKKyNkZWZpbmUg UkVQTElDQV9JREVOVElUWV9DTEVBTlVQX1RIUkVTSE9MRCAxMDI0CisKK3N0YXRpYyByZXBsaWNh X2lkZW50aXR5X2hhc2ggKnJlcGxpY2FfaWRlbnRpdHlfdGFibGUgPSBOVUxMOworCitzdGF0aWMg dm9pZCB3cml0ZV9pbnRlcm5hbF9kZXBlbmRlbmNpZXMoU3RyaW5nSW5mbyBzLCBMaXN0ICpkZXBl bmRzX29uX3hpZHMpOworCiBzdGF0aWMgaW5saW5lIHZvaWQgc3VieGFjdF9maWxlbmFtZShjaGFy ICpwYXRoLCBPaWQgc3ViaWQsIFRyYW5zYWN0aW9uSWQgeGlkKTsKIHN0YXRpYyBpbmxpbmUgdm9p ZCBjaGFuZ2VzX2ZpbGVuYW1lKGNoYXIgKnBhdGgsIE9pZCBzdWJpZCwgVHJhbnNhY3Rpb25JZCB4 aWQpOwogCkBAIC02MjksNiArNjczLDU0NiBAQCBzdGF0aWMgVHJhbnNBcHBseUFjdGlvbiBnZXRf dHJhbnNhY3Rpb25fYXBwbHlfYWN0aW9uKFRyYW5zYWN0aW9uSWQgeGlkLAogCiBzdGF0aWMgdm9p ZCByZXBsb3JpZ2luX3Jlc2V0KGludCBjb2RlLCBEYXR1bSBhcmcpOwogCitzdGF0aWMgYm9vbCBz ZW5kX2ludGVybmFsX2RlcGVuZGVuY2llcyhQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAqd2luZm8s CisJCQkJCQkJCQkgICBTdHJpbmdJbmZvIHMpOworCisvKgorICogQ29tcHV0ZSB0aGUgaGFzaCB2 YWx1ZSBmb3IgZW50cmllcyBpbiB0aGUgcmVwbGljYV9pZGVudGl0eV90YWJsZS4KKyAqLworc3Rh dGljIHVpbnQzMgoraGFzaF9yZXBsaWNhX2lkZW50aXR5KFJlcGxpY2FJZGVudGl0eUtleSAqa2V5 KQoreworCWludAkJCWk7CisJdWludDMyCQloYXNoa2V5ID0gMDsKKworCWhhc2hrZXkgPSBoYXNo X2NvbWJpbmUoaGFzaGtleSwgaGFzaF91aW50MzIoa2V5LT5yZWxpZCkpOworCisJZm9yIChpID0g MDsgaSA8IGtleS0+ZGF0YS0+bmNvbHM7IGkrKykKKwl7CisJCXVpbnQzMgkJaGtleTsKKworCQlp ZiAoa2V5LT5kYXRhLT5jb2xzdGF0dXNbaV0gPT0gTE9HSUNBTFJFUF9DT0xVTU5fTlVMTCkKKwkJ CWNvbnRpbnVlOworCisJCWhrZXkgPSBoYXNoX2FueSgoY29uc3QgdW5zaWduZWQgY2hhciAqKSBr ZXktPmRhdGEtPmNvbHZhbHVlc1tpXS5kYXRhLAorCQkJCQkJa2V5LT5kYXRhLT5jb2x2YWx1ZXNb aV0ubGVuKTsKKwkJaGFzaGtleSA9IGhhc2hfY29tYmluZShoYXNoa2V5LCBoa2V5KTsKKwl9CisK KwlyZXR1cm4gaGFzaGtleTsKK30KKworLyoKKyAqIENvbXBhcmUgdHdvIGVudHJpZXMgaW4gdGhl IHJlcGxpY2FfaWRlbnRpdHlfdGFibGUuCisgKi8KK3N0YXRpYyBib29sCitoYXNoX3JlcGxpY2Ff aWRlbnRpdHlfY29tcGFyZShSZXBsaWNhSWRlbnRpdHlLZXkgKmEsIFJlcGxpY2FJZGVudGl0eUtl eSAqYikKK3sKKwlpZiAoYS0+cmVsaWQgIT0gYi0+cmVsaWQgfHwKKwkJYS0+ZGF0YS0+bmNvbHMg IT0gYi0+ZGF0YS0+bmNvbHMpCisJCXJldHVybiBmYWxzZTsKKworCWZvciAoaW50IGkgPSAwOyBp IDwgYS0+ZGF0YS0+bmNvbHM7IGkrKykKKwl7CisJCWlmIChhLT5kYXRhLT5jb2xzdGF0dXNbaV0g IT0gYi0+ZGF0YS0+Y29sc3RhdHVzW2ldKQorCQkJcmV0dXJuIGZhbHNlOworCisJCWlmIChhLT5k YXRhLT5jb2x2YWx1ZXNbaV0ubGVuICE9IGItPmRhdGEtPmNvbHZhbHVlc1tpXS5sZW4pCisJCQly ZXR1cm4gZmFsc2U7CisKKwkJaWYgKHN0cmNtcChhLT5kYXRhLT5jb2x2YWx1ZXNbaV0uZGF0YSwg Yi0+ZGF0YS0+Y29sdmFsdWVzW2ldLmRhdGEpKQorCQkJcmV0dXJuIGZhbHNlOworCisJCWVsb2co REVCVUcxLCAiY29uZmxpY3Rpbmcga2V5ICVzIiwgYS0+ZGF0YS0+Y29sdmFsdWVzW2ldLmRhdGEp OworCX0KKworCXJldHVybiB0cnVlOworfQorCisvKgorICogRnJlZSByZXNvdXJjZXMgYXNzb2Np YXRlZCB3aXRoIGEgcmVwbGljYSBpZGVudGl0eSBrZXkuCisgKi8KK3N0YXRpYyB2b2lkCitmcmVl X3JlcGxpY2FfaWRlbnRpdHlfa2V5KFJlcGxpY2FJZGVudGl0eUtleSAqa2V5KQoreworCUFzc2Vy dChrZXkpOworCisJcGZyZWUoa2V5LT5kYXRhLT5jb2x2YWx1ZXMpOworCXBmcmVlKGtleS0+ZGF0 YS0+Y29sc3RhdHVzKTsKKwlwZnJlZShrZXktPmRhdGEpOworCXBmcmVlKGtleSk7Cit9CisKKy8q CisgKiBDbGVhbiB1cCBoYXNoIHRhYmxlIGVudHJpZXMgYXNzb2NpYXRlZCB3aXRoIHRoZSBnaXZl biB0cmFuc2FjdGlvbiBJRHMuCisgKi8KK3N0YXRpYyB2b2lkCitjbGVhbnVwX3JlcGxpY2FfaWRl bnRpdHlfdGFibGUoTGlzdCAqY29tbWl0dGVkX3hpZCkKK3sKKwlyZXBsaWNhX2lkZW50aXR5X2l0 ZXJhdG9yIGk7CisJUmVwbGljYUlkZW50aXR5RW50cnkgKnJpZW50cnk7CisKKwlpZiAoIWNvbW1p dHRlZF94aWQpCisJCXJldHVybjsKKworCXJlcGxpY2FfaWRlbnRpdHlfc3RhcnRfaXRlcmF0ZShy ZXBsaWNhX2lkZW50aXR5X3RhYmxlLCAmaSk7CisJd2hpbGUgKChyaWVudHJ5ID0gcmVwbGljYV9p ZGVudGl0eV9pdGVyYXRlKHJlcGxpY2FfaWRlbnRpdHlfdGFibGUsICZpKSkgIT0gTlVMTCkKKwl7 CisJCWlmICghbGlzdF9tZW1iZXJfeGlkKGNvbW1pdHRlZF94aWQsIHJpZW50cnktPnJlbW90ZV94 aWQpKQorCQkJY29udGludWU7CisKKwkJLyogQ2xlYW4gdXAgdGhlIGhhc2ggZW50cnkgZm9yIGNv bW1pdHRlZCB0cmFuc2FjdGlvbiAqLworCQlmcmVlX3JlcGxpY2FfaWRlbnRpdHlfa2V5KHJpZW50 cnktPmtleWRhdGEpOworCQlyZXBsaWNhX2lkZW50aXR5X2RlbGV0ZV9pdGVtKHJlcGxpY2FfaWRl bnRpdHlfdGFibGUsIHJpZW50cnkpOworCX0KK30KKworLyoKKyAqIENoZWNrIGNvbW1pdHRlZCB0 cmFuc2FjdGlvbnMgYW5kIGNsZWFuIHVwIGNvcnJlc3BvbmRpbmcgZW50cmllcyBpbiB0aGUgaGFz aAorICogdGFibGUuCisgKi8KK3N0YXRpYyB2b2lkCitjbGVhbnVwX2NvbW1pdHRlZF9yZXBsaWNh X2lkZW50aXR5X2VudHJpZXModm9pZCkKK3sKKwlkbGlzdF9tdXRhYmxlX2l0ZXIgaXRlcjsKKwlM aXN0CSAgICpjb21taXR0ZWRfeGlkcyA9IE5JTDsKKworCWRsaXN0X2ZvcmVhY2hfbW9kaWZ5KGl0 ZXIsICZsc25fbWFwcGluZykKKwl7CisJCUZsdXNoUG9zaXRpb24gKnBvcyA9CisJCQlkbGlzdF9j b250YWluZXIoRmx1c2hQb3NpdGlvbiwgbm9kZSwgaXRlci5jdXIpOworCQlib29sCQlza2lwcGVk X3dyaXRlOworCisJCWlmICghVHJhbnNhY3Rpb25JZElzVmFsaWQocG9zLT5wYV9yZW1vdGVfeGlk KSB8fAorCQkJIVhMb2dSZWNQdHJJc0ludmFsaWQocG9zLT5sb2NhbF9lbmQpKQorCQkJY29udGlu dWU7CisKKwkJcG9zLT5sb2NhbF9lbmQgPSBwYV9nZXRfbGFzdF9jb21taXRfZW5kKHBvcy0+cGFf cmVtb3RlX3hpZCwgdHJ1ZSwKKwkJCQkJCQkJCQkJCSZza2lwcGVkX3dyaXRlKTsKKworCQllbG9n KERFQlVHMSwKKwkJCSAiZ290IGNvbW1pdCBlbmQgZnJvbSBwYXJhbGxlbCBhcHBseSB3b3JrZXIs ICIKKwkJCSAidHhuOiAldSwgcmVtb3RlX2VuZCAlWC8lWCwgbG9jYWxfZW5kICVYLyVYIiwKKwkJ CSBwb3MtPnBhX3JlbW90ZV94aWQsIExTTl9GT1JNQVRfQVJHUyhwb3MtPnJlbW90ZV9lbmQpLAor CQkJIExTTl9GT1JNQVRfQVJHUyhwb3MtPmxvY2FsX2VuZCkpOworCisJCWlmICghc2tpcHBlZF93 cml0ZSAmJiBYTG9nUmVjUHRySXNJbnZhbGlkKHBvcy0+bG9jYWxfZW5kKSkKKwkJCWNvbnRpbnVl OworCisJCWNvbW1pdHRlZF94aWRzID0gbGFwcGVuZF94aWQoY29tbWl0dGVkX3hpZHMsIHBvcy0+ cGFfcmVtb3RlX3hpZCk7CisJfQorCisJLyogY2xlYW51cCB0aGUgZW50cmllcyBmb3IgY29tbWl0 dGVkIHRyYW5zYWN0aW9ucyAqLworCWNsZWFudXBfcmVwbGljYV9pZGVudGl0eV90YWJsZShjb21t aXR0ZWRfeGlkcyk7Cit9CisKKy8qCisgKiBBcHBlbmQgYSB0cmFuc2FjdGlvbiBkZXBlbmRlbmN5 LCBleGNsdWRpbmcgZHVwbGljYXRlcyBhbmQgY29tbWl0dGVkCisgKiB0cmFuc2FjdGlvbnMuCisg Ki8KK3N0YXRpYyBMaXN0ICoKK2NoZWNrX2FuZF9hcHBlbmRfeGlkX2RlcGVuZGVuY3koTGlzdCAq ZGVwZW5kc19vbl94aWRzLAorCQkJCQkJCQlUcmFuc2FjdGlvbklkICpkZXBlbmRzX29uX3hpZCwK KwkJCQkJCQkJVHJhbnNhY3Rpb25JZCBjdXJyZW50X3hpZCkKK3sKKwlBc3NlcnQoZGVwZW5kc19v bl94aWQpOworCisJaWYgKCFUcmFuc2FjdGlvbklkSXNWYWxpZCgqZGVwZW5kc19vbl94aWQpKQor CQlyZXR1cm4gZGVwZW5kc19vbl94aWRzOworCisJaWYgKFRyYW5zYWN0aW9uSWRFcXVhbHMoKmRl cGVuZHNfb25feGlkLCBjdXJyZW50X3hpZCkpCisJCXJldHVybiBkZXBlbmRzX29uX3hpZHM7CisK KwlpZiAobGlzdF9tZW1iZXJfeGlkKGRlcGVuZHNfb25feGlkcywgKmRlcGVuZHNfb25feGlkKSkK KwkJcmV0dXJuIGRlcGVuZHNfb25feGlkczsKKworCS8qCisJICogUmV0dXJuIGFuZCByZXNldCB0 aGUgeGlkIGlmIHRoZSB0cmFuc2FjdGlvbiBoYXMgYmVlbiBjb21taXR0ZWQuCisJICovCisJaWYg KHBhX3RyYW5zYWN0aW9uX2NvbW1pdHRlZCgqZGVwZW5kc19vbl94aWQpKQorCXsKKwkJKmRlcGVu ZHNfb25feGlkID0gSW52YWxpZFRyYW5zYWN0aW9uSWQ7CisJCXJldHVybiBkZXBlbmRzX29uX3hp ZHM7CisJfQorCisJcmV0dXJuIGxhcHBlbmRfeGlkKGRlcGVuZHNfb25feGlkcywgKmRlcGVuZHNf b25feGlkKTsKK30KKworLyoKKyAqIENoZWNrIGZvciBkZXBlbmRlbmNpZXMgb24gcHJlY2VkaW5n IHRyYW5zYWN0aW9ucyB0aGF0IG1vZGlmeSB0aGUgc2FtZSBrZXkuCisgKiBSZXR1cm5zIHRoZSBk ZXBlbmRlbnQgdHJhbnNhY3Rpb25zIGluICdkZXBlbmRzX29uX3hpZHMnIGFuZCByZWNvcmRzIHRo ZQorICogY3VycmVudCBjaGFuZ2UuCisgKi8KK3N0YXRpYyB2b2lkCitjaGVja19kZXBlbmRlbmN5 X29uX3JlcGxpY2FfaWRlbnRpdHkoT2lkIHJlbGlkLAorCQkJCQkJCQkJIExvZ2ljYWxSZXBUdXBs ZURhdGEgKm9yaWdpbmFsX2RhdGEsCisJCQkJCQkJCQkgVHJhbnNhY3Rpb25JZCBuZXdfZGVwZW5k ZWRfeGlkLAorCQkJCQkJCQkJIExpc3QgKipkZXBlbmRzX29uX3hpZHMpCit7CisJTG9naWNhbFJl cFJlbE1hcEVudHJ5ICpyZWxlbnRyeTsKKwlMb2dpY2FsUmVwVHVwbGVEYXRhICpyaWRhdGE7CisJ UmVwbGljYUlkZW50aXR5S2V5ICpyaWtleTsKKwlSZXBsaWNhSWRlbnRpdHlFbnRyeSAqcmllbnRy eTsKKwlNZW1vcnlDb250ZXh0IG9sZGN0eDsKKwlpbnQJCQluX3JpOworCWJvb2wJCWZvdW5kID0g ZmFsc2U7CisKKwlBc3NlcnQoZGVwZW5kc19vbl94aWRzKTsKKworCS8qIFNlYXJjaCBmb3IgZXhp c3RpbmcgZW50cnkgKi8KKwlyZWxlbnRyeSA9IGxvZ2ljYWxyZXBfZ2V0X3JlbGVudHJ5KHJlbGlk KTsKKworCUFzc2VydChyZWxlbnRyeSk7CisKKwkvKgorCSAqIEZpcnN0IHNlYXJjaCB3aGV0aGVy IGFueSBwcmV2aW91cyB0cmFuc2FjdGlvbiBoYXMgYWZmZWN0ZWQgdGhlIHdob2xlCisJICogdGFi bGUgZS5nLiwgdHJ1bmNhdGUgb3Igc2NoZW1hIGNoYW5nZSBmcm9tIHB1Ymxpc2hlci4KKwkgKi8K KwkqZGVwZW5kc19vbl94aWRzID0gY2hlY2tfYW5kX2FwcGVuZF94aWRfZGVwZW5kZW5jeSgqZGVw ZW5kc19vbl94aWRzLAorCQkJCQkJCQkJCQkJCSAgICZyZWxlbnRyeS0+bGFzdF9kZXBlbmRlZF94 aWQsCisJCQkJCQkJCQkJCQkJICAgbmV3X2RlcGVuZGVkX3hpZCk7CisKKwluX3JpID0gYm1zX251 bV9tZW1iZXJzKHJlbGVudHJ5LT5yZW1vdGVyZWwuYXR0a2V5cyk7CisKKwkvKgorCSAqIFJldHVy biBpZiB0aGVyZSBhcmUgbm8gcmVwbGljYSBpZGVudGl0eSBjb2x1bW5zLCBpbmRpY2F0aW5nIHRo YXQgdGhlCisJICogcmVtb3RlIHJlbGF0aW9uIGhhcyBuZWl0aGVyIGEgcmVwbGljYSBpZGVudGl0 eSBrZXkgbm9yIGlzIG1hcmtlZCBhcworCSAqIHJlcGxpY2EgaWRlbnRpdHkgZnVsbC4KKwkgKi8K KwlpZiAoIW5fcmkpCisJCXJldHVybjsKKworCS8qIENoZWNrIGlmIHRoZSBSSSBrZXkgdmFsdWUg b2YgdGhlIHR1cGxlIGlzIGludmFsaWQgKi8KKwlmb3IgKGludCBpID0gMDsgaSA8IG9yaWdpbmFs X2RhdGEtPm5jb2xzOyBpKyspCisJeworCQlpZiAoIWJtc19pc19tZW1iZXIoaSwgcmVsZW50cnkt PnJlbW90ZXJlbC5hdHRrZXlzKSkKKwkJCWNvbnRpbnVlOworCisJCS8qCisJCSAqIFJldHVybiBp ZiBSSSBrZXkgaXMgTlVMTCBvciBpcyBleHBsaWNpdGx5IG1hcmtlZCB1bmNoYW5nZWQuIFRoZSBr ZXkKKwkJICogdmFsdWUgY291bGQgYmUgTlVMTCBpbiB0aGUgbmV3IHR1cGxlIG9mIGEgdXBkYXRl IG9wZXJ0YWlvbiB3aGljaAorCQkgKiBtZWFucyB0aGUgUkkga2V5IGlzIG5vdCB1cGRhdGVkLgor CQkgKi8KKwkJaWYgKG9yaWdpbmFsX2RhdGEtPmNvbHN0YXR1c1tpXSA9PSBMT0dJQ0FMUkVQX0NP TFVNTl9OVUxMIHx8CisJCQlvcmlnaW5hbF9kYXRhLT5jb2xzdGF0dXNbaV0gPT0gTE9HSUNBTFJF UF9DT0xVTU5fVU5DSEFOR0VEKQorCQkJcmV0dXJuOworCX0KKworCW9sZGN0eCA9IE1lbW9yeUNv bnRleHRTd2l0Y2hUbyhBcHBseUNvbnRleHQpOworCisJLyogQWxsb2NhdGUgc3BhY2UgZm9yIHJl cGxpY2EgaWRlbnRpdHkgdmFsdWVzICovCisJcmlkYXRhID0gcGFsbG9jMF9vYmplY3QoTG9naWNh bFJlcFR1cGxlRGF0YSk7CisJcmlkYXRhLT5jb2x2YWx1ZXMgPSBwYWxsb2MwX2FycmF5KFN0cmlu Z0luZm9EYXRhLCBuX3JpKTsKKwlyaWRhdGEtPmNvbHN0YXR1cyA9IHBhbGxvYzBfYXJyYXkoY2hh ciwgbl9yaSk7CisJcmlkYXRhLT5uY29scyA9IG5fcmk7CisKKwlmb3IgKGludCBpX29yaWdpbmFs ID0gMCwgaV9yaSA9IDA7IGlfb3JpZ2luYWwgPCBvcmlnaW5hbF9kYXRhLT5uY29sczsgaV9vcmln aW5hbCsrKQorCXsKKwkJU3RyaW5nSW5mbwlvcmlnaW5hbF9jb2x2YWx1ZSA9ICZvcmlnaW5hbF9k YXRhLT5jb2x2YWx1ZXNbaV9vcmlnaW5hbF07CisKKwkJaWYgKCFibXNfaXNfbWVtYmVyKGlfb3Jp Z2luYWwsIHJlbGVudHJ5LT5yZW1vdGVyZWwuYXR0a2V5cykpCisJCQljb250aW51ZTsKKworCQlp bml0U3RyaW5nSW5mb0V4dCgmcmlkYXRhLT5jb2x2YWx1ZXNbaV9yaV0sIG9yaWdpbmFsX2NvbHZh bHVlLT5sZW4gKyAxKTsKKwkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZygmcmlkYXRhLT5jb2x2YWx1 ZXNbaV9yaV0sIG9yaWdpbmFsX2NvbHZhbHVlLT5kYXRhKTsKKwkJcmlkYXRhLT5jb2xzdGF0dXNb aV9yaV0gPSBvcmlnaW5hbF9kYXRhLT5jb2xzdGF0dXNbaV9vcmlnaW5hbF07CisJCWlfcmkrKzsK Kwl9CisKKwlyaWtleSA9IHBhbGxvYzBfb2JqZWN0KFJlcGxpY2FJZGVudGl0eUtleSk7CisJcmlr ZXktPnJlbGlkID0gcmVsaWQ7CisJcmlrZXktPmRhdGEgPSByaWRhdGE7CisKKwlpZiAoVHJhbnNh Y3Rpb25JZElzVmFsaWQobmV3X2RlcGVuZGVkX3hpZCkpCisJeworCQlyaWVudHJ5ID0gcmVwbGlj YV9pZGVudGl0eV9pbnNlcnQocmVwbGljYV9pZGVudGl0eV90YWJsZSwgcmlrZXksCisJCQkJCQkJ CQkJICAmZm91bmQpOworCisJCS8qCisJCSAqIFJlbGVhc2UgdGhlIGtleSBidWlsdCB0byBzZWFy Y2ggdGhlIGVudHJ5LCBpZiB0aGUgZW50cnkgYWxyZWFkeQorCQkgKiBleGlzdHMuIE90aGVyd2lz ZSwgaW5pdGlhbGl6ZSB0aGUgcmVtb3RlX3hpZC4KKwkJICovCisJCWlmIChmb3VuZCkKKwkJewor CQkJZWxvZyhERUJVRzEsICJmb3VuZCBjb25mbGljdGluZyByZXBsaWNhIGlkZW50aXR5IGNoYW5n ZSBmcm9tICV1IiwKKwkJCQkgcmllbnRyeS0+cmVtb3RlX3hpZCk7CisKKwkJCWZyZWVfcmVwbGlj YV9pZGVudGl0eV9rZXkocmlrZXkpOworCQl9CisJCWVsc2UKKwkJCXJpZW50cnktPnJlbW90ZV94 aWQgPSBJbnZhbGlkVHJhbnNhY3Rpb25JZDsKKwl9CisJZWxzZQorCXsKKwkJcmllbnRyeSA9IHJl cGxpY2FfaWRlbnRpdHlfbG9va3VwKHJlcGxpY2FfaWRlbnRpdHlfdGFibGUsIHJpa2V5KTsKKwkJ ZnJlZV9yZXBsaWNhX2lkZW50aXR5X2tleShyaWtleSk7CisJfQorCisJTWVtb3J5Q29udGV4dFN3 aXRjaFRvKG9sZGN0eCk7CisKKwkvKiBSZXR1cm4gaWYgbm8gZW50cnkgZm91bmQgKi8KKwlpZiAo IXJpZW50cnkpCisJCXJldHVybjsKKworCUFzc2VydCghZm91bmQgfHwgVHJhbnNhY3Rpb25JZElz VmFsaWQocmllbnRyeS0+cmVtb3RlX3hpZCkpOworCisJKmRlcGVuZHNfb25feGlkcyA9IGNoZWNr X2FuZF9hcHBlbmRfeGlkX2RlcGVuZGVuY3koKmRlcGVuZHNfb25feGlkcywKKwkJCQkJCQkJCQkJ CQkgICAmcmllbnRyeS0+cmVtb3RlX3hpZCwKKwkJCQkJCQkJCQkJCQkgICBuZXdfZGVwZW5kZWRf eGlkKTsKKworCS8qCisJICogVXBkYXRlIHRoZSBuZXcgZGVwZW5kZWQgeGlkIGludG8gdGhlIGVu dHJ5IGlmIHZhbGlkLCB0aGUgbmV3IHhpZCBjb3VsZAorCSAqIGJlIGludmFsaWQgaWYgdGhlIHRy YW5zYWN0aW9uIHdpbGwgYmUgYXBwbGllZCBieSB0aGUgbGVhZGVyIGl0c2VsZgorCSAqIHdoaWNo IG1lYW5zIGFsbCB0aGUgY2hhbmdlcyB3aWxsIGJlIGNvbW1pdHRlZCBiZWZvcmUgcHJvY2Vzc2lu ZyBuZXh0CisJICogdHJhbnNhY3Rpb24sIHNvIG5vIG5lZWQgdG8gYmUgZGVwZW5kZWQgb24uCisJ ICovCisJaWYgKFRyYW5zYWN0aW9uSWRJc1ZhbGlkKG5ld19kZXBlbmRlZF94aWQpKQorCQlyaWVu dHJ5LT5yZW1vdGVfeGlkID0gbmV3X2RlcGVuZGVkX3hpZDsKKworCS8qCisJICogUmVtb3ZlIHRo ZSBlbnRyeSBpZiB0aGUgdHJhbnNhY3Rpb24gaGFzIGJlZW4gY29tbWl0dGVkIGFuZCBubyBuZXcK KwkgKiBkZXBlbmRlbmN5IG5lZWRzIHRvIGJlIGFkZGVkLgorCSAqLworCWVsc2UgaWYgKCFUcmFu c2FjdGlvbklkSXNWYWxpZChyaWVudHJ5LT5yZW1vdGVfeGlkKSkKKwl7CisJCWZyZWVfcmVwbGlj YV9pZGVudGl0eV9rZXkocmllbnRyeS0+a2V5ZGF0YSk7CisJCXJlcGxpY2FfaWRlbnRpdHlfZGVs ZXRlX2l0ZW0ocmVwbGljYV9pZGVudGl0eV90YWJsZSwgcmllbnRyeSk7CisJfQorfQorCisvKgor ICogQ2hlY2sgZm9yIHByZWNlZGluZyB0cmFuc2FjdGlvbnMgdGhhdCBpbnZvbHZlIGluc2VydCwg ZGVsZXRlLCBvciB1cGRhdGUKKyAqIG9wZXJhdGlvbnMgb24gdGhlIHNwZWNpZmllZCB0YWJsZSwg YW5kIHJldHVybiB0aGVtIGluICdkZXBlbmRzX29uX3hpZHMnLgorICovCitzdGF0aWMgdm9pZAor ZmluZF9hbGxfZGVwZW5kZW5jaWVzX29uX3JlbChMb2dpY2FsUmVwUmVsSWQgcmVsaWQsIFRyYW5z YWN0aW9uSWQgbmV3X2RlcGVuZGVkX3hpZCwKKwkJCQkJCQkgTGlzdCAqKmRlcGVuZHNfb25feGlk cykKK3sKKwlyZXBsaWNhX2lkZW50aXR5X2l0ZXJhdG9yIGk7CisJUmVwbGljYUlkZW50aXR5RW50 cnkgKnJpZW50cnk7CisKKwlBc3NlcnQoZGVwZW5kc19vbl94aWRzKTsKKworCXJlcGxpY2FfaWRl bnRpdHlfc3RhcnRfaXRlcmF0ZShyZXBsaWNhX2lkZW50aXR5X3RhYmxlLCAmaSk7CisJd2hpbGUg KChyaWVudHJ5ID0gcmVwbGljYV9pZGVudGl0eV9pdGVyYXRlKHJlcGxpY2FfaWRlbnRpdHlfdGFi bGUsICZpKSkgIT0gTlVMTCkKKwl7CisJCUFzc2VydChUcmFuc2FjdGlvbklkSXNWYWxpZChyaWVu dHJ5LT5yZW1vdGVfeGlkKSk7CisKKwkJaWYgKHJpZW50cnktPmtleWRhdGEtPnJlbGlkICE9IHJl bGlkKQorCQkJY29udGludWU7CisKKwkJLyogQ2xlYW4gdXAgdGhlIGhhc2ggZW50cnkgZm9yIGNv bW1pdHRlZCB0cmFuc2FjdGlvbiB3aGlsZSBvbiBpdCAqLworCQlpZiAocGFfdHJhbnNhY3Rpb25f Y29tbWl0dGVkKHJpZW50cnktPnJlbW90ZV94aWQpKQorCQl7CisJCQlmcmVlX3JlcGxpY2FfaWRl bnRpdHlfa2V5KHJpZW50cnktPmtleWRhdGEpOworCQkJcmVwbGljYV9pZGVudGl0eV9kZWxldGVf aXRlbShyZXBsaWNhX2lkZW50aXR5X3RhYmxlLCByaWVudHJ5KTsKKworCQkJY29udGludWU7CisJ CX0KKworCQkqZGVwZW5kc19vbl94aWRzID0gY2hlY2tfYW5kX2FwcGVuZF94aWRfZGVwZW5kZW5j eSgqZGVwZW5kc19vbl94aWRzLAorCQkJCQkJCQkJCQkJCQkgICAmcmllbnRyeS0+cmVtb3RlX3hp ZCwKKwkJCQkJCQkJCQkJCQkJICAgbmV3X2RlcGVuZGVkX3hpZCk7CisJfQorfQorCisvKgorICog Q2hlY2sgZm9yIGFueSBwcmVjZWRpbmcgdHJhbnNhY3Rpb25zIHRoYXQgYWZmZWN0IHRoZSBnaXZl biB0YWJsZSBhbmQgcmV0dXJucworICogdGhlbSBpbiAnZGVwZW5kc19vbl94aWRzJy4KKyAqLwor c3RhdGljIHZvaWQKK2NoZWNrX2RlcGVuZGVuY3lfb25fcmVsKExvZ2ljYWxSZXBSZWxJZCByZWxp ZCwgVHJhbnNhY3Rpb25JZCBuZXdfZGVwZW5kZWRfeGlkLAorCQkJCQkJTGlzdCAqKmRlcGVuZHNf b25feGlkcykKK3sKKwlMb2dpY2FsUmVwUmVsTWFwRW50cnkgKnJlbGVudHJ5OworCisJQXNzZXJ0 KGRlcGVuZHNfb25feGlkcyk7CisKKwlmaW5kX2FsbF9kZXBlbmRlbmNpZXNfb25fcmVsKHJlbGlk LCBuZXdfZGVwZW5kZWRfeGlkLCBkZXBlbmRzX29uX3hpZHMpOworCisJLyogU2VhcmNoIGZvciBl eGlzdGluZyBlbnRyeSAqLworCXJlbGVudHJ5ID0gbG9naWNhbHJlcF9nZXRfcmVsZW50cnkocmVs aWQpOworCisJLyoKKwkgKiBUaGUgcmVsZW50cnkgaGFzIG5vdCBiZWVuIGluaXRpYWxpemVkIHll dCwgaW5kaWNhdGluZyBubyBjaGFuZ2UgaGFzCisJICogYmVlbiBhcHBsaWRlIHlldC4KKwkgKi8K KwlpZiAoIXJlbGVudHJ5KQorCQlyZXR1cm47CisKKwkqZGVwZW5kc19vbl94aWRzID0gY2hlY2tf YW5kX2FwcGVuZF94aWRfZGVwZW5kZW5jeSgqZGVwZW5kc19vbl94aWRzLAorCQkJCQkJCQkJCQkJ CSAgICZyZWxlbnRyeS0+bGFzdF9kZXBlbmRlZF94aWQsCisJCQkJCQkJCQkJCQkJICAgbmV3X2Rl cGVuZGVkX3hpZCk7CisKKwlpZiAoVHJhbnNhY3Rpb25JZElzVmFsaWQobmV3X2RlcGVuZGVkX3hp ZCkpCisJCXJlbGVudHJ5LT5sYXN0X2RlcGVuZGVkX3hpZCA9IG5ld19kZXBlbmRlZF94aWQ7Cit9 CisKKy8qCisgKiBDaGVjayBkZXBlbmRlbmNpZXMgcmVsYXRlZCB0byB0aGUgY3VycmVudCBjaGFu Z2UgYnkgZGV0ZXJtaW5pbmcgaWYgdGhlCisgKiBtb2RpZmljYXRpb24gaW1wYWN0cyB0aGUgc2Ft ZSByb3cgb3IgdGFibGUgYXMgYW5vdGhlciBvbmdvaW5nIHRyYW5zYWN0aW9uLiBJZgorICogbmVl ZGVkLCBpbnN0cnVjdCBwYXJhbGxlbCBhcHBseSB3b3JrZXJzIHRvIHdhaXQgZm9yIHRoZXNlIHBy ZWNlZGluZworICogdHJhbnNhY3Rpb25zIHRvIGNvbXBsZXRlLgorICoKKyAqIFNpbXVsdGFuZW91 c2x5LCB0cmFjayB0aGUgZGVwZW5kZW5jeSBmb3IgdGhlIGN1cnJlbnQgY2hhbmdlIHRvIGVuc3Vy ZSB0aGF0CisgKiBzdWJzZXF1ZW50IHRyYW5zYWN0aW9ucyBhZGRyZXNzIHRoaXMgZGVwZW5kZW5j eS4KKyAqLworc3RhdGljIHZvaWQKK2hhbmRsZV9kZXBlbmRlbmN5X29uX2NoYW5nZShMb2dpY2Fs UmVwTXNnVHlwZSBhY3Rpb24sIFN0cmluZ0luZm8gcywKKwkJCQkJCQlUcmFuc2FjdGlvbklkIG5l d19kZXBlbmRlZF94aWQsCisJCQkJCQkJUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKndpbmZvKQor eworCUxvZ2ljYWxSZXBSZWxJZCByZWxpZDsKKwlMb2dpY2FsUmVwVHVwbGVEYXRhIG9sZHR1cDsK KwlMb2dpY2FsUmVwVHVwbGVEYXRhIG5ld3R1cDsKKwlMb2dpY2FsUmVwUmVsYXRpb24gKnJlbDsK KwlMaXN0CSAgICpkZXBlbmRzX29uX3hpZHMgPSBOSUw7CisJTGlzdAkgICAqcmVtb3RlX3JlbGlk czsKKwlib29sCQloYXNfb2xkdHVwID0gZmFsc2U7CisJYm9vbAkJY2FzY2FkZSA9IGZhbHNlOwor CWJvb2wJCXJlc3RhcnRfc2VxcyA9IGZhbHNlOworCVN0cmluZ0luZm9EYXRhIGRlcGVuZGVuY2ll czsKKworCS8qCisJICogUGFyc2UgdGhlIGNvbnN1bWUgZGF0YSB1c2luZyBhIGxvY2FsIGNvcHkg aW5zdGVhZCBvZiBkaXJlY3RseSBjb25zdW1pbmcKKwkgKiB0aGUgZ2l2ZW4gcmVtb3RlIGNoYW5n ZSBhcyB0aGUgY2FsbGVyIG1heSBhbHNvIHJlYWQgdGhlIGRhdGEgZnJvbSB0aGUKKwkgKiByZW1v dGUgbWVzc2FnZS4KKwkgKi8KKwlTdHJpbmdJbmZvRGF0YSBjaGFuZ2UgPSAqczsKKworCS8qIENv bXB1dGUgZGVwZW5kZW5jeSBvbmx5IGZvciBub24tc3RyZWFtaW5nIHRyYW5zYWN0aW9uICovCisJ aWYgKGluX3N0cmVhbWVkX3RyYW5zYWN0aW9uIHx8ICh3aW5mbyAmJiB3aW5mby0+c3RyZWFtX3R4 bikpCisJCXJldHVybjsKKworCS8qIE9ubHkgdGhlIGxlYWRlciBjaGVja3MgZGVwZW5kZW5jaWVz IGFuZCBzY2hlZHVsZXMgdGhlIHBhcmFsbGVsIGFwcGx5ICovCisJaWYgKCFhbV9sZWFkZXJfYXBw bHlfd29ya2VyKCkpCisJCXJldHVybjsKKworCWlmICghcmVwbGljYV9pZGVudGl0eV90YWJsZSkK KwkJcmVwbGljYV9pZGVudGl0eV90YWJsZSA9IHJlcGxpY2FfaWRlbnRpdHlfY3JlYXRlKEFwcGx5 Q29udGV4dCwKKwkJCQkJCQkJCQkJCQkJIFJFUExJQ0FfSURFTlRJVFlfSU5JVElBTF9TSVpFLAor CQkJCQkJCQkJCQkJCQkgTlVMTCk7CisKKwlpZiAocmVwbGljYV9pZGVudGl0eV90YWJsZS0+bWVt YmVycyA+PSBSRVBMSUNBX0lERU5USVRZX0NMRUFOVVBfVEhSRVNIT0xEKQorCQljbGVhbnVwX2Nv bW1pdHRlZF9yZXBsaWNhX2lkZW50aXR5X2VudHJpZXMoKTsKKworCXN3aXRjaCAoYWN0aW9uKQor CXsKKwkJY2FzZSBMT0dJQ0FMX1JFUF9NU0dfSU5TRVJUOgorCQkJcmVsaWQgPSBsb2dpY2FscmVw X3JlYWRfaW5zZXJ0KCZjaGFuZ2UsICZuZXd0dXApOworCQkJY2hlY2tfZGVwZW5kZW5jeV9vbl9y ZXBsaWNhX2lkZW50aXR5KHJlbGlkLCAmbmV3dHVwLAorCQkJCQkJCQkJCQkJIG5ld19kZXBlbmRl ZF94aWQsCisJCQkJCQkJCQkJCQkgJmRlcGVuZHNfb25feGlkcyk7CisJCQlicmVhazsKKworCQlj YXNlIExPR0lDQUxfUkVQX01TR19VUERBVEU6CisJCQlyZWxpZCA9IGxvZ2ljYWxyZXBfcmVhZF91 cGRhdGUoJmNoYW5nZSwgJmhhc19vbGR0dXAsICZvbGR0dXAsCisJCQkJCQkJCQkJICAgJm5ld3R1 cCk7CisKKwkJCWlmIChoYXNfb2xkdHVwKQorCQkJCWNoZWNrX2RlcGVuZGVuY3lfb25fcmVwbGlj YV9pZGVudGl0eShyZWxpZCwgJm9sZHR1cCwKKwkJCQkJCQkJCQkJCQkgbmV3X2RlcGVuZGVkX3hp ZCwKKwkJCQkJCQkJCQkJCQkgJmRlcGVuZHNfb25feGlkcyk7CisKKwkJCWNoZWNrX2RlcGVuZGVu Y3lfb25fcmVwbGljYV9pZGVudGl0eShyZWxpZCwgJm5ld3R1cCwKKwkJCQkJCQkJCQkJCSBuZXdf ZGVwZW5kZWRfeGlkLAorCQkJCQkJCQkJCQkJICZkZXBlbmRzX29uX3hpZHMpOworCQkJYnJlYWs7 CisKKwkJY2FzZSBMT0dJQ0FMX1JFUF9NU0dfREVMRVRFOgorCQkJcmVsaWQgPSBsb2dpY2FscmVw X3JlYWRfZGVsZXRlKCZjaGFuZ2UsICZvbGR0dXApOworCQkJY2hlY2tfZGVwZW5kZW5jeV9vbl9y ZXBsaWNhX2lkZW50aXR5KHJlbGlkLCAmb2xkdHVwLAorCQkJCQkJCQkJCQkJIG5ld19kZXBlbmRl ZF94aWQsCisJCQkJCQkJCQkJCQkgJmRlcGVuZHNfb25feGlkcyk7CisJCQlicmVhazsKKworCQlj YXNlIExPR0lDQUxfUkVQX01TR19UUlVOQ0FURToKKwkJCXJlbW90ZV9yZWxpZHMgPSBsb2dpY2Fs cmVwX3JlYWRfdHJ1bmNhdGUoJmNoYW5nZSwgJmNhc2NhZGUsCisJCQkJCQkJCQkJCQkJICZyZXN0 YXJ0X3NlcXMpOworCisJCQkvKgorCQkJICogVHJ1bmNhdGUgYWZmZWN0cyBhbGwgcm93cyBpbiBh IHRhYmxlLCBzbyB0aGUgY3VycmVudAorCQkJICogdHJhbnNhY3Rpb24gc2hvdWxkIHdhaXQgZm9y IGFsbCBwcmVjZWRpbmcgdHJhbnNhY3Rpb25zIHRoYXQKKwkJCSAqIG1vZGlmaWVkIHRoZSBzYW1l IHRhYmxlLgorCQkJICovCisJCQlmb3JlYWNoX2ludCh0cnVuY2F0ZWRfcmVsaWQsIHJlbW90ZV9y ZWxpZHMpCisJCQkJY2hlY2tfZGVwZW5kZW5jeV9vbl9yZWwodHJ1bmNhdGVkX3JlbGlkLCBuZXdf ZGVwZW5kZWRfeGlkLAorCQkJCQkJCQkJCSZkZXBlbmRzX29uX3hpZHMpOworCisJCQlicmVhazsK KworCQljYXNlIExPR0lDQUxfUkVQX01TR19SRUxBVElPTjoKKwkJCXJlbCA9IGxvZ2ljYWxyZXBf cmVhZF9yZWwoJmNoYW5nZSk7CisKKwkJCS8qCisJCQkgKiBUaGUgcmVwbGljYSBpZGVudGl0eSBr ZXkgY291bGQgYmUgY2hhbmdlZCwgbWFraW5nIGV4aXN0aW5nCisJCQkgKiBlbnRyaWVzIGluIHRo ZSByZXBsaWNhIGlkZW50aXR5IGludmFsaWQuIEluIHRoaXMgY2FzZSwgcGFyYWxsZWwKKwkJCSAq IGFwcGx5IGlzIG5vdCBhbGxvd2VkIG9uIHRoaXMgc3BlY2lmaWMgdGFibGUgdW50aWwgYWxsIHJ1 bm5pbmcKKwkJCSAqIHRyYW5zYWN0aW9ucyB0aGF0IG1vZGlmaWVkIGl0IGhhdmUgZmluaXNoZWQu CisJCQkgKi8KKwkJCWNoZWNrX2RlcGVuZGVuY3lfb25fcmVsKHJlbC0+cmVtb3RlaWQsIG5ld19k ZXBlbmRlZF94aWQsCisJCQkJCQkJCQkmZGVwZW5kc19vbl94aWRzKTsKKwkJCWJyZWFrOworCisJ CWNhc2UgTE9HSUNBTF9SRVBfTVNHX1RZUEU6CisJCWNhc2UgTE9HSUNBTF9SRVBfTVNHX01FU1NB R0U6CisKKwkJCS8qCisJCQkgKiBUeXBlIHVwZGF0ZXMgYWNjb21wYW55IHJlbGF0aW9uIHVwZGF0 ZXMsIHNvIGRlcGVuZGVuY2llcyBoYXZlCisJCQkgKiBhbHJlYWR5IGJlZW4gY2hlY2tlZCBkdXJp bmcgcmVsYXRpb24gdXBkYXRlcy4gTG9naWNhbCBtZXNzYWdlcworCQkJICogZG8gbm90IGNvbmZs aWN0IHdpdGggYW55IGNoYW5nZXMsIHNvIHRoZXkgY2FuIGJlIGlnbm9yZWQuCisJCQkgKi8KKwkJ CWJyZWFrOworCisJCWRlZmF1bHQ6CisJCQlBc3NlcnQoZmFsc2UpOworCQkJYnJlYWs7CisJfQor CisJaWYgKCFkZXBlbmRzX29uX3hpZHMpCisJCXJldHVybjsKKworCS8qCisJICogTm90aWZ5IHRo ZSB0cmFuc2FjdGlvbnMgdGhhdCB0aGV5IGFyZSBkZXBlbmRlbnQgb24gdGhlIGN1cnJlbnQKKwkg KiB0cmFuc2FjdGlvbi4KKwkgKi8KKwlwYV9yZWNvcmRfZGVwZW5kZW5jeV9vbl90cmFuc2FjdGlv bnMoZGVwZW5kc19vbl94aWRzKTsKKworCS8qCisJICogSWYgdGhlIGxlYWRlciBhcHBsaWVzIHRo ZSB0cmFuc2FjdGlvbiBpdHNlbGYsIHN0YXJ0IHdhaXRpbmcgZm9yCisJICogdHJhbnNhY3Rpb25z IHRoYXQgZGVwZW5kIG9uIHRoZSBjdXJyZW50IHRyYW5zYWN0aW9uIGltbWVkaWF0ZWx5LgorCSAq LworCWlmICh3aW5mbyA9PSBOVUxMKQorCXsKKwkJZm9yZWFjaF94aWQoeGlkLCBkZXBlbmRzX29u X3hpZHMpCisJCQlwYV93YWl0X2Zvcl9kZXBlbmRlZF90cmFuc2FjdGlvbih4aWQpOworCisJCXJl dHVybjsKKwl9CisKKwlpbml0U3RyaW5nSW5mbygmZGVwZW5kZW5jaWVzKTsKKworCS8qIEJ1aWxk IHRoZSBkZXBlbmRlbmN5IG1lc3NhZ2UgdXNlZCB0byBzZW5kIHRvIHBhcmFsbGVsIGFwcGx5IHdv cmtlciAqLworCXdyaXRlX2ludGVybmFsX2RlcGVuZGVuY2llcygmZGVwZW5kZW5jaWVzLCBkZXBl bmRzX29uX3hpZHMpOworCisJKHZvaWQpIHNlbmRfaW50ZXJuYWxfZGVwZW5kZW5jaWVzKHdpbmZv LCAmZGVwZW5kZW5jaWVzKTsKK30KKworLyoKKyAqIFdyaXRlIGludGVybmFsIGRlcGVuZGVuY3kg aW5mb3JtYXRpb24gdG8gdGhlIG91dHB1dCBmb3IgdGhlIHBhcmFsbGVsIGFwcGx5CisgKiB3b3Jr ZXIuCisgKi8KK3N0YXRpYyB2b2lkCit3cml0ZV9pbnRlcm5hbF9kZXBlbmRlbmNpZXMoU3RyaW5n SW5mbyBzLCBMaXN0ICpkZXBlbmRzX29uX3hpZHMpCit7CisJcHFfc2VuZGJ5dGUocywgUEFSQUxM RUxfQVBQTFlfSU5URVJOQUxfTUVTU0FHRSk7CisJcHFfc2VuZGJ5dGUocywgTE9HSUNBTF9SRVBf TVNHX0lOVEVSTkFMX0RFUEVOREVOQ1kpOworCXBxX3NlbmRpbnQzMihzLCBsaXN0X2xlbmd0aChk ZXBlbmRzX29uX3hpZHMpKTsKKworCWZvcmVhY2hfeGlkKHhpZCwgZGVwZW5kc19vbl94aWRzKQor CQlwcV9zZW5kaW50MzIocywgeGlkKTsKK30KKwogLyoKICAqIEhhbmRsZSBpbnRlcm5hbCBkZXBl bmRlbmN5IGluZm9ybWF0aW9uLgogICoKQEAgLTgyNiw3ICsxNDEwLDEwIEBAIGhhbmRsZV9zdHJl YW1lZF90cmFuc2FjdGlvbihMb2dpY2FsUmVwTXNnVHlwZSBhY3Rpb24sIFN0cmluZ0luZm8gcykK IAogCS8qIG5vdCBpbiBzdHJlYW1pbmcgbW9kZSAqLwogCWlmIChhcHBseV9hY3Rpb24gPT0gVFJB TlNfTEVBREVSX0FQUExZKQorCXsKKwkJaGFuZGxlX2RlcGVuZGVuY3lfb25fY2hhbmdlKGFjdGlv biwgcywgSW52YWxpZFRyYW5zYWN0aW9uSWQsIHdpbmZvKTsKIAkJcmV0dXJuIGZhbHNlOworCX0K IAogCUFzc2VydChUcmFuc2FjdGlvbklkSXNWYWxpZChzdHJlYW1feGlkKSk7CiAKQEAgLTEyNjgs NiArMTg1NSwzMyBAQCBhcHBseV9oYW5kbGVfYmVnaW4oU3RyaW5nSW5mbyBzKQogCXBnc3RhdF9y ZXBvcnRfYWN0aXZpdHkoU1RBVEVfUlVOTklORywgTlVMTCk7CiB9CiAKKy8qCisgKiBTZW5kIGFu IElOVEVSTkFMX0RFUEVOREVOQ1kgbWVzc2FnZSB0byBhIHBhcmFsbGVsIGFwcGx5IHdvcmtlci4K KyAqCisgKiBSZXR1cm5zIGZhbHNlIGlmIHdlIHN3aXRjaGVkIHRvIHRoZSBzZXJpYWxpemUgbW9k ZSB0byBzZW5kIHRoZSBtZXNzYWdlLAorICogdHJ1ZSBvdGhlcndpc2UuCisgKi8KK3N0YXRpYyBi b29sCitzZW5kX2ludGVybmFsX2RlcGVuZGVuY2llcyhQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAq d2luZm8sIFN0cmluZ0luZm8gcykKK3sKKwlBc3NlcnQocy0+ZGF0YVswXSA9PSBQQVJBTExFTF9B UFBMWV9JTlRFUk5BTF9NRVNTQUdFKTsKKwlBc3NlcnQocy0+ZGF0YVsxXSA9PSBMT0dJQ0FMX1JF UF9NU0dfSU5URVJOQUxfREVQRU5ERU5DWSk7CisKKwlpZiAoIXdpbmZvLT5zZXJpYWxpemVfY2hh bmdlcykKKwl7CisJCWlmIChwYV9zZW5kX2RhdGEod2luZm8sIHMtPmxlbiwgcy0+ZGF0YSkpCisJ CQlyZXR1cm4gdHJ1ZTsKKworCQlwYV9zd2l0Y2hfdG9fcGFydGlhbF9zZXJpYWxpemUod2luZm8s IHRydWUpOworCX0KKworCS8qIFNraXAgd3JpdGluZyB0aGUgZmlyc3QgaW50ZXJuYWwgbWVzc2Fn ZSBmbGFnICovCisJcy0+Y3Vyc29yKys7CisJc3RyZWFtX3dyaXRlX2NoYW5nZShMT0dJQ0FMX1JF UF9NU0dfSU5URVJOQUxfREVQRU5ERU5DWSwgcyk7CisKKwlyZXR1cm4gZmFsc2U7Cit9CisKIC8q CiAgKiBIYW5kbGUgQ09NTUlUIG1lc3NhZ2UuCiAgKgpAQCAtMTc5NSw3ICsyNDA5LDcgQEAgYXBw bHlfaGFuZGxlX3N0cmVhbV9zdGFydChTdHJpbmdJbmZvIHMpCiAKIAkvKiBUcnkgdG8gYWxsb2Nh dGUgYSB3b3JrZXIgZm9yIHRoZSBzdHJlYW1pbmcgdHJhbnNhY3Rpb24uICovCiAJaWYgKGZpcnN0 X3NlZ21lbnQpCi0JCXBhX2FsbG9jYXRlX3dvcmtlcihzdHJlYW1feGlkKTsKKwkJcGFfYWxsb2Nh dGVfd29ya2VyKHN0cmVhbV94aWQsIHRydWUpOwogCiAJYXBwbHlfYWN0aW9uID0gZ2V0X3RyYW5z YWN0aW9uX2FwcGx5X2FjdGlvbihzdHJlYW1feGlkLCAmd2luZm8pOwogCmRpZmYgLS1naXQgYS9z cmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dpY2FscmVsYXRpb24uaCBiL3NyYy9pbmNsdWRlL3Jl cGxpY2F0aW9uL2xvZ2ljYWxyZWxhdGlvbi5oCmluZGV4IDdhNTYxYThlOGQ4Li40YjMyMWJkMmFk MiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbHJlbGF0aW9uLmgK KysrIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbHJlbGF0aW9uLmgKQEAgLTM3LDYg KzM3LDggQEAgdHlwZWRlZiBzdHJ1Y3QgTG9naWNhbFJlcFJlbE1hcEVudHJ5CiAJLyogU3luYyBz dGF0ZS4gKi8KIAljaGFyCQlzdGF0ZTsKIAlYTG9nUmVjUHRyCXN0YXRlbHNuOworCisJVHJhbnNh Y3Rpb25JZCBsYXN0X2RlcGVuZGVkX3hpZDsKIH0gTG9naWNhbFJlcFJlbE1hcEVudHJ5OwogCiBl eHRlcm4gdm9pZCBsb2dpY2FscmVwX3JlbG1hcF91cGRhdGUoTG9naWNhbFJlcFJlbGF0aW9uICpy ZW1vdGVyZWwpOwpAQCAtNTAsNSArNTIsNiBAQCBleHRlcm4gdm9pZCBsb2dpY2FscmVwX3JlbF9j bG9zZShMb2dpY2FsUmVwUmVsTWFwRW50cnkgKnJlbCwKIAkJCQkJCQkJIExPQ0tNT0RFIGxvY2tt b2RlKTsKIGV4dGVybiBib29sIElzSW5kZXhVc2FibGVGb3JSZXBsaWNhSWRlbnRpdHlGdWxsKFJl bGF0aW9uIGlkeHJlbCwgQXR0ck1hcCAqYXR0cm1hcCk7CiBleHRlcm4gT2lkCUdldFJlbGF0aW9u SWRlbnRpdHlPclBLKFJlbGF0aW9uIHJlbCk7CitleHRlcm4gTG9naWNhbFJlcFJlbE1hcEVudHJ5 ICpsb2dpY2FscmVwX2dldF9yZWxlbnRyeShMb2dpY2FsUmVwUmVsSWQgcmVtb3RlaWQpOwogCiAj ZW5kaWYJCQkJCQkJLyogTE9HSUNBTFJFTEFUSU9OX0ggKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNs dWRlL3JlcGxpY2F0aW9uL3dvcmtlcl9pbnRlcm5hbC5oIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRp b24vd29ya2VyX2ludGVybmFsLmgKaW5kZXggZGRjZGNjMDUwNTMuLjc4YjU2NjdjZWJlIDEwMDY0 NAotLS0gYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93b3JrZXJfaW50ZXJuYWwuaAorKysgYi9z cmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93b3JrZXJfaW50ZXJuYWwuaApAQCAtMjM1LDYgKzIzNSw4 IEBAIHR5cGVkZWYgc3RydWN0IFBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvCiAJICovCiAJYm9vbAkJ aW5fdXNlOwogCisJYm9vbAkJc3RyZWFtX3R4bjsKKwogCVBhcmFsbGVsQXBwbHlXb3JrZXJTaGFy ZWQgKnNoYXJlZDsKIH0gUGFyYWxsZWxBcHBseVdvcmtlckluZm87CiAKQEAgLTMzMiw4ICszMzQs MTAgQEAgZXh0ZXJuIHZvaWQgYXBwbHlfZXJyb3JfY2FsbGJhY2sodm9pZCAqYXJnKTsKIGV4dGVy biB2b2lkIHNldF9hcHBseV9lcnJvcl9jb250ZXh0X29yaWdpbihjaGFyICpvcmlnaW5uYW1lKTsK IAogLyogUGFyYWxsZWwgYXBwbHkgd29ya2VyIHNldHVwIGFuZCBpbnRlcmFjdGlvbnMgKi8KLWV4 dGVybiB2b2lkIHBhX2FsbG9jYXRlX3dvcmtlcihUcmFuc2FjdGlvbklkIHhpZCk7CitleHRlcm4g dm9pZCBwYV9hbGxvY2F0ZV93b3JrZXIoVHJhbnNhY3Rpb25JZCB4aWQsIGJvb2wgc3RyZWFtX3R4 bik7CiBleHRlcm4gUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKnBhX2ZpbmRfd29ya2VyKFRyYW5z YWN0aW9uSWQgeGlkKTsKK2V4dGVybiBYTG9nUmVjUHRyIHBhX2dldF9sYXN0X2NvbW1pdF9lbmQo VHJhbnNhY3Rpb25JZCB4aWQsIGJvb2wgZGVsZXRlX2VudHJ5LAorCQkJCQkJCQkJCSBib29sICpz a2lwcGVkX3dyaXRlKTsKIGV4dGVybiB2b2lkIHBhX2RldGFjaF9hbGxfZXJyb3JfbXEodm9pZCk7 CiAKIGV4dGVybiBib29sIHBhX3NlbmRfZGF0YShQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAqd2lu Zm8sIFNpemUgbmJ5dGVzLApAQCAtMzYyLDYgKzM2Niw4IEBAIGV4dGVybiB2b2lkIHBhX2RlY3Jf YW5kX3dhaXRfc3RyZWFtX2Jsb2NrKHZvaWQpOwogCiBleHRlcm4gdm9pZCBwYV94YWN0X2Zpbmlz aChQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAqd2luZm8sCiAJCQkJCQkgICBYTG9nUmVjUHRyIHJl bW90ZV9sc24pOworZXh0ZXJuIGJvb2wgcGFfdHJhbnNhY3Rpb25fY29tbWl0dGVkKFRyYW5zYWN0 aW9uSWQgeGlkKTsKK2V4dGVybiB2b2lkIHBhX3JlY29yZF9kZXBlbmRlbmN5X29uX3RyYW5zYWN0 aW9ucyhMaXN0ICpkZXBlbmRzX29uX3hpZHMpOwogCiBleHRlcm4gdm9pZCBwYV93YWl0X2Zvcl9k ZXBlbmRlZF90cmFuc2FjdGlvbihUcmFuc2FjdGlvbklkIHhpZCk7CiAKLS0gCjIuNDcuMwoK --_009_TY7PR01MB145541DD6F5BE4CD403BA39FDF586ATY7PR01MB14554jp_ Content-Type: application/octet-stream; name="v7-0004-Parallel-apply-non-streaming-transactions.patch" Content-Description: v7-0004-Parallel-apply-non-streaming-transactions.patch Content-Disposition: attachment; filename="v7-0004-Parallel-apply-non-streaming-transactions.patch"; size=52967; creation-date="Mon, 05 Jan 2026 07:38:38 GMT"; modification-date="Mon, 05 Jan 2026 07:40:44 GMT" Content-Transfer-Encoding: base64 RnJvbSA3NzZjMDc2YzIzY2I2MzJlYzk3YTQzMTRjYjQxNDc0OGU2ZjlmM2QwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIYXlhdG8gS3Vyb2RhIDxrdXJvZGEuaGF5YXRvQGZ1aml0c3Uu Y29tPgpEYXRlOiBNb24sIDEgRGVjIDIwMjUgMTI6Mjg6MjkgKzA5MDAKU3ViamVjdDogW1BBVENI IHY3IDQvOF0gUGFyYWxsZWwgYXBwbHkgbm9uLXN0cmVhbWluZyB0cmFuc2FjdGlvbnMKCi0tCkJh c2ljIGRlc2lnbgotLQoKVGhlIGxlYWRlciB3b3JrZXIgYXNzaWducyBlYWNoIG5vbi1zdHJlYW1p bmcgdHJhbnNhY3Rpb24gdG8gYSBwYXJhbGxlbCBhcHBseQp3b3JrZXIuIEJlZm9yZSBkaXNwYXRj aGluZyBjaGFuZ2VzIHRvIGEgcGFyYWxsZWwgd29ya2VyLCB0aGUgbGVhZGVyIHZlcmlmaWVzIGlm CnRoZSBjdXJyZW50IG1vZGlmaWNhdGlvbiBhZmZlY3RzIHRoZSBzYW1lIHJvdyAoaWRlbnRpdGll ZCBieSByZXBsaWNhIGlkZW50aXR5CmtleSkgYXMgYW5vdGhlciBvbmdvaW5nIHRyYW5zYWN0aW9u LiBJZiBzbywgdGhlIGxlYWRlciBzZW5kcyBhIGxpc3Qgb2YgZGVwZW5kZW50CnRyYW5zYWN0aW9u IElEcyB0byB0aGUgcGFyYWxsZWwgd29ya2VyLCBpbmRpY2F0aW5nIHRoYXQgdGhlIHBhcmFsbGVs IGFwcGx5CndvcmtlciBtdXN0IHdhaXQgZm9yIHRoZXNlIHRyYW5zYWN0aW9ucyB0byBjb21taXQg YmVmb3JlIHByb2NlZWRpbmcuCgpFYWNoIHBhcmFsbGVsIGFwcGx5IHdvcmtlciByZWNvcmRzIHRo ZSBsb2NhbCBlbmQgTFNOIG9mIHRoZSB0cmFuc2FjdGlvbiBpdAphcHBsaWVzIGluIHNoYXJlZCBt ZW1vcnkuIFN1YnNlcXVlbnRseSwgdGhlIGxlYWRlciBnYXRoZXJzIHRoZXNlIGxvY2FsIGVuZCBM U05zCmFuZCBsb2dzIHRoZW0gaW4gdGhlIGxvY2FsICdsc25fbWFwcGluZycgZm9yIHZlcmlmeWlu ZyB3aGV0aGVyIHRoZXkgaGF2ZSBiZWVuCmZsdXNoZWQgdG8gZGlzayAoZm9sbG93aW5nIHRoZSBs b2dpYyBpbiBnZXRfZmx1c2hfcG9zaXRpb24oKSkuCgpJZiBubyBwYXJhbGxlbCBhcHBseSB3b3Jr ZXIgaXMgYXZhaWxhYmxlLCB0aGUgbGVhZGVyIHdpbGwgYXBwbHkgdGhlIHRyYW5zYWN0aW9uCmlu ZGVwZW5kZW50bHkuCgpGb3IgZnVydGhlciBkZXRhaWxzLCBwbGVhc2UgcmVmZXIgdG8gdGhlIGZv bGxvd2luZzoKCi0tCmRlZGVuZGVuY3kgdHJhY2tpbmcKLS0KClRoZSBsZWFkZXIgbWFpbnRhaW5z IGEgbG9jYWwgaGFzaCB0YWJsZSwgdXNpbmcgdGhlIHJlbW90ZSBjaGFuZ2UncyByZXBsaWNhCmlk ZW50aXR5IGNvbHVtbiB2YWx1ZXMgYW5kIHJlbGlkIGFzIGtleXMsIHdpdGggcmVtb3RlIHRyYW5z YWN0aW9uIElEcyBhcyB2YWx1ZXMuCkJlZm9yZSBzZW5kaW5nIGNoYW5nZXMgdG8gdGhlIHBhcmFs bGVsIGFwcGx5IHdvcmtlciwgdGhlIGxlYWRlciBjb21wdXRlcyBhIGhhc2gKdXNpbmcgUkkga2V5 IHZhbHVlcyBhbmQgdGhlIHJlbGlkIG9mIHRoZSBjdXJyZW50IGNoYW5nZSB0byBzZWFyY2ggdGhl IGhhc2gKdGFibGUuIElmIGFuIGV4aXN0aW5nIGVudHJ5IGlzIGZvdW5kLCB0aGUgbGVhZGVyIGZp cnN0IHVwZGF0ZXMgdGhlIGhhc2ggZW50cnkKd2l0aCB0aGUgcmVjZWl2aW5nIHJlbW90ZSB4aWQg dGhlbiB0ZWxscyB0aGUgcGFyYWxsZWwgd29ya2VyIHRvIHdhaXQgZm9yIGl0LgoKSWYgdGhlIHJl bW90ZSByZWxhdGlvbiBsYWNrcyBhIHJlcGxpY2EgaWRlbnRpdHkgKFJJKSwgaXQgaW5kaWNhdGVz IHRoYXQgb25seQpJTlNFUlQgY2FuIGJlIHJlcGxpY2F0ZWQgZm9yIHRoaXMgdGFibGUuIEluIHN1 Y2ggY2FzZXMsIHRoZSBsZWFkZXIgc2tpcHMKZGVwZW5kZW5jeSBjaGVja3MsIGFsbG93aW5nIHRo ZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgdG8gcHJvY2VlZCB3aXRoIGFwcGx5aW5nCmNoYW5nZXMg d2l0aG91dCBkZWxheS4gVGhpcyBpcyBiZWNhdXNlIHRoZSBvbmx5IHBvdGVudGlhbCBjb25mbGlj dCBjb3VsZCBoYXBwZW4KaXMgcmVsYXRlZCB0byB0aGUgbG9jYWwgdW5pcXVlIGtleSBvciBmb3Jl aWduIGtleSwgd2hpY2ggdGhhdCBpcyB5ZXQgdG8gYmUKaW1wbGVtZW50ZWQgKHNlZSBUT0RPIC0g ZGVwZW5kZW5jeSBvbiBsb2NhbCB1bmlxdWUga2V5LCBmb3JlaWduIGtleS4pLgoKSW4gY2FzZXMg b2YgVFJVTkNBVEUgb3IgcmVtb3RlIHNjaGVtYSBjaGFuZ2VzIGFmZmVjdGluZyB0aGUgZW50aXJl IHRhYmxlLCB0aGUKbGVhZGVyIHJldHJpZXZlcyBhbGwgcmVtb3RlIHhpZHMgdG91Y2hpbmcgdGhl IHNhbWUgdGFibGUgKHZpYSBzZXF1ZW50aWFsIHNjYW5zCm9mIHRoZSBoYXNoIHRhYmxlKSBhbmQg dGVsbHMgdGhlIHBhcmFsbGVsIHdvcmtlciB0byB3YWl0IGZvciB0aG9zZSB0cmFuc2FjdGlvbnMK dG8gY29tbWl0LgoKSGFzaCBlbnRyaWVzIGFyZSBjbGVhbmVkIHVwIG9uY2UgdGhlIHRyYW5zYWN0 aW9uIGNvcnJlc3BvbmRpbmcgdG8gdGhlIHJlbW90ZSB4aWQKaW4gdGhlIGVudHJ5IGhhcyBiZWVu IGNvbW1pdHRlZC4gQ2xlYW4tdXAgdHlwaWNhbGx5IG9jY3VycyB3aGVuIGNvbGxlY3RpbmcgdGhl CmZsdXNoIHBvc2l0aW9uIG9mIGVhY2ggdHJhbnNhY3Rpb24sIGJ1dCBpcyBmb3JjZWQgaWYgdGhl IGhhc2ggdGFibGUgZXhjZWVkcyBhCnNldCB0aHJlc2hvbGQuCgotLQpkZWRlbmRlbmN5IHdhaXRp bmcKLS0KCklmIGEgdHJhbnNhY3Rpb24gaXMgcmVsaWVkIHVwb24gYnkgb3RoZXJzLCB0aGUgbGVh ZGVyIGFkZHMgaXRzIHhpZCB0byBhIHNoYXJlZApoYXNoIHRhYmxlLiBUaGUgc2hhcmVkIGhhc2gg dGFibGUgZW50cnkgaXMgY2xlYXJlZCBieSB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyCnVwb24g Y29tcGxldGluZyB0aGUgdHJhbnNhY3Rpb24uIFdvcmtlcnMgbmVlZGluZyB0byB3YWl0IGZvciBh IHRyYW5zYWN0aW9uIGNoZWNrCnRoZSBzaGFyZWQgaGFzaCB0YWJsZSBlbnRyeTsgaWYgcHJlc2Vu dCwgdGhleSBsb2NrIHRoZSB0cmFuc2FjdGlvbiBJRCAodXNpbmcKcGFfbG9ja190cmFuc2FjdGlv bikuIElmIGFic2VudCwgaXQgaW5kaWNhdGVzIHRoZSB0cmFuc2FjdGlvbiBoYXMgYmVlbgpjb21t aXR0ZWQsIG5lZ2F0aW5nIHRoZSBuZWVkIHRvIHdhaXQuCgotLQpjb21taXQgb3JkZXIKLS0KClRo ZXJlIGlzIGEgY2FzZSB3aGVyZSBjb2x1bW5zIGhhdmUgbm8gZm9yZWlnbiBvciBwcmltYXJ5IGtl eXMsIGFuZCBpbnRlZ3JpdHkgaXMKbWFpbnRhaW5lZCBhdCB0aGUgYXBwbGljYXRpb24gbGF5ZXIu IEluIHRoaXMgY2FzZSwgdGhlIGFib3ZlIFJJIG1lY2hhbmlzbSBjYW5ub3QKZGV0ZWN0IGFueSBk ZXBlbmRlbmNpZXMuIEZvciBzYWZldHkgcmVhc29ucywgcGFyYWxsZWwgYXBwbHkgd29ya2VycyBw cmVzZXJ2ZSB0aGUKY29tbWl0IG9yZGVyaW5nIGRvbmUgb24gdGhlIHB1Ymxpc2hlciBzaWRlLiBU aGlzIGlzIGRvbmUgYnkgdGhlIGxlYWRlciB3b3JrZXIKY2FjaGluZyB0aGUgbGFzdGx5IGRpc3Bh dGNoZWQgdHJhbnNhY3Rpb24gSUQgYW5kIGFkZGluZyBhIGRlcGVuZGVuY3kgYmV0d2VlbiBpdAph bmQgdGhlIGN1cnJlbnRseSBkaXNwYXRjaGluZyBvbmUuCgotLQpUT0RPIC0gZGVwZW5kZW5jeSBv biBmb3JlaWduIGtleS4KLS0KCkEgdHJhbnNhY3Rpb24gY291bGQgY29uZmxpY3Qgd2l0aCBhbm90 aGVyIGlmIG1vZGlmeWluZyB0aGUgc2FtZSBrZXkuCldoaWxlIGN1cnJlbnQgcGF0Y2hlcyBkb24n dCBhZGRyZXNzIGNvbmZsaWN0cyBpbnZvbHZpbmcgZm9yZWlnbiBrZXlzLCB0cmFja2luZwp0aGVz ZSBkZXBlbmRlbmNpZXMgbWlnaHQgYmUgbmVlZGVkLgotLS0KIC4uLi9yZXBsaWNhdGlvbi9sb2dp Y2FsL2FwcGx5cGFyYWxsZWx3b3JrZXIuYyB8IDMzOSArKysrKysrKysrKysrKysrLS0KIHNyYy9i YWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcHJvdG8uYyAgICAgICB8ICAzOCArKwogc3JjL2Jh Y2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9yZWxhdGlvbi5jICAgIHwgIDMxICsrCiBzcmMvYmFj a2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jICAgICAgfCAzMDMgKysrKysrKysrKysr KystLQogc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbHByb3RvLmggICAgICAgIHwgICAy ICsKIHNyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWxyZWxhdGlvbi5oICAgICB8ICAgMiAr CiBzcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93b3JrZXJfaW50ZXJuYWwuaCAgICAgfCAgMTEgKy0K IHNyYy90ZXN0L3N1YnNjcmlwdGlvbi9tZXNvbi5idWlsZCAgICAgICAgICAgICB8ICAgMSArCiBz cmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMDFfcmVwX2NoYW5nZXMucGwgICAgfCAgIDIgKwogc3Jj L3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDEwX3RydW5jYXRlLnBsICAgICAgIHwgICAyICstCiBzcmMv dGVzdC9zdWJzY3JpcHRpb24vdC8wMTVfc3RyZWFtLnBsICAgICAgICAgfCAgIDggKy0KIHNyYy90 ZXN0L3N1YnNjcmlwdGlvbi90LzAyNl9zdGF0cy5wbCAgICAgICAgICB8ICAgMSArCiBzcmMvdGVz dC9zdWJzY3JpcHRpb24vdC8wMjdfbm9zdXBlcnVzZXIucGwgICAgfCAgIDEgKwogc3JjL3Rlc3Qv c3Vic2NyaXB0aW9uL3QvMDUwX3BhcmFsbGVsX2FwcGx5LnBsIHwgMTMwICsrKysrKysKIHNyYy90 b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0ICAgICAgICAgICAgICB8ICAgNCArCiAxNSBmaWxl cyBjaGFuZ2VkLCA4MDEgaW5zZXJ0aW9ucygrKSwgNzQgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9k ZSAxMDA2NDQgc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDUwX3BhcmFsbGVsX2FwcGx5LnBsCgpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9hcHBseXBhcmFsbGVs d29ya2VyLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2FwcGx5cGFyYWxsZWx3 b3JrZXIuYwppbmRleCBjZjA4MjA2ZDlmZC4uNWI2MjY3YzYwNDcgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvYXBwbHlwYXJhbGxlbHdvcmtlci5jCisrKyBiL3Ny Yy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvYXBwbHlwYXJhbGxlbHdvcmtlci5jCkBAIC0x NCw2ICsxNCw5IEBACiAgKiBQYXJhbGxlbEFwcGx5V29ya2VySW5mbyB3aGljaCBpcyByZXF1aXJl ZCBzbyB0aGUgbGVhZGVyIHdvcmtlciBhbmQgcGFyYWxsZWwKICAqIGFwcGx5IHdvcmtlcnMgY2Fu IGNvbW11bmljYXRlIHdpdGggZWFjaCBvdGhlci4KICAqCisgKiBTdHJlYW1pbmcgdHJhbnNhY3Rp b25zCisgKiA9PT09PT09PT09PT09PT09PT09PT09CisgKgogICogVGhlIHBhcmFsbGVsIGFwcGx5 IHdvcmtlcnMgYXJlIGFzc2lnbmVkIChpZiBhdmFpbGFibGUpIGFzIHNvb24gYXMgeGFjdCdzCiAg KiBmaXJzdCBzdHJlYW0gaXMgcmVjZWl2ZWQgZm9yIHN1YnNjcmlwdGlvbnMgdGhhdCBoYXZlIHNl dCB0aGVpciAnc3RyZWFtaW5nJwogICogb3B0aW9uIGFzIHBhcmFsbGVsLiBUaGUgbGVhZGVyIGFw cGx5IHdvcmtlciB3aWxsIHNlbmQgY2hhbmdlcyB0byB0aGlzIG5ldwpAQCAtMTUyLDYgKzE1NSwz MyBAQAogICogc2Vzc2lvbi1sZXZlbCBsb2NrcyBiZWNhdXNlIGJvdGggbG9ja3MgY291bGQgYmUg YWNxdWlyZWQgb3V0c2lkZSB0aGUKICAqIHRyYW5zYWN0aW9uLCBhbmQgdGhlIHN0cmVhbSBsb2Nr IGluIHRoZSBsZWFkZXIgbmVlZHMgdG8gcGVyc2lzdCBhY3Jvc3MKICAqIHRyYW5zYWN0aW9uIGJv dW5kYXJpZXMgaS5lLiB1bnRpbCB0aGUgZW5kIG9mIHRoZSBzdHJlYW1pbmcgdHJhbnNhY3Rpb24u CisgKgorICogTm9uLXN0cmVhbWluZyB0cmFuc2FjdGlvbnMKKyAqID09PT09PT09PT09PT09PT09 PT09PT0KKyAqIFRoZSBoYW5kbGluZyBpcyBzaW1pbGFyIHRvIHN0cmVhbWluZyB0cmFuc2FjdGlv bnMsIGJ1dCBpbmNsdWRpbmcgZmV3CisgKiBkaWZmZXJlbmNlczoKKyAqCisgKiBUcmFuc2FjdGlv biBkZXBlbmRlbmN5CisgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBCZWZvcmUgZGlzcGF0 Y2hpbmcgY2hhbmdlcyB0byBhIHBhcmFsbGVsIHdvcmtlciwgdGhlIGxlYWRlciB2ZXJpZmllcyBp ZiB0aGUKKyAqIGN1cnJlbnQgbW9kaWZpY2F0aW9uIGFmZmVjdHMgdGhlIHNhbWUgcm93IChpZGVu dGl0aWVkIGJ5IHJlcGxpY2EgaWRlbnRpdHkKKyAqIGtleSkgYXMgYW5vdGhlciBvbmdvaW5nIHRy YW5zYWN0aW9uIChzZWUgaGFuZGxlX2RlcGVuZGVuY3lfb25fY2hhbmdlIGZvcgorICogZGV0YWls cykuIElmIHNvLCB0aGUgbGVhZGVyIHNlbmRzIGEgbGlzdCBvZiBkZXBlbmRlbnQgdHJhbnNhY3Rp b24gSURzIHRvIHRoZQorICogcGFyYWxsZWwgd29ya2VyLCBpbmRpY2F0aW5nIHRoYXQgdGhlIHBh cmFsbGVsIGFwcGx5IHdvcmtlciBtdXN0IHdhaXQgZm9yCisgKiB0aGVzZSB0cmFuc2FjdGlvbnMg dG8gY29tbWl0IGJlZm9yZSBwcm9jZWVkaW5nLgorICoKKyAqIENvbW1pdCBvcmRlcgorICogLS0t LS0tLS0tLS0tCisgKiBUaGVyZSBpcyBhIGNhc2Ugd2hlcmUgY29sdW1ucyBoYXZlIG5vIGZvcmVp Z24gb3IgcHJpbWFyeSBrZXlzLCBhbmQgaW50ZWdyaXR5CisgKiBpcyBtYWludGFpbmVkIGF0IHRo ZSBhcHBsaWNhdGlvbiBsYXllci4gSW4gdGhpcyBjYXNlLCB0aGUgYWJvdmUgUkkgbWVjaGFuaXNt CisgKiBjYW5ub3QgZGV0ZWN0IGFueSBkZXBlbmRlbmNpZXMuIEZvciBzYWZldHkgcmVhc29ucywg cGFyYWxsZWwgYXBwbHkgd29ya2VycworICogcHJlc2VydmUgdGhlIGNvbW1pdCBvcmRlcmluZyBk b25lIG9uIHRoZSBwdWJsaXNoZXIgc2lkZS4gVGhpcyBpcyBkb25lIGJ5IHRoZQorICogbGVhZGVy IHdvcmtlciBjYWNoaW5nIHRoZSBsYXN0bHkgZGlzcGF0Y2hlZCB0cmFuc2FjdGlvbiBJRCBhbmQg YWRkaW5nIGEKKyAqIGRlcGVuZGVuY3kgYmV0d2VlbiBpdCBhbmQgdGhlIGN1cnJlbnRseSBkaXNw YXRjaGluZyBvbmUuCisgKiBXZSBjYW4gZXh0ZW5kIHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIg dG8gYWxsb3cgb3V0LW9mLW9yZGVyIGNvbW1pdHMgaW4gdGhlCisgKiBmdXR1cmU6IEF0IGxlYXN0 IHdlIG11c3QgdXNlIGEgbmV3IG1lY2hhbmlzbSB0byB0cmFjayByZXBsaWNhdGlvbiBwcm9ncmVz cworICogaW4gb3V0LW9mLW9yZGVyIGNvbW1pdHMuIFRoZW4gd2UgY2FuIHN0b3AgY2FjaGluZyB0 aGUgdHJhbnNhY3Rpb24gSUQgYW5kCisgKiBhZGRpbmcgdGhlIGRlcGVuZGVuY3kuCiAgKi0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KICAqLwogCkBAIC0yODMsNiArMzEzLDcgQEAgc3RhdGljIFBhcmFsbGVsVHJh bnNTdGF0ZSBwYV9nZXRfeGFjdF9zdGF0ZShQYXJhbGxlbEFwcGx5V29ya2VyU2hhcmVkICp3c2hh cmVkKTsKIHN0YXRpYyBQYXJ0aWFsRmlsZVNldFN0YXRlIHBhX2dldF9maWxlc2V0X3N0YXRlKHZv aWQpOwogc3RhdGljIHZvaWQgcGFfYXR0YWNoX3BhcmFsbGVsaXplZF90eG5faGFzaChkc2FfaGFu ZGxlICpwYV9kc2FfaGFuZGxlLAogCQkJCQkJCQkJCQlkc2hhc2hfdGFibGVfaGFuZGxlICpwYV9k c2hhc2hfaGFuZGxlKTsKK3N0YXRpYyB2b2lkIHdyaXRlX2ludGVybmFsX3JlbGF0aW9uKFN0cmlu Z0luZm8gcywgTG9naWNhbFJlcFJlbGF0aW9uICpyZWwpOwogCiAvKgogICogUmV0dXJucyB0cnVl IGlmIGl0IGlzIE9LIHRvIHN0YXJ0IGEgcGFyYWxsZWwgYXBwbHkgd29ya2VyLCBmYWxzZSBvdGhl cndpc2UuCkBAIC00MDAsNiArNDMxLDcgQEAgcGFfc2V0dXBfZHNtKFBhcmFsbGVsQXBwbHlXb3Jr ZXJJbmZvICp3aW5mbykKIAlzaGFyZWQgPSBzaG1fdG9jX2FsbG9jYXRlKHRvYywgc2l6ZW9mKFBh cmFsbGVsQXBwbHlXb3JrZXJTaGFyZWQpKTsKIAlTcGluTG9ja0luaXQoJnNoYXJlZC0+bXV0ZXgp OwogCisJc2hhcmVkLT54aWQgPSBJbnZhbGlkVHJhbnNhY3Rpb25JZDsKIAlzaGFyZWQtPnhhY3Rf c3RhdGUgPSBQQVJBTExFTF9UUkFOU19VTktOT1dOOwogCXBnX2F0b21pY19pbml0X3UzMigmKHNo YXJlZC0+cGVuZGluZ19zdHJlYW1fY291bnQpLCAwKTsKIAlzaGFyZWQtPmxhc3RfY29tbWl0X2Vu ZCA9IEludmFsaWRYTG9nUmVjUHRyOwpAQCAtNDQzLDYgKzQ3NSw4IEBAIHBhX2xhdW5jaF9wYXJh bGxlbF93b3JrZXIodm9pZCkKIAlNZW1vcnlDb250ZXh0IG9sZGNvbnRleHQ7CiAJYm9vbAkJbGF1 bmNoZWQ7CiAJUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKndpbmZvOworCWRzYV9oYW5kbGUJcGFf ZHNhX2hhbmRsZTsKKwlkc2hhc2hfdGFibGVfaGFuZGxlIHBhX2RzaGFzaF9oYW5kbGU7CiAJTGlz dENlbGwgICAqbGM7CiAKIAkvKiBUcnkgdG8gZ2V0IGFuIGF2YWlsYWJsZSBwYXJhbGxlbCBhcHBs eSB3b3JrZXIgZnJvbSB0aGUgd29ya2VyIHBvb2wuICovCkBAIC00NTAsMTAgKzQ4NCwzMyBAQCBw YV9sYXVuY2hfcGFyYWxsZWxfd29ya2VyKHZvaWQpCiAJewogCQl3aW5mbyA9IChQYXJhbGxlbEFw cGx5V29ya2VySW5mbyAqKSBsZmlyc3QobGMpOwogCi0JCWlmICghd2luZm8tPmluX3VzZSkKKwkJ aWYgKCF3aW5mby0+c3RyZWFtX3R4biAmJgorCQkJcGFfZ2V0X3hhY3Rfc3RhdGUod2luZm8tPnNo YXJlZCkgPT0gUEFSQUxMRUxfVFJBTlNfRklOSVNIRUQpCisJCXsKKwkJCS8qCisJCQkgKiBTYXZl IHRoZSBsb2NhbCBjb21taXQgTFNOIG9mIHRoZSBsYXN0IHRyYW5zYWN0aW9uIGFwcGxpZWQgYnkK KwkJCSAqIHRoaXMgd29ya2VyIGJlZm9yZSByZXVzaW5nIGl0IGZvciBhbm90aGVyIHRyYW5zYWN0 aW9uLiBUaGlzIFdBTAorCQkJICogcG9zaXRpb24gaXMgY3J1Y2lhbCBmb3IgZGV0ZXJtaW5pbmcg dGhlIGZsdXNoIHBvc2l0aW9uIGluCisJCQkgKiByZXNwb25zZXMgdG8gdGhlIHB1Ymxpc2hlciAo c2VlIGdldF9mbHVzaF9wb3NpdGlvbigpKS4KKwkJCSAqLworCQkJKHZvaWQpIHBhX2dldF9sYXN0 X2NvbW1pdF9lbmQod2luZm8tPnNoYXJlZC0+eGlkLCBmYWxzZSwgTlVMTCk7CisJCQlyZXR1cm4g d2luZm87CisJCX0KKworCQlpZiAod2luZm8tPnN0cmVhbV90eG4gJiYgIXdpbmZvLT5pbl91c2Up CiAJCQlyZXR1cm4gd2luZm87CiAJfQogCisJcGFfYXR0YWNoX3BhcmFsbGVsaXplZF90eG5faGFz aCgmcGFfZHNhX2hhbmRsZSwgJnBhX2RzaGFzaF9oYW5kbGUpOworCisJLyoKKwkgKiBSZXR1cm4g aWYgdGhlIG51bWJlciBvZiBwYXJhbGxlbCBhcHBseSB3b3JrZXJzIGhhcyByZWFjaGVkIHRoZSBt YXhpbXVtCisJICogbGltaXQuCisJICovCisJaWYgKGxpc3RfbGVuZ3RoKFBhcmFsbGVsQXBwbHlX b3JrZXJQb29sKSA9PQorCQltYXhfcGFyYWxsZWxfYXBwbHlfd29ya2Vyc19wZXJfc3Vic2NyaXB0 aW9uKQorCQlyZXR1cm4gTlVMTDsKKwogCS8qCiAJICogU3RhcnQgYSBuZXcgcGFyYWxsZWwgYXBw bHkgd29ya2VyLgogCSAqCkBAIC00ODEsMTggKzUzOCwzMiBAQCBwYV9sYXVuY2hfcGFyYWxsZWxf d29ya2VyKHZvaWQpCiAJCQkJCQkJCQkJZHNtX3NlZ21lbnRfaGFuZGxlKHdpbmZvLT5kc21fc2Vn KSwKIAkJCQkJCQkJCQlmYWxzZSk7CiAKLQlpZiAobGF1bmNoZWQpCi0JewotCQlQYXJhbGxlbEFw cGx5V29ya2VyUG9vbCA9IGxhcHBlbmQoUGFyYWxsZWxBcHBseVdvcmtlclBvb2wsIHdpbmZvKTsK LQl9Ci0JZWxzZQorCWlmICghbGF1bmNoZWQpCiAJeworCQlNZW1vcnlDb250ZXh0U3dpdGNoVG8o b2xkY29udGV4dCk7CiAJCXBhX2ZyZWVfd29ya2VyX2luZm8od2luZm8pOwotCQl3aW5mbyA9IE5V TEw7CisJCXJldHVybiBOVUxMOwogCX0KIAorCVBhcmFsbGVsQXBwbHlXb3JrZXJQb29sID0gbGFw cGVuZChQYXJhbGxlbEFwcGx5V29ya2VyUG9vbCwgd2luZm8pOworCiAJTWVtb3J5Q29udGV4dFN3 aXRjaFRvKG9sZGNvbnRleHQpOwogCisJLyoKKwkgKiBTZW5kIGFsbCBleGlzdGluZyByZW1vdGUg cmVsYXRpb24gaW5mb3JtYXRpb24gdG8gdGhlIHBhcmFsbGVsIGFwcGx5CisJICogd29ya2VyLiBU aGlzIGFsbG93cyB0aGUgcGFyYWxsZWwgd29ya2VyIHRvIGluaXRpYWxpemUgdGhlCisJICogTG9n aWNhbFJlcFJlbE1hcEVudHJ5IGxvY2FsbHkgYmVmb3JlIGFwcGx5aW5nIHJlbW90ZSBjaGFuZ2Vz LgorCSAqLworCWlmIChsb2dpY2FscmVwX2dldF9udW1fcmVscygpKQorCXsKKwkJU3RyaW5nSW5m b0RhdGEgb3V0OworCisJCWluaXRTdHJpbmdJbmZvKCZvdXQpOworCisJCXdyaXRlX2ludGVybmFs X3JlbGF0aW9uKCZvdXQsIE5VTEwpOworCQlwYV9zZW5kX2RhdGEod2luZm8sIG91dC5sZW4sIG91 dC5kYXRhKTsKKwl9CisKIAlyZXR1cm4gd2luZm87CiB9CiAKQEAgLTU5Nyw3ICs2NjgsOCBAQCBw YV9mcmVlX3dvcmtlcihQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAqd2luZm8pCiB7CiAJQXNzZXJ0 KCFhbV9wYXJhbGxlbF9hcHBseV93b3JrZXIoKSk7CiAJQXNzZXJ0KHdpbmZvLT5pbl91c2UpOwot CUFzc2VydChwYV9nZXRfeGFjdF9zdGF0ZSh3aW5mby0+c2hhcmVkKSA9PSBQQVJBTExFTF9UUkFO U19GSU5JU0hFRCk7CisJQXNzZXJ0KCF3aW5mby0+c3RyZWFtX3R4biB8fAorCQkgICBwYV9nZXRf eGFjdF9zdGF0ZSh3aW5mby0+c2hhcmVkKSA9PSBQQVJBTExFTF9UUkFOU19GSU5JU0hFRCk7CiAK IAlpZiAoIWhhc2hfc2VhcmNoKFBhcmFsbGVsQXBwbHlUeG5IYXNoLCAmd2luZm8tPnNoYXJlZC0+ eGlkLCBIQVNIX1JFTU9WRSwgTlVMTCkpCiAJCWVsb2coRVJST1IsICJoYXNoIHRhYmxlIGNvcnJ1 cHRlZCIpOwpAQCAtNjEzLDkgKzY4NSw3IEBAIHBhX2ZyZWVfd29ya2VyKFBhcmFsbGVsQXBwbHlX b3JrZXJJbmZvICp3aW5mbykKIAkgKiBiZWVuIHNlcmlhbGl6ZWQgYW5kIHRoZW4gbGV0dGluZyB0 aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyIGRlYWwgd2l0aAogCSAqIHRoZSBzcHVyaW91cyBtZXNz YWdlLCB3ZSBzdG9wIHRoZSB3b3JrZXIuCiAJICovCi0JaWYgKHdpbmZvLT5zZXJpYWxpemVfY2hh bmdlcyB8fAotCQlsaXN0X2xlbmd0aChQYXJhbGxlbEFwcGx5V29ya2VyUG9vbCkgPgotCQkobWF4 X3BhcmFsbGVsX2FwcGx5X3dvcmtlcnNfcGVyX3N1YnNjcmlwdGlvbiAvIDIpKQorCWlmICh3aW5m by0+c2VyaWFsaXplX2NoYW5nZXMpCiAJewogCQlsb2dpY2FscmVwX3BhX3dvcmtlcl9zdG9wKHdp bmZvKTsKIAkJcGFfZnJlZV93b3JrZXJfaW5mbyh3aW5mbyk7CkBAIC04MTIsNiArODgyLDM4IEBA IHBhX2dldF9sYXN0X2NvbW1pdF9lbmQoVHJhbnNhY3Rpb25JZCB4aWQsIGJvb2wgZGVsZXRlX2Vu dHJ5LCBib29sICpza2lwcGVkX3dyaXRlCiAJcmV0dXJuIGVudHJ5LT5sb2NhbF9lbmQ7CiB9CiAK Ky8qCisgKiBXYWl0IGZvciB0aGUgcmVtb3RlIHRyYW5zYWN0aW9uIGFzc29jaWF0ZWQgd2l0aCB0 aGUgc3BlY2lmaWVkIHJlbW90ZSB4aWQgdG8KKyAqIGNvbXBsZXRlLgorICovCitzdGF0aWMgdm9p ZAorcGFfd2FpdF9mb3JfdHJhbnNhY3Rpb24oVHJhbnNhY3Rpb25JZCB3YWl0X2Zvcl94aWQpCit7 CisJaWYgKCFhbV9sZWFkZXJfYXBwbHlfd29ya2VyKCkpCisJCXJldHVybjsKKworCWlmICghVHJh bnNhY3Rpb25JZElzVmFsaWQod2FpdF9mb3JfeGlkKSkKKwkJcmV0dXJuOworCisJZWxvZyhERUJV RzEsICJwbGFuIHRvIHdhaXQgZm9yIHJlbW90ZV94aWQgJXUgdG8gZmluaXNoIiwKKwkJIHdhaXRf Zm9yX3hpZCk7CisKKwlmb3IgKDs7KQorCXsKKwkJaWYgKHBhX3RyYW5zYWN0aW9uX2NvbW1pdHRl ZCh3YWl0X2Zvcl94aWQpKQorCQkJYnJlYWs7CisKKwkJcGFfbG9ja190cmFuc2FjdGlvbih3YWl0 X2Zvcl94aWQsIEFjY2Vzc1NoYXJlTG9jayk7CisJCXBhX3VubG9ja190cmFuc2FjdGlvbih3YWl0 X2Zvcl94aWQsIEFjY2Vzc1NoYXJlTG9jayk7CisKKwkJLyogQW4gaW50ZXJydXB0IG1heSBoYXZl IG9jY3VycmVkIHdoaWxlIHdlIHdlcmUgd2FpdGluZy4gKi8KKwkJQ0hFQ0tfRk9SX0lOVEVSUlVQ VFMoKTsKKwl9CisKKwllbG9nKERFQlVHMSwgImZpbmlzaGVkIHdhaXQgZm9yIHJlbW90ZV94aWQg JXUgdG8gZmluaXNoIiwKKwkJIHdhaXRfZm9yX3hpZCk7Cit9CisKIC8qCiAgKiBJbnRlcnJ1cHQg aGFuZGxlciBmb3IgbWFpbiBsb29wIG9mIHBhcmFsbGVsIGFwcGx5IHdvcmtlci4KICAqLwpAQCAt ODg3LDIxICs5ODksMzQgQEAgTG9naWNhbFBhcmFsbGVsQXBwbHlMb29wKHNobV9tcV9oYW5kbGUg Km1xaCkKIAkJCSAqIHBhcmFsbGVsIGFwcGx5IHdvcmtlcnMgY2FuIG9ubHkgYmUgUHFSZXBsTXNn X1dBTERhdGEuCiAJCQkgKi8KIAkJCWMgPSBwcV9nZXRtc2dieXRlKCZzKTsKLQkJCWlmIChjICE9 IFBxUmVwbE1zZ19XQUxEYXRhKQotCQkJCWVsb2coRVJST1IsICJ1bmV4cGVjdGVkIG1lc3NhZ2Ug XCIlY1wiIiwgYyk7Ci0KLQkJCS8qCi0JCQkgKiBJZ25vcmUgc3RhdGlzdGljcyBmaWVsZHMgdGhh dCBoYXZlIGJlZW4gdXBkYXRlZCBieSB0aGUgbGVhZGVyCi0JCQkgKiBhcHBseSB3b3JrZXIuCi0J CQkgKgotCQkJICogWFhYIFdlIGNhbiBhdm9pZCBzZW5kaW5nIHRoZSBzdGF0aXN0aWNzIGZpZWxk cyBmcm9tIHRoZSBsZWFkZXIKLQkJCSAqIGFwcGx5IHdvcmtlciBidXQgZm9yIHRoYXQsIGl0IG5l ZWRzIHRvIHJlYnVpbGQgdGhlIGVudGlyZQotCQkJICogbWVzc2FnZSBieSByZW1vdmluZyB0aGVz ZSBmaWVsZHMgd2hpY2ggY291bGQgYmUgbW9yZSB3b3JrIHRoYW4KLQkJCSAqIHNpbXBseSBpZ25v cmluZyB0aGVzZSBmaWVsZHMgaW4gdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlci4KLQkJCSAqLwot CQkJcy5jdXJzb3IgKz0gU0laRV9TVEFUU19NRVNTQUdFOworCQkJaWYgKGMgPT0gUHFSZXBsTXNn X1dBTERhdGEpCisJCQl7CisJCQkJLyoKKwkJCQkgKiBJZ25vcmUgc3RhdGlzdGljcyBmaWVsZHMg dGhhdCBoYXZlIGJlZW4gdXBkYXRlZCBieSB0aGUKKwkJCQkgKiBsZWFkZXIgYXBwbHkgd29ya2Vy LgorCQkJCSAqCisJCQkJICogWFhYIFdlIGNhbiBhdm9pZCBzZW5kaW5nIHRoZSBzdGF0aXN0aWNz IGZpZWxkcyBmcm9tIHRoZQorCQkJCSAqIGxlYWRlciBhcHBseSB3b3JrZXIgYnV0IGZvciB0aGF0 LCBpdCBuZWVkcyB0byByZWJ1aWxkIHRoZQorCQkJCSAqIGVudGlyZSBtZXNzYWdlIGJ5IHJlbW92 aW5nIHRoZXNlIGZpZWxkcyB3aGljaCBjb3VsZCBiZSBtb3JlCisJCQkJICogd29yayB0aGFuIHNp bXBseSBpZ25vcmluZyB0aGVzZSBmaWVsZHMgaW4gdGhlIHBhcmFsbGVsCisJCQkJICogYXBwbHkg d29ya2VyLgorCQkJCSAqLworCQkJCXMuY3Vyc29yICs9IFNJWkVfU1RBVFNfTUVTU0FHRTsKIAot CQkJYXBwbHlfZGlzcGF0Y2goJnMpOworCQkJCWFwcGx5X2Rpc3BhdGNoKCZzKTsKKwkJCX0KKwkJ CWVsc2UgaWYgKGMgPT0gUEFSQUxMRUxfQVBQTFlfSU5URVJOQUxfTUVTU0FHRSkKKwkJCXsKKwkJ CQlhcHBseV9kaXNwYXRjaCgmcyk7CisJCQl9CisJCQllbHNlCisJCQl7CisJCQkJLyoKKwkJCQkg KiBUaGUgZmlyc3QgYnl0ZSBvZiBtZXNzYWdlcyBzZW50IGZyb20gbGVhZGVyIGFwcGx5IHdvcmtl ciB0bworCQkJCSAqIHBhcmFsbGVsIGFwcGx5IHdvcmtlcnMgY2FuIG9ubHkgYmUgJ3cnIG9yICdp Jy4KKwkJCQkgKi8KKwkJCQllbG9nKEVSUk9SLCAidW5leHBlY3RlZCBtZXNzYWdlIFwiJWNcIiIs IGMpOworCQkJfQogCQl9CiAJCWVsc2UgaWYgKHNobXFfcmVzID09IFNITV9NUV9XT1VMRF9CTE9D SykKIAkJewpAQCAtOTE4LDYgKzEwMzMsOSBAQCBMb2dpY2FsUGFyYWxsZWxBcHBseUxvb3Aoc2ht X21xX2hhbmRsZSAqbXFoKQogCiAJCQkJaWYgKHJjICYgV0xfTEFUQ0hfU0VUKQogCQkJCQlSZXNl dExhdGNoKE15TGF0Y2gpOworCisJCQkJaWYgKCFJc1RyYW5zYWN0aW9uU3RhdGUoKSkKKwkJCQkJ cGdzdGF0X3JlcG9ydF9zdGF0KHRydWUpOwogCQkJfQogCQl9CiAJCWVsc2UKQEAgLTk1NSw2ICsx MDczLDkgQEAgcGFfc2h1dGRvd24oaW50IGNvZGUsIERhdHVtIGFyZykKIAkJCQkgICBJTlZBTElE X1BST0NfTlVNQkVSKTsKIAogCWRzbV9kZXRhY2goKGRzbV9zZWdtZW50ICopIERhdHVtR2V0UG9p bnRlcihhcmcpKTsKKworCWlmIChwYXJhbGxlbF9hcHBseV9kc2FfYXJlYSkKKwkJZHNhX2RldGFj aChwYXJhbGxlbF9hcHBseV9kc2FfYXJlYSk7CiB9CiAKIC8qCkBAIC0xMjY3LDcgKzEzODgsNiBA QCBwYV9zZW5kX2RhdGEoUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKndpbmZvLCBTaXplIG5ieXRl cywgY29uc3Qgdm9pZCAqZGF0YSkKIAlzaG1fbXFfcmVzdWx0IHJlc3VsdDsKIAlUaW1lc3RhbXBU eiBzdGFydFRpbWUgPSAwOwogCi0JQXNzZXJ0KCFJc1RyYW5zYWN0aW9uU3RhdGUoKSk7CiAJQXNz ZXJ0KCF3aW5mby0+c2VyaWFsaXplX2NoYW5nZXMpOwogCiAJLyoKQEAgLTEzMTksNiArMTQzOSw2 NyBAQCBwYV9zZW5kX2RhdGEoUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKndpbmZvLCBTaXplIG5i eXRlcywgY29uc3Qgdm9pZCAqZGF0YSkKIAl9CiB9CiAKKy8qCisgKiBEaXN0cmlidXRlIHJlbW90 ZSByZWxhdGlvbiBpbmZvcm1hdGlvbiB0byBhbGwgYWN0aXZlIHBhcmFsbGVsIGFwcGx5IHdvcmtl cnMKKyAqIHRoYXQgcmVxdWlyZSBpdC4KKyAqLwordm9pZAorcGFfZGlzdHJpYnV0ZV9zY2hlbWFf Y2hhbmdlc190b193b3JrZXJzKExvZ2ljYWxSZXBSZWxhdGlvbiAqcmVsKQoreworCUxpc3QJICAg KndvcmtlcnNfc3RvcHBlZCA9IE5JTDsKKwlTdHJpbmdJbmZvRGF0YSBvdXQ7CisKKwlpZiAoIVBh cmFsbGVsQXBwbHlXb3JrZXJQb29sKQorCQlyZXR1cm47CisKKwlpbml0U3RyaW5nSW5mbygmb3V0 KTsKKworCXdyaXRlX2ludGVybmFsX3JlbGF0aW9uKCZvdXQsIHJlbCk7CisKKwlmb3JlYWNoX3B0 cihQYXJhbGxlbEFwcGx5V29ya2VySW5mbywgd2luZm8sIFBhcmFsbGVsQXBwbHlXb3JrZXJQb29s KQorCXsKKwkJLyoKKwkJICogU2tpcCB0aGUgd29ya2VyIHJlc3BvbnNpYmxlIGZvciB0aGUgY3Vy cmVudCB0cmFuc2FjdGlvbiwgYXMgdGhlCisJCSAqIHJlbGF0aW9uIGluZm9ybWF0aW9uIGhhcyBh bHJlYWR5IGJlZW4gc2VudCB0byBpdC4KKwkJICovCisJCWlmICh3aW5mbyA9PSBzdHJlYW1fYXBw bHlfd29ya2VyKQorCQkJY29udGludWU7CisKKwkJLyoKKwkJICogU2tpcCB0aGUgd29ya2VyIHRo YXQgaXMgaW4gc2VyaWFsaXplIG1vZGUsIGFzIHRoZXkgd2lsbCBzb29uIHN0b3AKKwkJICogb25j ZSB0aGV5IGZpbmlzaCBhcHBseWluZyB0aGUgdHJhbnNhY3Rpb24uCisJCSAqLworCQlpZiAod2lu Zm8tPnNlcmlhbGl6ZV9jaGFuZ2VzKQorCQkJY29udGludWU7CisKKwkJZWxvZyhERUJVRzEsICJk aXN0cmlidXRpbmcgc2NoZW1hIGNoYW5nZXMgdG8gcGEgd29ya2VycyIpOworCisJCWlmIChwYV9z ZW5kX2RhdGEod2luZm8sIG91dC5sZW4sIG91dC5kYXRhKSkKKwkJCWNvbnRpbnVlOworCisJCWVs b2coREVCVUcxLCAiZmFpbGVkIHRvIGRpc3RyaWJ1dGUsIHdpbGwgc3RvcCB0aGF0IHdvcmtlciBp bnN0ZWFkIik7CisKKwkJLyoKKwkJICogRGlzdHJpYnV0aW9uIHRvIHRoaXMgd29ya2VyIGZhaWxl ZCBkdWUgdG8gYSBzZW5kaW5nIHRpbWVvdXQuIFdhaXQKKwkJICogZm9yIHRoZSB3b3JrZXIgdG8g Y29tcGxldGUgaXRzIHRyYW5zYWN0aW9uIGFuZCB0aGVuIHN0b3AgaXQuIFRoaXMKKwkJICogaXMg Y29uc2lzdGVudCB3aXRoIHRoZSBoYW5kbGluZyBvZiB3b3JrZXJzIGluIHNlcmlhbGl6ZSBtb2Rl IChzZWUKKwkJICogcGFfZnJlZV93b3JrZXIoKSBmb3IgZGV0YWlscykuCisJCSAqLworCQlwYV93 YWl0X2Zvcl90cmFuc2FjdGlvbih3aW5mby0+c2hhcmVkLT54aWQpOworCisJCXBhX2dldF9sYXN0 X2NvbW1pdF9lbmQod2luZm8tPnNoYXJlZC0+eGlkLCBmYWxzZSwgTlVMTCk7CisKKwkJbG9naWNh bHJlcF9wYV93b3JrZXJfc3RvcCh3aW5mbyk7CisKKwkJd29ya2Vyc19zdG9wcGVkID0gbGFwcGVu ZCh3b3JrZXJzX3N0b3BwZWQsIHdpbmZvKTsKKwl9CisKKwlwZnJlZShvdXQuZGF0YSk7CisKKwlm b3JlYWNoX3B0cihQYXJhbGxlbEFwcGx5V29ya2VySW5mbywgd2luZm8sIHdvcmtlcnNfc3RvcHBl ZCkKKwkJcGFfZnJlZV93b3JrZXJfaW5mbyh3aW5mbyk7Cit9CisKIC8qCiAgKiBTd2l0Y2ggdG8g UEFSVElBTF9TRVJJQUxJWkUgbW9kZSBmb3IgdGhlIGN1cnJlbnQgdHJhbnNhY3Rpb24gLS0gdGhp cyBtZWFucwogICogdGhhdCB0aGUgY3VycmVudCBkYXRhIGFuZCBhbnkgc3Vic2VxdWVudCBkYXRh IGZvciB0aGlzIHRyYW5zYWN0aW9uIHdpbGwgYmUKQEAgLTE0MDEsOCArMTU4Miw4IEBAIHBhX3dh aXRfZm9yX3hhY3RfZmluaXNoKFBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICp3aW5mbykKIAogCS8q CiAJICogV2FpdCBmb3IgdGhlIHRyYW5zYWN0aW9uIGxvY2sgdG8gYmUgcmVsZWFzZWQuIFRoaXMg aXMgcmVxdWlyZWQgdG8KLQkgKiBkZXRlY3QgZGVhZGxvY2sgYW1vbmcgbGVhZGVyIGFuZCBwYXJh bGxlbCBhcHBseSB3b3JrZXJzLiBSZWZlciB0byB0aGUKLQkgKiBjb21tZW50cyBhdG9wIHRoaXMg ZmlsZS4KKwkgKiBkZXRlY3QgZGV0ZWN0IGRlYWRsb2NrIGFtb25nIGxlYWRlciBhbmQgcGFyYWxs ZWwgYXBwbHkgd29ya2Vycy4gUmVmZXIKKwkgKiB0byB0aGUgY29tbWVudHMgYXRvcCB0aGlzIGZp bGUuCiAJICovCiAJcGFfbG9ja190cmFuc2FjdGlvbih3aW5mby0+c2hhcmVkLT54aWQsIEFjY2Vz c1NoYXJlTG9jayk7CiAJcGFfdW5sb2NrX3RyYW5zYWN0aW9uKHdpbmZvLT5zaGFyZWQtPnhpZCwg QWNjZXNzU2hhcmVMb2NrKTsKQEAgLTE0NzksNiArMTY2MCw5IEBAIHBhX3NhdmVwb2ludF9uYW1l KE9pZCBzdWJvaWQsIFRyYW5zYWN0aW9uSWQgeGlkLCBjaGFyICpzcG5hbWUsIFNpemUgc3pzcCkK IHZvaWQKIHBhX3N0YXJ0X3N1YnRyYW5zKFRyYW5zYWN0aW9uSWQgY3VycmVudF94aWQsIFRyYW5z YWN0aW9uSWQgdG9wX3hpZCkKIHsKKwlpZiAoIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKHRvcF94aWQp KQorCQlyZXR1cm47CisKIAlpZiAoY3VycmVudF94aWQgIT0gdG9wX3hpZCAmJgogCQkhbGlzdF9t ZW1iZXJfeGlkKHN1YnhhY3RsaXN0LCBjdXJyZW50X3hpZCkpCiAJewpAQCAtMTczNSwyNSArMTkx OSw0MSBAQCBwYV9kZWNyX2FuZF93YWl0X3N0cmVhbV9ibG9jayh2b2lkKQogdm9pZAogcGFfeGFj dF9maW5pc2goUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKndpbmZvLCBYTG9nUmVjUHRyIHJlbW90 ZV9sc24pCiB7CisJWExvZ1JlY1B0cglsb2NhbF9sc24gPSBJbnZhbGlkWExvZ1JlY1B0cjsKKwlU cmFuc2FjdGlvbklkIHBhX3JlbW90ZV94aWQgPSB3aW5mby0+c2hhcmVkLT54aWQ7CisKIAlBc3Nl cnQoYW1fbGVhZGVyX2FwcGx5X3dvcmtlcigpKTsKIAogCS8qCi0JICogVW5sb2NrIHRoZSBzaGFy ZWQgb2JqZWN0IGxvY2sgc28gdGhhdCBwYXJhbGxlbCBhcHBseSB3b3JrZXIgY2FuCi0JICogY29u dGludWUgdG8gcmVjZWl2ZSBhbmQgYXBwbHkgY2hhbmdlcy4KKwkgKiBVbmxvY2sgdGhlIHNoYXJl ZCBvYmplY3QgbG9jayB0YWtlbiBmb3Igc3RyZWFtaW5nIHRyYW5zYWN0aW9ucyBzbyB0aGF0CisJ ICogcGFyYWxsZWwgYXBwbHkgd29ya2VyIGNhbiBjb250aW51ZSB0byByZWNlaXZlIGFuZCBhcHBs eSBjaGFuZ2VzLgogCSAqLwotCXBhX3VubG9ja19zdHJlYW0od2luZm8tPnNoYXJlZC0+eGlkLCBB Y2Nlc3NFeGNsdXNpdmVMb2NrKTsKKwlpZiAod2luZm8tPnN0cmVhbV90eG4pCisJCXBhX3VubG9j a19zdHJlYW0od2luZm8tPnNoYXJlZC0+eGlkLCBBY2Nlc3NFeGNsdXNpdmVMb2NrKTsKIAogCS8q Ci0JICogV2FpdCBmb3IgdGhhdCB3b3JrZXIgdG8gZmluaXNoLiBUaGlzIGlzIG5lY2Vzc2FyeSB0 byBtYWludGFpbiBjb21taXQKLQkgKiBvcmRlciB3aGljaCBhdm9pZHMgZmFpbHVyZXMgZHVlIHRv IHRyYW5zYWN0aW9uIGRlcGVuZGVuY2llcyBhbmQKLQkgKiBkZWFkbG9ja3MuCisJICogV2FpdCBm b3IgdGhhdCB3b3JrZXIgZm9yIHN0cmVhbWluZyB0cmFuc2FjdGlvbiB0byBmaW5pc2guIFRoaXMg aXMKKwkgKiBuZWNlc3NhcnkgdG8gbWFpbnRhaW4gY29tbWl0IG9yZGVyIHdoaWNoIGF2b2lkcyBm YWlsdXJlcyBkdWUgdG8KKwkgKiB0cmFuc2FjdGlvbiBkZXBlbmRlbmNpZXMgYW5kIGRlYWRsb2Nr cy4KKwkgKgorCSAqIEZvciBub24tc3RyZWFtaW5nIHRyYW5zYWN0aW9uIGJ1dCBpbiBwYXJ0aWFs IHNlcmFsaXplIG1vZGUsIHdhaXQgZm9yCisJICogc3RvcCBhcyB3ZWxsIGFzIHRoZSB3b3JrZXIg aXMgYW55d2F5IGNhbm5vdCBiZSByZXVzZWQgYW55bW9yZSAoc2VlCisJICogcGFfZnJlZV93b3Jr ZXIoKSBmb3IgZGV0YWlscykuCiAJICovCi0JcGFfd2FpdF9mb3JfeGFjdF9maW5pc2god2luZm8p OworCWlmICh3aW5mby0+c2VyaWFsaXplX2NoYW5nZXMgfHwgd2luZm8tPnN0cmVhbV90eG4pCisJ eworCQlwYV93YWl0X2Zvcl94YWN0X2ZpbmlzaCh3aW5mbyk7CisKKwkJbG9jYWxfbHNuID0gd2lu Zm8tPnNoYXJlZC0+bGFzdF9jb21taXRfZW5kOworCQlwYV9yZW1vdGVfeGlkID0gSW52YWxpZFRy YW5zYWN0aW9uSWQ7CisKKwkJcGFfZnJlZV93b3JrZXIod2luZm8pOworCX0KIAogCWlmIChYTG9n UmVjUHRySXNWYWxpZChyZW1vdGVfbHNuKSkKLQkJc3RvcmVfZmx1c2hfcG9zaXRpb24ocmVtb3Rl X2xzbiwgd2luZm8tPnNoYXJlZC0+bGFzdF9jb21taXRfZW5kKTsKKwkJc3RvcmVfZmx1c2hfcG9z aXRpb24ocmVtb3RlX2xzbiwgbG9jYWxfbHNuLCBwYV9yZW1vdGVfeGlkKTsKIAotCXBhX2ZyZWVf d29ya2VyKHdpbmZvKTsKKwlwYV9zZXRfc3RyZWFtX2FwcGx5X3dvcmtlcihOVUxMKTsKIH0KIAog Ym9vbApAQCAtMTg1Miw2ICsyMDUyLDIyIEBAIHBhX3JlY29yZF9kZXBlbmRlbmN5X29uX3RyYW5z YWN0aW9ucyhMaXN0ICpkZXBlbmRzX29uX3hpZHMpCiAJfQogfQogCisvKgorICogTWFyayB0aGUg dHJhbnNhY3Rpb24gc3RhdGUgYXMgZmluaXNoZWQgYW5kIHJlbW92ZSB0aGUgc2hhcmVkIGhhc2gg ZW50cnkuCisgKi8KK3ZvaWQKK3BhX2NvbW1pdF90cmFuc2FjdGlvbih2b2lkKQoreworCVRyYW5z YWN0aW9uSWQgeGlkID0gTXlQYXJhbGxlbFNoYXJlZC0+eGlkOworCisJU3BpbkxvY2tBY3F1aXJl KCZNeVBhcmFsbGVsU2hhcmVkLT5tdXRleCk7CisJTXlQYXJhbGxlbFNoYXJlZC0+eGFjdF9zdGF0 ZSA9IFBBUkFMTEVMX1RSQU5TX0ZJTklTSEVEOworCVNwaW5Mb2NrUmVsZWFzZSgmTXlQYXJhbGxl bFNoYXJlZC0+bXV0ZXgpOworCisJZHNoYXNoX2RlbGV0ZV9rZXkocGFyYWxsZWxpemVkX3R4bnMs ICZ4aWQpOworCWVsb2coREVCVUcxLCAiZGVwZW5kZWQgeGlkICV1IGNvbW1pdHRlZCIsIHhpZCk7 Cit9CisKIC8qCiAgKiBXYWl0IGZvciB0aGUgZ2l2ZW4gdHJhbnNhY3Rpb24gdG8gZmluaXNoLgog ICovCkBAIC0xODYwLDYgKzIwNzYsMTMgQEAgcGFfd2FpdF9mb3JfZGVwZW5kZWRfdHJhbnNhY3Rp b24oVHJhbnNhY3Rpb25JZCB4aWQpCiB7CiAJZWxvZyhERUJVRzEsICJ3YWl0IGZvciBkZXBlbmRl ZCB4aWQgJXUiLCB4aWQpOwogCisJLyoKKwkgKiBRdWljayBleGl0IGlmIHBhcmFsbGVsaXplZF90 eG5zIGhhcyBub3QgYmVlbiBpbml0aWFsaXplZCB5ZXQuIFRoaXMgY2FuCisJICogaGFwcGVuIHdo ZW4gdGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgYnkgdGhlIGxlYWRlciB3b3JrZXIuCisJICovCisJ aWYgKCFwYXJhbGxlbGl6ZWRfdHhucykKKwkJcmV0dXJuOworCiAJZm9yICg7OykKIAl7CiAJCVBh cmFsbGVsaXplZFR4bkVudHJ5ICp0eG5fZW50cnk7CkBAIC0xODgwLDMgKzIxMDMsNDUgQEAgcGFf d2FpdF9mb3JfZGVwZW5kZWRfdHJhbnNhY3Rpb24oVHJhbnNhY3Rpb25JZCB4aWQpCiAKIAllbG9n KERFQlVHMSwgImZpbmlzaCB3YWl0aW5nIGZvciBkZXBlbmRlZCB4aWQgJXUiLCB4aWQpOwogfQor CisvKgorICogV3JpdGUgaW50ZXJuYWwgcmVsYXRpb24gZGVzY3JpcHRpb24gdG8gdGhlIG91dHB1 dCBzdHJlYW0uCisgKi8KK3N0YXRpYyB2b2lkCit3cml0ZV9pbnRlcm5hbF9yZWxhdGlvbihTdHJp bmdJbmZvIHMsIExvZ2ljYWxSZXBSZWxhdGlvbiAqcmVsKQoreworCXBxX3NlbmRieXRlKHMsIFBB UkFMTEVMX0FQUExZX0lOVEVSTkFMX01FU1NBR0UpOworCXBxX3NlbmRieXRlKHMsIExPR0lDQUxf UkVQX01TR19JTlRFUk5BTF9SRUxBVElPTik7CisKKwlpZiAocmVsKQorCXsKKwkJcHFfc2VuZGlu dChzLCAxLCA0KTsKKwkJbG9naWNhbHJlcF93cml0ZV9pbnRlcm5hbF9yZWwocywgcmVsKTsKKwl9 CisJZWxzZQorCXsKKwkJcHFfc2VuZGludChzLCBsb2dpY2FscmVwX2dldF9udW1fcmVscygpLCA0 KTsKKwkJbG9naWNhbHJlcF93cml0ZV9hbGxfcmVscyhzKTsKKwl9Cit9CisKKy8qCisgKiBSZWdp c3RlciBhIHRyYW5zYWN0aW9uIHRvIHRoZSBzaGFyZWQgaGFzaCB0YWJsZS4KKyAqCisgKiBUaGlz IGZ1bmN0aW9uIGlzIGludGVuZGVkIHRvIGJlIGNhbGxlZCBkdXJpbmcgdGhlIGNvbW1pdCBwaGFz ZSBvZgorICogbm9uLXN0cmVhbWVkIHRyYW5zYWN0aW9ucy4gT3RoZXIgcGFyYWxsZWwgd29ya2Vy cyB3b3VsZCB3YWl0LAorICogcmVtb3ZpbmcgdGhlIGFkZGVkIGVudHJ5LgorICovCit2b2lkCitw YV9hZGRfcGFyYWxsZWxpemVkX3RyYW5zYWN0aW9uKFRyYW5zYWN0aW9uSWQgeGlkKQoreworCWJv b2wJCWZvdW5kOworCVBhcmFsbGVsaXplZFR4bkVudHJ5ICp0eG5fZW50cnk7CisKKwlBc3NlcnQo cGFyYWxsZWxpemVkX3R4bnMpOworCUFzc2VydChUcmFuc2FjdGlvbklkSXNWYWxpZCh4aWQpKTsK KworCXR4bl9lbnRyeSA9IGRzaGFzaF9maW5kX29yX2luc2VydChwYXJhbGxlbGl6ZWRfdHhucywg JnhpZCwgJmZvdW5kKTsKKworCWRzaGFzaF9yZWxlYXNlX2xvY2socGFyYWxsZWxpemVkX3R4bnMs IHR4bl9lbnRyeSk7Cit9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dp Y2FsL3Byb3RvLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Byb3RvLmMKaW5k ZXggZGVkNDZjNDlhODMuLjk2YjZhNzQwNTVlIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBs aWNhdGlvbi9sb2dpY2FsL3Byb3RvLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9n aWNhbC9wcm90by5jCkBAIC02OTEsNiArNjkxLDQ0IEBAIGxvZ2ljYWxyZXBfd3JpdGVfcmVsKFN0 cmluZ0luZm8gb3V0LCBUcmFuc2FjdGlvbklkIHhpZCwgUmVsYXRpb24gcmVsLAogCWxvZ2ljYWxy ZXBfd3JpdGVfYXR0cnMob3V0LCByZWwsIGNvbHVtbnMsIGluY2x1ZGVfZ2VuY29sc190eXBlKTsK IH0KIAorLyoKKyAqIFdyaXRlIGludGVybmFsIHJlbGF0aW9uIGRlc2NyaXB0aW9uIHRvIHRoZSBv dXRwdXQgc3RyZWFtLgorICovCit2b2lkCitsb2dpY2FscmVwX3dyaXRlX2ludGVybmFsX3JlbChT dHJpbmdJbmZvIG91dCwgTG9naWNhbFJlcFJlbGF0aW9uICpyZWwpCit7CisJcHFfc2VuZGludDMy KG91dCwgcmVsLT5yZW1vdGVpZCk7CisKKwkvKiBXcml0ZSByZWxhdGlvbiBuYW1lICovCisJcHFf c2VuZHN0cmluZyhvdXQsIHJlbC0+bnNwbmFtZSk7CisJcHFfc2VuZHN0cmluZyhvdXQsIHJlbC0+ cmVsbmFtZSk7CisKKwkvKiBXcml0ZSB0aGUgcmVwbGljYSBpZGVudGl0eS4gKi8KKwlwcV9zZW5k Ynl0ZShvdXQsIHJlbC0+cmVwbGlkZW50KTsKKworCS8qIFdyaXRlIGF0dHJpYnV0ZSBkZXNjcmlw dGlvbiAqLworCXBxX3NlbmRpbnQxNihvdXQsIHJlbC0+bmF0dHMpOworCisJZm9yIChpbnQgaSA9 IDA7IGkgPCByZWwtPm5hdHRzOyBpKyspCisJeworCQl1aW50OAkJZmxhZ3MgPSAwOworCisJCWlm IChibXNfaXNfbWVtYmVyKGksIHJlbC0+YXR0a2V5cykpCisJCQlmbGFncyB8PSBMT0dJQ0FMUkVQ X0lTX1JFUExJQ0FfSURFTlRJVFk7CisKKwkJcHFfc2VuZGJ5dGUob3V0LCBmbGFncyk7CisKKwkJ LyogYXR0cmlidXRlIG5hbWUgKi8KKwkJcHFfc2VuZHN0cmluZyhvdXQsIHJlbC0+YXR0bmFtZXNb aV0pOworCisJCS8qIGF0dHJpYnV0ZSB0eXBlIGlkICovCisJCXBxX3NlbmRpbnQzMihvdXQsIHJl bC0+YXR0dHlwc1tpXSk7CisKKwkJLyogaWdub3JlIGF0dHJpYnV0ZSBtb2RlIGZvciBub3cgKi8K KwkJcHFfc2VuZGludDMyKG91dCwgMCk7CisJfQorfQorCiAvKgogICogUmVhZCB0aGUgcmVsYXRp b24gaW5mbyBmcm9tIHN0cmVhbSBhbmQgcmV0dXJuIGFzIExvZ2ljYWxSZXBSZWxhdGlvbi4KICAq LwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9yZWxhdGlvbi5j IGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9yZWxhdGlvbi5jCmluZGV4IDEzZjhj Yjc0ZTlmLi45OTkxYmZlNzZjYyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24v bG9naWNhbC9yZWxhdGlvbi5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwv cmVsYXRpb24uYwpAQCAtOTYwLDYgKzk2MCwzNyBAQCBGaW5kTG9naWNhbFJlcExvY2FsSW5kZXgo UmVsYXRpb24gbG9jYWxyZWwsIExvZ2ljYWxSZXBSZWxhdGlvbiAqcmVtb3RlcmVsLAogCXJldHVy biBJbnZhbGlkT2lkOwogfQogCisvKgorICogR2V0IHRoZSBudW1iZXIgb2YgZW50cmllcyBpbiB0 aGUgTG9naWNhbFJlcFJlbE1hcC4KKyAqLworaW50Citsb2dpY2FscmVwX2dldF9udW1fcmVscyh2 b2lkKQoreworCWlmIChMb2dpY2FsUmVwUmVsTWFwID09IE5VTEwpCisJCXJldHVybiAwOworCisJ cmV0dXJuIGhhc2hfZ2V0X251bV9lbnRyaWVzKExvZ2ljYWxSZXBSZWxNYXApOworfQorCisvKgor ICogV3JpdGUgYWxsIHRoZSByZW1vdGUgcmVsYXRpb24gaW5mb3JtYXRpb24gZnJvbSB0aGUgTG9n aWNhbFJlcFJlbE1hcEVudHJ5IHRvCisgKiB0aGUgb3V0cHV0IHN0cmVhbS4KKyAqLwordm9pZAor bG9naWNhbHJlcF93cml0ZV9hbGxfcmVscyhTdHJpbmdJbmZvIG91dCkKK3sKKwlMb2dpY2FsUmVw UmVsTWFwRW50cnkgKmVudHJ5OworCUhBU0hfU0VRX1NUQVRVUyBzdGF0dXM7CisKKwlpZiAoTG9n aWNhbFJlcFJlbE1hcCA9PSBOVUxMKQorCQlyZXR1cm47CisKKwloYXNoX3NlcV9pbml0KCZzdGF0 dXMsIExvZ2ljYWxSZXBSZWxNYXApOworCisJd2hpbGUgKChlbnRyeSA9IChMb2dpY2FsUmVwUmVs TWFwRW50cnkgKikgaGFzaF9zZXFfc2VhcmNoKCZzdGF0dXMpKSAhPSBOVUxMKQorCQlsb2dpY2Fs cmVwX3dyaXRlX2ludGVybmFsX3JlbChvdXQsICZlbnRyeS0+cmVtb3RlcmVsKTsKK30KKwogLyoK ICAqIEdldCB0aGUgTG9naWNhbFJlcFJlbE1hcEVudHJ5IGNvcnJlc3BvbmRpbmcgdG8gdGhlIGdp dmVuIHJlbGlkIHdpdGhvdXQKICAqIG9wZW5pbmcgdGhlIGxvY2FsIHJlbGF0aW9uLgpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYyBiL3NyYy9iYWNr ZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMKaW5kZXggMGIxZWVlZmU5YzkuLjM4MzI0 ODE2NDdlIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtl ci5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMKQEAgLTI4 Niw2ICsyODYsNyBAQAogI2luY2x1ZGUgInRjb3AvdGNvcHByb3QuaCIKICNpbmNsdWRlICJ1dGls cy9hY2wuaCIKICNpbmNsdWRlICJ1dGlscy9ndWMuaCIKKyNpbmNsdWRlICJ1dGlscy9pbmplY3Rp b25fcG9pbnQuaCIKICNpbmNsdWRlICJ1dGlscy9pbnZhbC5oIgogI2luY2x1ZGUgInV0aWxzL2xz eXNjYWNoZS5oIgogI2luY2x1ZGUgInV0aWxzL21lbXV0aWxzLmgiCkBAIC00ODQsNiArNDg1LDgg QEAgc3RhdGljIExpc3QgKm9uX2NvbW1pdF93YWtldXBfd29ya2Vyc19zdWJpZHMgPSBOSUw7CiAK IGJvb2wJCWluX3JlbW90ZV90cmFuc2FjdGlvbiA9IGZhbHNlOwogc3RhdGljIFhMb2dSZWNQdHIg cmVtb3RlX2ZpbmFsX2xzbiA9IEludmFsaWRYTG9nUmVjUHRyOworc3RhdGljIFRyYW5zYWN0aW9u SWQgcmVtb3RlX3hpZCA9IEludmFsaWRUcmFuc2FjdGlvbklkOworc3RhdGljIFRyYW5zYWN0aW9u SWQgbGFzdF9yZW1vdGVfeGlkID0gSW52YWxpZFRyYW5zYWN0aW9uSWQ7CiAKIC8qIGZpZWxkcyB2 YWxpZCBvbmx5IHdoZW4gcHJvY2Vzc2luZyBzdHJlYW1lZCB0cmFuc2FjdGlvbiAqLwogc3RhdGlj IGJvb2wgaW5fc3RyZWFtZWRfdHJhbnNhY3Rpb24gPSBmYWxzZTsKQEAgLTYwMiwxMSArNjA1LDcg QEAgc3RhdGljIGlubGluZSB2b2lkIGNsZWFudXBfc3VieGFjdF9pbmZvKHZvaWQpOwogLyoKICAq IFNlcmlhbGl6ZSBhbmQgZGVzZXJpYWxpemUgY2hhbmdlcyBmb3IgYSB0b3BsZXZlbCB0cmFuc2Fj dGlvbi4KICAqLwotc3RhdGljIHZvaWQgc3RyZWFtX29wZW5fZmlsZShPaWQgc3ViaWQsIFRyYW5z YWN0aW9uSWQgeGlkLAotCQkJCQkJCSBib29sIGZpcnN0X3NlZ21lbnQpOwogc3RhdGljIHZvaWQg c3RyZWFtX3dyaXRlX2NoYW5nZShjaGFyIGFjdGlvbiwgU3RyaW5nSW5mbyBzKTsKLXN0YXRpYyB2 b2lkIHN0cmVhbV9vcGVuX2FuZF93cml0ZV9jaGFuZ2UoVHJhbnNhY3Rpb25JZCB4aWQsIGNoYXIg YWN0aW9uLCBTdHJpbmdJbmZvIHMpOwotc3RhdGljIHZvaWQgc3RyZWFtX2Nsb3NlX2ZpbGUodm9p ZCk7CiAKIHN0YXRpYyB2b2lkIHNlbmRfZmVlZGJhY2soWExvZ1JlY1B0ciByZWN2cG9zLCBib29s IGZvcmNlLCBib29sIHJlcXVlc3RSZXBseSk7CiAKQEAgLTY3Niw2ICs2NzUsOCBAQCBzdGF0aWMg dm9pZCByZXBsb3JpZ2luX3Jlc2V0KGludCBjb2RlLCBEYXR1bSBhcmcpOwogc3RhdGljIGJvb2wg c2VuZF9pbnRlcm5hbF9kZXBlbmRlbmNpZXMoUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKndpbmZv LAogCQkJCQkJCQkJICAgU3RyaW5nSW5mbyBzKTsKIAorc3RhdGljIGJvb2wgYnVpbGRfZGVwZW5k ZW5jeV93aXRoX2xhc3RfY29tbWl0dGVkX3R4bihQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAqd2lu Zm8pOworCiAvKgogICogQ29tcHV0ZSB0aGUgaGFzaCB2YWx1ZSBmb3IgZW50cmllcyBpbiB0aGUg cmVwbGljYV9pZGVudGl0eV90YWJsZS4KICAqLwpAQCAtMTQwNiw3ICsxNDA3LDExIEBAIGhhbmRs ZV9zdHJlYW1lZF90cmFuc2FjdGlvbihMb2dpY2FsUmVwTXNnVHlwZSBhY3Rpb24sIFN0cmluZ0lu Zm8gcykKIAlUcmFuc0FwcGx5QWN0aW9uIGFwcGx5X2FjdGlvbjsKIAlTdHJpbmdJbmZvRGF0YSBv cmlnaW5hbF9tc2c7CiAKLQlhcHBseV9hY3Rpb24gPSBnZXRfdHJhbnNhY3Rpb25fYXBwbHlfYWN0 aW9uKHN0cmVhbV94aWQsICZ3aW5mbyk7CisJQXNzZXJ0KCFpbl9zdHJlYW1lZF90cmFuc2FjdGlv biB8fCBUcmFuc2FjdGlvbklkSXNWYWxpZChzdHJlYW1feGlkKSk7CisKKwlhcHBseV9hY3Rpb24g PSBnZXRfdHJhbnNhY3Rpb25fYXBwbHlfYWN0aW9uKGluX3N0cmVhbWVkX3RyYW5zYWN0aW9uCisJ CQkJCQkJCQkJCQk/IHN0cmVhbV94aWQgOiByZW1vdGVfeGlkLAorCQkJCQkJCQkJCQkJJndpbmZv KTsKIAogCS8qIG5vdCBpbiBzdHJlYW1pbmcgbW9kZSAqLwogCWlmIChhcHBseV9hY3Rpb24gPT0g VFJBTlNfTEVBREVSX0FQUExZKQpAQCAtMTQxNSw4ICsxNDIwLDYgQEAgaGFuZGxlX3N0cmVhbWVk X3RyYW5zYWN0aW9uKExvZ2ljYWxSZXBNc2dUeXBlIGFjdGlvbiwgU3RyaW5nSW5mbyBzKQogCQly ZXR1cm4gZmFsc2U7CiAJfQogCi0JQXNzZXJ0KFRyYW5zYWN0aW9uSWRJc1ZhbGlkKHN0cmVhbV94 aWQpKTsKLQogCS8qCiAJICogVGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlciBuZWVkcyB0aGUgeGlk IGluIHRoaXMgbWVzc2FnZSB0byBkZWNpZGUKIAkgKiB3aGV0aGVyIHRvIGRlZmluZSBhIHNhdmVw b2ludCwgc28gc2F2ZSB0aGUgb3JpZ2luYWwgbWVzc2FnZSB0aGF0IGhhcwpAQCAtMTQyNywxNSAr MTQzMCwyOCBAQCBoYW5kbGVfc3RyZWFtZWRfdHJhbnNhY3Rpb24oTG9naWNhbFJlcE1zZ1R5cGUg YWN0aW9uLCBTdHJpbmdJbmZvIHMpCiAKIAkvKgogCSAqIFdlIHNob3VsZCBoYXZlIHJlY2VpdmVk IFhJRCBvZiB0aGUgc3VieGFjdCBhcyB0aGUgZmlyc3QgcGFydCBvZiB0aGUKLQkgKiBtZXNzYWdl LCBzbyBleHRyYWN0IGl0LgorCSAqIG1lc3NhZ2UgaW4gc3RyZWFtaW5nIHRyYW5zYWN0aW9ucywg c28gZXh0cmFjdCBpdC4KIAkgKi8KLQljdXJyZW50X3hpZCA9IHBxX2dldG1zZ2ludChzLCA0KTsK KwlpZiAoaW5fc3RyZWFtZWRfdHJhbnNhY3Rpb24pCisJCWN1cnJlbnRfeGlkID0gcHFfZ2V0bXNn aW50KHMsIDQpOworCWVsc2UKKwkJY3VycmVudF94aWQgPSByZW1vdGVfeGlkOwogCiAJaWYgKCFU cmFuc2FjdGlvbklkSXNWYWxpZChjdXJyZW50X3hpZCkpCiAJCWVyZXBvcnQoRVJST1IsCiAJCQkJ KGVycmNvZGUoRVJSQ09ERV9QUk9UT0NPTF9WSU9MQVRJT04pLAogCQkJCSBlcnJtc2dfaW50ZXJu YWwoImludmFsaWQgdHJhbnNhY3Rpb24gSUQgaW4gc3RyZWFtZWQgcmVwbGljYXRpb24gdHJhbnNh Y3Rpb24iKSkpOwogCisJaGFuZGxlX2RlcGVuZGVuY3lfb25fY2hhbmdlKGFjdGlvbiwgcywgY3Vy cmVudF94aWQsIHdpbmZvKTsKKworCS8qCisJICogUmUtZmV0Y2ggdGhlIGxhdGVzdCBhcHBseSBh Y3Rpb24gYXMgaXQgbWlnaHQgaGF2ZSBiZWVuIGNoYW5nZWQgZHVyaW5nCisJICogZGVwZW5kZW5j eSBjaGVjay4KKwkgKi8KKwlhcHBseV9hY3Rpb24gPSBnZXRfdHJhbnNhY3Rpb25fYXBwbHlfYWN0 aW9uKGluX3N0cmVhbWVkX3RyYW5zYWN0aW9uCisJCQkJCQkJCQkJCQk/IHN0cmVhbV94aWQgOiBy ZW1vdGVfeGlkLAorCQkJCQkJCQkJCQkJJndpbmZvKTsKKwogCXN3aXRjaCAoYXBwbHlfYWN0aW9u KQogCXsKIAkJY2FzZSBUUkFOU19MRUFERVJfU0VSSUFMSVpFOgpAQCAtMTgzOSwxNyArMTg1NSw3 MSBAQCBzdGF0aWMgdm9pZAogYXBwbHlfaGFuZGxlX2JlZ2luKFN0cmluZ0luZm8gcykKIHsKIAlM b2dpY2FsUmVwQmVnaW5EYXRhIGJlZ2luX2RhdGE7CisJUGFyYWxsZWxBcHBseVdvcmtlckluZm8g KndpbmZvOworCVRyYW5zQXBwbHlBY3Rpb24gYXBwbHlfYWN0aW9uOworCisJLyogU2F2ZSB0aGUg bWVzc2FnZSBiZWZvcmUgaXQgaXMgY29uc3VtZWQuICovCisJU3RyaW5nSW5mb0RhdGEgb3JpZ2lu YWxfbXNnID0gKnM7CiAKIAkvKiBUaGVyZSBtdXN0IG5vdCBiZSBhbiBhY3RpdmUgc3RyZWFtaW5n IHRyYW5zYWN0aW9uLiAqLwogCUFzc2VydCghVHJhbnNhY3Rpb25JZElzVmFsaWQoc3RyZWFtX3hp ZCkpOwogCiAJbG9naWNhbHJlcF9yZWFkX2JlZ2luKHMsICZiZWdpbl9kYXRhKTsKLQlzZXRfYXBw bHlfZXJyb3JfY29udGV4dF94YWN0KGJlZ2luX2RhdGEueGlkLCBiZWdpbl9kYXRhLmZpbmFsX2xz bik7CisKKwlyZW1vdGVfeGlkID0gYmVnaW5fZGF0YS54aWQ7CisKKwlzZXRfYXBwbHlfZXJyb3Jf Y29udGV4dF94YWN0KHJlbW90ZV94aWQsIGJlZ2luX2RhdGEuZmluYWxfbHNuKTsKIAogCXJlbW90 ZV9maW5hbF9sc24gPSBiZWdpbl9kYXRhLmZpbmFsX2xzbjsKIAogCW1heWJlX3N0YXJ0X3NraXBw aW5nX2NoYW5nZXMoYmVnaW5fZGF0YS5maW5hbF9sc24pOwogCisJcGFfYWxsb2NhdGVfd29ya2Vy KHJlbW90ZV94aWQsIGZhbHNlKTsKKworCWFwcGx5X2FjdGlvbiA9IGdldF90cmFuc2FjdGlvbl9h cHBseV9hY3Rpb24ocmVtb3RlX3hpZCwgJndpbmZvKTsKKworCWVsb2coREVCVUcxLCAibmV3IHJl bW90ZV94aWQgJXUiLCByZW1vdGVfeGlkKTsKKwlzd2l0Y2ggKGFwcGx5X2FjdGlvbikKKwl7CisJ CWNhc2UgVFJBTlNfTEVBREVSX0FQUExZOgorCQkJYnJlYWs7CisKKwkJY2FzZSBUUkFOU19MRUFE RVJfU0VORF9UT19QQVJBTExFTDoKKwkJCUFzc2VydCh3aW5mbyk7CisKKwkJCWlmIChwYV9zZW5k X2RhdGEod2luZm8sIHMtPmxlbiwgcy0+ZGF0YSkpCisJCQl7CisJCQkJcGFfc2V0X3N0cmVhbV9h cHBseV93b3JrZXIod2luZm8pOworCQkJCWJyZWFrOworCQkJfQorCisJCQkvKgorCQkJICogU3dp dGNoIHRvIHNlcmlhbGl6ZSBtb2RlIHdoZW4gd2UgYXJlIG5vdCBhYmxlIHRvIHNlbmQgdGhlCisJ CQkgKiBjaGFuZ2UgdG8gcGFyYWxsZWwgYXBwbHkgd29ya2VyLgorCQkJICovCisJCQlwYV9zd2l0 Y2hfdG9fcGFydGlhbF9zZXJpYWxpemUod2luZm8sIHRydWUpOworCisvKiBmYWxsIHRocm91Z2gg Ki8KKwkJY2FzZSBUUkFOU19MRUFERVJfUEFSVElBTF9TRVJJQUxJWkU6CisJCQlBc3NlcnQod2lu Zm8pOworCisJCQlzdHJlYW1fd3JpdGVfY2hhbmdlKExPR0lDQUxfUkVQX01TR19CRUdJTiwgJm9y aWdpbmFsX21zZyk7CisKKwkJCS8qIENhY2hlIHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgZm9y IHRoaXMgdHJhbnNhY3Rpb24uICovCisJCQlwYV9zZXRfc3RyZWFtX2FwcGx5X3dvcmtlcih3aW5m byk7CisJCQlicmVhazsKKworCQljYXNlIFRSQU5TX1BBUkFMTEVMX0FQUExZOgorCQkJLyogSG9s ZCB0aGUgbG9jayB1bnRpbCB0aGUgZW5kIG9mIHRoZSB0cmFuc2FjdGlvbi4gKi8KKwkJCXBhX2xv Y2tfdHJhbnNhY3Rpb24oTXlQYXJhbGxlbFNoYXJlZC0+eGlkLCBBY2Nlc3NFeGNsdXNpdmVMb2Nr KTsKKwkJCXBhX3NldF94YWN0X3N0YXRlKE15UGFyYWxsZWxTaGFyZWQsIFBBUkFMTEVMX1RSQU5T X1NUQVJURUQpOworCQkJYnJlYWs7CisKKwkJZGVmYXVsdDoKKwkJCWVsb2coRVJST1IsICJ1bmV4 cGVjdGVkIGFwcGx5IGFjdGlvbjogJWQiLCAoaW50KSBhcHBseV9hY3Rpb24pOworCQkJYnJlYWs7 CisJfQorCiAJaW5fcmVtb3RlX3RyYW5zYWN0aW9uID0gdHJ1ZTsKIAogCXBnc3RhdF9yZXBvcnRf YWN0aXZpdHkoU1RBVEVfUlVOTklORywgTlVMTCk7CkBAIC0xODgyLDYgKzE5NTIsMzcgQEAgc2Vu ZF9pbnRlcm5hbF9kZXBlbmRlbmNpZXMoUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKndpbmZvLCBT dHJpbmdJbmZvIHMpCiAJcmV0dXJuIGZhbHNlOwogfQogCisvKgorICogTWFrZSBhIGRlcGVuZGVu Y3kgYmV0d2VlbiB0aGlzIGFuZCB0aGUgbGFzdGx5IGNvbW1pdHRlZCB0cmFuc2FjdGlvbi4KKyAq CisgKiBUaGlzIGZ1bmN0aW9uIGVuc3VyZXMgdGhhdCB0aGUgY29tbWl0IG9yZGVyaW5nIGhhbmRs ZWQgYnkgcGFyYWxsZWwgYXBwbHkKKyAqIHdvcmtlcnMgaXMgcHJlc2VydmVkLiBSZXR1cm5zIGZh bHNlIGlmIHdlIHN3aXRjaGVkIHRvIHRoZSBzZXJpYWxpemUgbW9kZSB0bworICogc2VuZCB0aGUg bWFzc2FnZSwgdHJ1ZSBvdGhlcndpc2UuCisgKi8KK3N0YXRpYyBib29sCitidWlsZF9kZXBlbmRl bmN5X3dpdGhfbGFzdF9jb21taXR0ZWRfdHhuKFBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICp3aW5m bykKK3sKKwlTdHJpbmdJbmZvRGF0YSBkZXBlbmRlbmN5X21zZzsKKwlib29sCQlyZXQ7CisKKwkv KiBTa2lwIGlmIHRyYW5zYWN0aW9ucyBoYXZlIG5vdCBiZWVuIGFwcGxpZWQgeWV0ICovCisJaWYg KCFUcmFuc2FjdGlvbklkSXNWYWxpZChsYXN0X3JlbW90ZV94aWQpKQorCQlyZXR1cm4gdHJ1ZTsK KworCS8qIEJ1aWxkIHRoZSBkZXBlbmRlbmN5IG1lc3NhZ2UgdXNlZCB0byBzZW5kIHRvIHBhcmFs bGVsIGFwcGx5IHdvcmtlciAqLworCWluaXRTdHJpbmdJbmZvKCZkZXBlbmRlbmN5X21zZyk7CisK KwlwcV9zZW5kYnl0ZSgmZGVwZW5kZW5jeV9tc2csIFBBUkFMTEVMX0FQUExZX0lOVEVSTkFMX01F U1NBR0UpOworCXBxX3NlbmRieXRlKCZkZXBlbmRlbmN5X21zZywgTE9HSUNBTF9SRVBfTVNHX0lO VEVSTkFMX0RFUEVOREVOQ1kpOworCXBxX3NlbmRpbnQzMigmZGVwZW5kZW5jeV9tc2csIDEpOwor CXBxX3NlbmRpbnQzMigmZGVwZW5kZW5jeV9tc2csIGxhc3RfcmVtb3RlX3hpZCk7CisKKwlyZXQg PSBzZW5kX2ludGVybmFsX2RlcGVuZGVuY2llcyh3aW5mbywgJmRlcGVuZGVuY3lfbXNnKTsKKwor CXBmcmVlKGRlcGVuZGVuY3lfbXNnLmRhdGEpOworCXJldHVybiByZXQ7Cit9CisKIC8qCiAgKiBI YW5kbGUgQ09NTUlUIG1lc3NhZ2UuCiAgKgpAQCAtMTg5MSw2ICsxOTkyLDExIEBAIHN0YXRpYyB2 b2lkCiBhcHBseV9oYW5kbGVfY29tbWl0KFN0cmluZ0luZm8gcykKIHsKIAlMb2dpY2FsUmVwQ29t bWl0RGF0YSBjb21taXRfZGF0YTsKKwlQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAqd2luZm87CisJ VHJhbnNBcHBseUFjdGlvbiBhcHBseV9hY3Rpb247CisKKwkvKiBTYXZlIHRoZSBtZXNzYWdlIGJl Zm9yZSBpdCBpcyBjb25zdW1lZC4gKi8KKwlTdHJpbmdJbmZvRGF0YSBvcmlnaW5hbF9tc2cgPSAq czsKIAogCWxvZ2ljYWxyZXBfcmVhZF9jb21taXQocywgJmNvbW1pdF9kYXRhKTsKIApAQCAtMTkw MSw3ICsyMDA3LDk3IEBAIGFwcGx5X2hhbmRsZV9jb21taXQoU3RyaW5nSW5mbyBzKQogCQkJCQkJ CQkgTFNOX0ZPUk1BVF9BUkdTKGNvbW1pdF9kYXRhLmNvbW1pdF9sc24pLAogCQkJCQkJCQkgTFNO X0ZPUk1BVF9BUkdTKHJlbW90ZV9maW5hbF9sc24pKSkpOwogCi0JYXBwbHlfaGFuZGxlX2NvbW1p dF9pbnRlcm5hbCgmY29tbWl0X2RhdGEpOworCWFwcGx5X2FjdGlvbiA9IGdldF90cmFuc2FjdGlv bl9hcHBseV9hY3Rpb24ocmVtb3RlX3hpZCwgJndpbmZvKTsKKworCXN3aXRjaCAoYXBwbHlfYWN0 aW9uKQorCXsKKwkJY2FzZSBUUkFOU19MRUFERVJfQVBQTFk6CisJCQkvKgorCQkJICogQXBhcnQg ZnJvbSBwYXJhbGxlbGl6ZWQgdHJhbnNhY3Rpb25zLCB3ZSBkbyBub3QgaGF2ZSB0byByZWdpc3Rl cgorCQkJICogdGhpcyB0cmFuc2FjdGlvbiB0byBwYXJhbGxlbGl6ZWRfdHhucy4gVGhlIGNvbW1p dCBvcmRlcmluZyBpcworCQkJICogYWx3YXlzIHByZXNlcnZlZC4KKwkJCSAqLworCisJCQkvKiBX YWl0IHVudGlsIHRoZSBsYXN0IHRyYW5zYWN0aW9uIGZpbmlzaGVzICovCisJCQlpZiAoVHJhbnNh Y3Rpb25JZElzVmFsaWQobGFzdF9yZW1vdGVfeGlkKSkKKwkJCQlwYV93YWl0X2Zvcl9kZXBlbmRl ZF90cmFuc2FjdGlvbihsYXN0X3JlbW90ZV94aWQpOworCisJCQlhcHBseV9oYW5kbGVfY29tbWl0 X2ludGVybmFsKCZjb21taXRfZGF0YSk7CisKKwkJCWJyZWFrOworCisJCWNhc2UgVFJBTlNfTEVB REVSX1NFTkRfVE9fUEFSQUxMRUw6CisJCQlBc3NlcnQod2luZm8pOworCisJCQkvKgorCQkJICog TWFyayB0aGlzIHRyYW5zYWN0aW9uIGFzIHBhcmFsbGVsaXplZC4gVGhpcyBlbnN1cmVzIHRoYXQK KwkJCSAqIHVwY29taW5nIHRyYW5zYWN0aW9ucyB3YWl0IHVudGlsIHRoaXMgdHJhbnNhY3Rpb24g aXMgY29tbWl0dGVkLgorCQkJICovCisJCQlwYV9hZGRfcGFyYWxsZWxpemVkX3RyYW5zYWN0aW9u KHJlbW90ZV94aWQpOworCisJCQkvKgorCQkJICogQnVpbGQgYSBkZXBlbmRlbmN5IGJldHdlZW4g dGhpcyB0cmFuc2FjdGlvbiBhbmQgdGhlIGxhc3RseQorCQkJICogY29tbWl0dGVkIHRyYW5zYWN0 aW9uIHRvIHByZXNlcnZlIHRoZSBjb21taXQgb3JkZXIuIFRoZW4gdHJ5IHRvCisJCQkgKiBzZW5k IGEgQ09NTUlUIG1lc3NhZ2UgaWYgc3VjY2VlZGVkLgorCQkJICovCisJCQlpZiAoYnVpbGRfZGVw ZW5kZW5jeV93aXRoX2xhc3RfY29tbWl0dGVkX3R4bih3aW5mbykgJiYKKwkJCQlwYV9zZW5kX2Rh dGEod2luZm8sIHMtPmxlbiwgcy0+ZGF0YSkpCisJCQl7CisJCQkJLyogRmluaXNoIHByb2Nlc3Np bmcgdGhlIHRyYW5zYWN0aW9uLiAqLworCQkJCXBhX3hhY3RfZmluaXNoKHdpbmZvLCBjb21taXRf ZGF0YS5lbmRfbHNuKTsKKwkJCQlicmVhazsKKwkJCX0KKworCQkJLyoKKwkJCSAqIFN3aXRjaCB0 byBzZXJpYWxpemUgbW9kZSB3aGVuIHdlIGFyZSBub3QgYWJsZSB0byBzZW5kIHRoZQorCQkJICog Y2hhbmdlIHRvIHBhcmFsbGVsIGFwcGx5IHdvcmtlci4KKwkJCSAqLworCQkJcGFfc3dpdGNoX3Rv X3BhcnRpYWxfc2VyaWFsaXplKHdpbmZvLCB0cnVlKTsKKy8qIGZhbGwgdGhyb3VnaCAqLworCQlj YXNlIFRSQU5TX0xFQURFUl9QQVJUSUFMX1NFUklBTElaRToKKwkJCUFzc2VydCh3aW5mbyk7CisK KwkJCXN0cmVhbV9vcGVuX2FuZF93cml0ZV9jaGFuZ2UocmVtb3RlX3hpZCwgTE9HSUNBTF9SRVBf TVNHX0NPTU1JVCwKKwkJCQkJCQkJCQkgJm9yaWdpbmFsX21zZyk7CisKKwkJCXBhX3NldF9maWxl c2V0X3N0YXRlKHdpbmZvLT5zaGFyZWQsIEZTX1NFUklBTElaRV9ET05FKTsKKworCQkJLyogRmlu aXNoIHByb2Nlc3NpbmcgdGhlIHRyYW5zYWN0aW9uLiAqLworCQkJcGFfeGFjdF9maW5pc2god2lu Zm8sIGNvbW1pdF9kYXRhLmVuZF9sc24pOworCQkJYnJlYWs7CisKKwkJY2FzZSBUUkFOU19QQVJB TExFTF9BUFBMWToKKworCQkJLyoKKwkJCSAqIElmIHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIg aXMgYXBwbHlpbmcgc3Bvb2xlZCBtZXNzYWdlcyB0aGVuCisJCQkgKiBjbG9zZSB0aGUgZmlsZSBi ZWZvcmUgY29tbWl0dGluZy4KKwkJCSAqLworCQkJaWYgKHN0cmVhbV9mZCkKKwkJCQlzdHJlYW1f Y2xvc2VfZmlsZSgpOworCisJCQlJTkpFQ1RJT05fUE9JTlQoInBhcmFsbGVsLXdvcmtlci1iZWZv cmUtY29tbWl0IiwgTlVMTCk7CisKKwkJCWFwcGx5X2hhbmRsZV9jb21taXRfaW50ZXJuYWwoJmNv bW1pdF9kYXRhKTsKKworCQkJTXlQYXJhbGxlbFNoYXJlZC0+bGFzdF9jb21taXRfZW5kID0gWGFj dExhc3RDb21taXRFbmQ7CisKKwkJCXBhX2NvbW1pdF90cmFuc2FjdGlvbigpOworCisJCQlwYV91 bmxvY2tfdHJhbnNhY3Rpb24ocmVtb3RlX3hpZCwgQWNjZXNzRXhjbHVzaXZlTG9jayk7CisJCQli cmVhazsKKworCQlkZWZhdWx0OgorCQkJZWxvZyhFUlJPUiwgInVuZXhwZWN0ZWQgYXBwbHkgYWN0 aW9uOiAlZCIsIChpbnQpIGFwcGx5X2FjdGlvbik7CisJCQlicmVhazsKKwl9CisKKwkvKiBDYWNo ZSB0aGUgcmVtb3RlX3hpZCAqLworCWxhc3RfcmVtb3RlX3hpZCA9IHJlbW90ZV94aWQ7CisKKwly ZW1vdGVfeGlkID0gSW52YWxpZFRyYW5zYWN0aW9uSWQ7CisJaW5fcmVtb3RlX3RyYW5zYWN0aW9u ID0gZmFsc2U7CisKKwllbG9nKERFQlVHMSwgInJlc2V0IHJlbW90ZV94aWQgJXUiLCByZW1vdGVf eGlkKTsKIAogCS8qCiAJICogUHJvY2VzcyBhbnkgdGFibGVzIHRoYXQgYXJlIGJlaW5nIHN5bmNo cm9uaXplZCBpbiBwYXJhbGxlbCwgYXMgd2VsbCBhcwpAQCAtMjAyNCw3ICsyMjIwLDggQEAgYXBw bHlfaGFuZGxlX3ByZXBhcmUoU3RyaW5nSW5mbyBzKQogCSAqIFhhY3RMYXN0Q29tbWl0RW5kLCBh bmQgYWRkaW5nIGl0IGZvciB0aGlzIHB1cnBvc2UgZG9lc24ndCBzZWVtcyB3b3J0aAogCSAqIGl0 LgogCSAqLwotCXN0b3JlX2ZsdXNoX3Bvc2l0aW9uKHByZXBhcmVfZGF0YS5lbmRfbHNuLCBJbnZh bGlkWExvZ1JlY1B0cik7CisJc3RvcmVfZmx1c2hfcG9zaXRpb24ocHJlcGFyZV9kYXRhLmVuZF9s c24sIEludmFsaWRYTG9nUmVjUHRyLAorCQkJCQkJIEludmFsaWRUcmFuc2FjdGlvbklkKTsKIAog CWluX3JlbW90ZV90cmFuc2FjdGlvbiA9IGZhbHNlOwogCkBAIC0yMDg0LDcgKzIyODEsOCBAQCBh cHBseV9oYW5kbGVfY29tbWl0X3ByZXBhcmVkKFN0cmluZ0luZm8gcykKIAlDb21taXRUcmFuc2Fj dGlvbkNvbW1hbmQoKTsKIAlwZ3N0YXRfcmVwb3J0X3N0YXQoZmFsc2UpOwogCi0Jc3RvcmVfZmx1 c2hfcG9zaXRpb24ocHJlcGFyZV9kYXRhLmVuZF9sc24sIFhhY3RMYXN0Q29tbWl0RW5kKTsKKwlz dG9yZV9mbHVzaF9wb3NpdGlvbihwcmVwYXJlX2RhdGEuZW5kX2xzbiwgWGFjdExhc3RDb21taXRF bmQsCisJCQkJCQkgSW52YWxpZFRyYW5zYWN0aW9uSWQpOwogCWluX3JlbW90ZV90cmFuc2FjdGlv biA9IGZhbHNlOwogCiAJLyoKQEAgLTIxNTMsNyArMjM1MSw4IEBAIGFwcGx5X2hhbmRsZV9yb2xs YmFja19wcmVwYXJlZChTdHJpbmdJbmZvIHMpCiAJICogdHJhbnNhY3Rpb24gYmVjYXVzZSB3ZSBh bHdheXMgZmx1c2ggdGhlIFdBTCByZWNvcmQgZm9yIGl0LiBTZWUKIAkgKiBhcHBseV9oYW5kbGVf cHJlcGFyZS4KIAkgKi8KLQlzdG9yZV9mbHVzaF9wb3NpdGlvbihyb2xsYmFja19kYXRhLnJvbGxi YWNrX2VuZF9sc24sIEludmFsaWRYTG9nUmVjUHRyKTsKKwlzdG9yZV9mbHVzaF9wb3NpdGlvbihy b2xsYmFja19kYXRhLnJvbGxiYWNrX2VuZF9sc24sIEludmFsaWRYTG9nUmVjUHRyLAorCQkJCQkJ IEludmFsaWRUcmFuc2FjdGlvbklkKTsKIAlpbl9yZW1vdGVfdHJhbnNhY3Rpb24gPSBmYWxzZTsK IAogCS8qCkBAIC0yMjE1LDcgKzI0MTQsOCBAQCBhcHBseV9oYW5kbGVfc3RyZWFtX3ByZXBhcmUo U3RyaW5nSW5mbyBzKQogCQkJICogSXQgaXMgb2theSBub3QgdG8gc2V0IHRoZSBsb2NhbF9lbmQg TFNOIGZvciB0aGUgcHJlcGFyZSBiZWNhdXNlCiAJCQkgKiB3ZSBhbHdheXMgZmx1c2ggdGhlIHBy ZXBhcmUgcmVjb3JkLiBTZWUgYXBwbHlfaGFuZGxlX3ByZXBhcmUuCiAJCQkgKi8KLQkJCXN0b3Jl X2ZsdXNoX3Bvc2l0aW9uKHByZXBhcmVfZGF0YS5lbmRfbHNuLCBJbnZhbGlkWExvZ1JlY1B0cik7 CisJCQlzdG9yZV9mbHVzaF9wb3NpdGlvbihwcmVwYXJlX2RhdGEuZW5kX2xzbiwgSW52YWxpZFhM b2dSZWNQdHIsCisJCQkJCQkJCSBJbnZhbGlkVHJhbnNhY3Rpb25JZCk7CiAKIAkJCWluX3JlbW90 ZV90cmFuc2FjdGlvbiA9IGZhbHNlOwogCkBAIC0yNDY3LDYgKzI2NjcsMTEgQEAgYXBwbHlfaGFu ZGxlX3N0cmVhbV9zdGFydChTdHJpbmdJbmZvIHMpCiAJCWNhc2UgVFJBTlNfTEVBREVSX1BBUlRJ QUxfU0VSSUFMSVpFOgogCQkJQXNzZXJ0KHdpbmZvKTsKIAorCQkJLyoKKwkJCSAqIFRPRE8sIHRo ZSBwYSB3b3JrZXIgY291bGQgc3RhcnQgdG8gd2FpdCB0b28gc29vbiB3aGVuCisJCQkgKiBwcm9j ZXNzaW5nIHNvbWUgb2xkIHN0cmVhbSBzdGFydAorCQkJICovCisKIAkJCS8qCiAJCQkgKiBPcGVu IHRoZSBzcG9vbCBmaWxlIHVubGVzcyBpdCB3YXMgYWxyZWFkeSBvcGVuZWQgd2hlbiBzd2l0Y2hp bmcKIAkJCSAqIHRvIHNlcmlhbGl6ZSBtb2RlLiBUaGUgdHJhbnNhY3Rpb24gc3RhcnRlZCBpbgpA QCAtMzE5NCw3ICszMzk5LDggQEAgYXBwbHlfaGFuZGxlX2NvbW1pdF9pbnRlcm5hbChMb2dpY2Fs UmVwQ29tbWl0RGF0YSAqY29tbWl0X2RhdGEpCiAKIAkJcGdzdGF0X3JlcG9ydF9zdGF0KGZhbHNl KTsKIAotCQlzdG9yZV9mbHVzaF9wb3NpdGlvbihjb21taXRfZGF0YS0+ZW5kX2xzbiwgWGFjdExh c3RDb21taXRFbmQpOworCQlzdG9yZV9mbHVzaF9wb3NpdGlvbihjb21taXRfZGF0YS0+ZW5kX2xz biwgWGFjdExhc3RDb21taXRFbmQsCisJCQkJCQkJIEludmFsaWRUcmFuc2FjdGlvbklkKTsKIAl9 CiAJZWxzZQogCXsKQEAgLTMyMjcsNiArMzQzMyw5IEBAIGFwcGx5X2hhbmRsZV9yZWxhdGlvbihT dHJpbmdJbmZvIHMpCiAKIAkvKiBBbHNvIHJlc2V0IGFsbCBlbnRyaWVzIGluIHRoZSBwYXJ0aXRp b24gbWFwIHRoYXQgcmVmZXIgdG8gcmVtb3RlcmVsLiAqLwogCWxvZ2ljYWxyZXBfcGFydG1hcF9y ZXNldF9yZWxtYXAocmVsKTsKKworCWlmIChhbV9sZWFkZXJfYXBwbHlfd29ya2VyKCkpCisJCXBh X2Rpc3RyaWJ1dGVfc2NoZW1hX2NoYW5nZXNfdG9fd29ya2VycyhyZWwpOwogfQogCiAvKgpAQCAt NDAwMSw2ICs0MjEwLDggQEAgRmluZERlbGV0ZWRUdXBsZUluTG9jYWxSZWwoUmVsYXRpb24gbG9j YWxyZWwsIE9pZCBsb2NhbGlkeG9pZCwKIAogLyoKICAqIFRoaXMgaGFuZGxlcyBpbnNlcnQsIHVw ZGF0ZSwgZGVsZXRlIG9uIGEgcGFydGl0aW9uZWQgdGFibGUuCisgKgorICogVE9ETywgc3VwcG9y dCBwYXJhbGxlbCBhcHBseS4KICAqLwogc3RhdGljIHZvaWQKIGFwcGx5X2hhbmRsZV90dXBsZV9y b3V0aW5nKEFwcGx5RXhlY3V0aW9uRGF0YSAqZWRhdGEsCkBAIC00NTUxLDYgKzQ3NjIsMTAgQEAg YXBwbHlfZGlzcGF0Y2goU3RyaW5nSW5mbyBzKQogICogY2hlY2sgd2hpY2ggZW50cmllcyBvbiBp dCBhcmUgYWxyZWFkeSBsb2NhbGx5IGZsdXNoZWQuIFRob3NlIHdlIGNhbiByZXBvcnQKICAqIGFz IGhhdmluZyBiZWVuIGZsdXNoZWQuCiAgKgorICogRm9yIG5vbi1zdHJlYW1pbmcgdHJhbnNhY3Rp b25zIG1hbmFnZWQgYnkgYSBwYXJhbGxlbCBhcHBseSB3b3JrZXIsIHdlIHdpbGwKKyAqIGdldCB0 aGUgbG9jYWwgY29tbWl0IGVuZCBmcm9tIHRoZSBzaGFyZWQgcGFyYWxsZWwgYXBwbHkgd29ya2Vy IGluZm8gb25jZSB0aGUKKyAqIHRyYW5zYWN0aW9uIGhhcyBiZWVuIGNvbW1pdHRlZCBieSB0aGUg d29ya2VyLgorICoKICAqIFRoZSBoYXZlX3BlbmRpbmdfdHhlcyBpcyB0cnVlIGlmIHRoZXJlIGFy ZSBvdXRzdGFuZGluZyB0cmFuc2FjdGlvbnMgdGhhdAogICogbmVlZCB0byBiZSBmbHVzaGVkLgog ICovCkBAIC00NTYwLDYgKzQ3NzUsNyBAQCBnZXRfZmx1c2hfcG9zaXRpb24oWExvZ1JlY1B0ciAq d3JpdGUsIFhMb2dSZWNQdHIgKmZsdXNoLAogewogCWRsaXN0X211dGFibGVfaXRlciBpdGVyOwog CVhMb2dSZWNQdHIJbG9jYWxfZmx1c2ggPSBHZXRGbHVzaFJlY1B0cihOVUxMKTsKKwlMaXN0CSAg ICpjb21taXR0ZWRfcGFfeGlkID0gTklMOwogCiAJKndyaXRlID0gSW52YWxpZFhMb2dSZWNQdHI7 CiAJKmZsdXNoID0gSW52YWxpZFhMb2dSZWNQdHI7CkBAIC00NTY5LDYgKzQ3ODUsMzYgQEAgZ2V0 X2ZsdXNoX3Bvc2l0aW9uKFhMb2dSZWNQdHIgKndyaXRlLCBYTG9nUmVjUHRyICpmbHVzaCwKIAkJ Rmx1c2hQb3NpdGlvbiAqcG9zID0KIAkJCWRsaXN0X2NvbnRhaW5lcihGbHVzaFBvc2l0aW9uLCBu b2RlLCBpdGVyLmN1cik7CiAKKwkJaWYgKFRyYW5zYWN0aW9uSWRJc1ZhbGlkKHBvcy0+cGFfcmVt b3RlX3hpZCkgJiYKKwkJCVhMb2dSZWNQdHJJc0ludmFsaWQocG9zLT5sb2NhbF9lbmQpKQorCQl7 CisJCQlib29sCQlza2lwcGVkX3dyaXRlOworCisJCQlwb3MtPmxvY2FsX2VuZCA9IHBhX2dldF9s YXN0X2NvbW1pdF9lbmQocG9zLT5wYV9yZW1vdGVfeGlkLCB0cnVlLAorCQkJCQkJCQkJCQkJCSZz a2lwcGVkX3dyaXRlKTsKKworCQkJZWxvZyhERUJVRzEsCisJCQkJICJnb3QgY29tbWl0IGVuZCBm cm9tIHBhcmFsbGVsIGFwcGx5IHdvcmtlciwgIgorCQkJCSAidHhuOiAldSwgcmVtb3RlX2VuZCAl WC8lWCwgbG9jYWxfZW5kICVYLyVYIiwKKwkJCQkgcG9zLT5wYV9yZW1vdGVfeGlkLCBMU05fRk9S TUFUX0FSR1MocG9zLT5yZW1vdGVfZW5kKSwKKwkJCQkgTFNOX0ZPUk1BVF9BUkdTKHBvcy0+bG9j YWxfZW5kKSk7CisKKwkJCS8qCisJCQkgKiBCcmVhayB0aGUgbG9vcCBpZiB0aGUgd29ya2VyIGhh cyBub3QgZmluaXNoZWQgYXBwbHlpbmcgdGhlCisJCQkgKiB0cmFuc2FjdGlvbi4gVGhlcmUncyBu byBuZWVkIHRvIGNoZWNrIHN1YnNlcXVlbnQgdHJhbnNhY3Rpb25zLAorCQkJICogYXMgdGhleSBt dXN0IGNvbW1pdCBhZnRlciB0aGUgY3VycmVudCB0cmFuc2FjdGlvbiBiZWluZworCQkJICogZXhh bWluZWQgYW5kIHRodXMgd29uJ3QgaGF2ZSB0aGVpciBjb21taXQgZW5kIGF2YWlsYWJsZSB5ZXQu CisJCQkgKi8KKwkJCWlmICghc2tpcHBlZF93cml0ZSAmJiBYTG9nUmVjUHRySXNJbnZhbGlkKHBv cy0+bG9jYWxfZW5kKSkKKwkJCQlicmVhazsKKworCQkJY29tbWl0dGVkX3BhX3hpZCA9IGxhcHBl bmRfeGlkKGNvbW1pdHRlZF9wYV94aWQsIHBvcy0+cGFfcmVtb3RlX3hpZCk7CisJCX0KKworCQkv KgorCQkgKiBXb3JrZXIgaGFzIGZpbmlzaGVkIGFwcGx5aW5nIG9yIHRoZSB0cmFuc2FjdGlvbiB3 YXMgYXBwbGllZCBpbiB0aGUKKwkJICogbGVhZGVyIGFwcGx5IHdvcmtlcgorCQkgKi8KIAkJKndy aXRlID0gcG9zLT5yZW1vdGVfZW5kOwogCiAJCWlmIChwb3MtPmxvY2FsX2VuZCA8PSBsb2NhbF9m bHVzaCkKQEAgLTQ1NzcsMjkgKzQ4MjMsMTkgQEAgZ2V0X2ZsdXNoX3Bvc2l0aW9uKFhMb2dSZWNQ dHIgKndyaXRlLCBYTG9nUmVjUHRyICpmbHVzaCwKIAkJCWRsaXN0X2RlbGV0ZShpdGVyLmN1cik7 CiAJCQlwZnJlZShwb3MpOwogCQl9Ci0JCWVsc2UKLQkJewotCQkJLyoKLQkJCSAqIERvbid0IHdh bnQgdG8gdXNlbGVzc2x5IGl0ZXJhdGUgb3ZlciB0aGUgcmVzdCBvZiB0aGUgbGlzdCB3aGljaAot CQkJICogY291bGQgcG90ZW50aWFsbHkgYmUgbG9uZy4gSW5zdGVhZCBnZXQgdGhlIGxhc3QgZWxl bWVudCBhbmQKLQkJCSAqIGdyYWIgdGhlIHdyaXRlIHBvc2l0aW9uIGZyb20gdGhlcmUuCi0JCQkg Ki8KLQkJCXBvcyA9IGRsaXN0X3RhaWxfZWxlbWVudChGbHVzaFBvc2l0aW9uLCBub2RlLAotCQkJ CQkJCQkJICZsc25fbWFwcGluZyk7Ci0JCQkqd3JpdGUgPSBwb3MtPnJlbW90ZV9lbmQ7Ci0JCQkq aGF2ZV9wZW5kaW5nX3R4ZXMgPSB0cnVlOwotCQkJcmV0dXJuOwotCQl9CiAJfQogCiAJKmhhdmVf cGVuZGluZ190eGVzID0gIWRsaXN0X2lzX2VtcHR5KCZsc25fbWFwcGluZyk7CisKKwljbGVhbnVw X3JlcGxpY2FfaWRlbnRpdHlfdGFibGUoY29tbWl0dGVkX3BhX3hpZCk7CiB9CiAKIC8qCiAgKiBT dG9yZSBjdXJyZW50IHJlbW90ZS9sb2NhbCBsc24gcGFpciBpbiB0aGUgdHJhY2tpbmcgbGlzdC4K ICAqLwogdm9pZAotc3RvcmVfZmx1c2hfcG9zaXRpb24oWExvZ1JlY1B0ciByZW1vdGVfbHNuLCBY TG9nUmVjUHRyIGxvY2FsX2xzbikKK3N0b3JlX2ZsdXNoX3Bvc2l0aW9uKFhMb2dSZWNQdHIgcmVt b3RlX2xzbiwgWExvZ1JlY1B0ciBsb2NhbF9sc24sCisJCQkJCSBUcmFuc2FjdGlvbklkIHJlbW90 ZV94aWQpCiB7CiAJRmx1c2hQb3NpdGlvbiAqZmx1c2hwb3M7CiAKQEAgLTQ2MTcsNiArNDg1Myw3 IEBAIHN0b3JlX2ZsdXNoX3Bvc2l0aW9uKFhMb2dSZWNQdHIgcmVtb3RlX2xzbiwgWExvZ1JlY1B0 ciBsb2NhbF9sc24pCiAJZmx1c2hwb3MgPSBwYWxsb2Nfb2JqZWN0KEZsdXNoUG9zaXRpb24pOwog CWZsdXNocG9zLT5sb2NhbF9lbmQgPSBsb2NhbF9sc247CiAJZmx1c2hwb3MtPnJlbW90ZV9lbmQg PSByZW1vdGVfbHNuOworCWZsdXNocG9zLT5wYV9yZW1vdGVfeGlkID0gcmVtb3RlX3hpZDsKIAog CWRsaXN0X3B1c2hfdGFpbCgmbHNuX21hcHBpbmcsICZmbHVzaHBvcy0+bm9kZSk7CiAJTWVtb3J5 Q29udGV4dFN3aXRjaFRvKEFwcGx5TWVzc2FnZUNvbnRleHQpOwpAQCAtNjA2NCw3ICs2MzAxLDcg QEAgc3RyZWFtX2NsZWFudXBfZmlsZXMoT2lkIHN1YmlkLCBUcmFuc2FjdGlvbklkIHhpZCkKICAq IGNoYW5nZXMgZm9yIHRoaXMgdHJhbnNhY3Rpb24sIGNyZWF0ZSB0aGUgYnVmZmlsZSwgb3RoZXJ3 aXNlIG9wZW4gdGhlCiAgKiBwcmV2aW91c2x5IGNyZWF0ZWQgZmlsZS4KICAqLwotc3RhdGljIHZv aWQKK3ZvaWQKIHN0cmVhbV9vcGVuX2ZpbGUoT2lkIHN1YmlkLCBUcmFuc2FjdGlvbklkIHhpZCwg Ym9vbCBmaXJzdF9zZWdtZW50KQogewogCWNoYXIJCXBhdGhbTUFYUEdQQVRIXTsKQEAgLTYxMDks NyArNjM0Niw3IEBAIHN0cmVhbV9vcGVuX2ZpbGUoT2lkIHN1YmlkLCBUcmFuc2FjdGlvbklkIHhp ZCwgYm9vbCBmaXJzdF9zZWdtZW50KQogICogc3RyZWFtX2Nsb3NlX2ZpbGUKICAqCSAgQ2xvc2Ug dGhlIGN1cnJlbnRseSBvcGVuIGZpbGUgd2l0aCBzdHJlYW1lZCBjaGFuZ2VzLgogICovCi1zdGF0 aWMgdm9pZAordm9pZAogc3RyZWFtX2Nsb3NlX2ZpbGUodm9pZCkKIHsKIAlBc3NlcnQoc3RyZWFt X2ZkICE9IE5VTEwpOwpAQCAtNjE1Nyw3ICs2Mzk0LDcgQEAgc3RyZWFtX3dyaXRlX2NoYW5nZShj aGFyIGFjdGlvbiwgU3RyaW5nSW5mbyBzKQogICogdGFyZ2V0IGZpbGUgaWYgbm90IGFscmVhZHkg YmVmb3JlIHdyaXRpbmcgdGhlIG1lc3NhZ2UgYW5kIGNsb3NlIHRoZSBmaWxlIGF0CiAgKiB0aGUg ZW5kLgogICovCi1zdGF0aWMgdm9pZAordm9pZAogc3RyZWFtX29wZW5fYW5kX3dyaXRlX2NoYW5n ZShUcmFuc2FjdGlvbklkIHhpZCwgY2hhciBhY3Rpb24sIFN0cmluZ0luZm8gcykKIHsKIAlBc3Nl cnQoIWluX3N0cmVhbWVkX3RyYW5zYWN0aW9uKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3Jl cGxpY2F0aW9uL2xvZ2ljYWxwcm90by5oIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNh bHByb3RvLmgKaW5kZXggNWQ5MWUyYTQyODcuLjdkMmFhZjJkMzg5IDEwMDY0NAotLS0gYS9zcmMv aW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dpY2FscHJvdG8uaAorKysgYi9zcmMvaW5jbHVkZS9yZXBs aWNhdGlvbi9sb2dpY2FscHJvdG8uaApAQCAtMjUzLDYgKzI1Myw4IEBAIGV4dGVybiB2b2lkIGxv Z2ljYWxyZXBfd3JpdGVfbWVzc2FnZShTdHJpbmdJbmZvIG91dCwgVHJhbnNhY3Rpb25JZCB4aWQs IFhMb2dSZWNQCiBleHRlcm4gdm9pZCBsb2dpY2FscmVwX3dyaXRlX3JlbChTdHJpbmdJbmZvIG91 dCwgVHJhbnNhY3Rpb25JZCB4aWQsCiAJCQkJCQkJCSBSZWxhdGlvbiByZWwsIEJpdG1hcHNldCAq Y29sdW1ucywKIAkJCQkJCQkJIFB1Ymxpc2hHZW5jb2xzVHlwZSBpbmNsdWRlX2dlbmNvbHNfdHlw ZSk7CitleHRlcm4gdm9pZCBsb2dpY2FscmVwX3dyaXRlX2ludGVybmFsX3JlbChTdHJpbmdJbmZv IG91dCwKKwkJCQkJCQkJCQkgIExvZ2ljYWxSZXBSZWxhdGlvbiAqcmVsKTsKIGV4dGVybiBMb2dp Y2FsUmVwUmVsYXRpb24gKmxvZ2ljYWxyZXBfcmVhZF9yZWwoU3RyaW5nSW5mbyBpbik7CiBleHRl cm4gdm9pZCBsb2dpY2FscmVwX3dyaXRlX3R5cChTdHJpbmdJbmZvIG91dCwgVHJhbnNhY3Rpb25J ZCB4aWQsCiAJCQkJCQkJCSBPaWQgdHlwb2lkKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3Jl cGxpY2F0aW9uL2xvZ2ljYWxyZWxhdGlvbi5oIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9n aWNhbHJlbGF0aW9uLmgKaW5kZXggNGIzMjFiZDJhZDIuLjM0YTcwNjllOWU1IDEwMDY0NAotLS0g YS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dpY2FscmVsYXRpb24uaAorKysgYi9zcmMvaW5j bHVkZS9yZXBsaWNhdGlvbi9sb2dpY2FscmVsYXRpb24uaApAQCAtNTIsNiArNTIsOCBAQCBleHRl cm4gdm9pZCBsb2dpY2FscmVwX3JlbF9jbG9zZShMb2dpY2FsUmVwUmVsTWFwRW50cnkgKnJlbCwK IAkJCQkJCQkJIExPQ0tNT0RFIGxvY2ttb2RlKTsKIGV4dGVybiBib29sIElzSW5kZXhVc2FibGVG b3JSZXBsaWNhSWRlbnRpdHlGdWxsKFJlbGF0aW9uIGlkeHJlbCwgQXR0ck1hcCAqYXR0cm1hcCk7 CiBleHRlcm4gT2lkCUdldFJlbGF0aW9uSWRlbnRpdHlPclBLKFJlbGF0aW9uIHJlbCk7CitleHRl cm4gaW50CWxvZ2ljYWxyZXBfZ2V0X251bV9yZWxzKHZvaWQpOworZXh0ZXJuIHZvaWQgbG9naWNh bHJlcF93cml0ZV9hbGxfcmVscyhTdHJpbmdJbmZvIG91dCk7CiBleHRlcm4gTG9naWNhbFJlcFJl bE1hcEVudHJ5ICpsb2dpY2FscmVwX2dldF9yZWxlbnRyeShMb2dpY2FsUmVwUmVsSWQgcmVtb3Rl aWQpOwogCiAjZW5kaWYJCQkJCQkJLyogTE9HSUNBTFJFTEFUSU9OX0ggKi8KZGlmZiAtLWdpdCBh L3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dvcmtlcl9pbnRlcm5hbC5oIGIvc3JjL2luY2x1ZGUv cmVwbGljYXRpb24vd29ya2VyX2ludGVybmFsLmgKaW5kZXggNzhiNTY2N2NlYmUuLjUzNzFlZTc2 N2YxIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93b3JrZXJfaW50ZXJuYWwu aAorKysgYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93b3JrZXJfaW50ZXJuYWwuaApAQCAtMzE0 LDYgKzMxNCwxMCBAQCBleHRlcm4gdm9pZCBhcHBseV9kaXNwYXRjaChTdHJpbmdJbmZvIHMpOwog ZXh0ZXJuIHZvaWQgbWF5YmVfcmVyZWFkX3N1YnNjcmlwdGlvbih2b2lkKTsKIAogZXh0ZXJuIHZv aWQgc3RyZWFtX2NsZWFudXBfZmlsZXMoT2lkIHN1YmlkLCBUcmFuc2FjdGlvbklkIHhpZCk7Citl eHRlcm4gdm9pZCBzdHJlYW1fb3Blbl9maWxlKE9pZCBzdWJpZCwgVHJhbnNhY3Rpb25JZCB4aWQs IGJvb2wgZmlyc3Rfc2VnbWVudCk7CitleHRlcm4gdm9pZCBzdHJlYW1fY2xvc2VfZmlsZSh2b2lk KTsKK2V4dGVybiB2b2lkIHN0cmVhbV9vcGVuX2FuZF93cml0ZV9jaGFuZ2UoVHJhbnNhY3Rpb25J ZCB4aWQsIGNoYXIgYWN0aW9uLAorCQkJCQkJCQkJCSBTdHJpbmdJbmZvIHMpOwogCiBleHRlcm4g dm9pZCBzZXRfc3RyZWFtX29wdGlvbnMoV2FsUmN2U3RyZWFtT3B0aW9ucyAqb3B0aW9ucywKIAkJ CQkJCQkgICBjaGFyICpzbG90bmFtZSwKQEAgLTMyNyw3ICszMzEsOCBAQCBleHRlcm4gdm9pZCBT ZXR1cEFwcGx5T3JTeW5jV29ya2VyKGludCB3b3JrZXJfc2xvdCk7CiAKIGV4dGVybiB2b2lkIERp c2FibGVTdWJzY3JpcHRpb25BbmRFeGl0KHZvaWQpOwogCi1leHRlcm4gdm9pZCBzdG9yZV9mbHVz aF9wb3NpdGlvbihYTG9nUmVjUHRyIHJlbW90ZV9sc24sIFhMb2dSZWNQdHIgbG9jYWxfbHNuKTsK K2V4dGVybiB2b2lkIHN0b3JlX2ZsdXNoX3Bvc2l0aW9uKFhMb2dSZWNQdHIgcmVtb3RlX2xzbiwg WExvZ1JlY1B0ciBsb2NhbF9sc24sCisJCQkJCQkJCSBUcmFuc2FjdGlvbklkIHJlbW90ZV94aWQp OwogCiAvKiBGdW5jdGlvbiBmb3IgYXBwbHkgZXJyb3IgY2FsbGJhY2sgKi8KIGV4dGVybiB2b2lk IGFwcGx5X2Vycm9yX2NhbGxiYWNrKHZvaWQgKmFyZyk7CkBAIC0zNDIsNiArMzQ3LDcgQEAgZXh0 ZXJuIHZvaWQgcGFfZGV0YWNoX2FsbF9lcnJvcl9tcSh2b2lkKTsKIAogZXh0ZXJuIGJvb2wgcGFf c2VuZF9kYXRhKFBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICp3aW5mbywgU2l6ZSBuYnl0ZXMsCiAJ CQkJCQkgY29uc3Qgdm9pZCAqZGF0YSk7CitleHRlcm4gdm9pZCBwYV9kaXN0cmlidXRlX3NjaGVt YV9jaGFuZ2VzX3RvX3dvcmtlcnMoTG9naWNhbFJlcFJlbGF0aW9uICpyZWwpOwogZXh0ZXJuIHZv aWQgcGFfc3dpdGNoX3RvX3BhcnRpYWxfc2VyaWFsaXplKFBhcmFsbGVsQXBwbHlXb3JrZXJJbmZv ICp3aW5mbywKIAkJCQkJCQkJCQkgICBib29sIHN0cmVhbV9sb2NrZWQpOwogCkBAIC0zNjgsOCAr Mzc0LDkgQEAgZXh0ZXJuIHZvaWQgcGFfeGFjdF9maW5pc2goUGFyYWxsZWxBcHBseVdvcmtlcklu Zm8gKndpbmZvLAogCQkJCQkJICAgWExvZ1JlY1B0ciByZW1vdGVfbHNuKTsKIGV4dGVybiBib29s IHBhX3RyYW5zYWN0aW9uX2NvbW1pdHRlZChUcmFuc2FjdGlvbklkIHhpZCk7CiBleHRlcm4gdm9p ZCBwYV9yZWNvcmRfZGVwZW5kZW5jeV9vbl90cmFuc2FjdGlvbnMoTGlzdCAqZGVwZW5kc19vbl94 aWRzKTsKLQorZXh0ZXJuIHZvaWQgcGFfY29tbWl0X3RyYW5zYWN0aW9uKHZvaWQpOwogZXh0ZXJu IHZvaWQgcGFfd2FpdF9mb3JfZGVwZW5kZWRfdHJhbnNhY3Rpb24oVHJhbnNhY3Rpb25JZCB4aWQp OworZXh0ZXJuIHZvaWQgcGFfYWRkX3BhcmFsbGVsaXplZF90cmFuc2FjdGlvbihUcmFuc2FjdGlv bklkIHhpZCk7CiAKICNkZWZpbmUgaXNQYXJhbGxlbEFwcGx5V29ya2VyKHdvcmtlcikgKCh3b3Jr ZXIpLT5pbl91c2UgJiYgXAogCQkJCQkJCQkJICAgKHdvcmtlciktPnR5cGUgPT0gV09SS0VSVFlQ RV9QQVJBTExFTF9BUFBMWSkKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi9tZXNv bi5idWlsZCBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi9tZXNvbi5idWlsZAppbmRleCA4NWQxMGE4 OTk5NC4uZTg3N2NhMDljMzAgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi9tZXNv bi5idWlsZAorKysgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vbWVzb24uYnVpbGQKQEAgLTQ2LDYg KzQ2LDcgQEAgdGVzdHMgKz0gewogICAgICAgJ3QvMDM0X3RlbXBvcmFsLnBsJywKICAgICAgICd0 LzAzNV9jb25mbGljdHMucGwnLAogICAgICAgJ3QvMDM2X3NlcXVlbmNlcy5wbCcsCisgICAgICAn dC8wNTBfcGFyYWxsZWxfYXBwbHkucGwnLAogICAgICAgJ3QvMTAwX2J1Z3MucGwnLAogICAgIF0s CiAgIH0sCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMDFfcmVwX2NoYW5n ZXMucGwgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMDFfcmVwX2NoYW5nZXMucGwKaW5kZXgg ZWNiNzllNzk0NzQuLjBjY2VjNTE2YTE4IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9zdWJzY3JpcHRp b24vdC8wMDFfcmVwX2NoYW5nZXMucGwKKysrIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDAx X3JlcF9jaGFuZ2VzLnBsCkBAIC0xNiw2ICsxNiw4IEBAICRub2RlX3B1Ymxpc2hlci0+c3RhcnQ7 CiAjIENyZWF0ZSBzdWJzY3JpYmVyIG5vZGUKIG15ICRub2RlX3N1YnNjcmliZXIgPSBQb3N0Z3Jl U1FMOjpUZXN0OjpDbHVzdGVyLT5uZXcoJ3N1YnNjcmliZXInKTsKICRub2RlX3N1YnNjcmliZXIt PmluaXQ7Ciskbm9kZV9zdWJzY3JpYmVyLT5hcHBlbmRfY29uZigncG9zdGdyZXNxbC5jb25mJywK KwkibWF4X2xvZ2ljYWxfcmVwbGljYXRpb25fd29ya2VycyA9IDEwIik7CiAkbm9kZV9zdWJzY3Jp YmVyLT5zdGFydDsKIAogIyBDcmVhdGUgc29tZSBwcmVleGlzdGluZyBjb250ZW50IG9uIHB1Ymxp c2hlcgpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDEwX3RydW5jYXRlLnBs IGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDEwX3RydW5jYXRlLnBsCmluZGV4IDNkMTZjMmE4 MDBkLi5jMmZiYTBiOWE5YyAxMDA2NDQKLS0tIGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDEw X3RydW5jYXRlLnBsCisrKyBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxMF90cnVuY2F0ZS5w bApAQCAtMTcsNyArMTcsNyBAQCAkbm9kZV9wdWJsaXNoZXItPnN0YXJ0OwogbXkgJG5vZGVfc3Vi c2NyaWJlciA9IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXItPm5ldygnc3Vic2NyaWJlcicpOwog JG5vZGVfc3Vic2NyaWJlci0+aW5pdDsKICRub2RlX3N1YnNjcmliZXItPmFwcGVuZF9jb25mKCdw b3N0Z3Jlc3FsLmNvbmYnLAotCXFxKG1heF9sb2dpY2FsX3JlcGxpY2F0aW9uX3dvcmtlcnMgPSA2 KSk7CisJcXEobWF4X2xvZ2ljYWxfcmVwbGljYXRpb25fd29ya2VycyA9IDcpKTsKICRub2RlX3N1 YnNjcmliZXItPnN0YXJ0OwogCiBteSAkcHVibGlzaGVyX2Nvbm5zdHIgPSAkbm9kZV9wdWJsaXNo ZXItPmNvbm5zdHIgLiAnIGRibmFtZT1wb3N0Z3Jlcyc7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9z dWJzY3JpcHRpb24vdC8wMTVfc3RyZWFtLnBsIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE1 X3N0cmVhbS5wbAppbmRleCAwMzEzNWIxY2Q2ZS4uZTc5ZGRkOWE0MWMgMTAwNjQ0Ci0tLSBhL3Ny Yy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxNV9zdHJlYW0ucGwKKysrIGIvc3JjL3Rlc3Qvc3Vic2Ny aXB0aW9uL3QvMDE1X3N0cmVhbS5wbApAQCAtMjMyLDYgKzIzMiwxMiBAQCAkbm9kZV9zdWJzY3Jp YmVyLT53YWl0X2Zvcl9sb2coCiAKICRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsICJJTlNFUlQgSU5UTyB0ZXN0X3RhYl8yIHZhbHVlcygxKSIpOwogCisjIEZJWE1FOiBDdXJy ZW50bHksIG5vbi1zdHJlYW1pbmcgdHJhbnNhY3Rpb25zIGFyZSBhcHBsaWVkIGluIHBhcmFsbGVs IGJ5CisjIGRlZmF1bHQuIFNvLCB0aGUgZmlyc3QgdHJhbnNhY3Rpb24gaXMgaGFuZGxlZCBieSBh IHBhcmFsbGVsIGFwcGx5IHdvcmtlci4gVG8KKyMgdHJpZ2dlciB0aGUgZGVhZGxvY2ssIGluaXRp YXRlIGFuIG1vcmUgdHJhbnNhY3Rpb24gdG8gYmUgYXBwbGllZCBieSB0aGUKKyMgbGVhZGVyLgor JG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIklOU0VSVCBJTlRPIHRlc3Rf dGFiXzIgdmFsdWVzKDEpIik7CisKICRoLT5xdWVyeV9zYWZlKCdDT01NSVQnKTsKICRoLT5xdWl0 OwogCkBAIC0yNDcsNyArMjUzLDcgQEAgJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVw KCRhcHBuYW1lKTsKIAogJHJlc3VsdCA9CiAgICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgn cG9zdGdyZXMnLCAiU0VMRUNUIGNvdW50KCopIEZST00gdGVzdF90YWJfMiIpOwotaXMoJHJlc3Vs dCwgcXEoNTAwMSksICdkYXRhIHJlcGxpY2F0ZWQgdG8gc3Vic2NyaWJlciBhZnRlciBkcm9wcGlu ZyBpbmRleCcpOworaXMoJHJlc3VsdCwgcXEoNTAwMiksICdkYXRhIHJlcGxpY2F0ZWQgdG8gc3Vi c2NyaWJlciBhZnRlciBkcm9wcGluZyBpbmRleCcpOwogCiAjIENsZWFuIHVwIHRlc3QgZGF0YSBm cm9tIHRoZSBlbnZpcm9ubWVudC4KICRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsICJUUlVOQ0FURSBUQUJMRSB0ZXN0X3RhYl8yIik7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9z dWJzY3JpcHRpb24vdC8wMjZfc3RhdHMucGwgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMjZf c3RhdHMucGwKaW5kZXggYTQzMGFiNGZlZWMuLjU4ZTM0ODM5YWI0IDEwMDY0NAotLS0gYS9zcmMv dGVzdC9zdWJzY3JpcHRpb24vdC8wMjZfc3RhdHMucGwKKysrIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0 aW9uL3QvMDI2X3N0YXRzLnBsCkBAIC0xNiw2ICsxNiw3IEBAICRub2RlX3B1Ymxpc2hlci0+c3Rh cnQ7CiAjIENyZWF0ZSBzdWJzY3JpYmVyIG5vZGUuCiBteSAkbm9kZV9zdWJzY3JpYmVyID0gUG9z dGdyZVNRTDo6VGVzdDo6Q2x1c3Rlci0+bmV3KCdzdWJzY3JpYmVyJyk7CiAkbm9kZV9zdWJzY3Jp YmVyLT5pbml0OworJG5vZGVfc3Vic2NyaWJlci0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29u ZicsICJtYXhfbG9naWNhbF9yZXBsaWNhdGlvbl93b3JrZXJzID0gMTAiKTsKICRub2RlX3N1YnNj cmliZXItPnN0YXJ0OwogCiAKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAy N19ub3N1cGVydXNlci5wbCBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAyN19ub3N1cGVydXNl ci5wbAppbmRleCA2OTE3MzE3NDNkZi4uZTBjMWQyMTM4MDAgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0 L3N1YnNjcmlwdGlvbi90LzAyN19ub3N1cGVydXNlci5wbAorKysgYi9zcmMvdGVzdC9zdWJzY3Jp cHRpb24vdC8wMjdfbm9zdXBlcnVzZXIucGwKQEAgLTg2LDYgKzg2LDcgQEAgJG5vZGVfcHVibGlz aGVyID0gUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rlci0+bmV3KCdwdWJsaXNoZXInKTsKICRub2Rl X3N1YnNjcmliZXIgPSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyLT5uZXcoJ3N1YnNjcmliZXIn KTsKICRub2RlX3B1Ymxpc2hlci0+aW5pdChhbGxvd3Nfc3RyZWFtaW5nID0+ICdsb2dpY2FsJyk7 CiAkbm9kZV9zdWJzY3JpYmVyLT5pbml0OworJG5vZGVfc3Vic2NyaWJlci0+YXBwZW5kX2NvbmYo J3Bvc3RncmVzcWwuY29uZicsICJtYXhfbG9naWNhbF9yZXBsaWNhdGlvbl93b3JrZXJzID0gMTAi KTsKICRub2RlX3B1Ymxpc2hlci0+c3RhcnQ7CiAkbm9kZV9zdWJzY3JpYmVyLT5zdGFydDsKICRw dWJsaXNoZXJfY29ubnN0ciA9ICRub2RlX3B1Ymxpc2hlci0+Y29ubnN0ciAuICcgZGJuYW1lPXBv c3RncmVzJzsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzA1MF9wYXJhbGxl bF9hcHBseS5wbCBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzA1MF9wYXJhbGxlbF9hcHBseS5w bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uNjljZjQ4Y2I3YWMKLS0t IC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wNTBfcGFyYWxsZWxfYXBw bHkucGwKQEAgLTAsMCArMSwxMzAgQEAKKworIyBDb3B5cmlnaHQgKGMpIDIwMjUsIFBvc3RncmVT UUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisKKyMgVGhpcyB0ZXN0cyB0aGF0IGRlcGVuZGVu Y3kgdHJhY2tpbmcgYmV0d2VlbiB0cmFuc2FjdGlvbnMgY2FuIHdvcmsgd2VsbAorCit1c2Ugc3Ry aWN0OwordXNlIHdhcm5pbmdzOwordXNlIFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXI7Cit1c2Ug UG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM7Cit1c2UgVGVzdDo6TW9yZTsKKworaWYgKCRFTlZ7ZW5h YmxlX2luamVjdGlvbl9wb2ludHN9IG5lICd5ZXMnKQoreworCXBsYW4gc2tpcF9hbGwgPT4gJ0lu amVjdGlvbiBwb2ludHMgbm90IHN1cHBvcnRlZCBieSB0aGlzIGJ1aWxkJzsKK30KKworIyBJbml0 aWFsaXplIHB1Ymxpc2hlciBub2RlCitteSAkbm9kZV9wdWJsaXNoZXIgPSBQb3N0Z3JlU1FMOjpU ZXN0OjpDbHVzdGVyLT5uZXcoJ3B1Ymxpc2hlcicpOworJG5vZGVfcHVibGlzaGVyLT5pbml0KGFs bG93c19zdHJlYW1pbmcgPT4gJ2xvZ2ljYWwnKTsKKyRub2RlX3B1Ymxpc2hlci0+c3RhcnQ7CisK KyMgSW5zZXJ0IGluaXRpYWwgZGF0YQorJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywKKyAgICAiQ1JFQVRFIFRBQkxFIHJlZ3Jlc3NfdGFiIChpZCBpbnQgUFJJTUFSWSBLRVks IHZhbHVlIHRleHQpOyIpOworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywK KyAgICAiSU5TRVJUIElOVE8gcmVncmVzc190YWIgVkFMVUVTIChnZW5lcmF0ZV9zZXJpZXMoMSwg MTApLCAndGVzdCcpOyIpOworCisjIENyZWF0ZSBhIHB1YmxpY2F0aW9uCiskbm9kZV9wdWJsaXNo ZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorICAgICJDUkVBVEUgUFVCTElDQVRJT04gcmVncmVz c19wdWIgRk9SIEFMTCBUQUJMRVM7Iik7CisKKyMgSW5pdGlhbGl6ZSBzdWJzY3JpYmVyIG5vZGUK K215ICRub2RlX3N1YnNjcmliZXIgPSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyLT5uZXcoJ3N1 YnNjcmliZXInKTsKKyRub2RlX3N1YnNjcmliZXItPmluaXQ7Ciskbm9kZV9zdWJzY3JpYmVyLT5h cHBlbmRfY29uZigncG9zdGdyZXNxbC5jb25mJywgImxvZ19taW5fbWVzc2FnZXMgPSBkZWJ1ZzEi KTsKKyRub2RlX3N1YnNjcmliZXItPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLAorCSJt YXhfbG9naWNhbF9yZXBsaWNhdGlvbl93b3JrZXJzID0gMTAiKTsKKyRub2RlX3N1YnNjcmliZXIt PnN0YXJ0OworCisjIENoZWNrIGlmIHRoZSBleHRlbnNpb24gaW5qZWN0aW9uX3BvaW50cyBpcyBh dmFpbGFibGUsIGFzIGl0IG1heSBiZQorIyBwb3NzaWJsZSB0aGF0IHRoaXMgc2NyaXB0IGlzIHJ1 biB3aXRoIGluc3RhbGxjaGVjaywgd2hlcmUgdGhlIG1vZHVsZQorIyB3b3VsZCBub3QgYmUgaW5z dGFsbGVkIGJ5IGRlZmF1bHQuCitpZiAoISRub2RlX3N1YnNjcmliZXItPmNoZWNrX2V4dGVuc2lv bignaW5qZWN0aW9uX3BvaW50cycpKQoreworCXBsYW4gc2tpcF9hbGwgPT4gJ0V4dGVuc2lvbiBp bmplY3Rpb25fcG9pbnRzIG5vdCBpbnN0YWxsZWQnOworfQorCiskbm9kZV9zdWJzY3JpYmVyLT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywgJ0NSRUFURSBFWFRFTlNJT04gaW5qZWN0aW9uX3BvaW50czsn KTsKKworIyBDcmVhdGUgYSBzdWJzY3JpcHRpb24KK215ICRwdWJsaXNoZXJfY29ubnN0ciA9ICRu b2RlX3B1Ymxpc2hlci0+Y29ubnN0ciAuICcgZGJuYW1lPXBvc3RncmVzJzsKKworJG5vZGVfc3Vi c2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisgICAgIkNSRUFURSBUQUJMRSByZWdyZXNz X3RhYiAoaWQgaW50IFBSSU1BUlkgS0VZLCB2YWx1ZSB0ZXh0KTsiKTsKKyRub2RlX3N1YnNjcmli ZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorICAgICJDUkVBVEUgU1VCU0NSSVBUSU9OIHJlZ3Jl c3Nfc3ViIENPTk5FQ1RJT04gJyRwdWJsaXNoZXJfY29ubnN0cicgUFVCTElDQVRJT04gcmVncmVz c19wdWI7Iik7CisKKyMgV2FpdCBmb3IgaW5pdGlhbCB0YWJsZSBzeW5jIHRvIGZpbmlzaAorJG5v ZGVfc3Vic2NyaWJlci0+d2FpdF9mb3Jfc3Vic2NyaXB0aW9uX3N5bmMoJG5vZGVfcHVibGlzaGVy LCAncmVncmVzc19zdWInKTsKKworIyBJbnNlcnQgdHVwbGVzIG9uIHB1Ymxpc2hlcgorIworIyBY WFggVGhpcyBtYXkgbm90IGVub3VnaCB0byBsYXVuY2ggYSBwYXJhbGxlbCBhcHBseSB3b3JrZXIs IGJlY2F1c2UKKyMgdGFibGVfc3RhdGVzX25vdF9yZWFkeSBpcyBub3QgZGlzY2FyZGVkIHlldC4K KyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisgICAgIklOU0VSVCBJTlRP IHJlZ3Jlc3NfdGFiIFZBTFVFUyAoZ2VuZXJhdGVfc2VyaWVzKDExLCAyMCksICd0ZXN0Jyk7Iik7 Ciskbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJ3JlZ3Jlc3Nfc3ViJyk7CisKKyMg SW5zZXJ0IHR1cGxlcyBhZ2FpbgorJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywKKyAgICAiSU5TRVJUIElOVE8gcmVncmVzc190YWIgVkFMVUVTIChnZW5lcmF0ZV9zZXJpZXMo MjEsIDMwKSwgJ3Rlc3QnKTsiKTsKKyRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgn cmVncmVzc19zdWInKTsKKworIyBWZXJpZnkgdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlciBpcyBs YXVuY2hlZAorbXkgJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdy ZXMnLAorICAgICJTRUxFQ1QgY291bnQoMSkgRlJPTSBwZ19zdGF0X2FjdGl2aXR5IFdIRVJFIGJh Y2tlbmRfdHlwZSA9ICdsb2dpY2FsIHJlcGxpY2F0aW9uIHBhcmFsbGVsIHdvcmtlciciKTsKK2lz KCRyZXN1bHQsICcxJywgInBhcmFsbGVsIGFwcGx5IHdvcmtlciBpcyBsYXVjbmhlZCBieSBhIG5v bi1zdHJlYW1lZCB0cmFuc2FjdGlvbiIpOworCisjIEF0dGFjaCBhbiBpbmplY3Rpb25fcG9pbnQu IFBhcmFsbGVsIHdvcmtlcnMgd291bGQgd2FpdCBiZWZvcmUgdGhlIGNvbW1pdAorJG5vZGVfc3Vi c2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIlNFTEVDVCBpbmplY3Rpb25fcG9pbnRz X2F0dGFjaCgncGFyYWxsZWwtd29ya2VyLWJlZm9yZS1jb21taXQnLCd3YWl0Jyk7IgorKTsKKwor IyBJbnNlcnQgdHVwbGVzIG9uIHB1Ymxpc2hlcgorJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwo J3Bvc3RncmVzJywKKyAgICAiSU5TRVJUIElOVE8gcmVncmVzc190YWIgVkFMVUVTIChnZW5lcmF0 ZV9zZXJpZXMoMzEsIDQwKSwgJ3Rlc3QnKTsiKTsKKworIyBXYWl0IHVudGlsIHRoZSBwYXJhbGxl bCB3b3JrZXIgZW50ZXJzIHRoZSBpbmplY3Rpb24gcG9pbnQuCiskbm9kZV9zdWJzY3JpYmVyLT53 YWl0X2Zvcl9ldmVudCgnbG9naWNhbCByZXBsaWNhdGlvbiBwYXJhbGxlbCB3b3JrZXInLAorCSdw YXJhbGxlbC13b3JrZXItYmVmb3JlLWNvbW1pdCcpOworCitteSAkb2Zmc2V0ID0gLXMgJG5vZGVf c3Vic2NyaWJlci0+bG9nZmlsZTsKKworIyBJbnNlcnQgdHVwbGVzIG9uIHB1Ymxpc2hlciBhZ2Fp bi4gVGhpcyB0cmFuc2FjdGlvbiBpcyBpbmRlcGVuZGVudCBmcm9tIHRoZQorIyBwcmV2aW91cyBv bmUsIGJ1dCB0aGUgcGFyYWxsZWwgd29ya2VyIHdvdWxkIHdhaXQgdGlsbCBpdCBmaW5pc2hlcwor JG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKyAgICAiSU5TRVJUIElOVE8g cmVncmVzc190YWIgVkFMVUVTIChnZW5lcmF0ZV9zZXJpZXMoNDEsIDUwKSwgJ3Rlc3QnKTsiKTsK KworIyBWZXJpZnkgdGhlIHBhcmFsbGVsIHdvcmtlciB3YWl0cyBmb3IgdGhlIHRyYW5zYWN0aW9u CitteSAkc3RyID0gJG5vZGVfc3Vic2NyaWJlci0+d2FpdF9mb3JfbG9nKHFyL3dhaXQgZm9yIGRl cGVuZGVkIHhpZCAoWzEtOV1bMC05XSspLywgJG9mZnNldCk7CitteSAkeGlkID0gJHN0ciA9fiAv d2FpdCBmb3IgZGVwZW5kZWQgeGlkIChbMS05XVswLTldKykvOworCisjIFVwZGF0ZSB0dXBsZXMg d2hpY2ggaGF2ZSBub3QgYmVlbiBhcHBsaWVkIHlldCBvbiBzdWJzY3JpYmVyIGJlY2F1c2UgdGhl CisjIHBhcmFsbGVsIHdvcmtlciBzdG9wcyBhdCB0aGUgaW5qZWN0aW9uIHBvaW50LiBOZXdseSBh c3NpZ25lZCB3b3JrZXIgYWxzbworIyB3YWl0cyBmb3IgdGhlIHNhbWUgdHJhbnNhY3Rpb25zIGFz IGFib3ZlLgorJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKyAgICAiVVBE QVRFIHJlZ3Jlc3NfdGFiIFNFVCB2YWx1ZSA9ICd1cGRhdGVkJyBXSEVSRSBpZCBCRVRXRUVOIDMx IEFORCAzNTsiKTsKKworIyBWZXJpZnkgdGhlIHBhcmFsbGVsIHdvcmtlciB3YWl0cyBmb3IgdGhl IHNhbWUgdHJhbnNhY3Rpb24KKyRub2RlX3N1YnNjcmliZXItPndhaXRfZm9yX2xvZyhxci93YWl0 IGZvciBkZXBlbmRlZCB4aWQgJHhpZC8sICRvZmZzZXQpOworCisjIFdha2V1cCB0aGUgcGFyYWxs ZWwgd29ya2VyLiBXZSBkZXRhY2ggZmlyc3Qgbm8gdG8gc3RvcCBvdGhlciBwYXJhbGxlbCB3b3Jr ZXJzCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgcXFbCisgICAgU0VM RUNUIGluamVjdGlvbl9wb2ludHNfZGV0YWNoKCdwYXJhbGxlbC13b3JrZXItYmVmb3JlLWNvbW1p dCcpOworICAgIFNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX3dha2V1cCgncGFyYWxsZWwtd29ya2Vy LWJlZm9yZS1jb21taXQnKTsKK10pOworCisjIFZlcmlmeSB0aGUgcGFyYWxsZWwgd29ya2VyIHdh a2VzIHVwCiskbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9sb2cocXIvZmluaXNoIHdhaXRpbmcg Zm9yIGRlcGVuZGVkIHhpZCAkeGlkLywgJG9mZnNldCk7CisKKyRyZXN1bHQgPQorICAkbm9kZV9z dWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBjb3VudCgxKSBGUk9NIHJl Z3Jlc3NfdGFiIik7CitpcyAoJHJlc3VsdCwgNTAsICdpbnNlcnRzIGFyZSByZXBsaWNhdGVkIHRv IHN1YnNjcmliZXInKTsKKworJHJlc3VsdCA9CisgICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNx bCgncG9zdGdyZXMnLAorICAgICJTRUxFQ1QgY291bnQoMSkgRlJPTSByZWdyZXNzX3RhYiBXSEVS RSB2YWx1ZSA9ICd1cGRhdGVkJyIpOworaXMgKCRyZXN1bHQsIDUsICd1cGRhdGVzIGFyZSBhbHNv IHJlcGxpY2F0ZWQgdG8gc3Vic2NyaWJlcicpOworCitkb25lX3Rlc3RpbmcoKTsKZGlmZiAtLWdp dCBhL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0IGIvc3JjL3Rvb2xzL3BnaW5kZW50 L3R5cGVkZWZzLmxpc3QKaW5kZXggY2ViM2ZjNWQ5ODAuLjgwODEwNzkzNzQ2IDEwMDY0NAotLS0g YS9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdAorKysgYi9zcmMvdG9vbHMvcGdpbmRl bnQvdHlwZWRlZnMubGlzdApAQCAtMjA4OSw2ICsyMDg5LDcgQEAgUGFyYWxsZWxIYXNoR3Jvd3Ro CiBQYXJhbGxlbEhhc2hKb2luQmF0Y2gKIFBhcmFsbGVsSGFzaEpvaW5CYXRjaEFjY2Vzc29yCiBQ YXJhbGxlbEhhc2hKb2luU3RhdGUKK1BhcmFsbGVsaXplZFR4bkVudHJ5CiBQYXJhbGxlbEluZGV4 U2NhbkRlc2MKIFBhcmFsbGVsU2xvdAogUGFyYWxsZWxTbG90QXJyYXkKQEAgLTI1NzMsNiArMjU3 NCw4IEBAIFJlcGFyYW1ldGVyaXplRm9yZWlnblBhdGhCeUNoaWxkX2Z1bmN0aW9uCiBSZXBsYWNl VmFyc0Zyb21UYXJnZXRMaXN0X2NvbnRleHQKIFJlcGxhY2VWYXJzTm9NYXRjaE9wdGlvbgogUmVw bGFjZVdyYXBPcHRpb24KK1JlcGxpY2FJZGVudGl0eUVudHJ5CitSZXBsaWNhSWRlbnRpdHlLZXkK IFJlcGxpY2FJZGVudGl0eVN0bXQKIFJlcGxpY2F0aW9uS2luZAogUmVwbGljYXRpb25TbG90CkBA IC00MDgyLDYgKzQwODUsNyBAQCByZW5kZXp2b3VzSGFzaEVudHJ5CiByZXAKIHJlcGxhY2VfcnRl X3ZhcmlhYmxlc19jYWxsYmFjawogcmVwbGFjZV9ydGVfdmFyaWFibGVzX2NvbnRleHQKK3JlcGxp Y2FfaWRlbnRpdHlfaGFzaAogcmVwb3J0X2Vycm9yX2ZuCiByZXRfdHlwZQogcmV3aW5kX3NvdXJj ZQotLSAKMi40Ny4zCgo= --_009_TY7PR01MB145541DD6F5BE4CD403BA39FDF586ATY7PR01MB14554jp_ Content-Type: application/octet-stream; name="v7-0005-support-2PC.patch" Content-Description: v7-0005-support-2PC.patch Content-Disposition: attachment; filename="v7-0005-support-2PC.patch"; size=14278; creation-date="Mon, 05 Jan 2026 07:38:38 GMT"; modification-date="Mon, 05 Jan 2026 07:40:44 GMT" Content-Transfer-Encoding: base64 RnJvbSA5OWZlNTQ2MDFjM2MyOGVlZjAxOTc3NmZkMjFiZjc2NTEwMDQ0NmI2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIYXlhdG8gS3Vyb2RhIDxrdXJvZGEuaGF5YXRvQGZ1aml0c3Uu Y29tPgpEYXRlOiBUdWUsIDIgRGVjIDIwMjUgMTM6MDE6MjYgKzA5MDAKU3ViamVjdDogW1BBVENI IHY3IDUvOF0gc3VwcG9ydCAyUEMKClRoaXMgcGF0Y2ggYWxsb3dzIHRoZSBQUkVQQVJFIHRyYW5z YWN0aW9uIHRvIGJlIGFwcGxpZWQgaW4gcGFyYWxsZWwuIFBhcmFsbGVsCmFwcGx5IHdvcmtlcnMg YXJlIGFzc2lnbmVkIHRvIGEgdHJhbnNhY3Rpb24gd2hlbiBCRUdJTl9QUkVQQVJFIGlzIHJlY2Vp dmVkLiBUaGlzCnBhcnQgYW5kIHRoZSBkZXBlbmRlbmN5LXdhaXRpbmcgbWVjaGFuaXNtIGFyZSB0 aGUgc2FtZSBhcyBhIG5vcm1hbCB0cmFuc2FjdGlvbi4KCkEgcGFyYWxsZWwgd29ya2VyIGNhbiBi ZSBmcmVlZCBhZnRlciBpdCBoYW5kbGVzIGEgUFJFUEFSRSBtZXNzYWdlLiBUaGUgcHJlcGFyZWQK dHJhbnNhY3Rpb24gY2FuIGJlIGRlbGV0ZWQgZnJvbSBwYXJhbGxlbGl6ZWRfdHhucyBhdCB0aGF0 IHRpbWU7IHRoZSB1cGNvbWluZwp0cmFuc2FjdGlvbnMgd2lsbCB3YWl0IHVudGlsIHRoZW4uCgpU aGUgbGVhZGVyIGFwcGx5IHdvcmtlciByZXNvbHZlcyBDT01NSVQgUFJFUEFSRUQvUk9MTEJBQ0sg UFJFUEFSRUQuIFNpbmNlIGl0IGNhbgpiZSBzZXJpYWxpemVkIGF1dG9tYXRpY2FsbHksIGl0IGRv ZXMgbm90IGFkZCB0aGUgdHJhbnNhY3Rpb24gdG8gcGFyYWxsZWxpemVkX3R4bnMuCi0tLQogc3Jj L2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYyAgICAgIHwgMjM4ICsrKysrKysr KysrKysrKy0tLQogc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDUwX3BhcmFsbGVsX2FwcGx5LnBs IHwgIDYwICsrKysrCiAyIGZpbGVzIGNoYW5nZWQsIDI3MCBpbnNlcnRpb25zKCspLCAyOCBkZWxl dGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dv cmtlci5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYwppbmRleCAz ODMyNDgxNjQ3ZS4uOTlhMGFlYjE3NTcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0 aW9uL2xvZ2ljYWwvd29ya2VyLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNh bC93b3JrZXIuYwpAQCAtNzU2LDYgKzc1NiwxNCBAQCBjbGVhbnVwX3JlcGxpY2FfaWRlbnRpdHlf dGFibGUoTGlzdCAqY29tbWl0dGVkX3hpZCkKIAlpZiAoIWNvbW1pdHRlZF94aWQpCiAJCXJldHVy bjsKIAorCS8qCisJICogU2tpcCBpZiB0aGUgcmVwbGljYV9pZGVudGl0eV90YWJsZSBpcyBub3Qg aW5pdGlhbGl6ZWQgeWV0LiBUaGlzIGNhbgorCSAqIGhhcHBlbiBpZiB0aGUgZW1wdHkgdHJhbnNh Y3Rpb24gd2FzIHJlcGxpY2F0ZWQgYW5kIGEgcGFyYWxsZWwgYXBwbHkKKwkgKiB3b3JrZXIgd2Fz IGxhdW5jaGVkLiBTZWUgY29tbWVudHMgaW4gYXBwbHlfaGFuZGxlX3ByZXBhcmUoKS4KKwkgKi8K KwlpZiAoIXJlcGxpY2FfaWRlbnRpdHlfdGFibGUpCisJCXJldHVybjsKKwogCXJlcGxpY2FfaWRl bnRpdHlfc3RhcnRfaXRlcmF0ZShyZXBsaWNhX2lkZW50aXR5X3RhYmxlLCAmaSk7CiAJd2hpbGUg KChyaWVudHJ5ID0gcmVwbGljYV9pZGVudGl0eV9pdGVyYXRlKHJlcGxpY2FfaWRlbnRpdHlfdGFi bGUsICZpKSkgIT0gTlVMTCkKIAl7CkBAIC0yMTE2LDYgKzIxMjQsMTEgQEAgc3RhdGljIHZvaWQK IGFwcGx5X2hhbmRsZV9iZWdpbl9wcmVwYXJlKFN0cmluZ0luZm8gcykKIHsKIAlMb2dpY2FsUmVw UHJlcGFyZWRUeG5EYXRhIGJlZ2luX2RhdGE7CisJUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKndp bmZvOworCVRyYW5zQXBwbHlBY3Rpb24gYXBwbHlfYWN0aW9uOworCisJLyogU2F2ZSB0aGUgbWVz c2FnZSBiZWZvcmUgaXQgaXMgY29uc3VtZWQuICovCisJU3RyaW5nSW5mb0RhdGEgb3JpZ2luYWxf bXNnID0gKnM7CiAKIAkvKiBUYWJsZXN5bmMgc2hvdWxkIG5ldmVyIHJlY2VpdmUgcHJlcGFyZS4g Ki8KIAlpZiAoYW1fdGFibGVzeW5jX3dvcmtlcigpKQpAQCAtMjEyNywxMiArMjE0MCw2MSBAQCBh cHBseV9oYW5kbGVfYmVnaW5fcHJlcGFyZShTdHJpbmdJbmZvIHMpCiAJQXNzZXJ0KCFUcmFuc2Fj dGlvbklkSXNWYWxpZChzdHJlYW1feGlkKSk7CiAKIAlsb2dpY2FscmVwX3JlYWRfYmVnaW5fcHJl cGFyZShzLCAmYmVnaW5fZGF0YSk7Ci0Jc2V0X2FwcGx5X2Vycm9yX2NvbnRleHRfeGFjdChiZWdp bl9kYXRhLnhpZCwgYmVnaW5fZGF0YS5wcmVwYXJlX2xzbik7CisKKwlyZW1vdGVfeGlkID0gYmVn aW5fZGF0YS54aWQ7CisKKwlzZXRfYXBwbHlfZXJyb3JfY29udGV4dF94YWN0KHJlbW90ZV94aWQs IGJlZ2luX2RhdGEucHJlcGFyZV9sc24pOwogCiAJcmVtb3RlX2ZpbmFsX2xzbiA9IGJlZ2luX2Rh dGEucHJlcGFyZV9sc247CiAKIAltYXliZV9zdGFydF9za2lwcGluZ19jaGFuZ2VzKGJlZ2luX2Rh dGEucHJlcGFyZV9sc24pOwogCisJcGFfYWxsb2NhdGVfd29ya2VyKHJlbW90ZV94aWQsIGZhbHNl KTsKKworCWFwcGx5X2FjdGlvbiA9IGdldF90cmFuc2FjdGlvbl9hcHBseV9hY3Rpb24ocmVtb3Rl X3hpZCwgJndpbmZvKTsKKworCWVsb2coREVCVUcxLCAibmV3IHJlbW90ZV94aWQgJXUiLCByZW1v dGVfeGlkKTsKKwlzd2l0Y2ggKGFwcGx5X2FjdGlvbikKKwl7CisJCWNhc2UgVFJBTlNfTEVBREVS X0FQUExZOgorCQkJYnJlYWs7CisKKwkJY2FzZSBUUkFOU19MRUFERVJfU0VORF9UT19QQVJBTExF TDoKKwkJCUFzc2VydCh3aW5mbyk7CisKKwkJCWlmIChwYV9zZW5kX2RhdGEod2luZm8sIHMtPmxl biwgcy0+ZGF0YSkpCisJCQl7CisJCQkJcGFfc2V0X3N0cmVhbV9hcHBseV93b3JrZXIod2luZm8p OworCQkJCWJyZWFrOworCQkJfQorCisJCQkvKgorCQkJICogU3dpdGNoIHRvIHNlcmlhbGl6ZSBt b2RlIHdoZW4gd2UgYXJlIG5vdCBhYmxlIHRvIHNlbmQgdGhlCisJCQkgKiBjaGFuZ2UgdG8gcGFy YWxsZWwgYXBwbHkgd29ya2VyLgorCQkJICovCisJCQlwYV9zd2l0Y2hfdG9fcGFydGlhbF9zZXJp YWxpemUod2luZm8sIHRydWUpOworCisvKiBmYWxsIHRocm91Z2ggKi8KKwkJY2FzZSBUUkFOU19M RUFERVJfUEFSVElBTF9TRVJJQUxJWkU6CisJCQlBc3NlcnQod2luZm8pOworCisJCQlzdHJlYW1f d3JpdGVfY2hhbmdlKExPR0lDQUxfUkVQX01TR19CRUdJTl9QUkVQQVJFLCAmb3JpZ2luYWxfbXNn KTsKKworCQkJLyogQ2FjaGUgdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlciBmb3IgdGhpcyB0cmFu c2FjdGlvbi4gKi8KKwkJCXBhX3NldF9zdHJlYW1fYXBwbHlfd29ya2VyKHdpbmZvKTsKKwkJCWJy ZWFrOworCisJCWNhc2UgVFJBTlNfUEFSQUxMRUxfQVBQTFk6CisJCQkvKiBIb2xkIHRoZSBsb2Nr IHVudGlsIHRoZSBlbmQgb2YgdGhlIHRyYW5zYWN0aW9uLiAqLworCQkJcGFfbG9ja190cmFuc2Fj dGlvbihNeVBhcmFsbGVsU2hhcmVkLT54aWQsIEFjY2Vzc0V4Y2x1c2l2ZUxvY2spOworCQkJcGFf c2V0X3hhY3Rfc3RhdGUoTXlQYXJhbGxlbFNoYXJlZCwgUEFSQUxMRUxfVFJBTlNfU1RBUlRFRCk7 CisJCQlicmVhazsKKworCQlkZWZhdWx0OgorCQkJZWxvZyhFUlJPUiwgInVuZXhwZWN0ZWQgYXBw bHkgYWN0aW9uOiAlZCIsIChpbnQpIGFwcGx5X2FjdGlvbik7CisJCQlicmVhazsKKwl9CisKIAlp bl9yZW1vdGVfdHJhbnNhY3Rpb24gPSB0cnVlOwogCiAJcGdzdGF0X3JlcG9ydF9hY3Rpdml0eShT VEFURV9SVU5OSU5HLCBOVUxMKTsKQEAgLTIxODIsNiArMjI0NCwxMSBAQCBzdGF0aWMgdm9pZAog YXBwbHlfaGFuZGxlX3ByZXBhcmUoU3RyaW5nSW5mbyBzKQogewogCUxvZ2ljYWxSZXBQcmVwYXJl ZFR4bkRhdGEgcHJlcGFyZV9kYXRhOworCVBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICp3aW5mbzsK KwlUcmFuc0FwcGx5QWN0aW9uIGFwcGx5X2FjdGlvbjsKKworCS8qIFNhdmUgdGhlIG1lc3NhZ2Ug YmVmb3JlIGl0IGlzIGNvbnN1bWVkLiAqLworCVN0cmluZ0luZm9EYXRhIG9yaWdpbmFsX21zZyA9 ICpzOwogCiAJbG9naWNhbHJlcF9yZWFkX3ByZXBhcmUocywgJnByZXBhcmVfZGF0YSk7CiAKQEAg LTIxOTIsMzYgKzIyNTksMTM2IEBAIGFwcGx5X2hhbmRsZV9wcmVwYXJlKFN0cmluZ0luZm8gcykK IAkJCQkJCQkJIExTTl9GT1JNQVRfQVJHUyhwcmVwYXJlX2RhdGEucHJlcGFyZV9sc24pLAogCQkJ CQkJCQkgTFNOX0ZPUk1BVF9BUkdTKHJlbW90ZV9maW5hbF9sc24pKSkpOwogCi0JLyoKLQkgKiBV bmxpa2UgY29tbWl0LCBoZXJlLCB3ZSBhbHdheXMgcHJlcGFyZSB0aGUgdHJhbnNhY3Rpb24gZXZl biB0aG91Z2ggbm8KLQkgKiBjaGFuZ2UgaGFzIGhhcHBlbmVkIGluIHRoaXMgdHJhbnNhY3Rpb24g b3IgYWxsIGNoYW5nZXMgYXJlIHNraXBwZWQuIEl0Ci0JICogaXMgZG9uZSB0aGlzIHdheSBiZWNh dXNlIGF0IGNvbW1pdCBwcmVwYXJlZCB0aW1lLCB3ZSB3b24ndCBrbm93IHdoZXRoZXIKLQkgKiB3 ZSBoYXZlIHNraXBwZWQgcHJlcGFyaW5nIGEgdHJhbnNhY3Rpb24gYmVjYXVzZSBvZiB0aG9zZSBy ZWFzb25zLgotCSAqCi0JICogWFhYLCBXZSBjYW4gb3B0aW1pemUgc3VjaCB0aGF0IGF0IGNvbW1p dCBwcmVwYXJlZCB0aW1lLCB3ZSBmaXJzdCBjaGVjawotCSAqIHdoZXRoZXIgd2UgaGF2ZSBwcmVw YXJlZCB0aGUgdHJhbnNhY3Rpb24gb3Igbm90IGJ1dCB0aGF0IGRvZXNuJ3Qgc2VlbQotCSAqIHdv cnRod2hpbGUgYmVjYXVzZSBzdWNoIGNhc2VzIHNob3VsZG4ndCBiZSBjb21tb24uCi0JICovCi0J YmVnaW5fcmVwbGljYXRpb25fc3RlcCgpOworCWFwcGx5X2FjdGlvbiA9IGdldF90cmFuc2FjdGlv bl9hcHBseV9hY3Rpb24ocmVtb3RlX3hpZCwgJndpbmZvKTsKIAotCWFwcGx5X2hhbmRsZV9wcmVw YXJlX2ludGVybmFsKCZwcmVwYXJlX2RhdGEpOworCXN3aXRjaCAoYXBwbHlfYWN0aW9uKQorCXsK KwkJY2FzZSBUUkFOU19MRUFERVJfQVBQTFk6CisJCQkvKgorCQkJICogVW5saWtlIGNvbW1pdCwg aGVyZSwgd2UgYWx3YXlzIHByZXBhcmUgdGhlIHRyYW5zYWN0aW9uIGV2ZW4KKwkJCSAqIHRob3Vn aCBubyBjaGFuZ2UgaGFzIGhhcHBlbmVkIGluIHRoaXMgdHJhbnNhY3Rpb24gb3IgYWxsIGNoYW5n ZXMKKwkJCSAqIGFyZSBza2lwcGVkLiBJdCBpcyBkb25lIHRoaXMgd2F5IGJlY2F1c2UgYXQgY29t bWl0IHByZXBhcmVkCisJCQkgKiB0aW1lLCB3ZSB3b24ndCBrbm93IHdoZXRoZXIgd2UgaGF2ZSBz a2lwcGVkIHByZXBhcmluZyBhCisJCQkgKiB0cmFuc2FjdGlvbiBiZWNhdXNlIG9mIHRob3NlIHJl YXNvbnMuCisJCQkgKgorCQkJICogWFhYLCBXZSBjYW4gb3B0aW1pemUgc3VjaCB0aGF0IGF0IGNv bW1pdCBwcmVwYXJlZCB0aW1lLCB3ZSBmaXJzdAorCQkJICogY2hlY2sgd2hldGhlciB3ZSBoYXZl IHByZXBhcmVkIHRoZSB0cmFuc2FjdGlvbiBvciBub3QgYnV0IHRoYXQKKwkJCSAqIGRvZXNuJ3Qg c2VlbSB3b3J0aHdoaWxlIGJlY2F1c2Ugc3VjaCBjYXNlcyBzaG91bGRuJ3QgYmUgY29tbW9uLgor CQkJICovCisJCQliZWdpbl9yZXBsaWNhdGlvbl9zdGVwKCk7CiAKLQllbmRfcmVwbGljYXRpb25f c3RlcCgpOwotCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOwotCXBnc3RhdF9yZXBvcnRfc3Rh dChmYWxzZSk7CisJCQkvKiBXYWl0IHVudGlsIHRoZSBsYXN0IHRyYW5zYWN0aW9uIGZpbmlzaGVz ICovCisJCQlpZiAoVHJhbnNhY3Rpb25JZElzVmFsaWQobGFzdF9yZW1vdGVfeGlkKSkKKwkJCQlw YV93YWl0X2Zvcl9kZXBlbmRlZF90cmFuc2FjdGlvbihsYXN0X3JlbW90ZV94aWQpOwogCi0JLyoK LQkgKiBJdCBpcyBva2F5IG5vdCB0byBzZXQgdGhlIGxvY2FsX2VuZCBMU04gZm9yIHRoZSBwcmVw YXJlIGJlY2F1c2Ugd2UKLQkgKiBhbHdheXMgZmx1c2ggdGhlIHByZXBhcmUgcmVjb3JkLiBTbywg d2UgY2FuIHNlbmQgdGhlIGFja25vd2xlZGdtZW50IG9mCi0JICogdGhlIHJlbW90ZV9lbmQgTFNO IGFzIHNvb24gYXMgcHJlcGFyZSBpcyBmaW5pc2hlZC4KLQkgKgotCSAqIFhYWCBGb3IgdGhlIHNh a2Ugb2YgY29uc2lzdGVuY3kgd2l0aCBjb21taXQsIHdlIGNvdWxkIGhhdmUgc2V0IGl0IHdpdGgK LQkgKiB0aGUgTFNOIG9mIHByZXBhcmUgYnV0IGFzIG9mIG5vdyB3ZSBkb24ndCB0cmFjayB0aGF0 IHZhbHVlIHNpbWlsYXIgdG8KLQkgKiBYYWN0TGFzdENvbW1pdEVuZCwgYW5kIGFkZGluZyBpdCBm b3IgdGhpcyBwdXJwb3NlIGRvZXNuJ3Qgc2VlbXMgd29ydGgKLQkgKiBpdC4KLQkgKi8KLQlzdG9y ZV9mbHVzaF9wb3NpdGlvbihwcmVwYXJlX2RhdGEuZW5kX2xzbiwgSW52YWxpZFhMb2dSZWNQdHIs Ci0JCQkJCQkgSW52YWxpZFRyYW5zYWN0aW9uSWQpOworCQkJYXBwbHlfaGFuZGxlX3ByZXBhcmVf aW50ZXJuYWwoJnByZXBhcmVfZGF0YSk7CisKKwkJCWVuZF9yZXBsaWNhdGlvbl9zdGVwKCk7CisJ CQlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKKwkJCXBnc3RhdF9yZXBvcnRfc3RhdChmYWxz ZSk7CisKKwkJCS8qCisJCQkgKiBJdCBpcyBva2F5IG5vdCB0byBzZXQgdGhlIGxvY2FsX2VuZCBM U04gZm9yIHRoZSBwcmVwYXJlIGJlY2F1c2UKKwkJCSAqIHdlIGFsd2F5cyBmbHVzaCB0aGUgcHJl cGFyZSByZWNvcmQuIFNvLCB3ZSBjYW4gc2VuZCB0aGUKKwkJCSAqIGFja25vd2xlZGdtZW50IG9m IHRoZSByZW1vdGVfZW5kIExTTiBhcyBzb29uIGFzIHByZXBhcmUgaXMKKwkJCSAqIGZpbmlzaGVk LgorCQkJICoKKwkJCSAqIFhYWCBGb3IgdGhlIHNha2Ugb2YgY29uc2lzdGVuY3kgd2l0aCBjb21t aXQsIHdlIGNvdWxkIGhhdmUgc2V0CisJCQkgKiBpdCB3aXRoIHRoZSBMU04gb2YgcHJlcGFyZSBi dXQgYXMgb2Ygbm93IHdlIGRvbid0IHRyYWNrIHRoYXQKKwkJCSAqIHZhbHVlIHNpbWlsYXIgdG8g WGFjdExhc3RDb21taXRFbmQsIGFuZCBhZGRpbmcgaXQgZm9yIHRoaXMKKwkJCSAqIHB1cnBvc2Ug ZG9lc24ndCBzZWVtcyB3b3J0aAorCQkJICogaXQuCisJCQkgKi8KKwkJCXN0b3JlX2ZsdXNoX3Bv c2l0aW9uKHByZXBhcmVfZGF0YS5lbmRfbHNuLCBJbnZhbGlkWExvZ1JlY1B0ciwKKwkJCQkJCQkJ IEludmFsaWRUcmFuc2FjdGlvbklkKTsKKworCQkJYnJlYWs7CisKKwkJY2FzZSBUUkFOU19MRUFE RVJfU0VORF9UT19QQVJBTExFTDoKKwkJCUFzc2VydCh3aW5mbyk7CisKKwkJCS8qCisJCQkgKiBN YXJrIHRoaXMgdHJhbnNhY3Rpb24gYXMgcGFyYWxsZWxpemVkLiBUaGlzIGVuc3VyZXMgdGhhdAor CQkJICogdXBjb21pbmcgdHJhbnNhY3Rpb25zIHdhaXQgdW50aWwgdGhpcyB0cmFuc2FjdGlvbiBp cyBjb21taXR0ZWQuCisJCQkgKi8KKwkJCXBhX2FkZF9wYXJhbGxlbGl6ZWRfdHJhbnNhY3Rpb24o cmVtb3RlX3hpZCk7CisKKwkJCS8qCisJCQkgKiBCdWlsZCBhIGRlcGVuZGVuY3kgYmV0d2VlbiB0 aGlzIHRyYW5zYWN0aW9uIGFuZCB0aGUgbGFzdGx5CisJCQkgKiBjb21taXR0ZWQgdHJhbnNhY3Rp b24gdG8gcHJlc2VydmUgdGhlIGNvbW1pdCBvcmRlci4gVGhlbiB0cnkgdG8KKwkJCSAqIHNlbmQg YSBDT01NSVQgbWVzc2FnZSBpZiBzdWNjZWVkZWQuCisJCQkgKi8KKwkJCWlmIChidWlsZF9kZXBl bmRlbmN5X3dpdGhfbGFzdF9jb21taXR0ZWRfdHhuKHdpbmZvKSAmJgorCQkJCXBhX3NlbmRfZGF0 YSh3aW5mbywgcy0+bGVuLCBzLT5kYXRhKSkKKwkJCXsKKwkJCQkvKiBGaW5pc2ggcHJvY2Vzc2lu ZyB0aGUgdHJhbnNhY3Rpb24uICovCisJCQkJcGFfeGFjdF9maW5pc2god2luZm8sIHByZXBhcmVf ZGF0YS5lbmRfbHNuKTsKKwkJCQlicmVhazsKKwkJCX0KKworCQkJLyoKKwkJCSAqIFN3aXRjaCB0 byBzZXJpYWxpemUgbW9kZSB3aGVuIHdlIGFyZSBub3QgYWJsZSB0byBzZW5kIHRoZQorCQkJICog Y2hhbmdlIHRvIHBhcmFsbGVsIGFwcGx5IHdvcmtlci4KKwkJCSAqLworCQkJcGFfc3dpdGNoX3Rv X3BhcnRpYWxfc2VyaWFsaXplKHdpbmZvLCB0cnVlKTsKKy8qIGZhbGwgdGhyb3VnaCAqLworCQlj YXNlIFRSQU5TX0xFQURFUl9QQVJUSUFMX1NFUklBTElaRToKKwkJCUFzc2VydCh3aW5mbyk7CisK KwkJCXN0cmVhbV9vcGVuX2FuZF93cml0ZV9jaGFuZ2UocmVtb3RlX3hpZCwgTE9HSUNBTF9SRVBf TVNHX1BSRVBBUkUsCisJCQkJCQkJCQkJICZvcmlnaW5hbF9tc2cpOworCisJCQlwYV9zZXRfZmls ZXNldF9zdGF0ZSh3aW5mby0+c2hhcmVkLCBGU19TRVJJQUxJWkVfRE9ORSk7CisKKwkJCS8qIEZp bmlzaCBwcm9jZXNzaW5nIHRoZSB0cmFuc2FjdGlvbi4gKi8KKwkJCXBhX3hhY3RfZmluaXNoKHdp bmZvLCBwcmVwYXJlX2RhdGEuZW5kX2xzbik7CisJCQlicmVhazsKKworCQljYXNlIFRSQU5TX1BB UkFMTEVMX0FQUExZOgorCisJCQkvKgorCQkJICogSWYgdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtl ciBpcyBhcHBseWluZyBzcG9vbGVkIG1lc3NhZ2VzIHRoZW4KKwkJCSAqIGNsb3NlIHRoZSBmaWxl IGJlZm9yZSBjb21taXR0aW5nLgorCQkJICovCisJCQlpZiAoc3RyZWFtX2ZkKQorCQkJCXN0cmVh bV9jbG9zZV9maWxlKCk7CisKKwkJCWJlZ2luX3JlcGxpY2F0aW9uX3N0ZXAoKTsKKworCQkJSU5K RUNUSU9OX1BPSU5UKCJwYXJhbGxlbC13b3JrZXItYmVmb3JlLXByZXBhcmUiLCBOVUxMKTsKKwor CQkJLyogTWFyayB0aGUgdHJhbnNhY3Rpb24gYXMgcHJlcGFyZWQuICovCisJCQlhcHBseV9oYW5k bGVfcHJlcGFyZV9pbnRlcm5hbCgmcHJlcGFyZV9kYXRhKTsKKworCQkJZW5kX3JlcGxpY2F0aW9u X3N0ZXAoKTsKKworCQkJQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7CisJCQlwZ3N0YXRfcmVw b3J0X3N0YXQoZmFsc2UpOworCisJCQlzdG9yZV9mbHVzaF9wb3NpdGlvbihwcmVwYXJlX2RhdGEu ZW5kX2xzbiwgSW52YWxpZFhMb2dSZWNQdHIsCisJCQkJCQkJCSBJbnZhbGlkVHJhbnNhY3Rpb25J ZCk7CisKKwkJCS8qCisJCQkgKiBJdCBpcyBva2F5IG5vdCB0byBzZXQgdGhlIGxvY2FsX2VuZCBM U04gZm9yIHRoZSBwcmVwYXJlIGJlY2F1c2UKKwkJCSAqIHdlIGFsd2F5cyBmbHVzaCB0aGUgcHJl cGFyZSByZWNvcmQuIFNlZSBhcHBseV9oYW5kbGVfcHJlcGFyZS4KKwkJCSAqLworCQkJTXlQYXJh bGxlbFNoYXJlZC0+bGFzdF9jb21taXRfZW5kID0gSW52YWxpZFhMb2dSZWNQdHI7CisJCQlwYV9j b21taXRfdHJhbnNhY3Rpb24oKTsKKworCQkJcGFfdW5sb2NrX3RyYW5zYWN0aW9uKE15UGFyYWxs ZWxTaGFyZWQtPnhpZCwgQWNjZXNzRXhjbHVzaXZlTG9jayk7CisKKwkJCXBhX3Jlc2V0X3N1YnRy YW5zKCk7CisJCQlicmVhazsKKworCQlkZWZhdWx0OgorCQkJZWxvZyhFUlJPUiwgInVuZXhwZWN0 ZWQgYXBwbHkgYWN0aW9uOiAlZCIsIChpbnQpIGFwcGx5X2FjdGlvbik7CisJCQlicmVhazsKKwl9 CisKKwkvKiBDYWNoZSB0aGUgcmVtb3RlX3hpZCAqLworCWxhc3RfcmVtb3RlX3hpZCA9IHJlbW90 ZV94aWQ7CisKKwlyZW1vdGVfeGlkID0gSW52YWxpZFRyYW5zYWN0aW9uSWQ7CiAKIAlpbl9yZW1v dGVfdHJhbnNhY3Rpb24gPSBmYWxzZTsKIApAQCAtMjI2OSw2ICsyNDM2LDkgQEAgYXBwbHlfaGFu ZGxlX2NvbW1pdF9wcmVwYXJlZChTdHJpbmdJbmZvIHMpCiAJLyogVGhlcmUgaXMgbm8gdHJhbnNh Y3Rpb24gd2hlbiBDT01NSVQgUFJFUEFSRUQgaXMgY2FsbGVkICovCiAJYmVnaW5fcmVwbGljYXRp b25fc3RlcCgpOwogCisJaWYgKFRyYW5zYWN0aW9uSWRJc1ZhbGlkKGxhc3RfcmVtb3RlX3hpZCkp CisJCXBhX3dhaXRfZm9yX2RlcGVuZGVkX3RyYW5zYWN0aW9uKGxhc3RfcmVtb3RlX3hpZCk7CisK IAkvKgogCSAqIFVwZGF0ZSBvcmlnaW4gc3RhdGUgc28gd2UgY2FuIHJlc3RhcnQgc3RyZWFtaW5n IGZyb20gY29ycmVjdCBwb3NpdGlvbgogCSAqIGluIGNhc2Ugb2YgY3Jhc2guCkBAIC0yMjgxLDYg KzI0NTEsMTQgQEAgYXBwbHlfaGFuZGxlX2NvbW1pdF9wcmVwYXJlZChTdHJpbmdJbmZvIHMpCiAJ Q29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7CiAJcGdzdGF0X3JlcG9ydF9zdGF0KGZhbHNlKTsK IAorCS8qCisJICogTm8gbmVlZCB0byB1cGRhdGUgbGFzdF9yZW1vdGVfeGlkIGJlY2F1c2UgbGVh ZGVyIHdvcmtlciBhcHBsaWVkIHRoZQorCSAqIG1lc3NhZ2UgdGh1cyB1cGNvbWluZyB0cmFuc2Fj dGlvbiBwcmVzZXJ2ZXMgdGhlIG9yZGVyIGF1dG9tYXRpY2FsbHkuCisJICogTGV0J3Mgc2V0IHRo ZSB4aWQgdG8gYW4gaW52YWxpZCB2YWx1ZSB0byBza2lwIHNlbmRpbmcgdGhlCisJICogSU5URVJO QUxfREVQRU5ERU5DWSBtZXNzYWdlLgorCSAqLworCWxhc3RfcmVtb3RlX3hpZCA9IEludmFsaWRU cmFuc2FjdGlvbklkOworCiAJc3RvcmVfZmx1c2hfcG9zaXRpb24ocHJlcGFyZV9kYXRhLmVuZF9s c24sIFhhY3RMYXN0Q29tbWl0RW5kLAogCQkJCQkJIEludmFsaWRUcmFuc2FjdGlvbklkKTsKIAlp bl9yZW1vdGVfdHJhbnNhY3Rpb24gPSBmYWxzZTsKQEAgLTIzMzcsNiArMjUxNSwxMCBAQCBhcHBs eV9oYW5kbGVfcm9sbGJhY2tfcHJlcGFyZWQoU3RyaW5nSW5mbyBzKQogCiAJCS8qIFRoZXJlIGlz IG5vIHRyYW5zYWN0aW9uIHdoZW4gQUJPUlQvUk9MTEJBQ0sgUFJFUEFSRUQgaXMgY2FsbGVkICov CiAJCWJlZ2luX3JlcGxpY2F0aW9uX3N0ZXAoKTsKKworCQlpZiAoVHJhbnNhY3Rpb25JZElzVmFs aWQobGFzdF9yZW1vdGVfeGlkKSkKKwkJCXBhX3dhaXRfZm9yX2RlcGVuZGVkX3RyYW5zYWN0aW9u KGxhc3RfcmVtb3RlX3hpZCk7CisKIAkJRmluaXNoUHJlcGFyZWRUcmFuc2FjdGlvbihnaWQsIGZh bHNlKTsKIAkJZW5kX3JlcGxpY2F0aW9uX3N0ZXAoKTsKIAkJQ29tbWl0VHJhbnNhY3Rpb25Db21t YW5kKCk7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wNTBfcGFyYWxsZWxf YXBwbHkucGwgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wNTBfcGFyYWxsZWxfYXBwbHkucGwK aW5kZXggNjljZjQ4Y2I3YWMuLjE1OTczZjdkMGUwIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9zdWJz Y3JpcHRpb24vdC8wNTBfcGFyYWxsZWxfYXBwbHkucGwKKysrIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0 aW9uL3QvMDUwX3BhcmFsbGVsX2FwcGx5LnBsCkBAIC0xNyw2ICsxNyw4IEBAIGlmICgkRU5We2Vu YWJsZV9pbmplY3Rpb25fcG9pbnRzfSBuZSAneWVzJykKICMgSW5pdGlhbGl6ZSBwdWJsaXNoZXIg bm9kZQogbXkgJG5vZGVfcHVibGlzaGVyID0gUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rlci0+bmV3 KCdwdWJsaXNoZXInKTsKICRub2RlX3B1Ymxpc2hlci0+aW5pdChhbGxvd3Nfc3RyZWFtaW5nID0+ ICdsb2dpY2FsJyk7Ciskbm9kZV9wdWJsaXNoZXItPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNv bmYnLAorICAgICJtYXhfcHJlcGFyZWRfdHJhbnNhY3Rpb25zID0gMTAiKTsKICRub2RlX3B1Ymxp c2hlci0+c3RhcnQ7CiAKICMgSW5zZXJ0IGluaXRpYWwgZGF0YQpAQCAtMzUsNiArMzcsOCBAQCAk bm9kZV9zdWJzY3JpYmVyLT5pbml0OwogJG5vZGVfc3Vic2NyaWJlci0+YXBwZW5kX2NvbmYoJ3Bv c3RncmVzcWwuY29uZicsICJsb2dfbWluX21lc3NhZ2VzID0gZGVidWcxIik7CiAkbm9kZV9zdWJz Y3JpYmVyLT5hcHBlbmRfY29uZigncG9zdGdyZXNxbC5jb25mJywKIAkibWF4X2xvZ2ljYWxfcmVw bGljYXRpb25fd29ya2VycyA9IDEwIik7Ciskbm9kZV9zdWJzY3JpYmVyLT5hcHBlbmRfY29uZign cG9zdGdyZXNxbC5jb25mJywKKyAgICAibWF4X3ByZXBhcmVkX3RyYW5zYWN0aW9ucyA9IDEwIik7 CiAkbm9kZV9zdWJzY3JpYmVyLT5zdGFydDsKIAogIyBDaGVjayBpZiB0aGUgZXh0ZW5zaW9uIGlu amVjdGlvbl9wb2ludHMgaXMgYXZhaWxhYmxlLCBhcyBpdCBtYXkgYmUKQEAgLTEyNyw0ICsxMzEs NjAgQEAgJHJlc3VsdCA9CiAgICAgIlNFTEVDVCBjb3VudCgxKSBGUk9NIHJlZ3Jlc3NfdGFiIFdI RVJFIHZhbHVlID0gJ3VwZGF0ZWQnIik7CiBpcyAoJHJlc3VsdCwgNSwgJ3VwZGF0ZXMgYXJlIGFs c28gcmVwbGljYXRlZCB0byBzdWJzY3JpYmVyJyk7CiAKKyMgRW5zdXJlIFBSRVBBUkVkIHRyYW5z YWN0aW9uIGFsc28gYWZmZWN0cyB0aGUgcGFyYWxsZWwgYXBwbHkKKworJG5vZGVfc3Vic2NyaWJl ci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisgICAgIkFMVEVSIFNVQlNDUklQVElPTiByZWdyZXNz X3N1YiBESVNBQkxFOyIpOworJG5vZGVfc3Vic2NyaWJlci0+cG9sbF9xdWVyeV91bnRpbCgncG9z dGdyZXMnLAorCSJTRUxFQ1QgY291bnQoKikgPSAwIEZST00gcGdfc3RhdF9hY3Rpdml0eSBXSEVS RSBiYWNrZW5kX3R5cGUgPSAnbG9naWNhbCByZXBsaWNhdGlvbiBhcHBseSB3b3JrZXInIgorKTsK KyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgKKwkncG9zdGdyZXMnLCAiCisgICAgQUxURVIg U1VCU0NSSVBUSU9OIHJlZ3Jlc3Nfc3ViIFNFVCAodHdvX3BoYXNlID0gb24pOworICAgIEFMVEVS IFNVQlNDUklQVElPTiByZWdyZXNzX3N1YiBFTkFCTEU7Iik7CisKKyRyZXN1bHQgPSAkbm9kZV9z dWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKyAgICAiU0VMRUNUIGNvdW50KDEpIEZS T00gcGdfc3RhdF9hY3Rpdml0eSBXSEVSRSBiYWNrZW5kX3R5cGUgPSAnbG9naWNhbCByZXBsaWNh dGlvbiBwYXJhbGxlbCB3b3JrZXInIik7CitpcygkcmVzdWx0LCAnMCcsICJubyBwYXJhbGxlbCBh cHBseSB3b3JrZXJzIGV4aXN0IGFmdGVyIHJlc3RhcnQiKTsKKworIyBBdHRhY2ggYW4gaW5qZWN0 aW9uX3BvaW50LiBQYXJhbGxlbCB3b3JrZXJzIHdvdWxkIHdhaXQgYmVmb3JlIHRoZSBwcmVwYXJl Ciskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIGluamVj dGlvbl9wb2ludHNfYXR0YWNoKCdwYXJhbGxlbC13b3JrZXItYmVmb3JlLXByZXBhcmUnLCd3YWl0 Jyk7IgorKTsKKworIyBQUkVQQVJFIGEgdHJhbnNhY3Rpb24gb24gcHVibGlzaGVyLiBJdCB3b3Vs ZCBiZSBoYW5kbGVkIGJ5IGEgcGFyYWxsZWwgYXBwbHkKKyMgd29ya2VyLgorJG5vZGVfcHVibGlz aGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgcXFbCisgICAgQkVHSU47CisgICAgSU5TRVJUIElO VE8gcmVncmVzc190YWIgVkFMVUVTIChnZW5lcmF0ZV9zZXJpZXMoNTEsIDYwKSwgJ3ByZXBhcmUn KTsKKyAgICBQUkVQQVJFIFRSQU5TQUNUSU9OICdyZWdyZXNzX3ByZXBhcmUnOworXSk7CisKKyMg V2FpdCB1bnRpbCB0aGUgcGFyYWxsZWwgd29ya2VyIGVudGVycyB0aGUgaW5qZWN0aW9uIHBvaW50 LgorJG5vZGVfc3Vic2NyaWJlci0+d2FpdF9mb3JfZXZlbnQoJ2xvZ2ljYWwgcmVwbGljYXRpb24g cGFyYWxsZWwgd29ya2VyJywKKwkncGFyYWxsZWwtd29ya2VyLWJlZm9yZS1wcmVwYXJlJyk7CisK KyRvZmZzZXQgPSAtcyAkbm9kZV9zdWJzY3JpYmVyLT5sb2dmaWxlOworCisjIEluc2VydCB0dXBs ZXMgb24gcHVibGlzaGVyIGFnYWluLiBUaGlzIHRyYW5zYWN0aW9uIHdhaXRzIGZvciB0aGUgcHJl cGFyZWQKKyMgdHJhbnNhY3Rpb24KKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsCisgICAgIklOU0VSVCBJTlRPIHJlZ3Jlc3NfdGFiIFZBTFVFUyAoZ2VuZXJhdGVfc2VyaWVz KDYxLCA3MCksICd0ZXN0Jyk7Iik7CisKKyMgVmVyaWZ5IHRoZSBwYXJhbGxlbCB3b3JrZXIgd2Fp dHMgZm9yIHRoZSB0cmFuc2FjdGlvbgorJHN0ciA9ICRub2RlX3N1YnNjcmliZXItPndhaXRfZm9y X2xvZyhxci93YWl0IGZvciBkZXBlbmRlZCB4aWQgKFsxLTldWzAtOV0rKS8sICRvZmZzZXQpOwor JHhpZCA9ICRzdHIgPX4gL3dhaXQgZm9yIGRlcGVuZGVkIHhpZCAoWzEtOV1bMC05XSspLzsKKwor IyBXYWtldXAgdGhlIHBhcmFsbGVsIHdvcmtlcgorJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsIHFxWworICAgIFNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX2RldGFjaCgncGFy YWxsZWwtd29ya2VyLWJlZm9yZS1wcmVwYXJlJyk7CisgICAgU0VMRUNUIGluamVjdGlvbl9wb2lu dHNfd2FrZXVwKCdwYXJhbGxlbC13b3JrZXItYmVmb3JlLXByZXBhcmUnKTsKK10pOworCiskbm9k ZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9sb2cocXIvZmluaXNoIHdhaXRpbmcgZm9yIGRlcGVuZGVk IHhpZCAkeGlkLywgJG9mZnNldCk7CisKKyMgQ09NTUlUIHRoZSBwcmVwYXJlZCB0cmFuc2FjdGlv bi4gSXQgaXMgYWx3YXlzIGhhbmRsZWQgYnkgdGhlIGxlYWRlcgorJG5vZGVfcHVibGlzaGVyLT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywgIkNPTU1JVCBQUkVQQVJFRCAncmVncmVzc19wcmVwYXJlJzsi KTsKKyRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgncmVncmVzc19zdWInKTsKKwog ZG9uZV90ZXN0aW5nKCk7Ci0tIAoyLjQ3LjMKCg== --_009_TY7PR01MB145541DD6F5BE4CD403BA39FDF586ATY7PR01MB14554jp_ Content-Type: application/octet-stream; name="v7-0006-Track-dependencies-for-streamed-transactions.patch" Content-Description: v7-0006-Track-dependencies-for-streamed-transactions.patch Content-Disposition: attachment; filename="v7-0006-Track-dependencies-for-streamed-transactions.patch"; size=10929; creation-date="Mon, 05 Jan 2026 07:38:38 GMT"; modification-date="Mon, 05 Jan 2026 07:40:44 GMT" Content-Transfer-Encoding: base64 RnJvbSBkYjFmNzhiNGZlNzRlNzQxOWYyYzdmMGE0OTU5MjA3Mzc2NDk0YzlmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIYXlhdG8gS3Vyb2RhIDxrdXJvZGEuaGF5YXRvQGZ1aml0c3Uu Y29tPgpEYXRlOiBUaHUsIDQgRGVjIDIwMjUgMjA6NTU6MjYgKzA5MDAKU3ViamVjdDogW1BBVENI IHY3IDYvOF0gVHJhY2sgZGVwZW5kZW5jaWVzIGZvciBzdHJlYW1lZCB0cmFuc2FjdGlvbnMKClRo aXMgY29tbWl0IGFsbG93cyB0cmFja2luZyBkZXBlbmRlbmNpZXMgb2Ygc3RyZWFtZWQgdHJhbnNh Y3Rpb25zLgoKUmVnYXJkaW5nIHRoZSBzdHJlYW1pbmc9b24gY2FzZSwgZGVwZW5kZW5jeSB0cmFj a2luZyBpcyBlbmFibGVkIHdoaWxlIGFwcGx5aW5nCnNwb29sZWQgY2hhbmdlcyBmcm9tIGZpbGVz LgoKSW4gdGhlIHN0cmVhbWluZz1wYXJhbGxlbCBjYXNlLCBkZXBlbmRlbmN5IHRyYWNraW5nIGlz IHBlcmZvcm1lZCB3aGVuIHRoZSBsZWFkZXIKc2VuZHMgY2hhbmdlcyB0byBwYXJhbGxlbCB3b3Jr ZXJzLiBBcGFydCBmcm9tIG5vbi1zdHJlYW1lZCB0cmFuc2FjdGlvbnMsIHRoZQpsZWFkZXIgd2Fp dHMgZm9yIHBhcmFsbGVsIHdvcmtlcnMgdGlsbCB0aGUgYXNzaWduZWQgdHJhbnNhY3Rpb25zIGFy ZSBmaW5pc2hlZCBhdApDT01NSVQvUFJFUEFSRS9BQk9SVDsgdGh1cywgdGhlIFhJRCBvZiBzdHJl YW1lZCB0cmFuc2FjdGlvbnMgaXMgbm90IGNhY2hlZCBhcwp0aGUgbGFzdGx5IGhhbmRsZWQgb25l LiBBbHNvLCBzdHJlYW1lZCB0cmFuc2FjdGlvbnMgYXJlIG5vdCByZWNvcmRlZCBhcwpwYXJhbGxl bGl6ZWQgdHJhbnNhY3Rpb25zIGJlY2F1c2UgdXBjb21pbmcgd29ya2VycyBkbyBub3QgaGF2ZSB0 byB3YWl0IGZvciB0aGVtLgotLS0KIC4uLi9yZXBsaWNhdGlvbi9sb2dpY2FsL2FwcGx5cGFyYWxs ZWx3b3JrZXIuYyB8IDE5ICsrKysrLQogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93 b3JrZXIuYyAgICAgIHwgNjYgKysrKysrKysrKysrKysrKystLQogc3JjL2luY2x1ZGUvcmVwbGlj YXRpb24vd29ya2VyX2ludGVybmFsLmggICAgIHwgIDIgKy0KIHNyYy90ZXN0L3N1YnNjcmlwdGlv bi90LzA1MF9wYXJhbGxlbF9hcHBseS5wbCB8IDQ3ICsrKysrKysrKysrKysKIDQgZmlsZXMgY2hh bmdlZCwgMTI2IGluc2VydGlvbnMoKyksIDggZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9hcHBseXBhcmFsbGVsd29ya2VyLmMgYi9zcmMv YmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2FwcGx5cGFyYWxsZWx3b3JrZXIuYwppbmRleCA1 YjYyNjdjNjA0Ny4uYmI2NmQ2NDU4MmMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0 aW9uL2xvZ2ljYWwvYXBwbHlwYXJhbGxlbHdvcmtlci5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxp Y2F0aW9uL2xvZ2ljYWwvYXBwbHlwYXJhbGxlbHdvcmtlci5jCkBAIC0xNjgsNyArMTY4LDE0IEBA CiAgKiBrZXkpIGFzIGFub3RoZXIgb25nb2luZyB0cmFuc2FjdGlvbiAoc2VlIGhhbmRsZV9kZXBl bmRlbmN5X29uX2NoYW5nZSBmb3IKICAqIGRldGFpbHMpLiBJZiBzbywgdGhlIGxlYWRlciBzZW5k cyBhIGxpc3Qgb2YgZGVwZW5kZW50IHRyYW5zYWN0aW9uIElEcyB0byB0aGUKICAqIHBhcmFsbGVs IHdvcmtlciwgaW5kaWNhdGluZyB0aGF0IHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgbXVzdCB3 YWl0IGZvcgotICogdGhlc2UgdHJhbnNhY3Rpb25zIHRvIGNvbW1pdCBiZWZvcmUgcHJvY2VlZGlu Zy4KKyAqIHRoZXNlIHRyYW5zYWN0aW9ucyB0byBjb21taXQgYmVmb3JlIHByb2NlZWRpbmcuIElm IHRyYW5zYWN0aW9ucyBhcmUgc3RyZWFtZWQKKyAqIGJ1dCBsZWFkZXIgZGVjaWVkZXMgbm8gdG8g YXNzaWduIHBhcmFsbGVsIGFwcGx5IHdvcmtlcnMsIGRlcGVuZGVuY2llcyBhcmUKKyAqIHZlcmlm aWVkIHdoZW4gdGhlIHRyYW5zYWN0aW9uIGlzIGNvbW1pdHRlZC4KKyAqCisgKiBOb24tc3RyZWFt aW5nIHRyYW5zYWN0aW9ucworICogPT09PT09PT09PT09PT09PT09PT09PQorICogVGhlIGhhbmRs aW5nIGlzIHNpbWlsYXIgdG8gc3RyZWFtaW5nIHRyYW5zYWN0aW9ucywgYnV0IGluY2x1ZGluZyBm ZXcKKyAqIGRpZmZlcmVuY2VzOgogICoKICAqIENvbW1pdCBvcmRlcgogICogLS0tLS0tLS0tLS0t CkBAIC0xNjM1LDYgKzE2NDIsMTIgQEAgcGFfc2V0X3N0cmVhbV9hcHBseV93b3JrZXIoUGFyYWxs ZWxBcHBseVdvcmtlckluZm8gKndpbmZvKQogCXN0cmVhbV9hcHBseV93b3JrZXIgPSB3aW5mbzsK IH0KIAorYm9vbAorcGFfc3RyZWFtX2FwcGx5X3dvcmtlcl9pc19udWxsKHZvaWQpCit7CisJcmV0 dXJuIHN0cmVhbV9hcHBseV93b3JrZXIgPT0gTlVMTDsKK30KKwogLyoKICAqIEZvcm0gYSB1bmlx dWUgc2F2ZXBvaW50IG5hbWUgZm9yIHRoZSBzdHJlYW1pbmcgdHJhbnNhY3Rpb24uCiAgKgpAQCAt MTcyMCw2ICsxNzMzLDEwIEBAIHBhX3N0cmVhbV9hYm9ydChMb2dpY2FsUmVwU3RyZWFtQWJvcnRE YXRhICphYm9ydF9kYXRhKQogCVRyYW5zYWN0aW9uSWQgeGlkID0gYWJvcnRfZGF0YS0+eGlkOwog CVRyYW5zYWN0aW9uSWQgc3VieGlkID0gYWJvcnRfZGF0YS0+c3VieGlkOwogCisJLyogU3RyZWFt ZWQgdHJhbnNhY3Rpb25zIHdvbid0IGJlIHJlZ2lzdGVyZWQgKi8KKwlBc3NlcnQoIWRzaGFzaF9m aW5kKHBhcmFsbGVsaXplZF90eG5zLCAmeGlkLCBmYWxzZSkgJiYKKwkJICAgIWRzaGFzaF9maW5k KHBhcmFsbGVsaXplZF90eG5zLCAmc3VieGlkLCBmYWxzZSkpOworCiAJLyoKIAkgKiBVcGRhdGUg b3JpZ2luIHN0YXRlIHNvIHdlIGNhbiByZXN0YXJ0IHN0cmVhbWluZyBmcm9tIGNvcnJlY3QgcG9z aXRpb24KIAkgKiBpbiBjYXNlIG9mIGNyYXNoLgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVw bGljYXRpb24vbG9naWNhbC93b3JrZXIuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2lj YWwvd29ya2VyLmMKaW5kZXggOTlhMGFlYjE3NTcuLjgzYmNmMjE2ZmQzIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jCisrKyBiL3NyYy9iYWNrZW5k L3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMKQEAgLTk2OSwxMyArOTY5LDI2IEBAIGNoZWNr X2RlcGVuZGVuY3lfb25fcmVwbGljYV9pZGVudGl0eShPaWQgcmVsaWQsCiAJCQkJCQkJCQkJCQkJ ICAgJnJpZW50cnktPnJlbW90ZV94aWQsCiAJCQkJCQkJCQkJCQkJICAgbmV3X2RlcGVuZGVkX3hp ZCk7CiAKKwkvKgorCSAqIFJlbW92ZSB0aGUgZW50cnkgaWYgaXQgaXMgcmVnaXN0ZXJlZCBmb3Ig dGhlIHN0cmVhbWVkIHRyYW5zYWN0aW9ucy4gV2UKKwkgKiBkbyBub3QgaGF2ZSB0byByZWdpc3Rl ciBhbiBlbnRyeSBmb3IgdGhlbTsgVGhlIGxlYWRlciB3b3JrZXIgYWx3YXlzCisJICogd2FpdHMg dW50aWwgdGhlIHBhcmFsbGVsIHdvcmtlciBmaW5pc2hlcyBoYW5kbGluZyBzdHJlYW1lZCB0cmFu c2FjdGlvbnMsCisJICogdGh1cyBubyBuZWVkIHRvIGNvbnNpZGVyIHRoZSBwb3NzaWJsaXR5IHRo YXQgdXBjb21pbmcgcGFyYWxsZWwgd29ya2VycworCSAqIHdvdWxkIGdvIGFoZWFkLgorCSAqLwor CWlmIChUcmFuc2FjdGlvbklkSXNWYWxpZChzdHJlYW1feGlkKSAmJiAhZm91bmQpCisJeworCQlm cmVlX3JlcGxpY2FfaWRlbnRpdHlfa2V5KHJpZW50cnktPmtleWRhdGEpOworCQlyZXBsaWNhX2lk ZW50aXR5X2RlbGV0ZV9pdGVtKHJlcGxpY2FfaWRlbnRpdHlfdGFibGUsIHJpZW50cnkpOworCX0K KwogCS8qCiAJICogVXBkYXRlIHRoZSBuZXcgZGVwZW5kZWQgeGlkIGludG8gdGhlIGVudHJ5IGlm IHZhbGlkLCB0aGUgbmV3IHhpZCBjb3VsZAogCSAqIGJlIGludmFsaWQgaWYgdGhlIHRyYW5zYWN0 aW9uIHdpbGwgYmUgYXBwbGllZCBieSB0aGUgbGVhZGVyIGl0c2VsZgogCSAqIHdoaWNoIG1lYW5z IGFsbCB0aGUgY2hhbmdlcyB3aWxsIGJlIGNvbW1pdHRlZCBiZWZvcmUgcHJvY2Vzc2luZyBuZXh0 CiAJICogdHJhbnNhY3Rpb24sIHNvIG5vIG5lZWQgdG8gYmUgZGVwZW5kZWQgb24uCiAJICovCi0J aWYgKFRyYW5zYWN0aW9uSWRJc1ZhbGlkKG5ld19kZXBlbmRlZF94aWQpKQorCWVsc2UgaWYgKFRy YW5zYWN0aW9uSWRJc1ZhbGlkKG5ld19kZXBlbmRlZF94aWQpKQogCQlyaWVudHJ5LT5yZW1vdGVf eGlkID0gbmV3X2RlcGVuZGVkX3hpZDsKIAogCS8qCkBAIC0xMDg5LDggKzExMDIsMTEgQEAgaGFu ZGxlX2RlcGVuZGVuY3lfb25fY2hhbmdlKExvZ2ljYWxSZXBNc2dUeXBlIGFjdGlvbiwgU3RyaW5n SW5mbyBzLAogCSAqLwogCVN0cmluZ0luZm9EYXRhIGNoYW5nZSA9ICpzOwogCi0JLyogQ29tcHV0 ZSBkZXBlbmRlbmN5IG9ubHkgZm9yIG5vbi1zdHJlYW1pbmcgdHJhbnNhY3Rpb24gKi8KLQlpZiAo aW5fc3RyZWFtZWRfdHJhbnNhY3Rpb24gfHwgKHdpbmZvICYmIHdpbmZvLT5zdHJlYW1fdHhuKSkK KwkvKgorCSAqIFNraXAgaWYgd2UgYXJlIGhhbmRsaW5nIHN0cmVhbWluZyB0cmFuc2FjdGlvbnMg YnV0IGNoYW5nZXMgYXJlIG5vdAorCSAqIGFwcGxpZWQgeWV0LgorCSAqLworCWlmIChwYV9zdHJl YW1fYXBwbHlfd29ya2VyX2lzX251bGwoKSAmJiBpbl9zdHJlYW1lZF90cmFuc2FjdGlvbikKIAkJ cmV0dXJuOwogCiAJLyogT25seSB0aGUgbGVhZGVyIGNoZWNrcyBkZXBlbmRlbmNpZXMgYW5kIHNj aGVkdWxlcyB0aGUgcGFyYWxsZWwgYXBwbHkgKi8KQEAgLTE0NTAsNyArMTQ2NiwxOCBAQCBoYW5k bGVfc3RyZWFtZWRfdHJhbnNhY3Rpb24oTG9naWNhbFJlcE1zZ1R5cGUgYWN0aW9uLCBTdHJpbmdJ bmZvIHMpCiAJCQkJKGVycmNvZGUoRVJSQ09ERV9QUk9UT0NPTF9WSU9MQVRJT04pLAogCQkJCSBl cnJtc2dfaW50ZXJuYWwoImludmFsaWQgdHJhbnNhY3Rpb24gSUQgaW4gc3RyZWFtZWQgcmVwbGlj YXRpb24gdHJhbnNhY3Rpb24iKSkpOwogCi0JaGFuZGxlX2RlcGVuZGVuY3lfb25fY2hhbmdlKGFj dGlvbiwgcywgY3VycmVudF94aWQsIHdpbmZvKTsKKwkvKgorCSAqIENoZWNrIGRlcGVuZGVuY2ll cyByZWxhdGVkIHRvIHRoZSByZWNlaXZlZCBjaGFuZ2UuIFRoZSBYSUQgb2YgdGhlIHRvcAorCSAq IHRyYW5zYWN0aW9uIGlzIGFsd2F5cyB1c2VkIHRvIGF2b2lkIGRldGVjdGluZyBmYWxzZS1wb3Np dGl2ZQorCSAqIGRlcGVuZGVuY2llcyBiZXR3ZWVuIHRvcCBhbmQgc3ViIHRyYW5zYWN0aW9ucy4g U3ViLXRyYW5zYWN0aW9ucyBjYW4gYmUKKwkgKiByZXBsaWNhdGVkIGZvciBzdHJlYW1lZCB0cmFu c2FjdGlvbnMsIGFuZCB0aGV5IHdvbid0IGJlIG1hcmtlZCBhcworCSAqIHBhcmFsbGVsaXplZCBz byB0aGF0IHBhcmFsbGVsIHdvcmtlcnMgd29uJ3Qgd2FpdCBmb3Igcm9sbGVkLWJhY2sKKwkgKiBz dWItdHJhbnNhY3Rpb25zLgorCSAqLworCWhhbmRsZV9kZXBlbmRlbmN5X29uX2NoYW5nZShhY3Rp b24sIHMsCisJCQkJCQkJCWluX3N0cmVhbWVkX3RyYW5zYWN0aW9uCisJCQkJCQkJCT8gc3RyZWFt X3hpZCA6IHJlbW90ZV94aWQsCisJCQkJCQkJCXdpbmZvKTsKIAogCS8qCiAJICogUmUtZmV0Y2gg dGhlIGxhdGVzdCBhcHBseSBhY3Rpb24gYXMgaXQgbWlnaHQgaGF2ZSBiZWVuIGNoYW5nZWQgZHVy aW5nCkBAIC0yNTg3LDYgKzI2MTQsMTAgQEAgYXBwbHlfaGFuZGxlX3N0cmVhbV9wcmVwYXJlKFN0 cmluZ0luZm8gcykKIAkJCWFwcGx5X3Nwb29sZWRfbWVzc2FnZXMoTXlMb2dpY2FsUmVwV29ya2Vy LT5zdHJlYW1fZmlsZXNldCwKIAkJCQkJCQkJICAgcHJlcGFyZV9kYXRhLnhpZCwgcHJlcGFyZV9k YXRhLnByZXBhcmVfbHNuKTsKIAorCQkJLyogV2FpdCB1bnRpbCB0aGUgbGFzdCB0cmFuc2FjdGlv biBmaW5pc2hlcyAqLworCQkJaWYgKFRyYW5zYWN0aW9uSWRJc1ZhbGlkKGxhc3RfcmVtb3RlX3hp ZCkpCisJCQkJcGFfd2FpdF9mb3JfZGVwZW5kZWRfdHJhbnNhY3Rpb24obGFzdF9yZW1vdGVfeGlk KTsKKwogCQkJLyogTWFyayB0aGUgdHJhbnNhY3Rpb24gYXMgcHJlcGFyZWQuICovCiAJCQlhcHBs eV9oYW5kbGVfcHJlcGFyZV9pbnRlcm5hbCgmcHJlcGFyZV9kYXRhKTsKIApAQCAtMjYxMCw3ICsy NjQxLDggQEAgYXBwbHlfaGFuZGxlX3N0cmVhbV9wcmVwYXJlKFN0cmluZ0luZm8gcykKIAkJY2Fz ZSBUUkFOU19MRUFERVJfU0VORF9UT19QQVJBTExFTDoKIAkJCUFzc2VydCh3aW5mbyk7CiAKLQkJ CWlmIChwYV9zZW5kX2RhdGEod2luZm8sIHMtPmxlbiwgcy0+ZGF0YSkpCisJCQlpZiAoYnVpbGRf ZGVwZW5kZW5jeV93aXRoX2xhc3RfY29tbWl0dGVkX3R4bih3aW5mbykgJiYKKwkJCQlwYV9zZW5k X2RhdGEod2luZm8sIHMtPmxlbiwgcy0+ZGF0YSkpCiAJCQl7CiAJCQkJLyogRmluaXNoIHByb2Nl c3NpbmcgdGhlIHN0cmVhbWluZyB0cmFuc2FjdGlvbi4gKi8KIAkJCQlwYV94YWN0X2ZpbmlzaCh3 aW5mbywgcHJlcGFyZV9kYXRhLmVuZF9sc24pOwpAQCAtMjY3Niw2ICsyNzA4LDExIEBAIGFwcGx5 X2hhbmRsZV9zdHJlYW1fcHJlcGFyZShTdHJpbmdJbmZvIHMpCiAKIAlwZ3N0YXRfcmVwb3J0X3N0 YXQoZmFsc2UpOwogCisJLyoKKwkgKiBObyBuZWVkIHRvIHVwZGF0ZSB0aGUgbGFzdF9yZW1vdGVf eGlkIGhlcmUgYmVjYXVzZSBsZWFkZXIgd29ya2VyCisJICogYWx3YXlzIHdhaXQgdW50aWwgc3Ry ZWFtZWQgdHJhbnNhY3Rpb25zIGZpbmlzaC4KKwkgKi8KKwogCS8qCiAJICogUHJvY2VzcyBhbnkg dGFibGVzIHRoYXQgYXJlIGJlaW5nIHN5bmNocm9uaXplZCBpbiBwYXJhbGxlbCwgYXMgd2VsbCBh cwogCSAqIGFueSBuZXdseSBhZGRlZCB0YWJsZXMgb3Igc2VxdWVuY2VzLgpAQCAtMzQ2MCw2ICsz NDk3LDEwIEBAIGFwcGx5X2hhbmRsZV9zdHJlYW1fY29tbWl0KFN0cmluZ0luZm8gcykKIAkJCWFw cGx5X3Nwb29sZWRfbWVzc2FnZXMoTXlMb2dpY2FsUmVwV29ya2VyLT5zdHJlYW1fZmlsZXNldCwg eGlkLAogCQkJCQkJCQkgICBjb21taXRfZGF0YS5jb21taXRfbHNuKTsKIAorCQkJLyogV2FpdCB1 bnRpbCB0aGUgbGFzdCB0cmFuc2FjdGlvbiBmaW5pc2hlcyAqLworCQkJaWYgKFRyYW5zYWN0aW9u SWRJc1ZhbGlkKGxhc3RfcmVtb3RlX3hpZCkpCisJCQkJcGFfd2FpdF9mb3JfZGVwZW5kZWRfdHJh bnNhY3Rpb24obGFzdF9yZW1vdGVfeGlkKTsKKwogCQkJYXBwbHlfaGFuZGxlX2NvbW1pdF9pbnRl cm5hbCgmY29tbWl0X2RhdGEpOwogCiAJCQkvKiBVbmxpbmsgdGhlIGZpbGVzIHdpdGggc2VyaWFs aXplZCBjaGFuZ2VzIGFuZCBzdWJ4YWN0IGluZm8uICovCkBAIC0zNDcxLDcgKzM1MTIsMjAgQEAg YXBwbHlfaGFuZGxlX3N0cmVhbV9jb21taXQoU3RyaW5nSW5mbyBzKQogCQljYXNlIFRSQU5TX0xF QURFUl9TRU5EX1RPX1BBUkFMTEVMOgogCQkJQXNzZXJ0KHdpbmZvKTsKIAotCQkJaWYgKHBhX3Nl bmRfZGF0YSh3aW5mbywgcy0+bGVuLCBzLT5kYXRhKSkKKwkJCS8qCisJCQkgKiBBcGFydCBmcm9t IG5vbi1zdHJlYW1pbmcgY2FzZSwgbm8gbmVlZCB0byBtYXJrIHRoaXMgdHJhbnNhY3Rpb24KKwkJ CSAqIGFzIHBhcmFsbGVsaXplZC4gQmVjYXVzZSB0aGUgbGVhZGVyIHdhaXRzIHVudGlsIHRoZSBz dHJlYW1lZAorCQkJICogdHJhbnNhY3Rpb24gaXMgY29tbWl0dGVkIHRodXMgY29tbWl0IG9yZGVy aW5nIGlzIGFsd2F5cworCQkJICogcHJlc2VydmVkLgorCQkJICovCisKKwkJCS8qCisJCQkgKiBC dWlsZCBhIGRlcGVuZGVuY3kgYmV0d2VlbiB0aGlzIHRyYW5zYWN0aW9uIGFuZCB0aGUgbGFzdGx5 CisJCQkgKiBjb21taXR0ZWQgdHJhbnNhY3Rpb24gdG8gcHJlc2VydmUgdGhlIGNvbW1pdCBvcmRl ci4gVGhlbiB0cnkgdG8KKwkJCSAqIHNlbmQgYSBDT01NSVQgbWVzc2FnZSBpZiBzdWNjZWVkZWQu CisJCQkgKi8KKwkJCWlmIChidWlsZF9kZXBlbmRlbmN5X3dpdGhfbGFzdF9jb21taXR0ZWRfdHhu KHdpbmZvKSAmJgorCQkJCXBhX3NlbmRfZGF0YSh3aW5mbywgcy0+bGVuLCBzLT5kYXRhKSkKIAkJ CXsKIAkJCQkvKiBGaW5pc2ggcHJvY2Vzc2luZyB0aGUgc3RyZWFtaW5nIHRyYW5zYWN0aW9uLiAq LwogCQkJCXBhX3hhY3RfZmluaXNoKHdpbmZvLCBjb21taXRfZGF0YS5lbmRfbHNuKTsKZGlmZiAt LWdpdCBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dvcmtlcl9pbnRlcm5hbC5oIGIvc3JjL2lu Y2x1ZGUvcmVwbGljYXRpb24vd29ya2VyX2ludGVybmFsLmgKaW5kZXggNTM3MWVlNzY3ZjEuLjY5 ZWNkNTFhMzU5IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93b3JrZXJfaW50 ZXJuYWwuaAorKysgYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93b3JrZXJfaW50ZXJuYWwuaApA QCAtMzU0LDcgKzM1NCw3IEBAIGV4dGVybiB2b2lkIHBhX3N3aXRjaF90b19wYXJ0aWFsX3Nlcmlh bGl6ZShQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAqd2luZm8sCiBleHRlcm4gdm9pZCBwYV9zZXRf eGFjdF9zdGF0ZShQYXJhbGxlbEFwcGx5V29ya2VyU2hhcmVkICp3c2hhcmVkLAogCQkJCQkJCSAg UGFyYWxsZWxUcmFuc1N0YXRlIHhhY3Rfc3RhdGUpOwogZXh0ZXJuIHZvaWQgcGFfc2V0X3N0cmVh bV9hcHBseV93b3JrZXIoUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKndpbmZvKTsKLQorZXh0ZXJu IGJvb2wgcGFfc3RyZWFtX2FwcGx5X3dvcmtlcl9pc19udWxsKHZvaWQpOwogZXh0ZXJuIHZvaWQg cGFfc3RhcnRfc3VidHJhbnMoVHJhbnNhY3Rpb25JZCBjdXJyZW50X3hpZCwKIAkJCQkJCQkgIFRy YW5zYWN0aW9uSWQgdG9wX3hpZCk7CiBleHRlcm4gdm9pZCBwYV9yZXNldF9zdWJ0cmFucyh2b2lk KTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzA1MF9wYXJhbGxlbF9hcHBs eS5wbCBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzA1MF9wYXJhbGxlbF9hcHBseS5wbAppbmRl eCAxNTk3M2Y3ZDBlMC4uOTI1NGI4NWQzNTAgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3N1YnNjcmlw dGlvbi90LzA1MF9wYXJhbGxlbF9hcHBseS5wbAorKysgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24v dC8wNTBfcGFyYWxsZWxfYXBwbHkucGwKQEAgLTE4Nyw0ICsxODcsNTEgQEAgJG5vZGVfc3Vic2Ny aWJlci0+d2FpdF9mb3JfbG9nKHFyL2ZpbmlzaCB3YWl0aW5nIGZvciBkZXBlbmRlZCB4aWQgJHhp ZC8sICRvZmZzZXQKICRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJDT01N SVQgUFJFUEFSRUQgJ3JlZ3Jlc3NfcHJlcGFyZSc7Iik7CiAkbm9kZV9wdWJsaXNoZXItPndhaXRf Zm9yX2NhdGNodXAoJ3JlZ3Jlc3Nfc3ViJyk7CiAKKyMgRW5zdXJlIHN0cmVhbWVkIHRyYW5zYWN0 aW9ucyB3YWl0cyB0aGUgcHJldmlvdXMgdHJhbnNhY3Rpb24KKworJG5vZGVfcHVibGlzaGVyLT5h cHBlbmRfY29uZigncG9zdGdyZXNxbC5jb25mJywKKyAgICJsb2dpY2FsX2RlY29kaW5nX3dvcmtf bWVtID0gNjRrQiIpOworJG5vZGVfcHVibGlzaGVyLT5yZWxvYWQ7CisjIFJ1biBhIHF1ZXJ5IHRv IG1ha2Ugc3VyZSB0aGF0IHRoZSByZWxvYWQgaGFzIHRha2VuIGVmZmVjdC4KKyRub2RlX3B1Ymxp c2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgMSIpOworCisjIEF0dGFjaCB0aGUg aW5qZWN0aW9uX3BvaW50IGFnYWluCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywKKwkiU0VMRUNUIGluamVjdGlvbl9wb2ludHNfYXR0YWNoKCdwYXJhbGxlbC13b3JrZXIt YmVmb3JlLWNvbW1pdCcsJ3dhaXQnKTsiCispOworCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNx bCgncG9zdGdyZXMnLAorICAgICJJTlNFUlQgSU5UTyByZWdyZXNzX3RhYiBWQUxVRVMgKGdlbmVy YXRlX3Nlcmllcyg3MSwgODApLCAndGVzdCcpOyIpOworCisjIFdhaXQgdW50aWwgdGhlIHBhcmFs bGVsIHdvcmtlciBlbnRlcnMgdGhlIGluamVjdGlvbiBwb2ludC4KKyRub2RlX3N1YnNjcmliZXIt PndhaXRfZm9yX2V2ZW50KCdsb2dpY2FsIHJlcGxpY2F0aW9uIHBhcmFsbGVsIHdvcmtlcicsCisJ J3BhcmFsbGVsLXdvcmtlci1iZWZvcmUtY29tbWl0Jyk7CisKKyMgUnVuIGEgdHJhbnNhY3Rpb24g d2hpY2ggd291bGQgYmUgc3RyZWFtZWQKK215ICRoID0gJG5vZGVfcHVibGlzaGVyLT5iYWNrZ3Jv dW5kX3BzcWwoJ3Bvc3RncmVzJywgb25fZXJyb3Jfc3RvcCA9PiAwKTsKKworJG9mZnNldCA9IC1z ICRub2RlX3N1YnNjcmliZXItPmxvZ2ZpbGU7CisKKyRoLT5xdWVyeV9zYWZlKAorCXF7CitCRUdJ TjsKK1VQREFURSByZWdyZXNzX3RhYiBTRVQgdmFsdWUgPSAnc3RyZWFtZWQtdXBkYXRlZCcgV0hF UkUgaWQgQkVUV0VFTiA3MSBBTkQgODA7CitJTlNFUlQgSU5UTyByZWdyZXNzX3RhYiBWQUxVRVMg KGdlbmVyYXRlX3NlcmllcygxMDAsIDUxMDApLCAnc3RyZWFtZWQnKTsKK30pOworCisjIFZlcmlm eSB0aGUgcGFyYWxsZWwgd29ya2VyIHdhaXRzIGZvciB0aGUgdHJhbnNhY3Rpb24KKyRzdHIgPSAk bm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9sb2cocXIvd2FpdCBmb3IgZGVwZW5kZWQgeGlkIChb MS05XVswLTldKykvLCAkb2Zmc2V0KTsKKyR4aWQgPSAkc3RyID1+IC93YWl0IGZvciBkZXBlbmRl ZCB4aWQgKFsxLTldWzAtOV0rKS87CisKKyMgV2FrZXVwIHRoZSBwYXJhbGxlbCB3b3JrZXIKKyRu b2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCBxcVsKKyAgICBTRUxFQ1QgaW5q ZWN0aW9uX3BvaW50c19kZXRhY2goJ3BhcmFsbGVsLXdvcmtlci1iZWZvcmUtY29tbWl0Jyk7Cisg ICAgU0VMRUNUIGluamVjdGlvbl9wb2ludHNfd2FrZXVwKCdwYXJhbGxlbC13b3JrZXItYmVmb3Jl LWNvbW1pdCcpOworXSk7CisKKyMgVmVyaWZ5IHRoZSBzdHJlYW1lZCB0cmFuc2FjdGlvbiBjYW4g YmUgYXBwbGllZAorJG5vZGVfc3Vic2NyaWJlci0+d2FpdF9mb3JfbG9nKHFyL2ZpbmlzaCB3YWl0 aW5nIGZvciBkZXBlbmRlZCB4aWQgJHhpZC8sICRvZmZzZXQpOworCiskaC0+cXVlcnlfc2FmZSgi Q09NTUlUOyIpOworCiBkb25lX3Rlc3RpbmcoKTsKLS0gCjIuNDcuMwoK --_009_TY7PR01MB145541DD6F5BE4CD403BA39FDF586ATY7PR01MB14554jp_ Content-Type: application/octet-stream; name="v7-0007-Wait-applying-transaction-if-one-of-user-defined-.patch" Content-Description: v7-0007-Wait-applying-transaction-if-one-of-user-defined-.patch Content-Disposition: attachment; filename="v7-0007-Wait-applying-transaction-if-one-of-user-defined-.patch"; size=12068; creation-date="Mon, 05 Jan 2026 07:38:38 GMT"; modification-date="Mon, 05 Jan 2026 07:40:44 GMT" Content-Transfer-Encoding: base64 RnJvbSA0NWMyYzQwY2FhMTMyMTllNzg2MGNiODFkODZmYTlkNzQyY2MxNzk4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIYXlhdG8gS3Vyb2RhIDxrdXJvZGEuaGF5YXRvQGZ1aml0c3Uu Y29tPgpEYXRlOiBUdWUsIDIzIERlYyAyMDI1IDE3OjU4OjE1ICswOTAwClN1YmplY3Q6IFtQQVRD SCB2NyA3LzhdIFdhaXQgYXBwbHlpbmcgdHJhbnNhY3Rpb24gaWYgb25lIG9mIHVzZXItZGVmaW5l ZAogdHJpZ2dlcnMgaXMgaW1tdXRhYmxlCgpTaW5jZSBtYW55IHBhcmFsbGVsIHdvcmtlcnMgYXBw bHkgdHJhbnNhY3Rpb25zLCB0cmlnZ2VycyBmb3IgcmVsYXRpb25zIGNhbiBhbHNvCmJlIGZpcmVk IGluIHBhcmFsbGVsLCB3aGljaCBtYXkgb2J0YWluIHVuZXhwZWN0ZWQgcmVzdWx0cy4gVG8gbWFr ZSBpdCBzYWZlLApwYXJhbGxlbCBhcHBseSB3b3JrZXJzIHdhaXQgZm9yIHRoZSBwcmV2aW91c2x5 IGRpc3BhdGNoZWQgdHJhbnNhY3Rpb24gYmVmb3JlCmFwcGx5aW5nIGNoYW5nZXMgdG8gdGhlIHJl bGF0aW9uIHRoYXQgaGFzIG11dGFibGUgdHJpZ2dlcnMuCi0tLQogc3JjL2JhY2tlbmQvcmVwbGlj YXRpb24vbG9naWNhbC9yZWxhdGlvbi5jIHwgMTIzICsrKysrKysrKysrKysrKysrKy0tLQogc3Jj L2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYyAgIHwgIDY4ICsrKysrKysrKysr Kwogc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbHJlbGF0aW9uLmggIHwgIDIwICsrKysK IDMgZmlsZXMgY2hhbmdlZCwgMTk3IGluc2VydGlvbnMoKyksIDE0IGRlbGV0aW9ucygtKQoKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcmVsYXRpb24uYyBiL3Ny Yy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcmVsYXRpb24uYwppbmRleCA5OTkxYmZlNzZj Yy4uMTRmM2ViZjcyNWUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2lj YWwvcmVsYXRpb24uYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3JlbGF0 aW9uLmMKQEAgLTIxLDcgKzIxLDkgQEAKICNpbmNsdWRlICJhY2Nlc3MvZ2VuYW0uaCIKICNpbmNs dWRlICJhY2Nlc3MvdGFibGUuaCIKICNpbmNsdWRlICJjYXRhbG9nL25hbWVzcGFjZS5oIgorI2lu Y2x1ZGUgImNhdGFsb2cvcGdfcHJvYy5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfc3Vic2NyaXB0 aW9uX3JlbC5oIgorI2luY2x1ZGUgImNvbW1hbmRzL3RyaWdnZXIuaCIKICNpbmNsdWRlICJleGVj dXRvci9leGVjdXRvci5oIgogI2luY2x1ZGUgIm5vZGVzL21ha2VmdW5jcy5oIgogI2luY2x1ZGUg InJlcGxpY2F0aW9uL2xvZ2ljYWxyZWxhdGlvbi5oIgpAQCAtMTU5LDYgKzE2MSwxMCBAQCBsb2dp Y2FscmVwX3JlbG1hcF9mcmVlX2VudHJ5KExvZ2ljYWxSZXBSZWxNYXBFbnRyeSAqZW50cnkpCiAg KgogICogQ2FsbGVkIHdoZW4gbmV3IHJlbGF0aW9uIG1hcHBpbmcgaXMgc2VudCBieSB0aGUgcHVi bGlzaGVyIHRvIHVwZGF0ZQogICogb3VyIGV4cGVjdGVkIHZpZXcgb2YgaW5jb21pbmcgZGF0YSBm cm9tIHNhaWQgcHVibGlzaGVyLgorICoKKyAqIE5vdGUgdGhhdCB3ZSBkbyBub3QgY2hlY2sgdGhl IHVzZXItZGVmaW5lZCBjb25zdHJhaW50cyBoZXJlLiBQb3N0Z3JlU1FMIGhhcworICogYWxyZWFk eSBhc3N1bWVkIHRoYXQgQ0hFQ0sgY29uc3RyYWludHMnIGNvbmRpdGlvbnMgYXJlIGltbXV0YWJs ZSBhbmQgaGVyZQorICogZm9sbG93cyB0aGUgcnVsZS4KICAqLwogdm9pZAogbG9naWNhbHJlcF9y ZWxtYXBfdXBkYXRlKExvZ2ljYWxSZXBSZWxhdGlvbiAqcmVtb3RlcmVsKQpAQCAtMjA4LDYgKzIx NCw4IEBAIGxvZ2ljYWxyZXBfcmVsbWFwX3VwZGF0ZShMb2dpY2FsUmVwUmVsYXRpb24gKnJlbW90 ZXJlbCkKIAkJKHJlbW90ZXJlbC0+cmVsa2luZCA9PSAwKSA/IFJFTEtJTkRfUkVMQVRJT04gOiBy ZW1vdGVyZWwtPnJlbGtpbmQ7CiAKIAllbnRyeS0+cmVtb3RlcmVsLmF0dGtleXMgPSBibXNfY29w eShyZW1vdGVyZWwtPmF0dGtleXMpOworCisJZW50cnktPnBhcmFsbGVsX3NhZmUgPSBMT0dJQ0FM UkVQX1BBUkFMTEVMX1VOS05PV047CiAJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGN0eCk7CiB9 CiAKQEAgLTM1MywyNyArMzYxLDc5IEBAIGxvZ2ljYWxyZXBfcmVsX21hcmtfdXBkYXRhYmxlKExv Z2ljYWxSZXBSZWxNYXBFbnRyeSAqZW50cnkpCiB9CiAKIC8qCi0gKiBPcGVuIHRoZSBsb2NhbCBy ZWxhdGlvbiBhc3NvY2lhdGVkIHdpdGggdGhlIHJlbW90ZSBvbmUuCisgKiBDaGVjayBhbGwgbG9j YWwgdHJpZ2dlcnMgZm9yIHRoZSByZWxhdGlvbiB0byBzZWUgdGhlIHBhcmFsbGVsaXphYmlsaXR5 LgogICoKLSAqIFJlYnVpbGRzIHRoZSBSZWxjYWNoZSBtYXBwaW5nIGlmIGl0IHdhcyBpbnZhbGlk YXRlZCBieSBsb2NhbCBEREwuCisgKiBXZSByZWdhcmQgcmVsYXRpb25zIGFzIGFwcGxpY2FibGUg aW4gcGFyYWxsZWwgaWYgYWxsIHRyaWdnZXJzIGFyZSBpbW11dGFibGUuCisgKiBSZXN1bHQgaXMg ZGlyZWN0bHkgc2V0IHRvIExvZ2ljYWxSZXBSZWxNYXBFbnRyeTo6cGFyYWxsZWxfc2FmZS4KICAq LwotTG9naWNhbFJlcFJlbE1hcEVudHJ5ICoKLWxvZ2ljYWxyZXBfcmVsX29wZW4oTG9naWNhbFJl cFJlbElkIHJlbW90ZWlkLCBMT0NLTU9ERSBsb2NrbW9kZSkKK3N0YXRpYyB2b2lkCitjaGVja19k ZWZpbmVkX3RyaWdnZXJzKExvZ2ljYWxSZXBSZWxNYXBFbnRyeSAqZW50cnkpCit7CisJVHJpZ2dl ckRlc2MgKnRyaWdkZXNjID0gZW50cnktPmxvY2FscmVsLT50cmlnZGVzYzsKKworCS8qIFF1aWNr IGV4aXQgaWYgdHJpZmZlciBpcyBub3QgZGVmaW5lZCAqLworCWlmICh0cmlnZGVzYyA9PSBOVUxM KQorCXsKKwkJZW50cnktPnBhcmFsbGVsX3NhZmUgPSBMT0dJQ0FMUkVQX1BBUkFMTEVMX1NBRkU7 CisJCXJldHVybjsKKwl9CisKKwkvKiBTZWVrIHRyaWdnZXJzIG9uZSBieSBvbmUgdG8gc2VlIHRo ZSB2b2xhdGlsaXR5ICovCisJZm9yIChpbnQgaSA9IDA7IGkgPCB0cmlnZGVzYy0+bnVtdHJpZ2dl cnM7IGkrKykKKwl7CisJCVRyaWdnZXIgKnRyaWdnZXIgPSAmdHJpZ2Rlc2MtPnRyaWdnZXJzW2ld OworCisJCUFzc2VydChPaWRJc1ZhbGlkKHRyaWdnZXItPnRnZm9pZCkpOworCisJCS8qIFNraXAg aWYgdGhlIHRyaWdnZXIgaXMgbm90IGVuYWJsZWQgZm9yIGxvZ2ljYWwgcmVwbGljYXRpb24gKi8K KwkJaWYgKHRyaWdnZXItPnRnZW5hYmxlZCA9PSBUUklHR0VSX0RJU0FCTEVEIHx8CisJCQl0cmln Z2VyLT50Z2VuYWJsZWQgPT0gVFJJR0dFUl9GSVJFU19PTl9PUklHSU4pCisJCQljb250aW51ZTsK KworCQkvKiBDaGVjayB0aGUgdm9sYXRpbGl0eSBvZiB0aGUgdHJpZ2dlci4gRXhpdCBpZiBpdCBp cyBub3QgaW1tdXRhYmxlICovCisJCWlmIChmdW5jX3ZvbGF0aWxlKHRyaWdnZXItPnRnZm9pZCkg IT0gUFJPVk9MQVRJTEVfSU1NVVRBQkxFKQorCQl7CisJCQllbnRyeS0+cGFyYWxsZWxfc2FmZSA9 IExPR0lDQUxSRVBfUEFSQUxMRUxfUkVTVFJJQ1RFRDsKKwkJCXJldHVybjsKKwkJfQorCX0KKwor CS8qIEFsbCB0cmlnZ2VycyBhcmUgaW1tdXRhYmxlLCBzZXQgYXMgcGFyYWxsZWwgc2FmZSAqLwor CWVudHJ5LT5wYXJhbGxlbF9zYWZlID0gTE9HSUNBTFJFUF9QQVJBTExFTF9TQUZFOworfQorCisv KgorICogQWN0dWFsIHdvcmtob3JzZSBmb3IgbG9naWNhbHJlcF9yZWxfb3BlbigpLgorICoKKyAq IENhbGxlciBtdXN0IHNwZWNpZnkgKmVpdGhlciogZW50cnkgb3Iga2V5LiBJZiB0aGUgZW50cnkg aXMgc3BlY2lmaWVkLCBpdHMKKyAqIGF0dHJpYnV0ZXMgYXJlIGZpbGxlZCBhbmQgcmV0dXJuZWQu IFRoZSBsb2dpY2FsIHJlbGF0aW9uIGlzIGtlcHQgb3BlbmluZy4KKyAqIElmIHRoZSBrZXkgaXMg Z2l2ZW4sIHRoZSBjb3JyZXNwb25kaW5nIGVudHJ5IGlzIGZpcnN0IHNlYXJjaGVkIGluIHRoZSBo YXNoCisgKiB0YWJsZSBhbmQgcHJvY2Vzc2VkIGFzIGluIHRoZSBhYm92ZSBjYXNlLiBBdCB0aGUg ZW5kLCBsb2dpY2FsIHJlcGxpY2F0aW9uIGlzCisgKiBjbG9zZWQuCisgICovCit2b2lkCitsb2dp Y2FscmVwX3JlbF9sb2FkKExvZ2ljYWxSZXBSZWxNYXBFbnRyeSAqZW50cnksIExvZ2ljYWxSZXBS ZWxJZCByZW1vdGVpZCwKKwkJCQkJTE9DS01PREUgbG9ja21vZGUpCiB7Ci0JTG9naWNhbFJlcFJl bE1hcEVudHJ5ICplbnRyeTsKLQlib29sCQlmb3VuZDsKIAlMb2dpY2FsUmVwUmVsYXRpb24gKnJl bW90ZXJlbDsKIAotCWlmIChMb2dpY2FsUmVwUmVsTWFwID09IE5VTEwpCi0JCWxvZ2ljYWxyZXBf cmVsbWFwX2luaXQoKTsKKwlBc3NlcnQoKGVudHJ5ICYmICFyZW1vdGVpZCkgfHwgKCFlbnRyeSAm JiByZW1vdGVpZCkpOwogCi0JLyogU2VhcmNoIGZvciBleGlzdGluZyBlbnRyeS4gKi8KLQllbnRy eSA9IGhhc2hfc2VhcmNoKExvZ2ljYWxSZXBSZWxNYXAsICZyZW1vdGVpZCwKLQkJCQkJCUhBU0hf RklORCwgJmZvdW5kKTsKKwlpZiAoIWVudHJ5KQorCXsKKwkJYm9vbAlmb3VuZDsKIAotCWlmICgh Zm91bmQpCi0JCWVsb2coRVJST1IsICJubyByZWxhdGlvbiBtYXAgZW50cnkgZm9yIHJlbW90ZSBy ZWxhdGlvbiBJRCAldSIsCi0JCQkgcmVtb3RlaWQpOworCQlpZiAoTG9naWNhbFJlcFJlbE1hcCA9 PSBOVUxMKQorCQkJbG9naWNhbHJlcF9yZWxtYXBfaW5pdCgpOworCisJCS8qIFNlYXJjaCBmb3Ig ZXhpc3RpbmcgZW50cnkuICovCisJCWVudHJ5ID0gaGFzaF9zZWFyY2goTG9naWNhbFJlcFJlbE1h cCwgJnJlbW90ZWlkLAorCQkJCQkJCUhBU0hfRklORCwgJmZvdW5kKTsKKworCQlpZiAoIWZvdW5k KQorCQkJZWxvZyhFUlJPUiwgIm5vIHJlbGF0aW9uIG1hcCBlbnRyeSBmb3IgcmVtb3RlIHJlbGF0 aW9uIElEICV1IiwKKwkJCQlyZW1vdGVpZCk7CisJfQogCiAJcmVtb3RlcmVsID0gJmVudHJ5LT5y ZW1vdGVyZWw7CiAKQEAgLTQ5OSw2ICs1NTksMTMgQEAgbG9naWNhbHJlcF9yZWxfb3BlbihMb2dp Y2FsUmVwUmVsSWQgcmVtb3RlaWQsIExPQ0tNT0RFIGxvY2ttb2RlKQogCQllbnRyeS0+bG9jYWxp bmRleG9pZCA9IEZpbmRMb2dpY2FsUmVwTG9jYWxJbmRleChlbnRyeS0+bG9jYWxyZWwsIHJlbW90 ZXJlbCwKIAkJCQkJCQkJCQkJCQkJZW50cnktPmF0dHJtYXApOwogCisJCS8qCisJCSAqIExlYWRl ciBtdXN0IGFsc28gY29sbGVjdCBhbGwgbG9jYWwgdW5pcXVlIGluZGV4ZXMgZm9yIGRlcGVuZGVu Y3kKKwkJICogdHJhY2tpbmcuCisJCSAqLworCQlpZiAoYW1fbGVhZGVyX2FwcGx5X3dvcmtlcigp KQorCQkJY2hlY2tfZGVmaW5lZF90cmlnZ2VycyhlbnRyeSk7CisKIAkJZW50cnktPmxvY2FscmVs dmFsaWQgPSB0cnVlOwogCX0KIApAQCAtNTA3LDYgKzU3NCwzNCBAQCBsb2dpY2FscmVwX3JlbF9v cGVuKExvZ2ljYWxSZXBSZWxJZCByZW1vdGVpZCwgTE9DS01PREUgbG9ja21vZGUpCiAJCQkJCQkJ CQkJCSAgIGVudHJ5LT5sb2NhbHJlbG9pZCwKIAkJCQkJCQkJCQkJICAgJmVudHJ5LT5zdGF0ZWxz bik7CiAKKwlpZiAocmVtb3RlaWQpCisJCWxvZ2ljYWxyZXBfcmVsX2Nsb3NlKGVudHJ5LCBsb2Nr bW9kZSk7Cit9CisKKy8qCisgKiBPcGVuIHRoZSBsb2NhbCByZWxhdGlvbiBhc3NvY2lhdGVkIHdp dGggdGhlIHJlbW90ZSBvbmUuCisgKgorICogUmVidWlsZHMgdGhlIFJlbGNhY2hlIG1hcHBpbmcg aWYgaXQgd2FzIGludmFsaWRhdGVkIGJ5IGxvY2FsIERETC4KKyAqLworTG9naWNhbFJlcFJlbE1h cEVudHJ5ICoKK2xvZ2ljYWxyZXBfcmVsX29wZW4oTG9naWNhbFJlcFJlbElkIHJlbW90ZWlkLCBM T0NLTU9ERSBsb2NrbW9kZSkKK3sKKwlMb2dpY2FsUmVwUmVsTWFwRW50cnkgKmVudHJ5OworCWJv b2wJCWZvdW5kOworCisJaWYgKExvZ2ljYWxSZXBSZWxNYXAgPT0gTlVMTCkKKwkJbG9naWNhbHJl cF9yZWxtYXBfaW5pdCgpOworCisJLyogU2VhcmNoIGZvciBleGlzdGluZyBlbnRyeS4gKi8KKwll bnRyeSA9IGhhc2hfc2VhcmNoKExvZ2ljYWxSZXBSZWxNYXAsICZyZW1vdGVpZCwKKwkJCQkJCUhB U0hfRklORCwgJmZvdW5kKTsKKworCWlmICghZm91bmQpCisJCWVsb2coRVJST1IsICJubyByZWxh dGlvbiBtYXAgZW50cnkgZm9yIHJlbW90ZSByZWxhdGlvbiBJRCAldSIsCisJCQkgcmVtb3RlaWQp OworCisJbG9naWNhbHJlcF9yZWxfbG9hZChlbnRyeSwgMCwgbG9ja21vZGUpOworCiAJcmV0dXJu IGVudHJ5OwogfQogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2Fs L3dvcmtlci5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYwppbmRl eCA4M2JjZjIxNmZkMy4uYzFjZjMwMWM5N2IgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxp Y2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9n aWNhbC93b3JrZXIuYwpAQCAtMTA3MCw2ICsxMDcwLDU5IEBAIGNoZWNrX2RlcGVuZGVuY3lfb25f cmVsKExvZ2ljYWxSZXBSZWxJZCByZWxpZCwgVHJhbnNhY3Rpb25JZCBuZXdfZGVwZW5kZWRfeGlk LAogCQlyZWxlbnRyeS0+bGFzdF9kZXBlbmRlZF94aWQgPSBuZXdfZGVwZW5kZWRfeGlkOwogfQog CisvKgorICogQ2hlY2sgdGhlIHBhcmFsbGVsaXphYmlsaXR5IG9mIGFwcGx5aW5nIGNoYW5nZXMg Zm9yIHRoZSByZWxhdGlvbi4KKyAqIEFwcGVuZCB0aGUgbGFzdGx5IGRpc3BhdGNoZWQgdHJhbnNh Y3Rpb24gaW4gaW4gJ2RlcGVuZHNfb25feGlkcycgaWYgdGhlCisgKiByZWxhdGlvbiBpcyBwYXJh bGxlbCB1bnNhZmUuCisgKi8KK3N0YXRpYyB2b2lkCitjaGVja19kZXBlbmRlbmN5X2Zvcl9wYXJh bGxlbF9zYWZldHkoTG9naWNhbFJlcFJlbElkIHJlbGlkLAorCQkJCQkJCQkJIFRyYW5zYWN0aW9u SWQgbmV3X2RlcGVuZGVkX3hpZCwKKwkJCQkJCQkJCSBMaXN0ICoqZGVwZW5kc19vbl94aWRzKQor eworCUxvZ2ljYWxSZXBSZWxNYXBFbnRyeSAqcmVsZW50cnk7CisKKwkvKiBRdWljayBleGl0IGlm IG5vIHRyYW5zYWN0aW9ucyBoYXZlIGJlZW4gZGlzcGF0Y2hlZCAqLworCWlmICghVHJhbnNhY3Rp b25JZElzVmFsaWQobGFzdF9yZW1vdGVfeGlkKSkKKwkJcmV0dXJuOworCisJcmVsZW50cnkgPSBs b2dpY2FscmVwX2dldF9yZWxlbnRyeShyZWxpZCk7CisKKwkvKgorCSAqIEdhdGhlciBpbmZvcm1h dGlvbiBmb3IgbG9jYWwgdHJpZ2dyZXMgaWYgbm90IHlldC4gV2UgcmVxdWlyZSB0byBiZSBpbiBh CisJICogdHJhbnNhY3Rpb24gc3RhdGUgYmVjYXVzZSBzeXN0ZW0gY2F0YWxvZ3MgYXJlIHJlYWQu CisJICovCisJaWYgKHJlbGVudHJ5LT5wYXJhbGxlbF9zYWZlID09IExPR0lDQUxSRVBfUEFSQUxM RUxfVU5LTk9XTikKKwl7CisJCWJvb2wJbmVlZHNfc3RhcnQgPSAhSXNUcmFuc2FjdGlvbk9yVHJh bnNhY3Rpb25CbG9jaygpOworCisJCWlmIChuZWVkc19zdGFydCkKKwkJCVN0YXJ0VHJhbnNhY3Rp b25Db21tYW5kKCk7CisKKwkJbG9naWNhbHJlcF9yZWxfbG9hZChOVUxMLCByZWxpZCwgQWNjZXNz U2hhcmVMb2NrKTsKKworCQkvKgorCQkgKiBDbG9zZSB0aGUgdHJhbnNhY3Rpb24gaWYgd2Ugc3Rh cnQgaGVyZS4gV2UgbXVzdCBub3QgYWJvcnQgYmVjYXVzZSBpdAorCQkgKiB3b3VsZCByZWxlYXNl IGFsbCBzZXNzaW9uLWxldmVsIGxvY2tzLCBzdWNoIGFzIHRoZSBzdHJlYW0gbG9jaywgYW5kCisJ CSAqIGJyZWFrIHRoZSBkZWFkbG9jayBkZXRlY3Rpb24gbWVjaGFuaXNtIGJldHdlZW4gTEEgYW5k IFBBLiBUaGUKKwkJICogb3V0Y29tZSBpcyB0aGUgc2FtZSByZWdhcmRsZXNzIG9mIHRoZSBlbmQg c3RhdHVzLCBzaW5jZSB0aGUKKwkJICogdHJhbnNhY3Rpb24gZGlkIG5vdCBtb2RpZnkgYW55IHR1 cGxlcy4KKwkJICovCisJCWlmIChuZWVkc19zdGFydCkKKwkJCUNvbW1pdFRyYW5zYWN0aW9uQ29t bWFuZCgpOworCisJCUFzc2VydChyZWxlbnRyeS0+cGFyYWxsZWxfc2FmZSAhPSBMT0dJQ0FMUkVQ X1BBUkFMTEVMX1VOS05PV04pOworCX0KKworCS8qIERvIG5vdGhpbmcgZm9yIHBhcmFsbGVsIHNh ZmUgcmVsYXRpb25zICovCisJaWYgKHJlbGVudHJ5LT5wYXJhbGxlbF9zYWZlID09IExPR0lDQUxS RVBfUEFSQUxMRUxfU0FGRSkKKwkJcmV0dXJuOworCisJKmRlcGVuZHNfb25feGlkcyA9IGNoZWNr X2FuZF9hcHBlbmRfeGlkX2RlcGVuZGVuY3koKmRlcGVuZHNfb25feGlkcywKKwkJCQkJCQkJCQkJ CQkgICAmbGFzdF9yZW1vdGVfeGlkLAorCQkJCQkJCQkJCQkJCSAgIG5ld19kZXBlbmRlZF94aWQp OworfQorCiAvKgogICogQ2hlY2sgZGVwZW5kZW5jaWVzIHJlbGF0ZWQgdG8gdGhlIGN1cnJlbnQg Y2hhbmdlIGJ5IGRldGVybWluaW5nIGlmIHRoZQogICogbW9kaWZpY2F0aW9uIGltcGFjdHMgdGhl IHNhbWUgcm93IG9yIHRhYmxlIGFzIGFub3RoZXIgb25nb2luZyB0cmFuc2FjdGlvbi4gSWYKQEAg LTExMjgsNiArMTE4MSw4IEBAIGhhbmRsZV9kZXBlbmRlbmN5X29uX2NoYW5nZShMb2dpY2FsUmVw TXNnVHlwZSBhY3Rpb24sIFN0cmluZ0luZm8gcywKIAkJCWNoZWNrX2RlcGVuZGVuY3lfb25fcmVw bGljYV9pZGVudGl0eShyZWxpZCwgJm5ld3R1cCwKIAkJCQkJCQkJCQkJCSBuZXdfZGVwZW5kZWRf eGlkLAogCQkJCQkJCQkJCQkJICZkZXBlbmRzX29uX3hpZHMpOworCQkJY2hlY2tfZGVwZW5kZW5j eV9mb3JfcGFyYWxsZWxfc2FmZXR5KHJlbGlkLCBuZXdfZGVwZW5kZWRfeGlkLAorCQkJCQkJCQkJ CQkJICZkZXBlbmRzX29uX3hpZHMpOwogCQkJYnJlYWs7CiAKIAkJY2FzZSBMT0dJQ0FMX1JFUF9N U0dfVVBEQVRFOgpAQCAtMTEzNSwxMyArMTE5MCwxOSBAQCBoYW5kbGVfZGVwZW5kZW5jeV9vbl9j aGFuZ2UoTG9naWNhbFJlcE1zZ1R5cGUgYWN0aW9uLCBTdHJpbmdJbmZvIHMsCiAJCQkJCQkJCQkJ ICAgJm5ld3R1cCk7CiAKIAkJCWlmIChoYXNfb2xkdHVwKQorCQkJewogCQkJCWNoZWNrX2RlcGVu ZGVuY3lfb25fcmVwbGljYV9pZGVudGl0eShyZWxpZCwgJm9sZHR1cCwKIAkJCQkJCQkJCQkJCQkg bmV3X2RlcGVuZGVkX3hpZCwKIAkJCQkJCQkJCQkJCQkgJmRlcGVuZHNfb25feGlkcyk7CisJCQkJ Y2hlY2tfZGVwZW5kZW5jeV9mb3JfcGFyYWxsZWxfc2FmZXR5KHJlbGlkLCBuZXdfZGVwZW5kZWRf eGlkLAorCQkJCQkJCQkJCQkJCSAmZGVwZW5kc19vbl94aWRzKTsKKwkJCX0KIAogCQkJY2hlY2tf ZGVwZW5kZW5jeV9vbl9yZXBsaWNhX2lkZW50aXR5KHJlbGlkLCAmbmV3dHVwLAogCQkJCQkJCQkJ CQkJIG5ld19kZXBlbmRlZF94aWQsCiAJCQkJCQkJCQkJCQkgJmRlcGVuZHNfb25feGlkcyk7CisJ CQljaGVja19kZXBlbmRlbmN5X2Zvcl9wYXJhbGxlbF9zYWZldHkocmVsaWQsIG5ld19kZXBlbmRl ZF94aWQsCisJCQkJCQkJCQkJCQkgJmRlcGVuZHNfb25feGlkcyk7CiAJCQlicmVhazsKIAogCQlj YXNlIExPR0lDQUxfUkVQX01TR19ERUxFVEU6CkBAIC0xMTQ5LDYgKzEyMTAsOCBAQCBoYW5kbGVf ZGVwZW5kZW5jeV9vbl9jaGFuZ2UoTG9naWNhbFJlcE1zZ1R5cGUgYWN0aW9uLCBTdHJpbmdJbmZv IHMsCiAJCQljaGVja19kZXBlbmRlbmN5X29uX3JlcGxpY2FfaWRlbnRpdHkocmVsaWQsICZvbGR0 dXAsCiAJCQkJCQkJCQkJCQkgbmV3X2RlcGVuZGVkX3hpZCwKIAkJCQkJCQkJCQkJCSAmZGVwZW5k c19vbl94aWRzKTsKKwkJCWNoZWNrX2RlcGVuZGVuY3lfZm9yX3BhcmFsbGVsX3NhZmV0eShyZWxp ZCwgbmV3X2RlcGVuZGVkX3hpZCwKKwkJCQkJCQkJCQkJCSAmZGVwZW5kc19vbl94aWRzKTsKIAkJ CWJyZWFrOwogCiAJCWNhc2UgTE9HSUNBTF9SRVBfTVNHX1RSVU5DQVRFOgpAQCAtMTE2MSw4ICsx MjI0LDEzIEBAIGhhbmRsZV9kZXBlbmRlbmN5X29uX2NoYW5nZShMb2dpY2FsUmVwTXNnVHlwZSBh Y3Rpb24sIFN0cmluZ0luZm8gcywKIAkJCSAqIG1vZGlmaWVkIHRoZSBzYW1lIHRhYmxlLgogCQkJ ICovCiAJCQlmb3JlYWNoX2ludCh0cnVuY2F0ZWRfcmVsaWQsIHJlbW90ZV9yZWxpZHMpCisJCQl7 CiAJCQkJY2hlY2tfZGVwZW5kZW5jeV9vbl9yZWwodHJ1bmNhdGVkX3JlbGlkLCBuZXdfZGVwZW5k ZWRfeGlkLAogCQkJCQkJCQkJCSZkZXBlbmRzX29uX3hpZHMpOworCQkJCWNoZWNrX2RlcGVuZGVu Y3lfZm9yX3BhcmFsbGVsX3NhZmV0eSh0cnVuY2F0ZWRfcmVsaWQsCisJCQkJCQkJCQkJCQkJIG5l d19kZXBlbmRlZF94aWQsCisJCQkJCQkJCQkJCQkJICZkZXBlbmRzX29uX3hpZHMpOworCQkJfQog CiAJCQlicmVhazsKIApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNh bHJlbGF0aW9uLmggYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dpY2FscmVsYXRpb24uaApp bmRleCAzNGE3MDY5ZTllNS4uZTNkMGRmNTg2MjAgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3Jl cGxpY2F0aW9uL2xvZ2ljYWxyZWxhdGlvbi5oCisrKyBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9u L2xvZ2ljYWxyZWxhdGlvbi5oCkBAIC0zOSw2ICszOSwyMCBAQCB0eXBlZGVmIHN0cnVjdCBMb2dp Y2FsUmVwUmVsTWFwRW50cnkKIAlYTG9nUmVjUHRyCXN0YXRlbHNuOwogCiAJVHJhbnNhY3Rpb25J ZCBsYXN0X2RlcGVuZGVkX3hpZDsKKworCS8qCisJICogV2hldGhlciB0aGUgcmVsYXRpb24gY2Fu IGJlIGFwcGxpZWQgaW4gcGFyYWxsZWwgb3Igbm90LiBJdCBpcworCSAqIGRpc3RpbmdsaXNoIHdo ZXRoZXIgZGVmaW5lZCB0cmlnZ2VycyBhcmUgdGhlIGltbXV0YWJsZSBvciBub3QuCisJICoKKwkg KiBUaGVvcmV0aWNhbGx5LCB3ZSBjYW4gZGV0ZXJtaW5lIHRoZSBwYXJhbGxlbGl6YWJpbGl0eSBm b3IgZWFjaCB0eXBlIG9mCisJICogcmVwbGljYXRpb24gbWVzc2FnZXMsIElOU0VSVC9VUERBVEUv REVMRVRFL1RSVU5DQVRFLiBCdXQgaXQgaXMgbm90IGRvbmUKKwkgKiB5ZXQgdG8gcmVkdWNlIHRo ZSBudW1iZXIgb2YgYXR0cmlidXRlcy4KKwkgKgorCSAqIE5vdGUgdGhhdCB3ZSBkbyBub3QgY2hl Y2sgdGhlIHVzZXItZGVmaW5lZCBjb25zdHJhaW50cyBoZXJlLiBQb3N0Z3JlU1FMCisJICogaGFz IGFscmVhZHkgYXNzdW1lZCB0aGF0IENIRUNLIGNvbnN0cmFpbnRzJyBjb25kaXRpb25zIGFyZSBp bW11dGFibGUgYW5kCisJICogaGVyZSBmb2xsb3dzIHRoZSBydWxlLgorCSAqLworCWNoYXIJCXBh cmFsbGVsX3NhZmU7CiB9IExvZ2ljYWxSZXBSZWxNYXBFbnRyeTsKIAogZXh0ZXJuIHZvaWQgbG9n aWNhbHJlcF9yZWxtYXBfdXBkYXRlKExvZ2ljYWxSZXBSZWxhdGlvbiAqcmVtb3RlcmVsKTsKQEAg LTQ2LDYgKzYwLDggQEAgZXh0ZXJuIHZvaWQgbG9naWNhbHJlcF9wYXJ0bWFwX3Jlc2V0X3JlbG1h cChMb2dpY2FsUmVwUmVsYXRpb24gKnJlbW90ZXJlbCk7CiAKIGV4dGVybiBMb2dpY2FsUmVwUmVs TWFwRW50cnkgKmxvZ2ljYWxyZXBfcmVsX29wZW4oTG9naWNhbFJlcFJlbElkIHJlbW90ZWlkLAog CQkJCQkJCQkJCQkJICBMT0NLTU9ERSBsb2NrbW9kZSk7CitleHRlcm4gdm9pZCBsb2dpY2FscmVw X3JlbF9sb2FkKExvZ2ljYWxSZXBSZWxNYXBFbnRyeSAqZW50cnksCisJCQkJCQkJCUxvZ2ljYWxS ZXBSZWxJZCByZW1vdGVpZCwgTE9DS01PREUgbG9ja21vZGUpOwogZXh0ZXJuIExvZ2ljYWxSZXBS ZWxNYXBFbnRyeSAqbG9naWNhbHJlcF9wYXJ0aXRpb25fb3BlbihMb2dpY2FsUmVwUmVsTWFwRW50 cnkgKnJvb3QsCiAJCQkJCQkJCQkJCQkJCVJlbGF0aW9uIHBhcnRyZWwsIEF0dHJNYXAgKm1hcCk7 CiBleHRlcm4gdm9pZCBsb2dpY2FscmVwX3JlbF9jbG9zZShMb2dpY2FsUmVwUmVsTWFwRW50cnkg KnJlbCwKQEAgLTU2LDQgKzcyLDggQEAgZXh0ZXJuIGludAlsb2dpY2FscmVwX2dldF9udW1fcmVs cyh2b2lkKTsKIGV4dGVybiB2b2lkIGxvZ2ljYWxyZXBfd3JpdGVfYWxsX3JlbHMoU3RyaW5nSW5m byBvdXQpOwogZXh0ZXJuIExvZ2ljYWxSZXBSZWxNYXBFbnRyeSAqbG9naWNhbHJlcF9nZXRfcmVs ZW50cnkoTG9naWNhbFJlcFJlbElkIHJlbW90ZWlkKTsKIAorI2RlZmluZSBMT0dJQ0FMUkVQX1BB UkFMTEVMX1NBRkUJCSdzJworI2RlZmluZSBMT0dJQ0FMUkVQX1BBUkFMTEVMX1JFU1RSSUNURUQJ J3InCisjZGVmaW5lIExPR0lDQUxSRVBfUEFSQUxMRUxfVU5LTk9XTgkJJ3UnCisKICNlbmRpZgkJ CQkJCQkvKiBMT0dJQ0FMUkVMQVRJT05fSCAqLwotLSAKMi40Ny4zCgo= --_009_TY7PR01MB145541DD6F5BE4CD403BA39FDF586ATY7PR01MB14554jp_ Content-Type: application/octet-stream; name="v7-0008-Support-dependency-tracking-via-local-unique-inde.patch" Content-Description: v7-0008-Support-dependency-tracking-via-local-unique-inde.patch Content-Disposition: attachment; filename="v7-0008-Support-dependency-tracking-via-local-unique-inde.patch"; size=23857; creation-date="Mon, 05 Jan 2026 07:38:38 GMT"; modification-date="Mon, 05 Jan 2026 07:40:44 GMT" Content-Transfer-Encoding: base64 RnJvbSAwZmY2NjZmZGQ0M2UwMmFiZGNjOGExNTE0MTBjMThmYjUyZTllMjkzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIYXlhdG8gS3Vyb2RhIDxoYXlhdG9AZXhhbXBsZS5jb20+CkRh dGU6IFRodSwgMTEgRGVjIDIwMjUgMjI6MjE6NDcgKzA5MDAKU3ViamVjdDogW1BBVENIIHY3IDgv OF0gU3VwcG9ydCBkZXBlbmRlbmN5IHRyYWNraW5nIHZpYSBsb2NhbCB1bmlxdWUgaW5kZXhlcwoK Q3VycmVudGx5LCBsb2dpY2FsIHJlcGxpY2F0aW9uJ3MgcGFyYWxsZWwgYXBwbHkgbWVjaGFuaXNt IHRyYWNrcyBkZXBlbmRlbmNpZXMKcHJpbWFyaWx5IGJhc2VkIG9uIHRoZSBSRVBMSUNBIElERU5U SVRZIGRlZmluZWQgb24gdGhlIHB1Ymxpc2hlciB0YWJsZS4KSG93ZXZlciwgbG9jYWwgc3Vic2Ny aWJlciB0YWJsZXMgbWlnaHQgaGF2ZSBhZGRpdGlvbmFsIHVuaXF1ZSBpbmRleGVzIHRoYXQKY291 bGQgZWZmZWN0aXZlbHkgc2VydmUgYXMgZGVwZW5kZW5jeSBrZXlzLCBldmVuIGlmIHRoZXkgZG9u J3QgY29ycmVzcG9uZCB0bwp0aGUgcHVibGlzaGVyJ3MgUkVQTElDQSBJREVOVElUWS4gRmFpbGlu ZyB0byB0cmFjayB0aGVzZSBhZGRpdGlvbmFsIHVuaXF1ZQprZXlzIGNhbiBsZWFkIHRvIGluY29y cmVjdCBkYXRhIGFuZC9vciBkZWFkbG9ja3MgZHVyaW5nIHBhcmFsbGVsIGFwcGxpY2F0aW9uLgoK VGhpcyBwYXRjaCBleHRlbmRzIHRoZSBwYXJhbGxlbCBhcHBseSdzIGRlcGVuZGVuY3kgdHJhY2tp bmcgdG8gY29uc2lkZXIKbG9jYWwgdW5pcXVlIGluZGV4ZXMgb24gdGhlIHN1YnNjcmliZXIgdGFi bGUuIFRoaXMgaXMgYWNoaWV2ZWQgYnkgZXh0ZW5kaW5nCnRoZSBleGlzdGluZyBSZXBsaWNhIElk ZW50aXR5IGhhc2ggdGFibGUgdG8gYWxzbyBzdG9yZSBkZXBlbmRlbmN5IGluZm9ybWF0aW9uCmJh c2VkIG9uIHRoZXNlIGxvY2FsIHVuaXF1ZSBpbmRleGVzLgoKVGhlIExvZ2ljYWxSZXBSZWxNYXBF bnRyeSBzdHJ1Y3R1cmUgaXMgZXh0ZW5kZWQgdG8gc3RvcmUgZGV0YWlscyBhYm91dCB0aGVzZQps b2NhbCB1bmlxdWUgaW5kZXhlcy4gVGhpcyBpbmZvcm1hdGlvbiBpcyBjb2xsZWN0ZWQgYW5kIGNh Y2hlZCB3aGVuCmRlcGVuZGVuY3kgY2hlY2tpbmcgaXMgZmlyc3QgcGVyZm9ybWVkIGZvciBhIHJl bW90ZSB0cmFuc2FjdGlvbiBvbiBhIGdpdmVuCnJlbGF0aW9uLiBUaGlzIGNvbGxlY3Rpb24gcHJv Y2VzcyByZXF1aXJlcyB0byBiZSBpbiBhIHRyYW5zYWN0aW9uIHRvIGFjY2VzcwpzeXN0ZW0gY2F0 YWxvZyBpbmZvcm1hdGlvbi4KLS0tCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Jl bGF0aW9uLmMgICAgfCAxNjEgKysrKysrKysrKy0KIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xv Z2ljYWwvd29ya2VyLmMgICAgICB8IDI3MCArKysrKysrKysrKysrKy0tLS0KIHNyYy9iYWNrZW5k L3N0b3JhZ2UvbG1nci9kZWFkbG9jay5jICAgICAgICAgICB8ICAgMSAtCiBzcmMvaW5jbHVkZS9y ZXBsaWNhdGlvbi9sb2dpY2FscmVsYXRpb24uaCAgICAgfCAgMTQgKwogc3JjL3Rlc3Qvc3Vic2Ny aXB0aW9uL3QvMDUwX3BhcmFsbGVsX2FwcGx5LnBsIHwgIDQzICsrKwogc3JjL3Rvb2xzL3BnaW5k ZW50L3R5cGVkZWZzLmxpc3QgICAgICAgICAgICAgIHwgICAyICsKIDYgZmlsZXMgY2hhbmdlZCwg NDMyIGluc2VydGlvbnMoKyksIDU5IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcmVsYXRpb24uYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0 aW9uL2xvZ2ljYWwvcmVsYXRpb24uYwppbmRleCAxNGYzZWJmNzI1ZS4uNzgxZmMzYzczYjkgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcmVsYXRpb24uYworKysg Yi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3JlbGF0aW9uLmMKQEAgLTEyNyw2ICsx MjcsMjEgQEAgbG9naWNhbHJlcF9yZWxtYXBfaW5pdCh2b2lkKQogCQkJCQkJCQkgIChEYXR1bSkg MCk7CiB9CiAKKy8qCisgKiBSZWxlYXNlIGxvY2FsIGluZGV4IGxpc3QKKyAqLworc3RhdGljIHZv aWQKK2ZyZWVfbG9jYWxfdW5pcXVlX2luZGV4ZXMoTG9naWNhbFJlcFJlbE1hcEVudHJ5ICplbnRy eSkKK3sKKwlBc3NlcnQoYW1fbGVhZGVyX2FwcGx5X3dvcmtlcigpKTsKKworCWZvcmVhY2hfcHRy KExvZ2ljYWxSZXBTdWJzY3JpYmVySWR4LCBpZHhpbmZvLCBlbnRyeS0+bG9jYWxfdW5pcXVlX2lu ZGV4ZXMpCisJCWJtc19mcmVlKGlkeGluZm8tPmluZGV4a2V5cyk7CisKKwlsaXN0X2ZyZWVfZGVl cChlbnRyeS0+bG9jYWxfdW5pcXVlX2luZGV4ZXMpOworCWVudHJ5LT5sb2NhbF91bmlxdWVfaW5k ZXhlcyA9IE5JTDsKK30KKwogLyoKICAqIEZyZWUgdGhlIGVudHJ5IG9mIGEgcmVsYXRpb24gbWFw IGNhY2hlLgogICovCkBAIC0xNTQsNiArMTY5LDkgQEAgbG9naWNhbHJlcF9yZWxtYXBfZnJlZV9l bnRyeShMb2dpY2FsUmVwUmVsTWFwRW50cnkgKmVudHJ5KQogCiAJaWYgKGVudHJ5LT5hdHRybWFw KQogCQlmcmVlX2F0dHJtYXAoZW50cnktPmF0dHJtYXApOworCisJaWYgKGVudHJ5LT5sb2NhbF91 bmlxdWVfaW5kZXhlcyAhPSBOSUwpCisJCWZyZWVfbG9jYWxfdW5pcXVlX2luZGV4ZXMoZW50cnkp OwogfQogCiAvKgpAQCAtMzYwLDYgKzM3OCwxMjYgQEAgbG9naWNhbHJlcF9yZWxfbWFya191cGRh dGFibGUoTG9naWNhbFJlcFJlbE1hcEVudHJ5ICplbnRyeSkKIAl9CiB9CiAKKy8qCisgKiBDb2xs ZWN0IGFsbCBsb2NhbCB1bmlxdWUgaW5kZXhlcyB0aGF0IGNhbiBiZSB1c2VkIGZvciBkZXBlbmRl bmN5IHRyYWNraW5nLgorICovCitzdGF0aWMgdm9pZAorY29sbGVjdF9sb2NhbF9pbmRleGVzKExv Z2ljYWxSZXBSZWxNYXBFbnRyeSAqZW50cnkpCit7CisJTGlzdAkgICAqaWR4bGlzdDsKKworCWlm IChlbnRyeS0+bG9jYWxfdW5pcXVlX2luZGV4ZXMgIT0gTklMKQorCQlmcmVlX2xvY2FsX3VuaXF1 ZV9pbmRleGVzKGVudHJ5KTsKKworCWVudHJ5LT5sb2NhbF91bmlxdWVfaW5kZXhlc19jb2xsZWN0 ZWQgPSB0cnVlOworCisJaWR4bGlzdCA9IFJlbGF0aW9uR2V0SW5kZXhMaXN0KGVudHJ5LT5sb2Nh bHJlbCk7CisKKwkvKiBRdWljayBleGl0IGlmIHRoZXJlIGFyZSBubyBpbmRleGVzICovCisJaWYg KGlkeGxpc3QgPT0gTklMKQorCQlyZXR1cm47CisKKwkvKiBJdGVyYXRlIGluZGV4ZXMgdG8gbGlz dCBhbGwgdXNhYmxlIGluZGV4ZXMgKi8KKwlmb3JlYWNoX29pZChpZHhvaWQsIGlkeGxpc3QpCisJ eworCQlSZWxhdGlvbglpZHhyZWw7CisJCWludAkJCWluZG5rZXlzOworCQlBdHRyTWFwCSAgICph dHRybWFwOworCQlCaXRtYXBzZXQgICppbmRleGtleXMgPSBOVUxMOworCQlib29sCQlzdWl0YWJs ZSA9IHRydWU7CisKKwkJaWR4cmVsID0gaW5kZXhfb3BlbihpZHhvaWQsIEFjY2Vzc1NoYXJlTG9j ayk7CisKKwkJLyoKKwkJICogQ2hlY2sgd2hldGhlciB0aGUgaW5kZXggY2FuIGJlIHVzZWQgZm9y IHRoZSBkZXBlbmRlbmN5IHRyYWNraW5nLgorCQkgKgorCQkgKiBGb3Igc2ltcGxpZmljYXRpb24s IHRoZSBzYW1lIGNvbmRpdGlvbiBhcyBSRVBMSUNBIElERU5USVRZIEZVTEwsCisJCSAqIHBsdXMg aXQgbXVzdCBiZSBhIHVuaXF1ZSBpbmRleC4KKwkJICovCisJCWlmICghKGlkeHJlbC0+cmRfaW5k ZXgtPmluZGlzdW5pcXVlICYmCisJCQkgIElzSW5kZXhVc2FibGVGb3JSZXBsaWNhSWRlbnRpdHlG dWxsKGlkeHJlbCwgZW50cnktPmF0dHJtYXApKSkKKwkJeworCQkJaW5kZXhfY2xvc2UoaWR4cmVs LCBBY2Nlc3NTaGFyZUxvY2spOworCQkJY29udGludWU7CisJCX0KKworCQlpbmRua2V5cyA9IGlk eHJlbC0+cmRfaW5kZXgtPmluZG5rZXlhdHRzOworCQlhdHRybWFwID0gZW50cnktPmF0dHJtYXA7 CisKKwkJQXNzZXJ0KGluZG5rZXlzKTsKKworCQkvKiBTZWVrIGVhY2ggYXR0cmlidXRlcyBhbmQg YWRkIHRvIGEgQml0bWFwICovCisJCWZvciAoaW50IGkgPSAwOyBpIDwgaW5kbmtleXM7IGkrKykK KwkJeworCQkJQXR0ck51bWJlciBsb2NhbGNvbCA9IGlkeHJlbC0+cmRfaW5kZXgtPmluZGtleS52 YWx1ZXNbaV07CisJCQlBdHRyTnVtYmVyIHJlbW90ZWNvbDsKKworCQkJLyoKKwkJCSAqIFhYWDog TWFyayBhIHJlbGF0aW9uIGFzIHBhcmFsbGVsLXVuc2FmZSBpZiBpdCBoYXMgZXhwcmVzc2lvbgor CQkJICogaW5kZXhlcyBiZWNhdXNlIHdlIGNhbm5vdCBjb21wdXRlIHRoZSBoYXNoIHZhbHVlIGZv ciB0aGUKKwkJCSAqIGRlcGVuZGVuY3kgdHJhY2tpbmcuIEZvciBzYWZldHksIHRyYW5zYWN0aW9u cyB0aGF0IG1vZGlmeSBzdWNoCisJCQkgKiB0YWJsZXMgY2FuIHdhaXQgZm9yIGFwcGxpY2F0aW9u cyB0aWxsIHRoZSBsYXN0bHkgZGlzcGF0Y2hlZAorCQkJICogdHJhbnNhY3Rpb24gaXMgY29tbWl0 dGVkLgorCQkJICovCisJCQlpZiAoIUF0dHJpYnV0ZU51bWJlcklzVmFsaWQobG9jYWxjb2wpKQor CQkJeworCQkJCWVudHJ5LT5wYXJhbGxlbF9zYWZlID0gTE9HSUNBTFJFUF9QQVJBTExFTF9SRVNU UklDVEVEOworCQkJCXN1aXRhYmxlID0gZmFsc2U7CisJCQkJYnJlYWs7CisJCQl9CisKKwkJCXJl bW90ZWNvbCA9IGF0dHJtYXAtPmF0dG51bXNbQXR0ck51bWJlckdldEF0dHJPZmZzZXQobG9jYWxj b2wpXTsKKworCQkJLyoKKwkJCSAqIFNraXAgaWYgdGhlIGNvbHVtbiBkb2VzIG5vdCBleGlzdCBv biBwdWJsaXNoZXIgbm9kZS4gSW4gdGhpcworCQkJICogY2FzZSB0aGUgcmVwbGljYXRlZCB0dXBs ZXMgYWx3YXlzIGhhdmUgTlVMTCBvciBkZWZhdWx0IHZhbHVlLgorCQkJICovCisJCQlpZiAocmVt b3RlY29sIDwgMCkKKwkJCXsKKwkJCQlzdWl0YWJsZSA9IGZhbHNlOworCQkJCWJyZWFrOworCQkJ fQorCisJCQkvKiBDaGVja3MgYXJlIHBhc3NlZCwgcmVtZW1iZXIgdGhlIGF0dHJpYnV0ZSAqLwor CQkJaW5kZXhrZXlzID0gYm1zX2FkZF9tZW1iZXIoaW5kZXhrZXlzLCByZW1vdGVjb2wpOworCQl9 CisKKwkJaW5kZXhfY2xvc2UoaWR4cmVsLCBBY2Nlc3NTaGFyZUxvY2spOworCisJCS8qCisJCSAq IFNraXAgdXNpbmcgdGhlIGluZGV4IGlmIGl0IGlzIG5vdCBzdWl0YWJsZS4gVGhpcyBjYW4gaGFw cGVuIGlmCisJCSAqIDEpIG9uZSBvZiB0aGUgY29sdW1ucyBkb2VzIG5vdCBleGlzdCBvbiB0aGUg cHVibGlzaGVyIHNpZGUsIG9yCisJCSAqIDIpIHRoZXJlIGlzIGFuIGV4cHJlc3Npb24gY29sdW1u LgorCQkgKi8KKwkJaWYgKCFzdWl0YWJsZSkKKwkJeworCQkJaWYgKGluZGV4a2V5cykKKwkJCQli bXNfZnJlZShpbmRleGtleXMpOworCisJCQljb250aW51ZTsKKwkJfQorCisJCS8qIFRoaXMgaW5k ZXggaXMgdXNhYmxlLCBzdG9yZSBvbiBtZW1vcnkgKi8KKwkJaWYgKGluZGV4a2V5cykKKwkJewor CQkJTWVtb3J5Q29udGV4dAkJCQlvbGRjdHg7CisJCQlMb2dpY2FsUmVwU3Vic2NyaWJlcklkeAkg ICAqaWR4aW5mbzsKKworCQkJb2xkY3R4ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKExvZ2ljYWxS ZXBSZWxNYXBDb250ZXh0KTsKKwkJCWlkeGluZm8gPSBwYWxsb2Moc2l6ZW9mKExvZ2ljYWxSZXBT dWJzY3JpYmVySWR4KSk7CisJCQlpZHhpbmZvLT5pbmRleG9pZCA9IGlkeG9pZDsKKwkJCWlkeGlu Zm8tPmluZGV4a2V5cyA9IGJtc19jb3B5KGluZGV4a2V5cyk7CisJCQllbnRyeS0+bG9jYWxfdW5p cXVlX2luZGV4ZXMgPQorCQkJCWxhcHBlbmQoZW50cnktPmxvY2FsX3VuaXF1ZV9pbmRleGVzLCBp ZHhpbmZvKTsKKworCQkJcGZyZWUoaW5kZXhrZXlzKTsKKwkJCU1lbW9yeUNvbnRleHRTd2l0Y2hU byhvbGRjdHgpOworCQl9CisJfQorCisJbGlzdF9mcmVlKGlkeGxpc3QpOworfQorCiAvKgogICog Q2hlY2sgYWxsIGxvY2FsIHRyaWdnZXJzIGZvciB0aGUgcmVsYXRpb24gdG8gc2VlIHRoZSBwYXJh bGxlbGl6YWJpbGl0eS4KICAqCkBAIC0zNjksNyArNTA3LDE2IEBAIGxvZ2ljYWxyZXBfcmVsX21h cmtfdXBkYXRhYmxlKExvZ2ljYWxSZXBSZWxNYXBFbnRyeSAqZW50cnkpCiBzdGF0aWMgdm9pZAog Y2hlY2tfZGVmaW5lZF90cmlnZ2VycyhMb2dpY2FsUmVwUmVsTWFwRW50cnkgKmVudHJ5KQogewot CVRyaWdnZXJEZXNjICp0cmlnZGVzYyA9IGVudHJ5LT5sb2NhbHJlbC0+dHJpZ2Rlc2M7CisJVHJp Z2dlckRlc2MgKnRyaWdkZXNjOworCisJLyoKKwkgKiBTa2lwIGlmIHRoZSBwYXJhbGxlbGl6YWJp bGl0eSBoYXMgYWxyZWFkeSBiZWVuIGNoZWNrZWQuIFBvc3NpbGJsZSBpZiB0aGUKKwkgKiByZWxh dGlvbiBoYXMgZXhwcmVzc2lvbiBpbmRleGVzLgorCSAqLworCWlmIChlbnRyeS0+cGFyYWxsZWxf c2FmZSAhPSBMT0dJQ0FMUkVQX1BBUkFMTEVMX1VOS05PV04pCisJCXJldHVybjsKKworCXRyaWdk ZXNjID0gZW50cnktPmxvY2FscmVsLT50cmlnZGVzYzsKIAogCS8qIFF1aWNrIGV4aXQgaWYgdHJp ZmZlciBpcyBub3QgZGVmaW5lZCAqLwogCWlmICh0cmlnZGVzYyA9PSBOVUxMKQpAQCAtNDEwLDcg KzU1Nyw3IEBAIGNoZWNrX2RlZmluZWRfdHJpZ2dlcnMoTG9naWNhbFJlcFJlbE1hcEVudHJ5ICpl bnRyeSkKICAqIElmIHRoZSBrZXkgaXMgZ2l2ZW4sIHRoZSBjb3JyZXNwb25kaW5nIGVudHJ5IGlz IGZpcnN0IHNlYXJjaGVkIGluIHRoZSBoYXNoCiAgKiB0YWJsZSBhbmQgcHJvY2Vzc2VkIGFzIGlu IHRoZSBhYm92ZSBjYXNlLiBBdCB0aGUgZW5kLCBsb2dpY2FsIHJlcGxpY2F0aW9uIGlzCiAgKiBj bG9zZWQuCi0gICovCisgKi8KIHZvaWQKIGxvZ2ljYWxyZXBfcmVsX2xvYWQoTG9naWNhbFJlcFJl bE1hcEVudHJ5ICplbnRyeSwgTG9naWNhbFJlcFJlbElkIHJlbW90ZWlkLAogCQkJCQlMT0NLTU9E RSBsb2NrbW9kZSkKQEAgLTU2NCw3ICs3MTEsMTEgQEAgbG9naWNhbHJlcF9yZWxfbG9hZChMb2dp Y2FsUmVwUmVsTWFwRW50cnkgKmVudHJ5LCBMb2dpY2FsUmVwUmVsSWQgcmVtb3RlaWQsCiAJCSAq IHRyYWNraW5nLgogCQkgKi8KIAkJaWYgKGFtX2xlYWRlcl9hcHBseV93b3JrZXIoKSkKKwkJewor CQkJZW50cnktPnBhcmFsbGVsX3NhZmUgPSBMT0dJQ0FMUkVQX1BBUkFMTEVMX1VOS05PV047CisJ CQljb2xsZWN0X2xvY2FsX2luZGV4ZXMoZW50cnkpOwogCQkJY2hlY2tfZGVmaW5lZF90cmlnZ2Vy cyhlbnRyeSk7CisJCX0KIAogCQllbnRyeS0+bG9jYWxyZWx2YWxpZCA9IHRydWU7CiAJfQpAQCAt ODY2LDYgKzEwMTcsMTIgQEAgbG9naWNhbHJlcF9wYXJ0aXRpb25fb3BlbihMb2dpY2FsUmVwUmVs TWFwRW50cnkgKnJvb3QsCiAJZW50cnktPmxvY2FsaW5kZXhvaWQgPSBGaW5kTG9naWNhbFJlcExv Y2FsSW5kZXgocGFydHJlbCwgcmVtb3RlcmVsLAogCQkJCQkJCQkJCQkJCWVudHJ5LT5hdHRybWFw KTsKIAorCS8qCisJICogVE9ETzogUGFyYWxsZWwgYXBwbHkgZG9lcyBub3Qgc3VwcG9ydCB0aGUg cGFyYWxsZWwgYXBwbHkgZm9yIG5vdy4KKwkgKiBKdXN0IG1hcmsgbG9jYWwgaW5kZXhlcyBhcmUg Y29sbGVjdGVkLgorCSAqLworCWVudHJ5LT5sb2NhbF91bmlxdWVfaW5kZXhlc19jb2xsZWN0ZWQg PSB0cnVlOworCiAJZW50cnktPmxvY2FscmVsdmFsaWQgPSB0cnVlOwogCiAJcmV0dXJuIGVudHJ5 OwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYyBi L3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMKaW5kZXggYzFjZjMwMWM5 N2IuLjM5ZmU5NTc0NmM3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dp Y2FsL3dvcmtlci5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2Vy LmMKQEAgLTU0OCw5ICs1NDgsMTkgQEAgdHlwZWRlZiBzdHJ1Y3QgQXBwbHlTdWJYYWN0RGF0YQog CiBzdGF0aWMgQXBwbHlTdWJYYWN0RGF0YSBzdWJ4YWN0X2RhdGEgPSB7MCwgMCwgSW52YWxpZFRy YW5zYWN0aW9uSWQsIE5VTEx9OwogCisvKgorICogVHlwZSBvZiBrZXkgdXNlZCBmb3IgZGVwZW5k ZW5jeSB0cmFja2luZy4KKyAqLwordHlwZWRlZiBlbnVtIExvZ2ljYWxSZXBLZXlLaW5kCit7CisJ TE9HSUNBTFJFUF9LRVlfUkVQTElDQV9JREVOVElUWSwKKwlMT0dJQ0FMUkVQX0tFWV9MT0NBTF9V TklRVUUKK30gTG9naWNhbFJlcEtleUtpbmQ7CisKIHR5cGVkZWYgc3RydWN0IFJlcGxpY2FJZGVu dGl0eUtleQogewogCU9pZAkJCXJlbGlkOworCUxvZ2ljYWxSZXBLZXlLaW5kIGtpbmQ7CiAJTG9n aWNhbFJlcFR1cGxlRGF0YSAqZGF0YTsKIH0gUmVwbGljYUlkZW50aXR5S2V5OwogCkBAIC03MTAs NyArNzIwLDggQEAgc3RhdGljIGJvb2wKIGhhc2hfcmVwbGljYV9pZGVudGl0eV9jb21wYXJlKFJl cGxpY2FJZGVudGl0eUtleSAqYSwgUmVwbGljYUlkZW50aXR5S2V5ICpiKQogewogCWlmIChhLT5y ZWxpZCAhPSBiLT5yZWxpZCB8fAotCQlhLT5kYXRhLT5uY29scyAhPSBiLT5kYXRhLT5uY29scykK KwkJYS0+ZGF0YS0+bmNvbHMgIT0gYi0+ZGF0YS0+bmNvbHMgfHwKKwkJYS0+a2luZCAhPSBiLT5r aW5kKQogCQlyZXR1cm4gZmFsc2U7CiAKIAlmb3IgKGludCBpID0gMDsgaSA8IGEtPmRhdGEtPm5j b2xzOyBpKyspCkBAIC03MTgsNiArNzI5LDkgQEAgaGFzaF9yZXBsaWNhX2lkZW50aXR5X2NvbXBh cmUoUmVwbGljYUlkZW50aXR5S2V5ICphLCBSZXBsaWNhSWRlbnRpdHlLZXkgKmIpCiAJCWlmIChh LT5kYXRhLT5jb2xzdGF0dXNbaV0gIT0gYi0+ZGF0YS0+Y29sc3RhdHVzW2ldKQogCQkJcmV0dXJu IGZhbHNlOwogCisJCWlmIChhLT5kYXRhLT5jb2xzdGF0dXNbaV0gPT0gTE9HSUNBTFJFUF9DT0xV TU5fTlVMTCkKKwkJCWNvbnRpbnVlOworCiAJCWlmIChhLT5kYXRhLT5jb2x2YWx1ZXNbaV0ubGVu ICE9IGItPmRhdGEtPmNvbHZhbHVlc1tpXS5sZW4pCiAJCQlyZXR1cm4gZmFsc2U7CiAKQEAgLTg0 Nyw2ICs4NjEsOTMgQEAgY2hlY2tfYW5kX2FwcGVuZF94aWRfZGVwZW5kZW5jeShMaXN0ICpkZXBl bmRzX29uX3hpZHMsCiAJcmV0dXJuIGxhcHBlbmRfeGlkKGRlcGVuZHNfb25feGlkcywgKmRlcGVu ZHNfb25feGlkKTsKIH0KIAorLyoKKyAqIENvbW1vbiBmdW5jdGlvbiBmb3IgY2hlY2tpbmcgZGVw ZW5kZW5jeSBieSB1c2luZyB0aGUga2V5LiBVc2VkIGJ5IGJvdGgKKyAqIGNoZWNrX2RlcGVuZGVu Y3lfb25fcmVwbGljYV9pZGVudGl0eSBhbmQgY2hlY2tfZGVwZW5kZW5jeV9vbl9sb2NhbF9rZXku CisgKi8KK3N0YXRpYyB2b2lkCitjaGVja19kZXBlbmRlbmN5X2J5X2tleShSZXBsaWNhSWRlbnRp dHlLZXkgKmtleSwgVHJhbnNhY3Rpb25JZCBuZXdfZGVwZW5kZWRfeGlkLAorCQkJCQkJTGlzdCAq KmRlcGVuZHNfb25feGlkcykKK3sKKwlSZXBsaWNhSWRlbnRpdHlFbnRyeSAgICpyaWVudHJ5Owor CWJvb2wJCQkJCWZvdW5kID0gZmFsc2U7CisJTWVtb3J5Q29udGV4dAkJCW9sZGN0eDsKKworCW9s ZGN0eCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhBcHBseUNvbnRleHQpOworCisJaWYgKFRyYW5z YWN0aW9uSWRJc1ZhbGlkKG5ld19kZXBlbmRlZF94aWQpKQorCXsKKwkJcmllbnRyeSA9IHJlcGxp Y2FfaWRlbnRpdHlfaW5zZXJ0KHJlcGxpY2FfaWRlbnRpdHlfdGFibGUsIGtleSwKKwkJCQkJCQkJ CQkgICZmb3VuZCk7CisKKwkJLyoKKwkJICogUmVsZWFzZSB0aGUga2V5IGJ1aWx0IHRvIHNlYXJj aCB0aGUgZW50cnksIGlmIHRoZSBlbnRyeSBhbHJlYWR5CisJCSAqIGV4aXN0cy4gT3RoZXJ3aXNl LCBpbml0aWFsaXplIHRoZSByZW1vdGVfeGlkLgorCQkgKi8KKwkJaWYgKGZvdW5kKQorCQl7CisJ CQllbG9nKERFQlVHMSwKKwkJCQkga2V5LT5raW5kID09IExPR0lDQUxSRVBfS0VZX1JFUExJQ0Ff SURFTlRJVFkgPworCQkJCSAiZm91bmQgY29uZmxpY3RpbmcgcmVwbGljYSBpZGVudGl0eSBjaGFu Z2UgZnJvbSAldSIgOgorCQkJCSAiZm91bmQgY29uZmxpY3RpbmcgbG9jYWwgdW5pcXVlIGNoYW5n ZSBmcm9tICV1IiwKKwkJCQkgcmllbnRyeS0+cmVtb3RlX3hpZCk7CisKKwkJCWZyZWVfcmVwbGlj YV9pZGVudGl0eV9rZXkoa2V5KTsKKwkJfQorCQllbHNlCisJCQlyaWVudHJ5LT5yZW1vdGVfeGlk ID0gSW52YWxpZFRyYW5zYWN0aW9uSWQ7CisJfQorCWVsc2UKKwl7CisJCXJpZW50cnkgPSByZXBs aWNhX2lkZW50aXR5X2xvb2t1cChyZXBsaWNhX2lkZW50aXR5X3RhYmxlLCBrZXkpOworCQlmcmVl X3JlcGxpY2FfaWRlbnRpdHlfa2V5KGtleSk7CisJfQorCisJTWVtb3J5Q29udGV4dFN3aXRjaFRv KG9sZGN0eCk7CisKKwkvKiBSZXR1cm4gaWYgbm8gZW50cnkgZm91bmQgKi8KKwlpZiAoIXJpZW50 cnkpCisJCXJldHVybjsKKworCUFzc2VydCghZm91bmQgfHwgVHJhbnNhY3Rpb25JZElzVmFsaWQo cmllbnRyeS0+cmVtb3RlX3hpZCkpOworCisJKmRlcGVuZHNfb25feGlkcyA9IGNoZWNrX2FuZF9h cHBlbmRfeGlkX2RlcGVuZGVuY3koKmRlcGVuZHNfb25feGlkcywKKwkJCQkJCQkJCQkJCQkgICAm cmllbnRyeS0+cmVtb3RlX3hpZCwKKwkJCQkJCQkJCQkJCQkgICBuZXdfZGVwZW5kZWRfeGlkKTsK KworCS8qCisJICogUmVtb3ZlIHRoZSBlbnRyeSBpZiBpdCBpcyByZWdpc3RlcmVkIGZvciB0aGUg c3RyZWFtZWQgdHJhbnNhY3Rpb25zLiBXZQorCSAqIGRvIG5vdCBoYXZlIHRvIHJlZ2lzdGVyIGFu IGVudHJ5IGZvciB0aGVtOyBUaGUgbGVhZGVyIHdvcmtlciBhbHdheXMKKwkgKiB3YWl0cyB1bnRp bCB0aGUgcGFyYWxsZWwgd29ya2VyIGZpbmlzaGVzIGhhbmRsaW5nIHN0cmVhbWVkIHRyYW5zYWN0 aW9ucywKKwkgKiB0aHVzIG5vIG5lZWQgdG8gY29uc2lkZXIgdGhlIHBvc3NpYmxpdHkgdGhhdCB1 cGNvbWluZyBwYXJhbGxlbCB3b3JrZXJzCisJICogd291bGQgZ28gYWhlYWQuCisJICovCisJaWYg KFRyYW5zYWN0aW9uSWRJc1ZhbGlkKHN0cmVhbV94aWQpICYmICFmb3VuZCkKKwl7CisJCWZyZWVf cmVwbGljYV9pZGVudGl0eV9rZXkocmllbnRyeS0+a2V5ZGF0YSk7CisJCXJlcGxpY2FfaWRlbnRp dHlfZGVsZXRlX2l0ZW0ocmVwbGljYV9pZGVudGl0eV90YWJsZSwgcmllbnRyeSk7CisJfQorCisJ LyoKKwkgKiBVcGRhdGUgdGhlIG5ldyBkZXBlbmRlZCB4aWQgaW50byB0aGUgZW50cnkgaWYgdmFs aWQsIHRoZSBuZXcgeGlkIGNvdWxkCisJICogYmUgaW52YWxpZCBpZiB0aGUgdHJhbnNhY3Rpb24g d2lsbCBiZSBhcHBsaWVkIGJ5IHRoZSBsZWFkZXIgaXRzZWxmCisJICogd2hpY2ggbWVhbnMgYWxs IHRoZSBjaGFuZ2VzIHdpbGwgYmUgY29tbWl0dGVkIGJlZm9yZSBwcm9jZXNzaW5nIG5leHQKKwkg KiB0cmFuc2FjdGlvbiwgc28gbm8gbmVlZCB0byBiZSBkZXBlbmRlZCBvbi4KKwkgKi8KKwllbHNl IGlmIChUcmFuc2FjdGlvbklkSXNWYWxpZChuZXdfZGVwZW5kZWRfeGlkKSkKKwkJcmllbnRyeS0+ cmVtb3RlX3hpZCA9IG5ld19kZXBlbmRlZF94aWQ7CisKKwkvKgorCSAqIFJlbW92ZSB0aGUgZW50 cnkgaWYgdGhlIHRyYW5zYWN0aW9uIGhhcyBiZWVuIGNvbW1pdHRlZCBhbmQgbm8gbmV3CisJICog ZGVwZW5kZW5jeSBuZWVkcyB0byBiZSBhZGRlZC4KKwkgKi8KKwllbHNlIGlmICghVHJhbnNhY3Rp b25JZElzVmFsaWQocmllbnRyeS0+cmVtb3RlX3hpZCkpCisJeworCQlmcmVlX3JlcGxpY2FfaWRl bnRpdHlfa2V5KHJpZW50cnktPmtleWRhdGEpOworCQlyZXBsaWNhX2lkZW50aXR5X2RlbGV0ZV9p dGVtKHJlcGxpY2FfaWRlbnRpdHlfdGFibGUsIHJpZW50cnkpOworCX0KK30KKwogLyoKICAqIENo ZWNrIGZvciBkZXBlbmRlbmNpZXMgb24gcHJlY2VkaW5nIHRyYW5zYWN0aW9ucyB0aGF0IG1vZGlm eSB0aGUgc2FtZSBrZXkuCiAgKiBSZXR1cm5zIHRoZSBkZXBlbmRlbnQgdHJhbnNhY3Rpb25zIGlu ICdkZXBlbmRzX29uX3hpZHMnIGFuZCByZWNvcmRzIHRoZQpAQCAtODYxLDEwICs5NjIsOCBAQCBj aGVja19kZXBlbmRlbmN5X29uX3JlcGxpY2FfaWRlbnRpdHkoT2lkIHJlbGlkLAogCUxvZ2ljYWxS ZXBSZWxNYXBFbnRyeSAqcmVsZW50cnk7CiAJTG9naWNhbFJlcFR1cGxlRGF0YSAqcmlkYXRhOwog CVJlcGxpY2FJZGVudGl0eUtleSAqcmlrZXk7Ci0JUmVwbGljYUlkZW50aXR5RW50cnkgKnJpZW50 cnk7CiAJTWVtb3J5Q29udGV4dCBvbGRjdHg7CiAJaW50CQkJbl9yaTsKLQlib29sCQlmb3VuZCA9 IGZhbHNlOwogCiAJQXNzZXJ0KGRlcGVuZHNfb25feGlkcyk7CiAKQEAgLTkzMCw3NSArMTAyOSwx MjIgQEAgY2hlY2tfZGVwZW5kZW5jeV9vbl9yZXBsaWNhX2lkZW50aXR5KE9pZCByZWxpZCwKIAog CXJpa2V5ID0gcGFsbG9jMF9vYmplY3QoUmVwbGljYUlkZW50aXR5S2V5KTsKIAlyaWtleS0+cmVs aWQgPSByZWxpZDsKKwlyaWtleS0+a2luZCA9IExPR0lDQUxSRVBfS0VZX1JFUExJQ0FfSURFTlRJ VFk7CiAJcmlrZXktPmRhdGEgPSByaWRhdGE7CiAKLQlpZiAoVHJhbnNhY3Rpb25JZElzVmFsaWQo bmV3X2RlcGVuZGVkX3hpZCkpCisJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGN0eCk7CisKKwlj aGVja19kZXBlbmRlbmN5X2J5X2tleShyaWtleSwgbmV3X2RlcGVuZGVkX3hpZCwgZGVwZW5kc19v bl94aWRzKTsKK30KKworLyoKKyAqIE1vc3RseSBzYW1lIGFzIGNoZWNrX2RlcGVuZGVuY3lfb25f cmVwbGljYV9pZGVudGl0eSgpIGJ1dCBmb3IgbG9jYWwgdW5pcXVlCisgKiBpbmRleGVzLgorICov CitzdGF0aWMgdm9pZAorY2hlY2tfZGVwZW5kZW5jeV9vbl9sb2NhbF9rZXkoT2lkIHJlbGlkLAor CQkJCQkJCSAgTG9naWNhbFJlcFR1cGxlRGF0YSAqb3JpZ2luYWxfZGF0YSwKKwkJCQkJCQkgIFRy YW5zYWN0aW9uSWQgbmV3X2RlcGVuZGVkX3hpZCwKKwkJCQkJCQkgIExpc3QgKipkZXBlbmRzX29u X3hpZHMpCit7CisJTG9naWNhbFJlcFJlbE1hcEVudHJ5ICpyZWxlbnRyeTsKKwlMb2dpY2FsUmVw VHVwbGVEYXRhICpyaWRhdGE7CisJUmVwbGljYUlkZW50aXR5S2V5ICpyaWtleTsKKwlNZW1vcnlD b250ZXh0IG9sZGN0eDsKKworCUFzc2VydChkZXBlbmRzX29uX3hpZHMpOworCisJLyogU2VhcmNo IGZvciBleGlzdGluZyBlbnRyeSAqLworCXJlbGVudHJ5ID0gbG9naWNhbHJlcF9nZXRfcmVsZW50 cnkocmVsaWQpOworCisJQXNzZXJ0KHJlbGVudHJ5KTsKKworCS8qCisJICogR2F0aGVyIGluZm9y bWF0aW9uIGZvciBsb2NhbCBpbmRleGVzIGlmIG5vdCB5ZXQuIFdlIHJlcXVpcmUgdG8gYmUgaW4g YQorCSAqIHRyYW5zYWN0aW9uIHN0YXRlIGJlY2F1c2Ugc3lzdGVtIGNhdGFsb2dzIGFyZSByZWFk LgorCSAqLworCWlmICghcmVsZW50cnktPmxvY2FsX3VuaXF1ZV9pbmRleGVzX2NvbGxlY3RlZCkK IAl7Ci0JCXJpZW50cnkgPSByZXBsaWNhX2lkZW50aXR5X2luc2VydChyZXBsaWNhX2lkZW50aXR5 X3RhYmxlLCByaWtleSwKLQkJCQkJCQkJCQkgICZmb3VuZCk7CisJCWJvb2wJbmVlZHNfc3RhcnQg PSAhSXNUcmFuc2FjdGlvbk9yVHJhbnNhY3Rpb25CbG9jaygpOworCisJCWlmIChuZWVkc19zdGFy dCkKKwkJCVN0YXJ0VHJhbnNhY3Rpb25Db21tYW5kKCk7CisKKwkJbG9naWNhbHJlcF9yZWxfbG9h ZChOVUxMLCByZWxpZCwgQWNjZXNzU2hhcmVMb2NrKTsKIAogCQkvKgotCQkgKiBSZWxlYXNlIHRo ZSBrZXkgYnVpbHQgdG8gc2VhcmNoIHRoZSBlbnRyeSwgaWYgdGhlIGVudHJ5IGFscmVhZHkKLQkJ ICogZXhpc3RzLiBPdGhlcndpc2UsIGluaXRpYWxpemUgdGhlIHJlbW90ZV94aWQuCisJCSAqIENs b3NlIHRoZSB0cmFuc2FjdGlvbiBpZiB3ZSBzdGFydCBoZXJlLiBXZSBtdXN0IG5vdCBhYm9ydCBi ZWNhdXNlIGl0CisJCSAqIHdvdWxkIHJlbGVhc2UgYWxsIHNlc3Npb24tbGV2ZWwgbG9ja3MsIHN1 Y2ggYXMgdGhlIHN0cmVhbSBsb2NrLCBhbmQKKwkJICogYnJlYWsgdGhlIGRlYWRsb2NrIGRldGVj dGlvbiBtZWNoYW5pc20gYmV0d2VlbiBMQSBhbmQgUEEuIFRoZQorCQkgKiBvdXRjb21lIGlzIHRo ZSBzYW1lIHJlZ2FyZGxlc3Mgb2YgdGhlIGVuZCBzdGF0dXMsIHNpbmNlIHRoZQorCQkgKiB0cmFu c2FjdGlvbiBkaWQgbm90IG1vZGlmeSBhbnkgdHVwbGVzLgogCQkgKi8KLQkJaWYgKGZvdW5kKQot CQl7Ci0JCQllbG9nKERFQlVHMSwgImZvdW5kIGNvbmZsaWN0aW5nIHJlcGxpY2EgaWRlbnRpdHkg Y2hhbmdlIGZyb20gJXUiLAotCQkJCSByaWVudHJ5LT5yZW1vdGVfeGlkKTsKKwkJaWYgKG5lZWRz X3N0YXJ0KQorCQkJQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7CiAKLQkJCWZyZWVfcmVwbGlj YV9pZGVudGl0eV9rZXkocmlrZXkpOwotCQl9Ci0JCWVsc2UKLQkJCXJpZW50cnktPnJlbW90ZV94 aWQgPSBJbnZhbGlkVHJhbnNhY3Rpb25JZDsKKwkJQXNzZXJ0KHJlbGVudHJ5LT5sb2NhbF91bmlx dWVfaW5kZXhlc19jb2xsZWN0ZWQpOwogCX0KLQllbHNlCisKKwlmb3JlYWNoX3B0cihMb2dpY2Fs UmVwU3Vic2NyaWJlcklkeCwgaWR4aW5mbywgcmVsZW50cnktPmxvY2FsX3VuaXF1ZV9pbmRleGVz KQogCXsKLQkJcmllbnRyeSA9IHJlcGxpY2FfaWRlbnRpdHlfbG9va3VwKHJlcGxpY2FfaWRlbnRp dHlfdGFibGUsIHJpa2V5KTsKLQkJZnJlZV9yZXBsaWNhX2lkZW50aXR5X2tleShyaWtleSk7Ci0J fQorCQlpbnQJCQljb2x1bW5zID0gYm1zX251bV9tZW1iZXJzKGlkeGluZm8tPmluZGV4a2V5cyk7 CisJCWJvb2wJCXN1aXRhYmxlID0gdHJ1ZTsKIAotCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRj dHgpOworCQlBc3NlcnQoY29sdW1ucyk7CiAKLQkvKiBSZXR1cm4gaWYgbm8gZW50cnkgZm91bmQg Ki8KLQlpZiAoIXJpZW50cnkpCi0JCXJldHVybjsKKwkJZm9yIChpbnQgaSA9IDA7IGkgPCBvcmln aW5hbF9kYXRhLT5uY29sczsgaSsrKQorCQl7CisJCQlpZiAoIWJtc19pc19tZW1iZXIoaSwgaWR4 aW5mby0+aW5kZXhrZXlzKSkKKwkJCQljb250aW51ZTsKIAotCUFzc2VydCghZm91bmQgfHwgVHJh bnNhY3Rpb25JZElzVmFsaWQocmllbnRyeS0+cmVtb3RlX3hpZCkpOworCQkJLyoKKwkJCSAqIFNr aXAgaWYgdGhlIGNvbHVtbiBpcyBub3QgY2hhbmdlZC4KKwkJCSAqCisJCQkgKiBYWFg6IE5VTEwg aXMgYWxsb3dlZC4KKwkJCSAqLworCQkJaWYgKG9yaWdpbmFsX2RhdGEtPmNvbHN0YXR1c1tpXSA9 PSBMT0dJQ0FMUkVQX0NPTFVNTl9VTkNIQU5HRUQpCisJCQl7CisJCQkJc3VpdGFibGUgPSBmYWxz ZTsKKwkJCQlicmVhazsKKwkJCX0KKwkJfQogCi0JKmRlcGVuZHNfb25feGlkcyA9IGNoZWNrX2Fu ZF9hcHBlbmRfeGlkX2RlcGVuZGVuY3koKmRlcGVuZHNfb25feGlkcywKLQkJCQkJCQkJCQkJCQkg ICAmcmllbnRyeS0+cmVtb3RlX3hpZCwKLQkJCQkJCQkJCQkJCQkgICBuZXdfZGVwZW5kZWRfeGlk KTsKKwkJaWYgKCFzdWl0YWJsZSkKKwkJCWNvbnRpbnVlOwogCi0JLyoKLQkgKiBSZW1vdmUgdGhl IGVudHJ5IGlmIGl0IGlzIHJlZ2lzdGVyZWQgZm9yIHRoZSBzdHJlYW1lZCB0cmFuc2FjdGlvbnMu IFdlCi0JICogZG8gbm90IGhhdmUgdG8gcmVnaXN0ZXIgYW4gZW50cnkgZm9yIHRoZW07IFRoZSBs ZWFkZXIgd29ya2VyIGFsd2F5cwotCSAqIHdhaXRzIHVudGlsIHRoZSBwYXJhbGxlbCB3b3JrZXIg ZmluaXNoZXMgaGFuZGxpbmcgc3RyZWFtZWQgdHJhbnNhY3Rpb25zLAotCSAqIHRodXMgbm8gbmVl ZCB0byBjb25zaWRlciB0aGUgcG9zc2libGl0eSB0aGF0IHVwY29taW5nIHBhcmFsbGVsIHdvcmtl cnMKLQkgKiB3b3VsZCBnbyBhaGVhZC4KLQkgKi8KLQlpZiAoVHJhbnNhY3Rpb25JZElzVmFsaWQo c3RyZWFtX3hpZCkgJiYgIWZvdW5kKQotCXsKLQkJZnJlZV9yZXBsaWNhX2lkZW50aXR5X2tleShy aWVudHJ5LT5rZXlkYXRhKTsKLQkJcmVwbGljYV9pZGVudGl0eV9kZWxldGVfaXRlbShyZXBsaWNh X2lkZW50aXR5X3RhYmxlLCByaWVudHJ5KTsKLQl9CisJCW9sZGN0eCA9IE1lbW9yeUNvbnRleHRT d2l0Y2hUbyhBcHBseUNvbnRleHQpOwogCi0JLyoKLQkgKiBVcGRhdGUgdGhlIG5ldyBkZXBlbmRl ZCB4aWQgaW50byB0aGUgZW50cnkgaWYgdmFsaWQsIHRoZSBuZXcgeGlkIGNvdWxkCi0JICogYmUg aW52YWxpZCBpZiB0aGUgdHJhbnNhY3Rpb24gd2lsbCBiZSBhcHBsaWVkIGJ5IHRoZSBsZWFkZXIg aXRzZWxmCi0JICogd2hpY2ggbWVhbnMgYWxsIHRoZSBjaGFuZ2VzIHdpbGwgYmUgY29tbWl0dGVk IGJlZm9yZSBwcm9jZXNzaW5nIG5leHQKLQkgKiB0cmFuc2FjdGlvbiwgc28gbm8gbmVlZCB0byBi ZSBkZXBlbmRlZCBvbi4KLQkgKi8KLQllbHNlIGlmIChUcmFuc2FjdGlvbklkSXNWYWxpZChuZXdf ZGVwZW5kZWRfeGlkKSkKLQkJcmllbnRyeS0+cmVtb3RlX3hpZCA9IG5ld19kZXBlbmRlZF94aWQ7 CisJCS8qIEFsbG9jYXRlIHNwYWNlIGZvciByZXBsaWNhIGlkZW50aXR5IHZhbHVlcyAqLworCQly aWRhdGEgPSBwYWxsb2MwX29iamVjdChMb2dpY2FsUmVwVHVwbGVEYXRhKTsKKwkJcmlkYXRhLT5j b2x2YWx1ZXMgPSBwYWxsb2MwX2FycmF5KFN0cmluZ0luZm9EYXRhLCBjb2x1bW5zKTsKKwkJcmlk YXRhLT5jb2xzdGF0dXMgPSBwYWxsb2MwX2FycmF5KGNoYXIsIGNvbHVtbnMpOworCQlyaWRhdGEt Pm5jb2xzID0gY29sdW1uczsKIAotCS8qCi0JICogUmVtb3ZlIHRoZSBlbnRyeSBpZiB0aGUgdHJh bnNhY3Rpb24gaGFzIGJlZW4gY29tbWl0dGVkIGFuZCBubyBuZXcKLQkgKiBkZXBlbmRlbmN5IG5l ZWRzIHRvIGJlIGFkZGVkLgotCSAqLwotCWVsc2UgaWYgKCFUcmFuc2FjdGlvbklkSXNWYWxpZChy aWVudHJ5LT5yZW1vdGVfeGlkKSkKLQl7Ci0JCWZyZWVfcmVwbGljYV9pZGVudGl0eV9rZXkocmll bnRyeS0+a2V5ZGF0YSk7Ci0JCXJlcGxpY2FfaWRlbnRpdHlfZGVsZXRlX2l0ZW0ocmVwbGljYV9p ZGVudGl0eV90YWJsZSwgcmllbnRyeSk7CisJCWZvciAoaW50IGlfb3JpZ2luYWwgPSAwLCBpX2tl eSA9IDA7IGlfb3JpZ2luYWwgPCBvcmlnaW5hbF9kYXRhLT5uY29sczsgaV9vcmlnaW5hbCsrKQor CQl7CisJCQlpZiAoIWJtc19pc19tZW1iZXIoaV9vcmlnaW5hbCwgaWR4aW5mby0+aW5kZXhrZXlz KSkKKwkJCQljb250aW51ZTsKKworCQkJaWYgKG9yaWdpbmFsX2RhdGEtPmNvbHN0YXR1c1tpX29y aWdpbmFsXSAhPSBMT0dJQ0FMUkVQX0NPTFVNTl9OVUxMKQorCQkJeworCQkJCVN0cmluZ0luZm8J b3JpZ2luYWxfY29sdmFsdWUgPSAmb3JpZ2luYWxfZGF0YS0+Y29sdmFsdWVzW2lfb3JpZ2luYWxd OworCisJCQkJaW5pdFN0cmluZ0luZm9FeHQoJnJpZGF0YS0+Y29sdmFsdWVzW2lfa2V5XSwgb3Jp Z2luYWxfY29sdmFsdWUtPmxlbiArIDEpOworCQkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoJnJp ZGF0YS0+Y29sdmFsdWVzW2lfa2V5XSwgb3JpZ2luYWxfY29sdmFsdWUtPmRhdGEpOworCQkJfQor CisJCQlyaWRhdGEtPmNvbHN0YXR1c1tpX2tleV0gPSBvcmlnaW5hbF9kYXRhLT5jb2xzdGF0dXNb aV9vcmlnaW5hbF07CisJCQlpX2tleSsrOworCQl9CisKKwkJcmlrZXkgPSBwYWxsb2MwX29iamVj dChSZXBsaWNhSWRlbnRpdHlLZXkpOworCQlyaWtleS0+cmVsaWQgPSByZWxpZDsKKwkJcmlrZXkt PmtpbmQgPSBMT0dJQ0FMUkVQX0tFWV9MT0NBTF9VTklRVUU7CisJCXJpa2V5LT5kYXRhID0gcmlk YXRhOworCisJCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjdHgpOworCisJCWNoZWNrX2RlcGVu ZGVuY3lfYnlfa2V5KHJpa2V5LCBuZXdfZGVwZW5kZWRfeGlkLCBkZXBlbmRzX29uX3hpZHMpOwog CX0KIH0KIApAQCAtMTE4MSw2ICsxMzI3LDkgQEAgaGFuZGxlX2RlcGVuZGVuY3lfb25fY2hhbmdl KExvZ2ljYWxSZXBNc2dUeXBlIGFjdGlvbiwgU3RyaW5nSW5mbyBzLAogCQkJY2hlY2tfZGVwZW5k ZW5jeV9vbl9yZXBsaWNhX2lkZW50aXR5KHJlbGlkLCAmbmV3dHVwLAogCQkJCQkJCQkJCQkJIG5l d19kZXBlbmRlZF94aWQsCiAJCQkJCQkJCQkJCQkgJmRlcGVuZHNfb25feGlkcyk7CisJCQljaGVj a19kZXBlbmRlbmN5X29uX2xvY2FsX2tleShyZWxpZCwgJm5ld3R1cCwKKwkJCQkJCQkJCQkgIG5l d19kZXBlbmRlZF94aWQsCisJCQkJCQkJCQkJICAmZGVwZW5kc19vbl94aWRzKTsKIAkJCWNoZWNr X2RlcGVuZGVuY3lfZm9yX3BhcmFsbGVsX3NhZmV0eShyZWxpZCwgbmV3X2RlcGVuZGVkX3hpZCwK IAkJCQkJCQkJCQkJCSAmZGVwZW5kc19vbl94aWRzKTsKIAkJCWJyZWFrOwpAQCAtMTE5NCw2ICsx MzQzLDkgQEAgaGFuZGxlX2RlcGVuZGVuY3lfb25fY2hhbmdlKExvZ2ljYWxSZXBNc2dUeXBlIGFj dGlvbiwgU3RyaW5nSW5mbyBzLAogCQkJCWNoZWNrX2RlcGVuZGVuY3lfb25fcmVwbGljYV9pZGVu dGl0eShyZWxpZCwgJm9sZHR1cCwKIAkJCQkJCQkJCQkJCQkgbmV3X2RlcGVuZGVkX3hpZCwKIAkJ CQkJCQkJCQkJCQkgJmRlcGVuZHNfb25feGlkcyk7CisJCQkJY2hlY2tfZGVwZW5kZW5jeV9vbl9s b2NhbF9rZXkocmVsaWQsICZvbGR0dXAsCisJCQkJCQkJCQkJCSAgbmV3X2RlcGVuZGVkX3hpZCwK KwkJCQkJCQkJCQkJICAmZGVwZW5kc19vbl94aWRzKTsKIAkJCQljaGVja19kZXBlbmRlbmN5X2Zv cl9wYXJhbGxlbF9zYWZldHkocmVsaWQsIG5ld19kZXBlbmRlZF94aWQsCiAJCQkJCQkJCQkJCQkJ ICZkZXBlbmRzX29uX3hpZHMpOwogCQkJfQpAQCAtMTIwMSw2ICsxMzUzLDkgQEAgaGFuZGxlX2Rl cGVuZGVuY3lfb25fY2hhbmdlKExvZ2ljYWxSZXBNc2dUeXBlIGFjdGlvbiwgU3RyaW5nSW5mbyBz LAogCQkJY2hlY2tfZGVwZW5kZW5jeV9vbl9yZXBsaWNhX2lkZW50aXR5KHJlbGlkLCAmbmV3dHVw LAogCQkJCQkJCQkJCQkJIG5ld19kZXBlbmRlZF94aWQsCiAJCQkJCQkJCQkJCQkgJmRlcGVuZHNf b25feGlkcyk7CisJCQljaGVja19kZXBlbmRlbmN5X29uX2xvY2FsX2tleShyZWxpZCwgJm5ld3R1 cCwKKwkJCQkJCQkJCQkgIG5ld19kZXBlbmRlZF94aWQsCisJCQkJCQkJCQkJICAmZGVwZW5kc19v bl94aWRzKTsKIAkJCWNoZWNrX2RlcGVuZGVuY3lfZm9yX3BhcmFsbGVsX3NhZmV0eShyZWxpZCwg bmV3X2RlcGVuZGVkX3hpZCwKIAkJCQkJCQkJCQkJCSAmZGVwZW5kc19vbl94aWRzKTsKIAkJCWJy ZWFrOwpAQCAtMTIxMCw2ICsxMzY1LDkgQEAgaGFuZGxlX2RlcGVuZGVuY3lfb25fY2hhbmdlKExv Z2ljYWxSZXBNc2dUeXBlIGFjdGlvbiwgU3RyaW5nSW5mbyBzLAogCQkJY2hlY2tfZGVwZW5kZW5j eV9vbl9yZXBsaWNhX2lkZW50aXR5KHJlbGlkLCAmb2xkdHVwLAogCQkJCQkJCQkJCQkJIG5ld19k ZXBlbmRlZF94aWQsCiAJCQkJCQkJCQkJCQkgJmRlcGVuZHNfb25feGlkcyk7CisJCQljaGVja19k ZXBlbmRlbmN5X29uX2xvY2FsX2tleShyZWxpZCwgJm9sZHR1cCwKKwkJCQkJCQkJCQkgIG5ld19k ZXBlbmRlZF94aWQsCisJCQkJCQkJCQkJICAmZGVwZW5kc19vbl94aWRzKTsKIAkJCWNoZWNrX2Rl cGVuZGVuY3lfZm9yX3BhcmFsbGVsX3NhZmV0eShyZWxpZCwgbmV3X2RlcGVuZGVkX3hpZCwKIAkJ CQkJCQkJCQkJCSAmZGVwZW5kc19vbl94aWRzKTsKIAkJCWJyZWFrOwpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvc3RvcmFnZS9sbWdyL2RlYWRsb2NrLmMgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2xt Z3IvZGVhZGxvY2suYwppbmRleCBjNGJmYWFhNjdhYy4uY2E3ZGVlNTJiMzIgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9kZWFkbG9jay5jCisrKyBiL3NyYy9iYWNrZW5kL3N0 b3JhZ2UvbG1nci9kZWFkbG9jay5jCkBAIC0zMyw3ICszMyw2IEBACiAjaW5jbHVkZSAic3RvcmFn ZS9wcm9jbnVtYmVyLmgiCiAjaW5jbHVkZSAidXRpbHMvbWVtdXRpbHMuaCIKIAotCiAvKgogICog T25lIGVkZ2UgaW4gdGhlIHdhaXRzLWZvciBncmFwaC4KICAqCmRpZmYgLS1naXQgYS9zcmMvaW5j bHVkZS9yZXBsaWNhdGlvbi9sb2dpY2FscmVsYXRpb24uaCBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0 aW9uL2xvZ2ljYWxyZWxhdGlvbi5oCmluZGV4IGUzZDBkZjU4NjIwLi45YWM5N2ZjNGIzOCAxMDA2 NDQKLS0tIGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbHJlbGF0aW9uLmgKKysrIGIv c3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbHJlbGF0aW9uLmgKQEAgLTE2LDYgKzE2LDEy IEBACiAjaW5jbHVkZSAiY2F0YWxvZy9pbmRleC5oIgogI2luY2x1ZGUgInJlcGxpY2F0aW9uL2xv Z2ljYWxwcm90by5oIgogCit0eXBlZGVmIHN0cnVjdCBMb2dpY2FsUmVwU3Vic2NyaWJlcklkeAor eworCU9pZAkJCWluZGV4b2lkOwkvKiBPSUQgb2YgdGhlIGxvY2FsIGtleSAqLworCUJpdG1hcHNl dCAgKmluZGV4a2V5czsJLyogQml0bWFwIG9mIGtleSBjb2x1bW5zICpvbiByZW1vdGUqICovCit9 IExvZ2ljYWxSZXBTdWJzY3JpYmVySWR4OworCiB0eXBlZGVmIHN0cnVjdCBMb2dpY2FsUmVwUmVs TWFwRW50cnkKIHsKIAlMb2dpY2FsUmVwUmVsYXRpb24gcmVtb3RlcmVsOwkvKiBrZXkgaXMgcmVt b3RlcmVsLnJlbW90ZWlkICovCkBAIC00MCw2ICs0NiwxMCBAQCB0eXBlZGVmIHN0cnVjdCBMb2dp Y2FsUmVwUmVsTWFwRW50cnkKIAogCVRyYW5zYWN0aW9uSWQgbGFzdF9kZXBlbmRlZF94aWQ7CiAK KwkvKiBMb2NhbCB1bmlxdWUgaW5kZXhlcy4gVXNlZCBmb3IgZGVwZW5kZW5jeSB0cmFja2luZyAq LworCUxpc3QJICAgKmxvY2FsX3VuaXF1ZV9pbmRleGVzOworCWJvb2wJCWxvY2FsX3VuaXF1ZV9p bmRleGVzX2NvbGxlY3RlZDsKKwogCS8qCiAJICogV2hldGhlciB0aGUgcmVsYXRpb24gY2FuIGJl IGFwcGxpZWQgaW4gcGFyYWxsZWwgb3Igbm90LiBJdCBpcwogCSAqIGRpc3RpbmdsaXNoIHdoZXRo ZXIgZGVmaW5lZCB0cmlnZ2VycyBhcmUgdGhlIGltbXV0YWJsZSBvciBub3QuCkBAIC01MSw2ICs2 MSwxMCBAQCB0eXBlZGVmIHN0cnVjdCBMb2dpY2FsUmVwUmVsTWFwRW50cnkKIAkgKiBOb3RlIHRo YXQgd2UgZG8gbm90IGNoZWNrIHRoZSB1c2VyLWRlZmluZWQgY29uc3RyYWludHMgaGVyZS4gUG9z dGdyZVNRTAogCSAqIGhhcyBhbHJlYWR5IGFzc3VtZWQgdGhhdCBDSEVDSyBjb25zdHJhaW50cycg Y29uZGl0aW9ucyBhcmUgaW1tdXRhYmxlIGFuZAogCSAqIGhlcmUgZm9sbG93cyB0aGUgcnVsZS4K KwkgKgorCSAqIFhYWDogQWRkaXRvbmFsbHksIHRoaXMgY2FuIGJlIGZhbHNlIGlmIHRoZSByZWxh dGlvbiBoYXMgZXhwcmVzc2lvbgorCSAqIGluZGV4ZXMuIEJlY2F1c2Ugd2UgY2Fubm90IGNvbXB1 dGUgdGhlIGhhc2ggdmFsdWUgZm9yIHRoZSBkZXBlbmRlbmN5CisJICogdHJhY2tpbmcuCiAJICov CiAJY2hhcgkJcGFyYWxsZWxfc2FmZTsKIH0gTG9naWNhbFJlcFJlbE1hcEVudHJ5OwpkaWZmIC0t Z2l0IGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDUwX3BhcmFsbGVsX2FwcGx5LnBsIGIvc3Jj L3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDUwX3BhcmFsbGVsX2FwcGx5LnBsCmluZGV4IDkyNTRiODVk MzUwLi4zMzdhNTk4YTM4YyAxMDA2NDQKLS0tIGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDUw X3BhcmFsbGVsX2FwcGx5LnBsCisrKyBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzA1MF9wYXJh bGxlbF9hcHBseS5wbApAQCAtMjM0LDQgKzIzNCw0NyBAQCAkbm9kZV9zdWJzY3JpYmVyLT53YWl0 X2Zvcl9sb2cocXIvZmluaXNoIHdhaXRpbmcgZm9yIGRlcGVuZGVkIHhpZCAkeGlkLywgJG9mZnNl dAogCiAkaC0+cXVlcnlfc2FmZSgiQ09NTUlUOyIpOwogCisjIEVuc3VyZSBzdWJzY3JpYmVyLWxv Y2FsIGluZGV4ZXMgYXJlIGFsc28gdXNlZCBmb3IgdGhlIGRlcGVuZGVuY3kgdHJhY2tpbmcKKwor IyBUcnVuY2F0ZSB0aGUgZGF0YSBmb3IgdXBjb21pbmcgdGVzdHMKKyRub2RlX3B1Ymxpc2hlci0+ c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJUUlVOQ0FURSBUQUJMRSByZWdyZXNzX3RhYjsiKTsKKyRu b2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgncmVncmVzc19zdWInKTsKKworIyBEZWZp bmUgYW4gdW5pcXVlIGluZGV4IG9uIHN1YnNjcmliZXIKKyRub2RlX3N1YnNjcmliZXItPnNhZmVf cHNxbCgncG9zdGdyZXMnLAorICAgICJDUkVBVEUgSU5ERVggT04gcmVncmVzc190YWIgKHZhbHVl KTsiKTsKKworIyBBdHRhY2ggYW4gaW5qZWN0aW9uX3BvaW50LiBQYXJhbGxlbCB3b3JrZXJzIHdv dWxkIHdhaXQgYmVmb3JlIHRoZSBjb21taXQKKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgn cG9zdGdyZXMnLAorCSJTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19hdHRhY2goJ3BhcmFsbGVsLXdv cmtlci1iZWZvcmUtY29tbWl0Jywnd2FpdCcpOyIKKyk7CisKKyMgSW5zZXJ0IGEgdHVwbGUgb24g cHVibGlzaGVyLiBQYXJhbGxlbCB3b3JrZXIgd291bGQgd2FpdCBhdCB0aGUgaW5qZWN0aW9uCisj IHBvaW50Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorICAgICJJTlNF UlQgSU5UTyByZWdyZXNzX3RhYiBWQUxVRVMgKDEsICd3b3VsZCBjb25mbGljdCcpOyIpOworCisj IFdhaXQgdW50aWwgdGhlIHBhcmFsbGVsIHdvcmtlciBlbnRlcnMgdGhlIGluamVjdGlvbiBwb2lu dC4KKyRub2RlX3N1YnNjcmliZXItPndhaXRfZm9yX2V2ZW50KCdsb2dpY2FsIHJlcGxpY2F0aW9u IHBhcmFsbGVsIHdvcmtlcicsCisJJ3BhcmFsbGVsLXdvcmtlci1iZWZvcmUtY29tbWl0Jyk7CisK KyRvZmZzZXQgPSAtcyAkbm9kZV9zdWJzY3JpYmVyLT5sb2dmaWxlOworCisjIEluc2VydCB0dXBs ZXMgb24gcHVibGlzaGVyIGFnYWluLiBUaGlzIHRyYW5zYWN0aW9uIGlzIHdvdWxkIHdhaXQgYmVj YXVzZSBhbGwKKyMgcGFyYWxsZWwgd29ya2VycyB3YWl0IHRpbGwgdGhlIHByZXZpb3VzbHkgbGF1 bmNoZWQgd29ya2VyIGNvbW1pdHMuCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdy ZXMnLAorICAgICJJTlNFUlQgSU5UTyByZWdyZXNzX3RhYiBWQUxVRVMgKDIsICd3b3VsZCBub3Qg Y29uZmxpY3QnKTsiKTsKKworIyBWZXJpZnkgdGhlIHBhcmFsbGVsIHdvcmtlciB3YWl0cyBmb3Ig dGhlIHRyYW5zYWN0aW9uCiskc3RyID0gJG5vZGVfc3Vic2NyaWJlci0+d2FpdF9mb3JfbG9nKHFy L3dhaXQgZm9yIGRlcGVuZGVkIHhpZCAoWzEtOV1bMC05XSspLywgJG9mZnNldCk7CiskeGlkID0g JHN0ciA9fiAvd2FpdCBmb3IgZGVwZW5kZWQgeGlkIChbMS05XVswLTldKykvOworCisjIEluc2Vy dCBhIGNvbmZsaWN0aW5nIHR1cGxlIG9uIHB1Ymxpc2hlci4gTGVhZGVyIHdvcmtlciB3b3VsZCBk ZXRlY3QgdGhlIGNvbmZsaWN0CisjIGFuZCB3YWl0IGZvciB0aGUgdHJhbnNhY3Rpb24gdG8gY29t bWl0LgorJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKyAgICAiSU5TRVJU IElOVE8gcmVncmVzc190YWIgVkFMVUVTICgzLCAnd291bGQgY29uZmxpY3QnKTsiKTsKKworIyBW ZXJpZnkgdGhlIHBhcmFsbGVsIHdvcmtlciB3YWl0cyBmb3IgdGhlIHNhbWUgdHJhbnNhY3Rpb24K KyRub2RlX3N1YnNjcmliZXItPndhaXRfZm9yX2xvZyhxci93YWl0IGZvciBkZXBlbmRlZCB4aWQg JHhpZC8sICRvZmZzZXQpOworCiBkb25lX3Rlc3RpbmcoKTsKZGlmZiAtLWdpdCBhL3NyYy90b29s cy9wZ2luZGVudC90eXBlZGVmcy5saXN0IGIvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxp c3QKaW5kZXggODA4MTA3OTM3NDYuLjEyNDc5YjY0OTU4IDEwMDY0NAotLS0gYS9zcmMvdG9vbHMv cGdpbmRlbnQvdHlwZWRlZnMubGlzdAorKysgYi9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMu bGlzdApAQCAtMTYzNyw2ICsxNjM3LDcgQEAgTG9naWNhbFJlcEJlZ2luRGF0YQogTG9naWNhbFJl cENvbW1pdERhdGEKIExvZ2ljYWxSZXBDb21taXRQcmVwYXJlZFR4bkRhdGEKIExvZ2ljYWxSZXBD dHhTdHJ1Y3QKK0xvZ2ljYWxSZXBLZXlLaW5kCiBMb2dpY2FsUmVwTXNnVHlwZQogTG9naWNhbFJl cFBhcnRNYXBFbnRyeQogTG9naWNhbFJlcFByZXBhcmVkVHhuRGF0YQpAQCAtMTY0Niw2ICsxNjQ3 LDcgQEAgTG9naWNhbFJlcFJlbGF0aW9uCiBMb2dpY2FsUmVwUm9sbGJhY2tQcmVwYXJlZFR4bkRh dGEKIExvZ2ljYWxSZXBTZXF1ZW5jZUluZm8KIExvZ2ljYWxSZXBTdHJlYW1BYm9ydERhdGEKK0xv Z2ljYWxSZXBTdWJzY3JpYmVySWR4CiBMb2dpY2FsUmVwVHVwbGVEYXRhCiBMb2dpY2FsUmVwVHlw CiBMb2dpY2FsUmVwV29ya2VyCi0tIAoyLjQ3LjMKCg== --_009_TY7PR01MB145541DD6F5BE4CD403BA39FDF586ATY7PR01MB14554jp_--