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 D79A6D2C542 for ; Thu, 24 Oct 2024 10:46:48 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 68D7C10E22B; Thu, 24 Oct 2024 10:46:48 +0000 (UTC) Authentication-Results: gabe.freedesktop.org; dkim=pass (2048-bit key; unprotected) header.d=intel.com header.i=@intel.com header.b="hgzk2x+u"; dkim-atps=neutral Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.8]) by gabe.freedesktop.org (Postfix) with ESMTPS id F365210E22B for ; Thu, 24 Oct 2024 10:46:46 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1729766807; x=1761302807; h=from:to:subject:date:message-id:references:in-reply-to: content-id:content-transfer-encoding:mime-version; bh=TD336uhdY4I80NyAstjcwQkYadzakzvrBHFAY6Y5fDY=; b=hgzk2x+uqDJEM8IWp3ZxVt/XzeJ4lTqIRAJ05GF2ZS03V5/c72rB1Tmo KToIr4NpE9R46dGkLJzCblXWVwlSmlRXhmZYyi0DdEM7W5Ajnbg/fMTpg Wmou3IJT5yKonqTg6O+OU9668M2wYZqbNbh+m1+0gzHjVsV42FcCRW9z5 jZJoiz+TzEp1z6VbHe+05fQs7nGVk2E5gzNmjNr+xSdD+IMZkkCQTjeHT Fig031h1wCVX/uK28GSfyAoxhWyOcxHkLqpWzs+7Xt77AXgAifY7J7P1I B+WrWh76uTumG7qgDOlCcG6t7JigzS3POjBQUQAM7zfW8ee1OdPScAoJL Q==; X-CSE-ConnectionGUID: +sdf6PKrTUi9GQiSvn+4jQ== X-CSE-MsgGUID: HFD8HpKjT5KGUARWKOJjtA== X-IronPort-AV: E=McAfee;i="6700,10204,11234"; a="46880006" X-IronPort-AV: E=Sophos;i="6.11,229,1725346800"; d="scan'208";a="46880006" Received: from fmviesa002.fm.intel.com ([10.60.135.142]) by fmvoesa102.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 24 Oct 2024 03:46:46 -0700 X-CSE-ConnectionGUID: gyMDlkYVTxmnyBoXejJbkw== X-CSE-MsgGUID: g5+V6E2LQiWjml102Sr9kA== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.11,229,1725346800"; d="scan'208";a="103871397" Received: from orsmsx602.amr.corp.intel.com ([10.22.229.15]) by fmviesa002.fm.intel.com with ESMTP/TLS/AES256-GCM-SHA384; 24 Oct 2024 03:46:46 -0700 Received: from orsmsx601.amr.corp.intel.com (10.22.229.14) by ORSMSX602.amr.corp.intel.com (10.22.229.15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.39; Thu, 24 Oct 2024 03:46:45 -0700 Received: from ORSEDG602.ED.cps.intel.com (10.7.248.7) by orsmsx601.amr.corp.intel.com (10.22.229.14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.39 via Frontend Transport; Thu, 24 Oct 2024 03:46:45 -0700 Received: from NAM12-DM6-obe.outbound.protection.outlook.com (104.47.59.168) by edgegateway.intel.com (134.134.137.103) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.39; Thu, 24 Oct 2024 03:46:45 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=aJR3EX9RYcVgTmCO8yVK+LKRUdvNXdf/V5Pgj7/GG8vqUcIxBXDRnAU3oF80s/bGYwxwtjfACRGWGpFxPGt4GaT+vxzmLlBgn20k27zr8PDhNO0mJzqo5+UI/gIYJB+SZLVvg49JrRkUKuz2tbnxDqpg8/viElAScggSGdwWhytv4nbi2fxOI7sNLC18SKL0RBQj1FHZHMYiXq0TkXs0MlOT6MAgOL0G7cxZQzt12+tw+m3/lxdyY4qJBSWK8dLmJgksNoVSGweO6JQLL69zFPJOupfAF97IHVLjDSMQDPl4NHtxJ1JTxY3YM/DLQZY9qWLo664cYfhIgKR2T4AOgQ== 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=TD336uhdY4I80NyAstjcwQkYadzakzvrBHFAY6Y5fDY=; b=mgyp5vZk9V09nxD9oy8XkkS5M8ZRh4YNHBmDIMiorn/JunX1cOBjMCZIelJPNoNQV6iLVHUmw0Hqb5nswoQ3Je5Q/KjJz2gCLBqLnCniAopFgjbYdF5lOaZWT0jdpG+Ucj9MZr9xTGXAb08/OenVYtbvhn21iL6fPZgNv4NtH+jOqV+zw+pJaaulvjC9QM5/rpmpGj2W9NrMbqdAdl4QrYxTiu5XYvCbkAOfKFJXgCjU6A3kw4ChtVf+GWeoT40Kc76TclRSXnP3gpUkapPH+oUEQtNVUwkRI7/I1EvQPb/w1kLdPCyr+Y12xJwEyqMEiR4B2x9TsfYBSsAcQFHkNw== 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 DM4PR11MB6019.namprd11.prod.outlook.com (2603:10b6:8:60::5) by IA1PR11MB6193.namprd11.prod.outlook.com (2603:10b6:208:3eb::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8093.16; Thu, 24 Oct 2024 10:46:43 +0000 Received: from DM4PR11MB6019.namprd11.prod.outlook.com ([fe80::fc1:e80f:134c:5ed2]) by DM4PR11MB6019.namprd11.prod.outlook.com ([fe80::fc1:e80f:134c:5ed2%4]) with mapi id 15.20.8093.014; Thu, 24 Oct 2024 10:46:42 +0000 From: "Hogander, Jouni" To: "ville.syrjala@linux.intel.com" , "intel-gfx@lists.freedesktop.org" Subject: Re: [PATCH 4/9] drm/i915: Use plane->can_async_flip() for alignment exceptions Thread-Topic: [PATCH 4/9] drm/i915: Use plane->can_async_flip() for alignment exceptions Thread-Index: AQHbGng5XCGQWNJ9D0C6y6fElrYNlbKVzxUA Date: Thu, 24 Oct 2024 10:46:42 +0000 Message-ID: References: <20241009182207.22900-1-ville.syrjala@linux.intel.com> <20241009182207.22900-5-ville.syrjala@linux.intel.com> In-Reply-To: <20241009182207.22900-5-ville.syrjala@linux.intel.com> 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=intel.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: DM4PR11MB6019:EE_|IA1PR11MB6193:EE_ x-ms-office365-filtering-correlation-id: e2b93d1a-81f9-445f-7b91-08dcf41925fa x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230040|366016|1800799024|376014|38070700018; x-microsoft-antispam-message-info: =?utf-8?B?WGJZaVpTcVpyQXl2bExVQmlnbXg2SjZpc0RNSkdiWExKcXdkSjlJaGVFMWdm?= =?utf-8?B?UlBsQldNN0VIVzAvaTZpWHJlNkZOL21iVVl4UUs0Y1FtZVJmLzNEYzVFMXVl?= =?utf-8?B?T2hrZU9WVktLb2NxakdBSTBDYU1MTWpUUWwrWTdUZFVKdkE5a0xOSkRWV2J2?= =?utf-8?B?bDFPU29FZkNxbGlYS1kxc3BtbEM1ekxLSDUxRGxVV3FDS0Y3ZjdnZWNVTzhp?= =?utf-8?B?M2tFcVZBVHBsTHpTendYZWJWOEl0VDgvSTdXVS9Xei9IWk4zdTR3bVdDY3FF?= =?utf-8?B?ZzdFaCttTkxocWFDYmR0STZYWWN6dXg2UFBUOE5DNlBmTjF4SzNuVUpxT3lD?= =?utf-8?B?WmpqNnZZd0ViM1BwaTNTUFc3R0JEbCtLKzhKbWdPSU16clEwWDZDS0o0dE9Q?= =?utf-8?B?c3BlbnVyRUcxaXVrUUVYcWdWc0dJbThsWG1EVVo5SHUxVDQyRkcxd3d0V2VJ?= =?utf-8?B?VHJzQnByS1BQeUZLaE1lS1lHaFQrOXA1MEZMMmhDdVlKTVQwYUcxcjhUVmxv?= =?utf-8?B?TG5pZlVrZ0FoWU9LdWYrWmRRTHpEUHp0Q0xtOXRaRGVpWU5OSG5lbTQ3YTVX?= =?utf-8?B?bXN5WDdjYlpLT2tJQjhPOXl5eVpGL1NXVkFiSk5QcWR1Zm9yL0dZaUxlb0VJ?= =?utf-8?B?ZnhNWVdXMWduQm9scm1XbU5DdUpNZ2RZMmp3NHp4VE5FU21aZ2FqbzJjQWYy?= =?utf-8?B?MWRMZ0NiT0RJSTF4dzJ2V2FIVTAvQVZ6dCtQYVZIdkcrNTZQZVFUSnRxTUhl?= =?utf-8?B?eGxmSDNxcUgyNHV6bnJzOTIyK2hXVGdVbUh1S2JUUUlESXM5V1VQTFdNU3pr?= =?utf-8?B?TWxPRXJqL2hWdGJURVpGazFkNFhkanV0c3lCSGFuSCt2VkZuem9LZ21IZlJ1?= =?utf-8?B?bDlvbW9Ma21qUkNFdnNzZnkxd2ROTHh1eHpiVTMxcm5CaFBtTmtyQ3BiQ3l4?= =?utf-8?B?eDRTTE92MlAwQm1TOUdyRWJMWFRCVmpCbjFpOGx2RGFOTVgrR1orUlZVaTdT?= =?utf-8?B?TS9TUEEwWmhacW9MUWpheWR6WTlPakN6a0JldTUxVUlMWS9SMTQzbk9YNW8y?= =?utf-8?B?bkRUQ0JTUzJzajRnQmE5V2VhejFKVC92bVVHOGZ2U2RaaG9nb0ttdjh2U2tZ?= =?utf-8?B?NHNBaGg1Tlc0Q2tGZFFTZVJoYUVLUENkS2hlY21YZU0vTzlPcGV6bUNTWmlo?= =?utf-8?B?RG1UWnRpblE4WUpEb1V6ZXBsM1JmdDFsY1hNbjEzTjZOM0NLeWloaUVyWFE4?= =?utf-8?B?YXVyNnVHaC81OGtDMHlXUDI5REhDQ3pkc2M4UTh4cEZOREVneGdHNzk4YSs1?= =?utf-8?B?SVY1NTVUbkVPWEJVbzQ4ZU1nZTl2WkFCOVR3WmpLcnVqVXhmYlJmbER1WDA0?= =?utf-8?B?MWhpYUlsclloZ1BEejhZVHAwZjVGZk5rWmVZSHcwTTEzamNDTVBBWVJpakRw?= =?utf-8?B?ckVnM0FHdzBHWjc0VFo3aHZKSVRIaTJzbnBwalZGdnJJaWNDa0YwZjV2alo4?= =?utf-8?B?Tm9jbEpPdFhxZ2ZrYjZOZEFDdGJDRDREWWJOZWt4ZXduazVNRDI5V29vT2FJ?= =?utf-8?B?MVZkNExObjFyejI2bUxiekEraGpYRXVEd0VnVWIybG1tSmY1RlNNd05aNk8r?= =?utf-8?B?Q3RocXE4S0JIQUlTbHN4Q1RLN1pvZUlucDlKc204NE9JOUhDVFRnYTFSM1Mr?= =?utf-8?B?aXgwLzVRdUJNdmsxRFFKdVNTRTZLZmFHcGhlL1NyOHlJS01HeGRZWFgzQUlL?= =?utf-8?B?WnNCOFpmL2I0d2t5OWRRQ3QxSXg5Y1Q5VjFhNHpZNHRZNWdFRlBRd3lUaEJo?= =?utf-8?Q?ljOYdGUXTSBT6FFVZM/nxkntS9/CuY6KK+nLk=3D?= x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DM4PR11MB6019.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(366016)(1800799024)(376014)(38070700018); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?MHRDMzl0RU5uaDdpbi9VeXlpblFJSlE1K1BSdnIySjRWdDFVZmtRS3NqblhM?= =?utf-8?B?b09lV0ljeWs1dzM2WkJGMWpUUkFTb29RZmd1NVJNYmJwMXU3bTNkeENRWE5G?= =?utf-8?B?MzNmbStRZmdBdHVaYmgvdCtJYzlzQzFzVUJjcDN6QUlRSEgvLzRQUTgyZGFO?= =?utf-8?B?bzVkOUxPanFzeFR3K3VSRUhBbS85eUxlaDE4Z25GWVhPbkJoekYxNXlxZUUv?= =?utf-8?B?d1JobW9ZUDNSaDlCa0hpUHprUDExSnFqMFVlTlFuZXdTQWhoYm1JTFhsYjlq?= =?utf-8?B?ZVNabTNIUG1GaWozWFMwWXdqS1Y2bVY1TWZGencwazhpUERQZUZvYW5Md2xG?= =?utf-8?B?aERlVWNoTE9SdlpvSHVyN1FWdERsdkZDR2twdEJjdTFjTnJ1UWdka3ovVzh0?= =?utf-8?B?VXh2bEtydkZJaWJaQzhtMjNUUFd2UmVvQk55dHZRV0ZyOEhNZUl4MVNsTGZE?= =?utf-8?B?Yk1xS2xHNWVhK0JDbjJlWHJJZzA1WTlWc0VBTlcySktVd0Y4TmhVT3hleWNR?= =?utf-8?B?cW5xVHNFekFXWkZaTUZZai93MStDYkVzOGcvWnJpWGhmTCtYemYycUJxVVND?= =?utf-8?B?YklDRDNwY3pkWmZuU1daMkIxeFNOMXk3LzJZS09rb25tbUMraHl4aTlYUlRx?= =?utf-8?B?T3grYTdrVzZvWkdIejZSK2pFT21RRWZtbTBlRUpYT2NETW1BN1pXOTFjQkxG?= =?utf-8?B?NTlMUzIrRUEyeWd6VkR2ZGxaSG5tTnpNVm1CTnNsS0tVMEd3U0ZRWWRuTkdR?= =?utf-8?B?dEtPc0xCcHA2amFxa0pCU2NrNkdDVDFXc3lYbmw3eW1YTlNnQ3pDc3NhSUxB?= =?utf-8?B?VnZ4NFBlRlhXM1FwZEtEOWZCdk85R1M2UlZtTS8zWlZWVTBLcXBrUjc2OEY0?= =?utf-8?B?emRkNk1VTmJCN0xrVjYyaG93cnJjeHE1K0l6Y2J6WXlkZEFzMTI5OWpIanp2?= =?utf-8?B?b01uUjI1YUJ6VUd5a3RwSTB6SDVISTM3VzdBV05lZWpGcFVrNEt3RDZrc1Rj?= =?utf-8?B?bjJ5MnY0dzNoVXN5T2p5UWE1azJZRTVvbTRCTzN5dnBDQ1RnQVNLamxNQmN6?= =?utf-8?B?QklFYS9tZ0oxaElpaXZIRmlKTmp0SHYwZFNRTm1ZUzhsTHZqWGo4MVRKTXVu?= =?utf-8?B?eVhmcUxzbEJhbWU5Vjg1ZmM3WG91ZG9nVGZKSzRnV0t4MVN4RzQxWkZra0lK?= =?utf-8?B?YU9HVTVMWHkzc2tGZi85UWQ5R084Z3kzaUlKYSs2WWtJaWgwUVVLbml3aDBF?= =?utf-8?B?bjlKbFh4bTIwdnNTc0FWY2FJNW9uSHMwM3hucjlZUTcyZy9ncFlFMTAvQ05K?= =?utf-8?B?L0I3Z3JtSnJBUWNleGkzTE1ObGttRWduaFU5KzA3NnRCL0FVZkZtQW50Ujd0?= =?utf-8?B?SjlQZGRjaWRHaFdFZjVZaldQdENQeXlMdk4wKzVFSzU0Y1lXRWZ1MDBnQi82?= =?utf-8?B?SVU0Q1NRZGtTdmZwRFNyaXY3eTJKYjdsL1pGa1dBbmt0OVVSZlJaN2N6VjNH?= =?utf-8?B?MmdsQ0dtdXpjVE0xbVIvYUtEWnRnbW81OXlEYjBoNVNpeU9mMjBHMDZXMlZC?= =?utf-8?B?SmIwVUNXVjNBWVhwWERVNDZkMkZsRFlqUWhVb1l3NUtlbTNCWVN2TEl4cDJt?= =?utf-8?B?b1NZWjZBYS9xMTJRVFcxejNrY3N1MGpOWUJPSkhQUnprTzJ4RUczSG1ITHZW?= =?utf-8?B?SGNVdXJ3S0hDRk9MRTRyOXlMZzRDeDFyOXRlSkhMczVXclBWTmhCeUg5VWor?= =?utf-8?B?dlhiQnFLT1QwYklXSjR3d2Z1SjJHVjhhQmEvam9DcnFzaWVlRTZLM0lSZVVI?= =?utf-8?B?RUc2V09pNHo1bGpxRVJrYno5SldsYlFYZ3NZa21BcUZ1OS84aUZRcUk5VkhP?= =?utf-8?B?TVNwRFdsNitqSGdLaWxLemRweGw2STJFVDlyS2NJM1ZoeW0vUDVUT21NTnpX?= =?utf-8?B?WDZJbkpIM0V5TURMb2o4Sm9FNHR2cHRVKzZGQ2dMTGZZWVBtbHNUN2dxcU9y?= =?utf-8?B?dDdGRFJBeGU5NktwenJsMHFGNjNReHc5NkVlcVo5Sm9uc2hrdTZqQktXbmpI?= =?utf-8?B?ckZnbWlaMTl4UlMvQzljc2lVMTA1empUdldpWVp1N3JzM0lraTJUQ1A2MGgw?= =?utf-8?B?ODV0bzAxZDVheG1ZYWRvUjVFdForVi83UnU1b0RmbGF1allRNEhoZWwxNDJE?= =?utf-8?B?eXc9PQ==?= Content-Type: text/plain; charset="utf-8" Content-ID: <062865210E9D5A4E892397FF9E54CB6D@namprd11.prod.outlook.com> Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: DM4PR11MB6019.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: e2b93d1a-81f9-445f-7b91-08dcf41925fa X-MS-Exchange-CrossTenant-originalarrivaltime: 24 Oct 2024 10:46:42.7859 (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: 7ARGIQDstUcUwxiaQxHkli6z3dLX9zJSZmEskORMJGi6wF8RfblYnt9a2fqfS8b60F+EmmQ0Ug6DTNsW4M410WYpLNptaR5w3Gj638k0Jo0= X-MS-Exchange-Transport-CrossTenantHeadersStamped: IA1PR11MB6193 X-OriginatorOrg: intel.com X-BeenThere: intel-gfx@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Intel graphics driver community testing & development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" T24gV2VkLCAyMDI0LTEwLTA5IGF0IDIxOjIyICswMzAwLCBWaWxsZSBTeXJqYWxhIHdyb3RlOgo+ IEZyb206IFZpbGxlIFN5cmrDpGzDpCA8dmlsbGUuc3lyamFsYUBsaW51eC5pbnRlbC5jb20+Cj4g Cj4gQXN5bmMgZmxpcHMgb2Z0ZW4gcmVxdWlyZSBiaWdnZXIgYWxpZ25tZW50IHRoYXQgc3luYyBm bGlwcy4KPiBDdXJyZW50bHkgd2UgaGF2ZSBIQVNfQVNZTkNfRkxJUFMoKSBjaGVja3Mgc3RyZXdu IGFib3V0IHRvCj4gaW5pZGNhdGUgdGhhdCBhc3luYyBmbGlwcyBhcmUgZ2VuZXJhbGx5IHN1cHBv cnRlZCBhbmQgdGh1cwo+IHdlIHdhbnQgbW9yZSBhbGlnbm1lbnQuIFN3aXRjaCB0aGF0IG92ZXIg dG8gdXNpbmcKPiBpbnRlbF9wbGFuZV9jYW5fYXN5bmNfZmxpcCgpIHNvIHRoYXQgd2UgY2FuIGhh bmRsZSB0aGVzZQo+IGluIGEgc2xpZ2h0bHkgbGVzcyBtZXNzeSB3YXkuIEN1cnJlbnRseSB3ZSBk b24ndCBoYXZlIGNhc2VzCj4gd2hlcmUgYXN5bmMgZmxpcHMgd291bGQgcmVxdWlyZSBkaWZmZXJl bnQgYWxpZ25tZW50IGZvcgo+IGRpZmZlcmVudCBtb2RpZmllcnMgb24gdGhlIHNhbWUgcGxhbmUu Cj4gCj4gV2UnbGwgYWxzbyBtb3ZlIHRoZSBIQVNfQVNZTkNfRkxJUFMoKSBjaGVjayB0byB0aGUg cGxhbmUgaW5pdAo+IGNvZGUgc28gdGhhdCB3ZSBjYW4gc3RpbGwgdXNlIHRoYXQgYXMgYSBxdWlj ayB3YXkgdG8gZGlzYWJsZQo+IHRoZSBhc3luYyBmbGlwcyB3b3JrYXJvdW5kcyBmb3IgdGVzdGlu ZyBwdXJwb3Nlcy4KPiAKPiBTaWduZWQtb2ZmLWJ5OiBWaWxsZSBTeXJqw6Rsw6QgPHZpbGxlLnN5 cmphbGFAbGludXguaW50ZWwuY29tPgo+IC0tLQo+IMKgZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlz cGxheS9pOXh4X3BsYW5lLmPCoMKgwqDCoCB8IDU1ICsrKysrKysrKy0tLS0tLS0tCj4gLS0KPiDC oC4uLi9kcm0vaTkxNS9kaXNwbGF5L3NrbF91bml2ZXJzYWxfcGxhbmUuY8KgwqDCoCB8IDIxICsr KystLS0KPiDCoDIgZmlsZXMgY2hhbmdlZCwgMzcgaW5zZXJ0aW9ucygrKSwgMzkgZGVsZXRpb25z KC0pCj4gCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaTl4eF9w bGFuZS5jCj4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2k5eHhfcGxhbmUuYwo+IGlu ZGV4IDc0NTVkYTg2M2EyNi4uOGQzMzQ2MTk5NjQ1IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2Rpc3BsYXkvaTl4eF9wbGFuZS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvZGlzcGxheS9pOXh4X3BsYW5lLmMKPiBAQCAtNzc5LDEyICs3NzksMTEgQEAgc3RhdGljIHVu c2lnbmVkIGludAo+IHZsdl9wcmltYXJ5X21pbl9hbGlnbm1lbnQoc3RydWN0IGludGVsX3BsYW5l ICpwbGFuZSwKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgY29uc3Qgc3RydWN0 Cj4gZHJtX2ZyYW1lYnVmZmVyICpmYiwKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgaW50IGNvbG9yX3BsYW5lKQo+IMKgewo+IC3CoMKgwqDCoMKgwqDCoHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICppOTE1ID0gdG9faTkxNShwbGFuZS0+YmFzZS5kZXYpOwo+ICvCoMKgwqDCoMKg wqDCoGlmIChpbnRlbF9wbGFuZV9jYW5fYXN5bmNfZmxpcChwbGFuZSwgZmItPm1vZGlmaWVyKSkK PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIDI1NiAqIDEwMjQ7Cj4gwqAK PiDCoMKgwqDCoMKgwqDCoMKgc3dpdGNoIChmYi0+bW9kaWZpZXIpIHsKPiDCoMKgwqDCoMKgwqDC oMKgY2FzZSBJOTE1X0ZPUk1BVF9NT0RfWF9USUxFRDoKPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgaWYgKEhBU19BU1lOQ19GTElQUyhpOTE1KSkKPiAtwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJldHVybiAyNTYgKiAxMDI0Owo+IMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIDQgKiAxMDI0Owo+IMKgwqDCoMKgwqDCoMKg wqBjYXNlIERSTV9GT1JNQVRfTU9EX0xJTkVBUjoKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoHJldHVybiAxMjggKiAxMDI0Owo+IEBAIC03OTgsMTMgKzc5NywxMSBAQCBzdGF0aWMg dW5zaWduZWQgaW50Cj4gZzR4X3ByaW1hcnlfbWluX2FsaWdubWVudChzdHJ1Y3QgaW50ZWxfcGxh bmUgKnBsYW5lLAo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBjb25zdCBzdHJ1 Y3QKPiBkcm1fZnJhbWVidWZmZXIgKmZiLAo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCBpbnQgY29sb3JfcGxhbmUpCj4gwqB7Cj4gLcKgwqDCoMKgwqDCoMKgc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmk5MTUgPSB0b19pOTE1KHBsYW5lLT5iYXNlLmRldik7Cj4gK8KgwqDCoMKg wqDCoMKgaWYgKGludGVsX3BsYW5lX2Nhbl9hc3luY19mbGlwKHBsYW5lLCBmYi0+bW9kaWZpZXIp KQo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gMjU2ICogMTAyNDsKPiDC oAo+IMKgwqDCoMKgwqDCoMKgwqBzd2l0Y2ggKGZiLT5tb2RpZmllcikgewo+IMKgwqDCoMKgwqDC oMKgwqBjYXNlIEk5MTVfRk9STUFUX01PRF9YX1RJTEVEOgo+IC3CoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqBpZiAoSEFTX0FTWU5DX0ZMSVBTKGk5MTUpKQo+IC3CoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIDI1NiAqIDEwMjQ7Cj4gLcKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJldHVybiA0ICogMTAyNDsKPiDCoMKgwqDCoMKgwqDC oMKgY2FzZSBEUk1fRk9STUFUX01PRF9MSU5FQVI6Cj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqByZXR1cm4gNCAqIDEwMjQ7Cj4gwqDCoMKgwqDCoMKgwqDCoGRlZmF1bHQ6Cj4gQEAg LTk1OSwyNyArOTU2LDI5IEBAIGludGVsX3ByaW1hcnlfcGxhbmVfY3JlYXRlKHN0cnVjdAo+IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCBlbnVtIHBpcGUgcGlwZSkKPiDCoMKgwqDCoMKgwqDC oMKgcGxhbmUtPmdldF9od19zdGF0ZSA9IGk5eHhfcGxhbmVfZ2V0X2h3X3N0YXRlOwo+IMKgwqDC oMKgwqDCoMKgwqBwbGFuZS0+Y2hlY2tfcGxhbmUgPSBpOXh4X3BsYW5lX2NoZWNrOwo+IMKgCj4g LcKgwqDCoMKgwqDCoMKgaWYgKElTX1ZBTExFWVZJRVcoZGV2X3ByaXYpIHx8IElTX0NIRVJSWVZJ RVcoZGV2X3ByaXYpKSB7Cj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHBsYW5lLT5h c3luY19mbGlwID0gdmx2X3ByaW1hcnlfYXN5bmNfZmxpcDsKPiAtwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgcGxhbmUtPmVuYWJsZV9mbGlwX2RvbmUgPQo+IHZsdl9wcmltYXJ5X2VuYWJs ZV9mbGlwX2RvbmU7Cj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHBsYW5lLT5kaXNh YmxlX2ZsaXBfZG9uZSA9Cj4gdmx2X3ByaW1hcnlfZGlzYWJsZV9mbGlwX2RvbmU7Cj4gLcKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHBsYW5lLT5jYW5fYXN5bmNfZmxpcCA9IGk5eHhfcGxh bmVfY2FuX2FzeW5jX2ZsaXA7Cj4gLcKgwqDCoMKgwqDCoMKgfSBlbHNlIGlmIChJU19CUk9BRFdF TEwoZGV2X3ByaXYpKSB7Cj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHBsYW5lLT5u ZWVkX2FzeW5jX2ZsaXBfdG9nZ2xlX3dhID0gdHJ1ZTsKPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgcGxhbmUtPmFzeW5jX2ZsaXAgPSBnNHhfcHJpbWFyeV9hc3luY19mbGlwOwo+IC3C oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBwbGFuZS0+ZW5hYmxlX2ZsaXBfZG9uZSA9Cj4g YmR3X3ByaW1hcnlfZW5hYmxlX2ZsaXBfZG9uZTsKPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgcGxhbmUtPmRpc2FibGVfZmxpcF9kb25lID0KPiBiZHdfcHJpbWFyeV9kaXNhYmxlX2Zs aXBfZG9uZTsKPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcGxhbmUtPmNhbl9hc3lu Y19mbGlwID0gaTl4eF9wbGFuZV9jYW5fYXN5bmNfZmxpcDsKPiAtwqDCoMKgwqDCoMKgwqB9IGVs c2UgaWYgKERJU1BMQVlfVkVSKGRldl9wcml2KSA+PSA3KSB7Cj4gLcKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoHBsYW5lLT5hc3luY19mbGlwID0gZzR4X3ByaW1hcnlfYXN5bmNfZmxpcDsK PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcGxhbmUtPmVuYWJsZV9mbGlwX2RvbmUg PQo+IGl2Yl9wcmltYXJ5X2VuYWJsZV9mbGlwX2RvbmU7Cj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoHBsYW5lLT5kaXNhYmxlX2ZsaXBfZG9uZSA9Cj4gaXZiX3ByaW1hcnlfZGlzYWJs ZV9mbGlwX2RvbmU7Cj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHBsYW5lLT5jYW5f YXN5bmNfZmxpcCA9IGk5eHhfcGxhbmVfY2FuX2FzeW5jX2ZsaXA7Cj4gLcKgwqDCoMKgwqDCoMKg fSBlbHNlIGlmIChESVNQTEFZX1ZFUihkZXZfcHJpdikgPj0gNSkgewo+IC3CoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqBwbGFuZS0+YXN5bmNfZmxpcCA9IGc0eF9wcmltYXJ5X2FzeW5jX2Zs aXA7Cj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHBsYW5lLT5lbmFibGVfZmxpcF9k b25lID0KPiBpbGtfcHJpbWFyeV9lbmFibGVfZmxpcF9kb25lOwo+IC3CoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqBwbGFuZS0+ZGlzYWJsZV9mbGlwX2RvbmUgPQo+IGlsa19wcmltYXJ5X2Rp c2FibGVfZmxpcF9kb25lOwo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBwbGFuZS0+ Y2FuX2FzeW5jX2ZsaXAgPSBpOXh4X3BsYW5lX2Nhbl9hc3luY19mbGlwOwo+ICvCoMKgwqDCoMKg wqDCoGlmIChIQVNfQVNZTkNfRkxJUFMoZGV2X3ByaXYpKSB7CgpDaGVjayBmb3IgSEFTX0FTWU5D X0ZMSVBTIGNvdWxkIGJlIGRyb3BwZWQuIEkgYXNzdW1lIHlvdSB3ZXJlCmNvbnNpZGVyaW5nIGhh dmluZyBpdCB3b3VsZCBiZSBtb3JlIGNsZWFyPyBBbnl3YXlzOgoKUmV2aWV3ZWQtYnk6IEpvdW5p IEjDtmdhbmRlciA8am91bmkuaG9nYW5kZXJAaW50ZWwuY29tPgoKPiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgaWYgKElTX1ZBTExFWVZJRVcoZGV2X3ByaXYpIHx8Cj4gSVNfQ0hFUlJZ VklFVyhkZXZfcHJpdikpIHsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoHBsYW5lLT5hc3luY19mbGlwID0gdmx2X3ByaW1hcnlfYXN5bmNfZmxpcDsKPiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHBsYW5lLT5lbmFi bGVfZmxpcF9kb25lID0KPiB2bHZfcHJpbWFyeV9lbmFibGVfZmxpcF9kb25lOwo+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcGxhbmUtPmRpc2FibGVfZmxp cF9kb25lID0KPiB2bHZfcHJpbWFyeV9kaXNhYmxlX2ZsaXBfZG9uZTsKPiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHBsYW5lLT5jYW5fYXN5bmNfZmxpcCA9 Cj4gaTl4eF9wbGFuZV9jYW5fYXN5bmNfZmxpcDsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgfSBlbHNlIGlmIChJU19CUk9BRFdFTEwoZGV2X3ByaXYpKSB7Cj4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBwbGFuZS0+bmVlZF9hc3luY19mbGlw X3RvZ2dsZV93YSA9IHRydWU7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqBwbGFuZS0+YXN5bmNfZmxpcCA9IGc0eF9wcmltYXJ5X2FzeW5jX2ZsaXA7Cj4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBwbGFuZS0+ZW5h YmxlX2ZsaXBfZG9uZSA9Cj4gYmR3X3ByaW1hcnlfZW5hYmxlX2ZsaXBfZG9uZTsKPiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHBsYW5lLT5kaXNhYmxlX2Zs aXBfZG9uZSA9Cj4gYmR3X3ByaW1hcnlfZGlzYWJsZV9mbGlwX2RvbmU7Cj4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBwbGFuZS0+Y2FuX2FzeW5jX2ZsaXAg PQo+IGk5eHhfcGxhbmVfY2FuX2FzeW5jX2ZsaXA7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoH0gZWxzZSBpZiAoRElTUExBWV9WRVIoZGV2X3ByaXYpID49IDcpIHsKPiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHBsYW5lLT5hc3luY19mbGlw ID0gZzR4X3ByaW1hcnlfYXN5bmNfZmxpcDsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoHBsYW5lLT5lbmFibGVfZmxpcF9kb25lID0KPiBpdmJfcHJpbWFy eV9lbmFibGVfZmxpcF9kb25lOwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgcGxhbmUtPmRpc2FibGVfZmxpcF9kb25lID0KPiBpdmJfcHJpbWFyeV9kaXNh YmxlX2ZsaXBfZG9uZTsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoHBsYW5lLT5jYW5fYXN5bmNfZmxpcCA9Cj4gaTl4eF9wbGFuZV9jYW5fYXN5bmNfZmxp cDsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgfSBlbHNlIGlmIChESVNQTEFZX1ZF UihkZXZfcHJpdikgPj0gNSkgewo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgcGxhbmUtPmFzeW5jX2ZsaXAgPSBnNHhfcHJpbWFyeV9hc3luY19mbGlwOwo+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcGxhbmUtPmVu YWJsZV9mbGlwX2RvbmUgPQo+IGlsa19wcmltYXJ5X2VuYWJsZV9mbGlwX2RvbmU7Cj4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBwbGFuZS0+ZGlzYWJsZV9m bGlwX2RvbmUgPQo+IGlsa19wcmltYXJ5X2Rpc2FibGVfZmxpcF9kb25lOwo+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcGxhbmUtPmNhbl9hc3luY19mbGlw ID0KPiBpOXh4X3BsYW5lX2Nhbl9hc3luY19mbGlwOwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqB9Cj4gwqDCoMKgwqDCoMKgwqDCoH0KPiDCoAo+IMKgwqDCoMKgwqDCoMKgwqBtb2Rp ZmllcnMgPSBpbnRlbF9mYl9wbGFuZV9nZXRfbW9kaWZpZXJzKGRldl9wcml2LAo+IElOVEVMX1BM QU5FX0NBUF9USUxJTkdfWCk7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rp c3BsYXkvc2tsX3VuaXZlcnNhbF9wbGFuZS5jCj4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNw bGF5L3NrbF91bml2ZXJzYWxfcGxhbmUuYwo+IGluZGV4IGNhODJjYzU1ODAyZS4uZWE3MmM1NGU4 MzI5IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvc2tsX3VuaXZl cnNhbF9wbGFuZS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9za2xfdW5p dmVyc2FsX3BsYW5lLmMKPiBAQCAtNTg5LDI1ICs1ODksMjQgQEAgc3RhdGljIHUzMiB0Z2xfcGxh bmVfbWluX2FsaWdubWVudChzdHJ1Y3QKPiBpbnRlbF9wbGFuZSAqcGxhbmUsCj4gwqDCoMKgwqDC oMKgwqDCoGlmIChpbnRlbF9mYl9pc19jY3NfYXV4X3BsYW5lKGZiLCBjb2xvcl9wbGFuZSkpCj4g wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gbXVsdCAqIDQgKiAxMDI0Owo+ IMKgCj4gK8KgwqDCoMKgwqDCoMKgLyoKPiArwqDCoMKgwqDCoMKgwqAgKiBGSVhNRSBBREwgc2Vl cyBHR1RUL0RNQVIgZmF1bHRzIHdpdGggYXN5bmMKPiArwqDCoMKgwqDCoMKgwqAgKiBmbGlwcyB1 bmxlc3Mgd2UgYWxpZ24gdG8gMTZrIGF0IGxlYXN0Lgo+ICvCoMKgwqDCoMKgwqDCoCAqIEZpZ3Vy ZSBvdXQgd2hhdCdzIGdvaW5nIG9uIGhlcmUuLi4KPiArwqDCoMKgwqDCoMKgwqAgKi8KPiArwqDC oMKgwqDCoMKgwqBpZiAoSVNfQUxERVJMQUtFX1AoaTkxNSkgJiYKPiArwqDCoMKgwqDCoMKgwqDC oMKgwqAgaW50ZWxfcGxhbmVfY2FuX2FzeW5jX2ZsaXAocGxhbmUsIGZiLT5tb2RpZmllcikpCj4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJldHVybiBtdWx0ICogMTYgKiAxMDI0Owo+ ICsKPiDCoMKgwqDCoMKgwqDCoMKgc3dpdGNoIChmYi0+bW9kaWZpZXIpIHsKPiDCoMKgwqDCoMKg wqDCoMKgY2FzZSBEUk1fRk9STUFUX01PRF9MSU5FQVI6Cj4gwqDCoMKgwqDCoMKgwqDCoGNhc2Ug STkxNV9GT1JNQVRfTU9EX1hfVElMRUQ6Cj4gwqDCoMKgwqDCoMKgwqDCoGNhc2UgSTkxNV9GT1JN QVRfTU9EX1lfVElMRUQ6Cj4gwqDCoMKgwqDCoMKgwqDCoGNhc2UgSTkxNV9GT1JNQVRfTU9EXzRf VElMRUQ6Cj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoC8qCj4gLcKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCAqIEZJWE1FIEFETCBzZWVzIEdHVFQvRE1BUiBmYXVsdHMgd2l0 aCBhc3luYwo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKiBmbGlwcyB1bmxlc3Mg d2UgYWxpZ24gdG8gMTZrIGF0IGxlYXN0Lgo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgKiBGaWd1cmUgb3V0IHdoYXQncyBnb2luZyBvbiBoZXJlLi4uCj4gLcKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCAqLwo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAo SVNfQUxERVJMQUtFX1AoaTkxNSkgJiYgSEFTX0FTWU5DX0ZMSVBTKGk5MTUpKQo+IC3CoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIG11bHQgKiAxNiAq IDEwMjQ7Cj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gbXVsdCAqIDQg KiAxMDI0Owo+IMKgwqDCoMKgwqDCoMKgwqBjYXNlIEk5MTVfRk9STUFUX01PRF9ZX1RJTEVEX0dF TjEyX1JDX0NDUzoKPiDCoMKgwqDCoMKgwqDCoMKgY2FzZSBJOTE1X0ZPUk1BVF9NT0RfNF9USUxF RF9NVExfUkNfQ0NTOgo+IMKgwqDCoMKgwqDCoMKgwqBjYXNlIEk5MTVfRk9STUFUX01PRF80X1RJ TEVEX0RHMl9SQ19DQ1M6Cj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlmIChJU19B TERFUkxBS0VfUChpOTE1KSAmJiBIQVNfQVNZTkNfRkxJUFMoaTkxNSkpCj4gLcKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gbXVsdCAqIDE2ICogMTAy NDsKPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZmFsbHRocm91Z2g7Cj4gwqDCoMKg wqDCoMKgwqDCoGNhc2UgSTkxNV9GT1JNQVRfTU9EX1lfVElMRURfR0VOMTJfTUNfQ0NTOgo+IMKg wqDCoMKgwqDCoMKgwqBjYXNlIEk5MTVfRk9STUFUX01PRF80X1RJTEVEX01UTF9NQ19DQ1M6Cj4g wqDCoMKgwqDCoMKgwqDCoGNhc2UgSTkxNV9GT1JNQVRfTU9EXzRfVElMRURfREcyX01DX0NDUzoK PiBAQCAtMjY4OSw3ICsyNjg4LDcgQEAgc2tsX3VuaXZlcnNhbF9wbGFuZV9jcmVhdGUoc3RydWN0 Cj4gZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gwqDCoMKgwqDCoMKgwqDCoHBsYW5lLT5n ZXRfaHdfc3RhdGUgPSBza2xfcGxhbmVfZ2V0X2h3X3N0YXRlOwo+IMKgwqDCoMKgwqDCoMKgwqBw bGFuZS0+Y2hlY2tfcGxhbmUgPSBza2xfcGxhbmVfY2hlY2s7Cj4gwqAKPiAtwqDCoMKgwqDCoMKg wqBpZiAocGxhbmVfaWQgPT0gUExBTkVfMSkgewo+ICvCoMKgwqDCoMKgwqDCoGlmIChIQVNfQVNZ TkNfRkxJUFMoZGV2X3ByaXYpICYmIHBsYW5lX2lkID09IFBMQU5FXzEpIHsKPiDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoHBsYW5lLT5uZWVkX2FzeW5jX2ZsaXBfdG9nZ2xlX3dhID0K PiBJU19ESVNQTEFZX1ZFUihkZXZfcHJpdiwgOSwgMTApOwo+IMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgcGxhbmUtPmFzeW5jX2ZsaXAgPSBza2xfcGxhbmVfYXN5bmNfZmxpcDsKPiDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHBsYW5lLT5lbmFibGVfZmxpcF9kb25lID0g c2tsX3BsYW5lX2VuYWJsZV9mbGlwX2RvbmU7Cgo=