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 E205EC55822 for ; Tue, 4 Aug 2026 21:21:13 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 894A810E82D; Tue, 4 Aug 2026 21:21:13 +0000 (UTC) Authentication-Results: gabe.freedesktop.org; dkim=pass (2048-bit key; unprotected) header.d=intel.com header.i=@intel.com header.b="ia51A/w1"; dkim-atps=neutral Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.12]) by gabe.freedesktop.org (Postfix) with ESMTPS id 341E410EBEA for ; Tue, 4 Aug 2026 21:21:11 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1785878471; x=1817414471; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-id:content-transfer-encoding: mime-version; bh=J1UJuqNcBMs/90VRWxXc9U9G30r5AklbOpurrV7Jc1s=; b=ia51A/w1W73NiNLNI7EpY6BQuXbdpltRfz/xcn8FBTCKLbXEFT7jBWbt Hj2RtyZp7jXJBmpqoMpD+e1QX+BposOpzEdl3/cw+GRjLjIFuFu5PoXQJ CzeF+gcsA69N+vQK5PCiN2rGzOZ99esvk78AkWt20HcXrBSfcHNsLcmSK jhYwnKClsuI03oWLp99ZVdHed2r24FDnb6vw0pRRC0S5J8B5ITCqaOwkg /NsgNMdnUSss6QoqtEbLmHJjY1uQc/xZ4unmu0kCGnXbMlSDqUG/GAdQr mZdB77Q+8TiA41J1WJpdgkmoDloFC2jD5nb5RWv76xtDoIE1y8FuR9lsy Q==; X-CSE-ConnectionGUID: Z25nu7QSRlmYAobE4/F9PQ== X-CSE-MsgGUID: 3W8nwixyTQmm0AW9BfgXAg== X-IronPort-AV: E=McAfee;i="6800,10657,11865"; a="90254909" X-IronPort-AV: E=Sophos;i="6.25,205,1779174000"; d="scan'208";a="90254909" Received: from orviesa007.jf.intel.com ([10.64.159.147]) by fmvoesa106.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 04 Aug 2026 14:21:10 -0700 X-CSE-ConnectionGUID: e2akf4+ISTKm1SjF2tWYYA== X-CSE-MsgGUID: DSoO8/oaS6OBaG9XJ944gw== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.25,205,1779174000"; d="scan'208";a="261680531" Received: from fmsmsx901.amr.corp.intel.com ([10.18.126.90]) by orviesa007.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 04 Aug 2026 14:21:10 -0700 Received: from FMSMSX903.amr.corp.intel.com (10.18.126.92) 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.45; Tue, 4 Aug 2026 14:21:08 -0700 Received: from fmsedg901.ED.cps.intel.com (10.1.192.143) by FMSMSX903.amr.corp.intel.com (10.18.126.92) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.45 via Frontend Transport; Tue, 4 Aug 2026 14:21:08 -0700 Received: from DM5PR21CU001.outbound.protection.outlook.com (52.101.62.58) by edgegateway.intel.com (192.55.55.81) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.45; Tue, 4 Aug 2026 14:21:08 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=xvEIAzFIjcpHmWrm2cHpz2zY6veAMuR4N532Sod3y7g+C42Ukif9HwFVjygBcWw3y4TanSXChgfYde39HgDlv4l6rWg+W7I/cJnuECmfaTlPCDwkE8bXlocM+y4TIWFizZuYXgTqCxO2cb4AQVT46NWAjzFOt645MM3Tg4BuVCNUlFY7KwLv4pzPem2tDGzxgA7rrsOP2Gg53wgitTLVxfJ/xHQfmPP0ud5DV47LBuD7w5Q+6D4HxCLJ+1IAxjY6cWwFnPH12un88JKfeVGqk72s3UjRIh2w8TolZrDtJh4iS9COrrzuRzviA/Et0zr06CA1/mzsYp/L4KlykHWANQ== 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=J1UJuqNcBMs/90VRWxXc9U9G30r5AklbOpurrV7Jc1s=; b=ag2ChlOtzT0uBfYKU8wgKvrOFUyYAf4Jh1Q0NSkwbpiwNwNn/NwxONVI8Vy66YrUcBIrMrLxxeV7dUWKIXjOdCc2U5aFDuYuefv1JQt55LilXkFeSdgkeNIqzNDipVy7gTA9dZoq5EOSlOrp0hnkCDYgk7cAYkPJ3FONf9dsC8lq2SGH987gUZcRf/J1kRGw9WNU2+vHdWMRR9/Yk71tryAK7ptNtu5AemV5mkNpHWPxwdYtYwErennuJUDwHp6wBDJ+u5GEgTZ2sv/BQrxBT+p3ImAFgA/8E06FOh9e5MLxldTxiV+FVWI4FVzgEiIu5CyF7zHoKG0kPbXC+lJ0Nw== 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 CY5PR11MB6320.namprd11.prod.outlook.com (2603:10b6:930:3c::9) by LV1PR11MB8791.namprd11.prod.outlook.com (2603:10b6:408:2b2::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.270.15; Tue, 4 Aug 2026 21:21:05 +0000 Received: from CY5PR11MB6320.namprd11.prod.outlook.com ([fe80::9cd7:94d5:90f:4d76]) by CY5PR11MB6320.namprd11.prod.outlook.com ([fe80::9cd7:94d5:90f:4d76%3]) with mapi id 15.21.0270.017; Tue, 4 Aug 2026 21:21:05 +0000 From: "Summers, Stuart" To: "intel-xe@lists.freedesktop.org" , "Wajdeczko, Michal" CC: "Tauro, Riana" , "Vivi, Rodrigo" , "Koujalagi, Mallesh" , "Jadav, Raag" , "Iddamsetty, Aravind" , "Levitt, Yoni" Subject: Re: [PATCH v3 02/23] drm/xe/log: Add structured SIGID error logging infrastructure Thread-Topic: [PATCH v3 02/23] drm/xe/log: Add structured SIGID error logging infrastructure Thread-Index: AQHdIDjILDIeDNDrYUim4paglyUtS7aObdyA Date: Tue, 4 Aug 2026 21:21:05 +0000 Message-ID: <522ab2835b03dcd101d52fb752b3fb839ed0c15c.camel@intel.com> References: <20260730152121.576-1-michal.wajdeczko@intel.com> <20260730152121.576-3-michal.wajdeczko@intel.com> In-Reply-To: <20260730152121.576-3-michal.wajdeczko@intel.com> 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: CY5PR11MB6320:EE_|LV1PR11MB8791:EE_ x-ms-office365-filtering-correlation-id: 103b3fe2-7fd7-4942-1ed8-08def26e4b4b x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230040|376014|366016|1800799024|23010399003|10067099003|4143699003|6133799003|56012099006|5023799004|11063799006|3023799007|22082099003|18002099003|38070700021; x-microsoft-antispam-message-info: bwxc/hT1Ij/QR/i7y954SERhgscQZJBn7rjRIKUa67a3f6gB4rMw3q9LO8F7Z2TEUxCzyD50LnbseH7DSFSDAN3wWeIOjFoLgcNNMowe7pVZGgkvHzoIl08IzhcjKaXveGGf6WEZWqW0n9JingUkfwN1JXGHk4WBlnuu/TC75FL5nTK8NV/j/Tbv9ypDZAPtWdIHoOet4RHQlP2tQiN8UfBTAIAFTlAYUql7xF/W3MvgB4VObEFwaCXroYB8ep419HM5ehTNcmAkz8ugnc5N7AastL6YA8Fg1HGTC3KoBmqOKBLqN+yj3cHqV3m3UoHNLRRKsVYmlmeLEtIHMSK86nzeWuD86z7OX2xYv5w/Xa9K/HRlSH8r/Dhk+mBnL48k7qo1pDKxERB69eg3UopwYRiW4BwyGC7b1rpS26Cb5UwKo8kHQUev2NucTYHLviZJEtpFCflzuDhYjUiQpyS5/hEFYMNVRoOO/GsgclDvNrTf1HpdwZFIu7diYifHJDAt7ucSdvrhZuF+LU2Nb51Xew6IVZss2zLpJXZHTc2Tc5ZZL/Mod1UdRZSMwnHQSiKlteGov1UDY6DP0gc2e00PRBSBFasBfRgf3/BvQYlr/DadaK1epDlVqULyMAS1tqgBj/MFNh2DWR68gzdr72BQb81P2Fo97GmkJNYV8idOAUBtLXUNIj0df9abSHuZyX5haYZqo7VJ4H0IU+Ex/HQtLsyLIAJzhvdj/Pxf+NddlUI= x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:CY5PR11MB6320.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(376014)(366016)(1800799024)(23010399003)(10067099003)(4143699003)(6133799003)(56012099006)(5023799004)(11063799006)(3023799007)(22082099003)(18002099003)(38070700021); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?Y3l3UDlRZEJ5a1FxbzFnYTJaWS9lK0dpeVpwa0Q1OTJVM3Z4Qzc3c0tjbHl6?= =?utf-8?B?am8yRlZCQURSR1lMUlpkYitZQldaMHg5eUhXWnIwUWJOd2w0TXU0YWk2QXVJ?= =?utf-8?B?MmYvT2VtTzNGOVVBTndvTUlMZndsNjJhNHo5OUZvZlE5a0tlcmxDUytRaWpU?= =?utf-8?B?a0ptRXB5OUJSN2FzbGVKZkJJNFRYQXdSM095RFVuZ3c2cWNFdjRlMFk2RlFv?= =?utf-8?B?d3JOR0ZuTGw1STZPT096OFQ2SzM0aEoxRHJ1aTJJMmJMQ0l1ZDRxcmg2QnFL?= =?utf-8?B?dnN6Tm9EVWx4RmQyRFl0eC9uSGZURUdhS3I2WXJmKzdVeE5WQjBxcGZWZGl2?= =?utf-8?B?NUFBbWNtQzBFUWc1eFRHTWdNZDVwQWdNUm9lS1lWMkJlbFN5UG5FNlFyT2J1?= =?utf-8?B?d3haZTdKSUhudmsvV1d6R0MxZTlFTUY1blRSVCtuR2cwNjl3NG5ya2hqWFJk?= =?utf-8?B?K0hqQ0tvZkJldk10aDQ3SWZMeTZnT2c3MWg1Y0RRa29SOEZEcDZCSytLdG9w?= =?utf-8?B?QVJZQVIvdnB1YVFPdnJ3RmN5bFZ1blZBUHFydVRFdHY2L0FVZFFMdW8wMUtm?= =?utf-8?B?NStRcmppRk10SUtCVk9HYVBaa0RueE1vVlFVY2s4dW95eHNxRTZUeFdDL09m?= =?utf-8?B?Mk9jYjVJVE9ibmFGOU9zTFY0R21yWjNxaU5NZ2FGUkRxeDFucXFES0YwbFJP?= =?utf-8?B?WFp4aUwrOVB5cHhiSk8veTk3blBvUHVDemErdHQwMXJ5R1hCS01vTk9DS3la?= =?utf-8?B?aGtiT1VFbGpSRHVIWXM1Z3hPemw5ZmxjZ1I4MEhBSldxVFREbG45cDFLVklZ?= =?utf-8?B?N29JRFJzMVpEakdxYitEazI0ZlhjaEhWSzdrT1dEaWhoRjFYdFgyZU1pZUZZ?= =?utf-8?B?UDl1Zmd1a2QwL3RMNWMyUS9udmMvcEw4bFNNSCtSUWhYWkpHS2FXd292SFhE?= =?utf-8?B?QkV6MzRQNUNEVGVEYW00SHYxdTNaWDd0dkNudmRQSE1Vek9vWWFSUWVNU2xV?= =?utf-8?B?eFBtRmwrUDFQdHFkK0JQSVRHbWJvbm9BZW95RytNMjE5T1ovRVA4UG1yYVNF?= =?utf-8?B?cEpsRm9KaTF3R2RXRHdYcHc2a2FOT1h4U282bUVHK20yay9wYWVwNDZxL3pD?= =?utf-8?B?MkFmMGM1ZTBwMDJJbkFaVTRGT05rRUd5MFFJVk4xajE0S2RQSzc0SEVIR1VO?= =?utf-8?B?WnkreXZPcXk3N2x1bDJSM1dLZ1dmYTVZOGN4OTBaRkFCT1ZndHJpLzJOMXR6?= =?utf-8?B?dkdNV3p6T1NONXd0MWtIdjJmNmg0Z1lmVkZBdExnekFVWDlNNktpYWorRjdm?= =?utf-8?B?OFNKbmcxQmFtNEpTTElkS09ldWR2SnE1REQ2NkFWUEdNU1RybksrRmVhanhQ?= =?utf-8?B?MGl2Y0ZJU3pLSzkzc2NoYkJPR1BPU2VNMjZvdjl3Z2xCV3VGTjNSb29OTmNo?= =?utf-8?B?NHNqZjAyT0ZtT21oU3FoRi9GYUFCTmJMUzllMHBLaHQ4S2o3NzdTbmlGOHd6?= =?utf-8?B?WGN3UE4vZ1NYYzB6UUlWUjBpcmpQMnZIeXpwVzN4YTh2WGRqVHBCT3RUMjIz?= =?utf-8?B?NDlLWXhScjlEeEhPdzlUeEpaU0xoVGVrVi9zRENnMGh2ajBHZUJkYnZWVG54?= =?utf-8?B?a1RMdDdIY29LY2RMNWp3L09UTklXbWJ2YmloOE9ZK1hrWVU1dW5oblFRY3dl?= =?utf-8?B?SmJ2blNCL1F1ZmhiblhhaWNGOFhMR2RZc1hnd3NqY0k5cjlJYy80UzR2SEZ0?= =?utf-8?B?ZU51Kzh0Z01XY1dzbXg1b0Y4cThBM3lVOTBUVGN2QVF2UVlIYlc1ZnVuMkhY?= =?utf-8?B?eEtJaFBwY2tCQ0dsRXlMV0R5ZGg5ZnYwVTFKd0VrRDBzcWd0SENaQUtXR0Jp?= =?utf-8?B?U0V3VUNLVFJhKzRnNzlMbWxSVlNRcFNYZGxpZGk4TG5Md1h4Nlk0MFUvV1hS?= =?utf-8?B?Yjloc1BqcVdTWDdsdGtZcFdyUkkxcFE3TzBZek9jNHVvUDhFUHNxTFYwOWNn?= =?utf-8?B?Wnh2V05idjRCRVdzYjc1SkQ3NWZFdWMyZXNMODVkT2xqVHAxWlBlZWlzaTBX?= =?utf-8?B?MkgvRzQ5cmltdTRIVFU0Y2xCTk5rOXd4QzZad0xoKzZYK1hERnBJbmwwTjR2?= =?utf-8?B?NkcwbjQwTWk0ZlBXVVlqc2VJUTN5d0syemxveVRiTFFNNkgrZ1p0bWI1b3dv?= =?utf-8?B?aWQ0V1hYRytCR29BbTdJZ2V4MjR2RlowYit5OFFZS0JvRXJqbnB2bzlWV3ND?= =?utf-8?B?d3JVMGJtNGJhaDZabUV2dmJrcTgrTDN6eTJJaFNZR1loc2dEQlgyL3BvdFhJ?= =?utf-8?B?RzZyRW9wQ3FmQ1NISlQ5YXZHSnFpK3gvemNNeGNjS2FDWjJ6d2IwRldkaFpH?= =?utf-8?Q?aa2Z2WgyDi5RGjSU=3D?= Content-Type: text/plain; charset="utf-8" Content-ID: <89ED4D6CD850E5439BB692F7E3D045D2@namprd11.prod.outlook.com> Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-Exchange-RoutingPolicyChecked: gv6PNcqlonLoaNMRrlY7AOF1INhu8dxo7A/3ZMbayKxm5O3bzNgFbbaGHTRkzVg7MIlSnACmclZ5OzeIoU/V/1YcPrycoBcE4rZn9xEElyWxvxSAqWJJv9gFTHj+L/tP9rJTc6x3a29izencXnvohHwJC1hgVT4h1z0uciPladBgq8thi6urD2UJMhpATwKLlIcFhIMBE1wp0IZ5d3qTvaG98nX9Wb9+vwX7Tbr+RwUDPXAgOOwnLFTe8h09G1dNb8aSbeIpRBBOkPVebXPfMLmpeojxhAY9vkRX3PXCm7enQr/83WlBOtrwVvnw48n4ArUuiV7ftW10HN7EAXFvrA== X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: CY5PR11MB6320.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 103b3fe2-7fd7-4942-1ed8-08def26e4b4b X-MS-Exchange-CrossTenant-originalarrivaltime: 04 Aug 2026 21:21:05.6177 (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: oUy2w2olbld4HMCXlbQ0S8OaCG6gyec0SHofb2kD84ApC/3K++IFKXuFxCOPU26zg56r7x3bZpYbRuxCkSbsSa8lVecL3t2RMTp91ZfCaIQ= X-MS-Exchange-Transport-CrossTenantHeadersStamped: LV1PR11MB8791 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" T24gVGh1LCAyMDI2LTA3LTMwIGF0IDE3OjIwICswMjAwLCBNaWNoYWwgV2FqZGVjemtvIHdyb3Rl Og0KPiBGcm9tOiBNYWxsZXNoIEtvdWphbGFnaSA8bWFsbGVzaC5rb3VqYWxhZ2lAaW50ZWwuY29t Pg0KPiANCj4gVG9kYXkgdGhlIGRyaXZlciByZXBvcnRzIGZhdWx0cyB3aXRoIGFkLWhvYyBkcm1f ZXJyKCkveGVfZ3RfZXJyKCkNCj4gc3RyaW5ncyB0aGF0IGhhdmUgbm8gc3RhYmxlIHNoYXBlLiBU aGF0IGlzIHJlYWRhYmxlIGZvciBhIGh1bWFuLCBidXQNCj4gaXQNCj4gZ2l2ZXMgZmxlZXQgdG9v bGluZyBub3RoaW5nIGR1cmFibGUgdG8gbWF0Y2ggb246IHRoZSB3b3JkaW5nIGNoYW5nZXMNCj4g YmV0d2VlbiByZWxlYXNlcywgbGluZXMgY2FuIGJlIHJhdGUtbGltaXRlZCBvciBkcm9wcGVkIHVu ZGVyIGFuIGVycm9yDQo+IHN0b3JtLCBhbmQgdGhlcmUgaXMgbm8gY29uc2lzdGVudCB3YXkgdG8g YXNrICJ3aGljaCByZWNvZ25pc2VkIGZhdWx0DQo+IGp1c3QgaGFwcGVuZWQ/Ii4NCj4gDQo+IElu dHJvZHVjZSBhIHNpZ25hdHVyZSBpZGVudGlmaWVyIChTSUdJRCk6IGEgc21hbGwsIHN0YWJsZSBp bnRlZ2VyDQo+IHRoYXQNCj4gbmFtZXMgb25lIHJlY29nbmlzZWQgWGUgZmF1bHQgc2l0dWF0aW9u IGFuZCBzZXJ2ZXMgYXMgdGhlIHByaW1hcnkNCj4gaGFuZGxlDQo+IGZvciB0cmlhZ2UuIEEgU0lH SUQgbWFwcywgdGhyb3VnaCBwdWJsaXNoZWQgZW5kLXVzZXIgZG9jdW1lbnRhdGlvbiwNCj4gdG8g YQ0KPiBkZXNjcmlwdGlvbiBhbmQgYSByZWNvbW1lbmRlZCBhY3Rpb247IHRoZSBkcml2ZXIgb25s eSBoYXMgdG8gZW1pdCB0aGUNCj4gcmlnaHQgU0lHSUQgbmV4dCB0byB0aGUgdXN1YWwgaHVtYW4t cmVhZGFibGUgdGV4dC4NCg0KSSdtIGEgbGl0dGxlIHdvcnJpZWQgd2UncmUgaW50cm9kdWNpbmcg c29tZSBBQkkgd2l0aCB0aGlzIHRoYXQgaXNuJ3QNCnJlYWxseSBtYWludGFpbmFibGUgaW4gdGhl IGxvbmcgdGVybTogd2UgbWlnaHQgZGVjaWRlIHRvIGNoYW5nZSB0aGUNCmZsb3cgb3IgY2hhbmdl IHRoZSB3YXkgYW4gZXJyb3IgaXMgcmVwb3J0ZWQgb3IgdGhlIHNpdHVhdGlvbiB0aGF0DQp0cmln Z2VycyB0aGlzIGVycm9yIGZyb20gZmlybXdhcmUgb3IgaGFyZHdhcmUgbWlnaHQgY2hhbmdlIGZv ciBzb21lDQpyZWFzb24uIERvZXMgdGhpcyBsb2NrIHVzIGludG8gYSBzb2x1dGlvbiBmb3IgYWxs IG9mIHRoaXM/IEkgc3RpbGwgbmVlZA0KdG8gZ28gdGhyb3VnaCB0aGUgZnVsbCBwYXRjaCBzZXJp ZXMuLi4NCg0KVGhlIGRtZXNnIGVudHJpZXMgYXJlIGdlbmVyYWxseSBmb3IgaHVtYW4gZGVidWdn YWJpbGl0eS4gSSBnZXQgdGhlDQpkZXNpcmUgdG8gbWFrZSB0aGVzZSBlYXNpZXIgdG8gcGFyc2Ug Zm9yIGFuIEFJIHRvb2wgb3IgZ2VuZXJhdGVkDQpzY3JpcHQsIGJ1dCB3ZSBhbHNvIGRvbid0IHdh bnQgdG8gcHJldmVudCBkZWJ1ZyByZWxhdGVkIGNoYW5nZXMgZm9yDQplcnJvciBoYW5kbGluZyBh bmQgcmVwb3J0aW5nLg0KDQpUaGFua3MsDQpTdHVhcnQNCg0KPiANCj4gU2lnbmVkLW9mZi1ieTog TWFsbGVzaCBLb3VqYWxhZ2kgPG1hbGxlc2gua291amFsYWdpQGludGVsLmNvbT4NCj4gQXNzaXN0 ZWQtYnk6IENvcGlsb3Q6T3B1cy00LjgNCj4gU2lnbmVkLW9mZi1ieTogUm9kcmlnbyBWaXZpIDxy b2RyaWdvLnZpdmlAaW50ZWwuY29tPg0KPiBDby1kZXZlbG9wZWQtYnk6IE1pY2hhbCBXYWpkZWN6 a28gPG1pY2hhbC53YWpkZWN6a29AaW50ZWwuY29tPg0KPiBTaWduZWQtb2ZmLWJ5OiBNaWNoYWwg V2FqZGVjemtvIDxtaWNoYWwud2FqZGVjemtvQGludGVsLmNvbT4NCj4gLS0tDQo+IENjOiBZb25p IExldml0dCA8eW9uaS5sZXZpdHRAaW50ZWwuY29tPg0KPiBDYzogQXJhdmluZCBJZGRhbXNldHR5 IDxhcmF2aW5kLmlkZGFtc2V0dHlAaW50ZWwuY29tPg0KPiBDYzogUmFhZyBKYWRhdiA8cmFhZy5q YWRhdkBpbnRlbC5jb20+DQo+IENjOiBSaWFuYSBUYXVybyA8cmlhbmEudGF1cm9AaW50ZWwuY29t Pg0KPiAtLS0NCj4gdjI6IENPUlJFQ1RFRCBpcyBzdGlsbCBhbiBlcnJvciAoTWljaGFsKQ0KPiDC oMKgwqAgcHJlcGFyZSB0byBkZWNvcmF0ZSBkbWVzZyB3aXRoIGNvbXAvbG9jIChNaWNoYWwpDQo+ IC0tLQ0KPiDCoERvY3VtZW50YXRpb24vZ3B1L3hlL2luZGV4LnJzdMKgwqDCoMKgwqDCoMKgIHzC oMKgIDEgKw0KPiDCoERvY3VtZW50YXRpb24vZ3B1L3hlL3hlX3NpZ2lkLnJzdMKgwqDCoMKgIHzC oCAxNCArKw0KPiDCoGRyaXZlcnMvZ3B1L2RybS94ZS9NYWtlZmlsZcKgwqDCoMKgwqDCoMKgwqDC oMKgIHzCoMKgIDEgKw0KPiDCoGRyaXZlcnMvZ3B1L2RybS94ZS9hYmkveGVfc2lnaWRfYWJpLmgg fCAxODMNCj4gKysrKysrKysrKysrKysrKysrKysrKysrKysNCj4gwqBkcml2ZXJzL2dwdS9kcm0v eGUveGVfbG9nLmPCoMKgwqDCoMKgwqDCoMKgwqDCoCB8IDEzNSArKysrKysrKysrKysrKysrKysr DQo+IMKgZHJpdmVycy9ncHUvZHJtL3hlL3hlX2xvZy5owqDCoMKgwqDCoMKgwqDCoMKgwqAgfMKg IDIwICsrKw0KPiDCoDYgZmlsZXMgY2hhbmdlZCwgMzU0IGluc2VydGlvbnMoKykNCj4gwqBjcmVh dGUgbW9kZSAxMDA2NDQgRG9jdW1lbnRhdGlvbi9ncHUveGUveGVfc2lnaWQucnN0DQo+IMKgY3Jl YXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS94ZS9hYmkveGVfc2lnaWRfYWJpLmgNCj4g wqBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL3hlL3hlX2xvZy5jDQo+IMKgY3Jl YXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS94ZS94ZV9sb2cuaA0KPiANCj4gZGlmZiAt LWdpdCBhL0RvY3VtZW50YXRpb24vZ3B1L3hlL2luZGV4LnJzdA0KPiBiL0RvY3VtZW50YXRpb24v Z3B1L3hlL2luZGV4LnJzdA0KPiBpbmRleCA2NjVjMGU5MzYwMWMuLjAyNDdhMjU1ZjdlNiAxMDA2 NDQNCj4gLS0tIGEvRG9jdW1lbnRhdGlvbi9ncHUveGUvaW5kZXgucnN0DQo+ICsrKyBiL0RvY3Vt ZW50YXRpb24vZ3B1L3hlL2luZGV4LnJzdA0KPiBAQCAtMzUsMyArMzUsNCBAQCBUaGUgZGlzcGxh eSwgb3IgOnJlZjpgZHJtLWttc2AsIHN1cHBvcnQgZm9yIGRybS94ZQ0KPiBpcyBwcm92aWRlZCBi eQ0KPiDCoMKgwqAgeGUtZHJtLXVzYWdlLXN0YXRzLnJzdA0KPiDCoMKgwqAgeGVfY29uZmlnZnMN Cj4gwqDCoMKgIHhlX2d0X3N0YXRzDQo+ICvCoMKgIHhlX3NpZ2lkDQo+IGRpZmYgLS1naXQgYS9E b2N1bWVudGF0aW9uL2dwdS94ZS94ZV9zaWdpZC5yc3QNCj4gYi9Eb2N1bWVudGF0aW9uL2dwdS94 ZS94ZV9zaWdpZC5yc3QNCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5kZXggMDAwMDAwMDAw MDAwLi40NWQ4NGE2MmYxODUNCj4gLS0tIC9kZXYvbnVsbA0KPiArKysgYi9Eb2N1bWVudGF0aW9u L2dwdS94ZS94ZV9zaWdpZC5yc3QNCj4gQEAgLTAsMCArMSwxNCBAQA0KPiArLi4gU1BEWC1MaWNl bnNlLUlkZW50aWZpZXI6IChHUEwtMi4wKyBPUiBNSVQpDQo+ICsNCj4gKz09PT09PT09DQo+ICtY ZSBTSUdJRA0KPiArPT09PT09PT0NCj4gKw0KPiArLi4ga2VybmVsLWRvYzo6IGRyaXZlcnMvZ3B1 L2RybS94ZS9hYmkveGVfc2lnaWRfYWJpLmgNCj4gK8KgwqAgOmRvYzogWGUgRXJyb3IgU2lnbmF0 dXJlcyAoU0lHSUQpDQo+ICsNCj4gK1NpZ25hdHVyZSBJZGVudGlmaWVycw0KPiArPT09PT09PT09 PT09PT09PT09PT09DQo+ICsNCj4gKy4uIGtlcm5lbC1kb2M6OiBkcml2ZXJzL2dwdS9kcm0veGUv YWJpL3hlX3NpZ2lkX2FiaS5oDQo+ICvCoMKgIDppbnRlcm5hbDoNCj4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS94ZS9NYWtlZmlsZQ0KPiBiL2RyaXZlcnMvZ3B1L2RybS94ZS9NYWtlZmls ZQ0KPiBpbmRleCA2N2FkYTFkNmMyZmIuLjdhYzM5NTQ3MzdmOSAxMDA2NDQNCj4gLS0tIGEvZHJp dmVycy9ncHUvZHJtL3hlL01ha2VmaWxlDQo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS94ZS9NYWtl ZmlsZQ0KPiBAQCAtODcsNiArODcsNyBAQCB4ZS15ICs9IHhlX2JiLm8gXA0KPiDCoMKgwqDCoMKg wqDCoMKgeGVfaHdfZmVuY2UubyBcDQo+IMKgwqDCoMKgwqDCoMKgwqB4ZV9pcnEubyBcDQo+IMKg wqDCoMKgwqDCoMKgwqB4ZV9sYXRlX2JpbmRfZncubyBcDQo+ICvCoMKgwqDCoMKgwqDCoHhlX2xv Zy5vIFwNCj4gwqDCoMKgwqDCoMKgwqDCoHhlX2xyYy5vIFwNCj4gwqDCoMKgwqDCoMKgwqDCoHhl X21lbV9wb29sLm8gXA0KPiDCoMKgwqDCoMKgwqDCoMKgeGVfbWlncmF0ZS5vIFwNCj4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS94ZS9hYmkveGVfc2lnaWRfYWJpLmgNCj4gYi9kcml2ZXJz L2dwdS9kcm0veGUvYWJpL3hlX3NpZ2lkX2FiaS5oDQo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ IGluZGV4IDAwMDAwMDAwMDAwMC4uOTk3MTdmZGY3NGE2DQo+IC0tLSAvZGV2L251bGwNCj4gKysr IGIvZHJpdmVycy9ncHUvZHJtL3hlL2FiaS94ZV9zaWdpZF9hYmkuaA0KPiBAQCAtMCwwICsxLDE4 MyBAQA0KPiArLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVCAqLw0KPiArLyoNCj4gKyAq IENvcHlyaWdodCDCqSAyMDI2IEludGVsIENvcnBvcmF0aW9uDQo+ICsgKi8NCj4gKw0KPiArI2lm bmRlZiBfQUJJX1hFX1NJR0lEX0FCSV9IXw0KPiArI2RlZmluZSBfQUJJX1hFX1NJR0lEX0FCSV9I Xw0KPiArDQo+ICsvKioNCj4gKyAqIERPQzogWGUgRXJyb3IgU2lnbmF0dXJlcyAoU0lHSUQpDQo+ ICsgKg0KPiArICogV2hhdCBTSUdJRCBzdGFuZHMgZm9yDQo+ICsgKiAtLS0tLS0tLS0tLS0tLS0t LS0tLS0NCj4gKyAqDQo+ICsgKiBTSUdJRCBpcyBzaG9ydCBmb3IgKlNpZ25hdHVyZSBJZGVudGlm aWVyKi4gQSBTSUdJRCBpcyBhIHNtYWxsLA0KPiBzdGFibGUgaW50ZWdlcg0KPiArICogdGhhdCBu YW1lcyBvbmUgKnJlY29nbmlzZWQgWGUgZmF1bHQgc2l0dWF0aW9uKiAtLSBub3RoaW5nIG1vcmUu DQo+IEl0IGlzIHRoZQ0KPiArICogcHJpbWFyeSBoYW5kbGUgdXNlZCBmb3IgdHJpYWdlOiBhIFNJ R0lEIG1hcHMgdG8gYSBodW1hbg0KPiBkZXNjcmlwdGlvbiBhbmQgYQ0KPiArICogcmVjb21tZW5k ZWQgZmlyc3QgYWN0aW9uLiBBIGNvYXJzZSBmaXJzdC1vcmRlciBhY3Rpb24gaXMNCj4gZG9jdW1l bnRlZCBpbi10cmVlDQo+ICsgKiBwZXIgU0lHSUQgKHNlZSAiRmlyc3Qtb3JkZXIgYWN0aW9uIiBi ZWxvdykgc28gdGhlIGlkIGlzDQo+IGFjdGlvbmFibGUgb24gaXRzDQo+ICsgKiBvd247IHB1Ymxp c2hlZCBlbmQtdXNlciBkb2N1bWVudGF0aW9uIHJlZmluZXMgaXQgd2l0aCBmaW5lciwNCj4gY3Jv c3MtcHJvZHVjdA0KPiArICogZGV0YWlsLiBUaGUgZHJpdmVyJ3Mgb25seSBqb2IgaXMgdG8gZW1p dCB0aGUgcmlnaHQgU0lHSUQgbmV4dCB0bw0KPiB0aGUgdXN1YWwNCj4gKyAqIGh1bWFuLXJlYWRh YmxlIHRleHQuDQo+ICsgKg0KPiArICogV2h5IHRoaXMgZXhpc3RzDQo+ICsgKiAtLS0tLS0tLS0t LS0tLS0NCj4gKyAqDQo+ICsgKiBUb2RheSB0aGUgZHJpdmVyIHJlcG9ydHMgZmF1bHRzIHdpdGgg YWQtaG9jIGBgZHJtX2VycigpYGAgLw0KPiBgYHhlX2d0X2VycigpYGANCj4gKyAqIHN0cmluZ3Mg dGhhdCBoYXZlIG5vIHN0YWJsZSBzaGFwZS4gVGhhdCBpcyBmaW5lIGZvciBhIGh1bWFuDQo+IHJl YWRpbmcgZG1lc2csDQo+ICsgKiBidXQgaXQgZ2l2ZXMgZmxlZXQgdG9vbGluZyBub3RoaW5nIGR1 cmFibGUgdG8gbWF0Y2ggb246IHRoZQ0KPiB3b3JkaW5nIGNoYW5nZXMNCj4gKyAqIGJldHdlZW4g cmVsZWFzZXMsIGxpbmVzIGNhbiBiZSByYXRlLWxpbWl0ZWQgb3IgZHJvcHBlZCB1bmRlciBhbg0K PiBlcnJvciBzdG9ybSwNCj4gKyAqIGFuZCB0aGVyZSBpcyBubyBjb25zaXN0ZW50IHdheSB0byBh c2sgIndoaWNoIHJlY29nbmlzZWQgZmF1bHQNCj4ganVzdCBoYXBwZW5lZD8iDQo+ICsgKiBBIFNJ R0lEIGFuc3dlcnMgZXhhY3RseSB0aGF0IG9uZSBxdWVzdGlvbiwgaWRlbnRpY2FsbHkgYWNyb3Nz DQo+IGRyaXZlciBhbmQNCj4gKyAqIGZpcm13YXJlIHZlcnNpb25zLCBhbmQgKGV2ZW50dWFsbHkp IGFjcm9zcyBvdGhlciBJbnRlbCBkZXZpY2VzIGluDQo+IGEgbm9kZS4NCj4gKyAqDQo+ICsgKiBX aGF0IGEgU0lHSUQgaXMgKGFuZCBpcyBub3QpDQo+ICsgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tDQo+ICsgKg0KPiArICogQSBTSUdJRCBuYW1lcyAqd2hpY2ggc2l0dWF0aW9uKiBpcyBi ZWluZyByZXBvcnRlZC4gSXQNCj4gZGVsaWJlcmF0ZWx5IGRvZXMgbm90DQo+ICsgKiBlbmNvZGUg dGhlIGRldGFpbGVkIHJlYXNvbiBvciB0aGUgb3V0Y29tZS4gVGhvc2UgYXJlIGNhcnJpZWQNCj4g YWxvbmdzaWRlIGl0OjoNCj4gKyAqDQo+ICsgKsKgwqAgU0lHSUTCoMKgwqAgLT4gd2hpY2ggcmVj b2duaXNlZCBzaXR1YXRpb24gaXMgYmVpbmcgcmVwb3J0ZWQNCj4gKyAqwqDCoCBzZXZlcml0eSAt PiBob3cgc2VyaW91cyB0aGlzIGluc3RhbmNlIGlzIChzZWUgYmVsb3cgLS0gbm90DQo+IGZpeGVk IHBlciBTSUdJRCkNCj4gKyAqwqDCoCBlcnJub8KgwqDCoCAtPiB0aGUgZmFpbGluZyBvcGVyYXRp b24ncyBlcnJvciwgc2hvd24gd2l0aCAlcGUNCj4gKyAqwqDCoCBtZXNzYWdlwqAgLT4gZnJlZS1m b3JtIGh1bWFuLXJlYWRhYmxlIGNvbnRleHQNCj4gKyAqDQo+ICsgKiBTZXZlcml0eSBpcyBpbmRl cGVuZGVudCBvZiB0aGUgU0lHSUQuIFRoZSBzYW1lIHNpdHVhdGlvbiBjYW4gYmUNCj4gcmVwb3J0 ZWQgYXQNCj4gKyAqIGRpZmZlcmVudCBzZXZlcml0aWVzIGRlcGVuZGluZyBvbiB0aGUgaW5zdGFu Y2UgYW5kIHRoZSByZWNvdmVyeQ0KPiB0YWtlbiwgc28gYQ0KPiArICogU0lHSUQgaXMgbmV2ZXIg dGllZCB0byBvbmUgc2V2ZXJpdHk7IHRoZSByZXBvcnRpbmcgc2l0ZSBjaG9vc2VzDQo+IGl0IGJ5 IGNhbGxpbmcNCj4gKyAqIHRoZSBtYXRjaGluZyB4ZV9sb2dfKigpIGhlbHBlciAoc2VlIHhlX2xv Zy5oKS4NCj4gKyAqDQo+ICsgKiBIb3cgdG8gcGljayBhIFNJR0lEICh0aGUgdW5pcXVlbmVzcyBy dWxlKQ0KPiArICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCj4g KyAqDQo+ICsgKiBQaWNrIHBlciAqcmVwb3J0IHNpdGUqLCBub3QgcGVyIGluY2lkZW50LiBFYWNo IHNpdGUgZW1pdHMgdGhlDQo+IHNpbmdsZSBtb3N0DQo+ICsgKiBzcGVjaWZpYyByZWNvZ25pc2Vk IHNpdHVhdGlvbiAqZm9yIHRoYXQgc2l0ZSogLS0gc28gdGhlIHF1ZXN0aW9uDQo+IGlzIG5ldmVy DQo+ICsgKiAiY2xhc3NpZnkgdGhpcyB3aG9sZSBmYWlsdXJlIiwgaXQgaXMgIndoYXQgZG9lcyB0 aGlzIHNpdGUNCj4gZGV0ZWN0PyIsIHdoaWNoIGhhcw0KPiArICogb25lIGFuc3dlci4gQSBzaW5n bGUgdW5kZXJseWluZyBmYWlsdXJlIHRoZXJlZm9yZSBsZWdpdGltYXRlbHkNCj4gcHJvZHVjZXMg YQ0KPiArICogKmNoYWluKiBvZiByZXBvcnRzIGZyb20gZGlmZmVyZW50IGxheWVycywgZWFjaCB3 aXRoIGl0cyBvd24gU0lHSUQNCj4gLS0gZS5nLiBhDQo+ICsgKiBHdUMgY29tbXVuaWNhdGlvbiBm YWlsdXJlIGlzIHJlcG9ydGVkIGFzICVYRV9TSUdJRF9SVU5USU1FX0ZXIGJ5DQo+IHRoZSBmaXJt d2FyZQ0KPiArICogcGF0aCwgdGhlIGZhaWxlZCByZWNvdmVyeSBhcyAlWEVfU0lHSURfR1RfVERS IGJ5IHRoZSByZXNldCBwYXRoLA0KPiBhbmQgYW4NCj4gKyAqIGFib3J0ZWQgYmluZCBhcyAlWEVf U0lHSURfUFJPQkUgYnkgdGhlIHByb2JlIHBhdGguIFRoYXQgY2hhaW4NCj4gbGV0cyB0cmlhZ2UN Cj4gKyAqIGZvbGxvdyBhIGZhdWx0IGZyb20gb3JpZ2luIHRvIGZpbmFsIGVmZmVjdDsgaXQgaXMg bm90IGENCj4gZHVwbGljYXRlLg0KPiArICoNCj4gKyAqIElmIGEgc2l0ZSBkb2VzIG5vdCBtYXRj aCBhbnkgZGVmaW5lZCBzaXR1YXRpb24sIGtlZXAgdXNpbmcgdGhlDQo+IG9yZGluYXJ5DQo+ICsg KiBgYHhlX2VycigpYGAgLyBgYHhlX2d0X2VycigpYGAgbG9nZ2luZyByYXRoZXIgdGhhbiBmb3Jj aW5nIGENCj4gU0lHSUQ6IGEgd3JvbmcNCj4gKyAqIG9yIG92ZXItYnJvYWQgY2xhc3NpZmljYXRp b24gaXMgaGFyZGVyIHRvIHJldGlyZSB0aGFuIGEgbWlzc2luZw0KPiBvbmUuIFdoZW4gYQ0KPiAr ICogbmV3IHNpdHVhdGlvbiBpcyBnZW51aW5lbHkgd29ydGggdHJpYWdpbmcsIGFkZCBpdCB0byB0 aGUgbGlzdA0KPiBiZWxvdy4NCj4gKyAqDQo+ICsgKiBTY29wZTogc29mdHdhcmUtZW1pdHRlZCBz aWduYXR1cmVzIG9ubHkNCj4gKyAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQ0KPiArICoNCj4gKyAqIFRoaXMgaGVhZGVyIGVudW1lcmF0ZXMgb25seSB0aGUgc2l0dWF0 aW9ucyB0aGF0IHRoZSAqZHJpdmVyDQo+IGl0c2VsZiogZGV0ZWN0cw0KPiArICogYW5kIHJlcG9y dHMgZnJvbSBzb2Z0d2FyZTogcHJvYmUgYWJvcnQsIHdlZGdlZCwgc3Vydml2YWJpbGl0eSwNCj4g ZHJpdmVyLQ0KPiArICogZGV0ZWN0ZWQgZmlybXdhcmUgZmFpbHVyZXMsIGVuZ2luZSBURFIsIG1l bW9yeSBmYXVsdHMgYW5kIElPL2J1cw0KPiBmYXVsdHMuDQo+ICsgKiBUaGVzZSBhcmUgdGhlIG9u bHkgdmFsdWVzIHRoZSBkcml2ZXIgYXNzaWducy4NCj4gKyAqDQo+ICsgKiBTaWduYXR1cmVzIHRo YXQgKm9yaWdpbmF0ZSogaW4gZmlybXdhcmUgb3IgaGFyZHdhcmUgYXJlIGENCj4gZGlmZmVyZW50 IHRoaW5nOg0KPiArICogdGhleSBhcmUgcHJvZHVjZWQgYW5kIGlkZW50aWZpZWQgYnkgdGhlIGZp cm13YXJlIG9yIHRoZSBoYXJkd2FyZQ0KPiBpdHNlbGYNCj4gKyAqIChlLmcuIHZpYSB0aGVpciBv d24gcmVjb3JkcyBvciBlcnJvciBjb3VudGVycyksIGFuZCB0aGUgZHJpdmVyDQo+IG1lcmVseSBs b2dzDQo+ICsgKiB0aGVtIGFzIHRoZXkgYXJlIGdpdmVuIHRvIHVzLiBUaGV5IGFyZSBkZWxpYmVy YXRlbHkgKm5vdCoNCj4gZW51bWVyYXRlZCBoZXJlIC0tDQo+ICsgKiBtaW50aW5nIGEgZHJpdmVy LXNpZGUgaWQgZm9yIGEgZmlybXdhcmUvaGFyZHdhcmUtcmVwb3J0ZWQgZXJyb3INCj4gd291bGQg b25seQ0KPiArICogZHVwbGljYXRlIGFuIGlkZW50aWZpZXIgdGhlIHJlcG9ydGluZyBsYXllciBh bHJlYWR5IG93bnMuIFRoZSB0d28NCj4gKyAqIGRyaXZlci1kZXRlY3RlZCBmaXJtd2FyZSBzaXR1 YXRpb25zIGJlbG93ICglWEVfU0lHSURfUlVOVElNRV9GVywNCj4gKyAqICVYRV9TSUdJRF9ERVZJ Q0VfRlcpIGFyZSBzb2Z0d2FyZSBzaWduYXR1cmVzOiB0aGV5IG1hcmsgdGhhdCAqdGhlDQo+IGRy aXZlcioNCj4gKyAqIG9ic2VydmVkIGEgZmlybXdhcmUgcHJvYmxlbSwgbm90IGEgc2lnbmF0dXJl IHJlcG9ydGVkIGJ5IHRoZQ0KPiBmaXJtd2FyZS4NCj4gKyAqDQo+ICsgKiBOdW1iZXJpbmcNCj4g KyAqIC0tLS0tLS0tLQ0KPiArICoNCj4gKyAqIFNJR0lEcyBhcmUgYSBzaW5nbGUgZmxhdCBsaXN0 IG51bWJlcmVkIHNlcXVlbnRpYWxseSB3aXRoaW4gdGhlDQo+IGFzc2lnbmVkIHJhbmdlLA0KPiAr ICogaW4gdGhlIG9yZGVyIHRoZSBzaXR1YXRpb25zIHdlcmUgaW50cm9kdWNlZC4gVmFsdWVzIGFy ZSBzdGFibGU6DQo+IG9uY2UgYXNzaWduZWQNCj4gKyAqIHRoZXkgYXJlIG9ubHkgZXZlciBhcHBl bmRlZCwgbmV2ZXIgcmVudW1iZXJlZCBvciByZXVzZWQuDQo+ICsgKg0KPiArICogQSByZXRpcmVk IHNpdHVhdGlvbiBpcyBkZXByZWNhdGVkIGluIHBsYWNlLCBuZXZlciByZS1wdXJwb3NlZC4NCj4g KyAqDQo+ICsgKiBGaXJzdC1vcmRlciBhY3Rpb24gKHJlc29sdXRpb24gYnVja2V0cykNCj4gKyAq IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KPiArICoNCj4gKyAqIFNv IHRoYXQgYSBTSUdJRCBpcyBhY3Rpb25hYmxlIG9uIGl0cyBvd24sIGVhY2ggb25lIGlzIHRhZ2dl ZCB3aXRoDQo+IGEgY29hcnNlDQo+ICsgKiAqcmVzb2x1dGlvbiBidWNrZXQqOiB0aGUgZmlyc3Qg dGhpbmcgYW4gb3BlcmF0b3Igc2hvdWxkIGRvIG9uDQo+IHNlZWluZyBpdC4gVGhlDQo+ICsgKiBi dWNrZXQgaXMgYSBzdGFibGUsIGRyaXZlci1vd25lZCBoaW50OyBleHRlcm5hbCBkb2N1bWVudGF0 aW9uIG1heQ0KPiByZWZpbmUgaXQsDQo+ICsgKiBidXQgdGhlIGluLXRyZWUgdmFsdWUgYWx3YXlz IHN0YW5kcyBvbiBpdHMgb3duLiBFdmVyeSBuZXcgU0lHSUQNCj4gbXVzdCBwaWNrIGENCj4gKyAq IGJ1Y2tldCwgd2hpY2ggZm9yY2VzIHRoZSBxdWVzdGlvbiAid2hhdCBzaG91bGQgc29tZW9uZSBk byBhYm91dA0KPiB0aGlzPyIgdG8gYmUNCj4gKyAqIGFuc3dlcmVkIHVwIGZyb250LiBUaGUgYnVj a2V0cyBhcmU6Og0KPiArICoNCj4gKyAqwqDCoCBDT0xMRUNUwqAgLS0gY2FwdHVyZSBsb2dzIGFu ZCBvcGVuIGEgYnVnIHJlcG9ydA0KPiArICrCoMKgIFJFVFJZwqDCoMKgIC0tIHRyYW5zaWVudCBv ciBhbHJlYWR5IHJlY292ZXJlZDsgd2F0Y2ggZm9yDQo+IHJlY3VycmVuY2UNCj4gKyAqwqDCoCBV UERBVEXCoMKgIC0tIGEgZmlybXdhcmUgdXBkYXRlIC8gZmxhc2ggaXMgcmVxdWlyZWQNCj4gKyAq wqDCoCBSRUNPVkVSwqAgLS0gYW4gZXhwbGljaXQgcmVjb3Zlcnkgc3RlcCBpcyBuZWVkZWQgKHJl YmluZCwgYnVzDQo+IHJlc2V0KQ0KPiArICrCoMKgIElHTk9SRcKgwqAgLS0gaWdub3JlIGlmIHRo ZSBTSUdJRCBzZXZlcml0eSBpcyBJTkZPUk1BVElPTkFMDQo+ICsgKg0KPiArICogVGhlIGJ1Y2tl dCBpcyBkb2N1bWVudGF0aW9uIG9ubHkgLS0gaXQgaXMgcmVjb3JkZWQgcGVyIFNJR0lEIGluDQo+ IHRoZSBlbnVtDQo+ICsgKiBrZXJuZWwtZG9jIGJlbG93IGFuZCBpcyBub3QgcHJpbnRlZCBvbiB0 aGUgKGRlbGliZXJhdGVseSBsZWFuKQ0KPiBkbWVzZyBsaW5lLg0KPiArICoNCj4gKyAqIFdoZW4g dG8gdXNlIFNJR0lEIGxvZ2dpbmcNCj4gKyAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCj4g KyAqDQo+ICsgKiBUaGUgeGVfbG9nXyooKSBoZWxwZXJzIGFyZSBmb3IgdGhlc2UgcmVjb2duaXNl ZCBmYXVsdCBzaXR1YXRpb25zDQo+IG9ubHkgLS0NCj4gKyAqIGltcG9ydGFudCwgb3BlcmF0b3It cmVsZXZhbnQgZmF1bHRzIGFuZCBldmVudHMuIFRoZXkgYXJlIG5vdCBhDQo+IHJlcGxhY2VtZW50 DQo+ICsgKiBmb3IgYGB4ZV9pbmZvKClgYCAvIGBgeGVfZGJnKClgYCAvIHRyYWNpbmcsIG5vciBm b3Igb25lLW9mZg0KPiBkaWFnbm9zdGljczsNCj4gKyAqIHVzaW5nIHRoZW0gZm9yIG9yZGluYXJ5 IGxvZ2dpbmcgd291bGQgZGlsdXRlIHRoZSBmYXVsdCBzdHJlYW0uDQo+IE5vdCBldmVyeQ0KPiAr ICogYGB4ZV9lcnIoKWBgIG5lZWRzIHRvIGJlY29tZSBhIFNJR0lEIHJlcG9ydCAtLSBvbmx5IHRo b3NlIHRoYXQNCj4gY29ycmVzcG9uZCB0bw0KPiArICogYSBwdWJsaXNoZWQgc2l0dWF0aW9uLg0K PiArICoNCj4gKyAqIGRtZXNnIHZzLiB0aGUgbWFjaGluZSByZWNvcmQNCj4gKyAqIC0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0NCj4gKyAqDQo+ICsgKiBUaGUgZG1lc2cgbGluZSBzdGF5cyBj bG9zZSB0byBhIG5vcm1hbCB4ZSBlcnJvciBtZXNzYWdlIHNvIGl0DQo+IHJlbWFpbnMNCj4gKyAq IHJlYWRhYmxlIGZvciBhZG1pbnM7IHRoZSBvbmx5IHN0YWJsZSwgbWFjaGluZS1tYXRjaGFibGUg dG9rZW4gb24NCj4gaXQgaXMNCj4gKyAqIGBgU0lHSUQ9PG4+YGAgKGBgZG1lc2cgfCBncmVwIFNJ R0lEPWBgKS4gZG1lc2cgaXMgbm90IGFuIEFCSTogdGhlDQo+IHN1cnJvdW5kaW5nDQo+ICsgKiB0 ZXh0IG1heSBjaGFuZ2UgZnJlZWx5LCBhbmQgbGluZXMgbWF5IGJlIGRyb3BwZWQuIFRoZSBkdXJh YmxlDQo+IHJlY29yZCBmb3INCj4gKyAqIHRvb2xpbmcgaXMgdGhlIENQRVIgcmVjb3JkIGNhcnJ5 aW5nIHRoZSBzYW1lIFNJR0lEIChnZW5lcmF0aW9uIGlzDQo+IGEgcGxhbm5lZA0KPiArICogZm9s bG93LXVwKS4NCj4gKyAqLw0KPiArDQo+ICsvKg0KPiArICogVG9wIGxldmVsIEludGVsIEVycm9y IFNpZ25hdHVyZSBJZGVudGlmaWVycy4NCj4gKyAqLw0KPiArI2RlZmluZSBJTlRFTF9TSUdJRF9J TlZBTElEwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoDANCj4gKyNkZWZp bmUgSU5URUxfU0lHSURfR1BVX1NUQVJUwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgMTAwDQo+ICsjZGVmaW5lIElOVEVMX1NJR0lEX0dQVV9FTkTCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgOTk5DQo+ICsNCj4gKyNkZWZpbmUgSU5URUxfU0lHSURfR1BV X1hFX1NUQVJUwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgMTAwDQo+ICsjZGVmaW5lIElO VEVMX1NJR0lEX0dQVV9YRV9FTkTCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgMjk5 DQo+ICsNCj4gKyNkZWZpbmUgSU5URUxfU0lHSURfR1BVX1hFX1NPRlRXQVJFX1NUQVJUwqDCoMKg wqDCoMKgMTAwDQo+ICsjZGVmaW5lIElOVEVMX1NJR0lEX0dQVV9YRV9TT0ZUV0FSRV9FTkTCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoDE5OQ0KPiArI2RlZmluZSBJTlRFTF9TSUdJRF9H UFVfWEVfSEFSRFdBUkVfU1RBUlTCoMKgwqDCoMKgwqAyMDANCj4gKyNkZWZpbmUgSU5URUxfU0lH SURfR1BVX1hFX0hBUkRXQVJFX0VORMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgMjk5 DQo+ICsNCj4gKy8qKg0KPiArICogZW51bSB4ZV9zaWdpZCAtIFN0YWJsZSBYZSBFcnJvciBTaWdu YXR1cmUgSWRlbnRpZmllcnMgKFNJR0lEKS4NCj4gKyAqIEBYRV9TSUdJRF9TVzogU29mdHdhcmUg Y29tcG9uZW50IGZhaWx1cmUuIFtDT0xMRUNUXQ0KPiArICogQFhFX1NJR0lEX1BST0JFOiBEZXZp Y2UgcHJvYmUvYmluZCB3YXMgYWJvcnRlZC4gW0NPTExFQ1RdDQo+ICsgKiBAWEVfU0lHSURfV0VE R0VEOiBEZXZpY2Ugd2FzIGRlY2xhcmVkIHdlZGdlZCBhbmQgaXMgbm8gbG9uZ2VyDQo+IHVzYWJs ZS4gW1JFQ09WRVJdDQo+ICsgKiBAWEVfU0lHSURfU1VSVklWQUJJTElUWTogRGV2aWNlIGVudGVy ZWQgc3Vydml2YWJpbGl0eSBtb2RlLg0KPiBbVVBEQVRFXQ0KPiArICogQFhFX1NJR0lEX1JVTlRJ TUVfRlc6IERyaXZlci1kZXRlY3RlZCBydW50aW1lIGZpcm13YXJlIGZhaWx1cmUsDQo+IEd1Qy9I dUMvR1NDLiBbUkVUUlldDQo+ICsgKiBAWEVfU0lHSURfREVWSUNFX0ZXOiBEcml2ZXItZGV0ZWN0 ZWQgZGV2aWNlIGZpcm13YXJlIGZhaWx1cmUsDQo+IFBDT0RFL3N5c2N0cmwuIFtSRVRSWV0NCj4g KyAqIEBYRV9TSUdJRF9HVF9URFI6IEVuZ2luZSBoYW5nIC8gdGltZW91dCBkZXRlY3Rpb24gYW5k IHJlY292ZXJ5DQo+IChyZXNldCkuIFtSRVRSWV0NCj4gKyAqIEBYRV9TSUdJRF9NRU1fRkFVTFQ6 IFZNIGJpbmQsIHBhZ2UgZmF1bHQgb3IgR1RUIGZhdWx0LiBbQ09MTEVDVF0NCj4gKyAqIEBYRV9T SUdJRF9JT19CVVM6IFJ1bnRpbWUgUENJZSAvIElPTU1VIC8gTU1JTyBhY2Nlc3MgZmF1bHQuDQo+ IFtSRUNPVkVSXQ0KPiArICoNCj4gKyAqIFRoZSBzaXR1YXRpb25zIHRoZSBkcml2ZXIgZGV0ZWN0 cyBhbmQgcmVwb3J0cyBpbiBzb2Z0d2FyZS4gVmFsdWVzDQo+IGFyZQ0KPiArICogbnVtYmVyZWQg c2VxdWVudGlhbGx5LCBhcmUgb25seSBldmVyIGFwcGVuZGVkLCBhbmQgYXJlIG5ldmVyDQo+IHJl bnVtYmVyZWQgb3INCj4gKyAqIHJldXNlZC4gVGhlIHRhZyBpbiBicmFja2V0cyBpcyB0aGUgZGVm YXVsdCByZXNvbHV0aW9uIGJ1Y2tldCAoc2VlDQo+IHRoZSBgWGUNCj4gKyAqIEVycm9yIFNpZ25h dHVyZXMgKFNJR0lEKWBfIHNlY3Rpb24pLg0KPiArICoNCj4gKyAqIEZpcm13YXJlLSBhbmQgaGFy ZHdhcmUtb3JpZ2luYXRlZCBzaWduYXR1cmVzIGFyZSBub3QgbGlzdGVkIGhlcmU7DQo+IHRoZXkg YXJlDQo+ICsgKiBsb2dnZWQgYXMgcmVwb3J0ZWQgYnkgdGhvc2UgbGF5ZXJzLg0KPiArICovDQo+ ICtlbnVtIHhlX3NpZ2lkIHsNCj4gK8KgwqDCoMKgwqDCoMKgWEVfU0lHSURfU1fCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqA9DQo+IElOVEVMX1NJR0lEX0dQVV9YRV9T T0ZUV0FSRV9TVEFSVCwNCj4gK8KgwqDCoMKgwqDCoMKgWEVfU0lHSURfUFJPQkXCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqA9DQo+IElOVEVMX1NJR0lEX0dQVV9YRV9TT0ZUV0FS RV9TVEFSVCArIDEsDQo+ICvCoMKgwqDCoMKgwqDCoFhFX1NJR0lEX1dFREdFRMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqA9DQo+IElOVEVMX1NJR0lEX0dQVV9YRV9TT0ZUV0FSRV9T VEFSVCArIDIsDQo+ICvCoMKgwqDCoMKgwqDCoFhFX1NJR0lEX1NVUlZJVkFCSUxJVFnCoMKgwqDC oMKgwqDCoMKgwqDCoD0NCj4gSU5URUxfU0lHSURfR1BVX1hFX1NPRlRXQVJFX1NUQVJUICsgMywN Cj4gK8KgwqDCoMKgwqDCoMKgWEVfU0lHSURfUlVOVElNRV9GV8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgPQ0KPiBJTlRFTF9TSUdJRF9HUFVfWEVfU09GVFdBUkVfU1RBUlQgKyA0LA0KPiArwqDC oMKgwqDCoMKgwqBYRV9TSUdJRF9ERVZJQ0VfRlfCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg PQ0KPiBJTlRFTF9TSUdJRF9HUFVfWEVfU09GVFdBUkVfU1RBUlQgKyA1LA0KPiArwqDCoMKgwqDC oMKgwqBYRV9TSUdJRF9HVF9URFLCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgPQ0K PiBJTlRFTF9TSUdJRF9HUFVfWEVfU09GVFdBUkVfU1RBUlQgKyA2LA0KPiArwqDCoMKgwqDCoMKg wqBYRV9TSUdJRF9NRU1fRkFVTFTCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgPQ0KPiBJTlRF TF9TSUdJRF9HUFVfWEVfU09GVFdBUkVfU1RBUlQgKyA3LA0KPiArwqDCoMKgwqDCoMKgwqBYRV9T SUdJRF9JT19CVVPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgPQ0KPiBJTlRFTF9T SUdJRF9HUFVfWEVfU09GVFdBUkVfU1RBUlQgKyA4LA0KPiArfTsNCj4gKw0KPiArI2VuZGlmDQo+ IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0veGUveGVfbG9nLmMNCj4gYi9kcml2ZXJzL2dw dS9kcm0veGUveGVfbG9nLmMNCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5kZXggMDAwMDAw MDAwMDAwLi43MGE0MWJkZjFhMDENCj4gLS0tIC9kZXYvbnVsbA0KPiArKysgYi9kcml2ZXJzL2dw dS9kcm0veGUveGVfbG9nLmMNCj4gQEAgLTAsMCArMSwxMzUgQEANCj4gKy8vIFNQRFgtTGljZW5z ZS1JZGVudGlmaWVyOiBNSVQNCj4gKy8qDQo+ICsgKiBDb3B5cmlnaHQgwqkgMjAyNiBJbnRlbCBD b3Jwb3JhdGlvbg0KPiArICovDQo+ICsNCj4gKyNpbmNsdWRlICJ4ZV9sb2cuaCINCj4gKyNpbmNs dWRlICJ4ZV9wcmludGsuaCINCj4gKw0KPiArc3RhdGljIHZvaWQgbG9nX2VtaXRfY3BlcihzdHJ1 Y3QgcGNpX2RldiAqcGRldiwgaW50IGNwZXJfc2V2LCBlbnVtDQo+IHhlX3NpZ2lkIHNpZ2lkLA0K PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHUzMiBj b21wb25lbnQsIHUzMiBsb2NhdGlvbiwgY29uc3Qgdm9pZA0KPiAqZGF0YSwgc2l6ZV90IGxlbiwN Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzdHJ1 Y3QgdmFfZm9ybWF0ICp2YWYpDQo+ICt7DQo+ICvCoMKgwqDCoMKgwqDCoC8qIFRPRE8gKi8NCj4g K30NCj4gKw0KPiArc3RhdGljIGJvb2wgaXNfaHdfc2lnaWQoZW51bSB4ZV9zaWdpZCBzaWdpZCkN Cj4gK3sNCj4gK8KgwqDCoMKgwqDCoMKgcmV0dXJuIChpbnQpc2lnaWQgPj0gSU5URUxfU0lHSURf R1BVX1hFX0hBUkRXQVJFX1NUQVJUOw0KPiArfQ0KPiArDQo+ICtzdGF0aWMgYm9vbCBpc19zZXZf ZXJyb3IoaW50IGNwZXJfc2V2KQ0KPiArew0KPiArwqDCoMKgwqDCoMKgwqByZXR1cm4gY3Blcl9z ZXYgIT0gQ1BFUl9TRVZfSU5GT1JNQVRJT05BTDsNCj4gK30NCj4gKw0KPiArc3RhdGljIGNvbnN0 IGNoYXIgKmxvZ19od2VfcHJlZml4KGludCBjcGVyX3NldiwgZW51bSB4ZV9zaWdpZCBzaWdpZCkN Cj4gK3sNCj4gK8KgwqDCoMKgwqDCoMKgcmV0dXJuIGlzX3Nldl9lcnJvcihjcGVyX3NldikgJiYg aXNfaHdfc2lnaWQoc2lnaWQpID8gSFdfRVJSDQo+IDogIiI7DQo+ICt9DQo+ICsNCj4gK3N0YXRp YyBjb25zdCBjaGFyICpsb2dfc2V2X3ByZWZpeChpbnQgY3Blcl9zZXYpDQo+ICt7DQo+ICvCoMKg wqDCoMKgwqDCoHN3aXRjaCAoY3Blcl9zZXYpIHsNCj4gK8KgwqDCoMKgwqDCoMKgY2FzZSBDUEVS X1NFVl9GQVRBTDoNCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJldHVybiAiRkFU QUwgIjsNCj4gK8KgwqDCoMKgwqDCoMKgY2FzZSBDUEVSX1NFVl9SRUNPVkVSQUJMRToNCj4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJldHVybiAiIjsNCj4gK8KgwqDCoMKgwqDCoMKg Y2FzZSBDUEVSX1NFVl9DT1JSRUNURUQ6DQo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqByZXR1cm4gIkNPUlJFQ1RFRCAiOw0KPiArwqDCoMKgwqDCoMKgwqBkZWZhdWx0Og0KPiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuICIiOw0KPiArwqDCoMKgwqDCoMKgwqB9 DQo+ICt9DQo+ICsNCj4gKyNkZWZpbmUgX19MT0dfRFJNX1BSSU5US19GTVQoZm10LCBhcmdzLi4u KcKgwqDCoMKgwqAiW2RybV0gIiBmbXQsICMjYXJncw0KPiArI2RlZmluZSBfX0xPR19EUk1fUFJJ TlRLX0VSUl9GTVQoZm10LA0KPiBhcmdzLi4uKcKgX19MT0dfRFJNX1BSSU5US19GTVQoIipFUlJP UiogIiBmbXQsIGFyZ3MpDQo+ICsNCj4gK3N0YXRpYyB2b2lkIGxvZ19kbWVzZ192cHJpbnRrKHN0 cnVjdCBwY2lfZGV2ICpwZGV2LCBpbnQgY3Blcl9zZXYsDQo+IHN0cnVjdCB2YV9mb3JtYXQgKnZh ZikNCj4gK3sNCj4gK8KgwqDCoMKgwqDCoMKgaWYgKGNwZXJfc2V2ID09IENQRVJfU0VWX0lORk9S TUFUSU9OQUwpDQo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBwY2lfaW5mbyhwZGV2 LCBfX0xPR19EUk1fUFJJTlRLX0ZNVCgiJXBWIiwgdmFmKSk7DQo+ICvCoMKgwqDCoMKgwqDCoGVs c2UNCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHBjaV9lcnIocGRldiwgX19MT0df RFJNX1BSSU5US19FUlJfRk1UKCIlcFYiLCB2YWYpKTsNCj4gK30NCj4gKw0KPiArc3RhdGljIHZv aWQgbG9nX2RtZXNnX3ByaW50ZihzdHJ1Y3QgcGNpX2RldiAqcGRldiwgaW50IGNwZXJfc2V2LA0K PiBjb25zdCBjaGFyICpmbXQsIC4uLikNCj4gK3sNCj4gK8KgwqDCoMKgwqDCoMKgc3RydWN0IHZh X2Zvcm1hdCB2YWY7DQo+ICvCoMKgwqDCoMKgwqDCoHZhX2xpc3QgYXJnczsNCj4gKw0KPiArwqDC oMKgwqDCoMKgwqB2YV9zdGFydChhcmdzLCBmbXQpOw0KPiArwqDCoMKgwqDCoMKgwqB2YWYuZm10 ID0gZm10Ow0KPiArwqDCoMKgwqDCoMKgwqB2YWYudmEgPSAmYXJnczsNCj4gKw0KPiArwqDCoMKg wqDCoMKgwqBsb2dfZG1lc2dfdnByaW50ayhwZGV2LCBjcGVyX3NldiwgJnZhZik7DQo+ICsNCj4g K8KgwqDCoMKgwqDCoMKgdmFfZW5kKGFyZ3MpOw0KPiArfQ0KPiArDQo+ICtzdGF0aWMgdm9pZCBs b2dfZW1pdF9kbWVzZyhzdHJ1Y3QgcGNpX2RldiAqcGRldiwgaW50IGNwZXJfc2V2LCBlbnVtDQo+ IHhlX3NpZ2lkIHNpZ2lkLA0KPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgdTMyIGNvbXBvbmVudCwgdTMyIGxvY2F0aW9uLCBjb25zdCB2b2lkDQo+ ICpkYXRhLCBzaXplX3QgbGVuLA0KPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgc3RydWN0IHZhX2Zvcm1hdCAqdmFmKQ0KPiArew0KPiArwqDCoMKg wqDCoMKgwqBjb25zdCBjaGFyICpod2VfcHJlZml4ID0gbG9nX2h3ZV9wcmVmaXgoY3Blcl9zZXYs IHNpZ2lkKTsNCj4gK8KgwqDCoMKgwqDCoMKgY29uc3QgY2hhciAqc2V2X3ByZWZpeCA9IGxvZ19z ZXZfcHJlZml4KGNwZXJfc2V2KTsNCj4gKw0KPiArwqDCoMKgwqDCoMKgwqAvKiBUT0RPOiBhZGQg Y29tcG9uZW50L2xvY2F0aW9uIGRldGFpbHMgKi8NCj4gKw0KPiArwqDCoMKgwqDCoMKgwqBpZiAo SVNfRVJSKGRhdGEpKQ0KPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgbG9nX2RtZXNn X3ByaW50ZihwZGV2LCBjcGVyX3NldiwgIlNJR0lEPSV1ICVzKCVwZSkNCj4gJXMlcFYiLA0KPiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgc2lnaWQsIHNldl9wcmVmaXgsIGRhdGEsIGh3ZV9wcmVmaXgsDQo+IHZhZik7DQo+ICvC oMKgwqDCoMKgwqDCoGVsc2UgaWYgKGRhdGEgJiYgbGVuKQ0KPiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgbG9nX2RtZXNnX3ByaW50ZihwZGV2LCBjcGVyX3NldiwgIlNJR0lEPSV1ICVz KCUqcGhOKQ0KPiAlcyVwViIsDQo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzaWdpZCwgc2V2X3ByZWZpeCwgKGludClsZW4s IGRhdGEsDQo+IGh3ZV9wcmVmaXgsIHZhZik7DQo+ICvCoMKgwqDCoMKgwqDCoGVsc2UNCj4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGxvZ19kbWVzZ19wcmludGYocGRldiwgY3Blcl9z ZXYsICJTSUdJRD0ldSAlcyVzJXBWIiwNCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHNpZ2lkLCBzZXZfcHJlZml4LCBod2Vf cHJlZml4LCB2YWYpOw0KPiArfQ0KPiArDQo+ICsvKioNCj4gKyAqIHhlX2xvZ19lbWl0KCkgLSBF bWl0IGEgc3RydWN0dXJlZCBTSUdJRCBsb2cgZW50cnkNCj4gKyAqIEBwZGV2OiB0aGUgJnBjaV9k ZXYgZGV2aWNlDQo+ICsgKiBAY3Blcl9zZXY6IENQRVIgc2V2ZXJpdHkgKENQRVJfU0VWX0ZBVEFM LCBDUEVSX1NFVl9SRUNPVkVSQUJMRSwNCj4gLi4uKQ0KPiArICogQHNpZ2lkOiBzaWduYXR1cmUg aWRlbnRpZmllciwgc2VlICZlbnVtIHhlX3NpZ2lkDQo+ICsgKiBAY29tcG9uZW50OiBjb21wb25l bnQgaWRlbnRpZmVyDQo+ICsgKiBAbG9jYXRpb246IGxvY2F0aW9uIGRldGFpbHMgb2YgdGhlIEBj b21wb25lbnQNCj4gKyAqIEBkYXRhOiBwb2ludGVyIHRvIHRoZSBhZGRpdGlvbmFsIGRldGFpbHMs IG9yIEVSUl9QVFIsIG9yIE5VTEwgaWYNCj4gbm90IGFwcGxpY2FibGUNCj4gKyAqIEBsZW46IGxl bmd0aCBvZiB0aGUgQGRhdGEgaW4gYnl0ZXMsIG9yIDAgaWYgbm90IGFwcGxpY2FibGUNCj4gKyAq IEBmbXQ6IHByaW50Zi1zdHlsZSBmb3JtYXQgc3RyaW5nDQo+ICsgKiBALi4uOiBmb3JtYXQgYXJn dW1lbnRzDQo+ICsgKg0KPiArICogRW1pdHMgYSBkbWVzZyBsaW5lIHRoYXQgaW5jbHVkZXMgYSBz aW5nbGUgc3RhYmxlLCBtYWNoaW5lLQ0KPiBtYXRjaGFibGUgdG9rZW4NCj4gKyAqIGBgU0lHSUQ9 PG4+YGAgZm9sbG93ZWQgYnkgdGhlIG9wdGlvbmFsIHNldmVyaXR5IHRva2VuIChsaWtlDQo+IGBg RkFUQUxgYCkgYW5kLA0KPiArICogd2hlbiBAZGF0YSBwb2ludGVyIGlzIHNldCwgZWl0aGVyIHRo ZSBlcnJvciBwcmludGVkIHdpdGggJXBlIG9yIGENCj4gcGFja2VkIGhleA0KPiArICogZHVtcCBv ZiB0aGUgQGRhdGEgYmluYXJ5IGJsb2IuIFRoZSBkbWVzZyBsaW5lIHdpbGwgYWxzbyBpbmNsdWRl DQo+IHByaW50Zi1zdHlsZQ0KPiArICogdGV4dCBtZXNzYWdlLg0KPiArICoNCj4gKyAqIE5vdGUg dGhhdCB0aGUgZnVsbCBkbWVzZyBsaW5lLCB3aXRoIHRoZSBmcmVlIHRleHQgbWVzc2FnZSwgaXMN Cj4gb25seSBhIGRlYnVnZ2luZw0KPiArICogYWlkLCBub3QgYW4gaW50ZXJmYWNlISBPbmx5IHRo ZSBgYFNJR0lEPTxuPmBgIHRva2VuIGlzIHN0YWJsZQ0KPiB0aGVyZS4NCj4gKyAqIFRoZSBkdXJh YmxlIG1hY2hpbmUgcmVjb3JkIGlzIHRoZSBDUEVSIGNhcnJ5aW5nIHRoZSBzYW1lIFNJR0lELg0K PiArICoNCj4gKyAqIE5vdGU6IGdlbmVyYXRpb24gb2YgdGhlIENQRVIgcmVjb3JkIGlzIGEgcGxh bm5lZCBmb2xsb3ctdXAuDQo+ICsgKg0KPiArICogRXhhbXBsZXM6Og0KPiArICoNCj4gKyAqwqDC oCA8Mz4geGUgMDAwMDowMzowMC4wOiBbZHJtXSAqRVJST1IqIFNJR0lEPTEwNCBGQVRBTCAoLUVQ Uk9UTykNCj4gSW52YWxpZCBHdUMgcmVwbHkNCj4gKyAqwqDCoCA8Mz4geGUgMDAwMDowMzowMC4w OiBbZHJtXSAqRVJST1IqIFNJR0lEPTEwNiAoLUVUSU1FRE9VVCkNCj4gRW5naW5lICdyY3MwJyBo dW5nDQo+ICsgKsKgwqAgPDY+IHhlIDAwMDA6MDM6MDAuMDogW2RybV0gKkVSUk9SKiBTSUdJRD0x MDMgSW4gc3Vydml2YWJpbGl0eQ0KPiBtb2RlDQo+ICsgKi8NCj4gK3ZvaWQgeGVfbG9nX2VtaXQo c3RydWN0IHBjaV9kZXYgKnBkZXYsIGludCBjcGVyX3NldiwgZW51bSB4ZV9zaWdpZA0KPiBzaWdp ZCwNCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB1MzIgY29tcG9uZW50LCB1MzIg bG9jYXRpb24sIGNvbnN0IHZvaWQgKmRhdGEsDQo+IHNpemVfdCBsZW4sDQo+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgY29uc3QgY2hhciAqZm10LCAuLi4pDQo+ICt7DQo+ICvCoMKg wqDCoMKgwqDCoHN0cnVjdCB2YV9mb3JtYXQgdmFmOw0KPiArwqDCoMKgwqDCoMKgwqB2YV9saXN0 IGFyZ3M7DQo+ICsNCj4gK8KgwqDCoMKgwqDCoMKgdmFfc3RhcnQoYXJncywgZm10KTsNCj4gK8Kg wqDCoMKgwqDCoMKgdmFmLmZtdCA9IGZtdDsNCj4gK8KgwqDCoMKgwqDCoMKgdmFmLnZhID0gJmFy Z3M7DQo+ICsNCj4gK8KgwqDCoMKgwqDCoMKgbG9nX2VtaXRfZG1lc2cocGRldiwgY3Blcl9zZXYs IHNpZ2lkLCBjb21wb25lbnQsIGxvY2F0aW9uLA0KPiBkYXRhLCBsZW4sICZ2YWYpOw0KPiArwqDC oMKgwqDCoMKgwqBsb2dfZW1pdF9jcGVyKHBkZXYsIGNwZXJfc2V2LCBzaWdpZCwgY29tcG9uZW50 LCBsb2NhdGlvbiwNCj4gZGF0YSwgbGVuLCAmdmFmKTsNCj4gKw0KPiArwqDCoMKgwqDCoMKgwqB2 YV9lbmQoYXJncyk7DQo+ICt9DQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0veGUveGVf bG9nLmgNCj4gYi9kcml2ZXJzL2dwdS9kcm0veGUveGVfbG9nLmgNCj4gbmV3IGZpbGUgbW9kZSAx MDA2NDQNCj4gaW5kZXggMDAwMDAwMDAwMDAwLi5kNDc1ZTgxNmVlMGINCj4gLS0tIC9kZXYvbnVs bA0KPiArKysgYi9kcml2ZXJzL2dwdS9kcm0veGUveGVfbG9nLmgNCj4gQEAgLTAsMCArMSwyMCBA QA0KPiArLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVCAqLw0KPiArLyoNCj4gKyAqIENv cHlyaWdodCDCqSAyMDI2IEludGVsIENvcnBvcmF0aW9uDQo+ICsgKi8NCj4gKw0KPiArI2lmbmRl ZiBfWEVfTE9HX0hfDQo+ICsjZGVmaW5lIF9YRV9MT0dfSF8NCj4gKw0KPiArI2luY2x1ZGUgPGxp bnV4L2NwZXIuaD4NCj4gKw0KPiArI2luY2x1ZGUgImFiaS94ZV9zaWdpZF9hYmkuaCINCj4gKw0K PiArc3RydWN0IHBjaV9kZXY7DQo+ICsNCj4gK19fcHJpbnRmKDgsIDkpDQo+ICt2b2lkIHhlX2xv Z19lbWl0KHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBpbnQgY3Blcl9zZXYsIGVudW0geGVfc2lnaWQN Cj4gc2lnaWQsDQo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdTMyIGNvbXBvbmVu dCwgdTMyIGxvY2F0aW9uLCBjb25zdCB2b2lkICpkYXRhLA0KPiBzaXplX3QgbGVuLA0KPiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGNvbnN0IGNoYXIgKmZtdCwgLi4uKTsNCj4gKw0K PiArI2VuZGlmDQoNCg==