From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga18.intel.com (mga18.intel.com [134.134.136.126]) by mx.groups.io with SMTP id smtpd.web08.22239.1647226968028625519 for ; Sun, 13 Mar 2022 20:02:48 -0700 Authentication-Results: mx.groups.io; dkim=fail reason="unable to parse pub key" header.i=@intel.com header.s=intel header.b=V5QgulOv; spf=pass (domain: intel.com, ip: 134.134.136.126, mailfrom: lisa.huang@intel.com) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1647226968; x=1678762968; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=zqRnCK9GyJUP8XmWMeVK0qMJPw4HUZIlwM0ZbvtLm6c=; b=V5QgulOvAiLzgJnL+vCJNxsvyD7Vh70m2cFzSjc81s/puat3FPdIS62P eziJ7Uz8n/GK8sQGMWXc8M4RwDZvRez1fBKb1qls4gqlBp+eI2nXRc7Eb bGuCOAymls5V0qD/k/WHf11fgTuDyhUFl4LHgonLfirjjbzNE2HGwGkU6 UTnaNrm+4A+27bDAqcXMBDE0hiO+5fqOwwKx7SoCEqT8rJqqHf8Yz9I4D /Rr33Prr/buETxbr7pf4RwTvvQJ2OP+CuJ9g57JojFNAgnb7qkOltStEN Y4WRgU+wKoO26p1cvq/qwX9dxcp1m0c2TWbHbJxH2/dsvzZI1Lg3r1aty Q==; X-IronPort-AV: E=McAfee;i="6200,9189,10285"; a="238094412" X-IronPort-AV: E=Sophos;i="5.90,179,1643702400"; d="scan'208";a="238094412" Received: from fmsmga002.fm.intel.com ([10.253.24.26]) by orsmga106.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 13 Mar 2022 20:02:46 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.90,179,1643702400"; d="scan'208";a="643656878" Received: from orsmsx606.amr.corp.intel.com ([10.22.229.19]) by fmsmga002.fm.intel.com with ESMTP; 13 Mar 2022 20:02:46 -0700 Received: from orsmsx611.amr.corp.intel.com (10.22.229.24) by ORSMSX606.amr.corp.intel.com (10.22.229.19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2308.21; Sun, 13 Mar 2022 20:02:46 -0700 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.21 via Frontend Transport; Sun, 13 Mar 2022 20:02:45 -0700 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.21; Sun, 13 Mar 2022 20:02:45 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=h23SdHlsuBULpERRSzyMA+aBZ5EB9FOsGDePGN+QFxFoFtdKimWbzSflW+kFT5ERzQvavtsNZi82+NVOrz9//ya+w8sQ2V9KaCzRYHh2Jh5Eh+T3yhM8X6BAjs6s4TmIkVq3XTuCAGSyx+BWYSYOgNE0/+qCTebyd/35HjVcI/sgbJ1C0TnVfNyOMVPyN08iMe9RHUppRWXkP/XTlbQL9dFINMKj22IeMqgJ5yuIcnxmRU4pXc/PZ44j9ZZC2npOR4Si1lVOTBcU64DivNs2TkHP23D2dqWWmPfrCsMT8PhVO3KS0T6gTNWn26EawgxfClnAMG5KnaK4kljcE216KQ== 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=zqRnCK9GyJUP8XmWMeVK0qMJPw4HUZIlwM0ZbvtLm6c=; b=CVLFuiF2+WoZhFvzDXtomXOcs3m1qNiWPuTUxDXN2rikcr+0ePD3gbChsM6l4+neFo5NI5g3zBuQz20GXuxuNxPw8BnxfcYCf0elq0pi3YPxLKzAijrSd4iE//dgeuCnTCT1hi1rjqvp3+PxGax86kaybslnUVL4FnTGwN3lC/Ke7xdbI9899UEVOuwL71duEhfau8HeJVggUP+TkCuYDOjvdTXE9JtiGoQXmiyo6yHQjYSNXf6FtEcaubKnmQSxbQr3GHuS/joGnETvpzn45NrYe3D4liOAImcnB+5DGO3T6QJp5W4lrJYmq/KXzUnFQpNCpfLec+X6ETt73RZtgA== 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 PH0PR11MB5659.namprd11.prod.outlook.com (2603:10b6:510:ea::6) by BN6PR1101MB2338.namprd11.prod.outlook.com (2603:10b6:404:9c::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5061.22; Mon, 14 Mar 2022 03:02:42 +0000 Received: from PH0PR11MB5659.namprd11.prod.outlook.com ([fe80::c5c2:df5b:4731:1d4]) by PH0PR11MB5659.namprd11.prod.outlook.com ([fe80::c5c2:df5b:4731:1d4%7]) with mapi id 15.20.5061.028; Mon, 14 Mar 2022 03:02:42 +0000 From: "Huang, Li-Xia" To: "devel@edk2.groups.io" , "Gao, Liming" CC: "Feng, Bob C" , "Chen, Christine" Subject: Re: [edk2-devel] [PATCH v2] BaseTools/GenFw: Enhance GenFw to support PRM GCC build Thread-Topic: [edk2-devel] [PATCH v2] BaseTools/GenFw: Enhance GenFw to support PRM GCC build Thread-Index: AQHYLECG52w5T5KNzEOW05Gi41ITLaypxViAgBSBsZA= Date: Mon, 14 Mar 2022 03:02:42 +0000 Message-ID: References: <20220228011411.3450-1-lisa.huang@intel.com> <02d701d82d0e$ecf682c0$c6e38840$@byosoft.com.cn> In-Reply-To: <02d701d82d0e$ecf682c0$c6e38840$@byosoft.com.cn> Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-reaction: no-action dlp-version: 11.6.401.20 dlp-product: dlpe-windows 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: 6fa6ffa7-26b9-495b-79d9-08da05671b50 x-ms-traffictypediagnostic: BN6PR1101MB2338:EE_ x-ld-processed: 46c98d88-e344-4ed4-8496-4ed7712e255d,ExtAddr x-microsoft-antispam-prvs: x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: aw5EXpSSSh0EaB2ptUfFwDhASgaXLg/VkasB2nQ73JnXLlQlwuwT/BxHxZyjihxgaFqEyPScQOTUOxU5XJAXHgRobbh5HLC8ZBIFoQAhURS1Vw/rZ0G9clSqj1lYnr4SRZjHmAlVdWyog3t0M1cVcGGZ8QZIFPTsDqd6vK0UC5WUeupJJjOb+dOR3OD7bPxT0Gd9amg2aBN5d+kGIuuTM7KWhzNx3XlVGaVpy0pnwAm0UrOmoBW2h1nHultcAOMmvUwHnH59TUE9/yqLvijMTFvHpr1P6cNmGCzybjUE6Eusobxoaqw0MI9UNAT1v+trTjRzP4kDeWSXODJfKoTjHK2WuGxu8zHcTDg5Nlm9+deGpUhIB90acNLL7V8xxW2FihuCgRuKLbJkQDLUA0IomYkM742aCQBiGWxVkesHjkCg9Ya65Pm0eJ8ntVlD6nAtjqaZrfoyqei893QsQh7PDKKeuxsP+zR99AkHces5nmxe9HjVO4Rlx6LqvC9yKkf9Ro1iAdGwN/okpnl00QOdlhYve/2V5wVJR0RjlqDn6Htw0+HdR6dBmj5LcT3L0zjEzP8jJsCbs4VUFKUzWqrDyTv6L1VTnUWJHXdKSAuD1od5eN4TO5l4z2HPFfKMi3ruTbyS0SrREI9RH+o+0UwafIAYYMbwtwhgJFO4HU9YAG4YPzTuPwEkulsfY2rIHfhHbEWTlWFfzZTykx+SxhAto+eIaN58OOP44MuCBigvR3Hld8cyGPHpj//PsXxYfoykYDVPc2+I+twvlc0mMDEg1POUzas+tZhtyK1xQJSR227qx4UpzooDtG9q8EgkaI1CVwFCEnWOO/ayqL3ohPboAA== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PH0PR11MB5659.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230001)(366004)(107886003)(966005)(52536014)(86362001)(8936002)(33656002)(30864003)(5660300002)(508600001)(9686003)(7696005)(53546011)(6506007)(2906002)(55016003)(122000001)(82960400001)(38100700002)(110136005)(26005)(186003)(83380400001)(38070700005)(64756008)(66946007)(19627235002)(66446008)(66476007)(66556008)(4326008)(54906003)(8676002)(316002)(76116006)(71200400001)(579004);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?TFlEQ2pMMW9lckhRQUlPeUpjcHEvWTNkODVwUElpTHo4bGtxaXNNOE8waEFx?= =?utf-8?B?UmNnWjFHbzcyREpOQ2xMcnV6YkI5dUFVUmhMSlVkbTNPcjJLWnhvdkJxRGhT?= =?utf-8?B?cDI5S2ExakFJQjMwK2pLTVNjVjh6RDhNMTVDZVNmR2cySUs3Ymtwc2NqaFpj?= =?utf-8?B?enlqZG1IZFlQZml1bXpMK1BjbkNqa1gwMm85cXdrMnZtWFNIb1hNQ3MxTUFB?= =?utf-8?B?dUVacUxleE5SWHloWUdSWXBOYkZVTGVZTWZOc1JIQjc3MzFaTnNhK2g2RzVJ?= =?utf-8?B?UGFuUUVMa2dpRVpqRW9MUlVzM3lNYWpUdm43KzRLM1ZldWxybzZmZGoyeWVs?= =?utf-8?B?eStuRTNuOHQrb0EzT3kvdmNDL0RnYUUrSWc3UUpEeUxiSDBybTVmQVF5YjhQ?= =?utf-8?B?SWFSclByTTk4ck9aRWNSYkJSNjB2YlpYbjFocElJMzhxQ2xpemx3czR2ck1T?= =?utf-8?B?bEgrd3d6NFYyU09XMGhRUW84YVdYMjlUZTh6Q1hQQ3c4eDk5d2tvdHRkRFFL?= =?utf-8?B?UHIxYXNxWXVTN2xoZ1NwRllYdHM5cmRMZE5OL09WVEhYdm1yRHZFTUNLaTRn?= =?utf-8?B?V05QakVMS3R1ZUcycmlMUG5vbGpXcy9RSEloN3kxWnpuejgrQVJ0SlJ1Z1cr?= =?utf-8?B?WWdyeWQ3VHJTZUtsWklOVlVnTFkxVXlVcHJJU3B6ZXF4ZjlnVXdsYnowL1Bp?= =?utf-8?B?b1FrRGxUOU5TZ2xxNGxDYlZDaHQ0YjMrdGNJcTBoSDg2Q1U4Y2UwdTcxK0lw?= =?utf-8?B?bDF5Zld3cmlNYXpia0NhVU1zVXN4ZkNsOWFKK2I0OHEyRlMvK0srcHU4T3J3?= =?utf-8?B?TjZnelNzZFgxWS92TkJGMzVPR2E4RWVzMFNFSitVTXZzZHV6TTVjNjdPUDUx?= =?utf-8?B?NzhmUXNnb3N3TW9CWG1UVXJUZGdCcHNQTGpvb0FhaXp3Z2FmWHBCOGx0Z04w?= =?utf-8?B?UmhBNS9ZU2ZDZEtZWGlmMUZkVGZtWEtFU0VzbG14aUQ5NUxNaDIzWnpBa1hp?= =?utf-8?B?eE55TVdySzlEcmg1eGRuZmsydWtXTTN3M0FFTm92Z0lwaUFPcnNyNUIzN29T?= =?utf-8?B?QlV6UFFET3B4d3hobjE1L3FLM3lWSnZmQmFvYzZtbWhCTmJmLzd0MUtlZy9a?= =?utf-8?B?ZUYwNTQrMVl5a2VrZDMrSWJFRW5BY1o2R0hTdHN4L1gzOTFmVlBRT055LzJl?= =?utf-8?B?alY2NzFva0NOSXhrYk1yZzBqQ1dUTnlsZDVMYm5mci9EZksrYzVKZ09RUEJk?= =?utf-8?B?Wlg0dmd2UnZCZFN2NWhZVGNtRlAwTW1PT2U3aHJYb3ErLzF6NXE5WjZ4d3ZJ?= =?utf-8?B?WExGTHcyQ3h2REpWbENobHZ5N29xUkU0RjZLOVRvdW1ZNzlzbDdiNmtPZ2x3?= =?utf-8?B?TTBjbTRiZHFvekk1S2wweUhpWkV1T2VjQkNQR1ZWVmpTd1duVVh5SFIrRjhM?= =?utf-8?B?MFEwNHZCSGRqZ2FlVldiaW5rUkFQWk42NmFLV1NLb216eWp1NG9RUjBKbmZF?= =?utf-8?B?UnhrcUlXTE1KVDczSGRZSXVlVDJKL0sxRzBIQkpyNmJQdS9MdklhV0Zkd29a?= =?utf-8?B?b3pHVldMemt4cFJaT2d5Wlpsa1RPWXdaUERMUzdjb0REK0JkL09XUG42b3NH?= =?utf-8?B?K3NlZnVJa3lrV2pKM3BiVjcrOExMOXVMQWowY1dBcmc5aE5kV0o2ZWtDaHJl?= =?utf-8?B?bjNHdXBYam10WnNUb0ZrV3dPazN6ZUZvRCtleFErL0lyVVFwd09oRWZTQUw4?= =?utf-8?B?cXdGVDZhOWtuV3JwQXZHaklTN0VzdmNNbjFSL3pMa1BaTmd5d09JNWdsUFJz?= =?utf-8?B?M1gvemtlek5uZzIvSmpoaHNPRGVkRjgyUkhaMElkWmRoSDc4QUdKeEFQVmVF?= =?utf-8?B?SHFKSkFFZUc4ZkhzR3dyck02Y0RjT3dqZ2dQRWsrTzdzT25jbWYxVDlONnN5?= =?utf-8?Q?nT0unUtnijoNaZX1mxZ6kw7/tL8WmgFe?= MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: PH0PR11MB5659.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 6fa6ffa7-26b9-495b-79d9-08da05671b50 X-MS-Exchange-CrossTenant-originalarrivaltime: 14 Mar 2022 03:02:42.3594 (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: 7sYWJH/6ze1XpnKni79dGaK43iqhSZkvhoWr0mo2sgWBgvtyehdL5ZyXbAkpa0aBVJ5gNKe1l9mYBOc44EZAVw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN6PR1101MB2338 Return-Path: lisa.huang@intel.com X-OriginatorOrg: intel.com Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 SGkgTGltaW5nLA0KDQpCWiBsaW5rIGlzIGFkZGVkLg0KUFJNIG9wdGlvbiBjdXJyZW50bHkgb25s eSBzdXBwb3J0cyBEWEUgUlVOVElNRSBkcml2ZXIgYW5kIFg2NCBhcmNoLCAgIEdlbkZ3IHdpbGwg cmVwb3J0IGVycm9yIG1lc3NhZ2UgaWYgUFJNIG9wdGlvbiBpcyBzcGVjaWZpZWQgZm9yIG90aGVy IGFyY2ggb3Igb3RoZXIgbW9kdWxlIHR5cGUuDQpUaGFua3MuDQoNClJlZ2FyZHMsDQpMaXNhDQoN Ci0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQpGcm9tOiBkZXZlbEBlZGsyLmdyb3Vwcy5pbyA8 ZGV2ZWxAZWRrMi5ncm91cHMuaW8+IE9uIEJlaGFsZiBPZiBnYW9saW1pbmcNClNlbnQ6IDIwMjLl ubQz5pyIMeaXpSA5OjUyDQpUbzogZGV2ZWxAZWRrMi5ncm91cHMuaW87IEh1YW5nLCBMaS1YaWEg PGxpc2EuaHVhbmdAaW50ZWwuY29tPg0KQ2M6IEZlbmcsIEJvYiBDIDxib2IuYy5mZW5nQGludGVs LmNvbT47IENoZW4sIENocmlzdGluZSA8eXV3ZWkuY2hlbkBpbnRlbC5jb20+DQpTdWJqZWN0OiDl m57lpI06IFtlZGsyLWRldmVsXSBbUEFUQ0ggdjJdIEJhc2VUb29scy9HZW5GdzogRW5oYW5jZSBH ZW5GdyB0byBzdXBwb3J0IFBSTSBHQ0MgYnVpbGQNCg0KTGlzYToNCiAgUGxlYXNlIGFkZCBCWiBs aW5rIGZvciB0aGlzIHBhdGNoLiANCg0KICBBbmQsIGlmIFBSTSBvcHRpb24gY3VycmVudGx5IG9u bHkgc3VwcG9ydHMgRFhFIFJVTlRJTUUgZHJpdmVyIGFuZCBYNjQgYXJjaCwNCiAgZG9lcyBHZW5G dyByZXBvcnQgZXJyb3IgbWVzc2FnZSBpZiBQUk0gb3B0aW9uIGlzIHNwZWNpZmllZCBmb3Igb3Ro ZXIgYXJjaCBvciBvdGhlciBtb2R1bGUgdHlwZT8NCg0KVGhhbmtzDQpMaW1pbmcNCj4gLS0tLS3p gq7ku7bljp/ku7YtLS0tLQ0KPiDlj5Hku7bkuro6IGRldmVsQGVkazIuZ3JvdXBzLmlvIDxkZXZl bEBlZGsyLmdyb3Vwcy5pbz4g5Luj6KGoIEh1YW5nLCBMaS1YaWENCj4g5Y+R6YCB5pe26Ze0OiAy MDIy5bm0MuaciDI45pelIDk6MTQNCj4g5pS25Lu25Lq6OiBkZXZlbEBlZGsyLmdyb3Vwcy5pbw0K PiDmioTpgIE6IExpeGlhIEh1YW5nIDxsaXNhLmh1YW5nQGludGVsLmNvbT47IExpbWluZyBHYW8g DQo+IDxnYW9saW1pbmdAYnlvc29mdC5jb20uY24+OyBCb2IgRmVuZyA8Ym9iLmMuZmVuZ0BpbnRl bC5jb20+OyBZdXdlaSANCj4gQ2hlbiA8eXV3ZWkuY2hlbkBpbnRlbC5jb20+DQo+IOS4u+mimDog W2VkazItZGV2ZWxdIFtQQVRDSCB2Ml0gQmFzZVRvb2xzL0dlbkZ3OiBFbmhhbmNlIEdlbkZ3IHRv IHN1cHBvcnQgDQo+IFBSTSBHQ0MgYnVpbGQNCj4gDQo+IFNpbmNlIFBSTSBtb2R1bGUgbmVlZHMg dG8gc3VwcG9ydCBleHBvcnQgdGFibGUgaW4gUEUtQ09GRiwgd2UnbGwgDQo+IGVuaGFuY2UgR2Vu RncgdG9vbCB0byBzdXBwb3J0IHRoaXMuDQo+IA0KPiBBZGQgb25lIGV4cG9ydCBmbGFnIGluIEdl bkZ3IHRvb2wuIElmIGV4cG9ydCBmbGFnIGlzIHNldDoNCj4gU3RlcDE6IFNjYW4gRUxGIHN5bWJv bCB0YWJsZSBiYXNlZCBvbiBQUk0gbW9kdWxlIGRlc2NyaXB0b3IgdG8gZ2V0IA0KPiBkZXNjcmlw dG9yIG9mZnNldCBhZGRyZXNzOw0KPiBTdGVwMjogRmluZCBQUk0gaGFuZGxlcnMgbnVtYmVyIGFu ZCBuYW1lIGluIENPRkYgZmlsZSBiYXNlZCBvbiB0aGUgDQo+IGFkZHJlc3MgZnJvbSBzdGVwMTsN Cj4gU3RlcDM6IFdyaXRlIFBSTSBpbmZvIHN1Y2ggYXMgaGFuZGxlciBuYW1lIGFuZCBleHBvcnQg UlZBIGludG8gQ09GRiANCj4gZXhwb3J0IHRhYmxlLg0KPiANCj4gUFJNIG9wdGlvbiBjdXJyZW50 bHkgb25seSBzdXBwb3J0cyBEWEUgUlVOVElNRSBkcml2ZXIgYW5kIFg2NCBhcmNoLg0KPiANCj4g Q2hhbmdlLUlkOiBJNDc5YjdjOGIyM2JlZWExMmI1YzU2NzY3NzY4OGFlZjZmN2FmMjA4NQ0KPiBD YzogTGltaW5nIEdhbyA8Z2FvbGltaW5nQGJ5b3NvZnQuY29tLmNuPg0KPiBDYzogQm9iIEZlbmcg PGJvYi5jLmZlbmdAaW50ZWwuY29tPg0KPiBDYzogWXV3ZWkgQ2hlbiA8eXV3ZWkuY2hlbkBpbnRl bC5jb20+DQo+IFNpZ25lZC1vZmYtYnk6IExpeGlhIEh1YW5nIDxsaXNhLmh1YW5nQGludGVsLmNv bT4NCj4gLS0tDQo+ICBCYXNlVG9vbHMvU291cmNlL0MvR2VuRncvRWxmNjRDb252ZXJ0LmMgICAg ICAgfCAyNDINCj4gKysrKysrKysrKysrKysrKystDQo+ICBCYXNlVG9vbHMvU291cmNlL0MvR2Vu RncvRWxmQ29udmVydC5jICAgICAgICAgfCAgIDggKw0KPiAgQmFzZVRvb2xzL1NvdXJjZS9DL0dl bkZ3L0VsZkNvbnZlcnQuaCAgICAgICAgIHwgIDQzICsrKy0NCj4gIEJhc2VUb29scy9Tb3VyY2Uv Qy9HZW5Gdy9HZW5Gdy5jICAgICAgICAgICAgICB8ICAyMCArLQ0KPiAgLi4uL0MvSW5jbHVkZS9J bmR1c3RyeVN0YW5kYXJkL1BlSW1hZ2UuaCAgICAgIHwgICA3ICsNCj4gIDUgZmlsZXMgY2hhbmdl ZCwgMzE1IGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0pDQo+IA0KPiBkaWZmIC0tZ2l0IGEv QmFzZVRvb2xzL1NvdXJjZS9DL0dlbkZ3L0VsZjY0Q29udmVydC5jDQo+IGIvQmFzZVRvb2xzL1Nv dXJjZS9DL0dlbkZ3L0VsZjY0Q29udmVydC5jDQo+IGluZGV4IDBiYjNlYWQyMjguLjJhYTliZmNj OTQgMTAwNjQ0DQo+IC0tLSBhL0Jhc2VUb29scy9Tb3VyY2UvQy9HZW5Gdy9FbGY2NENvbnZlcnQu Yw0KPiArKysgYi9CYXNlVG9vbHMvU291cmNlL0MvR2VuRncvRWxmNjRDb252ZXJ0LmMNCj4gQEAg LTU2LDYgKzU2LDEyIEBAIFdyaXRlRGVidWc2NCAoDQo+ICAgIFZPSUQNCj4gDQo+ICAgICk7DQo+ IA0KPiANCj4gDQo+ICtTVEFUSUMNCj4gDQo+ICtWT0lEDQo+IA0KPiArV3JpdGVFeHBvcnQ2NCAo DQo+IA0KPiArICBWT0lEDQo+IA0KPiArICApOw0KPiANCj4gKw0KPiANCj4gIFNUQVRJQw0KPiAN Cj4gIFZPSUQNCj4gDQo+ICBTZXRJbWFnZVNpemU2NCAoDQo+IA0KPiBAQCAtMTA2LDcgKzExMiw3 IEBAIFNUQVRJQyBVSU5UMzIgbUNvZmZBbGlnbm1lbnQgPSAweDIwOyAgLy8NCj4gDQo+ICAvLyBQ RSBzZWN0aW9uIGFsaWdubWVudC4NCj4gDQo+ICAvLw0KPiANCj4gLVNUQVRJQyBjb25zdCBVSU5U MTYgbUNvZmZOYnJTZWN0aW9ucyA9IDQ7DQo+IA0KPiArU1RBVElDIFVJTlQxNiBtQ29mZk5iclNl Y3Rpb25zID0gNDsNCj4gDQo+IA0KPiANCj4gIC8vDQo+IA0KPiAgLy8gRUxGIHNlY3Rpb25zIHRv IG9mZnNldCBpbiBDb2ZmIGZpbGUuDQo+IA0KPiBAQCAtMTIyLDcgKzEyOCw3IEBAIFNUQVRJQyBV SU5UMzIgbURhdGFPZmZzZXQ7ICBTVEFUSUMgVUlOVDMyIA0KPiBtSGlpUnNyY09mZnNldDsNCj4g DQo+ICBTVEFUSUMgVUlOVDMyIG1SZWxvY09mZnNldDsNCj4gDQo+ICBTVEFUSUMgVUlOVDMyIG1E ZWJ1Z09mZnNldDsNCj4gDQo+IC0NCj4gDQo+ICtTVEFUSUMgVUlOVDMyIG1FeHBvcnRPZmZzZXQ7 DQo+IA0KPiAgLy8NCj4gDQo+ICAvLyBVc2VkIGZvciBSSVNDLVYgcmVsb2NhdGlvbnMuDQo+IA0K PiAgLy8NCj4gDQo+IEBAIC0xMzIsNiArMTM4LDE0IEBAIFNUQVRJQyBFbGY2NF9IYWxmICBtUmlz Y1ZQYXNzMVN5bVNlY0luZGV4ID0gMDsNCj4gIFNUQVRJQyBJTlQzMiAgICAgICBtUmlzY1ZQYXNz MU9mZnNldDsNCj4gDQo+ICBTVEFUSUMgSU5UMzIgICAgICAgbVJpc2NWUGFzczFHb3RGaXh1cDsN Cj4gDQo+IA0KPiANCj4gKy8vDQo+IA0KPiArLy8gVXNlZCBmb3IgRXhwb3J0IHNlY3Rpb24uDQo+ IA0KPiArLy8NCj4gDQo+ICtTVEFUSUMgVUlOVDMyICAgICAgbUV4cG9ydFNpemU7DQo+IA0KPiAr U1RBVElDIFVJTlQzMg0KPiBtRXhwb3J0UlZBW1BSTV9NT0RVTEVfRVhQT1JUX1NZTUJPTF9OVU1d Ow0KPiANCj4gK1NUQVRJQyBVSU5UMzIgICAgICBtRXhwb3J0U3ltTnVtOw0KPiANCj4gK1NUQVRJ QyBDSEFSOA0KPiBtRXhwb3J0U3ltTmFtZVtQUk1fTU9EVUxFX0VYUE9SVF9TWU1CT0xfTlVNXVtQ Uk1fSEFORExFDQo+IFJfTkFNRV9NQVhJTVVNX0xFTkdUSF07DQo+IA0KPiArDQo+IA0KPiAgLy8N Cj4gDQo+ICAvLyBJbml0aWFsaXphdGlvbiBGdW5jdGlvbg0KPiANCj4gIC8vDQo+IA0KPiBAQCAt MTcxLDYgKzE4NSwxMyBAQCBJbml0aWFsaXplRWxmNjQgKA0KPiAgICAgIHJldHVybiBGQUxTRTsN Cj4gDQo+ICAgIH0NCj4gDQo+IA0KPiANCj4gKyAgaWYgKG1FeHBvcnRGbGFnKSB7DQo+IA0KPiAr ICAgIGlmIChtRWhkci0+ZV9tYWNoaW5lICE9IEVNX1g4Nl82NCkgew0KPiANCj4gKyAgICAgIEVy cm9yIChOVUxMLCAwLCAzMDAwLCAiVW5zdXBwb3J0ZWQiLCAiLS1wcm0gb3B0aW9uIGN1cnJlbnRs eSANCj4gKyBvbmx5DQo+IHN1cHBvcnRzIFg2NCBhcmNoLiIpOw0KPiANCj4gKyAgICAgIHJldHVy biBGQUxTRTsNCj4gDQo+ICsgICAgfQ0KPiANCj4gKyAgfQ0KPiANCj4gKw0KPiANCj4gICAgLy8N Cj4gDQo+ICAgIC8vIFVwZGF0ZSBzZWN0aW9uIGhlYWRlciBwb2ludGVycw0KPiANCj4gICAgLy8N Cj4gDQo+IEBAIC0yMDAsNiArMjIxLDExIEBAIEluaXRpYWxpemVFbGY2NCAoDQo+ICAgIEVsZkZ1 bmN0aW9ucy0+U2V0SW1hZ2VTaXplID0gU2V0SW1hZ2VTaXplNjQ7DQo+IA0KPiAgICBFbGZGdW5j dGlvbnMtPkNsZWFuVXAgPSBDbGVhblVwNjQ7DQo+IA0KPiANCj4gDQo+ICsgIGlmIChtRXhwb3J0 RmxhZykgew0KPiANCj4gKyAgICBtQ29mZk5iclNlY3Rpb25zICsrOw0KPiANCj4gKyAgICBFbGZG dW5jdGlvbnMtPldyaXRlRXhwb3J0ID0gV3JpdGVFeHBvcnQ2NDsNCj4gDQo+ICsgIH0NCj4gDQo+ ICsNCj4gDQo+ICAgIHJldHVybiBUUlVFOw0KPiANCj4gIH0NCj4gDQo+IA0KPiANCj4gQEAgLTI2 Myw2ICsyODksMTcgQEAgSXNIaWlSc3JjU2hkciAoDQo+ICAgIHJldHVybiAoQk9PTEVBTikgKHN0 cmNtcCgoQ0hBUjgqKW1FaGRyICsgTmFtZWRyLT5zaF9vZmZzZXQgKw0KPiBTaGRyLT5zaF9uYW1l LCBFTEZfSElJX1NFQ1RJT05fTkFNRSkgPT0gMCk7DQo+IA0KPiAgfQ0KPiANCj4gDQo+IA0KPiAr U1RBVElDDQo+IA0KPiArQk9PTEVBTg0KPiANCj4gK0lzU3ltYm9sU2hkciAoDQo+IA0KPiArICBF bGZfU2hkciAqU2hkcg0KPiANCj4gKyAgKQ0KPiANCj4gK3sNCj4gDQo+ICsgIEVsZl9TaGRyICpO YW1laGRyID0gR2V0U2hkckJ5SW5kZXgobUVoZHItPmVfc2hzdHJuZHgpOw0KPiANCj4gKw0KPiAN Cj4gKyAgcmV0dXJuIChCT09MRUFOKSAoc3RyY21wKChDSEFSOCopbUVoZHIgKyBOYW1laGRyLT5z aF9vZmZzZXQgKw0KPiBTaGRyLT5zaF9uYW1lLCBFTEZfU1lNQk9MX1NFQ1RJT05fTkFNRSkgPT0g MCk7DQo+IA0KPiArfQ0KPiANCj4gKw0KPiANCj4gIFNUQVRJQw0KPiANCj4gIEJPT0xFQU4NCj4g DQo+ICBJc0RhdGFTaGRyICgNCj4gDQo+IEBAIC0zMzUsNiArMzcyLDM3IEBAIEdldFN5bU5hbWUg KA0KPiAgICByZXR1cm4gU3RydGFiQ29udGVudHMgKyBTeW0tPnN0X25hbWU7DQo+IA0KPiAgfQ0K PiANCj4gDQo+IA0KPiArLy8NCj4gDQo+ICsvLyBHZXQgUHJtIEhhbmRsZXIgbnVtYmVyIGFuZCBu YW1lDQo+IA0KPiArLy8NCj4gDQo+ICtTVEFUSUMNCj4gDQo+ICtWT0lEDQo+IA0KPiArRmluZFBy bUhhbmRsZXIgKA0KPiANCj4gKyAgVUlOVDY0IE9mZnNldA0KPiANCj4gKyAgKQ0KPiANCj4gK3sN Cj4gDQo+ICsgIFBSTV9NT0RVTEVfRVhQT1JUX0RFU0NSSVBUT1JfU1RSVUNUX0hFQURFUiAqUHJt RXhwb3J0Ow0KPiANCj4gKyAgUFJNX0hBTkRMRVJfRVhQT1JUX0RFU0NSSVBUT1JfU1RSVUNUICAg ICAgICpQcm1IYW5kbGVyOw0KPiANCj4gKyAgVUlOVDMyICAgSGFuZGxlck51bTsNCj4gDQo+ICsN Cj4gDQo+ICsgIFBybUV4cG9ydCA9DQo+IChQUk1fTU9EVUxFX0VYUE9SVF9ERVNDUklQVE9SX1NU UlVDVF9IRUFERVIqKSgoVUlOVDgqKW1FaGRyDQo+ICsgT2Zmc2V0KTsNCj4gDQo+ICsgIFBybUhh bmRsZXIgPSAoUFJNX0hBTkRMRVJfRVhQT1JUX0RFU0NSSVBUT1JfU1RSVUNUDQo+ICopKFBybUV4 cG9ydCArIDEpOw0KPiANCj4gKw0KPiANCj4gKyAgZm9yIChIYW5kbGVyTnVtID0gMDsgSGFuZGxl ck51bSA8IFBybUV4cG9ydC0+TnVtYmVyUHJtSGFuZGxlcnM7DQo+IEhhbmRsZXJOdW0rKykgew0K PiANCj4gKyAgICBzdHJjcHkobUV4cG9ydFN5bU5hbWVbbUV4cG9ydFN5bU51bV0sDQo+IFBybUhh bmRsZXItPlBybUhhbmRsZXJOYW1lKTsNCj4gDQo+ICsgICAgbUV4cG9ydFN5bU51bSArKzsNCj4g DQo+ICsgICAgUHJtSGFuZGxlciArPSAxOw0KPiANCj4gKw0KPiANCj4gKyAgICAvLw0KPiANCj4g KyAgICAvLyBDaGVjayBpZiBQUk0gaGFuZGxlciBudW1iZXIgaXMgbGFyZ2VyIHRoYW4NCj4gKFBS TV9NT0RVTEVfRVhQT1JUX1NZTUJPTF9OVU0gLSAxKQ0KPiANCj4gKyAgICAvLw0KPiANCj4gKyAg ICBpZiAobUV4cG9ydFN5bU51bSA+PSAoUFJNX01PRFVMRV9FWFBPUlRfU1lNQk9MX05VTSAtIDEp KSB7DQo+IA0KPiArICAgICAgRXJyb3IgKE5VTEwsIDAsIDMwMDAsICJJbnZhbGlkIiwgIkZpbmRQ cm1IYW5kbGVyOiBOdW1iZXIgJXUgaXMgDQo+ICsgdG9vDQo+IGhpZ2guIiwgbUV4cG9ydFN5bU51 bSk7DQo+IA0KPiArICAgICAgZXhpdChFWElUX0ZBSUxVUkUpOw0KPiANCj4gKyAgICB9DQo+IA0K PiArICB9DQo+IA0KPiArfQ0KPiANCj4gKw0KPiANCj4gIC8vDQo+IA0KPiAgLy8gRmluZCB0aGUg RUxGIHNlY3Rpb24gaG9zdGluZyB0aGUgR09UIGZyb20gYW4gRUxGIFJ2YQ0KPiANCj4gIC8vICAg b2YgYSBzaW5nbGUgR09UIGVudHJ5LiAgTm9ybWFsbHksIEdPVCBpcyBwbGFjZWQgaW4NCj4gDQo+ IEBAIC03MTcsNiArNzg1LDcgQEAgU2NhblNlY3Rpb25zNjQgKA0KPiAgICBVSU5UMzIgICAgICAg ICAgICAgICAgICAgICAgICAgIENvZmZFbnRyeTsNCj4gDQo+ICAgIFVJTlQzMiAgICAgICAgICAg ICAgICAgICAgICAgICAgU2VjdGlvbkNvdW50Ow0KPiANCj4gICAgQk9PTEVBTiAgICAgICAgICAg ICAgICAgICAgICAgICBGb3VuZFNlY3Rpb247DQo+IA0KPiArICBVSU5UMzIgICAgICAgICAgICAg ICAgICAgICAgICAgIE9mZnNldDsNCj4gDQo+IA0KPiANCj4gICAgQ29mZkVudHJ5ID0gMDsNCj4g DQo+ICAgIG1Db2ZmT2Zmc2V0ID0gMDsNCj4gDQo+IEBAIC04ODAsNiArOTQ5LDgyIEBAIFNjYW5T ZWN0aW9uczY0ICgNCj4gICAgICBXYXJuaW5nIChOVUxMLCAwLCAwLCBOVUxMLCAiTXVsdGlwbGUg c2VjdGlvbnMgaW4gJXMgYXJlIG1lcmdlZCANCj4gaW50byAxIGRhdGEgc2VjdGlvbi4gU291cmNl IGxldmVsIGRlYnVnIG1pZ2h0IG5vdCB3b3JrIGNvcnJlY3RseS4iLA0KbUluSW1hZ2VOYW1lKTsN Cj4gDQo+ICAgIH0NCj4gDQo+IA0KPiANCj4gKyAgLy8NCj4gDQo+ICsgIC8vICBUaGUgU3ltYm9s IHNlY3Rpb25zLg0KPiANCj4gKyAgLy8NCj4gDQo+ICsgIGlmIChtRXhwb3J0RmxhZykgew0KPiAN Cj4gKyAgICBVSU5UMzIgICAgICBTeW1JbmRleDsNCj4gDQo+ICsgICAgRWxmX1N5bSAgICAgKlN5 bTsNCj4gDQo+ICsgICAgVUlOVDY0ICAgICAgU3ltTnVtOw0KPiANCj4gKyAgICBjb25zdCBVSU5U OCAqU3ltTmFtZTsNCj4gDQo+ICsNCj4gDQo+ICsgICAgbUV4cG9ydE9mZnNldCA9IG1Db2ZmT2Zm c2V0Ow0KPiANCj4gKyAgICBtRXhwb3J0U2l6ZSA9IHNpemVvZihFRklfSU1BR0VfRVhQT1JUX0RJ UkVDVE9SWSkgKw0KPiBzdHJsZW4obUluSW1hZ2VOYW1lKSArIDE7DQo+IA0KPiArDQo+IA0KPiAr ICAgIGZvciAoaSA9IDA7IGkgPCBtRWhkci0+ZV9zaG51bTsgaSsrKSB7DQo+IA0KPiArDQo+IA0K PiArICAgICAgLy8NCj4gDQo+ICsgICAgICAvLyBEZXRlcm1pbmUgaWYgdGhpcyBpcyBhIHN5bWJv bCBzZWN0aW9uLg0KPiANCj4gKyAgICAgIC8vDQo+IA0KPiArICAgICAgRWxmX1NoZHIgKnNoZHIg PSBHZXRTaGRyQnlJbmRleChpKTsNCj4gDQo+ICsgICAgICBpZiAoIUlzU3ltYm9sU2hkcihzaGRy KSkgew0KPiANCj4gKyAgICAgICAgY29udGludWU7DQo+IA0KPiArICAgICAgfQ0KPiANCj4gKw0K PiANCj4gKyAgICAgIFVJTlQ4ICAgICpTeW10YWIgPSAoVUlOVDgqKW1FaGRyICsgc2hkci0+c2hf b2Zmc2V0Ow0KPiANCj4gKyAgICAgIFN5bU51bSA9IChzaGRyLT5zaF9zaXplKSAvIChzaGRyLT5z aF9lbnRzaXplKTsNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAvLw0KPiANCj4gKyAgICAgIC8vIEZp cnN0IEdldCBQcm1Nb2R1bGVFeHBvcnREZXNjcmlwdG9yDQo+IA0KPiArICAgICAgLy8NCj4gDQo+ ICsgICAgICBmb3IgKFN5bUluZGV4ID0gMDsgU3ltSW5kZXggPCBTeW1OdW07IFN5bUluZGV4Kysp IHsNCj4gDQo+ICsgICAgICAgIFN5bSA9IChFbGZfU3ltICopKFN5bXRhYiArIFN5bUluZGV4ICog c2hkci0+c2hfZW50c2l6ZSk7DQo+IA0KPiArICAgICAgICBTeW1OYW1lID0gR2V0U3ltTmFtZShT eW0pOw0KPiANCj4gKyAgICAgICAgaWYgKFN5bU5hbWUgPT0gTlVMTCkgew0KPiANCj4gKyAgICAg ICAgICAgIGNvbnRpbnVlOw0KPiANCj4gKyAgICAgICAgfQ0KPiANCj4gKw0KPiANCj4gKyAgICAg ICAgaWYgKHN0cmNtcCgoQ0hBUjgqKVN5bU5hbWUsDQo+IFBSTV9NT0RVTEVfRVhQT1JUX0RFU0NS SVBUT1JfTkFNRSkgPT0gMCkgew0KPiANCj4gKyAgICAgICAgICAvLw0KPiANCj4gKyAgICAgICAg ICAvLyBGaW5kIFBybUhhbmRsZXIgTnVtYmVyIGFuZCBOYW1lDQo+IA0KPiArICAgICAgICAgIC8v DQo+IA0KPiArICAgICAgICAgIEZpbmRQcm1IYW5kbGVyKFN5bS0+c3RfdmFsdWUpOw0KPiANCj4g Kw0KPiANCj4gKyAgICAgICAgICBzdHJjcHkobUV4cG9ydFN5bU5hbWVbbUV4cG9ydFN5bU51bV0s DQo+IChDSEFSOCopU3ltTmFtZSk7DQo+IA0KPiArICAgICAgICAgIG1FeHBvcnRSVkFbbUV4cG9y dFN5bU51bV0gPSAoVUlOVDMyKShTeW0tPnN0X3ZhbHVlKTsNCj4gDQo+ICsgICAgICAgICAgbUV4 cG9ydFNpemUgKz0gMiAqIEVGSV9JTUFHRV9FWFBPUlRfQUREUl9TSVpFICsNCj4gRUZJX0lNQUdF X0VYUE9SVF9PUkRJTkFMX1NJWkUgKyBzdHJsZW4oKENIQVI4ICopU3ltTmFtZSkgKyAxOw0KPiAN Cj4gKyAgICAgICAgICBtRXhwb3J0U3ltTnVtICsrOw0KPiANCj4gKyAgICAgICAgICBicmVhazsN Cj4gDQo+ICsgICAgICAgIH0NCj4gDQo+ICsgICAgICB9DQo+IA0KPiArDQo+IA0KPiArICAgICAg Ly8NCj4gDQo+ICsgICAgICAvLyBTZWNvbmQgR2V0IFBybUhhbmRsZXINCj4gDQo+ICsgICAgICAv Lw0KPiANCj4gKyAgICAgIGZvciAoU3ltSW5kZXggPSAwOyBTeW1JbmRleCA8IFN5bU51bTsgU3lt SW5kZXgrKykgew0KPiANCj4gKyAgICAgICAgVUlOVDMyICAgRXhwSW5kZXg7DQo+IA0KPiArICAg ICAgICBTeW0gPSAoRWxmX1N5bSAqKShTeW10YWIgKyBTeW1JbmRleCAqIHNoZHItPnNoX2VudHNp emUpOw0KPiANCj4gKyAgICAgICAgU3ltTmFtZSA9IEdldFN5bU5hbWUoU3ltKTsNCj4gDQo+ICsg ICAgICAgIGlmIChTeW1OYW1lID09IE5VTEwpIHsNCj4gDQo+ICsgICAgICAgICAgICBjb250aW51 ZTsNCj4gDQo+ICsgICAgICAgIH0NCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGZvciAoRXhwSW5k ZXggPSAwOyBFeHBJbmRleCA8IChtRXhwb3J0U3ltTnVtIC0xKTsgRXhwSW5kZXgrKykgDQo+ICsg ew0KPiANCj4gKyAgICAgICAgICBpZiAoc3RyY21wKChDSEFSOCopU3ltTmFtZSwgbUV4cG9ydFN5 bU5hbWVbRXhwSW5kZXhdKSAhPQ0KPiAwKSB7DQo+IA0KPiArICAgICAgICAgICAgY29udGludWU7 DQo+IA0KPiArICAgICAgICAgIH0NCj4gDQo+ICsgICAgICAgICAgbUV4cG9ydFJWQVtFeHBJbmRl eF0gPSAoVUlOVDMyKShTeW0tPnN0X3ZhbHVlKTsNCj4gDQo+ICsgICAgICAgICAgbUV4cG9ydFNp emUgKz0gMiAqIEVGSV9JTUFHRV9FWFBPUlRfQUREUl9TSVpFICsNCj4gRUZJX0lNQUdFX0VYUE9S VF9PUkRJTkFMX1NJWkUgKyBzdHJsZW4oKENIQVI4ICopU3ltTmFtZSkgKyAxOw0KPiANCj4gKyAg ICAgICAgfQ0KPiANCj4gKyAgICAgIH0NCj4gDQo+ICsNCj4gDQo+ICsgICAgICBicmVhazsNCj4g DQo+ICsgICAgfQ0KPiANCj4gKw0KPiANCj4gKyAgICBtQ29mZk9mZnNldCArPSBtRXhwb3J0U2l6 ZTsNCj4gDQo+ICsgICAgbUNvZmZPZmZzZXQgPSBDb2ZmQWxpZ24obUNvZmZPZmZzZXQpOw0KPiAN Cj4gKyAgfQ0KPiANCj4gKw0KPiANCj4gICAgLy8NCj4gDQo+ICAgIC8vICBUaGUgSElJIHJlc291 cmNlIHNlY3Rpb25zLg0KPiANCj4gICAgLy8NCj4gDQo+IEBAIC05ODksOCArMTEzNCwxNyBAQCBT Y2FuU2VjdGlvbnM2NCAoDQo+ICAgICAgTnRIZHItPlBlMzJQbHVzLkZpbGVIZWFkZXIuTnVtYmVy T2ZTZWN0aW9ucy0tOw0KPiANCj4gICAgfQ0KPiANCj4gDQo+IA0KPiArICAvLw0KPiANCj4gKyAg Ly8gSWYgZm91bmQgc3ltYm9sLCBhZGQgZWRhdGEgc2VjdGlvbiBiZXR3ZWVuIGRhdGEgYW5kIHJz cmMgc2VjdGlvbg0KPiANCj4gKyAgLy8NCj4gDQo+ICsgIGlmKG1FeHBvcnRGbGFnKSB7DQo+IA0K PiArICAgIE9mZnNldCA9IG1FeHBvcnRPZmZzZXQ7DQo+IA0KPiArICB9IGVsc2Ugew0KPiANCj4g KyAgICBPZmZzZXQgPSBtSGlpUnNyY09mZnNldDsNCj4gDQo+ICsgIH0NCj4gDQo+ICsNCj4gDQo+ ICAgIGlmICgobUhpaVJzcmNPZmZzZXQgLSBtRGF0YU9mZnNldCkgPiAwKSB7DQo+IA0KPiAtICAg IENyZWF0ZVNlY3Rpb25IZWFkZXIgKCIuZGF0YSIsIG1EYXRhT2Zmc2V0LCBtSGlpUnNyY09mZnNl dCAtDQo+IG1EYXRhT2Zmc2V0LA0KPiANCj4gKyAgICBDcmVhdGVTZWN0aW9uSGVhZGVyICgiLmRh dGEiLCBtRGF0YU9mZnNldCwgT2Zmc2V0IC0gbURhdGFPZmZzZXQsDQo+IA0KPiAgICAgICAgICAg ICAgRUZJX0lNQUdFX1NDTl9DTlRfSU5JVElBTElaRURfREFUQQ0KPiANCj4gICAgICAgICAgICAg IHwgRUZJX0lNQUdFX1NDTl9NRU1fV1JJVEUNCj4gDQo+ICAgICAgICAgICAgICB8IEVGSV9JTUFH RV9TQ05fTUVNX1JFQUQpOw0KPiANCj4gQEAgLTk5OSw2ICsxMTUzLDIwIEBAIFNjYW5TZWN0aW9u czY0ICgNCj4gICAgICBOdEhkci0+UGUzMlBsdXMuRmlsZUhlYWRlci5OdW1iZXJPZlNlY3Rpb25z LS07DQo+IA0KPiAgICB9DQo+IA0KPiANCj4gDQo+ICsgIGlmKG1FeHBvcnRGbGFnKSB7DQo+IA0K PiArICAgIGlmICgobUhpaVJzcmNPZmZzZXQgLSBtRXhwb3J0T2Zmc2V0KSA+IDApIHsNCj4gDQo+ ICsgICAgICBDcmVhdGVTZWN0aW9uSGVhZGVyICgiLmVkYXRhIiwgbUV4cG9ydE9mZnNldCwgbUhp aVJzcmNPZmZzZXQgLQ0KPiBtRXhwb3J0T2Zmc2V0LA0KPiANCj4gKyAgICAgICAgICAgICAgRUZJ X0lNQUdFX1NDTl9DTlRfSU5JVElBTElaRURfREFUQQ0KPiANCj4gKyAgICAgICAgICAgICAgfCBF RklfSU1BR0VfU0NOX01FTV9SRUFEKTsNCj4gDQo+ICsNCj4gTnRIZHItPlBlMzJQbHVzLk9wdGlv bmFsSGVhZGVyLkRhdGFEaXJlY3RvcnlbRUZJX0lNQUdFX0RJUkVDVE9SWV9FTg0KPiBUUllfRVhQ T1JUXS5TaXplID0gbUhpaVJzcmNPZmZzZXQgLSBtRXhwb3J0T2Zmc2V0Ow0KPiANCj4gKw0KPiBO dEhkci0+UGUzMlBsdXMuT3B0aW9uYWxIZWFkZXIuRGF0YURpcmVjdG9yeVtFRklfSU1BR0VfRElS RUNUT1JZX0VODQo+IFRSWV9FWFBPUlRdLlZpcnR1YWxBZGRyZXNzID0gbUV4cG9ydE9mZnNldDsN Cj4gDQo+ICsNCj4gDQo+ICsgICAgfSBlbHNlIHsNCj4gDQo+ICsgICAgICAvLyBEb24ndCBtYWtl IGEgc2VjdGlvbiBvZiBzaXplIDAuDQo+IA0KPiArICAgICAgTnRIZHItPlBlMzJQbHVzLkZpbGVI ZWFkZXIuTnVtYmVyT2ZTZWN0aW9ucy0tOw0KPiANCj4gKyAgICB9DQo+IA0KPiArICB9DQo+IA0K PiArDQo+IA0KPiAgICBpZiAoKG1SZWxvY09mZnNldCAtIG1IaWlSc3JjT2Zmc2V0KSA+IDApIHsN Cj4gDQo+ICAgICAgQ3JlYXRlU2VjdGlvbkhlYWRlciAoIi5yc3JjIiwgbUhpaVJzcmNPZmZzZXQs IG1SZWxvY09mZnNldCAtIA0KPiBtSGlpUnNyY09mZnNldCwNCj4gDQo+ICAgICAgICAgICAgICBF RklfSU1BR0VfU0NOX0NOVF9JTklUSUFMSVpFRF9EQVRBDQo+IA0KPiBAQCAtMTc1Nyw0ICsxOTI1 LDcyIEBAIENsZWFuVXA2NCAoDQo+ICAgIH0NCj4gDQo+ICB9DQo+IA0KPiANCj4gDQo+ICtTVEFU SUMNCj4gDQo+ICtWT0lEDQo+IA0KPiArV3JpdGVFeHBvcnQ2NCAoDQo+IA0KPiArICBWT0lEDQo+ IA0KPiArICApDQo+IA0KPiArew0KPiANCj4gKyAgRUZJX0lNQUdFX09QVElPTkFMX0hFQURFUl9V TklPTiAgICAgKk50SGRyOw0KPiANCj4gKyAgRUZJX0lNQUdFX0VYUE9SVF9ESVJFQ1RPUlkgICAg ICAgICAgKkV4cG9ydERpcjsNCj4gDQo+ICsgIEVGSV9JTUFHRV9EQVRBX0RJUkVDVE9SWSAgICAg ICAgICAgICpEYXRhRGlyOw0KPiANCj4gKyAgVUlOVDMyICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgRmlsZU5hbWVPZmZzZXQ7DQo+IA0KPiArICBVSU5UMzIgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBOYW1lT2Zmc2V0Ow0KPiANCj4gKyAgVUlOVDE2ICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgSW5kZXg7DQo+IA0KPiArICBVSU5UOCAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAqVGRhdGEgPSBOVUxMOw0KPiANCj4gKw0KPiANCj4gKyAgRXhwb3J0RGlyID0gKEVG SV9JTUFHRV9FWFBPUlRfRElSRUNUT1JZKikobUNvZmZGaWxlICsNCj4gbUV4cG9ydE9mZnNldCk7 DQo+IA0KPiArICBFeHBvcnREaXItPkNoYXJhY3RlcmlzdGljcyA9IDA7DQo+IA0KPiArICBFeHBv cnREaXItPlRpbWVEYXRlU3RhbXAgPSAwOw0KPiANCj4gKyAgRXhwb3J0RGlyLT5NYWpvclZlcnNp b24gPSAwOw0KPiANCj4gKyAgRXhwb3J0RGlyLT5NaW5vclZlcnNpb24gPTA7DQo+IA0KPiArICBF eHBvcnREaXItPk5hbWUgPSAwOw0KPiANCj4gKyAgRXhwb3J0RGlyLT5OdW1iZXJPZkZ1bmN0aW9u cyA9IG1FeHBvcnRTeW1OdW07DQo+IA0KPiArICBFeHBvcnREaXItPk51bWJlck9mTmFtZXMgPSBt RXhwb3J0U3ltTnVtOw0KPiANCj4gKyAgRXhwb3J0RGlyLT5CYXNlID0gRUZJX0lNQUdFX0VYUE9S VF9PUkRJTkFMX0JBU0U7DQo+IA0KPiArICBFeHBvcnREaXItPkFkZHJlc3NPZkZ1bmN0aW9ucyA9 IG1FeHBvcnRPZmZzZXQgKw0KPiBzaXplb2YoRUZJX0lNQUdFX0VYUE9SVF9ESVJFQ1RPUlkpOw0K PiANCj4gKyAgRXhwb3J0RGlyLT5BZGRyZXNzT2ZOYW1lcyA9IEV4cG9ydERpci0+QWRkcmVzc09m RnVuY3Rpb25zICsNCj4gRUZJX0lNQUdFX0VYUE9SVF9BRERSX1NJWkUgKiBtRXhwb3J0U3ltTnVt Ow0KPiANCj4gKyAgRXhwb3J0RGlyLT5BZGRyZXNzT2ZOYW1lT3JkaW5hbHMgPSBFeHBvcnREaXIt PkFkZHJlc3NPZk5hbWVzICsNCj4gRUZJX0lNQUdFX0VYUE9SVF9BRERSX1NJWkUgKiBtRXhwb3J0 U3ltTnVtOw0KPiANCj4gKw0KPiANCj4gKyAgRmlsZU5hbWVPZmZzZXQgPSBFeHBvcnREaXItPkFk ZHJlc3NPZk5hbWVPcmRpbmFscyArDQo+IEVGSV9JTUFHRV9FWFBPUlRfT1JESU5BTF9TSVpFICog bUV4cG9ydFN5bU51bTsNCj4gDQo+ICsgIE5hbWVPZmZzZXQgPSBGaWxlTmFtZU9mZnNldCArIHN0 cmxlbihtSW5JbWFnZU5hbWUpICsgMTsNCj4gDQo+ICsNCj4gDQo+ICsgIC8vIFdyaXRlIElucHV0 IGltYWdlIE5hbWUgUlZBDQo+IA0KPiArICBFeHBvcnREaXItPk5hbWUgPSBGaWxlTmFtZU9mZnNl dDsNCj4gDQo+ICsNCj4gDQo+ICsgIC8vIFdyaXRlIElucHV0IGltYWdlIE5hbWUNCj4gDQo+ICsg IHN0cmNweSgoY2hhciAqKShtQ29mZkZpbGUgKyBGaWxlTmFtZU9mZnNldCksIG1JbkltYWdlTmFt ZSk7DQo+IA0KPiArDQo+IA0KPiArICBmb3IgKEluZGV4ID0gMDsgSW5kZXggPCBtRXhwb3J0U3lt TnVtOyBJbmRleCsrKSB7DQo+IA0KPiArICAgIC8vDQo+IA0KPiArICAgIC8vIFdyaXRlIEV4cG9y dCBBZGRyZXNzIFRhYmxlDQo+IA0KPiArICAgIC8vDQo+IA0KPiArICAgIFRkYXRhID0gbUNvZmZG aWxlICsgRXhwb3J0RGlyLT5BZGRyZXNzT2ZGdW5jdGlvbnMgKyBJbmRleCAqDQo+IEVGSV9JTUFH RV9FWFBPUlRfQUREUl9TSVpFOw0KPiANCj4gKyAgICAqKFVJTlQzMiAqKVRkYXRhID0gbUV4cG9y dFJWQVtJbmRleF07DQo+IA0KPiArDQo+IA0KPiArICAgIC8vDQo+IA0KPiArICAgIC8vIFdyaXRl IEV4cG9ydCBOYW1lIFBvaW50ZXIgVGFibGUNCj4gDQo+ICsgICAgLy8NCj4gDQo+ICsgICAgVGRh dGEgPSBtQ29mZkZpbGUgKyBFeHBvcnREaXItPkFkZHJlc3NPZk5hbWVzICsgSW5kZXggKg0KPiBF RklfSU1BR0VfRVhQT1JUX0FERFJfU0laRTsNCj4gDQo+ICsgICAgKihVSU5UMzIgKilUZGF0YSA9 IE5hbWVPZmZzZXQ7DQo+IA0KPiArDQo+IA0KPiArICAgIC8vDQo+IA0KPiArICAgIC8vIFdyaXRl IEV4cG9ydCBPcmRpbmFsIHRhYmxlDQo+IA0KPiArICAgIC8vDQo+IA0KPiArICAgIFRkYXRhID0g bUNvZmZGaWxlICsgRXhwb3J0RGlyLT5BZGRyZXNzT2ZOYW1lT3JkaW5hbHMgKyBJbmRleCAqDQo+ IEVGSV9JTUFHRV9FWFBPUlRfT1JESU5BTF9TSVpFOw0KPiANCj4gKyAgICAqKFVJTlQxNiAqKVRk YXRhID0gSW5kZXg7DQo+IA0KPiArDQo+IA0KPiArICAgIC8vDQo+IA0KPiArICAgIC8vIFdyaXRl IEV4cG9ydCBOYW1lIFRhYmxlDQo+IA0KPiArICAgIC8vDQo+IA0KPiArICAgIHN0cmNweSgoY2hh ciAqKShtQ29mZkZpbGUgKyBOYW1lT2Zmc2V0KSwgbUV4cG9ydFN5bU5hbWVbSW5kZXhdKTsNCj4g DQo+ICsgICAgTmFtZU9mZnNldCArPSBzdHJsZW4obUV4cG9ydFN5bU5hbWVbSW5kZXhdKSArIDE7 DQo+IA0KPiArICB9DQo+IA0KPiArDQo+IA0KPiArICBOdEhkciA9IChFRklfSU1BR0VfT1BUSU9O QUxfSEVBREVSX1VOSU9OICopKG1Db2ZmRmlsZSArDQo+IG1OdEhkck9mZnNldCk7DQo+IA0KPiAr ICBEYXRhRGlyID0NCj4gJk50SGRyLT5QZTMyUGx1cy5PcHRpb25hbEhlYWRlci5EYXRhRGlyZWN0 b3J5W0VGSV9JTUFHRV9ESVJFQ1RPUllfRQ0KPiBOVFJZX0VYUE9SVF07DQo+IA0KPiArICBEYXRh RGlyLT5WaXJ0dWFsQWRkcmVzcyA9IG1FeHBvcnRPZmZzZXQ7DQo+IA0KPiArICBEYXRhRGlyLT5T aXplID0gbUV4cG9ydFNpemU7DQo+IA0KPiArDQo+IA0KPiArfQ0KPiANCj4gDQo+IA0KPiBkaWZm IC0tZ2l0IGEvQmFzZVRvb2xzL1NvdXJjZS9DL0dlbkZ3L0VsZkNvbnZlcnQuYw0KPiBiL0Jhc2VU b29scy9Tb3VyY2UvQy9HZW5Gdy9FbGZDb252ZXJ0LmMNCj4gaW5kZXggN2RiODcyMTE2Ny4uYmU5 ODU0NDA1NiAxMDA2NDQNCj4gLS0tIGEvQmFzZVRvb2xzL1NvdXJjZS9DL0dlbkZ3L0VsZkNvbnZl cnQuYw0KPiArKysgYi9CYXNlVG9vbHMvU291cmNlL0MvR2VuRncvRWxmQ29udmVydC5jDQo+IEBA IC0yMjMsNiArMjIzLDE0IEBAIENvbnZlcnRFbGYgKA0KPiAgICBWZXJib3NlTXNnICgiV3JpdGUg ZGVidWcgaW5mby4iKTsNCj4gDQo+ICAgIEVsZkZ1bmN0aW9ucy5Xcml0ZURlYnVnICgpOw0KPiAN Cj4gDQo+IA0KPiArICAvLw0KPiANCj4gKyAgLy8gRm9yIFBSTSBEcml2ZXIgdG8gV3JpdGUgZXhw b3J0IGluZm8uDQo+IA0KPiArICAvLw0KPiANCj4gKyAgaWYgKG1FeHBvcnRGbGFnKSB7DQo+IA0K PiArICAgIFZlcmJvc2VNc2cgKCJXcml0ZSBleHBvcnQgaW5mby4iKTsNCj4gDQo+ICsgICAgRWxm RnVuY3Rpb25zLldyaXRlRXhwb3J0ICgpOw0KPiANCj4gKyAgfQ0KPiANCj4gKw0KPiANCj4gICAg Ly8NCj4gDQo+ICAgIC8vIE1ha2Ugc3VyZSBpbWFnZSBzaXplIGlzIGNvcnJlY3QgYmVmb3JlIHJl dHVybmluZyB0aGUgbmV3IGltYWdlLg0KPiANCj4gICAgLy8NCj4gDQo+IGRpZmYgLS1naXQgYS9C YXNlVG9vbHMvU291cmNlL0MvR2VuRncvRWxmQ29udmVydC5oDQo+IGIvQmFzZVRvb2xzL1NvdXJj ZS9DL0dlbkZ3L0VsZkNvbnZlcnQuaA0KPiBpbmRleCA4MDFlOGRlNGEyLi42YWI0NjA1MjI3IDEw MDY0NA0KPiAtLS0gYS9CYXNlVG9vbHMvU291cmNlL0MvR2VuRncvRWxmQ29udmVydC5oDQo+ICsr KyBiL0Jhc2VUb29scy9Tb3VyY2UvQy9HZW5Gdy9FbGZDb252ZXJ0LmgNCj4gQEAgLTI0LDYgKzI0 LDcgQEAgZXh0ZXJuIFVJTlQ4ICAqbUNvZmZGaWxlOyAgZXh0ZXJuIFVJTlQzMiANCj4gbVRhYmxl T2Zmc2V0Ow0KPiANCj4gIGV4dGVybiBVSU5UMzIgbU91dEltYWdlVHlwZTsNCj4gDQo+ICBleHRl cm4gVUlOVDMyIG1GaWxlQnVmZmVyU2l6ZTsNCj4gDQo+ICtleHRlcm4gQk9PTEVBTiBtRXhwb3J0 RmxhZzsNCj4gDQo+IA0KPiANCj4gIC8vDQo+IA0KPiAgLy8gQ29tbW9uIEVGSSBzcGVjaWZpYyBk YXRhLg0KPiANCj4gQEAgLTMxLDYgKzMyLDQ0IEBAIGV4dGVybiBVSU5UMzIgbUZpbGVCdWZmZXJT aXplOyAgI2RlZmluZSANCj4gRUxGX0hJSV9TRUNUSU9OX05BTUUgIi5oaWkiDQo+IA0KPiAgI2Rl ZmluZSBFTEZfU1RSVEFCX1NFQ1RJT05fTkFNRSAiLnN0cnRhYiINCj4gDQo+ICAjZGVmaW5lIE1B WF9DT0ZGX0FMSUdOTUVOVCAweDEwMDAwDQo+IA0KPiArI2RlZmluZSBFTEZfU1lNQk9MX1NFQ1RJ T05fTkFNRSAiLnN5bXRhYiINCj4gDQo+ICsNCj4gDQo+ICsvLw0KPiANCj4gKy8vIFBsYXRmb3Jt IFJ1bnRpbWUgTWVjaGFuaXNtIChQUk0pIHNwZWNpZmljIGRhdGEuDQo+IA0KPiArLy8NCj4gDQo+ ICsjZGVmaW5lIFBSTV9NT0RVTEVfRVhQT1JUX1NZTUJPTF9OVU0gMjU2DQo+IA0KPiArDQo+IA0K PiArLy8gPHRvLWRvPiB0byBpbmNsdWRlIFBSTSBoZWFkZXIgZGlyZWN0bHkgb25jZSBQcm1Qa2cg aXMgaW4gbWFpbiByZXBvDQo+IA0KPiArI2RlZmluZSBQUk1fSEFORExFUl9OQU1FX01BWElNVU1f TEVOR1RIIDEyOA0KPiANCj4gKw0KPiANCj4gKyNkZWZpbmUgUFJNX01PRFVMRV9FWFBPUlRfREVT Q1JJUFRPUl9OQU1FDQo+ICJQcm1Nb2R1bGVFeHBvcnREZXNjcmlwdG9yIg0KPiANCj4gKyNkZWZp bmUgUFJNX01PRFVMRV9FWFBPUlRfREVTQ1JJUFRPUl9TSUdOQVRVUkUNCj4gU0lHTkFUVVJFXzY0 ICgnUCcsICdSJywgJ00nLCAnXycsICdNJywgJ0UnLCAnRCcsICdUJykNCj4gDQo+ICsjZGVmaW5l IFBSTV9NT0RVTEVfRVhQT1JUX1JFVklTSU9OICAgICAgICAgICAgICAgIDB4MA0KPiANCj4gKw0K PiANCj4gKy8vDQo+IA0KPiArLy8gUGxhdGZvcm0gUnVudGltZSBNZWNoYW5pc20gKFBSTSkgRXhw b3J0IERlc2NyaXB0b3IgU3RydWN0dXJlcw0KPiANCj4gKy8vDQo+IA0KPiArI3ByYWdtYSBwYWNr KHB1c2gsIDEpDQo+IA0KPiArDQo+IA0KPiArdHlwZWRlZiBzdHJ1Y3Qgew0KPiANCj4gKyAgRUZJ X0dVSUQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcm1IYW5kbGVyR3VpZDsNCj4gDQo+ ICsgIENIQVI4DQo+IFBybUhhbmRsZXJOYW1lW1BSTV9IQU5ETEVSX05BTUVfTUFYSU1VTV9MRU5H VEhdOw0KPiANCj4gK30gUFJNX0hBTkRMRVJfRVhQT1JUX0RFU0NSSVBUT1JfU1RSVUNUOw0KPiAN Cj4gKw0KPiANCj4gK3R5cGVkZWYgc3RydWN0IHsNCj4gDQo+ICsgIFVJTlQ2NCAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgU2lnbmF0dXJlOw0KPiANCj4gKyAgVUlOVDE2ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBSZXZpc2lvbjsNCj4gDQo+ICsgIFVJTlQxNiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgTnVtYmVyUHJtSGFuZGxlcnM7DQo+IA0KPiArICBFRklf R1VJRCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBsYXRmb3JtR3VpZDsNCj4gDQo+ICsg IEVGSV9HVUlEICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTW9kdWxlR3VpZDsNCj4gDQo+ ICt9IFBSTV9NT0RVTEVfRVhQT1JUX0RFU0NSSVBUT1JfU1RSVUNUX0hFQURFUjsNCj4gDQo+ICsN Cj4gDQo+ICt0eXBlZGVmIHN0cnVjdCB7DQo+IA0KPiArICBQUk1fTU9EVUxFX0VYUE9SVF9ERVND UklQVE9SX1NUUlVDVF9IRUFERVIgIEhlYWRlcjsNCj4gDQo+ICsgIFBSTV9IQU5ETEVSX0VYUE9S VF9ERVNDUklQVE9SX1NUUlVDVA0KPiBQcm1IYW5kbGVyRXhwb3J0RGVzY3JpcHRvcnNbMV07DQo+ IA0KPiArfSBQUk1fTU9EVUxFX0VYUE9SVF9ERVNDUklQVE9SX1NUUlVDVDsNCj4gDQo+ICsNCj4g DQo+ICsjcHJhZ21hIHBhY2socG9wKQ0KPiANCj4gDQo+IA0KPiAgLy8NCj4gDQo+ICAvLyBGaWx0 ZXIgVHlwZXMNCj4gDQo+IEBAIC0zOCw3ICs3Nyw4IEBAIGV4dGVybiBVSU5UMzIgbUZpbGVCdWZm ZXJTaXplOyAgdHlwZWRlZiBlbnVtIHsNCj4gDQo+ICAgIFNFQ1RJT05fVEVYVCwNCj4gDQo+ICAg IFNFQ1RJT05fSElJLA0KPiANCj4gLSAgU0VDVElPTl9EQVRBDQo+IA0KPiArICBTRUNUSU9OX0RB VEEsDQo+IA0KPiArICBTRUNUSU9OX1NZTUJPTA0KPiANCj4gDQo+IA0KPiAgfSBTRUNUSU9OX0ZJ TFRFUl9UWVBFUzsNCj4gDQo+IA0KPiANCj4gQEAgLTUwLDYgKzkwLDcgQEAgdHlwZWRlZiBzdHJ1 Y3Qgew0KPiAgICBCT09MRUFOICgqV3JpdGVTZWN0aW9ucykgKFNFQ1RJT05fRklMVEVSX1RZUEVT ICBGaWx0ZXJUeXBlKTsNCj4gDQo+ICAgIFZPSUQgICAgKCpXcml0ZVJlbG9jYXRpb25zKSAoKTsN Cj4gDQo+ICAgIFZPSUQgICAgKCpXcml0ZURlYnVnKSAoKTsNCj4gDQo+ICsgIFZPSUQgICAgKCpX cml0ZUV4cG9ydCkgKCk7DQo+IA0KPiAgICBWT0lEICAgICgqU2V0SW1hZ2VTaXplKSAoKTsNCj4g DQo+ICAgIFZPSUQgICAgKCpDbGVhblVwKSAoKTsNCj4gDQo+IA0KPiANCj4gZGlmZiAtLWdpdCBh L0Jhc2VUb29scy9Tb3VyY2UvQy9HZW5Gdy9HZW5Gdy5jDQo+IGIvQmFzZVRvb2xzL1NvdXJjZS9D L0dlbkZ3L0dlbkZ3LmMNCj4gaW5kZXggOGNhYjcwYmE0ZC4uNmY2MWYxNjc4OCAxMDA2NDQNCj4g LS0tIGEvQmFzZVRvb2xzL1NvdXJjZS9DL0dlbkZ3L0dlbkZ3LmMNCj4gKysrIGIvQmFzZVRvb2xz L1NvdXJjZS9DL0dlbkZ3L0dlbkZ3LmMNCj4gQEAgLTg3LDcgKzg3LDcgQEAgVUlOVDMyIG1JbWFn ZVRpbWVTdGFtcCA9IDA7DQo+ICBVSU5UMzIgbUltYWdlU2l6ZSA9IDA7DQo+IA0KPiAgVUlOVDMy IG1PdXRJbWFnZVR5cGUgPSBGV19EVU1NWV9JTUFHRTsNCj4gDQo+ICBCT09MRUFOIG1Jc0NvbnZl cnRYaXAgPSBGQUxTRTsNCj4gDQo+IC0NCj4gDQo+ICtCT09MRUFOIG1FeHBvcnRGbGFnID0gRkFM U0U7DQo+IA0KPiANCj4gDQo+ICBTVEFUSUMNCj4gDQo+ICBFRklfU1RBVFVTDQo+IA0KPiBAQCAt Mjc5LDYgKzI3OSwxMCBAQCBSZXR1cm5zOg0KPiAgICAgICAgICAgICAgICAgICAgICAgICAgZXhj ZXB0IGZvciAtbyBvciAtciBvcHRpb24uIEl0IGlzIGEgYWN0aW9uIA0KPiBvcHRpb24uXG5cDQo+ IA0KPiAgICAgICAgICAgICAgICAgICAgICAgICAgSWYgaXQgaXMgY29tYmluZWQgd2l0aCBvdGhl ciBhY3Rpb24gb3B0aW9ucywgDQo+IHRoZSBsYXRlclxuXA0KPiANCj4gICAgICAgICAgICAgICAg ICAgICAgICAgIGlucHV0IGFjdGlvbiBvcHRpb24gd2lsbCBvdmVycmlkZSB0aGUgDQo+IHByZXZp b3VzIG9uZS5cbiIpOw0KPiANCj4gKyAgZnByaW50ZiAoc3Rkb3V0LCAiICAtLXBybSAgICAgICAg ICAgICAgICAgU2NhbiBzeW1ib2wgc2VjdGlvbiBmcm9tDQo+IEVMRiBpbWFnZSBhbmQgXG5cDQo+ IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGUgZXhwb3J0IHRhYmxlIGludG8gUEUt Q09GRi5cblwNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIG9wdGlvbiBjYW4g YmUgdXNlZCB0b2dldGhlciB3aXRoIC1lLlxuXA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAg ICAgIEl0IGRvZXNuJ3Qgd29yayBmb3Igb3RoZXIgb3B0aW9ucy5cbiIpOw0KPiANCj4gICAgZnBy aW50ZiAoc3Rkb3V0LCAiICAtdiwgLS12ZXJib3NlICAgICAgICAgVHVybiBvbiB2ZXJib3NlIG91 dHB1dCB3aXRoDQo+IGluZm9ybWF0aW9uYWwgbWVzc2FnZXMuXG4iKTsNCj4gDQo+ICAgIGZwcmlu dGYgKHN0ZG91dCwgIiAgLXEsIC0tcXVpZXQgICAgICAgICAgIERpc2FibGUgYWxsIG1lc3NhZ2Vz IGV4Y2VwdA0Ka2V5DQo+IG1lc3NhZ2UgYW5kIGZhdGFsIGVycm9yXG4iKTsNCj4gDQo+ICAgIGZw cmludGYgKHN0ZG91dCwgIiAgLWQsIC0tZGVidWcgbGV2ZWwgICAgIEVuYWJsZSBkZWJ1ZyBtZXNz YWdlcywgYXQNCmlucHV0DQo+IGRlYnVnIGxldmVsLlxuIik7DQo+IA0KPiBAQCAtMTQzNiw2ICsx NDQwLDIwIEBAIFJldHVybnM6DQo+ICAgICAgICBjb250aW51ZTsNCj4gDQo+ICAgICAgfQ0KPiAN Cj4gDQo+IA0KPiArICAgIGlmIChzdHJpY21wIChhcmd2WzBdLCAiLS1wcm0iKSA9PSAwKSB7DQo+ IA0KPiArICAgICAgaWYgKHN0cmljbXAgKE1vZHVsZVR5cGUsICJEWEVfUlVOVElNRV9EUklWRVIi KSAhPSAwICl7DQo+IA0KPiArICAgICAgICBFcnJvciAoTlVMTCwgMCwgMTAwMSwgIkludmFsaWQi LCAiLS1wcm0gb3B0aW9uIG9ubHkgc3VwcG9ydHMgDQo+ICsgRFhFDQo+IFJVTlRJTUUgZHJpdmVy LiIpOw0KPiANCj4gKyAgICAgICAgZ290byBGaW5pc2g7DQo+IA0KPiArICAgICAgfQ0KPiANCj4g Kw0KPiANCj4gKyAgICAgIGlmICghbUV4cG9ydEZsYWcpIHsNCj4gDQo+ICsgICAgICAgIG1FeHBv cnRGbGFnID0gVFJVRTsNCj4gDQo+ICsgICAgICB9DQo+IA0KPiArICAgICAgYXJnYyAtLTsNCj4g DQo+ICsgICAgICBhcmd2ICsrOw0KPiANCj4gKyAgICAgIGNvbnRpbnVlOw0KPiANCj4gKyAgICB9 DQo+IA0KPiArDQo+IA0KPiAgICAgIGlmIChhcmd2WzBdWzBdID09ICctJykgew0KPiANCj4gICAg ICAgIEVycm9yIChOVUxMLCAwLCAxMDAwLCAiVW5rbm93biBvcHRpb24iLCBhcmd2WzBdKTsNCj4g DQo+ICAgICAgICBnb3RvIEZpbmlzaDsNCj4gDQo+IGRpZmYgLS1naXQgYS9CYXNlVG9vbHMvU291 cmNlL0MvSW5jbHVkZS9JbmR1c3RyeVN0YW5kYXJkL1BlSW1hZ2UuaA0KPiBiL0Jhc2VUb29scy9T b3VyY2UvQy9JbmNsdWRlL0luZHVzdHJ5U3RhbmRhcmQvUGVJbWFnZS5oDQo+IGluZGV4IGYxN2I4 ZWUxOWIuLjIxYzk2OGU2NTAgMTAwNjQ0DQo+IC0tLSBhL0Jhc2VUb29scy9Tb3VyY2UvQy9JbmNs dWRlL0luZHVzdHJ5U3RhbmRhcmQvUGVJbWFnZS5oDQo+ICsrKyBiL0Jhc2VUb29scy9Tb3VyY2Uv Qy9JbmNsdWRlL0luZHVzdHJ5U3RhbmRhcmQvUGVJbWFnZS5oDQo+IEBAIC01NzEsNiArNTcxLDEz IEBAIHR5cGVkZWYgc3RydWN0IHsNCj4gICAgVUlOVDMyICBBZGRyZXNzT2ZOYW1lT3JkaW5hbHM7 DQo+IA0KPiAgfSBFRklfSU1BR0VfRVhQT1JUX0RJUkVDVE9SWTsNCj4gDQo+IA0KPiANCj4gKy8v DQo+IA0KPiArLy8gQmFzZWQgZXhwb3J0IHR5cGVzLg0KPiANCj4gKy8vDQo+IA0KPiArI2RlZmlu ZSBFRklfSU1BR0VfRVhQT1JUX09SRElOQUxfQkFTRSAgICAgMQ0KPiANCj4gKyNkZWZpbmUgRUZJ X0lNQUdFX0VYUE9SVF9BRERSX1NJWkUgICAgICAgIDQNCj4gDQo+ICsjZGVmaW5lIEVGSV9JTUFH RV9FWFBPUlRfT1JESU5BTF9TSVpFICAgICAyDQo+IA0KPiArDQo+IA0KPiAgLy8vDQo+IA0KPiAg Ly8vIERMTCBzdXBwb3J0Lg0KPiANCj4gIC8vLyBJbXBvcnQgRm9ybWF0DQo+IA0KPiAtLQ0KPiAy LjI2LjIud2luZG93cy4xDQo+IA0KPiANCj4gDQo+IC09LT0tPS09LT0tPQ0KPiBHcm91cHMuaW8g TGlua3M6IFlvdSByZWNlaXZlIGFsbCBtZXNzYWdlcyBzZW50IHRvIHRoaXMgZ3JvdXAuDQo+IFZp ZXcvUmVwbHkgT25saW5lICgjODcwNDApOiANCj4gaHR0cHM6Ly9lZGsyLmdyb3Vwcy5pby9nL2Rl dmVsL21lc3NhZ2UvODcwNDANCj4gTXV0ZSBUaGlzIFRvcGljOiBodHRwczovL2dyb3Vwcy5pby9t dC84OTQ0MTQ5OS80OTA1OTUzDQo+IEdyb3VwIE93bmVyOiBkZXZlbCtvd25lckBlZGsyLmdyb3Vw cy5pbw0KPiBVbnN1YnNjcmliZTogaHR0cHM6Ly9lZGsyLmdyb3Vwcy5pby9nL2RldmVsL3Vuc3Vi DQo+IFtnYW9saW1pbmdAYnlvc29mdC5jb20uY25dDQo+IC09LT0tPS09LT0tPQ0KPiANCg0KDQoN Cg0KDQoNCg0KDQo=