From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) by mx.groups.io with SMTP id smtpd.web10.6060.1602815483878382318 for ; Thu, 15 Oct 2020 19:31:24 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@intel.onmicrosoft.com header.s=selector2-intel-onmicrosoft-com header.b=gya8tKx6; spf=pass (domain: intel.com, ip: 192.55.52.43, mailfrom: jiewen.yao@intel.com) IronPort-SDR: kNrvjJyg0gCoiTdeuEh5UgLnFxkXm1LbO+CPjRya+fycdvv3l6fBd+118myGFHNAvc0E2eVsOg NLcW55kmvgAw== X-IronPort-AV: E=McAfee;i="6000,8403,9775"; a="251201770" X-IronPort-AV: E=Sophos;i="5.77,381,1596524400"; d="scan'208";a="251201770" X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga008.jf.intel.com ([10.7.209.65]) by fmsmga105.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 15 Oct 2020 19:31:21 -0700 IronPort-SDR: 2uXXnRmpvG4HDJH1ouxdhTOxftUJUPTa+DAysJL8TiWPEaNecRc5x3noITCZnYsfBUukrKkh7f nOsO6FCorB/Q== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.77,381,1596524400"; d="scan'208";a="347050828" Received: from orsmsx605.amr.corp.intel.com ([10.22.229.18]) by orsmga008.jf.intel.com with ESMTP; 15 Oct 2020 19:31:21 -0700 Received: from orsmsx601.amr.corp.intel.com (10.22.229.14) by ORSMSX605.amr.corp.intel.com (10.22.229.18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1713.5; Thu, 15 Oct 2020 19:31:20 -0700 Received: from ORSEDG601.ED.cps.intel.com (10.7.248.6) by orsmsx601.amr.corp.intel.com (10.22.229.14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1713.5 via Frontend Transport; Thu, 15 Oct 2020 19:31:20 -0700 Received: from NAM11-BN8-obe.outbound.protection.outlook.com (104.47.58.169) by edgegateway.intel.com (134.134.137.102) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.1713.5; Thu, 15 Oct 2020 19:31:17 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=h1IGqdhZdK/lbPcLo5LPXCThh6Kh4uINMl0zEF6FDlVaduSqljlw7JZwqFARWBd9AQZpoDEGFp1GLzf1J4oycWdYZzqCQL122KcySy/qKE/TvFLXe6ygbstv0YxHzPvSghy4sG9kNvp8pg1FaaJRfEZ263D0BAYCepfOTbwaenaQ0Z2z5OLvciC7m3MMOU6uYsZnscAGeTsbbBYABno5Q54vXAI+OB9rVwzEYgRR4AZfVBG+JbYP7wzuwEPOy4OrYgmYySIWiDeoHa06Zrf4FO2pfFoxyR1j5VIA14c2wOQsmh1OEkuzTzzrUKnX7y2MgJS6FpotK4jgiaoLpdV8ow== 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=PCHPNo6sCwobggn8UwvXt1u4wU78fjjhlW4UtefP4/I=; b=gzD2CDMcUkHWHlJN5C3bf8LZHshDmqAE9xf/zEH0KOaDfSSZKfMVWdEyiOUTWepucCR6c+ztLdBIXvfkzrinvqnGbvV4w7djTTQXr7dPBdf89l9HN4UetRa/Np6MXwULTRxgsUriFiqUx/nXF/hVTdpKmD8Tgi70H8fW6T47FmUCIAYBAur8oeYk6w3QqS0BNDynuO/tAhhIye4yJQ1jvS+hjQDRzWczJ2LVKBHKYh1tt8VIMC3XaWV9Y58xdStbXouyqTmCX1FUMFBt5T0nX1n82xJgiMhs+tD4Kuhy4NUXsSDwKPplKTjpGBq5OOQ8rgTJtmEX19ofbQLaA/GuzQ== 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=PCHPNo6sCwobggn8UwvXt1u4wU78fjjhlW4UtefP4/I=; b=gya8tKx6fxnRKhVlqW+Wl2yrq0Q+Nd7KPaBqK+jx/7Bl9g0wx87iFyjD99/83Mr7OVAzTHDCrVV6FXV/RV0be7UA6/0AUVIYAbiS4QdkcyPP/CzNU/d+FH911EHRc6gcNL9Fuq996Korhqxo8RAftOd+afusw7z4wgCILzjPc/U= Received: from CY4PR11MB1288.namprd11.prod.outlook.com (2603:10b6:903:23::8) by CY4PR11MB1813.namprd11.prod.outlook.com (2603:10b6:903:127::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3455.22; Fri, 16 Oct 2020 02:30:57 +0000 Received: from CY4PR11MB1288.namprd11.prod.outlook.com ([fe80::8948:caa4:ca1a:23ac]) by CY4PR11MB1288.namprd11.prod.outlook.com ([fe80::8948:caa4:ca1a:23ac%10]) with mapi id 15.20.3477.020; Fri, 16 Oct 2020 02:30:57 +0000 From: "Yao, Jiewen" To: "Lee, Terry" , "devel@edk2.groups.io" , "stefanb@linux.ibm.com" , "lersek@redhat.com" , "Gao, Zhichao" CC: "Wang, Jian J" , "Zhang, Chao B" , =?utf-8?B?TWFyYy1BbmRyw6kgTHVyZWF1?= Subject: Re: [edk2-devel] [PATCH] SecurityPkg/Tcg2PhysicalPresenceLib: Fix incorrect TCG VER comparision Thread-Topic: [edk2-devel] [PATCH] SecurityPkg/Tcg2PhysicalPresenceLib: Fix incorrect TCG VER comparision Thread-Index: AQHWVZtB1WiaOW7xZkeX1UsjG9Ewyaj/BMIAgAD2pQCAAFN4gIAAkmXAgJicICCAAIkyYIAAFRPQgAAAtyA= Date: Fri, 16 Oct 2020 02:30:57 +0000 Message-ID: References: <20200709024647.31672-1-zhichao.gao@intel.com> <280267d2-3d61-04a6-26da-96fd46ad5439@redhat.com> <1620688EE0DC3449.7755@groups.io> <6db37279-ddd0-4adf-6439-403ac90dd1e9@linux.ibm.com> In-Reply-To: Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-version: 11.5.1.3 dlp-product: dlpe-windows dlp-reaction: no-action authentication-results: hpe.com; dkim=none (message not signed) header.d=none;hpe.com; dmarc=none action=none header.from=intel.com; x-originating-ip: [101.80.124.211] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: a3d8b039-9071-4c6d-f6f5-08d8717b83c9 x-ms-traffictypediagnostic: CY4PR11MB1813: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:3276; x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: FlGfjF3KplbmSCrD7eIIuIIS3OddL18EcMgc7J9AbpqWViXn73L8y3LVhrGrC/j/pQV8pghqADZ742PBGht8Jd30mMOZ0rK+g0hU/+5aO3N9DciVsQsVEtLHMUYN06b5KjDL7BNYuFanyH2W18VO7uoV8dZSPl9tgso1eq25oZFeOY0fc+A5SOYpTH4rZ/tgu7DTPFCDpNZF5wgrtRj2tQQLMAwFQu8pXU4T7k68dAtpKRSNb9ntxy0bQ/fWrhFtEc8oI/LSB2h86rgcPK+mvJaf55kl2a27B1uJ+y2nmAYZxGAhizu0QJ3IiCO2DMnxgsFUVj9iw7mbiy5V7fEGVtvTJpkn//nZEtjLLrMeXg3VAs+n5zqeZ2TUNpxGzdRZgIrP6KiC0jCJjvmuD/F43g== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CY4PR11MB1288.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(4636009)(396003)(366004)(376002)(346002)(39860400002)(136003)(478600001)(15650500001)(110136005)(316002)(55016002)(26005)(76116006)(296002)(54906003)(52536014)(53546011)(83380400001)(8676002)(33656002)(6506007)(966005)(186003)(6636002)(4326008)(66946007)(86362001)(66446008)(64756008)(5660300002)(66476007)(66556008)(19627235002)(7696005)(2906002)(9686003)(71200400001)(8936002);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata: aHbCn4VKgKXUxI7pQOCcUjV47NmMxcSvLQX56e2BOVELU7vx/LZaCSuobDz1G0egBFSj/Yqcr0y3TG5Cxzvxh9YjjQc1xKEPHY8GXU3fYgwkKQrl3FUijEptSljT2oc2TTF+/aK/Hl4LPmGxmuNsduG8S4F8qvmv1B1uWDhfgAMC7ITpQUC3Bx2IJNmgZXpEqsDLUv1BJpjBH9F37zyyMwVxVXJjGS6jApZYp551uQVY/GKrwX3sLKpgfiGgEfDu5JgTUzYP9U8S/FRvgvjlAjApFwKryEsmHdjuwoePzvGqTiboX7UxCTBglBJii+rHTUYGZFztEIiuzJ+MY4h1lJRLCI986qjm72pnjDkd78XRq4HS144tt5bG5Q3kkKVJbKqrjS7ydZ26N+SzJiNXWnM+oDOVTJ1BgWXxEiKfRniKhJt2QupseD8Kb97rFnCEsXOlbN5D70ytlK1aH6dXr358I9wr4ydKeAVf41TGzTVoE7XVdQWSHBf9LFv1OO1QyoLvLvaFlMqze19aiy+6UrC2wVUYC4+KNWkGlw7B4jP5dcHZIirSXtgZ5oexItmZfSsheQUm2MTAonPOIiCc0a8WlmX6AySSniQ4mE9nrD/0K85GTQFK/F8GkfedDYsSmccQxFPxArbZVFOCFKhKRg== MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: CY4PR11MB1288.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: a3d8b039-9071-4c6d-f6f5-08d8717b83c9 X-MS-Exchange-CrossTenant-originalarrivaltime: 16 Oct 2020 02:30:57.8322 (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: Cc5t9oLwL/G0clMR56NH0D2ALAPRln0Hmu1M1GxvoZHVtVFXPHeWT3+/jWDiK+jgh/XhoHwz8tCtv7Jvg6ZVFg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY4PR11MB1813 Return-Path: jiewen.yao@intel.com X-OriginatorOrg: intel.com Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 VGhhbmtzIFRlcnJ5Lg0KSSB0ZW5kIHRvIGdpdmUgUi1CLiBJIHJlYWQgdGhlIGNvZGUgaXQgc2Vl bXMgbm8gaW1wYWN0LiANCg0KV291bGQgeW91IHBsZWFzZSBjb25maXJtIHlvdSBoYXZlIHRlc3Rl ZCBib3RoIFBQMS4yIGFuZCBQUDEuMyBjb25maWd1cmF0aW9uLCB3aXRoIHdpbmRvd3MgV0hDSyB0 ZXN0IHBhc3M/DQoNClRoYW5rIHlvdQ0KWWFvIEppZXdlbg0KDQo+IC0tLS0tT3JpZ2luYWwgTWVz c2FnZS0tLS0tDQo+IEZyb206IExlZSwgVGVycnkgPHRlcnJ5LmxlZUBocGUuY29tPg0KPiBTZW50 OiBGcmlkYXksIE9jdG9iZXIgMTYsIDIwMjAgMTA6MjUgQU0NCj4gVG86IFlhbywgSmlld2VuIDxq aWV3ZW4ueWFvQGludGVsLmNvbT47IGRldmVsQGVkazIuZ3JvdXBzLmlvOw0KPiBzdGVmYW5iQGxp bnV4LmlibS5jb207IGxlcnNla0ByZWRoYXQuY29tOyBHYW8sIFpoaWNoYW8NCj4gPHpoaWNoYW8u Z2FvQGludGVsLmNvbT4NCj4gQ2M6IFdhbmcsIEppYW4gSiA8amlhbi5qLndhbmdAaW50ZWwuY29t PjsgWmhhbmcsIENoYW8gQg0KPiA8Y2hhby5iLnpoYW5nQGludGVsLmNvbT47IE1hcmMtQW5kcsOp IEx1cmVhdQ0KPiA8bWFyY2FuZHJlLmx1cmVhdUByZWRoYXQuY29tPg0KPiBTdWJqZWN0OiBSRTog W2VkazItZGV2ZWxdIFtQQVRDSF0gU2VjdXJpdHlQa2cvVGNnMlBoeXNpY2FsUHJlc2VuY2VMaWI6 IEZpeA0KPiBpbmNvcnJlY3QgVENHIFZFUiBjb21wYXJpc2lvbg0KPiANCj4gSmlld2VuLA0KPiAN Cj4gSSB0ZXN0ZWQgdGhpcyBwYXRjaCBvbiBIUEUgU3VwZXJkb21lIEZsZXggd2l0aCBib3RoIExp bnV4IGFuZCBXaW5kb3dzLg0KPiANCj4gVGVycnkNCj4gDQo+IC0tLS0tT3JpZ2luYWwgTWVzc2Fn ZS0tLS0tDQo+IEZyb206IFlhbywgSmlld2VuIFttYWlsdG86amlld2VuLnlhb0BpbnRlbC5jb21d DQo+IFNlbnQ6IFRodXJzZGF5LCBPY3RvYmVyIDE1LCAyMDIwIDY6MDkgUE0NCj4gVG86IExlZSwg VGVycnkgPHRlcnJ5LmxlZUBocGUuY29tPjsgZGV2ZWxAZWRrMi5ncm91cHMuaW87DQo+IHN0ZWZh bmJAbGludXguaWJtLmNvbTsgbGVyc2VrQHJlZGhhdC5jb207IEdhbywgWmhpY2hhbw0KPiA8emhp Y2hhby5nYW9AaW50ZWwuY29tPg0KPiBDYzogV2FuZywgSmlhbiBKIDxqaWFuLmoud2FuZ0BpbnRl bC5jb20+OyBaaGFuZywgQ2hhbyBCDQo+IDxjaGFvLmIuemhhbmdAaW50ZWwuY29tPjsgTWFyYy1B bmRyw6kgTHVyZWF1DQo+IDxtYXJjYW5kcmUubHVyZWF1QHJlZGhhdC5jb20+DQo+IFN1YmplY3Q6 IFJFOiBbZWRrMi1kZXZlbF0gW1BBVENIXSBTZWN1cml0eVBrZy9UY2cyUGh5c2ljYWxQcmVzZW5j ZUxpYjogRml4DQo+IGluY29ycmVjdCBUQ0cgVkVSIGNvbXBhcmlzaW9uDQo+IA0KPiBIZWxsbw0K PiBJcyB0aGVyZSBhbnkgb25lIGNhbiBzaGFyZSB0aGUgaW5mb3JtYXRpb24gb24gd2hhdCB0ZXN0 IGhhcyBiZWVuIGRvbmUgZm9yDQo+IHRoaXMgPw0KPiANCj4gVGhhbmsgeW91DQo+IFlhbyBKaWV3 ZW4NCj4gDQo+ID4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gPiBGcm9tOiBMZWUsIFRl cnJ5IDx0ZXJyeS5sZWVAaHBlLmNvbT4NCj4gPiBTZW50OiBGcmlkYXksIE9jdG9iZXIgMTYsIDIw MjAgMTI6NTkgQU0NCj4gPiBUbzogZGV2ZWxAZWRrMi5ncm91cHMuaW87IHN0ZWZhbmJAbGludXgu aWJtLmNvbTsgbGVyc2VrQHJlZGhhdC5jb207DQo+ID4gR2FvLCBaaGljaGFvIDx6aGljaGFvLmdh b0BpbnRlbC5jb20+DQo+ID4gQ2M6IFlhbywgSmlld2VuIDxqaWV3ZW4ueWFvQGludGVsLmNvbT47 IFdhbmcsIEppYW4gSg0KPiA+IDxqaWFuLmoud2FuZ0BpbnRlbC5jb20+OyBaaGFuZywgQ2hhbyBC IDxjaGFvLmIuemhhbmdAaW50ZWwuY29tPjsgTWFyYy0NCj4gPiBBbmRyw6kgTHVyZWF1IDxtYXJj YW5kcmUubHVyZWF1QHJlZGhhdC5jb20+DQo+ID4gU3ViamVjdDogUkU6IFtlZGsyLWRldmVsXSBb UEFUQ0hdIFNlY3VyaXR5UGtnL1RjZzJQaHlzaWNhbFByZXNlbmNlTGliOg0KPiA+IEZpeCBpbmNv cnJlY3QgVENHIFZFUiBjb21wYXJpc2lvbg0KPiA+DQo+ID4gQ291bGQgdGhlIHBhY2thZ2UgbWFp bnRhaW5lciBtZXJnZSB0aGlzIHBhdGNoPyAgVGhhbmtzLg0KPiA+DQo+ID4gVGVycnkNCj4gPg0K PiA+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID4gRnJvbTogU3RlZmFuIEJlcmdlciBb bWFpbHRvOnN0ZWZhbmJAbGludXguaWJtLmNvbV0NCj4gPiBTZW50OiBGcmlkYXksIEp1bHkgMTAs IDIwMjAgNzoyNyBBTQ0KPiA+IFRvOiBkZXZlbEBlZGsyLmdyb3Vwcy5pbzsgbGVyc2VrQHJlZGhh dC5jb207IEdhbywgWmhpY2hhbw0KPiA+IDx6aGljaGFvLmdhb0BpbnRlbC5jb20+DQo+ID4gQ2M6 IExlZSwgVGVycnkgPHRlcnJ5LmxlZUBocGUuY29tPjsgWWFvLCBKaWV3ZW4NCj4gPiA8amlld2Vu Lnlhb0BpbnRlbC5jb20+OyBXYW5nLCBKaWFuIEogPGppYW4uai53YW5nQGludGVsLmNvbT47IFpo YW5nLA0KPiA+IENoYW8gQiA8Y2hhby5iLnpoYW5nQGludGVsLmNvbT47IE1hcmMtQW5kcsOpIEx1 cmVhdQ0KPiA+IDxtYXJjYW5kcmUubHVyZWF1QHJlZGhhdC5jb20+DQo+ID4gU3ViamVjdDogUmU6 IFtlZGsyLWRldmVsXSBbUEFUQ0hdIFNlY3VyaXR5UGtnL1RjZzJQaHlzaWNhbFByZXNlbmNlTGli Og0KPiA+IEZpeCBpbmNvcnJlY3QgVENHIFZFUiBjb21wYXJpc2lvbg0KPiA+DQo+ID4gT24gNy8x MC8yMCA5OjUzIEFNLCBTdGVmYW4gQmVyZ2VyIHdyb3RlOg0KPiA+ID4gT24gNy8xMC8yMCAxOjQz IEFNLCBMYXN6bG8gRXJzZWsgd3JvdGU6DQo+ID4gPj4gKCtNYXJjLUFuZHLDqSwgU3RlZmFuKQ0K PiA+ID4+DQo+ID4gPj4gT24gMDcvMTAvMjAgMDI6NDQsIEdhbywgWmhpY2hhbyB3cm90ZToNCj4g PiA+Pj4gVGhpcyBidWcgaXMgbm90IG9iZXNlcnZlZCBieSBtZS4gQnV0IEkgdmlldyB0aGUgY29k ZS4gVGhlDQo+ID4gPj4+IGNvbmRpdGlvbiBpcyBpbmNvcnJlY3QgYW5kIGl0IHdvdWxkIGFmZmVj dCB0aGUgVENHIG9wZXJhdGlvbjoNCj4gPiA+Pj4gICAgICBpZiAoIW1Jc1RjZzJQUFZlckxvd2Vy VGhhbl8xXzMpIHsNCj4gPiA+Pj4gICAgICAgICAgaWYgKE9wZXJhdGlvblJlcXVlc3QgPA0KPiA+ ID4+PiBUQ0cyX1BIWVNJQ0FMX1BSRVNFTkNFX1ZFTkRPUl9TUEVDSUZJQ19PUEVSQVRJT04pIHsN Cj4gPiA+Pj4gICAgICAgICAgICAvLw0KPiA+ID4+PiAgICAgICAgICAgIC8vIFRDRzIgUFAxLjMg c3BlYyBkZWZpbmVkIG9wZXJhdGlvbnMgdGhhdCBhcmUgcmVzZXJ2ZWQNCj4gPiA+Pj4gb3IgdW4t aW1wbGVtZW50ZWQNCj4gPiA+Pj4gICAgICAgICAgICAvLw0KPiA+ID4+PiAgICAgICAgICAgIHJl dHVybiBUQ0dfUFBfR0VUX1VTRVJfQ09ORklSTUFUSU9OX05PVF9JTVBMRU1FTlRFRDsNCj4gPiA+ Pj4gICAgICAgICAgfQ0KPiA+ID4+PiAgICAgICAgfSBlbHNlIHsNCj4gPiA+Pj4gICAgICAgICAv Lw0KPiA+ID4+PiAgICAgICAgIC8vIFRDRyBQUCBsb3dlciB0aGFuIDEuMy4gKDEuMCwgMS4xLCAx LjIpDQo+ID4gPj4+ICAgICAgICAgLy8NCj4gPiA+Pj4gICAgICAgICBpZiAoT3BlcmF0aW9uUmVx dWVzdCA8PQ0KPiA+ID4+PiBUQ0cyX1BIWVNJQ0FMX1BSRVNFTkNFX05PX0FDVElPTl9NQVgpIHsN Cj4gPiA+Pj4gICAgICAgICAgIFJlcXVlc3RDb25maXJtZWQgPSBUUlVFOw0KPiA+ID4+PiAgICAg ICAgIH0gZWxzZSBpZiAoT3BlcmF0aW9uUmVxdWVzdCA8DQo+ID4gPj4+IFRDRzJfUEhZU0lDQUxf UFJFU0VOQ0VfVkVORE9SX1NQRUNJRklDX09QRVJBVElPTikgew0KPiA+ID4+PiAgICAgICAgICAg cmV0dXJuIFRDR19QUF9HRVRfVVNFUl9DT05GSVJNQVRJT05fTk9UX0lNUExFTUVOVEVEOw0KPiA+ ID4+PiAgICAgICAgIH0NCj4gPiA+Pj4gICAgICAgIH0NCj4gPiA+Pj4NCj4gPiA+PiBJJ3ZlIGZv dW5kIHRoYXQgY29kZSBteXNlbGYsIGJ1dCBJJ20gbm90IGZhbWlsaWFyIGVub3VnaCB3aXRoIFRQ TQ0KPiA+ID4+IFBQSSBzdHVmZiB0byB1bmRlcnN0YW5kIGltbWVkaWF0ZWx5IHRoZSBlZmZlY3Rz IG9mIHRoaXMgY2hhbmdlLiBJDQo+ID4gPj4gY2FuIHNlZSB0aGF0IHdoZXJlIHdlIHVzZWQgdG8g cmV0dXJuDQo+ID4gPj4gVENHX1BQX0dFVF9VU0VSX0NPTkZJUk1BVElPTl9OT1RfSU1QTEVNRU5U RUQgYmVmb3JlLCB3ZQ0KPiA+IGNvdWxkIG5vdw0KPiA+ID4+IGFzc2lnbiAiUmVxdWVzdENvbmZp cm1lZCA9IFRSVUUiLCBhbmQgdmljZSB2ZXJzYSwgZHVlIHRvDQo+ID4gPj4gIm1Jc1RjZzJQUFZl ckxvd2VyVGhhbl8xXzMiIGJlaW5nIHBvdGVudGlhbGx5IGludmVydGVkLg0KPiA+ID4+DQo+ID4g Pj4gQnV0IHdoYXQgZG9lcyB0aGF0ICptZWFuKj8gV2hhdCBpcyB0aGUgYmVoYXZpb3JhbCBjaGFu Z2UgdGhhdCBodW1hbg0KPiA+ID4+IGVuZC11c2Vycywgb3Igc29mdHdhcmUgY29tcG9uZW50cywg d2lsbCBleHBlcmllbmNlPw0KPiA+ID4NCj4gPiA+DQo+ID4gPiBUaGUgYWJvdmUgY29kZSBzbmlw cGVkIGlzIGxvY2F0ZWQgaW4gYSBkZWZhdWx0IGJyYW5jaCBvZiBhIGxhcmdlDQo+ID4gPiBzd2l0 Y2ggc3RhdGVtZW50IHRoYXQgaGFuZGxlcyBtb3N0IG9mIHRoZSBjb21tb24gUFBJIG9wZXJhdGlv bnMNCj4gPiA+IGluZGVwZW5kZW50IG9mIHRoaXMgY2hhbmdlLCBzbyB0aGF0IGF0IGxlYXN0IGlz IGdvb2QuDQo+ID4gPg0KPiA+ID4gSSB3b3VsZCBzYXkgdGhhdCBpbiB0aGUgd29yc3QgY2FzZSBz b21lIG9mIHRoZSBvcGVyYXRpb25zIG5vdA0KPiA+ID4gb3RoZXJ3aXNlIGhhbmRsZWQgbWF5IGhh dmUgbWlzdGFrZW5seSBmYWlsZWQgb3IgY291bGQgaGF2ZSBiZWVuDQo+ID4gPiBleGVjdXRlZCB3 aXRob3V0IHVzZXIgY29uZmlybWF0aW9uL2ludGVyYWN0aW9uLiBPbiBMaW51eCBhdCBsZWFzdA0K PiA+ID4gUFBJIHJlcXVlc3RzIGNhbiBvbmx5IGJlIHNlbnQgYnkgcm9vdC4NCj4gPg0KPiA+DQo+ ID4gSSBhbSBydW5uaW5nIGEgc29tZXdoYXQgZGF0ZWQgdmVyc2lvbiBvZiBlZGsyIChGZWRvcmEg MzEpLiBUaGUNCj4gPiBvcGVyYXRpb25zIGFkdmVydGlzZWQgYXJlOiAwLDUsMTQsMjEsMjIsMjMs MjQsMzMsOTYsOTcuIEFsbCBvZiB0aGVzZQ0KPiA+IGFyZSBpbmRpdmlkdWFsbHkgaGFuZGxlZCBp biB0aGUgc3dpdGNoIHN0YXRlbWVudCwgc28gdGhlcmUgc2hvdWxkIG5vDQo+ID4gYmUgYW55IGlt cGFjdC4gSSBhbSBjdXJyZW50bHkgbm90IGF3YXJlIG9mIHdoZXRoZXIgdGhpcyBsaXN0IGNhbiBi ZQ0KPiA+IGV4dGVuZGVkIHdpdGggc29tZSBzb3J0IG9mIG1vZHVsZS4NCj4gPg0KPiA+DQo+ID4g Pg0KPiA+ID4NCj4gPiA+Pg0KPiA+ID4+IFRoYW5rcw0KPiA+ID4+IExhc3psbw0KPiA+ID4+DQo+ ID4gPj4+IFNvIEkgdGhpbmsgaXQgc2hvdWxkIGJlIGZpeGVkLg0KPiA+ID4+Pg0KPiA+ID4+PiBU aGFua3MsDQo+ID4gPj4+IFpoaWNoYW8NCj4gPiA+Pj4NCj4gPiA+Pj4+IC0tLS0tT3JpZ2luYWwg TWVzc2FnZS0tLS0tDQo+ID4gPj4+PiBGcm9tOiBkZXZlbEBlZGsyLmdyb3Vwcy5pbyA8ZGV2ZWxA ZWRrMi5ncm91cHMuaW8+IE9uIEJlaGFsZiBPZg0KPiA+ID4+Pj4gTGFzemxvIEVyc2VrDQo+ID4g Pj4+PiBTZW50OiBUaHVyc2RheSwgSnVseSA5LCAyMDIwIDY6MDIgUE0NCj4gPiA+Pj4+IFRvOiBk ZXZlbEBlZGsyLmdyb3Vwcy5pbzsgR2FvLCBaaGljaGFvIDx6aGljaGFvLmdhb0BpbnRlbC5jb20+ DQo+ID4gPj4+PiBDYzogVGVycnkgTGVlIDx0ZXJyeS5sZWVAaHBlLmNvbT47IFlhbywgSmlld2Vu DQo+ID4gPj4+PiA8amlld2VuLnlhb0BpbnRlbC5jb20+OyBXYW5nLCBKaWFuIEogPGppYW4uai53 YW5nQGludGVsLmNvbT47DQo+ID4gPj4+PiBaaGFuZywgQ2hhbyBCIDxjaGFvLmIuemhhbmdAaW50 ZWwuY29tPg0KPiA+ID4+Pj4gU3ViamVjdDogUmU6IFtlZGsyLWRldmVsXSBbUEFUQ0hdDQo+ID4g Pj4+PiBTZWN1cml0eVBrZy9UY2cyUGh5c2ljYWxQcmVzZW5jZUxpYjogRml4IGluY29ycmVjdCBU Q0cgVkVSDQo+ID4gPj4+PiBjb21wYXJpc2lvbg0KPiA+ID4+Pj4NCj4gPiA+Pj4+IE9uIDA3LzA5 LzIwIDA0OjQ2LCBHYW8sIFpoaWNoYW8gd3JvdGU6DQo+ID4gPj4+Pj4gRnJvbTogVGVycnkgTGVl IDx0ZXJyeS5sZWVAaHBlLmNvbT4NCj4gPiA+Pj4+Pg0KPiA+ID4+Pj4+IFJFRjoNCj4gPiA+Pj4+ PiBodHRwczovL3VybGRlZmVuc2UucHJvb2Zwb2ludC5jb20vdjIvdXJsP3U9aHR0cHMtM0FfX2J1 Z3ppbGxhLnRpDQo+ID4gPj4+Pj4gYW4NCj4gPiA+Pj4+PiBvY29yZS5vcmdfc2hvdy01RmJ1Zy5j Z2ktM0ZpZC0NCj4gPiAzRDI2OTcmZD1Ed0lEYVEmYz1DNWI4elJRTzFtaUdtQmVWWjINCj4gPiA+ Pj4+PiBMRldnJnI9SmxjMEp4cjYyMEVaLQ0KPiA+IENwcHlyakdvdG54SDlEclQwS3Z3Y0xqZWta OURvdyZtPVdQdjN2bjVWRWVsUkMNCj4gPiA+Pj4+PiBzLQ0KPiA+DQo+IFc4cGZOTTAwd01PZnBL QmVzWG5BaFJmeWxGN2cmcz1pRlVZdGhVQ2ZITGVlUUF2cl9PaFRQSFRpQTloWnZ3DQo+ID4gNDgN Cj4gPiA+Pj4+PiBCajhZaFhoUUFJJmU9DQo+ID4gPj4+Pj4NCj4gPiA+Pj4+PiBUY2cyUGh5c2lj YWxQcmVzZW5jZUxpYkNvbnN0cnVjdG9yIHNldCB0aGUgbW9kdWxlIHZhcmlhYmxlDQo+ID4gPj4+ Pj4gbUlzVGNnMlBQVmVyTG93ZXJUaGFuXzFfMyB3aXRoIGluY29ycmVjdCBUQ0cgdmVyc2lvbg0K PiBjb21wYXJpc2lvbi4NCj4gPiA+Pj4+Pg0KPiA+ID4+Pj4+IENjOiBKaWV3ZW4gWWFvIDxqaWV3 ZW4ueWFvQGludGVsLmNvbT4NCj4gPiA+Pj4+PiBDYzogSmlhbiBKIFdhbmcgPGppYW4uai53YW5n QGludGVsLmNvbT4NCj4gPiA+Pj4+PiBDYzogQ2hhbyBaaGFuZyA8Y2hhby5iLnpoYW5nQGludGVs LmNvbT4NCj4gPiA+Pj4+PiBTaWduZWQtb2ZmLWJ5OiBaaGljaGFvIEdhbyA8emhpY2hhby5nYW9A aW50ZWwuY29tPg0KPiA+ID4+Pj4+IC0tLQ0KPiA+ID4+Pj4+IC4uLi9TbW1UY2cyUGh5c2ljYWxQ cmVzZW5jZUxpYi9TbW1UY2cyUGh5c2ljYWxQcmVzZW5jZUxpYi5jIHwgMg0KPiArLQ0KPiA+ID4+ Pj4+ICAgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pDQo+ID4g Pj4+Pj4NCj4gPiA+Pj4+PiBkaWZmIC0tZ2l0DQo+ID4gPj4+Pj4NCj4gPiBhL1NlY3VyaXR5UGtn L0xpYnJhcnkvU21tVGNnMlBoeXNpY2FsUHJlc2VuY2VMaWIvU21tVGNnMlBoeXNpY2FsUHINCj4g PiA+Pj4+PiBlc2VuDQo+ID4gPj4+Pj4NCj4gPiA+Pj4+PiBjZUxpYi5jDQo+ID4gPj4+Pj4NCj4g PiBiL1NlY3VyaXR5UGtnL0xpYnJhcnkvU21tVGNnMlBoeXNpY2FsUHJlc2VuY2VMaWIvU21tVGNn MlBoeXNpY2FsUHINCj4gPiA+Pj4+PiBlc2VuDQo+ID4gPj4+Pj4NCj4gPiA+Pj4+PiBjZUxpYi5j DQo+ID4gPj4+Pj4gaW5kZXggMWM0NmQ1ZTY5ZC4uOGFmYWEwYTc4NSAxMDA2NDQNCj4gPiA+Pj4+ PiAtLS0NCj4gPiA+Pj4+Pg0KPiA+IGEvU2VjdXJpdHlQa2cvTGlicmFyeS9TbW1UY2cyUGh5c2lj YWxQcmVzZW5jZUxpYi9TbW1UY2cyUGh5c2ljYWxQcg0KPiA+ID4+Pj4+IGVzZW4NCj4gPiA+Pj4+ Pg0KPiA+ID4+Pj4+IGNlTGliLmMNCj4gPiA+Pj4+PiArKysNCj4gPiA+Pj4+Pg0KPiA+IGIvU2Vj dXJpdHlQa2cvTGlicmFyeS9TbW1UY2cyUGh5c2ljYWxQcmVzZW5jZUxpYi9TbW1UY2cyUGh5c2lj YWxQcg0KPiA+ID4+Pj4+ICsrKyBlc2VuY2VMaWIuYw0KPiA+ID4+Pj4+IEBAIC0zODcsNyArMzg3 LDcgQEAgVGNnMlBoeXNpY2FsUHJlc2VuY2VMaWJDb25zdHJ1Y3RvciAoIHsNCj4gPiA+Pj4+PiAg ICAgRUZJX1NUQVRVUyAgU3RhdHVzOw0KPiA+ID4+Pj4+DQo+ID4gPj4+Pj4gLSAgaWYgKEFzY2lp U3RybkNtcChQUF9JTkZfVkVSU0lPTl8xXzIsIChDSEFSOA0KPiA+ID4+Pj4+ICopUGNkR2V0UHRy KFBjZFRjZ1BoeXNpY2FsUHJlc2VuY2VJbnRlcmZhY2VWZXIpLA0KPiA+ID4+Pj4+IHNpemVvZihQ UF9JTkZfVkVSU0lPTl8xXzIpIC0gMSkgPD0gMCkgew0KPiA+ID4+Pj4+ICsgIGlmIChBc2NpaVN0 cm5DbXAoUFBfSU5GX1ZFUlNJT05fMV8yLCAoQ0hBUjgNCj4gPiA+Pj4+PiArKilQY2RHZXRQdHIo UGNkVGNnUGh5c2ljYWxQcmVzZW5jZUludGVyZmFjZVZlciksDQo+ID4gPj4+Pj4gKyBzaXplb2Yo UFBfSU5GX1ZFUlNJT05fMV8yKSAtIDEpID49IDApIHsNCj4gPiA+Pj4+PiAgICAgICBtSXNUY2cy UFBWZXJMb3dlclRoYW5fMV8zID0gVFJVRTsNCj4gPiA+Pj4+PiAgICAgfQ0KPiA+ID4+Pj4+DQo+ ID4gPj4+Pj4NCj4gPiA+Pj4+IFdoYXQgaXMgdGhlIHByYWN0aWNhbCBpbXBhY3Qgb2YgdGhpcyBi dWcgLyBmaXg/DQo+ID4gPj4+Pg0KPiA+ID4+Pj4gVGhhbmtzDQo+ID4gPj4+PiBMYXN6bG8NCj4g PiA+Pj4+DQo+ID4gPj4+Pg0KPiA+ID4+Pj4NCj4gPiA+Pg0KPiA+ID4+DQo+ID4gPj4NCj4gPiA+ DQo+ID4gPg0KPiA+ID4gDQo+ID4gPg0KPiA+DQo+IA0KDQo=