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 CA0BBECE58E for ; Mon, 9 Sep 2024 23:59:10 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 4D19210E028; Mon, 9 Sep 2024 23:59:10 +0000 (UTC) Authentication-Results: gabe.freedesktop.org; dkim=pass (2048-bit key; unprotected) header.d=intel.com header.i=@intel.com header.b="CY6zvSmm"; dkim-atps=neutral Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.10]) by gabe.freedesktop.org (Postfix) with ESMTPS id 7F0E710E028 for ; Mon, 9 Sep 2024 23:59:08 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1725926348; x=1757462348; h=from:to:subject:date:message-id:references:in-reply-to: content-id:content-transfer-encoding:mime-version; bh=FhOteBvHP/yR7jSK6NZC3MN7uHmizW+j6NyvizRhnNk=; b=CY6zvSmmBNW3dcQAa0Ajd1D8Pi25Q0lhEIhjlwVQzZ3PiEIpWaVAnCaM FdYwdTVL/mKuv0tRvI200pFgiwB0UToSTVYNvYzlsM+fN/uAXy+adepRV LXT5vCM0m/AlFqmawRXrnabCzkMPgoSTpTz7Y4dudC5VlDZb4G+EDVEYA uSPXT/db5ghSF3XBxDCKRdC6JKkp+hSa85+SnMcFOdaPTtSzJPlDACoiy BQNvvPnp6Df5uP7+ea0f67M6MxSFkebHhFG4YjnNLhzucyltWpKjFaCKe 3VdF321JRRMz1N37QJBGlRMgFvvmgV3vz/ciJKEMzqVB9jcn1QEqp9/vK w==; X-CSE-ConnectionGUID: 1TJkpNjvRSCGllpH7pUqJg== X-CSE-MsgGUID: VCFZkrlQTEqiSFtdaPGMkg== X-IronPort-AV: E=McAfee;i="6700,10204,11190"; a="36032434" X-IronPort-AV: E=Sophos;i="6.10,215,1719903600"; d="scan'208";a="36032434" Received: from fmviesa005.fm.intel.com ([10.60.135.145]) by fmvoesa104.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 09 Sep 2024 16:59:08 -0700 X-CSE-ConnectionGUID: 9DG2kF3YSU6UBKmmUMzjGQ== X-CSE-MsgGUID: 4GlHM7ArQjCMw3alZVSZQw== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.10,215,1719903600"; d="scan'208";a="71229853" Received: from orsmsx602.amr.corp.intel.com ([10.22.229.15]) by fmviesa005.fm.intel.com with ESMTP/TLS/AES256-GCM-SHA384; 09 Sep 2024 16:59:07 -0700 Received: from orsmsx611.amr.corp.intel.com (10.22.229.24) 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; Mon, 9 Sep 2024 16:59:07 -0700 Received: from orsmsx610.amr.corp.intel.com (10.22.229.23) by ORSMSX611.amr.corp.intel.com (10.22.229.24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.39; Mon, 9 Sep 2024 16:59:06 -0700 Received: from ORSEDG602.ED.cps.intel.com (10.7.248.7) by orsmsx610.amr.corp.intel.com (10.22.229.23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.39 via Frontend Transport; Mon, 9 Sep 2024 16:59:06 -0700 Received: from NAM12-DM6-obe.outbound.protection.outlook.com (104.47.59.177) 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; Mon, 9 Sep 2024 16:59:05 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=yYLjscRPYKg6D+Ake2j84Ofujb/wXNv1zZRDkJ5HEmYMLScy4hfP14fOA836K6X6st4+/bG4ftrJvV2VPDS7AVUKgqbF4PKu6Pw2uUNCvDZ0t1S2zVNidmntCfP24ZmmHEKDeQtDgeyVEyOXKkSKUPV9CoH/ZdZPG0B4rL0OtKLmShxAvZe6iFgLbsAK9cmV+GlWbrCIDfzO1kkcuEaHqnh5q8hQrEteTm7ImaAT7nY3cw0qtP77hVFWFGovb0om9zthCJ2OCGl/UsGudR11Mr75k8vxjdARUyACN0tXhbDQtdSkNkj+LxY2XJ4h00+IpW7KqNB1JXM68oFaYsAkBA== 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=FhOteBvHP/yR7jSK6NZC3MN7uHmizW+j6NyvizRhnNk=; b=hlnkNaUMGm0pzrrvvxBFtbCxh356Zvlkh45vEUIglkFlxmgPXLGRWJhyWEDv+Vombfvgsry3ETYe1R2CBTjtPrD0lC47uc7x7OQHy7wwdlYBLiBRSJPBcx0lqNl1TdMRmnHb1f/yUIJN4BuYxGsCpn74ghGgYGFyM2ImbiRNCsP4Ac2uNMQRROT4M939aryi9n2dk+M85r/RTWcur0F/tdW2CviYJwKH6Tbspw6Qkdt5K7PcmlqU+Dq9hUtw5EsqL4PH0Y5eGgJ3gvmWQy/ENcfbnySRP9tDhOHv/0NEv7NaZhCFd5gS2fArp0xF1EETwlhEhk0F6bEz99ZFK5nKjw== 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 DM8PR11MB5751.namprd11.prod.outlook.com (2603:10b6:8:12::16) by DS7PR11MB7834.namprd11.prod.outlook.com (2603:10b6:8:ed::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7939.20; Mon, 9 Sep 2024 23:58:58 +0000 Received: from DM8PR11MB5751.namprd11.prod.outlook.com ([fe80::4046:430d:f16c:b842]) by DM8PR11MB5751.namprd11.prod.outlook.com ([fe80::4046:430d:f16c:b842%5]) with mapi id 15.20.7939.022; Mon, 9 Sep 2024 23:58:58 +0000 From: "Teres Alexis, Alan Previn" To: "Dong, Zhanjun" , "intel-xe@lists.freedesktop.org" Subject: Re: [PATCH v18 6/6] drm/xe/guc: Save manual engine capture into capture list Thread-Topic: [PATCH v18 6/6] drm/xe/guc: Save manual engine capture into capture list Thread-Index: AQHbAKr+Mq/kU+kTFkyrmGuKnZe7ErJQJx8A Date: Mon, 9 Sep 2024 23:58:58 +0000 Message-ID: <1d474d7b20cc28b245f4016e1da3b28af498da10.camel@intel.com> References: <20240906222006.279581-1-zhanjun.dong@intel.com> <20240906222006.279581-7-zhanjun.dong@intel.com> In-Reply-To: <20240906222006.279581-7-zhanjun.dong@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: DM8PR11MB5751:EE_|DS7PR11MB7834:EE_ x-ms-office365-filtering-correlation-id: 3dac9155-9ace-44ef-68ee-08dcd12b5ec5 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230040|1800799024|376014|366016|38070700018; x-microsoft-antispam-message-info: =?utf-8?B?bDE3cFR4VEtlMjl2NlZxaHh4OWk4QjlPeDI4SzVmMkdTQjFGNTI2TUl2bHhl?= =?utf-8?B?d2M1M2ZsamFGajRxVnpYaUVhVzg4MlRwbnIydWQzVTJDMElKRkRwZ3hLRDZz?= =?utf-8?B?SThZV3lkQUZWRXgramhTTnNuTTFzM0RCTXY5blN0V1FxRmV1WVUrYXJWelhG?= =?utf-8?B?ZE9oU3V3N0JUdTFmNXZlamprSU5sYU5mUmR3MUxoZDE5NDQ2aXFYYUYzaXBv?= =?utf-8?B?OWl0SFZCUmZYSUZLRllRS0dka2RPSzJTK1hyOGJsazU1SmNQc2FaYXBWZlYw?= =?utf-8?B?UjloQWcxQUI2ZVVjbGZWYUo0WTFRL3B2b2lEdEFUY2JzQzFWNjd6K1dkVkRs?= =?utf-8?B?elMvZHhjR3l5RkpkQ0ZLWHcvem4xbmhybWlGRTFIbFZxYkVrR0oyb3U5Y0h1?= =?utf-8?B?WVJmNVI3OWVOa3NvKzg0K2ZuK0JxT21kWHVpRktBbXEvZjZUTlJvTlpjNHU4?= =?utf-8?B?RjNnVElzNDZNbmo3SzlJc3kxSGJCTXpKRE9uOWN0YnpnSnNidGRYUWtjLytI?= =?utf-8?B?NmhOb1M0R015YzdqVG5GOUJrUTRsMS9SdldJRzRiZndBV05VTXNlWUVxUUJK?= =?utf-8?B?V2k4M2E3WjZjOHd1QkJUOGk3NWl2NWpGbVhNZjFWbDBDYktDWmd0SkgxME5q?= =?utf-8?B?VXBWS0lzaGZKTW1vTDBkY3liYXpMZFN0U2JXcnM4TGNaalRCblRCUStKekps?= =?utf-8?B?b0hkbXh5WUEwc0gvT2hvT05LYTA1WEtQRExSYzc0Z0R4WmtTaTJ1bG56Vncz?= =?utf-8?B?aEJ6emtFajhwOVF6bGVnRzNUQ0xBN2g3TGJTQmUvdG9QUmRXM3oyVlhHbm8r?= =?utf-8?B?aGVmTG1hcnpOM2hzdW5wczU4WXJLZ2V4L1BaSlFmZExlaUI1VW9ESFovNW4r?= =?utf-8?B?ditlNzdxM2dwRThVM3pCckN2UWtuQnVsYnNlOUlnZmtWbVhNTkh2emRCRFFx?= =?utf-8?B?cS9mbmFNMWZhbVJJQTdvd3RkZ1huUDhyMDRUaGN3NmN4RGppQ1k5ZU9xQytr?= =?utf-8?B?UzVWNWc3L3RqQXVUN2MyN1NKdEhIZm5kcVZkOVQ3RHpqTldERURRYmRwTGJ3?= =?utf-8?B?dWwvcEZvTmxQWTlubW9HVml6dzhHWTVjRFdqUVdNU0hnRDU0dTJ3bmwrcnZT?= =?utf-8?B?UTdXU0ZRNlpkdUsycldNT2xTbDNpTjVmWGNrT3o3ckFpc0dtNDFDaXEraUlz?= =?utf-8?B?QkE3dEpEN2habXZFNkFyc0IzQys0czJiUyt4eThCRlVnb2FnK2J6cG1LWDZs?= =?utf-8?B?bUdwNDAxWm9rVG40Si9adU0xUm1JT1FFZUhaWmdBSTdkMForcUMrbjl2UHFJ?= =?utf-8?B?OHZNNmpveWFVZTR3QklCTS9mQmtEajE4STdxNmVUNTBIYlkyTGpkR1h4aUVn?= =?utf-8?B?alUrSlFPV0ZFZzRrdjY2UVBwc3pXQ3FTYWhDUmd6Wkd1T1NybzJMTEQ5Mm9Y?= =?utf-8?B?RGkraWh5RndiTVMwRmllWDRoWHA3YlFaVDE4V3dvYzdscVNKenhCRXhvS20x?= =?utf-8?B?YlVROUExUGlRQlJ5V1g4S0ZWZlBrTTdsRDFieGRUTmIzQUJtMjVKem8wcFZY?= =?utf-8?B?R2JTYjUwTTk0MUlJWnJWWDZMcnVUWFNrUEhwWkZUd0ZmM0lqblY0d2JyRjdh?= =?utf-8?B?YkhXVnZPejZyM3pRWG9wdDEvSmhsb0p5TDRRaVVacnRzYVdrYWh5NGRqNnVK?= =?utf-8?B?YUxibGRQeTJBOU5sMXFCWU10Nno0TXpOTmwvejBiMXF0YXNVZ1NEaU0rQUV2?= =?utf-8?B?UzBnM2JIZ1RXbkdnbE82bHdDOXRlSWVYN2FKQVZsRVkyWTZIRmdrY3pzNVAz?= =?utf-8?B?M3VxZnpjb2FLbTVDSmlOeEpDNUg4S3ZDYkJBRlExNm4vM1l5bGhpbVdQbGpM?= =?utf-8?B?bDA5TDFjKzBjcjM3eXJWZmFxVXplWG9uaUY2d1BHOTllbEE9PQ==?= x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DM8PR11MB5751.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(1800799024)(376014)(366016)(38070700018); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?YmhxRVk4SFZMYTQ0OW55NjV3dC9MeWZKc2t4SHVScnRSbEd6cmRFOE0reTdC?= =?utf-8?B?L2ZHdmV5a2VWOG5hVnJGYTdRVzJteDFDUFRRV0d2V2tHSncxZHIvdjFoTWI0?= =?utf-8?B?WXNUOVM2Zmd0NkYrQXFKMjZrMUdXQ0FkR2d2WXFvMHNnL1Q1VUE2NTFlcG81?= =?utf-8?B?aDBsU0dQaTZHQVB3TWZjWjFsRFlhSGYvSFhsaUU3ZThvM1VQUUU5UVQ5Vlh3?= =?utf-8?B?QWpOYy94WW9GZHdJaGg4VHZVMWhiMXFsajQ4T3Y1eDBkRjY2RmxlOGJQVkRT?= =?utf-8?B?VXdMWk5UY2thOWJzSnlKTCtKUmxsUjhFR0hzN0Q2VFRlV1ptdFNVQTBlMzNX?= =?utf-8?B?OUljZWVPelhIYUc3Y2dRKzVVL0ZwNHV4Y0VRMytEWkZ6aU1oY2YyWDZqWTRn?= =?utf-8?B?RUIwcWFHN3h6Tjd1TkFYRGNrV1FxdVZnT2MxVXZsTzY5MDNHcHNZMTFsRkhZ?= =?utf-8?B?aHJqc3luWC9ZNmV2dEJZclgxeUF0b3N3MGIzUnVDQkhJYWcyRHYwWGVuZmlr?= =?utf-8?B?RGpNc25CWHhzaGduUnc4K21tZG9paXhQSDdieXU0TE1XdDdzY1BpSGFUdVhJ?= =?utf-8?B?dVlEdHlScFJ4enFmTVpGUVdCWmcvaXk4TUlhK2lac0c0VTJqbWJtajZneDBl?= =?utf-8?B?UFFmMWxhSnBOY2kzMldUMllBVjk5SkUwdE1JMEZWTk9Zc21EM0ppK3ZlaUc1?= =?utf-8?B?cG01dUNjZmRYNUlOY0pmUlJuam9Rb3hYeHhpWGE1OVZZVUdTeUE4eDQxdm1I?= =?utf-8?B?WFpJamZGV1ZWMVFtYXpLSDlaS1MzR0lmWk9pQUhrT2p2aXRSTjZjWUZYek5F?= =?utf-8?B?czM5NEN0a0ZNdEdDWFRiVnZUNnVUaUhhNjdzUUVnTUdjcW96VmhIRjJadkVL?= =?utf-8?B?cDdDYU95dG5ZK0h0NG9BNWQyMS9KRTNqTkVDeUlNY0NaRG9yb0RrUWtQMzQy?= =?utf-8?B?QTQ4cEhHbk8yeHRBR1cvU3U0NjhjbHNDdTFWM2xRVzJvVkNwZDVlOE43L2xR?= =?utf-8?B?V2creVByWTBXbW9KM1Q3VExyQXU0ZFc5aFRjYXBWODJTRk1mOHphRXFBR1NO?= =?utf-8?B?cHphcHVzVmMzd21nazU0QjBmdnFXUVFpRU0vQ1VSOUVZYkFaeWxKVFRNTFd0?= =?utf-8?B?Q053dXBVZTViVVlxazc4a1J5SmoxMkhLcktuWXExT0ZJbGlhelI5YlE3UGJC?= =?utf-8?B?Q3RBbzM5OGU0enBPTGw5OGRhMkQ5R1o4WHJDM2F4dXhnL2VnZVpDa05VS0Z6?= =?utf-8?B?L1BENFpCcEhxZFNtNjhTSEpTNk9kQWdsck5RMVJTTGVXdnRsYlRqTmRUaDB6?= =?utf-8?B?YXFxbUZ4UE5sVHNYYWxULzFJWHVSSVFjS0RBYXBlaHhWWWM4Qnlwc0RwaXgy?= =?utf-8?B?T1FuZ0pZT2x1dWFjSWNxWTB2NW5xbW9NZlpob0VsazFzTElHY1U1YnhRRjhi?= =?utf-8?B?V2R1bDFDV1ErejF2V0JNTHlCUmZpcWR4WjRBZnFIVHl2aGtMRm1tYU9weDV6?= =?utf-8?B?bGtSQVRJUCt2QkFQSFNMRVdlY0p6Y041WnFZM1BqUlZlc3hZdVh6UGE0OUs0?= =?utf-8?B?UE9nNmdydEZ2NW82UElQRkpBQXFuRlkraXorS0Z6S3d2aUp5Y1NOQW1PZ3Rk?= =?utf-8?B?M2ZIM09RRW1vQnJ4ZEFZbTNBSEJzMWJFS0ZXa1cwQUl2bVQ4NDdqR3NFUzFr?= =?utf-8?B?ZG5iV3o0c21MTU9nYkt2YXJjUEptYVErUUhnRTJRZU9SbU12SWZjU29JaWNm?= =?utf-8?B?Zkh6dXVGTGY5TG9ldTVQSjl4Z2VOQTZCTTVqazdEQzdrNEN4TGdleEJlMC85?= =?utf-8?B?WGhCSlN3RHBBZTBDNktjTXY3LzhqaWk4RGRtMUd5aUtIZlVHd25qdmdINDdp?= =?utf-8?B?WEE2VVl6U2RPMTBnM3JoR0pkRDJnK3JaRHNGbExlZG9lNEpyS3FQc0Z2aXI3?= =?utf-8?B?cWwycHU5cXFhb0x6L2IyR3JZSUN4aVJyNE5FK2IzOGIzUE0zUGNBdk1XTzYw?= =?utf-8?B?QXRZdHhscnpXd01kQWtNWFZOY2l5K0ZIWEJ4MHhrQloyRFBxb0kzZHFGVlR3?= =?utf-8?B?OWJiczA0MnNLVU1Bd2pWRngxY1R5dnd4cVZ0dGVpbjE3ZjZJa0ZGcTZFUFVI?= =?utf-8?B?U2VOM2lLRmIybXpYSFI3bXlNOUlLcXJJRjBWWUNKNTYxVTJ3UENOTm0zSFdj?= =?utf-8?Q?wz1NA6DrVqbRqrW15Ck47G8=3D?= Content-Type: text/plain; charset="utf-8" Content-ID: Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: DM8PR11MB5751.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 3dac9155-9ace-44ef-68ee-08dcd12b5ec5 X-MS-Exchange-CrossTenant-originalarrivaltime: 09 Sep 2024 23:58:58.1742 (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: AEwbg03RsSGbK0ZIDuNQB4tEg/DcuKtWLrvL4EVwlEoHgWVWrYuvDmst1lvKNM0xNbxJRo8Sozuvushe9VEqYYVDndaD+az0CcJsj0vTGPJEfnODKzicpoap0sYvtc+W X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS7PR11MB7834 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" TG9va3MgZ29vZC4gVGhhbmtzIGFnYWluIGZvciB0aGUgc3BsaXQgZnJvbSBlYXJsaWVyIHBhdGNo LiBtdWNoIGNsZWFuZXIgYnJlYWtkb3duLgoKUmV2aWV3ZWQtYnk6IEFsYW4gUHJldmluIDxhbGFu LnByZXZpbi50ZXJlcy5hbGV4aXNAaW50ZWwuY29tPgoKT24gRnJpLCAyMDI0LTA5LTA2IGF0IDE1 OjIwIC0wNzAwLCBaaGFuanVuIERvbmcgd3JvdGU6Cj4gU2F2ZSBtYW51YWwgZW5naW5lIGNhcHR1 cmUgaW50byBjYXB0dXJlIGxpc3QuCj4gUmVtb3ZlZCBzb3VyY2UgY29kZSBmb3IgaGFyZCBjb2Rl ZCBlbmdpbmUgY2FwdHVyZSwgZGF0YSBzdHJ1Y3R1cmUgYW5kCj4gbWFudWFsIHNuYXBzaG90IHBy aW50LgphbGFuOiBuaXQ6ICJUaGlzIHJlbW92ZXMgZHVwbGljYXRlIHJlZ2lzdGVyIGRlZmluaXRp b25zIGFjcm9zcyAKbWFudWFsLWNhcHR1cmUgdnMgZ3VjLWVyci1jYXB0dXJlIi4KPiAKPiBTaWdu ZWQtb2ZmLWJ5OiBaaGFuanVuIERvbmcgPHpoYW5qdW4uZG9uZ0BpbnRlbC5jb20+Cj4gLS0tCj4g wqBkcml2ZXJzL2dwdS9kcm0veGUveGVfZGV2Y29yZWR1bXAuY8KgwqDCoMKgIHzCoMKgIDMgKy0K PiDCoGRyaXZlcnMvZ3B1L2RybS94ZS94ZV9ndWNfY2FwdHVyZS5jwqDCoMKgwqAgfCAxMzggKysr KysrKysrKysrLQo+IMKgZHJpdmVycy9ncHUvZHJtL3hlL3hlX2d1Y19jYXB0dXJlLmjCoMKgwqDC oCB8wqDCoCAzICstCj4gwqBkcml2ZXJzL2dwdS9kcm0veGUveGVfaHdfZW5naW5lLmPCoMKgwqDC oMKgwqAgfCAyNDUgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCj4gwqBkcml2ZXJzL2dwdS9kcm0v eGUveGVfaHdfZW5naW5lLmjCoMKgwqDCoMKgwqAgfMKgwqAgMiAtCj4gwqBkcml2ZXJzL2dwdS9k cm0veGUveGVfaHdfZW5naW5lX3R5cGVzLmggfMKgIDU5IC0tLS0tLQo+IMKgNiBmaWxlcyBjaGFu Z2VkLCAxNDAgaW5zZXJ0aW9ucygrKSwgMzEwIGRlbGV0aW9ucygtKQo+IAo+IGRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0veGUveGVfZGV2Y29yZWR1bXAuYyBiL2RyaXZlcnMvZ3B1L2RybS94 ZS94ZV9kZXZjb3JlZHVtcC5jCj4gaW5kZXggMzlkYmNjNjgwMzI3Li4zNTVlYzRiZDBjZWYgMTAw NjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL3hlL3hlX2RldmNvcmVkdW1wLmMKPiArKysgYi9k cml2ZXJzL2dwdS9kcm0veGUveGVfZGV2Y29yZWR1bXAuYwo+IEBAIC0xMDcsOCArMTA3LDcgQEAg c3RhdGljIHNzaXplX3QgX194ZV9kZXZjb3JlZHVtcF9yZWFkKGNoYXIgKmJ1ZmZlciwgc2l6ZV90 IGNvdW50LAo+IMKgwqDCoMKgwqDCoMKgwqBkcm1fcHJpbnRmKCZwLCAiXG4qKioqIEhXIEVuZ2lu ZXMgKioqKlxuIik7Cj4gwqDCoMKgwqDCoMKgwqDCoGZvciAoaSA9IDA7IGkgPCBYRV9OVU1fSFdf RU5HSU5FUzsgaSsrKQo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKGNvcmVk dW1wLT5zbmFwc2hvdC5od2VbaV0pCj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqB4ZV9od19lbmdpbmVfc25hcHNob3RfcHJpbnQoY29yZWR1bXAtPnNuYXBz aG90Lmh3ZVtpXSwKPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCAmcCk7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB4 ZV9lbmdpbmVfc25hcHNob3RfcHJpbnQoY29yZWR1bXAtPnNuYXBzaG90Lmh3ZVtpXSwgJnApOwo+ IMKgwqDCoMKgwqDCoMKgwqBkcm1fcHJpbnRmKCZwLCAiXG4qKioqIFZNIHN0YXRlICoqKipcbiIp Owo+IMKgwqDCoMKgwqDCoMKgwqB4ZV92bV9zbmFwc2hvdF9wcmludChjb3JlZHVtcC0+c25hcHNo b3Qudm0sICZwKTsKPiDCoAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0veGUveGVfZ3Vj X2NhcHR1cmUuYyBiL2RyaXZlcnMvZ3B1L2RybS94ZS94ZV9ndWNfY2FwdHVyZS5jCj4gaW5kZXgg YzEzZjYxYWIyMDMwLi43NTY5ODEzOWNkYjAgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJt L3hlL3hlX2d1Y19jYXB0dXJlLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0veGUveGVfZ3VjX2Nh cHR1cmUuYwo+IEBAIC05MjYsNyArOTI2LDcgQEAgZ3VjX2NhcHR1cmVfaW5pdF9ub2RlKHN0cnVj dCB4ZV9ndWMgKmd1Yywgc3RydWN0IF9fZ3VjX2NhcHR1cmVfcGFyc2VkX291dHB1dCAqbm8KPiDC oCAqwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGd1Yy0+Y2FwdHVyZS0+Y2Fj aGVsaXN0IGFuZCBwb3B1bGF0ZWQgd2l0aCB0aGUgZXJyb3ItY2FwdHVyZQo+IMKgICrCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZGF0YSBmcm9tIEd1QyBhbmQgdGhlbiBpdCdz IGFkZGVkIGludG8gZ3VjLT5jYXB0dXJlLT5vdXRsaXN0IGxpbmtlZAo+IMKgICrCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgbGlzdC4gVGhpcyBsaXN0IGlzIHVzZWQgZm9yIG1h dGNodXAgYW5kIHByaW50b3V0IGJ5IHhlX2RldmNvcmVkdW1wX3JlYWQKPiAtICrCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgYW5kIHhlX2h3X2VuZ2luZV9zbmFwc2hvdF9wcmlu dCwgKHdoZW4gdXNlciBpbnZva2VzIHRoZSBkZXZjb3JlZHVtcCBzeXNmcykuCj4gKyAqwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGFuZCB4ZV9lbmdpbmVfc25hcHNob3RfcHJp bnQsICh3aGVuIHVzZXIgaW52b2tlcyB0aGUgZGV2Y29yZWR1bXAgc3lzZnMpLgo+IMKgICoKPiDC oCAqIEdVQyAtLT4gbm90aWZ5IGNvbnRleHQgcmVzZXQ6Cj4gwqAgKiAtLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQo+IEBAIC05MzQsMTIgKzkzNCwxMyBAQCBndWNfY2FwdHVyZV9pbml0X25v ZGUoc3RydWN0IHhlX2d1YyAqZ3VjLCBzdHJ1Y3QgX19ndWNfY2FwdHVyZV9wYXJzZWRfb3V0cHV0 ICpubwo+IMKgICrCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgTC0tPiB4ZV9k ZXZjb3JlZHVtcAo+IMKgICrCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCBMLS0+IGRldmNvcmVkdW1wX3NuYXBzaG90Cj4gwqAgKsKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAtLT4geGVfaHdf ZW5naW5lX3NuYXBzaG90X2NhcHR1cmUKPiArICrCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgLS0+IHhlX2VuZ2luZV9tYW51YWxfY2Fw dHVyZShGb3IgbWFudWFsIGNhcHR1cmUpCj4gwqAgKgo+IMKgICogVXNlciBTeXNmcyAvIERlYnVn ZnMKPiDCoCAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tCj4gwqAgKsKgwqDCoMKgwqAgLS0+IHhlX2Rl dmNvcmVkdW1wX3JlYWQtPgo+IMKgICrCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgTC0tPiB4eHhf c25hcHNob3RfcHJpbnQKPiAtICrCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCBMLS0+IHhlX2h3X2VuZ2luZV9zbmFwc2hvdF9wcmludAo+ICsgKsKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIEwtLT4geGVfZW5naW5lX3NuYXBzaG90X3ByaW50Cj4gwqAg KsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBQcmludCBy ZWdpc3RlciBsaXN0cyB2YWx1ZXMgc2F2ZWQgYXQKPiDCoCAqwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGd1Yy0+Y2FwdHVyZS0+b3V0bGlzdAo+IMKgICoK PiBAQCAtMTUwNSw2ICsxNTA2LDExNiBAQCBndWNfY2FwdHVyZV9jcmVhdGVfcHJlYWxsb2Nfbm9k ZXMoc3RydWN0IHhlX2d1YyAqZ3VjKQo+IMKgwqDCoMKgwqDCoMKgwqBfX2d1Y19jYXB0dXJlX2Ny ZWF0ZV9wcmVhbGxvY19ub2RlcyhndWMpOwo+IMKgfQo+IMKgCj4gK3N0YXRpYyB2b2lkCj4gK3Jl YWRfcmVnX3RvX25vZGUoc3RydWN0IHhlX2h3X2VuZ2luZSAqaHdlLCBjb25zdCBzdHJ1Y3QgX19n dWNfbW1pb19yZWdfZGVzY3JfZ3JvdXAgKmxpc3QsCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCBzdHJ1Y3QgZ3VjX21taW9fcmVnICpyZWdzKQo+ICt7Cj4gK8KgwqDCoMKgwqDCoMKg aW50IGk7Cj4gKwo+ICvCoMKgwqDCoMKgwqDCoGlmICghbGlzdCB8fCBsaXN0LT5udW1fcmVncyA9 PSAwKQo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqByZXR1cm47Cj4gKwo+ICvCoMKg wqDCoMKgwqDCoGlmICghcmVncykKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcmV0 dXJuOwo+ICsKPiArwqDCoMKgwqDCoMKgwqBmb3IgKGkgPSAwOyBpIDwgbGlzdC0+bnVtX3JlZ3M7 IGkrKykgewo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgX19ndWNfbW1p b19yZWdfZGVzY3IgZGVzYyA9IGxpc3QtPmxpc3RbaV07Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoHUzMiB2YWx1ZTsKPiArCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oGlmICghbGlzdC0+bGlzdCkKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoHJldHVybjsKPiArCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlm IChsaXN0LT50eXBlID09IEdVQ19TVEFURV9DQVBUVVJFX1RZUEVfRU5HSU5FX0lOU1RBTkNFKSB7 Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB2YWx1ZSA9 IHhlX2h3X2VuZ2luZV9tbWlvX3JlYWQzMihod2UsIGRlc2MucmVnKTsKPiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgfSBlbHNlIHsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoGlmIChsaXN0LT50eXBlID09IEdVQ19TVEFURV9DQVBUVVJFX1RZ UEVfRU5HSU5FX0NMQVNTICYmCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgRklFTERfR0VUKEdVQ19SRUdTRVRfU1RFRVJJTkdfTkVFREVELCBk ZXNjLmZsYWdzKSkgewo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoGludCBncm91cCwgaW5zdGFuY2U7Cj4gKwo+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGdy b3VwID0gRklFTERfR0VUKEdVQ19SRUdTRVRfU1RFRVJJTkdfR1JPVVAsIGRlc2MuZmxhZ3MpOwo+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoGluc3RhbmNlID0gRklFTERfR0VUKEdVQ19SRUdTRVRfU1RFRVJJTkdfSU5TVEFOQ0Us IGRlc2MuZmxhZ3MpOwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoHZhbHVlID0geGVfZ3RfbWNyX3VuaWNhc3RfcmVhZChod2Ut Pmd0LCBYRV9SRUdfTUNSKGRlc2MucmVnLmFkZHIpLAo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBncm91cCwgaW5zdGFu Y2UpOwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgfSBl bHNlIHsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqB2YWx1ZSA9IHhlX21taW9fcmVhZDMyKGh3ZS0+Z3QsIGRlc2MucmVnKTsK PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoH0KPiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgfQo+ICsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgcmVnc1tpXS52YWx1ZSA9IHZhbHVlOwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqByZWdzW2ldLm9mZnNldCA9IGRlc2MucmVnLmFkZHI7Cj4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoHJlZ3NbaV0uZmxhZ3MgPSBkZXNjLmZsYWdzOwo+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqByZWdzW2ldLm1hc2sgPSBkZXNjLm1hc2s7Cj4gK8KgwqDCoMKg wqDCoMKgfQo+ICt9Cj4gKwo+ICsvKioKPiArICogeGVfZW5naW5lX21hbnVhbF9jYXB0dXJlIC0g VGFrZSBhIG1hbnVhbCBlbmdpbmUgc25hcHNob3QgZnJvbSBlbmdpbmUuCj4gKyAqIEBod2U6IFhl IEhXIEVuZ2luZS4KPiArICogQHNuYXBzaG90OiBUaGUgZW5naW5lIHNuYXBzaG90Cj4gKyAqCj4g KyAqIFRha2UgZW5naW5lIHNuYXBzaG90IGZyb20gZW5naW5lIHJlYWQuCj4gKyAqCj4gKyAqIFJl dHVybnM6IE5vbmUKPiArICovCj4gK3ZvaWQKPiAreGVfZW5naW5lX21hbnVhbF9jYXB0dXJlKHN0 cnVjdCB4ZV9od19lbmdpbmUgKmh3ZSwgc3RydWN0IHhlX2h3X2VuZ2luZV9zbmFwc2hvdCAqc25h cHNob3QpCj4gK3sKPiArwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgeGVfZ3QgKmd0ID0gaHdlLT5ndDsK PiArwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgeGVfZGV2aWNlICp4ZSA9IGd0X3RvX3hlKGd0KTsKPiAr wqDCoMKgwqDCoMKgwqBzdHJ1Y3QgeGVfZ3VjICpndWMgPSAmZ3QtPnVjLmd1YzsKPiArwqDCoMKg wqDCoMKgwqBzdHJ1Y3QgeGVfZGV2Y29yZWR1bXAgKmRldmNvcmVkdW1wID0gJnhlLT5kZXZjb3Jl ZHVtcDsKPiArwqDCoMKgwqDCoMKgwqBlbnVtIGd1Y19jYXB0dXJlX2xpc3RfY2xhc3NfdHlwZSBj YXB0dXJlX2NsYXNzOwo+ICvCoMKgwqDCoMKgwqDCoGNvbnN0IHN0cnVjdCBfX2d1Y19tbWlvX3Jl Z19kZXNjcl9ncm91cCAqbGlzdDsKPiArwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgX19ndWNfY2FwdHVy ZV9wYXJzZWRfb3V0cHV0ICpuZXc7Cj4gK8KgwqDCoMKgwqDCoMKgZW51bSBndWNfc3RhdGVfY2Fw dHVyZV90eXBlIHR5cGU7Cj4gK8KgwqDCoMKgwqDCoMKgdTE2IGd1Y19pZCA9IDA7Cj4gK8KgwqDC oMKgwqDCoMKgdTMyIGxyY2EgPSAwOwo+ICsKPiArwqDCoMKgwqDCoMKgwqBuZXcgPSBndWNfY2Fw dHVyZV9nZXRfcHJlYWxsb2Nfbm9kZShndWMpOwo+ICvCoMKgwqDCoMKgwqDCoGlmICghbmV3KQo+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqByZXR1cm47Cj4gKwo+ICvCoMKgwqDCoMKg wqDCoGNhcHR1cmVfY2xhc3MgPSB4ZV9lbmdpbmVfY2xhc3NfdG9fZ3VjX2NhcHR1cmVfY2xhc3Mo aHdlLT5jbGFzcyk7Cj4gK8KgwqDCoMKgwqDCoMKgZm9yICh0eXBlID0gR1VDX1NUQVRFX0NBUFRV UkVfVFlQRV9HTE9CQUw7IHR5cGUgPCBHVUNfU1RBVEVfQ0FQVFVSRV9UWVBFX01BWDsgdHlwZSsr KSB7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHN0cnVjdCBnY2FwX3JlZ19saXN0 X2luZm8gKnJlZ2luZm8gPSAmbmV3LT5yZWdpbmZvW3R5cGVdOwphbGFuOiBuaXQ6IHRvIGVuc3Vy ZSBvdGhlciBkZXZlbG9wZXJzIGRvZXNuJ3QgZ2V0IHVubmVjZXNzYXJpbHkgY29uY2VybmVkIGFi b3V0CnBvc3NpYmxlIG92ZXJmbG93LCBjb25zaWRlciBhZGRpbmcgYSBjb21tZW50IGhlcmUgdGhh dCAicmVnc2luZm8tPnJlZ3MgaXMgYWxsb2NhdGVkCmJhc2VkIG9uIGd1Yy0+Y2FwdHVyZS0+bWF4 X21taW9fcGVyX25vZGUgd2hpY2ggaXMgYmFzZWQgb24gdGhlIGRlc2NyaXB0b3IgbGlzdCBkcml2 aW5nCnRoZSBwb3B1bGF0aW9uIHNvIHNob3VsZCBub3Qgb3ZlcmZsb3ciLiBKdXN0IGEgbml0IHNv IGZlZWwgZnJlZSB0byBpZ25vcmUuCj4gKwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAvKiBHZXQgcmVnaXN0ZXIgbGlzdCBmb3IgdGhlIHR5cGUvY2xhc3MgKi8KPiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgbGlzdCA9IHhlX2d1Y19jYXB0dXJlX2dldF9yZWdfZGVzY19s aXN0KGd0LCBHVUNfQ0FQVFVSRV9MSVNUX0lOREVYX1BGLCB0eXBlLAo+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGNhcHR1cmVfY2xhc3MsIGZh bHNlKTsKPiArCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJlYWRfcmVnX3RvX25v ZGUoaHdlLCBsaXN0LCByZWdpbmZvLT5yZWdzKTsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgcmVnaW5mby0+bnVtX3JlZ3MgPSBsaXN0LT5udW1fcmVnczsKPiArCj4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoC8qIENhcHR1cmUgc3RlZXJpbmcgcmVnaXN0ZXJzIGZvciBy Y3MvY2NzICovCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlmIChjYXB0dXJlX2Ns YXNzID09IEdVQ19DQVBUVVJFX0xJU1RfQ0xBU1NfUkVOREVSX0NPTVBVVEUpIHsKPiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGxpc3QgPSB4ZV9ndWNfY2Fw dHVyZV9nZXRfcmVnX2Rlc2NfbGlzdChndCwgR1VDX0NBUFRVUkVfTElTVF9JTkRFWF9QRiwKPiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgdHlwZSwgY2FwdHVyZV9jbGFzcywgdHJ1ZSk7Cj4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAobGlzdCkgewo+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJlYWRf cmVnX3RvX25vZGUoaHdlLCBsaXN0LCAmcmVnaW5mby0+cmVnc1tyZWdpbmZvLT5udW1fcmVnc10p Owo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoHJlZ2luZm8tPm51bV9yZWdzICs9IGxpc3QtPm51bV9yZWdzOwo+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgfQo+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqB9Cj4gK8KgwqDCoMKgwqDCoMKgfQo+ICsKPiArwqDCoMKgwqDCoMKg wqBpZiAoZGV2Y29yZWR1bXAtPmNhcHR1cmVkKSB7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoHN0cnVjdCB4ZV9ndWNfc3VibWl0X2V4ZWNfcXVldWVfc25hcHNob3QgKmdlID0gZGV2 Y29yZWR1bXAtPnNuYXBzaG90LmdlOwo+ICsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgZ3VjX2lkID0gZ2UtPmd1Yy5pZDsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg bHJjYSA9IGdlLT5scmNbMF0tPmNvbnRleHRfZGVzYzsKPiArwqDCoMKgwqDCoMKgwqB9Cj4gKwo+ ICvCoMKgwqDCoMKgwqDCoG5ldy0+ZW5nX2NsYXNzID0geGVfZW5naW5lX2NsYXNzX3RvX2d1Y19j bGFzcyhod2UtPmNsYXNzKTsKPiArwqDCoMKgwqDCoMKgwqBuZXctPmVuZ19pbnN0ID0gaHdlLT5p bnN0YW5jZTsKPiArwqDCoMKgwqDCoMKgwqBuZXctPmd1Y19pZCA9IGd1Y19pZDsKPiArwqDCoMKg wqDCoMKgwqBuZXctPmxyY2EgPSBscmNhOwo+ICvCoMKgwqDCoMKgwqDCoG5ldy0+aXNfcGFydGlh bCA9IDA7Cj4gK8KgwqDCoMKgwqDCoMKgbmV3LT5sb2NrZWQgPSAxOwo+ICvCoMKgwqDCoMKgwqDC oG5ldy0+c291cmNlID0gWEVfRU5HSU5FX0NBUFRVUkVfU09VUkNFX01BTlVBTDsKPiArCj4gK8Kg wqDCoMKgwqDCoMKgZ3VjX2NhcHR1cmVfYWRkX25vZGVfdG9fb3V0bGlzdChndWMtPmNhcHR1cmUs IG5ldyk7Cj4gK8KgwqDCoMKgwqDCoMKgZGV2Y29yZWR1bXAtPnNuYXBzaG90Lm1hdGNoZWRfbm9k ZSA9IG5ldzsKPiArfQo+ICsKPiDCoHN0YXRpYyBzdHJ1Y3QgZ3VjX21taW9fcmVnICoKPiDCoGd1 Y19jYXB0dXJlX2ZpbmRfcmVnKHN0cnVjdCBnY2FwX3JlZ19saXN0X2luZm8gKnJlZ2luZm8sIHUz MiBhZGRyLCB1MzIgZmxhZ3MpCj4gwqB7Cj4gQEAgLTE1OTAsNyArMTcwMSw3IEBAIHNuYXBzaG90 X3ByaW50X2J5X2xpc3Rfb3JkZXIoc3RydWN0IHhlX2h3X2VuZ2luZV9zbmFwc2hvdCAqc25hcHNo b3QsIHN0cnVjdCBkcm1fCj4gwqAgKgo+IMKgICogVGhpcyBmdW5jdGlvbiBwcmludHMgb3V0IGEg Z2l2ZW4gWGUgSFcgRW5naW5lIHNuYXBzaG90IG9iamVjdC4KPiDCoCAqLwo+IC12b2lkIHhlX2Vu Z2luZV9ndWNfY2FwdHVyZV9wcmludChzdHJ1Y3QgeGVfaHdfZW5naW5lX3NuYXBzaG90ICpzbmFw c2hvdCwgc3RydWN0IGRybV9wcmludGVyICpwKQo+ICt2b2lkIHhlX2VuZ2luZV9zbmFwc2hvdF9w cmludChzdHJ1Y3QgeGVfaHdfZW5naW5lX3NuYXBzaG90ICpzbmFwc2hvdCwgc3RydWN0IGRybV9w cmludGVyICpwKQo+IMKgewo+IMKgwqDCoMKgwqDCoMKgwqBjb25zdCBjaGFyICpncnB0eXBlW0dV Q19TVEFURV9DQVBUVVJFX0dST1VQX1RZUEVfTUFYXSA9IHsKPiDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCJmdWxsLWNhcHR1cmUiLAo+IEBAIC0xNzMxLDggKzE4NDIsMjcgQEAgeGVf ZW5naW5lX3NuYXBzaG90X2NhcHR1cmVfZm9yX2pvYihzdHJ1Y3QgeGVfc2NoZWRfam9iICpqb2Ip Cj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgY29udGlu dWU7Cj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB9Cj4gwqAKPiAtwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKCFjb3JlZHVtcC0+c25hcHNob3QuaHdlW2lkXSkKPiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKCFjb3JlZHVtcC0+c25hcHNob3QuaHdl W2lkXSkgewo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oGNvcmVkdW1wLT5zbmFwc2hvdC5od2VbaWRdID0geGVfaHdfZW5naW5lX3NuYXBzaG90X2NhcHR1 cmUoaHdlLCBqb2IpOwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB9IGVsc2Ugewo+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IF9f Z3VjX2NhcHR1cmVfcGFyc2VkX291dHB1dCAqbmV3Owo+ICsKPiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoG5ldyA9IHhlX2d1Y19jYXB0dXJlX2dldF9tYXRj aGluZ19hbmRfbG9jayhqb2IpOwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgaWYgKG5ldykgewo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHN0cnVjdCB4ZV9ndWMgKmd1YyA9wqAgJnEt Pmd0LT51Yy5ndWM7Cj4gKwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoC8qCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICogSWYgd2UgYXJlIGluIGhlcmUs IGl0IG1lYW5zIHdlIGZvdW5kIGEgZnJlc2gKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKiBHdUMtZXJyLWNhcHR1cmUgbm9k ZSBmb3IgdGhpcyBlbmdpbmUgYWZ0ZXIKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKiBwcmV2aW91c2x5IGZhaWxpbmcgdG8g ZmluZCBhIG1hdGNoIGluIHRoZQo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAqIGVhcmx5IHBhcnQgb2YgZ3VjX2V4ZWNfcXVl dWVfdGltZWRvdXRfam9iLgo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAqIFRodXMgd2UgbXVzdCBmcmVlIHRoZSBtYW51YWxs eSBjYXB0dXJlZCBub2RlCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICovCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZ3VjX2NhcHR1cmVfZnJlZV9vdXRs aXN0X25vZGUoZ3VjLT5jYXB0dXJlLAo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgY29yZWR1bXAtPnNuYXBzaG90Lm1hdGNo ZWRfbm9kZSk7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgY29yZWR1bXAtPnNuYXBzaG90Lm1hdGNoZWRfbm9kZSA9IG5ldzsK PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoH0KPiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgfQo+IMKgCj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqBicmVhazsKPiDCoMKgwqDCoMKgwqDCoMKgfQo+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0veGUveGVfZ3VjX2NhcHR1cmUuaCBiL2RyaXZlcnMvZ3B1L2RybS94ZS94ZV9n dWNfY2FwdHVyZS5oCj4gaW5kZXggOTJjYTZlYTIxOTA2Li45ZDBkNjQ2YzIyMWQgMTAwNjQ0Cj4g LS0tIGEvZHJpdmVycy9ncHUvZHJtL3hlL3hlX2d1Y19jYXB0dXJlLmgKPiArKysgYi9kcml2ZXJz L2dwdS9kcm0veGUveGVfZ3VjX2NhcHR1cmUuaAo+IEBAIC01MSw4ICs1MSw5IEBAIGNvbnN0IHN0 cnVjdCBfX2d1Y19tbWlvX3JlZ19kZXNjcl9ncm91cCAqCj4gwqB4ZV9ndWNfY2FwdHVyZV9nZXRf cmVnX2Rlc2NfbGlzdChzdHJ1Y3QgeGVfZ3QgKmd0LCB1MzIgb3duZXIsIHUzMiB0eXBlLAo+IMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgZW51bSBndWNfY2FwdHVyZV9saXN0X2NsYXNzX3R5cGUgY2FwdHVyZV9jbGFzcywgYm9v bCBpc19leHQpOwo+IMKgc3RydWN0IF9fZ3VjX2NhcHR1cmVfcGFyc2VkX291dHB1dCAqeGVfZ3Vj X2NhcHR1cmVfZ2V0X21hdGNoaW5nX2FuZF9sb2NrKHN0cnVjdCB4ZV9zY2hlZF9qb2IgKmpvYik7 Cj4gK3ZvaWQgeGVfZW5naW5lX21hbnVhbF9jYXB0dXJlKHN0cnVjdCB4ZV9od19lbmdpbmUgKmh3 ZSwgc3RydWN0IHhlX2h3X2VuZ2luZV9zbmFwc2hvdCAqc25hcHNob3QpOwo+ICt2b2lkIHhlX2Vu Z2luZV9zbmFwc2hvdF9wcmludChzdHJ1Y3QgeGVfaHdfZW5naW5lX3NuYXBzaG90ICpzbmFwc2hv dCwgc3RydWN0IGRybV9wcmludGVyICpwKTsKPiDCoHZvaWQgeGVfZW5naW5lX3NuYXBzaG90X2Nh cHR1cmVfZm9yX2pvYihzdHJ1Y3QgeGVfc2NoZWRfam9iICpqb2IpOwo+IC12b2lkIHhlX2VuZ2lu ZV9ndWNfY2FwdHVyZV9wcmludChzdHJ1Y3QgeGVfaHdfZW5naW5lX3NuYXBzaG90ICpzbmFwc2hv dCwgc3RydWN0IGRybV9wcmludGVyICpwKTsKPiDCoHZvaWQgeGVfZ3VjX2NhcHR1cmVfc3RlZXJl ZF9saXN0X2luaXQoc3RydWN0IHhlX2d1YyAqZ3VjKTsKPiDCoHZvaWQgeGVfZ3VjX2NhcHR1cmVf ZnJlZShzdHJ1Y3QgeGVfZ3VjICpndWMpOwo+IMKgaW50IHhlX2d1Y19jYXB0dXJlX2luaXQoc3Ry dWN0IHhlX2d1YyAqZ3VjKTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3hlL3hlX2h3 X2VuZ2luZS5jIGIvZHJpdmVycy9ncHUvZHJtL3hlL3hlX2h3X2VuZ2luZS5jCj4gaW5kZXggZWU5 OTY5M2FjNjU2Li40ZGRjMzE3ZjEyMWYgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL3hl L3hlX2h3X2VuZ2luZS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL3hlL3hlX2h3X2VuZ2luZS5j Cj4gQEAgLTc5OSwxMjAgKzc5OSwxMCBAQCB2b2lkIHhlX2h3X2VuZ2luZV9oYW5kbGVfaXJxKHN0 cnVjdCB4ZV9od19lbmdpbmUgKmh3ZSwgdTE2IGludHJfdmVjKQo+IMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgeGVfaHdfZmVuY2VfaXJxX3J1bihod2UtPmZlbmNlX2lycSk7Cj4gwqB9 Cj4gwqAKPiAtc3RhdGljIGJvb2wKPiAtaXNfc2xpY2VfY29tbW9uX3Blcl9nc2xpY2Uoc3RydWN0 IHhlX2RldmljZSAqeGUpCj4gLXsKPiAtwqDCoMKgwqDCoMKgwqByZXR1cm4gR1JBUEhJQ1NfVkVS eDEwMCh4ZSkgPj0gMTI1NTsKPiAtfQo+IC0KPiAtc3RhdGljIHZvaWQKPiAteGVfaHdfZW5naW5l X3NuYXBzaG90X2luc3Rkb25lX2NhcHR1cmUoc3RydWN0IHhlX2h3X2VuZ2luZSAqaHdlLAo+IC3C oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCBzdHJ1Y3QgeGVfaHdfZW5naW5lX3NuYXBzaG90ICpzbmFwc2hvdCkK PiAtewo+IC3CoMKgwqDCoMKgwqDCoHN0cnVjdCB4ZV9ndCAqZ3QgPSBod2UtPmd0Owo+IC3CoMKg wqDCoMKgwqDCoHN0cnVjdCB4ZV9kZXZpY2UgKnhlID0gZ3RfdG9feGUoZ3QpOwo+IC3CoMKgwqDC oMKgwqDCoHVuc2lnbmVkIGludCBkc3M7Cj4gLcKgwqDCoMKgwqDCoMKgdTE2IGdyb3VwLCBpbnN0 YW5jZTsKPiAtCj4gLcKgwqDCoMKgwqDCoMKgc25hcHNob3QtPnJlZy5pbnN0ZG9uZS5yaW5nID0g eGVfaHdfZW5naW5lX21taW9fcmVhZDMyKGh3ZSwgUklOR19JTlNURE9ORSgwKSk7Cj4gLQo+IC3C oMKgwqDCoMKgwqDCoGlmIChzbmFwc2hvdC0+aHdlLT5jbGFzcyAhPSBYRV9FTkdJTkVfQ0xBU1Nf UkVOREVSKQo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqByZXR1cm47Cj4gLQo+IC3C oMKgwqDCoMKgwqDCoGlmIChpc19zbGljZV9jb21tb25fcGVyX2dzbGljZSh4ZSkgPT0gZmFsc2Up IHsKPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgc25hcHNob3QtPnJlZy5pbnN0ZG9u ZS5zbGljZV9jb21tb25bMF0gPQo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgeGVfbW1pb19yZWFkMzIoZ3QsIFNDX0lOU1RET05FKTsKPiAtwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgc25hcHNob3QtPnJlZy5pbnN0ZG9uZS5zbGljZV9jb21tb25f ZXh0cmFbMF0gPQo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgeGVfbW1pb19yZWFkMzIoZ3QsIFNDX0lOU1RET05FX0VYVFJBKTsKPiAtwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgc25hcHNob3QtPnJlZy5pbnN0ZG9uZS5zbGljZV9jb21tb25fZXh0 cmEyWzBdID0KPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oHhlX21taW9fcmVhZDMyKGd0LCBTQ19JTlNURE9ORV9FWFRSQTIpOwo+IC3CoMKgwqDCoMKgwqDC oH0gZWxzZSB7Cj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGZvcl9lYWNoX2dlb21l dHJ5X2Rzcyhkc3MsIGd0LCBncm91cCwgaW5zdGFuY2UpIHsKPiAtwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHNuYXBzaG90LT5yZWcuaW5zdGRvbmUuc2xpY2Vf Y29tbW9uW2Rzc10gPQo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoHhlX2d0X21jcl91bmljYXN0X3JlYWQoZ3QsIFhFSFBHX1ND X0lOU1RET05FLCBncm91cCwgaW5zdGFuY2UpOwo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgc25hcHNob3QtPnJlZy5pbnN0ZG9uZS5zbGljZV9jb21tb25f ZXh0cmFbZHNzXSA9Cj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgeGVfZ3RfbWNyX3VuaWNhc3RfcmVhZChndCwgWEVIUEdfU0Nf SU5TVERPTkVfRVhUUkEsIGdyb3VwLCBpbnN0YW5jZSk7Cj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBzbmFwc2hvdC0+cmVnLmluc3Rkb25lLnNsaWNlX2Nv bW1vbl9leHRyYTJbZHNzXSA9Cj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgeGVfZ3RfbWNyX3VuaWNhc3RfcmVhZChndCwgWEVI UEdfU0NfSU5TVERPTkVfRVhUUkEyLCBncm91cCwgaW5zdGFuY2UpOwo+IC3CoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqB9Cj4gLcKgwqDCoMKgwqDCoMKgfQo+IC0KPiAtwqDCoMKgwqDCoMKg wqBmb3JfZWFjaF9nZW9tZXRyeV9kc3MoZHNzLCBndCwgZ3JvdXAsIGluc3RhbmNlKSB7Cj4gLcKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHNuYXBzaG90LT5yZWcuaW5zdGRvbmUuc2FtcGxl cltkc3NdID0KPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oHhlX2d0X21jcl91bmljYXN0X3JlYWQoZ3QsIFNBTVBMRVJfSU5TVERPTkUsIGdyb3VwLCBpbnN0 YW5jZSk7Cj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHNuYXBzaG90LT5yZWcuaW5z dGRvbmUucm93W2Rzc10gPQo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgeGVfZ3RfbWNyX3VuaWNhc3RfcmVhZChndCwgUk9XX0lOU1RET05FLCBncm91cCwg aW5zdGFuY2UpOwo+IC0KPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKEdSQVBI SUNTX1ZFUngxMDAoeGUpID49IDEyNTUpCj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqBzbmFwc2hvdC0+cmVnLmluc3Rkb25lLmdlb21fc3ZnW2Rzc10gPQo+ IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoHhlX2d0X21jcl91bmljYXN0X3JlYWQoZ3QsIFhFSFBHX0lOU1RET05FX0dFT01fU1ZH VU5JVCwKPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCBncm91cCwgaW5zdGFuY2UpOwo+IC3CoMKgwqDCoMKgwqDCoH0KPiAtfQo+IC0KPiAtc3RhdGlj IHZvaWQKPiAteGVfaHdfZW5naW5lX21hbnVhbF9jYXB0dXJlKHN0cnVjdCB4ZV9od19lbmdpbmUg Kmh3ZSwgc3RydWN0IHhlX2h3X2VuZ2luZV9zbmFwc2hvdCAqc25hcHNob3QpCj4gLXsKPiAtwqDC oMKgwqDCoMKgwqB1NjQgdmFsOwo+IC0KPiAtwqDCoMKgwqDCoMKgwqBzbmFwc2hvdC0+cmVnLnJp bmdfZXhlY2xpc3Rfc3RhdHVzID0KPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgeGVf aHdfZW5naW5lX21taW9fcmVhZDMyKGh3ZSwgUklOR19FWEVDTElTVF9TVEFUVVNfTE8oMCkpOwo+ IC3CoMKgwqDCoMKgwqDCoHZhbCA9IHhlX2h3X2VuZ2luZV9tbWlvX3JlYWQzMihod2UsIFJJTkdf RVhFQ0xJU1RfU1RBVFVTX0hJKDApKTsKPiAtwqDCoMKgwqDCoMKgwqBzbmFwc2hvdC0+cmVnLnJp bmdfZXhlY2xpc3Rfc3RhdHVzIHw9IHZhbCA8PCAzMjsKPiAtCj4gLcKgwqDCoMKgwqDCoMKgc25h cHNob3QtPnJlZy5yaW5nX2V4ZWNsaXN0X3NxX2NvbnRlbnRzID0KPiAtwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgeGVfaHdfZW5naW5lX21taW9fcmVhZDMyKGh3ZSwgUklOR19FWEVDTElT VF9TUV9DT05URU5UU19MTygwKSk7Cj4gLcKgwqDCoMKgwqDCoMKgdmFsID0geGVfaHdfZW5naW5l X21taW9fcmVhZDMyKGh3ZSwgUklOR19FWEVDTElTVF9TUV9DT05URU5UU19ISSgwKSk7Cj4gLcKg wqDCoMKgwqDCoMKgc25hcHNob3QtPnJlZy5yaW5nX2V4ZWNsaXN0X3NxX2NvbnRlbnRzIHw9IHZh bCA8PCAzMjsKPiAtCj4gLcKgwqDCoMKgwqDCoMKgc25hcHNob3QtPnJlZy5yaW5nX2FjdGhkID0g eGVfaHdfZW5naW5lX21taW9fcmVhZDMyKGh3ZSwgUklOR19BQ1RIRCgwKSk7Cj4gLcKgwqDCoMKg wqDCoMKgdmFsID0geGVfaHdfZW5naW5lX21taW9fcmVhZDMyKGh3ZSwgUklOR19BQ1RIRF9VRFco MCkpOwo+IC3CoMKgwqDCoMKgwqDCoHNuYXBzaG90LT5yZWcucmluZ19hY3RoZCB8PSB2YWwgPDwg MzI7Cj4gLQo+IC3CoMKgwqDCoMKgwqDCoHNuYXBzaG90LT5yZWcucmluZ19iYmFkZHIgPSB4ZV9o d19lbmdpbmVfbW1pb19yZWFkMzIoaHdlLCBSSU5HX0JCQUREUigwKSk7Cj4gLcKgwqDCoMKgwqDC oMKgdmFsID0geGVfaHdfZW5naW5lX21taW9fcmVhZDMyKGh3ZSwgUklOR19CQkFERFJfVURXKDAp KTsKPiAtwqDCoMKgwqDCoMKgwqBzbmFwc2hvdC0+cmVnLnJpbmdfYmJhZGRyIHw9IHZhbCA8PCAz MjsKPiAtCj4gLcKgwqDCoMKgwqDCoMKgc25hcHNob3QtPnJlZy5yaW5nX2RtYV9mYWRkID0KPiAt wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgeGVfaHdfZW5naW5lX21taW9fcmVhZDMyKGh3 ZSwgUklOR19ETUFfRkFERCgwKSk7Cj4gLcKgwqDCoMKgwqDCoMKgdmFsID0geGVfaHdfZW5naW5l X21taW9fcmVhZDMyKGh3ZSwgUklOR19ETUFfRkFERF9VRFcoMCkpOwo+IC3CoMKgwqDCoMKgwqDC oHNuYXBzaG90LT5yZWcucmluZ19kbWFfZmFkZCB8PSB2YWwgPDwgMzI7Cj4gLQo+IC3CoMKgwqDC oMKgwqDCoHNuYXBzaG90LT5yZWcucmluZ19od3N0YW0gPSB4ZV9od19lbmdpbmVfbW1pb19yZWFk MzIoaHdlLCBSSU5HX0hXU1RBTSgwKSk7Cj4gLcKgwqDCoMKgwqDCoMKgc25hcHNob3QtPnJlZy5y aW5nX2h3c19wZ2EgPSB4ZV9od19lbmdpbmVfbW1pb19yZWFkMzIoaHdlLCBSSU5HX0hXU19QR0Eo MCkpOwo+IC3CoMKgwqDCoMKgwqDCoHNuYXBzaG90LT5yZWcucmluZ19zdGFydCA9IHhlX2h3X2Vu Z2luZV9tbWlvX3JlYWQzMihod2UsIFJJTkdfU1RBUlQoMCkpOwo+IC3CoMKgwqDCoMKgwqDCoGlm IChHUkFQSElDU19WRVJ4MTAwKGh3ZS0+Z3QtPnRpbGUtPnhlKSA+PSAyMDAwKSB7Cj4gLcKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHZhbCA9IHhlX2h3X2VuZ2luZV9tbWlvX3JlYWQzMiho d2UsIFJJTkdfU1RBUlRfVURXKDApKTsKPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg c25hcHNob3QtPnJlZy5yaW5nX3N0YXJ0IHw9IHZhbCA8PCAzMjsKPiAtwqDCoMKgwqDCoMKgwqB9 Cj4gLcKgwqDCoMKgwqDCoMKgaWYgKHhlX2d0X2hhc19pbmRpcmVjdF9yaW5nX3N0YXRlKGh3ZS0+ Z3QpKSB7Cj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHNuYXBzaG90LT5yZWcuaW5k aXJlY3RfcmluZ19zdGF0ZSA9Cj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqB4ZV9od19lbmdpbmVfbW1pb19yZWFkMzIoaHdlLCBJTkRJUkVDVF9SSU5HX1NU QVRFKDApKTsKPiAtwqDCoMKgwqDCoMKgwqB9Cj4gLQo+IC3CoMKgwqDCoMKgwqDCoHNuYXBzaG90 LT5yZWcucmluZ19oZWFkID0KPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgeGVfaHdf ZW5naW5lX21taW9fcmVhZDMyKGh3ZSwgUklOR19IRUFEKDApKSAmIEhFQURfQUREUjsKPiAtwqDC oMKgwqDCoMKgwqBzbmFwc2hvdC0+cmVnLnJpbmdfdGFpbCA9Cj4gLcKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoHhlX2h3X2VuZ2luZV9tbWlvX3JlYWQzMihod2UsIFJJTkdfVEFJTCgwKSkg JiBUQUlMX0FERFI7Cj4gLcKgwqDCoMKgwqDCoMKgc25hcHNob3QtPnJlZy5yaW5nX2N0bCA9IHhl X2h3X2VuZ2luZV9tbWlvX3JlYWQzMihod2UsIFJJTkdfQ1RMKDApKTsKPiAtwqDCoMKgwqDCoMKg wqBzbmFwc2hvdC0+cmVnLnJpbmdfbWlfbW9kZSA9Cj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoHhlX2h3X2VuZ2luZV9tbWlvX3JlYWQzMihod2UsIFJJTkdfTUlfTU9ERSgwKSk7Cj4g LcKgwqDCoMKgwqDCoMKgc25hcHNob3QtPnJlZy5yaW5nX21vZGUgPSB4ZV9od19lbmdpbmVfbW1p b19yZWFkMzIoaHdlLCBSSU5HX01PREUoMCkpOwo+IC3CoMKgwqDCoMKgwqDCoHNuYXBzaG90LT5y ZWcucmluZ19pbXIgPSB4ZV9od19lbmdpbmVfbW1pb19yZWFkMzIoaHdlLCBSSU5HX0lNUigwKSk7 Cj4gLcKgwqDCoMKgwqDCoMKgc25hcHNob3QtPnJlZy5yaW5nX2VzciA9IHhlX2h3X2VuZ2luZV9t bWlvX3JlYWQzMihod2UsIFJJTkdfRVNSKDApKTsKPiAtwqDCoMKgwqDCoMKgwqBzbmFwc2hvdC0+ cmVnLnJpbmdfZW1yID0geGVfaHdfZW5naW5lX21taW9fcmVhZDMyKGh3ZSwgUklOR19FTVIoMCkp Owo+IC3CoMKgwqDCoMKgwqDCoHNuYXBzaG90LT5yZWcucmluZ19laXIgPSB4ZV9od19lbmdpbmVf bW1pb19yZWFkMzIoaHdlLCBSSU5HX0VJUigwKSk7Cj4gLcKgwqDCoMKgwqDCoMKgc25hcHNob3Qt PnJlZy5pcGVociA9IHhlX2h3X2VuZ2luZV9tbWlvX3JlYWQzMihod2UsIFJJTkdfSVBFSFIoMCkp Owo+IC3CoMKgwqDCoMKgwqDCoHhlX2h3X2VuZ2luZV9zbmFwc2hvdF9pbnN0ZG9uZV9jYXB0dXJl KGh3ZSwgc25hcHNob3QpOwo+IC0KPiAtwqDCoMKgwqDCoMKgwqBpZiAoc25hcHNob3QtPmh3ZS0+ Y2xhc3MgPT0gWEVfRU5HSU5FX0NMQVNTX0NPTVBVVEUpCj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoHNuYXBzaG90LT5yZWcucmN1X21vZGUgPSB4ZV9tbWlvX3JlYWQzMihod2UtPmd0 LCBSQ1VfTU9ERSk7Cj4gLX0KPiAtCj4gwqAvKioKPiDCoCAqIHhlX2h3X2VuZ2luZV9zbmFwc2hv dF9jYXB0dXJlIC0gVGFrZSBhIHF1aWNrIHNuYXBzaG90IG9mIHRoZSBIVyBFbmdpbmUuCj4gwqAg KiBAaHdlOiBYZSBIVyBFbmdpbmUuCj4gLSAqIEBqb2I6IFRoZSBqb2Igb2JqZWN0Lgo+ICsgKiBA am9iOiBUaGUgam9iIG9iamVjdAo+IMKgICoKPiDCoCAqIFRoaXMgY2FuIGJlIHByaW50ZWQgb3V0 IGluIGEgbGF0ZXIgc3RhZ2UgbGlrZSBkdXJpbmcgZGV2X2NvcmVkdW1wCj4gwqAgKiBhbmFseXNp cy4KPiBAQCAtOTI0LDcgKzgxNCw2IEBAIHN0cnVjdCB4ZV9od19lbmdpbmVfc25hcHNob3QgKgo+ IMKgeGVfaHdfZW5naW5lX3NuYXBzaG90X2NhcHR1cmUoc3RydWN0IHhlX2h3X2VuZ2luZSAqaHdl LCBzdHJ1Y3QgeGVfc2NoZWRfam9iICpqb2IpCj4gwqB7Cj4gwqDCoMKgwqDCoMKgwqDCoHN0cnVj dCB4ZV9od19lbmdpbmVfc25hcHNob3QgKnNuYXBzaG90Owo+IC3CoMKgwqDCoMKgwqDCoHNpemVf dCBsZW47Cj4gwqDCoMKgwqDCoMKgwqDCoHN0cnVjdCBfX2d1Y19jYXB0dXJlX3BhcnNlZF9vdXRw dXQgKm5vZGU7Cj4gwqAKPiDCoMKgwqDCoMKgwqDCoMKgaWYgKCF4ZV9od19lbmdpbmVfaXNfdmFs aWQoaHdlKSkKPiBAQCAtOTM1LDI4ICs4MjQsNiBAQCB4ZV9od19lbmdpbmVfc25hcHNob3RfY2Fw dHVyZShzdHJ1Y3QgeGVfaHdfZW5naW5lICpod2UsIHN0cnVjdCB4ZV9zY2hlZF9qb2IgKmpvYgo+ IMKgwqDCoMKgwqDCoMKgwqBpZiAoIXNuYXBzaG90KQo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgcmV0dXJuIE5VTEw7Cj4gwqAKPiAtwqDCoMKgwqDCoMKgwqAvKiBCZWNhdXNlIFhF X01BWF9EU1NfRlVTRV9CSVRTIGlzIGRlZmluZWQgaW4geGVfZ3RfdHlwZXMuaCBhbmQgaXQKPiAt wqDCoMKgwqDCoMKgwqAgKiBpbmNsdWRlcyB4ZV9od19lbmdpbmVfdHlwZXMuaCB0aGUgbGVuZ3Ro IG9mIHRoaXMgMyByZWdpc3RlcnMgY2FuJ3QgYmUKPiAtwqDCoMKgwqDCoMKgwqAgKiBzZXQgaW4g c3RydWN0IHhlX2h3X2VuZ2luZV9zbmFwc2hvdCwgc28gaGVyZSBkb2luZyBhZGRpdGlvbmFsCj4g LcKgwqDCoMKgwqDCoMKgICogYWxsb2NhdGlvbnMuCj4gLcKgwqDCoMKgwqDCoMKgICovCj4gLcKg wqDCoMKgwqDCoMKgbGVuID0gKFhFX01BWF9EU1NfRlVTRV9CSVRTICogc2l6ZW9mKHUzMikpOwo+ IC3CoMKgwqDCoMKgwqDCoHNuYXBzaG90LT5yZWcuaW5zdGRvbmUuc2xpY2VfY29tbW9uID0ga3ph bGxvYyhsZW4sIEdGUF9BVE9NSUMpOwo+IC3CoMKgwqDCoMKgwqDCoHNuYXBzaG90LT5yZWcuaW5z dGRvbmUuc2xpY2VfY29tbW9uX2V4dHJhID0ga3phbGxvYyhsZW4sIEdGUF9BVE9NSUMpOwo+IC3C oMKgwqDCoMKgwqDCoHNuYXBzaG90LT5yZWcuaW5zdGRvbmUuc2xpY2VfY29tbW9uX2V4dHJhMiA9 IGt6YWxsb2MobGVuLCBHRlBfQVRPTUlDKTsKPiAtwqDCoMKgwqDCoMKgwqBzbmFwc2hvdC0+cmVn Lmluc3Rkb25lLnNhbXBsZXIgPSBremFsbG9jKGxlbiwgR0ZQX0FUT01JQyk7Cj4gLcKgwqDCoMKg wqDCoMKgc25hcHNob3QtPnJlZy5pbnN0ZG9uZS5yb3cgPSBremFsbG9jKGxlbiwgR0ZQX0FUT01J Qyk7Cj4gLcKgwqDCoMKgwqDCoMKgc25hcHNob3QtPnJlZy5pbnN0ZG9uZS5nZW9tX3N2ZyA9IGt6 YWxsb2MobGVuLCBHRlBfQVRPTUlDKTsKPiAtwqDCoMKgwqDCoMKgwqBpZiAoIXNuYXBzaG90LT5y ZWcuaW5zdGRvbmUuc2xpY2VfY29tbW9uIHx8Cj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgICFzbmFw c2hvdC0+cmVnLmluc3Rkb25lLnNsaWNlX2NvbW1vbl9leHRyYSB8fAo+IC3CoMKgwqDCoMKgwqDC oMKgwqDCoCAhc25hcHNob3QtPnJlZy5pbnN0ZG9uZS5zbGljZV9jb21tb25fZXh0cmEyIHx8Cj4g LcKgwqDCoMKgwqDCoMKgwqDCoMKgICFzbmFwc2hvdC0+cmVnLmluc3Rkb25lLnNhbXBsZXIgfHwK PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqAgIXNuYXBzaG90LT5yZWcuaW5zdGRvbmUucm93IHx8Cj4g LcKgwqDCoMKgwqDCoMKgwqDCoMKgICFzbmFwc2hvdC0+cmVnLmluc3Rkb25lLmdlb21fc3ZnKSB7 Cj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHhlX2h3X2VuZ2luZV9zbmFwc2hvdF9m cmVlKHNuYXBzaG90KTsKPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIE5V TEw7Cj4gLcKgwqDCoMKgwqDCoMKgfQo+IC0KPiDCoMKgwqDCoMKgwqDCoMKgc25hcHNob3QtPm5h bWUgPSBrc3RyZHVwKGh3ZS0+bmFtZSwgR0ZQX0FUT01JQyk7Cj4gwqDCoMKgwqDCoMKgwqDCoHNu YXBzaG90LT5od2UgPSBod2U7Cj4gwqDCoMKgwqDCoMKgwqDCoHNuYXBzaG90LT5sb2dpY2FsX2lu c3RhbmNlID0gaHdlLT5sb2dpY2FsX2luc3RhbmNlOwo+IEBAIC05ODQsMTEzICs4NTEsMTMgQEAg eGVfaHdfZW5naW5lX3NuYXBzaG90X2NhcHR1cmUoc3RydWN0IHhlX2h3X2VuZ2luZSAqaHdlLCBz dHJ1Y3QgeGVfc2NoZWRfam9iICpqb2IKPiDCoMKgwqDCoMKgwqDCoMKgfQo+IMKgCj4gwqDCoMKg wqDCoMKgwqDCoC8qIG90aGVyd2lzZSwgZG8gbWFudWFsIGNhcHR1cmUgKi8KPiAtwqDCoMKgwqDC oMKgwqB4ZV9od19lbmdpbmVfbWFudWFsX2NhcHR1cmUoaHdlLCBzbmFwc2hvdCk7Cj4gK8KgwqDC oMKgwqDCoMKgeGVfZW5naW5lX21hbnVhbF9jYXB0dXJlKGh3ZSwgc25hcHNob3QpOwo+IMKgwqDC oMKgwqDCoMKgwqBzbmFwc2hvdC0+c291cmNlID0gWEVfRU5HSU5FX0NBUFRVUkVfU09VUkNFX01B TlVBTDsKPiDCoMKgwqDCoMKgwqDCoMKgeGVfZ3RfZGJnKGh3ZS0+Z3QsICJQcm9jZWVkaW5nIHdp dGggbWFudWFsIGVuZ2luZSBzbmFwc2hvdCIpOwo+IMKgCj4gwqDCoMKgwqDCoMKgwqDCoHJldHVy biBzbmFwc2hvdDsKPiDCoH0KPiDCoAo+IC1zdGF0aWMgdm9pZAo+IC14ZV9od19lbmdpbmVfc25h cHNob3RfaW5zdGRvbmVfcHJpbnQoc3RydWN0IHhlX2h3X2VuZ2luZV9zbmFwc2hvdCAqc25hcHNo b3QsIHN0cnVjdCBkcm1fcHJpbnRlciAqcCkKPiAtewo+IC3CoMKgwqDCoMKgwqDCoHN0cnVjdCB4 ZV9ndCAqZ3QgPSBzbmFwc2hvdC0+aHdlLT5ndDsKPiAtwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgeGVf ZGV2aWNlICp4ZSA9IGd0X3RvX3hlKGd0KTsKPiAtwqDCoMKgwqDCoMKgwqB1MTYgZ3JvdXAsIGlu c3RhbmNlOwo+IC3CoMKgwqDCoMKgwqDCoHVuc2lnbmVkIGludCBkc3M7Cj4gLQo+IC3CoMKgwqDC oMKgwqDCoGRybV9wcmludGYocCwgIlx0UklOR19JTlNURE9ORTogMHglMDh4XG4iLCBzbmFwc2hv dC0+cmVnLmluc3Rkb25lLnJpbmcpOwo+IC0KPiAtwqDCoMKgwqDCoMKgwqBpZiAoc25hcHNob3Qt Pmh3ZS0+Y2xhc3MgIT0gWEVfRU5HSU5FX0NMQVNTX1JFTkRFUikKPiAtwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgcmV0dXJuOwo+IC0KPiAtwqDCoMKgwqDCoMKgwqBpZiAoaXNfc2xpY2Vf Y29tbW9uX3Blcl9nc2xpY2UoeGUpID09IGZhbHNlKSB7Cj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoGRybV9wcmludGYocCwgIlx0U0NfSU5TVERPTkVbMF06IDB4JTA4eFxuIiwKPiAt wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc25hcHNo b3QtPnJlZy5pbnN0ZG9uZS5zbGljZV9jb21tb25bMF0pOwo+IC3CoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqBkcm1fcHJpbnRmKHAsICJcdFNDX0lOU1RET05FX0VYVFJBWzBdOiAweCUwOHhc biIsCj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IHNuYXBzaG90LT5yZWcuaW5zdGRvbmUuc2xpY2VfY29tbW9uX2V4dHJhWzBdKTsKPiAtwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZHJtX3ByaW50ZihwLCAiXHRTQ19JTlNURE9ORV9FWFRS QTJbMF06IDB4JTA4eFxuIiwKPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgc25hcHNob3QtPnJlZy5pbnN0ZG9uZS5zbGljZV9jb21tb25fZXh0cmEy WzBdKTsKPiAtwqDCoMKgwqDCoMKgwqB9IGVsc2Ugewo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqBmb3JfZWFjaF9nZW9tZXRyeV9kc3MoZHNzLCBndCwgZ3JvdXAsIGluc3RhbmNlKSB7 Cj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBkcm1fcHJp bnRmKHAsICJcdFNDX0lOU1RET05FWyV1XTogMHglMDh4XG4iLCBkc3MsCj4gLcKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBz bmFwc2hvdC0+cmVnLmluc3Rkb25lLnNsaWNlX2NvbW1vbltkc3NdKTsKPiAtwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGRybV9wcmludGYocCwgIlx0U0NfSU5T VERPTkVfRVhUUkFbJXVdOiAweCUwOHhcbiIsIGRzcywKPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHNuYXBzaG90LT5y ZWcuaW5zdGRvbmUuc2xpY2VfY29tbW9uX2V4dHJhW2Rzc10pOwo+IC3CoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZHJtX3ByaW50ZihwLCAiXHRTQ19JTlNURE9O RV9FWFRSQTJbJXVdOiAweCUwOHhcbiIsIGRzcywKPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHNuYXBzaG90LT5yZWcu aW5zdGRvbmUuc2xpY2VfY29tbW9uX2V4dHJhMltkc3NdKTsKPiAtwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgfQo+IC3CoMKgwqDCoMKgwqDCoH0KPiAtCj4gLcKgwqDCoMKgwqDCoMKgZm9y X2VhY2hfZ2VvbWV0cnlfZHNzKGRzcywgZ3QsIGdyb3VwLCBpbnN0YW5jZSkgewo+IC3CoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBkcm1fcHJpbnRmKHAsICJcdFNBTVBMRVJfSU5TVERPTkVb JXVdOiAweCUwOHhcbiIsIGRzcywKPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgc25hcHNob3QtPnJlZy5pbnN0ZG9uZS5zYW1wbGVyW2Rzc10pOwo+ IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBkcm1fcHJpbnRmKHAsICJcdFJPV19JTlNU RE9ORVsldV06IDB4JTA4eFxuIiwgZHNzLAo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzbmFwc2hvdC0+cmVnLmluc3Rkb25lLnJvd1tkc3NdKTsK PiAtCj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlmIChHUkFQSElDU19WRVJ4MTAw KHhlKSA+PSAxMjU1KQo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgZHJtX3ByaW50ZihwLCAiXHRJTlNURE9ORV9HRU9NX1NWR1VOSVRbJXVdOiAweCUwOHhc biIsCj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCBkc3MsIHNuYXBzaG90LT5yZWcuaW5zdGRvbmUuZ2VvbV9zdmdbZHNz XSk7Cj4gLcKgwqDCoMKgwqDCoMKgfQo+IC19Cj4gLQo+IC1zdGF0aWMgdm9pZCBfX3hlX2h3X2Vu Z2luZV9tYW51YWxfcHJpbnQoc3RydWN0IHhlX2h3X2VuZ2luZV9zbmFwc2hvdCAqc25hcHNob3Qs Cj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHN0cnVjdCBkcm1fcHJpbnRlciAqcCkKPiAtewo+IC3C oMKgwqDCoMKgwqDCoGRybV9wcmludGYocCwgIiVzIChwaHlzaWNhbCksIGxvZ2ljYWwgaW5zdGFu Y2U9JWRcbiIsCj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc25hcHNob3Qt Pm5hbWUgPyBzbmFwc2hvdC0+bmFtZSA6ICIiLAo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIHNuYXBzaG90LT5sb2dpY2FsX2luc3RhbmNlKTsKPiAtwqDCoMKgwqDCoMKgwqBk cm1fcHJpbnRmKHAsICJcdEZvcmNld2FrZTogZG9tYWluIDB4JXgsIHJlZiAlZFxuIiwKPiAtwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzbmFwc2hvdC0+Zm9yY2V3YWtlLmRvbWFp biwgc25hcHNob3QtPmZvcmNld2FrZS5yZWYpOwo+IC3CoMKgwqDCoMKgwqDCoGRybV9wcmludGYo cCwgIlx0SFdTVEFNOiAweCUwOHhcbiIsIHNuYXBzaG90LT5yZWcucmluZ19od3N0YW0pOwo+IC3C oMKgwqDCoMKgwqDCoGRybV9wcmludGYocCwgIlx0UklOR19IV1NfUEdBOiAweCUwOHhcbiIsIHNu YXBzaG90LT5yZWcucmluZ19od3NfcGdhKTsKPiAtwqDCoMKgwqDCoMKgwqBkcm1fcHJpbnRmKHAs ICJcdFJJTkdfRVhFQ0xJU1RfU1RBVFVTOiAweCUwMTZsbHhcbiIsCj4gLcKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgc25hcHNob3QtPnJlZy5yaW5nX2V4ZWNsaXN0X3N0YXR1cyk7 Cj4gLcKgwqDCoMKgwqDCoMKgZHJtX3ByaW50ZihwLCAiXHRSSU5HX0VYRUNMSVNUX1NRX0NPTlRF TlRTOiAweCUwMTZsbHhcbiIsCj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg c25hcHNob3QtPnJlZy5yaW5nX2V4ZWNsaXN0X3NxX2NvbnRlbnRzKTsKPiAtwqDCoMKgwqDCoMKg wqBkcm1fcHJpbnRmKHAsICJcdFJJTkdfU1RBUlQ6IDB4JTAxNmxseFxuIiwgc25hcHNob3QtPnJl Zy5yaW5nX3N0YXJ0KTsKPiAtwqDCoMKgwqDCoMKgwqBkcm1fcHJpbnRmKHAsICJcdFJJTkdfSEVB RDogMHglMDh4XG4iLCBzbmFwc2hvdC0+cmVnLnJpbmdfaGVhZCk7Cj4gLcKgwqDCoMKgwqDCoMKg ZHJtX3ByaW50ZihwLCAiXHRSSU5HX1RBSUw6IDB4JTA4eFxuIiwgc25hcHNob3QtPnJlZy5yaW5n X3RhaWwpOwo+IC3CoMKgwqDCoMKgwqDCoGRybV9wcmludGYocCwgIlx0UklOR19DVEw6IDB4JTA4 eFxuIiwgc25hcHNob3QtPnJlZy5yaW5nX2N0bCk7Cj4gLcKgwqDCoMKgwqDCoMKgZHJtX3ByaW50 ZihwLCAiXHRSSU5HX01JX01PREU6IDB4JTA4eFxuIiwgc25hcHNob3QtPnJlZy5yaW5nX21pX21v ZGUpOwo+IC3CoMKgwqDCoMKgwqDCoGRybV9wcmludGYocCwgIlx0UklOR19NT0RFOiAweCUwOHhc biIsCj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc25hcHNob3QtPnJlZy5y aW5nX21vZGUpOwo+IC3CoMKgwqDCoMKgwqDCoGRybV9wcmludGYocCwgIlx0UklOR19JTVI6IDB4 JTA4eFxuIiwgc25hcHNob3QtPnJlZy5yaW5nX2ltcik7Cj4gLcKgwqDCoMKgwqDCoMKgZHJtX3By aW50ZihwLCAiXHRSSU5HX0VTUjogMHglMDh4XG4iLCBzbmFwc2hvdC0+cmVnLnJpbmdfZXNyKTsK PiAtwqDCoMKgwqDCoMKgwqBkcm1fcHJpbnRmKHAsICJcdFJJTkdfRU1SOiAweCUwOHhcbiIsIHNu YXBzaG90LT5yZWcucmluZ19lbXIpOwo+IC3CoMKgwqDCoMKgwqDCoGRybV9wcmludGYocCwgIlx0 UklOR19FSVI6IDB4JTA4eFxuIiwgc25hcHNob3QtPnJlZy5yaW5nX2Vpcik7Cj4gLcKgwqDCoMKg wqDCoMKgZHJtX3ByaW50ZihwLCAiXHRBQ1RIRDogMHglMDE2bGx4XG4iLCBzbmFwc2hvdC0+cmVn LnJpbmdfYWN0aGQpOwo+IC3CoMKgwqDCoMKgwqDCoGRybV9wcmludGYocCwgIlx0QkJBRERSOiAw eCUwMTZsbHhcbiIsIHNuYXBzaG90LT5yZWcucmluZ19iYmFkZHIpOwo+IC3CoMKgwqDCoMKgwqDC oGRybV9wcmludGYocCwgIlx0RE1BX0ZBRERSOiAweCUwMTZsbHhcbiIsIHNuYXBzaG90LT5yZWcu cmluZ19kbWFfZmFkZCk7Cj4gLcKgwqDCoMKgwqDCoMKgZHJtX3ByaW50ZihwLCAiXHRJTkRJUkVD VF9SSU5HX1NUQVRFOiAweCUwOHhcbiIsCj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgc25hcHNob3QtPnJlZy5pbmRpcmVjdF9yaW5nX3N0YXRlKTsKPiAtwqDCoMKgwqDCoMKg wqBkcm1fcHJpbnRmKHAsICJcdElQRUhSOiAweCUwOHhcbiIsIHNuYXBzaG90LT5yZWcuaXBlaHIp Owo+IC3CoMKgwqDCoMKgwqDCoHhlX2h3X2VuZ2luZV9zbmFwc2hvdF9pbnN0ZG9uZV9wcmludChz bmFwc2hvdCwgcCk7Cj4gLQo+IC3CoMKgwqDCoMKgwqDCoGlmIChzbmFwc2hvdC0+aHdlLT5jbGFz cyA9PSBYRV9FTkdJTkVfQ0xBU1NfQ09NUFVURSkKPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgZHJtX3ByaW50ZihwLCAiXHRSQ1VfTU9ERTogMHglMDh4XG4iLAo+IC3CoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzbmFwc2hvdC0+cmVnLnJj dV9tb2RlKTsKPiAtwqDCoMKgwqDCoMKgwqBkcm1fcHV0cyhwLCAiXG4iKTsKPiAtfQo+IC0KPiAt LyoqCj4gLSAqIHhlX2h3X2VuZ2luZV9zbmFwc2hvdF9wcmludCAtIFByaW50IG91dCBhIGdpdmVu IFhlIEhXIEVuZ2luZSBzbmFwc2hvdC4KPiAtICogQHNuYXBzaG90OiBYZSBIVyBFbmdpbmUgc25h cHNob3Qgb2JqZWN0Lgo+IC0gKiBAcDogZHJtX3ByaW50ZXIgd2hlcmUgaXQgd2lsbCBiZSBwcmlu dGVkIG91dC4KPiAtICoKPiAtICogVGhpcyBmdW5jdGlvbiBwcmludHMgb3V0IGEgZ2l2ZW4gWGUg SFcgRW5naW5lIHNuYXBzaG90IG9iamVjdC4KPiAtICovCj4gLXZvaWQgeGVfaHdfZW5naW5lX3Nu YXBzaG90X3ByaW50KHN0cnVjdCB4ZV9od19lbmdpbmVfc25hcHNob3QgKnNuYXBzaG90LAo+IC3C oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCBzdHJ1Y3QgZHJtX3ByaW50ZXIgKnApCj4gLXsKPiAtwqDCoMKgwqDCoMKgwqBpZiAoIXNu YXBzaG90KQo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqByZXR1cm47Cj4gLQo+IC3C oMKgwqDCoMKgwqDCoGlmIChzbmFwc2hvdC0+c291cmNlID09IFhFX0VOR0lORV9DQVBUVVJFX1NP VVJDRV9NQU5VQUwpCj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoF9feGVfaHdfZW5n aW5lX21hbnVhbF9wcmludChzbmFwc2hvdCwgcCk7Cj4gLcKgwqDCoMKgwqDCoMKgZWxzZQo+IC3C oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB4ZV9lbmdpbmVfZ3VjX2NhcHR1cmVfcHJpbnQo c25hcHNob3QsIHApOwo+IC19Cj4gwqAvKioKPiDCoCAqIHhlX2h3X2VuZ2luZV9zbmFwc2hvdF9m cmVlIC0gRnJlZSBhbGwgYWxsb2NhdGVkIG9iamVjdHMgZm9yIGEgZ2l2ZW4gc25hcHNob3QuCj4g wqAgKiBAc25hcHNob3Q6IFhlIEhXIEVuZ2luZSBzbmFwc2hvdCBvYmplY3QuCj4gQEAgLTExMDMs MTIgKzg3MCw2IEBAIHZvaWQgeGVfaHdfZW5naW5lX3NuYXBzaG90X2ZyZWUoc3RydWN0IHhlX2h3 X2VuZ2luZV9zbmFwc2hvdCAqc25hcHNob3QpCj4gwqDCoMKgwqDCoMKgwqDCoGlmICghc25hcHNo b3QpCj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqByZXR1cm47Cj4gwqAKPiAtwqDC oMKgwqDCoMKgwqBrZnJlZShzbmFwc2hvdC0+cmVnLmluc3Rkb25lLnNsaWNlX2NvbW1vbik7Cj4g LcKgwqDCoMKgwqDCoMKga2ZyZWUoc25hcHNob3QtPnJlZy5pbnN0ZG9uZS5zbGljZV9jb21tb25f ZXh0cmEpOwo+IC3CoMKgwqDCoMKgwqDCoGtmcmVlKHNuYXBzaG90LT5yZWcuaW5zdGRvbmUuc2xp Y2VfY29tbW9uX2V4dHJhMik7Cj4gLcKgwqDCoMKgwqDCoMKga2ZyZWUoc25hcHNob3QtPnJlZy5p bnN0ZG9uZS5zYW1wbGVyKTsKPiAtwqDCoMKgwqDCoMKgwqBrZnJlZShzbmFwc2hvdC0+cmVnLmlu c3Rkb25lLnJvdyk7Cj4gLcKgwqDCoMKgwqDCoMKga2ZyZWUoc25hcHNob3QtPnJlZy5pbnN0ZG9u ZS5nZW9tX3N2Zyk7Cj4gwqDCoMKgwqDCoMKgwqDCoGtmcmVlKHNuYXBzaG90LT5uYW1lKTsKPiDC oMKgwqDCoMKgwqDCoMKga2ZyZWUoc25hcHNob3QpOwo+IMKgfQo+IEBAIC0xMTI1LDcgKzg4Niw3 IEBAIHZvaWQgeGVfaHdfZW5naW5lX3ByaW50KHN0cnVjdCB4ZV9od19lbmdpbmUgKmh3ZSwgc3Ry dWN0IGRybV9wcmludGVyICpwKQo+IMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgeGVfaHdfZW5naW5l X3NuYXBzaG90ICpzbmFwc2hvdDsKPiDCoAo+IMKgwqDCoMKgwqDCoMKgwqBzbmFwc2hvdCA9IHhl X2h3X2VuZ2luZV9zbmFwc2hvdF9jYXB0dXJlKGh3ZSwgTlVMTCk7Cj4gLcKgwqDCoMKgwqDCoMKg eGVfaHdfZW5naW5lX3NuYXBzaG90X3ByaW50KHNuYXBzaG90LCBwKTsKPiArwqDCoMKgwqDCoMKg wqB4ZV9lbmdpbmVfc25hcHNob3RfcHJpbnQoc25hcHNob3QsIHApOwo+IMKgwqDCoMKgwqDCoMKg wqB4ZV9od19lbmdpbmVfc25hcHNob3RfZnJlZShzbmFwc2hvdCk7Cj4gwqB9Cj4gwqAKPiBkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3hlL3hlX2h3X2VuZ2luZS5oIGIvZHJpdmVycy9ncHUv ZHJtL3hlL3hlX2h3X2VuZ2luZS5oCj4gaW5kZXggYzI0MjgzMjZhMzY2Li5kYTBhNjkyMmEyNmYg MTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL3hlL3hlX2h3X2VuZ2luZS5oCj4gKysrIGIv ZHJpdmVycy9ncHUvZHJtL3hlL3hlX2h3X2VuZ2luZS5oCj4gQEAgLTU4LDggKzU4LDYgQEAgdTMy IHhlX2h3X2VuZ2luZV9tYXNrX3Blcl9jbGFzcyhzdHJ1Y3QgeGVfZ3QgKmd0LAo+IMKgc3RydWN0 IHhlX2h3X2VuZ2luZV9zbmFwc2hvdCAqCj4gwqB4ZV9od19lbmdpbmVfc25hcHNob3RfY2FwdHVy ZShzdHJ1Y3QgeGVfaHdfZW5naW5lICpod2UsIHN0cnVjdCB4ZV9zY2hlZF9qb2IgKmpvYik7Cj4g wqB2b2lkIHhlX2h3X2VuZ2luZV9zbmFwc2hvdF9mcmVlKHN0cnVjdCB4ZV9od19lbmdpbmVfc25h cHNob3QgKnNuYXBzaG90KTsKPiAtdm9pZCB4ZV9od19lbmdpbmVfc25hcHNob3RfcHJpbnQoc3Ry dWN0IHhlX2h3X2VuZ2luZV9zbmFwc2hvdCAqc25hcHNob3QsCj4gLcKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHN0cnVjdCBkcm1f cHJpbnRlciAqcCk7Cj4gwqB2b2lkIHhlX2h3X2VuZ2luZV9wcmludChzdHJ1Y3QgeGVfaHdfZW5n aW5lICpod2UsIHN0cnVjdCBkcm1fcHJpbnRlciAqcCk7Cj4gwqB2b2lkIHhlX2h3X2VuZ2luZV9z ZXR1cF9kZWZhdWx0X2xyY19zdGF0ZShzdHJ1Y3QgeGVfaHdfZW5naW5lICpod2UpOwo+IMKgCj4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS94ZS94ZV9od19lbmdpbmVfdHlwZXMuaCBiL2Ry aXZlcnMvZ3B1L2RybS94ZS94ZV9od19lbmdpbmVfdHlwZXMuaAo+IGluZGV4IDQyYmNkY2U5MGMy Ni4uNTMzMjAzNTcxNzJlIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS94ZS94ZV9od19l bmdpbmVfdHlwZXMuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS94ZS94ZV9od19lbmdpbmVfdHlw ZXMuaAo+IEBAIC0xODAsNjUgKzE4MCw2IEBAIHN0cnVjdCB4ZV9od19lbmdpbmVfc25hcHNob3Qg ewo+IMKgwqDCoMKgwqDCoMKgwqB9IGZvcmNld2FrZTsKPiDCoMKgwqDCoMKgwqDCoMKgLyoqIEBt bWlvX2Jhc2U6IE1NSU8gYmFzZSBhZGRyZXNzIG9mIHRoaXMgaHcgZW5naW5lKi8KPiDCoMKgwqDC oMKgwqDCoMKgdTMyIG1taW9fYmFzZTsKPiAtwqDCoMKgwqDCoMKgwqAvKiogQHJlZzogVXNlZnVs IE1NSU8gcmVnaXN0ZXIgc25hcHNob3QgKi8KPiAtwqDCoMKgwqDCoMKgwqBzdHJ1Y3Qgewo+IC3C oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAvKiogQHJlZy5yaW5nX2V4ZWNsaXN0X3N0YXR1 czogUklOR19FWEVDTElTVF9TVEFUVVMgKi8KPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgdTY0IHJpbmdfZXhlY2xpc3Rfc3RhdHVzOwo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAvKiogQHJlZy5yaW5nX2V4ZWNsaXN0X3NxX2NvbnRlbnRzOiBSSU5HX0VYRUNMSVNUX1NR X0NPTlRFTlRTICovCj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHU2NCByaW5nX2V4 ZWNsaXN0X3NxX2NvbnRlbnRzOwo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAvKiog QHJlZy5yaW5nX2FjdGhkOiBSSU5HX0FDVEhEICovCj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoHU2NCByaW5nX2FjdGhkOwo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAv KiogQHJlZy5yaW5nX2JiYWRkcjogUklOR19CQkFERFIgKi8KPiAtwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgdTY0IHJpbmdfYmJhZGRyOwo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAvKiogQHJlZy5yaW5nX2RtYV9mYWRkOiBSSU5HX0RNQV9GQUREICovCj4gLcKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoHU2NCByaW5nX2RtYV9mYWRkOwo+IC3CoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAvKiogQHJlZy5yaW5nX2h3c3RhbTogUklOR19IV1NUQU0gKi8KPiAt wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgdTMyIHJpbmdfaHdzdGFtOwo+IC3CoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAvKiogQHJlZy5yaW5nX2h3c19wZ2E6IFJJTkdfSFdTX1BH QSAqLwo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB1MzIgcmluZ19od3NfcGdhOwo+ IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAvKiogQHJlZy5yaW5nX3N0YXJ0OiBSSU5H X1NUQVJUICovCj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHU2NCByaW5nX3N0YXJ0 Owo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAvKiogQHJlZy5yaW5nX2hlYWQ6IFJJ TkdfSEVBRCAqLwo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB1MzIgcmluZ19oZWFk Owo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAvKiogQHJlZy5yaW5nX3RhaWw6IFJJ TkdfVEFJTCAqLwo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB1MzIgcmluZ190YWls Owo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAvKiogQHJlZy5yaW5nX2N0bDogUklO R19DVEwgKi8KPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgdTMyIHJpbmdfY3RsOwo+ IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAvKiogQHJlZy5yaW5nX21pX21vZGU6IFJJ TkdfTUlfTU9ERSAqLwo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB1MzIgcmluZ19t aV9tb2RlOwo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAvKiogQHJlZy5yaW5nX21v ZGU6IFJJTkdfTU9ERSAqLwo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB1MzIgcmlu Z19tb2RlOwo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAvKiogQHJlZy5yaW5nX2lt cjogUklOR19JTVIgKi8KPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgdTMyIHJpbmdf aW1yOwo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAvKiogQHJlZy5yaW5nX2Vzcjog UklOR19FU1IgKi8KPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgdTMyIHJpbmdfZXNy Owo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAvKiogQHJlZy5yaW5nX2VtcjogUklO R19FTVIgKi8KPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgdTMyIHJpbmdfZW1yOwo+ IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAvKiogQHJlZy5yaW5nX2VpcjogUklOR19F SVIgKi8KPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgdTMyIHJpbmdfZWlyOwo+IC3C oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAvKiogQHJlZy5pbmRpcmVjdF9yaW5nX3N0YXRl OiBJTkRJUkVDVF9SSU5HX1NUQVRFICovCj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oHUzMiBpbmRpcmVjdF9yaW5nX3N0YXRlOwo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAvKiogQHJlZy5pcGVocjogSVBFSFIgKi8KPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgdTMyIGlwZWhyOwo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAvKiogQHJlZy5y Y3VfbW9kZTogUkNVX01PREUgKi8KPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgdTMy IHJjdV9tb2RlOwo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3Qgewo+IC3C oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgLyoqIEByZWcuaW5z dGRvbmUucmluZzogUklOR19JTlNURE9ORSAqLwo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgdTMyIHJpbmc7Cj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAvKiogQHJlZy5pbnN0ZG9uZS5zbGljZV9jb21tb246IFND X0lOU1RET05FICovCj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqB1MzIgKnNsaWNlX2NvbW1vbjsKPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoC8qKiBAcmVnLmluc3Rkb25lLnNsaWNlX2NvbW1vbl9leHRyYTogU0Nf SU5TVERPTkVfRVhUUkEgKi8KPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoHUzMiAqc2xpY2VfY29tbW9uX2V4dHJhOwo+IC3CoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgLyoqIEByZWcuaW5zdGRvbmUuc2xpY2VfY29tbW9u X2V4dHJhMjogU0NfSU5TVERPTkVfRVhUUkEyICovCj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB1MzIgKnNsaWNlX2NvbW1vbl9leHRyYTI7Cj4gLcKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAvKiogQHJlZy5pbnN0ZG9u ZS5zYW1wbGVyOiBTQU1QTEVSX0lOU1RET05FICovCj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB1MzIgKnNhbXBsZXI7Cj4gLcKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAvKiogQHJlZy5pbnN0ZG9uZS5yb3c6IFJPV19J TlNURE9ORSAqLwo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgdTMyICpyb3c7Cj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAvKiogQHJlZy5pbnN0ZG9uZS5nZW9tX3N2ZzogSU5TVERPTkVfR0VPTV9TVkdVTklUICov Cj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB1MzIgKmdl b21fc3ZnOwo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB9IGluc3Rkb25lOwo+IC3C oMKgwqDCoMKgwqDCoH0gcmVnOwo+IMKgfTsKPiDCoAo+IMKgI2VuZGlmCgo=