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 gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id EF21BCCFA13 for ; Mon, 10 Nov 2025 19:30:02 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id A5C2410E2E8; Mon, 10 Nov 2025 19:30:02 +0000 (UTC) Authentication-Results: gabe.freedesktop.org; dkim=pass (2048-bit key; unprotected) header.d=intel.com header.i=@intel.com header.b="GM6uzFVh"; dkim-atps=neutral Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.16]) by gabe.freedesktop.org (Postfix) with ESMTPS id 276FB10E2E8 for ; Mon, 10 Nov 2025 19:30:01 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1762803002; x=1794339002; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-id:content-transfer-encoding: mime-version; bh=g8ZJGb3TGxe6JAoRNG3c8L/GzBhWB9c7hU8F05PxGmA=; b=GM6uzFVhnHjJ89M/ZeFKjENoIM19wOxK8Vh8Ek1bhqlpz8KUVOPrW5on YVn+DTTZOsFEObKaSBjArmqAWJ3o3sF++NEVAwgkbF5GAGDJc3sg0sj37 fe8Mne4i5UILVFfW0dd1ypE3Jcd/K/iWjx/DPHylHNSg2oUmOzbCiYH/p 56B99xuBaZV0fZg4/eEVjSI0M+BYkWh88w7n/5BoWe/9d0R1bSqhsvnnc XUVnNCf83ml/lqS9xOFocING4K3h6OQbCmZpRoWkTM6N1OwBWTw5kAAYR tAsDv3ereyetsMEoF5ekNIFSf9VLWOBAIGIOf/vojXk+xU3uaW2asiX54 g==; X-CSE-ConnectionGUID: ZK8VO2JCQL+w7TA/D0NV9w== X-CSE-MsgGUID: rYq9PJImQQqfovKvak8UIA== X-IronPort-AV: E=McAfee;i="6800,10657,11609"; a="65016567" X-IronPort-AV: E=Sophos;i="6.19,294,1754982000"; d="scan'208";a="65016567" Received: from orviesa002.jf.intel.com ([10.64.159.142]) by orvoesa108.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 10 Nov 2025 11:30:01 -0800 X-CSE-ConnectionGUID: WAcDisSDQv+cLETu9lsV4g== X-CSE-MsgGUID: xCZBUdihT0+me/8g3y0/+w== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.19,294,1754982000"; d="scan'208";a="219410694" Received: from fmsmsx901.amr.corp.intel.com ([10.18.126.90]) by orviesa002.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 10 Nov 2025 11:30:01 -0800 Received: from FMSMSX901.amr.corp.intel.com (10.18.126.90) by fmsmsx901.amr.corp.intel.com (10.18.126.90) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.27; Mon, 10 Nov 2025 11:30:00 -0800 Received: from fmsedg902.ED.cps.intel.com (10.1.192.144) by FMSMSX901.amr.corp.intel.com (10.18.126.90) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.27 via Frontend Transport; Mon, 10 Nov 2025 11:30:00 -0800 Received: from SN4PR2101CU001.outbound.protection.outlook.com (40.93.195.57) by edgegateway.intel.com (192.55.55.82) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.27; Mon, 10 Nov 2025 11:30:00 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=QRUCvWDe93jDN5sv4obIw+Z+t90v9S+NdlWvcudQnVXBMPS+hbyWw2w5DV7gsty7ZuIaLcMh/EVZVanPKbxMzPxP0R9IbU8XX0mkaRXtpnvw5+4IZFFE/vGKP2rIkhFWiQbXXIrid190J8sG9oo4eH83SjNNywCr2PMPxU2e0OCFWKzVvR7b9exHaCI1xTjabbK2/Q9acmCeGCNDYAYRhZqr3JrFaLkhKWi4Bjtdfux7oa4TZMDRtdj7Yd7KC8CWn0cJ7Fi3YsqnXsZ1vam2tSznsevS9T7ye3EDneEnwLP5ivWMhXrCy/DW45J6/3IiB3qahWpSZHVYquIBXfjdRQ== 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=g8ZJGb3TGxe6JAoRNG3c8L/GzBhWB9c7hU8F05PxGmA=; b=Xy17IVlsdaQ0uDEYicFBA0ydG05Z3UVCKIzEUBeFUhvrrkvzXXmwekhFWUVT+w7Gr4hbDYdOWaUGNfsEjXZSDCqZRC0zRhq704ogyrOKoyrcSMZlzbk10V7ZuodBds23No4Yxb9pEDh8CYbNU0gl0M4VQMEkB/nI23aTs9UyLkDxDqKe6FbBMCNs/eCd2jsQ2m8NOUdGSUTzglZwvgJFIwcELvBz9u0rqRE7fYRtUDB7NI83nOWJ+b/D3PcfbFx98XKLTt4pcJ/3i8JU7tHJSaN3RHPuZ2SsUoU6pR9UqpJVUk3JidqEl0/8h5Ciq7ZHBHhaTolMfnY0OIzSSbrfkQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none Received: from DM8PR11MB5573.namprd11.prod.outlook.com (2603:10b6:8:3b::7) by PH0PR11MB4999.namprd11.prod.outlook.com (2603:10b6:510:37::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9298.16; Mon, 10 Nov 2025 19:29:58 +0000 Received: from DM8PR11MB5573.namprd11.prod.outlook.com ([fe80::3f64:5280:3eb4:775b]) by DM8PR11MB5573.namprd11.prod.outlook.com ([fe80::3f64:5280:3eb4:775b%5]) with mapi id 15.20.9298.015; Mon, 10 Nov 2025 19:29:57 +0000 From: "Summers, Stuart" To: "Brost, Matthew" CC: "intel-xe@lists.freedesktop.org" , "Roper, Matthew D" , "De Marchi, Lucas" Subject: Re: [PATCH v2 11/12] drm/xe: Add context-based invalidation to GuC TLB invalidation backend Thread-Topic: [PATCH v2 11/12] drm/xe: Add context-based invalidation to GuC TLB invalidation backend Thread-Index: AQHcTcUhkmSbiize3EqmkJiYYLMO4LTmM0KAgACZ+wCABYgAAA== Date: Mon, 10 Nov 2025 19:29:57 +0000 Message-ID: <8f6d42889021852ae2219cc8f7b1c2e5c5f873e4.camel@intel.com> References: <20251104195616.3339137-1-matthew.brost@intel.com> <20251104195616.3339137-12-matthew.brost@intel.com> <746dd3acad81c8af5cb408ff4b50936ecacfeb5c.camel@intel.com> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: user-agent: Evolution 3.44.4-0ubuntu2 authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: DM8PR11MB5573:EE_|PH0PR11MB4999:EE_ x-ms-office365-filtering-correlation-id: c518a5ef-806a-440a-91a3-08de208f88ad x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230040|366016|1800799024|376014|38070700021; x-microsoft-antispam-message-info: =?utf-8?B?VmhocjdRMG55MVNhMlR1YXRXL2FZVGFwRDQzZU1zaHkrZ1hYdFFKWmxoMWk3?= =?utf-8?B?M1EvenJTRTNuT2hhYzR4ZmtmeG5xckxYbzgvcitTbERlNlFxbTF2SmdNQjJ2?= =?utf-8?B?VVhwRGV1QjRJTWxZQzlWMWxZWkZWRDVGdXNYa1BvWm9CSVk3RUJzeUE1eUpM?= =?utf-8?B?KzdiOGU3cDNBSGxhSW15ZEI1U0lsUEg3LzRDaDNLYzJLR0FIZlhCSGNNNEw2?= =?utf-8?B?OFdXWi9mbTlWVzlEOTNRTmlick9oTHViWjgwNUw0WFBjRDhlRC9DcmR0NTRu?= =?utf-8?B?Vk9vb2xoQ29QYUNiR2xZZ29maC80QU5oZEJQY2lJNVR6cXlmVkxsWFcwQjcv?= =?utf-8?B?RHkzdFFsMGM5c25MRE53UkJtcUdpdlFnSDhnN2s5a0J0c0wzZ2ZRL3FkS0RU?= =?utf-8?B?bjZrUVl2SXAwOUlkSldqWnB5dVpjR3gwazJvMTd1T2VEZ3o0ZUNlMTV2SXM3?= =?utf-8?B?VUJ6aEJvL3hvVExrS0F3dHpFS25CRFRBbHRiekpUcXJmN1VnbXQ0emxZYk1B?= =?utf-8?B?R0x0ZjV1K1Q2RENNWG1rclNrYmh5cDd6S3JhdXIwQ1ptWWJNWCtVRVdUYlcx?= =?utf-8?B?M0M1MW9JalhrYjVpWDJEWklFdjJYcFhuZzUwWUZkb05UdExqMXJtamsxUUhq?= =?utf-8?B?b0FXbyszTHQ2RmtGUVJYZ1p4SkFaL0hiaUI2MXBrRHdORTg0NVp3Qlk2ZGRL?= =?utf-8?B?Slo1VTBqWjh1a1ZJSDZpWmJWTzVqRDUzYk1BeTVYb251TVY3eTVLYzRuck81?= =?utf-8?B?Sml0ZDZENVg1S1JjakErVXZmVEZFL28ybHl5enJrUkVQRjVjbUVzVEo1Q2hk?= =?utf-8?B?aXFmMnlxdGNYZS9vZXV6UWFrNHhDQit6ZVBENkExNnpSc2pFNFdjMnVLaUpZ?= =?utf-8?B?T1V4VUR6bXhvc3VSYU9lN0lteHRmcHB2WC9nL0NCazI5aGVDb2NQTDNPMFZr?= =?utf-8?B?ODFadThUZzVxb0JsM2RETDV1b0VWQ0J2dWczRHo0L1M3NmRZdUx2K2V6NHpK?= =?utf-8?B?YlZKeHljL2NuOGx4QTdwaU1HOWpmS0RVVTk2b3BPbHBXMFhCTit4K2g2bTNt?= =?utf-8?B?eDZVYnp4aktTNHZ5cE8wK1Z5Vk1TT08zdG1rc2tyVFZZd3Q1c0d4aWM1MWNT?= =?utf-8?B?aStPRU9hcUFQcXQwT3JqRHVDY3M4Z1VEYU5tVndIZ2dpYUM0bTQvT3pEdVN6?= =?utf-8?B?eUtQUlA5bHA3VVRVWEI0eVRZYVVBdXNTUXI2WFpQUUdjeHJoOE0yY1AzK1NC?= =?utf-8?B?ZnplTldVYnNubVUxejRZOHR2QVhsKzB5ZG5VSlp0akFhVFowbWtTektKaENH?= =?utf-8?B?bFhMR0NPVU8zZVY3U2dnM2o1TDhDWkhrdFgweEl5Wkh5WlhRYWRCZ2tPQlRw?= =?utf-8?B?ay95V2xsNGlxS3N0b2xEL2dxYTRsTmZVUllnN3NwV1REdkVMdjJrR3UwZlBB?= =?utf-8?B?dkxCU2N1Nk5Bb05CTHNtQmFpdU52QlpDdlBmNTBSRU9CQ1A3cDZpTDBzTjBi?= =?utf-8?B?Nk85ODlqOUlDYUYzKzRtWU5sdmhYSFpGeXZUVFZ1dUY1QUQ5ejRtcEZ1U2hq?= =?utf-8?B?QyszSDZ2Nnc4MS9vRlFjNEtJLzRsanEzUUhua2xWUm5PL20zWTE0RlZlblRl?= =?utf-8?B?V3pkNHJkYk5FVDRYQVNDUndJSTFrTGdQRmhhZktKaDlLZWE5cTE1RjVjd01L?= =?utf-8?B?OVpkei9FZEVrazhuRUtIZzhweTVjcVduT1hqb0cvUTZrdGFTNFc0ci94N1Bz?= =?utf-8?B?cURjdFU5K1hPd2dwajdkSEtGemU2cHFsdnhaSVlkb3hkdkdQbjdETVhxbjdh?= =?utf-8?B?ckZsOXlqQ09uTENGYzZUbTBDZ3FPbVE2UDBNZnlJaEtXb0xmaVpaRDhtRFlz?= =?utf-8?B?VWY3cWNZMXpLRUhRNmlaOUEwUGwrTlgrL2NseE1DTkliMHNqdnArNm1Mb0xH?= =?utf-8?B?SjVRTXVvYXJ4Wmw4L1U4YlRoZHY5NTZYblUwZ0ZlNHVWR2NjaEJRdzZNVW1G?= =?utf-8?B?dE0vL1dNa3lIMTB4VFYxdXlKQlRmVEdPeStVN0xIaGhMTkV4QjR0elZENFJx?= =?utf-8?Q?cnTrUw?= x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DM8PR11MB5573.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(366016)(1800799024)(376014)(38070700021); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?QVNBMGhvWWRFTkJxRGRWaG5Tc1Rnam0ydkdZRW5FSGdHRXFEa0lzQTBqSU1Y?= =?utf-8?B?dUdkYm9SbXNDSHhidXF0eU9lTVNtL083T0szMGNRYndMSnEzMDNWek0yNDdR?= =?utf-8?B?RmdMckJuZVRQcC9yMW00bVhYb3pGMlBnQ1NNU0hTUjU1Nm1HZ0pydU5BQk13?= =?utf-8?B?OEhKZzFYNDJlbUhCeUZWQjhibW1CNklZdWRDY3JNT3Z4ZktNM2wzaklIeHgv?= =?utf-8?B?TmJwV2xRWHF0Ty9YTURYNFNOMEFUeEkwejd3NnBoSmRSNHZNVUVQaDhBODBt?= =?utf-8?B?ZmVLTS9zMUE1MzZCcW9xWWE1WHlrS21kci96eUQ5ZUNFUEp6c0lnSlMwRjF0?= =?utf-8?B?MGZOTkZlbVdLclpTUlp5SDhLSWdWT29sTldLazA5WUdmbis1YTdpRVI4dVRv?= =?utf-8?B?RkdTcU5PeWloY2JjNHVJTXFORTZjRS9ka2tVaEtwSkVRSUFqbXpLbHVucW00?= =?utf-8?B?UDNmcHIzODZWVUhvNmtxSkRQdlhOcDRGeHVGTGxvK2hWOVlVQXdVMHI2c290?= =?utf-8?B?cU8waWVld0Uwa09SQVU1b2Eyc2dMZDN6N3RGc1o1WXZlcmtkdWZVUmFJNGRt?= =?utf-8?B?UGcwbjlkNml0Sitpajc0eVMvc3Q2TlJPb2ZVYXphRktPSE5lUVV3RlJnblBH?= =?utf-8?B?MzVLY3FyMFNDV0twdzZDSS94TnoyV2FiS016UzNOUFl1aElDdDB5OWhqS252?= =?utf-8?B?aGp3c3YxQkFDbUw2ZHZJL3FsMXAvdXdiTDZTaFF3REwwVGRBbWJTR3M2ZUd6?= =?utf-8?B?TDkvSzZuOVNhdlR2VUxUU3hTeHBWMzYzckhpd0FnN202NTJpT1lIaHhrbllD?= =?utf-8?B?S1NHQm5zblBBZDBYOHFERWxWa0wwZXRoRHJKT1dwbHFsaWlRTjl6enAvbjNN?= =?utf-8?B?aDVJcjFHLzgzMWgyYXhQZHdQelIyUHM2c2NBd2NvQ0ZhMEVxRmYvWVlNTk9K?= =?utf-8?B?RE9vZnZIU1ZJR2dKRHlrVjNJaHpWMG5aZytRTUFTTDlpSGhUREN6WUR1VCtl?= =?utf-8?B?S0g3d2FOYk50Mlh3eW9ZN3dwd2V1QnBGU2R2Nk5zRTlNeGhrL1BEZjJjMHdG?= =?utf-8?B?SjhtQlJsNWl6QlhHT1NvQ0d3OFdxQzRTVjBQOHZ2OUd2ZVgwOUVyYytFOXh5?= =?utf-8?B?V0Q1NmpzQnVTUkNpRDcwQURtN0phdzJab25mcVRYUWl5MWdGMDlvdFgvTExJ?= =?utf-8?B?ckN4Vk1PMmVzSkROL1YzcXVGL2dyOVdPajJkTWYrbDkvK3ZoWGZ5cE5HZllp?= =?utf-8?B?c1NiaXFvL1FrZ0pBWVFZaGZtV1BRMmVVRlpXclNGYk9VZUgxUTRzL3hqVXpR?= =?utf-8?B?TEtQSSt5ZWt6ZGo4ZjV6REdDc2ZKZytSbm1pK29nbDV5THNMMEtvMlJ1MzFv?= =?utf-8?B?VklLZHJEM3pTeld6b0xSOFQ2YU8vaUR3b1h2VVlOejAzL0RQQVFpakd6cUJ1?= =?utf-8?B?L0dnUy9nT01mT3RKWnZTVS9pQkJjek9uaTFnbEZwems3Z1RhVlFybktMeDU2?= =?utf-8?B?SnNHSHlSRGRGeGpSaStSTitHOWJxTE1LY09sSitnWFBDWmFScWxVVUVUU0NL?= =?utf-8?B?S29wc0luZllEMGRiZi83Z3F3Zi9CT2wxbkF3TmxMWjRTV3dFVTFDckRiK3pj?= =?utf-8?B?bTJJSGNScGJwWkh6NHdvM0tSR1JNRG11TzNicUVqcHJjUytyLy9oYXc0Z0Uv?= =?utf-8?B?V2VSTVZxaVI2bXBFR3hEUnFMRzJpUGdCQ01UU21pSUtuczlzQW1HbXNIem1I?= =?utf-8?B?VFU3NGEyVFlaYzlmUnBTeENwUkRPbDFwNkNTWmhWRU92b3VIMWgyUXFPWldE?= =?utf-8?B?bVRNMWtLdmVwdzE0TzlVT1QzcE9NcDczZkh0YWdTWTV6QnhFRzFaQjcwZUNo?= =?utf-8?B?RzRWWXJ5alAvUGRaeloveGFieHBueWFUTmZzN0JENEErY29Ub1NoZ04xSlZR?= =?utf-8?B?Tnl5czhxZjZGNndRUHRmVWRUVVorenV6T2pXMzZpRlJlclZNZ05yRnlFcTJz?= =?utf-8?B?QTZBNTZPdGlKNDJVdWR3ZDE3Rnlnek9HTzZ1bWp3QnJhQ1dKcU52eWxSTjhM?= =?utf-8?B?UFF2UGlJcVJOTHcrZ3dxMURzbzRkL1h3cHNlMzh0eXRHN29GbmNwNit1R1NB?= =?utf-8?B?NEZOMGlZcmgvcCtxc21iNVk3SkZoRHFiYkZETjRQOGRUNHMrdzhSdndseG9I?= =?utf-8?B?YWc9PQ==?= Content-Type: text/plain; charset="utf-8" Content-ID: <3C7871100430864FAE43DFC49EEC171F@namprd11.prod.outlook.com> Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: DM8PR11MB5573.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: c518a5ef-806a-440a-91a3-08de208f88ad X-MS-Exchange-CrossTenant-originalarrivaltime: 10 Nov 2025 19:29:57.8592 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: eJvua7Zq4ezhDL6m9Xy7NepOQvkhfHvS+uwOO0RlYS6dGLLo/VQmidhZfYBX8DjSc7W7Tvy009xdTYWQDPuEy7kV3v2jMe2PdJzzpRYbcEU= X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH0PR11MB4999 X-OriginatorOrg: intel.com X-BeenThere: intel-xe@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Intel Xe graphics driver List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-xe-bounces@lists.freedesktop.org Sender: "Intel-xe" T24gVGh1LCAyMDI1LTExLTA2IGF0IDIzOjAxIC0wODAwLCBNYXR0aGV3IEJyb3N0IHdyb3RlOgo+ IE9uIFRodSwgTm92IDA2LCAyMDI1IGF0IDAyOjUwOjQ1UE0gLTA3MDAsIFN1bW1lcnMsIFN0dWFy dCB3cm90ZToKPiA+IE9uIFR1ZSwgMjAyNS0xMS0wNCBhdCAxMTo1NiAtMDgwMCwgTWF0dGhldyBC cm9zdCB3cm90ZToKPiA+ID4gSW50cm9kdWNlIGNvbnRleHQtYmFzZWQgaW52YWxpZGF0aW9uIHN1 cHBvcnQgdG8gdGhlIEd1QyBUTEIKPiA+ID4gaW52YWxpZGF0aW9uCj4gPiA+IGJhY2tlbmQuIFRo aXMgaXMgaW1wbGVtZW50ZWQgYnkgaXRlcmF0aW5nIG92ZXIgZWFjaCBleGVjIHF1ZXVlCj4gPiA+ IHBlciBHVAo+ID4gPiB3aXRoaW4gYSBWTSwgc2tpcHBpbmcgaW5hY3RpdmUgcXVldWVzLCBhbmQg aXNzdWluZyBhIGNvbnRleHQtCj4gPiA+IGJhc2VkCj4gPiA+IChHdUMKPiA+ID4gSUQpIEgyRyBU TEIgaW52YWxpZGF0aW9uLiBBbGwgSDJHIG1lc3NhZ2VzLCBleGNlcHQgdGhlIGZpbmFsIG9uZSwK PiA+ID4gYXJlCj4gPiA+IHNlbnQgd2l0aCBhbiBpbnZhbGlkIHNlcW5vLCB3aGljaCB0aGUgRzJI IGhhbmRsZXIgZHJvcHMgdG8gZW5zdXJlCj4gPiA+IHRoZQo+ID4gPiBUTEIgaW52YWxpZGF0aW9u IGZlbmNlIGlzIG9ubHkgc2lnbmFsZWQgb25jZSBhbGwgSDJHIG1lc3NhZ2VzIGFyZQo+ID4gPiBj b21wbGV0ZWQuCj4gPiA+IAo+ID4gPiBBIHdhdGVybWFyayBtZWNoYW5pc20gaXMgYWxzbyBhZGRl ZCB0byBzd2l0Y2ggYmV0d2VlbiBjb250ZXh0LQo+ID4gPiBiYXNlZAo+ID4gPiBUTEIKPiA+ID4g aW52YWxpZGF0aW9ucyBhbmQgZnVsbCBkZXZpY2Utd2lkZSBpbnZhbGlkYXRpb25zLCBhcyB0aGUg cmV0dXJuCj4gPiA+IG9uCj4gPiA+IGludmVzdG1lbnQgZm9yIGNvbnRleHQtYmFzZWQgaW52YWxp ZGF0aW9uIGRpbWluaXNoZXMgd2hlbiBtYW55Cj4gPiA+IGV4ZWMKPiA+ID4gcXVldWVzIGFyZSBt YXBwZWQuCj4gPiA+IAo+ID4gPiB2MjoKPiA+ID4gwqAtIEZpeCBjaGVja3BhdGNoIHdhcm5pbmdz Cj4gPiA+IAo+ID4gPiBTaWduZWQtb2ZmLWJ5OiBNYXR0aGV3IEJyb3N0IDxtYXR0aGV3LmJyb3N0 QGludGVsLmNvbT4KPiA+ID4gLS0tCj4gPiA+IMKgZHJpdmVycy9ncHUvZHJtL3hlL3hlX2Rldmlj ZV90eXBlcy5owqAgfMKgwqAgMiArCj4gPiA+IMKgZHJpdmVycy9ncHUvZHJtL3hlL3hlX2d1Y190 bGJfaW52YWwuYyB8IDEyMgo+ID4gPiArKysrKysrKysrKysrKysrKysrKysrKysrLQo+ID4gPiDC oGRyaXZlcnMvZ3B1L2RybS94ZS94ZV9wY2kuY8KgwqDCoMKgwqDCoMKgwqDCoMKgIHzCoMKgIDEg Kwo+ID4gPiDCoGRyaXZlcnMvZ3B1L2RybS94ZS94ZV9wY2lfdHlwZXMuaMKgwqDCoMKgIHzCoMKg IDEgKwo+ID4gPiDCoDQgZmlsZXMgY2hhbmdlZCwgMTI0IGluc2VydGlvbnMoKyksIDIgZGVsZXRp b25zKC0pCj4gPiA+IAo+ID4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3hlL3hlX2Rl dmljZV90eXBlcy5oCj4gPiA+IGIvZHJpdmVycy9ncHUvZHJtL3hlL3hlX2RldmljZV90eXBlcy5o Cj4gPiA+IGluZGV4IDE0NTk1MWRkOTVjOS4uY2EyODVmNGJjZTExIDEwMDY0NAo+ID4gPiAtLS0g YS9kcml2ZXJzL2dwdS9kcm0veGUveGVfZGV2aWNlX3R5cGVzLmgKPiA+ID4gKysrIGIvZHJpdmVy cy9ncHUvZHJtL3hlL3hlX2RldmljZV90eXBlcy5oCj4gPiA+IEBAIC0zMTYsNiArMzE2LDggQEAg c3RydWN0IHhlX2RldmljZSB7Cj4gPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg dTggaGFzX21lbV9jb3B5X2luc3RyOjE7Cj4gPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgLyoqIEBpbmZvLmhhc19weHA6IERldmljZSBoYXMgUFhQIHN1cHBvcnQgKi8KPiA+ID4g wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB1OCBoYXNfcHhwOjE7Cj4gPiA+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAvKiogQGluZm8uaGFzX2N0eF90bGJfaW52YWw6IEhh cyBjb250ZXh0IGJhc2VkCj4gPiA+IFRMQgo+ID4gPiBpbnZhbGlkYXRpb25zICovCj4gPiA+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB1OCBoYXNfY3R4X3RsYl9pbnZhbDoxOwo+ID4g PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoC8qKiBAaW5mby5oYXNfcmFuZ2VfdGxi X2ludmFsOiBIYXMgcmFuZ2UgYmFzZWQKPiA+ID4gVExCCj4gPiA+IGludmFsaWRhdGlvbnMgKi8K PiA+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB1OCBoYXNfcmFuZ2VfdGxiX2lu dmFsOjE7Cj4gPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgLyoqIEBpbmZvLmhh c19zcmlvdjogU3VwcG9ydHMgU1ItSU9WICovCj4gPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0veGUveGVfZ3VjX3RsYl9pbnZhbC5jCj4gPiA+IGIvZHJpdmVycy9ncHUvZHJtL3hlL3hl X2d1Y190bGJfaW52YWwuYwo+ID4gPiBpbmRleCA2OTc4ZWU4ZWRmMmUuLjFiYWFmNTc3Y2RlZCAx MDA2NDQKPiA+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL3hlL3hlX2d1Y190bGJfaW52YWwuYwo+ ID4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0veGUveGVfZ3VjX3RsYl9pbnZhbC5jCj4gPiA+IEBA IC02LDE0ICs2LDE3IEBACj4gPiA+IMKgI2luY2x1ZGUgImFiaS9ndWNfYWN0aW9uc19hYmkuaCIK PiA+ID4gwqAKPiA+ID4gwqAjaW5jbHVkZSAieGVfZGV2aWNlLmgiCj4gPiA+ICsjaW5jbHVkZSAi eGVfZXhlY19xdWV1ZV90eXBlcy5oIgo+ID4gPiDCoCNpbmNsdWRlICJ4ZV9ndF9zdGF0cy5oIgo+ ID4gPiDCoCNpbmNsdWRlICJ4ZV9ndF90eXBlcy5oIgo+ID4gPiDCoCNpbmNsdWRlICJ4ZV9ndWMu aCIKPiA+ID4gwqAjaW5jbHVkZSAieGVfZ3VjX2N0LmgiCj4gPiA+ICsjaW5jbHVkZSAieGVfZ3Vj X2V4ZWNfcXVldWVfdHlwZXMuaCIKPiA+ID4gwqAjaW5jbHVkZSAieGVfZ3VjX3RsYl9pbnZhbC5o Igo+ID4gPiDCoCNpbmNsdWRlICJ4ZV9mb3JjZV93YWtlLmgiCj4gPiA+IMKgI2luY2x1ZGUgInhl X21taW8uaCIKPiA+ID4gwqAjaW5jbHVkZSAieGVfdGxiX2ludmFsLmgiCj4gPiA+ICsjaW5jbHVk ZSAieGVfdm0uaCIKPiA+ID4gwqAKPiA+ID4gwqAjaW5jbHVkZSAicmVncy94ZV9ndWNfcmVncy5o Igo+ID4gPiDCoAo+ID4gPiBAQCAtMTM2LDEwICsxMzksMTYgQEAgc3RhdGljIGludCBzZW5kX3Rs Yl9pbnZhbF9wcGd0dChzdHJ1Y3QKPiA+ID4geGVfZ3VjCj4gPiA+ICpndWMsIHUzMiBzZXFubywg dTY0IHN0YXJ0LAo+ID4gPiDCoHsKPiA+ID4gwqAjZGVmaW5lIE1BWF9UTEJfSU5WQUxJREFUSU9O X0xFTsKgwqDCoMKgwqDCoMKgNwo+ID4gPiDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IHhlX2d0ICpn dCA9IGd1Y190b19ndChndWMpOwo+ID4gPiArwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgeGVfZGV2aWNl ICp4ZSA9IGd1Y190b194ZShndWMpOwo+ID4gPiDCoMKgwqDCoMKgwqDCoMKgdTMyIGFjdGlvbltN QVhfVExCX0lOVkFMSURBVElPTl9MRU5dOwo+ID4gPiDCoMKgwqDCoMKgwqDCoMKgdTY0IGxlbmd0 aCA9IGVuZCAtIHN0YXJ0Owo+ID4gPiDCoMKgwqDCoMKgwqDCoMKgaW50IGxlbiA9IDA7Cj4gPiA+ IMKgCj4gPiA+ICvCoMKgwqDCoMKgwqDCoHhlX2d0X2Fzc2VydChndCwgKHR5cGUgPT0gWEVfR1VD X1RMQl9JTlZBTF9QQUdFX1NFTEVDVElWRQo+ID4gPiAmJgo+ID4gPiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICF4ZS0+aW5mby5oYXNfY3R4X3RsYl9p bnZhbCkgfHwKPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICh0 eXBlID09IFhFX0dVQ19UTEJfSU5WQUxfUEFHRV9TRUxFQ1RJVkVfQ1RYCj4gPiA+ICYmCj4gPiA+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHhlLT5pbmZvLmhhc19j dHhfdGxiX2ludmFsKSk7Cj4gPiA+ICsKPiA+ID4gwqDCoMKgwqDCoMKgwqDCoGFjdGlvbltsZW4r K10gPSBYRV9HVUNfQUNUSU9OX1RMQl9JTlZBTElEQVRJT047Cj4gPiA+IMKgwqDCoMKgwqDCoMKg wqBhY3Rpb25bbGVuKytdID0gc2Vxbm87Cj4gPiA+IMKgwqDCoMKgwqDCoMKgwqBpZiAoIWd0X3Rv X3hlKGd0KS0+aW5mby5oYXNfcmFuZ2VfdGxiX2ludmFsIHx8Cj4gPiA+IEBAIC0xNzYsNiArMTg1 LDEwMCBAQCBzdGF0aWMgaW50IHNlbmRfdGxiX2ludmFsX2FzaWRfcHBndHQoc3RydWN0Cj4gPiA+ IHhlX3RsYl9pbnZhbCAqdGxiX2ludmFsLCB1MzIgc2Vxbm8sCj4gPiA+IMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAK PiA+ID4gWEVfR1VDX1RMQl9JTlZBTF9QQUdFX1NFTEVDVElWRSk7Cj4gPiA+IMKgfQo+ID4gPiDC oAo+ID4gPiArc3RhdGljIGJvb2wgcXVldWVfbWFwcGVkX2luX2d1YyhzdHJ1Y3QgeGVfZ3VjICpn dWMsIHN0cnVjdAo+ID4gPiB4ZV9leGVjX3F1ZXVlICpxKQo+ID4gPiArewo+ID4gPiArwqDCoMKg wqDCoMKgwqByZXR1cm4gcS0+Z3QgPT0gZ3VjX3RvX2d0KGd1Yyk7Cj4gPiA+ICt9Cj4gPiA+ICsK PiA+ID4gK3N0YXRpYyBpbnQgc2VuZF90bGJfaW52YWxfY3R4X3BwZ3R0KHN0cnVjdCB4ZV90bGJf aW52YWwKPiA+ID4gKnRsYl9pbnZhbCwKPiA+ID4gdTMyIHNlcW5vLAo+ID4gPiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgdTY0IHN0YXJ0LCB1NjQgZW5kLCB1MzIgYXNpZCkKPiA+ID4gK3sKPiA+ID4gK8KgwqDCoMKg wqDCoMKgc3RydWN0IHhlX2d1YyAqZ3VjID0gdGxiX2ludmFsLT5wcml2YXRlOwo+ID4gPiArwqDC oMKgwqDCoMKgwqBzdHJ1Y3QgeGVfZGV2aWNlICp4ZSA9IGd1Y190b194ZShndWMpOwo+ID4gPiAr wqDCoMKgwqDCoMKgwqBzdHJ1Y3QgeGVfZXhlY19xdWV1ZSAqcSwgKmxhc3RfcSA9IE5VTEw7Cj4g PiA+ICvCoMKgwqDCoMKgwqDCoHN0cnVjdCB4ZV92bSAqdm07Cj4gPiA+ICvCoMKgwqDCoMKgwqDC oGludCBlcnIgPSAwOwo+ID4gPiArCj4gPiA+ICvCoMKgwqDCoMKgwqDCoGxvY2tkZXBfYXNzZXJ0 X2hlbGQoJnRsYl9pbnZhbC0+c2Vxbm9fbG9jayk7Cj4gPiA+ICsKPiA+ID4gK8KgwqDCoMKgwqDC oMKgaWYgKHhlLT5pbmZvLmZvcmNlX2V4ZWNsaXN0KQo+ID4gPiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgcmV0dXJuIC1FQ0FOQ0VMRUQ7Cj4gPiA+ICsKPiA+ID4gK8KgwqDCoMKgwqDC oMKgdm0gPSB4ZV9kZXZpY2VfYXNpZF90b192bSh4ZSwgYXNpZCk7Cj4gPiA+ICvCoMKgwqDCoMKg wqDCoGlmIChJU19FUlIodm0pKQo+ID4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg cmV0dXJuIFBUUl9FUlIodm0pOwo+ID4gPiArCj4gPiA+ICvCoMKgwqDCoMKgwqDCoGRvd25fcmVh ZCgmdm0tPmV4ZWNfcXVldWVzLmxvY2spOwo+ID4gPiArCj4gPiA+ICvCoMKgwqDCoMKgwqDCoC8q Cj4gPiA+ICvCoMKgwqDCoMKgwqDCoCAqIFhYWDogUmFuZG9tbHkgcGlja2luZyBhIHRocmVzaG9s ZCBmb3Igbm93LiBUaGlzIHdpbGwKPiA+ID4gbmVlZAo+ID4gPiB0byBiZQo+ID4gPiArwqDCoMKg wqDCoMKgwqAgKiB0dW5lZCBiYXNlZCBvbiBleHBlY3RlZCBVTUQgcXVldWUgY291bnRzIGFuZAo+ ID4gPiBwZXJmb3JtYW5jZQo+ID4gPiBwcm9maWxpbmcuCj4gPiA+ICvCoMKgwqDCoMKgwqDCoCAq Lwo+ID4gPiArI2RlZmluZSBFWEVDX1FVRVVFX0NPVU5UX0ZVTExfVEhSRVNIT0xEwqDCoMKgwqDC oMKgwqDCoDgKPiA+IAo+ID4gRG9lcyBzZWVtIGludGVyZXN0aW5nIGZvciB0aGlzIHRvIGJlIGNv bmZpZ3VyYWJsZS4gTWF5YmUgZGlmZmVyZW50Cj4gPiBhcHBsaWNhdGlvbnMgaGF2ZSBkaWZmZXJl bnQgcmVxdWlyZW1lbnRzIGhlcmUuLi4gQnV0IGFsc28gd2Ugc2hvdWxkCj4gPiBoYXZlIHNvbWUg a2luZCBvZiBkZWZhdWx0LiBObyBpc3N1ZSB3aXRoIHdoYXQgeW91IAo+ID4gCj4gCj4gWWVzLCBJ IGZpZ3VyZSB3ZSBjYW4gbWFrZSB0aGlzIHR1bmFibGUgc29tZWhvdy4KPiAKPiA+ID4gK8KgwqDC oMKgwqDCoMKgaWYgKHZtLT5leGVjX3F1ZXVlcy5jb3VudFtndWNfdG9fZ3QoZ3VjKS0+aW5mby5p ZF0gPj0KPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgIEVYRUNfUVVFVUVfQ09VTlRfRlVMTF9U SFJFU0hPTEQpIHsKPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHUzMiBhY3Rp b25bXSA9IHsKPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqBYRV9HVUNfQUNUSU9OX1RMQl9JTlZBTElEQVRJT04sCj4gPiA+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgc2Vxbm8sCj4gPiA+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgTUFLRV9JTlZBTF9PUChYRV9HVUNf VExCX0lOVkFMX0ZVTEwpLAo+ID4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgfTsK PiA+ID4gKwo+ID4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZXJyID0gc2VuZF90 bGJfaW52YWwoZ3VjLCBhY3Rpb24sCj4gPiA+IEFSUkFZX1NJWkUoYWN0aW9uKSk7Cj4gPiA+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBnb3RvIGVycl91bmxvY2s7Cj4gPiA+ICvCoMKg wqDCoMKgwqDCoH0KPiA+ID4gKyN1bmRlZiBFWEVDX1FVRVVFX0NPVU5UX0ZVTExfVEhSRVNIT0xE Cj4gPiA+ICsKPiA+ID4gK8KgwqDCoMKgwqDCoMKgbGlzdF9mb3JfZWFjaF9lbnRyeV9yZXZlcnNl KHEsICZ2bS0+ZXhlY19xdWV1ZXMubGlzdCwKPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHZtX2V4ZWNfcXVl dWVfbGluaykKPiA+IAo+ID4gQnJhY2VzIGhlcmUgYXJvdW5kIHRoZSBpZigpIHt9LiBPdGhlcndp c2UgaXQncyB0b28gZWFzeSB0bwo+ID4gYWNjaWRlbnRhbGx5Cj4gPiBhZGQgbGluZXMgYmVsb3cg dGhlIGlmIGNvbmRpdGlvbiB3aXRoIHVuaW50ZW5kZWQgYmVoYXZpb3IuCj4gPiAKPiA+ID4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlmIChxdWV1ZV9tYXBwZWRfaW5fZ3VjKGd1Yywg cSkgJiYgcS0+b3BzLQo+ID4gPiA+YWN0aXZlKHEpKQo+ID4gPiB7Cj4gPiA+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgbGFzdF9xID0gcTsKPiA+ID4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBicmVhazsKPiA+ID4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoH0KPiA+ID4gKwo+ID4gPiArwqDCoMKgwqDC oMKgwqBpZiAoIWxhc3RfcSkgewo+ID4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg LyoKPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAqIFdlIGNhbid0IGJyZWFr IGZlbmNlIG9yZGVyaW5nIGZvciBUTEIKPiA+ID4gaW52YWxpZGF0aW9uCj4gPiA+IGpvYnMsIGlm Cj4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKiBUTEIgaW52YWxpZGF0aW9u cyBhcmUgaW5mbGlnaHQgaXNzdWUgYSBkdW1teQo+ID4gPiBpbnZhbGlkYXRpb24gdG8KPiA+ID4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAqIG1haW50YWluIG9yZGVyaW5nLiBOb3Ig Y2FuIHdlIG1vdmUgc2FmZWx5IHRoZQo+ID4gPiBzZXFub19yZWN2IHdoZW4KPiA+ID4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAqIHJldHVybmluZyAtRUNBTkNFTEVEIGlmIFRMQiBp bnZhbGlkYXRpb25zIGFyZQo+ID4gPiBpbgo+ID4gPiBmbGlnaHQuIFVzZQo+ID4gPiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICogR0dUVCBpbnZhbGlkYXRpb24gYXMgZHVtbXkgaW52 YWxpZGF0aW9uIGdpdmVuCj4gPiA+IEFTSUQKPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCAqIGludmFsaWRhdGlvbnMgYXJlIHVuc3VwcG9ydGVkIGhlcmUuCj4gPiA+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKi8KPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoGlmICh4ZV90bGJfaW52YWxfaWRsZSh0bGJfaW52YWwpKQo+ID4gPiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGVyciA9IC1FQ0FOQ0VMRUQ7 Cj4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBlbHNlCj4gPiA+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZXJyID0gc2VuZF90bGJfaW52 YWxfZ2d0dCh0bGJfaW52YWwsCj4gPiA+IHNlcW5vKTsKPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoGdvdG8gZXJyX3VubG9jazsKPiA+ID4gK8KgwqDCoMKgwqDCoMKgfQo+ID4g PiArCj4gPiA+ICvCoMKgwqDCoMKgwqDCoGxpc3RfZm9yX2VhY2hfZW50cnkocSwgJnZtLT5leGVj X3F1ZXVlcy5saXN0LAo+ID4gPiB2bV9leGVjX3F1ZXVlX2xpbmspIHsKPiA+ID4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoGludCBfX3NlcW5vID0gbGFzdF9xID09IHEgPyBzZXFubyA6 Cj4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgVExC X0lOVkFMSURBVElPTl9TRVFOT19JTlZBTElEOwo+ID4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgdTMyIHR5cGUgPSBYRV9HVUNfVExCX0lOVkFMX1BBR0VfU0VMRUNUSVZFX0NUWDsK PiA+ID4gKwo+ID4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgLyoKPiA+ID4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAqIFhYWDogVGVjaGluY2FsbHkgd2UgY2FuIHJh Y2UgaGVyZSBhbmQgcXVldWUKPiA+ID4gY2FuCj4gPiA+IGJlY29tZQo+ID4gPiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgICogaW5hY3RpdmUsIG5vdCBpZGVhbC4gVGhlIFRMQiBpbnZh bGlkYXRpb24gd2lsbAo+ID4gPiB0aW1lb3V0IGluCj4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgKiB0aGlzIGNhc2UgdW5sZXNzIHdlIGdldCBHdUMgc3VwcG9ydCB0byBjb252 ZXJ0Cj4gPiA+IHRvCj4gPiA+IE5PUC4uLgo+ID4gCj4gPiBXZSBhY3R1YWxseSBjYW4ndCBzdXBw b3J0IHRoaXMuIEl0IHdvbid0IGp1c3QgdGltZSBvdXQsIEd1QyB3aWxsCj4gPiByZXR1cm4KPiAK PiBZZXMsIEkgYWdyZWUuIEkgdGhpbmsgd2UnZCByZWNlaXZlIGEgZmFpbHVyZSByZXNwb25zZSB0 bwo+IEdVQ19IWEdfVFlQRV9GQVNUX1JFUVVFU1QsIGJ1dCBpZiBJIHJlY2FsbCBjb3JyZWN0bHks IGluIG15IHRlc3RpbmcgSQo+IG9ubHkgc2F3IHRpbWVvdXRzIG9uIFRMQiBpbnZhbGlkYXRpb25z IHNlbnQgdG8gdW5yZWdpc3RlcmVkIEd1QyBJRHMuCj4gTGV0Cj4gbWUgZm9sbG93IG9uIGZhaWx1 cmUgY2FzZSAoSSBoaXQgdGhpcyBpbiBjYXNlIHdoZW4gdGhlbiB0aGUgbXVsdGktR1QKPiBjb2Rl IHdhc24ndCBxdWl0ZSByaWdodCB5ZXQpLgoKSSBjYW4gbG9vayB1cCB0aGUgZXhhY3QgY2FzZXMs IGJ1dCBJIGhhZCBkb25lIGEgbG90IG9mIHRlc3RpbmcgYXJvdW5kCnRoaXMgaW50ZXJuYWxseSBh bmQgYW55IHN1ZmZpY2llbnRseSBsYXJnZSBleGVjIHF1ZXVlCnJlZ2lzdHJhdGlvbi9kZXJlZ2lz dHJhdGlvbiBjb3VudCBpcyBnb2luZyB0byBsaWtlbHkgaGl0IHRoaXMuIEl0IGhhcyBhCnByZXR0 eSBsYXJnZSBpbXBhY3Qgb24gQ0kuCgo+IAo+ID4gYW4gZXJyb3IgKGludmFsaWQgcGFyYW1ldGVy IHRoYXQgdGhlIGNvbnRleHQgaXNuJ3QgcmVnaXN0ZXJlZCBhbmQKPiA+IHdlJ3JlCj4gPiB0cnlp bmcgdG8gc3VibWl0IHNvbWV0aGluZyB2aWEgY29udGV4dCBpbnZhbGlkYXRpb24gLSBub3RoaW5n Cj4gPiBhY3R1YWxseQo+ID4gZ2V0cyBzZW50IHRvIGhhcmR3YXJlKSBhbmQgd2Ugd2lsbCBpc3N1 ZSBhIEdUIHJlc2V0LiBXZSBzaG91bGQgbWFrZQo+IAo+IEEgZmFpbHVyZSByZXNwb25zZSB0byBH VUNfSFhHX1RZUEVfRkFTVF9SRVFVRVNUIGlzIGluZGVlZCBhIEdUIHJlc2V0Lgo+IAo+ID4gc3Vy ZSB3aGVuIHdlIHNlbmQgdGhpcywgdGhlIGNvbnRleHQgaXMgcmVnaXN0ZXJlZCBhbmQgYW55Cj4g PiBkZXJlZ2lzdHJhdGlvbiBleHBsaWNpdGx5IGhhcHBlbnMgYWZ0ZXJ3YXJkcy4KPiA+IAo+ID4g VGhpcyBpcyB3aHkgZ2VuZXJhbGx5IHdlIHdhbnQgdG8gZG8gdGhpcyBhZGQvcmVtb3ZlIG5vdCBh dCB0aGUKPiA+IHF1ZXVlCj4gPiBsZXZlbCBidXQgYXQgdGhlIGd1YyByZWdpc3RyYXRpb24vZGVy ZWdpc3RyYXRpb24gbGV2ZWwgdG8gZ3VhcmFudGVlCj4gPiB0aGlzLiBCdXQgSSBzZWUgeW91IHNw bGl0IHRoZSBxdWV1ZSBhZGQgYW5kIHRoZSBzdWJtaXNzaW9uIGJhc2VkIG9uCj4gPiB0aGlzIGFj dGl2ZSBmbGFnLiBSaWdodCBub3cgSSBiZWxpZXZlIHdlJ3JlIHRyYWNraW5nICJwZW5kaW5nCj4g PiBkZXJlZ2lzdHJhdGlvbiIgd2l0aCBleGVjX3F1ZXVlX2Rlc3Ryb3llZCAmJiBleGVjX3F1ZXVl X3JlZ2lzdGVyZWQsCj4gPiBhbHRob3VnaCBpdCBtaWdodCBiZSBuaWNlIHRvIGhhdmUgYW4gZXhw bGljaXQgc3RhdGUgdGhlcmUuCj4gCj4gTG9ja2luZyBpcyByZXF1aXJlZCB0byBtYWtlIHRoaXMg cmFjZS1mcmVlLCB3aGljaCBqdXN0IGRvZXNuJ3Qgd29yay4KPiAKPiAtIFRMQiBpbnZhbGlkYXRp b25zIG11c3QgYmUgaXNzdWVkIGlmIHRoZSBjb250ZXh0IGlzIGVuYWJsZWQgb3IgZXZlbgo+IGlm IGEKPiDCoCBkaXNhYmxlIGlzIHBlbmRpbmfigJRvdGhlcndpc2UsIHdlIHJpc2sgbWVtb3J5IGNv cnJ1cHRpb24sIHdoaWNoCj4gY291bGQgYmUKPiDCoCBjYXRhc3Ryb3BoaWMuCgpBZ3JlZWQuCgo+ IC0gVGhlIGNvbnRleHQgZGlzYWJsZSAiZG9uZSIgRzJIIGlzIHJlY2VpdmVkIHVuZGVyIHRoZSBD VCBsb2NrOyB0aGUKPiDCoCBzdWJzZXF1ZW50IGRlcmVnaXN0ZXIgaXMgYWxzbyBpc3N1ZWQgdW5k ZXIgdGhlIENUIGxvY2suCj4gLSBUaGUgbG9jayB0aGF0IGl0ZXJhdGVzIG92ZXIgYSBWTSdzIGV4 ZWMgcXVldWVzIChjb250ZXh0cykgaXMgdGhlCj4gb3V0ZXIKPiDCoCBsb2NrIG9mIHRoZSBDVCBs b2NrLgo+IAo+IEFzIGZhciBhcyBJIGNhbiB0ZWxsLCB3ZSBjYW4ndCByZXNvbHZlIHRoaXMgcmFj ZSB3aXRob3V0IGludmVydGluZwo+IHRoZQo+IGxvY2tpbmcgb3JkZXLigJRhdCBsZWFzdCBub3Qg aW4gYW55IHdheSBJJ2QgY29uc2lkZXIgYSByZWFzb25hYmxlCj4gbG9ja2luZwo+IHNjaGVtZSBm b3IgdGhlIEtNRC4KCkNhbid0IHdlIGp1c3QgdGllIHRoaXMgdG8gcmVnaXN0ZXJfZXhlY19xdWV1 ZSgpIChmb3IgdGhlIGFkZCksCmRpc2FibGVfc2NoZWR1bGluZ19kZXJlZ2lzdGVyKCksIF9fZGVy ZWdpc3Rlcl9leGVjX3F1ZXVlKCksIGFuZApndWNfZXhlY19xdWV1ZV9zdG9wKCkgKGZvciB0aGUg cmVtb3ZlKSBhbmQgYXZvaWQgdGhlIGluLWZsaWdodCBpc3N1ZQphcm91bmQgbG9ja2luZz8gU28g YmFzaWNhbGx5IHdlIGVuc3VyZSB0aGF0IHRoZSBsaXN0IGlzIG9ubHkgcG9wdWxhdGVkCmFmdGVy IHRoZSAicmVnaXN0ZXIiIENUIGlzIHNlbnQgYW5kIGJlZm9yZSB0aGUgImRlcmVnaXN0ZXIiIENU IGlzIHNlbnQsCnRoZXJlZm9yZSBlbnN1cmluZyB0aGF0IGFueSBUTEIgaW52YWwgc2VudCB0byB0 aG9zZSBxdWV1ZXMgYXJlCnNlcXVlbmNlZCBwcm9wZXJseSBhcm91bmQgdGhlIHJlZ2lzdGVyIGFu ZCBkZXJlZ2lzdGVyIENUIG1lc3NhZ2VzLgoKU28gYmFzaWNhbGx5IChzZWUgdGhlIHJlbW92YWwg YWZ0ZXIgd2UgbWFyayB0aGUgcXVldWUgYXMgImRlc3Ryb3llZCIpOgpkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL3hlL3hlX2d1Y19zdWJtaXQuYwpiL2RyaXZlcnMvZ3B1L2RybS94ZS94ZV9n dWNfc3VibWl0LmMKaW5kZXggZWMwZDFkMWIwMjQ5Li43YTZlZjM4MTE4MDggMTAwNjQ0Ci0tLSBh L2RyaXZlcnMvZ3B1L2RybS94ZS94ZV9ndWNfc3VibWl0LmMKKysrIGIvZHJpdmVycy9ncHUvZHJt L3hlL3hlX2d1Y19zdWJtaXQuYwpAQCAtNzA4LDYgKzcwOCw4IEBAIHN0YXRpYyB2b2lkIHJlZ2lz dGVyX2V4ZWNfcXVldWUoc3RydWN0CnhlX2V4ZWNfcXVldWUgKnEsIGludCBjdHhfdHlwZSkKICAg ICAgICBlbHNlCiAgICAgICAgICAgICAgICBfX3JlZ2lzdGVyX2V4ZWNfcXVldWUoZ3VjLCAmaW5m byk7CiAgICAgICAgaW5pdF9wb2xpY2llcyhndWMsIHEpOworCisgICAgICAgYWRkX3RvX3ZtX2V4 ZWNfcXVldWVfbGlzdCgpOwogfQogCiBzdGF0aWMgdTMyIHdxX3NwYWNlX3VudGlsX3dyYXAoc3Ry dWN0IHhlX2V4ZWNfcXVldWUgKnEpCkBAIC05NTAsNiArOTUyLDcgQEAgc3RhdGljIHZvaWQgZGlz YWJsZV9zY2hlZHVsaW5nX2RlcmVnaXN0ZXIoc3RydWN0CnhlX2d1YyAqZ3VjLAogICAgICAgIGNs ZWFyX2V4ZWNfcXVldWVfZW5hYmxlZChxKTsKICAgICAgICBzZXRfZXhlY19xdWV1ZV9wZW5kaW5n X2Rpc2FibGUocSk7CiAgICAgICAgc2V0X2V4ZWNfcXVldWVfZGVzdHJveWVkKHEpOworICAgICAg IHJlbW92ZV9mcm9tX3ZtX2V4ZWNfcXVldWVfbGlzdCgpOwogICAgICAgIHRyYWNlX3hlX2V4ZWNf cXVldWVfc2NoZWR1bGluZ19kaXNhYmxlKHEpOwogCiAgICAgICAgLyoKQEAgLTEyMTksNiArMTIy Miw3IEBAIHN0YXRpYyB2b2lkIF9fZGVyZWdpc3Rlcl9leGVjX3F1ZXVlKHN0cnVjdCB4ZV9ndWMK Kmd1Yywgc3RydWN0IHhlX2V4ZWNfcXVldWUgKnEpCiAgICAgICAgeGVfZ3RfYXNzZXJ0KGd1Y190 b19ndChndWMpLCAhZXhlY19xdWV1ZV9wZW5kaW5nX2Rpc2FibGUocSkpOwogCiAgICAgICAgc2V0 X2V4ZWNfcXVldWVfZGVzdHJveWVkKHEpOworICAgICAgIHJlbW92ZV9mcm9tX3ZtX2V4ZWNfcXVl dWVfbGlzdCgpOwogICAgICAgIHRyYWNlX3hlX2V4ZWNfcXVldWVfZGVyZWdpc3RlcihxKTsKIAog ICAgICAgIHhlX2d1Y19jdF9zZW5kKCZndWMtPmN0LCBhY3Rpb24sIEFSUkFZX1NJWkUoYWN0aW9u KSwKQEAgLTE5NzEsNiArMTk3NSw3IEBAIHN0YXRpYyB2b2lkIGd1Y19leGVjX3F1ZXVlX3N0b3Ao c3RydWN0IHhlX2d1YwoqZ3VjLCBzdHJ1Y3QgeGVfZXhlY19xdWV1ZSAqcSkKICAgICAgICAgICAg ICAgICAgIEVYRUNfUVVFVUVfU1RBVEVfS0lMTEVEIHwgRVhFQ19RVUVVRV9TVEFURV9ERVNUUk9Z RUQKfAogICAgICAgICAgICAgICAgICAgRVhFQ19RVUVVRV9TVEFURV9TVVNQRU5ERUQsCiAgICAg ICAgICAgICAgICAgICAmcS0+Z3VjLT5zdGF0ZSk7CisgICAgICAgcmVtb3ZlX2Zyb21fdm1fZXhl Y19xdWV1ZV9saXN0KCk7CiAgICAgICAgcS0+Z3VjLT5yZXN1bWVfdGltZSA9IDA7CiAgICAgICAg dHJhY2VfeGVfZXhlY19xdWV1ZV9zdG9wKHEpOwoKPiAKPiA+IAo+ID4gQWx0ZXJuYXRpdmVseSB3 ZSBjb3VsZCBhbHNvIGNhcHR1cmUgdGhhdCBlcnJvciByZXNwb25zZSBmcm9tIEd1QywKPiA+IGFs dGhvdWdoIHRoZXJlIGFyZSBhIGZldyBkaWZmZXJlbnQgcGxhY2VzIHdlIGNhbiBnZXQgYW4gZXJy b3IgdGhlcmUKPiA+IGFuZAo+ID4gd2UgbWlnaHQgbm90IHdhbnQgdG8gb3ZlcmxvYWQgdGhlIENU IGVycm9yIGhhbmRsZXIgaW4gdGhlIGV2ZW50Cj4gPiB0aGVyZQo+ID4gaXMgYSBsZWdpdGltYXRl IHN0YXRlIG9yIGhhcmR3YXJlIGVycm9yIHRoYXQgcmVxdWlyZXMgYSBndWMKPiA+IHJlbG9hZC9H VAo+ID4gcmVzZXQuCj4gPiAKPiAKPiBJIGJlbGlldmUgdGhlIHNvbHV0aW9uIGxpZXMgaW4gR3VD IHN1cHBvcnQuIFdlIGNvdWxkIGludHJvZHVjZSBhIGZsYWcKPiBpbgo+IHRoZSBIMkcgVExCIGlu dmFsaWRhdGlvbiB0aGF0IHNpZ25hbHM6ICJJIHVuZGVyc3RhbmQgdGhlIHJpc2tz4oCUdGhpcwo+ IG1heQo+IHJhY2UuIElmIGl0IGRvZXMsIGRpc2NhcmQgdGhlIFRMQiBpbnZhbGlkYXRpb24gYW5k IHN0aWxsIHJldHVybiBhCj4gdmFsaWQKPiBHMkggVExCIGRvbmUgcmVzcG9uc2UuIgoKT2YgY291 cnNlLCBpdCB3b3VsZCBiZSBuaWNlIGlmIHdlIGhhZCBhIGRlZGljYXRlZCBlcnJvciBHMkggdGhh dCB3b3VsZApjYWxsIHRoaXMgb3V0IGV4cGxpY2l0bHkuIFJpZ2h0IG5vdyB3ZSBqdXN0IGdldCBh IGdlbmVyYWwgImludmFsaWQKcGFyYW1ldGVyIi4gRXZlbiBoYXZpbmcgYSB3YXkgdG8gZWFzaWx5 IGlkZW50aWZ5IHRoZSBzZXF1ZW5jZSBudW1iZXIgaW4KcXVlc3Rpb24gKHdoaWNoIEkga25vdyBp cyBzbGlnaHRseSBkaWZmZXJlbnQgYWZ0ZXIgeW91ciBjaGFuZ2VzIGluIHRoaXMKc2VyaWVzKS4K Cj4gCj4gV2XigJlkIGxpa2VseSBkaXNhYmxlIHRoaXMgaW4gQ0kgYnVpbGRzIHVubGVzcyBpdCBj YXVzZXMgbm9pc2UuIEluCj4gcHJvZHVjdGlvbiwgaWYgd2UgaGl0IHRoaXMgcmFjZSAod2hpY2gg c2hvdWxkIGJlIHJhcmUsIGdpdmVuIENJCgpOb3QgcmFyZSwgc2VlIG15IGNvbW1lbnQgYWJvdmUu IEkgdGhpbmsgdGhpcyBuZWVkcyB0byBiZSBmaXhlZCAtIHdlCmNhbid0IG1lcmdlIHRoaXMgd2l0 aCBHVCByZXNldHMgaGFwcGVuaW5nIGFmdGVyIHRoZSBleGVjIHF1ZXVlCnN1Ym1pc3Npb24gYW5k IGRlc3Ryb3kgY291bnQgZ2V0cyBoaWdoIGVub3VnaC4KClRoYW5rcywKU3R1YXJ0Cgo+IHBhc3Nl cwo+IHdpdGggdGhlIHJhY2UgZXhwb3NlZCksIHRoZSB3b3JzdC1jYXNlIG91dGNvbWUgaXMgYW4g ZXh0cmEgVExCCj4gaW52YWxpZGF0aW9u4oCUd2hpY2ggaXMgYWNjZXB0YWJsZS4KPiAKPiBNYXR0 Cj4gCj4gPiBUaGFua3MsCj4gPiBTdHVhcnQKPiA+IAo+ID4gPiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgICovCj4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAo IXF1ZXVlX21hcHBlZF9pbl9ndWMoZ3VjLCBxKSB8fCAhcS0+b3BzLQo+ID4gPiA+IGFjdGl2ZShx KSkKPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBj b250aW51ZTsKPiA+ID4gKwo+ID4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgeGVf YXNzZXJ0KHhlLCBxLT52bSA9PSB2bSk7Cj4gPiA+ICsKPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoGVyciA9IHNlbmRfdGxiX2ludmFsX3BwZ3R0KGd1YywgX19zZXFubywgc3Rh cnQsCj4gPiA+IGVuZCwKPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcS0+Z3VjLT5p ZCwgdHlwZSk7Cj4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAoZXJyKQo+ ID4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGdvdG8g ZXJyX3VubG9jazsKPiA+ID4gK8KgwqDCoMKgwqDCoMKgfQo+ID4gPiArCj4gPiA+ICtlcnJfdW5s b2NrOgo+ID4gPiArwqDCoMKgwqDCoMKgwqB1cF9yZWFkKCZ2bS0+ZXhlY19xdWV1ZXMubG9jayk7 Cj4gPiA+ICvCoMKgwqDCoMKgwqDCoHhlX3ZtX3B1dCh2bSk7Cj4gPiA+ICsKPiA+ID4gK8KgwqDC oMKgwqDCoMKgcmV0dXJuIGVycjsKPiA+ID4gK30KPiA+ID4gKwo+ID4gPiDCoHN0YXRpYyBib29s IHRsYl9pbnZhbF9pbml0aWFsaXplZChzdHJ1Y3QgeGVfdGxiX2ludmFsCj4gPiA+ICp0bGJfaW52 YWwpCj4gPiA+IMKgewo+ID4gPiDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IHhlX2d1YyAqZ3VjID0g dGxiX2ludmFsLT5wcml2YXRlOwo+ID4gPiBAQCAtMjAzLDcgKzMwNiw3IEBAIHN0YXRpYyBsb25n IHRsYl9pbnZhbF90aW1lb3V0X2RlbGF5KHN0cnVjdAo+ID4gPiB4ZV90bGJfaW52YWwgKnRsYl9p bnZhbCkKPiA+ID4gwqDCoMKgwqDCoMKgwqDCoHJldHVybiBod190bGJfdGltZW91dCArIDIgKiBk ZWxheTsKPiA+ID4gwqB9Cj4gPiA+IMKgCj4gPiA+IC1zdGF0aWMgY29uc3Qgc3RydWN0IHhlX3Rs Yl9pbnZhbF9vcHMgZ3VjX3RsYl9pbnZhbF9vcHMgPSB7Cj4gPiA+ICtzdGF0aWMgY29uc3Qgc3Ry dWN0IHhlX3RsYl9pbnZhbF9vcHMgZ3VjX3RsYl9pbnZhbF9hc2lkX29wcyA9IHsKPiA+ID4gwqDC oMKgwqDCoMKgwqDCoC5hbGwgPSBzZW5kX3RsYl9pbnZhbF9hbGwsCj4gPiA+IMKgwqDCoMKgwqDC oMKgwqAuZ2d0dCA9IHNlbmRfdGxiX2ludmFsX2dndHQsCj4gPiA+IMKgwqDCoMKgwqDCoMKgwqAu cHBndHQgPSBzZW5kX3RsYl9pbnZhbF9hc2lkX3BwZ3R0LAo+ID4gPiBAQCAtMjEyLDYgKzMxNSwx NSBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IHhlX3RsYl9pbnZhbF9vcHMKPiA+ID4gZ3VjX3RsYl9p bnZhbF9vcHMgPSB7Cj4gPiA+IMKgwqDCoMKgwqDCoMKgwqAudGltZW91dF9kZWxheSA9IHRsYl9p bnZhbF90aW1lb3V0X2RlbGF5LAo+ID4gPiDCoH07Cj4gPiA+IMKgCj4gPiA+ICtzdGF0aWMgY29u c3Qgc3RydWN0IHhlX3RsYl9pbnZhbF9vcHMgZ3VjX3RsYl9pbnZhbF9jdHhfb3BzID0gewo+ID4g PiArwqDCoMKgwqDCoMKgwqAuZ2d0dCA9IHNlbmRfdGxiX2ludmFsX2dndHQsCj4gPiA+ICvCoMKg wqDCoMKgwqDCoC5hbGwgPSBzZW5kX3RsYl9pbnZhbF9hbGwsCj4gPiA+ICvCoMKgwqDCoMKgwqDC oC5wcGd0dCA9IHNlbmRfdGxiX2ludmFsX2N0eF9wcGd0dCwKPiA+ID4gK8KgwqDCoMKgwqDCoMKg LmluaXRpYWxpemVkID0gdGxiX2ludmFsX2luaXRpYWxpemVkLAo+ID4gPiArwqDCoMKgwqDCoMKg wqAuZmx1c2ggPSB0bGJfaW52YWxfZmx1c2gsCj4gPiA+ICvCoMKgwqDCoMKgwqDCoC50aW1lb3V0 X2RlbGF5ID0gdGxiX2ludmFsX3RpbWVvdXRfZGVsYXksCj4gPiA+ICt9Owo+ID4gPiArCj4gPiA+ IMKgLyoqCj4gPiA+IMKgICogeGVfZ3VjX3RsYl9pbnZhbF9pbml0X2Vhcmx5KCkgLSBJbml0IEd1 QyBUTEIgaW52YWxpZGF0aW9uCj4gPiA+IGVhcmx5Cj4gPiA+IMKgICogQGd1YzogR3VDIG9iamVj dAo+ID4gPiBAQCAtMjIzLDggKzMzNSwxNCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IHhlX3RsYl9p bnZhbF9vcHMKPiA+ID4gZ3VjX3RsYl9pbnZhbF9vcHMgPSB7Cj4gPiA+IMKgdm9pZCB4ZV9ndWNf dGxiX2ludmFsX2luaXRfZWFybHkoc3RydWN0IHhlX2d1YyAqZ3VjLAo+ID4gPiDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHN0 cnVjdCB4ZV90bGJfaW52YWwgKnRsYl9pbnZhbCkKPiA+ID4gwqB7Cj4gPiA+ICvCoMKgwqDCoMKg wqDCoHN0cnVjdCB4ZV9kZXZpY2UgKnhlID0gZ3VjX3RvX3hlKGd1Yyk7Cj4gPiA+ICsKPiA+ID4g wqDCoMKgwqDCoMKgwqDCoHRsYl9pbnZhbC0+cHJpdmF0ZSA9IGd1YzsKPiA+ID4gLcKgwqDCoMKg wqDCoMKgdGxiX2ludmFsLT5vcHMgPSAmZ3VjX3RsYl9pbnZhbF9vcHM7Cj4gPiA+ICsKPiA+ID4g K8KgwqDCoMKgwqDCoMKgaWYgKHhlLT5pbmZvLmhhc19jdHhfdGxiX2ludmFsKQo+ID4gPiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgdGxiX2ludmFsLT5vcHMgPSAmZ3VjX3RsYl9pbnZh bF9jdHhfb3BzOwo+ID4gPiArwqDCoMKgwqDCoMKgwqBlbHNlCj4gPiA+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqB0bGJfaW52YWwtPm9wcyA9ICZndWNfdGxiX2ludmFsX2FzaWRfb3Bz Owo+ID4gPiDCoH0KPiA+ID4gwqAKPiA+ID4gwqAvKioKPiA+ID4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS94ZS94ZV9wY2kuYwo+ID4gPiBiL2RyaXZlcnMvZ3B1L2RybS94ZS94ZV9wY2ku Ywo+ID4gPiBpbmRleCAxOTU5ZGUzZjdhMjcuLjlhMTEwNjZjN2Q0YSAxMDA2NDQKPiA+ID4gLS0t IGEvZHJpdmVycy9ncHUvZHJtL3hlL3hlX3BjaS5jCj4gPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2Ry bS94ZS94ZV9wY2kuYwo+ID4gPiBAQCAtODYzLDYgKzg2Myw3IEBAIHN0YXRpYyBpbnQgeGVfaW5m b19pbml0KHN0cnVjdCB4ZV9kZXZpY2UgKnhlLAo+ID4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoHhlLT5pbmZvLmhhc19kZXZpY2VfYXRvbWljc19vbl9zbWVtID0gMTsKPiA+ID4g wqAKPiA+ID4gwqDCoMKgwqDCoMKgwqDCoHhlLT5pbmZvLmhhc19yYW5nZV90bGJfaW52YWwgPSBn cmFwaGljc19kZXNjLQo+ID4gPiA+IGhhc19yYW5nZV90bGJfaW52YWw7Cj4gPiA+ICvCoMKgwqDC oMKgwqDCoHhlLT5pbmZvLmhhc19jdHhfdGxiX2ludmFsID0gZ3JhcGhpY3NfZGVzYy0KPiA+ID4g PiBoYXNfY3R4X3RsYl9pbnZhbDsKPiA+ID4gwqDCoMKgwqDCoMKgwqDCoHhlLT5pbmZvLmhhc191 c20gPSBncmFwaGljc19kZXNjLT5oYXNfdXNtOwo+ID4gPiDCoMKgwqDCoMKgwqDCoMKgeGUtPmlu Zm8uaGFzXzY0Yml0X3RpbWVzdGFtcCA9IGdyYXBoaWNzX2Rlc2MtCj4gPiA+ID4gaGFzXzY0Yml0 X3RpbWVzdGFtcDsKPiA+ID4gwqAKPiA+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS94 ZS94ZV9wY2lfdHlwZXMuaAo+ID4gPiBiL2RyaXZlcnMvZ3B1L2RybS94ZS94ZV9wY2lfdHlwZXMu aAo+ID4gPiBpbmRleCA5ODkyYzA2M2E5YzUuLmMwODg1N2MwNmM3ZSAxMDA2NDQKPiA+ID4gLS0t IGEvZHJpdmVycy9ncHUvZHJtL3hlL3hlX3BjaV90eXBlcy5oCj4gPiA+ICsrKyBiL2RyaXZlcnMv Z3B1L2RybS94ZS94ZV9wY2lfdHlwZXMuaAo+ID4gPiBAQCAtNjMsNiArNjMsNyBAQCBzdHJ1Y3Qg eGVfZ3JhcGhpY3NfZGVzYyB7Cj4gPiA+IMKgwqDCoMKgwqDCoMKgwqB1OCBoYXNfYXRvbWljX2Vu YWJsZV9wdGVfYml0OjE7Cj4gPiA+IMKgwqDCoMKgwqDCoMKgwqB1OCBoYXNfaW5kaXJlY3Rfcmlu Z19zdGF0ZToxOwo+ID4gPiDCoMKgwqDCoMKgwqDCoMKgdTggaGFzX3JhbmdlX3RsYl9pbnZhbDox Owo+ID4gPiArwqDCoMKgwqDCoMKgwqB1OCBoYXNfY3R4X3RsYl9pbnZhbDoxOwo+ID4gPiDCoMKg wqDCoMKgwqDCoMKgdTggaGFzX3VzbToxOwo+ID4gPiDCoMKgwqDCoMKgwqDCoMKgdTggaGFzXzY0 Yml0X3RpbWVzdGFtcDoxOwo+ID4gPiDCoH07Cj4gPiAKCg==