From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga12.intel.com (mga12.intel.com [192.55.52.136]) by mx.groups.io with SMTP id smtpd.web12.31194.1628817583791834290 for ; Thu, 12 Aug 2021 18:19:44 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@intel.onmicrosoft.com header.s=selector2-intel-onmicrosoft-com header.b=MnoCTNFy; spf=pass (domain: intel.com, ip: 192.55.52.136, mailfrom: hao.a.wu@intel.com) X-IronPort-AV: E=McAfee;i="6200,9189,10074"; a="195069517" X-IronPort-AV: E=Sophos;i="5.84,317,1620716400"; d="scan'208";a="195069517" Received: from orsmga002.jf.intel.com ([10.7.209.21]) by fmsmga106.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 12 Aug 2021 18:19:42 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.84,317,1620716400"; d="scan'208";a="440227803" Received: from fmsmsx605.amr.corp.intel.com ([10.18.126.85]) by orsmga002.jf.intel.com with ESMTP; 12 Aug 2021 18:19:42 -0700 Received: from fmsmsx601.amr.corp.intel.com (10.18.126.81) 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.2242.4; Thu, 12 Aug 2021 18:19:42 -0700 Received: from FMSEDG603.ED.cps.intel.com (10.1.192.133) 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.10 via Frontend Transport; Thu, 12 Aug 2021 18:19:42 -0700 Received: from NAM12-DM6-obe.outbound.protection.outlook.com (104.47.59.172) 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.10; Thu, 12 Aug 2021 18:19:41 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=OHumypiXc4nADq3Ltuhe8O4uQD11AdWag+PlIlarOSY4JyJpDKNkOjtBxxHuEZMjzi/U7sQoCMKDhevPJUi1xYmw/+mfp2Q2unmkVxzKAgog7s81KWP6AGmKhmEkWTHKfKuk8v71aioSyl5fhuE+RW30GteweZGsvbtB/YMrCKxW0OLMf1vQb9/KvF+H5sUZQwHkxjdWmwwUZ3CLJ80T4ZaZJSm0f1JsZB4yJOGBn5WTooQZmMFUDoItd2hgmCrDKtoJsmdBAYRlRVkgK6tj3nlAXjGrq1+E1W83DaBfupSy0wLraP5L8+jpsjjoXU7pWIR0YiXlB8cJF9Ie0gIUrA== 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=S6afZpqU9aiHT9nedOvPW1TBMgJawGINjWtCODx5APw=; b=Qt9LhJl6c5W3b9+DZIVU0cpO9kbnAilJUqxd0wZnHzMPd+x5tvOBT54ObcUwWEZJNECztj7dnaAukNvePfLpnbNd7ZU6eaA9X+jX53G84ibjQqqBpui6btjZ9MStEmQ23ocPN3SxMmK9k/1dFZ8tor6uD+uQwXTclyF7VdhGYfHneUzwSJBtwDl3XY9R9nekj8eZ5x3CaixDBWtfYYvXhhTxifz40LwW4hnzNCrQevl6mobLUU0PjbcQJNtE+Sny1hojTmXcyGpvrDABALD90AaQNs1Oibqm8jms7uGB2y1c4+GA/Vmnt5+QtazOHGyOZQ2gmSoqNn9upNxKXVCcBA== 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=S6afZpqU9aiHT9nedOvPW1TBMgJawGINjWtCODx5APw=; b=MnoCTNFykCmRn4OnVetUpRXpbBoL9TqJdmZby2xy+rgTXzPEo/wlvwJ0DlZqaqoi6Mqj5b4f8taRdCYEg4DT4SRtWLO3CyQFCxxthB5goZkJnRQp0mzLCTK74r8QYF+r6fK7X2qqRKdfLdqFHPVyHixMlut9ph6oAtn6vZRZ4Mw= Received: from BN8PR11MB3666.namprd11.prod.outlook.com (2603:10b6:408:8c::19) by BN6PR11MB4052.namprd11.prod.outlook.com (2603:10b6:405:7a::37) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4415.16; Fri, 13 Aug 2021 01:19:39 +0000 Received: from BN8PR11MB3666.namprd11.prod.outlook.com ([fe80::1d8:daf8:84de:1666]) by BN8PR11MB3666.namprd11.prod.outlook.com ([fe80::1d8:daf8:84de:1666%3]) with mapi id 15.20.4415.018; Fri, 13 Aug 2021 01:19:39 +0000 From: "Wu, Hao A" To: "devel@edk2.groups.io" , "gaoliming@byosoft.com.cn" , 'Wenyi Xie' CC: "songdongkuang@huawei.com" , "Wang, Jian J" Subject: =?UTF-8?B?UmU6IFtlZGsyLWRldmVsXSDlm57lpI06IFtQQVRDSCBFREsyIHYzIDEvMV0gTWRlTW9kdWxlUGtnL1VlZmlTb3J0TGliOkFkZCBVZWZpU29ydExpYiB1bml0IHRlc3Q=?= Thread-Topic: =?gb2312?B?W2VkazItZGV2ZWxdILvYuLQ6IFtQQVRDSCBFREsyIHYzIDEvMV0gTWRlTW9k?= =?gb2312?Q?ulePkg/UefiSortLib:Add_UefiSortLib_unit_test?= Thread-Index: AQHXjnvRcnhD2PTm1kWsVTZ/J89Frqtt5z7ggAK5u4CAAASHkA== Date: Fri, 13 Aug 2021 01:19:39 +0000 Message-ID: References: <1628663739-122023-1-git-send-email-xiewenyi2@huawei.com> <1628663739-122023-2-git-send-email-xiewenyi2@huawei.com> <012f01d78fde$f9581510$ec083f30$@byosoft.com.cn> In-Reply-To: <012f01d78fde$f9581510$ec083f30$@byosoft.com.cn> Accept-Language: en-US, zh-CN X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-product: dlpe-windows dlp-reaction: no-action dlp-version: 11.5.1.3 authentication-results: edk2.groups.io; dkim=none (message not signed) header.d=none;edk2.groups.io; dmarc=none action=none header.from=intel.com; x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: cb6176e9-549b-4a6a-750d-08d95df86bee x-ms-traffictypediagnostic: BN6PR11MB4052: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:8882; x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: 76MFoxyzhXGBB7UlUT10bMjGO/1pU8FobKxH2viacGhQlQNaRCSbXlfC/YIJVTDp2963Lmb3ZxscQVig7crtNPvZBrmI9l7eHBCyHjoBMLjSuPzSQjvCAKIsnHeCH0cI4NIw6oWka0IZcgOUmWNMoDRVg5kI065aUyRzO5bTyoc5X24cY124PlWbgcIr4dfswg9+603mHdLgbp4mioXKMhUBnsO022cU1aZEb0wMFuJsnoMhhvQgM1ty5dU9TfhBa+qUlaLLW4eMho+adcIkJw4tBJiu/nkbOchy/iJxiQArzYHEKzXkteApqk6am3jAt9/RsYmIQdhGpTrBiiT+VYjK9dPkowNF2a0SJfidwYNAy9NmU6DVcT6Zr/gjMRQdFMC4/gfWtELJCU8+51o0VZaiu5XhfsR9fTCzebRAWDsnFUpk5khtI9gaDhU0uGfQDenQQyCpqIR0HDi16I3pG2UnvQNLWLW0kPH1qHBDSHzMC7dna8GaNHwuKgaKpYbDGaDlCdIqI/zZ4+mwZ27qbX5345i3VbhYyz+TNZzNNU4Vrhj/+KTNK0JolyGTEF54XzbbuwYm2CxsHFL8l4DFpG9qVGTZWMX4/YV4zAvmCZM8ZF5SExFWj8npvvV5e3M09SlGVUWqIBz4oXhaE1f1cA6yHuDIIm1UGvheAWo3DoHxlrvls/F6vLi0dBQq03HpLddZGDuD4DsA53cDO52dMn+AJgLrAghY1EzKxji/NV4/HOJtnm+1ADmnmYfhGx970KuwjSNlOtrUyghpknAiiq1vryWmRAqtoTFBU1loZfGKBAxkpt7aa3ObzBnc1BeRpT5oAjJELgsLGhJKzU7QGg== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BN8PR11MB3666.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(4636009)(136003)(39860400002)(366004)(376002)(346002)(396003)(71200400001)(64756008)(186003)(966005)(26005)(7696005)(6506007)(53546011)(66946007)(66476007)(76116006)(66446008)(83380400001)(38100700002)(2906002)(33656002)(122000001)(66556008)(30864003)(5660300002)(4326008)(9686003)(55016002)(316002)(107886003)(38070700005)(86362001)(110136005)(52536014)(8936002)(54906003)(478600001)(224303003);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?gb2312?B?SW5VUzZLUVlCSXpIVGlQenNvRjg0YnRvekdxUzhmVjE1UUswMktVOURLdHJj?= =?gb2312?B?RldDN2hMVitCcytEODUzcEpYcGZ1UVc0cVFlSVZDK2FLUmJqSzJCcjYrYzYr?= =?gb2312?B?dnZ3c1hIa0lIWCs2em9rVHpqakprcitiS3U0N20xNUhDNU1oSktIVE95azNN?= =?gb2312?B?UHVESnVSVHhXbFJ4cHMrR2I0T1JxUDRhekhSYld4RTV5T0l3bm8zWGJNUit1?= =?gb2312?B?a3lGOEN0MmNJVVFZQmlyQmtiMjR4RmYvLzVBaUFEYmZIclQ2TDZVY1BUSSt0?= =?gb2312?B?U3RWbldQc3c0YWhrMXdjUW1UVXVycXRQZVloZXBDWTMzc3JGUG43S0NNWTk0?= =?gb2312?B?Nml3Q1RGWnpReXEzQmZxS2RuRndselVNNGhDMjJKNWdiWEN2dXBmOEl6amhq?= =?gb2312?B?T01kVHpSYUwwcmtwNDdoTTZNdEpiQk1RWEFrUjlBMEVsWlZ4Qks4SDNZZnVC?= =?gb2312?B?c3BZRWlhWnVDWDg3NVVMaU95NGV5SUxBS0VnZ09QRmlUcU9FbGZGenhUNHFj?= =?gb2312?B?enhwOFE4R0F4dmw0VHROMG1kd3VES1ZwVGoxYjA3MWNwQ0ZBV3hZVEJhVFNz?= =?gb2312?B?bU52Sm9IU1NudUpZZmlXTVNmaXdIanI2Q0hnTm02K2JHSU5nQUlNT0JKa3ZN?= =?gb2312?B?ZitHOGFtaFVheTNmcVQ0TGFhSWFoa0V0MlFLZjU3YmJ2alRDaXk2SFVqS2lw?= =?gb2312?B?ZWdLUy9zeVF2RW8yRVpVeDMvNThzODRoTEVkVFl0d055VUhyYUM5QTg5SXFv?= =?gb2312?B?dVFUaUhCbWY3cmI5eEtPN284NFZtV09zZVI5QXloUlVlWERHS2sxajBSVUpM?= =?gb2312?B?ZjBvWURJMUZJUGdVak8zN3lyVzRvOHpHUEZOaUU0Slh4ejdIV3A0ZWMrTFVF?= =?gb2312?B?MGtIVlhjMWFvejR1S2RkcnU1RTRONkowd2VuMTFkRXBjMy9tYVdBNFlhRldi?= =?gb2312?B?Wm5MVVBGdEgxWVRvU2l0bWlBR2FNcmhJTEY3dXpPQnZiWnJiWnQwZ0xxL1lN?= =?gb2312?B?b3pTZytuY0ZUNllhUXcwUVpOZzBPRjI1TnZha1FLTHRCT0syM0ZIbmVJN21H?= =?gb2312?B?SnJiMkZwOExTUjQ4d1NkOGFIOW9lbFFkTEUzUGxPdzJUUlBMUG56VERMZFZV?= =?gb2312?B?LzIyd0RlSGs3a0ZwQWpwaG5ORTBlVmduN0lxOEhacTVvRHc5WVk2OU5mRG5P?= =?gb2312?B?WFpQQ1J2V1J5bjB3UzNqcCtVY2VKK25COTFiZVhPM1lDU0l6SVlUREc3UXM2?= =?gb2312?B?MjZwVFRzenI5YzJaRmdEbG5RTys4MEdvbkt5d0hWaCs5K1VrTlJZVzdDT1Nq?= =?gb2312?B?elhmSzFteEUvejgrN3BqZ1JyUWthQmVTdWk3M3NNQTlndVNnSFM4VVNKU29u?= =?gb2312?B?TnUxS29iMUJlTE1zNFFNbklQTlI1d2k2UUZoTnpubHR6VHFKOGtIZXo2aTk1?= =?gb2312?B?T3dQVThKSEdBbm85QzB6cGNrNkxCdHgzaDJBS29BMXd3eEZZMEpzVTJXNFMr?= =?gb2312?B?VHA2enJDQ0hEeGd1b0dSYkI1d3dWMHdyb1hmZExtYm9uZUhiWGtSZHQ5dEFt?= =?gb2312?B?MkxzNGlnQnlMS1NZeW13M005ZjEwOHpwNWVkc0JzUnFpcHpLYWwvVHV5ODlT?= =?gb2312?B?YWVMV0VVUVowKytwRzBXald2N2didi9hVy9hUGlDT3FKVFdPdDkxL1NzSURY?= =?gb2312?B?TEh1VGtVTnl0R054WEpxVzZvZ2NMWklVb05oRGlDUVE5M2RyVmFkTHdNMFg3?= =?gb2312?Q?ArtfL0gc3kLsYiXbdt+LC4LIByR9kwzgNCxcGUb?= MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: BN8PR11MB3666.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: cb6176e9-549b-4a6a-750d-08d95df86bee X-MS-Exchange-CrossTenant-originalarrivaltime: 13 Aug 2021 01:19:39.2148 (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: /TuVeO6PVnAHP7X8VeyHJRZ4U+Rqs/KsvWBgtD91JGepZjS2FHfqfL6kLOZVhIvz3Aukx1VnaZup5NrLSKpj8A== X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN6PR11MB4052 Return-Path: hao.a.wu@intel.com X-OriginatorOrg: intel.com Content-Language: en-US Content-Type: text/plain; charset="gb2312" Content-Transfer-Encoding: base64 PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBkZXZlbEBlZGsyLmdyb3Vwcy5p byA8ZGV2ZWxAZWRrMi5ncm91cHMuaW8+IE9uIEJlaGFsZiBPZg0KPiBnYW9saW1pbmcNCj4gU2Vu dDogRnJpZGF5LCBBdWd1c3QgMTMsIDIwMjEgOTowMyBBTQ0KPiBUbzogV3UsIEhhbyBBIDxoYW8u YS53dUBpbnRlbC5jb20+OyAnV2VueWkgWGllJw0KPiA8eGlld2VueWkyQGh1YXdlaS5jb20+OyBk ZXZlbEBlZGsyLmdyb3Vwcy5pbw0KPiBDYzogc29uZ2RvbmdrdWFuZ0BodWF3ZWkuY29tOyBXYW5n LCBKaWFuIEogPGppYW4uai53YW5nQGludGVsLmNvbT4NCj4gU3ViamVjdDogW2VkazItZGV2ZWxd ILvYuLQ6IFtQQVRDSCBFREsyIHYzIDEvMV0NCj4gTWRlTW9kdWxlUGtnL1VlZmlTb3J0TGliOkFk ZCBVZWZpU29ydExpYiB1bml0IHRlc3QNCj4gDQo+IEhhbzoNCj4gICBJIHRoaW5rIHRoaXMgcGF0 Y2ggY2FuIGJlIG1lcmdlZCBmb3IgdGhpcyBzdGFibGUgdGFnLiBJdCBwYXNzZXMgY29kZSByZXZp ZXcNCj4gYmVmb3JlIHNvZnQgZmVhdHVyZSBmcmVlemUuIEVDQyBpc3N1ZSBjYW4gYmUgcmVnYXJk ZWQgYXMgYnVnIGZpeC4gQnVnIGZpeCBpcyBzdGlsbA0KPiBhbGxvd2VkIGluIHNvZnQgZmVhdHVy ZSBmcmVlemUuIENhbiB5b3UgbWVyZ2UgdGhpcyBwYXRjaCBiZWZvcmUgaGFyZCBmZWF0dXJlDQo+ IGZyZWV6ZT8NCg0KDQpUaGFua3MsIGFscmVhZHkgbWVyZ2VkIHZpYToNClBSIC0gaHR0cHM6Ly9n aXRodWIuY29tL3RpYW5vY29yZS9lZGsyL3B1bGwvMTg5Mg0KQ29tbWl0IC0gaHR0cHM6Ly9naXRo dWIuY29tL3RpYW5vY29yZS9lZGsyL2NvbW1pdC9hYzgyNjg4NmM5ODUyNGU5MTg3NTM0MTljMDM5 ZDhiNDQxOTg5NDNmDQoNCkJlc3QgUmVnYXJkcywNCkhhbyBXdQ0KDQoNCj4gDQo+IFRoYW5rcw0K PiBMaW1pbmcNCj4gPiAtLS0tLdPKvP7Urbz+LS0tLS0NCj4gPiC3orz+yMs6IFd1LCBIYW8gQSA8 aGFvLmEud3VAaW50ZWwuY29tPg0KPiA+ILeiy83KsbzkOiAyMDIxxOo41MIxMcjVIDE2OjMzDQo+ ID4gytW8/sjLOiBMaW1pbmcgR2FvIDxnYW9saW1pbmdAYnlvc29mdC5jb20uY24+OyBXZW55aSBY aWUNCj4gPiA8eGlld2VueWkyQGh1YXdlaS5jb20+OyBkZXZlbEBlZGsyLmdyb3Vwcy5pbw0KPiA+ ILOty806IHNvbmdkb25na3VhbmdAaHVhd2VpLmNvbTsgV2FuZywgSmlhbiBKIDxqaWFuLmoud2Fu Z0BpbnRlbC5jb20+DQo+ID4g1vfM4jogUkU6IFtQQVRDSCBFREsyIHYzIDEvMV0gTWRlTW9kdWxl UGtnL1VlZmlTb3J0TGliOkFkZA0KPiBVZWZpU29ydExpYg0KPiA+IHVuaXQgdGVzdA0KPiA+DQo+ ID4gPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiA+ID4gRnJvbTogV2VueWkgWGllIDx4 aWV3ZW55aTJAaHVhd2VpLmNvbT4NCj4gPiA+IFNlbnQ6IFdlZG5lc2RheSwgQXVndXN0IDExLCAy MDIxIDI6MzYgUE0NCj4gPiA+IFRvOiBkZXZlbEBlZGsyLmdyb3Vwcy5pbzsgV2FuZywgSmlhbiBK IDxqaWFuLmoud2FuZ0BpbnRlbC5jb20+OyBXdSwNCj4gPiA+IEhhbw0KPiA+IEENCj4gPiA+IDxo YW8uYS53dUBpbnRlbC5jb20+DQo+ID4gPiBDYzogc29uZ2RvbmdrdWFuZ0BodWF3ZWkuY29tOyB4 aWV3ZW55aTJAaHVhd2VpLmNvbQ0KPiA+ID4gU3ViamVjdDogW1BBVENIIEVESzIgdjMgMS8xXSBN ZGVNb2R1bGVQa2cvVWVmaVNvcnRMaWI6QWRkDQo+ID4gPiBVZWZpU29ydExpYiB1bml0IHRlc3QN Cj4gPiA+DQo+ID4gPiBBZGRpbmcgdHdvIHVuaXQgdGVzdCBjYXNlIGZvciBVZWZpU29ydExpYi4g T25lIGlzIGEgdGVzdCBvbiBzb3J0aW5nDQo+ID4gPiBhbg0KPiBhcnJheSBvZg0KPiA+ID4gVUlO VDMyIGJ5IHVzaW5nIFBlcmZvcm1RdWlja1NvcnQsIGFub3RoZXIgaXMgYSB0ZXN0IG9uIGNvbXBh cmluZyB0aGUNCj4gc2FtZQ0KPiA+ID4gYnVmZmVyIGJ5IHVzaW5nIFN0cmluZ0NvbXBhcmUuDQo+ ID4gPiBBZGQgJ21haW4nIGZ1bmN0aW9uIG5hbWUgdG8gRUNDIGV4Y2VwdGlvbiBsaXN0IHRvIGF2 b2lkIEVDQyBlcnJvci4NCj4gPg0KPiA+DQo+ID4gUmV2aWV3ZWQtYnk6IEhhbyBBIFd1IDxoYW8u YS53dUBpbnRlbC5jb20+DQo+ID4NCj4gPiBIZWxsbyBMaW1pbmcsDQo+ID4NCj4gPiBTaW5jZSB0 aGUgcGF0Y2ggbG9va3MgbW9yZSBsaWtlIGEgZmVhdHVyZSB0aGFuIGEgYnVnZml4IHRvIG1lLCBJ IHdvdWxkDQo+IGxpa2UgdG8NCj4gPiBjb25maXJtIHRoYXQgY2FuIEkgbWVyZ2UgdGhpcyBjaGFu Z2Ugbm93Pw0KPiA+IEkgYWxyZWFkeSBnYXZlIG15ICdSLWInIHRhZyBmb3IgdGhlIFYyIHBhdGNo IG9uIDI5dGggSnVseSwgYnV0IG1ldA0KPiA+IHNvbWUNCj4gRUNDDQo+ID4gY2hlY2sgaXNzdWVz IGR1cmluZyBwcmV2aW91cyBtZXJnaW5nIGF0dGVtcHQuDQo+ID4gSSB2ZXJpZmllZCB0aGF0IHRo ZSBsYXRlc3QgcGF0Y2ggY2FuIHBhc3MgdGhlIG1lcmdpbmcgdGVzdA0KPiA+IChodHRwczovL2dp dGh1Yi5jb20vdGlhbm9jb3JlL2VkazIvcHVsbC8xODkyKS4NCj4gPg0KPiA+IEJlc3QgUmVnYXJk cywNCj4gPiBIYW8gV3UNCj4gPg0KPiA+DQo+ID4gPg0KPiA+ID4gQ2M6IEppYW4gSiBXYW5nIDxq aWFuLmoud2FuZ0BpbnRlbC5jb20+DQo+ID4gPiBDYzogSGFvIEEgV3UgPGhhby5hLnd1QGludGVs LmNvbT4NCj4gPiA+IFNpZ25lZC1vZmYtYnk6IFdlbnlpIFhpZSA8eGlld2VueWkyQGh1YXdlaS5j b20+DQo+ID4gPiAtLS0NCj4gPiA+ICBNZGVNb2R1bGVQa2cvVGVzdC9NZGVNb2R1bGVQa2dIb3N0 VGVzdC5kc2MNCj4gPiB8ICAgNiArDQo+ID4gPiAgTWRlTW9kdWxlUGtnL0xpYnJhcnkvVWVmaVNv cnRMaWIvVW5pdFRlc3QvVWVmaVNvcnRMaWJVbml0VGVzdC5pbmYgfA0KPiA+IDMyDQo+ID4gPiAr KysNCj4gPiA+ICBNZGVNb2R1bGVQa2cvTGlicmFyeS9VZWZpU29ydExpYi9Vbml0VGVzdC9VZWZp U29ydExpYlVuaXRUZXN0LmMgICB8DQo+ID4gMjA3DQo+ID4gPiArKysrKysrKysrKysrKysrKysr Kw0KPiA+ID4gIE1kZU1vZHVsZVBrZy9NZGVNb2R1bGVQa2cuY2kueWFtbA0KPiA+IHwgICAxICsN Cj4gPiA+ICA0IGZpbGVzIGNoYW5nZWQsIDI0NiBpbnNlcnRpb25zKCspDQo+ID4gPg0KPiA+ID4g ZGlmZiAtLWdpdCBhL01kZU1vZHVsZVBrZy9UZXN0L01kZU1vZHVsZVBrZ0hvc3RUZXN0LmRzYw0K PiA+ID4gYi9NZGVNb2R1bGVQa2cvVGVzdC9NZGVNb2R1bGVQa2dIb3N0VGVzdC5kc2MNCj4gPiA+ IGluZGV4IDRkYTQ2OTJjODQ1MS4uYzllYzgzNWRmNjVkIDEwMDY0NA0KPiA+ID4gLS0tIGEvTWRl TW9kdWxlUGtnL1Rlc3QvTWRlTW9kdWxlUGtnSG9zdFRlc3QuZHNjDQo+ID4gPiArKysgYi9NZGVN b2R1bGVQa2cvVGVzdC9NZGVNb2R1bGVQa2dIb3N0VGVzdC5kc2MNCj4gPiA+IEBAIC00MSwzICs0 MSw5IEBAIFtDb21wb25lbnRzXQ0KPiA+ID4gICAgICA8UGNkc0ZpeGVkQXRCdWlsZD4NCj4gPiA+ DQo+ID4gPg0KPiBnRWZpTWRlTW9kdWxlUGtnVG9rZW5TcGFjZUd1aWQuUGNkQWxsb3dWYXJpYWJs ZVBvbGljeUVuZm9yY2VtZW50RGlzDQo+ID4gPiBhYmxlfFRSVUUNCj4gPiA+ICAgIH0NCj4gPiA+ ICsNCj4gPiA+ICsgIE1kZU1vZHVsZVBrZy9MaWJyYXJ5L1VlZmlTb3J0TGliL1VuaXRUZXN0L1Vl ZmlTb3J0TGliVW5pdFRlc3QuaW5mIHsNCj4gPiA+ICsgICAgPExpYnJhcnlDbGFzc2VzPg0KPiA+ ID4gKyAgICAgIFVlZmlTb3J0TGlifE1kZU1vZHVsZVBrZy9MaWJyYXJ5L1VlZmlTb3J0TGliL1Vl ZmlTb3J0TGliLmluZg0KPiA+ID4gKw0KPiA+ID4gKyBEZXZpY2VQYXRoTGlifE1kZVBrZy9MaWJy YXJ5L1VlZmlEZXZpY2VQYXRoTGliL1VlZmlEZXZpY2VQYXRoTGliLmkNCj4gPiA+ICsgRGV2aWNl UGF0aExpYnxuZg0KPiA+ID4gKyAgfQ0KPiA+ID4gZGlmZiAtLWdpdA0KPiA+ID4gYS9NZGVNb2R1 bGVQa2cvTGlicmFyeS9VZWZpU29ydExpYi9Vbml0VGVzdC9VZWZpU29ydExpYlVuaXRUZXN0Lmlu Zg0KPiA+ID4gYi9NZGVNb2R1bGVQa2cvTGlicmFyeS9VZWZpU29ydExpYi9Vbml0VGVzdC9VZWZp U29ydExpYlVuaXRUZXN0LmluZg0KPiA+ID4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gPiA+IGlu ZGV4IDAwMDAwMDAwMDAwMC4uODVkOGRjZDY5NjE5DQo+ID4gPiAtLS0gL2Rldi9udWxsDQo+ID4g PiArKysgYi9NZGVNb2R1bGVQa2cvTGlicmFyeS9VZWZpU29ydExpYi9Vbml0VGVzdC9VZWZpU29y dExpYlVuaXRUZXN0Lg0KPiA+ID4gKysrIGluZg0KPiA+ID4gQEAgLTAsMCArMSwzMiBAQA0KPiA+ ID4gKyMjIEBmaWxlDQo+ID4gPiArIyBUaGlzIGlzIGEgdW5pdCB0ZXN0IGZvciB0aGUgVWVmaVNv cnRMaWIuDQo+ID4gPiArIw0KPiA+ID4gKyMgQ29weXJpZ2h0IChDKSBIdWF3ZWkgVGVjaG5vbG9n aWVzIENvLiwgTHRkLiBBbGwgcmlnaHRzIHJlc2VydmVkICMNCj4gPiA+ICtTUERYLUxpY2Vuc2Ut SWRlbnRpZmllcjogQlNELTItQ2xhdXNlLVBhdGVudCAjIw0KPiA+ID4gKw0KPiA+ID4gK1tEZWZp bmVzXQ0KPiA+ID4gKyAgSU5GX1ZFUlNJT04gICAgICAgICA9IDB4MDAwMTAwMTcNCj4gPiA+ICsg IEJBU0VfTkFNRSAgICAgICAgICAgPSBVZWZpU29ydExpYlVuaXRUZXN0DQo+ID4gPiArICBGSUxF X0dVSUQgICAgICAgICAgID0gMjcxMzM3QTMtMEQ3OS1CQTNFLUJDMDMtNzE0RTUxOEUzQjFCDQo+ ID4gPiArICBWRVJTSU9OX1NUUklORyAgICAgID0gMS4wDQo+ID4gPiArICBNT0RVTEVfVFlQRSAg ICAgICAgID0gSE9TVF9BUFBMSUNBVElPTg0KPiA+ID4gKw0KPiA+ID4gKyMNCj4gPiA+ICsjIFRo ZSBmb2xsb3dpbmcgaW5mb3JtYXRpb24gaXMgZm9yIHJlZmVyZW5jZSBvbmx5IGFuZCBub3QgcmVx dWlyZWQNCj4gPiA+ICtieQ0KPiB0aGUNCj4gPiA+IGJ1aWxkIHRvb2xzLg0KPiA+ID4gKyMNCj4g PiA+ICsjICBWQUxJRF9BUkNISVRFQ1RVUkVTICAgICAgICAgICA9IElBMzIgWDY0DQo+ID4gPiAr Iw0KPiA+ID4gKw0KPiA+ID4gK1tTb3VyY2VzXQ0KPiA+ID4gKyAgVWVmaVNvcnRMaWJVbml0VGVz dC5jDQo+ID4gPiArDQo+ID4gPiArW1BhY2thZ2VzXQ0KPiA+ID4gKyAgTWRlUGtnL01kZVBrZy5k ZWMNCj4gPiA+ICsgIE1kZU1vZHVsZVBrZy9NZGVNb2R1bGVQa2cuZGVjDQo+ID4gPiArICBVbml0 VGVzdEZyYW1ld29ya1BrZy9Vbml0VGVzdEZyYW1ld29ya1BrZy5kZWMNCj4gPiA+ICsNCj4gPiA+ ICtbTGlicmFyeUNsYXNzZXNdDQo+ID4gPiArICBVbml0VGVzdExpYg0KPiA+ID4gKyAgRGVidWdM aWINCj4gPiA+ICsgIFVlZmlTb3J0TGliDQo+ID4gPiBkaWZmIC0tZ2l0DQo+ID4gPiBhL01kZU1v ZHVsZVBrZy9MaWJyYXJ5L1VlZmlTb3J0TGliL1VuaXRUZXN0L1VlZmlTb3J0TGliVW5pdFRlc3Qu Yw0KPiA+ID4gYi9NZGVNb2R1bGVQa2cvTGlicmFyeS9VZWZpU29ydExpYi9Vbml0VGVzdC9VZWZp U29ydExpYlVuaXRUZXN0LmMNCj4gPiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ID4gPiBpbmRl eCAwMDAwMDAwMDAwMDAuLjRmNDRhMDJjNWI1ZA0KPiA+ID4gLS0tIC9kZXYvbnVsbA0KPiA+ID4g KysrIGIvTWRlTW9kdWxlUGtnL0xpYnJhcnkvVWVmaVNvcnRMaWIvVW5pdFRlc3QvVWVmaVNvcnRM aWJVbml0VGVzdC4NCj4gPiA+ICsrKyBjDQo+ID4gPiBAQCAtMCwwICsxLDIwNyBAQA0KPiA+ID4g Ky8qKiBAZmlsZQ0KPiA+ID4gKyAgVW5pdCB0ZXN0cyBvZiB0aGUgVWVmaVNvcnRMaWINCj4gPiA+ ICsNCj4gPiA+ICsgIENvcHlyaWdodCAoQykgSHVhd2VpIFRlY2hub2xvZ2llcyBDby4sIEx0ZC4g QWxsIHJpZ2h0cyByZXNlcnZlZA0KPiA+ID4gKyAgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJT RC0yLUNsYXVzZS1QYXRlbnQNCj4gPiA+ICsNCj4gPiA+ICsqKi8NCj4gPiA+ICsNCj4gPiA+ICsj aW5jbHVkZSA8c3RkaW8uaD4NCj4gPiA+ICsjaW5jbHVkZSA8c3RyaW5nLmg+DQo+ID4gPiArI2lu Y2x1ZGUgPHN0ZGFyZy5oPg0KPiA+ID4gKyNpbmNsdWRlIDxzdGRkZWYuaD4NCj4gPiA+ICsjaW5j bHVkZSA8c2V0am1wLmg+DQo+ID4gPiArI2luY2x1ZGUgPGNtb2NrYS5oPg0KPiA+ID4gKw0KPiA+ ID4gKyNpbmNsdWRlIDxVZWZpLmg+DQo+ID4gPiArI2luY2x1ZGUgPExpYnJhcnkvQmFzZUxpYi5o Pg0KPiA+ID4gKyNpbmNsdWRlIDxMaWJyYXJ5L0RlYnVnTGliLmg+DQo+ID4gPiArI2luY2x1ZGUg PExpYnJhcnkvTWVtb3J5QWxsb2NhdGlvbkxpYi5oPg0KPiA+ID4gKw0KPiA+ID4gKyNpbmNsdWRl IDxMaWJyYXJ5L1VuaXRUZXN0TGliLmg+DQo+ID4gPiArI2luY2x1ZGUgPExpYnJhcnkvU29ydExp Yi5oPg0KPiA+ID4gKw0KPiA+ID4gKyNkZWZpbmUgVU5JVF9URVNUX0FQUF9OQU1FICAgICAgICAi VWVmaVNvcnRMaWIgVW5pdCBUZXN0cyINCj4gPiA+ICsjZGVmaW5lIFVOSVRfVEVTVF9BUFBfVkVS U0lPTiAgICAgIjEuMCINCj4gPiA+ICsNCj4gPiA+ICsjZGVmaW5lIFRFU1RfQVJSQVlfU0laRV85 ICAgICAgICAgOQ0KPiA+ID4gKw0KPiA+ID4gKy8qKg0KPiA+ID4gKyAgVGhlIGZ1bmN0aW9uIGlz IGNhbGxlZCBieSBQZXJmb3JtUXVpY2tTb3J0IHRvIGNvbXBhcmUgaW50IHZhbHVlcy4NCj4gPiA+ ICsNCj4gPiA+ICsgIEBwYXJhbVtpbl0gTGVmdCAgICAgICAgICAgIFRoZSBwb2ludGVyIHRvIGZp cnN0IGJ1ZmZlci4NCj4gPiA+ICsgIEBwYXJhbVtpbl0gUmlnaHQgICAgICAgICAgIFRoZSBwb2lu dGVyIHRvIHNlY29uZCBidWZmZXIuDQo+ID4gPiArDQo+ID4gPiArICBAcmV0dmFsIDAgICAgICAg ICAgICAgICAgICBCdWZmZXIxIGVxdWFsIHRvIEJ1ZmZlcjIuDQo+ID4gPiArICBAcmV0dXJuIDww ICAgICAgICAgICAgICAgICBCdWZmZXIxIGlzIGxlc3MgdGhhbiBCdWZmZXIyLg0KPiA+ID4gKyAg QHJldHVybiA+MCAgICAgICAgICAgICAgICAgQnVmZmVyMSBpcyBncmVhdGVyIHRoYW4gQnVmZmVy Mi4NCj4gPiA+ICsNCj4gPiA+ICsqKi8NCj4gPiA+ICtJTlRODQo+ID4gPiArRUZJQVBJDQo+ID4g PiArVGVzdENvbXBhcmVGdW5jdGlvbiAoDQo+ID4gPiArICBJTiBDT05TVCBWT0lEICAgICAgICAg ICAgICAgICAgICAgICAgICpMZWZ0LA0KPiA+ID4gKyAgSU4gQ09OU1QgVk9JRCAgICAgICAgICAg ICAgICAgICAgICAgICAqUmlnaHQNCj4gPiA+ICsgICkNCj4gPiA+ICt7DQo+ID4gPiArICBpZiAo KihVSU5UMzIqKVJpZ2h0ID4gKihVSU5UMzIqKUxlZnQpIHsNCj4gPiA+ICsgICAgcmV0dXJuIDE7 DQo+ID4gPiArICB9IGVsc2UgaWYgKCooVUlOVDMyKilSaWdodCA8ICooVUlOVDMyKilMZWZ0KSB7 DQo+ID4gPiArICAgIHJldHVybiAtMTsNCj4gPiA+ICsgIH0NCj4gPiA+ICsNCj4gPiA+ICsgIHJl dHVybiAwOw0KPiA+ID4gK30NCj4gPiA+ICsNCj4gPiA+ICsvKioNCj4gPiA+ICsgIFVuaXQgdGVz dCBmb3IgUGVyZm9ybVF1aWNrU29ydCAoKSBBUEkgb2YgdGhlIFVlZmlTb3J0TGliLg0KPiA+ID4g Kw0KPiA+ID4gKyAgQHBhcmFtW2luXSAgQ29udGV4dCAgICBbT3B0aW9uYWxdIEFuIG9wdGlvbmFs IHBhcmFtZXRlciB0aGF0DQo+ID4gZW5hYmxlczoNCj4gPiA+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgMSkgdGVzdC1jYXNlIHJldXNlIHdpdGggdmFyaWVkIHBhcmFtZXRlcnMNCj4gPiBhbmQN Cj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgMikgdGVzdC1jYXNlIHJlLWVudHJ5IGZv ciBUYXJnZXQgdGVzdHMNCj4gPiA+ICsgdGhhdA0KPiA+IG5lZWQgYQ0KPiA+ID4gKyAgICAgICAg ICAgICAgICAgICAgICAgICByZWJvb3QuICBUaGlzIHBhcmFtZXRlciBpcyBhIFZPSUQqIGFuZCBp dA0KPiA+IGlzIHRoZQ0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zaWJp bGl0eSBvZiB0aGUgdGVzdCBhdXRob3IgdG8NCj4gPiA+ICsgZW5zdXJlDQo+ID4gdGhhdCB0aGUN Cj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudHMgYXJlIHdlbGwgdW5kZXJz dG9vZCBieSBhbGwgdGVzdA0KPiA+IGNhc2VzIHRoYXQgbWF5DQo+ID4gPiArICAgICAgICAgICAg ICAgICAgICAgICAgIGNvbnN1bWUgaXQuDQo+ID4gPiArDQo+ID4gPiArICBAcmV0dmFsICBVTklU X1RFU1RfUEFTU0VEICAgICAgICAgICAgIFRoZSBVbml0IHRlc3QgaGFzDQo+ID4gY29tcGxldGVk IGFuZCB0aGUNCj4gPiA+IHRlc3QNCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgY2FzZSB3YXMgc3VjY2Vzc2Z1bC4NCj4gPiA+ICsgIEByZXR2YWwgIFVOSVRf VEVTVF9FUlJPUl9URVNUX0ZBSUxFRCAgQSB0ZXN0IGNhc2UgYXNzZXJ0aW9uIGhhcw0KPiA+IGZh aWxlZC4NCj4gPiA+ICsqKi8NCj4gPiA+ICtVTklUX1RFU1RfU1RBVFVTDQo+ID4gPiArRUZJQVBJ DQo+ID4gPiArU29ydFVJTlQzMkFycmF5U2hvdWxkU3VjY2VlZCAoDQo+ID4gPiArICBJTiBVTklU X1RFU1RfQ09OVEVYVCAgQ29udGV4dA0KPiA+ID4gKyAgKQ0KPiA+ID4gK3sNCj4gPiA+ICsgIFVJ TlROICBUZXN0Q291bnQ7DQo+ID4gPiArICBVSU5UMzIgSW5kZXg7DQo+ID4gPiArICBVSU5UMzIg VGVzdEJ1ZmZlcltURVNUX0FSUkFZX1NJWkVfOV07DQo+ID4gPiArICBVSU5UMzIgVGVzdFJlc3Vs dFtURVNUX0FSUkFZX1NJWkVfOV07DQo+ID4gPiArDQo+ID4gPiArICBUZXN0Q291bnQgPSBURVNU X0FSUkFZX1NJWkVfOTsNCj4gPiA+ICsgIGZvciAoSW5kZXggPSAwOyBJbmRleCA8IFRFU1RfQVJS QVlfU0laRV85OyBJbmRleCsrKSB7DQo+ID4gPiArICAgIFRlc3RCdWZmZXJbSW5kZXhdID0gSW5k ZXggKyAxOw0KPiA+ID4gKyAgICBUZXN0UmVzdWx0W0luZGV4XSA9IFRFU1RfQVJSQVlfU0laRV85 IC0gSW5kZXg7ICB9DQo+ID4gPiArDQo+ID4gPiArICBQZXJmb3JtUXVpY2tTb3J0IChUZXN0QnVm ZmVyLCBUZXN0Q291bnQsIHNpemVvZiAoVUlOVDMyKSwNCj4gPiA+ICsgKFNPUlRfQ09NUEFSRSlU ZXN0Q29tcGFyZUZ1bmN0aW9uKTsNCj4gPiA+ICsgIFVUX0FTU0VSVF9NRU1fRVFVQUwgKFRlc3RC dWZmZXIsIFRlc3RSZXN1bHQsIHNpemVvZiAoVUlOVDMyKSAqDQo+ID4gPiArIFRFU1RfQVJSQVlf U0laRV85KTsNCj4gPiA+ICsNCj4gPiA+ICsgIHJldHVybiBVTklUX1RFU1RfUEFTU0VEOw0KPiA+ ID4gK30NCj4gPiA+ICsNCj4gPiA+ICsvKioNCj4gPiA+ICsgIFVuaXQgdGVzdCBmb3IgU3RyaW5n Q29tcGFyZSAoKSBBUEkgb2YgdGhlIFVlZmlTb3J0TGliLg0KPiA+ID4gKw0KPiA+ID4gKyAgQHBh cmFtW2luXSAgQ29udGV4dCAgICBbT3B0aW9uYWxdIEFuIG9wdGlvbmFsIHBhcmFtZXRlciB0aGF0 DQo+ID4gZW5hYmxlczoNCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgMSkgdGVzdC1j YXNlIHJldXNlIHdpdGggdmFyaWVkIHBhcmFtZXRlcnMNCj4gPiBhbmQNCj4gPiA+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgMikgdGVzdC1jYXNlIHJlLWVudHJ5IGZvciBUYXJnZXQgdGVzdHMN Cj4gPiA+ICsgdGhhdA0KPiA+IG5lZWQgYQ0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAg ICByZWJvb3QuICBUaGlzIHBhcmFtZXRlciBpcyBhIFZPSUQqIGFuZCBpdA0KPiA+IGlzIHRoZQ0K PiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zaWJpbGl0eSBvZiB0aGUgdGVz dCBhdXRob3IgdG8NCj4gPiA+ICsgZW5zdXJlDQo+ID4gdGhhdCB0aGUNCj4gPiA+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgY29udGVudHMgYXJlIHdlbGwgdW5kZXJzdG9vZCBieSBhbGwgdGVz dA0KPiA+IGNhc2VzIHRoYXQgbWF5DQo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgIGNv bnN1bWUgaXQuDQo+ID4gPiArDQo+ID4gPiArICBAcmV0dmFsICBVTklUX1RFU1RfUEFTU0VEICAg ICAgICAgICAgIFRoZSBVbml0IHRlc3QgaGFzDQo+ID4gY29tcGxldGVkIGFuZCB0aGUNCj4gPiA+ IHRlc3QNCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2Fz ZSB3YXMgc3VjY2Vzc2Z1bC4NCj4gPiA+ICsgIEByZXR2YWwgIFVOSVRfVEVTVF9FUlJPUl9URVNU X0ZBSUxFRCAgQSB0ZXN0IGNhc2UgYXNzZXJ0aW9uIGhhcw0KPiA+IGZhaWxlZC4NCj4gPiA+ICsq Ki8NCj4gPiA+ICtVTklUX1RFU1RfU1RBVFVTDQo+ID4gPiArRUZJQVBJDQo+ID4gPiArQ29tcGFy ZVNhbWVCdWZmZXJTaG91bGRTdWNjZWVkICgNCj4gPiA+ICsgIElOIFVOSVRfVEVTVF9DT05URVhU ICBDb250ZXh0DQo+ID4gPiArICApDQo+ID4gPiArew0KPiA+ID4gKyAgSU5UTiByZXR2YWw7DQo+ ID4gPiArICBDT05TVCBDSEFSMTYqIFRlc3RCdWZmZXJbXSA9IHsgTCJhYmNkZWZnIiB9Ow0KPiA+ ID4gKw0KPiA+ID4gKyAgcmV0dmFsID0gU3RyaW5nQ29tcGFyZSAoVGVzdEJ1ZmZlciwgVGVzdEJ1 ZmZlcik7ICBVVF9BU1NFUlRfVFJVRQ0KPiA+ID4gKyAocmV0dmFsID09IDApOw0KPiA+ID4gKw0K PiA+ID4gKyAgcmV0dXJuIFVOSVRfVEVTVF9QQVNTRUQ7DQo+ID4gPiArfQ0KPiA+ID4gKw0KPiA+ ID4gKy8qKg0KPiA+ID4gKyAgSW5pdGlhbHplIHRoZSB1bml0IHRlc3QgZnJhbWV3b3JrLCBzdWl0 ZSwgYW5kIHVuaXQgdGVzdHMgZm9yIHRoZQ0KPiA+ID4gKyAgVWVmaVNvcnRMaWIgYW5kIHJ1biB0 aGUgVWVmaVNvcnRMaWIgdW5pdCB0ZXN0Lg0KPiA+ID4gKw0KPiA+ID4gKyAgQHJldHZhbCAgRUZJ X1NVQ0NFU1MgICAgICAgICAgIEFsbCB0ZXN0IGNhc2VzIHdlcmUgZGlzcGF0Y2hlZC4NCj4gPiA+ ICsgIEByZXR2YWwgIEVGSV9PVVRfT0ZfUkVTT1VSQ0VTICBUaGVyZSBhcmUgbm90IGVub3VnaCBy ZXNvdXJjZXMNCj4gPiA+IGF2YWlsYWJsZSB0bw0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGluaXRpYWxpemUgdGhlIHVuaXQgdGVzdHMuDQo+ID4gPiArKiovDQo+ID4g PiArU1RBVElDDQo+ID4gPiArRUZJX1NUQVRVUw0KPiA+ID4gK0VGSUFQSQ0KPiA+ID4gK1VuaXRU ZXN0aW5nRW50cnkgKA0KPiA+ID4gKyAgVk9JRA0KPiA+ID4gKyAgKQ0KPiA+ID4gK3sNCj4gPiA+ ICsgIEVGSV9TVEFUVVMgICAgICAgICAgICAgICAgICBTdGF0dXM7DQo+ID4gPiArICBVTklUX1RF U1RfRlJBTUVXT1JLX0hBTkRMRSAgRnJhbWV3b3JrOw0KPiA+ID4gKyAgVU5JVF9URVNUX1NVSVRF X0hBTkRMRSAgICAgIFNvcnRUZXN0czsNCj4gPiA+ICsNCj4gPiA+ICsgIEZyYW1ld29yayA9IE5V TEw7DQo+ID4gPiArDQo+ID4gPiArICBERUJVRygoIERFQlVHX0lORk8sICIlYSB2JWFcbiIsIFVO SVRfVEVTVF9BUFBfTkFNRSwNCj4gPiA+ICsgVU5JVF9URVNUX0FQUF9WRVJTSU9OICkpOw0KPiA+ ID4gKw0KPiA+ID4gKyAgLy8NCj4gPiA+ICsgIC8vIFN0YXJ0IHNldHRpbmcgdXAgdGhlIHRlc3Qg ZnJhbWV3b3JrIGZvciBydW5uaW5nIHRoZSB0ZXN0cy4NCj4gPiA+ICsgIC8vDQo+ID4gPiArICBT dGF0dXMgPSBJbml0VW5pdFRlc3RGcmFtZXdvcmsgKCZGcmFtZXdvcmssDQo+IFVOSVRfVEVTVF9B UFBfTkFNRSwNCj4gPiA+ICsgZ0VmaUNhbGxlckJhc2VOYW1lLCBVTklUX1RFU1RfQVBQX1ZFUlNJ T04pOyAgaWYgKEVGSV9FUlJPUg0KPiA+ID4gKyAoU3RhdHVzKSkNCj4gPiB7DQo+ID4gPiArICAg IERFQlVHICgoREVCVUdfRVJST1IsICJGYWlsZWQgaW4gSW5pdFVuaXRUZXN0RnJhbWV3b3JrLiBT dGF0dXMNCj4gPiA+ID0gJXJcbiIsIFN0YXR1cykpOw0KPiA+ID4gKyAgICBnb3RvIEVYSVQ7DQo+ ID4gPiArICB9DQo+ID4gPiArDQo+ID4gPiArICAvLw0KPiA+ID4gKyAgLy8gUG9wdWxhdGUgdGhl IFVlZmlTb3J0TGliIFVuaXQgVGVzdCBTdWl0ZS4NCj4gPiA+ICsgIC8vDQo+ID4gPiArICBTdGF0 dXMgPSBDcmVhdGVVbml0VGVzdFN1aXRlICgmU29ydFRlc3RzLCBGcmFtZXdvcmssICJVZWZpU29y dExpYg0KPiA+ID4gKyBTb3J0IFRlc3RzIiwgIlVlZmlTb3J0TGliLlNvcnRMaWIiLCBOVUxMLCBO VUxMKTsgIGlmIChFRklfRVJST1INCj4gKFN0YXR1cykpIHsNCj4gPiA+ICsgICAgREVCVUcgKChE RUJVR19FUlJPUiwgIkZhaWxlZCBpbiBDcmVhdGVVbml0VGVzdFN1aXRlIGZvcg0KPiA+IFVlZmlT b3J0TGliDQo+ID4gPiBBUEkgVGVzdHNcbiIpKTsNCj4gPiA+ICsgICAgU3RhdHVzID0gRUZJX09V VF9PRl9SRVNPVVJDRVM7DQo+ID4gPiArICAgIGdvdG8gRVhJVDsNCj4gPiA+ICsgIH0NCj4gPiA+ ICsNCj4gPiA+ICsgIC8vDQo+ID4gPiArICAvLw0KPiA+ID4gKyAtLS0tLS0tLS0tLS0tLVN1aXRl LS0tLS0tLS1EZXNjcmlwdGlvbi0tLS0tLS0tLS0tLU5hbWUtLS0tLS0tLS0tLS0NCj4gPiA+ICsg LS1GdQ0KPiA+ID4gKyBuY3Rpb24tLS0tLS0tLS0tLS0tLS0tUHJlLS0tUG9zdC0tLUNvbnRleHQt LS0tLS0tLS0tLQ0KPiA+ID4gKyAgLy8NCj4gPiA+ICsgIEFkZFRlc3RDYXNlIChTb3J0VGVzdHMs ICJTb3J0IHRoZSBBcnJheSIsICAgICAgICAiU29ydCIsDQo+ID4gPiBTb3J0VUlOVDMyQXJyYXlT aG91bGRTdWNjZWVkLCAgIE5VTEwsIE5VTEwsIE5VTEwpOw0KPiA+ID4gKyAgQWRkVGVzdENhc2Ug KFNvcnRUZXN0cywgIkNvbXBhcmUgdGhlIEJ1ZmZlciIsICAgICJDb21wYXJlIiwNCj4gPiA+IENv bXBhcmVTYW1lQnVmZmVyU2hvdWxkU3VjY2VlZCwgTlVMTCwgTlVMTCwgTlVMTCk7DQo+ID4gPiAr DQo+ID4gPiArICAvLw0KPiA+ID4gKyAgLy8gRXhlY3V0ZSB0aGUgdGVzdHMuDQo+ID4gPiArICAv Lw0KPiA+ID4gKyAgU3RhdHVzID0gUnVuQWxsVGVzdFN1aXRlcyAoRnJhbWV3b3JrKTsNCj4gPiA+ ICsNCj4gPiA+ICtFWElUOg0KPiA+ID4gKyAgaWYgKEZyYW1ld29yaykgew0KPiA+ID4gKyAgICBG cmVlVW5pdFRlc3RGcmFtZXdvcmsgKEZyYW1ld29yayk7DQo+ID4gPiArICB9DQo+ID4gPiArDQo+ ID4gPiArICByZXR1cm4gU3RhdHVzOw0KPiA+ID4gK30NCj4gPiA+ICsNCj4gPiA+ICsvLy8NCj4g PiA+ICsvLy8gQXZvaWQgRUNDIGVycm9yIGZvciBmdW5jdGlvbiBuYW1lIHRoYXQgc3RhcnRzIHdp dGggbG93ZXIgY2FzZQ0KPiA+ID4gK2xldHRlciAvLy8gI2RlZmluZSBVZWZpU29ydExpYlVuaXRU ZXN0TWFpbiBtYWluDQo+ID4gPiArDQo+ID4gPiArLyoqDQo+ID4gPiArICBTdGFuZGFyZCBQT1NJ WCBDIGVudHJ5IHBvaW50IGZvciBob3N0IGJhc2VkIHVuaXQgdGVzdCBleGVjdXRpb24uDQo+ID4g PiArDQo+ID4gPiArICBAcGFyYW1baW5dIEFyZ2MgIE51bWJlciBvZiBhcmd1bWVudHMgIEBwYXJh bVtpbl0gQXJndiAgQXJyYXkgb2YNCj4gPiA+ICsgcG9pbnRlcnMgdG8gYXJndW1lbnRzDQo+ID4g PiArDQo+ID4gPiArICBAcmV0dmFsIDAgICAgICBTdWNjZXNzDQo+ID4gPiArICBAcmV0dmFsIG90 aGVyICBFcnJvcg0KPiA+ID4gKyoqLw0KPiA+ID4gK0lOVDMyDQo+ID4gPiArVWVmaVNvcnRMaWJV bml0VGVzdE1haW4gKA0KPiA+ID4gKyAgSU4gSU5UMzIgIEFyZ2MsDQo+ID4gPiArICBJTiBDSEFS OCAgKkFyZ3ZbXQ0KPiA+ID4gKyAgKQ0KPiA+ID4gK3sNCj4gPiA+ICsgIFVuaXRUZXN0aW5nRW50 cnkgKCk7DQo+ID4gPiArICByZXR1cm4gMDsNCj4gPiA+ICt9DQo+ID4gPiBkaWZmIC0tZ2l0IGEv TWRlTW9kdWxlUGtnL01kZU1vZHVsZVBrZy5jaS55YW1sDQo+ID4gPiBiL01kZU1vZHVsZVBrZy9N ZGVNb2R1bGVQa2cuY2kueWFtbA0KPiA+ID4gaW5kZXggOGUwMWNhZjk0Y2JmLi5hYTMwNGYyY2Nk NWMgMTAwNjQ0DQo+ID4gPiAtLS0gYS9NZGVNb2R1bGVQa2cvTWRlTW9kdWxlUGtnLmNpLnlhbWwN Cj4gPiA+ICsrKyBiL01kZU1vZHVsZVBrZy9NZGVNb2R1bGVQa2cuY2kueWFtbA0KPiA+ID4gQEAg LTE5LDYgKzE5LDcgQEANCj4gPiA+ICAgICAgICAgICJFeGNlcHRpb25MaXN0IjogWw0KPiA+ID4g ICAgICAgICAgICAgICI4MDA1IiwgIlVOSVZFUlNBTF9QQVlMT0FEX1BDSV9ST09UX0JSSURHRS5V SUQiLA0KPiA+ID4gICAgICAgICAgICAgICI4MDA1IiwgIlVOSVZFUlNBTF9QQVlMT0FEX1BDSV9S T09UX0JSSURHRS5ISUQiLA0KPiA+ID4gKyAgICAgICAgICAgICI4MDAxIiwgIlVlZmlTb3J0TGli VW5pdFRlc3RNYWluIiwNCj4gPiA+ICAgICAgICAgIF0sDQo+ID4gPiAgICAgICAgICAjIyBCb3Ro IGZpbGUgcGF0aCBhbmQgZGlyZWN0b3J5IHBhdGggYXJlIGFjY2VwdGVkLg0KPiA+ID4gICAgICAg ICAgIklnbm9yZUZpbGVzIjogWw0KPiA+ID4gLS0NCj4gPiA+IDIuMjAuMS53aW5kb3dzLjENCj4g DQo+IA0KPiANCj4gDQo+IA0KPiANCj4gDQoNCg==