From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail02.groups.io (mail02.groups.io [66.175.222.108]) by spool.mail.gandi.net (Postfix) with ESMTPS id 0093974003A for ; Wed, 13 Dec 2023 04:24:06 +0000 (UTC) DKIM-Signature: a=rsa-sha256; bh=TNK5pmxcQVsT0MRTEH/7M4ftUK/I6SlLFgJ4WPh3I7w=; c=relaxed/simple; d=groups.io; h=ARC-Seal:ARC-Message-Signature:ARC-Authentication-Results:From:To:CC:Subject:Thread-Topic:Thread-Index:Date:Message-ID:References:In-Reply-To:Accept-Language:MIME-Version:Precedence:List-Subscribe:List-Help:Sender:List-Id:Mailing-List:Delivered-To:Reply-To:List-Unsubscribe-Post:List-Unsubscribe:Content-Language:Content-Type:Content-Transfer-Encoding; s=20140610; t=1702441445; v=1; b=fWHBTRcUdiTHzT160hn4x4mUecTVNgELubWBG1+gTXolIShbEfIE+qkWAdoiEx65Ud5z3YR6 o3oqnLGV8wYQiHDSDS2NcxdlvaPyBFSCFhhxVCJjFYcpu2U0cE2zUAdcxdZrGQVsOLDIaQd7dpV cdA39jxnFy5kKCc98Fj3vuYk= X-Received: by 127.0.0.2 with SMTP id tzy1YY7687511xafRsZDPGPB; Tue, 12 Dec 2023 20:24:05 -0800 X-Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.11]) by mx.groups.io with SMTP id smtpd.web11.29012.1702441444765599058 for ; Tue, 12 Dec 2023 20:24:04 -0800 X-IronPort-AV: E=McAfee;i="6600,9927,10922"; a="1723278" X-IronPort-AV: E=Sophos;i="6.04,272,1695711600"; d="scan'208";a="1723278" X-Received: from fmsmga001.fm.intel.com ([10.253.24.23]) by fmvoesa105.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 12 Dec 2023 20:24:03 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10922"; a="917529745" X-IronPort-AV: E=Sophos;i="6.04,272,1695711600"; d="scan'208";a="917529745" X-Received: from orsmsx603.amr.corp.intel.com ([10.22.229.16]) by fmsmga001.fm.intel.com with ESMTP/TLS/AES256-GCM-SHA384; 12 Dec 2023 20:24:03 -0800 X-Received: from orsmsx601.amr.corp.intel.com (10.22.229.14) by ORSMSX603.amr.corp.intel.com (10.22.229.16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.35; Tue, 12 Dec 2023 20:24:02 -0800 X-Received: from orsedg603.ED.cps.intel.com (10.7.248.4) by orsmsx601.amr.corp.intel.com (10.22.229.14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.35 via Frontend Transport; Tue, 12 Dec 2023 20:24:02 -0800 X-Received: from NAM10-DM6-obe.outbound.protection.outlook.com (104.47.58.101) by edgegateway.intel.com (134.134.137.100) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.35; Tue, 12 Dec 2023 20:24:02 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=RQjkwdgCgn4yBE16EeAZqsgHji0ffDDQo4ScSsRy+EHN/SLWazbeVZHwDrEicMMSc8b7VMH2F0u2iwC0U1/sbGnQJFxjdTOXS5KwY5YbKplRvxKoSsHZd4OrgeFHFil2dIw7TGvtBIuPgRlIl5jhOt7LOeOMQ0OkfYykVeA8S8pAnsfQxRBbWfZVlHsm8fH+KzdK3Puq1rx5czLLQQQNQZwstZDOHIaSauZJWDgDRFbu5wukAiJxm0X11DsgUaMVgmE9RH6jOQhsD0VjdihqeSiekHbDbK2/w/JlfkGwe8PXFjvXYF6FguATeuIfw/HNh3ipsp5fbMDp6waySFKcJw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; 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=hUFjA7RIICpcmMOzqNf7+qVL5vFlQmMbo1NDc9MCCT4=; b=hwO/LCD9w9x3dr1kAtr12nitD6yzdH/f5PMSb5BC6VZ8T2KazB/J3VOVay5JFfnsVMicSjz64cXEN7N/12x2VCCm34BViW1d1XPhcAOMnKDVp9vkus3nro8H0g/88m2O2wDe6wH+0+70+5+9ROVv9Z5mDrA04g4MFljnu2yT1DIgZk/yUztMpHoDAUvkBQBLo/roepoGLSN89IsUwpPFVz7Aqpd+RuSreK6yd3J7ZKPqu+nMGCEZU+aM5C9eXcQstPaMVGbFcOeJIGBL4B5sYp55yMy8e+V/K65+jgqh3VUy+mBQqeFnu/loj3ms6h4depuXugMa6FOiQNr9JMVyhg== 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 X-Received: from MN0PR11MB6158.namprd11.prod.outlook.com (2603:10b6:208:3ca::18) by IA1PR11MB6419.namprd11.prod.outlook.com (2603:10b6:208:3a9::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7091.26; Wed, 13 Dec 2023 04:24:00 +0000 X-Received: from MN0PR11MB6158.namprd11.prod.outlook.com ([fe80::864d:d91a:4674:e0f7]) by MN0PR11MB6158.namprd11.prod.outlook.com ([fe80::864d:d91a:4674:e0f7%7]) with mapi id 15.20.7091.022; Wed, 13 Dec 2023 04:24:00 +0000 From: "Wu, Jiaxin" To: Laszlo Ersek , "devel@edk2.groups.io" CC: "Dong, Eric" , "Ni, Ray" , "Zeng, Star" , Gerd Hoffmann , "Kumar, Rahul R" Subject: Re: [edk2-devel] [PATCH v3 2/6] UefiCpuPkg: Adds SmmCpuSyncLib library class Thread-Topic: [edk2-devel] [PATCH v3 2/6] UefiCpuPkg: Adds SmmCpuSyncLib library class Thread-Index: AQHaLThw1F2wSMYcfky0XEAttZZadLCmamVw Date: Wed, 13 Dec 2023 04:23:59 +0000 Message-ID: References: <20231206100122.8028-1-jiaxin.wu@intel.com> <20231206100122.8028-3-jiaxin.wu@intel.com> <302017ed-f9da-bf2c-3f95-6dd53395c335@redhat.com> In-Reply-To: <302017ed-f9da-bf2c-3f95-6dd53395c335@redhat.com> Accept-Language: zh-CN, en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ms-publictraffictype: Email x-ms-traffictypediagnostic: MN0PR11MB6158:EE_|IA1PR11MB6419:EE_ x-ms-office365-filtering-correlation-id: 626bd539-1c94-4ada-2a0f-08dbfb935420 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam-message-info: zmXx+2hUoauLQC0seOb77z3UD9zFjbvcVqc0kaXljSsA+x3lXTxm5cOTt1/koKVCgdSCkNWuedm+HA9D4KjsFejKPDzzuiMHzwNrWF1DHApKBNhy/O//G2FJl5CSiQ2jNvkAF2cMGYUSzqUuFWOplFmibrucLqFFZKUgPGBTYnV8DOFHIkpLvwPFTvBG6K1Jg4fB+5Y9ahzvKoPwj2AUYKOe9jNGWcJrk46UfPTixOdSXqUehOjAot1P6lqTBgdYGu6MLlUt5fzjF5xIN9hg3QvL4JcAXkVm5j/tBCc7zPsbtv6DqdiEl7ML/rk5659w8HCsZFtJMu2tB/kMD9r1GiSRz5oKff2aCLJ6faxTl8NAHiGhSBY+AuDmPG/V4UL8l/0Y/nSojU/H2lSy40B/pW7TVKv+e/uGxsDCihp/dB1NLpoSWnbarsmzoq5X3NbUPwhNrdLTn5+gQBYEZbmjRBV0U+Ru+TYfAYb5Rc2jc9kX/oofb9643PCF3lYcQr5iuVwqX1MahsRKGDcttYz3FOtaffzXrPIOLGl8fKAQWpF/l6SB8PmoEsdP2vb3gCgn/XwBE0Dq/Mze0p2VcYASZVAn+HjjcbMJSTSJRcLqeQr0ruBjbJroircgWIKQaBGd x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?dzdwVXF2bVNrVDdITkdheGtzZE9vdmVPZkFaVkpmYVZpQU9mYURsRjZOOUIr?= =?utf-8?B?QXdoZ05DL1ArY1lWemNjMXNLMnFEZm52ZmI0VW53OURjRDViMWpNU2xZSlFz?= =?utf-8?B?dkNwQkZsTXNEOHorSm50NllTdHF0bmd6MWo3YXo3emczUVJxbzU0WitHMDNq?= =?utf-8?B?NU1rc1k5bEVmVzFlSjE5SW5aRnFKZklMSUpHRG9sQ2dBdnpyeXlGSEZ0Zm1v?= =?utf-8?B?eUVMd3NoVFVoR1hHV0Rhb1k5VzVOVTdob09BdVNESVlrWERBVXI4aGpvSHZX?= =?utf-8?B?ZzNCSUh2bnZEdG1USEZvNnFzanhORHJycmJJaVcxelRkS2FmREZjUlg2ckZR?= =?utf-8?B?Q2NSM2R4WUozOHN2WEdMOGNYREZMMVNXUHhFTkNhMnFpNlI3SlhGL3RvN1VR?= =?utf-8?B?TmllNy9GNEo3UVpuOHVCMmpmSzdEbFhiWHZkYnZ3blFZVU44VU9JQ3pxTFlP?= =?utf-8?B?aWZDNko0Mjg3SEVHNDQ2OENlNzBnMEZIWGVMMnV2WnA3K1lza0FobURYa3ND?= =?utf-8?B?SHBxVHg3b1hXS004aTBCOTU3MmhBV0x1UkZ5MU1WOEN5Wm9Oc3hLb1JaQXhU?= =?utf-8?B?LzdTU3VIRUZKeENwK3RMNGtJcE1DZWJ4UXJueXJMc0tDSVNxcTlsT3pnUEVo?= =?utf-8?B?dEgxMlAvcHg0S0Y5M2cyUmI5WTVGK29KWmlZd0JOTDJwc2lhc25qK3AzbHV2?= =?utf-8?B?cFNoZlh3U05rWUdMS0QvdERsaG1DOXpoc0k0MGpkY0RRWlRSTGYzcW9MMGRJ?= =?utf-8?B?YTJZZTRjVFdZTnVLYUNxYWVXYVhwWldoK2VhcTgvMWl6dDQ5T01xcTZYOFJR?= =?utf-8?B?dTIrbUlNOWxEcmN3SjQxZDFCQ0d1SmEwZ2s2UlNMeUEveXlYM0N3Z1ROSXNC?= =?utf-8?B?NHZNalpyTFFmVVhPUWM2cXRESjB4ZHBDWjRzSGo1QlhzTURjdmRKbzZKYkQ0?= =?utf-8?B?RHBGR09HOU5ITnU4L0ZYZ0pjeFcvb1p4WWdBTXR4bzc2RHJ0SU5SRmxuazQw?= =?utf-8?B?RDNLOW8zSTN6ODBWd2tsYm5OdkNIcUlPWDUwT3ovSFpiNVJ4U0t1VmhyelZ0?= =?utf-8?B?bXNETnZDbkJVSzdSWHpXNHBsYmNNSVdXWlltT3F5M0pOcVBLQzdZTC9EMEc1?= =?utf-8?B?ekZqZkpiREV0UnFDOEgvUWJGbCttcldEa2EvWllzY3J5NjJidWVmaFUyNFVP?= =?utf-8?B?RnNIenNjbWxZb3BWWXNtY1luRWE0c25CaTFCWmRoeXRlMVh1c2QvOGVpNktJ?= =?utf-8?B?MWpjK1ZkT2wzVzhRaFUyUmwrNmozNTluZXhBcy8veFZDeWZaditGWE5ldDhH?= =?utf-8?B?L1NOcVIrM0c1Y2ZlbkJYcWhPaUUvd3dXYzFmVWwvdy8wbUYwTjNtWURWaEJ1?= =?utf-8?B?NVJNeTFmV3JKTzJwYlczU0I0d0dzT0RwK2xFSk4xWFF3SGYvM2pkVjdFbFRp?= =?utf-8?B?NlFJeXJaeUtvTkRTN0NKWk8yQ2FleHRPa0lpNzJCSlZEcUNUSE9qOFh3aWls?= =?utf-8?B?QTZxWXhEck5LVUt2NkVCSzVQT1A3d2gwQlROTUFKUHhvdGhvYzFTWllpb2Fu?= =?utf-8?B?WngrTnk1RVFvN0M4V3krbmsrbSthNS90anNUSnpHRUFkd2p1NTA1YXJlLzMz?= =?utf-8?B?U2VvZ2RONXZMTHd3WXJNbmFWK05jcDl1SWhLTVFqeDlWT2ZVMGg2S3o4U0FQ?= =?utf-8?B?WTQ5aCtRT01zS012V3h1OThYdnRMaERheTJDV1IrazhOY1ZlY2s2UlJPZytx?= =?utf-8?B?SndheWJUQjlVcWtKS2c1eUFnRktDYVdNdGJiaGhpbVIxN2Q1eW12cDNHMWFU?= =?utf-8?B?ZUFoeUcybEQ5TmMwcUpsOE83N05lUmxnZ0dpVWJFb3dZaGF3RmxmbWhKNmxZ?= =?utf-8?B?emQ1Z09mdHBwWWFKTTIyNHAvUnZobGM5dDAzamZCMkxVa1pJa3RUYmtKSThl?= =?utf-8?B?Z2hSVzRmbGdVajFtVGM4VnZkMEM4L0dnV3ljZ3ZGeXB1enRCdG01YkxIL3NQ?= =?utf-8?B?ZG8zTE8rZVZ6b3B6bk9kbGFQVmllN29JNWw3b1V3a0gyTEc5Q1VleFFGTTI4?= =?utf-8?B?VGg4RXNoZzJSTnFVQTFNK1J3M0lMUGRsMm9FWU1yNTlYeDVOdnAzc1dMRzYx?= =?utf-8?Q?CDNQ=3D?= MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: MN0PR11MB6158.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 626bd539-1c94-4ada-2a0f-08dbfb935420 X-MS-Exchange-CrossTenant-originalarrivaltime: 13 Dec 2023 04:23:59.3072 (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: zI22lvT0M07EgKsS1tSyfmxlmvMVkTJwRxk6bL4N5X9/2zY2+x3dxTe0T83In4RqI3af0OzVi3GW3RAnPGx3Fg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: IA1PR11MB6419 X-OriginatorOrg: intel.com Precedence: Bulk List-Subscribe: List-Help: Sender: devel@edk2.groups.io List-Id: Mailing-List: list devel@edk2.groups.io; contact devel+owner@edk2.groups.io Reply-To: devel@edk2.groups.io,jiaxin.wu@intel.com List-Unsubscribe-Post: List-Unsubscribe=One-Click List-Unsubscribe: X-Gm-Message-State: yt5BcHgxoMbQLniPXzeSMfpZx7686176AA= Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 X-GND-Status: LEGIT Authentication-Results: spool.mail.gandi.net; dkim=pass header.d=groups.io header.s=20140610 header.b=fWHBTRcU; dmarc=fail reason="SPF not aligned (relaxed), DKIM not aligned (relaxed)" header.from=intel.com (policy=none); spf=pass (spool.mail.gandi.net: domain of bounce@groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce@groups.io; arc=reject ("signature check failed: fail, {[1] = sig:microsoft.com:reject}") PiANCj4gVGhhbmtzLiBUaGlzIGRvY3VtZW50YXRpb24gKGluIHRoZSBjb21taXQgbWVzc2FnZSBh bmQgdGhlIGxpYiBjbGFzcw0KPiBoZWFkZXIgZmlsZSkgc2VlbXMgcmVhbGx5IGdvb2QgKGVzcGVj aWFsbHkgd2l0aCB0aGUgZm9ybWF0dGluZyB1cGRhdGVzDQo+IHN1Z2dlc3RlZCBieSBSYXkpLg0K PiANCj4gKDEpIEkgdGhpbmsgdGhlcmUgaXMgb25lIHR5cG86IGV4aXN0IDwtPiBleGl0cy4NCj4g DQoNCmFncmVlLCBJIHdpbGwgZml4IHRoaXMuDQoNCj4gPiArUkVUVVJOX1NUQVRVUw0KPiA+ICtF RklBUEkNCj4gPiArU21tQ3B1U3luY0NvbnRleHRSZXNldCAoDQo+ID4gKyAgSU4gT1VUIFNNTV9D UFVfU1lOQ19DT05URVhUICAqU21tQ3B1U3luY0N0eA0KPiA+ICsgICk7DQo+IA0KPiAoMikgVGhl IGZpbGUtdG9wIGRvY3VtZW50YXRpb24gc2F5cyBhYm91dCB0aGlzIEFQSTogIkNvbnRleHRSZXNl dCgpIGlzDQo+IGNhbGxlZCBiZWZvcmUgQ1BVIGV4aXN0IFNNSSwgd2hpY2ggYWxsb3dzIENQVSB0 byBjaGVjayBpbnRvIHRoZSBuZXh0IFNNSQ0KPiBmcm9tIHRoaXMgcG9pbnQiLg0KPiANCj4gSXQg aXMgbm90IGNsZWFyICp3aGljaCogQ1BVIGlzIHN1cHBvc2VkIHRvIGNhbGwgQ29udGV4dFJlc2V0 IChhbmQgdGhlDQo+IGZ1bmN0aW9uIGRvZXMgbm90IHRha2UgYSBDUFUgaW5kZXgpLiBDYW4geW91 IGV4cGxhaW4gdGhpcyBpbiB0aGUNCj4gZG9jdW1lbnRhdGlvbj8gKEFzc3VtaW5nIG15IG9ic2Vy dmF0aW9uIG1ha2VzIHNlbnNlLikNCj4gDQoNCkZvciBTTU0gQ1BVIGRyaXZlciwgaXQgc2hhbGwg dGhlIEJTUCB0byBjYWxsIHRoZSBmdW5jdGlvbiBzaW5jZSBCU1Agd2lsbCBnYXRoZXIgYWxsIEFQ cyB0byBleGl0IFNNTSBzeW5jaHJvbm91c2x5LCBpdCdzIHRoZSByb2xlIHRvIGNvbnRyb2wgdGhl IG92ZXJhbGwgU01JIGV4ZWN1dGlvbiBmbG93Lg0KDQpGb3IgdGhlIEFQSSBpdHNlbGYsIEkgZG9u J3QgcmVzdHJpY3Qgd2hpY2ggQ1BVIGNhbiBkbyB0aGF0LiBJdCBkZXBlbmRzIG9uIHRoZSBjb25z dW1lci4gU28sIGl0J3Mgbm90IHRoZSBtYW5kYXRvcnksIHRoYXQncyB0aGUgcmVhc29uIEkgZG9u J3QgbWVudGlvbiB0aGF0Lg0KDQpCdXQgeW91IGFyZSByaWdodCwgaGVyZSwgaXQgaGFzIGEgcmVx dWlyZW1lbnQ6IHRoZSBlbGVjdGVkIENQVSBjYWxsaW5nIHRoaXMgZnVuY3Rpb24gbmVlZCBtYWtl IHN1cmUgYWxsIENQVXMgYXJlIHJlYWR5IHRvIGV4aXN0IFNNSS4gSSBjYW4gY2xlYXIgZG9jdW1l bnQgdGhpcyByZXF1aXJlbWVudCBhcyBiZWxvdzoNCg0KIlRoaXMgZnVuY3Rpb24gaXMgY2FsbGVk IGJ5IG9uZSBvZiBDUFVzIGFmdGVyIGFsbCBDUFVzIGFyZSByZWFkeSB0byBleGlzdCBTTUksIHdo aWNoIGFsbG93cyBDUFUgdG8gY2hlY2sgaW50byB0aGUgbmV4dCBTTUkgZnJvbSB0aGlzIHBvaW50 LiINCg0KQmVzaWRlcywgb25lIGNvbW1lbnQgZnJvbSBSYXk6IHdlIGNhbiBBU1NFUlQgdGhlIFNt bUNwdVN5bmNDdHggaXMgbm90IE5VTEwsIGRvbid0IG5lZWQgcmV0dXJuIHN0YXR1cyB0byBoYW5k bGUgYWxsIHN1Y2ggY2FzZS4gaWYgc28sIHRoZSBSRVRVUk5fU1RBVFVTIGlzIG5vdCByZXF1aXJl ZC4NCg0KU28sIGJhc2VkIG9uIGFsbCBhYm92ZSwgSSB3aWxsIHVwZGF0ZSB0aGUgQVBJIGFzIGJl bG93Og0KDQovKioNCiAgUmVzZXQgU01NIENQVSBTeW5jIGNvbnRleHQuIFNNTSBDUFUgU3luYyBj b250ZXh0IHdpbGwgYmUgcmVzZXQgdG8gdGhlIGluaXRpYWxpemVkIHN0YXRlLg0KDQogIFRoaXMg ZnVuY3Rpb24gaXMgY2FsbGVkIGJ5IG9uZSBvZiBDUFVzIGFmdGVyIGFsbCBDUFVzIGFyZSByZWFk eSB0byBleGlzdCBTTUksIHdoaWNoIGFsbG93cyBDUFUgdG8NCiAgY2hlY2sgaW50byB0aGUgbmV4 dCBTTUkgZnJvbSB0aGlzIHBvaW50Lg0KDQogIElmIENvbnRleHQgaXMgTlVMTCwgdGhlbiBBU1NF UlQoKS4NCg0KICBAcGFyYW1baW4sb3V0XSAgQ29udGV4dCAgICAgUG9pbnRlciB0byB0aGUgU01N IENQVSBTeW5jIGNvbnRleHQgb2JqZWN0IHRvIGJlIHJlc2V0Lg0KDQoqKi8NClZPSUQNCkVGSUFQ SQ0KU21tQ3B1U3luY0NvbnRleHRSZXNldCAoDQogIElOIE9VVCBTTU1fQ1BVX1NZTkNfQ09OVEVY VCAgKkNvbnRleHQNCiAgKTsNCg0KDQo+ID4gK1JFVFVSTl9TVEFUVVMNCj4gPiArRUZJQVBJDQo+ ID4gK1NtbUNwdVN5bmNHZXRBcnJpdmVkQ3B1Q291bnQgKA0KPiA+ICsgIElOICAgICBTTU1fQ1BV X1NZTkNfQ09OVEVYVCAgKlNtbUNwdVN5bmNDdHgsDQo+ID4gKyAgSU4gT1VUIFVJTlROICAgICAg ICAgICAgICAgICAqQ3B1Q291bnQNCj4gPiArICApOw0KPiANCj4gKDMpIFdoeSBpcyBDcHVDb3Vu dCBJTiBPVVQ/IEkgd291bGQgdGhpbmsganVzdCBPVVQgc2hvdWxkIHN1ZmZpY2UuDQo+IA0KPiAN Cg0KQWdyZWUuIEkgd2lsbCBjb3JyZWN0IGFsbCBzaW1pbGFyIGNhc2UuIEJlc2lkZXMsIEkgYWxz byByZWNlaXZlZCB0aGUgY29tbWVudHMgZnJvbSBSYXkgb2ZmbGluZToNCjEuIHdlIGNhbiBBU1NF UlQgdGhlIFNtbUNwdVN5bmNDdHggaXMgbm90IE5VTEwsIGRvbid0IG5lZWQgcmV0dXJuIHN0YXR1 cyB0byBoYW5kbGUgdGhhdC4NCjIuIHdlIGRvbid0IG5lZWQgUkVUVVJOX1VOU1VQUE9SVEVELCAg R2V0QXJyaXZlZENwdUNvdW50KCkgc2hvdWxkIGJlIGFsd2F5cyBzdXBwb3J0ZWQuDQpXaXRoIGFi b3ZlIGNvbW1lbnRzLCBJIHdpbGwgdXBkYXRlIHRoZSBBUEkgYXMgYmVsb3cgdG8gcmV0dXJuIHRo ZSBjb3VudCBkaXJlY3RseSwgdGhpcyBpcyBhbHNvIGFsaWduZWQgd2l0aCB0aGUgZnVuY3Rpb24g bmFtZSB0byBnZXQgYXJyaXZlZCBDUFUgQ291bnQ6DQoNCi8qKg0KICBHZXQgY3VycmVudCBudW1i ZXIgb2YgYXJyaXZlZCBDUFUgaW4gU01JLg0KDQogIEJTUCBtaWdodCBuZWVkIHRvIGtub3cgdGhl IGN1cnJlbnQgbnVtYmVyIG9mIGFycml2ZWQgQ1BVIGluIFNNSSB0byBtYWtlIHN1cmUgYWxsIEFQ cw0KICBpbiBTTUkuIFRoaXMgQVBJIGNhbiBiZSBmb3IgdGhhdCBwdXJwb3NlLg0KDQogIElmIENv bnRleHQgaXMgTlVMTCwgdGhlbiBBU1NFUlQoKS4NCg0KICBAcGFyYW1baW5dICAgICAgQ29udGV4 dCAgICAgUG9pbnRlciB0byB0aGUgU01NIENQVSBTeW5jIGNvbnRleHQgb2JqZWN0Lg0KDQogIEBy ZXR2YWwgICAgQ3VycmVudCBudW1iZXIgb2YgYXJyaXZlZCBDUFUgaW4gU01JLg0KDQoqKi8NClVJ TlRODQpFRklBUEkNClNtbUNwdVN5bmNHZXRBcnJpdmVkQ3B1Q291bnQgKA0KICBJTiAgU01NX0NQ VV9TWU5DX0NPTlRFWFQgICpDb250ZXh0DQogICk7DQoNCiANCj4gPiArUkVUVVJOX1NUQVRVUw0K PiA+ICtFRklBUEkNCj4gPiArU21tQ3B1U3luY0NoZWNrSW5DcHUgKA0KPiA+ICsgIElOIE9VVCBT TU1fQ1BVX1NZTkNfQ09OVEVYVCAgKlNtbUNwdVN5bmNDdHgsDQo+ID4gKyAgSU4gICAgIFVJTlRO ICAgICAgICAgICAgICAgICBDcHVJbmRleA0KPiA+ICsgICk7DQo+IA0KPiAoNCkgRG8gd2UgbmVl ZCBhbiBlcnJvciBjb25kaXRpb24gZm9yIENwdUluZGV4IGJlaW5nIG91dCBvZiByYW5nZT8NCj4g DQoNCkdvb2QgaWRlYS4gV2UgY2FuIGhhbmRsZSB0aGlzIGNoZWNrIHdpdGhpbiBBU1NFUlQuIFRo ZW4gSSB3aWxsIHVwZGF0ZSBhbGwgc2ltaWxhciBjYXNlIGJ5IGFkZGluZyBiZWxvdyBjb21tZW50 cyBpbiBBUEk6DQoNCiJJZiBDcHVJbmRleCBleGNlZWRzIHRoZSByYW5nZSBvZiBhbGwgQ1BVcyBp biB0aGUgc3lzdGVtLCB0aGVuIEFTU0VSVCgpLiINCg0KRm9yIGV4YW1wbGU6DQovKioNCiAgUGVy Zm9ybXMgYW4gYXRvbWljIG9wZXJhdGlvbiB0byBjaGVjayBpbiBDUFUuDQoNCiAgV2hlbiBTTUkg aGFwcGVucywgYWxsIHByb2Nlc3NvcnMgaW5jbHVkaW5nIEJTUCBlbnRlciB0byBTTU0gbW9kZSBi eSBjYWxsaW5nIFNtbUNwdVN5bmNDaGVja0luQ3B1KCkuDQoNCiAgSWYgQ29udGV4dCBpcyBOVUxM LCB0aGVuIEFTU0VSVCgpLg0KICBJZiBDcHVJbmRleCBleGNlZWRzIHRoZSByYW5nZSBvZiBhbGwg Q1BVcyBpbiB0aGUgc3lzdGVtLCB0aGVuIEFTU0VSVCgpLg0KDQogIEBwYXJhbVtpbixvdXRdICBD b250ZXh0ICAgICAgICAgICBQb2ludGVyIHRvIHRoZSBTTU0gQ1BVIFN5bmMgY29udGV4dCBvYmpl Y3QuDQogIEBwYXJhbVtpbl0gICAgICBDcHVJbmRleCAgICAgICAgICBDaGVjayBpbiBDUFUgaW5k ZXguDQoNCiAgQHJldHZhbCBSRVRVUk5fU1VDQ0VTUyAgICAgICAgICAgIENoZWNrIGluIENQVSAo Q3B1SW5kZXgpIHN1Y2Nlc3NmdWxseS4NCiAgQHJldHZhbCBSRVRVUk5fQUJPUlRFRCAgICAgICAg ICAgIENoZWNrIGluIENQVSBmYWlsZWQgZHVlIHRvIFNtbUNwdVN5bmNMb2NrRG9vcigpIGhhcyBi ZWVuIGNhbGxlZCBieSBvbmUgZWxlY3RlZCBDUFUuDQoNCioqLw0KUkVUVVJOX1NUQVRVUw0KRUZJ QVBJDQpTbW1DcHVTeW5jQ2hlY2tJbkNwdSAoDQogIElOIE9VVCBTTU1fQ1BVX1NZTkNfQ09OVEVY VCAgKkNvbnRleHQsDQogIElOICAgICBVSU5UTiAgICAgICAgICAgICAgICAgQ3B1SW5kZXgNCiAg KTsNCg0KDQo+ICg1KSBEbyB3ZSBoYXZlIGEgc3BlY2lhbCBDcHVJbmRleCB2YWx1ZSBmb3IgdGhl IEJTUD8NCj4gDQoNCk5vLCB0aGUgZWxlY3RlZCBCU1AgaXMgYWxzbyB0aGUgcGFydCBvZiBDUFVz IHdpdGggaXRzIG93biBDcHVJbmRleCB2YWx1ZS4NCg0KDQo+ID4gKw0KPiA+ICsvKioNCj4gPiAr ICBQZXJmb3JtcyBhbiBhdG9taWMgb3BlcmF0aW9uIHRvIGNoZWNrIG91dCBDUFUuDQo+ID4gKw0K PiA+ICsgIENoZWNrT3V0Q3B1KCkgY2FuIGJlIGNhbGxlZCBpbiBlcnJvciBoYW5kbGluZyBmbG93 IGZvciB0aGUgQ1BVIHdobyBjYWxscw0KPiBDaGVja0luQ3B1KCkgZWFybGllci4NCj4gPiArDQo+ ID4gKyAgQHBhcmFtW2luLG91dF0gIFNtbUNwdVN5bmNDdHggICAgIFBvaW50ZXIgdG8gdGhlIFNN TSBDUFUgU3luYw0KPiBjb250ZXh0IG9iamVjdC4NCj4gPiArICBAcGFyYW1baW5dICAgICAgQ3B1 SW5kZXggICAgICAgICAgQ2hlY2sgb3V0IENQVSBpbmRleC4NCj4gPiArDQo+ID4gKyAgQHJldHZh bCBSRVRVUk5fU1VDQ0VTUyAgICAgICAgICAgIENoZWNrIG91dCBDUFUgKENwdUluZGV4KSBzdWNj ZXNzZnVsbHkuDQo+ID4gKyAgQHJldHZhbCBSRVRVUk5fSU5WQUxJRF9QQVJBTUVURVIgIFNtbUNw dVN5bmNDdHggaXMgTlVMTC4NCj4gPiArICBAcmV0dmFsIFJFVFVSTl9OT1RfUkVBRFkgICAgICAg ICAgVGhlIENQVSBpcyBub3QgY2hlY2tlZC1pbi4NCj4gPiArICBAcmV0dmFsIFJFVFVSTl9VTlNV UFBPUlRFRCAgICAgICAgVW5zdXBwb3J0ZWQgb3BlcmF0aW9uLg0KPiA+ICsNCj4gPiArKiovDQo+ ID4gK1JFVFVSTl9TVEFUVVMNCj4gPiArRUZJQVBJDQo+ID4gK1NtbUNwdVN5bmNDaGVja091dENw dSAoDQo+ID4gKyAgSU4gT1VUIFNNTV9DUFVfU1lOQ19DT05URVhUICAqU21tQ3B1U3luY0N0eCwN Cj4gPiArICBJTiAgICAgVUlOVE4gICAgICAgICAgICAgICAgIENwdUluZGV4DQo+ID4gKyAgKTsN Cj4gPiArDQo+IA0KPiAoNikgTG9va3MgZ29vZCwgbXkgb25seSBxdWVzdGlvbiBpcyBhZ2FpbiBp ZiB3ZSBuZWVkIGEgc3RhdHVzIGNvZGUgZm9yDQo+IENwdUluZGV4IGJlaW5nIG91dCBvZiByYW5n ZS4NCj4gDQoNClllcywgYWdyZWUuIFRoZSBjb21tZW50cyBmcm9tIFJheSBpcyB0aGF0IHdlIGRv bid0IG5lZWQgaGFuZGxlIHRoZSBSRVRVUk5fSU5WQUxJRF9QQVJBTUVURVIsIGp1c3QgQVNTRVJU IGZvciBiZXR0ZXIgcGVyZm9ybWFuY2UsIHdlIGNhbiBhdm9pZCB0aGUgaWYgY2hlY2sgaW4gcmVs ZWFzZSB2ZXJzaW9uLiBKdXN0IGRvY3VtZW50IHRoZSBhc3NlcnQuDQoNClRvIGJldHRlciBkZWZp bmUgdGhlIEFQSSBiZWhhdmlvciwgSSB3aWxsIHJlbW92ZSBSRVRVUk5fVU5TVVBQT1JURUQsIGFu ZCByZXBsYWNlZCB3aXRoIFJFVFVSTl9BQk9SVEVELCB3aGljaCBjYW4gYWxpZ24gd2l0aCB0aGUg Y2hlY2tpbiBiZWhhdmlvciBpZiB3ZSBkb24ndCB3YW50IHN1cHBvcnQgdGhlIGNoZWNrb3V0IGFm dGVyIGxvb2sgZG9vci4gUkVUVVJOX0FCT1JURUQgY2xlYXJseSBkb2N1bWVudCB0aGUgYmVoYXZp b3IgaW5zdGVhZCBvZiBSRVRVUk5fVU5TVVBQT1JURUQuICAgICAgICAgIA0KDQpTbywgdGhlIEFQ SSB3b3VsZCBiZSBhcyBiZWxvdzoNCi8qKg0KICBQZXJmb3JtcyBhbiBhdG9taWMgb3BlcmF0aW9u IHRvIGNoZWNrIG91dCBDUFUuDQoNCiAgVGhpcyBmdW5jdGlvbiBjYW4gYmUgY2FsbGVkIGluIGVy cm9yIGhhbmRsaW5nIGZsb3cgZm9yIHRoZSBDUFUgd2hvIGNhbGxzIENoZWNrSW5DcHUoKSBlYXJs aWVyLg0KDQogIElmIENvbnRleHQgaXMgTlVMTCwgdGhlbiBBU1NFUlQoKS4NCiAgSWYgQ3B1SW5k ZXggZXhjZWVkcyB0aGUgcmFuZ2Ugb2YgYWxsIENQVXMgaW4gdGhlIHN5c3RlbSwgdGhlbiBBU1NF UlQoKS4NCg0KICBAcGFyYW1baW4sb3V0XSAgQ29udGV4dCAgICAgICAgICAgUG9pbnRlciB0byB0 aGUgU01NIENQVSBTeW5jIGNvbnRleHQgb2JqZWN0Lg0KICBAcGFyYW1baW5dICAgICAgQ3B1SW5k ZXggICAgICAgICAgQ2hlY2sgb3V0IENQVSBpbmRleC4NCg0KICBAcmV0dmFsIFJFVFVSTl9TVUND RVNTICAgICAgICAgICAgQ2hlY2sgb3V0IENQVSAoQ3B1SW5kZXgpIHN1Y2Nlc3NmdWxseS4NCiAg QHJldHZhbCBSRVRVUk5fQUJPUlRFRCAgICAgICAgICAgIENoZWNrIG91dCBDUFUgZmFpbGVkIGR1 ZSB0byBTbW1DcHVTeW5jTG9ja0Rvb3IoKSBoYXMgYmVlbiBjYWxsZWQgYnkgb25lIGVsZWN0ZWQg Q1BVLg0KDQoqKi8NClJFVFVSTl9TVEFUVVMNCkVGSUFQSQ0KU21tQ3B1U3luY0NoZWNrT3V0Q3B1 ICgNCiAgSU4gT1VUIFNNTV9DUFVfU1lOQ19DT05URVhUICAqQ29udGV4dCwNCiAgSU4gICAgIFVJ TlROICAgICAgICAgICAgICAgICBDcHVJbmRleA0KICApOw0KDQoNCj4gPiArLyoqDQo+ID4gKyAg UGVyZm9ybXMgYW4gYXRvbWljIG9wZXJhdGlvbiBsb2NrIGRvb3IgZm9yIENQVSBjaGVja2luIG9y IGNoZWNrb3V0Lg0KPiA+ICsNCj4gPiArICBBZnRlciB0aGlzIGZ1bmN0aW9uLCBDUFUgY2FuIG5v dCBjaGVjayBpbiB2aWEgU21tQ3B1U3luY0NoZWNrSW5DcHUoKS4NCj4gPiArDQo+ID4gKyAgVGhl IENQVSBzcGVjaWZpZWQgYnkgQ3B1SW5kZXggaXMgZWxlY3RlZCB0byBsb2NrIGRvb3IuDQo+ID4g Kw0KPiA+ICsgIEBwYXJhbVtpbixvdXRdICBTbW1DcHVTeW5jQ3R4ICAgICBQb2ludGVyIHRvIHRo ZSBTTU0gQ1BVIFN5bmMNCj4gY29udGV4dCBvYmplY3QuDQo+ID4gKyAgQHBhcmFtW2luXSAgICAg IENwdUluZGV4ICAgICAgICAgIEluZGljYXRlIHdoaWNoIENQVSB0byBsb2NrIGRvb3IuDQo+ID4g KyAgQHBhcmFtW2luLG91dF0gIENwdUNvdW50ICAgICAgICAgIE51bWJlciBvZiBhcnJpdmVkIENQ VSBpbiBTTUkgYWZ0ZXIgbG9vaw0KPiBkb29yLg0KPiA+ICsNCj4gPiArICBAcmV0dmFsIFJFVFVS Tl9TVUNDRVNTICAgICAgICAgICAgTG9jayBkb29yIGZvciBDUFUgc3VjY2Vzc2Z1bGx5Lg0KPiA+ ICsgIEByZXR2YWwgUkVUVVJOX0lOVkFMSURfUEFSQU1FVEVSICBTbW1DcHVTeW5jQ3R4IG9yIENw dUNvdW50IGlzDQo+IE5VTEwuDQo+ID4gKw0KPiA+ICsqKi8NCj4gPiArUkVUVVJOX1NUQVRVUw0K PiA+ICtFRklBUEkNCj4gPiArU21tQ3B1U3luY0xvY2tEb29yICgNCj4gPiArICBJTiBPVVQgU01N X0NQVV9TWU5DX0NPTlRFWFQgICpTbW1DcHVTeW5jQ3R4LA0KPiA+ICsgIElOICAgICBVSU5UTiAg ICAgICAgICAgICAgICAgQ3B1SW5kZXgsDQo+ID4gKyAgSU4gT1VUIFVJTlROICAgICAgICAgICAg ICAgICAqQ3B1Q291bnQNCj4gPiArICApOw0KPiANCj4gVGhpcyBpcyB3aGVyZSBpdCdzIGdldHRp bmcgdHJpY2t5IDopDQo+IA0KPiAoNykgZXJyb3IgY29uZGl0aW9uIGZvciBDcHVJbmRleCBiZWlu ZyBvdXQgb2YgcmFuZ2U/DQoNClllcywgYWdyZWUuIFRoZSBzYW1lIGNhc2UgYXMgYWJvdmUsIGl0 IHdpbGwgYmUgaGFuZGxlZCBpbiB0aGUgQVNTRVJUIGFuZCBkb2N1bWVudGVkIGluIHRoZSBjb21t ZW50cy4NCg0KPiANCj4gKDgpIHdoeSBpcyBDcHVDb3VudCBJTiBPVVQgYW5kIG5vdCBqdXN0IE9V VD8gKE90aGVyIHRoYW4gdGhhdCwgSSBjYW4gc2VlDQo+IGhvdyBvdXRwdXR0aW5nIENwdUNvdXQg YXQgb25jZSBjYW4gYmUgdXNlZnVsLikNCj4gDQoNCldlbGwsIEkgYWdyZWUgaXQgc2hvdWxkIG9u bHkgT1VULiANCkNwdUNvdXQgaXMgdG8gdGVsbCB0aGUgbnVtYmVyIG9mIGFycml2ZWQgQ1BVIGlu IFNNSSBhZnRlciBsb29rIGRvb3IuIEZvciBTTU0gQ1BVIGRyaXZlciwgaXQgbmVlZHMgdG8ga25v dyB0aGUgbnVtYmVyIG9mIGFycml2ZWQgQ1BVIGluIFNNSSBhZnRlciBsb29rIGRvb3IsIGl0J3Mg Zm9yIGxhdGVyIHJlbmRlenZvdXMgJiBzeW5jIHVzYWdlLiBTbywgaXQgcmV0dXJucyB0aGUgQ3B1 Q291bnQuDQoNCg0KPiAoOSkgZG8gd2UgbmVlZCBlcnJvciBjb25kaXRpb25zIGZvcjoNCj4gDQo+ ICg5LjEpIENwdUluZGV4IGJlaW5nICJ3cm9uZyIgKGkuZS4sIG5vdCB0aGUgQ1BVIHRoYXQncyAi c3VwcG9zZWQiIHRvDQo+IGxvY2sgdGhlIGRvb3IpPw0KPiANCj4gKDkuMikgQ3B1SW5kZXggbm90 IGhhdmluZyBjaGVja2VkIGluIGFscmVhZHksIGJlZm9yZSB0cnlpbmcgdG8gbG9jayB0aGUNCj4g ZG9vcj8NCj4gDQo+IE5vdywgSSBjYW4gaW1hZ2luZSB0aGF0IHByb2JsZW0gKDkuMSkgaXMgdW5k ZXRlY3RhYmxlLCBpLmUuLCBpdCBjYXVzZXMNCj4gdW5kZWZpbmVkIGJlaGF2aW9yLiBUaGF0J3Mg ZmluZSwgYnV0IHRoZW4gd2Ugc2hvdWxkIG1lbnRpb24gdGhhdC4NCj4gDQoNCkFjdHVhbGx5IENw dUluZGV4IG1pZ2h0IG5vdCBiZSBjYXJlZCBieSB0aGUgbGliIGluc3RhbmNlLiBJdCBwdXRzIGhl cmUganVzdCBmb3IgdGhlIGZ1dHVyZSBleHRlbnNpb24gdGhhdCBzb21lIGxpYiBpbnN0YW5jZSBt aWdodCBuZWVkIHRvIGtub3cgd2hpY2ggQ1BVIGxvY2sgdGhlIGRvb3IuIEl0J3MgdGhlIGluZm9y bWF0aW9uIHByb3ZpZGVkIGJ5IHRoZSBBUEkuDQpJIGRvbid0IGFkZCB0aGUgZXJyb3IgY2hlY2sg Zm9yIHRob3NlIGJlY2F1c2UgSSBkb24ndCB3YW50IGZvY3VzIHRoZSBpbXBsZW1lbnRhdGlvbiB0 byBkbyB0aGlzIGNoZWNrLg0KDQogQnV0IEkgYWdyZWUsIHdlIGNhbiBkb2N1bWVudCB0aGlzIHVu ZGVmaW5lZCBiZWhhdmlvci4gSG93IGFib3V0IGxpa2UgYmVsb3c6DQogICJUaGUgQ1BVIHNwZWNp ZmllZCBieSBDcHVJbmRleCBpcyBlbGVjdGVkIHRvIGxvY2sgZG9vci4gVGhlIGNhbGxlciBzaGFs bCBtYWtlIHN1cmUgdGhlIENwdUluZGV4IGlzIHRoZSBhY3R1YWwgQ1BVIGNhbGxpbmcgdGhpcyBm dW5jdGlvbiB0byBhdm9pZCB0aGUgdW5kZWZpbmVkIGJlaGF2aW9yLiINCg0KIFdpdGggYWJvdmUs IEkgd2lsbCB1cGRhdGUgdGhlIEFQSSBsaWtlIGJlbG93Og0KDQovKioNCiAgUGVyZm9ybXMgYW4g YXRvbWljIG9wZXJhdGlvbiBsb2NrIGRvb3IgZm9yIENQVSBjaGVja2luIGFuZCBjaGVja291dC4g QWZ0ZXIgdGhpcyBmdW5jdGlvbjoNCiAgQ1BVIGNhbiBub3QgY2hlY2sgaW4gdmlhIFNtbUNwdVN5 bmNDaGVja0luQ3B1KCkuDQogIENQVSBjYW4gbm90IGNoZWNrIG91dCB2aWEgU21tQ3B1U3luY0No ZWNrT3V0Q3B1KCkuDQoNCiAgVGhlIENQVSBzcGVjaWZpZWQgYnkgQ3B1SW5kZXggaXMgZWxlY3Rl ZCB0byBsb2NrIGRvb3IuIFRoZSBjYWxsZXIgc2hhbGwgbWFrZSBzdXJlIHRoZSBDcHVJbmRleA0K ICBpcyB0aGUgYWN0dWFsIENQVSBjYWxsaW5nIHRoaXMgZnVuY3Rpb24gdG8gYXZvaWQgdGhlIHVu ZGVmaW5lZCBiZWhhdmlvci4NCg0KICBJZiBDb250ZXh0IGlzIE5VTEwsIHRoZW4gQVNTRVJUKCku DQogIElmIENwdUNvdW50IGlzIE5VTEwsIHRoZW4gQVNTRVJUKCkuDQoNCiAgQHBhcmFtW2luLG91 dF0gIENvbnRleHQgICAgICAgICAgIFBvaW50ZXIgdG8gdGhlIFNNTSBDUFUgU3luYyBjb250ZXh0 IG9iamVjdC4NCiAgQHBhcmFtW2luXSAgICAgIENwdUluZGV4ICAgICAgICAgIEluZGljYXRlIHdo aWNoIENQVSB0byBsb2NrIGRvb3IuDQogIEBwYXJhbVtpbixvdXRdICBDcHVDb3VudCAgICAgICAg ICBOdW1iZXIgb2YgYXJyaXZlZCBDUFUgaW4gU01JIGFmdGVyIGxvb2sgZG9vci4NCg0KKiovDQpW T0lEDQpFRklBUEkNClNtbUNwdVN5bmNMb2NrRG9vciAoDQogIElOIE9VVCBTTU1fQ1BVX1NZTkNf Q09OVEVYVCAgKkNvbnRleHQsDQogIElOICAgICAgICAgIFVJTlROICAgICAgICAgICAgICAgICBD cHVJbmRleCwNCiAgICAgICBPVVQgVUlOVE4gICAgICAgICAgICAgICAgICpDcHVDb3VudA0KICAp Ow0KDQoNCg0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAgVXNlZCBieSB0aGUgQlNQIHRvIHdhaXQg Zm9yIEFQcy4NCj4gPiArDQo+ID4gKyAgVGhlIG51bWJlciBvZiBBUHMgbmVlZCB0byBiZSB3YWl0 ZWQgaXMgc3BlY2lmaWVkIGJ5IE51bWJlck9mQVBzLiBUaGUNCj4gQlNQIGlzIHNwZWNpZmllZCBi eSBCc3BJbmRleC4NCj4gPiArDQo+ID4gKyAgTm90ZTogVGhpcyBmdW5jdGlvbiBpcyBibG9ja2lu ZyBtb2RlLCBhbmQgaXQgd2lsbCByZXR1cm4gb25seSBhZnRlciB0aGUNCj4gbnVtYmVyIG9mIEFQ cyByZWxlYXNlZCBieQ0KPiA+ICsgIGNhbGxpbmcgU21tQ3B1U3luY1JlbGVhc2VCc3AoKToNCj4g PiArICBCU1A6IFdhaXRGb3JBUHMgICAgPC0tICBBUDogUmVsZWFzZUJzcA0KPiA+ICsNCj4gPiAr ICBAcGFyYW1baW4sb3V0XSAgU21tQ3B1U3luY0N0eCAgICAgUG9pbnRlciB0byB0aGUgU01NIENQ VSBTeW5jDQo+IGNvbnRleHQgb2JqZWN0Lg0KPiA+ICsgIEBwYXJhbVtpbl0gICAgICBOdW1iZXJP ZkFQcyAgICAgICBOdW1iZXIgb2YgQVBzIG5lZWQgdG8gYmUgd2FpdGVkIGJ5DQo+IEJTUC4NCj4g PiArICBAcGFyYW1baW5dICAgICAgQnNwSW5kZXggICAgICAgICAgVGhlIEJTUCBJbmRleCB0byB3 YWl0IGZvciBBUHMuDQo+ID4gKw0KPiA+ICsgIEByZXR2YWwgUkVUVVJOX1NVQ0NFU1MgICAgICAg ICAgICBCU1AgdG8gd2FpdCBmb3IgQVBzIHN1Y2Nlc3NmdWxseS4NCj4gPiArICBAcmV0dmFsIFJF VFVSTl9JTlZBTElEX1BBUkFNRVRFUiAgU21tQ3B1U3luY0N0eCBpcyBOVUxMIG9yDQo+IE51bWJl ck9mQVBzID4gdG90YWwgbnVtYmVyIG9mIHByb2Nlc3NvcnMgaW4gc3lzdGVtLg0KPiA+ICsNCj4g PiArKiovDQo+ID4gK1JFVFVSTl9TVEFUVVMNCj4gPiArRUZJQVBJDQo+ID4gK1NtbUNwdVN5bmNX YWl0Rm9yQVBzICgNCj4gPiArICBJTiBPVVQgU01NX0NQVV9TWU5DX0NPTlRFWFQgICpTbW1DcHVT eW5jQ3R4LA0KPiA+ICsgIElOICAgICBVSU5UTiAgICAgICAgICAgICAgICAgTnVtYmVyT2ZBUHMs DQo+ID4gKyAgSU4gICAgIFVJTlROICAgICAgICAgICAgICAgICBCc3BJbmRleA0KPiA+ICsgICk7 DQo+IA0KPiBUaGUgIk51bWJlck9mQVBzID4gdG90YWwgbnVtYmVyIG9mIHByb2Nlc3NvcnMgaW4g c3lzdGVtIiBjaGVjayBpcyBuaWNlIQ0KPiANCj4gKDEwKSBBZ2FpbiwgZG8gd2UgbmVlZCBhIHNp bWlsYXIgZXJyb3IgY29uZGl0aW9uIGZvciBCc3BJbmRleCBiZWluZyBvdXQNCj4gb2YgcmFuZ2U/ DQo+IA0KDQpBZ3JlZSwgSSB3aWxsIGhhbmRsZSB0aGUgY2FzZSBpbiB0aGUgc2FtZSB3YXkgYXMg YWJvdmUgaW4gdGhlIEFTU0VSVC4gSWYgc28sIG5vIG5lZWQgcmV0dXJuIHRoZSBzdGF0dXMuDQoN Cg0KPiAoMTEpIERvIHdlIG5lZWQgdG8gZG9jdW1lbnQgLyBlbmZvcmNlIGV4cGxpY2l0bHkgKHN0 YXR1cyBjb2RlKSB0aGF0IHRoZQ0KPiBCU1AgYW5kIHRoZSBBUHMgbXVzdCBoYXZlIGNoZWNrZWQg aW4sIGFuZC9vciB0aGUgZG9vciBtdXN0IGhhdmUgYmVlbg0KPiBsb2NrZWQ/IEFnYWluIC0tIGlm IHdlIGNhbid0IGRldGVjdCAvIGVuZm9yY2UgdGhlc2UgY29uZGl0aW9ucywgdGhhdCdzDQo+IGZp bmUsIGJ1dCB0aGVuIHdlIHNob3VsZCBtZW50aW9uIHRoZSBleHBlY3RlZCBjYWxsIGVudmlyb25t ZW50LiBUaGUNCj4gZmlsZS10b3AgZGVzY3JpcHRpb24gZG9lcyBub3Qgc2VlbSB2ZXJ5IGV4cGxp Y2l0IGFib3V0IGl0Lg0KPiANCg0KQWdyZWUsIGlmIEJzcEluZGV4IGlzIHRoZSBhY3R1YWwgQ1BV IGNhbGxpbmcgdGhpcyBmdW5jdGlvbiwgaXQgbXVzdCBiZSBjaGVja2luIGJlZm9yZS4gU28sIGhv dyBhYm91dCBhZGRpbmcgdGhlIGNvbW1lbnRzIGFzIGJlbG93Og0KICAiIFRoZSBjYWxsZXIgc2hh bGwgbWFrZSBzdXJlIHRoZSBCc3BJbmRleCBpcyB0aGUgYWN0dWFsIENQVSBjYWxsaW5nIHRoaXMg ZnVuY3Rpb24gdG8gYXZvaWQgdGhlIHVuZGVmaW5lZCBiZWhhdmlvci4iDQoNCkJhc2VkIG9uIGFi b3ZlLCBJIHByb3Bvc2UgdGhlIEFQSSB0byBiZToNCg0KLyoqDQogIFVzZWQgYnkgdGhlIEJTUCB0 byB3YWl0IGZvciBBUHMuDQoNCiAgVGhlIG51bWJlciBvZiBBUHMgbmVlZCB0byBiZSB3YWl0ZWQg aXMgc3BlY2lmaWVkIGJ5IE51bWJlck9mQVBzLiBUaGUgQlNQIGlzIHNwZWNpZmllZCBieSBCc3BJ bmRleC4NCiAgVGhlIGNhbGxlciBzaGFsbCBtYWtlIHN1cmUgdGhlIEJzcEluZGV4IGlzIHRoZSBh Y3R1YWwgQ1BVIGNhbGxpbmcgdGhpcyBmdW5jdGlvbiB0byBhdm9pZCB0aGUgdW5kZWZpbmVkIGJl aGF2aW9yLg0KICBUaGUgY2FsbGVyIHNoYWxsIG1ha2Ugc3VyZSB0aGUgTnVtYmVyT2ZBUHMgaGF2 ZSBjaGVja2VkLWluIHRvIGF2b2lkIHRoZSB1bmRlZmluZWQgYmVoYXZpb3IuDQoNCiAgSWYgQ29u dGV4dCBpcyBOVUxMLCB0aGVuIEFTU0VSVCgpLg0KICBJZiBOdW1iZXJPZkFQcyA+IEFsbCBDUFVz IGluIHN5c3RlbSwgdGhlbiBBU1NFUlQoKS4NCiAgSWYgQnNwSW5kZXggZXhjZWVkcyB0aGUgcmFu Z2Ugb2YgYWxsIENQVXMgaW4gdGhlIHN5c3RlbSwgdGhlbiBBU1NFUlQoKS4NCg0KICBOb3RlOg0K ICBUaGlzIGZ1bmN0aW9uIGlzIGJsb2NraW5nIG1vZGUsIGFuZCBpdCB3aWxsIHJldHVybiBvbmx5 IGFmdGVyIHRoZSBudW1iZXIgb2YgQVBzIHJlbGVhc2VkIGJ5DQogIGNhbGxpbmcgU21tQ3B1U3lu Y1JlbGVhc2VCc3AoKToNCiAgQlNQOiBXYWl0Rm9yQVBzICAgIDwtLSAgQVA6IFJlbGVhc2VCc3AN Cg0KICBAcGFyYW1baW4sb3V0XSAgQ29udGV4dCAgICAgICAgICAgUG9pbnRlciB0byB0aGUgU01N IENQVSBTeW5jIGNvbnRleHQgb2JqZWN0Lg0KICBAcGFyYW1baW5dICAgICAgTnVtYmVyT2ZBUHMg ICAgICAgTnVtYmVyIG9mIEFQcyBuZWVkIHRvIGJlIHdhaXRlZCBieSBCU1AuDQogIEBwYXJhbVtp bl0gICAgICBCc3BJbmRleCAgICAgICAgICBUaGUgQlNQIEluZGV4IHRvIHdhaXQgZm9yIEFQcy4N Cg0KKiovDQpWT0lEDQpFRklBUEkNClNtbUNwdVN5bmNXYWl0Rm9yQVBzICgNCiAgSU4gT1VUIFNN TV9DUFVfU1lOQ19DT05URVhUICAqQ29udGV4dCwNCiAgSU4gICAgIFVJTlROICAgICAgICAgICAg ICAgICBOdW1iZXJPZkFQcywNCiAgSU4gICAgIFVJTlROICAgICAgICAgICAgICAgICBCc3BJbmRl eA0KICApOw0KDQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICBVc2VkIGJ5IHRoZSBCU1AgdG8gcmVs ZWFzZSBvbmUgQVAuDQo+ID4gKw0KPiA+ICsgIFRoZSBBUCBpcyBzcGVjaWZpZWQgYnkgQ3B1SW5k ZXguIFRoZSBCU1AgaXMgc3BlY2lmaWVkIGJ5IEJzcEluZGV4Lg0KPiA+ICsNCj4gPiArICBAcGFy YW1baW4sb3V0XSAgU21tQ3B1U3luY0N0eCAgICAgUG9pbnRlciB0byB0aGUgU01NIENQVSBTeW5j DQo+IGNvbnRleHQgb2JqZWN0Lg0KPiA+ICsgIEBwYXJhbVtpbl0gICAgICBDcHVJbmRleCAgICAg ICAgICBJbmRpY2F0ZSB3aGljaCBBUCBuZWVkIHRvIGJlIHJlbGVhc2VkLg0KPiA+ICsgIEBwYXJh bVtpbl0gICAgICBCc3BJbmRleCAgICAgICAgICBUaGUgQlNQIEluZGV4IHRvIHJlbGVhc2UgQVAu DQo+ID4gKw0KPiA+ICsgIEByZXR2YWwgUkVUVVJOX1NVQ0NFU1MgICAgICAgICAgICBCU1AgdG8g cmVsZWFzZSBvbmUgQVAgc3VjY2Vzc2Z1bGx5Lg0KPiA+ICsgIEByZXR2YWwgUkVUVVJOX0lOVkFM SURfUEFSQU1FVEVSICBTbW1DcHVTeW5jQ3R4IGlzIE5VTEwgb3INCj4gQ3B1SW5kZXggaXMgc2Ft ZSBhcyBCc3BJbmRleC4NCj4gPiArDQo+ID4gKyoqLw0KPiA+ICtSRVRVUk5fU1RBVFVTDQo+ID4g K0VGSUFQSQ0KPiA+ICtTbW1DcHVTeW5jUmVsZWFzZU9uZUFwICAgKA0KPiA+ICsgIElOIE9VVCBT TU1fQ1BVX1NZTkNfQ09OVEVYVCAgKlNtbUNwdVN5bmNDdHgsDQo+ID4gKyAgSU4gICAgIFVJTlRO ICAgICAgICAgICAgICAgICBDcHVJbmRleCwNCj4gPiArICBJTiAgICAgVUlOVE4gICAgICAgICAg ICAgICAgIEJzcEluZGV4DQo+ID4gKyAgKTsNCj4gDQo+ICgxMikgU2FtZSBjb21tZW50cyBhcyBl bHNld2hlcmU6DQo+IA0KPiAtIGl0J3MgZ29vZCB0aGF0IHdlIGNoZWNrIENwdUluZGV4IHZlcnN1 cyBCc3BJbmRleCwgYnV0IGRvIHdlIGFsc28gbmVlZA0KPiB0byByYW5nZS1jaGVjayBlYWNoPw0K PiANCg0KQWdyZWUuDQoNCj4gLSBkb2N1bWVudCB0aGF0IGJvdGggYWZmZWN0ZWQgQ1BVcyBuZWVk IHRvIGhhdmUgY2hlY2tlZCBpbiwgd2l0aCB0aGUNCj4gZG9vciBwb3RlbnRpYWxseSBsb2NrZWQ/ DQo+IA0KDQpZZXMsIGZvciBTTU0gQ1BVIGRyaXZlciwgaXQgc2hhbGwgYmUgY2FsbGVkIGFmdGVy IGxvb2sgZG9vci4gRm9yIEFQSSBpdHNlbGYsIGl0J3MgYmV0dGVyIG5vdCByZXN0cmljdCBpdC4g dGhlIG9ubHkgcmVxdWlyZW1lbnQgSSBjYW4gc2VlIGlzIG5lZWQgQ3B1SW5kZXggbXVzdCBiZSBj aGVja2luLiBTbywgSSB3aWxsIHJlZmluZSBpdCBhcyBiZWxvdzoNCi8qKg0KICBVc2VkIGJ5IHRo ZSBCU1AgdG8gcmVsZWFzZSBvbmUgQVAuDQoNCiAgVGhlIEFQIGlzIHNwZWNpZmllZCBieSBDcHVJ bmRleC4gVGhlIEJTUCBpcyBzcGVjaWZpZWQgYnkgQnNwSW5kZXguDQogIFRoZSBjYWxsZXIgc2hh bGwgbWFrZSBzdXJlIHRoZSBCc3BJbmRleCBpcyB0aGUgYWN0dWFsIENQVSBjYWxsaW5nIHRoaXMg ZnVuY3Rpb24gdG8gYXZvaWQgdGhlIHVuZGVmaW5lZCBiZWhhdmlvci4NCiAgVGhlIGNhbGxlciBz aGFsbCBtYWtlIHN1cmUgdGhlIENwdUluZGV4IGhhcyBjaGVja2VkLWluIHRvIGF2b2lkIHRoZSB1 bmRlZmluZWQgYmVoYXZpb3IuDQoNCiAgSWYgQ29udGV4dCBpcyBOVUxMLCB0aGVuIEFTU0VSVCgp Lg0KICBJZiBDcHVJbmRleCA9PSBCc3BJbmRleCwgdGhlbiBBU1NFUlQoKS4NCiAgSWYgQnNwSW5k ZXggYW5kIENwdUluZGV4IGV4Y2VlZCB0aGUgcmFuZ2Ugb2YgYWxsIENQVXMgaW4gdGhlIHN5c3Rl bSwgdGhlbiBBU1NFUlQoKS4NCg0KICBAcGFyYW1baW4sb3V0XSAgQ29udGV4dCAgICAgICAgICAg UG9pbnRlciB0byB0aGUgU01NIENQVSBTeW5jIGNvbnRleHQgb2JqZWN0Lg0KICBAcGFyYW1baW5d ICAgICAgQ3B1SW5kZXggICAgICAgICAgSW5kaWNhdGUgd2hpY2ggQVAgbmVlZCB0byBiZSByZWxl YXNlZC4NCiAgQHBhcmFtW2luXSAgICAgIEJzcEluZGV4ICAgICAgICAgIFRoZSBCU1AgSW5kZXgg dG8gcmVsZWFzZSBBUC4NCg0KKiovDQpWT0lEDQpFRklBUEkNClNtbUNwdVN5bmNSZWxlYXNlT25l QXAgICAoDQogIElOIE9VVCBTTU1fQ1BVX1NZTkNfQ09OVEVYVCAgKkNvbnRleHQsDQogIElOICAg ICBVSU5UTiAgICAgICAgICAgICAgICAgQ3B1SW5kZXgsDQogIElOICAgICBVSU5UTiAgICAgICAg ICAgICAgICAgQnNwSW5kZXgNCiAgKTsNCg0KDQoNCj4gDQo+ID4gKw0KPiA+ICsvKioNCj4gPiAr ICBVc2VkIGJ5IHRoZSBBUCB0byB3YWl0IEJTUC4NCj4gPiArDQo+ID4gKyAgVGhlIEFQIGlzIHNw ZWNpZmllZCBieSBDcHVJbmRleC4gVGhlIEJTUCBpcyBzcGVjaWZpZWQgYnkgQnNwSW5kZXguDQo+ ID4gKw0KPiA+ICsgIE5vdGU6IFRoaXMgZnVuY3Rpb24gaXMgYmxvY2tpbmcgbW9kZSwgYW5kIGl0 IHdpbGwgcmV0dXJuIG9ubHkgYWZ0ZXIgdGhlIEFQDQo+IHJlbGVhc2VkIGJ5DQo+ID4gKyAgY2Fs bGluZyBTbW1DcHVTeW5jUmVsZWFzZU9uZUFwKCk6DQo+ID4gKyAgQlNQOiBSZWxlYXNlT25lQXAg IC0tPiAgQVA6IFdhaXRGb3JCc3ANCj4gPiArDQo+ID4gKyAgQHBhcmFtW2luLG91dF0gIFNtbUNw dVN5bmNDdHggICAgUG9pbnRlciB0byB0aGUgU01NIENQVSBTeW5jIGNvbnRleHQNCj4gb2JqZWN0 Lg0KPiA+ICsgIEBwYXJhbVtpbl0gICAgICBDcHVJbmRleCAgICAgICAgIEluZGljYXRlIHdoaWNo IEFQIHdhaXQgQlNQLg0KPiA+ICsgIEBwYXJhbVtpbl0gICAgICBCc3BJbmRleCAgICAgICAgIFRo ZSBCU1AgSW5kZXggdG8gYmUgd2FpdGVkLg0KPiA+ICsNCj4gPiArICBAcmV0dmFsIFJFVFVSTl9T VUNDRVNTICAgICAgICAgICAgQVAgdG8gd2FpdCBCU1Agc3VjY2Vzc2Z1bGx5Lg0KPiA+ICsgIEBy ZXR2YWwgUkVUVVJOX0lOVkFMSURfUEFSQU1FVEVSICBTbW1DcHVTeW5jQ3R4IGlzIE5VTEwgb3IN Cj4gQ3B1SW5kZXggaXMgc2FtZSBhcyBCc3BJbmRleC4NCj4gPiArDQo+ID4gKyoqLw0KPiA+ICtS RVRVUk5fU1RBVFVTDQo+ID4gK0VGSUFQSQ0KPiA+ICtTbW1DcHVTeW5jV2FpdEZvckJzcCAoDQo+ ID4gKyAgSU4gT1VUIFNNTV9DUFVfU1lOQ19DT05URVhUICAqU21tQ3B1U3luY0N0eCwNCj4gPiAr ICBJTiAgICAgVUlOVE4gICAgICAgICAgICAgICAgIENwdUluZGV4LA0KPiA+ICsgIElOICAgICBV SU5UTiAgICAgICAgICAgICAgICAgQnNwSW5kZXgNCj4gPiArICApOw0KPiA+ICsNCj4gDQo+ICgx MykgU2FtZSBxdWVzdGlvbnMgYXMgdW5kZXIgKDEyKS4NCj4gDQoNClNlZSBiZWxvdyBwcm9wb3Nl ZCBBUEk6DQoNCi8qKg0KICBVc2VkIGJ5IHRoZSBBUCB0byB3YWl0IEJTUC4NCg0KICBUaGUgQVAg aXMgc3BlY2lmaWVkIGJ5IENwdUluZGV4Lg0KICBUaGUgY2FsbGVyIHNoYWxsIG1ha2Ugc3VyZSB0 aGUgQ3B1SW5kZXggaXMgdGhlIGFjdHVhbCBDUFUgY2FsbGluZyB0aGlzIGZ1bmN0aW9uIHRvIGF2 b2lkIHRoZSB1bmRlZmluZWQgYmVoYXZpb3IuDQogIFRoZSBCU1AgaXMgc3BlY2lmaWVkIGJ5IEJz cEluZGV4Lg0KDQogIElmIENvbnRleHQgaXMgTlVMTCwgdGhlbiBBU1NFUlQoKS4NCiAgSWYgQ3B1 SW5kZXggPT0gQnNwSW5kZXgsIHRoZW4gQVNTRVJUKCkuDQogIElmIEJzcEluZGV4IGFuZCBDcHVJ bmRleCBleGNlZWQgdGhlIHJhbmdlIG9mIGFsbCBDUFVzIGluIHRoZSBzeXN0ZW0sIHRoZW4gQVNT RVJUKCkuDQoNCiAgTm90ZToNCiAgVGhpcyBmdW5jdGlvbiBpcyBibG9ja2luZyBtb2RlLCBhbmQg aXQgd2lsbCByZXR1cm4gb25seSBhZnRlciB0aGUgQVAgcmVsZWFzZWQgYnkNCiAgY2FsbGluZyBT bW1DcHVTeW5jUmVsZWFzZU9uZUFwKCk6DQogIEJTUDogUmVsZWFzZU9uZUFwICAtLT4gIEFQOiBX YWl0Rm9yQnNwDQoNCiAgQHBhcmFtW2luLG91dF0gIENvbnRleHQgICAgICAgICAgUG9pbnRlciB0 byB0aGUgU01NIENQVSBTeW5jIGNvbnRleHQgb2JqZWN0Lg0KICBAcGFyYW1baW5dICAgICAgQ3B1 SW5kZXggICAgICAgICBJbmRpY2F0ZSB3aGljaCBBUCB3YWl0IEJTUC4NCiAgQHBhcmFtW2luXSAg ICAgIEJzcEluZGV4ICAgICAgICAgVGhlIEJTUCBJbmRleCB0byBiZSB3YWl0ZWQuDQoNCioqLw0K Vk9JRA0KRUZJQVBJDQpTbW1DcHVTeW5jV2FpdEZvckJzcCAoDQogIElOIE9VVCBTTU1fQ1BVX1NZ TkNfQ09OVEVYVCAgKkNvbnRleHQsDQogIElOICAgICBVSU5UTiAgICAgICAgICAgICAgICAgQ3B1 SW5kZXgsDQogIElOICAgICBVSU5UTiAgICAgICAgICAgICAgICAgQnNwSW5kZXgNCiAgKTsNCg0K DQo+ID4gKy8qKg0KPiA+ICsgIFVzZWQgYnkgdGhlIEFQIHRvIHJlbGVhc2UgQlNQLg0KPiA+ICsN Cj4gPiArICBUaGUgQVAgaXMgc3BlY2lmaWVkIGJ5IENwdUluZGV4LiBUaGUgQlNQIGlzIHNwZWNp ZmllZCBieSBCc3BJbmRleC4NCj4gPiArDQo+ID4gKyAgQHBhcmFtW2luLG91dF0gIFNtbUNwdVN5 bmNDdHggICAgIFBvaW50ZXIgdG8gdGhlIFNNTSBDUFUgU3luYw0KPiBjb250ZXh0IG9iamVjdC4N Cj4gPiArICBAcGFyYW1baW5dICAgICAgQ3B1SW5kZXggICAgICAgICAgSW5kaWNhdGUgd2hpY2gg QVAgcmVsZWFzZSBCU1AuDQo+ID4gKyAgQHBhcmFtW2luXSAgICAgIEJzcEluZGV4ICAgICAgICAg IFRoZSBCU1AgSW5kZXggdG8gYmUgcmVsZWFzZWQuDQo+ID4gKw0KPiA+ICsgIEByZXR2YWwgUkVU VVJOX1NVQ0NFU1MgICAgICAgICAgICBBUCB0byByZWxlYXNlIEJTUCBzdWNjZXNzZnVsbHkuDQo+ ID4gKyAgQHJldHZhbCBSRVRVUk5fSU5WQUxJRF9QQVJBTUVURVIgIFNtbUNwdVN5bmNDdHggaXMg TlVMTCBvcg0KPiBDcHVJbmRleCBpcyBzYW1lIGFzIEJzcEluZGV4Lg0KPiA+ICsNCj4gPiArKiov DQo+ID4gK1JFVFVSTl9TVEFUVVMNCj4gPiArRUZJQVBJDQo+ID4gK1NtbUNwdVN5bmNSZWxlYXNl QnNwICgNCj4gPiArICBJTiBPVVQgU01NX0NQVV9TWU5DX0NPTlRFWFQgICpTbW1DcHVTeW5jQ3R4 LA0KPiA+ICsgIElOICAgICBVSU5UTiAgICAgICAgICAgICAgICAgQ3B1SW5kZXgsDQo+ID4gKyAg SU4gICAgIFVJTlROICAgICAgICAgICAgICAgICBCc3BJbmRleA0KPiA+ICsgICk7DQo+IA0KPiAo MTQpIFNhbWUgcXVlc3Rpb25zIGFzIHVuZGVyICgxMikuDQo+IA0KDQpTZWUgYmVsb3cgcHJvcG9z ZWQgQVBJOg0KDQovKioNCiAgVXNlZCBieSB0aGUgQVAgdG8gcmVsZWFzZSBCU1AuDQoNCiAgVGhl IEFQIGlzIHNwZWNpZmllZCBieSBDcHVJbmRleC4NCiAgVGhlIGNhbGxlciBzaGFsbCBtYWtlIHN1 cmUgdGhlIENwdUluZGV4IGlzIHRoZSBhY3R1YWwgQ1BVIGNhbGxpbmcgdGhpcyBmdW5jdGlvbiB0 byBhdm9pZCB0aGUgdW5kZWZpbmVkIGJlaGF2aW9yLg0KICBUaGUgQlNQIGlzIHNwZWNpZmllZCBi eSBCc3BJbmRleC4NCg0KICBJZiBDb250ZXh0IGlzIE5VTEwsIHRoZW4gQVNTRVJUKCkuDQogIElm IENwdUluZGV4ID09IEJzcEluZGV4LCB0aGVuIEFTU0VSVCgpLg0KICBJZiBCc3BJbmRleCBhbmQg Q3B1SW5kZXggZXhjZWVkIHRoZSByYW5nZSBvZiBhbGwgQ1BVcyBpbiB0aGUgc3lzdGVtLCB0aGVu IEFTU0VSVCgpLg0KDQogIEBwYXJhbVtpbixvdXRdICBDb250ZXh0ICAgICAgICAgICBQb2ludGVy IHRvIHRoZSBTTU0gQ1BVIFN5bmMgY29udGV4dCBvYmplY3QuDQogIEBwYXJhbVtpbl0gICAgICBD cHVJbmRleCAgICAgICAgICBJbmRpY2F0ZSB3aGljaCBBUCByZWxlYXNlIEJTUC4NCiAgQHBhcmFt W2luXSAgICAgIEJzcEluZGV4ICAgICAgICAgIFRoZSBCU1AgSW5kZXggdG8gYmUgcmVsZWFzZWQu DQoNCioqLw0KVk9JRA0KRUZJQVBJDQpTbW1DcHVTeW5jUmVsZWFzZUJzcCAoDQogIElOIE9VVCBT TU1fQ1BVX1NZTkNfQ09OVEVYVCAgKkNvbnRleHQsDQogIElOICAgICBVSU5UTiAgICAgICAgICAg ICAgICAgQ3B1SW5kZXgsDQogIElOICAgICBVSU5UTiAgICAgICAgICAgICAgICAgQnNwSW5kZXgN CiAgKTsNCg0KDQpUaGFua3MsDQpKaWF4aW4gDQoNCg0KPiA+ICsNCj4gPiArI2VuZGlmDQo+ID4g ZGlmZiAtLWdpdCBhL1VlZmlDcHVQa2cvVWVmaUNwdVBrZy5kZWMgYi9VZWZpQ3B1UGtnL1VlZmlD cHVQa2cuZGVjDQo+ID4gaW5kZXggMGI1NDMxZGJmNy4uMjBhYjA3OTIxOSAxMDA2NDQNCj4gPiAt LS0gYS9VZWZpQ3B1UGtnL1VlZmlDcHVQa2cuZGVjDQo+ID4gKysrIGIvVWVmaUNwdVBrZy9VZWZp Q3B1UGtnLmRlYw0KPiA+IEBAIC02MiwxMCArNjIsMTMgQEANCj4gPiAgICBDcHVQYWdlVGFibGVM aWJ8SW5jbHVkZS9MaWJyYXJ5L0NwdVBhZ2VUYWJsZUxpYi5oDQo+ID4NCj4gPiAgICAjIyBAbGli cmFyeWNsYXNzICAgUHJvdmlkZXMgZnVuY3Rpb25zIGZvciBtYW5pcHVsYXRpbmcgc21yYW0gc2F2 ZXN0YXRlDQo+IHJlZ2lzdGVycy4NCj4gPiAgICBNbVNhdmVTdGF0ZUxpYnxJbmNsdWRlL0xpYnJh cnkvTW1TYXZlU3RhdGVMaWIuaA0KPiA+DQo+ID4gKyAgIyMgQGxpYnJhcnljbGFzcyAgIFByb3Zp ZGVzIGZ1bmN0aW9ucyBmb3IgU01NIENQVSBTeW5jIE9wZXJhdGlvbi4NCj4gPiArICBTbW1DcHVT eW5jTGlifEluY2x1ZGUvTGlicmFyeS9TbW1DcHVTeW5jTGliLmgNCj4gPiArDQo+ID4gIFtMaWJy YXJ5Q2xhc3Nlcy5SSVNDVjY0XQ0KPiA+ICAgICMjICBAbGlicmFyeWNsYXNzICBQcm92aWRlcyBm dW5jdGlvbnMgdG8gbWFuYWdlIE1NVSBmZWF0dXJlcyBvbiBSSVNDVjY0DQo+IENQVXMuDQo+ID4g ICAgIyMNCj4gPiAgICBSaXNjVk1tdUxpYnxJbmNsdWRlL0xpYnJhcnkvQmFzZVJpc2NWTW11TGli LmgNCj4gPg0KPiANCj4gVGhlc2UgaW50ZXJmYWNlcyBsb29rIHJlYWwgbmljZSwgbXkgY29tbWVu dHMvcXVlc3Rpb25zIGFyZSBhbGwgZG9jcy1yZWxhdGVkLg0KPiANCj4gVGhhbmtzIQ0KPiBMYXN6 bG8NCg0KDQoKLT0tPS09LT0tPS09LT0tPS09LT0tPS0KR3JvdXBzLmlvIExpbmtzOiBZb3UgcmVj ZWl2ZSBhbGwgbWVzc2FnZXMgc2VudCB0byB0aGlzIGdyb3VwLgpWaWV3L1JlcGx5IE9ubGluZSAo IzExMjQ2NSk6IGh0dHBzOi8vZWRrMi5ncm91cHMuaW8vZy9kZXZlbC9tZXNzYWdlLzExMjQ2NQpN dXRlIFRoaXMgVG9waWM6IGh0dHBzOi8vZ3JvdXBzLmlvL210LzEwMzAxMDE2NC83Njg2MTc2Ckdy b3VwIE93bmVyOiBkZXZlbCtvd25lckBlZGsyLmdyb3Vwcy5pbwpVbnN1YnNjcmliZTogaHR0cHM6 Ly9lZGsyLmdyb3Vwcy5pby9nL2RldmVsL3Vuc3ViIFtyZWJlY2NhQG9wZW5mdy5pb10KLT0tPS09 LT0tPS09LT0tPS09LT0tPS0KCg0K