From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 09907C28B30 for ; Mon, 10 Mar 2025 13:26:56 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id D6C37280003; Mon, 10 Mar 2025 09:26:52 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id D1AC2280001; Mon, 10 Mar 2025 09:26:52 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id B4929280003; Mon, 10 Mar 2025 09:26:52 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0017.hostedemail.com [216.40.44.17]) by kanga.kvack.org (Postfix) with ESMTP id 921CF280001 for ; Mon, 10 Mar 2025 09:26:52 -0400 (EDT) Received: from smtpin30.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay01.hostedemail.com (Postfix) with ESMTP id C87A11C9418 for ; Mon, 10 Mar 2025 13:26:54 +0000 (UTC) X-FDA: 83205716748.30.0DA9299 Received: from mailgw01.mediatek.com (mailgw01.mediatek.com [216.200.240.184]) by imf08.hostedemail.com (Postfix) with ESMTP id C5D1E16001D for ; Mon, 10 Mar 2025 13:26:50 +0000 (UTC) Authentication-Results: imf08.hostedemail.com; dkim=pass header.d=mediatek.com header.s=dk header.b=IwrVCC5o; dkim=pass header.d=mediateko365.onmicrosoft.com header.s=selector2-mediateko365-onmicrosoft-com header.b=L7gy7yYi; spf=pass (imf08.hostedemail.com: domain of qun-wei.lin@mediatek.com designates 216.200.240.184 as permitted sender) smtp.mailfrom=qun-wei.lin@mediatek.com; dmarc=pass (policy=quarantine) header.from=mediatek.com; arc=pass ("microsoft.com:s=arcselector10001:i=1") ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1741613211; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=LPuoQV23I4c4BZOkWmSMVEGOmonBXBFbPjtdHeVkn4g=; b=iwizjJX5B8QohX1pTQ7tCTPSuDTkel5mV61ym2PssC0Xk2PF3kTrSPADNh3pN8aF/5M0Tv bEmKRBCJZ4KGVs2uHLLrvX9ej3MxtHbvqwbQqkhoZ6CHQFeR8iLk69wcYpWsbgmAHh1SFd pqbFdMkuDsR8tECaFrVM2W721b2kCuM= ARC-Authentication-Results: i=2; imf08.hostedemail.com; dkim=pass header.d=mediatek.com header.s=dk header.b=IwrVCC5o; dkim=pass header.d=mediateko365.onmicrosoft.com header.s=selector2-mediateko365-onmicrosoft-com header.b=L7gy7yYi; spf=pass (imf08.hostedemail.com: domain of qun-wei.lin@mediatek.com designates 216.200.240.184 as permitted sender) smtp.mailfrom=qun-wei.lin@mediatek.com; dmarc=pass (policy=quarantine) header.from=mediatek.com; arc=pass ("microsoft.com:s=arcselector10001:i=1") ARC-Seal: i=2; s=arc-20220608; d=hostedemail.com; t=1741613211; a=rsa-sha256; cv=pass; b=s7xnMsDQkF4r36EnTHejSnBPRBK+FWdYhHgHoxOOHYPxtyr3y2FOlH/Rnk5vp9ONB6il+V GckbDg1VFc+Slrfu1ybxLtSkZW8rTNoOahwJ0sNzKk79eUDgByzcRki55NzTNBVXTvVpVR 1X3kyRTzi7zyA6mhR3d7XGiikfYWy24= X-UUID: 4e0e7c0cfdb311ef83f2a1c9db70dae0-20250310 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=mediatek.com; s=dk; h=MIME-Version:Content-Transfer-Encoding:Content-ID:Content-Type:In-Reply-To:References:Message-ID:Date:Subject:CC:To:From; bh=LPuoQV23I4c4BZOkWmSMVEGOmonBXBFbPjtdHeVkn4g=; b=IwrVCC5oOmSn2rHFoR2FoE0oFZ9nEFIuAhE5EDxnX35NeaDQvPnXKY+BwplWu7ekSrfW3OAF0GdvH11EkDmGdQsjXirDjBIZPKydpPN5Fi/m0JE8DDdOUNMBcAN31X+G2xHHhJn1EJQDt3Kw0YcXpR95wU90M/Bh9xhhQ35KUFk=; X-CID-P-RULE: Release_Ham X-CID-O-INFO: VERSION:1.2.1,REQID:804e5abf-69de-4a97-877f-2f78cf10ec6d,IP:0,UR L:0,TC:0,Content:0,EDM:0,RT:0,SF:0,FILE:0,BULK:0,RULE:Release_Ham,ACTION:r elease,TS:0 X-CID-META: VersionHash:0ef645f,CLOUDID:d6c12f8c-f5b8-47d5-8cf3-b68fe7530c9a,B ulkID:nil,BulkQuantity:0,Recheck:0,SF:80|81|82|83|102,TC:nil,Content:0|50, EDM:-3,IP:nil,URL:0,File:nil,RT:nil,Bulk:nil,QS:nil,BEC:nil,COL:0,OSI:0,OS A:0,AV:0,LES:1,SPR:NO,DKR:0,DKP:0,BRR:0,BRE:0,ARC:0 X-CID-BVR: 0,NGT X-CID-BAS: 0,NGT,0,_ X-CID-FACTOR: TF_CID_SPAM_SNR X-UUID: 4e0e7c0cfdb311ef83f2a1c9db70dae0-20250310 Received: from mtkmbs14n2.mediatek.inc [(172.21.101.76)] by mailgw01.mediatek.com (envelope-from ) (musrelay.mediatek.com ESMTP with TLSv1.2 ECDHE-RSA-AES256-GCM-SHA384 256/256) with ESMTP id 1341587498; Mon, 10 Mar 2025 06:26:42 -0700 Received: from mtkmbs10n2.mediatek.inc (172.21.101.183) by MTKMBS09N2.mediatek.inc (172.21.101.94) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1258.28; Mon, 10 Mar 2025 21:26:37 +0800 Received: from SEYPR02CU001.outbound.protection.outlook.com (172.21.101.237) by mtkmbs10n2.mediatek.inc (172.21.101.183) with Microsoft SMTP Server id 15.2.1258.28 via Frontend Transport; Mon, 10 Mar 2025 21:26:37 +0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=PWylBSiooPSfDu0TEYlD8SrXtrxA1t1wZQikH03ORbptv2k9uvsHVfnH2UvRTITeAz1EwICN8inK96O1WFwwHSKn6NnHZTrYm7kZSKwFCpBaouLSoYn/0NN39eBgOXX4RqS9uiyXnGYWa57uNtw9xkr6POMbcRAPahDfTkLiQdl1Pom8bLNsNHHO65ZfSBIGytrI23CiIgQFW4qQDPxw9Zj3TP4uXYiHrLpcHOQAFdk2Q34UEJfa9VcJTAxcAjQhdUZ+7leMswePbyIvSYQDMQo1NpY54jfmukdwFEPJIVwqdfxdENsEeq5AMkcykeam8O63tlEB2JFqDE/yIhjzKw== 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=LPuoQV23I4c4BZOkWmSMVEGOmonBXBFbPjtdHeVkn4g=; b=mtp5Pw9ndjLaa2h7uC/Sa58+RQPjpGplHosYLewkXo5VZZhMOGIq0+mAbeyzvE3QgCFnLbiL3aDPR/Sp4tljjMIEguOCuQZIC9m6jHXN925T0UWzpyvQT67XKVc3liMrTYvARpFLNrkELuv5kHRfMEjWXzIOIfMY9JOLtMjm1URmECjZKZlrxafaXGlgTjL3bdYyQPBySAY0iJME+ZsMDrlhV0ZhGzOagZF9g4p2+EjJdoJIEFxgfzpL/wAShoua1uiBaGoBQMCbOLoj3atkgcZX8RuRKmtNAPuPOckKdyodBhkQNDaMbb788n/x3am4cJu6FgBX1vl6Lro/cvbFmQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=mediatek.com; dmarc=pass action=none header.from=mediatek.com; dkim=pass header.d=mediatek.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mediateko365.onmicrosoft.com; s=selector2-mediateko365-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=LPuoQV23I4c4BZOkWmSMVEGOmonBXBFbPjtdHeVkn4g=; b=L7gy7yYio8OpVGztkZlPsd2ifztBAhTvI+O8MYnejhEznJ5bI8Or0RNqQFiIzo2nEmXaC8O3Rz4jVOck+xu453pdXbGRjbmMkUX7mLp0w5Kk+Ax+VcQh5bPO1gkFhDGUgfbNa+v3V8Y19YBnwqh3QbC149FonSSbpPM10dvIlZQ= Received: from PSAPR03MB5542.apcprd03.prod.outlook.com (2603:1096:301:4e::12) by TYSPR03MB8543.apcprd03.prod.outlook.com (2603:1096:405:61::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8511.26; Mon, 10 Mar 2025 13:26:35 +0000 Received: from PSAPR03MB5542.apcprd03.prod.outlook.com ([fe80::a323:3128:209c:f02]) by PSAPR03MB5542.apcprd03.prod.outlook.com ([fe80::a323:3128:209c:f02%4]) with mapi id 15.20.8511.026; Mon, 10 Mar 2025 13:26:35 +0000 From: =?utf-8?B?UXVuLXdlaSBMaW4gKOael+e+pOW0tCk=?= To: "21cnbao@gmail.com" <21cnbao@gmail.com> CC: =?utf-8?B?QW5kcmV3IFlhbmcgKOaliuaZuuW8tyk=?= , =?utf-8?B?Q2FzcGVyIExpICjmnY7kuK3mpq4p?= , "chrisl@kernel.org" , =?utf-8?B?SmFtZXMgSHN1ICjlvpDmhbbolrAp?= , AngeloGioacchino Del Regno , "akpm@linux-foundation.org" , "linux-kernel@vger.kernel.org" , "linux-mediatek@lists.infradead.org" , "ira.weiny@intel.com" , "linux-mm@kvack.org" , "dave.jiang@intel.com" , "schatzberg.dan@gmail.com" , =?utf-8?B?Q2hpbndlbiBDaGFuZyAo5by16Yym5paHKQ==?= , "viro@zeniv.linux.org.uk" , "ryan.roberts@arm.com" , "minchan@kernel.org" , "axboe@kernel.dk" , "linux-block@vger.kernel.org" , "kasong@tencent.com" , "nvdimm@lists.linux.dev" , "vishal.l.verma@intel.com" , "matthias.bgg@gmail.com" , "linux-arm-kernel@lists.infradead.org" , "ying.huang@intel.com" , "senozhatsky@chromium.org" , "dan.j.williams@intel.com" Subject: Re: [PATCH 2/2] kcompressd: Add Kcompressd for accelerated zram compression Thread-Topic: [PATCH 2/2] kcompressd: Add Kcompressd for accelerated zram compression Thread-Index: AQHbj1jervQE5KVJbEeGTu19qWI7uLNoExeAgAROTQA= Date: Mon, 10 Mar 2025 13:26:35 +0000 Message-ID: <7938f840136165be1c50050feb39fb14ee37721b.camel@mediatek.com> References: <20250307120141.1566673-1-qun-wei.lin@mediatek.com> <20250307120141.1566673-3-qun-wei.lin@mediatek.com> In-Reply-To: Accept-Language: zh-TW, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ms-publictraffictype: Email x-ms-traffictypediagnostic: PSAPR03MB5542:EE_|TYSPR03MB8543:EE_ x-ms-office365-filtering-correlation-id: b8c1fda2-e753-44b5-ca1f-08dd5fd72df9 x-ld-processed: a7687ede-7a6b-4ef6-bace-642f677fbe31,ExtAddr x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0;ARA:13230040|7416014|376014|1800799024|366016|38070700018; x-microsoft-antispam-message-info: =?utf-8?B?WlF1ZmgyT0NwaXh2allHbWlFZG1VY3BXL1NXYm0rcG8yQWRaTVlNRW5rdDcy?= =?utf-8?B?TmlOR2tqYXRTUjZmeWZjU2FWNGh6Vkl3RzhmY3YvblB3Y25yV2NSeVpSNUZm?= =?utf-8?B?NGdmZWVjMWcrSXpnL2E3ZXdia2J6dEtiVTV5bG9VYU9sN2NoK3BFTVNhYWhj?= =?utf-8?B?M2ltZWlDZmhBeGtxTUl1ZXhvUERleC8yalovYjZ3SE1UREMzZTVwejNRK1lQ?= =?utf-8?B?bjVyeUJZNnN3eWN1OWtHdEp4VFkvYS9Wa1FJdGZoY0lFZUI1RnNHWkYwN1pT?= =?utf-8?B?OTZuYkdQRTUvcitTOVZ0dDFRTWszbnJsY0cwSGlXMEZHWWw5eHJneFZyVWhX?= =?utf-8?B?ZDNGekpKR1lRaTMzVVdxT2UrQjB1Mk5KbytHb29MVEM0d1VpMWlKNEN0WGFu?= =?utf-8?B?K3FRWUdsN2ZyUVdjWVVadzE4TWJ1TEw3MVdtemJCb21iVVpWWTlDL1QyZVFq?= =?utf-8?B?WDJ6TFFzaTZlUDBkdXhCTVF5VGs3SGFzRnNNbEkzaUppK0dkcjBFTTBvNVdj?= =?utf-8?B?NWlOZEozc1Z6MGhmRjQrTEIzTU1zVTJ2L0ZNTU51VWRxMWlGSHlmQkVSaENL?= =?utf-8?B?NE5tQTdMbGpoUVU4a1hvcEhjMVBlTGpINTdYTDkvT1JMUWRkUmhBTk5zNE1y?= =?utf-8?B?U3lrbFBCWWFGdjhrSnYzY1ljcExKbVllWk1UQS9DNDhON2N0c05ra3Z1QVFy?= =?utf-8?B?S2V5QXJ6TzIzZDIyYURXblc2WkJIVjdYS1ZYbVdTbmpoeFJRWW1CVHNyNlBY?= =?utf-8?B?ZXA2c2FOYWpoUVk2WWZzSWVVZTFWczBBeHdhZ1ZyRkM3WTA3V0o3Y25iMGd5?= =?utf-8?B?VHhwM3NSS0dkZFVKU1lHdmw4SmtBWFpBcm5Jb2RYK29CUlRDR05RbnNjWloz?= =?utf-8?B?cE1STWhoY0tVVnRsODgrNFFYOUxsWEF6Q2ZYa3NvOTFkc3JmbFdPTUxEWVYy?= =?utf-8?B?ZDFEUk45Rm4vRHhVOEtIVWxvQVZ0ZThiVGZ5c21HUkpoV0RTWDkvRllJbzJF?= =?utf-8?B?eU0yZklTbkZUT1VTM0ZRUlVmWmc4OExrTGZwNEVzS294OHljc042VnQ4SzlR?= =?utf-8?B?OGhTSUJwSGpIbDNIRE5JZ3VuSVE2VGY0ZXdVcWNEcDFUcGVJVkVkS0VLMWhz?= =?utf-8?B?dG9yUWFNdWpqSzhsczBaYWlTREs4MDk4c2ZjYWJZWStlR3JLNXgwNitFQ2hi?= =?utf-8?B?OFRGRk5wQnBqajdsMHhrYkk5c0dsVngvdFNqa1pQUE1MOUhKUVhJaGRvbzBF?= =?utf-8?B?UEhjVVZJaDhLcC9mc2ZSRHNEUGlwMFJqVmJlQXBGd0hES0loa0h2NGhNV0I0?= =?utf-8?B?b2dUc2Zob1lvb0JBVk1SbFh2UFVBK1o4aUExRlZ0Q2RQcmRHTC8wZEEzeFJ2?= =?utf-8?B?S1paMHF2TVU0SG5DUlNDNWQ3T3hRcjgydUJzTzlCWjRvMDdTNVExb1N1Mmwx?= =?utf-8?B?Sng1VDFVeitLWTJkSzhONk9uOHIvdFdsUVBVN1h4YTh3UnFKSHRIZk5sSHYx?= =?utf-8?B?SDNwakx6NklTY3hDNXNodW0zbzlHdnFVLzQ0U2FwbmNmRUFRM09wdEMyUHRt?= =?utf-8?B?TFhFOXhPYnJyZDZLMEREbUk0SXBNWTJwak1WbmhnVzlrT1pwNStQTGdwUTNG?= =?utf-8?B?dDhhdFoxMXdrSHkrTzVuY2FqRDhqVGE5YXNnUERJNzFRYWI1WU9ZeUFEWmFP?= =?utf-8?B?UFZPaWFzVWorMjQxQUVDeVRyeExUeUhpNSt4aTZObUhWTlZIT1RPSzY2U3JX?= =?utf-8?B?bW9aVTdPSFpwOE9ORnRaM2pWdUY5ZkZhYkdIaGlOSExFbW9HRE1wdUg5OVV0?= =?utf-8?B?c3RHaFRSYWpXSzB5bTJURktKODc4RjlnMlp1b1VaL21rYXNEMWZmMjdEcElS?= =?utf-8?B?QzJQVkQ3clVic0dqam0veEhTWWNCSXcwZndXa2NYV3NKaUNPMlpybUdUMXE2?= =?utf-8?Q?4/ptEvCiSai6KcN2Nr2Rw5fieNrst7UJ?= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PSAPR03MB5542.apcprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(7416014)(376014)(1800799024)(366016)(38070700018);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?Z0VCOXduaXdZSG13c1N6M3hsckRiZVdZREZPUHQ5ajZlU056dXVSeUtMRFZT?= =?utf-8?B?endUeVJIcW9ZTDcyZTcvZFk1Z1NnT0EzSkxXOWZHLzl0RWJybjJ3Tmw4SC90?= =?utf-8?B?UkorT1h2VmZSMXhtM1NLSDA4b0FpanhzeFdmcTlMVm5VU3NnVzBmT0MyUHN3?= =?utf-8?B?S2NhRFlBWFhmNVVDVG8rN0syUkloVExRY05xamdRZVZxZW5KSVVzWDhEblU5?= =?utf-8?B?V012bnVlampPOHFJd0RQSTMra1J2VnlYUXZ4b2hkamhSTytvR2taWnRvYVVT?= =?utf-8?B?d2RRcHBwd3NvMGd5aHJBTXYybGdTdkVBdTBMODZQVDMzRnJaNXlkVmFEZTFz?= =?utf-8?B?N29oRFU2eWZzcXZxUEpodk82T09KMUdaNWl6THFhZWpQczh0ejB4YlJRRlc3?= =?utf-8?B?ZVFwMUtoamc4RWthS3FZQWFCczRGanp5eXFxT2RQL25lRVdZUS9kWXhQbUFi?= =?utf-8?B?TmlEcG9qV2NTMXV5SDRPd0RXcDNyeno1N0luc05tVmo0UUZSWStlMnZ0cGI2?= =?utf-8?B?ZzJCVnJvRm9QQWNFNzI0aTIzY0Y3MjRKUldaOThDcFI0bHFmakViY3BxOXE5?= =?utf-8?B?cEhtV0ZHb3dPTUdqN0JUbEhsT1VJdi9NMVlsdkcrU0pUZ3V2S3EwNmMrQSt3?= =?utf-8?B?SDRJaTJBak16dGdiTmRpbG5DOVR5REhKUVZ3RE14eG9RZWlmRStaMWdGSjJk?= =?utf-8?B?Z2dtK3U1Q3d2a1h0MWhGWDUxM3ZRNVM4Z0l3OVR5YWdLTUUySVhaM1RYRjI2?= =?utf-8?B?cC9Id0VMQnEwYXRLUmJzL1F1Snc3YUV2bjNOZ2RpYmVLN0NadVlBV2tTdVJ2?= =?utf-8?B?cXpod3drTVFJaElUaGxCQzNMNWlrUG14QVFHOVVqMmVBZURjNWg2Nk1ZUWds?= =?utf-8?B?b216RW1uMGRkaEdWbGR0SCtpc0N4REhEbkJ0ZnQremdxRjlkN3lDZEFqRmtI?= =?utf-8?B?OUpSUENNZUpxblBpaGgxUys3WFIwSnhOS0lNdU9mV0orVUYyNUpqaDEwOVNx?= =?utf-8?B?Ym90MmprNWlJaTFFZlpnVEFnWlJvTC9udW5pS2RBQWZSNE40OXc5NXZQU1Ns?= =?utf-8?B?ZVA3eEFtWVpKWGZkOTZrMUNONm9ibCs0SzZBUHUyeUJ3cXNjdHJTUVlLTTFK?= =?utf-8?B?T0g0OHpieHI1eHF2NlltNVcvS0VUTFoya1BoSEpqSURiWWFnTzhvVnh2UGVC?= =?utf-8?B?TEtsdVNYVjNPTUU0Z0ZPZy9NMkV2WWREYVhXRFJJUTdEUis1UDB3enUydnVx?= =?utf-8?B?aGlGY2FxNTl1M1U2VzJKRzEzcjRlVnFPSnp5ckdBSFFYWERSY0ZQczdtd2hY?= =?utf-8?B?eHpxaXNGaHZjYmhCczNtNThKVTlmM3RtVlVkN0FkQllncVJucng2Q3l6amdp?= =?utf-8?B?MCsxcHVQeHZ0R0JmVE5lU0ZmbnVOeFhsa1NDUnZ5bCtCZENhK1hBVk94Q2pB?= =?utf-8?B?OUNjVzhjVkFtTGl5K2VsaFpzNmlGWThqUjFjUy9PRVdGUzg1MXZyTUxBYVhz?= =?utf-8?B?WlBialJ0WWZBWThjcjdnbytKcG82SzkwTUNzNzQ5dmFaY2dVVzR1OFRjeG9m?= =?utf-8?B?MEErTTRBUGxLZVpka0tCOUtCUEVxazQ5RzE1dlhCTStYc2tDY1VBanJUVUZv?= =?utf-8?B?YU1KT2FWNTBMdE0vU09hZHhKdkt3ZnRzRkZ1TDBSVlVnTkRxMTdVTEZ4dlpq?= =?utf-8?B?THdvWDZnRmFIS1VneUhGblZTQ2tzMk02ZUZEUzJ1SUFhalRRemd0QkJ4SzR4?= =?utf-8?B?VFo2Nkx6V1RiK2JRSVo3b2NrYXRPS3hkb2tLaTM5RktZL05rSXRkdnFxbUV5?= =?utf-8?B?M1E0MGtpVmtNc1BmNGJ1bFhXVWZtUHFwOEtiZzBvSzYzYTR6dlJIVjZCalI1?= =?utf-8?B?TS9vQ0s4NVMxRTd1aDFPRE9LWGlXZUg5UVZ5ZnlGQlg2azVkY0NiMFMyL20z?= =?utf-8?B?aDZhVFpnY1lGaFRIZkRCNkE5emErNHZsM2pTUGZ1RFlYY0tuRjBlTzVKd09L?= =?utf-8?B?QXh2ZWhqY0VDalZJclVKRE5vQXNqcDNFNjNSTVFkRHJJcEJjZy9ORE1yMDd4?= =?utf-8?B?RWdmenlSa2FVb3pHK3UvN1pHNTQ5L0R6ek1VQjZGQ1hGYUQvdDdSTEkxOFFo?= =?utf-8?B?dFlJbnozVzhEWDRJL0VVWmsrRytwMURJR3ZOOWtYTjI0eG0wa1EzNGJ1aHZj?= =?utf-8?B?RHc9PQ==?= Content-Type: text/plain; charset="utf-8" Content-ID: Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: PSAPR03MB5542.apcprd03.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: b8c1fda2-e753-44b5-ca1f-08dd5fd72df9 X-MS-Exchange-CrossTenant-originalarrivaltime: 10 Mar 2025 13:26:35.0154 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: a7687ede-7a6b-4ef6-bace-642f677fbe31 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: nUPAGRjO1aQqpcrUj83zgin1XHvdUM4mq8DCQQtd1EsP3oeTn9h5DnavknCzMKr2ealoXq0/xnxPgtCoNEkRz4mulqvnU8l4Bygyow3DkJ0= X-MS-Exchange-Transport-CrossTenantHeadersStamped: TYSPR03MB8543 X-Rspamd-Server: rspam06 X-Rspamd-Queue-Id: C5D1E16001D X-Stat-Signature: besmypc5tz8sjnkf5998ocwuf5wxz8fn X-Rspam-User: X-HE-Tag: 1741613210-62957 X-HE-Meta: U2FsdGVkX19OMRUdtUGA6CTAdbIrCytLgf1/Izefk+GbykK5L5xcvpJnd/3f9mXeEt9UwU/pLU4ppc9QrsASYxe6Sge14tDJpvdbntInudnrJXiZ99HT4l+pMAxXTSOEDWLbzaUH00O0JKdhkXcLVrY0Cr4J8Pp+HtMqoWXJonC+ts3nu0Ic9SBrbIlnPAD+uJURNVc4Avzqz3UavLBiOMDzxaf6zTC4LQSLtHQTobjb43Tcxj6ZPq+tGXapmyaYb8sXGJM5tOL+lFjIDJjISZmyRvRQK0d3oJZ+MQu+V+gLiplDF+BvXM36z0fRCQ+FfGaYMigiTePZ7JpXwA7iRxDlMhwN4qjaF06jolyaLOhRzs+QzzT5gMs10xvukxiXbfy0jbpj0+AP/r2ua0bBEGg550DBBrm1cFOvNaAt2U2rcRZPKKwJvzoFLO8yDQdUp9b+lbp8AF7TgDtv14xpfxSlEBz/ko+f+PYZcnfO9X4XKboztFC4BABW7wxKks4T6TI7ci0Q5//dXc+HubxX7sNWShJDTa8Qm5REN70bphXQyDZgWNJu33Jz4yOWlYuzO4qXR13X45eKkJsGkdaoGB+VUWa/M0bjHGjC9whOrfsXKshp7/tfFlMzS7y0ALJ6s1P3vjMWb2UDol4SlkTbytlrhsVc7Wl6ozsP2rR9VaMGg8dqv4PZOyLDL9q3IFaaU/o9pfzTTR2zn9VXmRK4+r9E8nZijtfC6RjYgcY54H52GZ55Xij1EJZxskqnRSv8Q9TtR5xyeUJvtCQzqHX65nQpdHwrgdM/O7/x/5r00reV5UWqpYGxiC4h8v27nciGZxEpIUpsAfXXlIMlM+4hGnK4oBAHKuU/+ndLlssNSF6kxLnpBzn57ojJ3XLtlNgtDa0xU63bqzzUvTf8g6t/JZ/cp+3XHx77OAnq+oc4Kpsc1lKcriYOwuGgXr2dJ1sip+GuXF56qFKSGyThh/w 5tuJoDDf nYU+Z1e9ffqdlh5zKmKAXYV1v6mtxRMyxYEm+Y2bEgLggLy97UuzAFugktZ80KW5x3Dve9DV4Dzs6MHLQMEIlKnoRpy8UjLu4BJHd1ex+285Y+RCMsr0bFlL8CgmIad3TsXojnjww4tnR6SQnu3ACH9Kc7vENEYJLzMBY/LmSm7tPmgRidOU1GyRkRtcSTBmQoyE5XDEXnh8xBUzKO9BU7MIrZ/ECZvUAKsxNs0ZXag5w+vaZuDOUu5g6dwQpyeAWk9qoskUb/m13t1oHoGIU/17or1uMN66FUdNdZiMUgdONATe9z8kkIgS8KSRx9itWai4EF7lOuaEWB/tTUjgC97xJ/eSCfdltik+m9/L5SRKULnW5SziZZzK32CSs/ermV0NpjmQSKfLb65FsPXo6vDa15C0KzPoXeQ/tiO4J2TqRoAR/bi9eiDqJ31vFi8fwBVWWyUjdEa7oJK5bF2k+tK697C861TQWOkWvSFkr31ueWheNHlg7TwZLq8vjmBqVVezgdjQRQ34xFhIhwT7D6KDAUdYxt05/mYbykghTbNvatoNE6jWrvcTbfIDVyTPnUKaepd+cznQPAT/ASWCVoJMXZwu1ypUpg3vJbIJ7soYblehw980DPMRL+EeS6kxOpSV3jvYQeRfNqdLc70KOwuhrDlUPqGXF3EVz/TZCHkhyRJFDOn9uvusjHMZ4awxCsckeUK5LQHPu4UeNnmJ/iM5+1i66SXTWqo8yqYjZcUH6PUwe0iuozmY8Skt03mQ/daondGGRTMYKWXqIeRlJdOT+bGpKUYX1QJ1X X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: T24gU2F0LCAyMDI1LTAzLTA4IGF0IDA4OjQxICsxMzAwLCBCYXJyeSBTb25nIHdyb3RlOgo+IAo+ IEV4dGVybmFsIGVtYWlsIDogUGxlYXNlIGRvIG5vdCBjbGljayBsaW5rcyBvciBvcGVuIGF0dGFj aG1lbnRzIHVudGlsCj4geW91IGhhdmUgdmVyaWZpZWQgdGhlIHNlbmRlciBvciB0aGUgY29udGVu dC4KPiAKPiAKPiBPbiBTYXQsIE1hciA4LCAyMDI1IGF0IDE6MDLigK9BTSBRdW4tV2VpIExpbiA8 cXVuLXdlaS5saW5AbWVkaWF0ZWsuY29tPgo+IHdyb3RlOgo+ID4gCj4gPiBJbnRyb2R1Y2VkIEtj b21wcmVzc2QgdG8gb2ZmbG9hZCB6cmFtIHBhZ2UgY29tcHJlc3Npb24sIGltcHJvdmluZwo+ID4g c3lzdGVtIGVmZmljaWVuY3kgYnkgaGFuZGxpbmcgY29tcHJlc3Npb24gc2VwYXJhdGVseSBmcm9t IG1lbW9yeQo+ID4gcmVjbGFpbWluZy4gQWRkZWQgbmVjZXNzYXJ5IGNvbmZpZ3VyYXRpb25zIGFu ZCBkZXBlbmRlbmNpZXMuCj4gPiAKPiA+IFNpZ25lZC1vZmYtYnk6IFF1bi1XZWkgTGluIDxxdW4t d2VpLmxpbkBtZWRpYXRlay5jb20+Cj4gPiAtLS0KPiA+IMKgZHJpdmVycy9ibG9jay96cmFtL0tj b25maWfCoMKgwqDCoMKgIHzCoCAxMSArKwo+ID4gwqBkcml2ZXJzL2Jsb2NrL3pyYW0vTWFrZWZp bGXCoMKgwqDCoCB8wqDCoCAzICstCj4gPiDCoGRyaXZlcnMvYmxvY2svenJhbS9rY29tcHJlc3Nk LmMgfCAzNDAKPiA+ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCj4gPiDCoGRyaXZl cnMvYmxvY2svenJhbS9rY29tcHJlc3NkLmggfMKgIDI1ICsrKwo+ID4gwqBkcml2ZXJzL2Jsb2Nr L3pyYW0venJhbV9kcnYuY8KgwqAgfMKgIDIyICsrLQo+ID4gwqA1IGZpbGVzIGNoYW5nZWQsIDM5 NyBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQo+ID4gwqBjcmVhdGUgbW9kZSAxMDA2NDQg ZHJpdmVycy9ibG9jay96cmFtL2tjb21wcmVzc2QuYwo+ID4gwqBjcmVhdGUgbW9kZSAxMDA2NDQg ZHJpdmVycy9ibG9jay96cmFtL2tjb21wcmVzc2QuaAo+ID4gCj4gPiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9ibG9jay96cmFtL0tjb25maWcKPiA+IGIvZHJpdmVycy9ibG9jay96cmFtL0tjb25maWcK PiA+IGluZGV4IDQwMmI3YjE3NTg2My4uZjBhMWI1NzRmNzcwIDEwMDY0NAo+ID4gLS0tIGEvZHJp dmVycy9ibG9jay96cmFtL0tjb25maWcKPiA+ICsrKyBiL2RyaXZlcnMvYmxvY2svenJhbS9LY29u ZmlnCj4gPiBAQCAtMTQ1LDMgKzE0NSwxNCBAQCBjb25maWcgWlJBTV9NVUxUSV9DT01QCj4gPiDC oMKgwqDCoMKgwqDCoMKgwqAgcmUtY29tcHJlc3MgcGFnZXMgdXNpbmcgYSBwb3RlbnRpYWxseSBz bG93ZXIgYnV0IG1vcmUKPiA+IGVmZmVjdGl2ZQo+ID4gwqDCoMKgwqDCoMKgwqDCoMKgIGNvbXBy ZXNzaW9uIGFsZ29yaXRobS4gTm90ZSwgdGhhdCBJRExFIHBhZ2UgcmVjb21wcmVzc2lvbgo+ID4g wqDCoMKgwqDCoMKgwqDCoMKgIHJlcXVpcmVzIFpSQU1fVFJBQ0tfRU5UUllfQUNUSU1FLgo+ID4g Kwo+ID4gK2NvbmZpZyBLQ09NUFJFU1NECj4gPiArwqDCoMKgwqDCoMKgIHRyaXN0YXRlICJLY29t cHJlc3NkOiBBY2NlbGVyYXRlZCB6cmFtIGNvbXByZXNzaW9uIgo+ID4gK8KgwqDCoMKgwqDCoCBk ZXBlbmRzIG9uIFpSQU0KPiA+ICvCoMKgwqDCoMKgwqAgaGVscAo+ID4gK8KgwqDCoMKgwqDCoMKg wqAgS2NvbXByZXNzZCBjcmVhdGVzIG11bHRpcGxlIGRhZW1vbnMgdG8gYWNjZWxlcmF0ZSB0aGUK PiA+IGNvbXByZXNzaW9uIG9mIHBhZ2VzCj4gPiArwqDCoMKgwqDCoMKgwqDCoCBpbiB6cmFtLCBv ZmZsb2FkaW5nIHRoaXMgdGltZS1jb25zdW1pbmcgdGFzayBmcm9tIHRoZQo+ID4genJhbSBkcml2 ZXIuCj4gPiArCj4gPiArwqDCoMKgwqDCoMKgwqDCoCBUaGlzIGFwcHJvYWNoIGltcHJvdmVzIHN5 c3RlbSBlZmZpY2llbmN5IGJ5IGhhbmRsaW5nIHBhZ2UKPiA+IGNvbXByZXNzaW9uIHNlcGFyYXRl bHksCj4gPiArwqDCoMKgwqDCoMKgwqDCoCB3aGljaCB3YXMgb3JpZ2luYWxseSBkb25lIGJ5IGtz d2FwZCBvciBkaXJlY3QgcmVjbGFpbS4KPiAKPiBGb3IgZGlyZWN0IHJlY2xhaW0sIHdlIHdlcmUg cHJldmlvdXNseSBhYmxlIHRvIGNvbXByZXNzIHVzaW5nCj4gbXVsdGlwbGUgQ1BVcwo+IHdpdGgg bXVsdGktdGhyZWFkaW5nLgo+IEFmdGVyIHlvdXIgcGF0Y2gsIGl0IHNlZW1zIHRoYXQgb25seSBh IHNpbmdsZSB0aHJlYWQvQ1BVIGlzIHVzZWQgZm9yCj4gY29tcHJlc3Npb24KPiBzbyBpdCB3b24n dCBuZWNlc3NhcmlseSBpbXByb3ZlIGRpcmVjdCByZWNsYWltIHBlcmZvcm1hbmNlPwo+IAoKT3Vy IHBhdGNoIG9ubHkgc3BsaXRzIHRoZSBjb250ZXh0IG9mIGtzd2FwZC4gV2hlbiBkaXJlY3QgcmVj bGFpbSBpcwpvY2N1cnJlZCwgaXQgaXMgYnlwYXNzZWQsIHNvIGRpcmVjdCByZWNsYWltIHJlbWFp bnMgdW5jaGFuZ2VkLCB3aXRoCmVhY2ggdGhyZWFkIHRoYXQgbmVlZHMgbWVtb3J5IGRpcmVjdGx5 IHJlY2xhaW1pbmcgaXQuCgo+IEV2ZW4gZm9yIGtzd2FwZCwgd2UgdXNlZCB0byBoYXZlIG11bHRp cGxlIHRocmVhZHMgbGlrZSBba3N3YXBkMF0sCj4gW2tzd2FwZDFdLAo+IGFuZCBba3N3YXBkMl0g Zm9yIGRpZmZlcmVudCBub2Rlcy4gTm93LCBhcmUgd2UgYWxzbyBsaW1pdGVkIHRvIGp1c3QKPiBv bmUgdGhyZWFkPwoKV2Ugb25seSBjb25zaWRlcmVkIGEgc2luZ2xlIGtzd2FwZCBoZXJlIGFuZCBk aWRuJ3QgYWNjb3VudCBmb3IgbXVsdGlwbGUKaW5zdGFuY2VzLiBTaW5jZSBJIHVzZSBrZmlmbyB0 byBjb2xsZWN0IHRoZSBiaW9zLCBpZiB0aGVyZSBhcmUgbXVsdGlwbGUKa3N3YXBkcywgd2UgbmVl ZCB0byBhZGQgYSBsb2NrIHRvIHByb3RlY3QgdGhlIGJpbyBxdWV1ZS4gSSBjYW4gcmV2aXNlCnRo aXMgaW4gdGhlIDJuZCB2ZXJzaW9uLCBvciBkbyB5b3UgaGF2ZSBhbnkgb3RoZXIgc3VnZ2VzdGVk IGFwcHJvYWNoZXM/Cgo+IEkgYWxzbyB3b25kZXIgaWYgdGhpcyBjb3VsZCBiZSBoYW5kbGVkIGF0 IHRoZSB2bXNjYW4gbGV2ZWwgaW5zdGVhZCBvZgo+IHRoZSB6cmFtCj4gbGV2ZWwuIHRoZW4gaXQg bWlnaHQgcG90ZW50aWFsbHkgaGVscCBvdGhlciBzeW5jIGRldmljZXMgb3IgZXZlbgo+IHpzd2Fw IGxhdGVyLgo+IAo+IEJ1dCBJIGFncmVlIHRoYXQgZm9yIHBob25lcywgbW9kaWZ5aW5nIHpyYW0g c2VlbXMgbGlrZSBhbiBlYXNpZXIKPiBzdGFydGluZwo+IHBvaW50LiBIb3dldmVyLCByZWx5aW5n IG9uIGEgc2luZ2xlIHRocmVhZCBpc24ndCBhbHdheXMgdGhlIGJlc3QKPiBhcHByb2FjaC4KPiAK PiAKPiA+ICsKPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL3pyYW0vTWFrZWZpbGUKPiA+ IGIvZHJpdmVycy9ibG9jay96cmFtL01ha2VmaWxlCj4gPiBpbmRleCAwZmRlZmQ1NzY2OTEuLjIz YmFhNWRmY2ViOSAxMDA2NDQKPiA+IC0tLSBhL2RyaXZlcnMvYmxvY2svenJhbS9NYWtlZmlsZQo+ ID4gKysrIGIvZHJpdmVycy9ibG9jay96cmFtL01ha2VmaWxlCj4gPiBAQCAtOSw0ICs5LDUgQEAg enJhbS0kKENPTkZJR19aUkFNX0JBQ0tFTkRfWlNURCnCoMKgwqDCoMKgwqDCoCArPQo+ID4gYmFj a2VuZF96c3RkLm8KPiA+IMKgenJhbS0kKENPTkZJR19aUkFNX0JBQ0tFTkRfREVGTEFURSnCoMKg wqAgKz0gYmFja2VuZF9kZWZsYXRlLm8KPiA+IMKgenJhbS0kKENPTkZJR19aUkFNX0JBQ0tFTkRf ODQyKcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCArPSBiYWNrZW5kXzg0Mi5vCj4gPiAK PiA+IC1vYmotJChDT05GSUdfWlJBTSnCoMKgwqDCoCArPcKgwqDCoMKgwqAgenJhbS5vCj4gPiAr b2JqLSQoQ09ORklHX1pSQU0pwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICs9IHpyYW0ubwo+ID4g K29iai0kKENPTkZJR19LQ09NUFJFU1NEKcKgwqDCoMKgwqDCoCArPSBrY29tcHJlc3NkLm8KPiA+ IGRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL3pyYW0va2NvbXByZXNzZC5jCj4gPiBiL2RyaXZl cnMvYmxvY2svenJhbS9rY29tcHJlc3NkLmMKPiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gPiBp bmRleCAwMDAwMDAwMDAwMDAuLjE5NWI3ZTM4Njg2OQo+ID4gLS0tIC9kZXYvbnVsbAo+ID4gKysr IGIvZHJpdmVycy9ibG9jay96cmFtL2tjb21wcmVzc2QuYwo+ID4gQEAgLTAsMCArMSwzNDAgQEAK PiA+ICsvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMAo+ID4gKy8qCj4gPiArICog Q29weXJpZ2h0IChDKSAyMDI0IE1lZGlhVGVrIEluYy4KPiA+ICsgKi8KPiA+ICsKPiA+ICsjaW5j bHVkZSA8bGludXgvbW9kdWxlLmg+Cj4gPiArI2luY2x1ZGUgPGxpbnV4L2tlcm5lbC5oPgo+ID4g KyNpbmNsdWRlIDxsaW51eC9iaW8uaD4KPiA+ICsjaW5jbHVkZSA8bGludXgvYml0b3BzLmg+Cj4g PiArI2luY2x1ZGUgPGxpbnV4L2ZyZWV6ZXIuaD4KPiA+ICsjaW5jbHVkZSA8bGludXgva2VybmVs Lmg+Cj4gPiArI2luY2x1ZGUgPGxpbnV4L3BzaS5oPgo+ID4gKyNpbmNsdWRlIDxsaW51eC9rZmlm by5oPgo+ID4gKyNpbmNsdWRlIDxsaW51eC9zd2FwLmg+Cj4gPiArI2luY2x1ZGUgPGxpbnV4L2Rl bGF5Lmg+Cj4gPiArCj4gPiArI2luY2x1ZGUgImtjb21wcmVzc2QuaCIKPiA+ICsKPiA+ICsjZGVm aW5lIElOSVRfUVVFVUVfU0laRcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCA0MDk2Cj4g PiArI2RlZmluZSBERUZBVUxUX05SX0tDT01QUkVTU0TCoCA0Cj4gPiArCj4gPiArc3RhdGljIGF0 b21pY190IGVuYWJsZV9rY29tcHJlc3NkOwo+ID4gK3N0YXRpYyB1bnNpZ25lZCBpbnQgbnJfa2Nv bXByZXNzZDsKPiA+ICtzdGF0aWMgdW5zaWduZWQgaW50IHF1ZXVlX3NpemVfcGVyX2tjb21wcmVz c2Q7Cj4gPiArc3RhdGljIHN0cnVjdCBrY29tcHJlc3MgKmtjb21wcmVzczsKPiA+ICsKPiA+ICtl bnVtIHJ1bl9zdGF0ZSB7Cj4gPiArwqDCoMKgwqDCoMKgIEtDT01QUkVTU0RfTk9UX1NUQVJURUQg PSAwLAo+ID4gK8KgwqDCoMKgwqDCoCBLQ09NUFJFU1NEX1JVTk5JTkcsCj4gPiArwqDCoMKgwqDC oMKgIEtDT01QUkVTU0RfU0xFRVBJTkcsCj4gPiArfTsKPiA+ICsKPiA+ICtzdHJ1Y3Qga2NvbXBy ZXNzZF9wYXJhIHsKPiA+ICvCoMKgwqDCoMKgwqAgd2FpdF9xdWV1ZV9oZWFkX3QgKmtjb21wcmVz c2Rfd2FpdDsKPiA+ICvCoMKgwqDCoMKgwqAgc3RydWN0IGtmaWZvICp3cml0ZV9maWZvOwo+ID4g K8KgwqDCoMKgwqDCoCBhdG9taWNfdCAqcnVubmluZzsKPiA+ICt9Owo+ID4gKwo+ID4gK3N0YXRp YyBzdHJ1Y3Qga2NvbXByZXNzZF9wYXJhICprY29tcHJlc3NkX3BhcmE7Cj4gPiArc3RhdGljIEJM T0NLSU5HX05PVElGSUVSX0hFQUQoa2NvbXByZXNzZF9ub3RpZmllcl9saXN0KTsKPiA+ICsKPiA+ ICtzdHJ1Y3Qgd3JpdGVfd29yayB7Cj4gPiArwqDCoMKgwqDCoMKgIHZvaWQgKm1lbTsKPiA+ICvC oMKgwqDCoMKgwqAgc3RydWN0IGJpbyAqYmlvOwo+ID4gK8KgwqDCoMKgwqDCoCBjb21wcmVzc19j YWxsYmFjayBjYjsKPiA+ICt9Owo+ID4gKwo+ID4gK2ludCBrY29tcHJlc3NkX2VuYWJsZWQodm9p ZCkKPiA+ICt7Cj4gPiArwqDCoMKgwqDCoMKgIHJldHVybiBsaWtlbHkoYXRvbWljX3JlYWQoJmVu YWJsZV9rY29tcHJlc3NkKSk7Cj4gPiArfQo+ID4gK0VYUE9SVF9TWU1CT0woa2NvbXByZXNzZF9l bmFibGVkKTsKPiA+ICsKPiA+ICtzdGF0aWMgdm9pZCBrY29tcHJlc3NkX3RyeV90b19zbGVlcChz dHJ1Y3Qga2NvbXByZXNzZF9wYXJhICpwKQo+ID4gK3sKPiA+ICvCoMKgwqDCoMKgwqAgREVGSU5F X1dBSVQod2FpdCk7Cj4gPiArCj4gPiArwqDCoMKgwqDCoMKgIGlmICgha2ZpZm9faXNfZW1wdHko cC0+d3JpdGVfZmlmbykpCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1cm47 Cj4gPiArCj4gPiArwqDCoMKgwqDCoMKgIGlmIChmcmVlemluZyhjdXJyZW50KSB8fCBrdGhyZWFk X3Nob3VsZF9zdG9wKCkpCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1cm47 Cj4gPiArCj4gPiArwqDCoMKgwqDCoMKgIGF0b21pY19zZXQocC0+cnVubmluZywgS0NPTVBSRVNT RF9TTEVFUElORyk7Cj4gPiArwqDCoMKgwqDCoMKgIHByZXBhcmVfdG9fd2FpdChwLT5rY29tcHJl c3NkX3dhaXQsICZ3YWl0LAo+ID4gVEFTS19JTlRFUlJVUFRJQkxFKTsKPiA+ICsKPiA+ICvCoMKg wqDCoMKgwqAgLyoKPiA+ICvCoMKgwqDCoMKgwqDCoCAqIEFmdGVyIGEgc2hvcnQgc2xlZXAsIGNo ZWNrIGlmIGl0IHdhcyBhIHByZW1hdHVyZSBzbGVlcC4KPiA+IElmIG5vdCwgdGhlbgo+ID4gK8Kg wqDCoMKgwqDCoMKgICogZ28gZnVsbHkgdG8gc2xlZXAgdW50aWwgZXhwbGljaXRseSB3b2tlbiB1 cC4KPiA+ICvCoMKgwqDCoMKgwqDCoCAqLwo+ID4gK8KgwqDCoMKgwqDCoCBpZiAoIWt0aHJlYWRf c2hvdWxkX3N0b3AoKSAmJiBrZmlmb19pc19lbXB0eShwLQo+ID4gPndyaXRlX2ZpZm8pKQo+ID4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc2NoZWR1bGUoKTsKPiA+ICsKPiA+ICvCoMKg wqDCoMKgwqAgZmluaXNoX3dhaXQocC0+a2NvbXByZXNzZF93YWl0LCAmd2FpdCk7Cj4gPiArwqDC oMKgwqDCoMKgIGF0b21pY19zZXQocC0+cnVubmluZywgS0NPTVBSRVNTRF9SVU5OSU5HKTsKPiA+ ICt9Cj4gPiArCj4gPiArc3RhdGljIGludCBrY29tcHJlc3NkKHZvaWQgKnBhcmEpCj4gPiArewo+ ID4gK8KgwqDCoMKgwqDCoCBzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzayA9IGN1cnJlbnQ7Cj4gPiAr wqDCoMKgwqDCoMKgIHN0cnVjdCBrY29tcHJlc3NkX3BhcmEgKnAgPSAoc3RydWN0IGtjb21wcmVz c2RfcGFyYSAqKXBhcmE7Cj4gPiArCj4gPiArwqDCoMKgwqDCoMKgIHRzay0+ZmxhZ3MgfD0gUEZf TUVNQUxMT0MgfCBQRl9LU1dBUEQ7Cj4gPiArwqDCoMKgwqDCoMKgIHNldF9mcmVlemFibGUoKTsK PiA+ICsKPiA+ICvCoMKgwqDCoMKgwqAgd2hpbGUgKCFrdGhyZWFkX3Nob3VsZF9zdG9wKCkpIHsK PiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGJvb2wgcmV0Owo+ID4gKwo+ID4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAga2NvbXByZXNzZF90cnlfdG9fc2xlZXAocCk7Cj4g PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCByZXQgPSB0cnlfdG9fZnJlZXplKCk7Cj4g PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpZiAoa3RocmVhZF9zaG91bGRfc3RvcCgp KQo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGJyZWFr Owo+ID4gKwo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaWYgKHJldCkKPiA+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBjb250aW51ZTsKPiA+ ICsKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHdoaWxlICgha2ZpZm9faXNfZW1w dHkocC0+d3JpdGVfZmlmbykpIHsKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCBzdHJ1Y3Qgd3JpdGVfd29yayBlbnRyeTsKPiA+ICsKPiA+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpZiAoc2l6ZW9mKHN0cnVjdCB3 cml0ZV93b3JrKSA9PQo+ID4ga2ZpZm9fb3V0KHAtPndyaXRlX2ZpZm8sCj4gPiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgJmVudHJ5LAo+ID4gc2l6ZW9mKHN0cnVjdCB3cml0 ZV93b3JrKSkpIHsKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgZW50cnkuY2IoZW50cnkubWVtLCBlbnRyeS5iaW8pOwo+ID4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCBiaW9fcHV0KGVudHJ5LmJpbyk7Cj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgfQo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfQo+ ID4gKwo+ID4gK8KgwqDCoMKgwqDCoCB9Cj4gPiArCj4gPiArwqDCoMKgwqDCoMKgIHRzay0+Zmxh Z3MgJj0gfihQRl9NRU1BTExPQyB8IFBGX0tTV0FQRCk7Cj4gPiArwqDCoMKgwqDCoMKgIGF0b21p Y19zZXQocC0+cnVubmluZywgS0NPTVBSRVNTRF9OT1RfU1RBUlRFRCk7Cj4gPiArwqDCoMKgwqDC oMKgIHJldHVybiAwOwo+ID4gK30KPiA+ICsKPiA+ICtzdGF0aWMgaW50IGluaXRfd3JpdGVfcXVl dWUodm9pZCkKPiA+ICt7Cj4gPiArwqDCoMKgwqDCoMKgIGludCBpOwo+ID4gK8KgwqDCoMKgwqDC oCB1bnNpZ25lZCBpbnQgcXVldWVfbGVuID0gcXVldWVfc2l6ZV9wZXJfa2NvbXByZXNzZCAqCj4g PiBzaXplb2Yoc3RydWN0IHdyaXRlX3dvcmspOwo+ID4gKwo+ID4gK8KgwqDCoMKgwqDCoCBmb3Ig KGkgPSAwOyBpIDwgbnJfa2NvbXByZXNzZDsgaSsrKSB7Cj4gPiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCBpZiAoa2ZpZm9fYWxsb2MoJmtjb21wcmVzc1tpXS53cml0ZV9maWZvLAo+ID4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgcXVldWVfbGVuLCBHRlBfS0VSTkVMKSkgewo+ID4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHByX2VycigiRmFpbGVkIHRv IGFsbG9jIGtmaWZvICVkXG4iLCBpKTsKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCByZXR1cm4gLUVOT01FTTsKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIH0KPiA+ICvCoMKgwqDCoMKgwqAgfQo+ID4gK8KgwqDCoMKgwqDCoCByZXR1cm4g MDsKPiA+ICt9Cj4gPiArCj4gPiArc3RhdGljIHZvaWQgY2xlYW5fYmlvX3F1ZXVlKGludCBpZHgp Cj4gPiArewo+ID4gK8KgwqDCoMKgwqDCoCBzdHJ1Y3Qgd3JpdGVfd29yayBlbnRyeTsKPiA+ICsK PiA+ICvCoMKgwqDCoMKgwqAgd2hpbGUgKHNpemVvZihzdHJ1Y3Qgd3JpdGVfd29yaykgPT0KPiA+ IGtmaWZvX291dCgma2NvbXByZXNzW2lkeF0ud3JpdGVfZmlmbywKPiA+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgJmVudHJ5LCBz aXplb2Yoc3RydWN0IHdyaXRlX3dvcmspKSkKPiA+IHsKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIGJpb19wdXQoZW50cnkuYmlvKTsKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIGVudHJ5LmNiKGVudHJ5Lm1lbSwgZW50cnkuYmlvKTsKPiA+ICvCoMKgwqDCoMKgwqAg fQo+ID4gK8KgwqDCoMKgwqDCoCBrZmlmb19mcmVlKCZrY29tcHJlc3NbaWR4XS53cml0ZV9maWZv KTsKPiA+ICt9Cj4gPiArCj4gPiArc3RhdGljIGludCBrY29tcHJlc3NfdXBkYXRlKHZvaWQpCj4g PiArewo+ID4gK8KgwqDCoMKgwqDCoCBpbnQgaTsKPiA+ICvCoMKgwqDCoMKgwqAgaW50IHJldDsK PiA+ICsKPiA+ICvCoMKgwqDCoMKgwqAga2NvbXByZXNzID0ga3ZtYWxsb2NfYXJyYXkobnJfa2Nv bXByZXNzZCwgc2l6ZW9mKHN0cnVjdAo+ID4ga2NvbXByZXNzKSwgR0ZQX0tFUk5FTCk7Cj4gPiAr wqDCoMKgwqDCoMKgIGlmICgha2NvbXByZXNzKQo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgcmV0dXJuIC1FTk9NRU07Cj4gPiArCj4gPiArwqDCoMKgwqDCoMKgIGtjb21wcmVzc2Rf cGFyYSA9IGt2bWFsbG9jX2FycmF5KG5yX2tjb21wcmVzc2QsCj4gPiBzaXplb2Yoc3RydWN0IGtj b21wcmVzc2RfcGFyYSksIEdGUF9LRVJORUwpOwo+ID4gK8KgwqDCoMKgwqDCoCBpZiAoIWtjb21w cmVzc2RfcGFyYSkKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJldHVybiAtRU5P TUVNOwo+ID4gKwo+ID4gK8KgwqDCoMKgwqDCoCByZXQgPSBpbml0X3dyaXRlX3F1ZXVlKCk7Cj4g PiArwqDCoMKgwqDCoMKgIGlmIChyZXQpIHsKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIHByX2VycigiSW5pdGlhbGl6YXRpb24gb2Ygd3JpdGluZyB0byBGSUZPcwo+ID4gZmFpbGVk ISFcbiIpOwo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJuIHJldDsKPiA+ ICvCoMKgwqDCoMKgwqAgfQo+ID4gKwo+ID4gK8KgwqDCoMKgwqDCoCBmb3IgKGkgPSAwOyBpIDwg bnJfa2NvbXByZXNzZDsgaSsrKSB7Cj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBp bml0X3dhaXRxdWV1ZV9oZWFkKCZrY29tcHJlc3NbaV0ua2NvbXByZXNzZF93YWl0KTsKPiA+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGtjb21wcmVzc2RfcGFyYVtpXS5rY29tcHJlc3Nk X3dhaXQgPQo+ID4gJmtjb21wcmVzc1tpXS5rY29tcHJlc3NkX3dhaXQ7Cj4gPiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCBrY29tcHJlc3NkX3BhcmFbaV0ud3JpdGVfZmlmbyA9Cj4gPiAm a2NvbXByZXNzW2ldLndyaXRlX2ZpZm87Cj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCBrY29tcHJlc3NkX3BhcmFbaV0ucnVubmluZyA9ICZrY29tcHJlc3NbaV0ucnVubmluZzsKPiA+ ICvCoMKgwqDCoMKgwqAgfQo+ID4gKwo+ID4gK8KgwqDCoMKgwqDCoCByZXR1cm4gMDsKPiA+ICt9 Cj4gPiArCj4gPiArc3RhdGljIHZvaWQgc3RvcF9hbGxfa2NvbXByZXNzZF90aHJlYWQodm9pZCkK PiA+ICt7Cj4gPiArwqDCoMKgwqDCoMKgIGludCBpOwo+ID4gKwo+ID4gK8KgwqDCoMKgwqDCoCBm b3IgKGkgPSAwOyBpIDwgbnJfa2NvbXByZXNzZDsgaSsrKSB7Cj4gPiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCBrdGhyZWFkX3N0b3Aoa2NvbXByZXNzW2ldLmtjb21wcmVzc2QpOwo+ID4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAga2NvbXByZXNzW2ldLmtjb21wcmVzc2QgPSBO VUxMOwo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgY2xlYW5fYmlvX3F1ZXVlKGkp Owo+ID4gK8KgwqDCoMKgwqDCoCB9Cj4gPiArfQo+ID4gKwo+ID4gK3N0YXRpYyBpbnQgZG9fbnJf a2NvbXByZXNzZF9oYW5kbGVyKGNvbnN0IGNoYXIgKnZhbCwKPiA+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIGNvbnN0IHN0cnVjdCBrZXJuZWxfcGFyYW0gKmtwKQo+ID4gK3sKPiA+ICvC oMKgwqDCoMKgwqAgaW50IHJldDsKPiA+ICsKPiA+ICvCoMKgwqDCoMKgwqAgYXRvbWljX3NldCgm ZW5hYmxlX2tjb21wcmVzc2QsIGZhbHNlKTsKPiA+ICsKPiA+ICvCoMKgwqDCoMKgwqAgc3RvcF9h bGxfa2NvbXByZXNzZF90aHJlYWQoKTsKPiA+ICsKPiA+ICvCoMKgwqDCoMKgwqAgcmV0ID0gcGFy YW1fc2V0X2ludCh2YWwsIGtwKTsKPiA+ICvCoMKgwqDCoMKgwqAgaWYgKCFyZXQpIHsKPiA+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHByX2VycigiSW52YWxpZCBudW1iZXIgb2Yga2Nv bXByZXNzZC5cbiIpOwo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJuIC1F SU5WQUw7Cj4gPiArwqDCoMKgwqDCoMKgIH0KPiA+ICsKPiA+ICvCoMKgwqDCoMKgwqAgcmV0ID0g aW5pdF93cml0ZV9xdWV1ZSgpOwo+ID4gK8KgwqDCoMKgwqDCoCBpZiAocmV0KSB7Cj4gPiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBwcl9lcnIoIkluaXRpYWxpemF0aW9uIG9mIHdyaXRp bmcgdG8gRklGT3MKPiA+IGZhaWxlZCEhXG4iKTsKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIHJldHVybiByZXQ7Cj4gPiArwqDCoMKgwqDCoMKgIH0KPiA+ICsKPiA+ICvCoMKgwqDC oMKgwqAgYXRvbWljX3NldCgmZW5hYmxlX2tjb21wcmVzc2QsIHRydWUpOwo+ID4gKwo+ID4gK8Kg wqDCoMKgwqDCoCByZXR1cm4gMDsKPiA+ICt9Cj4gPiArCj4gPiArc3RhdGljIGNvbnN0IHN0cnVj dCBrZXJuZWxfcGFyYW1fb3BzCj4gPiBwYXJhbV9vcHNfY2hhbmdlX25yX2tjb21wcmVzc2QgPSB7 Cj4gPiArwqDCoMKgwqDCoMKgIC5zZXQgPSAmZG9fbnJfa2NvbXByZXNzZF9oYW5kbGVyLAo+ID4g K8KgwqDCoMKgwqDCoCAuZ2V0ID0gJnBhcmFtX2dldF91aW50LAo+ID4gK8KgwqDCoMKgwqDCoCAu ZnJlZSA9IE5VTEwsCj4gPiArfTsKPiA+ICsKPiA+ICttb2R1bGVfcGFyYW1fY2IobnJfa2NvbXBy ZXNzZCwgJnBhcmFtX29wc19jaGFuZ2VfbnJfa2NvbXByZXNzZCwKPiA+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgICZucl9rY29tcHJlc3NkLCAwNjQ0KTsKPiA+ICtNT0RVTEVfUEFSTV9E RVNDKG5yX2tjb21wcmVzc2QsICJOdW1iZXIgb2YgcHJlLWNyZWF0ZWQgZGFlbW9uIGZvcgo+ID4g cGFnZSBjb21wcmVzc2lvbiIpOwo+ID4gKwo+ID4gK3N0YXRpYyBpbnQgZG9fcXVldWVfc2l6ZV9w ZXJfa2NvbXByZXNzZF9oYW5kbGVyKGNvbnN0IGNoYXIgKnZhbCwKPiA+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIGNvbnN0IHN0cnVjdCBrZXJuZWxfcGFyYW0gKmtwKQo+ID4gK3sKPiA+ ICvCoMKgwqDCoMKgwqAgaW50IHJldDsKPiA+ICsKPiA+ICvCoMKgwqDCoMKgwqAgYXRvbWljX3Nl dCgmZW5hYmxlX2tjb21wcmVzc2QsIGZhbHNlKTsKPiA+ICsKPiA+ICvCoMKgwqDCoMKgwqAgc3Rv cF9hbGxfa2NvbXByZXNzZF90aHJlYWQoKTsKPiA+ICsKPiA+ICvCoMKgwqDCoMKgwqAgcmV0ID0g cGFyYW1fc2V0X2ludCh2YWwsIGtwKTsKPiA+ICvCoMKgwqDCoMKgwqAgaWYgKCFyZXQpIHsKPiA+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHByX2VycigiSW52YWxpZCBxdWV1ZSBzaXpl IGZvciBrY29tcHJlc3NkLlxuIik7Cj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBy ZXR1cm4gLUVJTlZBTDsKPiA+ICvCoMKgwqDCoMKgwqAgfQo+ID4gKwo+ID4gK8KgwqDCoMKgwqDC oCByZXQgPSBpbml0X3dyaXRlX3F1ZXVlKCk7Cj4gPiArwqDCoMKgwqDCoMKgIGlmIChyZXQpIHsK PiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHByX2VycigiSW5pdGlhbGl6YXRpb24g b2Ygd3JpdGluZyB0byBGSUZPcwo+ID4gZmFpbGVkISFcbiIpOwo+ID4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgcmV0dXJuIHJldDsKPiA+ICvCoMKgwqDCoMKgwqAgfQo+ID4gKwo+ID4g K8KgwqDCoMKgwqDCoCBwcl9pbmZvKCJRdWV1ZSBzaXplIGZvciBrY29tcHJlc3NkIHdhcyBjaGFu Z2VkOiAlZFxuIiwKPiA+IHF1ZXVlX3NpemVfcGVyX2tjb21wcmVzc2QpOwo+ID4gKwo+ID4gK8Kg wqDCoMKgwqDCoCBhdG9taWNfc2V0KCZlbmFibGVfa2NvbXByZXNzZCwgdHJ1ZSk7Cj4gPiArwqDC oMKgwqDCoMKgIHJldHVybiAwOwo+ID4gK30KPiA+ICsKPiA+ICtzdGF0aWMgY29uc3Qgc3RydWN0 IGtlcm5lbF9wYXJhbV9vcHMKPiA+IHBhcmFtX29wc19jaGFuZ2VfcXVldWVfc2l6ZV9wZXJfa2Nv bXByZXNzZCA9IHsKPiA+ICvCoMKgwqDCoMKgwqAgLnNldCA9ICZkb19xdWV1ZV9zaXplX3Blcl9r Y29tcHJlc3NkX2hhbmRsZXIsCj4gPiArwqDCoMKgwqDCoMKgIC5nZXQgPSAmcGFyYW1fZ2V0X3Vp bnQsCj4gPiArwqDCoMKgwqDCoMKgIC5mcmVlID0gTlVMTCwKPiA+ICt9Owo+ID4gKwo+ID4gK21v ZHVsZV9wYXJhbV9jYihxdWV1ZV9zaXplX3Blcl9rY29tcHJlc3NkLAo+ID4gJnBhcmFtX29wc19j aGFuZ2VfcXVldWVfc2l6ZV9wZXJfa2NvbXByZXNzZCwKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgICZxdWV1ZV9zaXplX3Blcl9rY29tcHJlc3NkLCAwNjQ0KTsKPiA+ICtNT0RVTEVf UEFSTV9ERVNDKHF1ZXVlX3NpemVfcGVyX2tjb21wcmVzc2QsCj4gPiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCAiU2l6ZSBvZiBxdWV1ZSBmb3Iga2NvbXByZXNzZCIpOwo+ID4gKwo+ID4g K2ludCBzY2hlZHVsZV9iaW9fd3JpdGUodm9pZCAqbWVtLCBzdHJ1Y3QgYmlvICpiaW8sCj4gPiBj b21wcmVzc19jYWxsYmFjayBjYikKPiA+ICt7Cj4gPiArwqDCoMKgwqDCoMKgIGludCBpOwo+ID4g K8KgwqDCoMKgwqDCoCBib29sIHN1Ym1pdF9zdWNjZXNzID0gZmFsc2U7Cj4gPiArwqDCoMKgwqDC oMKgIHNpemVfdCBzel93b3JrID0gc2l6ZW9mKHN0cnVjdCB3cml0ZV93b3JrKTsKPiA+ICsKPiA+ ICvCoMKgwqDCoMKgwqAgc3RydWN0IHdyaXRlX3dvcmsgZW50cnkgPSB7Cj4gPiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCAubWVtID0gbWVtLAo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgLmJpbyA9IGJpbywKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIC5j YiA9IGNiCj4gPiArwqDCoMKgwqDCoMKgIH07Cj4gPiArCj4gPiArwqDCoMKgwqDCoMKgIGlmICh1 bmxpa2VseSghYXRvbWljX3JlYWQoJmVuYWJsZV9rY29tcHJlc3NkKSkpCj4gPiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1cm4gLUVCVVNZOwo+ID4gKwo+ID4gK8KgwqDCoMKgwqDC oCBpZiAoIW5yX2tjb21wcmVzc2QgfHwgIWN1cnJlbnRfaXNfa3N3YXBkKCkpCj4gPiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1cm4gLUVCVVNZOwo+ID4gKwo+ID4gK8KgwqDCoMKg wqDCoCBiaW9fZ2V0KGJpbyk7Cj4gPiArCj4gPiArwqDCoMKgwqDCoMKgIGZvciAoaSA9IDA7IGkg PCBucl9rY29tcHJlc3NkOyBpKyspIHsKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IHN1Ym1pdF9zdWNjZXNzID0KPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCAoa2ZpZm9fYXZhaWwoJmtjb21wcmVzc1tpXS53cml0ZV9maWZvKSA+PQo+ID4g c3pfd29yaykgJiYKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCAoc3pfd29yayA9PQo+ID4ga2ZpZm9faW4oJmtjb21wcmVzc1tpXS53cml0ZV9maWZvLCAm ZW50cnksIHN6X3dvcmspKTsKPiA+ICsKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IGlmIChzdWJtaXRfc3VjY2Vzcykgewo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIHN3aXRjaCAoYXRvbWljX3JlYWQoJmtjb21wcmVzc1tpXS5ydW5uaW5n KSkKPiA+IHsKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCBjYXNlIEtDT01QUkVTU0RfTk9UX1NUQVJURUQ6Cj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGF0b21pY19zZXQoJmtjb21w cmVzc1tpXS5ydW5uaW5nLAo+ID4gS0NPTVBSRVNTRF9SVU5OSU5HKTsKPiA+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAga2NvbXBy ZXNzW2ldLmtjb21wcmVzc2QgPQo+ID4ga3RocmVhZF9ydW4oa2NvbXByZXNzZCwKPiA+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoAo+ID4gJmtjb21wcmVzc2RfcGFyYVtpXSwg Imtjb21wcmVzc2Q6JWQiLCBpKTsKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaWYKPiA+IChJU19FUlIoa2NvbXByZXNzW2ld Lmtjb21wcmVzc2QpKSB7Cj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoAo+ID4gYXRvbWljX3NldCgm a2NvbXByZXNzW2ldLnJ1bm5pbmcsIEtDT01QUkVTU0RfTk9UX1NUQVJURUQpOwo+ID4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgcHJfd2FybigiRmFpbGVkIHRvIHN0YXJ0Cj4gPiBrY29tcHJlc3NkOiVk XG4iLCBpKTsKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGNsZWFuX2Jpb19xdWV1ZShpKTsKPiA+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgfQo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCBicmVhazsKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCBjYXNlIEtDT01QUkVTU0RfUlVOTklORzoKPiA+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgYnJlYWs7 Cj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgY2FzZSBL Q09NUFJFU1NEX1NMRUVQSU5HOgo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoAo+ID4gd2FrZV91cF9pbnRlcnJ1cHRpYmxlKCZr Y29tcHJlc3NbaV0ua2NvbXByZXNzZF93YWl0KTsKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgYnJlYWs7Cj4gPiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfQo+ID4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJldHVybiAwOwo+ID4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgfQo+ID4gK8KgwqDCoMKgwqDCoCB9Cj4gPiArCj4gPiArwqDC oMKgwqDCoMKgIGJpb19wdXQoYmlvKTsKPiA+ICvCoMKgwqDCoMKgwqAgcmV0dXJuIC1FQlVTWTsK PiA+ICt9Cj4gPiArRVhQT1JUX1NZTUJPTChzY2hlZHVsZV9iaW9fd3JpdGUpOwo+ID4gKwo+ID4g K3N0YXRpYyBpbnQgX19pbml0IGtjb21wcmVzc2RfaW5pdCh2b2lkKQo+ID4gK3sKPiA+ICvCoMKg wqDCoMKgwqAgaW50IHJldDsKPiA+ICsKPiA+ICvCoMKgwqDCoMKgwqAgbnJfa2NvbXByZXNzZCA9 IERFRkFVTFRfTlJfS0NPTVBSRVNTRDsKPiA+ICvCoMKgwqDCoMKgwqAgcXVldWVfc2l6ZV9wZXJf a2NvbXByZXNzZCA9IElOSVRfUVVFVUVfU0laRTsKPiA+ICsKPiA+ICvCoMKgwqDCoMKgwqAgcmV0 ID0ga2NvbXByZXNzX3VwZGF0ZSgpOwo+ID4gK8KgwqDCoMKgwqDCoCBpZiAocmV0KSB7Cj4gPiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBwcl9lcnIoIkluaXQga2NvbXByZXNzZCBmYWls ZWQhXG4iKTsKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJldHVybiByZXQ7Cj4g PiArwqDCoMKgwqDCoMKgIH0KPiA+ICsKPiA+ICvCoMKgwqDCoMKgwqAgYXRvbWljX3NldCgmZW5h YmxlX2tjb21wcmVzc2QsIHRydWUpOwo+ID4gK8KgwqDCoMKgwqDCoCBibG9ja2luZ19ub3RpZmll cl9jYWxsX2NoYWluKCZrY29tcHJlc3NkX25vdGlmaWVyX2xpc3QsIDAsCj4gPiBOVUxMKTsKPiA+ ICvCoMKgwqDCoMKgwqAgcmV0dXJuIDA7Cj4gPiArfQo+ID4gKwo+ID4gK3N0YXRpYyB2b2lkIF9f ZXhpdCBrY29tcHJlc3NkX2V4aXQodm9pZCkKPiA+ICt7Cj4gPiArwqDCoMKgwqDCoMKgIGF0b21p Y19zZXQoJmVuYWJsZV9rY29tcHJlc3NkLCBmYWxzZSk7Cj4gPiArwqDCoMKgwqDCoMKgIHN0b3Bf YWxsX2tjb21wcmVzc2RfdGhyZWFkKCk7Cj4gPiArCj4gPiArwqDCoMKgwqDCoMKgIGt2ZnJlZShr Y29tcHJlc3MpOwo+ID4gK8KgwqDCoMKgwqDCoCBrdmZyZWUoa2NvbXByZXNzZF9wYXJhKTsKPiA+ ICt9Cj4gPiArCj4gPiArbW9kdWxlX2luaXQoa2NvbXByZXNzZF9pbml0KTsKPiA+ICttb2R1bGVf ZXhpdChrY29tcHJlc3NkX2V4aXQpOwo+ID4gKwo+ID4gK01PRFVMRV9MSUNFTlNFKCJEdWFsIEJT RC9HUEwiKTsKPiA+ICtNT0RVTEVfQVVUSE9SKCJRdW4tV2VpIExpbiA8cXVuLXdlaS5saW5AbWVk aWF0ZWsuY29tPiIpOwo+ID4gK01PRFVMRV9ERVNDUklQVElPTigiU2VwYXJhdGUgdGhlIHBhZ2Ug Y29tcHJlc3Npb24gZnJvbSB0aGUgbWVtb3J5Cj4gPiByZWNsYWltaW5nIik7Cj4gPiArCj4gPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9ibG9jay96cmFtL2tjb21wcmVzc2QuaAo+ID4gYi9kcml2ZXJz L2Jsb2NrL3pyYW0va2NvbXByZXNzZC5oCj4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+ID4gaW5k ZXggMDAwMDAwMDAwMDAwLi4yZmUwYjQyNGE3YWYKPiA+IC0tLSAvZGV2L251bGwKPiA+ICsrKyBi L2RyaXZlcnMvYmxvY2svenJhbS9rY29tcHJlc3NkLmgKPiA+IEBAIC0wLDAgKzEsMjUgQEAKPiA+ ICsvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCAqLwo+ID4gKy8qCj4gPiArICog Q29weXJpZ2h0IChDKSAyMDI0IE1lZGlhVGVrIEluYy4KPiA+ICsgKi8KPiA+ICsKPiA+ICsjaWZu ZGVmIF9LQ09NUFJFU1NEX0hfCj4gPiArI2RlZmluZSBfS0NPTVBSRVNTRF9IXwo+ID4gKwo+ID4g KyNpbmNsdWRlIDxsaW51eC9yd3NlbS5oPgo+ID4gKyNpbmNsdWRlIDxsaW51eC9rZmlmby5oPgo+ ID4gKyNpbmNsdWRlIDxsaW51eC9hdG9taWMuaD4KPiA+ICsKPiA+ICt0eXBlZGVmIHZvaWQgKCpj b21wcmVzc19jYWxsYmFjaykodm9pZCAqbWVtLCBzdHJ1Y3QgYmlvICpiaW8pOwo+ID4gKwo+ID4g K3N0cnVjdCBrY29tcHJlc3Mgewo+ID4gK8KgwqDCoMKgwqDCoCBzdHJ1Y3QgdGFza19zdHJ1Y3Qg Kmtjb21wcmVzc2Q7Cj4gPiArwqDCoMKgwqDCoMKgIHdhaXRfcXVldWVfaGVhZF90IGtjb21wcmVz c2Rfd2FpdDsKPiA+ICvCoMKgwqDCoMKgwqAgc3RydWN0IGtmaWZvIHdyaXRlX2ZpZm87Cj4gPiAr wqDCoMKgwqDCoMKgIGF0b21pY190IHJ1bm5pbmc7Cj4gPiArfTsKPiA+ICsKPiA+ICtpbnQga2Nv bXByZXNzZF9lbmFibGVkKHZvaWQpOwo+ID4gK2ludCBzY2hlZHVsZV9iaW9fd3JpdGUodm9pZCAq bWVtLCBzdHJ1Y3QgYmlvICpiaW8sCj4gPiBjb21wcmVzc19jYWxsYmFjayBjYik7Cj4gPiArI2Vu ZGlmCj4gPiArCj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmMK PiA+IGIvZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmMKPiA+IGluZGV4IDJlMWE3MGYyZjRi ZC4uYmNkNjNlY2I2ZmYyIDEwMDY0NAo+ID4gLS0tIGEvZHJpdmVycy9ibG9jay96cmFtL3pyYW1f ZHJ2LmMKPiA+ICsrKyBiL2RyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jCj4gPiBAQCAtMzUs NiArMzUsNyBAQAo+ID4gwqAjaW5jbHVkZSA8bGludXgvcGFydF9zdGF0Lmg+Cj4gPiDCoCNpbmNs dWRlIDxsaW51eC9rZXJuZWxfcmVhZF9maWxlLmg+Cj4gPiAKPiA+ICsjaW5jbHVkZSAia2NvbXBy ZXNzZC5oIgo+ID4gwqAjaW5jbHVkZSAienJhbV9kcnYuaCIKPiA+IAo+ID4gwqBzdGF0aWMgREVG SU5FX0lEUih6cmFtX2luZGV4X2lkcik7Cj4gPiBAQCAtMjI0MCw2ICsyMjQxLDE1IEBAIHN0YXRp YyB2b2lkIHpyYW1fYmlvX3dyaXRlKHN0cnVjdCB6cmFtCj4gPiAqenJhbSwgc3RydWN0IGJpbyAq YmlvKQo+ID4gwqDCoMKgwqDCoMKgwqAgYmlvX2VuZGlvKGJpbyk7Cj4gPiDCoH0KPiA+IAo+ID4g KyNpZiBJU19FTkFCTEVEKENPTkZJR19LQ09NUFJFU1NEKQo+ID4gK3N0YXRpYyB2b2lkIHpyYW1f YmlvX3dyaXRlX2NhbGxiYWNrKHZvaWQgKm1lbSwgc3RydWN0IGJpbyAqYmlvKQo+ID4gK3sKPiA+ ICvCoMKgwqDCoMKgwqAgc3RydWN0IHpyYW0gKnpyYW0gPSAoc3RydWN0IHpyYW0gKiltZW07Cj4g PiArCj4gPiArwqDCoMKgwqDCoMKgIHpyYW1fYmlvX3dyaXRlKHpyYW0sIGJpbyk7Cj4gPiArfQo+ ID4gKyNlbmRpZgo+ID4gKwo+ID4gwqAvKgo+ID4gwqAgKiBIYW5kbGVyIGZ1bmN0aW9uIGZvciBh bGwgenJhbSBJL08gcmVxdWVzdHMuCj4gPiDCoCAqLwo+ID4gQEAgLTIyNTIsNiArMjI2MiwxMCBA QCBzdGF0aWMgdm9pZCB6cmFtX3N1Ym1pdF9iaW8oc3RydWN0IGJpbyAqYmlvKQo+ID4gwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHpyYW1fYmlvX3JlYWQoenJhbSwgYmlvKTsKPiA+IMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBicmVhazsKPiA+IMKgwqDCoMKgwqDCoMKgIGNh c2UgUkVRX09QX1dSSVRFOgo+ID4gKyNpZiBJU19FTkFCTEVEKENPTkZJR19LQ09NUFJFU1NEKQo+ ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaWYgKGtjb21wcmVzc2RfZW5hYmxlZCgp ICYmCj4gPiAhc2NoZWR1bGVfYmlvX3dyaXRlKHpyYW0sIGJpbywgenJhbV9iaW9fd3JpdGVfY2Fs bGJhY2spKQo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IGJyZWFrOwo+ID4gKyNlbmRpZgo+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHpy YW1fYmlvX3dyaXRlKHpyYW0sIGJpbyk7Cj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgYnJlYWs7Cj4gPiDCoMKgwqDCoMKgwqDCoCBjYXNlIFJFUV9PUF9ESVNDQVJEOgo+ID4gQEAg LTI1MzUsOSArMjU0OSwxMSBAQCBzdGF0aWMgaW50IHpyYW1fYWRkKHZvaWQpCj4gPiDCoCNpZiBa UkFNX0xPR0lDQUxfQkxPQ0tfU0laRSA9PSBQQUdFX1NJWkUKPiA+IMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCAubWF4X3dyaXRlX3plcm9lc19zZWN0b3JzwqDCoMKgwqDCoMKgID0gVUlO VF9NQVgsCj4gPiDCoCNlbmRpZgo+ID4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgLmZl YXR1cmVzwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgPQo+ID4g QkxLX0ZFQVRfU1RBQkxFX1dSSVRFU8KgwqDCoMKgwqDCoMKgIHwKPiA+IC3CoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAKPiA+IEJMS19GRUFUX1JFQURfU1lOQ0hST05PVVPC oMKgwqDCoCB8Cj4gPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgCj4g PiBCTEtfRkVBVF9XUklURV9TWU5DSFJPTk9VUywKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIC5mZWF0dXJlc8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgID0KPiA+IEJMS19GRUFUX1NUQUJMRV9XUklURVMKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgfAo+ID4gQkxLX0ZFQVRfUkVBRF9TWU5DSFJPTk9VUwo+ID4g KyNpZiAhSVNfRU5BQkxFRChDT05GSUdfS0NPTVBSRVNTRCkKPiA+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfAo+ID4gQkxLX0ZFQVRfV1JJVEVfU1lOQ0hST05PVVMs Cj4gPiArI2VuZGlmCj4gPiDCoMKgwqDCoMKgwqDCoCB9Owo+ID4gwqDCoMKgwqDCoMKgwqAgc3Ry dWN0IHpyYW0gKnpyYW07Cj4gPiDCoMKgwqDCoMKgwqDCoCBpbnQgcmV0LCBkZXZpY2VfaWQ7Cj4g PiAtLQo+ID4gMi40NS4yCj4gPiAKPiAKPiBUaGFua3MKPiBCYXJyeQoK