From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by mx.groups.io with SMTP id smtpd.web11.11527.1636693914349255221 for ; Thu, 11 Nov 2021 21:11:54 -0800 Authentication-Results: mx.groups.io; dkim=pass header.i=@intel.onmicrosoft.com header.s=selector2-intel-onmicrosoft-com header.b=EH0qAXMS; spf=pass (domain: intel.com, ip: 192.55.52.115, mailfrom: w.sheng@intel.com) X-IronPort-AV: E=McAfee;i="6200,9189,10165"; a="233320270" X-IronPort-AV: E=Sophos;i="5.87,228,1631602800"; d="scan'208";a="233320270" Received: from orsmga005.jf.intel.com ([10.7.209.41]) by fmsmga103.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 11 Nov 2021 21:11:53 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.87,228,1631602800"; d="scan'208";a="670533483" Received: from fmsmsx605.amr.corp.intel.com ([10.18.126.85]) by orsmga005.jf.intel.com with ESMTP; 11 Nov 2021 21:11:52 -0800 Received: from fmsmsx610.amr.corp.intel.com (10.18.126.90) by fmsmsx605.amr.corp.intel.com (10.18.126.85) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2242.12; Thu, 11 Nov 2021 21:11:52 -0800 Received: from fmsedg601.ED.cps.intel.com (10.1.192.135) by fmsmsx610.amr.corp.intel.com (10.18.126.90) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2242.12 via Frontend Transport; Thu, 11 Nov 2021 21:11:52 -0800 Received: from NAM10-BN7-obe.outbound.protection.outlook.com (104.47.70.107) by edgegateway.intel.com (192.55.55.70) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2242.12; Thu, 11 Nov 2021 21:11:51 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=BzpqSxcnU+L0gH1/0Df1ullw+xpOp1UeFm9QUpjqB7eTgqDWz7klhJP3DMAUIixYchw2hH12dOBIXQ04mVakWvZg/oueoq/bgB7ICAvYFj4jHuRRA/bhSxY08VplO3UF+trgzhWMCZEpPlfSppiYqc6431t1V3EKyssziX3yK6272OYBRv4yOoEwCO25MtMb+bBRBFhcZf+SycA9clQaQrIHX1BFESx/qcJsGsUOmCZUhzSc0yfyx4T7BqXlGORtFd/7lIHptX7z5dcjmCF7zq1Sb4d4oAxlR6e3o1nJQKQjbGMBsi7OojuLaCniIFLP/bcWeRvUhQ9vbE8UbfY5kw== 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=JhTitF9FBSJj7ln39SPU9O4eL/Q8eH3VTO7WQuNSUqM=; b=RNgCPu1fssOhMW9kzUDvFW1bqfgk7JOa87ojRbTVUdniaeJM7wpTPbJ1BnrdCQpcBxOFLhCOy2pmcn70s+K3OsalyFiafqEEkexAXiN/C8KrHQq6nWrlvjVYQ+RhoSHvr3LwFh/tLjhWUy77myKsBqYsc1qCEn6iJSZ+RFPk4ofyztv66qPFKaTuNMLv8siraIfxOlb0GDEQzl7ZN6tGBOQbtBddjwpbYS1P7O1UcE6bvyL1J15tu5g+N79npt6IFGSJgz8h8JJGRGmONV8P68g7l5b6nrlkfsLwtCtpE4R1F6AnG87EMnBhtrIQEAwsLdQ/L6WnQljcKcnAhcybEg== 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 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=intel.onmicrosoft.com; s=selector2-intel-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=JhTitF9FBSJj7ln39SPU9O4eL/Q8eH3VTO7WQuNSUqM=; b=EH0qAXMSvrMt0H4BUFVskPstDBn4+p+/cT+31UY+STj4Opar3LncRoSCFoz4GS5HZDnwDqCX/WsAOVYphI9nJ1Of95mRNHj09XX+SXPGG5+3Z1LkiEc22cOXhHl1dGsTapbD8UyDM4kQxacHu2THqGMEm6q/h6NqWKkaELHgTdY= Received: from PH0PR11MB4870.namprd11.prod.outlook.com (2603:10b6:510:34::16) by PH0PR11MB5141.namprd11.prod.outlook.com (2603:10b6:510:3c::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4669.11; Fri, 12 Nov 2021 05:11:50 +0000 Received: from PH0PR11MB4870.namprd11.prod.outlook.com ([fe80::a004:6b47:8868:1473]) by PH0PR11MB4870.namprd11.prod.outlook.com ([fe80::a004:6b47:8868:1473%8]) with mapi id 15.20.4690.017; Fri, 12 Nov 2021 05:11:50 +0000 From: "Sheng Wei" To: "Ni, Ray" , "devel@edk2.groups.io" CC: "Dong, Eric" , "Kumar, Rahul1" Subject: Re: [PATCH v4] UefiCpuPkg/PiSmmCpuDxeSmm: Use SMM Interrupt Shadow Stack Thread-Topic: [PATCH v4] UefiCpuPkg/PiSmmCpuDxeSmm: Use SMM Interrupt Shadow Stack Thread-Index: AQHX12ZOeJxVJDXTS0OgChfQ8hN6Vqv/OZmQgAAfCLA= Date: Fri, 12 Nov 2021 05:11:49 +0000 Message-ID: References: <20211112014028.9520-1-w.sheng@intel.com> In-Reply-To: Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-product: dlpe-windows dlp-reaction: no-action dlp-version: 11.6.200.16 authentication-results: intel.com; dkim=none (message not signed) header.d=none;intel.com; dmarc=none action=none header.from=intel.com; x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: e684278a-cec9-45b3-a7ad-08d9a59aeed8 x-ms-traffictypediagnostic: PH0PR11MB5141: x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:7691; x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: nVyy3YEkpp32e83gwqrB7akRW0AVzZ2FzeO3E8eNo50xQTBynlHYGzzWptujSFplHqBoaxv/xJVwV3368FdDAm1uInmxgBrD2PF8HoJqsHrv5AVL22I9zTPOYDieTScVJxFVzPDj4zakfR4uGnM2cVwgFNwJcslX6nSlRZFcqbI9EuEHt1tcyCrK3B4n/NJ8SiFT3AZLG01R8DhXc48wRyAg/Bd4bNvhewYtIItcO1IeMhs20J2qyjNz0DdHvy+QT1lkZ9ihoXHnPVbDhhciYDtICnkn2UTdEYiwhCebj0MJXLffKw54Rp60hjQdYU/+ssUkYGen4mh5ZGVrRa9IABNQLfZL0nQFfIPhKCpgdWZABJw23aH7omVVFxE2nRqNeJyArPqWfClL7qDixYNLSxbC9KE244TyZAZHOiRHIJJ9ipGQZuvcG4ZV1SUUFyksaWE9PFUboUorfbj+ImeoBhXuCPnkqx2Mqb4nqVapEC3KOuXyMH0U2TUYYFhVg1X3LKKHpml95MH8rWFXAm+UyXPcHKbE5epku1/5kR+lbsYTzRWRCZaAzuqq6lp+FF5aLKRD0fCTBykV3EBtq1R+TXTUqLwXA1vBAKSLalZlLtGKf/x2dGFzB7hV3K8qe53lZpfVNHQWnYDvUB8T8+ZhoRpLtCSXlDNz0KgfJR5yOZLKvw2MnwoX3hl8Eb065ATz9gsVv1SauoOUohphrSFWL6NyXc5TM5CaSXZg8y36iQDLvGdz6+p+kY/gf4L3NzfRVFFq5rJ9UOhanJVBIGg5x6CVW7AxQa6lOdxbq0U154U= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PH0PR11MB4870.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(6029001)(366004)(8936002)(52536014)(64756008)(66556008)(9686003)(966005)(26005)(54906003)(8676002)(508600001)(107886003)(5660300002)(55016002)(71200400001)(66946007)(76116006)(33656002)(7696005)(4326008)(66476007)(186003)(82960400001)(30864003)(122000001)(38070700005)(66446008)(38100700002)(86362001)(19627235002)(83380400001)(53546011)(316002)(6506007)(110136005)(2906002)(579004);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?gb2312?B?cGhMbnVaY2Q3UnNRWlBBSzNmckFkR2pncy9kcy9Fbi9LNlkyTkhlcVVIcGtR?= =?gb2312?B?S0JvcFZQVnBtL1ZUUlpJNzRTT3BHQ1M1a1pNZE94bWtISHhUTldUR3lINUl0?= =?gb2312?B?VUVmaTl4S09Yd3pRbVZLYUJ6dWc0T090ampONXV0cUZWTUhtMFg5RVlUUTJG?= =?gb2312?B?OVpFYit1bjBkTFlhRXc1VXYvSWhBbFdSV1ZvQmtYWkpJNnlBWEdDcDVxVUdX?= =?gb2312?B?OExwNTdrQ2dsZ0ZtTG02eE5POS96eitHNHBqN3YwUmdSdmRrQktnalNvdU9H?= =?gb2312?B?V3ltcFFTM2VnTG1zbCtSY1NRaHhQOU9pb21vUVh1Zzh0aFJnaEl2cHJ3S01P?= =?gb2312?B?Rlk2bjE3TUVIemVYSkJKd3RaRFlvRXBxamE5L2RwazdtL3Y0SlNOdE9icDBN?= =?gb2312?B?UktCTHUrNllMNlduWis0dHNBYlBmdzEydm5SRGNyQ1VpeTdrWFJMbzZ6TjVw?= =?gb2312?B?WWVkR2dtTWZOc1pWTmVMZ2dCa3g2RlVRWkNMamx4ZTdZV2trVVBGS3ZuK1Yw?= =?gb2312?B?MkIxbFFJd0Fqb0xaYmoyTkxCNE1FMTNWNk1YYmR2TUMzVGhWWUI4QWROa0Vl?= =?gb2312?B?VFlIUWs3MFV3UmVlU005VUl0N0JZcDF4SVZBbGQyWjBqL0VmdDU5V09QWjFE?= =?gb2312?B?a3hoS0N0TUxRR2pMbmlUcVhQRWY2N0NsYmx3SlRidXRBaW90c3dUcHA5ejBN?= =?gb2312?B?V210QzhBVnlhK2xhTzZjQkZrMEJldlhEbUJvT3lPMTNFQ05TckR6Z0hjeHBv?= =?gb2312?B?QnRwVWFXdzhMQXcvOUZ6L2psRXEvNUxQYnV1dnBLemxkcUFOejdseUpvYmFB?= =?gb2312?B?RXZxU2hkcWNBYzdQZzg1cHdnS1ZaZEtuMmxUZStQaHZHeWxPUG41L3lkVkIw?= =?gb2312?B?ZnRaYlZRUkVZL01EM0hUNndRRFFHYUFkZC9jbERXTWp4OE5NVTZkWjRTVnQ5?= =?gb2312?B?aXVuY2JxU3hoZ1BpM0xxakg3VWc5TVlTM2k3NGdpMXNWR0R2dFNkZzlpS2dI?= =?gb2312?B?enNsdU0yNXNtOEdCbXJVMkI4U1lLWWgwMThNeHdJbDJmRnppaG1CK0c2YXVC?= =?gb2312?B?M25PdFRRWEs4c0JMcCtxVGJub09uSCswdnFaM0pDRGk5NEhQT0E3TDBIWG1p?= =?gb2312?B?UUdNcUY0QUlBREZhZXR4THZ6SVlwK3VlQ2QvbmRPcUZzWU5VV281YjA4b3JT?= =?gb2312?B?b2hzRUxkRHFYYytPZ1ZldnVYZjloS09FTVRhRjlvczM1L1piMDdnanprSTRh?= =?gb2312?B?U0Z4UXJxL0hOcUNGd3dJU05YQTNYTnVYb3IzNDdIdTRlOHVCbkdieTBJNGNT?= =?gb2312?B?UHlsbjRxeEROVE1TZXR1N0tJNC8yaDVrNGZwOHlPSWkvNlpjMVRYSHh0OFlz?= =?gb2312?B?U2dFakRmR1RWSDBITzNqaEVmYXJQKzBTajBIdUw3R3VuK0FqMUhaekxpQ1B2?= =?gb2312?B?WWlVcFBsSytFaGFkQTdYRkxRUG5PMVlUR1I0SGFrb1RhMzEwayt1L3p6M1Jw?= =?gb2312?B?QWMxR3JERzY2U05aWXVacnNTN0wzWGxZTHlzQjhzTVZLZFc5djRRTGFNZ1pr?= =?gb2312?B?ZGYyOXFiWkFpcjVCZGdDd1gyR3g2b3ROdnlabmR2Nm9YOTdleElram1rMFNP?= =?gb2312?B?TjcwSUR0dHNIUzNBTzh1RzlMaTdVa2VLMTVOUWRtYzFXdGtRSEpQTkF5di9j?= =?gb2312?B?RmlKNFhtc2FHdFBVZStvK2dmSnhrRkE1clB1TzJ6bUtqdFQ5cHB5b0NIdkRD?= =?gb2312?B?ZnhiWkhtK0FtNm5vWFRiYWM1cS9DeFFZZUVhMlJycFZtaTBBNFpnMWF3bHZH?= =?gb2312?B?VkQyajRCR3RyZnd3Tm1VcEtVbTZwVldvTUlmdElmdTgvc2RvWUpIckI5em1s?= =?gb2312?B?OW1McHUxVlBTaEwwZ0MwQmMrQm9uUk84ZUZvdUljTTVHOXFOWlZXWEZrbTBK?= =?gb2312?B?T2JBTGdyYUJ3TWdOdVNIU3dpMTZIeEFSOGZ2cGNWMkVscjJMOWtGbU4vWGZ6?= =?gb2312?B?SEZkKzJCTXVzczV6WlJ6RWJYNHVtNWNhbjdhVU1uVUhkUklWa1dHdlU3ZVVt?= =?gb2312?B?Zm1hZWpFSzIrZEVnSjlST1owSnhkcFlwWm9IYzRQZTZBUEltZ1dQN0E0bi9Y?= =?gb2312?B?TkNER1RjSVNsTXNPcGY2UWZPRElaYS90NVlHTkdKUGhYNUJxWjVIeU45bEpF?= =?gb2312?Q?jVb0Q5MRVH39dGz7WjBRsOs=3D?= MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: PH0PR11MB4870.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: e684278a-cec9-45b3-a7ad-08d9a59aeed8 X-MS-Exchange-CrossTenant-originalarrivaltime: 12 Nov 2021 05:11:49.8934 (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: 9fN136a5bwphkyFEaeYgYhZ6JMJTvV65CMGWHRlSVwih94W0Yuv/3bUTolM8ciu0g3HQ/spV+kLpvwG2v8SoJA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH0PR11MB5141 Return-Path: w.sheng@intel.com X-OriginatorOrg: intel.com Content-Language: en-US Content-Type: text/plain; charset="gb2312" Content-Transfer-Encoding: base64 SGkgUmF5LA0KVGhhbmsgeW91IHZlcnkgbXVjaCBmb3IgdGhlIGhlbHAuDQpCUg0KU2hlbmcgV2Vp DQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogTmksIFJheSA8cmF5Lm5p QGludGVsLmNvbT4NCj4gU2VudDogMjAyMcTqMTHUwjEyyNUgMTE6MjENCj4gVG86IFNoZW5nLCBX IDx3LnNoZW5nQGludGVsLmNvbT47IGRldmVsQGVkazIuZ3JvdXBzLmlvDQo+IENjOiBEb25nLCBF cmljIDxlcmljLmRvbmdAaW50ZWwuY29tPjsgS3VtYXIsIFJhaHVsMQ0KPiA8cmFodWwxLmt1bWFy QGludGVsLmNvbT4NCj4gU3ViamVjdDogUkU6IFtQQVRDSCB2NF0gVWVmaUNwdVBrZy9QaVNtbUNw dUR4ZVNtbTogVXNlIFNNTQ0KPiBJbnRlcnJ1cHQgU2hhZG93IFN0YWNrDQo+IA0KPiBSZXZpZXdl ZC1ieTogUmF5IE5pIDxyYXkubmlAaW50ZWwuY29tPg0KPiANCj4gSSB3aWxsIGNyZWF0ZSBQUiBi eSBlbmQgb2YgbXkgdG9kYXkgc2luY2UgdGhpcyBwYXRjaCBmaXhlcyBhIGNyaXRpY2FsIGlzc3Vl IHdoZW4NCj4gZW5hYmxpbmcgQ0VUIGluIFNNTS4NCj4gDQo+ID4gLS0tLS1PcmlnaW5hbCBNZXNz YWdlLS0tLS0NCj4gPiBGcm9tOiBTaGVuZywgVyA8dy5zaGVuZ0BpbnRlbC5jb20+DQo+ID4gU2Vu dDogRnJpZGF5LCBOb3ZlbWJlciAxMiwgMjAyMSA5OjQwIEFNDQo+ID4gVG86IGRldmVsQGVkazIu Z3JvdXBzLmlvDQo+ID4gQ2M6IERvbmcsIEVyaWMgPGVyaWMuZG9uZ0BpbnRlbC5jb20+OyBOaSwg UmF5IDxyYXkubmlAaW50ZWwuY29tPjsNCj4gPiBLdW1hciwgUmFodWwxIDxyYWh1bDEua3VtYXJA aW50ZWwuY29tPg0KPiA+IFN1YmplY3Q6IFtQQVRDSCB2NF0gVWVmaUNwdVBrZy9QaVNtbUNwdUR4 ZVNtbTogVXNlIFNNTSBJbnRlcnJ1cHQNCj4gPiBTaGFkb3cgU3RhY2sNCj4gPg0KPiA+IFdoZW4g Q0VUIHNoYWRvdyBzdGFjayBmZWF0dXJlIGlzIGVuYWJsZWQsIGl0IG5lZWRzIHRvIHVzZSBJU1Qg Zm9yIHRoZQ0KPiA+IGV4Y2VwdGlvbnMsIGFuZCB1c2VzIGludGVycnVwdCBzaGFkb3cgc3RhY2sg Zm9yIHRoZSBzdGFjayBzd2l0Y2guDQo+ID4gU2hhZG93IHN0YWNrIHNob3VsZCBiZSAzMiBieXRl cyBhbGlnbmVkLg0KPiA+IENoZWNrIElTVCBmaWVsZCwgd2hlbiBjbGVhciBzaGFkb3cgc3RhY2sg dG9rZW4gYnVzeSBiaXQgd2hlbiB1c2luZyByZXRmLg0KPiA+DQo+ID4gUkVGOiBodHRwczovL2J1 Z3ppbGxhLnRpYW5vY29yZS5vcmcvc2hvd19idWcuY2dpP2lkPTM3MjgNCj4gPg0KPiA+IFNpZ25l ZC1vZmYtYnk6IFNoZW5nIFdlaSA8dy5zaGVuZ0BpbnRlbC5jb20+DQo+ID4gQ2M6IEVyaWMgRG9u ZyA8ZXJpYy5kb25nQGludGVsLmNvbT4NCj4gPiBDYzogUmF5IE5pIDxyYXkubmlAaW50ZWwuY29t Pg0KPiA+IENjOiBSYWh1bCBLdW1hciA8cmFodWwxLmt1bWFyQGludGVsLmNvbT4NCj4gPiBSZXZp ZXdlZC1ieTogUmF5IE5pIDxyYXkubmlAaW50ZWwuY29tPg0KPiA+IC0tLQ0KPiA+ICAuLi4vWDY0 L1hjb2RlNUV4Y2VwdGlvbkhhbmRsZXJBc20ubmFzbSAgICAgICAgICAgICB8IDY2ICsrKysrKysr KysrKy0tLS0tLQ0KPiA+ICBVZWZpQ3B1UGtnL1BpU21tQ3B1RHhlU21tL1BpU21tQ3B1RHhlU21t LmMgICAgICAgICB8IDYxDQo+ICsrKysrKysrKysrLS0tLS0NCj4gPiAgVWVmaUNwdVBrZy9QaVNt bUNwdUR4ZVNtbS9QaVNtbUNwdUR4ZVNtbS5oICAgICAgICAgfCAxNCArKysrDQo+ID4gIFVlZmlD cHVQa2cvUGlTbW1DcHVEeGVTbW0vWDY0L1BhZ2VUYmwuYyAgICAgICAgICAgIHwgMTIgKysrLQ0K PiA+ICBVZWZpQ3B1UGtnL1BpU21tQ3B1RHhlU21tL1g2NC9TbW1GdW5jc0FyY2guYyAgICAgICB8 IDgxDQo+ICsrKysrKysrKysrKy0tLS0tLS0tLS0NCj4gPiAgNSBmaWxlcyBjaGFuZ2VkLCAxNTcg aW5zZXJ0aW9ucygrKSwgNzcgZGVsZXRpb25zKC0pDQo+ID4NCj4gPiBkaWZmIC0tZ2l0DQo+ID4N Cj4gYS9VZWZpQ3B1UGtnL0xpYnJhcnkvQ3B1RXhjZXB0aW9uSGFuZGxlckxpYi9YNjQvWGNvZGU1 RXhjZXB0aW9uSGFuZGxlDQo+IHINCj4gPiBBc20ubmFzbQ0KPiA+DQo+IGIvVWVmaUNwdVBrZy9M aWJyYXJ5L0NwdUV4Y2VwdGlvbkhhbmRsZXJMaWIvWDY0L1hjb2RlNUV4Y2VwdGlvbkhhbmRsZQ0K PiByDQo+ID4gQXNtLm5hc20NCj4gPiBpbmRleCA0ODgxYTAyODQ4Li44NGExMmRkYjg4IDEwMDY0 NA0KPiA+IC0tLQ0KPiA+DQo+IGEvVWVmaUNwdVBrZy9MaWJyYXJ5L0NwdUV4Y2VwdGlvbkhhbmRs ZXJMaWIvWDY0L1hjb2RlNUV4Y2VwdGlvbkhhbmRsZQ0KPiByDQo+ID4gQXNtLm5hc20NCj4gPiAr KysNCj4gYi9VZWZpQ3B1UGtnL0xpYnJhcnkvQ3B1RXhjZXB0aW9uSGFuZGxlckxpYi9YNjQvWGNv ZGU1RXhjZXB0aW9uSGFuDQo+ID4gKysrIGRsZXJBc20ubmFzbQ0KPiA+IEBAIC0xNSwxNyArMTUs MzYgQEANCj4gPg0KPiA+IDstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCj4gPiAtLS0tLS0tLS0NCj4gPiAgJWluY2x1 ZGUgIk5hc20uaW5jIg0KPiA+DQo+ID4gKzsNCj4gPiArOyBFcXVpdmFsZW50IE5BU00gc3RydWN0 dXJlIG9mIElBMzJfREVTQ1JJUFRPUiA7IHN0cnVjDQo+ID4gK0lBMzJfREVTQ1JJUFRPUg0KPiA+ ICsgIC5MaW1pdCAgICAgICAgICAgICAgICAgICAgICAgICBDVFlQRV9VSU5UMTYgMQ0KPiA+ICsg IC5CYXNlICAgICAgICAgICAgICAgICAgICAgICAgICBDVFlQRV9VSU5UTiAgMQ0KPiA+ICtlbmRz dHJ1Yw0KPiA+ICsNCj4gPiArOw0KPiA+ICs7IEVxdWl2YWxlbnQgTkFTTSBzdHJ1Y3R1cmUgb2Yg SUEzMl9JRFRfR0FURV9ERVNDUklQVE9SIDsgc3RydWMNCj4gPiArSUEzMl9JRFRfR0FURV9ERVND UklQVE9SDQo+ID4gKyAgLk9mZnNldExvdyAgICAgICAgICAgICAgICAgICAgIENUWVBFX1VJTlQx NiAxDQo+ID4gKyAgLlNlbGVjdG9yICAgICAgICAgICAgICAgICAgICAgIENUWVBFX1VJTlQxNiAx DQo+ID4gKyAgLlJlc2VydmVkXzAgICAgICAgICAgICAgICAgICAgIENUWVBFX1VJTlQ4IDENCj4g PiArICAuR2F0ZVR5cGUgICAgICAgICAgICAgICAgICAgICAgQ1RZUEVfVUlOVDggMQ0KPiA+ICsg IC5PZmZzZXRIaWdoICAgICAgICAgICAgICAgICAgICBDVFlQRV9VSU5UMTYgMQ0KPiA+ICsgIC5P ZmZzZXRVcHBlciAgICAgICAgICAgICAgICAgICBDVFlQRV9VSU5UMzIgMQ0KPiA+ICsgIC5SZXNl cnZlZF8xICAgICAgICAgICAgICAgICAgICBDVFlQRV9VSU5UMzIgMQ0KPiA+ICtlbmRzdHJ1Yw0K PiA+ICsNCj4gPiAgOw0KPiA+ICA7IENvbW1vbkV4Y2VwdGlvbkhhbmRsZXIoKQ0KPiA+ICA7DQo+ ID4NCj4gPiAgJWRlZmluZSBWQ19FWENFUFRJT04gMjkNCj4gPiAtJWRlZmluZSBQRl9FWENFUFRJ T04gMTQNCj4gPg0KPiA+ICBleHRlcm4gQVNNX1BGWChtRXJyb3JDb2RlRmxhZykgICAgOyBFcnJv ciBjb2RlIGZsYWdzIGZvciBleGNlcHRpb25zDQo+ID4gIGV4dGVybiBBU01fUEZYKG1Eb0ZhclJl dHVybkZsYWcpICA7IERvIGZhciByZXR1cm4gZmxhZyAgZXh0ZXJuDQo+ID4gQVNNX1BGWChDb21t b25FeGNlcHRpb25IYW5kbGVyKSAtZXh0ZXJuIEFTTV9QRlgoRmVhdHVyZVBjZEdldA0KPiA+IChQ Y2RDcHVTbW1TdGFja0d1YXJkKSkNCj4gPg0KPiA+ICBTRUNUSU9OIC5kYXRhDQo+ID4NCj4gPiBA QCAtMjgyLDQyICszMDEsNDkgQEAgRHJGaW5pc2g6DQo+ID4NCj4gPiAgICAgIDsgVGhlIGZvbGxv dyBhbGdvcml0aG0gaXMgdXNlZCBmb3IgY2xlYXIgc2hhZG93IHN0YWNrIHRva2VuIGJ1c3kgYml0 Lg0KPiA+ICAgICAgOyBUaGUgY29tbWVudCBpcyBiYXNlZCBvbiB0aGUgc2FtcGxlIHNoYWRvdyBz dGFjay4NCj4gPiArICAgIDsgU2hhZG93IHN0YWNrIGlzIDMyIGJ5dGVzIGFsaWduZWQuDQo+ID4g ICAgICA7IFRoZSBzYW1wbGUgc2hhZG93IHN0YWNrIGxheW91dCA6DQo+ID4gICAgICA7IEFkZHJl c3MgfCBDb250ZXh0DQo+ID4gICAgICA7ICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0rDQo+ID4gLSAgICA7ICAweEZEMCAgfCAgIEZSRUUgICAgICAgICAgICAgICAgICB8IGl0IGlz IDB4RkQ4fDB4MDJ8KExNQSAmIENTLkwpLCBhZnRlcg0KPiBTQVZFUFJFVlNTUC4NCj4gPiArICAg IDsgIDB4RkI4ICB8ICAgRlJFRSAgICAgICAgICAgICAgICAgIHwgSXQgaXMgMHhGQzB8MHgwMnwo TE1BICYgQ1MuTCksIGFmdGVyDQo+IFNBVkVQUkVWU1NQLg0KPiA+ICAgICAgOyAgICAgICAgICst LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKw0KPiA+IC0gICAgOyAgMHhGRDggIHwgIFByZXYgU1NQ ICAgICAgICAgICAgICAgfA0KPiA+ICsgICAgOyAgMHhGQzAgIHwgIFByZXYgU1NQICAgICAgICAg ICAgICAgfA0KPiA+ICAgICAgOyAgICAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKw0K PiA+IC0gICAgOyAgMHhGRTAgIHwgICBSSVAgICAgICAgICAgICAgICAgICAgfA0KPiA+ICsgICAg OyAgMHhGQzggIHwgICBSSVAgICAgICAgICAgICAgICAgICAgfA0KPiA+ICAgICAgOyAgICAgICAg ICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKw0KPiA+IC0gICAgOyAgMHhGRTggIHwgICBDUyAg ICAgICAgICAgICAgICAgICAgfA0KPiA+ICsgICAgOyAgMHhGRDAgIHwgICBDUyAgICAgICAgICAg ICAgICAgICAgfA0KPiA+ICAgICAgOyAgICAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t Kw0KPiA+IC0gICAgOyAgMHhGRjAgIHwgIDB4RkYwIHwgQlVTWSAgICAgICAgICAgfCBCVVNZIGZs YWcgY2xlYXJlZCBhZnRlciBDTFJTU0JTWQ0KPiA+ICsgICAgOyAgMHhGRDggIHwgIDB4RkQ4IHwg QlVTWSAgICAgICAgICAgfCBCVVNZIGZsYWcgY2xlYXJlZCBhZnRlciBDTFJTU0JTWQ0KPiA+ICAg ICAgOyAgICAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKw0KPiA+IC0gICAgOyAgMHhG RjggIHwgMHhGRDh8MHgwMnwoTE1BICYgQ1MuTCkgfA0KPiA+ICsgICAgOyAgMHhGRTAgIHwgMHhG QzB8MHgwMnwoTE1BICYgQ1MuTCkgfA0KPiA+ICAgICAgOyAgICAgICAgICstLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tKw0KPiA+ICAgICAgOyBJbnN0cnVjdGlvbnMgZm9yIEludGVsIENvbnRyb2wg RmxvdyBFbmZvcmNlbWVudCBUZWNobm9sb2d5IChDRVQpIGFyZQ0KPiBzdXBwb3J0ZWQgc2luY2Ug TkFTTSB2ZXJzaW9uIDIuMTUuMDEuDQo+ID4gICAgICBjbXAgICAgIHF3b3JkIFtBU01fUEZYKG1E b0ZhclJldHVybkZsYWcpXSwgMA0KPiA+ICAgICAganogICAgICBDZXREb25lDQo+ID4gLSAgICBj bXAgICAgIHF3b3JkIFtyYnAgKyA4XSwgUEZfRVhDRVBUSU9OICAgOyBjaGVjayBpZiBpdCBpcyBh IFBhZ2UgRmF1bHQNCj4gPiAtICAgIGpueiAgICAgQ2V0RG9uZQ0KPiA+IC0gICAgY21wICAgICBi eXRlIFtkd29yZCBBU01fUEZYKEZlYXR1cmVQY2RHZXQNCj4gKFBjZENwdVNtbVN0YWNrR3VhcmQp KV0sIDANCj4gPiAtICAgIGp6ICAgICAgQ2V0RG9uZQ0KPiA+ICAgICAgbW92ICAgICByYXgsIGNy NA0KPiA+IC0gICAgYW5kICAgICByYXgsIDB4ODAwMDAwICAgICAgIDsgY2hlY2sgaWYgQ0VUIGlz IGVuYWJsZWQNCj4gPiArICAgIGFuZCAgICAgcmF4LCAweDgwMDAwMCAgICAgICA7IENoZWNrIGlm IENFVCBpcyBlbmFibGVkDQo+ID4gKyAgICBqeiAgICAgIENldERvbmUNCj4gPiArICAgIHN1YiAg ICAgcnNwLCAweDEwDQo+ID4gKyAgICBzaWR0ICAgIFtyc3BdDQo+ID4gKyAgICBtb3YgICAgIHJj eCwgcXdvcmQgW3JzcCArIElBMzJfREVTQ1JJUFRPUi5CYXNlXTsgR2V0IElEVCBiYXNlIGFkZHJl c3MNCj4gPiArICAgIGFkZCAgICAgcnNwLCAweDEwDQo+ID4gKyAgICBtb3YgICAgIHJheCwgcXdv cmQgW3JicCArIDhdOyBHZXQgZXhjZXB0aW9uIG51bWJlcg0KPiA+ICsgICAgc2FsICAgICByYXgs IDB4MDQgICAgICAgICAgIDsgR2V0IElEVCBvZmZzZXQNCj4gPiArICAgIGFkZCAgICAgcmF4LCBy Y3ggICAgICAgICAgICA7IEdldCBJRFQgZ2F0ZSBkZXNjcmlwdG9yIGFkZHJlc3MNCj4gPiArICAg IG1vdiAgICAgYWwsIGJ5dGUgW3JheCArIElBMzJfSURUX0dBVEVfREVTQ1JJUFRPUi5SZXNlcnZl ZF8wXQ0KPiA+ICsgICAgYW5kICAgICByYXgsIDB4MDEgICAgICAgICAgIDsgQ2hlY2sgSVNUIGZp ZWxkDQo+ID4gICAgICBqeiAgICAgIENldERvbmUNCj4gPiAtICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICA7IFNTUCBzaG91bGQgYmUgMHhGRDggYXQgdGhpcyBwb2ludA0KPiA+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsgU1NQIHNob3VsZCBiZSAweEZDMCBhdCB0aGlz IHBvaW50DQo+ID4gICAgICBtb3YgICAgIHJheCwgMHgwNCAgICAgICAgICAgOyBhZHZhbmNlIHBh c3QgY3M6bGlwOnByZXZzc3A7c3VwZXJ2aXNvciBzaGFkb3cNCj4gc3RhY2sgdG9rZW4NCj4gPiAt ICAgIElOQ1NTUF9SQVggICAgICAgICAgICAgICAgICA7IEFmdGVyIHRoaXMgU1NQIHNob3VsZCBi ZSAweEZGOA0KPiA+IC0gICAgU0FWRVBSRVZTU1AgICAgICAgICAgICAgICAgIDsgbm93IHRoZSBz aGFkb3cgc3RhY2sgcmVzdG9yZSB0b2tlbiB3aWxsIGJlDQo+IGNyZWF0ZWQgYXQgMHhGRDANCj4g PiAtICAgIFJFQURTU1BfUkFYICAgICAgICAgICAgICAgICA7IFJlYWQgbmV3IFNTUCwgU1NQIHNo b3VsZCBiZSAweDEwMDANCj4gPiArICAgIElOQ1NTUF9SQVggICAgICAgICAgICAgICAgICA7IEFm dGVyIHRoaXMgU1NQIHNob3VsZCBiZSAweEZFMA0KPiA+ICsgICAgU0FWRVBSRVZTU1AgICAgICAg ICAgICAgICAgIDsgbm93IHRoZSBzaGFkb3cgc3RhY2sgcmVzdG9yZSB0b2tlbiB3aWxsIGJlDQo+ IGNyZWF0ZWQgYXQgMHhGQjgNCj4gPiArICAgIFJFQURTU1BfUkFYICAgICAgICAgICAgICAgICA7 IFJlYWQgbmV3IFNTUCwgU1NQIHNob3VsZCBiZSAweEZFOA0KPiA+ICAgICAgc3ViICAgICByYXgs IDB4MTANCj4gPiAtICAgIENMUlNTQlNZX1JBWCAgICAgICAgICAgICAgICA7IENsZWFyIHRva2Vu IGF0IDB4RkYwLCBTU1Agc2hvdWxkIGJlIDAgYWZ0ZXIgdGhpcw0KPiA+ICsgICAgQ0xSU1NCU1lf UkFYICAgICAgICAgICAgICAgIDsgQ2xlYXIgdG9rZW4gYXQgMHhGRDgsIFNTUCBzaG91bGQgYmUg MCBhZnRlciB0aGlzDQo+ID4gICAgICBzdWIgICAgIHJheCwgMHgyMA0KPiA+IC0gICAgUlNUT1JT U1BfUkFYICAgICAgICAgICAgICAgIDsgUmVzdG9yZSB0byB0b2tlbiBhdCAweEZEMCwgbmV3IFNT UCB3aWxsIGJlDQo+IDB4RkQwDQo+ID4gKyAgICBSU1RPUlNTUF9SQVggICAgICAgICAgICAgICAg OyBSZXN0b3JlIHRvIHRva2VuIGF0IDB4RkI4LCBuZXcgU1NQIHdpbGwgYmUNCj4gMHhGQjgNCj4g PiAgICAgIG1vdiAgICAgcmF4LCAweDAxICAgICAgICAgICA7IFBvcCBvZmYgdGhlIG5ldyBzYXZl IHRva2VuIGNyZWF0ZWQNCj4gPiAtICAgIElOQ1NTUF9SQVggICAgICAgICAgICAgICAgICA7IFNT UCBzaG91bGQgYmUgMHhGRDggbm93DQo+ID4gKyAgICBJTkNTU1BfUkFYICAgICAgICAgICAgICAg ICAgOyBTU1Agc2hvdWxkIGJlIDB4RkMwIG5vdw0KPiA+ICBDZXREb25lOg0KPiA+DQo+ID4gICAg ICBjbGkNCj4gPiBkaWZmIC0tZ2l0IGEvVWVmaUNwdVBrZy9QaVNtbUNwdUR4ZVNtbS9QaVNtbUNw dUR4ZVNtbS5jDQo+ID4gYi9VZWZpQ3B1UGtnL1BpU21tQ3B1RHhlU21tL1BpU21tQ3B1RHhlU21t LmMNCj4gPiBpbmRleCA2N2FkOWE0YzA3Li4yYjJlMWE1MzkwIDEwMDY0NA0KPiA+IC0tLSBhL1Vl ZmlDcHVQa2cvUGlTbW1DcHVEeGVTbW0vUGlTbW1DcHVEeGVTbW0uYw0KPiA+ICsrKyBiL1VlZmlD cHVQa2cvUGlTbW1DcHVEeGVTbW0vUGlTbW1DcHVEeGVTbW0uYw0KPiA+IEBAIC04NjEsMzUgKzg2 MSw1OCBAQCBQaUNwdVNtbUVudHJ5ICgNCj4gPiAgICBtU21tU3RhY2tTaXplID0gRUZJX1BBR0VT X1RPX1NJWkUgKEVGSV9TSVpFX1RPX1BBR0VTIChQY2RHZXQzMg0KPiAoUGNkQ3B1U21tU3RhY2tT aXplKSkpOw0KPiA+ICAgIGlmIChGZWF0dXJlUGNkR2V0IChQY2RDcHVTbW1TdGFja0d1YXJkKSkg ew0KPiA+ICAgICAgLy8NCj4gPiAtICAgIC8vIDIgbW9yZSBwYWdlcyBpcyBhbGxvY2F0ZWQgZm9y IGVhY2ggcHJvY2Vzc29yLg0KPiA+IC0gICAgLy8gb25lIGlzIGd1YXJkIHBhZ2UgYW5kIHRoZSBv dGhlciBpcyBrbm93biBnb29kIHN0YWNrLg0KPiA+ICsgICAgLy8gU01NIFN0YWNrIEd1YXJkIEVu YWJsZWQNCj4gPiArICAgIC8vICAgMiBtb3JlIHBhZ2VzIGlzIGFsbG9jYXRlZCBmb3IgZWFjaCBw cm9jZXNzb3IsIG9uZSBpcyBndWFyZCBwYWdlIGFuZA0KPiB0aGUgb3RoZXIgaXMga25vd24gZ29v ZCBzdGFjay4NCj4gPiAgICAgIC8vDQo+ID4gLSAgICAvLyArLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQ0KPiAtLS0tLS0tLS0tLSsNCj4gPiAtICAgIC8vIHwgS25vd24gR29vZCBTdGFjayB8IEd1 YXJkIFBhZ2UgfCBTTU0gU3RhY2sgfCAuLi4gfCBLbm93biBHb29kDQo+IFN0YWNrIHwgR3VhcmQg UGFnZSB8IFNNTSBTdGFjayB8DQo+ID4gLSAgICAvLyArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQ0KPiAtLS0tLS0tLS0tLSsNCj4gPiAtICAgIC8vIHwgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgfCAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB8DQo+ID4gLSAgICAvLyB8PC0tLS0tLS0tLS0tLS0tIFByb2Nlc3NvciAwIC0t LS0tLS0tLS0tLS0tPnwgICAgIHw8LS0tLS0tLS0tLS0tLS0gUHJvY2Vzc29yIG4NCj4gLS0tLS0t LS0tLS0tLS0+fA0KPiA+ICsgICAgLy8gKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCj4gLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsNCj4gPiArICAgIC8vIHwgS25vd24gR29vZCBTdGFjayB8 IEd1YXJkIFBhZ2UgfCAgICAgU01NIFN0YWNrICAgIHwgLi4uIHwgS25vd24NCj4gR29vZCBTdGFj ayB8IEd1YXJkIFBhZ2UgfCAgICAgU01NIFN0YWNrICAgIHwNCj4gPiArICAgIC8vICstLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLSstLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tDQo+IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rDQo+ID4gKyAg ICAvLyB8ICAgICAgICA0SyAgICAgICAgfCAgICA0SyAgICAgICBQY2RDcHVTbW1TdGFja1NpemV8 ICAgICB8ICAgICAgICA0SyAgICAgICAgfCAgICA0Sw0KPiBQY2RDcHVTbW1TdGFja1NpemV8DQo+ ID4gKyAgICAvLyB8PC0tLS0tLS0tLS0tLS0tLS0gbVNtbVN0YWNrU2l6ZSAtLS0tLS0tLS0tLS0t LS0tLT58ICAgICB8PC0tLS0tLS0tLS0tLS0tLS0NCj4gbVNtbVN0YWNrU2l6ZSAtLS0tLS0tLS0t LS0tLS0tLT58DQo+ID4gKyAgICAvLyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB8ICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB8DQo+ID4gKyAgICAvLyB8PC0tLS0tLS0tLS0tLS0tLS0tLSBQcm9j ZXNzb3IgMCAtLS0tLS0tLS0tLS0tLS0tLT58ICAgICB8PC0tLS0tLS0tLS0tLS0tLS0tLQ0KPiBQ cm9jZXNzb3IgbiAtLS0tLS0tLS0tLS0tLS0tLT58DQo+ID4gICAgICAvLw0KPiA+ICAgICAgbVNt bVN0YWNrU2l6ZSArPSBFRklfUEFHRVNfVE9fU0laRSAoMik7DQo+ID4gICAgfQ0KPiA+DQo+ID4g ICAgbVNtbVNoYWRvd1N0YWNrU2l6ZSA9IDA7DQo+ID4gICAgaWYgKChQY2RHZXQzMiAoUGNkQ29u dHJvbEZsb3dFbmZvcmNlbWVudFByb3BlcnR5TWFzaykgIT0gMCkgJiYNCj4gbUNldFN1cHBvcnRl ZCkgew0KPiA+IC0gICAgLy8NCj4gPiAtICAgIC8vIEFwcGVuZCBTaGFkb3cgU3RhY2sgYWZ0ZXIg bm9ybWFsIHN0YWNrDQo+ID4gLSAgICAvLw0KPiA+IC0gICAgLy8gfD0gU3RhY2tzDQo+ID4gLSAg ICAvLyArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCj4gLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLSsNCj4gPiAtICAgIC8vIHwgS25vd24gR29vZCBTdGFjayB8IEd1YXJkIFBhZ2Ug fCAgICBTTU0gU3RhY2sgICAgIHwgS25vd24gR29vZA0KPiBTaGFkb3cgU3RhY2sgfCBHdWFyZCBQ YWdlIHwgICAgU01NIFNoYWRvdyBTdGFjayAgICB8DQo+ID4gLSAgICAvLyArLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0NCj4gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsNCj4gPiAt ICAgIC8vIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFBjZENwdVNtbVN0YWNrU2l6 ZXwNCj4gfFBjZENwdVNtbVNoYWRvd1N0YWNrU2l6ZXwNCj4gPiAtICAgIC8vIHw8LS0tLS0tLS0t LS0tLS0tLSBtU21tU3RhY2tTaXplIC0tLS0tLS0tLS0tLS0tLS0tPnw8LS0tLS0tLS0tLS0tLS0t LS0tLS0tDQo+IG1TbW1TaGFkb3dTdGFja1NpemUgLS0tLS0tLS0tLS0tLS0tLS0tLT58DQo+ID4g LSAgICAvLyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgfA0KPiA+IC0gICAgLy8gfDwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLSBQcm9jZXNzb3IgTiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQo+IC0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT58DQo+ID4gLSAgICAvLw0KPiA+ICAgICAgbVNt bVNoYWRvd1N0YWNrU2l6ZSA9IEVGSV9QQUdFU19UT19TSVpFIChFRklfU0laRV9UT19QQUdFUw0K PiA+IChQY2RHZXQzMiAoUGNkQ3B1U21tU2hhZG93U3RhY2tTaXplKSkpOw0KPiA+ICsNCj4gPiAg ICAgIGlmIChGZWF0dXJlUGNkR2V0IChQY2RDcHVTbW1TdGFja0d1YXJkKSkgew0KPiA+ICsgICAg ICAvLw0KPiA+ICsgICAgICAvLyBTTU0gU3RhY2sgR3VhcmQgRW5hYmxlZA0KPiA+ICsgICAgICAv LyBBcHBlbmQgU2hhZG93IFN0YWNrIGFmdGVyIG5vcm1hbCBzdGFjaw0KPiA+ICsgICAgICAvLyAg IDIgbW9yZSBwYWdlcyBpcyBhbGxvY2F0ZWQgZm9yIGVhY2ggcHJvY2Vzc29yLCBvbmUgaXMgZ3Vh cmQgcGFnZSBhbmQNCj4gdGhlIG90aGVyIGlzIGtub3duIGdvb2Qgc2hhZG93IHN0YWNrLg0KPiA+ ICsgICAgICAvLw0KPiA+ICsgICAgICAvLyB8PSBTdGFja3MNCj4gPiArICAgICAgLy8gKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQ0KPiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0r DQo+ID4gKyAgICAgIC8vIHwgS25vd24gR29vZCBTdGFjayB8IEd1YXJkIFBhZ2UgfCAgICBTTU0g U3RhY2sgICAgIHwgS25vd24gR29vZA0KPiBTaGFkb3cgU3RhY2sgfCBHdWFyZCBQYWdlIHwgICAg U01NIFNoYWRvdyBTdGFjayAgICB8DQo+ID4gKyAgICAgIC8vICstLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0NCj4gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKw0KPiA+ICsgICAgICAv LyB8ICAgICAgICAgNEsgICAgICAgfCAgICA0SyAgICAgIHxQY2RDcHVTbW1TdGFja1NpemV8ICAg ICAgICAgICAgNEsgICAgICAgICAgIHwgICAgNEsNCj4gfFBjZENwdVNtbVNoYWRvd1N0YWNrU2l6 ZXwNCj4gPiArICAgICAgLy8gfDwtLS0tLS0tLS0tLS0tLS0tIG1TbW1TdGFja1NpemUgLS0tLS0t LS0tLS0tLS0tLS0+fDwtLS0tLS0tLS0tLS0tLS0tLS0tLS0NCj4gbVNtbVNoYWRvd1N0YWNrU2l6 ZSAtLS0tLS0tLS0tLS0tLS0tLS0tPnwNCj4gPiArICAgICAgLy8gfCAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCj4gPiArICAgICAgLy8g fDwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBQcm9jZXNzb3Ig TiAtLS0tLS0tLS0tLS0tLS0tLS0tLQ0KPiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLT58DQo+ID4gKyAgICAgIC8vDQo+ID4gICAgICAgIG1TbW1TaGFkb3dTdGFja1NpemUgKz0g RUZJX1BBR0VTX1RPX1NJWkUgKDIpOw0KPiA+ICsgICAgfSBlbHNlIHsNCj4gPiArICAgICAgLy8N Cj4gPiArICAgICAgLy8gU01NIFN0YWNrIEd1YXJkIERpc2FibGVkIChLbm93biBHb29kIFN0YWNr IGlzIHN0aWxsIHJlcXVpcmVkIGZvcg0KPiBwb3RlbnRpYWwgc3RhY2sgc3dpdGNoLikNCj4gPiAr ICAgICAgLy8gICBBcHBlbmQgU2hhZG93IFN0YWNrIGFmdGVyIG5vcm1hbCBzdGFjayB3aXRoIDEg bW9yZSBwYWdlIGFzDQo+IGtub3duIGdvb2Qgc2hhZG93IHN0YWNrLg0KPiA+ICsgICAgICAvLyAg IDEgbW9yZSBwYWdlcyBpcyBhbGxvY2F0ZWQgZm9yIGVhY2ggcHJvY2Vzc29yLCBpdCBpcyBrbm93 biBnb29kIHN0YWNrLg0KPiA+ICsgICAgICAvLw0KPiA+ICsgICAgICAvLw0KPiA+ICsgICAgICAv LyB8PSBTdGFja3MNCj4gPiArICAgICAgLy8gKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KPiAt LS0tLS0tKw0KPiA+ICsgICAgICAvLyB8IEtub3duIEdvb2QgU3RhY2sgfCAgICBTTU0gU3RhY2sg ICAgIHwgS25vd24gR29vZCBTaGFkb3cgU3RhY2sgfA0KPiBTTU0gU2hhZG93IFN0YWNrICAgIHwN Cj4gPiArICAgICAgLy8gKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KPiAtLS0tLS0tKw0KPiA+ ICsgICAgICAvLyB8ICAgICAgICA0SyAgICAgICAgfFBjZENwdVNtbVN0YWNrU2l6ZXwgICAgICAg ICAgNEsNCj4gfFBjZENwdVNtbVNoYWRvd1N0YWNrU2l6ZXwNCj4gPiArICAgICAgLy8gfDwtLS0t LS0tLS0tIG1TbW1TdGFja1NpemUgLS0tLS0tLS0tLT58PC0tLS0tLS0tLS0tLS0tLQ0KPiBtU21t U2hhZG93U3RhY2tTaXplIC0tLS0tLS0tLS0tLT58DQo+ID4gKyAgICAgIC8vIHwgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgfA0KPiA+ICsgICAgICAvLyB8PC0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tIFByb2Nlc3NvciBOIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tDQo+IC0tLS0tLS0tLT58DQo+ID4gKyAgICAgIC8vDQo+ID4gKyAgICAgIG1TbW1TaGFkb3dT dGFja1NpemUgKz0gRUZJX1BBR0VTX1RPX1NJWkUgKDEpOw0KPiA+ICsgICAgICBtU21tU3RhY2tT aXplICAgICAgICs9IEVGSV9QQUdFU19UT19TSVpFICgxKTsNCj4gPiAgICAgIH0NCj4gPiAgICB9 DQo+ID4NCj4gPiBkaWZmIC0tZ2l0IGEvVWVmaUNwdVBrZy9QaVNtbUNwdUR4ZVNtbS9QaVNtbUNw dUR4ZVNtbS5oDQo+ID4gYi9VZWZpQ3B1UGtnL1BpU21tQ3B1RHhlU21tL1BpU21tQ3B1RHhlU21t LmgNCj4gPiBpbmRleCAyMjQ4YThjNWVlLi5mYzliNzQ4OTQ4IDEwMDY0NA0KPiA+IC0tLSBhL1Vl ZmlDcHVQa2cvUGlTbW1DcHVEeGVTbW0vUGlTbW1DcHVEeGVTbW0uaA0KPiA+ICsrKyBiL1VlZmlD cHVQa2cvUGlTbW1DcHVEeGVTbW0vUGlTbW1DcHVEeGVTbW0uaA0KPiA+IEBAIC01NTcsNiArNTU3 LDIwIEBAIEluaXRpYWxpemVJRFRTbW1TdGFja0d1YXJkICgNCj4gPiAgICBWT0lEDQo+ID4gICAg KTsNCj4gPg0KPiA+ICsvKioNCj4gPiArICBJbml0aWFsaXplIElEVCBJU1QgRmllbGQuDQo+ID4g Kw0KPiA+ICsgIEBwYXJhbVtpbl0gIEV4Y2VwdGlvblR5cGUgICAgICAgRXhjZXB0aW9uIHR5cGUu DQo+ID4gKyAgQHBhcmFtW2luXSAgSXN0ICAgICAgICAgICAgICAgICBJU1QgdmFsdWUuDQo+ID4g Kw0KPiA+ICsqKi8NCj4gPiArVk9JRA0KPiA+ICtFRklBUEkNCj4gPiArSW5pdGlhbGl6ZUlkdElz dCAoDQo+ID4gKyAgSU4gRUZJX0VYQ0VQVElPTl9UWVBFICAgICAgICAgICAgRXhjZXB0aW9uVHlw ZSwNCj4gPiArICBJTiBVSU5UOCAgICAgICAgICAgICAgICAgICAgICAgICBJc3QNCj4gPiArICAp Ow0KPiA+ICsNCj4gPiAgLyoqDQo+ID4gICAgSW5pdGlhbGl6ZSBHZHQgZm9yIGFsbCBwcm9jZXNz b3JzLg0KPiA+DQo+ID4gZGlmZiAtLWdpdCBhL1VlZmlDcHVQa2cvUGlTbW1DcHVEeGVTbW0vWDY0 L1BhZ2VUYmwuYw0KPiA+IGIvVWVmaUNwdVBrZy9QaVNtbUNwdUR4ZVNtbS9YNjQvUGFnZVRibC5j DQo+ID4gaW5kZXggZDZmOGRkOTRkMy4uMjExYTc4YjFjNCAxMDA2NDQNCj4gPiAtLS0gYS9VZWZp Q3B1UGtnL1BpU21tQ3B1RHhlU21tL1g2NC9QYWdlVGJsLmMNCj4gPiArKysgYi9VZWZpQ3B1UGtn L1BpU21tQ3B1RHhlU21tL1g2NC9QYWdlVGJsLmMNCj4gPiBAQCAtNDgxLDcgKzQ4MSwxNyBAQCBT bW1Jbml0UGFnZVRhYmxlICgNCj4gPiAgICAvLyBBZGRpdGlvbmFsIFNNTSBJRFQgaW5pdGlhbGl6 YXRpb24gZm9yIFNNTSBzdGFjayBndWFyZA0KPiA+ICAgIC8vDQo+ID4gICAgaWYgKEZlYXR1cmVQ Y2RHZXQgKFBjZENwdVNtbVN0YWNrR3VhcmQpKSB7DQo+ID4gLSAgICBJbml0aWFsaXplSURUU21t U3RhY2tHdWFyZCAoKTsNCj4gPiArICAgIERFQlVHICgoREVCVUdfSU5GTywgIkluaXRpYWxpemUg SURUIElTVCBmaWVsZCBmb3IgU01NIFN0YWNrDQo+IEd1YXJkXG4iKSk7DQo+ID4gKyAgICBJbml0 aWFsaXplSWR0SXN0IChFWENFUFRfSUEzMl9QQUdFX0ZBVUxULCAxKTsgIH0NCj4gPiArDQo+ID4g KyAgLy8NCj4gPiArICAvLyBBZGRpdGlvbmFsIFNNTSBJRFQgaW5pdGlhbGl6YXRpb24gZm9yIFNN TSBDRVQgc2hhZG93IHN0YWNrICAvLw0KPiA+ICsgaWYgKChQY2RHZXQzMiAoUGNkQ29udHJvbEZs b3dFbmZvcmNlbWVudFByb3BlcnR5TWFzaykgIT0gMCkgJiYNCj4gbUNldFN1cHBvcnRlZCkgew0K PiA+ICsgICAgREVCVUcgKChERUJVR19JTkZPLCAiSW5pdGlhbGl6ZSBJRFQgSVNUIGZpZWxkIGZv ciBTTU0gU2hhZG93DQo+IFN0YWNrXG4iKSk7DQo+ID4gKyAgICBJbml0aWFsaXplSWR0SXN0IChF WENFUFRfSUEzMl9QQUdFX0ZBVUxULCAxKTsNCj4gPiArICAgIEluaXRpYWxpemVJZHRJc3QgKEVY Q0VQVF9JQTMyX01BQ0hJTkVfQ0hFQ0ssIDEpOw0KPiA+ICAgIH0NCj4gPg0KPiA+ICAgIC8vDQo+ ID4gZGlmZiAtLWdpdCBhL1VlZmlDcHVQa2cvUGlTbW1DcHVEeGVTbW0vWDY0L1NtbUZ1bmNzQXJj aC5jDQo+IGIvVWVmaUNwdVBrZy9QaVNtbUNwdUR4ZVNtbS9YNjQvU21tRnVuY3NBcmNoLmMNCj4g PiBpbmRleCBjYTNmNWZmOTFhLi5jZTdhZmNlNmQ0IDEwMDY0NA0KPiA+IC0tLSBhL1VlZmlDcHVQ a2cvUGlTbW1DcHVEeGVTbW0vWDY0L1NtbUZ1bmNzQXJjaC5jDQo+ID4gKysrIGIvVWVmaUNwdVBr Zy9QaVNtbUNwdUR4ZVNtbS9YNjQvU21tRnVuY3NBcmNoLmMNCj4gPiBAQCAtMjQsMjQgKzI0LDI0 IEBAIFVJTlQzMiBtQ2V0SW50ZXJydXB0U3NwVGFibGU7DQo+ID4gIFVJTlROICBtU21tSW50ZXJy dXB0U3NwVGFibGVzOw0KPiA+DQo+ID4gIC8qKg0KPiA+IC0gIEluaXRpYWxpemUgSURUIGZvciBT TU0gU3RhY2sgR3VhcmQuDQo+ID4gKyAgSW5pdGlhbGl6ZSBJRFQgSVNUIEZpZWxkLg0KPiA+ICsN Cj4gPiArICBAcGFyYW1baW5dICBFeGNlcHRpb25UeXBlICAgICAgIEV4Y2VwdGlvbiB0eXBlLg0K PiA+ICsgIEBwYXJhbVtpbl0gIElzdCAgICAgICAgICAgICAgICAgSVNUIHZhbHVlLg0KPiA+DQo+ ID4gICoqLw0KPiA+ICBWT0lEDQo+ID4gIEVGSUFQSQ0KPiA+IC1Jbml0aWFsaXplSURUU21tU3Rh Y2tHdWFyZCAoDQo+ID4gLSAgVk9JRA0KPiA+ICtJbml0aWFsaXplSWR0SXN0ICgNCj4gPiArICBJ TiBFRklfRVhDRVBUSU9OX1RZUEUgICAgICAgICAgICBFeGNlcHRpb25UeXBlLA0KPiA+ICsgIElO IFVJTlQ4ICAgICAgICAgICAgICAgICAgICAgICAgIElzdA0KPiA+ICAgICkNCj4gPiAgew0KPiA+ ICAgIElBMzJfSURUX0dBVEVfREVTQ1JJUFRPUiAgKklkdEdhdGU7DQo+ID4NCj4gPiAtICAvLw0K PiA+IC0gIC8vIElmIFNNTSBTdGFjayBHdWFyZCBmZWF0dXJlIGlzIGVuYWJsZWQsIHNldCB0aGUg SVNUIGZpZWxkIG9mDQo+ID4gLSAgLy8gdGhlIGludGVycnVwdCBnYXRlIGZvciBQYWdlIEZhdWx0 IEV4Y2VwdGlvbiB0byBiZSAxDQo+ID4gLSAgLy8NCj4gPiAgICBJZHRHYXRlID0gKElBMzJfSURU X0dBVEVfREVTQ1JJUFRPUiAqKWdjU21pSWR0ci5CYXNlOw0KPiA+IC0gIElkdEdhdGUgKz0gRVhD RVBUX0lBMzJfUEFHRV9GQVVMVDsNCj4gPiAtICBJZHRHYXRlLT5CaXRzLlJlc2VydmVkXzAgPSAx Ow0KPiA+ICsgIElkdEdhdGUgKz0gRXhjZXB0aW9uVHlwZTsNCj4gPiArICBJZHRHYXRlLT5CaXRz LlJlc2VydmVkXzAgPSBJc3Q7DQo+ID4gIH0NCj4gPg0KPiA+ICAvKioNCj4gPiBAQCAtODksNyAr ODksNyBAQCBJbml0R2R0ICgNCj4gPiAgICAgIEdkdERlc2NyaXB0b3ItPkJpdHMuQmFzZU1pZCA9 IChVSU5UOCkoKFVJTlROKVRzc0Jhc2UgPj4gMTYpOw0KPiA+ICAgICAgR2R0RGVzY3JpcHRvci0+ Qml0cy5CYXNlSGlnaCA9IChVSU5UOCkoKFVJTlROKVRzc0Jhc2UgPj4gMjQpOw0KPiA+DQo+ID4g LSAgICBpZiAoRmVhdHVyZVBjZEdldCAoUGNkQ3B1U21tU3RhY2tHdWFyZCkpIHsNCj4gPiArICAg IGlmICgoRmVhdHVyZVBjZEdldCAoUGNkQ3B1U21tU3RhY2tHdWFyZCkpIHx8ICgoUGNkR2V0MzIN Cj4gKFBjZENvbnRyb2xGbG93RW5mb3JjZW1lbnRQcm9wZXJ0eU1hc2spICE9IDApICYmDQo+ID4g bUNldFN1cHBvcnRlZCkpIHsNCj4gPiAgICAgICAgLy8NCj4gPiAgICAgICAgLy8gU2V0dXAgdG9w IG9mIGtub3duIGdvb2Qgc3RhY2sgYXMgSVNUMSBmb3IgZWFjaCBwcm9jZXNzb3IuDQo+ID4gICAg ICAgIC8vDQo+ID4gQEAgLTE3Nyw4ICsxNzcsMTYgQEAgSW5pdFNoYWRvd1N0YWNrICgNCj4gPg0K PiA+ICAgIGlmICgoUGNkR2V0MzIgKFBjZENvbnRyb2xGbG93RW5mb3JjZW1lbnRQcm9wZXJ0eU1h c2spICE9IDApICYmDQo+IG1DZXRTdXBwb3J0ZWQpIHsNCj4gPiAgICAgIFNtbVNoYWRvd1N0YWNr U2l6ZSA9IEVGSV9QQUdFU19UT19TSVpFIChFRklfU0laRV9UT19QQUdFUw0KPiAoUGNkR2V0MzIg KFBjZENwdVNtbVNoYWRvd1N0YWNrU2l6ZSkpKTsNCj4gPiArICAgIC8vDQo+ID4gKyAgICAvLyBB ZGQgMSBwYWdlIGFzIGtub3duIGdvb2Qgc2hhZG93IHN0YWNrDQo+ID4gKyAgICAvLw0KPiA+ICsg ICAgU21tU2hhZG93U3RhY2tTaXplICs9IEVGSV9QQUdFU19UT19TSVpFICgxKTsNCj4gPiArDQo+ ID4gICAgICBpZiAoRmVhdHVyZVBjZEdldCAoUGNkQ3B1U21tU3RhY2tHdWFyZCkpIHsNCj4gPiAt ICAgICAgU21tU2hhZG93U3RhY2tTaXplICs9IEVGSV9QQUdFU19UT19TSVpFICgyKTsNCj4gPiAr ICAgICAgLy8NCj4gPiArICAgICAgLy8gQWRkIG9uZSBndWFyZCBwYWdlIGJldHdlZW4gS25vd24g R29vZCBTaGFkb3cgU3RhY2sgYW5kIFNNTQ0KPiBTaGFkb3cgU3RhY2suDQo+ID4gKyAgICAgIC8v DQo+ID4gKyAgICAgIFNtbVNoYWRvd1N0YWNrU2l6ZSArPSBFRklfUEFHRVNfVE9fU0laRSAoMSk7 DQo+ID4gICAgICB9DQo+ID4gICAgICBtQ2V0UGwwU3NwID0gKFVJTlQzMikoKFVJTlROKVNoYWRv d1N0YWNrICsgU21tU2hhZG93U3RhY2tTaXplIC0NCj4gc2l6ZW9mKFVJTlQ2NCkpOw0KPiA+ICAg ICAgUGF0Y2hJbnN0cnVjdGlvblg4NiAobVBhdGNoQ2V0UGwwU3NwLCBtQ2V0UGwwU3NwLCA0KTsN Cj4gPiBAQCAtMTg2LDMzICsxOTQsMzIgQEAgSW5pdFNoYWRvd1N0YWNrICgNCj4gPiAgICAgIERF QlVHICgoREVCVUdfSU5GTywgIlNoYWRvd1N0YWNrIC0gMHgleFxuIiwgU2hhZG93U3RhY2spKTsN Cj4gPiAgICAgIERFQlVHICgoREVCVUdfSU5GTywgIiAgU21tU2hhZG93U3RhY2tTaXplIC0gMHgl eFxuIiwNCj4gU21tU2hhZG93U3RhY2tTaXplKSk7DQo+ID4NCj4gPiAtICAgIGlmIChGZWF0dXJl UGNkR2V0IChQY2RDcHVTbW1TdGFja0d1YXJkKSkgew0KPiA+IC0gICAgICBpZiAobVNtbUludGVy cnVwdFNzcFRhYmxlcyA9PSAwKSB7DQo+ID4gLSAgICAgICAgbVNtbUludGVycnVwdFNzcFRhYmxl cyA9IChVSU5UTilBbGxvY2F0ZVplcm9Qb29sKHNpemVvZihVSU5UNjQpDQo+ICogOCAqIGdTbW1D cHVQcml2YXRlLQ0KPiA+ID5TbW1Db3JlRW50cnlDb250ZXh0Lk51bWJlck9mQ3B1cyk7DQo+ID4g LSAgICAgICAgQVNTRVJUIChtU21tSW50ZXJydXB0U3NwVGFibGVzICE9IDApOw0KPiA+IC0gICAg ICAgIERFQlVHICgoREVCVUdfSU5GTywgIm1TbW1JbnRlcnJ1cHRTc3BUYWJsZXMgLSAweCV4XG4i LA0KPiBtU21tSW50ZXJydXB0U3NwVGFibGVzKSk7DQo+ID4gLSAgICAgIH0NCj4gPiAtDQo+ID4g LSAgICAgIC8vDQo+ID4gLSAgICAgIC8vIFRoZSBoaWdoZXN0IGFkZHJlc3Mgb24gdGhlIHN0YWNr ICgweEZGOCkgaXMgYSBzYXZlLXByZXZpb3VzLXNzcA0KPiB0b2tlbiBwb2ludGluZyB0byBhIGxv Y2F0aW9uIHRoYXQgaXMgNDAgYnl0ZXMgYXdheSAtIDB4RkQwLg0KPiA+IC0gICAgICAvLyBUaGUg c3VwZXJ2aXNvciBzaGFkb3cgc3RhY2sgdG9rZW4gaXMganVzdCBhYm92ZSBpdCBhdCBhZGRyZXNz IDB4RkYwLg0KPiBUaGlzIGlzIHdoZXJlIHRoZSBpbnRlcnJ1cHQgU1NQIHRhYmxlIHBvaW50cy4N Cj4gPiAtICAgICAgLy8gU28gd2hlbiBhbiBpbnRlcnJ1cHQgb2YgZXhjZXB0aW9uIG9jY3Vycywg d2UgY2FuIHVzZQ0KPiBTQVZFU1NQL1JFU1RPUkVTU1AvQ0xFQVJTU0JVU1kgZm9yIHRoZSBzdXBl cnZpc29yIHNoYWRvdw0KPiA+IHN0YWNrLA0KPiA+IC0gICAgICAvLyBkdWUgdG8gdGhlIHJlYXNv biB0aGUgUkVURiBpbiBTTU0gZXhjZXB0aW9uIGhhbmRsZXIgY2Fubm90IGNsZWFyDQo+IHRoZSBC VVNZIGZsYWcgd2l0aCBzYW1lIENQTC4NCj4gPiAtICAgICAgLy8gKG9ubHkgSVJFVCBvciBSRVRG IHdpdGggZGlmZmVyZW50IENQTCBjYW4gY2xlYXIgQlVTWSBmbGFnKQ0KPiA+IC0gICAgICAvLyBQ bGVhc2UgcmVmZXIgdG8gVWVmaUNwdVBrZy9MaWJyYXJ5L0NwdUV4Y2VwdGlvbkhhbmRsZXJMaWIv WDY0IGZvcg0KPiB0aGUgZnVsbCBzdGFjayBmcmFtZSBhdCBydW50aW1lLg0KPiA+IC0gICAgICAv Lw0KPiA+IC0gICAgICBJbnRlcnJ1cHRTc3AgPSAoVUlOVDMyKSgoVUlOVE4pU2hhZG93U3RhY2sg KyBFRklfUEFHRVNfVE9fU0laRSgxKQ0KPiAtIHNpemVvZihVSU5UNjQpKTsNCj4gPiAtICAgICAg KihVSU5UNjQgKikoVUlOVE4pSW50ZXJydXB0U3NwID0gKEludGVycnVwdFNzcCAtIHNpemVvZihV SU5UNjQpICogNCkgfA0KPiAweDI7DQo+ID4gLSAgICAgIG1DZXRJbnRlcnJ1cHRTc3AgPSBJbnRl cnJ1cHRTc3AgLSBzaXplb2YoVUlOVDY0KTsNCj4gPiAtDQo+ID4gLSAgICAgIG1DZXRJbnRlcnJ1 cHRTc3BUYWJsZSA9IChVSU5UMzIpKFVJTlROKShtU21tSW50ZXJydXB0U3NwVGFibGVzDQo+ICsg c2l6ZW9mKFVJTlQ2NCkgKiA4ICogQ3B1SW5kZXgpOw0KPiA+IC0gICAgICBJbnRlcnJ1cHRTc3BU YWJsZSA9IChVSU5UNjQgKikoVUlOVE4pbUNldEludGVycnVwdFNzcFRhYmxlOw0KPiA+IC0gICAg ICBJbnRlcnJ1cHRTc3BUYWJsZVsxXSA9IG1DZXRJbnRlcnJ1cHRTc3A7DQo+ID4gLSAgICAgIFBh dGNoSW5zdHJ1Y3Rpb25YODYgKG1QYXRjaENldEludGVycnVwdFNzcCwgbUNldEludGVycnVwdFNz cCwgNCk7DQo+ID4gLSAgICAgIFBhdGNoSW5zdHJ1Y3Rpb25YODYgKG1QYXRjaENldEludGVycnVw dFNzcFRhYmxlLA0KPiBtQ2V0SW50ZXJydXB0U3NwVGFibGUsIDQpOw0KPiA+IC0gICAgICBERUJV RyAoKERFQlVHX0lORk8sICJtQ2V0SW50ZXJydXB0U3NwIC0gMHgleFxuIiwNCj4gbUNldEludGVy cnVwdFNzcCkpOw0KPiA+IC0gICAgICBERUJVRyAoKERFQlVHX0lORk8sICJtQ2V0SW50ZXJydXB0 U3NwVGFibGUgLSAweCV4XG4iLA0KPiBtQ2V0SW50ZXJydXB0U3NwVGFibGUpKTsNCj4gPiArICAg IGlmIChtU21tSW50ZXJydXB0U3NwVGFibGVzID09IDApIHsNCj4gPiArICAgICAgbVNtbUludGVy cnVwdFNzcFRhYmxlcyA9IChVSU5UTilBbGxvY2F0ZVplcm9Qb29sKHNpemVvZihVSU5UNjQpDQo+ ICogOCAqIGdTbW1DcHVQcml2YXRlLQ0KPiA+ID5TbW1Db3JlRW50cnlDb250ZXh0Lk51bWJlck9m Q3B1cyk7DQo+ID4gKyAgICAgIEFTU0VSVCAobVNtbUludGVycnVwdFNzcFRhYmxlcyAhPSAwKTsN Cj4gPiArICAgICAgREVCVUcgKChERUJVR19JTkZPLCAibVNtbUludGVycnVwdFNzcFRhYmxlcyAt IDB4JXhcbiIsDQo+IG1TbW1JbnRlcnJ1cHRTc3BUYWJsZXMpKTsNCj4gPiAgICAgIH0NCj4gPiAr DQo+ID4gKyAgICAvLw0KPiA+ICsgICAgLy8gVGhlIGhpZ2hlc3QgYWRkcmVzcyBvbiB0aGUgc3Rh Y2sgKDB4RkUwKSBpcyBhIHNhdmUtcHJldmlvdXMtc3NwIHRva2VuDQo+IHBvaW50aW5nIHRvIGEg bG9jYXRpb24gdGhhdCBpcyA0MCBieXRlcyBhd2F5IC0gMHhGQjguDQo+ID4gKyAgICAvLyBUaGUg c3VwZXJ2aXNvciBzaGFkb3cgc3RhY2sgdG9rZW4gaXMganVzdCBhYm92ZSBpdCBhdCBhZGRyZXNz IDB4RkQ4Lg0KPiBUaGlzIGlzIHdoZXJlIHRoZSBpbnRlcnJ1cHQgU1NQIHRhYmxlIHBvaW50cy4N Cj4gPiArICAgIC8vIFNvIHdoZW4gYW4gaW50ZXJydXB0IG9mIGV4Y2VwdGlvbiBvY2N1cnMsIHdl IGNhbiB1c2UNCj4gU0FWRVNTUC9SRVNUT1JFU1NQL0NMRUFSU1NCVVNZIGZvciB0aGUgc3VwZXJ2 aXNvciBzaGFkb3cNCj4gPiBzdGFjaywNCj4gPiArICAgIC8vIGR1ZSB0byB0aGUgcmVhc29uIHRo ZSBSRVRGIGluIFNNTSBleGNlcHRpb24gaGFuZGxlciBjYW5ub3QgY2xlYXINCj4gdGhlIEJVU1kg ZmxhZyB3aXRoIHNhbWUgQ1BMLg0KPiA+ICsgICAgLy8gKG9ubHkgSVJFVCBvciBSRVRGIHdpdGgg ZGlmZmVyZW50IENQTCBjYW4gY2xlYXIgQlVTWSBmbGFnKQ0KPiA+ICsgICAgLy8gUGxlYXNlIHJl ZmVyIHRvIFVlZmlDcHVQa2cvTGlicmFyeS9DcHVFeGNlcHRpb25IYW5kbGVyTGliL1g2NCBmb3IN Cj4gdGhlIGZ1bGwgc3RhY2sgZnJhbWUgYXQgcnVudGltZS4NCj4gPiArICAgIC8vIEFjY29yZGlu ZyB0byBTRE0gKHZlci4gMDc1IEp1bmUgMjAyMSksIHNoYWRvdyBzdGFjayBzaG91bGQgYmUgMzIN Cj4gYnl0ZXMgYWxpZ25lZC4NCj4gPiArICAgIC8vDQo+ID4gKyAgICBJbnRlcnJ1cHRTc3AgPSAo VUlOVDMyKSgoKFVJTlROKVNoYWRvd1N0YWNrICsgRUZJX1BBR0VTX1RPX1NJWkUoMSkNCj4gLSAo c2l6ZW9mKFVJTlQ2NCkgKiA0KSkgJiB+MHgxZik7DQo+ID4gKyAgICAqKFVJTlQ2NCAqKShVSU5U TilJbnRlcnJ1cHRTc3AgPSAoSW50ZXJydXB0U3NwIC0gc2l6ZW9mKFVJTlQ2NCkgKiA0KSB8DQo+ IDB4MjsNCj4gPiArICAgIG1DZXRJbnRlcnJ1cHRTc3AgPSBJbnRlcnJ1cHRTc3AgLSBzaXplb2Yo VUlOVDY0KTsNCj4gPiArDQo+ID4gKyAgICBtQ2V0SW50ZXJydXB0U3NwVGFibGUgPSAoVUlOVDMy KShVSU5UTikobVNtbUludGVycnVwdFNzcFRhYmxlcyArDQo+IHNpemVvZihVSU5UNjQpICogOCAq IENwdUluZGV4KTsNCj4gPiArICAgIEludGVycnVwdFNzcFRhYmxlID0gKFVJTlQ2NCAqKShVSU5U TiltQ2V0SW50ZXJydXB0U3NwVGFibGU7DQo+ID4gKyAgICBJbnRlcnJ1cHRTc3BUYWJsZVsxXSA9 IG1DZXRJbnRlcnJ1cHRTc3A7DQo+ID4gKyAgICBQYXRjaEluc3RydWN0aW9uWDg2IChtUGF0Y2hD ZXRJbnRlcnJ1cHRTc3AsIG1DZXRJbnRlcnJ1cHRTc3AsIDQpOw0KPiA+ICsgICAgUGF0Y2hJbnN0 cnVjdGlvblg4NiAobVBhdGNoQ2V0SW50ZXJydXB0U3NwVGFibGUsDQo+IG1DZXRJbnRlcnJ1cHRT c3BUYWJsZSwgNCk7DQo+ID4gKyAgICBERUJVRyAoKERFQlVHX0lORk8sICJtQ2V0SW50ZXJydXB0 U3NwIC0gMHgleFxuIiwNCj4gbUNldEludGVycnVwdFNzcCkpOw0KPiA+ICsgICAgREVCVUcgKChE RUJVR19JTkZPLCAibUNldEludGVycnVwdFNzcFRhYmxlIC0gMHgleFxuIiwNCj4gbUNldEludGVy cnVwdFNzcFRhYmxlKSk7DQo+ID4gICAgfQ0KPiA+ICB9DQo+ID4NCj4gPiAtLQ0KPiA+IDIuMTYu Mi53aW5kb3dzLjENCg0K