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.web11.1848.1595978950273454653 for ; Tue, 28 Jul 2020 16:29:10 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@intel.onmicrosoft.com header.s=selector2-intel-onmicrosoft-com header.b=QXHUVnCD; spf=pass (domain: intel.com, ip: 192.55.52.43, mailfrom: michael.d.kinney@intel.com) IronPort-SDR: Mp793pOU6yIqfc/u1PFQsUK45d8qas7aT5FHIyT11RHU3rLHTc4HnbwTQD+LCLcDPGaK4e1SFV ot0EAJ5960PQ== X-IronPort-AV: E=McAfee;i="6000,8403,9696"; a="236199122" X-IronPort-AV: E=Sophos;i="5.75,408,1589266800"; d="scan'208";a="236199122" X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga007.fm.intel.com ([10.253.24.52]) by fmsmga105.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 28 Jul 2020 16:29:09 -0700 IronPort-SDR: ymL3vfM9MglOtOTqVwb8sLJXz979A/9HF70TR8c9j1HM94tuwwJvsJLlMFN8UmBiuCeUXjY18A 6jtGT7L1qA9g== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.75,408,1589266800"; d="scan'208";a="272462092" Received: from fmsmsx605.amr.corp.intel.com ([10.18.126.85]) by fmsmga007.fm.intel.com with ESMTP; 28 Jul 2020 16:29:09 -0700 Received: from fmsmsx604.amr.corp.intel.com (10.18.126.84) 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.1713.5; Tue, 28 Jul 2020 16:29:08 -0700 Received: from FMSEDG002.ED.cps.intel.com (10.1.192.134) by fmsmsx604.amr.corp.intel.com (10.18.126.84) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256) id 15.1.1713.5 via Frontend Transport; Tue, 28 Jul 2020 16:29:08 -0700 Received: from NAM11-CO1-obe.outbound.protection.outlook.com (104.47.56.170) by edgegateway.intel.com (192.55.55.69) with Microsoft SMTP Server (TLS) id 14.3.439.0; Tue, 28 Jul 2020 16:29:06 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=S/vcbetgnHP4RFOPpw+ig6fq7h7bLzYfYv6QeqWWmM1NSJEv2OlMFcfi5mvx4XJHtzENdnjUjLEmPfMGIHX+q0Nv6GJwowUwPb+ZiEozmpCZl/8xDygccwaLj4FWQLCQ0Rf6ig8lduNonmOyoYa2zz5D5KLecnGlzVSAOEx8i29ZK4VnvlAZIYM8raaAvWZRmT97h6kTbYamBaU/BteKnGzZ6+VEZsywD4zSudSxcgDOV1W1PmFLRnU2LbY5xT2eMo+/SmIrex4mxrOv7Lo9ihc2Di1aGoIjmVHgRU5HjdDTSujZ6I5CwJydIuqSd5QHf03jVrWc0GtlxGckcd76Vw== 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=h3zXMZjLWjE/sGoOj2+vtt+O7ZFYpPpc457KpKlvKsM=; b=HNLvKOwfR6zamKOrg7sYc1b4QECqWsrnATGODVtt/DPDRkTc3Gltzk+5vwF7rYGBRS7mM14PNic2914iuQjef4nTjpAZCx02CyPmbrKlRZSpxkkhxR1DYwJj1buM/kf6g16ZJmx8/sFNxEs1WYH6/SGbsqyoIVUQ34S7dyIzQAWEgtF2/a6gl4CIi/Lbzb7Khvt/GNjeviP8ZBT2m6R4Q1qe+5f0sfdZoE5LipCbzcqtFX2C3CMHQ1mnY+hr7Ucv/l6GYGztgHfcq2FT0ZIYJEwSkU+N3Ok6DddzduBJRG++fmCfOYm1Rbh83oqdYiZK2k3RLYWScXeRCJOqoSy16A== 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=h3zXMZjLWjE/sGoOj2+vtt+O7ZFYpPpc457KpKlvKsM=; b=QXHUVnCDgj56oyPqucs4Twb10JXj47d0tSO3YtJAcVDpiRr+Lipskyf5QD5v9ZP0UDK/SboR4ly1Ujdx1R0DASfzzEdtRFJWBXQHRBO7sAgrAq3KVSyB+3rIgy6kSt3A5Jdt0dosdRgM6PJ911VWb8O52E6rAKpyvCOSwLcyw8s= Received: from MN2PR11MB4461.namprd11.prod.outlook.com (2603:10b6:208:192::29) by BL0PR11MB3507.namprd11.prod.outlook.com (2603:10b6:208:7f::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3216.23; Tue, 28 Jul 2020 23:29:01 +0000 Received: from MN2PR11MB4461.namprd11.prod.outlook.com ([fe80::201e:29f2:a02:c260]) by MN2PR11MB4461.namprd11.prod.outlook.com ([fe80::201e:29f2:a02:c260%4]) with mapi id 15.20.3216.033; Tue, 28 Jul 2020 23:29:01 +0000 From: "Michael D Kinney" To: "Zhang, Shenglei" , "devel@edk2.groups.io" , "Kinney, Michael D" CC: Sean Brogan , Bret Barkelew , "Gao, Liming" Subject: Re: [PATCH 01/15] .pytool/Plugin: Add a plugin LicenseCheck Thread-Topic: [PATCH 01/15] .pytool/Plugin: Add a plugin LicenseCheck Thread-Index: AQHWXnD/1LC9jrYekEa5ZlauZmtynqkdsGGA Date: Tue, 28 Jul 2020 23:29:00 +0000 Message-ID: References: <20200720083709.17264-1-shenglei.zhang@intel.com> <20200720083709.17264-2-shenglei.zhang@intel.com> In-Reply-To: <20200720083709.17264-2-shenglei.zhang@intel.com> Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-product: dlpe-windows dlp-reaction: no-action dlp-version: 11.2.0.6 authentication-results: intel.com; dkim=none (message not signed) header.d=none;intel.com; dmarc=none action=none header.from=intel.com; x-originating-ip: [24.19.191.44] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 5d97e378-71d8-4f7a-fadd-08d8334e0231 x-ms-traffictypediagnostic: BL0PR11MB3507: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:7219; x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: GoObVawhLerMGKY1gunTpvFT+wjo1EzcTaSHZF2RN9NyqxobS6WFQns8g3HkcjCoDo+OyRsWJjrgqjl5kVn9aoj9OWsRQVJW2nSxBzBXF041v08g4hguyu/CtvezaegH9aHEcWvmN09Se4rvGStew5eZrP2iun6mu1AKZB0HUrxWOi538fRQi6xIbEKc1cUGTPvMiJeO/8sYp28y3cAq/KKECgRodY8ldIQrgX4T/30ywhMzxuZmrYVpYPQZgBx4Cqyst8XrECKzWwfZDUrB5GJVMY/rORhHxE/D6ZCwLfUrR/qz9cZnYRR75vVCpPUbQRZpQv5NfU9Y0SWjvr/J8OVH9LC8KSNcDgmjoYUS3+HNcrGDPZ7XUkWXNyQ44z/N0dfLvilC+PIjPdKWBWRwRA== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:MN2PR11MB4461.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFTY:;SFS:(4636009)(366004)(39860400002)(136003)(396003)(346002)(376002)(7696005)(107886003)(33656002)(8936002)(966005)(478600001)(71200400001)(45080400002)(9686003)(2906002)(316002)(66946007)(52536014)(64756008)(53546011)(6506007)(55016002)(110136005)(8676002)(76116006)(54906003)(66476007)(5660300002)(66446008)(66556008)(186003)(86362001)(26005)(4326008)(83380400001);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata: brCYVbF0LUakYqwYGs7K9EEluBL75WimrlOtqRt9wNdhl5HtXtKOGGfInBHjm69z8eCjEWZYZbKiIkNyo4aoAI2A1vvG4KPdhS6i4w1kg8M1jKFRGrdr/072uqnF9bim/8toTgaiDjK8rhuu/arD1KJLfHEnLtbyGdki8E2lhaTwCeGla77vjMrXM8+bRDhTEacpCb20f6AJI6yNiETEnvtXMHBgyVnHbtwT2QaxnjCJXRqIhwqID+0xSgwnvfiQx/OzFp3+ZV0/17x35DGGMNETO+EdcPTovtdvZKWGeJQy/uE+gNNbOVQZntMVm5KYAH4qYf7xiiFwZfFwYzdwFUCaSemZNttcAcIdSxonf5vkEowjiOoqV4D7huvPRWx0rTpvvOl2VPJk2QLf4BUP77eoQ2zW+iNmul2/xfqTZzeDg2vhvL9Zukn9zUfAJnJy6M9ZpMT/jkU5j1g403RfH0uY/rXjsMM1qdFthhVvKpM= MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: MN2PR11MB4461.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 5d97e378-71d8-4f7a-fadd-08d8334e0231 X-MS-Exchange-CrossTenant-originalarrivaltime: 28 Jul 2020 23:29:00.9291 (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: mFaBc2MhNNRCvaFKWSZ/9ELzKS8Rt1SackWGFdXOxWP5qeS5LLiSE7p8VKKK/DZnGJzmBsRvnwY6qufq6LcwFlzm1AOt6Fn9t1clPJbZWBU= X-MS-Exchange-Transport-CrossTenantHeadersStamped: BL0PR11MB3507 Return-Path: michael.d.kinney@intel.com X-OriginatorOrg: intel.com Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 V2hlcmUgZGlkIHRoZSByZXF1aXJlbWVudCBmb3IgQlNELTMtQ2xhdXNlLVBhdGVudCBjb21lIGZy b20/DQoNClRoYW5rcywNCg0KTWlrZQ0KDQo+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ IEZyb206IFpoYW5nLCBTaGVuZ2xlaSA8c2hlbmdsZWkuemhhbmdAaW50ZWwuY29tPg0KPiBTZW50 OiBNb25kYXksIEp1bHkgMjAsIDIwMjAgMTozNyBBTQ0KPiBUbzogZGV2ZWxAZWRrMi5ncm91cHMu aW8NCj4gQ2M6IFNlYW4gQnJvZ2FuIDxzZWFuLmJyb2dhbkBtaWNyb3NvZnQuY29tPjsgQnJldA0K PiBCYXJrZWxldyA8QnJldC5CYXJrZWxld0BtaWNyb3NvZnQuY29tPjsgS2lubmV5LCBNaWNoYWVs DQo+IEQgPG1pY2hhZWwuZC5raW5uZXlAaW50ZWwuY29tPjsgR2FvLCBMaW1pbmcNCj4gPGxpbWlu Zy5nYW9AaW50ZWwuY29tPg0KPiBTdWJqZWN0OiBbUEFUQ0ggMDEvMTVdIC5weXRvb2wvUGx1Z2lu OiBBZGQgYSBwbHVnaW4NCj4gTGljZW5zZUNoZWNrDQo+IA0KPiBSRUY6IGh0dHBzOi8vYnVnemls bGEudGlhbm9jb3JlLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjY5MQ0KPiBSRUY6IGh0dHBzOi8vYnVn emlsbGEudGlhbm9jb3JlLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjgzMw0KPiBBZGQgYSBwbHVnaW4g dG8gY2hlY2sgbGljZW5zZSBjb25mbGljdCBmb3IgbmV3IGFkZGVkDQo+IGZpbGVzIGluIGEgcGF0 Y2guIEl0IHdpbGwgcmVwb3J0IG91dCBlcnJvcnMgd2hlbiBtZWV0aW5nDQo+IGZpbGVzIHdoaWNo IGFyZSBub3cgY29udHJpYnV0ZWQgdW5kZXIgQlNELTItQ2xhdXNlLQ0KPiBQYXRlbnQNCj4gb3Ig QlNELTMtQ2xhdXNlLVBhdGVudC4NCj4gDQo+IENjOiBTZWFuIEJyb2dhbiA8c2Vhbi5icm9nYW5A bWljcm9zb2Z0LmNvbT4NCj4gQ2M6IEJyZXQgQmFya2VsZXcgPEJyZXQuQmFya2VsZXdAbWljcm9z b2Z0LmNvbT4NCj4gQ2M6IE1pY2hhZWwgRCBLaW5uZXkgPG1pY2hhZWwuZC5raW5uZXlAaW50ZWwu Y29tPg0KPiBDYzogTGltaW5nIEdhbyA8bGltaW5nLmdhb0BpbnRlbC5jb20+DQo+IFNpZ25lZC1v ZmYtYnk6IFNoZW5nbGVpIFpoYW5nIDxzaGVuZ2xlaS56aGFuZ0BpbnRlbC5jb20+DQo+IC0tLQ0K PiAgLnB5dG9vbC9QbHVnaW4vTGljZW5zZUNoZWNrL0xpY2Vuc2VDaGVjay5weSAgIHwgMTE4DQo+ ICsrKysrKysrKysrKysrKysrKw0KPiAgLi4uL0xpY2Vuc2VDaGVjay9MaWNlbnNlQ2hlY2tfcGx1 Z19pbi55YW1sICAgIHwgIDExICsrDQo+ICAucHl0b29sL1BsdWdpbi9MaWNlbnNlQ2hlY2svUmVh ZG1lLm1kICAgICAgICAgfCAgMTcgKysrDQo+ICAzIGZpbGVzIGNoYW5nZWQsIDE0NiBpbnNlcnRp b25zKCspDQo+ICBjcmVhdGUgbW9kZSAxMDA2NDQNCj4gLnB5dG9vbC9QbHVnaW4vTGljZW5zZUNo ZWNrL0xpY2Vuc2VDaGVjay5weQ0KPiAgY3JlYXRlIG1vZGUgMTAwNjQ0DQo+IC5weXRvb2wvUGx1 Z2luL0xpY2Vuc2VDaGVjay9MaWNlbnNlQ2hlY2tfcGx1Z19pbi55YW1sDQo+ICBjcmVhdGUgbW9k ZSAxMDA2NDQNCj4gLnB5dG9vbC9QbHVnaW4vTGljZW5zZUNoZWNrL1JlYWRtZS5tZA0KPiANCj4g ZGlmZiAtLWdpdCBhLy5weXRvb2wvUGx1Z2luL0xpY2Vuc2VDaGVjay9MaWNlbnNlQ2hlY2sucHkN Cj4gYi8ucHl0b29sL1BsdWdpbi9MaWNlbnNlQ2hlY2svTGljZW5zZUNoZWNrLnB5DQo+IG5ldyBm aWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4IDAwMDAwMDAwMDAwMC4uOTg5NDFkZGRhNzU4DQo+IC0t LSAvZGV2L251bGwNCj4gKysrIGIvLnB5dG9vbC9QbHVnaW4vTGljZW5zZUNoZWNrL0xpY2Vuc2VD aGVjay5weQ0KPiBAQCAtMCwwICsxLDExOCBAQA0KPiArIyBAZmlsZSBMaWNlbnNlQ2hlY2sucHkN Cj4gKyMNCj4gKyMgQ29weXJpZ2h0IChjKSAyMDIwLCBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJp Z2h0cw0KPiByZXNlcnZlZC48QlI+DQo+ICsjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0Qt Mi1DbGF1c2UtUGF0ZW50DQo+ICsjIw0KPiArDQo+ICtpbXBvcnQgb3MNCj4gK2ltcG9ydCBsb2dn aW5nDQo+ICtpbXBvcnQgcmUNCj4gK2Zyb20gaW8gaW1wb3J0IFN0cmluZ0lPDQo+ICtmcm9tIHR5 cGluZyBpbXBvcnQgTGlzdCwgVHVwbGUNCj4gK2Zyb20NCj4gZWRrMnRvb2xleHQuZW52aXJvbm1l bnQucGx1Z2ludHlwZXMuY2lfYnVpbGRfcGx1Z2luDQo+IGltcG9ydCBJQ2lCdWlsZFBsdWdpbg0K PiArZnJvbSBlZGsydG9vbGV4dC5lbnZpcm9ubWVudC52YXJfZGljdCBpbXBvcnQgVmFyRGljdA0K PiArZnJvbSBlZGsydG9vbGxpYi51dGlsaXR5X2Z1bmN0aW9ucyBpbXBvcnQgUnVuQ21kDQo+ICsN Cj4gKw0KPiArY2xhc3MgTGljZW5zZUNoZWNrKElDaUJ1aWxkUGx1Z2luKToNCj4gKw0KPiArICAg ICIiIg0KPiArICAgIEEgQ2lCdWlsZFBsdWdpbiB0byBjaGVjayB0aGUgbGljZW5zZSBmb3IgbmV3 IGFkZGVkDQo+IGZpbGVzLg0KPiArDQo+ICsgICAgQ29uZmlndXJhdGlvbiBvcHRpb25zOg0KPiAr ICAgICJMaWNlbnNlQ2hlY2siOiB7DQo+ICsgICAgICAgICJJZ25vcmVGaWxlcyI6IFtdDQo+ICsg ICAgfSwNCj4gKyAgICAiIiINCj4gKw0KPiArICAgIGxpY2Vuc2VfZm9ybWF0X3ByZWZsaXggPSAn U1BEWC1MaWNlbnNlLUlkZW50aWZpZXInDQo+ICsNCj4gKyAgICBic2QyX3BhdGVudCA9ICdCU0Qt Mi1DbGF1c2UtUGF0ZW50Jw0KPiArDQo+ICsgICAgYnNkM19wYXRlbnQgPSAnQlNELTMtQ2xhdXNl LVBhdGVudCcNCj4gKw0KPiArICAgIFJlYWRkZWRmaWxlZm9ybWF0ID0gcmUuY29tcGlsZShyJ1wr XCtcKyBiXC8oLiopJykNCj4gKw0KPiArICAgIGZpbGVfZXh0ZW5zaW9uX2xpc3QgPSBbIi5jIiwg Ii5oIiwgIi5pbmYiLCAiLmRzYyIsDQo+ICIuZGVjIiwgIi5weSIsICIuYmF0IiwgIi5zaCIsICIu dW5pIiwgIi55YW1sIiwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICIuZmRmIiwgIi5p bmMiLCAieW1sIiwNCj4gIi5hc20iLCAiLmFzbTE2IiwgIi5hc2wiLCAiLnZmciIsICIucyIsICIu UyIsICIuYXNsYyIsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAiLm5hc20iLCAiLm5h c21iIiwgIi5pZGYiLA0KPiAiLlZmciIsICIuSCJdDQo+ICsNCj4gKyAgICBkZWYgR2V0VGVzdE5h bWUoc2VsZiwgcGFja2FnZW5hbWU6IHN0ciwNCj4gZW52aXJvbm1lbnQ6IFZhckRpY3QpIC0+IHR1 cGxlOg0KPiArICAgICAgICAiIiIgUHJvdmlkZSB0aGUgdGVzdGNhc2UgbmFtZSBhbmQgY2xhc3Nu YW1lIGZvcg0KPiB1c2UgaW4gcmVwb3J0aW5nDQo+ICsgICAgICAgICAgICB0ZXN0Y2xhc3NuYW1l OiBhIGRlc2NyaXB0aXZlIHN0cmluZyBmb3IgdGhlDQo+IHRlc3RjYXNlIGNhbiBpbmNsdWRlIHdo aXRlc3BhY2UNCj4gKyAgICAgICAgICAgIGNsYXNzbmFtZTogc2hvdWxkIGJlIHBhdHRlcm5lZA0K PiA8cGFja2FnZW5hbWU+LjxwbHVnaW4+LjxvcHRpb25hbGx5IGFueSB1bmlxdWUgY29uZGl0aW9u Pg0KPiArDQo+ICsgICAgICAgICAgICBBcmdzOg0KPiArICAgICAgICAgICAgICBwYWNrYWdlbmFt ZTogc3RyaW5nIGNvbnRhaW5pbmcgbmFtZSBvZg0KPiBwYWNrYWdlIHRvIGJ1aWxkDQo+ICsgICAg ICAgICAgICAgIGVudmlyb25tZW50OiBUaGUgVmFyRGljdCBmb3IgdGhlIHRlc3QgdG8NCj4gcnVu IGluDQo+ICsgICAgICAgICAgICBSZXR1cm5zOg0KPiArICAgICAgICAgICAgICAgIGEgdHVwbGUg Y29udGFpbmluZyB0aGUgdGVzdGNhc2UgbmFtZQ0KPiBhbmQgdGhlIGNsYXNzbmFtZQ0KPiArICAg ICAgICAgICAgICAgICh0ZXN0Y2FzZW5hbWUsIGNsYXNzbmFtZSkNCj4gKyAgICAgICAgIiIiDQo+ ICsgICAgICAgIHJldHVybiAoIkNoZWNrIGZvciBsaWNlbnNlIGZvciAiICsgcGFja2FnZW5hbWUs DQo+IHBhY2thZ2VuYW1lICsgIi5MaWNlbnNlQ2hlY2siKQ0KPiArDQo+ICsgICAgIyMNCj4gKyAg ICAjIEV4dGVybmFsIGZ1bmN0aW9uIG9mIHBsdWdpbi4gIFRoaXMgZnVuY3Rpb24gaXMNCj4gdXNl ZCB0byBwZXJmb3JtIHRoZSB0YXNrIG9mIHRoZSBjaV9idWlsZF9wbHVnaW4gUGx1Z2luDQo+ICsg ICAgIw0KPiArICAgICMgICAtIHBhY2thZ2UgaXMgdGhlIGVkazIgcGF0aCB0byBwYWNrYWdlLiAg VGhpcw0KPiBtZWFucyB3b3Jrc3BhY2UvcGFja2FnZXBhdGggcmVsYXRpdmUuDQo+ICsgICAgIyAg IC0gZWRrMnBhdGggb2JqZWN0IGNvbmZpZ3VyZWQgd2l0aCB3b3Jrc3BhY2UgYW5kDQo+IHBhY2th Z2VzIHBhdGgNCj4gKyAgICAjICAgLSBQa2dDb25maWcgT2JqZWN0IChkaWN0KSBmb3IgdGhlIHBr Zw0KPiArICAgICMgICAtIEVudkNvbmZpZyBPYmplY3QNCj4gKyAgICAjICAgLSBQbHVnaW4gTWFu YWdlciBJbnN0YW5jZQ0KPiArICAgICMgICAtIFBsdWdpbiBIZWxwZXIgT2JqIEluc3RhbmNlDQo+ ICsgICAgIyAgIC0gSnVuaXQgTG9nZ2VyDQo+ICsgICAgIyAgIC0gb3V0cHV0X3N0cmVhbSB0aGUg U3RyaW5nSU8gb3V0cHV0IHN0cmVhbSBmcm9tDQo+IHRoaXMgcGx1Z2luIHZpYSBsb2dnaW5nDQo+ ICsgICAgZGVmIFJ1bkJ1aWxkUGx1Z2luKHNlbGYsIHBhY2thZ2VuYW1lLCBFZGsycGF0aE9iaiwN Cj4gcGtnY29uZmlnLCBlbnZpcm9ubWVudCwgUExNLCBQTE1IZWxwZXIsIHRjLA0KPiBvdXRwdXRf c3RyZWFtPU5vbmUpOg0KPiArICAgICAgICByZXR1cm5fYnVmZmVyID0gU3RyaW5nSU8oKQ0KPiAr ICAgICAgICBwYXJhbXMgPSAiZGlmZiAtLXVuaWZpZWQ9MCBvcmlnaW4vbWFzdGVyIEhFQUQiDQo+ ICsgICAgICAgIFJ1bkNtZCgiZ2l0IiwgcGFyYW1zLCBvdXRzdHJlYW09cmV0dXJuX2J1ZmZlcikN Cj4gKyAgICAgICAgcCA9IHJldHVybl9idWZmZXIuZ2V0dmFsdWUoKS5zdHJpcCgpDQo+ICsgICAg ICAgIHBhdGNoID0gcC5zcGxpdCgiXG4iKQ0KPiArICAgICAgICByZXR1cm5fYnVmZmVyLmNsb3Nl KCkNCj4gKw0KPiArICAgICAgICBpZ25vcmVfZmlsZXMgPSBbXQ0KPiArICAgICAgICBpZiAiSWdu b3JlRmlsZXMiIGluIHBrZ2NvbmZpZzoNCj4gKyAgICAgICAgICAgIGlnbm9yZV9maWxlcyA9IHBr Z2NvbmZpZ1siSWdub3JlRmlsZXMiXQ0KPiArDQo+ICsgICAgICAgIHNlbGYub2sgPSBUcnVlDQo+ ICsgICAgICAgIHNlbGYuc3RhcnRjaGVjayA9IEZhbHNlDQo+ICsgICAgICAgIHNlbGYubGljZW5z ZSA9IFRydWUNCj4gKyAgICAgICAgc2VsZi5hbGxfZmlsZV9wYXNzID0gVHJ1ZQ0KPiArICAgICAg ICBjb3VudCA9IGxlbihwYXRjaCkNCj4gKyAgICAgICAgbGluZV9pbmRleCA9IDANCj4gKyAgICAg ICAgZm9yIGxpbmUgaW4gcGF0Y2g6DQo+ICsgICAgICAgICAgICBpZiBsaW5lLnN0YXJ0c3dpdGgo Jy0tLSAvZGV2L251bGwnKToNCj4gKyAgICAgICAgICAgICAgICBuZXh0bGluZSA9IHBhdGNoW2xp bmVfaW5kZXggKyAxXQ0KPiArICAgICAgICAgICAgICAgIGFkZGVkX2ZpbGUgPQ0KPiBzZWxmLlJl YWRkZWRmaWxlZm9ybWF0LnNlYXJjaChuZXh0bGluZSkuZ3JvdXAoMSkNCj4gKyAgICAgICAgICAg ICAgICBhZGRlZF9maWxlX2V4dGVuc2lvbiA9DQo+IG9zLnBhdGguc3BsaXRleHQoYWRkZWRfZmls ZSlbMV0NCj4gKyAgICAgICAgICAgICAgICBpZiBhZGRlZF9maWxlX2V4dGVuc2lvbiBpbg0KPiBz ZWxmLmZpbGVfZXh0ZW5zaW9uX2xpc3QgYW5kIHBhY2thZ2VuYW1lIGluIGFkZGVkX2ZpbGU6DQo+ ICsgICAgICAgICAgICAgICAgICAgIGlmIChzZWxmLklzSWdub3JlRmlsZShhZGRlZF9maWxlLA0K PiBpZ25vcmVfZmlsZXMpKToNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVfaW5kZXgg PSBsaW5lX2luZGV4ICsgMQ0KPiArICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUNCj4g KyAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGFydGNoZWNrID0gVHJ1ZQ0KPiArICAgICAgICAg ICAgICAgICAgICBzZWxmLmxpY2Vuc2UgPSBGYWxzZQ0KPiArICAgICAgICAgICAgaWYgc2VsZi5z dGFydGNoZWNrIGFuZA0KPiBzZWxmLmxpY2Vuc2VfZm9ybWF0X3ByZWZsaXggaW4gbGluZToNCj4g KyAgICAgICAgICAgICAgICBpZiBzZWxmLmJzZDJfcGF0ZW50IGluIGxpbmUgb3INCj4gc2VsZi5i c2QzX3BhdGVudCBpbiBsaW5lOg0KPiArICAgICAgICAgICAgICAgICAgICBzZWxmLmxpY2Vuc2Ug PSBUcnVlDQo+ICsgICAgICAgICAgICBpZiBsaW5lX2luZGV4ICsgMSA9PSBjb3VudCBvcg0KPiBw YXRjaFtsaW5lX2luZGV4ICsgMV0uc3RhcnRzd2l0aCgnZGlmZiAtLScpIGFuZA0KPiBzZWxmLnN0 YXJ0Y2hlY2s6DQo+ICsgICAgICAgICAgICAgICAgaWYgbm90IHNlbGYubGljZW5zZToNCj4gKyAg ICAgICAgICAgICAgICAgICAgc2VsZi5hbGxfZmlsZV9wYXNzID0gRmFsc2UNCj4gKyAgICAgICAg ICAgICAgICAgICAgZXJyb3JfbWVzc2FnZSA9ICJJbnZhbGlkIGxpY2Vuc2UNCj4gaW46ICIgKyBh ZGRlZF9maWxlICsgIiBIaW50OiBPbmx5IEJTRC0yLUNsYXVzZS1QYXRlbnQNCj4gYW5kIiArIFwN Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgQlNELTMtQ2xhdXNlLQ0K PiBQYXRlbnQgYXJlIGFjY2VwdGVkLiINCj4gKyAgICAgICAgICAgICAgICAgICAgbG9nZ2luZy5l cnJvcihlcnJvcl9tZXNzYWdlKQ0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhcnRjaGVjayA9 IEZhbHNlDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5saWNlbnNlID0gVHJ1ZQ0KPiArICAgICAg ICAgICAgbGluZV9pbmRleCA9IGxpbmVfaW5kZXggKyAxDQo+ICsNCj4gKyAgICAgICAgaWYgc2Vs Zi5hbGxfZmlsZV9wYXNzOg0KPiArICAgICAgICAgICAgdGMuU2V0U3VjY2VzcygpDQo+ICsgICAg ICAgICAgICByZXR1cm4gMA0KPiArICAgICAgICBlbHNlOg0KPiArICAgICAgICAgICAgdGMuU2V0 RmFpbGVkKCJMaWNlbnNlIENoZWNrIHswfSBGYWlsZWQuDQo+ICIuZm9ybWF0KHBhY2thZ2VuYW1l KSwgIkxJQ0VOU0VfQ0hFQ0tfRkFJTEVEIikNCj4gKyAgICAgICAgICAgIHJldHVybiAxDQo+ICsN Cj4gKyAgICBkZWYgSXNJZ25vcmVGaWxlKHNlbGYsIGZpbGU6IHN0ciwgaWdub3JlX2ZpbGVzOg0K PiBMaXN0W3N0cl0pIC0+IGJvb2w6DQo+ICsgICAgICAgIGZvciBmIGluIGlnbm9yZV9maWxlczoN Cj4gKyAgICAgICAgICAgIGlmIGYgaW4gZmlsZToNCj4gKyAgICAgICAgICAgICAgICByZXR1cm4g VHJ1ZQ0KPiArICAgICAgICByZXR1cm4gRmFsc2UNCj4gZGlmZiAtLWdpdA0KPiBhLy5weXRvb2wv UGx1Z2luL0xpY2Vuc2VDaGVjay9MaWNlbnNlQ2hlY2tfcGx1Z19pbi55YW1sDQo+IGIvLnB5dG9v bC9QbHVnaW4vTGljZW5zZUNoZWNrL0xpY2Vuc2VDaGVja19wbHVnX2luLnlhbWwNCj4gbmV3IGZp bGUgbW9kZSAxMDA2NDQNCj4gaW5kZXggMDAwMDAwMDAwMDAwLi4xZDAyZjZkYTVhNjkNCj4gLS0t IC9kZXYvbnVsbA0KPiArKysNCj4gYi8ucHl0b29sL1BsdWdpbi9MaWNlbnNlQ2hlY2svTGljZW5z ZUNoZWNrX3BsdWdfaW4ueWFtbA0KPiBAQCAtMCwwICsxLDExIEBADQo+ICsjIyBAZmlsZQ0KPiAr IyBDaUJ1aWxkUGx1Z2luIHVzZWQgdG8gY2hlY2sgbGljZW5zZSBpc3N1ZXMgZm9yIG5ldw0KPiBh ZGRlZCBmaWxlcw0KPiArIw0KPiArIyBDb3B5cmlnaHQgKGMpIE1pY3Jvc29mdCBDb3Jwb3JhdGlv bi4NCj4gKyMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0yLUNsYXVzZS1QYXRlbnQNCj4g KyMjDQo+ICt7DQo+ICsgICJzY29wZSI6ICJjaWJ1aWxkIiwNCj4gKyAgIm5hbWUiOiAiTGljZW5z ZSBDaGVjayBUZXN0IiwNCj4gKyAgIm1vZHVsZSI6ICJMaWNlbnNlQ2hlY2siDQo+ICt9DQo+IGRp ZmYgLS1naXQgYS8ucHl0b29sL1BsdWdpbi9MaWNlbnNlQ2hlY2svUmVhZG1lLm1kDQo+IGIvLnB5 dG9vbC9QbHVnaW4vTGljZW5zZUNoZWNrL1JlYWRtZS5tZA0KPiBuZXcgZmlsZSBtb2RlIDEwMDY0 NA0KPiBpbmRleCAwMDAwMDAwMDAwMDAuLjU3ZDlkYjY3NjlmYQ0KPiAtLS0gL2Rldi9udWxsDQo+ ICsrKyBiLy5weXRvb2wvUGx1Z2luL0xpY2Vuc2VDaGVjay9SZWFkbWUubWQNCj4gQEAgLTAsMCAr MSwxNyBAQA0KPiArIyBMaWNlbnNlIENoZWNrIFBsdWdpbg0KPiArDQo+ICtUaGlzIENpQnVpbGRQ bHVnaW4gc2NhbnMgYWxsIG5ldyBhZGRlZCBmaWxlcyBpbiBhDQo+IHBhY2thZ2UgdG8gbWFrZSBz dXJlIGNvZGUNCj4gK2lzIGNvbnRyaWJ1dGVkIHVuZGVyIEJTRC0yLUNsYXVzZS1QYXRlbnQgb3Ig QlNELTMtDQo+IENsYXVzZS1QYXRlbnQuDQo+ICsNCj4gKyMjIENvbmZpZ3VyYXRpb24NCj4gKw0K PiArVGhlIHBsdWdpbiBjYW4gYmUgY29uZmlndXJlZCB0byBpZ25vcmUgY2VydGFpbiBmaWxlcy4N Cj4gKw0KPiArYGBgIHlhbWwNCj4gKyJMaWNlbnNlQ2hlY2siOiB7DQo+ICsgICAgIklnbm9yZUZp bGVzIjogW10NCj4gK30NCj4gK2BgYA0KPiArIyMjIElnbm9yZUZpbGVzDQo+ICsNCj4gK09QVElP TkFMIExpc3Qgb2YgZmlsZSB0byBpZ25vcmUuDQo+IC0tDQo+IDIuMTguMC53aW5kb3dzLjENCg0K