From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by mx.groups.io with SMTP id smtpd.web10.4020.1645075709966863674 for ; Wed, 16 Feb 2022 21:28:30 -0800 Authentication-Results: mx.groups.io; dkim=fail reason="unable to parse pub key" header.i=@intel.com header.s=intel header.b=RJeM6S+/; spf=pass (domain: intel.com, ip: 192.55.52.88, mailfrom: zhihao.li@intel.com) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1645075709; x=1676611709; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=lgR83voufJSls+ptcgZbkp5m9Tnqpo2E61osPzRlyH8=; b=RJeM6S+/qbpbuovV/GUAPX6D/uWnLGPX8W/z1k46C122aCzT787beqkj EaNzP/w64wQoji2kz4Bm7Fb7+u39J22flSegxAq/5N1QzRMngPK3mGfE6 xFRtBO6dNvn5o9eK1BGxcb6JDnTTkXQfRupnY4v7TL/MkHYVT5se4Oss2 1ot5qt3SuURWcgvJWlJhs4T6QIrj8+4q+C5RV4ipGY1z/gABJF+25dziQ S3awUkkpjYbVFw5yB4Fx2K8THecOKqIXc85Jjlh+FOaczgtdUF+ze7TYX KeXx50TW8IUfqtnViRBJhPfgyM5S0G0nUVbzS+tPfz/4TZU5YG/2/Cbfr Q==; X-IronPort-AV: E=McAfee;i="6200,9189,10260"; a="275385118" X-IronPort-AV: E=Sophos;i="5.88,375,1635231600"; d="scan'208";a="275385118" Received: from fmsmga002.fm.intel.com ([10.253.24.26]) by fmsmga101.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 16 Feb 2022 21:28:29 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.88,375,1635231600"; d="scan'208";a="634294087" Received: from orsmsx601.amr.corp.intel.com ([10.22.229.14]) by fmsmga002.fm.intel.com with ESMTP; 16 Feb 2022 21:28:29 -0800 Received: from orsmsx607.amr.corp.intel.com (10.22.229.20) by ORSMSX601.amr.corp.intel.com (10.22.229.14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2308.20; Wed, 16 Feb 2022 21:28:28 -0800 Received: from orsmsx611.amr.corp.intel.com (10.22.229.24) by ORSMSX607.amr.corp.intel.com (10.22.229.20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2308.20; Wed, 16 Feb 2022 21:28:28 -0800 Received: from ORSEDG602.ED.cps.intel.com (10.7.248.7) by orsmsx611.amr.corp.intel.com (10.22.229.24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2308.20 via Frontend Transport; Wed, 16 Feb 2022 21:28:28 -0800 Received: from NAM10-BN7-obe.outbound.protection.outlook.com (104.47.70.103) by edgegateway.intel.com (134.134.137.103) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2308.20; Wed, 16 Feb 2022 21:28:27 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=j1ndubNYeWF8/qr6q+dVKSnoJB4Mpa2NuKC8VH2zIC0Vc2oSLMOrUyHtkJxc2lqMZKhnE4PK4EBi/F6jExycrhKhFN8/0VlN4mIyZuWMTbdHs8lBww75dOQNVgXzcyxXHiUmN0MqYpTzDb2Rr2imZZQOvfjVGspIAk8i+9NuxISSnjoPCHwQ8G0G9oObyfdthYGhz1CMD0sV1iyjr3P+arE/CJIXMEeftF+0nao2bi4VNKY9VKFAdKIPCbYscsV8/jPq3ETbWQnUb1M2VOXBZ3gO25mBG6zOVLMuvHL9GqKGQTnTYXDENG4O+DLJgHywEoPM2ngsbMxDffrTpaBaXw== 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-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=lgR83voufJSls+ptcgZbkp5m9Tnqpo2E61osPzRlyH8=; b=YKPnaMPTwv9poBOkUGBqrm4v6fN/ruaYv2PuMOvRARhUOGiymgrhhhUFZI/86AdBEu8Gx3ZltitcSYIg/zsOo6Jn0pVZx1Nr8sLX1aRsE1SnOy4uxChBGiRJCB0AAUWdVeh2ns5Hjf/zSYOMcrU7KDINjj27Kr34ykr5UGBRclmV+wPAjPO5ZS/P14aLYKTgxG0SHUWTbK6y/t0mYlHEzQp3PKi+nYHjt2vSuVpdBGivGDsElcH8vGrrtVe5uBBzI7dF1HGTbMnjGG0DldXB6HzHEOlPiDA28N7LBoTC3Rk370LDJHPTlAbzkf8MuPPWC7z6rbQ5feG1mPt4iSG7rw== 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 Received: from DM6PR11MB4738.namprd11.prod.outlook.com (2603:10b6:5:2a3::18) by CH0PR11MB5459.namprd11.prod.outlook.com (2603:10b6:610:d2::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4995.16; Thu, 17 Feb 2022 05:28:25 +0000 Received: from DM6PR11MB4738.namprd11.prod.outlook.com ([fe80::1527:223f:8a2d:4f5e]) by DM6PR11MB4738.namprd11.prod.outlook.com ([fe80::1527:223f:8a2d:4f5e%5]) with mapi id 15.20.4995.016; Thu, 17 Feb 2022 05:28:25 +0000 From: "Li, Zhihao" To: "Yao, Jiewen" , "devel@edk2.groups.io" CC: "Wang, Jian J" , "Lu, Xiaoyu1" , "Jiang, Guomin" , "Fu, Siyuan" Subject: Re: [PATCH v1] CryptoPkg: Add new hash algorithm ParallelHash256HashAll in BaseCryptLib. Thread-Topic: [PATCH v1] CryptoPkg: Add new hash algorithm ParallelHash256HashAll in BaseCryptLib. Thread-Index: AQHYHyaJH9RiOU+Wx0asA64g7nzfmqyUIfdQgAGpmlCAAAoE4IAAa5lg Date: Thu, 17 Feb 2022 05:28:25 +0000 Message-ID: References: <20220211090522.1497-1-zhihao.li@intel.com> In-Reply-To: Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 51b8d859-a699-4bc8-d515-08d9f1d65229 x-ms-traffictypediagnostic: CH0PR11MB5459:EE_ x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:8273; x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: bTLegSHwv3uyps6+w+RqQYCdDJt7PuIqrQP+k83SidzqAL/Mqr796Mm9ijsoZ65urXJDuNr7ZJ6P+cyWZ3tDq0Ydil8yug6RDnjZ4CVVQLGWWRdLvJs6m/w+PFvK2PTaIyLLmwiIeioh8cGMb3VyH/P8fHLW+/SG/kqtAS5x5yqxpMOKKqlzudm7NnNX2aJ34Pte9RFL6GUulNNDFX/Ao4zZRElKXKDpp65eXuKLpFohKUbw01ElEwyqfX/gzbWtDDPVJBlg9MDJzNybRANFyjMeYvs0jwcrIxVsm4cVmhyCsH0QCcSmKChVPp3qvf7C8uJjStcPb2PKehjglYdifscwh33Oud49cYWsw8I9M3YFrfxZtgkw9y4KtFSntnUR+/14x/E0IQn8sULw9Fa9RPqycZLXTziyXmg+HqHB/QXdiabqOq1Es5uljmB4L5U33JrrEuR1FrnvGCMtT/tdoMWtvi33Eht98bJjVtZ+2d4/i72SdNWYCbQi4mKWNt8SKI58j7u7xSKHr7d2JQAyJ5YTYQJW1QeFsaax03lBk6I8ss5A8LVkuNmtzf4KoAcKkYtTJBoxP6hDKRUY1SvRZmt3KkhhNc9X7s/wG9bw3sb4hvojaAdTZKOZMUyMFyfywhbbLPP25bSm82PMpNCxiYL9zAL03cWs65xlchtp/KLKuOdrdkULd+aTtq576Eay+m2v0DtageY4+SpK2yYqxZ5x/b0X6MCI3xaBa95OOhp+TeYEHUV7029Vs6OobSUSp6idMD6VakKkbKmsFnMqMET2D2u5cVFcl0pwjFUCd0O4c6UPd5c61sOOp7JdHqLdgI0XjN2BHyyd+/a0CmcOQg== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DM6PR11MB4738.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230001)(366004)(5660300002)(8936002)(66476007)(66446008)(76116006)(66946007)(66556008)(7696005)(86362001)(64756008)(2906002)(53546011)(4326008)(6506007)(9686003)(8676002)(45080400002)(82960400001)(66574015)(38100700002)(508600001)(33656002)(38070700005)(26005)(186003)(966005)(316002)(52536014)(83380400001)(54906003)(122000001)(55016003)(110136005)(107886003)(19627235002)(30864003)(71200400001)(579004)(559001);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?NmNwcVN3NmFmLzFxVlNiMCtkaXFWT0xuTStwUkEyR2drL2FLWUhJVm91Q2Jt?= =?utf-8?B?a2UxM0NUTmY4MEpPTnUzblFCczdNUW1JZ1grbWZ2anJhTzA3TEd1M24zTU9K?= =?utf-8?B?TSswMC83TjZ2R1FtWVdKWDdhcDF2Z2ltaEN0SWZxSVBzOFRwK3VKSTFFMGVC?= =?utf-8?B?QnUyQ3h1cE1mcDZrZ2JuWStlYndDUi9iYlFzM2JoaDJmam54OU5IdmtoRkpC?= =?utf-8?B?WXdIQ0tDd2s2TUpGeDNkalA4TkJhWXBlVU9mQjdsemtnYmdWOW1VbzIzK1lY?= =?utf-8?B?NkFReTFHQjFXbFI1K3gyWmpZbEJ6U09pNUJXbWxrNXVWelhjeXp4dFlwUlEy?= =?utf-8?B?STM3MmFpVENoL3pKZnVtZithcU5Va3U2YTBQc1hlTVRoeERLL21pL3RyVFpU?= =?utf-8?B?TUJRUTk2OWl6cmZ5YnhwUXVtR3pRS2VJcEdZV0FYZUpBUkdtUlNSejNFT3VC?= =?utf-8?B?OXNaOGJrVkllNEZkckhMYXIzbDIvMy9jdkovUjdzZGtJMHJ1RmxYeGdiU2VC?= =?utf-8?B?SGNUOHFHZ3Q1Y0s3YUFlcUJ3R3RoVEJyN2hsTDBjc3RreHdxZk94cW1BOE9H?= =?utf-8?B?UUdmM0xMeDlWSkQzNmhtZmZQcnVtR3J6Skp6SEZ1Q1RHY3lFd0hpTkovdUMv?= =?utf-8?B?bG5HQ0FzKzB5emhCczhUbExjYnRJMis4cEcvUUZjcHpjZy9DaEFSOFBFdzRN?= =?utf-8?B?Mi9JNVNHUW4zVnFGczdOK3Q2OUZRUUFhWW5Dd2dsWFJRWVJ3YWMyWTVHclVr?= =?utf-8?B?bjl0TStqM1BKS2hsR2RESEE1SkZ3Um5wMjRLVDZ6YVcvTWhhSDVCTnI4VEJM?= =?utf-8?B?Vy9wNmI4WGpYb2lyWmhDRnR3M0JwdURrQWZiVHJBaFVrMGd0bEtmZGdTUzI3?= =?utf-8?B?TGhBL2twSmtWbUt2OU1vL04rckZmdmp0NlBnQ3dhcEJaTmM2Ykg1Zk0wOTcz?= =?utf-8?B?UXFHOFNTNzBvWWEveVNYdmRDVXpRWmtiR3Npa0o5RDI0ODlLVTRsZGtuYXov?= =?utf-8?B?SDM3U0lWak00bzhjT20xM1hxTTg3bjRvYW5Fc1BzN0VheVh2ZWtMSW9lWlRv?= =?utf-8?B?dktFczBBS3BtWGsxdU40d0VrSEIzWG9LdDlpMUJxNmxTcmtFRUdRekozSlo2?= =?utf-8?B?cnhCQURzWUNJb3Z6NERlYkZuSFNEZ2VCbW9kUWh5L0oyVzdQNGowV2ZTMkpS?= =?utf-8?B?UTFLR0xVSFNrTFRLWUp5YnVKRC9kYzYydlRkS1J4clZJVk5xQzhhaXhIeTBq?= =?utf-8?B?YVhoVFNtYVJSekxRaHNmYm1oWUlsajV6QzlPMkF6c0VGT2xLT0psVEZKUFdu?= =?utf-8?B?U0k2MktxcENWMno5ZlNHaVZoSEJ6aUx3RUNyUFRyQktNMFUxTWZ3eFdZMWlU?= =?utf-8?B?NS9FVXEvclRHb0toMkRFdFo3L01yclZQUkRrNkVYMUhBdzJpRWNYYkpYNXU5?= =?utf-8?B?elZ4N1VyZGhFckExUjdBUVF3Qjh0ditEZ3ZHTzhXNzNaUFhVMm4xVXFWcWNX?= =?utf-8?B?bGZNSkZiSEYzWnZjVDVKL1lDRlRSVERzT3VKQlhyZmxlb2V4R3pwVzFiMWNK?= =?utf-8?B?bFl0WTA2YmlJV0FKdmVuUzBMWk16Z3oxL3JsWVRyWGMyd2Vvc3o2OTNpZk9T?= =?utf-8?B?UXFMMHRlaXVaWWdQbVp6MGx6Umhld2MzTlFzb1ljRlFsTmF5VElvYUU1dDVq?= =?utf-8?B?c253WHBRaW9DeXlPdTNGSjFLM0NWOGxyR3l2WXdaMzM5YVJiVThFS3FYa2gr?= =?utf-8?B?ZVFST0Vza05EdnRDWTlsR2FWaDRoOWdqTEtaTW5YL3FWbUFLQmY5NmZRU1Nz?= =?utf-8?B?WFpjL2Z4NFpJUDJzVDBEUTFySG1pUGgwM0tXZVFuK0N5WjdwTjIwNE5DWk1I?= =?utf-8?B?ZXVtR3A0VzlxdkJXbDd0bjN0YWhNMTY0RzJEOFRlMGlUVTJGZ2Vma0dwb3Zo?= =?utf-8?B?UlRxd3V0NnhLTE42V2svazkzclU2eWFBT2QzQ2VjR0F3ZzlSY0lwSjMvQUxV?= =?utf-8?B?SmJSMmpRMEczYnVqRW52TWswYXZUWWZNMEZLRWg2dlA0Uk9GYTFUR0Z0L0Ju?= =?utf-8?B?bGZWT2xVcThjMW1uMmJwcHE4amdtbkpsejkwOE9oaHErNFB1RHJoaUd1ZGdR?= =?utf-8?B?OWhFam9SbnZjbTVVNGwxcUNHZ3hoSi9idW5zUms4a3VhSjYraWs2TWNSV0FD?= =?utf-8?Q?lvdHkiAoPS9xvI13NITr/ic=3D?= MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: DM6PR11MB4738.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 51b8d859-a699-4bc8-d515-08d9f1d65229 X-MS-Exchange-CrossTenant-originalarrivaltime: 17 Feb 2022 05:28:25.1842 (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: 3Knhqpl+4MgycHK/FDmupDYbRpyL1pNG2sXqq9Vl85DlotA82ZpSq6S/xthRJXdYY4NKgLY2r+8O3zcBiCFErg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH0PR11MB5459 Return-Path: zhihao.li@intel.com X-OriginatorOrg: intel.com Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 V2UgdHJ5IHRvIG1ha2UgcHJvcGVyIGF0dHJpYnV0aW9uIGZvciB0aGUgY29kZSBpbiAgb3BlbnNz bF9zaGEzIGFuZCBpbiB4a2NwLg0KV2Ugc2VwYXJhdGVkIHRoZWlyIGltcGxlbWVudGF0aW9uIGlu dG8gQ3J5cHRTaGEzLmMgYW5kIENyeXB0WGtjcC5jLCANClNlcGFyYXRlZCB0aGVpciBkZWNsYXJh dGlvbiBpbnRvIHNoYTMuaCBhbmQgeGtjcC5oLg0KDQpXaXRoIHRoZSBjb21tZW50LCB3ZSBwbGFu IHRvIGRlbGV0ZSB0aGVzZSBoZWFkZXIgZmlsZXMgYW5kIHB1dCB0aGUgZGVjbGFyYXRpb24gYW5k IA0KU3RydWN0dXJlIGRlZmluZSBpbnRvIENyeXB0Q3NoYWtlMjU2LmMuDQoNCj4gLS0tLS1Pcmln aW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogWWFvLCBKaWV3ZW4gPGppZXdlbi55YW9AaW50ZWwu Y29tPg0KPiBTZW50OiBXZWRuZXNkYXksIEZlYnJ1YXJ5IDE2LCAyMDIyIDM6NTIgUE0NCj4gVG86 IExpLCBaaGloYW8gPHpoaWhhby5saUBpbnRlbC5jb20+OyBkZXZlbEBlZGsyLmdyb3Vwcy5pbw0K PiBDYzogV2FuZywgSmlhbiBKIDxqaWFuLmoud2FuZ0BpbnRlbC5jb20+OyBMdSwgWGlhb3l1MQ0K PiA8eGlhb3l1MS5sdUBpbnRlbC5jb20+OyBKaWFuZywgR3VvbWluIDxndW9taW4uamlhbmdAaW50 ZWwuY29tPjsgRnUsDQo+IFNpeXVhbiA8c2l5dWFuLmZ1QGludGVsLmNvbT4NCj4gU3ViamVjdDog UkU6IFtQQVRDSCB2MV0gQ3J5cHRvUGtnOiBBZGQgbmV3IGhhc2ggYWxnb3JpdGhtDQo+IFBhcmFs bGVsSGFzaDI1Nkhhc2hBbGwgaW4gQmFzZUNyeXB0TGliLg0KPiANCj4gQnV0IEkgZG9u4oCZdCB1 bmRlcnN0YW5kIHdoeSB3ZSBuZWVkIHNoYTMuaCBhbmQgeGtjcC5oIGF0IGFsbC4NCj4gDQo+IA0K PiA+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID4gRnJvbTogTGksIFpoaWhhbyA8emhp aGFvLmxpQGludGVsLmNvbT4NCj4gPiBTZW50OiBXZWRuZXNkYXksIEZlYnJ1YXJ5IDE2LCAyMDIy IDM6NDMgUE0NCj4gPiBUbzogWWFvLCBKaWV3ZW4gPGppZXdlbi55YW9AaW50ZWwuY29tPjsgZGV2 ZWxAZWRrMi5ncm91cHMuaW8NCj4gPiBDYzogV2FuZywgSmlhbiBKIDxqaWFuLmoud2FuZ0BpbnRl bC5jb20+OyBMdSwgWGlhb3l1MQ0KPiA8eGlhb3l1MS5sdUBpbnRlbC5jb20+Ow0KPiA+IEppYW5n LCBHdW9taW4gPGd1b21pbi5qaWFuZ0BpbnRlbC5jb20+OyBGdSwgU2l5dWFuDQo+IDxzaXl1YW4u ZnVAaW50ZWwuY29tPg0KPiA+IFN1YmplY3Q6IFJFOiBbUEFUQ0ggdjFdIENyeXB0b1BrZzogQWRk IG5ldyBoYXNoIGFsZ29yaXRobQ0KPiA+IFBhcmFsbGVsSGFzaDI1Nkhhc2hBbGwgaW4gQmFzZUNy eXB0TGliLg0KPiA+DQo+ID4gV2l0aCB5b3VyIGNvbW1lbnQsIHdlIHBsYW4gZG8gc29tZSBtb2Rp ZmljYXRpb24gZm9yIHBhcmFsbGVsaGFzaC4NCj4gPiAxLiBQbGFuIHRvIGFkZCAgYSBwYXJhbWV0 ZXIgKEJsb2NrU2l6ZSkgb24gIFBhcmFsbGVsSGFzaDI1Nkhhc2hBbGwgIGZ1bmN0aW9uDQo+IHRv DQo+ID4gcmVwbGFjZSBQY2RQYXJhbGxlbEhhc2hCbG9ja051bWJlci4NCj4gPiAyLiBQbGFuIHRv IG1vdmUgc2hhMy5oIGFuZCB4a2NwLmggdG8gQ3J5cHRvUGtnXExpYnJhcnlcQmFzZUNyeXB0TGli XEhhc2gNCj4gPiBmb2xkZXIuDQo+ID4NCj4gPg0KPiA+ID4gLS0tLS1PcmlnaW5hbCBNZXNzYWdl LS0tLS0NCj4gPiA+IEZyb206IFlhbywgSmlld2VuIDxqaWV3ZW4ueWFvQGludGVsLmNvbT4NCj4g PiA+IFNlbnQ6IFR1ZXNkYXksIEZlYnJ1YXJ5IDE1LCAyMDIyIDI6MDkgUE0NCj4gPiA+IFRvOiBM aSwgWmhpaGFvIDx6aGloYW8ubGlAaW50ZWwuY29tPjsgZGV2ZWxAZWRrMi5ncm91cHMuaW8NCj4g PiA+IENjOiBXYW5nLCBKaWFuIEogPGppYW4uai53YW5nQGludGVsLmNvbT47IEx1LCBYaWFveXUx DQo+ID4gPiA8eGlhb3l1MS5sdUBpbnRlbC5jb20+OyBKaWFuZywgR3VvbWluIDxndW9taW4uamlh bmdAaW50ZWwuY29tPjsgRnUsDQo+ID4gPiBTaXl1YW4gPHNpeXVhbi5mdUBpbnRlbC5jb20+DQo+ ID4gPiBTdWJqZWN0OiBSRTogW1BBVENIIHYxXSBDcnlwdG9Qa2c6IEFkZCBuZXcgaGFzaCBhbGdv cml0aG0NCj4gPiA+IFBhcmFsbGVsSGFzaDI1Nkhhc2hBbGwgaW4gQmFzZUNyeXB0TGliLg0KPiA+ ID4NCj4gPiA+IFRoYW5rcyBmb3IgdGhlIHVwZGF0ZS4NCj4gPiA+DQo+ID4gPiBGZWVkYmFjayBi ZWxvdzoNCj4gPiA+DQo+ID4gPiAxKSBIb3cgYmxvY2sgc2l6ZSBpcyBkZXRlcm1pbmVkIGZvciBi ZWxvdyBBUEk/DQo+ID4gPg0KPiA+ID4gQk9PTEVBTg0KPiA+ID4gRUZJQVBJDQo+ID4gPiBQYXJh bGxlbEhhc2gyNTZIYXNoQWxsICgNCj4gPiA+ICAgSU4gQ09OU1QgVk9JRCAgICAgICAgICAgICpJ bnB1dCwNCj4gPiA+ICAgSU4gICAgICAgVUlOVE4gICAgICAgICAgIElucHV0Qnl0ZUxlbiwNCj4g PiA+ICAgT1VUICAgICAgVk9JRCAgICAgICAgICAgICpPdXRwdXQsDQo+ID4gPiAgIElOICAgICAg IFVJTlROICAgICAgICAgICBPdXRwdXRCeXRlTGVuLA0KPiA+ID4gICBJTiBDT05TVCBWT0lEICAg ICAgICAgICAgKkN1c3RvbWl6YXRpb24sDQo+ID4gPiAgIElOICAgICAgIFVJTlROICAgICAgICAg ICBDdXN0b21CeXRlTGVuDQo+ID4gPiAgICk7DQo+ID4gPg0KPiA+ID4gSXMgdGhhdCBkZXRlcm1p bmVkIGJ5IFBjZFBhcmFsbGVsSGFzaEJsb2NrTnVtYmVyID8NCj4gPiA+DQo+ID4gPiBJIGRvbuKA mXQgdGhpbmsgaXQgaXMgZ29vZCBpZGVhIHRvIGxldCBhIGNyeXB0byBsaWJyYXJ5IGRldGVybWlu ZSBhIHBsYXRmb3JtDQo+IFBDRC4NCj4gPiA+IEZvciBleGFtcGxlLCBob3cgZG8geW91IHN1cHBv cnQgYmluYXJ5IGNyeXB0byBtb2R1bGUgPw0KPiA+IFBsYW4gdG8gYWRkICBhIHBhcmFtZXRlciAo QmxvY2tTaXplKSB0byByZXBsYWNlDQo+IFBjZFBhcmFsbGVsSGFzaEJsb2NrTnVtYmVyLg0KPiA+ ID4NCj4gPiA+IDIpIFdoeSB3ZSBuZWVkICJzaGEzLmgiIGFuZCAieGtjcC5oIiA/DQo+ID4gPiBU aGVzZSBhcmUgb3BlbnNzbCBzcGVjaWZpYyBzdHJ1Y3R1cmUuIEl0IHNoYWxsIG5vdCBiZSBwdXQg dG8gRURLSUkgZmlsZQ0KPiBoZWFkZXIuDQo+ID4gPg0KPiA+ID4gQ3J5cHRvUGtnXExpYnJhcnlc SW5jbHVkZSBzaGFsbCBvbmx5IGNvbnRhaW4gZ2VuZXJpYyBkZXBlbmRlbmN5IGhlYWRlci4NCj4g PiBQbGFuIHRvIG1vdmUgc2hhMy5oIGFuZCB4a2NwLmggdG8gQ3J5cHRvUGtnXExpYnJhcnlcQmFz ZUNyeXB0TGliXEhhc2gNCj4gZm9sZGVyLg0KPiA+ID4NCj4gPiA+DQo+ID4gPg0KPiA+ID4NCj4g PiA+IFRoYW5rIHlvdQ0KPiA+ID4gWWFvLCBKaWV3ZW4NCj4gPiA+DQo+ID4gPiA+IC0tLS0tT3Jp Z2luYWwgTWVzc2FnZS0tLS0tDQo+ID4gPiA+IEZyb206IExpLCBaaGloYW8gPHpoaWhhby5saUBp bnRlbC5jb20+DQo+ID4gPiA+IFNlbnQ6IEZyaWRheSwgRmVicnVhcnkgMTEsIDIwMjIgNTowNSBQ TQ0KPiA+ID4gPiBUbzogZGV2ZWxAZWRrMi5ncm91cHMuaW8NCj4gPiA+ID4gQ2M6IFlhbywgSmll d2VuIDxqaWV3ZW4ueWFvQGludGVsLmNvbT47IFdhbmcsIEppYW4gSg0KPiA+ID4gPiA8amlhbi5q LndhbmdAaW50ZWwuY29tPjsgTHUsIFhpYW95dTEgPHhpYW95dTEubHVAaW50ZWwuY29tPjsgSmlh bmcsDQo+ID4gPiA+IEd1b21pbiA8Z3VvbWluLmppYW5nQGludGVsLmNvbT47IEZ1LCBTaXl1YW4g PHNpeXVhbi5mdUBpbnRlbC5jb20+DQo+ID4gPiA+IFN1YmplY3Q6IFtQQVRDSCB2MV0gQ3J5cHRv UGtnOiBBZGQgbmV3IGhhc2ggYWxnb3JpdGhtDQo+ID4gPiA+IFBhcmFsbGVsSGFzaDI1Nkhhc2hB bGwgaW4gQmFzZUNyeXB0TGliLg0KPiA+ID4gPg0KPiA+ID4gPiBSRUY6IGh0dHBzOi8vYnVnemls bGEudGlhbm9jb3JlLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzU5Ng0KPiA+ID4gPg0KPiA+ID4gPiBQ YXJhbGxlbCBoYXNoIGZ1bmN0aW9uIFBhcmFsbGVsSGFzaDI1Nkhhc2hBbGwsIGFzIGRlZmluZWQg aW4gTklTVCdzDQo+ID4gPiA+IFNwZWNpYWwgUHVibGljYXRpb24gODAwLTE4NSwgcHVibGlzaGVk IERlY2VtYmVyIDIwMTYuIEl0IHV0aWxpemVzDQo+ID4gPiA+IG11bHRpLXByb2Nlc3MgdG8gY2Fs Y3VsYXRlIHRoZSBkaWdlc3QuDQo+ID4gPiA+DQo+ID4gPiA+IENjOiBKaWV3ZW4gWWFvIDxqaWV3 ZW4ueWFvQGludGVsLmNvbT4NCj4gPiA+ID4gQ2M6IEppYW4gSiBXYW5nIDxqaWFuLmoud2FuZ0Bp bnRlbC5jb20+DQo+ID4gPiA+IENjOiBYaWFveXUgTHUgPHhpYW95dTEubHVAaW50ZWwuY29tPg0K PiA+ID4gPiBDYzogR3VvbWluIEppYW5nIDxndW9taW4uamlhbmdAaW50ZWwuY29tPg0KPiA+ID4g PiBDYzogU2l5dWFuIEZ1IDxzaXl1YW4uZnVAaW50ZWwuY29tPg0KPiA+ID4gPg0KPiA+ID4gPiBT aWduZWQtb2ZmLWJ5OiBaaGloYW8gTGkgPHpoaWhhby5saUBpbnRlbC5jb20+DQo+ID4gPiA+IC0t LQ0KPiA+ID4gPiAgQ3J5cHRvUGtnL0xpYnJhcnkvQmFzZUNyeXB0TGliL0hhc2gvQ3J5cHRDU2hh a2UyNTYuYyAgICAgICAgICAgICAgICAgICB8IDMxMw0KPiA+ID4gPiArKysrKysrKysrKysrKysr KysrKw0KPiA+ID4gPiAgQ3J5cHRvUGtnL0xpYnJhcnkvQmFzZUNyeXB0TGliL0hhc2gvQ3J5cHRQ YXJhbGxlbEhhc2guYyAgICAgICAgICAgICAgICB8IDI3NQ0KPiA+ID4gPiArKysrKysrKysrKysr KysrKw0KPiA+ID4gPiAgQ3J5cHRvUGtnL0xpYnJhcnkvQmFzZUNyeXB0TGliL0hhc2gvQ3J5cHRT aGEzLmMgICAgICAgICAgICAgICAgICAgICAgICB8IDEwMg0KPiA+ID4gKysrKysrKw0KPiA+ID4g PiAgQ3J5cHRvUGtnL0xpYnJhcnkvQmFzZUNyeXB0TGliL0hhc2gvQ3J5cHRYa2NwLmMgICAgICAg ICAgICAgICAgICAgICAgICB8ICA1Mw0KPiArKysrDQo+ID4gPiA+ICBDcnlwdG9Qa2cvVGVzdC9V bml0VGVzdC9MaWJyYXJ5L0Jhc2VDcnlwdExpYi9QYXJhbGxlbGhhc2hUZXN0cy5jICAgICAgIHwN Cj4gPiA+IDE1Mg0KPiA+ID4gPiArKysrKysrKysrDQo+ID4gPiA+ICBDcnlwdG9Qa2cvQ3J5cHRv UGtnLmRlYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwg ICA5ICstDQo+ID4gPiA+ICBDcnlwdG9Qa2cvSW5jbHVkZS9MaWJyYXJ5L0Jhc2VDcnlwdExpYi5o ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDI5ICstDQo+ID4gPiA+ICBDcnlwdG9Q a2cvTGlicmFyeS9CYXNlQ3J5cHRMaWIvU21tQ3J5cHRMaWIuaW5mICAgICAgICAgICAgICAgICAg ICAgICAgIHwgIDEyICstDQo+ID4gPiA+ICBDcnlwdG9Qa2cvTGlicmFyeS9JbmNsdWRlL0NydExp YlN1cHBvcnQuaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICA1ICstDQo+ID4gPiA+ ICBDcnlwdG9Qa2cvTGlicmFyeS9JbmNsdWRlL3NoYTMuaCAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHwgIDMyICsrDQo+ID4gPiA+ICBDcnlwdG9Qa2cvTGlicmFyeS9JbmNs dWRlL3hrY3AuaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDIzICsr DQo+ID4gPiA+ICBDcnlwdG9Qa2cvVGVzdC9Vbml0VGVzdC9MaWJyYXJ5L0Jhc2VDcnlwdExpYi9U ZXN0QmFzZUNyeXB0TGliLmgNCj4gfCAgIDMNCj4gPiA+ICstDQo+ID4gPiA+DQo+IENyeXB0b1Br Zy9UZXN0L1VuaXRUZXN0L0xpYnJhcnkvQmFzZUNyeXB0TGliL1Rlc3RCYXNlQ3J5cHRMaWJIb3N0 LmluZg0KPiA+ID4gfCAgIDcgKw0KPiA+ID4gPg0KPiBDcnlwdG9Qa2cvVGVzdC9Vbml0VGVzdC9M aWJyYXJ5L0Jhc2VDcnlwdExpYi9UZXN0QmFzZUNyeXB0TGliU2hlbGwuaW5mIHwNCj4gPiA+IDYg Kw0KPiA+ID4gPiAgMTQgZmlsZXMgY2hhbmdlZCwgMTAxNiBpbnNlcnRpb25zKCspLCA1IGRlbGV0 aW9ucygtKQ0KPiA+ID4gPg0KPiA+ID4gPiBkaWZmIC0tZ2l0IGEvQ3J5cHRvUGtnL0xpYnJhcnkv QmFzZUNyeXB0TGliL0hhc2gvQ3J5cHRDU2hha2UyNTYuYw0KPiA+ID4gPiBiL0NyeXB0b1BrZy9M aWJyYXJ5L0Jhc2VDcnlwdExpYi9IYXNoL0NyeXB0Q1NoYWtlMjU2LmMNCj4gPiA+ID4gbmV3IGZp bGUgbW9kZSAxMDA2NDQNCj4gPiA+ID4gaW5kZXggMDAwMDAwMDAwMC4uNWVmY2VkM2Y0Ng0KPiA+ ID4gPiAtLS0gL2Rldi9udWxsDQo+ID4gPiA+ICsrKyBiL0NyeXB0b1BrZy9MaWJyYXJ5L0Jhc2VD cnlwdExpYi9IYXNoL0NyeXB0Q1NoYWtlMjU2LmMNCj4gPiA+ID4gQEAgLTAsMCArMSwzMTMgQEAN Cj4gPiA+ID4gKy8qKiBAZmlsZQ0KPiA+ID4gPg0KPiA+ID4gPiArICBjU0hBS0UtMjU2IERpZ2Vz dCBXcmFwcGVyIEltcGxlbWVudGF0aW9ucy4NCj4gPiA+ID4NCj4gPiA+ID4gKw0KPiA+ID4gPg0K PiA+ID4gPiArQ29weXJpZ2h0IChjKSAyMDIyLCBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0 cyByZXNlcnZlZC48QlI+DQo+ID4gPiA+DQo+ID4gPiA+ICtTUERYLUxpY2Vuc2UtSWRlbnRpZmll cjogQlNELTItQ2xhdXNlLVBhdGVudA0KPiA+ID4gPg0KPiA+ID4gPiArDQo+ID4gPiA+DQo+ID4g PiA+ICsqKi8NCj4gPiA+ID4NCj4gPiA+ID4gKw0KPiA+ID4gPg0KPiA+ID4gPiArI2luY2x1ZGUg IkludGVybmFsQ3J5cHRMaWIuaCINCj4gPiA+ID4NCj4gPiA+ID4gKyNpbmNsdWRlICJzaGEzLmgi DQo+ID4gPiA+DQo+ID4gPiA+ICsjaW5jbHVkZSAieGtjcC5oIg0KPiA+ID4gPg0KPiA+ID4gPiAr DQo+ID4gPiA+DQo+ID4gPiA+ICsjZGVmaW5lICBDU0hBS0UyNTZfU0VDVVJJVFlfU1RSRU5HVEgg ICAgMjU2DQo+ID4gPiA+DQo+ID4gPiA+ICsjZGVmaW5lICBDU0hBS0UyNTZfUkFURV9JTl9CWVRF UyAgICAgICAgMTM2DQo+ID4gPiA+DQo+ID4gPiA+ICsNCj4gPiA+ID4NCj4gPiA+ID4gK2NvbnN0 IENIQVI4IG1aZXJvUGFkZGluZ1tDU0hBS0UyNTZfUkFURV9JTl9CWVRFU10gPSB7MH07DQo+ID4g PiA+DQo+ID4gPiA+ICsNCj4gPiA+ID4NCj4gPiA+ID4gK1VJTlRODQo+ID4gPiA+DQo+ID4gPiA+ ICtFRklBUEkNCj4gPiA+ID4NCj4gPiA+ID4gK0xlZnRFbmNvZGUgKA0KPiA+ID4gPg0KPiA+ID4g PiArICBPVVQgVUlOVDggICAgICpFbmNidWYsDQo+ID4gPiA+DQo+ID4gPiA+ICsgIElOICBVSU5U TiAgICAgVmFsdWUNCj4gPiA+ID4NCj4gPiA+ID4gKyAgKQ0KPiA+ID4gPg0KPiA+ID4gPiArew0K PiA+ID4gPg0KPiA+ID4gPiArICByZXR1cm4gbGVmdF9lbmNvZGUgKEVuY2J1ZiwgVmFsdWUpOw0K PiA+ID4gPg0KPiA+ID4gPiArfQ0KPiA+ID4gPg0KPiA+ID4gPiArDQo+ID4gPiA+DQo+ID4gPiA+ ICtVSU5UTg0KPiA+ID4gPg0KPiA+ID4gPiArRUZJQVBJDQo+ID4gPiA+DQo+ID4gPiA+ICtSaWdo dEVuY29kZSAoDQo+ID4gPiA+DQo+ID4gPiA+ICsgIE9VVCBVSU5UOCAgICAgKkVuY2J1ZiwNCj4g PiA+ID4NCj4gPiA+ID4gKyAgSU4gIFVJTlROICAgICBWYWx1ZQ0KPiA+ID4gPg0KPiA+ID4gPiAr ICApDQo+ID4gPiA+DQo+ID4gPiA+ICt7DQo+ID4gPiA+DQo+ID4gPiA+ICsgIHJldHVybiByaWdo dF9lbmNvZGUgKEVuY2J1ZiwgVmFsdWUpOw0KPiA+ID4gPg0KPiA+ID4gPiArfQ0KPiA+ID4gPg0K PiA+ID4gPiArDQo+ID4gPiA+DQo+ID4gPiA+ICsvKioNCj4gPiA+ID4NCj4gPiA+ID4gKyAgUmV0 cmlldmVzIHRoZSBzaXplLCBpbiBieXRlcywgb2YgdGhlIGNvbnRleHQgYnVmZmVyIHJlcXVpcmVk IGZvcg0KPiA+ID4gPiArIGNTSEFLRS0yNTYNCj4gPiA+ID4gaGFzaCBvcGVyYXRpb25zLg0KPiA+ ID4gPg0KPiA+ID4gPiArDQo+ID4gPiA+DQo+ID4gPiA+ICsgIEByZXR1cm4gIFRoZSBzaXplLCBp biBieXRlcywgb2YgdGhlIGNvbnRleHQgYnVmZmVyIHJlcXVpcmVkIGZvcg0KPiA+ID4gPiArIGNT SEFLRS0yNTYNCj4gPiA+ID4gaGFzaCBvcGVyYXRpb25zLg0KPiA+ID4gPg0KPiA+ID4gPiArDQo+ ID4gPiA+DQo+ID4gPiA+ICsqKi8NCj4gPiA+ID4NCj4gPiA+ID4gK1VJTlRODQo+ID4gPiA+DQo+ ID4gPiA+ICtFRklBUEkNCj4gPiA+ID4NCj4gPiA+ID4gK0NTaGFrZTI1NkdldENvbnRleHRTaXpl ICgNCj4gPiA+ID4NCj4gPiA+ID4gKyAgVk9JRA0KPiA+ID4gPg0KPiA+ID4gPiArICApDQo+ID4g PiA+DQo+ID4gPiA+ICt7DQo+ID4gPiA+DQo+ID4gPiA+ICsgIHJldHVybiAoVUlOVE4pIChzaXpl b2YgKEtFQ0NBSzE2MDBfQ1RYKSk7DQo+ID4gPiA+DQo+ID4gPiA+ICt9DQo+ID4gPiA+DQo+ID4g PiA+ICsNCj4gPiA+ID4NCj4gPiA+ID4gKy8qKg0KPiA+ID4gPg0KPiA+ID4gPiArICBJbml0aWFs aXplcyB1c2VyLXN1cHBsaWVkIG1lbW9yeSBwb2ludGVkIGJ5IENTaGFrZTI1NkNvbnRleHQgYXMN Cj4gPiA+ID4gKyBjU0hBS0UtMjU2DQo+ID4gPiA+IGhhc2ggY29udGV4dCBmb3INCj4gPiA+ID4N Cj4gPiA+ID4gKyAgc3Vic2VxdWVudCB1c2UuDQo+ID4gPiA+DQo+ID4gPiA+ICsNCj4gPiA+ID4N Cj4gPiA+ID4gKyAgQHBhcmFtW291dF0gQ1NoYWtlMjU2Q29udGV4dCAgIFBvaW50ZXIgdG8gY1NI QUtFLTI1NiBjb250ZXh0DQo+IGJlaW5nDQo+ID4gPiA+IGluaXRpYWxpemVkLg0KPiA+ID4gPg0K PiA+ID4gPiArICBAcGFyYW1baW5dICBPdXRwdXRMZW4gICAgICAgICAgVGhlIGRlc2lyZWQgbnVt YmVyIG9mIG91dHB1dCBsZW5ndGggaW4NCj4gPiA+IGJ5dGVzLg0KPiA+ID4gPg0KPiA+ID4gPiAr ICBAcGFyYW1baW5dICBOYW1lICAgICAgICAgICAgICAgUG9pbnRlciB0byB0aGUgZnVuY3Rpb24g bmFtZSBzdHJpbmcuDQo+ID4gPiA+DQo+ID4gPiA+ICsgIEBwYXJhbVtpbl0gIE5hbWVMZW4gICAg ICAgICAgICBUaGUgbGVuZ3RoIG9mIHRoZSBmdW5jdGlvbiBuYW1lIGluIGJ5dGVzLg0KPiA+ID4g Pg0KPiA+ID4gPiArICBAcGFyYW1baW5dICBDdXN0b21pemF0aW9uICAgICAgUG9pbnRlciB0byB0 aGUgY3VzdG9taXphdGlvbiBzdHJpbmcuDQo+ID4gPiA+DQo+ID4gPiA+ICsgIEBwYXJhbVtpbl0g IEN1c3RvbWl6YXRpb25MZW4gICBUaGUgbGVuZ3RoIG9mIHRoZSBjdXN0b21pemF0aW9uDQo+IHN0 cmluZyBpbg0KPiA+ID4gPiBieXRlcy4NCj4gPiA+ID4NCj4gPiA+ID4gKw0KPiA+ID4gPg0KPiA+ ID4gPiArICBAcmV0dmFsIFRSVUUgICBjU0hBS0UtMjU2IGNvbnRleHQgaW5pdGlhbGl6YXRpb24g c3VjY2VlZGVkLg0KPiA+ID4gPg0KPiA+ID4gPiArICBAcmV0dmFsIEZBTFNFICBjU0hBS0UtMjU2 IGNvbnRleHQgaW5pdGlhbGl6YXRpb24gZmFpbGVkLg0KPiA+ID4gPg0KPiA+ID4gPiArICBAcmV0 dmFsIEZBTFNFICBUaGlzIGludGVyZmFjZSBpcyBub3Qgc3VwcG9ydGVkLg0KPiA+ID4gPg0KPiA+ ID4gPiArDQo+ID4gPiA+DQo+ID4gPiA+ICsqKi8NCj4gPiA+ID4NCj4gPiA+ID4gK0JPT0xFQU4N Cj4gPiA+ID4NCj4gPiA+ID4gK0VGSUFQSQ0KPiA+ID4gPg0KPiA+ID4gPiArQ1NoYWtlMjU2SW5p dCAoDQo+ID4gPiA+DQo+ID4gPiA+ICsgIE9VVCAgIFZPSUQgICAgICAgICAgKkNTaGFrZTI1NkNv bnRleHQsDQo+ID4gPiA+DQo+ID4gPiA+ICsgIElOICAgIFVJTlROICAgICAgICAgT3V0cHV0TGVu LA0KPiA+ID4gPg0KPiA+ID4gPiArICBJTiAgICBDT05TVCBWT0lEICAgICpOYW1lLA0KPiA+ID4g Pg0KPiA+ID4gPiArICBJTiAgICBVSU5UTiAgICAgICAgIE5hbWVMZW4sDQo+ID4gPiA+DQo+ID4g PiA+ICsgIElOICAgIENPTlNUIFZPSUQgICAgKkN1c3RvbWl6YXRpb24sDQo+ID4gPiA+DQo+ID4g PiA+ICsgIElOICAgIFVJTlROICAgICAgICAgQ3VzdG9taXphdGlvbkxlbg0KPiA+ID4gPg0KPiA+ ID4gPiArICApDQo+ID4gPiA+DQo+ID4gPiA+ICt7DQo+ID4gPiA+DQo+ID4gPiA+ICsgIEJPT0xF QU4gICBTdGF0dXM7DQo+ID4gPiA+DQo+ID4gPiA+ICsgIHVuc2lnbmVkIGNoYXIgRW5jQnVmW3Np emVvZihzaXplX3QpKzFdOw0KPiA+ID4gPg0KPiA+ID4gPiArICBVSU5UTiAgICAgRW5jTGVuOw0K PiA+ID4gPg0KPiA+ID4gPiArICBVSU5UTiAgICAgQWJzb3JiTGVuOw0KPiA+ID4gPg0KPiA+ID4g PiArICBVSU5UTiAgICAgUGFkTGVuOw0KPiA+ID4gPg0KPiA+ID4gPiArDQo+ID4gPiA+DQo+ID4g PiA+ICsgIC8vDQo+ID4gPiA+DQo+ID4gPiA+ICsgIC8vIENoZWNrIGlucHV0IHBhcmFtZXRlcnMu DQo+ID4gPiA+DQo+ID4gPiA+ICsgIC8vDQo+ID4gPiA+DQo+ID4gPiA+ICsgIGlmIChDU2hha2Uy NTZDb250ZXh0ID09IE5VTEwgfHwNCj4gPiA+ID4NCj4gPiA+ID4gKyAgICAgIE91dHB1dExlbiA9 PSAwIHx8DQo+ID4gPiA+DQo+ID4gPiA+ICsgICAgICAoTmFtZUxlbiAhPSAwICYmIE5hbWUgPT0g TlVMTCkgfHwNCj4gPiA+ID4NCj4gPiA+ID4gKyAgICAgIChDdXN0b21pemF0aW9uTGVuICE9IDAg JiYgQ3VzdG9taXphdGlvbiA9PSBOVUxMKSkgew0KPiA+ID4gPg0KPiA+ID4gPiArICAgIHJldHVy biBGQUxTRTsNCj4gPiA+ID4NCj4gPiA+ID4gKyAgfQ0KPiA+ID4gPg0KPiA+ID4gPiArDQo+ID4g PiA+DQo+ID4gPiA+ICsgIC8vDQo+ID4gPiA+DQo+ID4gPiA+ICsgIC8vIEluaXRpYWxpemUgS0VD Q0FLIGNvbnRleHQgd2l0aCBwYWQgdmFsdWUgYW5kIGJsb2NrIHNpemUuDQo+ID4gPiA+DQo+ID4g PiA+ICsgIC8vDQo+ID4gPiA+DQo+ID4gPiA+ICsgIGlmIChOYW1lTGVuID09IDAgJiYgQ3VzdG9t aXphdGlvbkxlbiA9PSAwKSB7DQo+ID4gPiA+DQo+ID4gPiA+ICsgICAgLy8NCj4gPiA+ID4NCj4g PiA+ID4gKyAgICAvLyBXaGVuIE4gYW5kIFMgYXJlIGJvdGggZW1wdHkgc3RyaW5ncywgY1NIQUtF KFgsIEwsIE4sIFMpIGlzDQo+ID4gPiA+ICsgZXF1aXZhbGVudCB0bw0KPiA+ID4gPg0KPiA+ID4g PiArICAgIC8vIFNIQUtFIGFzIGRlZmluZWQgaW4gRklQUyAyMDIuDQo+ID4gPiA+DQo+ID4gPiA+ ICsgICAgLy8NCj4gPiA+ID4NCj4gPiA+ID4gKyAgICByZXR1cm4gKEJPT0xFQU4pIGluaXQgKA0K PiA+ID4gPg0KPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgIChLRUNDQUsxNjAwX0NUWCAq KSBDU2hha2UyNTZDb250ZXh0LA0KPiA+ID4gPg0KPiA+ID4gPiArICAgICAgICAgICAgICAgICAg ICAgICdceDFmJywNCj4gPiA+ID4NCj4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAoS0VD Q0FLMTYwMF9XSURUSCAtIENTSEFLRTI1Nl9TRUNVUklUWV9TVFJFTkdUSA0KPiA+ID4gPiArICog MikgLyA4LA0KPiA+ID4gPg0KPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgIE91dHB1dExl bg0KPiA+ID4gPg0KPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICk7DQo+ID4gPiA+DQo+ ID4gPiA+ICsgIH0NCj4gPiA+ID4NCj4gPiA+ID4gKw0KPiA+ID4gPg0KPiA+ID4gPiArICBTdGF0 dXMgPSAoQk9PTEVBTikgaW5pdCAoDQo+ID4gPiA+DQo+ID4gPiA+ICsgICAgICAgICAgICAgICAg ICAgICAgKEtFQ0NBSzE2MDBfQ1RYICopIENTaGFrZTI1NkNvbnRleHQsDQo+ID4gPiA+DQo+ID4g PiA+ICsgICAgICAgICAgICAgICAgICAgICAgJ1x4MDQnLA0KPiA+ID4gPg0KPiA+ID4gPiArICAg ICAgICAgICAgICAgICAgICAgIChLRUNDQUsxNjAwX1dJRFRIIC0gQ1NIQUtFMjU2X1NFQ1VSSVRZ X1NUUkVOR1RIDQo+ID4gPiA+ICsgKiAyKSAvIDgsDQo+ID4gPiA+DQo+ID4gPiA+ICsgICAgICAg ICAgICAgICAgICAgICAgT3V0cHV0TGVuDQo+ID4gPiA+DQo+ID4gPiA+ICsgICAgICAgICAgICAg ICAgICAgICAgKTsNCj4gPiA+ID4NCj4gPiA+ID4gKyAgaWYgKCFTdGF0dXMpIHsNCj4gPiA+ID4N Cj4gPiA+ID4gKyAgICByZXR1cm4gRkFMU0U7DQo+ID4gPiA+DQo+ID4gPiA+ICsgIH0NCj4gPiA+ ID4NCj4gPiA+ID4gKw0KPiA+ID4gPg0KPiA+ID4gPiArICBBYnNvcmJMZW4gPSAwOw0KPiA+ID4g Pg0KPiA+ID4gPiArICAvLw0KPiA+ID4gPg0KPiA+ID4gPiArICAvLyBBYnNvcmIgQWJzb3JiIGJ5 dGVwYWQoLi4sIHJhdGUpLg0KPiA+ID4gPg0KPiA+ID4gPiArICAvLw0KPiA+ID4gPg0KPiA+ID4g PiArICBFbmNMZW4gPSBsZWZ0X2VuY29kZSAoRW5jQnVmLCBDU0hBS0UyNTZfUkFURV9JTl9CWVRF Uyk7DQo+ID4gPiA+DQo+ID4gPiA+ICsgIFN0YXR1cyA9IChCT09MRUFOKSBzaGEzX3VwZGF0ZSAo KEtFQ0NBSzE2MDBfQ1RYICopDQo+ID4gPiA+ICsgQ1NoYWtlMjU2Q29udGV4dCwNCj4gPiA+ID4g RW5jQnVmLCBFbmNMZW4pOw0KPiA+ID4gPg0KPiA+ID4gPiArICBpZiAoIVN0YXR1cykgew0KPiA+ ID4gPg0KPiA+ID4gPiArICAgIHJldHVybiBGQUxTRTsNCj4gPiA+ID4NCj4gPiA+ID4gKyAgfQ0K PiA+ID4gPg0KPiA+ID4gPiArICBBYnNvcmJMZW4gKz0gRW5jTGVuOw0KPiA+ID4gPg0KPiA+ID4g PiArDQo+ID4gPiA+DQo+ID4gPiA+ICsgIC8vDQo+ID4gPiA+DQo+ID4gPiA+ICsgIC8vIEFic29y YiBlbmNvZGVfc3RyaW5nKE4pLg0KPiA+ID4gPg0KPiA+ID4gPiArICAvLw0KPiA+ID4gPg0KPiA+ ID4gPiArICBFbmNMZW4gPSBsZWZ0X2VuY29kZSAoRW5jQnVmLCBOYW1lTGVuICogOCk7DQo+ID4g PiA+DQo+ID4gPiA+ICsgIFN0YXR1cyA9IChCT09MRUFOKSBzaGEzX3VwZGF0ZSAoKEtFQ0NBSzE2 MDBfQ1RYICopDQo+ID4gPiA+ICsgQ1NoYWtlMjU2Q29udGV4dCwNCj4gPiA+ID4gRW5jQnVmLCBF bmNMZW4pOw0KPiA+ID4gPg0KPiA+ID4gPiArICBpZiAoIVN0YXR1cykgew0KPiA+ID4gPg0KPiA+ ID4gPiArICAgIHJldHVybiBGQUxTRTsNCj4gPiA+ID4NCj4gPiA+ID4gKyAgfQ0KPiA+ID4gPg0K PiA+ID4gPiArICBBYnNvcmJMZW4gKz0gRW5jTGVuOw0KPiA+ID4gPg0KPiA+ID4gPiArICBTdGF0 dXMgPSAoQk9PTEVBTikgc2hhM191cGRhdGUgKChLRUNDQUsxNjAwX0NUWCAqKQ0KPiA+ID4gPiAr IENTaGFrZTI1NkNvbnRleHQsDQo+ID4gPiA+IE5hbWUsIE5hbWVMZW4pOw0KPiA+ID4gPg0KPiA+ ID4gPiArICBpZiAoIVN0YXR1cykgew0KPiA+ID4gPg0KPiA+ID4gPiArICAgIHJldHVybiBGQUxT RTsNCj4gPiA+ID4NCj4gPiA+ID4gKyAgfQ0KPiA+ID4gPg0KPiA+ID4gPiArICBBYnNvcmJMZW4g Kz0gTmFtZUxlbjsNCj4gPiA+ID4NCj4gPiA+ID4gKw0KPiA+ID4gPg0KPiA+ID4gPiArICAvLw0K PiA+ID4gPg0KPiA+ID4gPiArICAvLyBBYnNvcmIgZW5jb2RlX3N0cmluZyhTKS4NCj4gPiA+ID4N Cj4gPiA+ID4gKyAgLy8NCj4gPiA+ID4NCj4gPiA+ID4gKyAgRW5jTGVuID0gbGVmdF9lbmNvZGUg KEVuY0J1ZiwgQ3VzdG9taXphdGlvbkxlbiAqIDgpOw0KPiA+ID4gPg0KPiA+ID4gPiArICBTdGF0 dXMgPSAoQk9PTEVBTikgc2hhM191cGRhdGUgKChLRUNDQUsxNjAwX0NUWCAqKQ0KPiA+ID4gPiAr IENTaGFrZTI1NkNvbnRleHQsDQo+ID4gPiA+IEVuY0J1ZiwgRW5jTGVuKTsNCj4gPiA+ID4NCj4g PiA+ID4gKyAgaWYgKCFTdGF0dXMpIHsNCj4gPiA+ID4NCj4gPiA+ID4gKyAgICByZXR1cm4gRkFM U0U7DQo+ID4gPiA+DQo+ID4gPiA+ICsgIH0NCj4gPiA+ID4NCj4gPiA+ID4gKyAgQWJzb3JiTGVu ICs9IEVuY0xlbjsNCj4gPiA+ID4NCj4gPiA+ID4gKyAgU3RhdHVzID0gKEJPT0xFQU4pIHNoYTNf dXBkYXRlICgoS0VDQ0FLMTYwMF9DVFggKikNCj4gPiA+ID4gKyBDU2hha2UyNTZDb250ZXh0LA0K PiA+ID4gPiBDdXN0b21pemF0aW9uLCBDdXN0b21pemF0aW9uTGVuKTsNCj4gPiA+ID4NCj4gPiA+ ID4gKyAgaWYgKCFTdGF0dXMpIHsNCj4gPiA+ID4NCj4gPiA+ID4gKyAgICByZXR1cm4gRkFMU0U7 DQo+ID4gPiA+DQo+ID4gPiA+ICsgIH0NCj4gPiA+ID4NCj4gPiA+ID4gKyAgQWJzb3JiTGVuICs9 IEN1c3RvbWl6YXRpb25MZW47DQo+ID4gPiA+DQo+ID4gPiA+ICsNCj4gPiA+ID4NCj4gPiA+ID4g KyAgLy8NCj4gPiA+ID4NCj4gPiA+ID4gKyAgLy8gQWJzb3JiIHplcm8gcGFkZGluZyB1cCB0byBy YXRlLg0KPiA+ID4gPg0KPiA+ID4gPiArICAvLw0KPiA+ID4gPg0KPiA+ID4gPiArICBQYWRMZW4g PSBDU0hBS0UyNTZfUkFURV9JTl9CWVRFUyAtIEFic29yYkxlbiAlDQo+ID4gPiA+IENTSEFLRTI1 Nl9SQVRFX0lOX0JZVEVTOw0KPiA+ID4gPg0KPiA+ID4gPiArICBTdGF0dXMgPSAoQk9PTEVBTikg c2hhM191cGRhdGUgKChLRUNDQUsxNjAwX0NUWCAqKQ0KPiA+ID4gPiArIENTaGFrZTI1NkNvbnRl eHQsDQo+ID4gPiA+IG1aZXJvUGFkZGluZywgUGFkTGVuKTsNCj4gPiA+ID4NCj4gPiA+ID4gKyAg aWYgKCFTdGF0dXMpIHsNCj4gPiA+ID4NCj4gPiA+ID4gKyAgICByZXR1cm4gRkFMU0U7DQo+ID4g PiA+DQo+ID4gPiA+ICsgIH0NCj4gPiA+ID4NCj4gPiA+ID4gKw0KPiA+ID4gPg0KPiA+ID4gPiAr ICByZXR1cm4gVFJVRTsNCj4gPiA+ID4NCj4gPiA+ID4gK30NCj4gPiA+ID4NCj4gPiA+ID4gKw0K PiA+ID4gPg0KPiA+ID4gPiArLyoqDQo+ID4gPiA+DQo+ID4gPiA+ICsgIERpZ2VzdHMgdGhlIGlu cHV0IGRhdGEgYW5kIHVwZGF0ZXMgY1NIQUtFLTI1NiBjb250ZXh0Lg0KPiA+ID4gPg0KPiA+ID4g PiArDQo+ID4gPiA+DQo+ID4gPiA+ICsgIFRoaXMgZnVuY3Rpb24gcGVyZm9ybXMgY1NIQUtFLTI1 NiBkaWdlc3Qgb24gYSBkYXRhIGJ1ZmZlciBvZiB0aGUNCj4gPiA+ID4gKyBzcGVjaWZpZWQNCj4g PiA+ID4gc2l6ZS4NCj4gPiA+ID4NCj4gPiA+ID4gKyAgSXQgY2FuIGJlIGNhbGxlZCBtdWx0aXBs ZSB0aW1lcyB0byBjb21wdXRlIHRoZSBkaWdlc3Qgb2YgbG9uZyBvcg0KPiA+ID4gPiArIGRpc2Nv bnRpbnVvdXMNCj4gPiA+ID4gZGF0YSBzdHJlYW1zLg0KPiA+ID4gPg0KPiA+ID4gPiArICBjU0hB S0UtMjU2IGNvbnRleHQgc2hvdWxkIGJlIGFscmVhZHkgY29ycmVjdGx5IGluaXRpYWxpemVkIGJ5 DQo+ID4gPiA+ICsgQ1NoYWtlMjU2SW5pdCgpLA0KPiA+ID4gPiBhbmQgc2hvdWxkIG5vdCBiZSBm aW5hbGl6ZWQNCj4gPiA+ID4NCj4gPiA+ID4gKyAgYnkgQ1NoYWtlMjU2RmluYWwoKS4gQmVoYXZp b3Igd2l0aCBpbnZhbGlkIGNvbnRleHQgaXMgdW5kZWZpbmVkLg0KPiA+ID4gPg0KPiA+ID4gPiAr DQo+ID4gPiA+DQo+ID4gPiA+ICsgIEBwYXJhbVtpbiwgb3V0XSAgQ1NoYWtlMjU2Q29udGV4dCAg IFBvaW50ZXIgdG8gdGhlIGNTSEFLRS0yNTYNCj4gY29udGV4dC4NCj4gPiA+ID4NCj4gPiA+ID4g KyAgQHBhcmFtW2luXSAgICAgICBEYXRhICAgICAgICAgICAgICAgUG9pbnRlciB0byB0aGUgYnVm ZmVyIGNvbnRhaW5pbmcgdGhlIGRhdGENCj4gdG8NCj4gPiA+IGJlDQo+ID4gPiA+IGhhc2hlZC4N Cj4gPiA+ID4NCj4gPiA+ID4gKyAgQHBhcmFtW2luXSAgICAgICBEYXRhU2l6ZSAgICAgICAgICAg U2l6ZSBvZiBEYXRhIGJ1ZmZlciBpbiBieXRlcy4NCj4gPiA+ID4NCj4gPiA+ID4gKw0KPiA+ID4g Pg0KPiA+ID4gPiArICBAcmV0dmFsIFRSVUUgICBjU0hBS0UtMjU2IGRhdGEgZGlnZXN0IHN1Y2Nl ZWRlZC4NCj4gPiA+ID4NCj4gPiA+ID4gKyAgQHJldHZhbCBGQUxTRSAgY1NIQUtFLTI1NiBkYXRh IGRpZ2VzdCBmYWlsZWQuDQo+ID4gPiA+DQo+ID4gPiA+ICsgIEByZXR2YWwgRkFMU0UgIFRoaXMg aW50ZXJmYWNlIGlzIG5vdCBzdXBwb3J0ZWQuDQo+ID4gPiA+DQo+ID4gPiA+ICsNCj4gPiA+ID4N Cj4gPiA+ID4gKyoqLw0KPiA+ID4gPg0KPiA+ID4gPiArQk9PTEVBTg0KPiA+ID4gPg0KPiA+ID4g PiArRUZJQVBJDQo+ID4gPiA+DQo+ID4gPiA+ICtDU2hha2UyNTZVcGRhdGUgKA0KPiA+ID4gPg0K PiA+ID4gPiArICBJTiBPVVQgIFZPSUQgICAgICAgICpDU2hha2UyNTZDb250ZXh0LA0KPiA+ID4g Pg0KPiA+ID4gPiArICBJTiAgICAgIENPTlNUIFZPSUQgICpEYXRhLA0KPiA+ID4gPg0KPiA+ID4g PiArICBJTiAgICAgIFVJTlROICAgICAgIERhdGFTaXplDQo+ID4gPiA+DQo+ID4gPiA+ICsgICkN Cj4gPiA+ID4NCj4gPiA+ID4gK3sNCj4gPiA+ID4NCj4gPiA+ID4gKyAgLy8NCj4gPiA+ID4NCj4g PiA+ID4gKyAgLy8gQ2hlY2sgaW5wdXQgcGFyYW1ldGVycy4NCj4gPiA+ID4NCj4gPiA+ID4gKyAg Ly8NCj4gPiA+ID4NCj4gPiA+ID4gKyAgaWYgKENTaGFrZTI1NkNvbnRleHQgPT0gTlVMTCkgew0K PiA+ID4gPg0KPiA+ID4gPiArICAgIHJldHVybiBGQUxTRTsNCj4gPiA+ID4NCj4gPiA+ID4gKyAg fQ0KPiA+ID4gPg0KPiA+ID4gPiArDQo+ID4gPiA+DQo+ID4gPiA+ICsgIC8vDQo+ID4gPiA+DQo+ ID4gPiA+ICsgIC8vIENoZWNrIGludmFsaWQgcGFyYW1ldGVycywgaW4gY2FzZSB0aGF0IG9ubHkg RGF0YUxlbmd0aCB3YXMNCj4gPiA+ID4gKyBjaGVja2VkIGluDQo+ID4gPiA+IE9wZW5TU0wuDQo+ ID4gPiA+DQo+ID4gPiA+ICsgIC8vDQo+ID4gPiA+DQo+ID4gPiA+ICsgIGlmIChEYXRhID09IE5V TEwgJiYgRGF0YVNpemUgIT0gMCkgew0KPiA+ID4gPg0KPiA+ID4gPiArICAgIHJldHVybiBGQUxT RTsNCj4gPiA+ID4NCj4gPiA+ID4gKyAgfQ0KPiA+ID4gPg0KPiA+ID4gPiArDQo+ID4gPiA+DQo+ ID4gPiA+ICsgIHJldHVybiAoQk9PTEVBTikoc2hhM191cGRhdGUgKChLRUNDQUsxNjAwX0NUWCAq KQ0KPiA+ID4gQ1NoYWtlMjU2Q29udGV4dCwNCj4gPiA+ID4gRGF0YSwgRGF0YVNpemUpKTsNCj4g PiA+ID4NCj4gPiA+ID4gK30NCj4gPiA+ID4NCj4gPiA+ID4gKw0KPiA+ID4gPg0KPiA+ID4gPiAr LyoqDQo+ID4gPiA+DQo+ID4gPiA+ICsgIENvbXBsZXRlcyBjb21wdXRhdGlvbiBvZiB0aGUgY1NI QUtFLTI1NiBkaWdlc3QgdmFsdWUuDQo+ID4gPiA+DQo+ID4gPiA+ICsNCj4gPiA+ID4NCj4gPiA+ ID4gKyAgVGhpcyBmdW5jdGlvbiBjb21wbGV0ZXMgY1NIQUtFLTI1NiBoYXNoIGNvbXB1dGF0aW9u IGFuZCByZXRyaWV2ZXMNCj4gPiA+ID4gKyB0aGUNCj4gPiA+ID4gZGlnZXN0IHZhbHVlIGludG8N Cj4gPiA+ID4NCj4gPiA+ID4gKyAgdGhlIHNwZWNpZmllZCBtZW1vcnkuIEFmdGVyIHRoaXMgZnVu Y3Rpb24gaGFzIGJlZW4gY2FsbGVkLCB0aGUNCj4gPiA+ID4gKyBjU0hBS0UtMjU2DQo+ID4gPiA+ IGNvbnRleHQgY2Fubm90DQo+ID4gPiA+DQo+ID4gPiA+ICsgIGJlIHVzZWQgYWdhaW4uDQo+ID4g PiA+DQo+ID4gPiA+ICsgIGNTSEFLRS0yNTYgY29udGV4dCBzaG91bGQgYmUgYWxyZWFkeSBjb3Jy ZWN0bHkgaW5pdGlhbGl6ZWQgYnkNCj4gPiA+ID4gKyBDU2hha2UyNTZJbml0KCksDQo+ID4gPiA+ IGFuZCBzaG91bGQgbm90IGJlDQo+ID4gPiA+DQo+ID4gPiA+ICsgIGZpbmFsaXplZCBieSBDU2hh a2UyNTZGaW5hbCgpLiBCZWhhdmlvciB3aXRoIGludmFsaWQgY1NIQUtFLTI1Ng0KPiA+ID4gPiAr IGNvbnRleHQgaXMNCj4gPiA+ID4gdW5kZWZpbmVkLg0KPiA+ID4gPg0KPiA+ID4gPiArDQo+ID4g PiA+DQo+ID4gPiA+ICsgIEBwYXJhbVtpbiwgb3V0XSAgQ1NoYWtlMjU2Q29udGV4dCAgUG9pbnRl ciB0byB0aGUgY1NIQUtFLTI1Ng0KPiBjb250ZXh0Lg0KPiA+ID4gPg0KPiA+ID4gPiArICBAcGFy YW1bb3V0XSAgICAgIEhhc2hWYWx1ZSAgICAgICAgIFBvaW50ZXIgdG8gYSBidWZmZXIgdGhhdCBy ZWNlaXZlcyB0aGUNCj4gPiA+IGNTSEFLRS0NCj4gPiA+ID4gMjU2IGRpZ2VzdA0KPiA+ID4gPg0K PiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlLg0KPiA+ ID4gPg0KPiA+ID4gPiArDQo+ID4gPiA+DQo+ID4gPiA+ICsgIEByZXR2YWwgVFJVRSAgIGNTSEFL RS0yNTYgZGlnZXN0IGNvbXB1dGF0aW9uIHN1Y2NlZWRlZC4NCj4gPiA+ID4NCj4gPiA+ID4gKyAg QHJldHZhbCBGQUxTRSAgY1NIQUtFLTI1NiBkaWdlc3QgY29tcHV0YXRpb24gZmFpbGVkLg0KPiA+ ID4gPg0KPiA+ID4gPiArICBAcmV0dmFsIEZBTFNFICBUaGlzIGludGVyZmFjZSBpcyBub3Qgc3Vw cG9ydGVkLg0KPiA+ID4gPg0KPiA+ID4gPiArDQo+ID4gPiA+DQo+ID4gPiA+ICsqKi8NCj4gPiA+ ID4NCj4gPiA+ID4gK0JPT0xFQU4NCj4gPiA+ID4NCj4gPiA+ID4gK0VGSUFQSQ0KPiA+ID4gPg0K PiA+ID4gPiArQ1NoYWtlMjU2RmluYWwgKA0KPiA+ID4gPg0KPiA+ID4gPiArICBJTiBPVVQgIFZP SUQgICAqQ1NoYWtlMjU2Q29udGV4dCwNCj4gPiA+ID4NCj4gPiA+ID4gKyAgT1VUICAgICBVSU5U OCAgKkhhc2hWYWx1ZQ0KPiA+ID4gPg0KPiA+ID4gPiArICApDQo+ID4gPiA+DQo+ID4gPiA+ICt7 DQo+ID4gPiA+DQo+ID4gPiA+ICsgIC8vDQo+ID4gPiA+DQo+ID4gPiA+ICsgIC8vIENoZWNrIGlu cHV0IHBhcmFtZXRlcnMuDQo+ID4gPiA+DQo+ID4gPiA+ICsgIC8vDQo+ID4gPiA+DQo+ID4gPiA+ ICsgIGlmIChDU2hha2UyNTZDb250ZXh0ID09IE5VTEwgfHwgSGFzaFZhbHVlID09IE5VTEwpIHsN Cj4gPiA+ID4NCj4gPiA+ID4gKyAgICByZXR1cm4gRkFMU0U7DQo+ID4gPiA+DQo+ID4gPiA+ICsg IH0NCj4gPiA+ID4NCj4gPiA+ID4gKw0KPiA+ID4gPg0KPiA+ID4gPiArICAvLw0KPiA+ID4gPg0K PiA+ID4gPiArICAvLyBjU0hBS0UtMjU2IEhhc2ggRmluYWxpemF0aW9uLg0KPiA+ID4gPg0KPiA+ ID4gPiArICAvLw0KPiA+ID4gPg0KPiA+ID4gPiArICByZXR1cm4gKEJPT0xFQU4pIChzaGEzX2Zp bmFsICgoS0VDQ0FLMTYwMF9DVFggKikNCj4gQ1NoYWtlMjU2Q29udGV4dCwNCj4gPiA+ID4gSGFz aFZhbHVlKSk7DQo+ID4gPiA+DQo+ID4gPiA+ICt9DQo+ID4gPiA+DQo+ID4gPiA+ICsNCj4gPiA+ ID4NCj4gPiA+ID4gKy8qKg0KPiA+ID4gPg0KPiA+ID4gPiArICBDb21wdXRlcyB0aGUgQ1NIQUtF LTI1NiBtZXNzYWdlIGRpZ2VzdCBvZiBhIGlucHV0IGRhdGEgYnVmZmVyLg0KPiA+ID4gPg0KPiA+ ID4gPiArDQo+ID4gPiA+DQo+ID4gPiA+ICsgIFRoaXMgZnVuY3Rpb24gcGVyZm9ybXMgdGhlIENT SEFLRS0yNTYgbWVzc2FnZSBkaWdlc3Qgb2YgYSBnaXZlbg0KPiA+ID4gPiArIGRhdGEgYnVmZmVy LA0KPiA+ID4gPiBhbmQgcGxhY2VzDQo+ID4gPiA+DQo+ID4gPiA+ICsgIHRoZSBkaWdlc3QgdmFs dWUgaW50byB0aGUgc3BlY2lmaWVkIG1lbW9yeS4NCj4gPiA+ID4NCj4gPiA+ID4gKw0KPiA+ID4g Pg0KPiA+ID4gPiArICBAcGFyYW1baW5dICAgRGF0YSAgICAgICAgICAgICAgIFBvaW50ZXIgdG8g dGhlIGJ1ZmZlciBjb250YWluaW5nIHRoZSBkYXRhIHRvDQo+IGJlDQo+ID4gPiA+IGhhc2hlZC4N Cj4gPiA+ID4NCj4gPiA+ID4gKyAgQHBhcmFtW2luXSAgIERhdGFTaXplICAgICAgICAgICBTaXpl IG9mIERhdGEgYnVmZmVyIGluIGJ5dGVzLg0KPiA+ID4gPg0KPiA+ID4gPiArICBAcGFyYW1baW5d ICAgT3V0cHV0TGVuICAgICAgICAgIFNpemUgb2Ygb3V0cHV0IGluIGJ5dGVzLg0KPiA+ID4gPg0K PiA+ID4gPiArICBAcGFyYW1baW5dICAgTmFtZSAgICAgICAgICAgICAgIFBvaW50ZXIgdG8gdGhl IGZ1bmN0aW9uIG5hbWUgc3RyaW5nLg0KPiA+ID4gPg0KPiA+ID4gPiArICBAcGFyYW1baW5dICAg TmFtZUxlbiAgICAgICAgICAgIFNpemUgb2YgdGhlIGZ1bmN0aW9uIG5hbWUgaW4gYnl0ZXMuDQo+ ID4gPiA+DQo+ID4gPiA+ICsgIEBwYXJhbVtpbl0gICBDdXN0b21pemF0aW9uICAgICAgUG9pbnRl ciB0byB0aGUgY3VzdG9taXphdGlvbiBzdHJpbmcuDQo+ID4gPiA+DQo+ID4gPiA+ICsgIEBwYXJh bVtpbl0gICBDdXN0b21pemF0aW9uTGVuICAgU2l6ZSBvZiB0aGUgY3VzdG9taXphdGlvbiBzdHJp bmcgaW4NCj4gYnl0ZXMuDQo+ID4gPiA+DQo+ID4gPiA+ICsgIEBwYXJhbVtvdXRdICBIYXNoVmFs dWUgICAgICAgICAgUG9pbnRlciB0byBhIGJ1ZmZlciB0aGF0IHJlY2VpdmVzIHRoZQ0KPiA+ID4g Q1NIQUtFLQ0KPiA+ID4gPiAyNTYgZGlnZXN0DQo+ID4gPiA+DQo+ID4gPiA+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUuDQo+ID4gPiA+DQo+ID4gPiA+ICsNCj4gPiA+ ID4NCj4gPiA+ID4gKyAgQHJldHZhbCBUUlVFICAgQ1NIQUtFLTI1NiBkaWdlc3QgY29tcHV0YXRp b24gc3VjY2VlZGVkLg0KPiA+ID4gPg0KPiA+ID4gPiArICBAcmV0dmFsIEZBTFNFICBDU0hBS0Ut MjU2IGRpZ2VzdCBjb21wdXRhdGlvbiBmYWlsZWQuDQo+ID4gPiA+DQo+ID4gPiA+ICsgIEByZXR2 YWwgRkFMU0UgIFRoaXMgaW50ZXJmYWNlIGlzIG5vdCBzdXBwb3J0ZWQuDQo+ID4gPiA+DQo+ID4g PiA+ICsNCj4gPiA+ID4NCj4gPiA+ID4gKyoqLw0KPiA+ID4gPg0KPiA+ID4gPiArQk9PTEVBTg0K PiA+ID4gPg0KPiA+ID4gPiArRUZJQVBJDQo+ID4gPiA+DQo+ID4gPiA+ICtDU2hha2UyNTZIYXNo QWxsICgNCj4gPiA+ID4NCj4gPiA+ID4gKyAgSU4gICBDT05TVCBWT0lEICAgICAqRGF0YSwNCj4g PiA+ID4NCj4gPiA+ID4gKyAgSU4gICBVSU5UTiAgICAgICAgICBEYXRhU2l6ZSwNCj4gPiA+ID4N Cj4gPiA+ID4gKyAgSU4gICBVSU5UTiAgICAgICAgICBPdXRwdXRMZW4sDQo+ID4gPiA+DQo+ID4g PiA+ICsgIElOICAgQ09OU1QgVk9JRCAgICAgKk5hbWUsDQo+ID4gPiA+DQo+ID4gPiA+ICsgIElO ICAgVUlOVE4gICAgICAgICAgTmFtZUxlbiwNCj4gPiA+ID4NCj4gPiA+ID4gKyAgSU4gICBDT05T VCBWT0lEICAgICAqQ3VzdG9taXphdGlvbiwNCj4gPiA+ID4NCj4gPiA+ID4gKyAgSU4gICBVSU5U TiAgICAgICAgICBDdXN0b21pemF0aW9uTGVuLA0KPiA+ID4gPg0KPiA+ID4gPiArICBPVVQgIFVJ TlQ4ICAgICAgICAgICpIYXNoVmFsdWUNCj4gPiA+ID4NCj4gPiA+ID4gKyAgKQ0KPiA+ID4gPg0K PiA+ID4gPiArew0KPiA+ID4gPg0KPiA+ID4gPiArICBCT09MRUFOICAgICAgICAgIFN0YXR1czsN Cj4gPiA+ID4NCj4gPiA+ID4gKyAgS0VDQ0FLMTYwMF9DVFggICBDdHg7DQo+ID4gPiA+DQo+ID4g PiA+ICsNCj4gPiA+ID4NCj4gPiA+ID4gKyAgLy8NCj4gPiA+ID4NCj4gPiA+ID4gKyAgLy8gQ2hl Y2sgaW5wdXQgcGFyYW1ldGVycy4NCj4gPiA+ID4NCj4gPiA+ID4gKyAgLy8NCj4gPiA+ID4NCj4g PiA+ID4gKyAgaWYgKEhhc2hWYWx1ZSA9PSBOVUxMKSB7DQo+ID4gPiA+DQo+ID4gPiA+ICsgICAg cmV0dXJuIEZBTFNFOw0KPiA+ID4gPg0KPiA+ID4gPiArICB9DQo+ID4gPiA+DQo+ID4gPiA+ICsg IGlmIChEYXRhID09IE5VTEwgJiYgRGF0YVNpemUgIT0gMCkgew0KPiA+ID4gPg0KPiA+ID4gPiAr ICAgIHJldHVybiBGQUxTRTsNCj4gPiA+ID4NCj4gPiA+ID4gKyAgfQ0KPiA+ID4gPg0KPiA+ID4g PiArDQo+ID4gPiA+DQo+ID4gPiA+ICsgIFN0YXR1cyA9IENTaGFrZTI1NkluaXQgKCZDdHgsIE91 dHB1dExlbiwgTmFtZSwgTmFtZUxlbiwNCj4gPiA+ID4gKyBDdXN0b21pemF0aW9uLA0KPiA+ID4g PiBDdXN0b21pemF0aW9uTGVuKTsNCj4gPiA+ID4NCj4gPiA+ID4gKyAgaWYgKCFTdGF0dXMpIHsN Cj4gPiA+ID4NCj4gPiA+ID4gKyAgICByZXR1cm4gRkFMU0U7DQo+ID4gPiA+DQo+ID4gPiA+ICsg IH0NCj4gPiA+ID4NCj4gPiA+ID4gKw0KPiA+ID4gPg0KPiA+ID4gPiArICBTdGF0dXMgPSBDU2hh a2UyNTZVcGRhdGUgKCZDdHgsIERhdGEsIERhdGFTaXplKTsNCj4gPiA+ID4NCj4gPiA+ID4gKyAg aWYgKCFTdGF0dXMpIHsNCj4gPiA+ID4NCj4gPiA+ID4gKyAgICByZXR1cm4gRkFMU0U7DQo+ID4g PiA+DQo+ID4gPiA+ICsgIH0NCj4gPiA+ID4NCj4gPiA+ID4gKw0KPiA+ID4gPg0KPiA+ID4gPiAr ICByZXR1cm4gQ1NoYWtlMjU2RmluYWwgKCZDdHgsIEhhc2hWYWx1ZSk7DQo+ID4gPiA+DQo+ID4g PiA+ICt9DQo+ID4gPiA+DQo+ID4gPiA+IGRpZmYgLS1naXQgYS9DcnlwdG9Qa2cvTGlicmFyeS9C YXNlQ3J5cHRMaWIvSGFzaC9DcnlwdFBhcmFsbGVsSGFzaC5jDQo+ID4gPiA+IGIvQ3J5cHRvUGtn L0xpYnJhcnkvQmFzZUNyeXB0TGliL0hhc2gvQ3J5cHRQYXJhbGxlbEhhc2guYw0KPiA+ID4gPiBu ZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiA+ID4gPiBpbmRleCAwMDAwMDAwMDAwLi4zZWFhN2MyY2Vi DQo+ID4gPiA+IC0tLSAvZGV2L251bGwNCj4gPiA+ID4gKysrIGIvQ3J5cHRvUGtnL0xpYnJhcnkv QmFzZUNyeXB0TGliL0hhc2gvQ3J5cHRQYXJhbGxlbEhhc2guYw0KPiA+ID4gPiBAQCAtMCwwICsx LDI3NSBAQA0KPiA+ID4gPiArLyoqIEBmaWxlDQo+ID4gPiA+DQo+ID4gPiA+ICsgIFBhcmFsbGVs SGFzaCBJbXBsZW1lbnRhdGlvbi4NCj4gPiA+ID4NCj4gPiA+ID4gKw0KPiA+ID4gPg0KPiA+ID4g PiArQ29weXJpZ2h0IChjKSAyMDIyLCBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNl cnZlZC48QlI+DQo+ID4gPiA+DQo+ID4gPiA+ICtTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNE LTItQ2xhdXNlLVBhdGVudA0KPiA+ID4gPg0KPiA+ID4gPiArDQo+ID4gPiA+DQo+ID4gPiA+ICsq Ki8NCj4gPiA+ID4NCj4gPiA+ID4gKw0KPiA+ID4gPg0KPiA+ID4gPiArI2luY2x1ZGUgIkludGVy bmFsQ3J5cHRMaWIuaCINCj4gPiA+ID4NCj4gPiA+ID4gKyNpbmNsdWRlIDxMaWJyYXJ5XFBjZExp Yi5oPg0KPiA+ID4gPg0KPiA+ID4gPiArI2luY2x1ZGUgPExpYnJhcnlcU3luY2hyb25pemF0aW9u TGliLmg+DQo+ID4gPiA+DQo+ID4gPiA+ICsjaW5jbHVkZSA8TGlicmFyeVxNbVNlcnZpY2VzVGFi bGVMaWIuaD4NCj4gPiA+ID4NCj4gPiA+ID4gKw0KPiA+ID4gPg0KPiA+ID4gPiArDQo+ID4gPiA+ DQo+ID4gPiA+ICtVSU5UMTYgICAgICAgIG1CbG9ja051bTsNCj4gPiA+ID4NCj4gPiA+ID4gK1VJ TlROICAgICAgICBtQmxvY2tTaXplOw0KPiA+ID4gPg0KPiA+ID4gPiArVUlOVE4gICAgICAgIG1M YXN0QmxvY2tTaXplOw0KPiA+ID4gPg0KPiA+ID4gPiArVUlOVDggICAgICAgICptSW5wdXQ7DQo+ ID4gPiA+DQo+ID4gPiA+ICtVSU5UTiAgICAgICAgbUJsb2NrUmVzdWx0U2l6ZTsNCj4gPiA+ID4N Cj4gPiA+ID4gK1VJTlQ4ICAgICAgICAqbUJsb2NrSGFzaFJlc3VsdDsNCj4gPiA+ID4NCj4gPiA+ ID4gK0JPT0xFQU4gICAgICAqbUJsb2NrSXNDb21wbGV0ZWQ7DQo+ID4gPiA+DQo+ID4gPiA+ICtT UElOX0xPQ0sgICAgKm1TcGluTG9ja0xpc3Q7DQo+ID4gPiA+DQo+ID4gPiA+ICsNCj4gPiA+ID4N Cj4gPiA+ID4gK1VJTlROIExlZnRFbmNvZGUgKE9VVCBVSU5UOCAqRW5jYnVmLCBJTiBVSU5UTiBW YWx1ZSk7DQo+ID4gPiA+DQo+ID4gPiA+ICtVSU5UTiBSaWdodEVuY29kZSAoT1VUIFVJTlQ4ICpF bmNidWYsIElOIFVJTlROIFZhbHVlKTsNCj4gPiA+ID4NCj4gPiA+ID4gKw0KPiA+ID4gPg0KPiA+ ID4gPiArQk9PTEVBTg0KPiA+ID4gPg0KPiA+ID4gPiArRUZJQVBJDQo+ID4gPiA+DQo+ID4gPiA+ ICtDU2hha2UyNTZIYXNoQWxsICgNCj4gPiA+ID4NCj4gPiA+ID4gKyAgSU4gICBDT05TVCBWT0lE ICAgICAqRGF0YSwNCj4gPiA+ID4NCj4gPiA+ID4gKyAgSU4gICBVSU5UTiAgICAgICAgICBEYXRh U2l6ZSwNCj4gPiA+ID4NCj4gPiA+ID4gKyAgSU4gICBVSU5UTiAgICAgICAgICBPdXRwdXRMZW4s DQo+ID4gPiA+DQo+ID4gPiA+ICsgIElOICAgQ09OU1QgVk9JRCAgICAgKk5hbWUsDQo+ID4gPiA+ DQo+ID4gPiA+ICsgIElOICAgVUlOVE4gICAgICAgICAgTmFtZUxlbiwNCj4gPiA+ID4NCj4gPiA+ ID4gKyAgSU4gICBDT05TVCBWT0lEICAgICAqQ3VzdG9taXphdGlvbiwNCj4gPiA+ID4NCj4gPiA+ ID4gKyAgSU4gICBVSU5UTiAgICAgICAgICBDdXN0b21pemF0aW9uTGVuLA0KPiA+ID4gPg0KPiA+ ID4gPiArICBPVVQgIFVJTlQ4ICAgICAgICAgICpIYXNoVmFsdWUNCj4gPiA+ID4NCj4gPiA+ID4g KyAgKTsNCj4gPiA+ID4NCj4gPiA+ID4gKw0KPiA+ID4gPg0KPiA+ID4gPiArVk9JRA0KPiA+ID4g Pg0KPiA+ID4gPiArRUZJQVBJDQo+ID4gPiA+DQo+ID4gPiA+ICtQYXJhbGxlbEhhc2hBcEV4ZWN1 dGUgKA0KPiA+ID4gPg0KPiA+ID4gPiArICBJTiBWT0lEICAgICAgICAgICpQcm9jZWR1cmVBcmd1 bWVudA0KPiA+ID4gPg0KPiA+ID4gPiArICApDQo+ID4gPiA+DQo+ID4gPiA+ICt7DQo+ID4gPiA+ DQo+ID4gPiA+ICsgIFVJTlROICAgICAgICAgSW5kZXg7DQo+ID4gPiA+DQo+ID4gPiA+ICsgIEJP T0xFQU4gICAgICAgU3RhdHVzOw0KPiA+ID4gPg0KPiA+ID4gPiArDQo+ID4gPiA+DQo+ID4gPiA+ ICsgIGZvciAoSW5kZXggPSAwOyBJbmRleCA8IG1CbG9ja051bTsgSW5kZXgrKykgew0KPiA+ID4g Pg0KPiA+ID4gPiArICAgIGlmIChBY3F1aXJlU3BpbkxvY2tPckZhaWwgKCZtU3BpbkxvY2tMaXN0 W0luZGV4XSkpIHsNCj4gPiA+ID4NCj4gPiA+ID4gKyAgICAgIC8vDQo+ID4gPiA+DQo+ID4gPiA+ ICsgICAgICAvLyBDb21wbGV0ZWQsIHRyeSBuZXh0IG9uZS4NCj4gPiA+ID4NCj4gPiA+ID4gKyAg ICAgIC8vDQo+ID4gPiA+DQo+ID4gPiA+ICsgICAgICBpZiAobUJsb2NrSXNDb21wbGV0ZWRbSW5k ZXhdKQ0KPiA+ID4gPg0KPiA+ID4gPiArICAgICAgew0KPiA+ID4gPg0KPiA+ID4gPiArICAgICAg ICBSZWxlYXNlU3BpbkxvY2sgKCZtU3BpbkxvY2tMaXN0W0luZGV4XSk7DQo+ID4gPiA+DQo+ID4g PiA+ICsgICAgICAgIGNvbnRpbnVlOw0KPiA+ID4gPg0KPiA+ID4gPiArICAgICAgfQ0KPiA+ID4g Pg0KPiA+ID4gPiArICAgICAgLy8NCj4gPiA+ID4NCj4gPiA+ID4gKyAgICAgIC8vIENhbGN1bGF0 ZSBDU2hha2UyNTYgZm9yIHRoaXMgYmxvY2suDQo+ID4gPiA+DQo+ID4gPiA+ICsgICAgICAvLw0K PiA+ID4gPg0KPiA+ID4gPiArICAgICAgU3RhdHVzID0gQ1NoYWtlMjU2SGFzaEFsbCAoDQo+ID4g PiA+DQo+ID4gPiA+ICsgICAgICAgICAgICAgICAgIG1JbnB1dCArIEluZGV4ICogbUJsb2NrU2l6 ZSwNCj4gPiA+ID4NCj4gPiA+ID4gKyAgICAgICAgICAgICAgICAgKEluZGV4ID09IChtQmxvY2tO dW0gLSAxKSkgPyBtTGFzdEJsb2NrU2l6ZSA6DQo+ID4gPiA+ICsgbUJsb2NrU2l6ZSwNCj4gPiA+ ID4NCj4gPiA+ID4gKyAgICAgICAgICAgICAgICAgbUJsb2NrUmVzdWx0U2l6ZSwNCj4gPiA+ID4N Cj4gPiA+ID4gKyAgICAgICAgICAgICAgICAgTlVMTCwNCj4gPiA+ID4NCj4gPiA+ID4gKyAgICAg ICAgICAgICAgICAgMCwNCj4gPiA+ID4NCj4gPiA+ID4gKyAgICAgICAgICAgICAgICAgTlVMTCwN Cj4gPiA+ID4NCj4gPiA+ID4gKyAgICAgICAgICAgICAgICAgMCwNCj4gPiA+ID4NCj4gPiA+ID4g KyAgICAgICAgICAgICAgICAgbUJsb2NrSGFzaFJlc3VsdCArIEluZGV4ICogbUJsb2NrUmVzdWx0 U2l6ZQ0KPiA+ID4gPg0KPiA+ID4gPiArICAgICAgICAgICAgICAgICApOw0KPiA+ID4gPg0KPiA+ ID4gPiArICAgICAgaWYgKCFFRklfRVJST1IgKFN0YXR1cykpew0KPiA+ID4gPg0KPiA+ID4gPiAr ICAgICAgICBtQmxvY2tJc0NvbXBsZXRlZFtJbmRleF0gPSBUUlVFOw0KPiA+ID4gPg0KPiA+ID4g PiArICAgICAgfQ0KPiA+ID4gPg0KPiA+ID4gPiArICAgICAgUmVsZWFzZVNwaW5Mb2NrICgmbVNw aW5Mb2NrTGlzdFtJbmRleF0pOw0KPiA+ID4gPg0KPiA+ID4gPiArICAgIH0NCj4gPiA+ID4NCj4g PiA+ID4gKyAgfQ0KPiA+ID4gPg0KPiA+ID4gPiArfQ0KPiA+ID4gPg0KPiA+ID4gPiArDQo+ID4g PiA+DQo+ID4gPiA+ICsvKioNCj4gPiA+ID4NCj4gPiA+ID4gKyAgUGFyYWxsZWwgaGFzaCBmdW5j dGlvbiBQYXJhbGxlbEhhc2gyNTYsIGFzIGRlZmluZWQgaW4gTklTVCdzDQo+ID4gPiA+ICsgU3Bl Y2lhbCBQdWJsaWNhdGlvbg0KPiA+ID4gPiA4MDAtMTg1LA0KPiA+ID4gPg0KPiA+ID4gPiArICBw dWJsaXNoZWQgRGVjZW1iZXIgMjAxNi4NCj4gPiA+ID4NCj4gPiA+ID4gKw0KPiA+ID4gPg0KPiA+ ID4gPiArICBAcGFyYW0gIElucHV0W2luXSAgICAgICAgICAgIFBvaW50ZXIgdG8gdGhlIGlucHV0 IG1lc3NhZ2UgKFgpLg0KPiA+ID4gPg0KPiA+ID4gPiArICBAcGFyYW0gIElucHV0Qnl0ZUxlbltp bl0gICAgIFRoZSBudW1iZXIoPjApIG9mIGlucHV0IGJ5dGVzIHByb3ZpZGVkDQo+IGZvcg0KPiA+ ID4gdGhlDQo+ID4gPiA+IGlucHV0IGRhdGEuDQo+ID4gPiA+DQo+ID4gPiA+ICsgIEBwYXJhbSAg T3V0cHV0W291dF0gICAgICAgICAgUG9pbnRlciB0byB0aGUgb3V0cHV0IGJ1ZmZlci4NCj4gPiA+ ID4NCj4gPiA+ID4gKyAgQHBhcmFtICBPdXRwdXRCeXRlTGVuW2luXSAgICBUaGUgZGVzaXJlZCBu dW1iZXIgb2Ygb3V0cHV0IGJ5dGVzDQo+IChMKS4NCj4gPiA+ID4NCj4gPiA+ID4gKyAgQHBhcmFt ICBDdXN0b21pemF0aW9uW2luXSAgICBQb2ludGVyIHRvIHRoZSBjdXN0b21pemF0aW9uIHN0cmlu ZyAoUykuDQo+ID4gPiA+DQo+ID4gPiA+ICsgIEBwYXJhbSAgQ3VzdG9tQnl0ZUxlbltpbl0gICAg VGhlIGxlbmd0aCBvZiB0aGUgY3VzdG9taXphdGlvbiBzdHJpbmcNCj4gaW4NCj4gPiA+IGJ5dGVz Lg0KPiA+ID4gPg0KPiA+ID4gPiArDQo+ID4gPiA+DQo+ID4gPiA+ICsgIEByZXR2YWwgVFJVRSAg IFBhcmFsbGVsSGFzaDI1NiBkaWdlc3QgY29tcHV0YXRpb24gc3VjY2VlZGVkLg0KPiA+ID4gPg0K PiA+ID4gPiArICBAcmV0dmFsIEZBTFNFICBQYXJhbGxlbEhhc2gyNTYgZGlnZXN0IGNvbXB1dGF0 aW9uIGZhaWxlZC4NCj4gPiA+ID4NCj4gPiA+ID4gKyAgQHJldHZhbCBGQUxTRSAgVGhpcyBpbnRl cmZhY2UgaXMgbm90IHN1cHBvcnRlZC4NCj4gPiA+ID4NCj4gPiA+ID4gKw0KPiA+ID4gPg0KPiA+ ID4gPiArKi8NCj4gPiA+ID4NCj4gPiA+ID4gK0JPT0xFQU4NCj4gPiA+ID4NCj4gPiA+ID4gK0VG SUFQSQ0KPiA+ID4gPg0KPiA+ID4gPiArUGFyYWxsZWxIYXNoMjU2SGFzaEFsbCAoDQo+ID4gPiA+ DQo+ID4gPiA+ICsgIElOIENPTlNUIFZPSUQgICAgICAgICAgICAqSW5wdXQsDQo+ID4gPiA+DQo+ ID4gPiA+ICsgIElOICAgICAgIFVJTlROICAgICAgICAgICBJbnB1dEJ5dGVMZW4sDQo+ID4gPiA+ DQo+ID4gPiA+ICsgIE9VVCAgICAgIFZPSUQgICAgICAgICAgICAqT3V0cHV0LA0KPiA+ID4gPg0K PiA+ID4gPiArICBJTiAgICAgICBVSU5UTiAgICAgICAgICAgT3V0cHV0Qnl0ZUxlbiwNCj4gPiA+ ID4NCj4gPiA+ID4gKyAgSU4gQ09OU1QgVk9JRCAgICAgICAgICAgICpDdXN0b21pemF0aW9uLA0K PiA+ID4gPg0KPiA+ID4gPiArICBJTiAgICAgICBVSU5UTiAgICAgICAgICAgQ3VzdG9tQnl0ZUxl bg0KPiA+ID4gPg0KPiA+ID4gPiArICApDQo+ID4gPiA+DQo+ID4gPiA+ICsNCj4gPiA+ID4NCj4g PiA+ID4gK3sNCj4gPiA+ID4NCj4gPiA+ID4gKyAgVUlOVDggICAgICAgIEVuY0J1ZkJbc2l6ZW9m KFVJTlROKSsxXTsNCj4gPiA+ID4NCj4gPiA+ID4gKyAgVUlOVE4gICAgICAgIEVuY1NpemVCOw0K PiA+ID4gPg0KPiA+ID4gPiArICBVSU5UOCAgICAgICAgRW5jQnVmTltzaXplb2YoVUlOVE4pKzFd Ow0KPiA+ID4gPg0KPiA+ID4gPiArICBVSU5UTiAgICAgICAgRW5jU2l6ZU47DQo+ID4gPiA+DQo+ ID4gPiA+ICsgIFVJTlQ4ICAgICAgICBFbmNCdWZMW3NpemVvZihVSU5UTikrMV07DQo+ID4gPiA+ DQo+ID4gPiA+ICsgIFVJTlROICAgICAgICBFbmNTaXplTDsNCj4gPiA+ID4NCj4gPiA+ID4gKyAg VUlOVE4gICAgICAgIEluZGV4Ow0KPiA+ID4gPg0KPiA+ID4gPiArICBVSU5UOCAgICAgICAgKkNv bWJpbmVkSW5wdXQ7DQo+ID4gPiA+DQo+ID4gPiA+ICsgIFVJTlROICAgICAgICBDb21iaW5lZElu cHV0U2l6ZTsNCj4gPiA+ID4NCj4gPiA+ID4gKyAgRUZJX1NUQVRVUyAgIFN0YXR1czsNCj4gPiA+ ID4NCj4gPiA+ID4gKyAgVUlOVE4gICAgICAgIFN0YXJ0ZWRBcE51bTsNCj4gPiA+ID4NCj4gPiA+ ID4gKyAgQk9PTEVBTiAgICAgIEFsbENvbXBsZXRlZDsNCj4gPiA+ID4NCj4gPiA+ID4gKyAgVUlO VE4gICAgICAgIE9mZnNldDsNCj4gPiA+ID4NCj4gPiA+ID4gKyAgQk9PTEVBTiAgICAgIFJldHVy blZhbHVlOw0KPiA+ID4gPg0KPiA+ID4gPiArDQo+ID4gPiA+DQo+ID4gPiA+ICsgIGlmIChJbnB1 dEJ5dGVMZW4gPT0gMCB8fCBPdXRwdXRCeXRlTGVuID09IDApIHsNCj4gPiA+ID4NCj4gPiA+ID4g KyAgICByZXR1cm4gRkFMU0U7DQo+ID4gPiA+DQo+ID4gPiA+ICsgIH0NCj4gPiA+ID4NCj4gPiA+ ID4gKw0KPiA+ID4gPg0KPiA+ID4gPiArICBpZiAoSW5wdXQgPT0gTlVMTCB8fCBPdXRwdXQgPT0g TlVMTCl7DQo+ID4gPiA+DQo+ID4gPiA+ICsgICAgcmV0dXJuIEZBTFNFOw0KPiA+ID4gPg0KPiA+ ID4gPiArICB9DQo+ID4gPiA+DQo+ID4gPiA+ICsNCj4gPiA+ID4NCj4gPiA+ID4gKyAgaWYgKEN1 c3RvbUJ5dGVMZW4gIT0gMCAmJiBDdXN0b21pemF0aW9uID09IE5VTEwpew0KPiA+ID4gPg0KPiA+ ID4gPiArICAgIHJldHVybiBGQUxTRTsNCj4gPiA+ID4NCj4gPiA+ID4gKyAgfQ0KPiA+ID4gPg0K PiA+ID4gPiArDQo+ID4gPiA+DQo+ID4gPiA+ICsgIC8vDQo+ID4gPiA+DQo+ID4gPiA+ICsgIC8v IEdldCBCbG9jayBudW1iZXIgbi4NCj4gPiA+ID4NCj4gPiA+ID4gKyAgLy8NCj4gPiA+ID4NCj4g PiA+ID4gKyAgbUJsb2NrTnVtID0gUGNkR2V0MTYgKFBjZFBhcmFsbGVsSGFzaEJsb2NrTnVtYmVy KTsNCj4gPiA+ID4NCj4gPiA+ID4gKw0KPiA+ID4gPg0KPiA+ID4gPiArICBpZiAobUJsb2NrTnVt IDwgMSB8fCBJbnB1dEJ5dGVMZW4gPCBtQmxvY2tOdW0gLSAxKXsNCj4gPiA+ID4NCj4gPiA+ID4g KyAgICByZXR1cm4gRkFMU0U7DQo+ID4gPiA+DQo+ID4gPiA+ICsgIH0NCj4gPiA+ID4NCj4gPiA+ ID4gKw0KPiA+ID4gPg0KPiA+ID4gPiArICAvLw0KPiA+ID4gPg0KPiA+ID4gPiArICAvLyBTZXQg aGFzaCByZXN1bHQgc2l6ZSBvZiBlYWNoIGJsb2NrIGluIGJ5dGVzLg0KPiA+ID4gPg0KPiA+ID4g PiArICAvLw0KPiA+ID4gPg0KPiA+ID4gPiArICBtQmxvY2tSZXN1bHRTaXplID0gT3V0cHV0Qnl0 ZUxlbjsNCj4gPiA+ID4NCj4gPiA+ID4gKw0KPiA+ID4gPg0KPiA+ID4gPiArICAvLw0KPiA+ID4g Pg0KPiA+ID4gPiArICAvLyBjYWxjdWxhdGUgdGhlIGJsb2NrIGJ5dGUgbGVuZ3RoIEIuDQo+ID4g PiA+DQo+ID4gPiA+ICsgIC8vDQo+ID4gPiA+DQo+ID4gPiA+ICsgIG1CbG9ja1NpemUgPSBJbnB1 dEJ5dGVMZW4gJSBtQmxvY2tOdW0gPT0gMCA/IElucHV0Qnl0ZUxlbiAvDQo+ID4gPiBtQmxvY2tO dW0gOg0KPiA+ID4gPiBJbnB1dEJ5dGVMZW4gLyAobUJsb2NrTnVtIC0gMSk7DQo+ID4gPiA+DQo+ ID4gPiA+ICsNCj4gPiA+ID4NCj4gPiA+ID4gKyAgLy8NCj4gPiA+ID4NCj4gPiA+ID4gKyAgLy8g RW5jb2RlIEIsIG4sIEwgdG8gc3RyaW5nIGFuZCByZWNvcmQgc2l6ZS4NCj4gPiA+ID4NCj4gPiA+ ID4gKyAgLy8NCj4gPiA+ID4NCj4gPiA+ID4gKyAgRW5jU2l6ZUIgPSBMZWZ0RW5jb2RlICAoRW5j QnVmQiwgbUJsb2NrU2l6ZSk7DQo+ID4gPiA+DQo+ID4gPiA+ICsgIEVuY1NpemVOID0gUmlnaHRF bmNvZGUgKEVuY0J1Zk4sIG1CbG9ja051bSk7DQo+ID4gPiA+DQo+ID4gPiA+ICsgIEVuY1NpemVM ID0gUmlnaHRFbmNvZGUgKEVuY0J1ZkwsIE91dHB1dEJ5dGVMZW4gKiBDSEFSX0JJVCk7DQo+ID4g PiA+DQo+ID4gPiA+ICsNCj4gPiA+ID4NCj4gPiA+ID4gKyAgLy8NCj4gPiA+ID4NCj4gPiA+ID4g KyAgLy8gQWxsb2NhdGUgYnVmZmVyIGZvciBjb21iaW5lZCBpbnB1dCAobmV3WCksIEJsb2NrIGNv bXBsZXRlZCBmbGFnDQo+ID4gPiA+ICsgYW5kDQo+ID4gPiA+IFNwaW5Mb2NrLg0KPiA+ID4gPg0K PiA+ID4gPiArICAvLw0KPiA+ID4gPg0KPiA+ID4gPiArICBDb21iaW5lZElucHV0U2l6ZSA9IEVu Y1NpemVCICsgRW5jU2l6ZU4gKyBFbmNTaXplTCArIG1CbG9ja051bSAqDQo+ID4gPiA+IG1CbG9j a1Jlc3VsdFNpemU7DQo+ID4gPiA+DQo+ID4gPiA+ICsgIENvbWJpbmVkSW5wdXQgPSBBbGxvY2F0 ZVplcm9Qb29sIChDb21iaW5lZElucHV0U2l6ZSk7DQo+ID4gPiA+DQo+ID4gPiA+ICsgIG1CbG9j a0lzQ29tcGxldGVkID0gQWxsb2NhdGVaZXJvUG9vbCAobUJsb2NrTnVtICogc2l6ZW9mDQo+ID4g PiA+ICsgKEJPT0xFQU4pKTsNCj4gPiA+ID4NCj4gPiA+ID4gKyAgbVNwaW5Mb2NrTGlzdCA9IEFs bG9jYXRlUG9vbCAobUJsb2NrTnVtICogc2l6ZW9mIChTUElOX0xPQ0spKTsNCj4gPiA+ID4NCj4g PiA+ID4gKyAgaWYgKENvbWJpbmVkSW5wdXQgPT0gTlVMTCB8fCBtQmxvY2tJc0NvbXBsZXRlZCA9 PSBOVUxMIHx8DQo+ID4gPiA+ICsgbVNwaW5Mb2NrTGlzdA0KPiA+ID4gPiA9PSBOVUxMKSB7DQo+ ID4gPiA+DQo+ID4gPiA+ICsgICAgUmV0dXJuVmFsdWUgPSBGQUxTRTsNCj4gPiA+ID4NCj4gPiA+ ID4gKyAgICBnb3RvIEV4aXQ7DQo+ID4gPiA+DQo+ID4gPiA+ICsgIH0NCj4gPiA+ID4NCj4gPiA+ ID4gKw0KPiA+ID4gPg0KPiA+ID4gPiArICAvLw0KPiA+ID4gPg0KPiA+ID4gPiArICAvLyBGaWxs IExlZnRFbmNvZGUoQikuDQo+ID4gPiA+DQo+ID4gPiA+ICsgIC8vDQo+ID4gPiA+DQo+ID4gPiA+ ICsgIENvcHlNZW0gKENvbWJpbmVkSW5wdXQsIEVuY0J1ZkIsIEVuY1NpemVCKTsNCj4gPiA+ID4N Cj4gPiA+ID4gKw0KPiA+ID4gPg0KPiA+ID4gPiArICAvLw0KPiA+ID4gPg0KPiA+ID4gPiArICAv LyBQcmVwYXJlIGZvciBwYXJhbGxlbCBoYXNoLg0KPiA+ID4gPg0KPiA+ID4gPiArICAvLw0KPiA+ ID4gPg0KPiA+ID4gPiArICBtQmxvY2tIYXNoUmVzdWx0ID0gQ29tYmluZWRJbnB1dCArIEVuY1Np emVCOw0KPiA+ID4gPg0KPiA+ID4gPiArICBtSW5wdXQgPSBJbnB1dDsNCj4gPiA+ID4NCj4gPiA+ ID4gKyAgbUxhc3RCbG9ja1NpemUgPSBJbnB1dEJ5dGVMZW4gJSBtQmxvY2tTaXplID09IDAgPyBt QmxvY2tTaXplIDoNCj4gPiA+ID4gSW5wdXRCeXRlTGVuICUgbUJsb2NrU2l6ZTsNCj4gPiA+ID4N Cj4gPiA+ID4gKw0KPiA+ID4gPg0KPiA+ID4gPiArICAvLw0KPiA+ID4gPg0KPiA+ID4gPiArICAv LyBJbml0aWFsaXplIFNwaW5Mb2NrIGZvciBlYWNoIHJlc3VsdCBibG9jay4NCj4gPiA+ID4NCj4g PiA+ID4gKyAgLy8NCj4gPiA+ID4NCj4gPiA+ID4gKyAgZm9yIChJbmRleCA9IDA7IEluZGV4IDwg bUJsb2NrTnVtOyBJbmRleCsrKSB7DQo+ID4gPiA+DQo+ID4gPiA+ICsgICAgSW5pdGlhbGl6ZVNw aW5Mb2NrICgmbVNwaW5Mb2NrTGlzdFtJbmRleF0pOw0KPiA+ID4gPg0KPiA+ID4gPiArICB9DQo+ ID4gPiA+DQo+ID4gPiA+ICsNCj4gPiA+ID4NCj4gPiA+ID4gKyAgLy8NCj4gPiA+ID4NCj4gPiA+ ID4gKyAgLy8gRGlzcGF0Y2ggYmxvY2tsaXN0IHRvIGVhY2ggQVAuDQo+ID4gPiA+DQo+ID4gPiA+ ICsgIC8vDQo+ID4gPiA+DQo+ID4gPiA+ICsgIFN0YXJ0ZWRBcE51bSA9IDA7DQo+ID4gPiA+DQo+ ID4gPiA+ICsgIGZvciAoSW5kZXggPSAwOyBJbmRleCA8IGdNbXN0LT5OdW1iZXJPZkNwdXM7IElu ZGV4KyspIHsNCj4gPiA+ID4NCj4gPiA+ID4gKyAgICBpZiAoSW5kZXggIT0gZ01tc3QtPkN1cnJl bnRseUV4ZWN1dGluZ0NwdSkgew0KPiA+ID4gPg0KPiA+ID4gPiArICAgICAgU3RhdHVzID0gZ01t c3QtPk1tU3RhcnR1cFRoaXNBcCAoUGFyYWxsZWxIYXNoQXBFeGVjdXRlLCBJbmRleCwNCj4gPiA+ ID4gKyBOVUxMKTsNCj4gPiA+ID4NCj4gPiA+ID4gKyAgICAgIGlmICghRUZJX0VSUk9SIChTdGF0 dXMpKSB7DQo+ID4gPiA+DQo+ID4gPiA+ICsgICAgICAgIFN0YXJ0ZWRBcE51bSsrOw0KPiA+ID4g Pg0KPiA+ID4gPiArICAgICAgfQ0KPiA+ID4gPg0KPiA+ID4gPiArICAgIH0NCj4gPiA+ID4NCj4g PiA+ID4gKyAgfQ0KPiA+ID4gPg0KPiA+ID4gPiArDQo+ID4gPiA+DQo+ID4gPiA+ICsgIC8vDQo+ ID4gPiA+DQo+ID4gPiA+ICsgIC8vIFdhaXQgdW50aWwgYWxsIGJsb2NrIGhhc2ggY29tcGxldGVk Lg0KPiA+ID4gPg0KPiA+ID4gPiArICAvLw0KPiA+ID4gPg0KPiA+ID4gPiArICBkbyB7DQo+ID4g PiA+DQo+ID4gPiA+ICsgICAgQWxsQ29tcGxldGVkID0gVFJVRTsNCj4gPiA+ID4NCj4gPiA+ID4g KyAgICBmb3IgKEluZGV4ID0gMDsgSW5kZXggPCBtQmxvY2tOdW07IEluZGV4KyspIHsNCj4gPiA+ ID4NCj4gPiA+ID4gKyAgICAgIGlmIChBY3F1aXJlU3BpbkxvY2tPckZhaWwgKCZtU3BpbkxvY2tM aXN0W0luZGV4XSkpIHsNCj4gPiA+ID4NCj4gPiA+ID4gKyAgICAgICAgaWYgKCFtQmxvY2tJc0Nv bXBsZXRlZFtJbmRleF0pIHsNCj4gPiA+ID4NCj4gPiA+ID4gKyAgICAgICAgICBBbGxDb21wbGV0 ZWQgPSBGQUxTRTsNCj4gPiA+ID4NCj4gPiA+ID4gKyAgICAgICAgICBSZXR1cm5WYWx1ZSA9IENT aGFrZTI1Nkhhc2hBbGwgKA0KPiA+ID4gPg0KPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAg bUlucHV0ICsgSW5kZXggKiBtQmxvY2tTaXplLA0KPiA+ID4gPg0KPiA+ID4gPiArICAgICAgICAg ICAgICAgICAgICAgKEluZGV4ID09IChtQmxvY2tOdW0gLSAxKSkgPyBtTGFzdEJsb2NrU2l6ZSA6 DQo+ID4gPiA+ICsgbUJsb2NrU2l6ZSwNCj4gPiA+ID4NCj4gPiA+ID4gKyAgICAgICAgICAgICAg ICAgICAgIG1CbG9ja1Jlc3VsdFNpemUsDQo+ID4gPiA+DQo+ID4gPiA+ICsgICAgICAgICAgICAg ICAgICAgICBOVUxMLA0KPiA+ID4gPg0KPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgMCwN Cj4gPiA+ID4NCj4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgIE5VTEwsDQo+ID4gPiA+DQo+ ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAwLA0KPiA+ID4gPg0KPiA+ID4gPiArICAgICAg ICAgICAgICAgICAgICAgbUJsb2NrSGFzaFJlc3VsdCArIEluZGV4ICogbUJsb2NrUmVzdWx0U2l6 ZQ0KPiA+ID4gPg0KPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgKTsNCj4gPiA+ID4NCj4g PiA+ID4gKyAgICAgICAgICBpZiAoUmV0dXJuVmFsdWUpew0KPiA+ID4gPg0KPiA+ID4gPiArICAg ICAgICAgICAgbUJsb2NrSXNDb21wbGV0ZWRbSW5kZXhdID0gVFJVRTsNCj4gPiA+ID4NCj4gPiA+ ID4gKyAgICAgICAgICB9DQo+ID4gPiA+DQo+ID4gPiA+ICsgICAgICAgICAgUmVsZWFzZVNwaW5M b2NrICgmbVNwaW5Mb2NrTGlzdFtJbmRleF0pOw0KPiA+ID4gPg0KPiA+ID4gPiArICAgICAgICAg IGJyZWFrOw0KPiA+ID4gPg0KPiA+ID4gPiArICAgICAgICB9DQo+ID4gPiA+DQo+ID4gPiA+ICsg ICAgICAgIFJlbGVhc2VTcGluTG9jayAoJm1TcGluTG9ja0xpc3RbSW5kZXhdKTsNCj4gPiA+ID4N Cj4gPiA+ID4gKyAgICAgIH0gZWxzZSB7DQo+ID4gPiA+DQo+ID4gPiA+ICsgICAgICAgIEFsbENv bXBsZXRlZCA9IEZBTFNFOw0KPiA+ID4gPg0KPiA+ID4gPiArICAgICAgICBicmVhazsNCj4gPiA+ ID4NCj4gPiA+ID4gKyAgICAgIH0NCj4gPiA+ID4NCj4gPiA+ID4gKyAgICB9DQo+ID4gPiA+DQo+ ID4gPiA+ICsgIH0gd2hpbGUgKCFBbGxDb21wbGV0ZWQpOw0KPiA+ID4gPg0KPiA+ID4gPiArDQo+ ID4gPiA+DQo+ID4gPiA+ICsgIC8vDQo+ID4gPiA+DQo+ID4gPiA+ICsgIC8vIEZpbGwgTGVmdEVu Y29kZShuKS4NCj4gPiA+ID4NCj4gPiA+ID4gKyAgLy8NCj4gPiA+ID4NCj4gPiA+ID4gKyAgT2Zm c2V0ID0gRW5jU2l6ZUIgKyBtQmxvY2tOdW0gKiBtQmxvY2tSZXN1bHRTaXplOw0KPiA+ID4gPg0K PiA+ID4gPiArICBDb3B5TWVtIChDb21iaW5lZElucHV0ICsgT2Zmc2V0LCBFbmNCdWZOLCBFbmNT aXplTik7DQo+ID4gPiA+DQo+ID4gPiA+ICsNCj4gPiA+ID4NCj4gPiA+ID4gKyAgLy8NCj4gPiA+ ID4NCj4gPiA+ID4gKyAgLy8gRmlsbCBMZWZ0RW5jb2RlKEwpLg0KPiA+ID4gPg0KPiA+ID4gPiAr ICAvLw0KPiA+ID4gPg0KPiA+ID4gPiArICBPZmZzZXQgKz0gRW5jU2l6ZU47DQo+ID4gPiA+DQo+ ID4gPiA+ICsgIENvcHlNZW0gKENvbWJpbmVkSW5wdXQgKyBPZmZzZXQsIEVuY0J1ZkwsIEVuY1Np emVMKTsNCj4gPiA+ID4NCj4gPiA+ID4gKw0KPiA+ID4gPg0KPiA+ID4gPiArICBSZXR1cm5WYWx1 ZSA9IENTaGFrZTI1Nkhhc2hBbGwgKA0KPiA+ID4gPg0KPiA+ID4gPiArICAgICAgICAgICAgICAg ICAgQ29tYmluZWRJbnB1dCwNCj4gPiA+ID4NCj4gPiA+ID4gKyAgICAgICAgICAgICAgICAgIENv bWJpbmVkSW5wdXRTaXplLA0KPiA+ID4gPg0KPiA+ID4gPiArICAgICAgICAgICAgICAgICAgT3V0 cHV0Qnl0ZUxlbiwNCj4gPiA+ID4NCj4gPiA+ID4gKyAgICAgICAgICAgICAgICAgIFBBUkFMTEVM SEFTSF9DVVNUT01JWkFUSU9OLA0KPiA+ID4gPg0KPiA+ID4gPiArICAgICAgICAgICAgICAgICAg QXNjaWlTdHJMZW4oUEFSQUxMRUxIQVNIX0NVU1RPTUlaQVRJT04pLA0KPiA+ID4gPg0KPiA+ID4g PiArICAgICAgICAgICAgICAgICAgQ3VzdG9taXphdGlvbiwNCj4gPiA+ID4NCj4gPiA+ID4gKyAg ICAgICAgICAgICAgICAgIEN1c3RvbUJ5dGVMZW4sDQo+ID4gPiA+DQo+ID4gPiA+ICsgICAgICAg ICAgICAgICAgICBPdXRwdXQNCj4gPiA+ID4NCj4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICk7 DQo+ID4gPiA+DQo+ID4gPiA+ICsNCj4gPiA+ID4NCj4gPiA+ID4gK0V4aXQ6DQo+ID4gPiA+DQo+ ID4gPiA+ICsgIFplcm9NZW0gKENvbWJpbmVkSW5wdXQsIENvbWJpbmVkSW5wdXRTaXplKTsNCj4g PiA+ID4NCj4gPiA+ID4gKw0KPiA+ID4gPg0KPiA+ID4gPiArICBpZiAoQ29tYmluZWRJbnB1dCAh PSBOVUxMKXsNCj4gPiA+ID4NCj4gPiA+ID4gKyAgICBGcmVlUG9vbCAoQ29tYmluZWRJbnB1dCk7 DQo+ID4gPiA+DQo+ID4gPiA+ICsgIH0NCj4gPiA+ID4NCj4gPiA+ID4gKyAgaWYgKG1TcGluTG9j a0xpc3QgIT0gTlVMTCl7DQo+ID4gPiA+DQo+ID4gPiA+ICsgICAgRnJlZVBvb2wgKG1TcGluTG9j a0xpc3QpOw0KPiA+ID4gPg0KPiA+ID4gPiArICB9DQo+ID4gPiA+DQo+ID4gPiA+ICsgIGlmICht QmxvY2tJc0NvbXBsZXRlZCAhPSBOVUxMKXsNCj4gPiA+ID4NCj4gPiA+ID4gKyAgICBGcmVlUG9v bCAobUJsb2NrSXNDb21wbGV0ZWQpOw0KPiA+ID4gPg0KPiA+ID4gPiArICB9DQo+ID4gPiA+DQo+ ID4gPiA+ICsNCj4gPiA+ID4NCj4gPiA+ID4gKyAgcmV0dXJuIFJldHVyblZhbHVlOw0KPiA+ID4g Pg0KPiA+ID4gPiArfQ0KPiA+ID4gPg0KPiA+ID4gPiBkaWZmIC0tZ2l0IGEvQ3J5cHRvUGtnL0xp YnJhcnkvQmFzZUNyeXB0TGliL0hhc2gvQ3J5cHRTaGEzLmMNCj4gPiA+ID4gYi9DcnlwdG9Qa2cv TGlicmFyeS9CYXNlQ3J5cHRMaWIvSGFzaC9DcnlwdFNoYTMuYw0KPiA+ID4gPiBuZXcgZmlsZSBt b2RlIDEwMDY0NA0KPiA+ID4gPiBpbmRleCAwMDAwMDAwMDAwLi5iMTcwYzQ2M2RlDQo+ID4gPiA+ IC0tLSAvZGV2L251bGwNCj4gPiA+ID4gKysrIGIvQ3J5cHRvUGtnL0xpYnJhcnkvQmFzZUNyeXB0 TGliL0hhc2gvQ3J5cHRTaGEzLmMNCj4gPiA+ID4gQEAgLTAsMCArMSwxMDIgQEANCj4gPiA+ID4g Ky8qKiBAZmlsZQ0KPiA+ID4gPg0KPiA+ID4gPiArICBTSEEzIHJlYWx0ZWQgZnVuY3Rpb25zIGZy b20gT3BlblNTTC4NCj4gPiA+ID4NCj4gPiA+ID4gKw0KPiA+ID4gPg0KPiA+ID4gPiArQ29weXJp Z2h0IChjKSAyMDIyLCBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC48QlI+ DQo+ID4gPiA+DQo+ID4gPiA+ICtTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTItQ2xhdXNl LVBhdGVudA0KPiA+ID4gPg0KPiA+ID4gPiArDQo+ID4gPiA+DQo+ID4gPiA+ICtDb3B5cmlnaHQg MjAxNy0yMDIyIFRoZSBPcGVuU1NMIFByb2plY3QgQXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZl ZC4NCj4gPiA+ID4NCj4gPiA+ID4gK0xpY2Vuc2VkIHVuZGVyIHRoZSBPcGVuU1NMIGxpY2Vuc2Ug KHRoZSAiTGljZW5zZSIpLiAgWW91IG1heSBub3QgdXNlDQo+ID4gPiA+DQo+ID4gPiA+ICt0aGlz IGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBjYW4gb2J0 YWluIGENCj4gPiA+ID4gK2NvcHkNCj4gPiA+ID4NCj4gPiA+ID4gK2luIHRoZSBmaWxlIExJQ0VO U0UgaW4gdGhlIHNvdXJjZSBkaXN0cmlidXRpb24gb3IgYXQNCj4gPiA+ID4NCj4gPiA+ID4gK2h0 dHBzOi8vd3d3Lm9wZW5zc2wub3JnL3NvdXJjZS9saWNlbnNlLmh0bWwNCj4gPiA+ID4NCj4gPiA+ ID4gKw0KPiA+ID4gPg0KPiA+ID4gPiArKiovDQo+ID4gPiA+DQo+ID4gPiA+ICsNCj4gPiA+ID4N Cj4gPiA+ID4gKyNpbmNsdWRlICJzaGEzLmgiDQo+ID4gPiA+DQo+ID4gPiA+ICsNCj4gPiA+ID4N Cj4gPiA+ID4gK3NpemVfdCBTSEEzX2Fic29yYih1aW50NjRfdCBBWzVdWzVdLCBjb25zdCB1bnNp Z25lZCBjaGFyICppbnAsIHNpemVfdA0KPiA+ID4gPiArbGVuLA0KPiA+ID4gPg0KPiA+ID4gPiAr ICAgICAgICAgICAgICAgICAgIHNpemVfdCByKTsNCj4gPiA+ID4NCj4gPiA+ID4gK3ZvaWQgU0hB M19zcXVlZXplKHVpbnQ2NF90IEFbNV1bNV0sIHVuc2lnbmVkIGNoYXIgKm91dCwgc2l6ZV90IGxl biwNCj4gPiA+ID4gK3NpemVfdCByKTsNCj4gPiA+ID4NCj4gPiA+ID4gKw0KPiA+ID4gPg0KPiA+ ID4gPiAraW50IGluaXQoS0VDQ0FLMTYwMF9DVFggKmN0eCwgdW5zaWduZWQgY2hhciBwYWQsIHNp emVfdCBic3osIHNpemVfdA0KPiA+ID4gPiArbWRfc2l6ZSkNCj4gPiA+ID4NCj4gPiA+ID4gK3sN Cj4gPiA+ID4NCj4gPiA+ID4gKyAgICBpZiAoYnN6IDw9IHNpemVvZihjdHgtPmJ1ZikpIHsNCj4g PiA+ID4NCj4gPiA+ID4gKyAgICAgICAgbWVtc2V0KGN0eC0+QSwgMCwgc2l6ZW9mKGN0eC0+QSkp Ow0KPiA+ID4gPg0KPiA+ID4gPiArDQo+ID4gPiA+DQo+ID4gPiA+ICsgICAgICAgIGN0eC0+bnVt ID0gMDsNCj4gPiA+ID4NCj4gPiA+ID4gKyAgICAgICAgY3R4LT5ibG9ja19zaXplID0gYnN6Ow0K PiA+ID4gPg0KPiA+ID4gPiArICAgICAgICBjdHgtPm1kX3NpemUgPSBtZF9zaXplOw0KPiA+ID4g Pg0KPiA+ID4gPiArICAgICAgICBjdHgtPnBhZCA9IHBhZDsNCj4gPiA+ID4NCj4gPiA+ID4gKw0K PiA+ID4gPg0KPiA+ID4gPiArICAgICAgICByZXR1cm4gMTsNCj4gPiA+ID4NCj4gPiA+ID4gKyAg ICB9DQo+ID4gPiA+DQo+ID4gPiA+ICsNCj4gPiA+ID4NCj4gPiA+ID4gKyAgICByZXR1cm4gMDsN Cj4gPiA+ID4NCj4gPiA+ID4gK30NCj4gPiA+ID4NCj4gPiA+ID4gKw0KPiA+ID4gPg0KPiA+ID4g PiArDQo+ID4gPiA+DQo+ID4gPiA+ICtpbnQgc2hhM191cGRhdGUoS0VDQ0FLMTYwMF9DVFggKmN0 eCwgY29uc3Qgdm9pZCAqX2lucCwgc2l6ZV90IGxlbikNCj4gPiA+ID4NCj4gPiA+ID4gK3sNCj4g PiA+ID4NCj4gPiA+ID4gKyAgICBjb25zdCB1bnNpZ25lZCBjaGFyICppbnAgPSBfaW5wOw0KPiA+ ID4gPg0KPiA+ID4gPiArICAgIHNpemVfdCBic3ogPSBjdHgtPmJsb2NrX3NpemU7DQo+ID4gPiA+ DQo+ID4gPiA+ICsgICAgc2l6ZV90IG51bSwgcmVtOw0KPiA+ID4gPg0KPiA+ID4gPiArDQo+ID4g PiA+DQo+ID4gPiA+ICsgICAgaWYgKGxlbiA9PSAwKQ0KPiA+ID4gPg0KPiA+ID4gPiArICAgICAg ICByZXR1cm4gMTsNCj4gPiA+ID4NCj4gPiA+ID4gKw0KPiA+ID4gPg0KPiA+ID4gPiArICAgIGlm ICgobnVtID0gY3R4LT5udW0pICE9IDApIHsgICAgICAvKiBwcm9jZXNzIGludGVybWVkaWF0ZSBi dWZmZXI/ICovDQo+ID4gPiA+DQo+ID4gPiA+ICsgICAgICAgIHJlbSA9IGJzeiAtIG51bTsNCj4g PiA+ID4NCj4gPiA+ID4gKw0KPiA+ID4gPg0KPiA+ID4gPiArICAgICAgICBpZiAobGVuIDwgcmVt KSB7DQo+ID4gPiA+DQo+ID4gPiA+ICsgICAgICAgICAgICBtZW1jcHkoY3R4LT5idWYgKyBudW0s IGlucCwgbGVuKTsNCj4gPiA+ID4NCj4gPiA+ID4gKyAgICAgICAgICAgIGN0eC0+bnVtICs9IGxl bjsNCj4gPiA+ID4NCj4gPiA+ID4gKyAgICAgICAgICAgIHJldHVybiAxOw0KPiA+ID4gPg0KPiA+ ID4gPiArICAgICAgICB9DQo+ID4gPiA+DQo+ID4gPiA+ICsgICAgICAgIC8qDQo+ID4gPiA+DQo+ ID4gPiA+ICsgICAgICAgICAqIFdlIGhhdmUgZW5vdWdoIGRhdGEgdG8gZmlsbCBvciBvdmVyZmxv dyB0aGUgaW50ZXJtZWRpYXRlDQo+ID4gPiA+DQo+ID4gPiA+ICsgICAgICAgICAqIGJ1ZmZlci4g U28gd2UgYXBwZW5kIHxyZW18IGJ5dGVzIGFuZCBwcm9jZXNzIHRoZSBibG9jaywNCj4gPiA+ID4N Cj4gPiA+ID4gKyAgICAgICAgICogbGVhdmluZyB0aGUgcmVzdCBmb3IgbGF0ZXIgcHJvY2Vzc2lu Zy4uLg0KPiA+ID4gPg0KPiA+ID4gPiArICAgICAgICAgKi8NCj4gPiA+ID4NCj4gPiA+ID4gKyAg ICAgICAgbWVtY3B5KGN0eC0+YnVmICsgbnVtLCBpbnAsIHJlbSk7DQo+ID4gPiA+DQo+ID4gPiA+ ICsgICAgICAgIGlucCArPSByZW0sIGxlbiAtPSByZW07DQo+ID4gPiA+DQo+ID4gPiA+ICsgICAg ICAgICh2b2lkKVNIQTNfYWJzb3JiKGN0eC0+QSwgY3R4LT5idWYsIGJzeiwgYnN6KTsNCj4gPiA+ ID4NCj4gPiA+ID4gKyAgICAgICAgY3R4LT5udW0gPSAwOw0KPiA+ID4gPg0KPiA+ID4gPiArICAg ICAgICAvKiBjdHgtPmJ1ZiBpcyBwcm9jZXNzZWQsIGN0eC0+bnVtIGlzIGd1YXJhbnRlZWQgdG8g YmUgemVybw0KPiA+ID4gPiArICovDQo+ID4gPiA+DQo+ID4gPiA+ICsgICAgfQ0KPiA+ID4gPg0K PiA+ID4gPiArDQo+ID4gPiA+DQo+ID4gPiA+ICsgICAgaWYgKGxlbiA+PSBic3opDQo+ID4gPiA+ DQo+ID4gPiA+ICsgICAgICAgIHJlbSA9IFNIQTNfYWJzb3JiKGN0eC0+QSwgaW5wLCBsZW4sIGJz eik7DQo+ID4gPiA+DQo+ID4gPiA+ICsgICAgZWxzZQ0KPiA+ID4gPg0KPiA+ID4gPiArICAgICAg ICByZW0gPSBsZW47DQo+ID4gPiA+DQo+ID4gPiA+ICsNCj4gPiA+ID4NCj4gPiA+ID4gKyAgICBp ZiAocmVtKSB7DQo+ID4gPiA+DQo+ID4gPiA+ICsgICAgICAgIG1lbWNweShjdHgtPmJ1ZiwgaW5w ICsgbGVuIC0gcmVtLCByZW0pOw0KPiA+ID4gPg0KPiA+ID4gPiArICAgICAgICBjdHgtPm51bSA9 IHJlbTsNCj4gPiA+ID4NCj4gPiA+ID4gKyAgICB9DQo+ID4gPiA+DQo+ID4gPiA+ICsNCj4gPiA+ ID4NCj4gPiA+ID4gKyAgICByZXR1cm4gMTsNCj4gPiA+ID4NCj4gPiA+ID4gK30NCj4gPiA+ID4N Cj4gPiA+ID4gKw0KPiA+ID4gPg0KPiA+ID4gPiAraW50IHNoYTNfZmluYWwoS0VDQ0FLMTYwMF9D VFggKmN0eCwgdW5zaWduZWQgY2hhciAqbWQpDQo+ID4gPiA+DQo+ID4gPiA+ICt7DQo+ID4gPiA+ DQo+ID4gPiA+ICsgICAgc2l6ZV90IGJzeiA9IGN0eC0+YmxvY2tfc2l6ZTsNCj4gPiA+ID4NCj4g PiA+ID4gKyAgICBzaXplX3QgbnVtID0gY3R4LT5udW07DQo+ID4gPiA+DQo+ID4gPiA+ICsNCj4g PiA+ID4NCj4gPiA+ID4gKyAgICBpZiAoY3R4LT5tZF9zaXplID09IDApDQo+ID4gPiA+DQo+ID4g PiA+ICsgICAgICAgIHJldHVybiAxOw0KPiA+ID4gPg0KPiA+ID4gPiArDQo+ID4gPiA+DQo+ID4g PiA+ICsgICAgLyoNCj4gPiA+ID4NCj4gPiA+ID4gKyAgICAgKiBQYWQgdGhlIGRhdGEgd2l0aCAx MCoxLiBOb3RlIHRoYXQgfG51bXwgY2FuIGJlIHxic3ogLSAxfA0KPiA+ID4gPg0KPiA+ID4gPiAr ICAgICAqIGluIHdoaWNoIGNhc2UgYm90aCBieXRlIG9wZXJhdGlvbnMgYmVsb3cgYXJlIHBlcmZv cm1lZCBvbg0KPiA+ID4gPg0KPiA+ID4gPiArICAgICAqIHNhbWUgYnl0ZS4uLg0KPiA+ID4gPg0K PiA+ID4gPiArICAgICAqLw0KPiA+ID4gPg0KPiA+ID4gPiArICAgIG1lbXNldChjdHgtPmJ1ZiAr IG51bSwgMCwgYnN6IC0gbnVtKTsNCj4gPiA+ID4NCj4gPiA+ID4gKyAgICBjdHgtPmJ1ZltudW1d ID0gY3R4LT5wYWQ7DQo+ID4gPiA+DQo+ID4gPiA+ICsgICAgY3R4LT5idWZbYnN6IC0gMV0gfD0g MHg4MDsNCj4gPiA+ID4NCj4gPiA+ID4gKw0KPiA+ID4gPg0KPiA+ID4gPiArICAgICh2b2lkKVNI QTNfYWJzb3JiKGN0eC0+QSwgY3R4LT5idWYsIGJzeiwgYnN6KTsNCj4gPiA+ID4NCj4gPiA+ID4g Kw0KPiA+ID4gPg0KPiA+ID4gPiArICAgIFNIQTNfc3F1ZWV6ZShjdHgtPkEsIG1kLCBjdHgtPm1k X3NpemUsIGJzeik7DQo+ID4gPiA+DQo+ID4gPiA+ICsNCj4gPiA+ID4NCj4gPiA+ID4gKyAgICBy ZXR1cm4gMTsNCj4gPiA+ID4NCj4gPiA+ID4gK30NCj4gPiA+ID4NCj4gPiA+ID4gZGlmZiAtLWdp dCBhL0NyeXB0b1BrZy9MaWJyYXJ5L0Jhc2VDcnlwdExpYi9IYXNoL0NyeXB0WGtjcC5jDQo+ID4g PiA+IGIvQ3J5cHRvUGtnL0xpYnJhcnkvQmFzZUNyeXB0TGliL0hhc2gvQ3J5cHRYa2NwLmMNCj4g PiA+ID4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gPiA+ID4gaW5kZXggMDAwMDAwMDAwMC4uYjJh NDBlZTA0NA0KPiA+ID4gPiAtLS0gL2Rldi9udWxsDQo+ID4gPiA+ICsrKyBiL0NyeXB0b1BrZy9M aWJyYXJ5L0Jhc2VDcnlwdExpYi9IYXNoL0NyeXB0WGtjcC5jDQo+ID4gPiA+IEBAIC0wLDAgKzEs NTMgQEANCj4gPiA+ID4gKy8qKiBAZmlsZQ0KPiA+ID4gPg0KPiA+ID4gPiArICBFbmNvZGUgcmVh bHRlZCBmdW5jdGlvbnMgZnJvbSBYa2NwLg0KPiA+ID4gPg0KPiA+ID4gPiArDQo+ID4gPiA+DQo+ ID4gPiA+ICtDb3B5cmlnaHQgKGMpIDIwMjIsIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRz IHJlc2VydmVkLjxCUj4NCj4gPiA+ID4NCj4gPiA+ID4gK1NQRFgtTGljZW5zZS1JZGVudGlmaWVy OiBCU0QtMi1DbGF1c2UtUGF0ZW50DQo+ID4gPiA+DQo+ID4gPiA+ICsNCj4gPiA+ID4NCj4gPiA+ ID4gK1RoZSBlWHRlbmRlZCBLZWNjYWsgQ29kZSBQYWNrYWdlIChYS0NQKQ0KPiA+ID4gPg0KPiA+ ID4gPiAraHR0cHM6Ly9naXRodWIuY29tL1hLQ1AvWEtDUA0KPiA+ID4gPg0KPiA+ID4gPiArS2Vj Y2FrLCBkZXNpZ25lZCBieSBHdWlkbyBCZXJ0b25pLCBKb2FuIERhZW1lbiwgTWljaGHDq2wgUGVl dGVycw0KPiBhbmQNCj4gPiA+ID4gK0dpbGxlcw0KPiA+ID4gPiBWYW4gQXNzY2hlLg0KPiA+ID4g Pg0KPiA+ID4gPiArSW1wbGVtZW50YXRpb24gYnkgdGhlIGRlc2lnbmVycywgaGVyZWJ5IGRlbm90 ZWQgYXMgInRoZQ0KPiBpbXBsZW1lbnRlciIuDQo+ID4gPiA+DQo+ID4gPiA+ICtGb3IgbW9yZSBp bmZvcm1hdGlvbiwgZmVlZGJhY2sgb3IgcXVlc3Rpb25zLCBwbGVhc2UgcmVmZXIgdG8gdGhlDQo+ ID4gPiA+ICtLZWNjYWsgVGVhbQ0KPiA+ID4gPiB3ZWJzaXRlOg0KPiA+ID4gPg0KPiA+ID4gPiAr aHR0cHM6Ly9rZWNjYWsudGVhbS8NCj4gPiA+ID4NCj4gPiA+ID4gK1RvIHRoZSBleHRlbnQgcG9z c2libGUgdW5kZXIgbGF3LCB0aGUgaW1wbGVtZW50ZXIgaGFzIHdhaXZlZCBhbGwNCj4gPiA+ID4g K2NvcHlyaWdodA0KPiA+ID4gPg0KPiA+ID4gPiArYW5kIHJlbGF0ZWQgb3IgbmVpZ2hib3Jpbmcg cmlnaHRzIHRvIHRoZSBzb3VyY2UgY29kZSBpbiB0aGlzIGZpbGUuDQo+ID4gPiA+DQo+ID4gPiA+ ICtodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvDQo+ID4g PiA+DQo+ID4gPiA+ICsNCj4gPiA+ID4NCj4gPiA+ID4gKyoqLw0KPiA+ID4gPg0KPiA+ID4gPiAr DQo+ID4gPiA+DQo+ID4gPiA+ICsjaW5jbHVkZSAieGtjcC5oIg0KPiA+ID4gPg0KPiA+ID4gPiAr DQo+ID4gPiA+DQo+ID4gPiA+ICt1bnNpZ25lZCBpbnQgbGVmdF9lbmNvZGUodW5zaWduZWQgY2hh ciAqIGVuY2J1Ziwgc2l6ZV90IHZhbHVlKQ0KPiA+ID4gPg0KPiA+ID4gPiArew0KPiA+ID4gPg0K PiA+ID4gPiArICAgIHVuc2lnbmVkIGludCBuLCBpOw0KPiA+ID4gPg0KPiA+ID4gPiArICAgIHNp emVfdCB2Ow0KPiA+ID4gPg0KPiA+ID4gPiArDQo+ID4gPiA+DQo+ID4gPiA+ICsgICAgZm9yICgg diA9IHZhbHVlLCBuID0gMDsgdiAmJiAobiA8IHNpemVvZihzaXplX3QpKTsgKytuLCB2ID4+PSA4 ICkNCj4gPiA+ID4NCj4gPiA+ID4gKyAgICAgICAgOyAvKiBlbXB0eSAqLw0KPiA+ID4gPg0KPiA+ ID4gPiArICAgIGlmIChuID09IDApDQo+ID4gPiA+DQo+ID4gPiA+ICsgICAgICAgIG4gPSAxOw0K PiA+ID4gPg0KPiA+ID4gPiArICAgIGZvciAoIGkgPSAxOyBpIDw9IG47ICsraSApDQo+ID4gPiA+ DQo+ID4gPiA+ICsgICAgew0KPiA+ID4gPg0KPiA+ID4gPiArICAgICAgICBlbmNidWZbaV0gPSAo dW5zaWduZWQgY2hhcikodmFsdWUgPj4gKDggKiAobi1pKSkpOw0KPiA+ID4gPg0KPiA+ID4gPiAr ICAgIH0NCj4gPiA+ID4NCj4gPiA+ID4gKyAgICBlbmNidWZbMF0gPSAodW5zaWduZWQgY2hhcilu Ow0KPiA+ID4gPg0KPiA+ID4gPiArICAgIHJldHVybiBuICsgMTsNCj4gPiA+ID4NCj4gPiA+ID4g K30NCj4gPiA+ID4NCj4gPiA+ID4gKw0KPiA+ID4gPg0KPiA+ID4gPiArdW5zaWduZWQgaW50IHJp Z2h0X2VuY29kZSh1bnNpZ25lZCBjaGFyICogZW5jYnVmLCBzaXplX3QgdmFsdWUpDQo+ID4gPiA+ DQo+ID4gPiA+ICt7DQo+ID4gPiA+DQo+ID4gPiA+ICsgICAgdW5zaWduZWQgaW50IG4sIGk7DQo+ ID4gPiA+DQo+ID4gPiA+ICsgICAgc2l6ZV90IHY7DQo+ID4gPiA+DQo+ID4gPiA+ICsNCj4gPiA+ ID4NCj4gPiA+ID4gKyAgICBmb3IgKCB2ID0gdmFsdWUsIG4gPSAwOyB2ICYmIChuIDwgc2l6ZW9m KHNpemVfdCkpOyArK24sIHYgPj49IDggKQ0KPiA+ID4gPg0KPiA+ID4gPiArICAgICAgICA7IC8q IGVtcHR5ICovDQo+ID4gPiA+DQo+ID4gPiA+ICsgICAgaWYgKG4gPT0gMCkNCj4gPiA+ID4NCj4g PiA+ID4gKyAgICAgICAgbiA9IDE7DQo+ID4gPiA+DQo+ID4gPiA+ICsgICAgZm9yICggaSA9IDE7 IGkgPD0gbjsgKytpICkNCj4gPiA+ID4NCj4gPiA+ID4gKyAgICB7DQo+ID4gPiA+DQo+ID4gPiA+ ICsgICAgICAgIGVuY2J1ZltpLTFdID0gKHVuc2lnbmVkIGNoYXIpKHZhbHVlID4+ICg4ICogKG4t aSkpKTsNCj4gPiA+ID4NCj4gPiA+ID4gKyAgICB9DQo+ID4gPiA+DQo+ID4gPiA+ICsgICAgZW5j YnVmW25dID0gKHVuc2lnbmVkIGNoYXIpbjsNCj4gPiA+ID4NCj4gPiA+ID4gKyAgICByZXR1cm4g biArIDE7DQo+ID4gPiA+DQo+ID4gPiA+ICt9DQo+ID4gPiA+DQo+ID4gPiA+IGRpZmYgLS1naXQN Cj4gPiA+ID4gYS9DcnlwdG9Qa2cvVGVzdC9Vbml0VGVzdC9MaWJyYXJ5L0Jhc2VDcnlwdExpYi9Q YXJhbGxlbGhhc2hUZXN0cy5jDQo+ID4gPiA+IGIvQ3J5cHRvUGtnL1Rlc3QvVW5pdFRlc3QvTGli cmFyeS9CYXNlQ3J5cHRMaWIvUGFyYWxsZWxoYXNoVGVzdHMuYw0KPiA+ID4gPiBuZXcgZmlsZSBt b2RlIDEwMDY0NA0KPiA+ID4gPiBpbmRleCAwMDAwMDAwMDAwLi4wNTJhYjNhMGQ2DQo+ID4gPiA+ IC0tLSAvZGV2L251bGwNCj4gPiA+ID4gKysrDQo+IGIvQ3J5cHRvUGtnL1Rlc3QvVW5pdFRlc3Qv TGlicmFyeS9CYXNlQ3J5cHRMaWIvUGFyYWxsZWxoYXNoVGVzdHMuYw0KPiA+ID4gPiBAQCAtMCww ICsxLDE1MiBAQA0KPiA+ID4gPiArLyoqIEBmaWxlDQo+ID4gPiA+DQo+ID4gPiA+ICsgIEFwcGxp Y2F0aW9uIGZvciBQYXJhbGxlbGhhc2ggRnVuY3Rpb24gVmFsaWRhdGlvbi4NCj4gPiA+ID4NCj4g PiA+ID4gKw0KPiA+ID4gPg0KPiA+ID4gPiArQ29weXJpZ2h0IChjKSAyMDIyLCBJbnRlbCBDb3Jw b3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC48QlI+DQo+ID4gPiA+DQo+ID4gPiA+ICtTUERY LUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTItQ2xhdXNlLVBhdGVudA0KPiA+ID4gPg0KPiA+ID4g PiArDQo+ID4gPiA+DQo+ID4gPiA+ICsqKi8NCj4gPiA+ID4NCj4gPiA+ID4gKw0KPiA+ID4gPg0K PiA+ID4gPiArI2luY2x1ZGUgIlRlc3RCYXNlQ3J5cHRMaWIuaCINCj4gPiA+ID4NCj4gPiA+ID4g Kw0KPiA+ID4gPg0KPiA+ID4gPiArLy8NCj4gPiA+ID4NCj4gPiA+ID4gKy8vIFBhcmFsbGVsaGFz aCBUZXN0IFNhbXBsZSBjb21tb24gcGFyYW1ldGVycy4NCj4gPiA+ID4NCj4gPiA+ID4gKy8vDQo+ ID4gPiA+DQo+ID4gPiA+ICtHTE9CQUxfUkVNT1ZFX0lGX1VOUkVGRVJFTkNFRCBDT05TVCBVSU5U TiAgT3V0cHV0Qnl0ZUxlbg0KPiA9DQo+ID4gPiA2NDsNCj4gPiA+ID4NCj4gPiA+ID4gKw0KPiA+ ID4gPg0KPiA+ID4gPiArLy8NCj4gPiA+ID4NCj4gPiA+ID4gKy8vIFBhcmFsbGVsaGFzaCBUZXN0 IFNhbXBsZSAjMSBmcm9tIE5JU1QgU3BlY2lhbCBQdWJsaWNhdGlvbiA4MDAtMTg1Lg0KPiA+ID4g Pg0KPiA+ID4gPiArLy8NCj4gPiA+ID4NCj4gPiA+ID4gK0dMT0JBTF9SRU1PVkVfSUZfVU5SRUZF UkVOQ0VEIENPTlNUIFVJTlQ4ICAgSW5wdXRTYW1wbGUxW10NCj4gPiA+ID0gew0KPiA+ID4gPg0K PiA+ID4gPiArICAvLyBpbnB1dCBkYXRhIG9mIHNhbXBsZTEuDQo+ID4gPiA+DQo+ID4gPiA+ICsg IDB4MDAsIDB4MDEsIDB4MDIsIDB4MDMsIDB4MDQsIDB4MDUsIDB4MDYsIDB4MDcsIDB4MTAsIDB4 MTEsIDB4MTIsDQo+ID4gPiA+ICsgMHgxMywgMHgxNCwNCj4gPiA+ID4gMHgxNSwgMHgxNiwgMHgx NywNCj4gPiA+ID4NCj4gPiA+ID4gKyAgMHgyMCwgMHgyMSwgMHgyMiwgMHgyMywgMHgyNCwgMHgy NSwgMHgyNiwgMHgyNw0KPiA+ID4gPg0KPiA+ID4gPiArfTsNCj4gPiA+ID4NCj4gPiA+ID4gK0dM T0JBTF9SRU1PVkVfSUZfVU5SRUZFUkVOQ0VEIFVJTlRODQo+IElucHV0U2FtcGxlMUJ5dGVMZW4N Cj4gPiA+ID0NCj4gPiA+ID4gMjQ7ICAgICAvLyBMZW5ndGggb2Ygc2FtcGxlMSBpbnB1dCBkYXRh IGluIGJ5dGVzLg0KPiA+ID4gPg0KPiA+ID4gPiArR0xPQkFMX1JFTU9WRV9JRl9VTlJFRkVSRU5D RUQgQ09OU1QgVk9JRA0KPiA+ID4gKkN1c3RvbWl6YXRpb25TYW1wbGUxDQo+ID4gPiA+ID0gIiI7 ICAgICAvLyBDdXN0b21pemF0aW9uIHN0cmluZyAoUykgb2Ygc2FtcGxlMS4NCj4gPiA+ID4NCj4g PiA+ID4gK0dMT0JBTF9SRU1PVkVfSUZfVU5SRUZFUkVOQ0VEIFVJTlRODQo+ID4gPiBDdXN0b21T YW1wbGUxQnl0ZUxlbiAgICAgPQ0KPiA+ID4gPiAwOyAgICAgIC8vIEN1c3RvbWl6YXRpb24gc3Ry aW5nIGxlbmd0aCBvZiBzYW1wbGUxIGluIGJ5dGVzLg0KPiA+ID4gPg0KPiA+ID4gPiArR0xPQkFM X1JFTU9WRV9JRl9VTlJFRkVSRU5DRUQgVUlOVE4gICAgICAgIEJsb2NrU2l6ZVNhbXBsZTENCj4g PQ0KPiA+ID4gODsNCj4gPiA+ID4gLy8gQmxvY2sgc2l6ZSBvZiBzYW1wbGUxLg0KPiA+ID4gPg0K PiA+ID4gPiArR0xPQkFMX1JFTU9WRV9JRl9VTlJFRkVSRU5DRUQgQ09OU1QgVUlOVDgNCj4gPiA+ IEV4cGVjdE91dHB1dFNhbXBsZTFbXQ0KPiA+ID4gPiA9IHsNCj4gPiA+ID4NCj4gPiA+ID4gKyAg Ly8gRXhwZWN0ZWQgb3V0cHV0IGRhdGEgb2Ygc2FtcGxlMS4NCj4gPiA+ID4NCj4gPiA+ID4gKyAg MHhiYywgMHgxZSwgMHhmMSwgMHgyNCwgMHhkYSwgMHgzNCwgMHg0OSwgMHg1ZSwgMHg5NCwgMHg4 ZSwgMHhhZCwNCj4gPiA+ID4gKyAweDIwLCAweDdkLA0KPiA+ID4gPiAweGQ5LCAweDg0LCAweDIy LA0KPiA+ID4gPg0KPiA+ID4gPiArICAweDM1LCAweGRhLCAweDQzLCAweDJkLCAweDJiLCAweGJj LCAweDU0LCAweGI0LCAweGMxLCAweDEwLCAweGU2LA0KPiA+ID4gPiArIDB4NGMsIDB4NDUsDQo+ ID4gPiA+IDB4MTEsIDB4MDUsIDB4NTMsDQo+ID4gPiA+DQo+ID4gPiA+ICsgIDB4MWIsIDB4N2Ys IDB4MmEsIDB4M2UsIDB4MGMsIDB4ZTAsIDB4NTUsIDB4YzAsIDB4MjgsIDB4MDUsIDB4ZTcsDQo+ ID4gPiA+ICsgMHhjMiwgMHhkZSwNCj4gPiA+ID4gMHgxZiwgMHhiNywgMHg0NiwNCj4gPiA+ID4N Cj4gPiA+ID4gKyAgMHhhZiwgMHg5NywgMHhhMSwgMHhkMCwgMHgwMSwgMHhmNCwgMHgzYiwgMHg4 MiwgMHg0ZSwgMHgzMSwgMHhiOCwNCj4gPiA+ID4gKyAweDc2LCAweDEyLA0KPiA+ID4gPiAweDQx LCAweDA0LCAweDI5DQo+ID4gPiA+DQo+ID4gPiA+ICt9Ow0KPiA+ID4gPg0KPiA+ID4gPiArDQo+ ID4gPiA+DQo+ID4gPiA+ICsvLw0KPiA+ID4gPg0KPiA+ID4gPiArLy8gUGFyYWxsZWxoYXNoIFRl c3QgU2FtcGxlICMyIGZyb20gTklTVCBTcGVjaWFsIFB1YmxpY2F0aW9uIDgwMC0xODUuDQo+ID4g PiA+DQo+ID4gPiA+ICsvLw0KPiA+ID4gPg0KPiA+ID4gPiArR0xPQkFMX1JFTU9WRV9JRl9VTlJF RkVSRU5DRUQgQ09OU1QgVUlOVDggICpJbnB1dFNhbXBsZTINCj4gPiA+ID0NCj4gPiA+ID4gSW5w dXRTYW1wbGUxOyAgICAgICAgICAgIC8vIElucHV0IG9mIHNhbXBsZTIgaXMgc2FtZSBhcyBzYW1w bGUxLg0KPiA+ID4gPg0KPiA+ID4gPiArR0xPQkFMX1JFTU9WRV9JRl9VTlJFRkVSRU5DRUQgVUlO VE4NCj4gSW5wdXRTYW1wbGUyQnl0ZUxlbg0KPiA+ID4gPQ0KPiA+ID4gPiAyNDsgICAgICAgICAg ICAgICAgICAgICAgLy8gTGVuZ3RoIG9mIHNhbXBsZTIgaW5wdXQgZGF0YSBpbiBieXRlcy4NCj4g PiA+ID4NCj4gPiA+ID4gK0dMT0JBTF9SRU1PVkVfSUZfVU5SRUZFUkVOQ0VEIENPTlNUIFZPSUQN Cj4gPiA+ICpDdXN0b21pemF0aW9uU2FtcGxlMg0KPiA+ID4gPiA9ICJQYXJhbGxlbCBEYXRhIjsg ICAgICAgICAvLyBDdXN0b21pemF0aW9uIHN0cmluZyAoUykgb2Ygc2FtcGxlMi4NCj4gPiA+ID4N Cj4gPiA+ID4gK0dMT0JBTF9SRU1PVkVfSUZfVU5SRUZFUkVOQ0VEIFVJTlRODQo+ID4gPiBDdXN0 b21TYW1wbGUyQnl0ZUxlbiAgICAgPQ0KPiA+ID4gPiAxMzsgICAgICAgICAgICAgICAgICAgICAg Ly8gQ3VzdG9taXphdGlvbiBzdHJpbmcgbGVuZ3RoIG9mIHNhbXBsZTIgaW4gYnl0ZXMuDQo+ID4g PiA+DQo+ID4gPiA+ICtHTE9CQUxfUkVNT1ZFX0lGX1VOUkVGRVJFTkNFRCBVSU5UTiAgICAgICAg QmxvY2tTaXplU2FtcGxlMg0KPiA9DQo+ID4gPiA4Ow0KPiA+ID4gPiAvLyBCbG9jayBzaXplIG9m IHNhbXBsZTIuDQo+ID4gPiA+DQo+ID4gPiA+ICtHTE9CQUxfUkVNT1ZFX0lGX1VOUkVGRVJFTkNF RCBDT05TVCBVSU5UOA0KPiA+ID4gRXhwZWN0T3V0cHV0U2FtcGxlMltdDQo+ID4gPiA+ID0gew0K PiA+ID4gPg0KPiA+ID4gPiArICAvLyBFeHBlY3RlZCBvdXRwdXQgZGF0YSBvZiBzYW1wbGUyLg0K PiA+ID4gPg0KPiA+ID4gPiArICAweGNkLCAweGYxLCAweDUyLCAweDg5LCAweGI1LCAweDRmLCAw eDYyLCAweDEyLCAweGI0LCAweGJjLCAweDI3LA0KPiA+ID4gPiArIDB4MDUsIDB4MjgsDQo+ID4g PiA+IDB4YjQsIDB4OTUsIDB4MjYsDQo+ID4gPiA+DQo+ID4gPiA+ICsgIDB4MDAsIDB4NmQsIDB4 ZDksIDB4YjUsIDB4NGUsIDB4MmIsIDB4NmEsIDB4ZGQsIDB4MWUsIDB4ZjYsIDB4OTAsDQo+ID4g PiA+ICsgMHgwZCwgMHhkYSwNCj4gPiA+ID4gMHgzOSwgMHg2MywgMHhiYiwNCj4gPiA+ID4NCj4g PiA+ID4gKyAgMHgzMywgMHhhNywgMHgyNCwgMHg5MSwgMHhmMiwgMHgzNiwgMHg5NiwgMHg5Yywg MHhhOCwgMHhhZiwgMHhhZSwNCj4gPiA+ID4gKyAweGEyLCAweDljLA0KPiA+ID4gPiAweDY4LCAw eDJkLCAweDQ3LA0KPiA+ID4gPg0KPiA+ID4gPiArICAweGEzLCAweDkzLCAweGMwLCAweDY1LCAw eGIzLCAweDhlLCAweDI5LCAweGZhLCAweGU2LCAweDUxLCAweGEyLA0KPiA+ID4gPiArIDB4MDks IDB4MWMsDQo+ID4gPiA+IDB4ODMsIDB4MzEsIDB4MTANCj4gPiA+ID4NCj4gPiA+ID4gK307DQo+ ID4gPiA+DQo+ID4gPiA+ICsNCj4gPiA+ID4NCj4gPiA+ID4gKy8vDQo+ID4gPiA+DQo+ID4gPiA+ ICsvLyBQYXJhbGxlbGhhc2ggVGVzdCBTYW1wbGUgIzMgZnJvbSBOSVNUIFNwZWNpYWwgUHVibGlj YXRpb24gODAwLTE4NS4NCj4gPiA+ID4NCj4gPiA+ID4gKy8vDQo+ID4gPiA+DQo+ID4gPiA+ICtH TE9CQUxfUkVNT1ZFX0lGX1VOUkVGRVJFTkNFRCBDT05TVCBVSU5UOCAgSW5wdXRTYW1wbGUzW10N Cj4gPiA+ID0gew0KPiA+ID4gPg0KPiA+ID4gPiArICAvLyBpbnB1dCBkYXRhIG9mIHNhbXBsZTMu DQo+ID4gPiA+DQo+ID4gPiA+ICsgIDB4MDAsIDB4MDEsIDB4MDIsIDB4MDMsIDB4MDQsIDB4MDUs IDB4MDYsIDB4MDcsIDB4MDgsIDB4MDksIDB4MGEsDQo+ID4gPiA+ICsgMHgwYiwgMHgxMCwNCj4g PiA+ID4gMHgxMSwgMHgxMiwgMHgxMywNCj4gPiA+ID4NCj4gPiA+ID4gKyAgMHgxNCwgMHgxNSwg MHgxNiwgMHgxNywgMHgxOCwgMHgxOSwgMHgxYSwgMHgxYiwgMHgyMCwgMHgyMSwgMHgyMiwNCj4g PiA+ID4gKyAweDIzLCAweDI0LA0KPiA+ID4gPiAweDI1LCAweDI2LCAweDI3LA0KPiA+ID4gPg0K PiA+ID4gPiArICAweDI4LCAweDI5LCAweDJhLCAweDJiLCAweDMwLCAweDMxLCAweDMyLCAweDMz LCAweDM0LCAweDM1LCAweDM2LA0KPiA+ID4gPiArIDB4MzcsIDB4MzgsDQo+ID4gPiA+IDB4Mzks IDB4M2EsIDB4M2IsDQo+ID4gPiA+DQo+ID4gPiA+ICsgIDB4NDAsIDB4NDEsIDB4NDIsIDB4NDMs IDB4NDQsIDB4NDUsIDB4NDYsIDB4NDcsIDB4NDgsIDB4NDksIDB4NGEsDQo+ID4gPiA+ICsgMHg0 YiwgMHg1MCwNCj4gPiA+ID4gMHg1MSwgMHg1MiwgMHg1MywNCj4gPiA+ID4NCj4gPiA+ID4gKyAg MHg1NCwgMHg1NSwgMHg1NiwgMHg1NywgMHg1OCwgMHg1OSwgMHg1YSwgMHg1Yg0KPiA+ID4gPg0K PiA+ID4gPiArfTsNCj4gPiA+ID4NCj4gPiA+ID4gK0dMT0JBTF9SRU1PVkVfSUZfVU5SRUZFUkVO Q0VEIFVJTlRODQo+IElucHV0U2FtcGxlM0J5dGVMZW4NCj4gPiA+ID0NCj4gPiA+ID4gNzI7ICAg ICAgICAgICAgICAgICAgICAgIC8vIExlbmd0aCBvZiBzYW1wbGUzIGlucHV0IGRhdGEgaW4gYnl0 ZXMuDQo+ID4gPiA+DQo+ID4gPiA+ICtHTE9CQUxfUkVNT1ZFX0lGX1VOUkVGRVJFTkNFRCBDT05T VCBWT0lEDQo+ID4gPiAqQ3VzdG9taXphdGlvblNhbXBsZTMNCj4gPiA+ID4gPSAiUGFyYWxsZWwg RGF0YSI7ICAgICAgICAgLy8gQ3VzdG9taXphdGlvbiBzdHJpbmcgKFMpIG9mIHNhbXBsZTMuDQo+ ID4gPiA+DQo+ID4gPiA+ICtHTE9CQUxfUkVNT1ZFX0lGX1VOUkVGRVJFTkNFRCBVSU5UTg0KPiA+ ID4gQ3VzdG9tU2FtcGxlM0J5dGVMZW4gICAgID0NCj4gPiA+ID4gMTM7ICAgICAgICAgICAgICAg ICAgICAgIC8vIEN1c3RvbWl6YXRpb24gc3RyaW5nIGxlbmd0aCBvZiBzYW1wbGUzIGluIGJ5dGVz Lg0KPiA+ID4gPg0KPiA+ID4gPiArR0xPQkFMX1JFTU9WRV9JRl9VTlJFRkVSRU5DRUQgVUlOVE4g ICAgICAgIEJsb2NrU2l6ZVNhbXBsZTMNCj4gPQ0KPiA+ID4gMTI7DQo+ID4gPiA+IC8vIEJsb2Nr IHNpemUgb2Ygc2FtcGxlMy4NCj4gPiA+ID4NCj4gPiA+ID4gK0dMT0JBTF9SRU1PVkVfSUZfVU5S RUZFUkVOQ0VEIENPTlNUIFVJTlQ4DQo+ID4gPiBFeHBlY3RPdXRwdXRTYW1wbGUzW10NCj4gPiA+ ID4gPSB7DQo+ID4gPiA+DQo+ID4gPiA+ICsgIC8vIEV4cGVjdGVkIG91dHB1dCBkYXRhIG9mIHNh bXBsZTMuDQo+ID4gPiA+DQo+ID4gPiA+ICsgIDB4NjksIDB4ZDAsIDB4ZmMsIDB4YjcsIDB4NjQs IDB4ZWEsIDB4MDUsIDB4NWQsIDB4ZDAsIDB4OTMsIDB4MzQsDQo+ID4gPiA+ICsgMHhiYywgMHg2 MCwNCj4gPiA+ID4gMHgyMSwgMHhjYiwgMHg3ZSwNCj4gPiA+ID4NCj4gPiA+ID4gKyAgMHg0Yiwg MHg2MSwgMHgzNCwgMHg4ZCwgMHhmZiwgMHgzNywgMHg1ZCwgMHhhMiwgMHg2MiwgMHg2NywgMHgx YywNCj4gPiA+ID4gKyAweGRlLCAweGMzLA0KPiA+ID4gPiAweGVmLCAweGZhLCAweDhkLA0KPiA+ ID4gPg0KPiA+ID4gPiArICAweDFiLCAweDQ1LCAweDY4LCAweGE2LCAweGNjLCAweGUxLCAweDZi LCAweDFjLCAweGFkLCAweDk0LCAweDZkLA0KPiA+ID4gPiArIDB4ZGQsIDB4ZTIsDQo+ID4gPiA+ IDB4N2YsIDB4NmMsIDB4ZTIsDQo+ID4gPiA+DQo+ID4gPiA+ICsgIDB4YjgsIDB4ZGUsIDB4ZTQs IDB4Y2QsIDB4MWIsIDB4MjQsIDB4ODUsIDB4MWUsIDB4YmYsIDB4MDAsIDB4ZWIsDQo+ID4gPiA+ ICsgMHg5MCwgMHhkNCwNCj4gPiA+ID4gMHgzOCwgMHgxMywgMHhlOQ0KPiA+ID4gPg0KPiA+ID4g PiArfTsNCj4gPiA+ID4NCj4gPiA+ID4gKw0KPiA+ID4gPg0KPiA+ID4gPiArVU5JVF9URVNUX1NU QVRVUw0KPiA+ID4gPg0KPiA+ID4gPiArRUZJQVBJDQo+ID4gPiA+DQo+ID4gPiA+ICtUZXN0VmVy aWZ5UGFyYWxsZWxIYXNoMjU2SGFzaEFsbCAoDQo+ID4gPiA+DQo+ID4gPiA+ICsgIElOIFVOSVRf VEVTVF9DT05URVhUICBDb250ZXh0DQo+ID4gPiA+DQo+ID4gPiA+ICsgICkNCj4gPiA+ID4NCj4g PiA+ID4gK3sNCj4gPiA+ID4NCj4gPiA+ID4gKyAgQk9PTEVBTiAgU3RhdHVzOw0KPiA+ID4gPg0K PiA+ID4gPiArICBVSU5UMTYgICBPcmlnaW5hbFBhcmFsbGVsSGFzaEJsb2NrTnVtYmVyOw0KPiA+ ID4gPg0KPiA+ID4gPiArICBVSU5UOCAgICBPdXRwdXRbNjRdOw0KPiA+ID4gPg0KPiA+ID4gPiAr DQo+ID4gPiA+DQo+ID4gPiA+ICsgIC8vIFJlc3RvcmUgb3JpZ2luYWwgUGNkUGFyYWxsZWxIYXNo QmxvY2tOdW1iZXIuDQo+ID4gPiA+DQo+ID4gPiA+ICsgIE9yaWdpbmFsUGFyYWxsZWxIYXNoQmxv Y2tOdW1iZXIgPSBQY2RHZXQxNg0KPiA+ID4gPiArIChQY2RQYXJhbGxlbEhhc2hCbG9ja051bWJl cik7DQo+ID4gPiA+DQo+ID4gPiA+ICsNCj4gPiA+ID4NCj4gPiA+ID4gKyAgLy8NCj4gPiA+ID4N Cj4gPiA+ID4gKyAgLy8gVGVzdCAjMSB1c2luZyBzYW1wbGUxLg0KPiA+ID4gPg0KPiA+ID4gPiAr ICAvLw0KPiA+ID4gPg0KPiA+ID4gPiArICBQY2RTZXQxNlMgKFBjZFBhcmFsbGVsSGFzaEJsb2Nr TnVtYmVyLCBJbnB1dFNhbXBsZTFCeXRlTGVuIC8NCj4gPiA+ID4gQmxvY2tTaXplU2FtcGxlMSk7 DQo+ID4gPiA+DQo+ID4gPiA+ICsgIFN0YXR1cyA9IFBhcmFsbGVsSGFzaDI1Nkhhc2hBbGwgKA0K PiA+ID4gPg0KPiA+ID4gPiArICAgICAgICAgICAgIElucHV0U2FtcGxlMSwNCj4gPiA+ID4NCj4g PiA+ID4gKyAgICAgICAgICAgICBJbnB1dFNhbXBsZTFCeXRlTGVuLA0KPiA+ID4gPg0KPiA+ID4g PiArICAgICAgICAgICAgIE91dHB1dCwNCj4gPiA+ID4NCj4gPiA+ID4gKyAgICAgICAgICAgICBP dXRwdXRCeXRlTGVuLA0KPiA+ID4gPg0KPiA+ID4gPiArICAgICAgICAgICAgIEN1c3RvbWl6YXRp b25TYW1wbGUxLA0KPiA+ID4gPg0KPiA+ID4gPiArICAgICAgICAgICAgIEN1c3RvbVNhbXBsZTFC eXRlTGVuDQo+ID4gPiA+DQo+ID4gPiA+ICsgICAgICAgICAgICAgKTsNCj4gPiA+ID4NCj4gPiA+ ID4gKyAgVVRfQVNTRVJUX1RSVUUgKFN0YXR1cyk7DQo+ID4gPiA+DQo+ID4gPiA+ICsNCj4gPiA+ ID4NCj4gPiA+ID4gKyAgLy8gQ2hlY2sgdGhlIG91dHB1dCB3aXRoIHRoZSBleHBlY3RlZCBvdXRw dXQuDQo+ID4gPiA+DQo+ID4gPiA+ICsgIFVUX0FTU0VSVF9NRU1fRVFVQUwgKE91dHB1dCwgRXhw ZWN0T3V0cHV0U2FtcGxlMSwNCj4gPiA+IE91dHB1dEJ5dGVMZW4pOw0KPiA+ID4gPg0KPiA+ID4g PiArDQo+ID4gPiA+DQo+ID4gPiA+ICsgIC8vDQo+ID4gPiA+DQo+ID4gPiA+ICsgIC8vIFRlc3Qg IzIgdXNpbmcgc2FtcGxlMi4NCj4gPiA+ID4NCj4gPiA+ID4gKyAgLy8NCj4gPiA+ID4NCj4gPiA+ ID4gKyAgUGNkU2V0MTZTIChQY2RQYXJhbGxlbEhhc2hCbG9ja051bWJlciwgSW5wdXRTYW1wbGUy Qnl0ZUxlbiAvDQo+ID4gPiA+IEJsb2NrU2l6ZVNhbXBsZTIpOw0KPiA+ID4gPg0KPiA+ID4gPiAr ICBTdGF0dXMgPSBQYXJhbGxlbEhhc2gyNTZIYXNoQWxsICgNCj4gPiA+ID4NCj4gPiA+ID4gKyAg ICAgICAgICAgICBJbnB1dFNhbXBsZTIsDQo+ID4gPiA+DQo+ID4gPiA+ICsgICAgICAgICAgICAg SW5wdXRTYW1wbGUyQnl0ZUxlbiwNCj4gPiA+ID4NCj4gPiA+ID4gKyAgICAgICAgICAgICBPdXRw dXQsDQo+ID4gPiA+DQo+ID4gPiA+ICsgICAgICAgICAgICAgT3V0cHV0Qnl0ZUxlbiwNCj4gPiA+ ID4NCj4gPiA+ID4gKyAgICAgICAgICAgICBDdXN0b21pemF0aW9uU2FtcGxlMiwNCj4gPiA+ID4N Cj4gPiA+ID4gKyAgICAgICAgICAgICBDdXN0b21TYW1wbGUyQnl0ZUxlbg0KPiA+ID4gPg0KPiA+ ID4gPiArICAgICAgICAgICAgICk7DQo+ID4gPiA+DQo+ID4gPiA+ICsgIFVUX0FTU0VSVF9UUlVF IChTdGF0dXMpOw0KPiA+ID4gPg0KPiA+ID4gPiArDQo+ID4gPiA+DQo+ID4gPiA+ICsgIC8vIENo ZWNrIHRoZSBvdXRwdXQgd2l0aCB0aGUgZXhwZWN0ZWQgb3V0cHV0Lg0KPiA+ID4gPg0KPiA+ID4g PiArICBVVF9BU1NFUlRfTUVNX0VRVUFMIChPdXRwdXQsIEV4cGVjdE91dHB1dFNhbXBsZTIsDQo+ ID4gPiBPdXRwdXRCeXRlTGVuKTsNCj4gPiA+ID4NCj4gPiA+ID4gKw0KPiA+ID4gPg0KPiA+ID4g PiArICAvLw0KPiA+ID4gPg0KPiA+ID4gPiArICAvLyBUZXN0ICMzIHVzaW5nIHNhbXBsZTMuDQo+ ID4gPiA+DQo+ID4gPiA+ICsgIC8vDQo+ID4gPiA+DQo+ID4gPiA+ICsgIFBjZFNldDE2UyAoUGNk UGFyYWxsZWxIYXNoQmxvY2tOdW1iZXIsIElucHV0U2FtcGxlM0J5dGVMZW4gLw0KPiA+ID4gPiBC bG9ja1NpemVTYW1wbGUzKTsNCj4gPiA+ID4NCj4gPiA+ID4gKyAgU3RhdHVzID0gUGFyYWxsZWxI YXNoMjU2SGFzaEFsbCAoDQo+ID4gPiA+DQo+ID4gPiA+ICsgICAgICAgICAgICAgSW5wdXRTYW1w bGUzLA0KPiA+ID4gPg0KPiA+ID4gPiArICAgICAgICAgICAgIElucHV0U2FtcGxlM0J5dGVMZW4s DQo+ID4gPiA+DQo+ID4gPiA+ICsgICAgICAgICAgICAgT3V0cHV0LA0KPiA+ID4gPg0KPiA+ID4g PiArICAgICAgICAgICAgIE91dHB1dEJ5dGVMZW4sDQo+ID4gPiA+DQo+ID4gPiA+ICsgICAgICAg ICAgICAgQ3VzdG9taXphdGlvblNhbXBsZTMsDQo+ID4gPiA+DQo+ID4gPiA+ICsgICAgICAgICAg ICAgQ3VzdG9tU2FtcGxlM0J5dGVMZW4NCj4gPiA+ID4NCj4gPiA+ID4gKyAgICAgICAgICAgICAp Ow0KPiA+ID4gPg0KPiA+ID4gPiArICBVVF9BU1NFUlRfVFJVRSAoU3RhdHVzKTsNCj4gPiA+ID4N Cj4gPiA+ID4gKw0KPiA+ID4gPg0KPiA+ID4gPiArICAvLyBDaGVjayB0aGUgb3V0cHV0IHdpdGgg dGhlIGV4cGVjdGVkIG91dHB1dC4NCj4gPiA+ID4NCj4gPiA+ID4gKyAgVVRfQVNTRVJUX01FTV9F UVVBTCAoT3V0cHV0LCBFeHBlY3RPdXRwdXRTYW1wbGUzLA0KPiA+ID4gT3V0cHV0Qnl0ZUxlbik7 DQo+ID4gPiA+DQo+ID4gPiA+ICsNCj4gPiA+ID4NCj4gPiA+ID4gKyAgLy8gUmVjb3ZlciBvcmln aW5hbCBQY2RQYXJhbGxlbEhhc2hCbG9ja051bWJlci4NCj4gPiA+ID4NCj4gPiA+ID4gKyAgUGNk U2V0MTZTIChQY2RQYXJhbGxlbEhhc2hCbG9ja051bWJlciwNCj4gPiA+ID4gKyBPcmlnaW5hbFBh cmFsbGVsSGFzaEJsb2NrTnVtYmVyKTsNCj4gPiA+ID4NCj4gPiA+ID4gKw0KPiA+ID4gPg0KPiA+ ID4gPiArICByZXR1cm4gRUZJX1NVQ0NFU1M7DQo+ID4gPiA+DQo+ID4gPiA+ICt9DQo+ID4gPiA+ DQo+ID4gPiA+ICsNCj4gPiA+ID4NCj4gPiA+ID4gK1RFU1RfREVTQyAgbVBhcmFsbGVsaGFzaFRl c3RbXSA9IHsNCj4gPiA+ID4NCj4gPiA+ID4gKyAgLy8NCj4gPiA+ID4NCj4gPiA+ID4gKyAgLy8N Cj4gPiA+ID4gKyAtLS0tLURlc2NyaXB0aW9uLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t Q2xhc3MtLS0tLS0tLS0tLS0tLS0tLQ0KPiA+ID4gPiArIC0tLS0tRnVuY3Rpb24tLS0tDQo+ID4g PiA+IC0tLS0tLS0tLS0tLS1QcmUtLS1Qb3N0LS1Db250ZXh0DQo+ID4gPiA+DQo+ID4gPiA+ICsg IC8vDQo+ID4gPiA+DQo+ID4gPiA+ICsgIHsgIlRlc3RWZXJpZnlQYXJhbGxlbEhhc2gyNTZIYXNo QWxsKCkiLA0KPiA+ID4gPiAiQ3J5cHRvUGtnLkJhc2VDcnlwdExpYi5QYXJhbGxlbEhhc2gyNTZI YXNoQWxsIiwNCj4gPiA+ID4gVGVzdFZlcmlmeVBhcmFsbGVsSGFzaDI1Nkhhc2hBbGwsIE5VTEws IE5VTEwsIE5VTEwgfSwNCj4gPiA+ID4NCj4gPiA+ID4gK307DQo+ID4gPiA+DQo+ID4gPiA+ICsN Cj4gPiA+ID4NCj4gPiA+ID4gK1VJTlROICBtUGFyYWxsZWxoYXNoVGVzdE51bSA9IEFSUkFZX1NJ WkUgKG1QYXJhbGxlbGhhc2hUZXN0KTsNCj4gPiA+ID4NCj4gPiA+ID4gZGlmZiAtLWdpdCBhL0Ny eXB0b1BrZy9DcnlwdG9Qa2cuZGVjIGIvQ3J5cHRvUGtnL0NyeXB0b1BrZy5kZWMgaW5kZXgNCj4g PiA+ID4gNTg4ODk0MWJhYi4uM2FmNTVkOWMxMCAxMDA2NDQNCj4gPiA+ID4gLS0tIGEvQ3J5cHRv UGtnL0NyeXB0b1BrZy5kZWMNCj4gPiA+ID4gKysrIGIvQ3J5cHRvUGtnL0NyeXB0b1BrZy5kZWMN Cj4gPiA+ID4gQEAgLTQsNyArNCw3IEBADQo+ID4gPiA+ICAjICBUaGlzIFBhY2thZ2UgcHJvdmlk ZXMgY3J5cHRvZ3JhcGhpYy1yZWxhdGVkIGxpYnJhcmllcyBmb3IgVUVGSQ0KPiA+ID4gPiBzZWN1 cml0eSBtb2R1bGVzLg0KPiA+ID4gPg0KPiA+ID4gPiAgIyAgSXQgYWxzbyBwcm92aWRlcyBhIHRl c3QgYXBwbGljYXRpb24gdG8gdGVzdCBsaWJyYXJpZXMuDQo+ID4gPiA+DQo+ID4gPiA+ICAjDQo+ ID4gPiA+DQo+ID4gPiA+IC0jICBDb3B5cmlnaHQgKGMpIDIwMDkgLSAyMDIwLCBJbnRlbCBDb3Jw b3JhdGlvbi4gQWxsIHJpZ2h0cw0KPiA+ID4gPiByZXNlcnZlZC48QlI+DQo+ID4gPiA+DQo+ID4g PiA+ICsjICBDb3B5cmlnaHQgKGMpIDIwMDkgLSAyMDIyLCBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxs IHJpZ2h0cw0KPiA+ID4gPiArcmVzZXJ2ZWQuPEJSPg0KPiA+ID4gPg0KPiA+ID4gPiAgIyAgU1BE WC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0yLUNsYXVzZS1QYXRlbnQNCj4gPiA+ID4NCj4gPiA+ ID4gICMNCj4gPiA+ID4NCj4gPiA+ID4gICMjDQo+ID4gPiA+DQo+ID4gPiA+IEBAIC04MSw1ICs4 MSwxMiBAQA0KPiA+ID4gPiAgICAjIEBWYWxpZExpc3QgMHg4MDAwMDAwMSB8IDB4MDAwMDAwMDEs IDB4MDAwMDAwMDIsIDB4MDAwMDAwMDQsDQo+ID4gPiA+IDB4MDAwMDAwMDgsIDB4MDAwMDAwMTAN Cj4gPiA+ID4NCj4gPiA+ID4NCj4gPiA+ID4NCj4gPiA+DQo+IGdFZmlDcnlwdG9Qa2dUb2tlblNw YWNlR3VpZC5QY2RIYXNoQXBpTGliUG9saWN5fDB4MDAwMDAwMDJ8VUlOVDMyfDB4DQo+ID4gPiAw MA0KPiA+ID4gPiAwMDAwMDENCj4gPiA+ID4NCj4gPiA+ID4NCj4gPiA+ID4NCj4gPiA+ID4gK1tQ Y2RzRml4ZWRBdEJ1aWxkLCBQY2RzUGF0Y2hhYmxlSW5Nb2R1bGUsIFBjZHNEeW5hbWljLA0KPiA+ ID4gUGNkc0R5bmFtaWNFeF0NCj4gPiA+ID4NCj4gPiA+ID4gKyAgIyMgVGhpcyBQQ0QgaW5kaWNh dGVzIHRoZSBibG9jayBudW1iZXIgb2YgcGFyYWxsZWwgaGFzaA0KPiA+ID4gPg0KPiA+ID4gPiAr ICAjICBCYXNlZCBvbiB0aGUgdmFsdWUgc2V0LCBwYXJhbGxlbCBoYXNoIGNhbiBjaG9zZSB0aGUg YmxvY2sNCj4gPiA+ID4NCj4gPiA+ID4gKyAgIyAgbnVtYmVyIHRvIGNhbGN1bGF0ZSBzcGVjaWZp YyBoYXNoLjxCUj4NCj4gPiA+ID4NCj4gPiA+ID4gKyAgIyAgVGhlIG51bWJlciBjYW4gYmUgc2V0 IGJ5IHBsYXRmb3JtIHRlYW0gYWNjb3JkaW5nIHRvIHRoZSBjb3JlDQo+ID4gPiBudW1iZXIuDQo+ ID4gPiA+DQo+ID4gPiA+ICsNCj4gPiA+ID4NCj4gPiA+DQo+IGdFZmlDcnlwdG9Qa2dUb2tlblNw YWNlR3VpZC5QY2RQYXJhbGxlbEhhc2hCbG9ja051bWJlcnwweDAxMDB8VUlOVDENCj4gPiA+IDZ8 MA0KPiA+ID4gPiB4MDAwMDAwMDMNCj4gPiA+ID4NCj4gPiA+ID4gKw0KPiA+ID4gPg0KPiA+ID4g PiAgW1VzZXJFeHRlbnNpb25zLlRpYW5vQ29yZS4iRXh0cmFGaWxlcyJdDQo+ID4gPiA+DQo+ID4g PiA+ICAgIENyeXB0b1BrZ0V4dHJhLnVuaQ0KPiA+ID4gPg0KPiA+ID4gPiBkaWZmIC0tZ2l0IGEv Q3J5cHRvUGtnL0luY2x1ZGUvTGlicmFyeS9CYXNlQ3J5cHRMaWIuaA0KPiA+ID4gPiBiL0NyeXB0 b1BrZy9JbmNsdWRlL0xpYnJhcnkvQmFzZUNyeXB0TGliLmgNCj4gPiA+ID4gaW5kZXggZjRiYzdj MGQ3My4uMGIyNzRiMTI1NyAxMDA2NDQNCj4gPiA+ID4gLS0tIGEvQ3J5cHRvUGtnL0luY2x1ZGUv TGlicmFyeS9CYXNlQ3J5cHRMaWIuaA0KPiA+ID4gPiArKysgYi9DcnlwdG9Qa2cvSW5jbHVkZS9M aWJyYXJ5L0Jhc2VDcnlwdExpYi5oDQo+ID4gPiA+IEBAIC00LDcgKzQsNyBAQA0KPiA+ID4gPiAg ICBwcmltaXRpdmVzIChIYXNoIFNlcmlhbHMsIEhNQUMsIFJTQSwgRGlmZmllLUhlbGxtYW4sIGV0 YykgZm9yIFVFRkkNCj4gPiA+ID4gc2VjdXJpdHkNCj4gPiA+ID4NCj4gPiA+ID4gICAgZnVuY3Rp b25hbGl0eSBlbmFibGluZy4NCj4gPiA+ID4NCj4gPiA+ID4NCj4gPiA+ID4NCj4gPiA+ID4gLUNv cHlyaWdodCAoYykgMjAwOSAtIDIwMjAsIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzDQo+ ID4gPiA+IHJlc2VydmVkLjxCUj4NCj4gPiA+ID4NCj4gPiA+ID4gK0NvcHlyaWdodCAoYykgMjAw OSAtIDIwMjIsIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzDQo+ID4gPiA+ICtyZXNlcnZl ZC48QlI+DQo+ID4gPiA+DQo+ID4gPiA+ICBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTIt Q2xhdXNlLVBhdGVudA0KPiA+ID4gPg0KPiA+ID4gPg0KPiA+ID4gPg0KPiA+ID4gPiAgKiovDQo+ ID4gPiA+DQo+ID4gPiA+IEBAIC03NTMsNiArNzUzLDMzIEBAIFNoYTUxMkhhc2hBbGwgKA0KPiA+ ID4gPiAgICBPVVQgIFVJTlQ4ICAgICAgICpIYXNoVmFsdWUNCj4gPiA+ID4NCj4gPiA+ID4gICAg KTsNCj4gPiA+ID4NCj4gPiA+ID4NCj4gPiA+ID4NCj4gPiA+ID4gKy8qKg0KPiA+ID4gPg0KPiA+ ID4gPiArICBQYXJhbGxlbCBoYXNoIGZ1bmN0aW9uIFBhcmFsbGVsSGFzaDI1NiwgYXMgZGVmaW5l ZCBpbiBOSVNUJ3MNCj4gPiA+ID4gKyBTcGVjaWFsIFB1YmxpY2F0aW9uDQo+ID4gPiA+IDgwMC0x ODUsDQo+ID4gPiA+DQo+ID4gPiA+ICsgIHB1Ymxpc2hlZCBEZWNlbWJlciAyMDE2Lg0KPiA+ID4g Pg0KPiA+ID4gPiArDQo+ID4gPiA+DQo+ID4gPiA+ICsgIEBwYXJhbVtpbl0gICBJbnB1dCAgICAg ICAgICAgIFBvaW50ZXIgdG8gdGhlIGlucHV0IG1lc3NhZ2UgKFgpLg0KPiA+ID4gPg0KPiA+ID4g PiArICBAcGFyYW1baW5dICAgSW5wdXRCeXRlTGVuICAgICBUaGUgbnVtYmVyKD4wKSBvZiBpbnB1 dCBieXRlcw0KPiBwcm92aWRlZA0KPiA+ID4gZm9yIHRoZQ0KPiA+ID4gPiBpbnB1dCBkYXRhLg0K PiA+ID4gPg0KPiA+ID4gPiArICBAcGFyYW1bb3V0XSAgT3V0cHV0ICAgICAgICAgICBQb2ludGVy IHRvIHRoZSBvdXRwdXQgYnVmZmVyLg0KPiA+ID4gPg0KPiA+ID4gPiArICBAcGFyYW1baW5dICAg T3V0cHV0Qnl0ZUxlbiAgICBUaGUgZGVzaXJlZCBudW1iZXIgb2Ygb3V0cHV0IGJ5dGVzDQo+IChM KS4NCj4gPiA+ID4NCj4gPiA+ID4gKyAgQHBhcmFtW2luXSAgIEN1c3RvbWl6YXRpb24gICAgUG9p bnRlciB0byB0aGUgY3VzdG9taXphdGlvbiBzdHJpbmcgKFMpLg0KPiA+ID4gPg0KPiA+ID4gPiAr ICBAcGFyYW1baW5dICAgQ3VzdG9tQnl0ZUxlbiAgICBUaGUgbGVuZ3RoIG9mIHRoZSBjdXN0b21p emF0aW9uIHN0cmluZw0KPiBpbg0KPiA+ID4gYnl0ZXMuDQo+ID4gPiA+DQo+ID4gPiA+ICsNCj4g PiA+ID4NCj4gPiA+ID4gKyAgQHJldHZhbCBUUlVFICAgUGFyYWxsZWxIYXNoMjU2IGRpZ2VzdCBj b21wdXRhdGlvbiBzdWNjZWVkZWQuDQo+ID4gPiA+DQo+ID4gPiA+ICsgIEByZXR2YWwgRkFMU0Ug IFBhcmFsbGVsSGFzaDI1NiBkaWdlc3QgY29tcHV0YXRpb24gZmFpbGVkLg0KPiA+ID4gPg0KPiA+ ID4gPiArICBAcmV0dmFsIEZBTFNFICBUaGlzIGludGVyZmFjZSBpcyBub3Qgc3VwcG9ydGVkLg0K PiA+ID4gPg0KPiA+ID4gPiArDQo+ID4gPiA+DQo+ID4gPiA+ICsqKi8NCj4gPiA+ID4NCj4gPiA+ ID4gK0JPT0xFQU4NCj4gPiA+ID4NCj4gPiA+ID4gK0VGSUFQSQ0KPiA+ID4gPg0KPiA+ID4gPiAr UGFyYWxsZWxIYXNoMjU2SGFzaEFsbCAoDQo+ID4gPiA+DQo+ID4gPiA+ICsgIElOIENPTlNUIFZP SUQgICAgICAgICAgICAqSW5wdXQsDQo+ID4gPiA+DQo+ID4gPiA+ICsgIElOICAgICAgIFVJTlRO ICAgICAgICAgICBJbnB1dEJ5dGVMZW4sDQo+ID4gPiA+DQo+ID4gPiA+ICsgIE9VVCAgICAgIFZP SUQgICAgICAgICAgICAqT3V0cHV0LA0KPiA+ID4gPg0KPiA+ID4gPiArICBJTiAgICAgICBVSU5U TiAgICAgICAgICAgT3V0cHV0Qnl0ZUxlbiwNCj4gPiA+ID4NCj4gPiA+ID4gKyAgSU4gQ09OU1Qg Vk9JRCAgICAgICAgICAgICpDdXN0b21pemF0aW9uLA0KPiA+ID4gPg0KPiA+ID4gPiArICBJTiAg ICAgICBVSU5UTiAgICAgICAgICAgQ3VzdG9tQnl0ZUxlbg0KPiA+ID4gPg0KPiA+ID4gPiArICAp Ow0KPiA+ID4gPg0KPiA+ID4gPiArDQo+ID4gPiA+DQo+ID4gPiA+ICAvKioNCj4gPiA+ID4NCj4g PiA+ID4gICAgUmV0cmlldmVzIHRoZSBzaXplLCBpbiBieXRlcywgb2YgdGhlIGNvbnRleHQgYnVm ZmVyIHJlcXVpcmVkIGZvcg0KPiA+ID4gPiBTTTMgaGFzaCBvcGVyYXRpb25zLg0KPiA+ID4gPg0K PiA+ID4gPg0KPiA+ID4gPg0KPiA+ID4gPiBkaWZmIC0tZ2l0IGEvQ3J5cHRvUGtnL0xpYnJhcnkv QmFzZUNyeXB0TGliL1NtbUNyeXB0TGliLmluZg0KPiA+ID4gPiBiL0NyeXB0b1BrZy9MaWJyYXJ5 L0Jhc2VDcnlwdExpYi9TbW1DcnlwdExpYi5pbmYNCj4gPiA+ID4gaW5kZXggZTY0NzBkN2EyMS4u NzAxNTkxNjNkNCAxMDA2NDQNCj4gPiA+ID4gLS0tIGEvQ3J5cHRvUGtnL0xpYnJhcnkvQmFzZUNy eXB0TGliL1NtbUNyeXB0TGliLmluZg0KPiA+ID4gPiArKysgYi9DcnlwdG9Qa2cvTGlicmFyeS9C YXNlQ3J5cHRMaWIvU21tQ3J5cHRMaWIuaW5mDQo+ID4gPiA+IEBAIC0xMCw3ICsxMCw3IEBADQo+ ID4gPiA+ICAjICBSU0EgZXh0ZXJuYWwgZnVuY3Rpb25zLCBQS0NTIzcgU2lnbmVkRGF0YSBzaWdu IGZ1bmN0aW9ucywNCj4gPiA+ID4gRGlmZmllLUhlbGxtYW4gZnVuY3Rpb25zLCBhbmQNCj4gPiA+ ID4NCj4gPiA+ID4gICMgIGF1dGhlbnRpY29kZSBzaWduYXR1cmUgdmVyaWZpY2F0aW9uIGZ1bmN0 aW9ucyBhcmUgbm90IHN1cHBvcnRlZCBpbg0KPiA+ID4gPiB0aGlzIGluc3RhbmNlLg0KPiA+ID4g Pg0KPiA+ID4gPiAgIw0KPiA+ID4gPg0KPiA+ID4gPiAtIyAgQ29weXJpZ2h0IChjKSAyMDEwIC0g MjAyMSwgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMNCj4gPiA+ID4gcmVzZXJ2ZWQuPEJS Pg0KPiA+ID4gPg0KPiA+ID4gPiArIyAgQ29weXJpZ2h0IChjKSAyMDEwIC0gMjAyMiwgSW50ZWwg Q29ycG9yYXRpb24uIEFsbCByaWdodHMNCj4gPiA+ID4gK3Jlc2VydmVkLjxCUj4NCj4gPiA+ID4N Cj4gPiA+ID4gICMgIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1c2UtUGF0ZW50 DQo+ID4gPiA+DQo+ID4gPiA+ICAjDQo+ID4gPiA+DQo+ID4gPiA+ICAjIw0KPiA+ID4gPg0KPiA+ ID4gPiBAQCAtMzgsNiArMzgsMTAgQEANCj4gPiA+ID4gICAgSGFzaC9DcnlwdFNoYTI1Ni5jDQo+ ID4gPiA+DQo+ID4gPiA+ICAgIEhhc2gvQ3J5cHRTbTMuYw0KPiA+ID4gPg0KPiA+ID4gPiAgICBI YXNoL0NyeXB0U2hhNTEyLmMNCj4gPiA+ID4NCj4gPiA+ID4gKyAgSGFzaC9DcnlwdFNoYTMuYw0K PiA+ID4gPg0KPiA+ID4gPiArICBIYXNoL0NyeXB0WGtjcC5jDQo+ID4gPiA+DQo+ID4gPiA+ICsg IEhhc2gvQ3J5cHRDU2hha2UyNTYuYw0KPiA+ID4gPg0KPiA+ID4gPiArICBIYXNoL0NyeXB0UGFy YWxsZWxIYXNoLmMNCj4gPiA+ID4NCj4gPiA+ID4gICAgSG1hYy9DcnlwdEhtYWNTaGEyNTYuYw0K PiA+ID4gPg0KPiA+ID4gPiAgICBLZGYvQ3J5cHRIa2RmTnVsbC5jDQo+ID4gPiA+DQo+ID4gPiA+ ICAgIENpcGhlci9DcnlwdEFlcy5jDQo+ID4gPiA+DQo+ID4gPiA+IEBAIC04NSw2ICs4OSw5IEBA DQo+ID4gPiA+ICAgIE9wZW5zc2xMaWINCj4gPiA+ID4NCj4gPiA+ID4gICAgSW50cmluc2ljTGli DQo+ID4gPiA+DQo+ID4gPiA+ICAgIFByaW50TGliDQo+ID4gPiA+DQo+ID4gPiA+ICsgIE1tU2Vy dmljZXNUYWJsZUxpYg0KPiA+ID4gPg0KPiA+ID4gPiArICBTeW5jaHJvbml6YXRpb25MaWINCj4g PiA+ID4NCj4gPiA+ID4gKyAgUGNkTGliDQo+ID4gPiA+DQo+ID4gPiA+DQo+ID4gPiA+DQo+ID4g PiA+ICAjDQo+ID4gPiA+DQo+ID4gPiA+ICAjIFJlbW92ZSB0aGVzZSBbQnVpbGRPcHRpb25zXSBh ZnRlciB0aGlzIGxpYnJhcnkgaXMgY2xlYW5lZCB1cA0KPiA+ID4gPg0KPiA+ID4gPiBAQCAtMTAx LDMgKzEwOCw2IEBADQo+ID4gPiA+ICAgIEdDQzoqX0NMQU5HMzVfKl9DQ19GTEFHUyA9IC1zdGQ9 Yzk5DQo+ID4gPiA+DQo+ID4gPiA+ICAgIEdDQzoqX0NMQU5HMzhfKl9DQ19GTEFHUyA9IC1zdGQ9 Yzk5DQo+ID4gPiA+DQo+ID4gPiA+ICAgIEdDQzoqX0NMQU5HUERCXypfQ0NfRkxBR1MgPSAtc3Rk PWM5OQ0KPiA+ID4gPiAtV25vLWVycm9yPWluY29tcGF0aWJsZS1wb2ludGVyLSB0eXBlcw0KPiA+ ID4gPg0KPiA+ID4gPiArDQo+ID4gPiA+DQo+ID4gPiA+ICtbUGNkXQ0KPiA+ID4gPg0KPiA+ID4g PiArICBnRWZpQ3J5cHRvUGtnVG9rZW5TcGFjZUd1aWQuUGNkUGFyYWxsZWxIYXNoQmxvY2tOdW1i ZXINCj4gPiA+ID4NCj4gPiA+ID4gZGlmZiAtLWdpdCBhL0NyeXB0b1BrZy9MaWJyYXJ5L0luY2x1 ZGUvQ3J0TGliU3VwcG9ydC5oDQo+ID4gPiA+IGIvQ3J5cHRvUGtnL0xpYnJhcnkvSW5jbHVkZS9D cnRMaWJTdXBwb3J0LmgNCj4gPiA+ID4gaW5kZXggZDI1N2RjYThmYS4uMzVkOWM2MmEwYiAxMDA2 NDQNCj4gPiA+ID4gLS0tIGEvQ3J5cHRvUGtnL0xpYnJhcnkvSW5jbHVkZS9DcnRMaWJTdXBwb3J0 LmgNCj4gPiA+ID4gKysrIGIvQ3J5cHRvUGtnL0xpYnJhcnkvSW5jbHVkZS9DcnRMaWJTdXBwb3J0 LmgNCj4gPiA+ID4gQEAgLTIsNyArMiw3IEBADQo+ID4gPiA+ICAgIFJvb3QgaW5jbHVkZSBmaWxl IG9mIEMgcnVudGltZSBsaWJyYXJ5IHRvIHN1cHBvcnQgYnVpbGRpbmcgdGhlDQo+ID4gPiA+IHRo aXJkLXBhcnR5DQo+ID4gPiA+DQo+ID4gPiA+ICAgIGNyeXB0b2dyYXBoaWMgbGlicmFyeS4NCj4g PiA+ID4NCj4gPiA+ID4NCj4gPiA+ID4NCj4gPiA+ID4gLUNvcHlyaWdodCAoYykgMjAxMCAtIDIw MjEsIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzDQo+ID4gPiA+IHJlc2VydmVkLjxCUj4N Cj4gPiA+ID4NCj4gPiA+ID4gK0NvcHlyaWdodCAoYykgMjAxMCAtIDIwMjIsIEludGVsIENvcnBv cmF0aW9uLiBBbGwgcmlnaHRzDQo+ID4gPiA+ICtyZXNlcnZlZC48QlI+DQo+ID4gPiA+DQo+ID4g PiA+ICBDb3B5cmlnaHQgKGMpIDIwMjAsIEhld2xldHQgUGFja2FyZCBFbnRlcnByaXNlIERldmVs b3BtZW50IExQLiBBbGwNCj4gPiA+ID4gcmlnaHRzIHJlc2VydmVkLjxCUj4NCj4gPiA+ID4NCj4g PiA+ID4gIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1c2UtUGF0ZW50DQo+ID4g PiA+DQo+ID4gPiA+DQo+ID4gPiA+DQo+ID4gPiA+IEBAIC0yMSw2ICsyMSw4IEBAIFNQRFgtTGlj ZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1c2UtUGF0ZW50DQo+ID4gPiA+DQo+ID4gPiA+DQo+ ID4gPiA+ICAjZGVmaW5lIE1BWF9TVFJJTkdfU0laRSAgMHgxMDAwDQo+ID4gPiA+DQo+ID4gPiA+ DQo+ID4gPiA+DQo+ID4gPiA+ICsjZGVmaW5lIFBBUkFMTEVMSEFTSF9DVVNUT01JWkFUSU9OICJQ YXJhbGxlbEhhc2giDQo+ID4gPiA+DQo+ID4gPiA+ICsNCj4gPiA+ID4NCj4gPiA+ID4gIC8vDQo+ ID4gPiA+DQo+ID4gPiA+ICAvLyBXZSBhbHJlYWR5IGhhdmUgIm5vLXVpIiBpbiBvdXQgQ29uZmln dXJlIGludm9jYXRpb24uDQo+ID4gPiA+DQo+ID4gPiA+ICAvLyBidXQgdGhlIGNvZGUgc3RpbGwg ZmFpbHMgdG8gY29tcGlsZS4NCj4gPiA+ID4NCj4gPiA+ID4gQEAgLTExMSw2ICsxMTMsNyBAQCB0 eXBlZGVmIFVJTlQ4ICAgdV9jaGFyOw0KPiA+ID4gPiAgdHlwZWRlZiBVSU5UMzIgIHVpZF90Ow0K PiA+ID4gPg0KPiA+ID4gPiAgdHlwZWRlZiBVSU5UMzIgIGdpZF90Ow0KPiA+ID4gPg0KPiA+ID4g PiAgdHlwZWRlZiBDSEFSMTYgIHdjaGFyX3Q7DQo+ID4gPiA+DQo+ID4gPiA+ICt0eXBlZGVmIFVJ TlQ2NCAgdWludDY0X3Q7DQo+ID4gPiA+DQo+ID4gPiA+DQo+ID4gPiA+DQo+ID4gPiA+ICAvLw0K PiA+ID4gPg0KPiA+ID4gPiAgLy8gRmlsZSBvcGVyYXRpb25zIGFyZSBub3QgcmVxdWlyZWQgZm9y IEVGSSBidWlsZGluZywNCj4gPiA+ID4NCj4gPiA+ID4gZGlmZiAtLWdpdCBhL0NyeXB0b1BrZy9M aWJyYXJ5L0luY2x1ZGUvc2hhMy5oDQo+ID4gPiA+IGIvQ3J5cHRvUGtnL0xpYnJhcnkvSW5jbHVk ZS9zaGEzLmgNCj4gPiA+ID4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gPiA+ID4gaW5kZXggMDAw MDAwMDAwMC4uNzFiNGM3NTU0OA0KPiA+ID4gPiAtLS0gL2Rldi9udWxsDQo+ID4gPiA+ICsrKyBi L0NyeXB0b1BrZy9MaWJyYXJ5L0luY2x1ZGUvc2hhMy5oDQo+ID4gPiA+IEBAIC0wLDAgKzEsMzIg QEANCj4gPiA+ID4gKy8qKiBAZmlsZQ0KPiA+ID4gPg0KPiA+ID4gPiArICBTSEEzIHJlYWx0ZWQg ZnVuY3Rpb25zIGZyb20gT3BlblNTTC4NCj4gPiA+ID4NCj4gPiA+ID4gKw0KPiA+ID4gPg0KPiA+ ID4gPiArQ29weXJpZ2h0IChjKSAyMDIyLCBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyBy ZXNlcnZlZC48QlI+DQo+ID4gPiA+DQo+ID4gPiA+ICtTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjog QlNELTItQ2xhdXNlLVBhdGVudA0KPiA+ID4gPg0KPiA+ID4gPiArDQo+ID4gPiA+DQo+ID4gPiA+ ICtDb3B5cmlnaHQgMjAxNy0yMDIyIFRoZSBPcGVuU1NMIFByb2plY3QgQXV0aG9ycy4gQWxsIFJp Z2h0cyBSZXNlcnZlZC4NCj4gPiA+ID4NCj4gPiA+ID4gK0xpY2Vuc2VkIHVuZGVyIHRoZSBPcGVu U1NMIGxpY2Vuc2UgKHRoZSAiTGljZW5zZSIpLiAgWW91IG1heSBub3QgdXNlDQo+ID4gPiA+DQo+ ID4gPiA+ICt0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4g IFlvdSBjYW4gb2J0YWluIGENCj4gPiA+ID4gK2NvcHkNCj4gPiA+ID4NCj4gPiA+ID4gK2luIHRo ZSBmaWxlIExJQ0VOU0UgaW4gdGhlIHNvdXJjZSBkaXN0cmlidXRpb24gb3IgYXQNCj4gPiA+ID4N Cj4gPiA+ID4gK2h0dHBzOi8vd3d3Lm9wZW5zc2wub3JnL3NvdXJjZS9saWNlbnNlLmh0bWwNCj4g PiA+ID4NCj4gPiA+ID4gKw0KPiA+ID4gPg0KPiA+ID4gPiArKiovDQo+ID4gPiA+DQo+ID4gPiA+ ICsNCj4gPiA+ID4NCj4gPiA+ID4gKyNpbmNsdWRlIDxDcnRMaWJTdXBwb3J0Lmg+DQo+ID4gPiA+ DQo+ID4gPiA+ICsNCj4gPiA+ID4NCj4gPiA+ID4gKyNkZWZpbmUgS0VDQ0FLMTYwMF9XSURUSCAx NjAwDQo+ID4gPiA+DQo+ID4gPiA+ICsNCj4gPiA+ID4NCj4gPiA+ID4gK3R5cGVkZWYgc3RydWN0 IHsNCj4gPiA+ID4NCj4gPiA+ID4gKyAgICB1aW50NjRfdCBBWzVdWzVdOw0KPiA+ID4gPg0KPiA+ ID4gPiArICAgIHNpemVfdCBibG9ja19zaXplOyAgICAgICAgICAvKiBjYWNoZWQgY3R4LT5kaWdl c3QtPmJsb2NrX3NpemUgKi8NCj4gPiA+ID4NCj4gPiA+ID4gKyAgICBzaXplX3QgbWRfc2l6ZTsg ICAgICAgICAgICAgLyogb3V0cHV0IGxlbmd0aCwgdmFyaWFibGUgaW4gWE9GICovDQo+ID4gPiA+ DQo+ID4gPiA+ICsgICAgc2l6ZV90IG51bTsgICAgICAgICAgICAgICAgIC8qIHVzZWQgYnl0ZXMg aW4gYmVsb3cgYnVmZmVyICovDQo+ID4gPiA+DQo+ID4gPiA+ICsgICAgdW5zaWduZWQgY2hhciBi dWZbS0VDQ0FLMTYwMF9XSURUSCAvIDggLSAzMl07DQo+ID4gPiA+DQo+ID4gPiA+ICsgICAgdW5z aWduZWQgY2hhciBwYWQ7DQo+ID4gPiA+DQo+ID4gPiA+ICt9IEtFQ0NBSzE2MDBfQ1RYOw0KPiA+ ID4gPg0KPiA+ID4gPiArDQo+ID4gPiA+DQo+ID4gPiA+ICtpbnQgaW5pdChLRUNDQUsxNjAwX0NU WCAqY3R4LCB1bnNpZ25lZCBjaGFyIHBhZCwgc2l6ZV90IGJzeiwgc2l6ZV90DQo+ID4gPiA+ICtt ZF9zaXplKTsNCj4gPiA+ID4NCj4gPiA+ID4gKw0KPiA+ID4gPg0KPiA+ID4gPiAraW50IHNoYTNf dXBkYXRlKEtFQ0NBSzE2MDBfQ1RYICpjdHgsIGNvbnN0IHZvaWQgKl9pbnAsIHNpemVfdCBsZW4p Ow0KPiA+ID4gPg0KPiA+ID4gPiArDQo+ID4gPiA+DQo+ID4gPiA+ICtpbnQgc2hhM19maW5hbChL RUNDQUsxNjAwX0NUWCAqY3R4LCB1bnNpZ25lZCBjaGFyICptZCk7DQo+ID4gPiA+DQo+ID4gPiA+ IGRpZmYgLS1naXQgYS9DcnlwdG9Qa2cvTGlicmFyeS9JbmNsdWRlL3hrY3AuaA0KPiA+ID4gPiBi L0NyeXB0b1BrZy9MaWJyYXJ5L0luY2x1ZGUveGtjcC5oDQo+ID4gPiA+IG5ldyBmaWxlIG1vZGUg MTAwNjQ0DQo+ID4gPiA+IGluZGV4IDAwMDAwMDAwMDAuLmIzMjhkNjcyZTQNCj4gPiA+ID4gLS0t IC9kZXYvbnVsbA0KPiA+ID4gPiArKysgYi9DcnlwdG9Qa2cvTGlicmFyeS9JbmNsdWRlL3hrY3Au aA0KPiA+ID4gPiBAQCAtMCwwICsxLDIzIEBADQo+ID4gPiA+ICsvKiogQGZpbGUNCj4gPiA+ID4N Cj4gPiA+ID4gKyAgRW5jb2RlIHJlYWx0ZWQgZnVuY3Rpb25zIGZyb20gWGtjcC4NCj4gPiA+ID4N Cj4gPiA+ID4gKw0KPiA+ID4gPg0KPiA+ID4gPiArQ29weXJpZ2h0IChjKSAyMDIyLCBJbnRlbCBD b3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC48QlI+DQo+ID4gPiA+DQo+ID4gPiA+ICtT UERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTItQ2xhdXNlLVBhdGVudA0KPiA+ID4gPg0KPiA+ ID4gPiArDQo+ID4gPiA+DQo+ID4gPiA+ICtUaGUgZVh0ZW5kZWQgS2VjY2FrIENvZGUgUGFja2Fn ZSAoWEtDUCkNCj4gPiA+ID4NCj4gPiA+ID4gK2h0dHBzOi8vZ2l0aHViLmNvbS9YS0NQL1hLQ1AN Cj4gPiA+ID4NCj4gPiA+ID4gK0tlY2NhaywgZGVzaWduZWQgYnkgR3VpZG8gQmVydG9uaSwgSm9h biBEYWVtZW4sIE1pY2hhw6tsIFBlZXRlcnMNCj4gYW5kDQo+ID4gPiA+ICtHaWxsZXMNCj4gPiA+ ID4gVmFuIEFzc2NoZS4NCj4gPiA+ID4NCj4gPiA+ID4gK0ltcGxlbWVudGF0aW9uIGJ5IHRoZSBk ZXNpZ25lcnMsIGhlcmVieSBkZW5vdGVkIGFzICJ0aGUNCj4gaW1wbGVtZW50ZXIiLg0KPiA+ID4g Pg0KPiA+ID4gPiArRm9yIG1vcmUgaW5mb3JtYXRpb24sIGZlZWRiYWNrIG9yIHF1ZXN0aW9ucywg cGxlYXNlIHJlZmVyIHRvIHRoZQ0KPiA+ID4gPiArS2VjY2FrIFRlYW0NCj4gPiA+ID4gd2Vic2l0 ZToNCj4gPiA+ID4NCj4gPiA+ID4gK2h0dHBzOi8va2VjY2FrLnRlYW0vDQo+ID4gPiA+DQo+ID4g PiA+ICtUbyB0aGUgZXh0ZW50IHBvc3NpYmxlIHVuZGVyIGxhdywgdGhlIGltcGxlbWVudGVyIGhh cyB3YWl2ZWQgYWxsDQo+ID4gPiA+ICtjb3B5cmlnaHQNCj4gPiA+ID4NCj4gPiA+ID4gK2FuZCBy ZWxhdGVkIG9yIG5laWdoYm9yaW5nIHJpZ2h0cyB0byB0aGUgc291cmNlIGNvZGUgaW4gdGhpcyBm aWxlLg0KPiA+ID4gPg0KPiA+ID4gPiAraHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj ZG9tYWluL3plcm8vMS4wLw0KPiA+ID4gPg0KPiA+ID4gPiArDQo+ID4gPiA+DQo+ID4gPiA+ICsq Ki8NCj4gPiA+ID4NCj4gPiA+ID4gKw0KPiA+ID4gPg0KPiA+ID4gPiArI2luY2x1ZGUgPENydExp YlN1cHBvcnQuaD4NCj4gPiA+ID4NCj4gPiA+ID4gKw0KPiA+ID4gPg0KPiA+ID4gPiArdW5zaWdu ZWQgaW50IGxlZnRfZW5jb2RlKHVuc2lnbmVkIGNoYXIgKiBlbmNidWYsIHNpemVfdCB2YWx1ZSk7 DQo+ID4gPiA+DQo+ID4gPiA+ICsNCj4gPiA+ID4NCj4gPiA+ID4gK3Vuc2lnbmVkIGludCByaWdo dF9lbmNvZGUodW5zaWduZWQgY2hhciAqIGVuY2J1Ziwgc2l6ZV90IHZhbHVlKTsNCj4gPiA+ID4N Cj4gPiA+ID4gZGlmZiAtLWdpdA0KPiA+ID4gPiBhL0NyeXB0b1BrZy9UZXN0L1VuaXRUZXN0L0xp YnJhcnkvQmFzZUNyeXB0TGliL1Rlc3RCYXNlQ3J5cHRMaWIuaA0KPiA+ID4gPiBiL0NyeXB0b1Br Zy9UZXN0L1VuaXRUZXN0L0xpYnJhcnkvQmFzZUNyeXB0TGliL1Rlc3RCYXNlQ3J5cHRMaWIuaA0K PiA+ID4gPiBpbmRleCBhNmIzNDgyNzQyLi4wYmZmZDY4N2MyIDEwMDY0NA0KPiA+ID4gPiAtLS0N Cj4gYS9DcnlwdG9Qa2cvVGVzdC9Vbml0VGVzdC9MaWJyYXJ5L0Jhc2VDcnlwdExpYi9UZXN0QmFz ZUNyeXB0TGliLmgNCj4gPiA+ID4gKysrDQo+IGIvQ3J5cHRvUGtnL1Rlc3QvVW5pdFRlc3QvTGli cmFyeS9CYXNlQ3J5cHRMaWIvVGVzdEJhc2VDcnlwdExpYi5oDQo+ID4gPiA+IEBAIC0xLDcgKzEs NyBAQA0KPiA+ID4gPiAgLyoqIEBmaWxlDQo+ID4gPiA+DQo+ID4gPiA+ICAgIEFwcGxpY2F0aW9u IGZvciBDcnlwdG9ncmFwaGljIFByaW1pdGl2ZXMgVmFsaWRhdGlvbi4NCj4gPiA+ID4NCj4gPiA+ ID4NCj4gPiA+ID4NCj4gPiA+ID4gLUNvcHlyaWdodCAoYykgMjAwOSAtIDIwMTYsIEludGVsIENv cnBvcmF0aW9uLiBBbGwgcmlnaHRzDQo+ID4gPiA+IHJlc2VydmVkLjxCUj4NCj4gPiA+ID4NCj4g PiA+ID4gK0NvcHlyaWdodCAoYykgMjAwOSAtIDIwMjIsIEludGVsIENvcnBvcmF0aW9uLiBBbGwg cmlnaHRzDQo+ID4gPiA+ICtyZXNlcnZlZC48QlI+DQo+ID4gPiA+DQo+ID4gPiA+ICBTUERYLUxp Y2Vuc2UtSWRlbnRpZmllcjogQlNELTItQ2xhdXNlLVBhdGVudA0KPiA+ID4gPg0KPiA+ID4gPg0K PiA+ID4gPg0KPiA+ID4gPiAgKiovDQo+ID4gPiA+DQo+ID4gPiA+IEBAIC0xOSw2ICsxOSw3IEBA IFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1c2UtUGF0ZW50DQo+ID4gPiA+ICNp bmNsdWRlIDxMaWJyYXJ5L0Jhc2VMaWIuaD4NCj4gPiA+ID4NCj4gPiA+ID4gICNpbmNsdWRlIDxM aWJyYXJ5L0Jhc2VNZW1vcnlMaWIuaD4NCj4gPiA+ID4NCj4gPiA+ID4gICNpbmNsdWRlIDxMaWJy YXJ5L01lbW9yeUFsbG9jYXRpb25MaWIuaD4NCj4gPiA+ID4NCj4gPiA+ID4gKyNpbmNsdWRlIDxM aWJyYXJ5L1BjZExpYi5oPg0KPiA+ID4gPg0KPiA+ID4gPiAgLy8gI2luY2x1ZGUgPFVuaXRUZXN0 VHlwZXMuaD4NCj4gPiA+ID4NCj4gPiA+ID4gICNpbmNsdWRlIDxMaWJyYXJ5L1VuaXRUZXN0TGli Lmg+DQo+ID4gPiA+DQo+ID4gPiA+ICAvLyAjaW5jbHVkZSA8TGlicmFyeS9Vbml0VGVzdEFzc2Vy dExpYi5oPg0KPiA+ID4gPg0KPiA+ID4gPiBkaWZmIC0tZ2l0DQo+ID4gPiA+DQo+IGEvQ3J5cHRv UGtnL1Rlc3QvVW5pdFRlc3QvTGlicmFyeS9CYXNlQ3J5cHRMaWIvVGVzdEJhc2VDcnlwdExpYkhv c3QuaW4NCj4gPiA+ID4gZg0KPiA+ID4gPg0KPiBiL0NyeXB0b1BrZy9UZXN0L1VuaXRUZXN0L0xp YnJhcnkvQmFzZUNyeXB0TGliL1Rlc3RCYXNlQ3J5cHRMaWJIb3N0LmluDQo+ID4gPiA+IGYNCj4g PiA+ID4gaW5kZXggMDBjODY5MjY1MC4uNjFhNTlkNmE0NyAxMDA2NDQNCj4gPiA+ID4gLS0tDQo+ ID4gPiA+DQo+IGEvQ3J5cHRvUGtnL1Rlc3QvVW5pdFRlc3QvTGlicmFyeS9CYXNlQ3J5cHRMaWIv VGVzdEJhc2VDcnlwdExpYkhvc3QuaW4NCj4gPiA+ID4gZg0KPiA+ID4gPiArKysNCj4gPiA+IGIv Q3J5cHRvUGtnL1Rlc3QvVW5pdFRlc3QvTGlicmFyeS9CYXNlQ3J5cHRMaWIvVGVzdEJhc2VDcnlw dExpYkhvcw0KPiA+ID4gPiArKysgdC5pbmYNCj4gPiA+ID4gQEAgLTIsNiArMiw3IEBADQo+ID4g PiA+ICAjIEhvc3QtYmFzZWQgVW5pdFRlc3QgZm9yIEJhc2VDcnlwdExpYg0KPiA+ID4gPg0KPiA+ ID4gPiAgIw0KPiA+ID4gPg0KPiA+ID4gPiAgIyBDb3B5cmlnaHQgKGMpIE1pY3Jvc29mdCBDb3Jw b3JhdGlvbi48QlI+DQo+ID4gPiA+DQo+ID4gPiA+ICsjIENvcHlyaWdodCAoYykgMjAyMiwgSW50 ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuPEJSPg0KPiA+ID4gPg0KPiA+ID4g PiAgIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTItQ2xhdXNlLVBhdGVudA0KPiA+ID4g Pg0KPiA+ID4gPiAgIyMNCj4gPiA+ID4NCj4gPiA+ID4NCj4gPiA+ID4NCj4gPiA+ID4gQEAgLTM1 LDYgKzM2LDcgQEANCj4gPiA+ID4gICAgUGtjczdFa3VUZXN0cy5jDQo+ID4gPiA+DQo+ID4gPiA+ ICAgIE9hZXBFbmNyeXB0VGVzdHMuYw0KPiA+ID4gPg0KPiA+ID4gPiAgICBSc2FQc3NUZXN0cy5j DQo+ID4gPiA+DQo+ID4gPiA+ICsgIFBhcmFsbGVsaGFzaFRlc3RzLmMNCj4gPiA+ID4NCj4gPiA+ ID4NCj4gPiA+ID4NCj4gPiA+ID4gIFtQYWNrYWdlc10NCj4gPiA+ID4NCj4gPiA+ID4gICAgTWRl UGtnL01kZVBrZy5kZWMNCj4gPiA+ID4NCj4gPiA+ID4gQEAgLTQ1LDMgKzQ3LDggQEANCj4gPiA+ ID4gICAgRGVidWdMaWINCj4gPiA+ID4NCj4gPiA+ID4gICAgQmFzZUNyeXB0TGliDQo+ID4gPiA+ DQo+ID4gPiA+ICAgIFVuaXRUZXN0TGliDQo+ID4gPiA+DQo+ID4gPiA+ICsgIFBjZExpYg0KPiA+ ID4gPg0KPiA+ID4gPiArDQo+ID4gPiA+DQo+ID4gPiA+ICtbUGNkXQ0KPiA+ID4gPg0KPiA+ID4g PiArICBnRWZpQ3J5cHRvUGtnVG9rZW5TcGFjZUd1aWQuUGNkUGFyYWxsZWxIYXNoQmxvY2tOdW1i ZXINCj4gPiA+ID4NCj4gPiA+ID4gKw0KPiA+ID4gPg0KPiA+ID4gPiBkaWZmIC0tZ2l0DQo+ID4g PiA+DQo+IGEvQ3J5cHRvUGtnL1Rlc3QvVW5pdFRlc3QvTGlicmFyeS9CYXNlQ3J5cHRMaWIvVGVz dEJhc2VDcnlwdExpYlNoZWxsLmkNCj4gPiA+ID4gbmYNCj4gPiA+ID4NCj4gYi9DcnlwdG9Qa2cv VGVzdC9Vbml0VGVzdC9MaWJyYXJ5L0Jhc2VDcnlwdExpYi9UZXN0QmFzZUNyeXB0TGliU2hlbGwu aQ0KPiA+ID4gPiBuZg0KPiA+ID4gPiBpbmRleCBjYTc4OWFhNmFkLi42ODJmMjVhNzU0IDEwMDY0 NA0KPiA+ID4gPiAtLS0NCj4gPiA+ID4NCj4gYS9DcnlwdG9Qa2cvVGVzdC9Vbml0VGVzdC9MaWJy YXJ5L0Jhc2VDcnlwdExpYi9UZXN0QmFzZUNyeXB0TGliU2hlbGwuaQ0KPiA+ID4gPiBuZg0KPiA+ ID4gPiArKysNCj4gPiA+IGIvQ3J5cHRvUGtnL1Rlc3QvVW5pdFRlc3QvTGlicmFyeS9CYXNlQ3J5 cHRMaWIvVGVzdEJhc2VDcnlwdExpYlNoZQ0KPiA+ID4gPiArKysgbGwuaW5mDQo+ID4gPiA+IEBA IC0yLDYgKzIsNyBAQA0KPiA+ID4gPiAgIyBCYXNlQ3J5cHRMaWIgVW5pdFRlc3QgYnVpbHQgZm9y IGV4ZWN1dGlvbiBpbiBVRUZJIFNoZWxsLg0KPiA+ID4gPg0KPiA+ID4gPiAgIw0KPiA+ID4gPg0K PiA+ID4gPiAgIyBDb3B5cmlnaHQgKGMpIE1pY3Jvc29mdCBDb3Jwb3JhdGlvbi48QlI+DQo+ID4g PiA+DQo+ID4gPiA+ICsjIENvcHlyaWdodCAoYykgMjAyMiwgSW50ZWwgQ29ycG9yYXRpb24uIEFs bCByaWdodHMgcmVzZXJ2ZWQuPEJSPg0KPiA+ID4gPg0KPiA+ID4gPiAgIyBTUERYLUxpY2Vuc2Ut SWRlbnRpZmllcjogQlNELTItQ2xhdXNlLVBhdGVudA0KPiA+ID4gPg0KPiA+ID4gPiAgIyMNCj4g PiA+ID4NCj4gPiA+ID4NCj4gPiA+ID4NCj4gPiA+ID4gQEAgLTM2LDYgKzM3LDcgQEANCj4gPiA+ ID4gICAgUGtjczdFa3VUZXN0cy5jDQo+ID4gPiA+DQo+ID4gPiA+ICAgIE9hZXBFbmNyeXB0VGVz dHMuYw0KPiA+ID4gPg0KPiA+ID4gPiAgICBSc2FQc3NUZXN0cy5jDQo+ID4gPiA+DQo+ID4gPiA+ ICsgIFBhcmFsbGVsaGFzaFRlc3RzLmMNCj4gPiA+ID4NCj4gPiA+ID4NCj4gPiA+ID4NCj4gPiA+ ID4gIFtQYWNrYWdlc10NCj4gPiA+ID4NCj4gPiA+ID4gICAgTWRlUGtnL01kZVBrZy5kZWMNCj4g PiA+ID4NCj4gPiA+ID4gQEAgLTQ4LDMgKzUwLDcgQEANCj4gPiA+ID4gICAgVW5pdFRlc3RMaWIN Cj4gPiA+ID4NCj4gPiA+ID4gICAgUHJpbnRMaWINCj4gPiA+ID4NCj4gPiA+ID4gICAgQmFzZUNy eXB0TGliDQo+ID4gPiA+DQo+ID4gPiA+ICsgIFBjZExpYg0KPiA+ID4gPg0KPiA+ID4gPiArDQo+ ID4gPiA+DQo+ID4gPiA+ICtbUGNkXQ0KPiA+ID4gPg0KPiA+ID4gPiArICBnRWZpQ3J5cHRvUGtn VG9rZW5TcGFjZUd1aWQuUGNkUGFyYWxsZWxIYXNoQmxvY2tOdW1iZXINCj4gPiA+ID4NCj4gPiA+ ID4gLS0NCj4gPiA+ID4gMi4yNi4yLndpbmRvd3MuMQ0KDQo=