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.web10.2394.1596670359497144131 for ; Wed, 05 Aug 2020 16:32:39 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@intel.onmicrosoft.com header.s=selector2-intel-onmicrosoft-com header.b=CsbFTLjv; spf=pass (domain: intel.com, ip: 134.134.136.65, mailfrom: michael.d.kinney@intel.com) IronPort-SDR: tBXpwnD0RkDrzKu7d8iauojOAKXPp7EvIHph4KBg+W/1FzWt3ro6SVqLm1CBp8AfAtA1t44eVE smfEUdsoaaIQ== X-IronPort-AV: E=McAfee;i="6000,8403,9704"; a="152645524" X-IronPort-AV: E=Sophos;i="5.75,439,1589266800"; d="scan'208";a="152645524" X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga006.jf.intel.com ([10.7.209.51]) by orsmga103.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 05 Aug 2020 16:32:38 -0700 IronPort-SDR: b7/gTrsJwR44VRkmKLyh6CTyDWWDe0yaQjocxMq5xQZ4vCn8VYKjuFxJzu1vQ1fJMHUqpaDUK/ neI4p5QPtJZg== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.75,439,1589266800"; d="scan'208";a="293114152" Received: from orsmsx604.amr.corp.intel.com ([10.22.229.17]) by orsmga006.jf.intel.com with ESMTP; 05 Aug 2020 16:32:37 -0700 Received: from orsmsx606.amr.corp.intel.com (10.22.229.19) by ORSMSX604.amr.corp.intel.com (10.22.229.17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1713.5; Wed, 5 Aug 2020 16:32:36 -0700 Received: from ORSEDG001.ED.cps.intel.com (10.7.248.4) by orsmsx606.amr.corp.intel.com (10.22.229.19) 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, 5 Aug 2020 16:32:36 -0700 Received: from NAM12-MW2-obe.outbound.protection.outlook.com (104.47.66.46) by edgegateway.intel.com (134.134.137.100) with Microsoft SMTP Server (TLS) id 14.3.439.0; Wed, 5 Aug 2020 16:30:14 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=hALvpOvUB42QHP0iH5TDTNcknIG/idAthtkfkVBXUt9p7nO4gDmWqC3YMghJIXx3p9tsJLzDby5r26gxS2mCh8W0o2UPYGYGky5LPPXkXom48a4xEOP41gKDUtQQ+eNdGiLEqfPiqNSpFkgp96nkJ3YjM8rP4rOjH5k6HAlHoltvR0lDLsR4+toDsURoEqWdV5unbwO5aJhj0JFH5rHhY7qZ3Ie4NEwFUWuGYqgV5VBzzlIwb11HZ+cduJHRlYGlSUoWR+pnB5QlJiXIAhpZp+D0GNm7V5txYLgeCUMQo04uVW1xSYjYtajE+3wpg0KJcCuVTB1+bqliyGH2fphp2w== 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=3QtyqjMCfLX4QnDsroZgzm6DWGrM0xsodtb4Zwr9QHQ=; b=iAQw6eeeB+bdls7r0DEPmwiarrWppy/qeqNHefuvuOdWXDXZUKHYiD5sOCSI3vJ0RRHuLa35f3XouDvK1xnCA61qF+vbHY8PzjroOPbU9Xs9Dx6AwzzPedZFKm8IUarI2huldZTFzT1gMYwA/yb/zgxprSIj+xFPYMyn/4N5whlIqbY/6UXfkZqrFlt+GDV4IrASKxE1RKnETAG3muPjhzOxIOfqqJssDCm9s3JV1V4VvVElJpSQ7splzRA6MQt4UuyK+wyhuPEr15pPHAEUzi7VphihGahvsBVxju6H3xxxM89swQzLbAIJ+WXpJcT+eB8C+O85b/uD0tH1tK5h/w== 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=3QtyqjMCfLX4QnDsroZgzm6DWGrM0xsodtb4Zwr9QHQ=; b=CsbFTLjvGubON+bl6A7/4Ukk4snFDXFAdvFpGNsqnCNzwRsAT6OgaociErNrssuZr41fetgRgt7+J1EB24UiThArYssgXmpJV2X7cDjvcykZsS4xW03U/+S07b+YDVqcq9VsMykVW+oAYRBa56PNx0QM+Dh1OATsNZqL4Q7ofQM= Received: from MN2PR11MB4461.namprd11.prod.outlook.com (2603:10b6:208:192::29) by MN2PR11MB4616.namprd11.prod.outlook.com (2603:10b6:208:26f::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3261.15; Wed, 5 Aug 2020 23:30:07 +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.3239.021; Wed, 5 Aug 2020 23:30:07 +0000 From: "Michael D Kinney" To: Michael Kubacki , "devel@edk2.groups.io" , "Kinney, Michael D" CC: "Gao, Liming" Subject: Re: [PATCH v1 7/7] FmpDevicePkg/FmpDxe: Improve function parameter validation Thread-Topic: [PATCH v1 7/7] FmpDevicePkg/FmpDxe: Improve function parameter validation Thread-Index: AQHWZujznt5/vD74c0eHQOmRqP+4eqkpwSbwgABC/QCAACzlcA== Date: Wed, 5 Aug 2020 23:30:07 +0000 Message-ID: References: <20200731031448.1103-1-michael.kubacki@outlook.com> In-Reply-To: Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-product: dlpe-windows dlp-reaction: no-action dlp-version: 11.5.1.3 authentication-results: outlook.com; dkim=none (message not signed) header.d=none;outlook.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: b341aec5-1589-496f-6be6-08d839977d3a x-ms-traffictypediagnostic: MN2PR11MB4616: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:3383; x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: qlNQH67JV2bv6NMRR/YzwwWx48ovOJ5K9FDPIQOVzNC/VMrLX1NjMjsLGpebKz2RYXzSxzVMPDlsR/aUxPkXcrr1bGWcS/c+SsSnEiyvtdBc3E0/78dNaw2CdR6x4gzYH8BPH6dPerA1o/u2AclScKopgq5bTKwE09koJ5It3T45hyk0uO844vfCsWlGIiFLZUHV7Setl40xdz2I9X/0j8Mz33YZ1DArn1/49FGQiVtX1A7np0rX+lSBUklXxY9QH7SjnVZLAJuuOnPhr10wJ7wZMoPzyex5RW2F4Fu/TNPVbHpyoEgss4lvXXMVXgJSuub7RY1Wn7BLWdQNT5DxPahIyHhYJgJFgPD44wU0YK3S18zg5LxKB3W6RZ3V272eu3uFtNno07Q62LTRo7Fb8g== 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)(39860400002)(136003)(376002)(346002)(396003)(366004)(30864003)(8936002)(26005)(5660300002)(2906002)(7696005)(107886003)(52536014)(71200400001)(478600001)(45080400002)(66446008)(86362001)(66556008)(6506007)(66476007)(4326008)(966005)(83380400001)(55016002)(66946007)(9686003)(186003)(316002)(8676002)(110136005)(53546011)(76116006)(64756008)(33656002);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata: ciLnJEAhAqnzrgeEUPGTwEfbqEP+ZU2f6E3piypsozWgiNPWgJERoYT14b5d3jfQ5WGk649XBL+d8KH650LI0XqbjXHiWoORgfpAgPMc/qO3uFc3f3yAzmGtuocklBW3saA/3Idog57jOt1UNrmxUdNSI46yH1Xd9/CV8icQ/Fhw+T/SyZmBf9pN/qfRXarD210XsQqPo3I2O67IKyw61BwRCxyy+reO/8FY5QqGAKWbYlNcCp4yCobE1zDwcTqLR4Ygtse6PcZveL8zW0twyzEdMnuBQiY6H9/6UT0ltzPFUROTMRzimxNQee+PVjvxdyaE+weE0EmyCHewqUmgVCEpQpabCibOP6gW4OCK9lthvlC9pxiTbBL4FYu99O+qU+uWe8PH3BdsSFYaZkDrGumiNW3DlcHKp9Qpe/0N3z055n9aNUSQx2YKdUZ+Y9tZvTiWjWDxeqh5rzm7UtCKbEcjJfx7RHXrR2jJ+MmlG88GVzgT/CiTMCRHwptuYWyZ0xZQzM2VfuNrDwEqpkEI6Pe54hvROcZWQpKOnVWwQxfSQsoX/9ynGbfLMNcdEadI24yPeMkEjglMrp/OUl/OOYbveBaJeBHYCsZa5yQ5INzMS4r73j1wMCQVREdufuImDgAFE9uC0J2Q9rMTZgi13Q== 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: b341aec5-1589-496f-6be6-08d839977d3a X-MS-Exchange-CrossTenant-originalarrivaltime: 05 Aug 2020 23:30:07.4841 (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: O4sVeBQOEO3k3sqGBZvjzBz7wnOliHsrnZOTGHSk65ypy5Ftv35QF2OOxSllAvquF/eUgWUZzvaTDFIrhgWBvXTITOhjks8bQ/oZp2quBgg= X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN2PR11MB4616 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 TWljaGFlbCwNCg0KVGhhdCBpcyBhIGdvb2QgcG9pbnQuICBJIG1pc3NlZCB0aGF0IGJlaGF2aW9y IGluIHNvbWUgb2YgdGhlIEFQSXMuDQoNCldoYXQgSSBhbHNvIG1pc3NlZCB3YXMgdGhhdCB0aGVz ZSBBUElzIGFyZSBkZWZpbmVkIGluIHRoZSBVRUZJIFNwZWMgYW5kIHRoZQ0KZGVzY3JpcHRpb24g b2YgdGhlIHJldHVybiBjb2RlcyBpcyBmcm9tIHRoZXJlIGFuZCBzaG91bGQgbWF0Y2ggdGhlIFVF RkkgU3BlYy4NCg0KVGhlIGltcGxlbWVudGF0aW9uIHNob3VsZCBiZSBjb25mb3JtYW50IHdpdGgg dGhlIFVFRkkgU3BlYy4gIElmIHlvdSBub3RpY2UNCmJlaGF2aW9yIHRoYXQgaXMgbm90IGNvbmZv cm1hbnQsIHRoZW4gd2UgbmVlZCB0byB1cGRhdGUgdGhlIGNvZGUgb3IgcG90ZW50aWFsbHkNCndv cmsgb24gc3BlYyB1cGRhdGVzLg0KDQpGb3IgdGhpcyBwYXRjaCBzZXJpZXMsIGxldOKAmXMgbWFr ZSBzdXJlIHRoZSBGaXJtd2FyZSBNYW5hZ2VtZW50IFByb3RvY29sIHNlcnZpY2UNCmhlYWRlcnMg bWF0Y2ggdGhlIFVFRkkgU3BlYy4NCg0KTWlrZQ0KDQo+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0t LS0tDQo+IEZyb206IE1pY2hhZWwgS3ViYWNraSA8bWljaGFlbC5rdWJhY2tpQG91dGxvb2suY29t Pg0KPiBTZW50OiBXZWRuZXNkYXksIEF1Z3VzdCA1LCAyMDIwIDE6NDMgUE0NCj4gVG86IEtpbm5l eSwgTWljaGFlbCBEIDxtaWNoYWVsLmQua2lubmV5QGludGVsLmNvbT47IGRldmVsQGVkazIuZ3Jv dXBzLmlvDQo+IENjOiBHYW8sIExpbWluZyA8bGltaW5nLmdhb0BpbnRlbC5jb20+DQo+IFN1Ympl Y3Q6IFJlOiBbUEFUQ0ggdjEgNy83XSBGbXBEZXZpY2VQa2cvRm1wRHhlOiBJbXByb3ZlIGZ1bmN0 aW9uIHBhcmFtZXRlciB2YWxpZGF0aW9uDQo+IA0KPiBIaSBNaWtlLA0KPiANCj4gU29tZSBvZiB0 aG9zZSBmdW5jdGlvbnMgY3VycmVudGx5IHJldHVybiBFRklfU1VDQ0VTUyBpZiBJbWFnZUluZGV4 IGlzDQo+IGludmFsaWQuIEV4YW1wbGU6DQo+IGh0dHBzOi8vZ2l0aHViLmNvbS90aWFub2NvcmUv ZWRrMi9ibG9iL21hc3Rlci9GbXBEZXZpY2VQa2cvRm1wRHhlL0ZtcER4ZS5jI0w4NTENCj4gDQo+ IEdpdmVuIHRoZSByZXF1ZXN0IHRvIHVwZGF0ZSB0aGUgRUZJX0lOVkFMSURfUEFSQU1FVEVSIHRl eHQgZm9yIHRob3NlDQo+IG90aGVyIGZ1bmN0aW9ucywgSSdtIGFzc3VtaW5nIHlvdSdkIGxpa2Ug bWUgdG8gbWFrZSB0aG9zZSByZXR1cm4NCj4gRUZJX0lOVkFMSURfUEFSQU1FVEVSIGxpa2Ugd2hh dCBHZXRUaGVJbWFnZSgpIGN1cnJlbnRseSBkb2VzIC0NCj4gaHR0cHM6Ly9naXRodWIuY29tL3Rp YW5vY29yZS9lZGsyL2Jsb2IvbWFzdGVyL0ZtcERldmljZVBrZy9GbXBEeGUvRm1wRHhlLmMjTDU3 Mz8NCj4gDQo+IFRoYW5rcywNCj4gTWljaGFlbA0KPiANCj4gT24gOC81LzIwMjAgOTo1MSBBTSwg S2lubmV5LCBNaWNoYWVsIEQgd3JvdGU6DQo+ID4gSGkgTWljaGFlbCwNCj4gPg0KPiA+IEEgZmV3 IG1pbm9yIGNvbW1lbnRzIGluY2x1ZGVkIGJlbG93LiAgV2l0aCB0aG9zZSB1cGRhdGVzLA0KPiA+ DQo+ID4gUmV2aWV3ZWQtYnY6IE1pY2hhZWwgRCBLaW5uZXkgPG1pY2hhZWwuZC5raW5uZXlAaW50 ZWwuY29tPg0KPiA+DQo+ID4gTWlrZQ0KPiA+DQo+ID4+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0t LS0tDQo+ID4+IEZyb206IG1pY2hhZWwua3ViYWNraUBvdXRsb29rLmNvbSA8bWljaGFlbC5rdWJh Y2tpQG91dGxvb2suY29tPg0KPiA+PiBTZW50OiBUaHVyc2RheSwgSnVseSAzMCwgMjAyMCA4OjE1 IFBNDQo+ID4+IFRvOiBkZXZlbEBlZGsyLmdyb3Vwcy5pbw0KPiA+PiBDYzogR2FvLCBMaW1pbmcg PGxpbWluZy5nYW9AaW50ZWwuY29tPjsgS2lubmV5LCBNaWNoYWVsIEQgPG1pY2hhZWwuZC5raW5u ZXlAaW50ZWwuY29tPg0KPiA+PiBTdWJqZWN0OiBbUEFUQ0ggdjEgNy83XSBGbXBEZXZpY2VQa2cv Rm1wRHhlOiBJbXByb3ZlIGZ1bmN0aW9uIHBhcmFtZXRlciB2YWxpZGF0aW9uDQo+ID4+DQo+ID4+ IEZyb206IE1pY2hhZWwgS3ViYWNraSA8bWljaGFlbC5rdWJhY2tpQG1pY3Jvc29mdC5jb20+DQo+ ID4+DQo+ID4+IFJFRjpodHRwczovL2J1Z3ppbGxhLnRpYW5vY29yZS5vcmcvc2hvd19idWcuY2dp P2lkPTI4NjkNCj4gPj4NCj4gPj4gTWFrZXMgc29tZSBtaW5vciBpbXByb3ZlbWVudHMgdG8gZnVu Y3Rpb24gcGFyYW1ldGVyIHZhbGlkYXRpb24NCj4gPj4gaW4gRm1wRHhlLCBpbiBwYXJ0aWN1bGFy IHRvIGV4dGVybmFsbHkgZXhwb3NlZCBmdW5jdGlvbnMgc3VjaA0KPiA+PiBhcyB0aG9zZSB0aGF0 IGJhY2sgRUZJX0ZJUk1XQVJFX01BTkFHRU1FTlRfUFJPVE9DT0wuDQo+ID4+DQo+ID4+IENjOiBM aW1pbmcgR2FvIDxsaW1pbmcuZ2FvQGludGVsLmNvbT4NCj4gPj4gQ2M6IE1pY2hhZWwgRCBLaW5u ZXkgPG1pY2hhZWwuZC5raW5uZXlAaW50ZWwuY29tPg0KPiA+PiBTaWduZWQtb2ZmLWJ5OiBNaWNo YWVsIEt1YmFja2kgPG1pY2hhZWwua3ViYWNraUBtaWNyb3NvZnQuY29tPg0KPiA+PiAtLS0NCj4g Pj4gICBGbXBEZXZpY2VQa2cvRm1wRHhlL0ZtcER4ZS5jIHwgNTYgKysrKysrKysrKysrKysrKyst LS0NCj4gPj4gICBGbXBEZXZpY2VQa2cvRm1wRHhlL0ZtcER4ZS5oIHwgMTAgKystLQ0KPiA+PiAg IDIgZmlsZXMgY2hhbmdlZCwgNTQgaW5zZXJ0aW9ucygrKSwgMTIgZGVsZXRpb25zKC0pDQo+ID4+ DQo+ID4+IGRpZmYgLS1naXQgYS9GbXBEZXZpY2VQa2cvRm1wRHhlL0ZtcER4ZS5jIGIvRm1wRGV2 aWNlUGtnL0ZtcER4ZS9GbXBEeGUuYw0KPiA+PiBpbmRleCBhM2UzNDI1OTE5MzYuLjk1OGQ5YjM5 NGI3MSAxMDA2NDQNCj4gPj4gLS0tIGEvRm1wRGV2aWNlUGtnL0ZtcER4ZS9GbXBEeGUuYw0KPiA+ PiArKysgYi9GbXBEZXZpY2VQa2cvRm1wRHhlL0ZtcER4ZS5jDQo+ID4+IEBAIC0yNzgsNiArMjc4 LDExIEBAIFBvcHVsYXRlRGVzY3JpcHRvciAoDQo+ID4+ICAgICBFRklfU1RBVFVTICBTdGF0dXM7 DQo+ID4+ICAgICBVSU5UMzIgICAgICBEZXBlbmRlbmNpZXNTaXplOw0KPiA+Pg0KPiA+PiArICBp ZiAoUHJpdmF0ZSA9PSBOVUxMKSB7DQo+ID4+ICsgICAgREVCVUcgKChERUJVR19FUlJPUiwgIkZt cER4ZSglcyk6IFBvcHVsYXRlRGVzY3JpcHRvcigpIC0gUHJpdmF0ZSBpcyBOVUxMLlxuIiwgbUlt YWdlSWROYW1lKSk7DQo+ID4+ICsgICAgcmV0dXJuOw0KPiA+PiArICB9DQo+ID4+ICsNCj4gPj4g ICAgIGlmIChQcml2YXRlLT5EZXNjcmlwdG9yUG9wdWxhdGVkKSB7DQo+ID4+ICAgICAgIHJldHVy bjsNCj4gPj4gICAgIH0NCj4gPj4gQEAgLTQyOSw3ICs0MzQsNyBAQCBQb3B1bGF0ZURlc2NyaXB0 b3IgKA0KPiA+PiAgICAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICAgICAgICAgICBUaGUgZGV2 aWNlIHdhcyBzdWNjZXNzZnVsbHkgdXBkYXRlZCB3aXRoIHRoZSBuZXcgaW1hZ2UuDQo+ID4+ICAg ICBAcmV0dmFsIEVGSV9CVUZGRVJfVE9PX1NNQUxMICAgICAgIFRoZSBJbWFnZUluZm8gYnVmZmVy IHdhcyB0b28gc21hbGwuIFRoZSBjdXJyZW50IGJ1ZmZlciBzaXplDQo+ID4+ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5lZWRlZCB0byBob2xkIHRoZSBpbWFnZShzKSBp bmZvcm1hdGlvbiBpcyByZXR1cm5lZCBpbiBJbWFnZUluZm9TaXplLg0KPiA+PiAtICBAcmV0dmFs IEVGSV9JTlZBTElEX1BBUkFNRVRFUiAgICAgIEltYWdlSW5mb1NpemUgaXMgTlVMTC4NCj4gPj4g KyAgQHJldHZhbCBFRklfSU5WQUxJRF9QQVJBTUVURVIgICAgICBBIHJlcXVpcmVkIHBvaW50ZXIg aXMgTlVMTC4NCj4gPj4gICAgIEByZXR2YWwgRUZJX0RFVklDRV9FUlJPUiAgICAgICAgICAgVmFs aWQgaW5mb3JtYXRpb24gY291bGQgbm90IGJlIHJldHVybmVkLiBQb3NzaWJsZSBjb3JydXB0ZWQg aW1hZ2UuDQo+ID4+DQo+ID4+ICAgKiovDQo+ID4+IEBAIC00NTEsNiArNDU2LDEyIEBAIEdldFRo ZUltYWdlSW5mbyAoDQo+ID4+DQo+ID4+ICAgICBTdGF0dXMgPSBFRklfU1VDQ0VTUzsNCj4gPj4N Cj4gPj4gKyAgaWYgKFRoaXMgPT0gTlVMTCkgew0KPiA+PiArICAgIERFQlVHICgoREVCVUdfRVJS T1IsICJGbXBEeGUoJXMpOiBHZXRJbWFnZUluZm8oKSAtIFRoaXMgaXMgTlVMTC5cbiIsIG1JbWFn ZUlkTmFtZSkpOw0KPiA+PiArICAgIFN0YXR1cyA9IEVGSV9JTlZBTElEX1BBUkFNRVRFUjsNCj4g Pj4gKyAgICBnb3RvIGNsZWFudXA7DQo+ID4+ICsgIH0NCj4gPj4gKw0KPiA+PiAgICAgLy8NCj4g Pj4gICAgIC8vIFJldHJpZXZlIHRoZSBwcml2YXRlIGNvbnRleHQgc3RydWN0dXJlDQo+ID4+ICAg ICAvLw0KPiA+PiBAQCAtNTM2LDcgKzU0Nyw3IEBAIEdldFRoZUltYWdlSW5mbyAoDQo+ID4+ICAg ICBAcmV0dmFsIEVGSV9CVUZGRVJfVE9PX1NNQUxMICAgVGhlIGJ1ZmZlciBzcGVjaWZpZWQgYnkg SW1hZ2VTaXplIGlzIHRvbyBzbWFsbCB0byBob2xkIHRoZQ0KPiA+PiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGltYWdlLiBUaGUgY3VycmVudCBidWZmZXIgc2l6ZSBuZWVkZWQg dG8gaG9sZCB0aGUgaW1hZ2UgaXMgcmV0dXJuZWQNCj4gPj4gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBpbiBJbWFnZVNpemUuDQo+ID4+IC0gIEByZXR2YWwgRUZJX0lOVkFMSURf UEFSQU1FVEVSICBUaGUgSW1hZ2Ugd2FzIE5VTEwuDQo+ID4+ICsgIEByZXR2YWwgRUZJX0lOVkFM SURfUEFSQU1FVEVSICBBIHJlcXVpcmVkIHBvaW50ZXIgaXMgTlVMTCBvciBJbWFnZUluZGV4IGlz IGludmFsaWQuDQo+ID4+ICAgICBAcmV0dmFsIEVGSV9OT1RfRk9VTkQgICAgICAgICAgVGhlIGN1 cnJlbnQgaW1hZ2UgaXMgbm90IGNvcGllZCB0byB0aGUgYnVmZmVyLg0KPiA+PiAgICAgQHJldHZh bCBFRklfVU5TVVBQT1JURUQgICAgICAgIFRoZSBvcGVyYXRpb24gaXMgbm90IHN1cHBvcnRlZC4N Cj4gPj4gICAgIEByZXR2YWwgRUZJX1NFQ1VSSVRZX1ZJT0xBVElPTiBUaGUgb3BlcmF0aW9uIGNv dWxkIG5vdCBiZSBwZXJmb3JtZWQgZHVlIHRvIGFuIGF1dGhlbnRpY2F0aW9uIGZhaWx1cmUuDQo+ ID4+IEBAIC01NjEsNiArNTcyLDEyIEBAIEdldFRoZUltYWdlICgNCj4gPj4NCj4gPj4gICAgIFN0 YXR1cyA9IEVGSV9TVUNDRVNTOw0KPiA+Pg0KPiA+PiArICBpZiAoVGhpcyA9PSBOVUxMKSB7DQo+ ID4+ICsgICAgREVCVUcgKChERUJVR19FUlJPUiwgIkZtcER4ZSglcyk6IEdldEltYWdlKCkgLSBU aGlzIGlzIE5VTEwuXG4iLCBtSW1hZ2VJZE5hbWUpKTsNCj4gPj4gKyAgICBTdGF0dXMgPSBFRklf SU5WQUxJRF9QQVJBTUVURVI7DQo+ID4+ICsgICAgZ290byBjbGVhbnVwOw0KPiA+PiArICB9DQo+ ID4+ICsNCj4gPj4gICAgIC8vDQo+ID4+ICAgICAvLyBSZXRyaWV2ZSB0aGUgcHJpdmF0ZSBjb250 ZXh0IHN0cnVjdHVyZQ0KPiA+PiAgICAgLy8NCj4gPj4gQEAgLTYxNSw3ICs2MzIsOCBAQCBHZXRU aGVJbWFnZSAoDQo+ID4+ICAgICBAcGFyYW1baW5dICAgSW1hZ2UgICAgICAgICAgICAgICAgIFBv aW50ZXIgdG8gdGhlIGltYWdlLg0KPiA+PiAgICAgQHBhcmFtW2luXSAgIEltYWdlU2l6ZSAgICAg ICAgICAgICBTaXplIG9mIHRoZSBpbWFnZS4NCj4gPj4gICAgIEBwYXJhbVtpbl0gICBBZGRpdGlv bmFsSGVhZGVyU2l6ZSAgU2l6ZSBvZiBhbnkgaGVhZGVycyB0aGF0IGNhbm5vdCBiZSBjYWxjdWxh dGVkIGJ5IHRoaXMgZnVuY3Rpb24uDQo+ID4+IC0gIEBwYXJhbVtvdXRdICBQYXlsb2FkU2l6ZQ0K PiA+PiArICBAcGFyYW1bb3V0XSAgUGF5bG9hZFNpemUgICAgICAgICAgIEFuIG9wdGlvbmFsIHBv aW50ZXIgdG8gYSBVSU5UTiB0aGF0IGhvbGRzIHRoZSBzaXplIG9mIHRoZSBwYXlsb2FkDQo+ID4+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGltYWdlIHNpemUgbWludXMg aGVhZGVycykNCj4gPj4NCj4gPj4gICAgIEByZXR2YWwgICFOVUxMICBWYWxpZCBwb2ludGVyIHRv IHRoZSBoZWFkZXIuDQo+ID4+ICAgICBAcmV0dmFsICBOVUxMICAgU3RydWN0dXJlIGlzIGJhZCBh bmQgcG9pbnRlciBjYW5ub3QgYmUgZm91bmQuDQo+ID4+IEBAIC02MjYsNyArNjQ0LDcgQEAgR2V0 Rm1wSGVhZGVyICgNCj4gPj4gICAgIElOICBDT05TVCBFRklfRklSTVdBUkVfSU1BR0VfQVVUSEVO VElDQVRJT04gICpJbWFnZSwNCj4gPj4gICAgIElOICBDT05TVCBVSU5UTiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIEltYWdlU2l6ZSwNCj4gPj4gICAgIElOICBDT05TVCBVSU5UTiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIEFkZGl0aW9uYWxIZWFkZXJTaXplLA0KPiA+PiAtICBP VVQgVUlOVE4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqUGF5bG9hZFNpemUN Cj4gPj4gKyAgT1VUIFVJTlROICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlBh eWxvYWRTaXplIE9QVElPTkFMDQo+ID4+ICAgICApDQo+ID4+ICAgew0KPiA+PiAgICAgLy8NCj4g Pj4gQEAgLTY0MCw3ICs2NTgsMTAgQEAgR2V0Rm1wSGVhZGVyICgNCj4gPj4gICAgICAgcmV0dXJu IE5VTEw7DQo+ID4+ICAgICB9DQo+ID4+DQo+ID4+IC0gICpQYXlsb2FkU2l6ZSA9IEltYWdlU2l6 ZSAtIChzaXplb2YgKEltYWdlLT5Nb25vdG9uaWNDb3VudCkgKyBJbWFnZS0+QXV0aEluZm8uSGRy LmR3TGVuZ3RoICsgQWRkaXRpb25hbEhlYWRlclNpemUpOw0KPiA+PiArICBpZiAoUGF5bG9hZFNp emUgIT0gTlVMTCkgew0KPiA+PiArICAgICpQYXlsb2FkU2l6ZSA9IEltYWdlU2l6ZSAtIChzaXpl b2YgKEltYWdlLT5Nb25vdG9uaWNDb3VudCkgKyBJbWFnZS0+QXV0aEluZm8uSGRyLmR3TGVuZ3Ro ICsgQWRkaXRpb25hbEhlYWRlclNpemUpOw0KPiA+PiArICB9DQo+ID4+ICsNCj4gPj4gICAgIHJl dHVybiAoVk9JRCAqKSgoVUlOVDggKilJbWFnZSArIHNpemVvZiAoSW1hZ2UtPk1vbm90b25pY0Nv dW50KSArIEltYWdlLT5BdXRoSW5mby5IZHIuZHdMZW5ndGggICsgQWRkaXRpb25hbEhlYWRlclNp emUpOw0KPiA+PiAgIH0NCj4gPj4NCj4gPj4gQEAgLTY2Myw2ICs2ODQsMTAgQEAgR2V0QWxsSGVh ZGVyU2l6ZSAoDQo+ID4+ICAgew0KPiA+PiAgICAgVUlOVDMyICBDYWxjdWxhdGVkU2l6ZTsNCj4g Pj4NCj4gPj4gKyAgaWYgKEltYWdlID09IE5VTEwpIHsNCj4gPg0KPiA+IFRoaXMgaXMgYW4gaW50 ZXJuYWwgaGVscGVyIGZ1bmN0aW9uLiAgSWYgSW1hZ2UgaXMgZXZlciBOVUxMLCBpdCBtdXN0IGJl IGEgYnVnIGluIHRoZQ0KPiA+IEZtcER4ZSBkcml2ZXIuICBTaG91bGQgd2UgZG8gbW9yZSB0aGFu IGp1c3QgcmV0dXJuIDA/ICBQZXJoYXBzIGEgREVCVUdfRVJST1IgbWVzc2FnZSB0b28/DQo+ID4N Cj4gPj4gKyAgICByZXR1cm4gMDsNCj4gPj4gKyAgfQ0KPiA+PiArDQo+ID4+ICAgICBDYWxjdWxh dGVkU2l6ZSA9IHNpemVvZiAoSW1hZ2UtPk1vbm90b25pY0NvdW50KSArDQo+ID4+ICAgICAgICAg ICAgICAgICAgICAgIEFkZGl0aW9uYWxIZWFkZXJTaXplICsNCj4gPj4gICAgICAgICAgICAgICAg ICAgICAgSW1hZ2UtPkF1dGhJbmZvLkhkci5kd0xlbmd0aDsNCj4gPj4gQEAgLTY5OCw3ICs3MjMs NyBAQCBHZXRBbGxIZWFkZXJTaXplICgNCj4gPj4NCj4gPj4gICAgIEByZXR2YWwgRUZJX1NVQ0NF U1MgICAgICAgICAgICBUaGUgaW1hZ2Ugd2FzIHN1Y2Nlc3NmdWxseSBjaGVja2VkLg0KPiA+PiAg ICAgQHJldHZhbCBFRklfQUJPUlRFRCAgICAgICAgICAgIFRoZSBvcGVyYXRpb24gaXMgYWJvcnRl ZC4NCj4gPj4gLSAgQHJldHZhbCBFRklfSU5WQUxJRF9QQVJBTUVURVIgIFRoZSBJbWFnZSB3YXMg TlVMTC4NCj4gPj4gKyAgQHJldHZhbCBFRklfSU5WQUxJRF9QQVJBTUVURVIgIEEgcmVxdWlyZWQg cG9pbnRlciBpcyBOVUxMLg0KPiA+DQo+ID4gVGhpcyBmdW5jdGlvbiBhbHNvIHVzZXMgSW1hZ2VJ bmRleC4gIFNpbWlsYXIgdG8gdXBkYXRlcyBhYm92ZSwgSSB0aGluayB0aGlzDQo+ID4gQHJldHZh bCBsaW5lIHNob3VsZCBiZToNCj4gPg0KPiA+ICAgIEByZXR2YWwgRUZJX0lOVkFMSURfUEFSQU1F VEVSICBBIHJlcXVpcmVkIHBvaW50ZXIgaXMgTlVMTCBvciBJbWFnZUluZGV4IGlzIGludmFsaWQu DQo+ID4NCj4gPj4gICAgIEByZXR2YWwgRUZJX1VOU1VQUE9SVEVEICAgICAgICBUaGUgb3BlcmF0 aW9uIGlzIG5vdCBzdXBwb3J0ZWQuDQo+ID4+ICAgICBAcmV0dmFsIEVGSV9TRUNVUklUWV9WSU9M QVRJT04gVGhlIG9wZXJhdGlvbiBjb3VsZCBub3QgYmUgcGVyZm9ybWVkIGR1ZSB0byBhbiBhdXRo ZW50aWNhdGlvbiBmYWlsdXJlLg0KPiA+Pg0KPiA+PiBAQCAtNzQzLDYgKzc2OCwxMiBAQCBDaGVj a1RoZUltYWdlICgNCj4gPj4gICAgICAgcmV0dXJuIEVGSV9VTlNVUFBPUlRFRDsNCj4gPj4gICAg IH0NCj4gPj4NCj4gPj4gKyAgaWYgKFRoaXMgPT0gTlVMTCkgew0KPiA+PiArICAgIERFQlVHICgo REVCVUdfRVJST1IsICJGbXBEeGUoJXMpOiBDaGVja0ltYWdlKCkgLSBUaGlzIGlzIE5VTEwuXG4i LCBtSW1hZ2VJZE5hbWUpKTsNCj4gPj4gKyAgICBTdGF0dXMgPSBFRklfSU5WQUxJRF9QQVJBTUVU RVI7DQo+ID4+ICsgICAgZ290byBjbGVhbnVwOw0KPiA+PiArICB9DQo+ID4+ICsNCj4gPj4gICAg IC8vDQo+ID4+ICAgICAvLyBSZXRyaWV2ZSB0aGUgcHJpdmF0ZSBjb250ZXh0IHN0cnVjdHVyZQ0K PiA+PiAgICAgLy8NCj4gPj4gQEAgLTk3OCw3ICsxMDA5LDcgQEAgQ2hlY2tUaGVJbWFnZSAoDQo+ ID4+DQo+ID4+ICAgICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgICAgICAgVGhlIGRldmljZSB3 YXMgc3VjY2Vzc2Z1bGx5IHVwZGF0ZWQgd2l0aCB0aGUgbmV3IGltYWdlLg0KPiA+PiAgICAgQHJl dHZhbCBFRklfQUJPUlRFRCAgICAgICAgICAgIFRoZSBvcGVyYXRpb24gaXMgYWJvcnRlZC4NCj4g Pj4gLSAgQHJldHZhbCBFRklfSU5WQUxJRF9QQVJBTUVURVIgIFRoZSBJbWFnZSB3YXMgTlVMTC4N Cj4gPj4gKyAgQHJldHZhbCBFRklfSU5WQUxJRF9QQVJBTUVURVIgIEEgcmVxdWlyZWQgcG9pbnRl ciBpcyBOVUxMLg0KPiA+DQo+ID4gVGhpcyBmdW5jdGlvbiBhbHNvIHVzZXMgSW1hZ2VJbmRleC4g IFNpbWlsYXIgdG8gdXBkYXRlcyBhYm92ZSwgSSB0aGluayB0aGlzDQo+ID4gQHJldHZhbCBsaW5l IHNob3VsZCBiZToNCj4gPg0KPiA+ICAgIEByZXR2YWwgRUZJX0lOVkFMSURfUEFSQU1FVEVSICBB IHJlcXVpcmVkIHBvaW50ZXIgaXMgTlVMTCBvciBJbWFnZUluZGV4IGlzIGludmFsaWQuDQo+ID4N Cj4gPj4gICAgIEByZXR2YWwgRUZJX1VOU1VQUE9SVEVEICAgICAgICBUaGUgb3BlcmF0aW9uIGlz IG5vdCBzdXBwb3J0ZWQuDQo+ID4+ICAgICBAcmV0dmFsIEVGSV9TRUNVUklUWV9WSU9MQVRJT04g VGhlIG9wZXJhdGlvbiBjb3VsZCBub3QgYmUgcGVyZm9ybWVkIGR1ZSB0byBhbiBhdXRoZW50aWNh dGlvbiBmYWlsdXJlLg0KPiA+Pg0KPiA+PiBAQCAtMTAyNiw2ICsxMDU3LDEyIEBAIFNldFRoZUlt YWdlICgNCj4gPj4gICAgICAgcmV0dXJuIEVGSV9VTlNVUFBPUlRFRDsNCj4gPj4gICAgIH0NCj4g Pj4NCj4gPj4gKyAgaWYgKFRoaXMgPT0gTlVMTCkgew0KPiA+PiArICAgIERFQlVHICgoREVCVUdf RVJST1IsICJGbXBEeGUoJXMpOiBTZXRUaGVJbWFnZSgpIC0gVGhpcyBpcyBOVUxMLlxuIiwgbUlt YWdlSWROYW1lKSk7DQo+ID4+ICsgICAgU3RhdHVzID0gRUZJX0lOVkFMSURfUEFSQU1FVEVSOw0K PiA+PiArICAgIGdvdG8gY2xlYW51cDsNCj4gPj4gKyAgfQ0KPiA+PiArDQo+ID4+ICAgICAvLw0K PiA+PiAgICAgLy8gUmV0cmlldmUgdGhlIHByaXZhdGUgY29udGV4dCBzdHJ1Y3R1cmUNCj4gPj4g ICAgIC8vDQo+ID4+IEBAIC0xMzgyLDYgKzE0MTksMTEgQEAgRm1wRHhlTG9ja0V2ZW50Tm90aWZ5 ICgNCj4gPj4gICAgIEVGSV9TVEFUVVMgICAgICAgICAgICAgICAgICAgICAgICBTdGF0dXM7DQo+ ID4+ICAgICBGSVJNV0FSRV9NQU5BR0VNRU5UX1BSSVZBVEVfREFUQSAgKlByaXZhdGU7DQo+ID4+ DQo+ID4+ICsgIGlmIChDb250ZXh0ID09IE5VTEwpIHsNCj4gPj4gKyAgICBBU1NFUlQgKENvbnRl eHQgIT0gTlVMTCk7DQo+ID4+ICsgICAgcmV0dXJuOw0KPiA+PiArICB9DQo+ID4+ICsNCj4gPj4g ICAgIFByaXZhdGUgPSAoRklSTVdBUkVfTUFOQUdFTUVOVF9QUklWQVRFX0RBVEEgKilDb250ZXh0 Ow0KPiA+Pg0KPiA+PiAgICAgaWYgKCFQcml2YXRlLT5GbXBEZXZpY2VMb2NrZWQpIHsNCj4gPj4g ZGlmZiAtLWdpdCBhL0ZtcERldmljZVBrZy9GbXBEeGUvRm1wRHhlLmggYi9GbXBEZXZpY2VQa2cv Rm1wRHhlL0ZtcER4ZS5oDQo+ID4+IGluZGV4IDMwNzU0ZGVhNDk1ZS4uNGRmZWMzMTZhNTU4IDEw MDY0NA0KPiA+PiAtLS0gYS9GbXBEZXZpY2VQa2cvRm1wRHhlL0ZtcER4ZS5oDQo+ID4+ICsrKyBi L0ZtcERldmljZVBrZy9GbXBEeGUvRm1wRHhlLmgNCj4gPj4gQEAgLTMsNyArMyw3IEBADQo+ID4+ ICAgICBpbWFnZSBzdG9yZWQgaW4gYSBmaXJtd2FyZSBkZXZpY2Ugd2l0aCBwbGF0Zm9ybSBhbmQg ZmlybXdhcmUgZGV2aWNlIHNwZWNpZmljDQo+ID4+ICAgICBpbmZvcm1hdGlvbiBwcm92aWRlZCB0 aHJvdWdoIFBDRHMgYW5kIGxpYnJhcmllcy4NCj4gPj4NCj4gPj4gLSAgQ29weXJpZ2h0IChjKSAy MDE2LCBNaWNyb3NvZnQgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuPEJSPg0KPiA+ PiArICBDb3B5cmlnaHQgKGMpIE1pY3Jvc29mdCBDb3Jwb3JhdGlvbi48QlI+DQo+ID4+ICAgICBD b3B5cmlnaHQgKGMpIDIwMTggLSAyMDE5LCBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyBy ZXNlcnZlZC48QlI+DQo+ID4+DQo+ID4+ICAgICBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNE LTItQ2xhdXNlLVBhdGVudA0KPiA+PiBAQCAtMTMyLDcgKzEzMiw3IEBAIERldGVjdFRlc3RLZXkg KA0KPiA+PiAgICAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICAgICAgICAgICBUaGUgZGV2aWNl IHdhcyBzdWNjZXNzZnVsbHkgdXBkYXRlZCB3aXRoIHRoZSBuZXcgaW1hZ2UuDQo+ID4+ICAgICBA cmV0dmFsIEVGSV9CVUZGRVJfVE9PX1NNQUxMICAgICAgIFRoZSBJbWFnZUluZm8gYnVmZmVyIHdh cyB0b28gc21hbGwuIFRoZSBjdXJyZW50IGJ1ZmZlciBzaXplDQo+ID4+ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIG5lZWRlZCB0byBob2xkIHRoZSBpbWFnZShzKSBpbmZv cm1hdGlvbiBpcyByZXR1cm5lZCBpbiBJbWFnZUluZm9TaXplLg0KPiA+PiAtICBAcmV0dmFsIEVG SV9JTlZBTElEX1BBUkFNRVRFUiAgICAgIEltYWdlSW5mb1NpemUgaXMgTlVMTC4NCj4gPj4gKyAg QHJldHZhbCBFRklfSU5WQUxJRF9QQVJBTUVURVIgICAgICBBIHJlcXVpcmVkIHBvaW50ZXIgaXMg TlVMTC4NCj4gPj4gICAgIEByZXR2YWwgRUZJX0RFVklDRV9FUlJPUiAgICAgICAgICAgVmFsaWQg aW5mb3JtYXRpb24gY291bGQgbm90IGJlIHJldHVybmVkLiBQb3NzaWJsZSBjb3JydXB0ZWQgaW1h Z2UuDQo+ID4+DQo+ID4+ICAgKiovDQo+ID4+IEBAIC0xNjYsNyArMTY2LDcgQEAgR2V0VGhlSW1h Z2VJbmZvICgNCj4gPj4gICAgIEByZXR2YWwgRUZJX0JVRkZFUl9UT09fU01BTEwgICBUaGUgYnVm ZmVyIHNwZWNpZmllZCBieSBJbWFnZVNpemUgaXMgdG9vIHNtYWxsIHRvIGhvbGQgdGhlDQo+ID4+ ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1hZ2UuIFRoZSBjdXJyZW50IGJ1 ZmZlciBzaXplIG5lZWRlZCB0byBob2xkIHRoZSBpbWFnZSBpcyByZXR1cm5lZA0KPiA+PiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIEltYWdlU2l6ZS4NCj4gPj4gLSAgQHJl dHZhbCBFRklfSU5WQUxJRF9QQVJBTUVURVIgIFRoZSBJbWFnZSB3YXMgTlVMTC4NCj4gPj4gKyAg QHJldHZhbCBFRklfSU5WQUxJRF9QQVJBTUVURVIgIEEgcmVxdWlyZWQgcG9pbnRlciBpcyBOVUxM IG9yIEltYWdlSW5kZXggaXMgaW52YWxpZC4NCj4gPj4gICAgIEByZXR2YWwgRUZJX05PVF9GT1VO RCAgICAgICAgICBUaGUgY3VycmVudCBpbWFnZSBpcyBub3QgY29waWVkIHRvIHRoZSBidWZmZXIu DQo+ID4+ICAgICBAcmV0dmFsIEVGSV9VTlNVUFBPUlRFRCAgICAgICAgVGhlIG9wZXJhdGlvbiBp cyBub3Qgc3VwcG9ydGVkLg0KPiA+PiAgICAgQHJldHZhbCBFRklfU0VDVVJJVFlfVklPTEFUSU9O IFRoZSBvcGVyYXRpb24gY291bGQgbm90IGJlIHBlcmZvcm1lZCBkdWUgdG8gYW4gYXV0aGVudGlj YXRpb24gZmFpbHVyZS4NCj4gPj4gQEAgLTE5OCw3ICsxOTgsNyBAQCBHZXRUaGVJbWFnZSAoDQo+ ID4+DQo+ID4+ICAgICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgICAgICAgVGhlIGltYWdlIHdh cyBzdWNjZXNzZnVsbHkgY2hlY2tlZC4NCj4gPj4gICAgIEByZXR2YWwgRUZJX0FCT1JURUQgICAg ICAgICAgICBUaGUgb3BlcmF0aW9uIGlzIGFib3J0ZWQuDQo+ID4+IC0gIEByZXR2YWwgRUZJX0lO VkFMSURfUEFSQU1FVEVSICBUaGUgSW1hZ2Ugd2FzIE5VTEwuDQo+ID4+ICsgIEByZXR2YWwgRUZJ X0lOVkFMSURfUEFSQU1FVEVSICBBIHJlcXVpcmVkIHBvaW50ZXIgaXMgTlVMTC4NCj4gPg0KPiA+ IFRoaXMgZnVuY3Rpb24gYWxzbyB1c2VzIEltYWdlSW5kZXguICBTaW1pbGFyIHRvIHVwZGF0ZXMg YWJvdmUsIEkgdGhpbmsgdGhpcw0KPiA+IEByZXR2YWwgbGluZSBzaG91bGQgYmU6DQo+ID4NCj4g PiAgICBAcmV0dmFsIEVGSV9JTlZBTElEX1BBUkFNRVRFUiAgQSByZXF1aXJlZCBwb2ludGVyIGlz IE5VTEwgb3IgSW1hZ2VJbmRleCBpcyBpbnZhbGlkLg0KPiA+DQo+ID4+ICAgICBAcmV0dmFsIEVG SV9VTlNVUFBPUlRFRCAgICAgICAgVGhlIG9wZXJhdGlvbiBpcyBub3Qgc3VwcG9ydGVkLg0KPiA+ PiAgICAgQHJldHZhbCBFRklfU0VDVVJJVFlfVklPTEFUSU9OIFRoZSBvcGVyYXRpb24gY291bGQg bm90IGJlIHBlcmZvcm1lZCBkdWUgdG8gYW4gYXV0aGVudGljYXRpb24gZmFpbHVyZS4NCj4gPj4N Cj4gPj4gQEAgLTI1NCw3ICsyNTQsNyBAQCBDaGVja1RoZUltYWdlICgNCj4gPj4NCj4gPj4gICAg IEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgICAgICBUaGUgZGV2aWNlIHdhcyBzdWNjZXNzZnVs bHkgdXBkYXRlZCB3aXRoIHRoZSBuZXcgaW1hZ2UuDQo+ID4+ICAgICBAcmV0dmFsIEVGSV9BQk9S VEVEICAgICAgICAgICAgVGhlIG9wZXJhdGlvbiBpcyBhYm9ydGVkLg0KPiA+PiAtICBAcmV0dmFs IEVGSV9JTlZBTElEX1BBUkFNRVRFUiAgVGhlIEltYWdlIHdhcyBOVUxMLg0KPiA+PiArICBAcmV0 dmFsIEVGSV9JTlZBTElEX1BBUkFNRVRFUiAgQSByZXF1aXJlZCBwb2ludGVyIGlzIE5VTEwuDQo+ ID4NCj4gPiBUaGlzIGZ1bmN0aW9uIGFsc28gdXNlcyBJbWFnZUluZGV4LiAgU2ltaWxhciB0byB1 cGRhdGVzIGFib3ZlLCBJIHRoaW5rIHRoaXMNCj4gPiBAcmV0dmFsIGxpbmUgc2hvdWxkIGJlOg0K PiA+DQo+ID4gICAgQHJldHZhbCBFRklfSU5WQUxJRF9QQVJBTUVURVIgIEEgcmVxdWlyZWQgcG9p bnRlciBpcyBOVUxMIG9yIEltYWdlSW5kZXggaXMgaW52YWxpZC4NCj4gPg0KPiA+PiAgICAgQHJl dHZhbCBFRklfVU5TVVBQT1JURUQgICAgICAgIFRoZSBvcGVyYXRpb24gaXMgbm90IHN1cHBvcnRl ZC4NCj4gPj4gICAgIEByZXR2YWwgRUZJX1NFQ1VSSVRZX1ZJT0xBVElPTiBUaGUgb3BlcmF0aW9u IGNvdWxkIG5vdCBiZSBwZXJmb3JtZWQgZHVlIHRvIGFuIGF1dGhlbnRpY2F0aW9uIGZhaWx1cmUu DQo+ID4+DQo+ID4+IC0tDQo+ID4+IDIuMjcuMC53aW5kb3dzLjENCj4gPg0K