From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by mx.groups.io with SMTP id smtpd.web11.2248.1628646606802268555 for ; Tue, 10 Aug 2021 18:50:07 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@intel.onmicrosoft.com header.s=selector2-intel-onmicrosoft-com header.b=YiSyjFwg; spf=pass (domain: intel.com, ip: 192.55.52.93, mailfrom: hao.a.wu@intel.com) X-IronPort-AV: E=McAfee;i="6200,9189,10072"; a="211925643" X-IronPort-AV: E=Sophos;i="5.84,311,1620716400"; d="scan'208";a="211925643" Received: from orsmga006.jf.intel.com ([10.7.209.51]) by fmsmga102.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 10 Aug 2021 18:50:04 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.84,311,1620716400"; d="scan'208";a="421399339" Received: from fmsmsx602.amr.corp.intel.com ([10.18.126.82]) by orsmga006.jf.intel.com with ESMTP; 10 Aug 2021 18:50:04 -0700 Received: from fmsmsx604.amr.corp.intel.com (10.18.126.84) by fmsmsx602.amr.corp.intel.com (10.18.126.82) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2242.10; Tue, 10 Aug 2021 18:50:03 -0700 Received: from FMSEDG603.ED.cps.intel.com (10.1.192.133) by fmsmsx604.amr.corp.intel.com (10.18.126.84) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2242.10 via Frontend Transport; Tue, 10 Aug 2021 18:50:03 -0700 Received: from NAM10-DM6-obe.outbound.protection.outlook.com (104.47.58.107) 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; Tue, 10 Aug 2021 18:50:03 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=dAeL80JQnikeDt27iTINHz4V/r9l+ntRjPrqQoMkjGJo35MevnX57S4uxpGklW699+6tvmBhog9QCi9Vhh+uHYoxWwWO316h4KP7wBAM5UY0tx2rC5jEjzl++XdyJjKm83Q4ziuJYjT6Tbi14SjBRe4SJSdLPFAVozI3J8XQCW/J9lyLqK47yq6a7M8rSBs+8T9Xn7wXsiHQk3ws+Hn7s7ex0eGr1Zox5WEooXz29/HWfUGWBh2yjabPioLxmSLFJ2NfeGi1CqvN6JiZU4QQ6Ahz1Ne/ZOtHBmAtSmzpesqkuU2NTacL7OzRSQbxao46Q0bUu+tZBbKYAImrmeh0ZQ== 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=Ne1slBXx2kyWLAVr81vA0WK7Kiwuhred1Kr4+JK71is=; b=SGxziKeWlAcxdZ7c0uhcnL95AQiDDcHLBr91UgQV/pa/S+Pksm2e6COXUC/vd5sR0ZmgNfwel0VX+kSGkKBbclcQu/agr4pZVwfiExWjafUQFzugaYctF200Lm94orbZRe2lpwoDGWoeN/7oFPCpJyiXFKCyH1FyP1lcAZ/wYq51qn7bye0aaa64FQdDR6nKr3PaYNfTvaAe2vkovbNqxW9zQU0cVDEJEOuZlkiJFsCKtHWT6yqIUC2/Qm0cZDF/9JvIdh9DhWTu5Z2af3JAtcNtEm+Itl62H0R3K3JqsXpFwPZEesS3oVmkL8vB5NztjVa7onDGdjgLiWCW3XaBOA== 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=Ne1slBXx2kyWLAVr81vA0WK7Kiwuhred1Kr4+JK71is=; b=YiSyjFwgaaVC7yWVXoZbkviAXkhwyZdevT12/eumz0dPmRcKjnFSeRjYtNznRnZ47vrejJYyKgjUX4VKxWLMRjgIp8f4VJPWBLtet+PBXjo4/ARGQaTDDehSS9EkUI85haXg5qynOqNh/PKqfbKvIxAfnxOe/VCzGJ2Xc1+RGZM= Received: from BN8PR11MB3666.namprd11.prod.outlook.com (2603:10b6:408:8c::19) by BN6PR11MB2034.namprd11.prod.outlook.com (2603:10b6:404:43::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4394.16; Wed, 11 Aug 2021 01:50:01 +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.014; Wed, 11 Aug 2021 01:50:01 +0000 From: "Wu, Hao A" To: "xiewenyi (A)" , "devel@edk2.groups.io" CC: "songdongkuang@huawei.com" , "Wang, Jian J" , "Kinney, Michael D" Subject: Re: [edk2-devel] [PATCH EDK2 v2 1/1] MdeModulePkg/UefiSortLib:Add UefiSortLib unit test Thread-Topic: [edk2-devel] [PATCH EDK2 v2 1/1] MdeModulePkg/UefiSortLib:Add UefiSortLib unit test Thread-Index: AQHXhFCY+A90Om5Y5UC1zTkAVbhwTqtZneIAgAXbYPCAA4zlgIAABA1wgAknzRCAAWqmoA== Date: Wed, 11 Aug 2021 01:50:01 +0000 Message-ID: References: <1627545672-84944-1-git-send-email-xiewenyi2@huawei.com> <1627545672-84944-2-git-send-email-xiewenyi2@huawei.com> In-Reply-To: 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: huawei.com; dkim=none (message not signed) header.d=none;huawei.com; dmarc=none action=none header.from=intel.com; x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 3afcf04e-4b7b-44fd-f648-08d95c6a552d x-ms-traffictypediagnostic: BN6PR11MB2034: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:1284; x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: 1m+CnvwJo5+ZCPtZHim3M5SvVWrSM6hIKv0jNAgCKGxWacEJ0Qm5O0iLLMSdT3ePgdx3mdFqs59rYY/IuDMVSNQNG0mMDXe8wfzmPIjl/0hYTh5ShLKzaO+XQKzXWonvCt9cK7WFdjwJNvXMPnEV+TKx/bNY6k/0mx1/RRVfD1ysC0p2JUMVPb7mroOskDAst43SxuK8jrlxOpHfad3O3sD2tzjt2I8jq9n+BzWRkrg72uOUwrzmZj2mS7re5xHA5kVZ4OlLBDl/WyJJbu4AP1P6ZmsHMHXGsNKrbWyIBoAKnHUev1vV05IQVR4siGOF1tVJhqlVgm6neEGm4cktBeCjUycbbs7d4rAGaIf6662PNy6HjMKglbV5dstE0xtn4kNmFwhWbuZaVbu7lZ5bAFFnGBDSZ+4VCpVS+CkoZndbJ9KUImSw74aR4031MBk57zGz6wAogFUT+y+bzmrpDW6VEOVKD9siMXaeuUeKGmbPNrVb8DowQvRKDOOqyUggSGZB0xisMfDsifxxRZz9GY7R5PsliUR5ACP3syHpzTao20usk4HjI+uYToo1HbDpfPl2Ol8uYbYzJriWQnBVo5UDWP++2FXYgRy+VHaHS7HXPbrsHtj+3F/yAHzwvLtFozcv5R+iA6q6M24FBULCh3JgwFeMIK38TPTj8CzMOCXUtxA/cGvuBViy3ofmVCQQ/9Lt05ueVsCaGzNevkJM/B2JajwhRb8PM5D12SLj1/KmatFukIN1UyZeoSOCAvTkkzb9bv6GCmPjWgjDJFHsuW1ZmQ4yLsRAPbUvy8SpNj37XsNvri7ZJtwmVEP8TpZQFRgS2qe7NUjvgG4P7ZMNXA== 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)(346002)(396003)(39860400002)(136003)(376002)(366004)(86362001)(966005)(71200400001)(66476007)(66556008)(64756008)(66446008)(6506007)(53546011)(2906002)(66946007)(7696005)(76116006)(30864003)(33656002)(478600001)(4326008)(316002)(52536014)(83380400001)(38070700005)(45080400002)(54906003)(110136005)(8676002)(8936002)(5660300002)(55016002)(38100700002)(186003)(26005)(122000001)(107886003)(9686003)(579004)(559001);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?YUlSU3phUUtrN1duUUtKU1E4T0JIRkV6NXhtUWtPMUpRdkE5ckZsa0ExdUFP?= =?utf-8?B?L0FsUkoxMmlIeGNQN3NGajRMQ0JLK1BpNSswaFVtKzFJdElJdnVtOC9DcTZP?= =?utf-8?B?QTdXREVVYjVNa2JNdXIza0RkWFVLOGN5cEpodmM5NG5hKy96SEVGdlM2VXdn?= =?utf-8?B?K2k1K2JnYTQxTkZXVkRkdWR4MnBxMU1vUjE5RjZHWGRDRDV1c04vUDB6RWhT?= =?utf-8?B?aUZiemY5akUxWHZYRWQrTTgwZ0l2L2VFdElhS2VubzE1b1VrOXIvK1FWVjBB?= =?utf-8?B?VnV2QWcwU2JtVGltTUNJU3lCTDA5LzdwN0drQXNOVUdXZzJpSjMxTng1ZnVa?= =?utf-8?B?S0VxdU9HUVhmS1NGODBHZHlBOEhXWTNWYWNpUE1oSFJYK1BwWWlva3I3WjQ0?= =?utf-8?B?M2lSVEJEREVqTGNPNm5NWE43NnRJRU1SL0lhTW5DR3F5amtkRVJpQkROajVz?= =?utf-8?B?UkhKVlhjN01LREpDRUhBSzhVa3JMYjBoa1NPVldEY2lkUmlEODNWVXBZUkox?= =?utf-8?B?VnFkL2wxUEh0eVVLRVdJSVZobm96cDVZVSs1eUY4cXE0MW43VFR6MmZPbWlG?= =?utf-8?B?OTR5RVdwR3dVRWlkZk4zTWVuRkszWENxeFE4ODY2TmhJUkZlc2swdm1rajAr?= =?utf-8?B?M3V5VzllUkF1eG8raWJaRmQ0UGpsbmc1cUxST1VyU2xvblhaaENCNXl1QVVV?= =?utf-8?B?Y3RHR3BUMmM4YWJ4T2EvWWpkSWhZYmNFM3p2RmUvN1ZObnR0VlN1bC9rWTVa?= =?utf-8?B?SlNhWVY4T1NDSCt6UkE2RWc1ODRLWnJwbDUrR1lWWlZVUzlaSDBmVEZuNmM4?= =?utf-8?B?ZCtrb3lremNjcmdLdkhHd25aekcxNmF1U3VEY3ZpUWhoeUZQRFhSZ3RLRUJH?= =?utf-8?B?d1BUNU9GT012dDBDei9FNWR2Ni9ZazhieC90dWhtSlZMWWNqWDJBZWNEOUNO?= =?utf-8?B?eEY5Mlp4cEE5T0dsQWM1eUpjcVVwcjB4VmtZbVlOMHZHK2FyY0NoMnZIaG5o?= =?utf-8?B?a3JvNEswS1AwVFZNZGVBb3hKOTVuZFhZa2s2ckxvV3FZYmYwYm96V05NeHll?= =?utf-8?B?KzVJUWpqUDhVWDBWZXhqeUd1NFRBR2tHNDVQWVJadXBNNmFrdG1ZUjRoNzh5?= =?utf-8?B?czZlQ2J5VjJFbVp2UktGWXljRHkyS0FVZTlIMDN2L0x1dlhhaW43SUFCSWNt?= =?utf-8?B?Ly9xUk42NUdOUHBLLzZvajhldExFeHc3Rzdjd0IzQng0N05qTmdJR2hNaG82?= =?utf-8?B?bXVZSXp6VTFlVWRmaXlJSkNVd3FhYTFIbDVYb0JxdVMxSE0weTcyelcxWW95?= =?utf-8?B?UVcwKzNxVWRhaVpsYWttZVUybWZHam9FekhWOGVqaHV4MzdBUDJRWW56NTdU?= =?utf-8?B?UDhxSGUyOXIxTzViWUl0U3B0SEh4bEdIVGNBdmlLSERRTjViei9Lck1acnF5?= =?utf-8?B?bVFEZXhiRXFIcjBITzg2Z2JmN0l3OW5pclhSVXlOK21yN0plbFZxWXdsWklO?= =?utf-8?B?cFVGenZrMnlpZWpVNUxWYW1ESnJxMlAxRWExQXJJc3RnV0ZrN2dnMGJ3d3VG?= =?utf-8?B?NCtyVU9LRmRMa01YWjNQMzhrZW8wL3pFbWs3dGhRcjFTZVJ1TU9ucmhpL2Fk?= =?utf-8?B?M2VFc3BnMUxRejREeHE2b0JxOEFNUk56LythQmdqcHplWjFyZDF6UHI4aVN0?= =?utf-8?B?SWw4S2Z5SUk4Qk5BSjNlMzVDeXgzTlFNVU9sVTYySkd3UDQ4dUkwZ3dlUnFn?= =?utf-8?Q?iukWrcetZSDhkfsVgIQOwGH/9m+ZmVsh6PP/+CF?= 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: 3afcf04e-4b7b-44fd-f648-08d95c6a552d X-MS-Exchange-CrossTenant-originalarrivaltime: 11 Aug 2021 01:50:01.3660 (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: GLxKZTM3UsKY2MIABteSiYItg1GpJHrp09o/566Sq59wtxYfHx/sTSn+e9FutJEPJmkJEFAY1K45bQW9LJBOGA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN6PR11MB2034 Return-Path: hao.a.wu@intel.com X-OriginatorOrg: intel.com Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 U2VlbXMgbm8gaGVscCBpcyByZWNlaXZlZCBzbyBmYXIuDQpUaGUgYXBwcm9hY2ggSSBjYW4gdGhp bmsgb2YgaXMgdG8gYWRkIHRoaXMgdG8gdGhlIEVDQyBleGNlcHRpb24gbGlzdCBkZWZpbmVkIGlu IGZpbGUgTWRlTW9kdWxlUGtnLmNpLnlhbWwuDQoNCkhlbGxvIFdlbnlpLA0KDQpDb3VsZCB5b3Ug aGVscCB0byBjaGVjayBpZiB0aGUgY29kZSBjaGFuZ2VzIGluIGh0dHBzOi8vZ2l0aHViLmNvbS90 aWFub2NvcmUvZWRrMi9wdWxsLzE4ODMgd29ya3MgZm9yIHlvdT8NCklmIHNvLCBjb3VsZCB5b3Ug dXBkYXRlIGEgVjMgdmVyc2lvbiBvZiB0aGUgcGF0Y2g/IFRoYW5rcyBpbiBhZHZhbmNlLg0KDQpC ZXN0IFJlZ2FyZHMsDQpIYW8gV3UNCg0KPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBG cm9tOiBkZXZlbEBlZGsyLmdyb3Vwcy5pbyA8ZGV2ZWxAZWRrMi5ncm91cHMuaW8+IE9uIEJlaGFs ZiBPZiBXdSwgSGFvDQo+IEENCj4gU2VudDogVHVlc2RheSwgQXVndXN0IDEwLCAyMDIxIDEyOjEy IFBNDQo+IFRvOiBLaW5uZXksIE1pY2hhZWwgRCA8bWljaGFlbC5kLmtpbm5leUBpbnRlbC5jb20+ OyBkZXZlbEBlZGsyLmdyb3Vwcy5pbzsNCj4geGlld2VueWkgKEEpIDx4aWV3ZW55aTJAaHVhd2Vp LmNvbT4NCj4gQ2M6IHNvbmdkb25na3VhbmdAaHVhd2VpLmNvbTsgV2FuZywgSmlhbiBKIDxqaWFu Lmoud2FuZ0BpbnRlbC5jb20+DQo+IFN1YmplY3Q6IFJlOiBbZWRrMi1kZXZlbF0gW1BBVENIIEVE SzIgdjIgMS8xXQ0KPiBNZGVNb2R1bGVQa2cvVWVmaVNvcnRMaWI6QWRkIFVlZmlTb3J0TGliIHVu aXQgdGVzdA0KPiANCj4gU29ycnkgTWlrZSwNCj4gDQo+IERvIHlvdSBoYXZlIGFkdmljZSBvbiBo b3cgdG8gZGVhbCB3aXRoIEVDQyByZXBvcnRpbmcgZnVuY3Rpb24gbmFtaW5nIGlzc3VlDQo+IG9u IHRoZSAnbWFpbicgZnVuY3Rpb24gZm9yIHVuaXQgdGVzdCBjYXNlcz8NCj4gU28gZmFyLCBJIHRo aW5rIFdlbnlpIGhhcyB0cmllZCBmb2xsb3dpbmcgdGhlIHNhbWUgcGF0dGVybiBpbiBmaWxlDQo+ IE1kZU1vZHVsZVBrZ1xVbml2ZXJzYWxcVmFyaWFibGVcUnVudGltZUR4ZVxSdW50aW1lRHhlVW5p dFRlc3RcVmFyaQ0KPiBhYmxlTG9ja1JlcXVlc3RUb0xvY2tVbml0VGVzdC5jOg0KPiANCj4gLy8v DQo+IC8vLyBBdm9pZCBFQ0MgZXJyb3IgZm9yIGZ1bmN0aW9uIG5hbWUgdGhhdCBzdGFydHMgd2l0 aCBsb3dlciBjYXNlIGxldHRlciAvLy8NCj4gI2RlZmluZSBNYWluIG1haW4NCj4gDQo+IC8qKg0K PiAgIFN0YW5kYXJkIFBPU0lYIEMgZW50cnkgcG9pbnQgZm9yIGhvc3QgYmFzZWQgdW5pdCB0ZXN0 IGV4ZWN1dGlvbi4NCj4gDQo+ICAgQHBhcmFtW2luXSBBcmdjICBOdW1iZXIgb2YgYXJndW1lbnRz DQo+ICAgQHBhcmFtW2luXSBBcmd2ICBBcnJheSBvZiBwb2ludGVycyB0byBhcmd1bWVudHMNCj4g DQo+ICAgQHJldHZhbCAwICAgICAgU3VjY2Vzcw0KPiAgIEByZXR2YWwgb3RoZXIgIEVycm9yDQo+ ICoqLw0KPiBJTlQzMg0KPiBNYWluICgNCj4gICBJTiBJTlQzMiAgQXJnYywNCj4gICBJTiBDSEFS OCAgKkFyZ3ZbXQ0KPiAgICkNCj4gDQo+IEJ1dCBpdCBsb29rcyBsaWtlIHRoZSBFQ0MgY2hlY2tl ciBpbiB0aGUgbWVyZ2UgdGVzdCBpcyBzdGlsbCBjb21wbGFpbmluZy4NCj4gDQo+IEJlc3QgUmVn YXJkcywNCj4gSGFvIFd1DQo+IA0KPiA+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID4g RnJvbTogZGV2ZWxAZWRrMi5ncm91cHMuaW8gPGRldmVsQGVkazIuZ3JvdXBzLmlvPiBPbiBCZWhh bGYgT2YgV3UsDQo+IEhhbw0KPiA+IEENCj4gPiBTZW50OiBXZWRuZXNkYXksIEF1Z3VzdCA0LCAy MDIxIDQ6MjQgUE0NCj4gPiBUbzogeGlld2VueWkgKEEpIDx4aWV3ZW55aTJAaHVhd2VpLmNvbT47 IEtpbm5leSwgTWljaGFlbCBEDQo+ID4gPG1pY2hhZWwuZC5raW5uZXlAaW50ZWwuY29tPjsgZGV2 ZWxAZWRrMi5ncm91cHMuaW8NCj4gPiBDYzogc29uZ2RvbmdrdWFuZ0BodWF3ZWkuY29tOyBXYW5n LCBKaWFuIEogPGppYW4uai53YW5nQGludGVsLmNvbT4NCj4gPiBTdWJqZWN0OiBSZTogW2VkazIt ZGV2ZWxdIFtQQVRDSCBFREsyIHYyIDEvMV0NCj4gPiBNZGVNb2R1bGVQa2cvVWVmaVNvcnRMaWI6 QWRkIFVlZmlTb3J0TGliIHVuaXQgdGVzdA0KPiA+DQo+ID4gPiAtLS0tLU9yaWdpbmFsIE1lc3Nh Z2UtLS0tLQ0KPiA+ID4gRnJvbTogeGlld2VueWkgKEEpIDx4aWV3ZW55aTJAaHVhd2VpLmNvbT4N Cj4gPiA+IFNlbnQ6IFdlZG5lc2RheSwgQXVndXN0IDQsIDIwMjEgNDowNSBQTQ0KPiA+ID4gVG86 IFd1LCBIYW8gQSA8aGFvLmEud3VAaW50ZWwuY29tPjsgZGV2ZWxAZWRrMi5ncm91cHMuaW8NCj4g PiA+IENjOiBzb25nZG9uZ2t1YW5nQGh1YXdlaS5jb207IFdhbmcsIEppYW4gSiA8amlhbi5qLndh bmdAaW50ZWwuY29tPg0KPiA+ID4gU3ViamVjdDogUmU6IFtlZGsyLWRldmVsXSBbUEFUQ0ggRURL MiB2MiAxLzFdDQo+ID4gPiBNZGVNb2R1bGVQa2cvVWVmaVNvcnRMaWI6QWRkIFVlZmlTb3J0TGli IHVuaXQgdGVzdA0KPiA+ID4NCj4gPiA+DQo+ID4gPg0KPiA+ID4gT24gMjAyMS84LzIgOTo1Niwg V3UsIEhhbyBBIHdyb3RlOg0KPiA+ID4gPj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4g PiA+ID4+IEZyb206IGRldmVsQGVkazIuZ3JvdXBzLmlvIDxkZXZlbEBlZGsyLmdyb3Vwcy5pbz4g T24gQmVoYWxmIE9mDQo+ID4gPiA+PiBXdSwgSGFvIEENCj4gPiA+ID4+IFNlbnQ6IFRodXJzZGF5 LCBKdWx5IDI5LCAyMDIxIDQ6MjYgUE0NCj4gPiA+ID4+IFRvOiBXZW55aSBYaWUgPHhpZXdlbnlp MkBodWF3ZWkuY29tPjsgZGV2ZWxAZWRrMi5ncm91cHMuaW87DQo+IFdhbmcsDQo+ID4gPiA+PiBK aWFuIEogPGppYW4uai53YW5nQGludGVsLmNvbT4NCj4gPiA+ID4+IENjOiBzb25nZG9uZ2t1YW5n QGh1YXdlaS5jb20NCj4gPiA+ID4+IFN1YmplY3Q6IFJlOiBbZWRrMi1kZXZlbF0gW1BBVENIIEVE SzIgdjIgMS8xXQ0KPiA+ID4gPj4gTWRlTW9kdWxlUGtnL1VlZmlTb3J0TGliOkFkZCBVZWZpU29y dExpYiB1bml0IHRlc3QNCj4gPiA+ID4+DQo+ID4gPiA+Pj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdl LS0tLS0NCj4gPiA+ID4+PiBGcm9tOiBXZW55aSBYaWUgPHhpZXdlbnlpMkBodWF3ZWkuY29tPg0K PiA+ID4gPj4+IFNlbnQ6IFRodXJzZGF5LCBKdWx5IDI5LCAyMDIxIDQ6MDEgUE0NCj4gPiA+ID4+ PiBUbzogZGV2ZWxAZWRrMi5ncm91cHMuaW87IFdhbmcsIEppYW4gSiA8amlhbi5qLndhbmdAaW50 ZWwuY29tPjsNCj4gPiA+ID4+PiBXdSwgSGFvIEEgPGhhby5hLnd1QGludGVsLmNvbT4NCj4gPiA+ ID4+PiBDYzogc29uZ2RvbmdrdWFuZ0BodWF3ZWkuY29tOyB4aWV3ZW55aTJAaHVhd2VpLmNvbQ0K PiA+ID4gPj4+IFN1YmplY3Q6IFtQQVRDSCBFREsyIHYyIDEvMV0gTWRlTW9kdWxlUGtnL1VlZmlT b3J0TGliOkFkZA0KPiA+ID4gPj4+IFVlZmlTb3J0TGliIHVuaXQgdGVzdA0KPiA+ID4gPj4+DQo+ ID4gPiA+Pj4gQWRkaW5nIHR3byB1bml0IHRlc3QgY2FzZSBmb3IgVWVmaVNvcnRMaWIuIE9uZSBp cyBhIHRlc3Qgb24NCj4gPiA+ID4+PiBzb3J0aW5nIGFuIGFycmF5IG9mDQo+ID4gPiA+Pj4gVUlO VDMyIGJ5IHVzaW5nIFBlcmZvcm1RdWlja1NvcnQsIGFub3RoZXIgaXMgYSB0ZXN0IG9uIGNvbXBh cmluZw0KPiA+ID4gPj4+IHRoZSBzYW1lIGJ1ZmZlciBieSB1c2luZyBTdHJpbmdDb21wYXJlLg0K PiA+ID4gPj4NCj4gPiA+ID4+DQo+ID4gPiA+PiBUaGFua3MuDQo+ID4gPiA+PiBSZXZpZXdlZC1i eTogSGFvIEEgV3UgPGhhby5hLnd1QGludGVsLmNvbT4NCj4gPiA+ID4NCj4gPiA+ID4NCj4gPiA+ ID4gU29ycnksIEkgZm91bmQgdGhhdCB0aGVyZSBhcmUgYSBjb3VwbGUgb2YgY29kaW5nIGZvcm1h dCBzdHlsZQ0KPiA+ID4gPiBjaGVjayBmYWlsdXJlcw0KPiA+ID4gd2hlbiBtZXJnaW5nIHRoZSBw YXRjaC4NCj4gPiA+ID4gQ291bGQgeW91IGhlbHAgdG8gcmVzb2x2ZSB0aGVtIGFuZCB0aGVuIGNy ZWF0ZSBhIHRlc3QgcHVsbCByZXF1ZXN0DQo+ID4gPiA+IG9uIHRoZQ0KPiA+ID4gR2l0SHViIGZv ciB2ZXJpZmljYXRpb24/IFRoYW5rcyBpbiBhZHZhbmNlLg0KPiA+ID4gPiAoSSB0aGluayB5b3Ug Y2FuIHRha2UgdGhlIGNhc2UgdW5kZXINCj4gPiA+ID4NCj4gTWRlTW9kdWxlUGtnL1VuaXZlcnNh bC9WYXJpYWJsZS9SdW50aW1lRHhlL1J1bnRpbWVEeGVVbml0VGVzdC8NCj4gPiBmb3INCj4gPiA+ ID4gcmVmZXJlbmNlLikNCj4gPiA+ID4NCj4gPiA+DQo+ID4gPiBIaSwgV3UgSGFvDQo+ID4gPg0K PiA+ID4gSSB0cnkgdG8gZGVhbCB3aXRoIHRoZSBjb2RpbmcgZm9ybWF0IHN0eWxlIGNoZWNrIGZh aWx1cmVzLCBhbmQgbWVldA0KPiA+ID4gYSBmYWlsdXJlIHdoaWNoIEkgYW0gbm90IHN1cmUgaG93 IHRvIHNvbHZlLg0KPiA+ID4gSSB0YWtlIHRoZSBjYXNlIHlvdSB0b2xkIGZvciByZWZlcmVuY2Us IGJ1dCBzdGlsbCB0aGVyZSdzIGEgZmFpbHVyZQ0KPiA+ID4gc2FpZCB0aGUgZGVmaW5lIHNob3Vs ZCBiZSBjYXBpdGFsIGxldHRlcnMuDQo+ID4gPiBidXQgaWYgY2hhbmdlIGl0IHRvIGNhcGl0YWwg bGV0dGVycywgdGhlcmUgd2lsbCBiZSBhbm90aGVyIGVycm9yDQo+ID4gPiBGdW5jdGlvbiBuYW1l IGRvZXMgbm90IGZvbGxvdyB0aGUgcnVsZXM6IDEuIEZpcnN0IGNoYXJhY3RlciBzaG91bGQNCj4g PiA+IGJlIHVwcGVyIGNhc2UgMi4gTXVzdCBjb250YWluIGxvd2VyIGNhc2UgY2hhcmFjdGVycyAz LiBObyB3aGl0ZQ0KPiA+ID4gc3BhY2UgY2hhcmFjdGVycw0KPiA+ID4NCj4gPiA+ICNkZWZpbmUg TWFpbiBtYWluDQo+ID4gPg0KPiA+ID4gSU5UMzINCj4gPiA+IE1haW4gKA0KPiA+ID4gICBJTiBJ TlQzMiAgQXJnYywNCj4gPiA+ICAgSU4gQ0hBUjggICpBcmd2W10NCj4gPiA+ICAgKQ0KPiA+ID4g ew0KPiA+ID4gICBVbml0VGVzdGluZ0VudHJ5ICgpOw0KPiA+ID4gICByZXR1cm4gMDsNCj4gPiA+ IH0NCj4gPg0KPiA+DQo+ID4gSGVsbG8gTWlrZSwNCj4gPg0KPiA+IEkgc2F3IHRoZSBiZWxvdyBj b21taXQ6DQo+ID4gICBTSEEtMTogZGNhYTkzOTM2NTkxODgzYWE3ODI2ZWI0NWVmMDA0MTZhZDgy ZWYwOA0KPiA+ICAgKiBNZGVNb2R1bGVQa2cvVmFyaWFibGUvUnVudGltZUR4ZTogQWRkIFZhcmlh YmxlIExvY2sgUHJvdG9jb2wgVW5pdA0KPiA+IFRlc3RzIGhhcyBhIHNpbWlsYXIgY2FzZSB0aGF0 IHNob3VsZCBpbnZvbHZlIHRoZSBuYW1pbmcgb2YgdGhlICdtYWluJw0KPiA+IGZ1bmN0aW9uIHdp dGhpbiB0aGUgdW5pdCB0ZXN0IGNvZGVzLg0KPiA+DQo+ID4gSSBhbSB3b25kZXJpbmcgaG93IHRo ZSBvcGVuIHJhaXNlZCBieSBXZW55aSB3YXMgaGFuZGxlZCBiYWNrIHRoZW4uDQo+ID4gRG8geW91 IGhhdmUgc3VnZ2VzdGlvbnMgZm9yIHRoaXMgY2FzZT8gVGhhbmtzIGluIGFkdmFuY2UuDQo+ID4N Cj4gPiBCZXN0IFJlZ2FyZHMsDQo+ID4gSGFvIFd1DQo+ID4NCj4gPg0KPiA+ID4NCj4gPiA+IFRo YW5rcw0KPiA+ID4gV2VueWkNCj4gPiA+DQo+ID4gPiA+IEVycm9yIGRldGFpbHM6DQo+ID4gPiA+ IDIwMjEtMDgtMDJUMDE6MDk6MjguNTk1NTgyMFogIyNbc2VjdGlvbl1TdGFydGluZzogQnVpbGQg YW5kIFRlc3QNCj4gPiA+ID4gTWRlTW9kdWxlUGtnIElBMzIsWDY0LEFSTSxBQVJDSDY0LFJJU0NW NjQgMjAyMS0wOC0NCj4gPiA+IDAyVDAxOjA5OjI4LjU5NjA3MzNaDQo+ID4gPg0KPiA+DQo+ID09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0N Cj4gPiA9PT09PT09DQo+ID4gPiA9PT09PT09PT09PT09DQo+ID4gPiA+IDIwMjEtMDgtMDJUMDE6 MDk6MjguNTk2MTAxOFogVGFzayAgICAgICAgIDogQ29tbWFuZCBMaW5lDQo+ID4gPiA+IDIwMjEt MDgtMDJUMDE6MDk6MjguNTk2MTI1OFogRGVzY3JpcHRpb24gIDogUnVuIGEgY29tbWFuZCBsaW5l DQo+ID4gPiA+IHdpdGgNCj4gPiA+IGFyZ3VtZW50cw0KPiA+ID4gPiAyMDIxLTA4LTAyVDAxOjA5 OjI4LjU5NjE1MDJaIFZlcnNpb24gICAgICA6IDEuMS4zDQo+ID4gPiA+IDIwMjEtMDgtMDJUMDE6 MDk6MjguNTk2MTg5N1ogQXV0aG9yICAgICAgIDogTWljcm9zb2Z0IENvcnBvcmF0aW9uDQo+ID4g PiA+IDIwMjEtMDgtMDJUMDE6MDk6MjguNTk2MjI1OVogSGVscCAgICAgICAgIDogW01vcmUNCj4g PiA+IEluZm9ybWF0aW9uXShodHRwczovL2dvLm1pY3Jvc29mdC5jb20vZndsaW5rLz9MaW5rSUQ9 NjEzNzM1KQ0KPiA+ID4gPiAyMDIxLTA4LTAyVDAxOjA5OjI4LjU5NjI2NzhaDQo+ID4gPiA+DQo+ ID4gPg0KPiA+DQo+ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0NCj4gPiA9PT09PT09DQo+ID4gPiA9PT09PQ0KPiA+ID4gPiA9PT09PT09 PSAyMDIxLTA4LTAyVDAxOjA5OjI5LjM1MDQ5NDZaIChub2RlOjM2NTkpIFdhcm5pbmc6IFVzZQ0K PiA+ID4gPiBDaXBoZXJpdiBmb3IgY291bnRlciBtb2RlIG9mIGFlcy0yNTYtY3RyDQo+ID4gPiA+ IDIwMjEtMDgtMDJUMDE6MDk6MjkuMzUxMDAyMFoNCj4gPiA+ID4gKG5vZGU6MzY1OSkgV2Fybmlu ZzogVXNlIENpcGhlcml2IGZvciBjb3VudGVyIG1vZGUgb2YgYWVzLTI1Ni1jdHINCj4gPiA+ID4g MjAyMS0wOC0wMlQwMTowOToyOS4zNTExNTUxWiAobm9kZTozNjU5KSBXYXJuaW5nOiBVc2UgQ2lw aGVyaXYgZm9yDQo+ID4gPiA+IGNvdW50ZXIgbW9kZSBvZiBhZXMtMjU2LWN0ciAyMDIxLTA4LTAy VDAxOjA5OjI5LjM1MTM2MDVaDQo+ID4gPiA+IChub2RlOjM2NTkpDQo+ID4gPiA+IFdhcm5pbmc6 IFVzZSBDaXBoZXJpdiBmb3IgY291bnRlciBtb2RlIG9mIGFlcy0yNTYtY3RyDQo+ID4gPiA+IDIw MjEtMDgtMDJUMDE6MDk6MjkuMzUxNjc5OFogKG5vZGU6MzY1OSkgV2FybmluZzogVXNlIENpcGhl cml2IGZvcg0KPiA+ID4gPiBjb3VudGVyIG1vZGUgb2YgYWVzLTI1Ni1jdHIgMjAyMS0wOC0wMlQw MTowOToyOS4zNTE3NTM2Wg0KPiA+ID4gPiAobm9kZTozNjU5KQ0KPiA+ID4gPiBXYXJuaW5nOiBV c2UgQ2lwaGVyaXYgZm9yIGNvdW50ZXIgbW9kZSBvZiBhZXMtMjU2LWN0cg0KPiA+ID4gPiAyMDIx LTA4LTAyVDAxOjA5OjI5LjM1MTgxNzhaIChub2RlOjM2NTkpIFdhcm5pbmc6IFVzZSBDaXBoZXJp diBmb3INCj4gPiA+ID4gY291bnRlciBtb2RlIG9mIGFlcy0yNTYtY3RyIDIwMjEtMDgtMDJUMDE6 MDk6MjkuMzU0NTQ2MVoNCj4gPiA+ID4NCj4gW2NvbW1hbmRdL29wdC9ob3N0ZWR0b29sY2FjaGUv UHl0aG9uLzMuOC4xMS94NjQvYmluL3N0dWFydF9jaV9idWlsDQo+ID4gPiA+IGQgLWMgLnB5dG9v bC9DSVNldHRpbmdzLnB5IC1wIE1kZU1vZHVsZVBrZyAtdCBSRUxFQVNFLE5PLVRBUkdFVCAtYQ0K PiA+ID4gPiBJQTMyLFg2NCxBUk0sQUFSQ0g2NCxSSVNDVjY0IFRPT0xfQ0hBSU5fVEFHPUdDQzUN Cj4gPiA+ID4gMjAyMS0wOC0wMlQwMTowOToyOS4zNTQ2NzA3WiBTRUNUSU9OIC0gSW5pdCBTREUN Cj4gPiA+ID4gMjAyMS0wOC0wMlQwMTowOToyOS4zNTQ3NTcxWiBXQVJOSU5HIC0gVXNpbmcgUGlw IFRvb2xzIGJhc2VkDQo+ID4gPiA+IEJhc2VUb29scyAyMDIxLTA4LTAyVDAxOjA5OjI5LjM1NDgz OTVaIFNFQ1RJT04gLSBMb2FkaW5nIFBsdWdpbnMNCj4gPiA+ID4gMjAyMS0wOC0wMlQwMTowOToy OS4zNTQ5MjEyWiBTRUNUSU9OIC0gU3RhcnQgSW52b2NhYmxlIFRvb2wNCj4gPiA+ID4gMjAyMS0w OC0wMlQwMTowOToyOS4zNTUwMDE4WiBTRUNUSU9OIC0gR2V0dGluZyBFbnZpcm9ubWVudA0KPiA+ ID4gPiAyMDIxLTA4LTAyVDAxOjA5OjI5LjM1NTA3OTRaIFNFQ1RJT04gLSBMb2FkaW5nIHBsdWdp bnMNCj4gPiA+ID4gMjAyMS0wOC0wMlQwMTowOToyOS4zNTUxNjc1WiBTRUNUSU9OIC0gQnVpbGRp bmcgTWRlTW9kdWxlUGtnDQo+ID4gUGFja2FnZQ0KPiA+ID4gPiAyMDIxLTA4LTAyVDAxOjA5OjI5 LjM1NTI2OTNaIFBST0dSRVNTIC0gLS1SdW5uaW5nIE1kZU1vZHVsZVBrZzoNCj4gPiA+ID4gRWNj Q2hlY2sgVGVzdCBOTy1UQVJHRVQgLS0gMjAyMS0wOC0wMlQwMTowOTozMy4wNjk3MDA2WiBFUlJP UiAtDQo+ID4gPiA+IDIwMjEtMDgtMDJUMDE6MDk6MzMuMDY5ODAxOFogRVJST1IgLSBFRkkgY29k aW5nIHN0eWxlIGVycm9yDQo+ID4gPiA+IDIwMjEtMDgtMDJUMDE6MDk6MzMuMDY5ODc0OFogRVJS T1IgLSAqRXJyb3IgY29kZTogNTAwNw0KPiA+ID4gPiAyMDIxLTA4LTAyVDAxOjA5OjMzLjA3MDA2 MzFaIEVSUk9SIC0gKlRoZXJlIHNob3VsZCBiZSBubw0KPiA+ID4gPiBpbml0aWFsaXphdGlvbiBv ZiBhIHZhcmlhYmxlIGFzIHBhcnQgb2YgaXRzIGRlY2xhcmF0aW9uDQo+ID4gPiA+IDIwMjEtMDgt MDJUMDE6MDk6MzMuMDcwMjY3NVogRVJST1IgLSAqZmlsZToNCj4gPiA+ID4NCj4gPg0KPiAvL2hv bWUvdnN0cy93b3JrLzEvcy9NZGVNb2R1bGVQa2cvTGlicmFyeS9VZWZpU29ydExpYi9Vbml0VGVz dC9VZWZpUw0KPiA+ID4gPiBvciB0TGliVW5pdFRlc3QuYyAyMDIxLTA4LTAyVDAxOjA5OjMzLjA3 MDM0MjFaIEVSUk9SIC0gKkxpbmUgbnVtYmVyOg0KPiA+ID4gPiA3NyAyMDIxLTA4LTAyVDAxOjA5 OjMzLjA3MDM5MjlaIEVSUk9SIC0gKlZhcmlhYmxlIE5hbWU6IFRlc3RDb3VudA0KPiA+ID4gPiAy MDIxLTA4LTAyVDAxOjA5OjMzLjA3MTU2ODRaIEVSUk9SIC0gMjAyMS0wOC0wMlQwMTowOTozMy4w NzE2NjM0Wg0KPiA+ID4gPiBFUlJPUiAtIEVGSSBjb2Rpbmcgc3R5bGUgZXJyb3IgMjAyMS0wOC0w MlQwMTowOTozMy4wNzE3MzcyWiBFUlJPUg0KPiA+ID4gPiAtICpFcnJvciBjb2RlOiA1MDA3IDIw MjEtMDgtMDJUMDE6MDk6MzMuMDcxODIxNFogRVJST1IgLSAqVGhlcmUNCj4gPiA+ID4gc2hvdWxk IGJlIG5vIGluaXRpYWxpemF0aW9uIG9mIGEgdmFyaWFibGUgYXMgcGFydCBvZiBpdHMNCj4gPiA+ ID4gZGVjbGFyYXRpb24gMjAyMS0wOC0wMlQwMTowOTozMy4wNzE5MTk1WiBFUlJPUiAtICpmaWxl Og0KPiA+ID4gPg0KPiA+DQo+IC8vaG9tZS92c3RzL3dvcmsvMS9zL01kZU1vZHVsZVBrZy9MaWJy YXJ5L1VlZmlTb3J0TGliL1VuaXRUZXN0L1VlZmlTDQo+ID4gPiA+IG9yIHRMaWJVbml0VGVzdC5j IDIwMjEtMDgtMDJUMDE6MDk6MzMuMDcyMDYzMVogRVJST1IgLSAqTGluZSBudW1iZXI6DQo+ID4g PiA+IDc4IDIwMjEtMDgtMDJUMDE6MDk6MzMuMDcyMTQ1MVogRVJST1IgLSAqVmFyaWFibGUgTmFt ZTogVGVzdEJ1ZmZlcg0KPiA+ID4gPiAyMDIxLTA4LTAyVDAxOjA5OjMzLjA3MjIxMTRaIEVSUk9S IC0gMjAyMS0wOC0wMlQwMTowOTozMy4wNzI0OTUzWg0KPiA+ID4gPiBFUlJPUiAtIEVGSSBjb2Rp bmcgc3R5bGUgZXJyb3IgMjAyMS0wOC0wMlQwMTowOTozMy4wNzI1NzEzWiBFUlJPUg0KPiA+ID4g PiAtICpFcnJvciBjb2RlOiA1MDA3IDIwMjEtMDgtMDJUMDE6MDk6MzMuMDcyNjU2MlogRVJST1Ig LSAqVGhlcmUNCj4gPiA+ID4gc2hvdWxkIGJlIG5vIGluaXRpYWxpemF0aW9uIG9mIGEgdmFyaWFi bGUgYXMgcGFydCBvZiBpdHMNCj4gPiA+ID4gZGVjbGFyYXRpb24gMjAyMS0wOC0wMlQwMTowOToz My4wNzI3NTI2WiBFUlJPUiAtICpmaWxlOg0KPiA+ID4gPg0KPiA+DQo+IC8vaG9tZS92c3RzL3dv cmsvMS9zL01kZU1vZHVsZVBrZy9MaWJyYXJ5L1VlZmlTb3J0TGliL1VuaXRUZXN0L1VlZmlTDQo+ ID4gPiA+IG9yIHRMaWJVbml0VGVzdC5jIDIwMjEtMDgtMDJUMDE6MDk6MzMuMDcyODM0NVogRVJS T1IgLSAqTGluZSBudW1iZXI6DQo+ID4gPiA+IDc5IDIwMjEtMDgtMDJUMDE6MDk6MzMuMDcyOTA0 NlogRVJST1IgLSAqVmFyaWFibGUgTmFtZTogVGVzdFJlc3VsdA0KPiA+ID4gPiAyMDIxLTA4LTAy VDAxOjA5OjMzLjA3Mjk2OTRaIEVSUk9SIC0gMjAyMS0wOC0wMlQwMTowOTozMy4wNzMyNDk2Wg0K PiA+ID4gPiBFUlJPUiAtIEVGSSBjb2Rpbmcgc3R5bGUgZXJyb3IgMjAyMS0wOC0wMlQwMTowOToz My4wNzMzMjI0WiBFUlJPUg0KPiA+ID4gPiAtICpFcnJvciBjb2RlOiA3MDAxIDIwMjEtMDgtMDJU MDE6MDk6MzMuMDczNDExNFogRVJST1IgLSAqVGhlcmUNCj4gPiA+ID4gc2hvdWxkIGJlIG5vIHVz ZSBvZiBpbnQsIHVuc2lnbmVkLCBjaGFyLCB2b2lkLCBsb25nIGluIGFueSAuYywgLmgNCj4gPiA+ ID4gb3IgLmFzbCBmaWxlcyAyMDIxLTA4LTAyVDAxOjA5OjMzLjA3Mzc2MjBaIEVSUk9SIC0gKmZp bGU6DQo+ID4gPiA+DQo+ID4NCj4gLy9ob21lL3ZzdHMvd29yay8xL3MvTWRlTW9kdWxlUGtnL0xp YnJhcnkvVWVmaVNvcnRMaWIvVW5pdFRlc3QvVWVmaVMNCj4gPiA+ID4gb3IgdExpYlVuaXRUZXN0 LmMgMjAyMS0wOC0wMlQwMTowOTozMy4wNzM5MTg1WiBFUlJPUiAtICpMaW5lIG51bWJlcjoNCj4g PiA+ID4gMTE3IDIwMjEtMDgtMDJUMDE6MDk6MzMuMDc0MTMwMVogRVJST1IgLSAqW21haW5dIFJl dHVybiB0eXBlIGludA0KPiA+ID4gPiAyMDIxLTA4LTAyVDAxOjA5OjMzLjA3NDQwOTlaIEVSUk9S IC0gMjAyMS0wOC0wMlQwMTowOTozMy4wNzQ0ODI5Wg0KPiA+ID4gPiBFUlJPUiAtIEVGSSBjb2Rp bmcgc3R5bGUgZXJyb3IgMjAyMS0wOC0wMlQwMTowOTozMy4wNzQ1NDU5WiBFUlJPUg0KPiA+ID4g PiAtICpFcnJvciBjb2RlOiA3MDAxIDIwMjEtMDgtMDJUMDE6MDk6MzMuMDc0NjgyMVogRVJST1Ig LSAqVGhlcmUNCj4gPiA+ID4gc2hvdWxkIGJlIG5vIHVzZSBvZiBpbnQsIHVuc2lnbmVkLCBjaGFy LCB2b2lkLCBsb25nIGluIGFueSAuYywgLmgNCj4gPiA+ID4gb3IgLmFzbCBmaWxlcyAyMDIxLTA4 LTAyVDAxOjA5OjMzLjA3NDc3NzRaIEVSUk9SIC0gKmZpbGU6DQo+ID4gPiA+DQo+ID4NCj4gLy9o b21lL3ZzdHMvd29yay8xL3MvTWRlTW9kdWxlUGtnL0xpYnJhcnkvVWVmaVNvcnRMaWIvVW5pdFRl c3QvVWVmaVMNCj4gPiA+ID4gb3IgdExpYlVuaXRUZXN0LmMgMjAyMS0wOC0wMlQwMTowOTozMy4w NzQ5MDc2WiBFUlJPUiAtICpMaW5lIG51bWJlcjoNCj4gPiA+ID4gMTE3IDIwMjEtMDgtMDJUMDE6 MDk6MzMuMDc0OTcxM1ogRVJST1IgLSAqUGFyYW1ldGVyIGFyZ2MNCj4gPiA+ID4gMjAyMS0wOC0w MlQwMTowOTozMy4wNzUwOTk5WiBFUlJPUiAtIDIwMjEtMDgtMDJUMDE6MDk6MzMuMDc1MTYwN1oN Cj4gPiA+ID4gRVJST1IgLSBFRkkgY29kaW5nIHN0eWxlIGVycm9yIDIwMjEtMDgtMDJUMDE6MDk6 MzMuMDc1NDU5OVogRVJST1INCj4gPiA+ID4gLSAqRXJyb3IgY29kZTogNzAwMSAyMDIxLTA4LTAy VDAxOjA5OjMzLjA3NjExNzVaIEVSUk9SIC0gKlRoZXJlDQo+ID4gPiA+IHNob3VsZCBiZSBubyB1 c2Ugb2YgaW50LCB1bnNpZ25lZCwgY2hhciwgdm9pZCwgbG9uZyBpbiBhbnkgLmMsIC5oDQo+ID4g PiA+IG9yIC5hc2wgZmlsZXMgMjAyMS0wOC0wMlQwMTowOTozMy4wNzYyMTY3WiBFUlJPUiAtICpm aWxlOg0KPiA+ID4gPg0KPiA+DQo+IC8vaG9tZS92c3RzL3dvcmsvMS9zL01kZU1vZHVsZVBrZy9M aWJyYXJ5L1VlZmlTb3J0TGliL1VuaXRUZXN0L1VlZmlTDQo+ID4gPiA+IG9yIHRMaWJVbml0VGVz dC5jIDIwMjEtMDgtMDJUMDE6MDk6MzMuMDc2MzE2MFogRVJST1IgLSAqTGluZSBudW1iZXI6DQo+ ID4gPiA+IDExNyAyMDIxLTA4LTAyVDAxOjA5OjMzLjA3NjM3NDFaIEVSUk9SIC0gKlBhcmFtZXRl ciBhcmd2DQo+ID4gPiA+IDIwMjEtMDgtMDJUMDE6MDk6MzMuMDc2NDI5MFogRVJST1IgLSAyMDIx LTA4LTAyVDAxOjA5OjMzLjA3NjQ4NDNaDQo+ID4gPiA+IEVSUk9SIC0gRUZJIGNvZGluZyBzdHls ZSBlcnJvciAyMDIxLTA4LTAyVDAxOjA5OjMzLjA3NjY4MTBaIEVSUk9SDQo+ID4gPiA+IC0gKkVy cm9yIGNvZGU6IDgwMDYgMjAyMS0wOC0wMlQwMTowOTozMy4wNzY3ODE5WiBFUlJPUiAtICpGdW5j dGlvbg0KPiA+ID4gPiBuYW1lIGRvZXMgbm90IGZvbGxvdyB0aGUgcnVsZXM6IDEuIEZpcnN0IGNo YXJhY3RlciBzaG91bGQgYmUgdXBwZXIgY2FzZQ0KPiAyLg0KPiA+ID4gPiBNdXN0IGNvbnRhaW4g bG93ZXIgY2FzZSBjaGFyYWN0ZXJzIDMuIE5vIHdoaXRlIHNwYWNlIGNoYXJhY3RlcnMNCj4gPiA+ ID4gMjAyMS0wOC0wMlQwMTowOTozMy4wNzY4ODgxWiBFUlJPUiAtICpmaWxlOg0KPiA+ID4gPg0K PiA+DQo+IC8vaG9tZS92c3RzL3dvcmsvMS9zL01kZU1vZHVsZVBrZy9MaWJyYXJ5L1VlZmlTb3J0 TGliL1VuaXRUZXN0L1VlZmlTDQo+ID4gPiA+IG9yIHRMaWJVbml0VGVzdC5jIDIwMjEtMDgtMDJU MDE6MDk6MzMuMDc2OTYxOVogRVJST1IgLSAqTGluZSBudW1iZXI6DQo+ID4gPiA+IDE4MSAyMDIx LTA4LTAyVDAxOjA5OjMzLjA3NzMzMjlaIEVSUk9SIC0gKlRoZSBmdW5jdGlvbiBuYW1lIFttYWlu XQ0KPiA+ID4gPiBkb2VzIG5vdCBmb2xsb3cgdGhlIHJ1bGVzIDIwMjEtMDgtMDJUMDE6MDk6MzMu MDc5MTkzNVogRVJST1IgLQ0KPiA+ID4gPiAyMDIxLTA4LTAyVDAxOjA5OjMzLjA3OTM4NjVaIEVS Uk9SIC0gRUZJIGNvZGluZyBzdHlsZSBlcnJvcg0KPiA+ID4gPiAyMDIxLTA4LTAyVDAxOjA5OjMz LjA3OTQ1NTVaIEVSUk9SIC0gKkVycm9yIGNvZGU6IDkwMDINCj4gPiA+ID4gMjAyMS0wOC0wMlQw MTowOTozMy4wNzk1MzUwWiBFUlJPUiAtICpUaGUgZnVuY3Rpb24gaGVhZGVycyBzaG91bGQNCj4g PiA+ID4gZm9sbG93IERveHlnZW4gc3BlY2lhbCBkb2N1bWVudGF0aW9uIGJsb2NrcyBpbiBzZWN0 aW9uIDIuMy41DQo+ID4gPiA+IDIwMjEtMDgtMDJUMDE6MDk6MzMuMDc5NjI3MVogRVJST1IgLSAq ZmlsZToNCj4gPiA+ID4NCj4gPg0KPiAvL2hvbWUvdnN0cy93b3JrLzEvcy9NZGVNb2R1bGVQa2cv TGlicmFyeS9VZWZpU29ydExpYi9Vbml0VGVzdC9VZWZpUw0KPiA+ID4gPiBvciB0TGliVW5pdFRl c3QuYyAyMDIxLTA4LTAyVDAxOjA5OjMzLjA3OTY5ODVaIEVSUk9SIC0gKkxpbmUgbnVtYmVyOg0K PiA+ID4gPiAxNzggMjAyMS0wOC0wMlQwMTowOTozMy4wNzk3NjEwWiBFUlJPUiAtICpObyBkb3h5 Z2VuIHRhZ3MgaW4NCj4gPiA+ID4gY29tbWVudCAyMDIxLTA4LTAyVDAxOjA5OjMzLjA3OTgyMDha IEVSUk9SIC0NCj4gPiA+ID4gMjAyMS0wOC0wMlQwMTowOTozMy4wNzk4ODU5WiBFUlJPUiAtIC0t LT5UZXN0IEZhaWxlZDogRWNjQ2hlY2sNCj4gPiA+ID4gVGVzdCBOTy1UQVJHRVQgcmV0dXJuZWQg MSAyMDIxLTA4LTAyVDAxOjA5OjMzLjA4MDczNTFaIFBST0dSRVNTIC0NCj4gLS1SdW5uaW5nIE1k ZU1vZHVsZVBrZzoNCj4gPiBEc2MNCj4gPiA+ID4gQ29tcGxldGUgQ2hlY2sgVGVzdCBOTy1UQVJH RVQgLS0gMjAyMS0wOC0wMlQwMTowOTozMy4xNTI0NzkwWg0KPiA+ID4gUFJPR1JFU1MNCj4gPiA+ ID4gLSAtLS0+VGVzdCBTdWNjZXNzOiBEc2MgQ29tcGxldGUgQ2hlY2sgVGVzdCBOTy1UQVJHRVQN Cj4gPiA+ID4gMjAyMS0wOC0wMlQwMTowOTozMy4xNTM2MDA0WiBQUk9HUkVTUyAtIC0tUnVubmlu ZyBNZGVNb2R1bGVQa2c6DQo+ID4gQ2hhcg0KPiA+ID4gPiBFbmNvZGluZyBDaGVjayBUZXN0IE5P LVRBUkdFVCAtLSAyMDIxLTA4LTAyVDAxOjA5OjMzLjYyODAzODBaDQo+ID4gPiBQUk9HUkVTUw0K PiA+ID4gPiAtIC0tLT5UZXN0IFN1Y2Nlc3M6IENoYXIgRW5jb2RpbmcgQ2hlY2sgVGVzdCBOTy1U QVJHRVQNCj4gPiA+ID4gMjAyMS0wOC0wMlQwMTowOTozMy42Mjg5MDc2WiBQUk9HUkVTUyAtIC0t UnVubmluZyBNZGVNb2R1bGVQa2c6DQo+ID4gPiA+IExpY2Vuc2UgQ2hlY2sgVGVzdCBOTy1UQVJH RVQgLS0gMjAyMS0wOC0wMlQwMTowOTozMy42NDk1NjQyWg0KPiA+ID4gPiBQUk9HUkVTUw0KPiA+ ID4gPiAtIC0tLT5UZXN0IFN1Y2Nlc3M6IExpY2Vuc2UgQ2hlY2sgVGVzdCBOTy1UQVJHRVQNCj4g PiA+ID4gMjAyMS0wOC0wMlQwMTowOTozMy42NTA4MTI1WiBQUk9HUkVTUyAtIC0tUnVubmluZyBN ZGVNb2R1bGVQa2c6DQo+ID4gPiA+IENvbXBpbGVyIFBsdWdpbiBSRUxFQVNFIC0tIDIwMjEtMDgt MDJUMDE6MDk6MzMuNjc4NTE3OFogUFJPR1JFU1MgLQ0KPiA+ID4gPiBTdGFydCB0aW1lOiAyMDIx LTA4LTAyIDAxOjA5OjMzLjY3Nzk1Mg0KPiA+ID4gPiAyMDIxLTA4LTAyVDAxOjA5OjMzLjY3ODc3 MTZaDQo+ID4gPiBQUk9HUkVTUyAtIFNldHRpbmcgdXAgdGhlIEVudmlyb25tZW50IDIwMjEtMDgt MDJUMDE6MDk6MzMuNzcyNTI0NFoNCj4gPiA+IFBST0dSRVNTIC0gUnVubmluZyBQcmUgQnVpbGQg MjAyMS0wOC0wMlQwMTowOTozMy43NzQwMzU3WiBQUk9HUkVTUyAtDQo+ID4gPiBSdW5uaW5nIEJ1 aWxkIFJFTEVBU0UgMjAyMS0wOC0wMlQwMToxNzoxOC41NDc5ODg1WiBQUk9HUkVTUyAtDQo+ID4g PiBSdW5uaW5nIFBvc3QgQnVpbGQNCj4gPiA+ID4gMjAyMS0wOC0wMlQwMToxNzoxOC41NTExODA3 WiBQUk9HUkVTUyAtIEVuZCB0aW1lOiAyMDIxLTA4LTAyDQo+ID4gPiAwMToxNzoxOC41NDk5NzQJ IFRvdGFsIHRpbWUgRWxhcHNlZDogMDowNzo0NA0KPiA+ID4gPiAyMDIxLTA4LTAyVDAxOjE3OjE4 LjU1MTI5OTdaIFBST0dSRVNTIC0gLS0tPlRlc3QgU3VjY2VzczogQ29tcGlsZXINCj4gPiA+ID4g UGx1Z2luIFJFTEVBU0UgMjAyMS0wOC0wMlQwMToxNzoxOC41NTE5Mjg0WiBQUk9HUkVTUyAtIC0t UnVubmluZw0KPiA+ID4gPiBNZGVNb2R1bGVQa2c6IExpYnJhcnkgQ2xhc3MgQ2hlY2sgVGVzdCBO Ty1UQVJHRVQgLS0NCj4gPiA+ID4gMjAyMS0wOC0wMlQwMToxNzoxOC41NjM5MjE2WiBQUk9HUkVT UyAtIC0tLT5UZXN0IFN1Y2Nlc3M6IExpYnJhcnkNCj4gPiA+ID4gQ2xhc3MgQ2hlY2sgVGVzdCBO Ty1UQVJHRVQgMjAyMS0wOC0wMlQwMToxNzoxOC41NjQ4NzkxWiBQUk9HUkVTUyAtDQo+ID4gPiA+ IC0tUnVubmluZyBNZGVNb2R1bGVQa2c6IERlcGVuZGVuY3kgQ2hlY2sgVGVzdCBOTy1UQVJHRVQg LS0NCj4gPiA+ID4gMjAyMS0wOC0wMlQwMToxNzoxOC43MzA2NjExWiBQUk9HUkVTUyAtIC0tLT5U ZXN0IFN1Y2Nlc3M6DQo+ID4gPiA+IERlcGVuZGVuY3kgQ2hlY2sgVGVzdCBOTy1UQVJHRVQgMjAy MS0wOC0wMlQwMToxNzoxOC43MzE2MTYyWg0KPiA+ID4gPiBQUk9HUkVTUyAtIC0tUnVubmluZw0K PiA+ID4gPiBNZGVNb2R1bGVQa2c6IFNwZWxsIENoZWNrIFRlc3QgTk8tVEFSR0VUIC0tDQo+ID4g PiA+IDIwMjEtMDgtMDJUMDE6MTc6MjMuNzkyMjE2NlogV0FSTklORyAtIC0tLT5UZXN0IFNraXBw ZWQ6IGluIHBsdWdpbiENCj4gPiA+ID4gU3BlbGwgQ2hlY2sgVGVzdCBOTy1UQVJHRVQgMjAyMS0w OC0wMlQwMToxNzoyMy43OTM0MTEyWiBQUk9HUkVTUyAtDQo+ID4gPiA+IC0tUnVubmluZyBNZGVN b2R1bGVQa2c6IEd1aWQgQ2hlY2sgVGVzdCBOTy1UQVJHRVQgLS0NCj4gPiA+ID4gMjAyMS0wOC0w MlQwMToxNzoyNy4xOTI4ODUwWiBQUk9HUkVTUyAtIC0tLT5UZXN0IFN1Y2Nlc3M6IEd1aWQNCj4g PiA+ID4gQ2hlY2sgVGVzdCBOTy1UQVJHRVQgMjAyMS0wOC0wMlQwMToxNzoyNy4xOTM5MTI5WiBQ Uk9HUkVTUyAtDQo+ID4gPiA+IC0tUnVubmluZw0KPiA+ID4gPiBNZGVNb2R1bGVQa2c6IEhvc3Qg VW5pdCBUZXN0IERzYyBDb21wbGV0ZSBDaGVjayBUZXN0IE5PLVRBUkdFVCAtLQ0KPiA+ID4gPiAy MDIxLTA4LTAyVDAxOjE3OjI3LjM3MDM2NDBaIFBST0dSRVNTIC0gLS0tPlRlc3QgU3VjY2Vzczog SG9zdA0KPiA+ID4gPiBVbml0IFRlc3QgRHNjIENvbXBsZXRlIENoZWNrIFRlc3QgTk8tVEFSR0VU DQo+ID4gPiA+IDIwMjEtMDgtMDJUMDE6MTc6MjcuMzczMTY3NlogRVJST1IgLSBPdmVyYWxsIEJ1 aWxkIFN0YXR1czogRXJyb3INCj4gPiA+ID4gMjAyMS0wOC0wMlQwMToxNzoyNy4zNzMzMjgzWiBQ Uk9HUkVTUyAtIFRoZXJlIHdlcmUgMSBmYWlsdXJlcyBvdXQNCj4gPiA+ID4gb2YgMTAgYXR0ZW1w dHMgMjAyMS0wOC0wMlQwMToxNzoyNy4zNzM0NTAxWiBTRUNUSU9OIC0gU3VtbWFyeQ0KPiA+ID4g PiAyMDIxLTA4LTAyVDAxOjE3OjI3LjM3MzU2MTNaIEVSUk9SIC0gRXJyb3INCj4gPiA+ID4gMjAy MS0wOC0wMlQwMToxNzoyNy40MTU5ODQyWg0KPiA+ID4gPiAjI1tlcnJvcl0vb3B0L2hvc3RlZHRv b2xjYWNoZS9QeXRob24vMy44LjExL3g2NC9iaW4vc3R1YXJ0X2NpX2J1aWwNCj4gPiA+ID4gZCBm YWlsZWQgd2l0aCByZXR1cm4gY29kZTogMSAyMDIxLTA4LTAyVDAxOjE3OjI3LjQxNzMxMzRaDQo+ ID4gPiA+ICMjW2Vycm9yXS9vcHQvaG9zdGVkdG9vbGNhY2hlL1B5dGhvbi8zLjguMTEveDY0L2Jp bi9zdHVhcnRfY2lfYnVpbA0KPiA+ID4gPiBkDQo+ID4gPiA+IGZhaWxlZCB3aXRoIGVycm9yOg0K PiA+ID4gPiAvb3B0L2hvc3RlZHRvb2xjYWNoZS9QeXRob24vMy44LjExL3g2NC9iaW4vc3R1YXJ0 X2NpX2J1aWxkIGZhaWxlZA0KPiA+ID4gPiB3aXRoIHJldHVybiBjb2RlOiAxIDIwMjEtMDgtMDJU MDE6MTc6MjcuNDE3ODI1MlogIyNbc2VjdGlvbl1GaW5pc2hpbmc6DQo+ID4gPiA+IEJ1aWxkIGFu ZCBUZXN0IE1kZU1vZHVsZVBrZyBJQTMyLFg2NCxBUk0sQUFSQ0g2NCxSSVNDVjY0DQo+ID4gPiA+ DQo+ID4gPiA+IEJlc3QgUmVnYXJkcywNCj4gPiA+ID4gSGFvIFd1DQo+ID4gPiA+DQo+ID4gPiA+ DQo+ID4gPiA+Pg0KPiA+ID4gPj4gSSB3aWxsIHdhaXQgYSBjb3VwbGUgZGF5cyBiZWZvcmUgbWVy Z2luZyB0byBzZWUgaWYgYW55IGFkZGl0aW9uYWwNCj4gPiA+ID4+IGNvbW1lbnQgZnJvbSBvdGhl ciByZXZpZXdlcnMuDQo+ID4gPiA+Pg0KPiA+ID4gPj4gQmVzdCBSZWdhcmRzLA0KPiA+ID4gPj4g SGFvIFd1DQo+ID4gPiA+Pg0KPiA+ID4gPj4NCj4gPiA+ID4+Pg0KPiA+ID4gPj4+IENjOiBKaWFu IEogV2FuZyA8amlhbi5qLndhbmdAaW50ZWwuY29tPg0KPiA+ID4gPj4+IENjOiBIYW8gQSBXdSA8 aGFvLmEud3VAaW50ZWwuY29tPg0KPiA+ID4gPj4+IFNpZ25lZC1vZmYtYnk6IFdlbnlpIFhpZSA8 eGlld2VueWkyQGh1YXdlaS5jb20+DQo+ID4gPiA+Pj4gLS0tDQo+ID4gPiA+Pj4gIE1kZU1vZHVs ZVBrZy9UZXN0L01kZU1vZHVsZVBrZ0hvc3RUZXN0LmRzYyAgICAgICAgICAgICAgICAgICAgICAg IHwgICA2DQo+ICsNCj4gPiA+ID4+Pg0KPiA+ID4gPj4+IE1kZU1vZHVsZVBrZy9MaWJyYXJ5L1Vl ZmlTb3J0TGliL1VuaXRUZXN0L1VlZmlTb3J0TGliVW5pdFRlc3QuaW4NCj4gPiA+ID4+PiBmDQo+ ID4gPiA+Pj4gfA0KPiA+ID4gPj4+IDMyDQo+ID4gPiA+Pj4gKysrKw0KPiA+ID4gPj4+ICBNZGVN b2R1bGVQa2cvTGlicmFyeS9VZWZpU29ydExpYi9Vbml0VGVzdC9VZWZpU29ydExpYlVuaXRUZXN0 LmMNCj4gPiB8IDE4OA0KPiA+ID4gPj4+ICsrKysrKysrKysrKysrKysrKysrDQo+ID4gPiA+Pj4g IDMgZmlsZXMgY2hhbmdlZCwgMjI2IGluc2VydGlvbnMoKykNCj4gPiA+ID4+Pg0KPiA+ID4gPj4+ IGRpZmYgLS1naXQgYS9NZGVNb2R1bGVQa2cvVGVzdC9NZGVNb2R1bGVQa2dIb3N0VGVzdC5kc2MN Cj4gPiA+ID4+PiBiL01kZU1vZHVsZVBrZy9UZXN0L01kZU1vZHVsZVBrZ0hvc3RUZXN0LmRzYw0K PiA+ID4gPj4+IGluZGV4IDRkYTQ2OTJjODQ1MS4uYzllYzgzNWRmNjVkIDEwMDY0NA0KPiA+ID4g Pj4+IC0tLSBhL01kZU1vZHVsZVBrZy9UZXN0L01kZU1vZHVsZVBrZ0hvc3RUZXN0LmRzYw0KPiA+ ID4gPj4+ICsrKyBiL01kZU1vZHVsZVBrZy9UZXN0L01kZU1vZHVsZVBrZ0hvc3RUZXN0LmRzYw0K PiA+ID4gPj4+IEBAIC00MSwzICs0MSw5IEBAIFtDb21wb25lbnRzXQ0KPiA+ID4gPj4+ICAgICAg PFBjZHNGaXhlZEF0QnVpbGQ+DQo+ID4gPiA+Pj4NCj4gPiA+ID4+Pg0KPiA+ID4gPj4NCj4gPg0K PiBnRWZpTWRlTW9kdWxlUGtnVG9rZW5TcGFjZUd1aWQuUGNkQWxsb3dWYXJpYWJsZVBvbGljeUVu Zm9yY2VtZW50RGlzDQo+ID4gPiA+Pj4gYWJsZXxUUlVFDQo+ID4gPiA+Pj4gICAgfQ0KPiA+ID4g Pj4+ICsNCj4gPiA+ID4+PiArDQo+ID4gTWRlTW9kdWxlUGtnL0xpYnJhcnkvVWVmaVNvcnRMaWIv VW5pdFRlc3QvVWVmaVNvcnRMaWJVbml0VGVzdC5pbmYgew0KPiA+ID4gPj4+ICsgICAgPExpYnJh cnlDbGFzc2VzPg0KPiA+ID4gPj4+ICsNCj4gPiA+ID4+PiArIFVlZmlTb3J0TGlifE1kZU1vZHVs ZVBrZy9MaWJyYXJ5L1VlZmlTb3J0TGliL1VlZmlTb3J0TGliLmluZg0KPiA+ID4gPj4+ICsNCj4g PiA+ID4+PiArDQo+ID4gRGV2aWNlUGF0aExpYnxNZGVQa2cvTGlicmFyeS9VZWZpRGV2aWNlUGF0 aExpYi9VZWZpRGV2aWNlUGF0aExpYg0KPiA+ID4gPj4+ICsgRGV2aWNlUGF0aExpYnwuaQ0KPiA+ ID4gPj4+ICsgRGV2aWNlUGF0aExpYnxuZg0KPiA+ID4gPj4+ICsgIH0NCj4gPiA+ID4+PiBkaWZm IC0tZ2l0DQo+ID4gPiA+Pj4gYS9NZGVNb2R1bGVQa2cvTGlicmFyeS9VZWZpU29ydExpYi9Vbml0 VGVzdC9VZWZpU29ydExpYlVuaXRUZXN0Lg0KPiA+ID4gPj4+IGluDQo+ID4gPiA+Pj4gZg0KPiA+ ID4gPj4+DQo+ID4gYi9NZGVNb2R1bGVQa2cvTGlicmFyeS9VZWZpU29ydExpYi9Vbml0VGVzdC9V ZWZpU29ydExpYlVuaXRUZXN0LmluDQo+ID4gPiA+Pj4gZg0KPiA+ID4gPj4+IG5ldyBmaWxlIG1v ZGUgMTAwNjQ0DQo+ID4gPiA+Pj4gaW5kZXggMDAwMDAwMDAwMDAwLi44NWQ4ZGNkNjk2MTkNCj4g PiA+ID4+PiAtLS0gL2Rldi9udWxsDQo+ID4gPiA+Pj4gKysrDQo+ID4gPiA+PiBiL01kZU1vZHVs ZVBrZy9MaWJyYXJ5L1VlZmlTb3J0TGliL1VuaXRUZXN0L1VlZmlTb3J0TGliVW5pdFRlc3QuaQ0K PiA+ID4gPj4gbg0KPiA+ID4gPj4+ICsrKyBmDQo+ID4gPiA+Pj4gQEAgLTAsMCArMSwzMiBAQA0K PiA+ID4gPj4+ICsjIyBAZmlsZQ0KPiA+ID4gPj4+ICsjIFRoaXMgaXMgYSB1bml0IHRlc3QgZm9y IHRoZSBVZWZpU29ydExpYi4NCj4gPiA+ID4+PiArIw0KPiA+ID4gPj4+ICsjIENvcHlyaWdodCAo QykgSHVhd2VpIFRlY2hub2xvZ2llcyBDby4sIEx0ZC4gQWxsIHJpZ2h0cw0KPiA+ID4gPj4+ICty ZXNlcnZlZCAjDQo+ID4gPiA+Pj4gK1NQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1 c2UtUGF0ZW50ICMjDQo+ID4gPiA+Pj4gKw0KPiA+ID4gPj4+ICtbRGVmaW5lc10NCj4gPiA+ID4+ PiArICBJTkZfVkVSU0lPTiAgICAgICAgID0gMHgwMDAxMDAxNw0KPiA+ID4gPj4+ICsgIEJBU0Vf TkFNRSAgICAgICAgICAgPSBVZWZpU29ydExpYlVuaXRUZXN0DQo+ID4gPiA+Pj4gKyAgRklMRV9H VUlEICAgICAgICAgICA9IDI3MTMzN0EzLTBENzktQkEzRS1CQzAzLTcxNEU1MThFM0IxQg0KPiA+ ID4gPj4+ICsgIFZFUlNJT05fU1RSSU5HICAgICAgPSAxLjANCj4gPiA+ID4+PiArICBNT0RVTEVf VFlQRSAgICAgICAgID0gSE9TVF9BUFBMSUNBVElPTg0KPiA+ID4gPj4+ICsNCj4gPiA+ID4+PiAr Iw0KPiA+ID4gPj4+ICsjIFRoZSBmb2xsb3dpbmcgaW5mb3JtYXRpb24gaXMgZm9yIHJlZmVyZW5j ZSBvbmx5IGFuZCBub3QNCj4gPiA+ID4+PiArcmVxdWlyZWQgYnkgdGhlDQo+ID4gPiA+Pj4gYnVp bGQgdG9vbHMuDQo+ID4gPiA+Pj4gKyMNCj4gPiA+ID4+PiArIyAgVkFMSURfQVJDSElURUNUVVJF UyAgICAgICAgICAgPSBJQTMyIFg2NA0KPiA+ID4gPj4+ICsjDQo+ID4gPiA+Pj4gKw0KPiA+ID4g Pj4+ICtbU291cmNlc10NCj4gPiA+ID4+PiArICBVZWZpU29ydExpYlVuaXRUZXN0LmMNCj4gPiA+ ID4+PiArDQo+ID4gPiA+Pj4gK1tQYWNrYWdlc10NCj4gPiA+ID4+PiArICBNZGVQa2cvTWRlUGtn LmRlYw0KPiA+ID4gPj4+ICsgIE1kZU1vZHVsZVBrZy9NZGVNb2R1bGVQa2cuZGVjDQo+ID4gPiA+ Pj4gKyAgVW5pdFRlc3RGcmFtZXdvcmtQa2cvVW5pdFRlc3RGcmFtZXdvcmtQa2cuZGVjDQo+ID4g PiA+Pj4gKw0KPiA+ID4gPj4+ICtbTGlicmFyeUNsYXNzZXNdDQo+ID4gPiA+Pj4gKyAgVW5pdFRl c3RMaWINCj4gPiA+ID4+PiArICBEZWJ1Z0xpYg0KPiA+ID4gPj4+ICsgIFVlZmlTb3J0TGliDQo+ ID4gPiA+Pj4gZGlmZiAtLWdpdA0KPiA+ID4gPj4+IGEvTWRlTW9kdWxlUGtnL0xpYnJhcnkvVWVm aVNvcnRMaWIvVW5pdFRlc3QvVWVmaVNvcnRMaWJVbml0VGVzdC4NCj4gPiA+ID4+PiBjDQo+ID4g PiA+Pj4gYi9NZGVNb2R1bGVQa2cvTGlicmFyeS9VZWZpU29ydExpYi9Vbml0VGVzdC9VZWZpU29y dExpYlVuaXRUZXN0Lg0KPiA+ID4gPj4+IGMNCj4gPiA+ID4+PiBuZXcgZmlsZSBtb2RlIDEwMDY0 NA0KPiA+ID4gPj4+IGluZGV4IDAwMDAwMDAwMDAwMC4uNzFmMzBkOGI5ZjdmDQo+ID4gPiA+Pj4g LS0tIC9kZXYvbnVsbA0KPiA+ID4gPj4+ICsrKw0KPiA+IGIvTWRlTW9kdWxlUGtnL0xpYnJhcnkv VWVmaVNvcnRMaWIvVW5pdFRlc3QvVWVmaVNvcnRMaWJVbml0VGVzdC4NCj4gPiA+ID4+PiArKysg Yw0KPiA+ID4gPj4+IEBAIC0wLDAgKzEsMTg4IEBADQo+ID4gPiA+Pj4gKy8qKiBAZmlsZQ0KPiA+ ID4gPj4+ICsgIFVuaXQgdGVzdHMgb2YgdGhlIFVlZmlTb3J0TGliDQo+ID4gPiA+Pj4gKw0KPiA+ ID4gPj4+ICsgIENvcHlyaWdodCAoQykgSHVhd2VpIFRlY2hub2xvZ2llcyBDby4sIEx0ZC4gQWxs IHJpZ2h0cw0KPiA+ID4gPj4+ICsgcmVzZXJ2ZWQNCj4gPiA+ID4+PiArICBTUERYLUxpY2Vuc2Ut SWRlbnRpZmllcjogQlNELTItQ2xhdXNlLVBhdGVudA0KPiA+ID4gPj4+ICsNCj4gPiA+ID4+PiAr KiovDQo+ID4gPiA+Pj4gKw0KPiA+ID4gPj4+ICsjaW5jbHVkZSA8c3RkaW8uaD4NCj4gPiA+ID4+ PiArI2luY2x1ZGUgPHN0cmluZy5oPg0KPiA+ID4gPj4+ICsjaW5jbHVkZSA8c3RkYXJnLmg+DQo+ ID4gPiA+Pj4gKyNpbmNsdWRlIDxzdGRkZWYuaD4NCj4gPiA+ID4+PiArI2luY2x1ZGUgPHNldGpt cC5oPg0KPiA+ID4gPj4+ICsjaW5jbHVkZSA8Y21vY2thLmg+DQo+ID4gPiA+Pj4gKw0KPiA+ID4g Pj4+ICsjaW5jbHVkZSA8VWVmaS5oPg0KPiA+ID4gPj4+ICsjaW5jbHVkZSA8TGlicmFyeS9CYXNl TGliLmg+DQo+ID4gPiA+Pj4gKyNpbmNsdWRlIDxMaWJyYXJ5L0RlYnVnTGliLmg+DQo+ID4gPiA+ Pj4gKyNpbmNsdWRlIDxMaWJyYXJ5L01lbW9yeUFsbG9jYXRpb25MaWIuaD4NCj4gPiA+ID4+PiAr DQo+ID4gPiA+Pj4gKyNpbmNsdWRlIDxMaWJyYXJ5L1VuaXRUZXN0TGliLmg+ICNpbmNsdWRlIDxM aWJyYXJ5L1NvcnRMaWIuaD4NCj4gPiA+ID4+PiArDQo+ID4gPiA+Pj4gKyNkZWZpbmUgVU5JVF9U RVNUX0FQUF9OQU1FICAgICAgICAiVWVmaVNvcnRMaWIgVW5pdCBUZXN0cyINCj4gPiA+ID4+PiAr I2RlZmluZSBVTklUX1RFU1RfQVBQX1ZFUlNJT04gICAgICIxLjAiDQo+ID4gPiA+Pj4gKw0KPiA+ ID4gPj4+ICsjZGVmaW5lIFRFU1RfQVJSQVlfU0laRV85ICAgICAgICAgOQ0KPiA+ID4gPj4+ICsN Cj4gPiA+ID4+PiArLyoqDQo+ID4gPiA+Pj4gKyAgVGhlIGZ1bmN0aW9uIGlzIGNhbGxlZCBieSBQ ZXJmb3JtUXVpY2tTb3J0IHRvIGNvbXBhcmUgaW50IHZhbHVlcy4NCj4gPiA+ID4+PiArDQo+ID4g PiA+Pj4gKyAgQHBhcmFtW2luXSBMZWZ0ICAgICAgICAgICAgVGhlIHBvaW50ZXIgdG8gZmlyc3Qg YnVmZmVyLg0KPiA+ID4gPj4+ICsgIEBwYXJhbVtpbl0gUmlnaHQgICAgICAgICAgIFRoZSBwb2lu dGVyIHRvIHNlY29uZCBidWZmZXIuDQo+ID4gPiA+Pj4gKw0KPiA+ID4gPj4+ICsgIEByZXR2YWwg MCAgICAgICAgICAgICAgICAgIEJ1ZmZlcjEgZXF1YWwgdG8gQnVmZmVyMi4NCj4gPiA+ID4+PiAr ICBAcmV0dXJuIDwwICAgICAgICAgICAgICAgICBCdWZmZXIxIGlzIGxlc3MgdGhhbiBCdWZmZXIy Lg0KPiA+ID4gPj4+ICsgIEByZXR1cm4gPjAgICAgICAgICAgICAgICAgIEJ1ZmZlcjEgaXMgZ3Jl YXRlciB0aGFuIEJ1ZmZlcjIuDQo+ID4gPiA+Pj4gKw0KPiA+ID4gPj4+ICsqKi8NCj4gPiA+ID4+ PiArSU5UTg0KPiA+ID4gPj4+ICtFRklBUEkNCj4gPiA+ID4+PiArVGVzdENvbXBhcmVGdW5jdGlv biAoDQo+ID4gPiA+Pj4gKyAgSU4gQ09OU1QgVk9JRCAgICAgICAgICAgICAgICAgICAgICAgICAq TGVmdCwNCj4gPiA+ID4+PiArICBJTiBDT05TVCBWT0lEICAgICAgICAgICAgICAgICAgICAgICAg ICpSaWdodA0KPiA+ID4gPj4+ICsgICkNCj4gPiA+ID4+PiArew0KPiA+ID4gPj4+ICsgIGlmICgq KFVJTlQzMiopUmlnaHQgPiAqKFVJTlQzMiopTGVmdCkgew0KPiA+ID4gPj4+ICsgICAgcmV0dXJu IDE7DQo+ID4gPiA+Pj4gKyAgfSBlbHNlIGlmICgqKFVJTlQzMiopUmlnaHQgPCAqKFVJTlQzMiop TGVmdCkgew0KPiA+ID4gPj4+ICsgICAgcmV0dXJuIC0xOw0KPiA+ID4gPj4+ICsgIH0NCj4gPiA+ ID4+PiArDQo+ID4gPiA+Pj4gKyAgcmV0dXJuIDA7DQo+ID4gPiA+Pj4gK30NCj4gPiA+ID4+PiAr DQo+ID4gPiA+Pj4gKy8qKg0KPiA+ID4gPj4+ICsgIFVuaXQgdGVzdCBmb3IgUGVyZm9ybVF1aWNr U29ydCAoKSBBUEkgb2YgdGhlIFVlZmlTb3J0TGliLg0KPiA+ID4gPj4+ICsNCj4gPiA+ID4+PiAr ICBAcGFyYW1baW5dICBDb250ZXh0ICAgIFtPcHRpb25hbF0gQW4gb3B0aW9uYWwgcGFyYW1ldGVy IHRoYXQNCj4gPiBlbmFibGVzOg0KPiA+ID4gPj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAg MSkgdGVzdC1jYXNlIHJldXNlIHdpdGggdmFyaWVkIHBhcmFtZXRlcnMgYW5kDQo+ID4gPiA+Pj4g KyAgICAgICAgICAgICAgICAgICAgICAgICAyKSB0ZXN0LWNhc2UgcmUtZW50cnkgZm9yIFRhcmdl dCB0ZXN0cyB0aGF0IG5lZWQgYQ0KPiA+ID4gPj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAg cmVib290LiAgVGhpcyBwYXJhbWV0ZXIgaXMgYSBWT0lEKiBhbmQgaXQgaXMgdGhlDQo+ID4gPiA+ Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zaWJpbGl0eSBvZiB0aGUgdGVzdCBh dXRob3IgdG8gZW5zdXJlIHRoYXQgdGhlDQo+ID4gPiA+Pj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICBjb250ZW50cyBhcmUgd2VsbCB1bmRlcnN0b29kIGJ5IGFsbCB0ZXN0IGNhc2VzIHRoYXQg bWF5DQo+ID4gPiA+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdW1lIGl0Lg0KPiA+ ID4gPj4+ICsNCj4gPiA+ID4+PiArICBAcmV0dmFsICBVTklUX1RFU1RfUEFTU0VEICAgICAgICAg ICAgIFRoZSBVbml0IHRlc3QgaGFzIGNvbXBsZXRlZA0KPiBhbmQNCj4gPiB0aGUNCj4gPiA+ID4+ PiB0ZXN0DQo+ID4gPiA+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBjYXNlIHdhcyBzdWNjZXNzZnVsLg0KPiA+ID4gPj4+ICsgIEByZXR2YWwgIFVOSVRfVEVTVF9F UlJPUl9URVNUX0ZBSUxFRCAgQSB0ZXN0IGNhc2UgYXNzZXJ0aW9uDQo+ID4gPiA+Pj4gKyBoYXMN Cj4gPiA+ID4+IGZhaWxlZC4NCj4gPiA+ID4+PiArKiovDQo+ID4gPiA+Pj4gK1VOSVRfVEVTVF9T VEFUVVMNCj4gPiA+ID4+PiArRUZJQVBJDQo+ID4gPiA+Pj4gK1NvcnRVSU5UMzJBcnJheVNob3Vs ZFN1Y2NlZWQgKA0KPiA+ID4gPj4+ICsgIElOIFVOSVRfVEVTVF9DT05URVhUICBDb250ZXh0DQo+ ID4gPiA+Pj4gKyAgKQ0KPiA+ID4gPj4+ICt7DQo+ID4gPiA+Pj4gKyAgVUlOVE4gVGVzdENvdW50 ID0gVEVTVF9BUlJBWV9TSVpFXzk7DQo+ID4gPiA+Pj4gKyAgVUlOVDMyIFRlc3RCdWZmZXJbVEVT VF9BUlJBWV9TSVpFXzldID0gezEsIDIsIDMsIDQsIDUsIDYsIDcNCj4gPiA+ID4+PiArLDgsIDl9 Ow0KPiA+ID4gPj4+ICsgIFVJTlQzMiBUZXN0UmVzdWx0W1RFU1RfQVJSQVlfU0laRV85XSA9IHs5 LCA4LCA3LCA2LCA1LCA0LCAzLA0KPiA+ID4gPj4+ICsyLCAxfTsNCj4gPiA+ID4+PiArDQo+ID4g PiA+Pj4gKyAgUGVyZm9ybVF1aWNrU29ydCAoVGVzdEJ1ZmZlciwgVGVzdENvdW50LCBzaXplb2Yg KFVJTlQzMiksDQo+ID4gPiA+Pj4gKyAoU09SVF9DT01QQVJFKVRlc3RDb21wYXJlRnVuY3Rpb24p Ow0KPiA+ID4gPj4+ICsgIFVUX0FTU0VSVF9NRU1fRVFVQUwgKFRlc3RCdWZmZXIsIFRlc3RSZXN1 bHQsIHNpemVvZiAoVUlOVDMyKQ0KPiA+ID4gPj4+ICsgKiBURVNUX0FSUkFZX1NJWkVfOSk7DQo+ ID4gPiA+Pj4gKw0KPiA+ID4gPj4+ICsgIHJldHVybiBVTklUX1RFU1RfUEFTU0VEOw0KPiA+ID4g Pj4+ICt9DQo+ID4gPiA+Pj4gKw0KPiA+ID4gPj4+ICsvKioNCj4gPiA+ID4+PiArICBVbml0IHRl c3QgZm9yIFN0cmluZ0NvbXBhcmUgKCkgQVBJIG9mIHRoZSBVZWZpU29ydExpYi4NCj4gPiA+ID4+ PiArDQo+ID4gPiA+Pj4gKyAgQHBhcmFtW2luXSAgQ29udGV4dCAgICBbT3B0aW9uYWxdIEFuIG9w dGlvbmFsIHBhcmFtZXRlciB0aGF0DQo+ID4gZW5hYmxlczoNCj4gPiA+ID4+PiArICAgICAgICAg ICAgICAgICAgICAgICAgIDEpIHRlc3QtY2FzZSByZXVzZSB3aXRoIHZhcmllZCBwYXJhbWV0ZXJz IGFuZA0KPiA+ID4gPj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgMikgdGVzdC1jYXNlIHJl LWVudHJ5IGZvciBUYXJnZXQgdGVzdHMgdGhhdCBuZWVkIGENCj4gPiA+ID4+PiArICAgICAgICAg ICAgICAgICAgICAgICAgIHJlYm9vdC4gIFRoaXMgcGFyYW1ldGVyIGlzIGEgVk9JRCogYW5kIGl0 IGlzIHRoZQ0KPiA+ID4gPj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2liaWxp dHkgb2YgdGhlIHRlc3QgYXV0aG9yIHRvIGVuc3VyZSB0aGF0IHRoZQ0KPiA+ID4gPj4+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgY29udGVudHMgYXJlIHdlbGwgdW5kZXJzdG9vZCBieSBhbGwg dGVzdCBjYXNlcyB0aGF0IG1heQ0KPiA+ID4gPj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAg Y29uc3VtZSBpdC4NCj4gPiA+ID4+PiArDQo+ID4gPiA+Pj4gKyAgQHJldHZhbCAgVU5JVF9URVNU X1BBU1NFRCAgICAgICAgICAgICBUaGUgVW5pdCB0ZXN0IGhhcyBjb21wbGV0ZWQNCj4gYW5kDQo+ ID4gdGhlDQo+ID4gPiA+Pj4gdGVzdA0KPiA+ID4gPj4+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgY2FzZSB3YXMgc3VjY2Vzc2Z1bC4NCj4gPiA+ID4+PiArICBAcmV0 dmFsICBVTklUX1RFU1RfRVJST1JfVEVTVF9GQUlMRUQgIEEgdGVzdCBjYXNlIGFzc2VydGlvbg0K PiA+ID4gPj4+ICsgaGFzDQo+ID4gPiA+PiBmYWlsZWQuDQo+ID4gPiA+Pj4gKyoqLw0KPiA+ID4g Pj4+ICtVTklUX1RFU1RfU1RBVFVTDQo+ID4gPiA+Pj4gK0VGSUFQSQ0KPiA+ID4gPj4+ICtDb21w YXJlU2FtZUJ1ZmZlclNob3VsZFN1Y2NlZWQgKA0KPiA+ID4gPj4+ICsgIElOIFVOSVRfVEVTVF9D T05URVhUICBDb250ZXh0DQo+ID4gPiA+Pj4gKyAgKQ0KPiA+ID4gPj4+ICt7DQo+ID4gPiA+Pj4g KyAgSU5UTiByZXR2YWw7DQo+ID4gPiA+Pj4gKyAgQ09OU1QgQ0hBUjE2KiBUZXN0QnVmZmVyW10g PSB7IEwiYWJjZGVmZyIgfTsNCj4gPiA+ID4+PiArDQo+ID4gPiA+Pj4gKyAgcmV0dmFsID0gU3Ry aW5nQ29tcGFyZSAoVGVzdEJ1ZmZlciwgVGVzdEJ1ZmZlcik7DQo+ID4gPiA+Pj4gKyBVVF9BU1NF UlRfVFJVRSAocmV0dmFsID09IDApOw0KPiA+ID4gPj4+ICsNCj4gPiA+ID4+PiArICByZXR1cm4g VU5JVF9URVNUX1BBU1NFRDsNCj4gPiA+ID4+PiArfQ0KPiA+ID4gPj4+ICsNCj4gPiA+ID4+PiAr LyoqDQo+ID4gPiA+Pj4gKyAgSW5pdGlhbHplIHRoZSB1bml0IHRlc3QgZnJhbWV3b3JrLCBzdWl0 ZSwgYW5kIHVuaXQgdGVzdHMgZm9yDQo+ID4gPiA+Pj4gK3RoZQ0KPiA+ID4gPj4+ICsgIFVlZmlT b3J0TGliIGFuZCBydW4gdGhlIFVlZmlTb3J0TGliIHVuaXQgdGVzdC4NCj4gPiA+ID4+PiArDQo+ ID4gPiA+Pj4gKyAgQHJldHZhbCAgRUZJX1NVQ0NFU1MgICAgICAgICAgIEFsbCB0ZXN0IGNhc2Vz IHdlcmUgZGlzcGF0Y2hlZC4NCj4gPiA+ID4+PiArICBAcmV0dmFsICBFRklfT1VUX09GX1JFU09V UkNFUyAgVGhlcmUgYXJlIG5vdCBlbm91Z2gNCj4gcmVzb3VyY2VzDQo+ID4gPiA+Pj4gYXZhaWxh YmxlIHRvDQo+ID4gPiA+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluaXRp YWxpemUgdGhlIHVuaXQgdGVzdHMuDQo+ID4gPiA+Pj4gKyoqLw0KPiA+ID4gPj4+ICtTVEFUSUMN Cj4gPiA+ID4+PiArRUZJX1NUQVRVUw0KPiA+ID4gPj4+ICtFRklBUEkNCj4gPiA+ID4+PiArVW5p dFRlc3RpbmdFbnRyeSAoDQo+ID4gPiA+Pj4gKyAgVk9JRA0KPiA+ID4gPj4+ICsgICkNCj4gPiA+ ID4+PiArew0KPiA+ID4gPj4+ICsgIEVGSV9TVEFUVVMgICAgICAgICAgICAgICAgICBTdGF0dXM7 DQo+ID4gPiA+Pj4gKyAgVU5JVF9URVNUX0ZSQU1FV09SS19IQU5ETEUgIEZyYW1ld29yazsNCj4g PiA+ID4+PiArICBVTklUX1RFU1RfU1VJVEVfSEFORExFICAgICAgU29ydFRlc3RzOw0KPiA+ID4g Pj4+ICsNCj4gPiA+ID4+PiArICBGcmFtZXdvcmsgPSBOVUxMOw0KPiA+ID4gPj4+ICsNCj4gPiA+ ID4+PiArICBERUJVRygoIERFQlVHX0lORk8sICIlYSB2JWFcbiIsIFVOSVRfVEVTVF9BUFBfTkFN RSwNCj4gPiA+ID4+PiArIFVOSVRfVEVTVF9BUFBfVkVSU0lPTiApKTsNCj4gPiA+ID4+PiArDQo+ ID4gPiA+Pj4gKyAgLy8NCj4gPiA+ID4+PiArICAvLyBTdGFydCBzZXR0aW5nIHVwIHRoZSB0ZXN0 IGZyYW1ld29yayBmb3IgcnVubmluZyB0aGUgdGVzdHMuDQo+ID4gPiA+Pj4gKyAgLy8NCj4gPiA+ ID4+PiArICBTdGF0dXMgPSBJbml0VW5pdFRlc3RGcmFtZXdvcmsgKCZGcmFtZXdvcmssDQo+ID4g VU5JVF9URVNUX0FQUF9OQU1FLA0KPiA+ID4gPj4+ICsgZ0VmaUNhbGxlckJhc2VOYW1lLCBVTklU X1RFU1RfQVBQX1ZFUlNJT04pOyAgaWYgKEVGSV9FUlJPUg0KPiA+ID4gPj4+ICsgKFN0YXR1cykp DQo+ID4gPiA+PiB7DQo+ID4gPiA+Pj4gKyAgICBERUJVRyAoKERFQlVHX0VSUk9SLCAiRmFpbGVk IGluIEluaXRVbml0VGVzdEZyYW1ld29yay4NCj4gPiA+ID4+PiArIFN0YXR1cw0KPiA+ID4gPj4+ ID0gJXJcbiIsIFN0YXR1cykpOw0KPiA+ID4gPj4+ICsgICAgZ290byBFWElUOw0KPiA+ID4gPj4+ ICsgIH0NCj4gPiA+ID4+PiArDQo+ID4gPiA+Pj4gKyAgLy8NCj4gPiA+ID4+PiArICAvLyBQb3B1 bGF0ZSB0aGUgVWVmaVNvcnRMaWIgVW5pdCBUZXN0IFN1aXRlLg0KPiA+ID4gPj4+ICsgIC8vDQo+ ID4gPiA+Pj4gKyAgU3RhdHVzID0gQ3JlYXRlVW5pdFRlc3RTdWl0ZSAoJlNvcnRUZXN0cywgRnJh bWV3b3JrLA0KPiA+ID4gPj4+ICsgIlVlZmlTb3J0TGliIFNvcnQgVGVzdHMiLCAiVWVmaVNvcnRM aWIuU29ydExpYiIsIE5VTEwsIE5VTEwpOw0KPiA+ID4gPj4+ICsgaWYNCj4gPiAoRUZJX0VSUk9S IChTdGF0dXMpKSB7DQo+ID4gPiA+Pj4gKyAgICBERUJVRyAoKERFQlVHX0VSUk9SLCAiRmFpbGVk IGluIENyZWF0ZVVuaXRUZXN0U3VpdGUgZm9yDQo+ID4gPiA+Pj4gKyBVZWZpU29ydExpYg0KPiA+ ID4gPj4+IEFQSSBUZXN0c1xuIikpOw0KPiA+ID4gPj4+ICsgICAgU3RhdHVzID0gRUZJX09VVF9P Rl9SRVNPVVJDRVM7DQo+ID4gPiA+Pj4gKyAgICBnb3RvIEVYSVQ7DQo+ID4gPiA+Pj4gKyAgfQ0K PiA+ID4gPj4+ICsNCj4gPiA+ID4+PiArICAvLw0KPiA+ID4gPj4+ICsgIC8vDQo+ID4gPiA+Pj4g KyAtLS0tLS0tLS0tLS0tLVN1aXRlLS0tLS0tLS1EZXNjcmlwdGlvbi0tLS0tLS0tLS0tLU5hbWUt LS0tLS0tLQ0KPiA+ID4gPj4+ICsgLS0NCj4gPiA+ID4+PiArIC0tDQo+ID4gPiA+Pj4gKyAtLQ0K PiA+ID4gPj4+ICsgRnUNCj4gPiA+ID4+PiArIG5jdGlvbi0tLS0tLS0tLS0tLS0tLS1QcmUtLS1Q b3N0LS0tQ29udGV4dC0tLS0tLS0tLS0tDQo+ID4gPiA+Pj4gKyAgLy8NCj4gPiA+ID4+PiArICBB ZGRUZXN0Q2FzZSAoU29ydFRlc3RzLCAiU29ydCB0aGUgQXJyYXkiLCAgICAgICAgIlNvcnQiLA0K PiA+ID4gPj4+IFNvcnRVSU5UMzJBcnJheVNob3VsZFN1Y2NlZWQsICAgTlVMTCwgTlVMTCwgTlVM TCk7DQo+ID4gPiA+Pj4gKyAgQWRkVGVzdENhc2UgKFNvcnRUZXN0cywgIkNvbXBhcmUgdGhlIEJ1 ZmZlciIsICAgICJDb21wYXJlIiwNCj4gPiA+ID4+PiBDb21wYXJlU2FtZUJ1ZmZlclNob3VsZFN1 Y2NlZWQsIE5VTEwsIE5VTEwsIE5VTEwpOw0KPiA+ID4gPj4+ICsNCj4gPiA+ID4+PiArICAvLw0K PiA+ID4gPj4+ICsgIC8vIEV4ZWN1dGUgdGhlIHRlc3RzLg0KPiA+ID4gPj4+ICsgIC8vDQo+ID4g PiA+Pj4gKyAgU3RhdHVzID0gUnVuQWxsVGVzdFN1aXRlcyAoRnJhbWV3b3JrKTsNCj4gPiA+ID4+ PiArDQo+ID4gPiA+Pj4gK0VYSVQ6DQo+ID4gPiA+Pj4gKyAgaWYgKEZyYW1ld29yaykgew0KPiA+ ID4gPj4+ICsgICAgRnJlZVVuaXRUZXN0RnJhbWV3b3JrIChGcmFtZXdvcmspOw0KPiA+ID4gPj4+ ICsgIH0NCj4gPiA+ID4+PiArDQo+ID4gPiA+Pj4gKyAgcmV0dXJuIFN0YXR1czsNCj4gPiA+ID4+ PiArfQ0KPiA+ID4gPj4+ICsNCj4gPiA+ID4+PiArLyoqDQo+ID4gPiA+Pj4gKyAgU3RhbmRhcmQg UE9TSVggQyBlbnRyeSBwb2ludCBmb3IgaG9zdCBiYXNlZCB1bml0IHRlc3QgZXhlY3V0aW9uLg0K PiA+ID4gPj4+ICsqKi8NCj4gPiA+ID4+PiAraW50DQo+ID4gPiA+Pj4gK21haW4gKA0KPiA+ID4g Pj4+ICsgIGludCBhcmdjLA0KPiA+ID4gPj4+ICsgIGNoYXIgKmFyZ3ZbXQ0KPiA+ID4gPj4+ICsg ICkNCj4gPiA+ID4+PiArew0KPiA+ID4gPj4+ICsgIHJldHVybiBVbml0VGVzdGluZ0VudHJ5ICgp Ow0KPiA+ID4gPj4+ICt9DQo+ID4gPiA+Pj4gLS0NCj4gPiA+ID4+PiAyLjIwLjEud2luZG93cy4x DQo+ID4gPiA+Pg0KPiA+ID4gPj4NCj4gPiA+ID4+DQo+ID4gPiA+Pg0KPiA+ID4gPj4NCj4gPiA+ ID4NCj4gPiA+ID4gLg0KPiA+ID4gPg0KPiA+DQo+ID4NCj4gPg0KPiA+DQo+IA0KPiANCj4gDQo+ IA0KPiANCg0K