From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from CY7PR03CU001.outbound.protection.outlook.com (mail-westcentralusazon11010031.outbound.protection.outlook.com [40.93.198.31]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 532101B4156 for ; Mon, 23 Feb 2026 07:19:32 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.93.198.31 ARC-Seal:i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1771831174; cv=fail; b=HM/EbsTwA+R/fjzFxOFn+gK+e9cgKVV+Zl5vHiacSAhHRUz+6vxapXNGESWKSW2WfSCWi6PSkaYzpreDZe46slMxFYrjJwKQvIXhYeeidT+z1WbQwiHEXqI730bIZq5JwBn+0uYwl+1JPQgcksiwFYTuWrDn/2w3yXuChn4Oy8o= ARC-Message-Signature:i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1771831174; c=relaxed/simple; bh=2Zf5zjcaGdxF+ZM/rNUpr7Qc+zNRVQboTDEhxXpKjOw=; h=From:To:CC:Subject:Date:Message-ID:References:In-Reply-To: Content-Type:MIME-Version; b=Ra+sYizTV1cJ+TpgoTj0QIbJfgGaKan6wBFdrRXtfVXEt/3Od4MvQXntBH88oQVxAa+sttOJETihI5pbT6xdCuSY3SzGcUxWLPpTjmIUNx+pVzcwV63ua1g36S+Of7eWpAwcCD8lQh6fNWiPNN7hh+yESz0IByItDka74DDf/bs= ARC-Authentication-Results:i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=altera.com; spf=pass smtp.mailfrom=altera.com; dkim=pass (2048-bit key) header.d=altera.com header.i=@altera.com header.b=BILXsPmd; arc=fail smtp.client-ip=40.93.198.31 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=altera.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=altera.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=altera.com header.i=@altera.com header.b="BILXsPmd" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=DR5h0d1pAD1cKO6cao40WhyYkrEMh8qIkRSfr2oYs0sGKRQfSnIgvRT/PTG0LU36oc0+9Zw17mbBEi8kHaK4aYjY1Fmdyl6ua9L3BCKEKw1GZ7uHDghPw/0+C5UNVJQfsNkvZxlrKSOWSlN34hGMPyZOhMVhLkofk3/HiyXnX/ag6tux4u8+/w919jr5Y6TSIn11SuYCZyGwTW5ByeX/Qi4w4w3dLjMMTbQEXDwfurD7Eu7whzOt15T3f/xybUvdNinfEa59QEQvZuEPlIpmmgxghGrwx3MWtlHV5uvDzWURGKst2bYtCB9LPtB/FejxdhrjUUIEOr5owaGhlLTF2A== 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=2Zf5zjcaGdxF+ZM/rNUpr7Qc+zNRVQboTDEhxXpKjOw=; b=PxxtHMPKZ49CGA6smxugBhGumKvVJi+fA5Sg9M5OB1g6w/NTxpqNkfVytL9YpGzF6D9sMCpmvP7dqsaYS18W+P6PqXGl4tnLD5kzh1jG5f6YQpuQXOac8/Xp7wjHNmWDi5Qbp20UFFpHN8WvobEeh7/O1Hh/C6jlf5lSyDF7lVbS/InsNR5J/MCqifoRYBYOibFK+A2OilZFxEYPgRQp4dMkE83As99fuCvprQMPhU61s1e3BYah3nqlu/oeWf+Q+Hsl4zFZK5kFZg+vhanlXS99RXtya4bLn2wzvBtxobuzC05fBEWqbo99re3k6HqUuAKlc0PO/ER4q6Y0q4Bu8Q== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=altera.com; dmarc=pass action=none header.from=altera.com; dkim=pass header.d=altera.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=altera.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=2Zf5zjcaGdxF+ZM/rNUpr7Qc+zNRVQboTDEhxXpKjOw=; b=BILXsPmd3U2foB+lgXmrKva3Q9PbH64BM5OpnyDxPFlTLusz9fsfQY0bVlVmgJnVbiHO5+iQiqETOsIKOp0O0OZgiQombBVwSs0m7NYiQR8KFPyfgsRhITN0qv0ee2R/fOn859bFBtlI5u8LR3An16mT5pjhmyiROnh0VI0YGbOzcVjIUX6mbF82vsGapS8NOwrVmIBxL43iBFXCevBVH8xdB+LaRnlMP1ui8R6K4stAZbtJL91bFSR9WEEaQcdIQZbfaqcf41gKTtkl8TQj5tgHR1AzvfiFnjhATppZEtB6cCRRlv16eKR3yk9kQdizbr1HxG80kbLKJ7L7NCzUiw== Received: from BLAPR03MB5458.namprd03.prod.outlook.com (2603:10b6:208:29d::17) by BN5PR03MB8042.namprd03.prod.outlook.com (2603:10b6:408:2aa::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9632.21; Mon, 23 Feb 2026 07:19:29 +0000 Received: from BLAPR03MB5458.namprd03.prod.outlook.com ([fe80::7eda:fa34:15f9:e656]) by BLAPR03MB5458.namprd03.prod.outlook.com ([fe80::7eda:fa34:15f9:e656%5]) with mapi id 15.20.9632.017; Mon, 23 Feb 2026 07:19:29 +0000 From: "Mohamad Jamian, Muhammad Amirul Asyraf" To: Dinh Nguyen , "Mohamad Jamian, Muhammad Amirul Asyraf" , "linux-kernel@vger.kernel.org" , "Ang, Tien Sung" CC: Markus Elfring Subject: Re: [PATCH v3] firmware: stratix10-svc: Add Multi SVC clients support Thread-Topic: [PATCH v3] firmware: stratix10-svc: Add Multi SVC clients support Thread-Index: AQHcmV1Tk/bXpMq4AUWKzotc8KJBSrWHP4qAgAi3OQA= Date: Mon, 23 Feb 2026 07:19:29 +0000 Message-ID: References: <20260209004459.15285-1-muhammadamirulasyraf.mohamadjamian@altera.com> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=altera.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: BLAPR03MB5458:EE_|BN5PR03MB8042:EE_ x-ms-office365-filtering-correlation-id: 16527044-1c06-437f-3e15-08de72abe278 x-ms-exchange-atpmessageproperties: SA x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0;ARA:13230040|1800799024|376014|366016|38070700021; x-microsoft-antispam-message-info: =?utf-8?B?REJudUZFTHMrV1NPRHNWVzJEZjVJYWpCTVpJcGVEcDRmTi8xUFBUZTlrd05V?= =?utf-8?B?Zmh2SjBEOGNvWXVxVXlZc1ZDK0l4WFF4QW9jVExuTTRQL2JISk5UWFJzSzFP?= =?utf-8?B?NkNLQjR0cU1EamsxZzQzSE41T1lpZVkwaUk4cHpVYWdqVjIzMkRQS2dINzBa?= =?utf-8?B?YnhEWVF5bHNaekRnQVEyTERKRS9ieitMWGp4L09XV0YrYUxxVjRBcWNWNmFk?= =?utf-8?B?cmpycElTQ2sya0FSajVGRFQ5YzhyNEd6OWZRK3FLVEIvTHJhRTBpVG91a0pE?= =?utf-8?B?OUVQRHF2YlpqTXgvOUVkK3RNRDJCRU1WSmdDRWxvNUQ1ZmZCbjFsQ09IcVJh?= =?utf-8?B?OTBOa2FOZk1tVGxkaExSbnJiL0FzblZENWlHVjM5bkNiQWw5L1RkZVNHaXJj?= =?utf-8?B?N09TSTRQbDB3T3diL3RzWk10QklFOUxTKy81amt5ck1abEFzUGRDK3kvdldv?= =?utf-8?B?d1BIR2hQWGhsNk1mNUswREFybHNwNjlaSTJhRHlIK0FDdkx3SEt6Uk9XTlZX?= =?utf-8?B?RnpTN05VTDlvNWtyN1dtcjRWalc4S0pyckw4NUltblNrcFd2QkVGUXNYSXo2?= =?utf-8?B?QmxSQldYLzVocXluNlc0cTB1eVVnZWY4V0RZTjdoQTRhc2w4bmF4VFhncHha?= =?utf-8?B?dVpXekFSZytBRmxyQnZaQ1paUU1tRWNCV2xCZDZHUmVMT1dwOGhEK1dtbGRU?= =?utf-8?B?bHVkdXZhSE1HQWVNQVpCdEtVTWtrV0lQWC9UamJUQTBVSWQyRUcvODdVdCsr?= =?utf-8?B?MGJ6SzFWTDM4WTNYOE9aMHJCNndLL1ZGdURCRW5oY2dRWUFVZ3VMRWE3UlR4?= =?utf-8?B?d1BMb2k2M3kzVUdNSks5bDhITnRsT1NtTFpvMHRqZjdLMWRxV0NIZjFwYjFX?= =?utf-8?B?UWxURzZUbUVvd2d5SHpIR2ZITFFYU2NvRnVOa1VzWWEvcVowSkVERDJXRXFK?= =?utf-8?B?cE9zM3BQNGNIaU5FRnYyQjYxTFpVbXFxR05pdWgydFRNNXBWSGQ4M1JSWkk2?= =?utf-8?B?UTNGZURaMlJ5ZE1NVlFicDhUNnBjRm5udTF2VWtLejlPU0NhZmRuYjYvY2pi?= =?utf-8?B?RHUxZHBuQmRMTDVGckp0aXl4SnRwTTZQRWFoOWZjaXhiT09ibUYyUGdldTdI?= =?utf-8?B?cCtoajlxM1Z0bWlvVTQ3aTNVdnE4SXBtRHZxbThUTDNFa0VvbG92NGZoN1RE?= =?utf-8?B?cnJHbXlVaGNIeUJ0UFVEQU5pYkhNZ1ZEVHc3VXhIWHFyaENPdFBKY3dmS2Q1?= =?utf-8?B?L0FrVTZudys5YVp5MWttSEIvQ1VTK2FNRXZRc1Boc29DWjR1TGJNeTZyYUpa?= =?utf-8?B?VStxdi9pblBVeXd2WFllU016UU1PcVpkY1I3ZVpYelc1U3hvRVVTaVhjMnlO?= =?utf-8?B?anR0TzVhSXNuOWZDOGwzQjlqUlFNMHlITkdaNlZVeFN2TmtmWmIvNHk3Zno3?= =?utf-8?B?WHIva2U2U0xMaW03RTU2a09vUzNqaEZadDFpVVFxVXhxUFg3N1JyZVhKWGN3?= =?utf-8?B?LzRFdGVXMWd2QzBYbWV4aFRlSzcyWmhOZkx4em9Jd3MzbktqK0NjVUREVU5P?= =?utf-8?B?SytpQklhVDY4TnQyZEF2VDN6TkdDWXFyUjl6bkY3TGNSS0o1aHdJTE8wc045?= =?utf-8?B?QzRDdjdhVjBEWXpRZGVJeU1sTmVJamVxTFhLR3JhRGVwU28yVUJVQm8zQ2dG?= =?utf-8?B?VDdmcndkd0c3NjJpZDlEdE9jUXhHMk5DM09neXJBa3RMM3p4ZlhmRUg4MUlJ?= =?utf-8?B?VFNNUXdVS0hzd1hJRFBZNWtOeWgvUHhKTkVpTzREcmYzSHJ3YitVRzBxSnBv?= =?utf-8?B?VkpIVC9ZeUg0N2YrS2V3VU55enVqaXB3QXI0UnhDaTlpK3NYRkdRMWFuN1p5?= =?utf-8?B?QXA5R0k5R3FHODRTMUhWREVqaHdhVHFUajBYZGtVRkppazhUZXJ5Z21MUFI3?= =?utf-8?B?bmdWSElyRml2eUZZdXlDSzRpbml4dGo3VytaSld1NXczakhpa09BUml5akpk?= =?utf-8?B?c3l0ZUYzaWQvd1JzRnRLNHREODlaSFRxQkZhbWV2a0tSZDg3K2ZKQldSM0Fr?= =?utf-8?B?dEZjT252VUxzRHhCU1hIQm9YcUZWT28vSy9GZ0oramp3M0pHbDhIWUtVZExX?= =?utf-8?Q?Cfx0e8AHCOMu+irgk/GGtEvUr?= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BLAPR03MB5458.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(376014)(366016)(38070700021);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 2 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?TEUwM0ZKTXNpK1M5dlB3QVg1bVNXUHZzam1JcklldlFvbHE1RkVQREZsNGFE?= =?utf-8?B?TlBCMEhqSnJsMDRLSEZsM0tWb0lwOWQ4bEhXV0NFOC9ZYWQvSkVFL1gxd0h1?= =?utf-8?B?TXVOdUxoWjVRTXVzZ2ZKN3ZhK0xJK2NrRDBNQXJQaEkxc1hUL0hrYmhvcmJ1?= =?utf-8?B?dk80L1ZFbGUyOURSWTF2ZnpiWUZKUCtoOUZzWVRvdnlVY2xPQTZ0b3Rrdmpz?= =?utf-8?B?N2xWaWFTcjU3MzhNc0NTZExsWTFHRW9HaVdRRDl2SnZjRmdNSjRISXlIbXB3?= =?utf-8?B?Ry96clpUSDJMK1FnVWpMUHRTeE1zUkZaT0tlbVRJdURwNTJ4a3c4enZNdzdJ?= =?utf-8?B?bzNhOWJETDM0M3ZUZThLdDd2bGVDRDFPRWU0Zi9HTGZuczRLU09abHJnUHkr?= =?utf-8?B?UFY0WC9FR09qV1orZHpDNnRaRHBKcGkvVGxlOE5RenZCcUFSUnN4bVN4OE9n?= =?utf-8?B?NGZlWHhZdU9RMG5vYnMzQXFEZkptZmdXSStFUXAzVDl4aGR0RFZzSGVGUFho?= =?utf-8?B?b0VOMXJHMEZiZktqSnRsTmNXMlA3S3hNRVBtaG5qVFlHUWxwVVBpbnI1c2Mw?= =?utf-8?B?UDZNUldsTHF5S1U5S3JWRFloTmJhVkhSU2k3OUp6ZSt5MDNmU1I4cis2bHhX?= =?utf-8?B?WEdiVnVaSXViNFRnMytCK1ZhamhXYnFVWmNPZUlZWXd6clB4Wms4bzdKenNz?= =?utf-8?B?SFkwRENaMkxsaXBmWkF0TnRTZTU0aUlSOVBnU3R6NERpSEY4YXpuaFR4WmJR?= =?utf-8?B?YXpBOUtrSXpOVGY3eTZVaERmYjNoYUVIOGVEQVF4SXJ1QXdwMEZTRG1IcWRX?= =?utf-8?B?bm5oQnNsNUE3Q0NqRmx0YXI4QURGS0hEUWJlUWxIZ2hCSHRWeGdTTUZSTDJV?= =?utf-8?B?d1IvRHV6Y0hGWTZJam04dElGUDRNS3hYbUk3aGJPa3dqZXlXTTZreGZuN1NU?= =?utf-8?B?QlJSSUtRSFBFZXlkRmJ5UUF4c2l6V1kyc3FFZGVpZnYrVVMyL2JJVVcvcHB5?= =?utf-8?B?eVhqZnBVeUhIb0ZaNHBML0RSNmlySTZHM2tleHR4WkRZWjJNaWFlYVV6VFhh?= =?utf-8?B?eHVFeTY0dWFlTUgyQUZXYkpCRFFHc3lscFBpbnl3VXVOdjRGN1hqU3Frdkpq?= =?utf-8?B?aVNqWFIxekl0ZWhkWjI5bWp1cnNuOVJNckdYNlI1bFRGVkFVUkNWNldGUE1C?= =?utf-8?B?RWJoZm9QRkVHb1E3YVFPK2JLVW1sQm9XYk40encxcWsrTW5ReDdIcWtJYUFk?= =?utf-8?B?MDFjVGxqdkRjMmQ2ek9FTHZxTE16UGM0MGRmWER2N0N6K3NQd1JQL0c3eERq?= =?utf-8?B?aFgyOXU2MDk2ZGlUYmtCakFFWFIzMW9lMFVJUTVTWnlpNnA5YVpjcjZpYXZT?= =?utf-8?B?azV3TWRRYnBWM1g2WkRKaG9oejM1dUxZM1dpeHAwTVl4TUY3OURiMXJDd3M3?= =?utf-8?B?SkZKNG9XUEEwMjhSNGs4SDU0eVR5UEpsMkZWb1dKTlpWK1JSbFlmWEJQZUdh?= =?utf-8?B?OWxHVG5YeXovaW81dm9BN2ZhQXAyRHJlV3J3cWVtUi9iTndLdXlua053OGZh?= =?utf-8?B?ZWY5RVdxYTMwZ0QyaXRpTnpaZmROYTF6QVRWVWxuMzBUdTV1UWJmYVFDSXlh?= =?utf-8?B?cVVYTFFTTGNoUFRFcnV4dGJqNFlrdkpjb1VyOVlQTzByZXMxRlBINm9uVWlS?= =?utf-8?B?NkV2MVo0czh6N1NYNDQ5U2RQaHB1aC9Yd3RmVGNDdFd3NmZhRUhmYWlJZjZw?= =?utf-8?B?c2t3RVZWdGw0YW9uMUNNOEZ0TEFDdzIvTGQvUkVldUZjZVlFcGtjbmlFb1hI?= =?utf-8?B?UTRtdTlLTHdaMEkwcEExZmNxMUhsU2pxNzRCRnVGWmMrVmhtU1VNMysvVVVY?= =?utf-8?B?RWVmMUFWM0tnTmhHMFk2dEdHOGxFMFhWQ01yVENiQ2E2NmJnc1FVYnVwaUx4?= =?utf-8?B?aHB6RU5BVmlIYWJLMC92OUZGK2lJdUErU0E2ZUNMUnZCdXZCa1NraW1sNFp1?= =?utf-8?B?alVCeE12TnFaWVJKYkVqSlVsanI2eGdEdEl0eFlEUnBKOTZBMzZpUURzaVZS?= =?utf-8?B?bllnOXk0a3pPQnZnTmhFeGQ5Mm1rYlVqbXdyQVg4QnRLMk1CNmx5OXNlRklk?= =?utf-8?B?RTNVcTN6NXRJYy85dmxPZnZvL3dWVEFQcVowWis3UW95SE5XSWFrQXdpcktN?= =?utf-8?B?RFlNbThOTHhyOVk0YjZlYzBUOHdCbFEzalJjWEozODc2bGJuVFZkWEFCc0xQ?= =?utf-8?B?eTRhSzNDR2dJaU1mdm04NElFdndRNTk2aUY5OUt0ZTdJRFpRS3pZS1loT2Nh?= =?utf-8?B?WFVZMUU1Z1E2OTVTMmt6VzM0dmtpaDR0OUJFdmhoZS83WjVscE1yc3BDaXJo?= =?utf-8?Q?g/FIMNa3E5JjHOy9oXKrLkiFqSxF7ctjhAHnLgT9tJpKA?= x-ms-exchange-antispam-messagedata-1: OSQ7siMSl+SU64T0arNJkVWbIIvxhZcmMaI= Content-Type: text/plain; charset="utf-8" Content-ID: <7A29418B17EC0A4798133DF76AD3D9B2@namprd03.prod.outlook.com> Content-Transfer-Encoding: base64 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-OriginatorOrg: altera.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: BLAPR03MB5458.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 16527044-1c06-437f-3e15-08de72abe278 X-MS-Exchange-CrossTenant-originalarrivaltime: 23 Feb 2026 07:19:29.7201 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: fbd72e03-d4a5-4110-adce-614d51f2077a X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: pQOE1U+V+X7e07Cn+whT/GwvR+XSh5w8dsQMULY0kR9JH0SzlFsEtHWv1F+y4YvUlmEboBwoHb0v/ChkIptNhDz6g9WdyU483ZvYg1efThUrenVroj86h+Nm4Dmjk52jMpF+ebroCMEYjHnHI8x79A== X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN5PR03MB8042 T24gMTgvMi8yMDI2IDI6MTMgYW0sIERpbmggTmd1eWVuIHdyb3RlOg0KPiANCj4gDQo+IE9uIDIv OC8yNiAxODo0NCwgTXVoYW1tYWQgQW1pcnVsIEFzeXJhZiBNb2hhbWFkIEphbWlhbiB3cm90ZToN Cj4+IEluIHRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9uLCBTVkMgY2xpZW50IGRyaXZlcnMgc3Vj aCBhcyBzb2NmcGdhLWh3bW9uLA0KPj4gaW50ZWxfZmNzLCBzdHJhdGl4MTAtc29jLCBzdHJhdGl4 MTAtcnN1IGVhY2ggc2VuZCBhbiBTTUMgY29tbWFuZCB0aGF0DQo+PiB0cmlnZ2VycyBhIHNpbmds ZSB0aHJlYWQgaW4gdGhlIHN0cmF0aXgxMC1zdmMgZHJpdmVyLiBVcG9uIHJlY2VpdmluZyBhDQo+ PiBjYWxsYmFjaywgdGhlIGluaXRpYXRpbmcgY2xpZW50IGRyaXZlciBzZW5kcyBhIHN0cmF0aXgx MC1zdmMtZG9uZSBzaWduYWwsDQo+PiB0ZXJtaW5hdGluZyB0aGUgdGhyZWFkIHdpdGhvdXQgd2Fp dGluZyBmb3Igb3RoZXIgcGVuZGluZyBTTUMgY29tbWFuZHMgdG8NCj4+IGNvbXBsZXRlLiBUaGlz IGxlYWRzIHRvIGEgdGltZW91dCBpc3N1ZSBpbiB0aGUgZmlybXdhcmUgU1ZDIG1haWxib3ggDQo+ PiBzZXJ2aWNlDQo+PiB3aGVuIG11bHRpcGxlIGNsaWVudCBkcml2ZXJzIHNlbmQgU01DIGNvbW1h bmRzIGNvbmN1cnJlbnRseS4NCj4+DQo+PiBUbyByZXNvbHZlIHRoaXMgaXNzdWUsIGEgZGVkaWNh dGVkIHRocmVhZCBpcyBub3cgY3JlYXRlZCBwZXIgY2hhbm5lbC4gVGhlDQo+PiBzdHJhdGl4MTAt c3ZjIGRyaXZlciB3aWxsIHN1cHBvcnQgdXAgdG8gdGhlIG51bWJlciBvZiBjaGFubmVscyBkZWZp bmVkIGJ5DQo+PiBTVkNfTlVNX0NIQU5ORUwuIFRocmVhZCBzeW5jaHJvbml6YXRpb24gaXMgaGFu ZGxlZCB1c2luZyBhIG11dGV4IHRvIA0KPj4gcHJldmVudA0KPj4gc2ltdWx0YW5lb3VzIGlzc3Vh bmNlIG9mIFNNQyBjb21tYW5kcyBieSBtdWx0aXBsZSB0aHJlYWRzLg0KPj4NCj4+IEFkZGl0aW9u YWxseSwgYSB0aHJlYWQgdGFzayBpcyBub3cgdmFsaWRhdGVkIGJlZm9yZSBpbnZva2luZyBrdGhy ZWFkX3N0b3ANCj4+IHdoZW4gdGhlIHVzZXIgYWJvcnRzLCBlbnN1cmluZyBzYWZlIHRlcm1pbmF0 aW9uLg0KPj4NCj4+IFRpbWVvdXQgdmFsdWVzIGhhdmUgYWxzbyBiZWVuIGFkanVzdGVkIHRvIGFj Y29tbW9kYXRlIHRoZSBpbmNyZWFzZWQgbG9hZA0KPj4gZnJvbSBjb25jdXJyZW50IGNsaWVudCBk cml2ZXIgYWN0aXZpdHkuDQo+Pg0KPj4gRml4ZXM6IDdjYTVjZTg5NjUyNCAoImZpcm13YXJlOiBh ZGQgSW50ZWwgU3RyYXRpeDEwIHNlcnZpY2UgbGF5ZXIgDQo+PiBkcml2ZXIiKQ0KPj4gQ2M6IHN0 YWJsZUB2Z2VyLmtlcm5lbC5vcmcNCj4+IFNpZ25lZC1vZmYtYnk6IEFuZyBUaWVuIFN1bmcgPHRp ZW4uc3VuZy5hbmdAaW50ZWwuY29tPg0KPj4gU2lnbmVkLW9mZi1ieTogRm9uZywgWWFuIEtlaSA8 eWFua2VpLmZvbmdAYWx0ZXJhLmNvbT4NCj4+IFNpZ25lZC1vZmYtYnk6IEtoYWlydWwgQW51YXIg Um9tbGkgPGtoYWlydWwuYW51YXIucm9tbGlAYWx0ZXJhLmNvbT4NCj4gDQo+IFBsZWFzZSBjbGVh biB1cCB0aGUgYWJvdmUgbGlzdCBvZiBTaWduZWQtb2ZmLWJ5Oi4gSSBrbm93IG9uZSBvZiB0aGUg DQo+IGVudHJpZXMgaXMgbm8gbG9uZ2VyIGF0IEFsdGVyYS4NCj4gDQo+PiBTaWduZWQtb2ZmLWJ5 OiBNdWhhbW1hZCBBbWlydWwgQXN5cmFmIE1vaGFtYWQgSmFtaWFuIA0KPj4gPG11aGFtbWFkYW1p cnVsYXN5cmFmLm1vaGFtYWRqYW1pYW5AYWx0ZXJhLmNvbT4NCj4+IFJlcG9ydGVkLWJ5OiBrZXJu ZWwgdGVzdCByb2JvdCA8bGtwQGludGVsLmNvbT4NCj4+IENsb3NlczogaHR0cHM6Ly9uYW0xMC5z YWZlbGlua3MucHJvdGVjdGlvbi5vdXRsb29rLmNvbS8/IA0KPj4gdXJsPWh0dHBzJTNBJTJGJTJG bG9yZS5rZXJuZWwub3JnJTJGb2Uta2J1aWxkLSANCj4+IGFsbCUyRjIwMjYwMjAzMjMyNS5NdWds WjE1Ni0gDQo+PiBsa3AlNDBpbnRlbC5jb20lMkYmZGF0YT0wNSU3QzAyJTdDbXVoYW1tYWQuYW1p cnVsLmFzeXJhZi5tb2hhbWFkLmphbWlhbiU0MGFsdGVyYS5jb20lN0NhNmM0NjA2OTIzMGU0NWMx ZjIyZTA4ZGU2ZTUwNDdkOCU3Q2ZiZDcyZTAzZDRhNTQxMTBhZGNlNjE0ZDUxZjIwNzdhJTdDMCU3 QzAlN0M2MzkwNjk0ODgyNzczNzEzMDUlN0NVbmtub3duJTdDVFdGcGJHWnNiM2Q4ZXlKRmJYQjBl VTFoY0draU9uUnlkV1VzSWxZaU9pSXdMakF1TURBd01DSXNJbEFpT2lKWGFXNHpNaUlzSWtGT0lq b2lUV0ZwYkNJc0lsZFVJam95ZlElM0QlM0QlN0MwJTdDJTdDJTdDJnNkYXRhPTFodDVZSjNaWmJj TVpHckdKM1QyVldpNXlvd3hJSVo0WDlReW45d0V2U3MlM0QmcmVzZXJ2ZWQ9MA0KPj4gLS0tDQo+ PiBDaGFuZ2VzIGluIHYzOg0KPj4gLSBGaXggZ3JhbW1hcjogIndpbGwgc3VwcG9ydHMiIC0+ICJ3 aWxsIHN1cHBvcnQiDQo+PiAtIEFkZCBGaXhlcyB0YWcgYW5kIENjIHN0YWJsZSBhcyBzdWdnZXN0 ZWQgYnkgcmV2aWV3ZXINCj4+DQo+PiBDaGFuZ2VzIGluIHYyOg0KPj4gLSBJbml0aWFsaXplICdz dmMnIHRvIE5VTEwgYW5kIGFkZCBOVUxMIGNoZWNrIGluIGVycm9yIHBhdGggdG8gZml4IA0KPj4g dW5pbml0aWFsaXplZCB2YXJpYWJsZSB3YXJuaW5nDQo+PiAtLS0NCj4+IMKgIGRyaXZlcnMvZmly bXdhcmUvc3RyYXRpeDEwLXN2Yy5jwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfCAyMDMgKysr KysrKysrKystLS0tLS0tDQo+PiDCoCAuLi4vZmlybXdhcmUvaW50ZWwvc3RyYXRpeDEwLXN2Yy1j bGllbnQuaMKgwqDCoMKgIHzCoMKgIDggKy0NCj4+IMKgIDIgZmlsZXMgY2hhbmdlZCwgMTMwIGlu c2VydGlvbnMoKyksIDgxIGRlbGV0aW9ucygtKQ0KPj4NCj4+IGRpZmYgLS1naXQgYS9kcml2ZXJz L2Zpcm13YXJlL3N0cmF0aXgxMC1zdmMuYyBiL2RyaXZlcnMvZmlybXdhcmUvIA0KPj4gc3RyYXRp eDEwLXN2Yy5jDQo+PiBpbmRleCA1MTViOTQ4ZmYzMjAuLmViMzdlMjgxMzg2MCAxMDA2NDQNCj4+ IC0tLSBhL2RyaXZlcnMvZmlybXdhcmUvc3RyYXRpeDEwLXN2Yy5jDQo+PiArKysgYi9kcml2ZXJz L2Zpcm13YXJlL3N0cmF0aXgxMC1zdmMuYw0KPj4gQEAgLTM3LDkgKzM3LDkgQEANCj4+IMKgwqAg KiBzZXJ2aWNlIGxheWVyIHdpbGwgcmV0dXJuIGVycm9yIHRvIEZQR0EgbWFuYWdlciB3aGVuIHRp bWVvdXQgb2NjdXJzLA0KPj4gwqDCoCAqIHRpbWVvdXQgaXMgc2V0IHRvIDMwIHNlY29uZHMgKDMw ICogMTAwMCkgYXQgSW50ZWwgU3RyYXRpeDEwIFNvQy4NCj4+IMKgwqAgKi8NCj4+IC0jZGVmaW5l IFNWQ19OVU1fREFUQV9JTl9GSUZPwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAzMg0KPj4gKyNkZWZp bmUgU1ZDX05VTV9EQVRBX0lOX0ZJRk/CoMKgwqDCoMKgwqDCoMKgwqDCoMKgIDgNCj4+IMKgICNk ZWZpbmUgU1ZDX05VTV9DSEFOTkVMwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIDQNCj4+ IC0jZGVmaW5lIEZQR0FfQ09ORklHX0RBVEFfQ0xBSU1fVElNRU9VVF9NU8KgwqDCoCAyMDANCj4+ ICsjZGVmaW5lIEZQR0FfQ09ORklHX0RBVEFfQ0xBSU1fVElNRU9VVF9NU8KgwqDCoCAyMDAwDQo+ PiDCoCAjZGVmaW5lIEZQR0FfQ09ORklHX1NUQVRVU19USU1FT1VUX1NFQ8KgwqDCoMKgwqDCoMKg IDMwDQo+PiDCoCAjZGVmaW5lIEJZVEVfVE9fV09SRF9TSVpFwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgNA0KPj4gQEAgLTI1MiwxMSArMjUyLDEwIEBAIHN0cnVjdCBzdHJhdGl4MTBfYXN5bmNf Y3RybCB7DQo+PiDCoMKgICogQG5vZGU6IGxpc3QgbWFuYWdlbWVudA0KPj4gwqDCoCAqIEBnZW5w b29sOiBtZW1vcnkgcG9vbCBwb2ludGluZyB0byB0aGUgbWVtb3J5IHJlZ2lvbg0KPj4gwqDCoCAq IEB0YXNrOiBwb2ludGVyIHRvIHRoZSB0aHJlYWQgdGFzayB3aGljaCBoYW5kbGVzIFNNQyBvciBI VkMgY2FsbA0KPj4gLSAqIEBzdmNfZmlmbzogYSBxdWV1ZSBmb3Igc3RvcmluZyBzZXJ2aWNlIG1l c3NhZ2UgZGF0YQ0KPj4gwqDCoCAqIEBjb21wbGV0ZV9zdGF0dXM6IHN0YXRlIGZvciBjb21wbGV0 aW9uDQo+PiAtICogQHN2Y19maWZvX2xvY2s6IHByb3RlY3QgYWNjZXNzIHRvIHNlcnZpY2UgbWVz c2FnZSBkYXRhIHF1ZXVlDQo+PiDCoMKgICogQGludm9rZV9mbjogZnVuY3Rpb24gdG8gaXNzdWUg c2VjdXJlIG1vbml0b3IgY2FsbCBvciBoeXBlcnZpc29yIGNhbGwNCj4+IMKgwqAgKiBAc3ZjOiBt YW5hZ2VzIHRoZSBsaXN0IG9mIGNsaWVudCBzdmMgZHJpdmVycw0KPj4gKyAqIEBzZG1fbG9jazog b25seSBhbGxvd3MgYSBzaW5nbGUgY29tbWFuZCBzaW5nbGUgcmVzcG9uc2UgdG8gU0RNDQo+PiDC oMKgICogQGFjdHJsOiBhc3luYyBjb250cm9sIHN0cnVjdHVyZQ0KPj4gwqDCoCAqDQo+PiDCoMKg ICogVGhpcyBzdHJ1Y3QgaXMgdXNlZCB0byBjcmVhdGUgY29tbXVuaWNhdGlvbiBjaGFubmVscyBm b3Igc2VydmljZSANCj4+IGNsaWVudHMsIHRvDQo+PiBAQCAtMjY5LDEyICsyNjgsMTAgQEAgc3Ry dWN0IHN0cmF0aXgxMF9zdmNfY29udHJvbGxlciB7DQo+PiDCoMKgwqDCoMKgIGludCBudW1fYWN0 aXZlX2NsaWVudDsNCj4+IMKgwqDCoMKgwqAgc3RydWN0IGxpc3RfaGVhZCBub2RlOw0KPj4gwqDC oMKgwqDCoCBzdHJ1Y3QgZ2VuX3Bvb2wgKmdlbnBvb2w7DQo+PiAtwqDCoMKgIHN0cnVjdCB0YXNr X3N0cnVjdCAqdGFzazsNCj4+IC3CoMKgwqAgc3RydWN0IGtmaWZvIHN2Y19maWZvOw0KPj4gwqDC oMKgwqDCoCBzdHJ1Y3QgY29tcGxldGlvbiBjb21wbGV0ZV9zdGF0dXM7DQo+PiAtwqDCoMKgIHNw aW5sb2NrX3Qgc3ZjX2ZpZm9fbG9jazsNCj4+IMKgwqDCoMKgwqAgc3ZjX2ludm9rZV9mbiAqaW52 b2tlX2ZuOw0KPj4gwqDCoMKgwqDCoCBzdHJ1Y3Qgc3RyYXRpeDEwX3N2YyAqc3ZjOw0KPj4gK8Kg wqDCoCBzdHJ1Y3QgbXV0ZXggKnNkbV9sb2NrOyAvKiBQcm90ZWN0IFNETSB0cmFuc2FjdGlvbiB1 bnRpbCByZXNwb25zZSAqLw0KPiANCj4gUmVtb3ZlIHRoZSBjb21tZW50IGhlcmUsIHlvdSd2ZSBh bHJlYWR5IGRvY3VtZW50ZWQgc2RtX2xvY2suDQo+IA0KPj4gwqDCoMKgwqDCoCBzdHJ1Y3Qgc3Ry YXRpeDEwX2FzeW5jX2N0cmwgYWN0cmw7DQo+PiDCoCB9Ow0KPj4gQEAgLTI4Myw2ICsyODAsOSBA QCBzdHJ1Y3Qgc3RyYXRpeDEwX3N2Y19jb250cm9sbGVyIHsNCj4+IMKgwqAgKiBAY3RybDogcG9p bnRlciB0byBzZXJ2aWNlIGNvbnRyb2xsZXIgd2hpY2ggaXMgdGhlIHByb3ZpZGVyIG9mIA0KPj4g dGhpcyBjaGFubmVsDQo+PiDCoMKgICogQHNjbDogcG9pbnRlciB0byBzZXJ2aWNlIGNsaWVudCB3 aGljaCBvd25zIHRoZSBjaGFubmVsDQo+PiDCoMKgICogQG5hbWU6IHNlcnZpY2UgY2xpZW50IG5h bWUgYXNzb2NpYXRlZCB3aXRoIHRoZSBjaGFubmVsDQo+PiArICogQHRhc2s6IHBvaW50ZXIgdG8g dGhlIHRocmVhZCB0YXNrIHdoaWNoIGhhbmRsZXMgU01DIG9yIEhWQyBjYWxsDQo+PiArICogQHN2 Y19maWZvOiBhIHF1ZXVlIGZvciBzdG9yaW5nIHNlcnZpY2UgbWVzc2FnZSBkYXRhDQo+PiArICog QHN2Y19maWZvX2xvY2s6IHByb3RlY3QgYWNjZXNzIHRvIHNlcnZpY2UgbWVzc2FnZSBkYXRhIHF1 ZXVlDQo+PiDCoMKgICogQGxvY2s6IHByb3RlY3QgYWNjZXNzIHRvIHRoZSBjaGFubmVsDQo+PiDC oMKgICogQGFzeW5jX2NoYW46IHJlZmVyZW5jZSB0byBhc3luY2hyb25vdXMgY2hhbm5lbCBvYmpl Y3QgZm9yIHRoaXMgDQo+PiBjaGFubmVsDQo+PiDCoMKgICoNCj4+IEBAIC0yOTMsNiArMjkzLDEw IEBAIHN0cnVjdCBzdHJhdGl4MTBfc3ZjX2NoYW4gew0KPj4gwqDCoMKgwqDCoCBzdHJ1Y3Qgc3Ry YXRpeDEwX3N2Y19jb250cm9sbGVyICpjdHJsOw0KPj4gwqDCoMKgwqDCoCBzdHJ1Y3Qgc3RyYXRp eDEwX3N2Y19jbGllbnQgKnNjbDsNCj4+IMKgwqDCoMKgwqAgY2hhciAqbmFtZTsNCj4+ICvCoMKg wqAgc3RydWN0IHRhc2tfc3RydWN0ICp0YXNrOw0KPj4gK8KgwqDCoCAvKiBTZXBhcmF0ZSBmaWZv IGZvciBldmVyeSBjaGFubmVsICovDQo+PiArwqDCoMKgIHN0cnVjdCBrZmlmbyBzdmNfZmlmbzsN Cj4+ICvCoMKgwqAgc3BpbmxvY2tfdCBzdmNfZmlmb19sb2NrOyAvKiBsb2NraW5nIHBlbmRpbmcg ZmlmbyAqLw0KPiANCj4gTW92ZSB0aGVzZSBjb21tZW50cyB1cCB0byB0aGUgc3RydWN0dXJlIGhl YWRlci4NCj4gDQo+PiDCoMKgwqDCoMKgIHNwaW5sb2NrX3QgbG9jazsNCj4+IMKgwqDCoMKgwqAg c3RydWN0IHN0cmF0aXgxMF9hc3luY19jaGFuICphc3luY19jaGFuOw0KPj4gwqAgfTsNCj4+IEBA IC01MjcsMTMgKzUzMSwxNCBAQCBzdGF0aWMgdm9pZCBzdmNfdGhyZWFkX3JlY3Zfc3RhdHVzX29r KHN0cnVjdCANCj4+IHN0cmF0aXgxMF9zdmNfZGF0YSAqcF9kYXRhLA0KPj4gwqDCoCAqLw0KPj4g wqAgc3RhdGljIGludCBzdmNfbm9ybWFsX3RvX3NlY3VyZV90aHJlYWQodm9pZCAqZGF0YSkNCj4+ IMKgIHsNCj4+IC3CoMKgwqAgc3RydWN0IHN0cmF0aXgxMF9zdmNfY29udHJvbGxlcg0KPj4gLcKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgKmN0cmwgPSAoc3RydWN0IHN0cmF0aXgxMF9zdmNfY29udHJv bGxlciAqKWRhdGE7DQo+PiAtwqDCoMKgIHN0cnVjdCBzdHJhdGl4MTBfc3ZjX2RhdGEgKnBkYXRh Ow0KPj4gLcKgwqDCoCBzdHJ1Y3Qgc3RyYXRpeDEwX3N2Y19jYl9kYXRhICpjYmRhdGE7DQo+PiAr wqDCoMKgIHN0cnVjdCBzdHJhdGl4MTBfc3ZjX2NoYW4gKmNoYW4gPcKgIChzdHJ1Y3Qgc3RyYXRp eDEwX3N2Y19jaGFuIA0KPj4gKilkYXRhOw0KPj4gK8KgwqDCoCBzdHJ1Y3Qgc3RyYXRpeDEwX3N2 Y19jb250cm9sbGVywqDCoMKgICpjdHJsID0gY2hhbi0+Y3RybDsNCj4+ICvCoMKgwqAgc3RydWN0 IHN0cmF0aXgxMF9zdmNfZGF0YSAqcGRhdGEgPSBOVUxMOw0KPj4gK8KgwqDCoCBzdHJ1Y3Qgc3Ry YXRpeDEwX3N2Y19jYl9kYXRhICpjYmRhdGEgPSBOVUxMOw0KPj4gwqDCoMKgwqDCoCBzdHJ1Y3Qg YXJtX3NtY2NjX3JlcyByZXM7DQo+PiDCoMKgwqDCoMKgIHVuc2lnbmVkIGxvbmcgYTAsIGExLCBh MiwgYTMsIGE0LCBhNSwgYTYsIGE3Ow0KPj4gwqDCoMKgwqDCoCBpbnQgcmV0X2ZpZm8gPSAwOw0K Pj4gK8KgwqDCoCBib29sIHNkbV9sb2NrX293bmVkID0gZmFsc2U7DQo+PiDCoMKgwqDCoMKgIHBk YXRhID3CoCBrbWFsbG9jKHNpemVvZigqcGRhdGEpLCBHRlBfS0VSTkVMKTsNCj4+IMKgwqDCoMKg wqAgaWYgKCFwZGF0YSkNCj4+IEBAIC01NTUsMTIgKzU2MCwxMiBAQCBzdGF0aWMgaW50IHN2Y19u b3JtYWxfdG9fc2VjdXJlX3RocmVhZCh2b2lkICpkYXRhKQ0KPj4gwqDCoMKgwqDCoCBhNiA9IDA7 DQo+PiDCoMKgwqDCoMKgIGE3ID0gMDsNCj4+IC3CoMKgwqAgcHJfZGVidWcoInNtY19odmNfc2ht X3RocmVhZCBpcyBydW5uaW5nXG4iKTsNCj4+ICvCoMKgwqAgcHJfZGVidWcoIiVzOiAlczogVGhy ZWFkIGlzIHJ1bm5pbmchXG4iLCBfX2Z1bmNfXywgY2hhbi0+bmFtZSk7DQo+PiDCoMKgwqDCoMKg IHdoaWxlICgha3RocmVhZF9zaG91bGRfc3RvcCgpKSB7DQo+PiAtwqDCoMKgwqDCoMKgwqAgcmV0 X2ZpZm8gPSBrZmlmb19vdXRfc3BpbmxvY2tlZCgmY3RybC0+c3ZjX2ZpZm8sDQo+PiArwqDCoMKg wqDCoMKgwqAgcmV0X2ZpZm8gPSBrZmlmb19vdXRfc3BpbmxvY2tlZCgmY2hhbi0+c3ZjX2ZpZm8s DQo+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBw ZGF0YSwgc2l6ZW9mKCpwZGF0YSksDQo+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCAmY3RybC0+c3ZjX2ZpZm9fbG9jayk7DQo+PiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAmY2hhbi0+c3ZjX2ZpZm9fbG9jayk7 DQo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgaWYgKCFyZXRfZmlmbykNCj4+IMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIGNvbnRpbnVlOw0KPj4gQEAgLTU2OSw2ICs1NzQsMTYgQEAgc3RhdGljIGlu dCBzdmNfbm9ybWFsX3RvX3NlY3VyZV90aHJlYWQodm9pZCAqZGF0YSkNCj4+IMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgKHVuc2lnbmVkIGludClwZGF0YS0+cGFkZHIsIHBkYXRhLT5jb21t YW5kLA0KPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAodW5zaWduZWQgaW50KXBkYXRh LT5zaXplKTsNCj4+ICvCoMKgwqDCoMKgwqDCoCAvKiBTRE0gY2FuIG9ubHkgcHJvY2Vzc3Mgb25l IGNvbW1hbmQgYXQgYSB0aW1lICovDQo+PiArwqDCoMKgwqDCoMKgwqAgaWYgKCFzZG1fbG9ja19v d25lZCkgew0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgLyogTXVzdCBub3QgZG8gbXV0ZXgg cmUtbG9jayAqLw0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcHJfZGVidWcoIiVzOiAlczog VGhyZWFkIGlzIHdhaXRpbmcgZm9yIG11dGV4IVxuIiwNCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCBfX2Z1bmNfXywgY2hhbi0+bmFtZSk7DQo+PiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCBndWFyZChtdXRleCkoY3RybC0+c2RtX2xvY2spOw0KPj4gK8KgwqDCoMKgwqDCoMKg IH0NCj4+ICsNCj4+ICvCoMKgwqDCoMKgwqDCoCBzZG1fbG9ja19vd25lZCA9IHRydWU7DQo+PiAr DQo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgc3dpdGNoIChwZGF0YS0+Y29tbWFuZCkgew0KPj4gwqDC oMKgwqDCoMKgwqDCoMKgIGNhc2UgQ09NTUFORF9SRUNPTkZJR19EQVRBX0NMQUlNOg0KPj4gwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc3ZjX3RocmVhZF9jbWRfZGF0YV9jbGFpbShjdHJsLCBw ZGF0YSwgY2JkYXRhKTsNCj4+IEBAIC03MDIsOCArNzE3LDggQEAgc3RhdGljIGludCBzdmNfbm9y bWFsX3RvX3NlY3VyZV90aHJlYWQodm9pZCAqZGF0YSkNCj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIHByX3dhcm4oIml0IHNob3VsZG4ndCBoYXBwZW5cbiIpOw0KPj4gwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgYnJlYWs7DQo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgfQ0KPj4gLcKgwqDC oMKgwqDCoMKgIHByX2RlYnVnKCIlczogYmVmb3JlIFNNQyBjYWxsIC0tIGEwPTB4JTAxNnggYTE9 MHglMDE2eCIsDQo+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIF9fZnVuY19fLA0KPj4gK8Kg wqDCoMKgwqDCoMKgIHByX2RlYnVnKCIlczogJXM6IGJlZm9yZSBTTUMgY2FsbCAtLSBhMD0weCUw MTZ4IGExPTB4JTAxNngiLA0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBfX2Z1bmNfXywg Y2hhbi0+bmFtZSwNCj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKHVuc2lnbmVkIGlu dClhMCwNCj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKHVuc2lnbmVkIGludClhMSk7 DQo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgcHJfZGVidWcoIiBhMj0weCUwMTZ4XG4iLCAodW5zaWdu ZWQgaW50KWEyKTsNCj4+IEBAIC03MTIsOCArNzI3LDggQEAgc3RhdGljIGludCBzdmNfbm9ybWFs X3RvX3NlY3VyZV90aHJlYWQodm9pZCAqZGF0YSkNCj4+IMKgwqDCoMKgwqDCoMKgwqDCoCBwcl9k ZWJ1ZygiIGE1PTB4JTAxNnhcbiIsICh1bnNpZ25lZCBpbnQpYTUpOw0KPj4gwqDCoMKgwqDCoMKg wqDCoMKgIGN0cmwtPmludm9rZV9mbihhMCwgYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcsICZy ZXMpOw0KPj4gLcKgwqDCoMKgwqDCoMKgIHByX2RlYnVnKCIlczogYWZ0ZXIgU01DIGNhbGwgLS0g cmVzLmEwPTB4JTAxNngiLA0KPj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBfX2Z1bmNfXywg KHVuc2lnbmVkIGludClyZXMuYTApOw0KPj4gK8KgwqDCoMKgwqDCoMKgIHByX2RlYnVnKCIlczog JXM6IGFmdGVyIFNNQyBjYWxsIC0tIHJlcy5hMD0weCUwMTZ4IiwNCj4+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgX19mdW5jX18sIGNoYW4tPm5hbWUsICh1bnNpZ25lZCBpbnQpcmVzLmEwKTsN Cj4+IMKgwqDCoMKgwqDCoMKgwqDCoCBwcl9kZWJ1ZygiIHJlcy5hMT0weCUwMTZ4LCByZXMuYTI9 MHglMDE2eCIsDQo+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICh1bnNpZ25lZCBpbnQp cmVzLmExLCAodW5zaWduZWQgaW50KXJlcy5hMik7DQo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgcHJf ZGVidWcoIiByZXMuYTM9MHglMDE2eFxuIiwgKHVuc2lnbmVkIGludClyZXMuYTMpOw0KPj4gQEAg LTcyOCw2ICs3NDMsNyBAQCBzdGF0aWMgaW50IHN2Y19ub3JtYWxfdG9fc2VjdXJlX3RocmVhZCh2 b2lkICpkYXRhKQ0KPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgY2JkYXRhLT5rYWRkcjIg PSBOVUxMOw0KPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgY2JkYXRhLT5rYWRkcjMgPSBO VUxMOw0KPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcGRhdGEtPmNoYW4tPnNjbC0+cmVj ZWl2ZV9jYihwZGF0YS0+Y2hhbi0+c2NsLCBjYmRhdGEpOw0KPj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqAgc2RtX2xvY2tfb3duZWQgPSBmYWxzZTsNCj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIGNvbnRpbnVlOw0KPj4gwqDCoMKgwqDCoMKgwqDCoMKgIH0NCj4+IEBAIC0xNjk3LDIxICsx NzEzLDIxIEBAIGludCBzdHJhdGl4MTBfc3ZjX3NlbmQoc3RydWN0IA0KPj4gc3RyYXRpeDEwX3N2 Y19jaGFuICpjaGFuLCB2b2lkICptc2cpDQo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJuIC1F Tk9NRU07DQo+PiDCoMKgwqDCoMKgIC8qIGZpcnN0IGNsaWVudCB3aWxsIGNyZWF0ZSBrZXJuZWwg dGhyZWFkICovDQo+PiAtwqDCoMKgIGlmICghY2hhbi0+Y3RybC0+dGFzaykgew0KPj4gLcKgwqDC oMKgwqDCoMKgIGNoYW4tPmN0cmwtPnRhc2sgPQ0KPj4gK8KgwqDCoCBpZiAoIWNoYW4tPnRhc2sp IHsNCj4+ICvCoMKgwqDCoMKgwqDCoCBjaGFuLT50YXNrID0NCj4+IMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIGt0aHJlYWRfcnVuX29uX2NwdShzdmNfbm9ybWFsX3RvX3NlY3VyZV90aHJlYWQs DQo+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKHZvaWQg KiljaGFuLT5jdHJsLA0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgICh2b2lkICopY2hhbiwNCj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCBjcHUsICJzdmNfc21jX2h2Y190aHJlYWQiKTsNCj4+IC3CoMKgwqDC oMKgwqDCoMKgwqDCoMKgIGlmIChJU19FUlIoY2hhbi0+Y3RybC0+dGFzaykpIHsNCj4+IC3CoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZGV2X2VycihjaGFuLT5jdHJsLT5kZXYsDQo+PiAt wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgImZhaWxlZCB0byBjcmVhdGUg c3ZjX3NtY19odmNfdGhyZWFkXG4iKTsNCj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAga2ZyZWUocF9kYXRhKTsNCj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0 dXJuIC1FSU5WQUw7DQo+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB9DQo+PiArwqDCoMKgwqDC oMKgwqAgaWYgKElTX0VSUihjaGFuLT50YXNrKSkgew0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqAgZGV2X2VycihjaGFuLT5jdHJsLT5kZXYsDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgICJmYWlsZWQgdG8gY3JlYXRlIHN2Y19zbWNfaHZjX3RocmVhZFxuIik7DQo+PiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCBrZnJlZShwX2RhdGEpOw0KPj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqAgcmV0dXJuIC1FSU5WQUw7DQo+PiArwqDCoMKgwqDCoMKgwqAgfQ0KPj4gwqDCoMKgwqDC oCB9DQo+PiAtwqDCoMKgIHByX2RlYnVnKCIlczogc2VudCBQLXZhPSVwLCBQLWNvbT0leCwgUC1z aXplPSV1XG4iLCBfX2Z1bmNfXywNCj4+IC3CoMKgwqDCoMKgwqDCoMKgIHBfbXNnLT5wYXlsb2Fk LCBwX21zZy0+Y29tbWFuZCwNCj4+ICvCoMKgwqAgcHJfZGVidWcoIiVzOiAlczogc2VudCBQLXZh PSVwLCBQLWNvbT0leCwgUC1zaXplPSV1XG4iLCBfX2Z1bmNfXywNCj4+ICvCoMKgwqDCoMKgwqDC oMKgIGNoYW4tPm5hbWUsIHBfbXNnLT5wYXlsb2FkLCBwX21zZy0+Y29tbWFuZCwNCj4+IMKgwqDC oMKgwqDCoMKgwqDCoMKgICh1bnNpZ25lZCBpbnQpcF9tc2ctPnBheWxvYWRfbGVuZ3RoKTsNCj4+ IMKgwqDCoMKgwqAgaWYgKGxpc3RfZW1wdHkoJnN2Y19kYXRhX21lbSkpIHsNCj4+IEBAIC0xNzQ3 LDEyICsxNzYzLDE2IEBAIGludCBzdHJhdGl4MTBfc3ZjX3NlbmQoc3RydWN0IA0KPj4gc3RyYXRp eDEwX3N2Y19jaGFuICpjaGFuLCB2b2lkICptc2cpDQo+PiDCoMKgwqDCoMKgIHBfZGF0YS0+YXJn WzJdID0gcF9tc2ctPmFyZ1syXTsNCj4+IMKgwqDCoMKgwqAgcF9kYXRhLT5zaXplID0gcF9tc2ct PnBheWxvYWRfbGVuZ3RoOw0KPj4gwqDCoMKgwqDCoCBwX2RhdGEtPmNoYW4gPSBjaGFuOw0KPj4g LcKgwqDCoCBwcl9kZWJ1ZygiJXM6IHB1dCB0byBGSUZPIHBhPTB4JTAxNngsIGNtZD0leCwgc2l6 ZT0ldVxuIiwgX19mdW5jX18sDQo+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqAgKHVuc2lnbmVkIGlu dClwX2RhdGEtPnBhZGRyLCBwX2RhdGEtPmNvbW1hbmQsDQo+PiAtwqDCoMKgwqDCoMKgwqDCoMKg wqAgKHVuc2lnbmVkIGludClwX2RhdGEtPnNpemUpOw0KPj4gLcKgwqDCoCByZXQgPSBrZmlmb19p bl9zcGlubG9ja2VkKCZjaGFuLT5jdHJsLT5zdmNfZmlmbywgcF9kYXRhLA0KPj4gK8KgwqDCoCBw cl9kZWJ1ZygiJXM6ICVzOiBwdXQgdG8gRklGTyBwYT0weCUwMTZ4LCBjbWQ9JXgsIHNpemU9JXVc biIsDQo+PiArwqDCoMKgwqDCoMKgwqDCoCBfX2Z1bmNfXywNCj4+ICvCoMKgwqDCoMKgwqDCoMKg IGNoYW4tPm5hbWUsDQo+PiArwqDCoMKgwqDCoMKgwqDCoCAodW5zaWduZWQgaW50KXBfZGF0YS0+ cGFkZHIsDQo+PiArwqDCoMKgwqDCoMKgwqDCoCBwX2RhdGEtPmNvbW1hbmQsDQo+PiArwqDCoMKg wqDCoMKgwqDCoCAodW5zaWduZWQgaW50KXBfZGF0YS0+c2l6ZSk7DQo+PiArDQo+PiArwqDCoMKg IHJldCA9IGtmaWZvX2luX3NwaW5sb2NrZWQoJmNoYW4tPnN2Y19maWZvLCBwX2RhdGEsDQo+PiDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzaXplb2YoKnBfZGF0YSksDQo+ PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAmY2hhbi0+Y3RybC0+c3ZjX2Zp Zm9fbG9jayk7DQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAmY2hhbi0+ c3ZjX2ZpZm9fbG9jayk7DQo+PiDCoMKgwqDCoMKgIGtmcmVlKHBfZGF0YSk7DQo+PiBAQCAtMTc3 MywxMiArMTc5MywyMSBAQCBFWFBPUlRfU1lNQk9MX0dQTChzdHJhdGl4MTBfc3ZjX3NlbmQpOw0K Pj4gwqDCoCAqLw0KPj4gwqAgdm9pZCBzdHJhdGl4MTBfc3ZjX2RvbmUoc3RydWN0IHN0cmF0aXgx MF9zdmNfY2hhbiAqY2hhbikNCj4+IMKgIHsNCj4+IC3CoMKgwqAgLyogc3RvcCB0aHJlYWQgd2hl biB0aHJlYWQgaXMgcnVubmluZyBBTkQgb25seSBvbmUgYWN0aXZlIGNsaWVudCAqLw0KPj4gLcKg wqDCoCBpZiAoY2hhbi0+Y3RybC0+dGFzayAmJiBjaGFuLT5jdHJsLT5udW1fYWN0aXZlX2NsaWVu dCA8PSAxKSB7DQo+PiAtwqDCoMKgwqDCoMKgwqAgcHJfZGVidWcoInN2Y19zbWNfaHZjX3NobV90 aHJlYWQgaXMgc3RvcHBlZFxuIik7DQo+PiAtwqDCoMKgwqDCoMKgwqAga3RocmVhZF9zdG9wKGNo YW4tPmN0cmwtPnRhc2spOw0KPj4gLcKgwqDCoMKgwqDCoMKgIGNoYW4tPmN0cmwtPnRhc2sgPSBO VUxMOw0KPj4gK8KgwqDCoCAvKiBzdG9wIHRocmVhZCB3aGVuIHRocmVhZCBpcyBydW5uaW5nICov DQo+PiArwqDCoMKgIGlmIChjaGFuLT50YXNrKSB7DQo+PiArwqDCoMKgwqDCoMKgwqAgaWYgKCFJ U19FUlIoY2hhbi0+dGFzaykpIHsNCj4gDQo+IEFyZSB0aGUgYWJvdmUgY2hlY2tzIGFyZSBuZWNl c3Nhcnk/DQo+IA0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc3RydWN0IHRhc2tfc3RydWN0 ICp0YXNrX3RvX3N0b3AgPSBjaGFuLT50YXNrOw0KPj4gKw0KPj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqAgY2hhbi0+dGFzayA9IE5VTEw7DQo+IA0KPiBSZW1vdmUgdGhpcy4NCj4gDQo+PiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCBwcl9kZWJ1ZygiJXM6ICVzOiBzdmNfc21jX2h2Y19zaG1fdGhy ZWFkIGlzIHN0b3BwaW5nXG4iLA0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IF9fZnVuY19fLCBjaGFuLT5uYW1lKTsNCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGt0aHJl YWRfc3RvcCh0YXNrX3RvX3N0b3ApOw0KPj4gK8KgwqDCoMKgwqDCoMKgIH0NCj4+ICsNCj4+ICvC oMKgwqDCoMKgwqDCoCBjaGFuLT50YXNrID0gTlVMTDsNCj4+IMKgwqDCoMKgwqAgfQ0KPj4gK8Kg wqDCoCBwcl9kZWJ1ZygiJXM6ICVzOiBzdmNfc21jX2h2Y19zaG1fdGhyZWFkIGhhcyBzdG9wcGVk XG4iLA0KPj4gK8KgwqDCoMKgwqDCoMKgwqAgX19mdW5jX18sIGNoYW4tPm5hbWUpOw0KPj4gwqAg fQ0KPj4gwqAgRVhQT1JUX1NZTUJPTF9HUEwoc3RyYXRpeDEwX3N2Y19kb25lKTsNCj4+IEBAIC0x ODE3LDggKzE4NDYsOCBAQCB2b2lkICpzdHJhdGl4MTBfc3ZjX2FsbG9jYXRlX21lbW9yeShzdHJ1 Y3QgDQo+PiBzdHJhdGl4MTBfc3ZjX2NoYW4gKmNoYW4sDQo+PiDCoMKgwqDCoMKgIHBtZW0tPnBh ZGRyID0gcGE7DQo+PiDCoMKgwqDCoMKgIHBtZW0tPnNpemUgPSBzOw0KPj4gwqDCoMKgwqDCoCBs aXN0X2FkZF90YWlsKCZwbWVtLT5ub2RlLCAmc3ZjX2RhdGFfbWVtKTsNCj4+IC3CoMKgwqAgcHJf ZGVidWcoIiVzOiB2YT0lcCwgcGE9MHglMDE2eFxuIiwgX19mdW5jX18sDQo+PiAtwqDCoMKgwqDC oMKgwqDCoCBwbWVtLT52YWRkciwgKHVuc2lnbmVkIGludClwbWVtLT5wYWRkcik7DQo+PiArwqDC oMKgIHByX2RlYnVnKCIlczogJXM6IHZhPSVwLCBwYT0weCUwMTZ4XG4iLCBfX2Z1bmNfXywNCj4+ ICvCoMKgwqDCoMKgwqDCoMKgIGNoYW4tPm5hbWUsIHBtZW0tPnZhZGRyLCAodW5zaWduZWQgaW50 KXBtZW0tPnBhZGRyKTsNCj4+IMKgwqDCoMKgwqAgcmV0dXJuICh2b2lkICopdmE7DQo+PiDCoCB9 DQo+PiBAQCAtMTg1NSw2ICsxODg0LDExIEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNl X2lkIA0KPj4gc3RyYXRpeDEwX3N2Y19kcnZfbWF0Y2hbXSA9IHsNCj4+IMKgwqDCoMKgwqAge30s DQo+PiDCoCB9Ow0KPj4gKy8qKg0KPj4gKyAqIG1haWxib3hfbG9jayBwcm90ZWN0cyBhY2Nlc3Mg dG8gdGhlIHRvIFNETSBpZiB0aHJlYWQgaXMgYnVzeQ0KPj4gKyAqLw0KPj4gK3N0YXRpYyBERUZJ TkVfTVVURVgobWFpbGJveF9sb2NrKTsNCj4+ICsNCj4+IMKgIHN0YXRpYyBpbnQgc3RyYXRpeDEw X3N2Y19kcnZfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikNCj4+IMKgIHsNCj4+ IMKgwqDCoMKgwqAgc3RydWN0IGRldmljZSAqZGV2ID0gJnBkZXYtPmRldjsNCj4+IEBAIC0xODYy LDcgKzE4OTYsNyBAQCBzdGF0aWMgaW50IHN0cmF0aXgxMF9zdmNfZHJ2X3Byb2JlKHN0cnVjdCAN Cj4+IHBsYXRmb3JtX2RldmljZSAqcGRldikNCj4+IMKgwqDCoMKgwqAgc3RydWN0IHN0cmF0aXgx MF9zdmNfY2hhbiAqY2hhbnM7DQo+PiDCoMKgwqDCoMKgIHN0cnVjdCBnZW5fcG9vbCAqZ2VucG9v bDsNCj4+IMKgwqDCoMKgwqAgc3RydWN0IHN0cmF0aXgxMF9zdmNfc2hfbWVtb3J5ICpzaF9tZW1v cnk7DQo+PiAtwqDCoMKgIHN0cnVjdCBzdHJhdGl4MTBfc3ZjICpzdmM7DQo+PiArwqDCoMKgIHN0 cnVjdCBzdHJhdGl4MTBfc3ZjICpzdmMgPSBOVUxMOz4NCj4+IMKgwqDCoMKgwqAgc3ZjX2ludm9r ZV9mbiAqaW52b2tlX2ZuOw0KPj4gwqDCoMKgwqDCoCBzaXplX3QgZmlmb19zaXplOw0KPj4gQEAg LTE5MDUsNyArMTkzOSw2IEBAIHN0YXRpYyBpbnQgc3RyYXRpeDEwX3N2Y19kcnZfcHJvYmUoc3Ry dWN0IA0KPj4gcGxhdGZvcm1fZGV2aWNlICpwZGV2KQ0KPj4gwqDCoMKgwqDCoCBjb250cm9sbGVy LT5udW1fYWN0aXZlX2NsaWVudCA9IDA7DQo+PiDCoMKgwqDCoMKgIGNvbnRyb2xsZXItPmNoYW5z ID0gY2hhbnM7DQo+PiDCoMKgwqDCoMKgIGNvbnRyb2xsZXItPmdlbnBvb2wgPSBnZW5wb29sOw0K Pj4gLcKgwqDCoCBjb250cm9sbGVyLT50YXNrID0gTlVMTDsNCj4+IMKgwqDCoMKgwqAgY29udHJv bGxlci0+aW52b2tlX2ZuID0gaW52b2tlX2ZuOw0KPj4gwqDCoMKgwqDCoCBpbml0X2NvbXBsZXRp b24oJmNvbnRyb2xsZXItPmNvbXBsZXRlX3N0YXR1cyk7DQo+PiBAQCAtMTkxNywzMiArMTk1MCw2 MyBAQCBzdGF0aWMgaW50IHN0cmF0aXgxMF9zdmNfZHJ2X3Byb2JlKHN0cnVjdCANCj4+IHBsYXRm b3JtX2RldmljZSAqcGRldikNCj4+IMKgwqDCoMKgwqAgfQ0KPj4gwqDCoMKgwqDCoCBmaWZvX3Np emUgPSBzaXplb2Yoc3RydWN0IHN0cmF0aXgxMF9zdmNfZGF0YSkgKiANCj4+IFNWQ19OVU1fREFU QV9JTl9GSUZPOw0KPj4gLcKgwqDCoCByZXQgPSBrZmlmb19hbGxvYygmY29udHJvbGxlci0+c3Zj X2ZpZm8sIGZpZm9fc2l6ZSwgR0ZQX0tFUk5FTCk7DQo+PiArwqDCoMKgIHJldCA9IGtmaWZvX2Fs bG9jKCZjaGFucy0+c3ZjX2ZpZm8sIGZpZm9fc2l6ZSwgR0ZQX0tFUk5FTCk7DQo+PiDCoMKgwqDC oMKgIGlmIChyZXQpIHsNCj4+IMKgwqDCoMKgwqDCoMKgwqDCoCBkZXZfZXJyKGRldiwgImZhaWxl ZCB0byBhbGxvY2F0ZSBGSUZPXG4iKTsNCj4+IMKgwqDCoMKgwqDCoMKgwqDCoCBnb3RvIGVycl9h c3luY19leGl0Ow0KPj4gwqDCoMKgwqDCoCB9DQo+PiAtwqDCoMKgIHNwaW5fbG9ja19pbml0KCZj b250cm9sbGVyLT5zdmNfZmlmb19sb2NrKTsNCj4+ICvCoMKgwqAgc3Bpbl9sb2NrX2luaXQoJmNo YW5zLT5zdmNfZmlmb19sb2NrKTsNCj4+ICvCoMKgwqAgLyoNCj4+ICvCoMKgwqDCoCAqIFRoaXMg bXV0ZXggaXMgdXNlZCB0byBibG9jayB0aHJlYWRzIGZyb20gdXRpbGl6aW5nDQo+PiArwqDCoMKg wqAgKiBTRE0gdG8gcHJldmVudCBvdXQgb2Ygb3JkZXIgY29tbWFuZCB0eA0KPj4gK8KgwqDCoMKg ICovDQo+PiArwqDCoMKgIGNvbnRyb2xsZXItPnNkbV9sb2NrID0gJm1haWxib3hfbG9jazsNCj4+ ICsNCj4+ICvCoMKgwqAgZmlmb19zaXplID0gc2l6ZW9mKHN0cnVjdCBzdHJhdGl4MTBfc3ZjX2Rh dGEpICogDQo+PiBTVkNfTlVNX0RBVEFfSU5fRklGTzsNCj4+IMKgwqDCoMKgwqAgY2hhbnNbMF0u c2NsID0gTlVMTDsNCj4+IMKgwqDCoMKgwqAgY2hhbnNbMF0uY3RybCA9IGNvbnRyb2xsZXI7DQo+ PiDCoMKgwqDCoMKgIGNoYW5zWzBdLm5hbWUgPSBTVkNfQ0xJRU5UX0ZQR0E7DQo+PiDCoMKgwqDC oMKgIHNwaW5fbG9ja19pbml0KCZjaGFuc1swXS5sb2NrKTsNCj4+ICvCoMKgwqAgcmV0ID0ga2Zp Zm9fYWxsb2MoJmNoYW5zWzBdLnN2Y19maWZvLCBmaWZvX3NpemUsIEdGUF9LRVJORUwpOw0KPj4g K8KgwqDCoCBpZiAocmV0KSB7DQo+PiArwqDCoMKgwqDCoMKgwqAgZGV2X2VycihkZXYsICJmYWls ZWQgdG8gYWxsb2NhdGUgRklGTyAwXG4iKTsNCj4+ICvCoMKgwqDCoMKgwqDCoCByZXR1cm4gcmV0 Ow0KPj4gK8KgwqDCoCB9DQo+PiArwqDCoMKgIHNwaW5fbG9ja19pbml0KCZjaGFuc1swXS5zdmNf Zmlmb19sb2NrKTsNCj4+IMKgwqDCoMKgwqAgY2hhbnNbMV0uc2NsID0gTlVMTDsNCj4+IMKgwqDC oMKgwqAgY2hhbnNbMV0uY3RybCA9IGNvbnRyb2xsZXI7DQo+PiDCoMKgwqDCoMKgIGNoYW5zWzFd Lm5hbWUgPSBTVkNfQ0xJRU5UX1JTVTsNCj4+IMKgwqDCoMKgwqAgc3Bpbl9sb2NrX2luaXQoJmNo YW5zWzFdLmxvY2spOw0KPj4gK8KgwqDCoCByZXQgPSBrZmlmb19hbGxvYygmY2hhbnNbMV0uc3Zj X2ZpZm8sIGZpZm9fc2l6ZSwgR0ZQX0tFUk5FTCk7DQo+PiArwqDCoMKgIGlmIChyZXQpIHsNCj4+ ICvCoMKgwqDCoMKgwqDCoCBkZXZfZXJyKGRldiwgImZhaWxlZCB0byBhbGxvY2F0ZSBGSUZPIDFc biIpOw0KPj4gK8KgwqDCoMKgwqDCoMKgIHJldHVybiByZXQ7DQo+PiArwqDCoMKgIH0NCj4+ICvC oMKgwqAgc3Bpbl9sb2NrX2luaXQoJmNoYW5zWzFdLnN2Y19maWZvX2xvY2spOw0KPj4gwqDCoMKg wqDCoCBjaGFuc1syXS5zY2wgPSBOVUxMOw0KPj4gwqDCoMKgwqDCoCBjaGFuc1syXS5jdHJsID0g Y29udHJvbGxlcjsNCj4+IMKgwqDCoMKgwqAgY2hhbnNbMl0ubmFtZSA9IFNWQ19DTElFTlRfRkNT Ow0KPj4gwqDCoMKgwqDCoCBzcGluX2xvY2tfaW5pdCgmY2hhbnNbMl0ubG9jayk7DQo+PiArwqDC oMKgIHJldCA9IGtmaWZvX2FsbG9jKCZjaGFuc1syXS5zdmNfZmlmbywgZmlmb19zaXplLCBHRlBf S0VSTkVMKTsNCj4+ICvCoMKgwqAgaWYgKHJldCkgew0KPj4gK8KgwqDCoMKgwqDCoMKgIGRldl9l cnIoZGV2LCAiZmFpbGVkIHRvIGFsbG9jYXRlIEZJRk8gMlxuIik7DQo+PiArwqDCoMKgwqDCoMKg wqAgcmV0dXJuIHJldDsNCj4+ICvCoMKgwqAgfQ0KPj4gK8KgwqDCoCBzcGluX2xvY2tfaW5pdCgm Y2hhbnNbMl0uc3ZjX2ZpZm9fbG9jayk7DQo+PiDCoMKgwqDCoMKgIGNoYW5zWzNdLnNjbCA9IE5V TEw7DQo+PiDCoMKgwqDCoMKgIGNoYW5zWzNdLmN0cmwgPSBjb250cm9sbGVyOw0KPj4gwqDCoMKg wqDCoCBjaGFuc1szXS5uYW1lID0gU1ZDX0NMSUVOVF9IV01PTjsNCj4+IMKgwqDCoMKgwqAgc3Bp bl9sb2NrX2luaXQoJmNoYW5zWzNdLmxvY2spOw0KPj4gK8KgwqDCoCByZXQgPSBrZmlmb19hbGxv YygmY2hhbnNbM10uc3ZjX2ZpZm8sIGZpZm9fc2l6ZSwgR0ZQX0tFUk5FTCk7DQo+PiArwqDCoMKg IGlmIChyZXQpIHsNCj4+ICvCoMKgwqDCoMKgwqDCoCBkZXZfZXJyKGRldiwgImZhaWxlZCB0byBh bGxvY2F0ZSBGSUZPIDNcbiIpOw0KPj4gK8KgwqDCoMKgwqDCoMKgIHJldHVybiByZXQ7DQo+PiAr wqDCoMKgIH0NCj4+ICvCoMKgwqAgc3Bpbl9sb2NrX2luaXQoJmNoYW5zWzNdLnN2Y19maWZvX2xv Y2spOw0KPj4gwqDCoMKgwqDCoCBsaXN0X2FkZF90YWlsKCZjb250cm9sbGVyLT5ub2RlLCAmc3Zj X2N0cmwpOw0KPj4gwqDCoMKgwqDCoCBwbGF0Zm9ybV9zZXRfZHJ2ZGF0YShwZGV2LCBjb250cm9s bGVyKTsNCj4+IEBAIC0xOTUwLDYwICsyMDE0LDQyIEBAIHN0YXRpYyBpbnQgc3RyYXRpeDEwX3N2 Y19kcnZfcHJvYmUoc3RydWN0IA0KPj4gcGxhdGZvcm1fZGV2aWNlICpwZGV2KQ0KPj4gwqDCoMKg wqDCoCAvKiBhZGQgc3ZjIGNsaWVudCBkZXZpY2UocykgKi8NCj4+IMKgwqDCoMKgwqAgc3ZjID0g ZGV2bV9remFsbG9jKGRldiwgc2l6ZW9mKCpzdmMpLCBHRlBfS0VSTkVMKTsNCj4+IMKgwqDCoMKg wqAgaWYgKCFzdmMpIHsNCj4+IC3CoMKgwqDCoMKgwqDCoCByZXQgPSAtRU5PTUVNOw0KPj4gLcKg wqDCoMKgwqDCoMKgIGdvdG8gZXJyX2ZyZWVfa2ZpZm87DQo+PiArwqDCoMKgwqDCoMKgwqAgcmV0 dXJuIC1FTk9NRU07DQo+PiDCoMKgwqDCoMKgIH0NCj4+IMKgwqDCoMKgwqAgY29udHJvbGxlci0+ c3ZjID0gc3ZjOw0KPj4gwqDCoMKgwqDCoCBzdmMtPnN0cmF0aXgxMF9zdmNfcnN1ID0gcGxhdGZv cm1fZGV2aWNlX2FsbG9jKFNUUkFUSVgxMF9SU1UsIDApOw0KPj4gwqDCoMKgwqDCoCBpZiAoIXN2 Yy0+c3RyYXRpeDEwX3N2Y19yc3UpIHsNCj4+IMKgwqDCoMKgwqDCoMKgwqDCoCBkZXZfZXJyKGRl diwgImZhaWxlZCB0byBhbGxvY2F0ZSAlcyBkZXZpY2VcbiIsIFNUUkFUSVgxMF9SU1UpOw0KPj4g LcKgwqDCoMKgwqDCoMKgIHJldCA9IC1FTk9NRU07DQo+PiAtwqDCoMKgwqDCoMKgwqAgZ290byBl cnJfZnJlZV9rZmlmbzsNCj4+ICvCoMKgwqDCoMKgwqDCoCByZXR1cm4gLUVOT01FTTsNCj4gDQo+ IFRoZSBjaGFuZ2UgdG8gdGhlIGVycm9yIGhhbmRsaW5nIGRvZXNuJ3QgbG9vayBxdWl0ZSByaWdo dC4gWW91J3JlIG5vIA0KPiBsb25nZXIgZnJlZWluZyB0aGUgRklGTyBvbiBlcnJvcnMuDQo+IA0K PiBEaW5oDQpBbGwgY29tbWVudHMgaGF2ZSBiZWVuIGFkZHJlc3NlZCBhbmQgdXBkYXRlZCBpbiB2 NA0KDQpodHRwczovL2xvcmUua2VybmVsLm9yZy9hbGwvMjAyNjAyMjMwNzA1MzAuMTkxODctMS1t dWhhbW1hZGFtaXJ1bGFzeXJhZi5tb2hhbWFkamFtaWFuQGFsdGVyYS5jb20vDQoNClRoYW5rcywN CkFtaXJ1bA0K