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.web08.4542.1623290189875729461 for ; Wed, 09 Jun 2021 18:56:29 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@intel.onmicrosoft.com header.s=selector2-intel-onmicrosoft-com header.b=vIWIWNp5; spf=pass (domain: intel.com, ip: 192.55.52.115, mailfrom: zhiguang.liu@intel.com) IronPort-SDR: SOMWGCTqjpywmrVwWBXAbjNSpxKPi4ApBFod/I6cQTcRelrLT+xjHU9/BJbBMiTBz7GWu4wKiU UlGDCGMA1JRg== X-IronPort-AV: E=McAfee;i="6200,9189,10010"; a="205022148" X-IronPort-AV: E=Sophos;i="5.83,262,1616482800"; d="scan'208";a="205022148" Received: from orsmga005.jf.intel.com ([10.7.209.41]) by fmsmga103.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 09 Jun 2021 18:56:29 -0700 IronPort-SDR: znZClTWEbrrjZkKmWUPlPg8lZSizKGcZALWr/bX1bdnpewd36jSIbBWLlXi6mo1iEwy5XUpD1h mvmqzwmMqdJg== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.83,262,1616482800"; d="scan'208";a="619866729" Received: from fmsmsx601.amr.corp.intel.com ([10.18.126.81]) by orsmga005.jf.intel.com with ESMTP; 09 Jun 2021 18:56:26 -0700 Received: from fmsmsx612.amr.corp.intel.com (10.18.126.92) by fmsmsx601.amr.corp.intel.com (10.18.126.81) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2242.4; Wed, 9 Jun 2021 18:56:24 -0700 Received: from fmsmsx612.amr.corp.intel.com (10.18.126.92) by fmsmsx612.amr.corp.intel.com (10.18.126.92) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2242.4; Wed, 9 Jun 2021 18:56:23 -0700 Received: from FMSEDG603.ED.cps.intel.com (10.1.192.133) by fmsmsx612.amr.corp.intel.com (10.18.126.92) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2242.4 via Frontend Transport; Wed, 9 Jun 2021 18:56:23 -0700 Received: from NAM10-DM6-obe.outbound.protection.outlook.com (104.47.58.104) by edgegateway.intel.com (192.55.55.68) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2242.4; Wed, 9 Jun 2021 18:56:23 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=OWI1Fw4+u64ERLH7Mq3RtZixOhKvGP/YexSsMG7GqcO3KwxWCjdmP7p4MtxGVy4BJLaBuAflQoh6NAMqPCPc2h1mYNiRonh4msfgTzqP3VkKKu/z2slFDg1mZY5sMG72MyhFKOgwV913E/QDbqfMmtyU7qb/+8TmIklfBdA9RER5W6NmEuXSPIRsrzSwofAK+qrqZtc5mDj/jqz7VJujetboJ0qvqx4UbD651Ghn17PFVY9An4Erm4DhejFSdIgbRV0OLoa6Rt5+E9XiM0ZWFhs3mzC62MaeO4UMmCRZkDyozHM8SsjjvLoR2R4ZwTwi1b2U3v9U/5F6VfnTbkrF1g== 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=nwX3UgnLyRoyAxg0RrXeaEWgEf6UOKirhHOJuujJ9qo=; b=f1W3980RCmrCJVXeUvqWHZTaUNNq5DQ32exdjYNofRmUrPa+KThK7VE4y+IPneACek7VZCaSsSYt9Suk03APtdkxi61MbcwVMoLLnc8H9jHuGLX/dajeZEuc/unZXCrzJQqT5oktWvyHMrhtoYr7mYYr24y15lwITjw7UKmVrZFLOg25/xGKFa6jK/vF24T47bTvLUH7mIg7syASrWqAM27t8yfKIVclnjx5B8qTvAgnjx1Uzxiy2Of/4w7flr6fUeDC8ZXxFE4kQxREatrGOwiGAxDk7FbH0MS3Ce/dRoxGVeeUcPNxIROT1sFtIX/Q8bZddE9UAZoGWVPHQsVa9Q== 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=nwX3UgnLyRoyAxg0RrXeaEWgEf6UOKirhHOJuujJ9qo=; b=vIWIWNp5UQomQWML5x7BxRThMNuQ1mt6uR7fuYSmkc5KROTFcuT9JMNEt1O2FEDV0YmoJOv05tqWjRP7B0weBIorhixgT8c8BAsnxDgafWWn7HpOf0XHiJldNEHuWsXP6BUoajAyk5xbPMt0IW3AjVl7pbyROJhymJO/1NT16NU= Received: from PH0PR11MB5048.namprd11.prod.outlook.com (2603:10b6:510:3d::14) by PH0PR11MB5094.namprd11.prod.outlook.com (2603:10b6:510:3f::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4219.20; Thu, 10 Jun 2021 01:56:22 +0000 Received: from PH0PR11MB5048.namprd11.prod.outlook.com ([fe80::8c52:953e:b2c2:d4e1]) by PH0PR11MB5048.namprd11.prod.outlook.com ([fe80::8c52:953e:b2c2:d4e1%2]) with mapi id 15.20.4195.030; Thu, 10 Jun 2021 01:56:22 +0000 From: "Zhiguang Liu" To: Patrick Rudolph CC: "devel@edk2.groups.io" , "Wang, Jian J" , "Wu, Hao A" , "Bi, Dandan" , "Zeng, Star" , "Gao, Zhichao" Subject: Re: [Patch V3 5/9] MdeModulePkg/Universal/SmbiosDxe: Scan for existing tables Thread-Topic: [Patch V3 5/9] MdeModulePkg/Universal/SmbiosDxe: Scan for existing tables Thread-Index: AQHXXEeXDYwDDNr780SO2my0WPc6LKsMfpFQ Date: Thu, 10 Jun 2021 01:56:22 +0000 Message-ID: References: <20210604094227.1890-1-zhiguang.liu@intel.com> <20210604094227.1890-6-zhiguang.liu@intel.com> In-Reply-To: Accept-Language: zh-CN, en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-reaction: no-action dlp-version: 11.5.1.3 dlp-product: dlpe-windows authentication-results: 9elements.com; dkim=none (message not signed) header.d=none;9elements.com; dmarc=none action=none header.from=intel.com; x-originating-ip: [192.55.46.52] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 68996713-7b19-4ce7-b211-08d92bb2f28b x-ms-traffictypediagnostic: PH0PR11MB5094: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:6790; x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: jAL1cGCd6uQemEhSMDW6qJ05qJfaIsDeQrZ38+at2zM0cuj2jkBD1hhC5+tSQeG5ZAqvuJu3AoFz1lDBACq7yY8X6xQTd2qxwJ9ZSIsAvuRt2gJ9/ugIzrT2Ygk8CGL9vIHaLo5VsRIH03SGJQpINRBAdzOglfdIRc6L3Sv4mdUhZ7XJaUvT67p3acNjFqmAnk1n5aan8hvY1semuU/UEmdSfAT3H2VoQHG6I4jiZgmQQnk74fH0NHeRp72EwdGx9jrtI5HJrtJxYziAyz7w9zWHm2oCJZ7WN6c1VfFSyS4V3nAZpeXsmxZmNHtAXCupsy4DeYsphFUCwC15ZCY6D6fSMOlLmdC1Rjp1SsQzKsWlfutYndMWscVCP/P5cHqVwKdbaC1gXuHQvRKXWKe8rWpCeVBwyOHJuTI5RqfT/VmspGN+Iu3N0w3eaIkb7vzwL63HTFf3jGfdQM+ymIHkOIViP+WkVNNYRD9LVghRwRukVSTZZOBLGR0IM5bdvs2UnKoOu77y2nZy2crthgFZwRIufybokOoNF0CWA4oDrn1oCa5hC21pE13zuHMWMvUTdcScPKDxUW/x510P3lDS7FgAgYAgxc7WdytDfHK1OX6Ku+wSZVxJkSBIJfXYIWekCm4KTSsOUd4WW5vwZQKRCSEAh0L65wFYwUfqguTDu7xtZDMpQCIWRgQaQhRo9Q7l9rOr4MEhllzhb4DF6044QByM/m8Br8LZ/kT49wRMH3I= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PH0PR11MB5048.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(136003)(366004)(376002)(39860400002)(396003)(346002)(8936002)(38100700002)(26005)(9686003)(7696005)(66446008)(186003)(2906002)(6506007)(53546011)(33656002)(64756008)(5660300002)(54906003)(55016002)(122000001)(76116006)(66476007)(66946007)(66556008)(6916009)(4326008)(966005)(316002)(107886003)(19627235002)(71200400001)(8676002)(30864003)(86362001)(52536014)(478600001)(83380400001);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?SlE3ZzJrNC9xaWswZ1JtQjg4OXFuS3RhaDhnMG1zWjltcEkwTUFnUFcwTUVk?= =?utf-8?B?bXJpdG8ySWVHMHBoaDFORXZFQXdJQldZZ3QwRndyUnNQMHR5SHZsSnAxcklk?= =?utf-8?B?Ny9vL1VZSHAvem14MUZjUHd3cHJ0dXZjcUN0M0h6TFRjTU5lUk92T2dKM3ZT?= =?utf-8?B?alg2SGUxRWZLeGd5SGJJREp5emdzblhBcVVxQUpFMWM2ZmlxRHBlWkRJSUVP?= =?utf-8?B?NWtEeVJPZmt1ejJFaWhXanVZaENtSEFmNnlCK21qT0IrMjVLSGtGamRaRHM5?= =?utf-8?B?ZXFFVjRoYlg0d3NUdVFKWDlITDFzTHZiU2hSRzA0Sk45ZGRhVGRIdk1YeXJV?= =?utf-8?B?WmhXVnlZNEIzOHBRMW5JT2grZXd4TkVGRnV4dVJSRWtLQWExZ20rWXVMV0RM?= =?utf-8?B?Sko3d2daNXJqT3RRSVVjVDkrVlBIeXoweGpCS2pnMVJUTmNMY3VLYWQ0M3Fz?= =?utf-8?B?aG9yWFJiM1NDN0NyeWdtS0RtQmduTmU0dlgvbGdlVTFOQVlJZnYweG9IY0Z6?= =?utf-8?B?U1g4OTBPb3cySk1KQVJSSHVkcFVtck1hTjVRSEwyS09jTlJnNWkxV1hvYlVy?= =?utf-8?B?ZU9qTnl6aUREZnE3aUFGU0FmR2JENTUwaXJTeUlyMllQZ1BOcmJaRDRzL2c4?= =?utf-8?B?YzZtQzBzU25KVU9zUE5NVjBkL2tFRGhBN1YvczFEbXNpendZaEVLdlVGTDJ1?= =?utf-8?B?dkI4aTVVTUhRSkxvYitucXJNeFhHNmJsNUlGSElyK2ZTc3ByVERrdDJGRWFJ?= =?utf-8?B?cWlhbzR3N0lHbGlpR0Vva2FRcUh1OUhsNzZ2ZGpYSnE1dlBPYXM3TUhBOGd1?= =?utf-8?B?eElBcVIxU3Y2Z1FGZXFBM2hhb05VclprUG1zMm5KWXFNemZsdzJEd1Yxckw3?= =?utf-8?B?WmZVWmQ2THNRcCthWHNJQU5rMmFrczk3WlZFcEw4TUNHb2psWStPT09YQlhD?= =?utf-8?B?R1R6S09wcGFSNUNQWnFlelJLYlQyenJFeGNwVFl1MzZSakcvWHNPdGxSaW8x?= =?utf-8?B?dVR1VmVWc3F2dS93YnVOWWxUTWRJTGU2QXhtRXkvME1FR2VDRGpXZ1FzQ2cr?= =?utf-8?B?ampHUjZSazkzakkxWXJ2SVBrZys5T3NWVGpEQWREaHdNR0k3eWJMdkkvU1c4?= =?utf-8?B?M0lsWHlYSWxpUithbUlURDczZHF4dk5TZ1R6b2JYckQ0d1c2MncwTXdiU1JH?= =?utf-8?B?MkFiNG1GMFFwNnJodmh0V3lLYVJNMXRCNExUUGtJdGtDNnN1NHJRTy9mMkgr?= =?utf-8?B?aWlUbTVNU3ZNYVZweEFvd1d2OURxdzZUZHlEcS9vbks5ODFoOVZaMW12bFJN?= =?utf-8?B?c1FKTlE4d1hkM3k2NHNkOFRtKzdhV1EybysrNlErc1ZvQ2JIcnJjNWFBZmRH?= =?utf-8?B?UVczdjZyMWVDVlZ0N0hxb2wzRWRzREhvbzAvaDFzSGdINFVQTWZSS0J6clFU?= =?utf-8?B?aWRrOUN4ZGQ0aHA3d29YQ0dTTzdDNEMvUjIyam5QU3hva3FtL3dUN0tBV204?= =?utf-8?B?ZjVVSG1IZlRjYUN1T3lRSk54RDVpVFNjUmlqSm92QklJcytWTEFLVzB1THc4?= =?utf-8?B?TWkrcWxxUW9DYklpcjMyajUvbG9xRWlPYmtBalRIMjFZNHVXbmI1T2x0VEhC?= =?utf-8?B?cHUwV2JlbjI0SWwyZ29jNkhwSTFGWFlkeUhiZ3J4eEZXTW9BV1E4TmpSM0l2?= =?utf-8?B?cVBzMnlUcmFmTXZ2ZlhVMlRoV0k3Z1lKYlV2eUh6b2hPd1grYyt4dUV3aUNH?= =?utf-8?Q?QSyjmwN+DET0ERcVVM=3D?= MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: PH0PR11MB5048.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 68996713-7b19-4ce7-b211-08d92bb2f28b X-MS-Exchange-CrossTenant-originalarrivaltime: 10 Jun 2021 01:56:22.1248 (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: 9f+jpClB2ZNjIftyZ5YjHhbOO9UERdzrPdOh5T3ZEfXMgp6RnVLZaFKCtGG6VLNEr8YKw8jUYZmclVjmXw9x/w== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH0PR11MB5094 Return-Path: zhiguang.liu@intel.com X-OriginatorOrg: intel.com Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 SGkgUGF0cmljaw0KDQpUaGFua3MgZm9yIGNhdGNoaW5nIHRoaXMgaXNzdWUuDQpJIHVwZGF0ZWQg dGhlIGNvZGUsIGFuZCB5b3UgY2FuIGZpbmQgdGhlIGNvZGUgYmVsb3cNCmh0dHBzOi8vZ2l0aHVi LmNvbS9MaXVaaGlndWFuZzAwMS9lZGsyL3RyZWUvVW5pdmVyc2FsUGF5bG9hZEhlYWRlcnNfdjQN ClBsZWFzZSBoZWxwIGNvbmZpcm0uDQoNClRoYW5rcw0KWmhpZ3VhbmcNCg0KPiAtLS0tLU9yaWdp bmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBQYXRyaWNrIFJ1ZG9scGggPHBhdHJpY2sucnVkb2xw aEA5ZWxlbWVudHMuY29tPg0KPiBTZW50OiBUdWVzZGF5LCBKdW5lIDgsIDIwMjEgNToyMSBQTQ0K PiBUbzogTGl1LCBaaGlndWFuZyA8emhpZ3VhbmcubGl1QGludGVsLmNvbT4NCj4gQ2M6IGRldmVs QGVkazIuZ3JvdXBzLmlvOyBXYW5nLCBKaWFuIEogPGppYW4uai53YW5nQGludGVsLmNvbT47IFd1 LCBIYW8gQQ0KPiA8aGFvLmEud3VAaW50ZWwuY29tPjsgQmksIERhbmRhbiA8ZGFuZGFuLmJpQGlu dGVsLmNvbT47IFplbmcsIFN0YXINCj4gPHN0YXIuemVuZ0BpbnRlbC5jb20+OyBHYW8sIFpoaWNo YW8gPHpoaWNoYW8uZ2FvQGludGVsLmNvbT4NCj4gU3ViamVjdDogUmU6IFtQYXRjaCBWMyA1Lzld IE1kZU1vZHVsZVBrZy9Vbml2ZXJzYWwvU21iaW9zRHhlOiBTY2FuIGZvcg0KPiBleGlzdGluZyB0 YWJsZXMNCj4gDQo+IE9uIEZyaSwgSnVuIDQsIDIwMjEgYXQgMTE6NDIgQU0gWmhpZ3VhbmcgTGl1 IDx6aGlndWFuZy5saXVAaW50ZWwuY29tPiB3cm90ZToNCj4gPg0KPiA+IFYxOg0KPiA+IFRoZSBk ZWZhdWx0IEVmaVNtYmlvc1Byb3RvY29sIG9wZXJhdGVzIG9uIGFuIGVtcHR5IFNNQklPUyB0YWJs ZS4NCj4gPiBUaGUgU01CSU9TIHRhYmxlcyBhcmUgcHJvdmlkZWQgYnkgdGhlIGJvb3Rsb2FkZXIg b24gVWVmaVBheWxvYWRQa2cuDQo+ID4gU2NhbiBmb3IgZXhpc3RpbmcgdGFibGVzIGluIFNtYmlv c0R4ZSBhbmQgbG9hZCB0aGVtIGlmIHRoZXkgc2VlbSB2YWxpZC4NCj4gPg0KPiA+IFRoaXMgZml4 ZXMgdGhlIHNldHRpbmdzIG1lbnUgbm90IHNob3dpbmcgYW55IGhhcmR3YXJlIGluZm9ybWF0aW9u LA0KPiA+IGluc3RlYWQgb25seSAiMCBNQiBSQU0iIHdhcyBkaXNwbGF5ZWQuDQo+ID4NCj4gPiBU ZXN0cyBzaG93ZWQgdGhhdCB0aGUgT1MgY2FuIHN0aWxsIHNlZSB0aGUgU01CSU9TIHRhYmxlcy4N Cj4gPg0KPiA+IFYyOg0KPiA+IFNtYmlvc0R4ZSB3aWxsIGdldCB0aGUgU01CSU9TIGZyb20gYSBn dWlkIEhvYi4NCj4gPiBBc2xvIHdpbGwga2VlcCB0aGUgU21iaW9zSGFuZGxlIGlmIGl0IGlzIGF2 YWlsYWJsZS4NCj4gPg0KPiA+IENjOiBKaWFuIEogV2FuZyA8amlhbi5qLndhbmdAaW50ZWwuY29t Pg0KPiA+IENjOiBIYW8gQSBXdSA8aGFvLmEud3VAaW50ZWwuY29tPg0KPiA+IENjOiBEYW5kYW4g QmkgPGRhbmRhbi5iaUBpbnRlbC5jb20+DQo+ID4gQ2M6IFN0YXIgWmVuZyA8c3Rhci56ZW5nQGlu dGVsLmNvbT4NCj4gPiBDYzogWmhpY2hhbyBHYW8gPHpoaWNoYW8uZ2FvQGludGVsLmNvbT4NCj4g PiBTaWduZWQtb2ZmLWJ5OiBQYXRyaWNrIFJ1ZG9scGggPHBhdHJpY2sucnVkb2xwaEA5ZWxlbWVu dHMuY29tPg0KPiA+IFNpZ25lZC1vZmYtYnk6IFpoaWd1YW5nIExpdSA8emhpZ3VhbmcubGl1QGlu dGVsLmNvbT4NCj4gPiAtLS0NCj4gPiAgTWRlTW9kdWxlUGtnL1VuaXZlcnNhbC9TbWJpb3NEeGUv U21iaW9zRHhlLmMgICB8IDMyMA0KPiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrDQo+ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysNCj4gKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKw0KPiArKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrDQo+ICsrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysNCj4gKysrKysrKysr KysrKysrKysrKysrKysrKysrKy0tDQo+ID4gIE1kZU1vZHVsZVBrZy9Vbml2ZXJzYWwvU21iaW9z RHhlL1NtYmlvc0R4ZS5oICAgfCAgIDQgKysrLQ0KPiA+ICBNZGVNb2R1bGVQa2cvVW5pdmVyc2Fs L1NtYmlvc0R4ZS9TbWJpb3NEeGUuaW5mIHwgICA1ICsrKystDQo+ID4gIDMgZmlsZXMgY2hhbmdl ZCwgMzI1IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pDQo+ID4NCj4gPiBkaWZmIC0tZ2l0 IGEvTWRlTW9kdWxlUGtnL1VuaXZlcnNhbC9TbWJpb3NEeGUvU21iaW9zRHhlLmMNCj4gPiBiL01k ZU1vZHVsZVBrZy9Vbml2ZXJzYWwvU21iaW9zRHhlL1NtYmlvc0R4ZS5jDQo+ID4gaW5kZXggM2Nk YjBiMWVkNy4uMzU3OWM0ZDg5MCAxMDA2NDQNCj4gPiAtLS0gYS9NZGVNb2R1bGVQa2cvVW5pdmVy c2FsL1NtYmlvc0R4ZS9TbWJpb3NEeGUuYw0KPiA+ICsrKyBiL01kZU1vZHVsZVBrZy9Vbml2ZXJz YWwvU21iaW9zRHhlL1NtYmlvc0R4ZS5jDQo+ID4gQEAgLTIsNyArMiw3IEBADQo+ID4gICAgVGhp cyBjb2RlIHByb2R1Y2VzIHRoZSBTbWJpb3MgcHJvdG9jb2wuIEl0IGFsc28gcmVzcG9uc2libGUg Zm9yDQo+IGNvbnN0cnVjdGluZw0KPiA+ICAgIFNNQklPUyB0YWJsZSBpbnRvIHN5c3RlbSB0YWJs ZS4NCj4gPg0KPiA+IC1Db3B5cmlnaHQgKGMpIDIwMDkgLSAyMDE4LCBJbnRlbCBDb3Jwb3JhdGlv bi4gQWxsIHJpZ2h0cw0KPiA+IHJlc2VydmVkLjxCUj4NCj4gPiArQ29weXJpZ2h0IChjKSAyMDA5 IC0gMjAyMSwgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMNCj4gPiArcmVzZXJ2ZWQuPEJS Pg0KPiA+ICBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTItQ2xhdXNlLVBhdGVudA0KPiA+ DQo+ID4gICoqLw0KPiA+IEBAIC0xNDgsNiArMTQ4LDMxIEBAIFNNQklPU19UQUJMRV8zXzBfRU5U UllfUE9JTlQNCj4gU21iaW9zMzBFbnRyeVBvaW50U3RydWN0dXJlRGF0YSA9IHsNCj4gPiAgICAv Lw0KPiA+ICAgIDANCj4gPiAgfTsNCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgIFZhbGlkYXRlcyBh IFNNQklPUyB0YWJsZSBlbnRyeSBwb2ludC4NCj4gPiArDQo+ID4gKyAgQHBhcmFtICBUYWJsZUVu dHJ5ICAgICAgIFRoZSBTbUJpb3MgdGFibGUgZW50cnkgdG8gdmFsaWRhdGUuDQo+ID4gKyAgQHBh cmFtICBUYWJsZUFkZHJlc3MgICAgIE9uIGV4aXQsIHBvaW50IHRvIHRoZSBzbWJpb3MgdGFibGUg YWRkcmVzLg0KPiA+ICsgIEBwYXJhbSAgVGFibGVNYXhpbXVtU2l6ZSBPbiBleGl0LCBwb2ludCB0 byB0aGUgbWF4aW11bSBzaXplIG9mIHRoZQ0KPiB0YWJsZS4NCj4gPiArDQo+ID4gKyAgQHJldHZh bCBUUlVFICAgICAgICAgICBTTUJJT1MgdGFibGUgZW50cnkgcG9pbnQgaXMgdmFsaWQuDQo+ID4g KyAgQHJldHZhbCBGQUxTRSAgICAgICAgICBTTUJJT1MgdGFibGUgZW50cnkgcG9pbnQgaXMgbWFs Zm9ybWVkLg0KPiA+ICsNCj4gPiArKiovDQo+ID4gK3R5cGVkZWYNCj4gPiArQk9PTEVBTg0KPiA+ ICsoKiBJU19TTUJJT1NfVEFCTEVfVkFMSUQpICgNCj4gPiArICBJTiAgVk9JRCAgICAgICAgICAg ICAgICpUYWJsZUVudHJ5LA0KPiA+ICsgIE9VVCBWT0lEICAgICAgICAgICAgICAgKipUYWJsZUFk ZHJlc3MsDQo+ID4gKyAgT1VUIFVJTlROICAgICAgICAgICAgICAqVGFibGVNYXhpbXVtU2l6ZQ0K PiA+ICsgICk7DQo+ID4gK3R5cGVkZWYgc3RydWN0IHsNCj4gPiArICBFRklfR1VJRCAgICAgICAg ICAgICAgICpHdWlkOw0KPiA+ICsgIElTX1NNQklPU19UQUJMRV9WQUxJRCAgSXNWYWxpZDsNCj4g PiArfSBJU19TTUJJT1NfVEFCTEVfVkFMSURfRU5UUlk7DQo+ID4gKw0KPiA+ICsNCj4gPiAgLyoq DQo+ID4NCj4gPiAgICBHZXQgdGhlIGZ1bGwgc2l6ZSBvZiBTTUJJT1Mgc3RydWN0dXJlIGluY2x1 ZGluZyBvcHRpb25hbCBzdHJpbmdzIHRoYXQgZm9sbG93DQo+IHRoZSBmb3JtYXR0ZWQgc3RydWN0 dXJlLg0KPiA+IEBAIC0xNDA4LDYgKzE0MzMsMjk2IEBAIFNtYmlvc1RhYmxlQ29uc3RydWN0aW9u ICgNCj4gPiAgICB9DQo+ID4gIH0NCj4gPg0KPiA+ICsvKioNCj4gPiArICBWYWxpZGF0ZXMgYSBT TUJJT1MgMi4wIHRhYmxlIGVudHJ5IHBvaW50Lg0KPiA+ICsNCj4gPiArICBAcGFyYW0gIFRhYmxl RW50cnkgICAgICAgVGhlIFNtQmlvcyB0YWJsZSBlbnRyeSB0byB2YWxpZGF0ZS4NCj4gPiArICBA cGFyYW0gIFRhYmxlQWRkcmVzcyAgICAgT24gZXhpdCwgcG9pbnQgdG8gdGhlIHNtYmlvcyB0YWJs ZSBhZGRyZXMuDQo+ID4gKyAgQHBhcmFtICBUYWJsZU1heGltdW1TaXplIE9uIGV4aXQsIHBvaW50 IHRvIHRoZSBtYXhpbXVtIHNpemUgb2YgdGhlDQo+IHRhYmxlLg0KPiA+ICsNCj4gPiArICBAcmV0 dmFsIFRSVUUgICAgICAgICAgIFNNQklPUyB0YWJsZSBlbnRyeSBwb2ludCBpcyB2YWxpZC4NCj4g PiArICBAcmV0dmFsIEZBTFNFICAgICAgICAgIFNNQklPUyB0YWJsZSBlbnRyeSBwb2ludCBpcyBt YWxmb3JtZWQuDQo+ID4gKw0KPiA+ICsqKi8NCj4gPiArU1RBVElDDQo+ID4gK0JPT0xFQU4NCj4g PiArSXNWYWxpZFNtYmlvczIwVGFibGUgKA0KPiA+ICsgIElOICBWT0lEICAgICAgICAgICAgICAg KlRhYmxlRW50cnksDQo+ID4gKyAgT1VUIFZPSUQgICAgICAgICAgICAgICAqKlRhYmxlQWRkcmVz cywNCj4gPiArICBPVVQgVUlOVE4gICAgICAgICAgICAgICpUYWJsZU1heGltdW1TaXplDQo+ID4g KyAgKQ0KPiA+ICt7DQo+ID4gKyAgVUlOVDggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIENoZWNrc3VtOw0KPiA+ICsgIFNNQklPU19UQUJMRV9FTlRSWV9QT0lOVCAgICAgICAg ICAgICAgICAgICAqU21iaW9zVGFibGU7DQo+ID4gKyAgU21iaW9zVGFibGUgPSAoU01CSU9TX1RB QkxFX0VOVFJZX1BPSU5UICopIFRhYmxlRW50cnk7DQo+ID4gKw0KPiA+ICsgIGlmIChDb21wYXJl TWVtIChTbWJpb3NUYWJsZS0+QW5jaG9yU3RyaW5nLCAiX1NNXyIsIDQpICE9IDApIHsNCj4gPiAr ICAgIHJldHVybiBGQUxTRTsNCj4gPiArICB9DQo+ID4gKw0KPiA+ICsgIGlmIChDb21wYXJlTWVt IChTbWJpb3NUYWJsZS0+SW50ZXJtZWRpYXRlQW5jaG9yU3RyaW5nLCAiX0RNSV8iLA0KPiA1KSAh PSAwKSB7DQo+ID4gKyAgICByZXR1cm4gRkFMU0U7DQo+ID4gKyAgfQ0KPiA+ICsNCj4gPiArICAv Lw0KPiA+ICsgIC8vIFRoZSBhY3R1YWwgdmFsdWUgb2YgdGhlIEVudHJ5UG9pbnRMZW5ndGggc2hv dWxkIGJlIDFGaC4NCj4gPiArICAvLyBIb3dldmVyLCBpdCB3YXMgaW5jb3JyZWN0bHkgc3RhdGVk IGluIHZlcnNpb24gMi4xIG9mIHNtYmlvcw0KPiBzcGVjaWZpY2F0aW9uLg0KPiA+ICsgIC8vIFRo ZXJlZm9yZSwgMHgxRiBhbmQgMHgxRSBhcmUgYm90aCBhY2NlcHRlZC4NCj4gPiArICAvLw0KPiA+ ICsgIGlmIChTbWJpb3NUYWJsZS0+RW50cnlQb2ludExlbmd0aCAhPSAweDFFICYmIFNtYmlvc1Rh YmxlLQ0KPiA+RW50cnlQb2ludExlbmd0aCAhPSBzaXplb2YgKFNNQklPU19UQUJMRV9FTlRSWV9Q T0lOVCkpIHsNCj4gPiArICAgIHJldHVybiBGQUxTRTsNCj4gPiArICB9DQo+ID4gKw0KPiA+ICsg IC8vDQo+ID4gKyAgLy8gTWFqb3JWZXJzaW9uIHNob3VsZCBub3QgYmUgbGVzcyB0aGFuIDIuDQo+ ID4gKyAgLy8NCj4gPiArICBpZiAoU21iaW9zVGFibGUtPk1ham9yVmVyc2lvbiA8IDIpIHsNCj4g PiArICAgIHJldHVybiBGQUxTRTsNCj4gPiArICB9DQo+ID4gKw0KPiA+ICsgIC8vDQo+ID4gKyAg Ly8gVGhlIHdob2xlIHN0cnVjdCBjaGVjayBzdW0gc2hvdWxkIGJlIHplcm8gIC8vICBDaGVja3N1 bSA9DQo+ID4gKyBDYWxjdWxhdGVTdW04ICgNCj4gPiArICAgICAgICAgICAgICAgKFVJTlQ4ICop IFNtYmlvc1RhYmxlLA0KPiA+ICsgICAgICAgICAgICAgICBTbWJpb3NUYWJsZS0+RW50cnlQb2lu dExlbmd0aA0KPiA+ICsgICAgICAgICAgICAgICApOw0KPiA+ICsgIGlmIChDaGVja3N1bSAhPSAw KSB7DQo+ID4gKyAgICByZXR1cm4gRkFMU0U7DQo+ID4gKyAgfQ0KPiA+ICsNCj4gPiArICAvLw0K PiA+ICsgIC8vIFRoZSBJbnRlcm1lZGlhdGUgRW50cnkgUG9pbnQgU3RydWN0dXJlIGNoZWNrIHN1 bSBzaG91bGQgYmUgemVyby4NCj4gPiArICAvLw0KPiA+ICsgIENoZWNrc3VtID0gQ2FsY3VsYXRl U3VtOCAoDQo+ID4gKyAgICAgICAgICAgICAgIChVSU5UOCAqKSBTbWJpb3NUYWJsZSArIE9GRlNF VF9PRg0KPiAoU01CSU9TX1RBQkxFX0VOVFJZX1BPSU5ULCBJbnRlcm1lZGlhdGVBbmNob3JTdHJp bmcpLA0KPiA+ICsgICAgICAgICAgICAgICBTbWJpb3NUYWJsZS0+RW50cnlQb2ludExlbmd0aCAt IE9GRlNFVF9PRg0KPiAoU01CSU9TX1RBQkxFX0VOVFJZX1BPSU5ULCBJbnRlcm1lZGlhdGVBbmNo b3JTdHJpbmcpDQo+ID4gKyAgICAgICAgICAgICAgICk7DQo+ID4gKyAgaWYgKENoZWNrc3VtICE9 IDApIHsNCj4gPiArICAgIHJldHVybiBGQUxTRTsNCj4gPiArICB9DQo+ID4gKw0KPiA+ICsgICpU YWJsZUFkZHJlc3MgICAgID0gKFZPSUQgKikgKFVJTlROKSBTbWJpb3NUYWJsZS0+VGFibGVBZGRy ZXNzOw0KPiA+ICsgICpUYWJsZU1heGltdW1TaXplID0gU21iaW9zVGFibGUtPlRhYmxlTGVuZ3Ro Ow0KPiA+ICsgIHJldHVybiBUUlVFOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICBW YWxpZGF0ZXMgYSBTTUJJT1MgMy4wIHRhYmxlIGVudHJ5IHBvaW50Lg0KPiA+ICsNCj4gPiArICBA cGFyYW0gIFRhYmxlRW50cnkgICAgICAgVGhlIFNtQmlvcyB0YWJsZSBlbnRyeSB0byB2YWxpZGF0 ZS4NCj4gPiArICBAcGFyYW0gIFRhYmxlQWRkcmVzcyAgICAgT24gZXhpdCwgcG9pbnQgdG8gdGhl IHNtYmlvcyB0YWJsZSBhZGRyZXMuDQo+ID4gKyAgQHBhcmFtICBUYWJsZU1heGltdW1TaXplIE9u IGV4aXQsIHBvaW50IHRvIHRoZSBtYXhpbXVtIHNpemUgb2YgdGhlDQo+IHRhYmxlLg0KPiA+ICsN Cj4gPiArICBAcmV0dmFsIFRSVUUgICAgICAgICAgIFNNQklPUyB0YWJsZSBlbnRyeSBwb2ludCBp cyB2YWxpZC4NCj4gPiArICBAcmV0dmFsIEZBTFNFICAgICAgICAgIFNNQklPUyB0YWJsZSBlbnRy eSBwb2ludCBpcyBtYWxmb3JtZWQuDQo+ID4gKw0KPiA+ICsqKi8NCj4gPiArU1RBVElDDQo+ID4g K0JPT0xFQU4NCj4gPiArSXNWYWxpZFNtYmlvczMwVGFibGUgKA0KPiA+ICsgIElOICBWT0lEICAg ICAgICAgICAgICAgKlRhYmxlRW50cnksDQo+ID4gKyAgT1VUIFZPSUQgICAgICAgICAgICAgICAq KlRhYmxlQWRkcmVzcywNCj4gPiArICBPVVQgVUlOVE4gICAgICAgICAgICAgICpUYWJsZU1heGlt dW1TaXplDQo+ID4gKyAgKQ0KPiA+ICt7DQo+ID4gKyAgVUlOVDggICAgICAgICAgICAgICAgICAg ICAgICAgIENoZWNrc3VtOw0KPiA+ICsgIFNNQklPU19UQUJMRV8zXzBfRU5UUllfUE9JTlQgICAq U21iaW9zVGFibGU7DQo+ID4gKyAgU21iaW9zVGFibGUgPSAoU01CSU9TX1RBQkxFXzNfMF9FTlRS WV9QT0lOVCAqKSBUYWJsZUVudHJ5Ow0KPiA+ICsNCj4gPiArICBpZiAoQ29tcGFyZU1lbSAoU21i aW9zVGFibGUtPkFuY2hvclN0cmluZywgIl9TTTNfIiwgNSkgIT0gMCkgew0KPiA+ICsgICAgcmV0 dXJuIEZBTFNFOw0KPiA+ICsgIH0NCj4gPiArICBpZiAoU21iaW9zVGFibGUtPkVudHJ5UG9pbnRM ZW5ndGggPCBzaXplb2YNCj4gKFNNQklPU19UQUJMRV8zXzBfRU5UUllfUE9JTlQpKSB7DQo+ID4g KyAgICByZXR1cm4gRkFMU0U7DQo+ID4gKyAgfQ0KPiA+ICsgIGlmIChTbWJpb3NUYWJsZS0+TWFq b3JWZXJzaW9uIDwgMykgew0KPiA+ICsgICAgcmV0dXJuIEZBTFNFOw0KPiA+ICsgIH0NCj4gPiAr DQo+ID4gKyAgLy8NCj4gPiArICAvLyBUaGUgd2hvbGUgc3RydWN0IGNoZWNrIHN1bSBzaG91bGQg YmUgemVybyAgLy8gIENoZWNrc3VtID0NCj4gPiArIENhbGN1bGF0ZVN1bTggKA0KPiA+ICsgICAg ICAgICAgICAgICAoVUlOVDggKikgU21iaW9zVGFibGUsDQo+ID4gKyAgICAgICAgICAgICAgIFNt Ymlvc1RhYmxlLT5FbnRyeVBvaW50TGVuZ3RoDQo+ID4gKyAgICAgICAgICAgICAgICk7DQo+ID4g KyAgaWYgKENoZWNrc3VtICE9IDApIHsNCj4gPiArICAgIHJldHVybiBGQUxTRTsNCj4gPiArICB9 DQo+ID4gKw0KPiA+ICsgICpUYWJsZUFkZHJlc3MgICAgID0gKFZPSUQgKikgKFVJTlROKSBTbWJp b3NUYWJsZS0+VGFibGVBZGRyZXNzOw0KPiA+ICsgICpUYWJsZU1heGltdW1TaXplID0gU21iaW9z VGFibGUtPlRhYmxlTWF4aW11bVNpemU7DQo+ID4gKyAgcmV0dXJuIFRSVUU7DQo+ID4gK30NCj4g PiArDQo+ID4gKy8qKg0KPiA+ICsgIFBhcnNlIGFuIGV4aXN0aW5nIFNNQklPUyB0YWJsZSBhbmQg aW5zZXJ0IGl0IHVzaW5nIFNtYmlvc0FkZC4NCj4gPiArDQo+ID4gKyAgQHBhcmFtICBJbWFnZUhh bmRsZSAgICAgICAgICAgVGhlIEVGSV9IQU5ETEUgdG8gdGhpcyBkcml2ZXIuDQo+ID4gKyAgQHBh cmFtICBTbWJpb3MgICAgICAgICAgICAgICAgVGhlIFNNQklPUyB0YWJsZSB0byBwYXJzZS4NCj4g PiArICBAcGFyYW0gIExlbmd0aCAgICAgICAgICAgICAgICBUaGUgbGVuZ3RoIG9mIHRoZSBTTUJJ T1MgdGFibGUuDQo+ID4gKw0KPiA+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgICAgIFNN QklPUyB0YWJsZSB3YXMgcGFyc2VkIGFuZCBpbnN0YWxsZWQuDQo+ID4gKyAgQHJldHZhbCBFRklf T1VUX09GX1JFU09VUkNFUyAgUmVjb3JkIHdhcyBub3QgYWRkZWQgZHVlIHRvIGxhY2sgb2YNCj4g c3lzdGVtIHJlc291cmNlcy4NCj4gPiArICBAcmV0dmFsIEVGSV9JTlZBTElEX1BBUkFNRVRFUiBT bWJpb3MgaXMgbm90IGEgY29ycmVjdCBzbWJpb3MgdGFibGUNCj4gPiArDQo+ID4gKyoqLw0KPiA+ ICtTVEFUSUMNCj4gPiArRUZJX1NUQVRVUw0KPiA+ICtQYXJzZUFuZEFkZEV4aXN0aW5nU21iaW9z VGFibGUgKA0KPiA+ICsgIElOIEVGSV9IQU5ETEUgICAgICAgICAgICAgICAgICAgIEltYWdlSGFu ZGxlLA0KPiA+ICsgIElOIFNNQklPU19TVFJVQ1RVUkVfUE9JTlRFUiAgICAgIFNtYmlvcywNCj4g PiArICBJTiBVSU5UTiAgICAgICAgICAgICAgICAgICAgICAgICBMZW5ndGgNCj4gPiArICApDQo+ ID4gK3sNCj4gPiArICBFRklfU1RBVFVTICAgICAgICAgICAgICAgICAgICBTdGF0dXM7DQo+ID4g KyAgQ0hBUjggICAgICAgICAgICAgICAgICAgICAgICAgKlN0cmluZzsNCj4gPiArICBFRklfU01C SU9TX0hBTkRMRSAgICAgICAgICAgICBTbWJpb3NIYW5kbGU7DQo+ID4gKyAgU01CSU9TX1NUUlVD VFVSRV9QT0lOVEVSICAgICAgU21iaW9zRW5kOw0KPiA+ICsNCj4gPiArICBTbWJpb3NFbmQuUmF3 ID0gU21iaW9zLlJhdyArIExlbmd0aDsNCj4gPiArDQo+ID4gKyAgaWYgKFNtYmlvcy5SYXcgPj0g U21iaW9zRW5kLlJhdyB8fCBTbWJpb3MuUmF3ID09IE5VTEwpIHsNCj4gPiArICAgIHJldHVybiBF RklfSU5WQUxJRF9QQVJBTUVURVI7DQo+ID4gKyAgfQ0KPiA+ICsNCj4gPiArICBkbyB7DQo+ID4g KyAgICAvLw0KPiA+ICsgICAgLy8gTWFrZSBzdXJlIG5vdCB0byBhY2Nlc3MgbWVtb3J5IGJleW9u ZCBTbWJpb3NFbmQNCj4gPiArICAgIC8vDQo+ID4gKyAgICBpZiAoU21iaW9zLlJhdyArIHNpemVv ZiAoU01CSU9TX1NUUlVDVFVSRSkgPiBTbWJpb3NFbmQuUmF3IHx8DQo+ID4gKyAgICAgIFNtYmlv cy5SYXcgKyBzaXplb2YgKFNNQklPU19TVFJVQ1RVUkUpIDwgU21iaW9zLlJhdykgew0KPiA+ICsg ICAgICByZXR1cm4gRUZJX0lOVkFMSURfUEFSQU1FVEVSOw0KPiA+ICsgICAgfQ0KPiA+ICsgICAg Ly8NCj4gPiArICAgIC8vIENoZWNrIGZvciBlbmQgbWFya2VyDQo+ID4gKyAgICAvLw0KPiA+ICsg ICAgaWYgKFNtYmlvcy5IZHItPlR5cGUgPT0gU01CSU9TX1RZUEVfRU5EX09GX1RBQkxFKSB7DQo+ ID4gKyAgICAgIGJyZWFrOw0KPiA+ICsgICAgfQ0KPiA+ICsgICAgLy8NCj4gPiArICAgIC8vIE1h a2Ugc3VyZSBub3QgdG8gYWNjZXNzIG1lbW9yeSBiZXlvbmQgU21iaW9zRW5kDQo+ID4gKyAgICAv LyBFYWNoIHN0cnVjdHVyZSBzaGFsbCBiZSB0ZXJtaW5hdGVkIGJ5IGEgZG91YmxlLW51bGwgKDAw MDBoKS4NCj4gPiArICAgIC8vDQo+ID4gKyAgICBpZiAoU21iaW9zLlJhdyArIFNtYmlvcy5IZHIt Pkxlbmd0aCArIDIgKiBzaXplb2YgKFVJTlQ4KSA+DQo+IFNtYmlvc0VuZC5SYXcgfHwNCj4gPiAr ICAgICAgU21iaW9zLlJhdyArIFNtYmlvcy5IZHItPkxlbmd0aCArIDIgKiBzaXplb2YgKFVJTlQ4 KSA8IFNtYmlvcy5SYXcpDQo+IHsNCj4gPiArICAgICAgcmV0dXJuIEVGSV9JTlZBTElEX1BBUkFN RVRFUjsNCj4gPiArICAgIH0NCj4gPiArICAgIC8vDQo+ID4gKyAgICAvLyBJbnN0YWxsIHRoZSB0 YWJsZQ0KPiA+ICsgICAgLy8NCj4gPiArICAgIFNtYmlvc0hhbmRsZSA9IFNtYmlvcy5IZHItPkhh bmRsZTsNCj4gPiArICAgIFN0YXR1cyA9IFNtYmlvc0FkZCAoDQo+ID4gKyAgICAgICAgICAgICAg ICZtUHJpdmF0ZURhdGEuU21iaW9zLA0KPiA+ICsgICAgICAgICAgICAgICBJbWFnZUhhbmRsZSwN Cj4gPiArICAgICAgICAgICAgICAgJlNtYmlvc0hhbmRsZSwNCj4gPiArICAgICAgICAgICAgICAg U21iaW9zLkhkcg0KPiA+ICsgICAgICAgICAgICAgICApOw0KPiA+ICsNCj4gPiArICAgIEFTU0VS VF9FRklfRVJST1IgKFN0YXR1cyk7DQo+ID4gKyAgICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7 DQo+ID4gKyAgICAgIHJldHVybiBTdGF0dXM7DQo+ID4gKyAgICB9DQo+ID4gKyAgICAvLw0KPiA+ ICsgICAgLy8gR28gdG8gdGhlIG5leHQgU01CSU9TIHN0cnVjdHVyZS4gRWFjaCBTTUJJT1Mgc3Ry dWN0dXJlIG1heSBpbmNsdWRlDQo+IDIgcGFydHM6DQo+ID4gKyAgICAvLyAxLiBGb3JtYXR0ZWQg c2VjdGlvbjsgMi4gVW5mb3JtYXR0ZWQgc3RyaW5nIHNlY3Rpb24uIFNvLCAyIHN0ZXBzIGFyZQ0K PiBuZWVkZWQNCj4gPiArICAgIC8vIHRvIHNraXAgb25lIFNNQklPUyBzdHJ1Y3R1cmUuDQo+ID4g KyAgICAvLw0KPiA+ICsNCj4gPiArICAgIC8vDQo+ID4gKyAgICAvLyBTdGVwIDE6IFNraXAgb3Zl ciBmb3JtYXR0ZWQgc2VjdGlvbi4NCj4gPiArICAgIC8vDQo+ID4gKyAgICBTdHJpbmcgPSAoQ0hB UjggKikgKFNtYmlvcy5SYXcgKyBTbWJpb3MuSGRyLT5MZW5ndGgpOw0KPiA+ICsNCj4gPiArICAg IC8vDQo+ID4gKyAgICAvLyBTdGVwIDI6IFNraXAgb3ZlciB1bmZvcm1hdHRlZCBzdHJpbmcgc2Vj dGlvbi4NCj4gPiArICAgIC8vDQo+ID4gKyAgICBkbyB7DQo+ID4gKyAgICAgIC8vDQo+ID4gKyAg ICAgIC8vIEVhY2ggc3RyaW5nIGlzIHRlcm1pbmF0ZWQgd2l0aCBhIE5VTEwoMDBoKSBCWVRFIGFu ZCB0aGUgc2V0cyBvZg0KPiBzdHJpbmdzDQo+ID4gKyAgICAgIC8vIGlzIHRlcm1pbmF0ZWQgd2l0 aCBhbiBhZGRpdGlvbmFsIE5VTEwoMDBoKSBCWVRFLg0KPiA+ICsgICAgICAvLw0KPiA+ICsgICAg ICBmb3IgKCA7ICpTdHJpbmcgIT0gMDsgU3RyaW5nKyspIHsNCj4gPiArICAgICAgICBpZiAoKFVJ TlROKSBTdHJpbmcgPj0gKFVJTlROKSBTbWJpb3NFbmQuUmF3IC0gc2l6ZW9mIChVSU5UOCkpIHsN Cj4gPiArICAgICAgICAgIHJldHVybiBFRklfSU5WQUxJRF9QQVJBTUVURVI7DQo+ID4gKyAgICAg ICAgfQ0KPiA+ICsgICAgICB9DQo+ID4gKw0KPiA+ICsgICAgICBpZiAoKihVSU5UOCAqKSArK1N0 cmluZyA9PSAwKSB7DQo+ID4gKyAgICAgICAgLy8NCj4gPiArICAgICAgICAvLyBQb2ludGVyIHRv IHRoZSBuZXh0IFNNQklPUyBzdHJ1Y3R1cmUuDQo+ID4gKyAgICAgICAgLy8NCj4gPiArICAgICAg ICBTbWJpb3MuUmF3ID0gKFVJTlQ4ICopICsrU3RyaW5nOw0KPiA+ICsgICAgICAgIGJyZWFrOw0K PiA+ICsgICAgICB9DQo+ID4gKyAgICB9IHdoaWxlIChUUlVFKTsNCj4gPiArICB9IHdoaWxlIChT bWJpb3MuUmF3IDwgU21iaW9zRW5kLlJhdyk7DQo+ID4gKw0KPiA+ICsgIHJldHVybiBFRklfU1VD Q0VTUzsNCj4gPiArfQ0KPiA+ICsNCj4gPiArDQo+ID4gK0lTX1NNQklPU19UQUJMRV9WQUxJRF9F TlRSWSBtSXNTbWJpb3NUYWJsZVZhbGlkW10gPSB7DQo+ID4gKyAgeyZnUGxkU21iaW9zM1RhYmxl R3VpZCwgSXNWYWxpZFNtYmlvczMwVGFibGUgfSwNCj4gPiArICB7JmdQbGRTbWJpb3NUYWJsZUd1 aWQsICBJc1ZhbGlkU21iaW9zMjBUYWJsZSB9IH07DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICBS ZXRyaWV2ZSBTTUJJT1MgZnJvbSBIb2IuDQo+ID4gKyAgQHBhcmFtIEltYWdlSGFuZGxlICAgICBN b2R1bGUncyBpbWFnZSBoYW5kbGUNCj4gPiArDQo+ID4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAg ICBTbWJpb3MgZnJvbSBIb2IgaXMgaW5zdGFsbGVkLg0KPiA+ICsgIEByZXR1cm4gRUZJX05PVF9G T1VORCAgTm90IGZvdW5kIFNtYmlvcyBmcm9tIEhvYi4NCj4gPiArICBAcmV0dmFsIE90aGVyICAg ICAgICAgIE5vIFNtYmlvcyBmcm9tIEhvYiBpcyBpbnN0YWxsZWQuDQo+ID4gKw0KPiA+ICsqKi8N Cj4gPiArRUZJX1NUQVRVUw0KPiA+ICtSZXRyaWV2ZVNtYmlvc0Zyb21Ib2IgKA0KPiA+ICsgIElO IEVGSV9IQU5ETEUgICAgICAgICAgIEltYWdlSGFuZGxlDQo+ID4gKyAgKQ0KPiA+ICt7DQo+ID4g KyAgRUZJX1NUQVRVUyAgICAgICAgICAgICAgICAgICAgU3RhdHVzOw0KPiA+ICsgIFVJTlROICAg ICAgICAgICAgICAgICAgICAgICAgIEluZGV4Ow0KPiA+ICsgIFNNQklPU19TVFJVQ1RVUkVfUE9J TlRFUiAgICAgIFNtYmlvczsNCj4gPiArICBFRklfSE9CX0dVSURfVFlQRSAgICAgICAgICAgICAq R3VpZEhvYjsNCj4gPiArICBQTERfU01CSU9TX1RBQkxFICAgICAgICAgICAgICAqU21CaW9zVGFi bGVBZHJlc3M7DQo+ID4gKyAgUExEX0dFTkVSSUNfSEVBREVSICAgICAgICAgICAgKkdlbmVyaWNI ZWFkZXI7DQo+ID4gKyAgVk9JRCAgICAgICAgICAgICAgICAgICAgICAgICAgKlRhYmxlQWRkcmVz czsNCj4gPiArICBVSU5UTiAgICAgICAgICAgICAgICAgICAgICAgICBUYWJsZU1heGltdW1TaXpl Ow0KPiA+ICsNCj4gPiArICBTdGF0dXMgPSBFRklfTk9UX0ZPVU5EOw0KPiA+ICsNCj4gPiArICBm b3IgKEluZGV4ID0gMDsgSW5kZXggPCBBUlJBWV9TSVpFIChtSXNTbWJpb3NUYWJsZVZhbGlkKTsg SW5kZXgrKykgew0KPiA+ICsgICAgR3VpZEhvYiA9IEdldEZpcnN0R3VpZEhvYiAobUlzU21iaW9z VGFibGVWYWxpZFtJbmRleF0uR3VpZCk7DQo+ID4gKyAgICBpZiAoR3VpZEhvYiA9PSBOVUxMKSB7 DQo+ID4gKyAgICAgIGNvbnRpbnVlOw0KPiA+ICsgICAgfQ0KPiA+ICsgICAgR2VuZXJpY0hlYWRl ciA9IChQTERfR0VORVJJQ19IRUFERVIgKikgR0VUX0dVSURfSE9CX0RBVEENCj4gKEd1aWRIb2Ip Ow0KPiA+ICsgICAgaWYgKChzaXplb2YgKFBMRF9HRU5FUklDX0hFQURFUikgPD0gR0VUX0dVSURf SE9CX0RBVEFfU0laRQ0KPiAoR3VpZEhvYikpICYmIChHZW5lcmljSGVhZGVyLT5MZW5ndGggPD0g R0VUX0dVSURfSE9CX0RBVEFfU0laRQ0KPiAoR3VpZEhvYikpKSB7DQo+ID4gKyAgICAgIGlmIChH ZW5lcmljSGVhZGVyLT5SZXZpc2lvbiA9PSBQTERfU01CSU9TX1RBQkxFX1JFVklTSU9OKSB7DQo+ ID4gKyAgICAgICAgLy8NCj4gPiArICAgICAgICAvLyBQTERfU01CSU9TX1RBQkxFIHN0cnVjdHVy ZSBpcyB1c2VkIHdoZW4gUmV2aXNpb24gZXF1YWxzIHRvDQo+IFBMRF9TTUJJT1NfVEFCTEVfUkVW SVNJT04NCj4gPiArICAgICAgICAvLw0KPiA+ICsgICAgICAgIFNtQmlvc1RhYmxlQWRyZXNzID0g KFBMRF9TTUJJT1NfVEFCTEUgKikgR0VUX0dVSURfSE9CX0RBVEENCj4gKEd1aWRIb2IpOw0KPiA+ ICsgICAgICAgIGlmIChHZW5lcmljSGVhZGVyLT5MZW5ndGggPj0gUExEX1NJWkVPRl9USFJPVUdI X0ZJRUxEDQo+IChQTERfU01CSU9TX1RBQkxFLCBTbUJpb3NFbnRyeVBvaW50KSkgew0KPiA+ICsg ICAgICAgICAgaWYgKG1Jc1NtYmlvc1RhYmxlVmFsaWRbSW5kZXhdLklzVmFsaWQgKChWT0lEICop DQo+IChVSU5UTiApU21CaW9zVGFibGVBZHJlc3MtPlNtQmlvc0VudHJ5UG9pbnQsICZUYWJsZUFk ZHJlc3MsDQo+ICZUYWJsZU1heGltdW1TaXplKSkgew0KPiA+ICsgICAgICAgICAgICBTbWJpb3Mu UmF3ID0gVGFibGVBZGRyZXNzOw0KPiA+ICsgICAgICAgICAgICBTdGF0dXMgPSBQYXJzZUFuZEFk ZEV4aXN0aW5nU21iaW9zVGFibGUgKEltYWdlSGFuZGxlLCBTbWJpb3MsDQo+IFRhYmxlTWF4aW11 bVNpemUpOw0KPiA+ICsgICAgICAgICAgICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ID4g KyAgICAgICAgICAgICAgREVCVUcgKChERUJVR19FUlJPUiwgIlJldHJpZXZlU21iaW9zRnJvbUhv YjogRmFpbGVkIHRvDQo+IHBhcnNlIHByZWluc3RhbGxlZCB0YWJsZXMgZnJvbSBnUGxkU21iaW9z M1RhYmxlR3VpZCBHdWlkIEhvYlxuIikpOw0KPiA+ICsgICAgICAgICAgICAgIFN0YXR1cyA9IEVG SV9VTlNVUFBPUlRFRDsNCj4gPiArICAgICAgICAgICAgfSBlbHNlIHsNCj4gPiArICAgICAgICAg ICAgICByZXR1cm4gRUZJX1NVQ0NFU1M7DQo+ID4gKyAgICAgICAgICAgIH0NCj4gPiArICAgICAg ICAgIH0NCj4gPiArICAgICAgICB9DQo+ID4gKyAgICAgIH0NCj4gPiArICAgIH0NCj4gPiArICB9 DQo+ID4gKyAgcmV0dXJuIFN0YXR1czsNCj4gPiArfQ0KPiA+ICsNCj4gPiAgLyoqDQo+ID4NCj4g PiAgICBEcml2ZXIgdG8gcHJvZHVjZSBTbWJpb3MgcHJvdG9jb2wgYW5kIHByZS1hbGxvY2F0ZSAx IHBhZ2UgZm9yIHRoZSBmaW5hbA0KPiBTTUJJT1MgdGFibGUuDQo+ID4gQEAgLTE0NTEsNSArMTc2 Niw2IEBAIFNtYmlvc0RyaXZlckVudHJ5UG9pbnQgKA0KPiA+ICAgICAgICAgICAgICAgICAgICAm bVByaXZhdGVEYXRhLlNtYmlvcw0KPiA+ICAgICAgICAgICAgICAgICAgICApOw0KPiA+DQo+ID4g LSAgcmV0dXJuIFN0YXR1czsNCj4gDQo+IFRoYXQgZG9lc24ndCBjb21waWxlIGFzIFN0YXR1cyBp cyB3cml0dGVuLCBidXQgbmV2ZXIgcmVhZC4NCj4gDQo+ID4gKyAgUmV0cmlldmVTbWJpb3NGcm9t SG9iIChJbWFnZUhhbmRsZSk7ICByZXR1cm4gRUZJX1NVQ0NFU1M7DQo+ID4gIH0NCj4gPiBkaWZm IC0tZ2l0IGEvTWRlTW9kdWxlUGtnL1VuaXZlcnNhbC9TbWJpb3NEeGUvU21iaW9zRHhlLmgNCj4g PiBiL01kZU1vZHVsZVBrZy9Vbml2ZXJzYWwvU21iaW9zRHhlL1NtYmlvc0R4ZS5oDQo+ID4gaW5k ZXggZjk3Yzg1YWU0MC4uYTI2MGNmNjk1ZSAxMDA2NDQNCj4gPiAtLS0gYS9NZGVNb2R1bGVQa2cv VW5pdmVyc2FsL1NtYmlvc0R4ZS9TbWJpb3NEeGUuaA0KPiA+ICsrKyBiL01kZU1vZHVsZVBrZy9V bml2ZXJzYWwvU21iaW9zRHhlL1NtYmlvc0R4ZS5oDQo+ID4gQEAgLTEsNyArMSw3IEBADQo+ID4g IC8qKiBAZmlsZQ0KPiA+ICAgIFRoaXMgY29kZSBzdXBwb3J0cyB0aGUgaW1wbGVtZW50YXRpb24g b2YgdGhlIFNtYmlvcyBwcm90b2NvbA0KPiA+DQo+ID4gLUNvcHlyaWdodCAoYykgMjAwOSAtIDIw MTgsIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzDQo+ID4gcmVzZXJ2ZWQuPEJSPg0KPiA+ ICtDb3B5cmlnaHQgKGMpIDIwMDkgLSAyMDIxLCBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0 cw0KPiA+ICtyZXNlcnZlZC48QlI+DQo+ID4gIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0Qt Mi1DbGF1c2UtUGF0ZW50DQo+ID4NCj4gPiAgKiovDQo+ID4gQEAgLTI0LDYgKzI0LDggQEAgU1BE WC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0yLUNsYXVzZS1QYXRlbnQNCj4gPiAjaW5jbHVkZSA8 TGlicmFyeS9NZW1vcnlBbGxvY2F0aW9uTGliLmg+ICAjaW5jbHVkZQ0KPiA+IDxMaWJyYXJ5L1Vl ZmlCb290U2VydmljZXNUYWJsZUxpYi5oPg0KPiA+ICAjaW5jbHVkZSA8TGlicmFyeS9QY2RMaWIu aD4NCj4gPiArI2luY2x1ZGUgPExpYnJhcnkvSG9iTGliLmg+DQo+ID4gKyNpbmNsdWRlIDxVbml2 ZXJzYWxQYXlsb2FkL1NtYmlvc1RhYmxlLmg+DQo+ID4NCj4gPiAgI2RlZmluZSBTTUJJT1NfSU5T VEFOQ0VfU0lHTkFUVVJFIFNJR05BVFVSRV8zMiAoJ1MnLCAnQicsICdpJywgJ3MnKQ0KPiA+IHR5 cGVkZWYgc3RydWN0IHsgZGlmZiAtLWdpdA0KPiA+IGEvTWRlTW9kdWxlUGtnL1VuaXZlcnNhbC9T bWJpb3NEeGUvU21iaW9zRHhlLmluZg0KPiA+IGIvTWRlTW9kdWxlUGtnL1VuaXZlcnNhbC9TbWJp b3NEeGUvU21iaW9zRHhlLmluZg0KPiA+IGluZGV4IGY2YzAzNmUxZGMuLjYzZjQ2ODkzNmQgMTAw NjQ0DQo+ID4gLS0tIGEvTWRlTW9kdWxlUGtnL1VuaXZlcnNhbC9TbWJpb3NEeGUvU21iaW9zRHhl LmluZg0KPiA+ICsrKyBiL01kZU1vZHVsZVBrZy9Vbml2ZXJzYWwvU21iaW9zRHhlL1NtYmlvc0R4 ZS5pbmYNCj4gPiBAQCAtMSw3ICsxLDcgQEANCj4gPiAgIyMgQGZpbGUNCj4gPiAgIyBUaGlzIGRy aXZlciBpbml0aWFsaXplcyBhbmQgaW5zdGFsbHMgdGhlIFNNQklPUyBwcm90b2NvbCwgY29uc3Ry dWN0cyBTTUJJT1MNCj4gdGFibGUgaW50byBzeXN0ZW0gY29uZmlndXJhdGlvbiB0YWJsZS4NCj4g PiAgIw0KPiA+IC0jIENvcHlyaWdodCAoYykgMjAwOSAtIDIwMTgsIEludGVsIENvcnBvcmF0aW9u LiBBbGwgcmlnaHRzDQo+ID4gcmVzZXJ2ZWQuPEJSPg0KPiA+ICsjIENvcHlyaWdodCAoYykgMjAw OSAtIDIwMjEsIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzDQo+ID4gK3Jlc2VydmVkLjxC Uj4NCj4gPiAgIw0KPiA+ICAjICBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTItQ2xhdXNl LVBhdGVudCAgIyBAQCAtNDEsNiArNDEsNyBAQA0KPiA+ICAgIFVlZmlEcml2ZXJFbnRyeVBvaW50 DQo+ID4gICAgRGVidWdMaWINCj4gPiAgICBQY2RMaWINCj4gPiArICBIb2JMaWINCj4gPg0KPiA+ ICBbUHJvdG9jb2xzXQ0KPiA+ICAgIGdFZmlTbWJpb3NQcm90b2NvbEd1aWQgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIyMgUFJPRFVDRVMNCj4gPiBAQCAtNDgsNiArNDksOCBAQA0KPiA+ICBb R3VpZHNdDQo+ID4gICAgZ0VmaVNtYmlvc1RhYmxlR3VpZCAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAjIyBTT01FVElNRVNfUFJPRFVDRVMgIyMNCj4gU3lzdGVtVGFibGUNCj4gPiAgICBn RWZpU21iaW9zM1RhYmxlR3VpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMjIFNPTUVU SU1FU19QUk9EVUNFUyAjIw0KPiBTeXN0ZW1UYWJsZQ0KPiA+ICsgIGdQbGRTbWJpb3MzVGFibGVH dWlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyMgQ09OU1VNRVMgICAgICAgICAgICMj IEhPQg0KPiA+ICsgIGdQbGRTbWJpb3NUYWJsZUd1aWQgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIyMgU09NRVRJTUVTX0NPTlNVTUVTICMjDQo+IEhPQg0KPiA+DQo+ID4gIFtQY2RdDQo+ ID4gICAgZ0VmaU1kZU1vZHVsZVBrZ1Rva2VuU3BhY2VHdWlkLlBjZFNtYmlvc1ZlcnNpb24gICAj IyBDT05TVU1FUw0KPiA+IC0tDQo+ID4gMi4zMC4wLndpbmRvd3MuMg0KPiA+DQo=