From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by mx.groups.io with SMTP id smtpd.web11.1321.1596007806621473995 for ; Wed, 29 Jul 2020 00:30:06 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@intel.onmicrosoft.com header.s=selector2-intel-onmicrosoft-com header.b=VwqodIiT; spf=pass (domain: intel.com, ip: 134.134.136.65, mailfrom: liming.gao@intel.com) IronPort-SDR: D77LfA3MWixPUdJxG7rABAaQ598HjHjTeQTcZzS3xII3qbJG2UB2zM/IzwuOqPqsM1TU0/Qghs 6gcCSfFbY2ow== X-IronPort-AV: E=McAfee;i="6000,8403,9696"; a="151352484" X-IronPort-AV: E=Sophos;i="5.75,409,1589266800"; d="scan'208";a="151352484" X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga002.jf.intel.com ([10.7.209.21]) by orsmga103.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 29 Jul 2020 00:30:05 -0700 IronPort-SDR: i++qcvrYWRLnyv98yTPRBYSEjN2AKQ1RO5Y9JUVB94vvqvx5aQQyHdb+nWH8c5feZ625n3q5Sw xIRnyv2g+foA== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.75,409,1589266800"; d="scan'208";a="304139895" Received: from orsmsx602.amr.corp.intel.com ([10.22.229.15]) by orsmga002.jf.intel.com with ESMTP; 29 Jul 2020 00:30:04 -0700 Received: from orsmsx602.amr.corp.intel.com (10.22.229.15) by ORSMSX602.amr.corp.intel.com (10.22.229.15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1713.5; Wed, 29 Jul 2020 00:30:02 -0700 Received: from ORSEDG002.ED.cps.intel.com (10.7.248.5) by orsmsx602.amr.corp.intel.com (10.22.229.15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256) id 15.1.1713.5 via Frontend Transport; Wed, 29 Jul 2020 00:30:02 -0700 Received: from NAM12-DM6-obe.outbound.protection.outlook.com (104.47.59.172) by edgegateway.intel.com (134.134.137.101) with Microsoft SMTP Server (TLS) id 14.3.439.0; Wed, 29 Jul 2020 00:30:00 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=mp769+AGBCa4QXY1wF0e+A4yV/F+09sTbuA43R/KLxjVV/nMF9rQlmt+JUpN8KNCD0Dr/X4LS+6m0g7P3rTKa5sXllpWg+W9gZiXBGNo6DNrlvqzBRBkC5lSkEcQBQvrmUWSFVYDwqixEJnjsZzlEjuQ6U3t0RX6H0rm8NwCXI8uygdT+no5FsvrDY3lidd/PmgNMYiFWej58lwB6BGwrojKCZI/Eo3XSlDTPkN+6DqdeKCN+vO6oSrLMHyXxOZc9BRjrmSFD4NMpUCC3xYMv7lUR7BIgJCeZf3BXYudhdETPj/JoRMrRiCr9U49Cwy11K8Dn5IiNCfRYDP9VG53mA== 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=h4wrYHsai7FArob/6Pk1yvEqqh3sNMbUzIted6mUDX4=; b=BIAYuaAqKept4iuU1V256iSgWiyk4yHWbv0GBFOy5Ir/2h/uUd1ugUaKMFowOqn3jnrvqmelcnzJdQBxDB8x9+pQYQdfMeX7xPGOQwNIwPFn+tz52lEGh+A7h7mtLgAOr7sTih+fvJeBIFPfcfYJp2jwKka3lAK43IDmpKWNseik4kXaouhy13Uoi2gZaYiRtuikIpqILIUAZQGUgqa3JDy6khNX9Yx+GXqjcukblwEerCbg6hVJuu0O2w4rtCrBC2DGdDduxgTf02vb05RQoVBM4SIk2C/jN/gu7z8aZ4sKooAnbDeuoOI15wdwjfcB9S1IBNXVgFFfr8PtZW1rMg== 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=h4wrYHsai7FArob/6Pk1yvEqqh3sNMbUzIted6mUDX4=; b=VwqodIiTB6rzZ+HXgZZiRBhyV7kpG+SOfo/TW3HfWg8SzYeaODPi3rDiSB+0yKbrgUHE9SMi1VVP/RiB1bMFMpLis4muKejaNbVZ3zPvcPlh7LhiaByrjh3rcm1DxQue+Jo9+n1eUWw5kE3SyEA5c+WnTpfmhQiQhlyqkQc+Nh4= Received: from MWHPR11MB1630.namprd11.prod.outlook.com (2603:10b6:301:e::7) by MWHPR11MB1903.namprd11.prod.outlook.com (2603:10b6:300:10e::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3216.25; Wed, 29 Jul 2020 07:29:59 +0000 Received: from MWHPR11MB1630.namprd11.prod.outlook.com ([fe80::7847:b564:1b55:b67e]) by MWHPR11MB1630.namprd11.prod.outlook.com ([fe80::7847:b564:1b55:b67e%6]) with mapi id 15.20.3216.034; Wed, 29 Jul 2020 07:29:59 +0000 From: "Liming Gao" To: "Zhang, Shenglei" , "Kinney, Michael D" , "devel@edk2.groups.io" CC: Sean Brogan , Bret Barkelew 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/8BgK1UUjEE+DJZX/Smr3YakdsNwAgABvEICAABcEAA== Date: Wed, 29 Jul 2020 07:29:59 +0000 Message-ID: References: <20200720083709.17264-1-shenglei.zhang@intel.com> <20200720083709.17264-2-shenglei.zhang@intel.com> In-Reply-To: Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-version: 11.2.0.6 dlp-product: dlpe-windows dlp-reaction: no-action 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: [192.198.147.194] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 36ae0d54-ba92-4173-66c4-08d83391331b x-ms-traffictypediagnostic: MWHPR11MB1903: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:8882; x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: G3tlldB1zr6C6BO6ypeqGpgCFSE74fCQj53wAfPSUp2ixSrZ7SolaOfruh2JPSq0veLH5LJvv4Li7Mt68pSruVZx/hKI8sBycAfRx4BkfOYU9SB44BE7mYPwk5uBf70JKFlmSnSgam8+/AJFlA31SBOAO7VJ6PwtnbAzvRaxCV+pUBTZ0YneGksX7je1uj/t8nWq/aT+BDqvS4MuLySGrC7RZUyX7J++no/FH/i/vs43SDOjma9otbU8hbwZ7oCKd8mEBv2s2/plDVp34H25XPn3/8xUKG++8u92gLFqF64tKZ9HgyechKGWnbEIY1ydZeI1wq9Wt9XXFeI4WeR32ACwvWQd6gmzjennPP8ASUsaaEv1qoSXn92yFgByTG89upDwnYV3ceEcPXNOGEI8nw== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:MWHPR11MB1630.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFTY:;SFS:(4636009)(39850400004)(366004)(136003)(396003)(376002)(346002)(71200400001)(54906003)(6506007)(4326008)(45080400002)(8936002)(966005)(53546011)(7696005)(186003)(478600001)(9686003)(8676002)(66946007)(64756008)(52536014)(66556008)(66446008)(5660300002)(86362001)(83380400001)(316002)(110136005)(66476007)(33656002)(55016002)(26005)(2906002)(76116006);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata: vuNvAbuA8U3NY32BClIo6UHIiuqJNuPIT8fsn9IJ7QP02VV6YE9YdKvsQNrcOC61NDglY8epkscMdFMOlVAh/qvvEiEm2OFHJRF97wUxl0y8FmDlthiTzT8NVCOI1i7nNMTI2eN3UBXP0tRBE9ogJeeUw+/Aw4+16MvqNGs/wxv+/HPnh79cKr1ymEZJTqRXJKG15kCJ2Nzoz7bq/Ow7baJ44hLTv06T0WTMg9Zo/O89zyR3J75B9RQwwKcf171GMpqrr1oplB69gz9pfjV1Lo5QAgI6a5GCBIb213Py4rDRcIFaqq25AUsJqcGv6lIdT72pOSiesbMk8u7jWk7TB59YNUvCUnN42nqVeJuegfa+zUpHxOo2QywS9Ag9pmQwZV+MG8LSSJWMCxJ/Ij2l/tgm0rqUkNuWRtaFonoIUwAkAvD7DuLKo6GNqhn6FcTamdbi4BepZGzBG3QBO7NqrZEcgRt1O9Idy4qfNgA8jy/feosvfJCo12ox4jvdpByf MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: MWHPR11MB1630.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 36ae0d54-ba92-4173-66c4-08d83391331b X-MS-Exchange-CrossTenant-originalarrivaltime: 29 Jul 2020 07:29:59.2214 (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: Ryj2c+y4xqloTV8jCS+GFsqJ5BMmgVzwLvJu590wPAL1yfBtwIm6u1cM20cHjlfCzjvCTs0/zaO5VhzJO3FlXw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MWHPR11MB1903 Return-Path: liming.gao@intel.com X-OriginatorOrg: intel.com Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 U2hlbmdsZWk6DQogIFJlYWRtZSBtZW50aW9ucyBCU0QtMi1DbGF1c2UgUGx1cyBQYXRlbnQgTGlj ZW5zZSwgYnV0IG5vIEJTRC0zLUNsYXVzZSBQbHVzIFBhdGVudCBMaWNlbnNlLiBTbywgcGxlYXNl IGNoZWNrIEJTRC0yLUNsYXVzZSBQbHVzIFBhdGVudCBMaWNlbnNlIG9ubHkuIA0KDQpUaGFua3MN CkxpbWluZw0KLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCkZyb206IFpoYW5nLCBTaGVuZ2xl aSA8c2hlbmdsZWkuemhhbmdAaW50ZWwuY29tPiANClNlbnQ6IDIwMjDlubQ35pyIMjnml6UgMTQ6 MDcNClRvOiBLaW5uZXksIE1pY2hhZWwgRCA8bWljaGFlbC5kLmtpbm5leUBpbnRlbC5jb20+OyBk ZXZlbEBlZGsyLmdyb3Vwcy5pbw0KQ2M6IFNlYW4gQnJvZ2FuIDxzZWFuLmJyb2dhbkBtaWNyb3Nv ZnQuY29tPjsgQnJldCBCYXJrZWxldyA8QnJldC5CYXJrZWxld0BtaWNyb3NvZnQuY29tPjsgR2Fv LCBMaW1pbmcgPGxpbWluZy5nYW9AaW50ZWwuY29tPg0KU3ViamVjdDogUkU6IFtQQVRDSCAwMS8x NV0gLnB5dG9vbC9QbHVnaW46IEFkZCBhIHBsdWdpbiBMaWNlbnNlQ2hlY2sNCg0KRml2ZSBzb3J0 cyBvZiBsaWNlbnNlIGFyZSBhY2NlcHRlZCBpbiBlZGsyKGRlc2NyaWJlZCBpbiByZWFkbWUpLiBU aGV5IGFyZSBCU0QgKDItY2xhdXNlKSwgQlNEICgzLWNsYXVzZSksIE1JVCwgUHl0aG9uLTIuMCBh bmQgemxpYi4NCk1pbnVzIG5vbiBic2QgcGx1cyBwYXRlbnQgbGljZW5zZSwgdGhleSBhcmUgQlNE ICgyLWNsYXVzZSkgYW5kIEJTRCAoMy1jbGF1c2UpLg0KDQpUaGFua3MsDQpTaGVuZ2xlaQ0KDQo+ IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+IEZyb206IEtpbm5leSwgTWljaGFlbCBEIDxt aWNoYWVsLmQua2lubmV5QGludGVsLmNvbT4NCj4gU2VudDogV2VkbmVzZGF5LCBKdWx5IDI5LCAy MDIwIDc6MjkgQU0NCj4gVG86IFpoYW5nLCBTaGVuZ2xlaSA8c2hlbmdsZWkuemhhbmdAaW50ZWwu Y29tPjsgZGV2ZWxAZWRrMi5ncm91cHMuaW87IA0KPiBLaW5uZXksIE1pY2hhZWwgRCA8bWljaGFl bC5kLmtpbm5leUBpbnRlbC5jb20+DQo+IENjOiBTZWFuIEJyb2dhbiA8c2Vhbi5icm9nYW5AbWlj cm9zb2Z0LmNvbT47IEJyZXQgQmFya2VsZXcgDQo+IDxCcmV0LkJhcmtlbGV3QG1pY3Jvc29mdC5j b20+OyBHYW8sIExpbWluZyA8bGltaW5nLmdhb0BpbnRlbC5jb20+DQo+IFN1YmplY3Q6IFJFOiBb UEFUQ0ggMDEvMTVdIC5weXRvb2wvUGx1Z2luOiBBZGQgYSBwbHVnaW4gTGljZW5zZUNoZWNrDQo+ IA0KPiBXaGVyZSBkaWQgdGhlIHJlcXVpcmVtZW50IGZvciBCU0QtMy1DbGF1c2UtUGF0ZW50IGNv bWUgZnJvbT8NCj4gDQo+IFRoYW5rcywNCj4gDQo+IE1pa2UNCj4gDQo+ID4gLS0tLS1PcmlnaW5h bCBNZXNzYWdlLS0tLS0NCj4gPiBGcm9tOiBaaGFuZywgU2hlbmdsZWkgPHNoZW5nbGVpLnpoYW5n QGludGVsLmNvbT4NCj4gPiBTZW50OiBNb25kYXksIEp1bHkgMjAsIDIwMjAgMTozNyBBTQ0KPiA+ IFRvOiBkZXZlbEBlZGsyLmdyb3Vwcy5pbw0KPiA+IENjOiBTZWFuIEJyb2dhbiA8c2Vhbi5icm9n YW5AbWljcm9zb2Z0LmNvbT47IEJyZXQgQmFya2VsZXcgDQo+ID4gPEJyZXQuQmFya2VsZXdAbWlj cm9zb2Z0LmNvbT47IEtpbm5leSwgTWljaGFlbCBEIA0KPiA+IDxtaWNoYWVsLmQua2lubmV5QGlu dGVsLmNvbT47IEdhbywgTGltaW5nIDxsaW1pbmcuZ2FvQGludGVsLmNvbT4NCj4gPiBTdWJqZWN0 OiBbUEFUQ0ggMDEvMTVdIC5weXRvb2wvUGx1Z2luOiBBZGQgYSBwbHVnaW4gTGljZW5zZUNoZWNr DQo+ID4NCj4gPiBSRUY6IGh0dHBzOi8vYnVnemlsbGEudGlhbm9jb3JlLm9yZy9zaG93X2J1Zy5j Z2k/aWQ9MjY5MQ0KPiA+IFJFRjogaHR0cHM6Ly9idWd6aWxsYS50aWFub2NvcmUub3JnL3Nob3df YnVnLmNnaT9pZD0yODMzDQo+ID4gQWRkIGEgcGx1Z2luIHRvIGNoZWNrIGxpY2Vuc2UgY29uZmxp Y3QgZm9yIG5ldyBhZGRlZCBmaWxlcyBpbiBhIA0KPiA+IHBhdGNoLiBJdCB3aWxsIHJlcG9ydCBv dXQgZXJyb3JzIHdoZW4gbWVldGluZyBmaWxlcyB3aGljaCBhcmUgbm93IA0KPiA+IGNvbnRyaWJ1 dGVkIHVuZGVyIEJTRC0yLUNsYXVzZS0gUGF0ZW50IG9yIEJTRC0zLUNsYXVzZS1QYXRlbnQuDQo+ ID4NCj4gPiBDYzogU2VhbiBCcm9nYW4gPHNlYW4uYnJvZ2FuQG1pY3Jvc29mdC5jb20+DQo+ID4g Q2M6IEJyZXQgQmFya2VsZXcgPEJyZXQuQmFya2VsZXdAbWljcm9zb2Z0LmNvbT4NCj4gPiBDYzog TWljaGFlbCBEIEtpbm5leSA8bWljaGFlbC5kLmtpbm5leUBpbnRlbC5jb20+DQo+ID4gQ2M6IExp bWluZyBHYW8gPGxpbWluZy5nYW9AaW50ZWwuY29tPg0KPiA+IFNpZ25lZC1vZmYtYnk6IFNoZW5n bGVpIFpoYW5nIDxzaGVuZ2xlaS56aGFuZ0BpbnRlbC5jb20+DQo+ID4gLS0tDQo+ID4gIC5weXRv b2wvUGx1Z2luL0xpY2Vuc2VDaGVjay9MaWNlbnNlQ2hlY2sucHkgICB8IDExOA0KPiA+ICsrKysr KysrKysrKysrKysrKw0KPiA+ICAuLi4vTGljZW5zZUNoZWNrL0xpY2Vuc2VDaGVja19wbHVnX2lu LnlhbWwgICAgfCAgMTEgKysNCj4gPiAgLnB5dG9vbC9QbHVnaW4vTGljZW5zZUNoZWNrL1JlYWRt ZS5tZCAgICAgICAgIHwgIDE3ICsrKw0KPiA+ICAzIGZpbGVzIGNoYW5nZWQsIDE0NiBpbnNlcnRp b25zKCspDQo+ID4gIGNyZWF0ZSBtb2RlIDEwMDY0NA0KPiA+IC5weXRvb2wvUGx1Z2luL0xpY2Vu c2VDaGVjay9MaWNlbnNlQ2hlY2sucHkNCj4gPiAgY3JlYXRlIG1vZGUgMTAwNjQ0DQo+ID4gLnB5 dG9vbC9QbHVnaW4vTGljZW5zZUNoZWNrL0xpY2Vuc2VDaGVja19wbHVnX2luLnlhbWwNCj4gPiAg Y3JlYXRlIG1vZGUgMTAwNjQ0DQo+ID4gLnB5dG9vbC9QbHVnaW4vTGljZW5zZUNoZWNrL1JlYWRt ZS5tZA0KPiA+DQo+ID4gZGlmZiAtLWdpdCBhLy5weXRvb2wvUGx1Z2luL0xpY2Vuc2VDaGVjay9M aWNlbnNlQ2hlY2sucHkNCj4gPiBiLy5weXRvb2wvUGx1Z2luL0xpY2Vuc2VDaGVjay9MaWNlbnNl Q2hlY2sucHkNCj4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiA+IGluZGV4IDAwMDAwMDAwMDAw MC4uOTg5NDFkZGRhNzU4DQo+ID4gLS0tIC9kZXYvbnVsbA0KPiA+ICsrKyBiLy5weXRvb2wvUGx1 Z2luL0xpY2Vuc2VDaGVjay9MaWNlbnNlQ2hlY2sucHkNCj4gPiBAQCAtMCwwICsxLDExOCBAQA0K PiA+ICsjIEBmaWxlIExpY2Vuc2VDaGVjay5weQ0KPiA+ICsjDQo+ID4gKyMgQ29weXJpZ2h0IChj KSAyMDIwLCBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cw0KPiA+IHJlc2VydmVkLjxCUj4N Cj4gPiArIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTItQ2xhdXNlLVBhdGVudCAjIw0K PiA+ICsNCj4gPiAraW1wb3J0IG9zDQo+ID4gK2ltcG9ydCBsb2dnaW5nDQo+ID4gK2ltcG9ydCBy ZQ0KPiA+ICtmcm9tIGlvIGltcG9ydCBTdHJpbmdJTw0KPiA+ICtmcm9tIHR5cGluZyBpbXBvcnQg TGlzdCwgVHVwbGUNCj4gPiArZnJvbQ0KPiA+IGVkazJ0b29sZXh0LmVudmlyb25tZW50LnBsdWdp bnR5cGVzLmNpX2J1aWxkX3BsdWdpbg0KPiA+IGltcG9ydCBJQ2lCdWlsZFBsdWdpbg0KPiA+ICtm cm9tIGVkazJ0b29sZXh0LmVudmlyb25tZW50LnZhcl9kaWN0IGltcG9ydCBWYXJEaWN0IGZyb20g DQo+ID4gK2VkazJ0b29sbGliLnV0aWxpdHlfZnVuY3Rpb25zIGltcG9ydCBSdW5DbWQNCj4gPiAr DQo+ID4gKw0KPiA+ICtjbGFzcyBMaWNlbnNlQ2hlY2soSUNpQnVpbGRQbHVnaW4pOg0KPiA+ICsN Cj4gPiArICAgICIiIg0KPiA+ICsgICAgQSBDaUJ1aWxkUGx1Z2luIHRvIGNoZWNrIHRoZSBsaWNl bnNlIGZvciBuZXcgYWRkZWQNCj4gPiBmaWxlcy4NCj4gPiArDQo+ID4gKyAgICBDb25maWd1cmF0 aW9uIG9wdGlvbnM6DQo+ID4gKyAgICAiTGljZW5zZUNoZWNrIjogew0KPiA+ICsgICAgICAgICJJ Z25vcmVGaWxlcyI6IFtdDQo+ID4gKyAgICB9LA0KPiA+ICsgICAgIiIiDQo+ID4gKw0KPiA+ICsg ICAgbGljZW5zZV9mb3JtYXRfcHJlZmxpeCA9ICdTUERYLUxpY2Vuc2UtSWRlbnRpZmllcicNCj4g PiArDQo+ID4gKyAgICBic2QyX3BhdGVudCA9ICdCU0QtMi1DbGF1c2UtUGF0ZW50Jw0KPiA+ICsN Cj4gPiArICAgIGJzZDNfcGF0ZW50ID0gJ0JTRC0zLUNsYXVzZS1QYXRlbnQnDQo+ID4gKw0KPiA+ ICsgICAgUmVhZGRlZGZpbGVmb3JtYXQgPSByZS5jb21waWxlKHInXCtcK1wrIGJcLyguKiknKQ0K PiA+ICsNCj4gPiArICAgIGZpbGVfZXh0ZW5zaW9uX2xpc3QgPSBbIi5jIiwgIi5oIiwgIi5pbmYi LCAiLmRzYyIsDQo+ID4gIi5kZWMiLCAiLnB5IiwgIi5iYXQiLCAiLnNoIiwgIi51bmkiLCAiLnlh bWwiLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAiLmZkZiIsICIuaW5jIiwgInlt bCIsDQo+ID4gIi5hc20iLCAiLmFzbTE2IiwgIi5hc2wiLCAiLnZmciIsICIucyIsICIuUyIsICIu YXNsYyIsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICIubmFzbSIsICIubmFzbWIi LCAiLmlkZiIsDQo+ID4gIi5WZnIiLCAiLkgiXQ0KPiA+ICsNCj4gPiArICAgIGRlZiBHZXRUZXN0 TmFtZShzZWxmLCBwYWNrYWdlbmFtZTogc3RyLA0KPiA+IGVudmlyb25tZW50OiBWYXJEaWN0KSAt PiB0dXBsZToNCj4gPiArICAgICAgICAiIiIgUHJvdmlkZSB0aGUgdGVzdGNhc2UgbmFtZSBhbmQg Y2xhc3NuYW1lIGZvcg0KPiA+IHVzZSBpbiByZXBvcnRpbmcNCj4gPiArICAgICAgICAgICAgdGVz dGNsYXNzbmFtZTogYSBkZXNjcmlwdGl2ZSBzdHJpbmcgZm9yIHRoZQ0KPiA+IHRlc3RjYXNlIGNh biBpbmNsdWRlIHdoaXRlc3BhY2UNCj4gPiArICAgICAgICAgICAgY2xhc3NuYW1lOiBzaG91bGQg YmUgcGF0dGVybmVkDQo+ID4gPHBhY2thZ2VuYW1lPi48cGx1Z2luPi48b3B0aW9uYWxseSBhbnkg dW5pcXVlIGNvbmRpdGlvbj4NCj4gPiArDQo+ID4gKyAgICAgICAgICAgIEFyZ3M6DQo+ID4gKyAg ICAgICAgICAgICAgcGFja2FnZW5hbWU6IHN0cmluZyBjb250YWluaW5nIG5hbWUgb2YNCj4gPiBw YWNrYWdlIHRvIGJ1aWxkDQo+ID4gKyAgICAgICAgICAgICAgZW52aXJvbm1lbnQ6IFRoZSBWYXJE aWN0IGZvciB0aGUgdGVzdCB0bw0KPiA+IHJ1biBpbg0KPiA+ICsgICAgICAgICAgICBSZXR1cm5z Og0KPiA+ICsgICAgICAgICAgICAgICAgYSB0dXBsZSBjb250YWluaW5nIHRoZSB0ZXN0Y2FzZSBu YW1lDQo+ID4gYW5kIHRoZSBjbGFzc25hbWUNCj4gPiArICAgICAgICAgICAgICAgICh0ZXN0Y2Fz ZW5hbWUsIGNsYXNzbmFtZSkNCj4gPiArICAgICAgICAiIiINCj4gPiArICAgICAgICByZXR1cm4g KCJDaGVjayBmb3IgbGljZW5zZSBmb3IgIiArIHBhY2thZ2VuYW1lLA0KPiA+IHBhY2thZ2VuYW1l ICsgIi5MaWNlbnNlQ2hlY2siKQ0KPiA+ICsNCj4gPiArICAgICMjDQo+ID4gKyAgICAjIEV4dGVy bmFsIGZ1bmN0aW9uIG9mIHBsdWdpbi4gIFRoaXMgZnVuY3Rpb24gaXMNCj4gPiB1c2VkIHRvIHBl cmZvcm0gdGhlIHRhc2sgb2YgdGhlIGNpX2J1aWxkX3BsdWdpbiBQbHVnaW4NCj4gPiArICAgICMN Cj4gPiArICAgICMgICAtIHBhY2thZ2UgaXMgdGhlIGVkazIgcGF0aCB0byBwYWNrYWdlLiAgVGhp cw0KPiA+IG1lYW5zIHdvcmtzcGFjZS9wYWNrYWdlcGF0aCByZWxhdGl2ZS4NCj4gPiArICAgICMg ICAtIGVkazJwYXRoIG9iamVjdCBjb25maWd1cmVkIHdpdGggd29ya3NwYWNlIGFuZA0KPiA+IHBh Y2thZ2VzIHBhdGgNCj4gPiArICAgICMgICAtIFBrZ0NvbmZpZyBPYmplY3QgKGRpY3QpIGZvciB0 aGUgcGtnDQo+ID4gKyAgICAjICAgLSBFbnZDb25maWcgT2JqZWN0DQo+ID4gKyAgICAjICAgLSBQ bHVnaW4gTWFuYWdlciBJbnN0YW5jZQ0KPiA+ICsgICAgIyAgIC0gUGx1Z2luIEhlbHBlciBPYmog SW5zdGFuY2UNCj4gPiArICAgICMgICAtIEp1bml0IExvZ2dlcg0KPiA+ICsgICAgIyAgIC0gb3V0 cHV0X3N0cmVhbSB0aGUgU3RyaW5nSU8gb3V0cHV0IHN0cmVhbSBmcm9tDQo+ID4gdGhpcyBwbHVn aW4gdmlhIGxvZ2dpbmcNCj4gPiArICAgIGRlZiBSdW5CdWlsZFBsdWdpbihzZWxmLCBwYWNrYWdl bmFtZSwgRWRrMnBhdGhPYmosDQo+ID4gcGtnY29uZmlnLCBlbnZpcm9ubWVudCwgUExNLCBQTE1I ZWxwZXIsIHRjLA0KPiA+IG91dHB1dF9zdHJlYW09Tm9uZSk6DQo+ID4gKyAgICAgICAgcmV0dXJu X2J1ZmZlciA9IFN0cmluZ0lPKCkNCj4gPiArICAgICAgICBwYXJhbXMgPSAiZGlmZiAtLXVuaWZp ZWQ9MCBvcmlnaW4vbWFzdGVyIEhFQUQiDQo+ID4gKyAgICAgICAgUnVuQ21kKCJnaXQiLCBwYXJh bXMsIG91dHN0cmVhbT1yZXR1cm5fYnVmZmVyKQ0KPiA+ICsgICAgICAgIHAgPSByZXR1cm5fYnVm ZmVyLmdldHZhbHVlKCkuc3RyaXAoKQ0KPiA+ICsgICAgICAgIHBhdGNoID0gcC5zcGxpdCgiXG4i KQ0KPiA+ICsgICAgICAgIHJldHVybl9idWZmZXIuY2xvc2UoKQ0KPiA+ICsNCj4gPiArICAgICAg ICBpZ25vcmVfZmlsZXMgPSBbXQ0KPiA+ICsgICAgICAgIGlmICJJZ25vcmVGaWxlcyIgaW4gcGtn Y29uZmlnOg0KPiA+ICsgICAgICAgICAgICBpZ25vcmVfZmlsZXMgPSBwa2djb25maWdbIklnbm9y ZUZpbGVzIl0NCj4gPiArDQo+ID4gKyAgICAgICAgc2VsZi5vayA9IFRydWUNCj4gPiArICAgICAg ICBzZWxmLnN0YXJ0Y2hlY2sgPSBGYWxzZQ0KPiA+ICsgICAgICAgIHNlbGYubGljZW5zZSA9IFRy dWUNCj4gPiArICAgICAgICBzZWxmLmFsbF9maWxlX3Bhc3MgPSBUcnVlDQo+ID4gKyAgICAgICAg Y291bnQgPSBsZW4ocGF0Y2gpDQo+ID4gKyAgICAgICAgbGluZV9pbmRleCA9IDANCj4gPiArICAg ICAgICBmb3IgbGluZSBpbiBwYXRjaDoNCj4gPiArICAgICAgICAgICAgaWYgbGluZS5zdGFydHN3 aXRoKCctLS0gL2Rldi9udWxsJyk6DQo+ID4gKyAgICAgICAgICAgICAgICBuZXh0bGluZSA9IHBh dGNoW2xpbmVfaW5kZXggKyAxXQ0KPiA+ICsgICAgICAgICAgICAgICAgYWRkZWRfZmlsZSA9DQo+ ID4gc2VsZi5SZWFkZGVkZmlsZWZvcm1hdC5zZWFyY2gobmV4dGxpbmUpLmdyb3VwKDEpDQo+ID4g KyAgICAgICAgICAgICAgICBhZGRlZF9maWxlX2V4dGVuc2lvbiA9DQo+ID4gb3MucGF0aC5zcGxp dGV4dChhZGRlZF9maWxlKVsxXQ0KPiA+ICsgICAgICAgICAgICAgICAgaWYgYWRkZWRfZmlsZV9l eHRlbnNpb24gaW4NCj4gPiBzZWxmLmZpbGVfZXh0ZW5zaW9uX2xpc3QgYW5kIHBhY2thZ2VuYW1l IGluIGFkZGVkX2ZpbGU6DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgaWYgKHNlbGYuSXNJZ25v cmVGaWxlKGFkZGVkX2ZpbGUsDQo+ID4gaWdub3JlX2ZpbGVzKSk6DQo+ID4gKyAgICAgICAgICAg ICAgICAgICAgICAgIGxpbmVfaW5kZXggPSBsaW5lX2luZGV4ICsgMQ0KPiA+ICsgICAgICAgICAg ICAgICAgICAgICAgICBjb250aW51ZQ0KPiA+ICsgICAgICAgICAgICAgICAgICAgIHNlbGYuc3Rh cnRjaGVjayA9IFRydWUNCj4gPiArICAgICAgICAgICAgICAgICAgICBzZWxmLmxpY2Vuc2UgPSBG YWxzZQ0KPiA+ICsgICAgICAgICAgICBpZiBzZWxmLnN0YXJ0Y2hlY2sgYW5kDQo+ID4gc2VsZi5s aWNlbnNlX2Zvcm1hdF9wcmVmbGl4IGluIGxpbmU6DQo+ID4gKyAgICAgICAgICAgICAgICBpZiBz ZWxmLmJzZDJfcGF0ZW50IGluIGxpbmUgb3INCj4gPiBzZWxmLmJzZDNfcGF0ZW50IGluIGxpbmU6 DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgc2VsZi5saWNlbnNlID0gVHJ1ZQ0KPiA+ICsgICAg ICAgICAgICBpZiBsaW5lX2luZGV4ICsgMSA9PSBjb3VudCBvcg0KPiA+IHBhdGNoW2xpbmVfaW5k ZXggKyAxXS5zdGFydHN3aXRoKCdkaWZmIC0tJykgYW5kDQo+ID4gc2VsZi5zdGFydGNoZWNrOg0K PiA+ICsgICAgICAgICAgICAgICAgaWYgbm90IHNlbGYubGljZW5zZToNCj4gPiArICAgICAgICAg ICAgICAgICAgICBzZWxmLmFsbF9maWxlX3Bhc3MgPSBGYWxzZQ0KPiA+ICsgICAgICAgICAgICAg ICAgICAgIGVycm9yX21lc3NhZ2UgPSAiSW52YWxpZCBsaWNlbnNlDQo+ID4gaW46ICIgKyBhZGRl ZF9maWxlICsgIiBIaW50OiBPbmx5IEJTRC0yLUNsYXVzZS1QYXRlbnQgYW5kIiArIFwNCj4gPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiBCU0QtMy1DbGF1c2UtDQo+ID4g UGF0ZW50IGFyZSBhY2NlcHRlZC4iDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgbG9nZ2luZy5l cnJvcihlcnJvcl9tZXNzYWdlKQ0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGFydGNoZWNr ID0gRmFsc2UNCj4gPiArICAgICAgICAgICAgICAgIHNlbGYubGljZW5zZSA9IFRydWUNCj4gPiAr ICAgICAgICAgICAgbGluZV9pbmRleCA9IGxpbmVfaW5kZXggKyAxDQo+ID4gKw0KPiA+ICsgICAg ICAgIGlmIHNlbGYuYWxsX2ZpbGVfcGFzczoNCj4gPiArICAgICAgICAgICAgdGMuU2V0U3VjY2Vz cygpDQo+ID4gKyAgICAgICAgICAgIHJldHVybiAwDQo+ID4gKyAgICAgICAgZWxzZToNCj4gPiAr ICAgICAgICAgICAgdGMuU2V0RmFpbGVkKCJMaWNlbnNlIENoZWNrIHswfSBGYWlsZWQuDQo+ID4g Ii5mb3JtYXQocGFja2FnZW5hbWUpLCAiTElDRU5TRV9DSEVDS19GQUlMRUQiKQ0KPiA+ICsgICAg ICAgICAgICByZXR1cm4gMQ0KPiA+ICsNCj4gPiArICAgIGRlZiBJc0lnbm9yZUZpbGUoc2VsZiwg ZmlsZTogc3RyLCBpZ25vcmVfZmlsZXM6DQo+ID4gTGlzdFtzdHJdKSAtPiBib29sOg0KPiA+ICsg ICAgICAgIGZvciBmIGluIGlnbm9yZV9maWxlczoNCj4gPiArICAgICAgICAgICAgaWYgZiBpbiBm aWxlOg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIFRydWUNCj4gPiArICAgICAgICByZXR1 cm4gRmFsc2UNCj4gPiBkaWZmIC0tZ2l0DQo+ID4gYS8ucHl0b29sL1BsdWdpbi9MaWNlbnNlQ2hl Y2svTGljZW5zZUNoZWNrX3BsdWdfaW4ueWFtbA0KPiA+IGIvLnB5dG9vbC9QbHVnaW4vTGljZW5z ZUNoZWNrL0xpY2Vuc2VDaGVja19wbHVnX2luLnlhbWwNCj4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0 NA0KPiA+IGluZGV4IDAwMDAwMDAwMDAwMC4uMWQwMmY2ZGE1YTY5DQo+ID4gLS0tIC9kZXYvbnVs bA0KPiA+ICsrKw0KPiA+IGIvLnB5dG9vbC9QbHVnaW4vTGljZW5zZUNoZWNrL0xpY2Vuc2VDaGVj a19wbHVnX2luLnlhbWwNCj4gPiBAQCAtMCwwICsxLDExIEBADQo+ID4gKyMjIEBmaWxlDQo+ID4g KyMgQ2lCdWlsZFBsdWdpbiB1c2VkIHRvIGNoZWNrIGxpY2Vuc2UgaXNzdWVzIGZvciBuZXcNCj4g PiBhZGRlZCBmaWxlcw0KPiA+ICsjDQo+ID4gKyMgQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQgQ29y cG9yYXRpb24uDQo+ID4gKyMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0yLUNsYXVzZS1Q YXRlbnQgIyMgew0KPiA+ICsgICJzY29wZSI6ICJjaWJ1aWxkIiwNCj4gPiArICAibmFtZSI6ICJM aWNlbnNlIENoZWNrIFRlc3QiLA0KPiA+ICsgICJtb2R1bGUiOiAiTGljZW5zZUNoZWNrIg0KPiA+ ICt9DQo+ID4gZGlmZiAtLWdpdCBhLy5weXRvb2wvUGx1Z2luL0xpY2Vuc2VDaGVjay9SZWFkbWUu bWQNCj4gPiBiLy5weXRvb2wvUGx1Z2luL0xpY2Vuc2VDaGVjay9SZWFkbWUubWQNCj4gPiBuZXcg ZmlsZSBtb2RlIDEwMDY0NA0KPiA+IGluZGV4IDAwMDAwMDAwMDAwMC4uNTdkOWRiNjc2OWZhDQo+ ID4gLS0tIC9kZXYvbnVsbA0KPiA+ICsrKyBiLy5weXRvb2wvUGx1Z2luL0xpY2Vuc2VDaGVjay9S ZWFkbWUubWQNCj4gPiBAQCAtMCwwICsxLDE3IEBADQo+ID4gKyMgTGljZW5zZSBDaGVjayBQbHVn aW4NCj4gPiArDQo+ID4gK1RoaXMgQ2lCdWlsZFBsdWdpbiBzY2FucyBhbGwgbmV3IGFkZGVkIGZp bGVzIGluIGENCj4gPiBwYWNrYWdlIHRvIG1ha2Ugc3VyZSBjb2RlDQo+ID4gK2lzIGNvbnRyaWJ1 dGVkIHVuZGVyIEJTRC0yLUNsYXVzZS1QYXRlbnQgb3IgQlNELTMtDQo+ID4gQ2xhdXNlLVBhdGVu dC4NCj4gPiArDQo+ID4gKyMjIENvbmZpZ3VyYXRpb24NCj4gPiArDQo+ID4gK1RoZSBwbHVnaW4g Y2FuIGJlIGNvbmZpZ3VyZWQgdG8gaWdub3JlIGNlcnRhaW4gZmlsZXMuDQo+ID4gKw0KPiA+ICtg YGAgeWFtbA0KPiA+ICsiTGljZW5zZUNoZWNrIjogew0KPiA+ICsgICAgIklnbm9yZUZpbGVzIjog W10NCj4gPiArfQ0KPiA+ICtgYGANCj4gPiArIyMjIElnbm9yZUZpbGVzDQo+ID4gKw0KPiA+ICtP UFRJT05BTCBMaXN0IG9mIGZpbGUgdG8gaWdub3JlLg0KPiA+IC0tDQo+ID4gMi4xOC4wLndpbmRv d3MuMQ0KDQo=