From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga12.intel.com (mga12.intel.com [192.55.52.136]) by mx.groups.io with SMTP id smtpd.web10.122.1610115206587516316 for ; Fri, 08 Jan 2021 06:13:27 -0800 Authentication-Results: mx.groups.io; dkim=pass header.i=@intel.onmicrosoft.com header.s=selector2-intel-onmicrosoft-com header.b=kEmGMz1x; spf=pass (domain: intel.com, ip: 192.55.52.136, mailfrom: star.zeng@intel.com) IronPort-SDR: ZepwHjDDSx/i9uQKyvVJKOW8Khz+MHJaPUmZu/yEsKEKtFaczpCAsbChnOjQ0tfYq7DV/MQHLR tA7Wx0ehFFRQ== X-IronPort-AV: E=McAfee;i="6000,8403,9857"; a="156783780" X-IronPort-AV: E=Sophos;i="5.79,331,1602572400"; d="scan'208";a="156783780" Received: from fmsmga002.fm.intel.com ([10.253.24.26]) by fmsmga106.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 08 Jan 2021 06:13:25 -0800 IronPort-SDR: VGpkU5Vj99Vi9IKAkASUl2JJdBs0V43qljn/glre9KnEx6QONvD5g4uDDcGmR/AvZtaBhyvHRA 0BMQtiTl+3Vg== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.79,331,1602572400"; d="scan'208";a="398996456" Received: from fmsmsx603.amr.corp.intel.com ([10.18.126.83]) by fmsmga002.fm.intel.com with ESMTP; 08 Jan 2021 06:13:25 -0800 Received: from fmsmsx608.amr.corp.intel.com (10.18.126.88) by fmsmsx603.amr.corp.intel.com (10.18.126.83) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1713.5; Fri, 8 Jan 2021 06:13:25 -0800 Received: from fmsmsx609.amr.corp.intel.com (10.18.126.89) by fmsmsx608.amr.corp.intel.com (10.18.126.88) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1713.5; Fri, 8 Jan 2021 06:13:24 -0800 Received: from fmsedg602.ED.cps.intel.com (10.1.192.136) by fmsmsx609.amr.corp.intel.com (10.18.126.89) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1713.5 via Frontend Transport; Fri, 8 Jan 2021 06:13:24 -0800 Received: from NAM04-CO1-obe.outbound.protection.outlook.com (104.47.45.59) by edgegateway.intel.com (192.55.55.71) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.1713.5; Fri, 8 Jan 2021 06:13:24 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=G0SRFrDyY1+tSl/Mk3vFOPfozvu1TxQGG4lJaeHd+OimTHnFpJGEUKlJoTsqHzTjDa3ixat6O937cPkyaTgUc5fxgNnMJYaVzDdjj8X/J0vJSAA2m3yg9LTSPSdioHsuCDNa7yxzEL8jZf9GfK/71Jdw4j0WC+O/AaoMhiDWpzr7b74Go4OMVSlWo9SNWPy8KCXaKQQecgItDxOlWmRDC79D4SEQw5ejpgqIWeFRtTO64CFcZ0levohguG2vBYY+oulJ/DG9nywh1TsQ/f6UwXug4BsMwkQq3WanQwg3VSSa4MVC+xRS6AlMfnLjQwmJce/NvRSET2w1i3MaX5V+uQ== 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-SenderADCheck; bh=bwA9L9ZiUW3d5uf+XKW+jv97KXeEknwEZKbBqI4nBqs=; b=kIzqieXH0KxOVXVvCO9ieBoeQkGTdzTWeXF0fFQvBvjIfphbUagjIWRj+8HHrNORJ+Nl8yJwjiSkU554YEhwGJjM0c2iZfS6E6MweTWG3WurKe36/dHF/3eMUvjDkn4igUetYG/S/cyU1FxTZvJsbd9Buhjlg6gBAgxIdjGfc9GzkFx+Cni9WuZCmdlr4FAJRTb9hV4Xq4SIhCKlGz8mDrGo8lY5RL1A7bY2VE2vxRi1yszYrATKZ4AK6K+gHv37U24XPEyxR3YBDyXDYj2Xj3Tx18wxMjYx4rqrIMn5aCJ3vAwEu3HnLkSv1FbflZq3ZpbN17ZBbYCpSuLnSL6JNg== 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=bwA9L9ZiUW3d5uf+XKW+jv97KXeEknwEZKbBqI4nBqs=; b=kEmGMz1xOrFiK0a4OL2H0P95NQuxRtpSRjhWrg3rWdG95u7B30mOfHJ6GDv9MApV30KAKAgAzDfhL3RYIELK3cnlLXhhF8F5OHA8h6ba3vXNBEJv6Jd1kIwjUDvM/gixmiySXZGvEmPX7qzGXpTN73bTNXaG9C8zWXZpzwVi7XU= Received: from DM6PR11MB4058.namprd11.prod.outlook.com (2603:10b6:5:193::13) by DM6PR11MB4268.namprd11.prod.outlook.com (2603:10b6:5:204::32) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3721.23; Fri, 8 Jan 2021 14:13:23 +0000 Received: from DM6PR11MB4058.namprd11.prod.outlook.com ([fe80::880f:c15b:574a:a9eb]) by DM6PR11MB4058.namprd11.prod.outlook.com ([fe80::880f:c15b:574a:a9eb%6]) with mapi id 15.20.3742.006; Fri, 8 Jan 2021 14:13:23 +0000 From: "Zeng, Star" To: "devel@edk2.groups.io" , "lersek@redhat.com" CC: "Ni, Ray" , "Dong, Eric" , "Zeng, Star" Subject: Re: [edk2-devel] [PATCH V3] UefiCpuPkg PiSmmCpuDxeSmm: Reduce SMRAM consumption in CpuS3.c Thread-Topic: [edk2-devel] [PATCH V3] UefiCpuPkg PiSmmCpuDxeSmm: Reduce SMRAM consumption in CpuS3.c Thread-Index: AQHW5OJsP+atRR83FEqc56di3iozhaob/uWAgAHHx6A= Date: Fri, 8 Jan 2021 14:13:23 +0000 Message-ID: References: <20210107104650.27404-1-star.zeng@intel.com> <2586b96a-1acf-7cae-ff5f-42b79158c775@redhat.com> In-Reply-To: <2586b96a-1acf-7cae-ff5f-42b79158c775@redhat.com> Accept-Language: zh-CN, en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-product: dlpe-windows dlp-reaction: no-action dlp-version: 11.5.1.3 authentication-results: edk2.groups.io; dkim=none (message not signed) header.d=none;edk2.groups.io; dmarc=none action=none header.from=intel.com; x-originating-ip: [192.198.147.213] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: dbe6b65f-a127-415a-8bd3-08d8b3df8f63 x-ms-traffictypediagnostic: DM6PR11MB4268: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:568; x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: dEwB30G8CsJA3B3e3ltbRXY5H+lwcBhL2BSBSZ69pZxm3cl0swlmyTd4af71jzumledTzwWusazNDwCmh1YdlXZpcn+42ta92S8h81pgOCS2AoqAjtANscWNNaNm3uujaPyxWL+SB83zqAIAUi2biLzUngVI0TZbsbZ1iRa3AzBiLeFopMXema6FiFuQ82kNUMq6brqq5VfjCZzigKG15KPSWzdsjqeY5qwAM1agg9V6dn5BQKkjbhBXCnNhZ5N8DjFKSQM3drxlBnGrkYG8SCh+OmwVWwJJFr8+wDe9PKqsmwgPSL321DNAmPqsMwfzD8J8pMxPeaLbVyfNNSzAYvrn/779TYhq4Iq+WO9QmiXpcfysbVMF4L7kmPK1stsxjhZ2HDP3mepz6BnnF1AA6u1xo63x7lV4eVIS2LMxzuBcexPy5VuMaceCZXckIM2lYVujfdkFl7wcTD80bB5agw== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DM6PR11MB4058.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(6029001)(4636009)(346002)(376002)(366004)(39860400002)(136003)(396003)(86362001)(8936002)(33656002)(7696005)(66476007)(55016002)(19627235002)(64756008)(66946007)(5660300002)(66446008)(71200400001)(9686003)(966005)(316002)(110136005)(2906002)(83380400001)(107886003)(66556008)(186003)(6506007)(53546011)(26005)(76116006)(478600001)(52536014)(54906003)(8676002)(4326008);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata: =?utf-8?B?NG1wTkgyZVRoaDVoMW9CWVpzR2RvQmFhblhMOG5kK2NlRTVpUlphZzc2cDBB?= =?utf-8?B?NjE5bncrdytsK0pIa1JZQ0FGVS9lazNINzMrSkR6eHg1MGpwa3l2YVdRU2Ix?= =?utf-8?B?VDcwbUU3cmhqR3c2QmtWWlpLU1ViR2s3NjFtcTN6ZlFHdDlpR1g2Z3ZqeWl5?= =?utf-8?B?M215dXdCL25mdFJsK0JxZ2t5MWZrNkJzY3dJOTJOanZrb2pTUlU5WkpDUnQz?= =?utf-8?B?SEtlMlI4VmlyZDFxbXV2c1Y2WVozcUdZT08zUmNXaTl5MWxqUE4raUNydUNW?= =?utf-8?B?YzZwRkU2Yk1qb1E5R0RBS1J0ZnRndDljVW1rczFWOVVRYkhKTkNJaDJWeExq?= =?utf-8?B?NzViS2pvbnEyWXl2a1JnV2JoTDJBWkNiTEdIQnNLSjczWU5nSll5eXgyV0tO?= =?utf-8?B?UWQyL3FZZGJDS1hyNEEyYXE2NldQYVl2S3UvQmFSYkh6VG1MbHlnanAveDdD?= =?utf-8?B?LzM2UWV6U0FOTjlBOU80Y0lCVnl0ZHRrYmUwOE5sYlZWVWNmMngxSUNPMDE1?= =?utf-8?B?Y2FFcFNmWWF3OUFtdGI2bVFzSjNXZTNISlhrdWM2SUk0SFNhSlhYYTkwRXJw?= =?utf-8?B?QXZEcXdHZFcyQnpKS1RPNkIveDFyMHJUNVIxb2tTQjlWdHUyWWFua3dUSDZK?= =?utf-8?B?a3ppaTdEOHo5ZFpoWUUxU1dBMTZJM2VlWFhWUm8yL1hmTUNBUWd3UkRQcjNo?= =?utf-8?B?b0JROHRCQklBK1c1eFpFM200VFhuTFMxZy85emFVKzZGYXRuWTVRSUtLVEdo?= =?utf-8?B?M2x1S2JEeGg5TlZ4a2JINUVTOWxYaHhIN0tEaGxuWEVidEJIckxINmFFODlw?= =?utf-8?B?UTh6aWt4QjdObU1xSHMvNnRMeERxZi9CTDJrTll4czloemJFdUQ1dE1CN3cx?= =?utf-8?B?cm9Edmh5VHJqbzlBZnJVV2I0UEt1aFpjSHJ0OGZCVHd0MXVFQ1hRck9Kejlk?= =?utf-8?B?YmlXalY3VTRjN1pnNm9WbUtoam9CbU5XeUlyYkUwWTh0YVZBVWNNSWVrei9m?= =?utf-8?B?RVlCdU1tUEhxbWpZenp5czROV3pMRnRDVUgzVUF5N2F2ZVBxSndMeGpDNzdY?= =?utf-8?B?eFlBQ3d3Z0hkZkhuaUVuTTJaditrZFl4ZXVXRmJRZXF2bkxNakxtc1JPNEp2?= =?utf-8?B?SkgyZm51M3kzQ2FvbGIrcSt6WHkxeGxNMXNITm5TRkdzMlI5UEV5eU54UUhW?= =?utf-8?B?a2UyOUNvVXhLbFFtd05zOGlqOVFrV2xhZzI2czg3MURvY0tYNXNyL3dpUnF5?= =?utf-8?B?ZjBhUjFiVTRnbHRuQW16UFUza0EzQkg4Ykp6OFFPVTFVWUNaSk5MRCs2dlgy?= =?utf-8?Q?7f2ZHj80HvJV8=3D?= MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: DM6PR11MB4058.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: dbe6b65f-a127-415a-8bd3-08d8b3df8f63 X-MS-Exchange-CrossTenant-originalarrivaltime: 08 Jan 2021 14:13:23.6880 (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: znSOaQONuXWrnUf29aKPSx2c/tkvSEQ/A162gN0lPFEuX90ozXO2Ydlt3kXc0844UhGu5hGj+phUhbHH3Jpnww== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR11MB4268 Return-Path: star.zeng@intel.com X-OriginatorOrg: intel.com Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 VGhhbmtzIExhc3psby4NCg0KUmF5LCBMYXN6bG8gb3IgRXJpYywgbmVlZCB5b3VyIGhlbHAgdG8g Y29tbWl0IGl0IGlmIG5vIGZ1cnRoZXIgY29tbWVudCB0byB0aGUgcGF0Y2guDQoNCg0KVGhhbmtz LA0KU3Rhcg0KDQo+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+IEZyb206IGRldmVsQGVk azIuZ3JvdXBzLmlvIDxkZXZlbEBlZGsyLmdyb3Vwcy5pbz4gT24gQmVoYWxmIE9mIExhc3psbw0K PiBFcnNlaw0KPiBTZW50OiBUaHVyc2RheSwgSmFudWFyeSA3LCAyMDIxIDc6MDEgUE0NCj4gVG86 IFplbmcsIFN0YXIgPHN0YXIuemVuZ0BpbnRlbC5jb20+OyBkZXZlbEBlZGsyLmdyb3Vwcy5pbw0K PiBDYzogTmksIFJheSA8cmF5Lm5pQGludGVsLmNvbT47IERvbmcsIEVyaWMgPGVyaWMuZG9uZ0Bp bnRlbC5jb20+DQo+IFN1YmplY3Q6IFJlOiBbZWRrMi1kZXZlbF0gW1BBVENIIFYzXSBVZWZpQ3B1 UGtnIFBpU21tQ3B1RHhlU21tOiBSZWR1Y2UNCj4gU01SQU0gY29uc3VtcHRpb24gaW4gQ3B1UzMu Yw0KPiANCj4gT24gMDEvMDcvMjEgMTE6NDYsIFN0YXIgWmVuZyB3cm90ZToNCj4gPiBUaGlzIHBh dGNoIG1ha2VzIHR3byByZWZpbmVtZW50cyB0byByZWR1Y2UgU01SQU0gY29uc3VtcHRpb24gaW4N Cj4gQ3B1UzMuYy4NCj4gPiAxLiBPbmx5IGRvIENvcHlSZWdpc3RlclRhYmxlKCkgd2hlbiByZWdp c3RlciB0YWJsZSBpcyBub3QgZW1wdHksDQo+ID4gICBJc1JlZ2lzdGVyVGFibGVFbXB0eSgpIGlz IGNyZWF0ZWQgdG8gY2hlY2sgd2hldGhlciB0aGUgcmVnaXN0ZXIgdGFibGUNCj4gPiAgIGlzIGVt cHR5IG9yIG5vdC4NCj4gPg0KPiA+ICAgVGFrZSBlbXB0eSBQcmVTbW1Jbml0UmVnaXN0ZXJUYWJs ZSBhcyBleGFtcGxlLCBhYm91dCAyNEsgU01SQU0NCj4gY29uc3VtcHRpb24NCj4gPiAgIGNvdWxk IGJlIHJlZHVjZWQgd2hlbiBtQWNwaUNwdURhdGEuTnVtYmVyT2ZDcHVzPTEwMjQuDQo+ID4gICBz aXplb2YgKENQVV9SRUdJU1RFUl9UQUJMRSkgPSAyNA0KPiA+ICAgbUFjcGlDcHVEYXRhLk51bWJl ck9mQ3B1cyA9IDEwMjQgPSAxSw0KPiA+ICAgbUFjcGlDcHVEYXRhLk51bWJlck9mQ3B1cyAqIHNp emVvZiAoQ1BVX1JFR0lTVEVSX1RBQkxFKSA9IDI0Sw0KPiA+DQo+ID4gMi4gT25seSBjb3B5IHRh YmxlIGVudHJpZXMgYnVmZmVyIGluc3RlYWQgb2Ygd2hvbGUgYnVmZmVyLg0KPiA+ICAgQWxsb2Nh dGVkU2l6ZSBpbiBTb3VyY2VSZWdpc3RlclRhYmxlTGlzdCBpcyB0aGUgd2hvbGUgYnVmZmVyIHNp emUuDQo+ID4gICBBY3R1YWxseSwgb25seSB0aGUgdGFibGUgZW50cmllcyBidWZmZXIgbmVlZHMg dG8gYmUgY29waWVkLCBhbmQgdGhlIHNpemUNCj4gPiAgIGlzIFRhYmxlTGVuZ3RoICogc2l6ZW9m IChDUFVfUkVHSVNURVJfVEFCTEVfRU5UUlkpLg0KPiA+DQo+ID4gICBUYWtlIEFsbG9jYXRlZFNp emU9MHgxMDAwPTQwOTYsIFRhYmxlTGVuZ3RoPTEwMCBhbmQNCj4gTnVtYmVyT2ZDcHVzPTEwMjQg YXMgZXhhbXBsZSwNCj4gPiAgIGFib3V0IDE2OTZLIFNNUkFNIGNvbnN1bXB0aW9uIGNvdWxkIGJl IHJlZHVjZWQuDQo+ID4gICBzaXplb2YgKENQVV9SRUdJU1RFUl9UQUJMRV9FTlRSWSkgPSAyNA0K PiA+ICAgVGFibGVMZW5ndGggPSAxMDANCj4gPiAgIFRhYmxlTGVuZ3RoICogc2l6ZW9mIChDUFVf UkVHSVNURVJfVEFCTEVfRU5UUlkpID0gMjQwMA0KPiA+ICAgQWxsb2NhdGVkU2l6ZSA9IDB4MTAw MCA9IDQwOTYNCj4gPiAgIEFsbG9jYXRlZFNpemUgLSBUYWJsZUxlbmd0aCAqIHNpemVvZiAoQ1BV X1JFR0lTVEVSX1RBQkxFX0VOVFJZKSA9IDQwOTYNCj4gLSAyNDAwID0gMTY5Ng0KPiA+ICAgTnVt YmVyT2ZDcHVzID0gMTAyNCA9IDFLDQo+ID4gICBOdW1iZXJPZkNwdXMgKiAoQWxsb2NhdGVkU2l6 ZSAtIFRhYmxlTGVuZ3RoICogc2l6ZW9mDQo+ID4gKENQVV9SRUdJU1RFUl9UQUJMRV9FTlRSWSkp ID0gMTY5NksNCj4gPg0KPiA+IFRoaXMgcGF0Y2ggYWxzbyBjb3JyZWN0cyB0aGUgQ29weVJlZ2lz dGVyVGFibGUoKSBmdW5jdGlvbiBkZXNjcmlwdGlvbi4NCj4gPg0KPiA+IFNpZ25lZC1vZmYtYnk6 IFN0YXIgWmVuZyA8c3Rhci56ZW5nQGludGVsLmNvbT4NCj4gPiBSZXZpZXdlZC1ieTogUmF5IE5p IDxyYXkubmlAaW50ZWwuY29tPg0KPiA+IFJldmlld2VkLWJ5OiBMYXN6bG8gRXJzZWsgPGxlcnNl a0ByZWRoYXQuY29tPg0KPiA+IENjOiBSYXkgTmkgPHJheS5uaUBpbnRlbC5jb20+DQo+ID4gQ2M6 IEVyaWMgRG9uZyA8ZXJpYy5kb25nQGludGVsLmNvbT4NCj4gPiBDYzogTGFzemxvIEVyc2VrIDxs ZXJzZWtAcmVkaGF0LmNvbT4NCj4gPiAtLS0NCj4gPiAgVWVmaUNwdVBrZy9QaVNtbUNwdUR4ZVNt bS9DcHVTMy5jIHwgNzMNCj4gPiArKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tDQo+ID4g IDEgZmlsZSBjaGFuZ2VkLCA1NiBpbnNlcnRpb25zKCspLCAxNyBkZWxldGlvbnMoLSkNCj4gDQo+ IFRoYW5rcyBmb3IgdGhlIHVwZGF0ZSwgbXkgUi1iIHN0YW5kcy4NCj4gDQo+IExhc3psbw0KPiAN Cj4gPg0KPiA+IGRpZmYgLS1naXQgYS9VZWZpQ3B1UGtnL1BpU21tQ3B1RHhlU21tL0NwdVMzLmMN Cj4gPiBiL1VlZmlDcHVQa2cvUGlTbW1DcHVEeGVTbW0vQ3B1UzMuYw0KPiA+IGluZGV4IDk1OTI0 MzA2MzZlYy4uNzI0ZTU0NjBiYTZmIDEwMDY0NA0KPiA+IC0tLSBhL1VlZmlDcHVQa2cvUGlTbW1D cHVEeGVTbW0vQ3B1UzMuYw0KPiA+ICsrKyBiL1VlZmlDcHVQa2cvUGlTbW1DcHVEeGVTbW0vQ3B1 UzMuYw0KPiA+IEBAIC0xLDcgKzEsNyBAQA0KPiA+ICAvKiogQGZpbGUNCj4gPiAgQ29kZSBmb3Ig UHJvY2Vzc29yIFMzIHJlc3RvcmF0aW9uDQo+ID4NCj4gPiAtQ29weXJpZ2h0IChjKSAyMDA2IC0g MjAyMCwgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMNCj4gPiByZXNlcnZlZC48QlI+DQo+ ID4gK0NvcHlyaWdodCAoYykgMjAwNiAtIDIwMjEsIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmln aHRzDQo+ID4gK3Jlc2VydmVkLjxCUj4NCj4gPiAgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJT RC0yLUNsYXVzZS1QYXRlbnQNCj4gPg0KPiA+ICAqKi8NCj4gPiBAQCAtNDg3LDYgKzQ4Nyw5IEBA IFNldFJlZ2lzdGVyICgNCj4gPiAgICB9IGVsc2Ugew0KPiA+ICAgICAgUmVnaXN0ZXJUYWJsZXMg PSAoQ1BVX1JFR0lTVEVSX1RBQkxFDQo+ICopKFVJTlROKW1BY3BpQ3B1RGF0YS5SZWdpc3RlclRh YmxlOw0KPiA+ICAgIH0NCj4gPiArICBpZiAoUmVnaXN0ZXJUYWJsZXMgPT0gTlVMTCkgew0KPiA+ ICsgICAgcmV0dXJuOw0KPiA+ICsgIH0NCj4gPg0KPiA+ICAgIEluaXRBcGljSWQgPSBHZXRJbml0 aWFsQXBpY0lkICgpOw0KPiA+ICAgIFJlZ2lzdGVyVGFibGUgPSBOVUxMOw0KPiA+IEBAIC05NDgs NyArOTUxLDcgQEAgSW5pdFNtbVMzUmVzdW1lU3RhdGUgKCAgfQ0KPiA+DQo+ID4gIC8qKg0KPiA+ IC0gIENvcHkgcmVnaXN0ZXIgdGFibGUgZnJvbSBBQ1BJIE5WUyBtZW1vcnkgaW50byBTTVJBTS4N Cj4gPiArICBDb3B5IHJlZ2lzdGVyIHRhYmxlIGZyb20gbm9uLVNNUkFNIGludG8gU01SQU0uDQo+ ID4NCj4gPiAgICBAcGFyYW1baW5dIERlc3RpbmF0aW9uUmVnaXN0ZXJUYWJsZUxpc3QgIFBvaW50 cyB0byBkZXN0aW5hdGlvbiByZWdpc3Rlcg0KPiB0YWJsZS4NCj4gPiAgICBAcGFyYW1baW5dIFNv dXJjZVJlZ2lzdGVyVGFibGVMaXN0ICAgICAgIFBvaW50cyB0byBzb3VyY2UgcmVnaXN0ZXIgdGFi bGUuDQo+ID4gQEAgLTk2Nyw3ICs5NzAsOCBAQCBDb3B5UmVnaXN0ZXJUYWJsZSAoDQo+ID4NCj4g PiAgICBDb3B5TWVtIChEZXN0aW5hdGlvblJlZ2lzdGVyVGFibGVMaXN0LCBTb3VyY2VSZWdpc3Rl clRhYmxlTGlzdCwNCj4gTnVtYmVyT2ZDcHVzICogc2l6ZW9mIChDUFVfUkVHSVNURVJfVEFCTEUp KTsNCj4gPiAgICBmb3IgKEluZGV4ID0gMDsgSW5kZXggPCBOdW1iZXJPZkNwdXM7IEluZGV4Kysp IHsNCj4gPiAtICAgIGlmIChEZXN0aW5hdGlvblJlZ2lzdGVyVGFibGVMaXN0W0luZGV4XS5BbGxv Y2F0ZWRTaXplICE9IDApIHsNCj4gPiArICAgIGlmIChEZXN0aW5hdGlvblJlZ2lzdGVyVGFibGVM aXN0W0luZGV4XS5UYWJsZUxlbmd0aCAhPSAwKSB7DQo+ID4gKyAgICAgIERlc3RpbmF0aW9uUmVn aXN0ZXJUYWJsZUxpc3RbSW5kZXhdLkFsbG9jYXRlZFNpemUgPQ0KPiA+ICsgRGVzdGluYXRpb25S ZWdpc3RlclRhYmxlTGlzdFtJbmRleF0uVGFibGVMZW5ndGggKiBzaXplb2YNCj4gPiArIChDUFVf UkVHSVNURVJfVEFCTEVfRU5UUlkpOw0KPiA+ICAgICAgICBSZWdpc3RlclRhYmxlRW50cnkgPSBB bGxvY2F0ZUNvcHlQb29sICgNCj4gPiAgICAgICAgICBEZXN0aW5hdGlvblJlZ2lzdGVyVGFibGVM aXN0W0luZGV4XS5BbGxvY2F0ZWRTaXplLA0KPiA+ICAgICAgICAgIChWT0lEDQo+ID4gKikoVUlO VE4pU291cmNlUmVnaXN0ZXJUYWJsZUxpc3RbSW5kZXhdLlJlZ2lzdGVyVGFibGVFbnRyeQ0KPiA+ IEBAIC05NzgsNiArOTgyLDMzIEBAIENvcHlSZWdpc3RlclRhYmxlICgNCj4gPiAgICB9DQo+ID4g IH0NCj4gPg0KPiA+ICsvKioNCj4gPiArICBDaGVjayB3aGV0aGVyIHRoZSByZWdpc3RlciB0YWJs ZSBpcyBlbXB0eSBvciBub3QuDQo+ID4gKw0KPiA+ICsgIEBwYXJhbVtpbl0gUmVnaXN0ZXJUYWJs ZSAgUG9pbnQgdG8gdGhlIHJlZ2lzdGVyIHRhYmxlLg0KPiA+ICsNCj4gPiArICBAcmV0dmFsIFRS VUUgICAgICAgICAgICAgIFRoZSByZWdpc3RlciB0YWJsZSBpcyBlbXB0eS4NCj4gPiArICBAcmV0 dmFsIEZBTFNFICAgICAgICAgICAgIFRoZSByZWdpc3RlciB0YWJsZSBpcyBub3QgZW1wdHkuDQo+ ID4gKyoqLw0KPiA+ICtCT09MRUFODQo+ID4gK0lzUmVnaXN0ZXJUYWJsZUVtcHR5ICgNCj4gPiAr ICBJTiBDUFVfUkVHSVNURVJfVEFCTEUgICAgICpSZWdpc3RlclRhYmxlLA0KPiA+ICsgIElOIFVJ TlQzMiAgICAgICAgICAgICAgICAgTnVtYmVyT2ZDcHVzDQo+ID4gKyAgKQ0KPiA+ICt7DQo+ID4g KyAgVUlOVE4gICAgICAgICAgICAgICAgICAgICBJbmRleDsNCj4gPiArDQo+ID4gKyAgaWYgKFJl Z2lzdGVyVGFibGUgIT0gTlVMTCkgew0KPiA+ICsgICAgZm9yIChJbmRleCA9IDA7IEluZGV4IDwg TnVtYmVyT2ZDcHVzOyBJbmRleCsrKSB7DQo+ID4gKyAgICAgIGlmIChSZWdpc3RlclRhYmxlW0lu ZGV4XS5UYWJsZUxlbmd0aCAhPSAwKSB7DQo+ID4gKyAgICAgICAgcmV0dXJuIEZBTFNFOw0KPiA+ ICsgICAgICB9DQo+ID4gKyAgICB9DQo+ID4gKyAgfQ0KPiA+ICsNCj4gPiArICByZXR1cm4gVFJV RTsNCj4gPiArfQ0KPiA+ICsNCj4gPiAgLyoqDQo+ID4gICAgR2V0IEFDUEkgQ1BVIGRhdGEuDQo+ ID4NCj4gPiBAQCAtMTAzMiwyMyArMTA2MywzMSBAQCBHZXRBY3BpQ3B1RGF0YSAoDQo+ID4NCj4g PiAgICBDb3B5TWVtICgoVk9JRCAqKShVSU5UTiltQWNwaUNwdURhdGEuSWR0clByb2ZpbGUsIChW T0lEDQo+ID4gKikoVUlOVE4pQWNwaUNwdURhdGEtPklkdHJQcm9maWxlLCBzaXplb2YgKElBMzJf REVTQ1JJUFRPUikpOw0KPiA+DQo+ID4gLSAgbUFjcGlDcHVEYXRhLlByZVNtbUluaXRSZWdpc3Rl clRhYmxlID0NCj4gPiAoRUZJX1BIWVNJQ0FMX0FERFJFU1MpKFVJTlROKUFsbG9jYXRlUG9vbA0K PiAobUFjcGlDcHVEYXRhLk51bWJlck9mQ3B1cyAqDQo+ID4gc2l6ZW9mIChDUFVfUkVHSVNURVJf VEFCTEUpKTsNCj4gPiAtICBBU1NFUlQgKG1BY3BpQ3B1RGF0YS5QcmVTbW1Jbml0UmVnaXN0ZXJU YWJsZSAhPSAwKTsNCj4gPiArICBpZiAoIUlzUmVnaXN0ZXJUYWJsZUVtcHR5ICgoQ1BVX1JFR0lT VEVSX1RBQkxFDQo+ICopKFVJTlROKUFjcGlDcHVEYXRhLT5QcmVTbW1Jbml0UmVnaXN0ZXJUYWJs ZSwNCj4gbUFjcGlDcHVEYXRhLk51bWJlck9mQ3B1cykpIHsNCj4gPiArICAgIG1BY3BpQ3B1RGF0 YS5QcmVTbW1Jbml0UmVnaXN0ZXJUYWJsZSA9DQo+IChFRklfUEhZU0lDQUxfQUREUkVTUykoVUlO VE4pQWxsb2NhdGVQb29sDQo+IChtQWNwaUNwdURhdGEuTnVtYmVyT2ZDcHVzICogc2l6ZW9mIChD UFVfUkVHSVNURVJfVEFCTEUpKTsNCj4gPiArICAgIEFTU0VSVCAobUFjcGlDcHVEYXRhLlByZVNt bUluaXRSZWdpc3RlclRhYmxlICE9IDApOw0KPiA+DQo+ID4gLSAgQ29weVJlZ2lzdGVyVGFibGUg KA0KPiA+IC0gICAgKENQVV9SRUdJU1RFUl9UQUJMRQ0KPiAqKShVSU5UTiltQWNwaUNwdURhdGEu UHJlU21tSW5pdFJlZ2lzdGVyVGFibGUsDQo+ID4gLSAgICAoQ1BVX1JFR0lTVEVSX1RBQkxFICop KFVJTlROKUFjcGlDcHVEYXRhLQ0KPiA+UHJlU21tSW5pdFJlZ2lzdGVyVGFibGUsDQo+ID4gLSAg ICBtQWNwaUNwdURhdGEuTnVtYmVyT2ZDcHVzDQo+ID4gLSAgICApOw0KPiA+ICsgICAgQ29weVJl Z2lzdGVyVGFibGUgKA0KPiA+ICsgICAgICAoQ1BVX1JFR0lTVEVSX1RBQkxFDQo+ICopKFVJTlRO KW1BY3BpQ3B1RGF0YS5QcmVTbW1Jbml0UmVnaXN0ZXJUYWJsZSwNCj4gPiArICAgICAgKENQVV9S RUdJU1RFUl9UQUJMRSAqKShVSU5UTilBY3BpQ3B1RGF0YS0NCj4gPlByZVNtbUluaXRSZWdpc3Rl clRhYmxlLA0KPiA+ICsgICAgICBtQWNwaUNwdURhdGEuTnVtYmVyT2ZDcHVzDQo+ID4gKyAgICAg ICk7DQo+ID4gKyAgfSBlbHNlIHsNCj4gPiArICAgIG1BY3BpQ3B1RGF0YS5QcmVTbW1Jbml0UmVn aXN0ZXJUYWJsZSA9IDA7ICB9DQo+ID4NCj4gPiAtICBtQWNwaUNwdURhdGEuUmVnaXN0ZXJUYWJs ZSA9DQo+ID4gKEVGSV9QSFlTSUNBTF9BRERSRVNTKShVSU5UTilBbGxvY2F0ZVBvb2wNCj4gKG1B Y3BpQ3B1RGF0YS5OdW1iZXJPZkNwdXMgKg0KPiA+IHNpemVvZiAoQ1BVX1JFR0lTVEVSX1RBQkxF KSk7DQo+ID4gLSAgQVNTRVJUIChtQWNwaUNwdURhdGEuUmVnaXN0ZXJUYWJsZSAhPSAwKTsNCj4g PiArICBpZiAoIUlzUmVnaXN0ZXJUYWJsZUVtcHR5ICgoQ1BVX1JFR0lTVEVSX1RBQkxFDQo+ICop KFVJTlROKUFjcGlDcHVEYXRhLT5SZWdpc3RlclRhYmxlLCBtQWNwaUNwdURhdGEuTnVtYmVyT2ZD cHVzKSkgew0KPiA+ICsgICAgbUFjcGlDcHVEYXRhLlJlZ2lzdGVyVGFibGUgPQ0KPiAoRUZJX1BI WVNJQ0FMX0FERFJFU1MpKFVJTlROKUFsbG9jYXRlUG9vbA0KPiAobUFjcGlDcHVEYXRhLk51bWJl ck9mQ3B1cyAqIHNpemVvZiAoQ1BVX1JFR0lTVEVSX1RBQkxFKSk7DQo+ID4gKyAgICBBU1NFUlQg KG1BY3BpQ3B1RGF0YS5SZWdpc3RlclRhYmxlICE9IDApOw0KPiA+DQo+ID4gLSAgQ29weVJlZ2lz dGVyVGFibGUgKA0KPiA+IC0gICAgKENQVV9SRUdJU1RFUl9UQUJMRSAqKShVSU5UTiltQWNwaUNw dURhdGEuUmVnaXN0ZXJUYWJsZSwNCj4gPiAtICAgIChDUFVfUkVHSVNURVJfVEFCTEUgKikoVUlO VE4pQWNwaUNwdURhdGEtPlJlZ2lzdGVyVGFibGUsDQo+ID4gLSAgICBtQWNwaUNwdURhdGEuTnVt YmVyT2ZDcHVzDQo+ID4gLSAgICApOw0KPiA+ICsgICAgQ29weVJlZ2lzdGVyVGFibGUgKA0KPiA+ ICsgICAgICAoQ1BVX1JFR0lTVEVSX1RBQkxFICopKFVJTlROKW1BY3BpQ3B1RGF0YS5SZWdpc3Rl clRhYmxlLA0KPiA+ICsgICAgICAoQ1BVX1JFR0lTVEVSX1RBQkxFICopKFVJTlROKUFjcGlDcHVE YXRhLT5SZWdpc3RlclRhYmxlLA0KPiA+ICsgICAgICBtQWNwaUNwdURhdGEuTnVtYmVyT2ZDcHVz DQo+ID4gKyAgICAgICk7DQo+ID4gKyAgfSBlbHNlIHsNCj4gPiArICAgIG1BY3BpQ3B1RGF0YS5S ZWdpc3RlclRhYmxlID0gMDsNCj4gPiArICB9DQo+ID4NCj4gPiAgICAvLw0KPiA+ICAgIC8vIENv cHkgQVAncyBHRFQsIElEVCBhbmQgTWFjaGluZSBDaGVjayBoYW5kbGVyIGludG8gU01SQU0uDQo+ ID4NCj4gDQo+IA0KPiANCj4gDQo+IA0KDQo=