From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from NAM04-MW2-obe.outbound.protection.outlook.com (NAM04-MW2-obe.outbound.protection.outlook.com [40.107.101.75]) by mx.groups.io with SMTP id smtpd.web10.41739.1682300554250857524 for ; Sun, 23 Apr 2023 18:42:34 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@amd.com header.s=selector1 header.b=Eu0CORKx; spf=permerror, err=parse error for token &{10 18 %{i}._ip.%{h}._ehlo.%{d}._spf.vali.email}: invalid domain name (domain: amd.com, ip: 40.107.101.75, mailfrom: abner.chang@amd.com) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=fx3Ch/rfFm9YmXQ4KsOFMisijzEYF25lWgqe5Al2+pstdTecynipWDOo0nX+yj3CySE4Ig+62QxHUf1ys1BQ9x6PjWckspA6OBFdvFkSsuIBaFNdtd4qo2EifaMINcVbIm6q5l6Vlfy00ljDURLysgqkLvxXwVylKNXlN8gTREi+9FIURdKWqTJ56AqoSSbmx0uFnwu4gwEHy+Dq6PpXio7wyJ3fDmuFezmNRDEM6Qff53JclomWEuTjg4v3EnKVAV0Se/yDnm52ag8dTmQfTiEGEllKeiVZYAwL0v+WYT4zEJTKv6K2Q2JAwdX1wdTaCVXenHLFYzu6d9U+VB9A8Q== 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=cXFK1cVZTILhCgWlw0sy6ltelc3BWkRmRBWI9ELbBkk=; b=cmW7AfxGl53gbKbiQTNa2O5xWm2GgbuAQDdTNtYrItknWBqIecYqNpvwHh9ypOhMIHsm+nvjgFCxl7zuB5sFfyGGfz5jwPs66GXMCjIB0m//Krnv91ljFR4X3k9LENGItKYYSvymPIyB8n75IRwcp8likBT5imb5oVM27doJURO4zmbbtLXHyhAeFn03+/YTz5Ayhu0HmHDYWA14HgAyv7Ee+zFuu5xULrQfiXyfZZ1l8HzH7e2mDukM/zXQCVMppDMbWbxarlw6pRbj3BUbAYbO3hQhTzD7h49C3pZwkoa79IeSsv7B5vTNIQnDnaYLBoB1Hw74fMDRIlJlzhfbaQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=amd.com; dmarc=pass action=none header.from=amd.com; dkim=pass header.d=amd.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=cXFK1cVZTILhCgWlw0sy6ltelc3BWkRmRBWI9ELbBkk=; b=Eu0CORKxChBfnjkFcS/XwV01vd11fE6CrqdJbyh2thhV9YcNdSAYZZNMgWRNi2tUf0redIoGzAMN5FJ9T5QoPs5l1hxv3+YItSPHwZdrVmEx7rfsxOKsdufbFo1Y5v3AD7iUi7Ipqv8nIlF2R1+W7mWFPcpoNtZ6OkSShJmsWTE= Received: from MN2PR12MB3966.namprd12.prod.outlook.com (2603:10b6:208:165::18) by PH0PR12MB7488.namprd12.prod.outlook.com (2603:10b6:510:1e9::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6298.45; Mon, 24 Apr 2023 01:42:29 +0000 Received: from MN2PR12MB3966.namprd12.prod.outlook.com ([fe80::46f1:bdce:a4bc:29e3]) by MN2PR12MB3966.namprd12.prod.outlook.com ([fe80::46f1:bdce:a4bc:29e3%3]) with mapi id 15.20.6319.033; Mon, 24 Apr 2023 01:42:29 +0000 From: "Chang, Abner" To: "devel@edk2.groups.io" , "Chang, Abner" , Tinh Nguyen CC: Isaac Oram , "Attar, AbdulLateef (Abdul Lateef)" , Nickle Wang , Igor Kulchytskyy Subject: Re: [edk2-devel] [edk2-platforms][PATCH V2 02/14] ManageabilityPkg: Support Maximum Transfer Unit Thread-Topic: [edk2-devel] [edk2-platforms][PATCH V2 02/14] ManageabilityPkg: Support Maximum Transfer Unit Thread-Index: AQHZc058z58Z/Ae3j0ydySQvWX5LFK806bRAgABtUYCAAAG90IAEXG8Q Date: Mon, 24 Apr 2023 01:42:29 +0000 Message-ID: References: <20230418071543.1951-1-abner.chang@amd.com> <20230418071543.1951-3-abner.chang@amd.com> <0e8628de-5da9-849d-db7d-ae0b6be126b1@amperemail.onmicrosoft.com> <84e90c10-4d5a-0eaf-1aa1-09dd3428af00@amperemail.onmicrosoft.com> <1757E190B31AA266.29498@groups.io> In-Reply-To: <1757E190B31AA266.29498@groups.io> Accept-Language: zh-CN, en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: msip_labels: MSIP_Label_4342314e-0df4-4b58-84bf-38bed6170a0f_Enabled=true; MSIP_Label_4342314e-0df4-4b58-84bf-38bed6170a0f_SetDate=2023-04-24T01:42:26Z; MSIP_Label_4342314e-0df4-4b58-84bf-38bed6170a0f_Method=Standard; MSIP_Label_4342314e-0df4-4b58-84bf-38bed6170a0f_Name=General; MSIP_Label_4342314e-0df4-4b58-84bf-38bed6170a0f_SiteId=3dd8961f-e488-4e60-8e11-a82d994e183d; MSIP_Label_4342314e-0df4-4b58-84bf-38bed6170a0f_ActionId=8cfb651d-33a5-45ff-9e92-96b04edae9fa; MSIP_Label_4342314e-0df4-4b58-84bf-38bed6170a0f_ContentBits=1 authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=amd.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: MN2PR12MB3966:EE_|PH0PR12MB7488:EE_ x-ms-office365-filtering-correlation-id: a9190658-472c-45a2-d426-08db44652a42 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: qp35Gsqm/ZHZ894rwflfyNSAb8Z2IHG7ZRezCixcO0QbLkm45HpX6uiRvWUc6FzXY0WtwJae7OiTZFIzAXEPf5BF1QK0x0DSD+XD2oWwY1tlwVoxih49C05OnvoPOMotzjHQsUMeTsGKkWUgjbtbVNbfB4a0H/F/+Or5ndVEurummkhQ+iuX9/3zER/62b9FaFq9ndGUP3ymeh2YWDhsPaQXxMwJ2w4xgr6+LfqECZIvPFzwmLX12G9HCftqSL1AofyOyQCGkuuX+ojVN5Dk0u6n93V5xX+gqhR4GhrWrYT/HHD9C+i1i0e4XDTICREXvwbtbsw63RWfiD+LA+O7/9JoF2qZgUVGxauCXI8WKmrujkUkbaIRTYbCPW5GgpFNXPpEamrss9jzwcqJjnYPYlz4ZLAiJ/kNAXmDwcduMRPpjNL/xUJz6B+s6+PF4hxNWiMYByPNjVxTSdVbh/rN8rUZIrYEFg0PqPxL8/1MsJ8mynohJJo85JoZr3szCfU/eMNjSriFVzMhnJocXzWjrIOyB/vNxxwfwV9QoCl2pD/pBtNJcmpZbQUq7BkFuQFlL26TqxTEql0zyb7SIOfh2yKIWz4hQwszkVnHK7NQxjjYoRQXLrlc4MyU5pgDpPgx x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:MN2PR12MB3966.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230028)(4636009)(39860400002)(136003)(346002)(376002)(396003)(366004)(451199021)(38100700002)(8936002)(66899021)(8676002)(38070700005)(122000001)(5660300002)(2906002)(30864003)(33656002)(86362001)(52536014)(55016003)(478600001)(7696005)(71200400001)(110136005)(54906003)(186003)(66946007)(66476007)(6506007)(9686003)(966005)(66446008)(53546011)(76116006)(316002)(83380400001)(4326008)(19627235002)(41300700001)(66556008)(64756008)(26005)(579004)(559001)(44824005);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?Y29FWDREdTh6Vk5RUXBFSUIxcHZaai92MnBWR1lPNEdwOWtqZTFCeEhQdGN6?= =?utf-8?B?N3d4RjZGVk90TDdoMjZFMDJLMjUzRGw4ZXZOT2t4Vmlja1dpNXJ6S0NPeEN4?= =?utf-8?B?RThwUkFmdFRRTU5WYmt3RjkvVkIxTGpKQzdUc0pTdzRJNGJCcjZ1QVBDL3ZL?= =?utf-8?B?bjY0aTR5RzcxN3RLWG51V1NURjhMQnpUK3NLQm1JazlvRkl6cmNETFZlR1Nh?= =?utf-8?B?N0kzVFUwbldBN2lZd0dFQ3AvWmJyQTlydjNjWXQzenNpRFpUbFlKWXJmOHFX?= =?utf-8?B?d05WOVJ1c3c5amVvM3V0Q1o4NDJrT3lKL1hqT3FybHJEZEF1MzNQdGg2RGg4?= =?utf-8?B?ZEdRQ3ZtNTBvUS92UTNmSEtLZHlzYkhiNm5LMzdha3JjdEV1WUJsNzUrRWRW?= =?utf-8?B?SDNmUDVpRUVSdjg2VkxFSGdsNENkNnhuTWlzazlzNFJDZ3o3ZStBZVZJNjRC?= =?utf-8?B?VG5NTXdWdDNIajBTVkxxa2d1cGZlNVAxZXgxU0hBbUg4S3FNQkxoY3B1L0FC?= =?utf-8?B?MzRJQm5IejVxeUpTWHZ3OFhDK3hoQWZQdHR6a0MvT3k2cGEwSzNpaTl1OGcz?= =?utf-8?B?akVXdUZSMzZsSnd5YkNkUnJ5YzFtcHlhSVdmZ2g1Z29zQUI2TTRNNXNqRzIx?= =?utf-8?B?dWw1SDMzZEdzTG1OZ21vZjFkWVRtR1c1Y1RVbExjTlhlZ1BzWlhHSmJ1R0U5?= =?utf-8?B?UnVDaHl3eXZuMEFtWldXd1hDMVl3S3BPaFMvalIxQ3RCbEhtaXF6dGVTRHhj?= =?utf-8?B?V3R0MktkamRFRVhTbEQ3M2RZbDNXQUo0c2t3bE5QanorNGpYdmxLSVp2UEg0?= =?utf-8?B?OGpOS05XRStMNWxwL2FJQWNYVXlWWUlVZUJQbmlON1g2bE11MGR4ZS95eUt0?= =?utf-8?B?c3M2WVJsdUVBYzg0ZlZYY2c5MkZzQWwxVVZjbWphRWlGZTg2Y3Mxc3BOV0Fj?= =?utf-8?B?QVFlN0VBZXJwUkc0bklIL2pkOE1NUTJaYTl3Z1ZDMUhPdUljdm9pQWcxaW81?= =?utf-8?B?RFRTQUJXem03OUVqUjBxOGhQV3hLaS9oS2tNNkd6WVF6c0d1cVorQUhvWGJl?= =?utf-8?B?aG02SEdhcDJHQkRBWnVOQzNGblNmanBsM1p5TVA1QVg0T3V4Sytpb0FtTFVM?= =?utf-8?B?ejFUdlMxZFhZNDhSelpEYW5IdUQ5dGpMRUozd2UwaUQ0T29kS21lbktRaERW?= =?utf-8?B?bUlvOVhybU03ek4vYitXUTY0UTdYWS8rclorUWVMYjlqY1RsV0tKa0NmeHRO?= =?utf-8?B?TDlFOWVSZGE5WXVOUFF2cWpDaG93UzVPS2hVS09CR0lIR1ZVdjF0OWQ3UTB1?= =?utf-8?B?NWpYd3hINHRxZnEyMWtpZEJOLzlNSlYrdktnamNqdjdhZ25DY056Tm9kWUdq?= =?utf-8?B?VFo4Wkcvd2daVTV4WGMvbXZsajNjNWVENHlBTnlUbFVYVEUxY0VjdFZuekhX?= =?utf-8?B?dWNreUNQY2FvNXFhRk11cC8xNHBBQ0x1cDBKRG9JbThZN1FNcng1Z3lJOXNI?= =?utf-8?B?MXZJMDNxc0R0ZjhIb0ZZK2VkMTU3UE1mNndGM2ZIZmxzd1B5WlhXa1NqWGhX?= =?utf-8?B?ZVhXajloYXFja1dPcVdJMUVsd2k1MHM2RGdqbkdvVzRkb0R1TWk2cDZNcC9h?= =?utf-8?B?VWRXdkk1OXZtanhhY0l2T0J3bFlWd25GRFVhbG56ZlZBRHI1VHEyN2VsMzF6?= =?utf-8?B?aU5HVkw4eTJkWWpQTUZUQTZ4Rmg2Z3FDR1h3RVlQa3hGUW4wckd5UlFqNUwv?= =?utf-8?B?aXgza3RSNWZZNmJkM2ltbzQ1RnZtZVhsOTJzdkRERnFkYlNNMUt5VUdVVXcr?= =?utf-8?B?TncwaXVITlVtQmtlOWlQNURTVFJRS3Exeml0Rm5ZWkFYT1JNbXE4RzBDOFpL?= =?utf-8?B?WFZ2SGZJWlBmUFg1enU3SWthdHdCUTdGaUtDdmdDblc2cG90dEhYVFFmbkNt?= =?utf-8?B?MjRqOG1qSEl4Z3UvYjUyNkZxVG5BaXNyaTJaOFFrVWluSlhBLzN6T0Z6MkZl?= =?utf-8?B?Yk5OOWs0SFRZSkVQd2JLVkNXNVgyOHJVWTVETlVCbysvY2F2SVdBRm1DeGhy?= =?utf-8?B?eTlDR0IrTy9OVzgwTyttbjdiWmtvRXBzTnJWVyt5VmhZRTAvL0Y1bDkzOVNm?= =?utf-8?Q?CFCM=3D?= MIME-Version: 1.0 X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: MN2PR12MB3966.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: a9190658-472c-45a2-d426-08db44652a42 X-MS-Exchange-CrossTenant-originalarrivaltime: 24 Apr 2023 01:42:29.4094 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: LpOCnfRE9XiWkkpUrzvTLFCgt6W8LdY6/SfKKrAZ68TXZZAkvsVA6Tl2fwUlriPB5quoaGD2lshOdWYPVu3yNg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH0PR12MB7488 Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 W0FNRCBPZmZpY2lhbCBVc2UgT25seSAtIEdlbmVyYWxdDQoNCkhpIFRpbmgsDQoNCj4gLS0tLS1P cmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogZGV2ZWxAZWRrMi5ncm91cHMuaW8gPGRldmVs QGVkazIuZ3JvdXBzLmlvPiBPbiBCZWhhbGYgT2YgQ2hhbmcsDQo+IEFibmVyIHZpYSBncm91cHMu aW8NCj4gU2VudDogRnJpZGF5LCBBcHJpbCAyMSwgMjAyMyAzOjEwIFBNDQo+IFRvOiBUaW5oIE5n dXllbiA8dGluaG5ndXllbkBhbXBlcmVtYWlsLm9ubWljcm9zb2Z0LmNvbT47DQo+IGRldmVsQGVk azIuZ3JvdXBzLmlvDQo+IENjOiBJc2FhYyBPcmFtIDxpc2FhYy53Lm9yYW1AaW50ZWwuY29tPjsg QXR0YXIsIEFiZHVsTGF0ZWVmIChBYmR1bCBMYXRlZWYpDQo+IDxBYmR1bExhdGVlZi5BdHRhckBh bWQuY29tPjsgTmlja2xlIFdhbmcgPG5pY2tsZXdAbnZpZGlhLmNvbT47IElnb3INCj4gS3VsY2h5 dHNreXkgPGlnb3JrQGFtaS5jb20+DQo+IFN1YmplY3Q6IFJlOiBbZWRrMi1kZXZlbF0gW2VkazIt cGxhdGZvcm1zXVtQQVRDSCBWMiAwMi8xNF0NCj4gTWFuYWdlYWJpbGl0eVBrZzogU3VwcG9ydCBN YXhpbXVtIFRyYW5zZmVyIFVuaXQNCj4gDQo+IENhdXRpb246IFRoaXMgbWVzc2FnZSBvcmlnaW5h dGVkIGZyb20gYW4gRXh0ZXJuYWwgU291cmNlLiBVc2UgcHJvcGVyDQo+IGNhdXRpb24gd2hlbiBv cGVuaW5nIGF0dGFjaG1lbnRzLCBjbGlja2luZyBsaW5rcywgb3IgcmVzcG9uZGluZy4NCj4gDQo+ IA0KPiBbQU1EIE9mZmljaWFsIFVzZSBPbmx5IC0gR2VuZXJhbF0NCj4gDQo+IA0KPiANCj4gPiAt LS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiA+IEZyb206IFRpbmggTmd1eWVuIDx0aW5obmd1 eWVuQGFtcGVyZW1haWwub25taWNyb3NvZnQuY29tPg0KPiA+IFNlbnQ6IEZyaWRheSwgQXByaWwg MjEsIDIwMjMgMjo1OSBQTQ0KPiA+IFRvOiBDaGFuZywgQWJuZXIgPEFibmVyLkNoYW5nQGFtZC5j b20+OyBkZXZlbEBlZGsyLmdyb3Vwcy5pbw0KPiA+IENjOiBJc2FhYyBPcmFtIDxpc2FhYy53Lm9y YW1AaW50ZWwuY29tPjsgQXR0YXIsIEFiZHVsTGF0ZWVmIChBYmR1bA0KPiA+IExhdGVlZikgPEFi ZHVsTGF0ZWVmLkF0dGFyQGFtZC5jb20+OyBOaWNrbGUgV2FuZw0KPiA8bmlja2xld0BudmlkaWEu Y29tPjsNCj4gPiBJZ29yIEt1bGNoeXRza3l5IDxpZ29ya0BhbWkuY29tPg0KPiA+IFN1YmplY3Q6 IFJlOiBbZWRrMi1kZXZlbF0gW2VkazItcGxhdGZvcm1zXVtQQVRDSCBWMiAwMi8xNF0NCj4gPiBN YW5hZ2VhYmlsaXR5UGtnOiBTdXBwb3J0IE1heGltdW0gVHJhbnNmZXIgVW5pdA0KPiA+DQo+ID4g Q2F1dGlvbjogVGhpcyBtZXNzYWdlIG9yaWdpbmF0ZWQgZnJvbSBhbiBFeHRlcm5hbCBTb3VyY2Uu IFVzZSBwcm9wZXINCj4gPiBjYXV0aW9uIHdoZW4gb3BlbmluZyBhdHRhY2htZW50cywgY2xpY2tp bmcgbGlua3MsIG9yIHJlc3BvbmRpbmcuDQo+ID4NCj4gPg0KPiA+IE9uIDQvMjEvMjAyMyA3OjUx IEFNLCBDaGFuZywgQWJuZXIgd3JvdGU6DQo+ID4gPiBbRVhURVJOQUwgRU1BSUwgTk9USUNFOiBU aGlzIGVtYWlsIG9yaWdpbmF0ZWQgZnJvbSBhbiBleHRlcm5hbCBzZW5kZXIuDQo+ID4gPiBQbGVh c2UgYmUgbWluZGZ1bCBvZiBzYWZlIGVtYWlsIGhhbmRsaW5nIGFuZCBwcm9wcmlldGFyeSBpbmZv cm1hdGlvbg0KPiA+ID4gcHJvdGVjdGlvbiBwcmFjdGljZXMuXQ0KPiA+ID4NCj4gPiA+DQo+ID4g PiBbQU1EIE9mZmljaWFsIFVzZSBPbmx5IC0gR2VuZXJhbF0NCj4gPiA+DQo+ID4gPg0KPiA+ID4N Cj4gPiA+PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiA+ID4+IEZyb206IFRpbmggTmd1 eWVuIDx0aW5obmd1eWVuQGFtcGVyZW1haWwub25taWNyb3NvZnQuY29tPg0KPiA+ID4+IFNlbnQ6 IFRodXJzZGF5LCBBcHJpbCAyMCwgMjAyMyAyOjA4IFBNDQo+ID4gPj4gVG86IGRldmVsQGVkazIu Z3JvdXBzLmlvOyBDaGFuZywgQWJuZXIgPEFibmVyLkNoYW5nQGFtZC5jb20+DQo+ID4gPj4gQ2M6 IElzYWFjIE9yYW0gPGlzYWFjLncub3JhbUBpbnRlbC5jb20+OyBBdHRhciwgQWJkdWxMYXRlZWYg KEFiZHVsDQo+ID4gPj4gTGF0ZWVmKSA8QWJkdWxMYXRlZWYuQXR0YXJAYW1kLmNvbT47IE5pY2ts ZSBXYW5nDQo+ID4gPj4gPG5pY2tsZXdAbnZpZGlhLmNvbT47IElnb3IgS3VsY2h5dHNreXkgPGln b3JrQGFtaS5jb20+DQo+ID4gPj4gU3ViamVjdDogUmU6IFtlZGsyLWRldmVsXSBbZWRrMi1wbGF0 Zm9ybXNdW1BBVENIIFYyIDAyLzE0XQ0KPiA+ID4+IE1hbmFnZWFiaWxpdHlQa2c6IFN1cHBvcnQg TWF4aW11bSBUcmFuc2ZlciBVbml0DQo+ID4gPj4NCj4gPiA+PiBDYXV0aW9uOiBUaGlzIG1lc3Nh Z2Ugb3JpZ2luYXRlZCBmcm9tIGFuIEV4dGVybmFsIFNvdXJjZS4gVXNlDQo+ID4gPj4gcHJvcGVy IGNhdXRpb24gd2hlbiBvcGVuaW5nIGF0dGFjaG1lbnRzLCBjbGlja2luZyBsaW5rcywgb3IgcmVz cG9uZGluZy4NCj4gPiA+Pg0KPiA+ID4+DQo+ID4gPj4gSGkgQWJuZXIsDQo+ID4gPj4NCj4gPiA+ PiBJIGhhdmUgc29tZSBpbmxpbmUgY29tbWVudHMgYmVsb3cNCj4gPiA+Pg0KPiA+ID4+IE9uIDE4 LzA0LzIwMjMgMTQ6MTUsIENoYW5nLCBBYm5lciB2aWEgZ3JvdXBzLmlvIHdyb3RlOg0KPiA+ID4+ PiBGcm9tOiBBYm5lciBDaGFuZyA8YWJuZXIuY2hhbmdAYW1kLmNvbT4NCj4gPiA+Pj4NCj4gPiA+ Pj4gVXBkYXRlIEdldFRyYW5zcG9ydENhcGFiaWxpdHkgdG8gc3VwcG9ydCBNYXhpbXVtIFRyYW5z ZmVyIFVuaXQNCj4gPiA+Pj4gKE1UVSkgb2YgdHJhbnNwb3J0IGludGVyZmFjZS4NCj4gPiA+Pj4N Cj4gPiA+Pj4gU2lnbmVkLW9mZi1ieTogQWJuZXIgQ2hhbmcgPGFibmVyLmNoYW5nQGFtZC5jb20+ DQo+ID4gPj4+IENjOiBJc2FhYyBPcmFtIDxpc2FhYy53Lm9yYW1AaW50ZWwuY29tPg0KPiA+ID4+ PiBDYzogQWJkdWwgTGF0ZWVmIEF0dGFyIDxhYmRhdHRhckBhbWQuY29tPg0KPiA+ID4+PiBDYzog Tmlja2xlIFdhbmcgPG5pY2tsZXdAbnZpZGlhLmNvbT4NCj4gPiA+Pj4gQ2M6IElnb3IgS3VsY2h5 dHNreXkgPGlnb3JrQGFtaS5jb20+DQo+ID4gPj4+IC0tLQ0KPiA+ID4+PiAgICAuLi4vTGlicmFy eS9NYW5hZ2VhYmlsaXR5VHJhbnNwb3J0TGliLmggICAgICAgfCAzMyArKysrKysrKy0tLQ0KPiA+ ID4+PiAgICAuLi4vQ29tbW9uL01hbmFnZWFiaWxpdHlUcmFuc3BvcnRLY3MuaCAgICAgICAgfCAg MiArDQo+ID4gPj4+ICAgIC4uLi9JcG1pUHJvdG9jb2wvUGVpL0lwbWlQcGlJbnRlcm5hbC5oICAg ICAgICB8ICA4ICsrLQ0KPiA+ID4+PiAgICAuLi4vQmFzZU1hbmFnZWFiaWxpdHlUcmFuc3BvcnRO dWxsLmMgICAgICAgICAgfCAxOCArKysrLS0NCj4gPiA+Pj4gICAgLi4uL0R4ZS9NYW5hZ2VhYmls aXR5VHJhbnNwb3J0S2NzLmMgICAgICAgICAgIHwgNTcgKysrKysrKysrKystLS0tLS0tLQ0KPiA+ ID4+PiAgICAuLi4vVW5pdmVyc2FsL0lwbWlQcm90b2NvbC9EeGUvSXBtaVByb3RvY29sLmMgfCAy NCArKysrKystLQ0KPiA+ID4+PiAgICAuLi4vVW5pdmVyc2FsL0lwbWlQcm90b2NvbC9QZWkvSXBt aVBwaS5jICAgICAgfCA1MSArKysrKysrKysrLS0tLS0tLQ0KPiA+ID4+PiAgICAuLi4vVW5pdmVy c2FsL0lwbWlQcm90b2NvbC9TbW0vSXBtaVByb3RvY29sLmMgfCAyNCArKysrKystLQ0KPiA+ID4+ PiAgICA4IGZpbGVzIGNoYW5nZWQsIDE0NSBpbnNlcnRpb25zKCspLCA3MiBkZWxldGlvbnMoLSkN Cj4gPiA+Pj4NCj4gPiA+Pj4gZGlmZiAtLWdpdA0KPiA+ID4+Pg0KPiA+IGEvRmVhdHVyZXMvTWFu YWdlYWJpbGl0eVBrZy9JbmNsdWRlL0xpYnJhcnkvTWFuYWdlYWJpbGl0eVRyYW5zcG9ydExpYi4N Cj4gPiA+Pj4gaA0KPiA+ID4+Pg0KPiA+IGIvRmVhdHVyZXMvTWFuYWdlYWJpbGl0eVBrZy9JbmNs dWRlL0xpYnJhcnkvTWFuYWdlYWJpbGl0eVRyYW5zcG9ydExpYi4NCj4gPiA+Pj4gaA0KPiA+ID4+ PiBpbmRleCBjMDIyYjRhYzVjLi5kODZkMGQ4N2Q1IDEwMDY0NA0KPiA+ID4+PiAtLS0NCj4gPiA+ Pj4NCj4gPiBhL0ZlYXR1cmVzL01hbmFnZWFiaWxpdHlQa2cvSW5jbHVkZS9MaWJyYXJ5L01hbmFn ZWFiaWxpdHlUcmFuc3BvcnRMaWIuDQo+ID4gPj4+IGgNCj4gPiA+Pj4gKysrDQo+ID4gYi9GZWF0 dXJlcy9NYW5hZ2VhYmlsaXR5UGtnL0luY2x1ZGUvTGlicmFyeS9NYW5hZ2VhYmlsaXR5VHJhbnNw bw0KPiA+ID4+PiArKysgcnQNCj4gPiA+Pj4gKysrIExpYi5oDQo+ID4gPj4+IEBAIC0xNCw2ICsx NCw5IEBADQo+ID4gPj4+ICAgICNkZWZpbmUgTUFOQUdFQUJJTElUWV9UUkFOU1BPUlRfVE9LRU5f VkVSU0lPTg0KPiA+ID4+ICgoTUFOQUdFQUJJTElUWV9UUkFOU1BPUlRfVE9LRU5fVkVSU0lPTl9N QUpPUiA8PCA4KSB8XA0KPiA+ID4+PiBNQU5BR0VBQklMSVRZX1RSQU5TUE9SVF9UT0tFTl9WRVJT SU9OX01JTk9SKQ0KPiA+ID4+Pg0KPiA+ID4+PiArI2RlZmluZQ0KPiA+ID4+IE1BTkFHRUFCSUxJ VFlfVFJBTlNQT1JUX1BBWUxPQURfU0laRV9GUk9NX0NBUEFCSUxJVFkoYSkNCj4gKDENCj4gPiA8 PCAoKGEgJg0KPiA+ID4+DQo+ID4gTUFOQUdFQUJJTElUWV9UUkFOU1BPUlRfQ0FQQUJJTElUWV9N QVhJTVVNX1BBWUxPQURfTUFTSykNCj4gPiA+Pj4+IFwNCj4gPiA+Pj4gKw0KPiA+ID4+Pg0KPiA+ ID4+DQo+ID4NCj4gK01BTkFHRUFCSUxJVFlfVFJBTlNQT1JUX0NBUEFCSUxJVFlfTUFYSU1VTV9Q QVlMT0FEX0JJVF9QTw0KPiA+ID4+IFNJVElPTikpDQo+ID4gPj4+ICsNCj4gPiA+Pj4gICAgdHlw ZWRlZiBzdHJ1Y3QgIF9NQU5BR0VBQklMSVRZX1RSQU5TUE9SVF9GVU5DVElPTl9WMV8wDQo+ID4g Pj4gTUFOQUdFQUJJTElUWV9UUkFOU1BPUlRfRlVOQ1RJT05fVjFfMDsNCj4gPiA+Pj4gICAgdHlw ZWRlZiBzdHJ1Y3QgIF9NQU5BR0VBQklMSVRZX1RSQU5TUE9SVA0KPiA+ID4+IE1BTkFHRUFCSUxJ VFlfVFJBTlNQT1JUOw0KPiA+ID4+PiAgICB0eXBlZGVmIHN0cnVjdCAgX01BTkFHRUFCSUxJVFlf VFJBTlNQT1JUX1RPS0VODQo+ID4gPj4gTUFOQUdFQUJJTElUWV9UUkFOU1BPUlRfVE9LRU47DQo+ ID4gPj4+IEBAIC02OCw4ICs3MSwxNyBAQCB0eXBlZGVmIFVJTlQzMg0KPiA+ID4+IE1BTkFHRUFC SUxJVFlfVFJBTlNQT1JUX0FERElUSU9OQUxfU1RBVFVTOw0KPiA+ID4+PiAgICAvLy8gQWRkaXRp b25hbCB0cmFuc3BvcnQgaW50ZXJmYWNlIGZlYXR1cmVzLg0KPiA+ID4+PiAgICAvLy8NCj4gPiA+ Pj4gICAgdHlwZWRlZiBVSU5UMzIgTUFOQUdFQUJJTElUWV9UUkFOU1BPUlRfQ0FQQUJJTElUWTsN Cj4gPiA+Pj4gKy8vLyBCaXQgMA0KPiA+ID4+PiAgICAjZGVmaW5lDQo+ID4gPj4NCj4gPg0KPiBN QU5BR0VBQklMSVRZX1RSQU5TUE9SVF9DQVBBQklMSVRZX01VTFRJUExFX1RSQU5TRkVSX1RPS0VO Uw0KPiA+ID4+IDB4MDAwMDAwMDENCj4gPiA+Pj4gLSNkZWZpbmUNCj4gPiA+Pg0KPiBNQU5BR0VB QklMSVRZX1RSQU5TUE9SVF9DQVBBQklMSVRZX0FTWU5DSFJPTk9VU19UUkFOU0ZFUg0KPiA+ID4+ IDB4MDAwMDAwMDINCj4gPiA+Pj4gKy8vLyBCaXQgMQ0KPiA+ID4+PiArI2RlZmluZQ0KPiA+ID4+ DQo+IE1BTkFHRUFCSUxJVFlfVFJBTlNQT1JUX0NBUEFCSUxJVFlfQVNZTkNIUk9OT1VTX1RSQU5T RkVSDQo+ID4gPj4gMHgwMDAwMDAwMg0KPiA+ID4+PiArLy8vIEJpdCAyICAgLSBSZXNlcnZlZA0K PiA+ID4+PiArLy8vIEJpdCA3OjMgLSBUcmFuc3BvcnQgaW50ZXJmYWNlIG1heGltdW0gcGF5bG9h ZCBzaXplLCB3aGljaCBpcw0KPiA+ID4+PiArKDIgXiBiaXRbNzozXQ0KPiA+ID4+IC0gMSkNCj4g PiA+Pj4gKy8vLyAgICAgICAgICAgYml0Wzc6M10gbWVhbnMgbm8gbWF4aW11bSBwYXlsb2FkLg0K PiA+ID4+IEkgYW0gY29uZnVzZWQgd2l0aCB5b3VyIGRlZmluaXRpb24gaGVyZS4NCj4gPiA+Pg0K PiA+ID4+IFdoeSBkb2VzIGl0IGhhdmUgdG8gYmUgYSBwb3dlciBvZiAyPw0KPiA+ID4gVXN1YWxs eSB0aGUgbWF4aW11bS9taW5pbXVtIGlzIGluICBwb3dlciBvZiAyIGFuZCB1c2UgcG93ZXIgb2Yg MiBoYXMNCj4gPiBsZXNzIGJpdHMgb2NjdXBpZWQgZnJvbSBNQU5BR0VBQklMSVRZX1RSQU5TUE9S VF9DQVBBQklMSVRZLg0KPiA+DQo+ID4geWVzLCB0aGF0IGlzIHVzdWFsbHksICBidXQgc3BlY2lm aWNhdGlvbiBkb2VzIG5vdCByZXF1aXJlIGl0LiBJDQo+ID4gY29uY2VybiB0aGF0IHNvbWVvbmUg d2lsbCBpbXBsZW1lbnQgYW5vdGhlciBzaXplIG9mIHBheWxvYWQNCj4gTXkgdGhvdWdodCBpcyBl dmVuIHRoZSBNVFUgaXMgbm90IGluIHBvd2VyIG9mIDIsIHRyYW5zcG9ydCBjYW4gc3RpbGwgcmVw b3J0IGENCj4gc21hbGxlciBNVFUgd2hpY2ggaXMgaW4gcG93ZXIgb2YgMi4NCj4gZS5nLCBpZiB0 aGUgTVRVIGlzIDEyMzQgYnl0ZXMsIHRoZW4gTWFuYWdlYWJpbGl0eSB0cmFuc3BvcnQgaW50ZXJm YWNlIGNhbg0KPiByZXR1cm4gOCBpbiB0aGlzIGZpZWxkLCB3aXRoIHRoaXMgdGhlIE1UVSBpcyAy XjEwIC0gMS4NCj4gDQo+IA0KPiA+DQo+ID4NCj4gPiA+DQo+ID4gPj4gQW5kIHdlIHNob3VsZCBz ZXBhcmF0ZSByZXF1ZXN0IHBheWxvYWQgc2l6ZSBhbmQgcmVzcG9uc2UgcGF5bG9hZA0KPiA+ID4+ IHNpemUNCj4gPiA+Pg0KPiA+ID4+IENhbiB5b3UgY2xhcmlmeSBtb3JlIGFib3V0IHRoYXQ/DQo+ ID4gPiBEbyB3ZSByZWFsbHkgbmVlZCB0aGUgbWF4aW11bSBzaXplIGZvciByZXNwb25zZT8gUmVz cG9uc2UgaXMNCj4gPiA+IGluaXRpYXRlZCBieQ0KPiA+IHRhcmdldCBlbmRwb2ludCBhbmQgc3Vw cG9zZSB0aGUgcGF5bG9hZCBoZWFkZXIgc2hvdWxkIGhhdmUgc29tZSBmaWVsZHMNCj4gPiB0aGF0 IGluZGljYXRlIHRoZSByZXR1cm4gcGF5bG9hZCBpcyBvbmx5IHBhcnQgb2YgcmVzcG9uc2UuDQo+ ID4gQWdyZWUsIEkgYWxzbyBqdXN0IHVzZSBpdCBmb3IgdmFsaWRhdGlvbi4NCj4gPiA+ICAgVGhl IHNpemUgb2YgcGF5bG9hZCByZXR1cm5lZCBpcyBhY3R1YWxseSBtYXhpbXVtIHRyYW5zZmVyIHNp emUNCj4gPiA+IHRoYXQgdGFyZ2V0DQo+ID4gZW5kcG9pbnQgY2FuIGhhbmRsZS4NCj4gPiA+IERv IHlvdSBrbm93IGFueSBjYXNlIHRoYXQgcmVjZWl2ZXIgaGFzIG5vIGlkZWEgYWJvdXQgaWYgdGhl IHBheWxvYWQNCj4gPiA+IHNlbnQNCj4gPiBiYWNrIGZyb20gdGFyZ2V0IGVuZHBvaW50IGlzIGEg cGFydGlhbCBvZiByZXNwb25zZSBvciBub3Q/ICBXZSBzaG91bGQNCj4gPiBoYXZlIE1UVSByZXNw b25zZSBpZiBpdCBpcyByZXF1aXJlZCBmb3IgdGhlIHRyYW5zcG9ydCBpbnRlcmZhY2UuDQo+ID4g Pg0KPiA+ID4+IEFub3RoZXIgcXVlc3Rpb24sIG9ubHkgUEVJX0lQTUlfUFBJX0lOVEVSTkFMIGNv bnRhaW5zDQo+ID4gTWF4UGF5bG9hZFNpemUsDQo+ID4gPiBQUEkgaGFzIE1heFBheWxvYWRTaXpl IGluIHN0cnVjdHVyZSBpcyBiZWNhdXNlIHdlIGNhbid0IGRlZmluZSBhDQo+ID4gPiBnbG9iYWwN Cj4gPiB2YXJpYWJsZSBmb3IgUEVJIG1vZHVsZSBhcyBtb2R1bGUgaXMgZXhlY3V0ZWQgaW4gcGxh Y2UuDQo+ID4gPg0KPiA+ID4+IGhvdyBkbyBJUE1JL01DVFAvUExETSBwcm90b2NvbCBwcm92aWRl IE1heHBheWxvYWRzaXplDQo+ID4gPiBGb3IgRFhFIGRyaXZlcnMsIHRoZSBNYXhwYXlsb2Fkc2l6 ZSBpcyBkZWZpbmVkIGFzIGdsb2JhbCB2YXJpYWJsZS4NCj4gPiBJIHRoaW5rIHdlIHNob3VsZCB0 YWtlIG5vdGUgc29tZXdoZXJlDQo+IE9rLCBJIHdpbGwgaGF2ZSBjb21tZW50IGZvciBQUEkvRFhF L1NNTS4NCg0KSnVzdCBsZXQgeW91IGtub3cgdGhhdCBJIGFkZCBiZWxvdyBjb21tZW50IGluIElw bWlQcGkuYyBhbmQgaW4gSXBtaVBwaUludGVybmFsLmgsDQoNCiAgLy8NCiAgLy8gQWxsb2NhdGUg UEVJX0lQTUlfUFBJX0lOVEVSTkFMIG1lbW9yeSBmb3IgdGhlIGR5bmFtaWMgdmFyaWFibGVzLA0K ICAvLyBhcyB0aGUgZ2xvYmFsIHZhcmlhYmxlIGluIFBFSSBtb2R1bGUgaXMgcmVhZCBvbmx5Lg0K ICAvLw0KICBQZWlJcG1pUHBpaW50ZXJuYWwgPSAoUEVJX0lQTUlfUFBJX0lOVEVSTkFMICopQWxs b2NhdGVaZXJvUG9vbCAoc2l6ZW9mIChQRUlfSVBNSV9QUElfSU5URVJOQUwpKTsNCiAgaWYgKFBl aUlwbWlQcGlpbnRlcm5hbCA9PSBOVUxMKSB7DQogICAgREVCVUcgKChERUJVR19FUlJPUiwgIiVh OiBOb3QgZW5vdWdoIG1lbW9yeSBmb3IgUEVJX0lQTUlfUFBJX0lOVEVSTkFMLlxuIiwgX19GVU5D VElPTl9fKSk7DQogICAgcmV0dXJuIEVGSV9PVVRfT0ZfUkVTT1VSQ0VTOw0KICB9DQoNCg0KLy8v DQovLy8gVXNlIFBFSV9JUE1JX1BQSV9JTlRFUk5BTCBzdHJ1Y3R1cmUgZm9yIHRoZSBkeW5hbWlj IHZhcmlhYmxlcywNCi8vLyBhcyB0aGUgZ2xvYmFsIHZhcmlhYmxlIGluIFBFSSBtb2R1bGUgaXMg cmVhZCBvbmx5Lg0KLy8vDQp0eXBlZGVmIHN0cnVjdCB7DQogIFVJTlQzMiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgU2lnbmF0dXJlOw0KICBNQU5BR0VBQklMSVRZX1RSQU5TUE9SVF9U T0tFTiAgICAgICAgICpUcmFuc3BvcnRUb2tlbjsNCiAgTUFOQUdFQUJJTElUWV9UUkFOU1BPUlRf Q0FQQUJJTElUWSAgICBUcmFuc3BvcnRDYXBhYmlsaXR5Ow0KICBVSU5UMzIgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFRyYW5zcG9ydE1heGltdW1QYXlsb2FkOw0KICBQRUlfSVBNSV9Q UEkgICAgICAgICAgICAgICAgICAgICAgICAgIFBlaUlwbWlQcGk7DQp9IFBFSV9JUE1JX1BQSV9J TlRFUk5BTDsNCg0KDQpJIGFtIG5vdCBnb2luZyB0byBzZW5kIFY0IGZvciB0aGlzIHVwZGF0ZS4g SSB3aWxsIGhhdmUgdGhlIFY0IHZlcnNpb24gaWYgY29tbWVudHMgYXJlIGdpdmVuIHRvIHBhdGNo IDkvMTQgYW5kIDEwLzE0Lg0KVGhhbmtzDQpBYm5lcg0KDQo+IA0KPiANCj4gPiA+DQo+ID4gPj4g dG8gY2FsbGVyPw0KPiA+ID4+DQo+ID4gPj4+ICsjZGVmaW5lDQo+ID4gPj4NCj4gPiBNQU5BR0VB QklMSVRZX1RSQU5TUE9SVF9DQVBBQklMSVRZX01BWElNVU1fUEFZTE9BRF9NQVNLDQo+ID4gPj4g MHgwMDAwMDBmOA0KPiA+ID4+PiArI2RlZmluZQ0KPiA+ID4+DQo+ID4NCj4gTUFOQUdFQUJJTElU WV9UUkFOU1BPUlRfQ0FQQUJJTElUWV9NQVhJTVVNX1BBWUxPQURfQklUX1BPUw0KPiA+ID4+IElU SU9OICAgMw0KPiA+ID4+PiArI2RlZmluZQ0KPiA+ID4+Pg0KPiA+ID4+DQo+ID4NCj4gK01BTkFH RUFCSUxJVFlfVFJBTlNQT1JUX0NBUEFCSUxJVFlfTUFYSU1VTV9QQVlMT0FEX05PVF9BDQo+ID4g Pj4gVkFJTEFCTEUNCj4gPiA+Pj4gKzB4MDAgLy8vIEJpdCA4OjMxIC0gUmVzZXJ2ZWQNCj4gPiA+ Pj4NCj4gPiA+Pj4gICAgLy8vDQo+ID4gPj4+ICAgIC8vLyBEZWZpbml0aW9ucyBvZiBNYW5hZ2Vh YmlsaXR5IHRyYW5zcG9ydCBpbnRlcmZhY2UgZnVuY3Rpb25zLg0KPiA+ID4+PiBAQCAtMTg3LDE1 ICsxOTksMjAgQEAgQWNxdWlyZVRyYW5zcG9ydFNlc3Npb24gKA0KPiA+ID4+PiAgICAgICk7DQo+ ID4gPj4+DQo+ID4gPj4+ICAgIC8qKg0KPiA+ID4+PiAtICBUaGlzIGZ1bmN0aW9uIHJldHVybnMg dGhlIHRyYW5zcG9ydCBjYXBhYmlsaXRpZXMuDQo+ID4gPj4+IC0NCj4gPiA+Pj4gLSAgQHBhcmFt IFtvdXRdICBUcmFuc3BvcnRGZWF0dXJlICAgICAgICBQb2ludGVyIHRvIHJlY2VpdmUgdHJhbnNw b3J0DQo+ID4gPj4gY2FwYWJpbGl0aWVzLg0KPiA+ID4+PiAtICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFNlZSB0aGUgZGVmaW5pdGlvbnMgb2YNCj4gPiA+Pj4gLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNQU5BR0VBQklMSVRZX1RSQU5TUE9S VF9DQVBBQklMSVRZLg0KPiA+ID4+PiAtDQo+ID4gPj4+ICsgIFRoaXMgZnVuY3Rpb24gcmV0dXJu cyB0aGUgdHJhbnNwb3J0IGNhcGFiaWxpdGllcyBhY2NvcmRpbmcgdG8NCj4gPiA+Pj4gKyB0aGUg bWFuYWdlYWJpbGl0eSBwcm90b2NvbC4NCj4gPiA+Pj4gKw0KPiA+ID4+PiArICBAcGFyYW0gW2lu XSAgIFRyYW5zcG9ydFRva2VuICAgICAgICAgICAgIFRyYW5zcG9ydCB0b2tlbiBhY3F1aXJlZCBm cm9tDQo+ID4gPj4gbWFuYWdlYWJpbGl0eQ0KPiA+ID4+PiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHRyYW5zcG9ydCBsaWJyYXJ5Lg0KPiA+ID4+PiArICBAcGFy YW0gW291dF0gIFRyYW5zcG9ydEZlYXR1cmUgICAgICAgICAgIFBvaW50ZXIgdG8gcmVjZWl2ZSB0 cmFuc3BvcnQNCj4gPiA+PiBjYXBhYmlsaXRpZXMuDQo+ID4gPj4+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VlIHRoZSBkZWZpbml0aW9ucyBvZg0KPiA+ID4+ PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1BTkFHRUFCSUxJ VFlfVFJBTlNQT1JUX0NBUEFCSUxJVFkuDQo+ID4gPj4+ICsgIEByZXR2YWwgICAgICAgRUZJX1NV Q0NFU1MgICAgICAgICAgICAgICAgVHJhbnNwb3J0Q2FwYWJpbGl0eSBpcyByZXR1cm5lZA0KPiA+ ID4+IHN1Y2Nlc3NmdWxseS4NCj4gPiA+Pj4gKyAgQHJldHZhbCAgICAgICBFRklfSU5WQUxJRF9Q QVJBTUVURVIgICAgICBUcmFuc3BvcnRUb2tlbiBpcyBub3QgYQ0KPiB2YWxpZA0KPiA+ID4+IHRv a2VuLg0KPiA+ID4+PiAgICAqKi8NCj4gPiA+Pj4gLVZPSUQNCj4gPiA+Pj4gK0VGSV9TVEFUVVMN Cj4gPiA+Pj4gICAgR2V0VHJhbnNwb3J0Q2FwYWJpbGl0eSAoDQo+ID4gPj4+ICsgIElOIE1BTkFH RUFCSUxJVFlfVFJBTlNQT1JUX1RPS0VOICAgICAgICAqVHJhbnNwb3J0VG9rZW4sDQo+ID4gPj4+ ICAgICAgT1VUIE1BTkFHRUFCSUxJVFlfVFJBTlNQT1JUX0NBUEFCSUxJVFkNCj4gKlRyYW5zcG9y dENhcGFiaWxpdHkNCj4gPiA+Pj4gICAgICApOw0KPiA+ID4+Pg0KPiA+ID4+PiBkaWZmIC0tZ2l0 DQo+ID4gPj4+DQo+ID4gPj4NCj4gPg0KPiBhL0ZlYXR1cmVzL01hbmFnZWFiaWxpdHlQa2cvTGli cmFyeS9NYW5hZ2VhYmlsaXR5VHJhbnNwb3J0S2NzTGliL0NvbW0NCj4gPiA+PiBvDQo+ID4gPj4+ IG4vTWFuYWdlYWJpbGl0eVRyYW5zcG9ydEtjcy5oDQo+ID4gPj4+DQo+ID4gPj4NCj4gPg0KPiBi L0ZlYXR1cmVzL01hbmFnZWFiaWxpdHlQa2cvTGlicmFyeS9NYW5hZ2VhYmlsaXR5VHJhbnNwb3J0 S2NzTGliL0NvbW0NCj4gPiA+PiBvDQo+ID4gPj4+IG4vTWFuYWdlYWJpbGl0eVRyYW5zcG9ydEtj cy5oDQo+ID4gPj4+IGluZGV4IGYxNzU4ZmZkOGYuLjJjZGY2MGJhN2UgMTAwNjQ0DQo+ID4gPj4+ IC0tLQ0KPiA+ID4+Pg0KPiA+ID4+DQo+ID4NCj4gYS9GZWF0dXJlcy9NYW5hZ2VhYmlsaXR5UGtn L0xpYnJhcnkvTWFuYWdlYWJpbGl0eVRyYW5zcG9ydEtjc0xpYi9Db21tDQo+ID4gPj4gbw0KPiA+ ID4+PiBuL01hbmFnZWFiaWxpdHlUcmFuc3BvcnRLY3MuaA0KPiA+ID4+PiArKysNCj4gPiBiL0Zl YXR1cmVzL01hbmFnZWFiaWxpdHlQa2cvTGlicmFyeS9NYW5hZ2VhYmlsaXR5VHJhbnNwb3J0S2Nz TGliDQo+ID4gPj4+ICsrKyAvQyBvbW1vbi9NYW5hZ2VhYmlsaXR5VHJhbnNwb3J0S2NzLmgNCj4g PiA+Pj4gQEAgLTMyLDYgKzMyLDggQEAgdHlwZWRlZiBzdHJ1Y3Qgew0KPiA+ID4+PiAgICAjZGVm aW5lIElQTUlfS0NTX0dFVF9TVEFURShzKSAgKHMgPj4gNikNCj4gPiA+Pj4gICAgI2RlZmluZSBJ UE1JX0tDU19TRVRfU1RBVEUocykgIChzIDw8IDYpDQo+ID4gPj4+DQo+ID4gPj4+ICsjZGVmaW5l IE1DVFBfS0NTX01UVV9JTl9QT1dFUl9PRl8yICA4DQo+ID4gPj4+ICsNCj4gPiA+Pj4gICAgLy8v IDUgc2VjLCBhY2NvcmRpbmcgdG8gSVBNSSBzcGVjDQo+ID4gPj4+ICAgICNkZWZpbmUgSVBNSV9L Q1NfVElNRU9VVF81X1NFQyAgNTAwMCoxMDAwDQo+ID4gPj4+ICAgICNkZWZpbmUgSVBNSV9LQ1Nf VElNRU9VVF8xTVMgICAgMTAwMA0KPiA+ID4+PiBkaWZmIC0tZ2l0DQo+ID4gPj4+IGEvRmVhdHVy ZXMvTWFuYWdlYWJpbGl0eVBrZy9Vbml2ZXJzYWwvSXBtaVByb3RvY29sL1BlaS9JcG1pUHBpSW50 ZQ0KPiA+ID4+PiBybg0KPiA+ID4+PiBhbA0KPiA+ID4+PiAuaA0KPiA+ID4+Pg0KPiA+IGIvRmVh dHVyZXMvTWFuYWdlYWJpbGl0eVBrZy9Vbml2ZXJzYWwvSXBtaVByb3RvY29sL1BlaS9JcG1pUHBp SW50ZXJuDQo+ID4gPj4+IGFsDQo+ID4gPj4+IC5oDQo+ID4gPj4+IGluZGV4IGJiZTBjOGM1Y2Iu LjRiNmJkYzk3YTkgMTAwNjQ0DQo+ID4gPj4+IC0tLQ0KPiA+ID4+PiBhL0ZlYXR1cmVzL01hbmFn ZWFiaWxpdHlQa2cvVW5pdmVyc2FsL0lwbWlQcm90b2NvbC9QZWkvSXBtaVBwaUludGUNCj4gPiA+ Pj4gcm4NCj4gPiA+Pj4gYWwNCj4gPiA+Pj4gLmgNCj4gPiA+Pj4gKysrDQo+ID4gYi9GZWF0dXJl cy9NYW5hZ2VhYmlsaXR5UGtnL1VuaXZlcnNhbC9JcG1pUHJvdG9jb2wvUGVpL0lwbWlQcGlJbg0K PiA+ID4+PiArKysgdGUNCj4gPiA+Pj4gKysrIHJuYWwuaA0KPiA+ID4+PiBAQCAtMTcsOSArMTcs MTEgQEANCj4gPiA+Pj4gICAgI2RlZmluZSBNQU5BR0VBQklMSVRZX0lQTUlfUFBJX0lOVEVSTkFM X0ZST01fTElOSyhhKSAgQ1INCj4gKGEsDQo+ID4gPj4+IFBFSV9JUE1JX1BQSV9JTlRFUk5BTCwg UGVpSXBtaVBwaSwNCj4gPiA+Pj4gTUFOQUdFQUJJTElUWV9JUE1JX1BQSV9JTlRFUk5BTF9TSUdO QVRVUkUpDQo+ID4gPj4+DQo+ID4gPj4+ICAgIHR5cGVkZWYgc3RydWN0IHsNCj4gPiA+Pj4gLSAg VUlOVDMyICAgICAgICAgICAgICAgICAgICAgICAgIFNpZ25hdHVyZTsNCj4gPiA+Pj4gLSAgTUFO QUdFQUJJTElUWV9UUkFOU1BPUlRfVE9LRU4gICpUcmFuc3BvcnRUb2tlbjsNCj4gPiA+Pj4gLSAg UEVJX0lQTUlfUFBJICAgICAgICAgICAgICAgICAgIFBlaUlwbWlQcGk7DQo+ID4gPj4+ICsgIFVJ TlQzMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2lnbmF0dXJlOw0KPiA+ID4+PiAr ICBNQU5BR0VBQklMSVRZX1RSQU5TUE9SVF9UT0tFTiAgICAgICAgICpUcmFuc3BvcnRUb2tlbjsN Cj4gPiA+Pj4gKyAgTUFOQUdFQUJJTElUWV9UUkFOU1BPUlRfQ0FQQUJJTElUWSAgICBUcmFuc3Bv cnRDYXBhYmlsaXR5Ow0KPiA+ID4+PiArICBVSU5UMzIgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFRyYW5zcG9ydE1heGltdW1QYXlsb2FkOw0KPiA+ID4+PiArICBQRUlfSVBNSV9QUEkg ICAgICAgICAgICAgICAgICAgICAgICAgIFBlaUlwbWlQcGk7DQo+ID4gPj4+ICAgIH0gUEVJX0lQ TUlfUFBJX0lOVEVSTkFMOw0KPiA+ID4+Pg0KPiA+ID4+PiAgICAjZW5kaWYgLy8gTUFOQUdFQUJJ TElUWV9JUE1JX1BQSV9JTlRFUk5BTF9IXw0KPiA+ID4+PiBkaWZmIC0tZ2l0DQo+ID4gPj4+IGEv RmVhdHVyZXMvTWFuYWdlYWJpbGl0eVBrZy9MaWJyYXJ5L0Jhc2VNYW5hZ2VhYmlsaXR5VHJhbnNw b3J0TnVsbA0KPiA+ID4+PiBMaQ0KPiA+ID4+PiBiLw0KPiA+ID4+PiBCYXNlTWFuYWdlYWJpbGl0 eVRyYW5zcG9ydE51bGwuYw0KPiA+ID4+Pg0KPiBiL0ZlYXR1cmVzL01hbmFnZWFiaWxpdHlQa2cv TGlicmFyeS9CYXNlTWFuYWdlYWJpbGl0eVRyYW5zcG9ydE51bGwNCj4gPiA+Pj4gTGkNCj4gPiA+ Pj4gYi8NCj4gPiA+Pj4gQmFzZU1hbmFnZWFiaWxpdHlUcmFuc3BvcnROdWxsLmMNCj4gPiA+Pj4g aW5kZXggNDlmYzhjMGY3MS4uM2FhNjg1NzhhNiAxMDA2NDQNCj4gPiA+Pj4gLS0tDQo+ID4gPj4+ IGEvRmVhdHVyZXMvTWFuYWdlYWJpbGl0eVBrZy9MaWJyYXJ5L0Jhc2VNYW5hZ2VhYmlsaXR5VHJh bnNwb3J0TnVsbA0KPiA+ID4+PiBMaQ0KPiA+ID4+PiBiLw0KPiA+ID4+PiBCYXNlTWFuYWdlYWJp bGl0eVRyYW5zcG9ydE51bGwuYw0KPiA+ID4+PiArKysNCj4gPiA+PiBiL0ZlYXR1cmVzL01hbmFn ZWFiaWxpdHlQa2cvTGlicmFyeS9CYXNlTWFuYWdlYWJpbGl0eVRyYW5zcG9ydE51bGwNCj4gPiA+ Pj4gKysrIExpYi9CYXNlTWFuYWdlYWJpbGl0eVRyYW5zcG9ydE51bGwuYw0KPiA+ID4+PiBAQCAt MzEsMTkgKzMxLDI1IEBAIEFjcXVpcmVUcmFuc3BvcnRTZXNzaW9uICgNCj4gPiA+Pj4gICAgfQ0K PiA+ID4+Pg0KPiA+ID4+PiAgICAvKioNCj4gPiA+Pj4gLSAgVGhpcyBmdW5jdGlvbiByZXR1cm5z IHRoZSB0cmFuc3BvcnQgY2FwYWJpbGl0aWVzLg0KPiA+ID4+PiAtDQo+ID4gPj4+IC0gIEBwYXJh bSBbb3V0XSAgVHJhbnNwb3J0RmVhdHVyZSAgICAgICAgUG9pbnRlciB0byByZWNlaXZlIHRyYW5z cG9ydA0KPiA+ID4+IGNhcGFiaWxpdGllcy4NCj4gPiA+Pj4gLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBTZWUgdGhlIGRlZmluaXRpb25zIG9mDQo+ID4gPj4+IC0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTUFOQUdFQUJJTElUWV9UUkFOU1BP UlRfQ0FQQUJJTElUWS4NCj4gPiA+Pj4gKyAgVGhpcyBmdW5jdGlvbiByZXR1cm5zIHRoZSB0cmFu c3BvcnQgY2FwYWJpbGl0aWVzIGFjY29yZGluZyB0bw0KPiA+ID4+PiArIHRoZSBtYW5hZ2VhYmls aXR5IHByb3RvY29sLg0KPiA+ID4+Pg0KPiA+ID4+PiArICBAcGFyYW0gW2luXSAgIFRyYW5zcG9y dFRva2VuICAgICAgICAgICAgIFRyYW5zcG9ydCB0b2tlbiBhY3F1aXJlZCBmcm9tDQo+ID4gPj4g bWFuYWdlYWJpbGl0eQ0KPiA+ID4+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHRyYW5zcG9ydCBsaWJyYXJ5Lg0KPiA+ID4+PiArICBAcGFyYW0gW291dF0gIFRy YW5zcG9ydEZlYXR1cmUgICAgICAgICAgIFBvaW50ZXIgdG8gcmVjZWl2ZSB0cmFuc3BvcnQNCj4g PiA+PiBjYXBhYmlsaXRpZXMuDQo+ID4gPj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgU2VlIHRoZSBkZWZpbml0aW9ucyBvZg0KPiA+ID4+PiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1BTkFHRUFCSUxJVFlfVFJBTlNQT1JU X0NBUEFCSUxJVFkuDQo+ID4gPj4+ICsgIEByZXR2YWwgICAgICAgRUZJX1NVQ0NFU1MgICAgICAg ICAgICAgICAgVHJhbnNwb3J0Q2FwYWJpbGl0eSBpcyByZXR1cm5lZA0KPiA+ID4+IHN1Y2Nlc3Nm dWxseS4NCj4gPiA+Pj4gKyAgQHJldHZhbCAgICAgICBFRklfSU5WQUxJRF9QQVJBTUVURVIgICAg ICBUcmFuc3BvcnRUb2tlbiBpcyBub3QgYQ0KPiB2YWxpZA0KPiA+ID4+IHRva2VuLg0KPiA+ID4+ PiAgICAqKi8NCj4gPiA+Pj4gLVZPSUQNCj4gPiA+Pj4gK0VGSV9TVEFUVVMNCj4gPiA+Pj4gICAg R2V0VHJhbnNwb3J0Q2FwYWJpbGl0eSAoDQo+ID4gPj4+ICsgIElOIE1BTkFHRUFCSUxJVFlfVFJB TlNQT1JUX1RPS0VOICAgICAgICAqVHJhbnNwb3J0VG9rZW4sDQo+ID4gPj4+ICAgICAgT1VUIE1B TkFHRUFCSUxJVFlfVFJBTlNQT1JUX0NBUEFCSUxJVFkNCj4gKlRyYW5zcG9ydENhcGFiaWxpdHkN Cj4gPiA+Pj4gICAgICApDQo+ID4gPj4+ICAgIHsNCj4gPiA+Pj4gICAgICAqVHJhbnNwb3J0Q2Fw YWJpbGl0eSA9IDA7DQo+ID4gPj4+ICsgIHJldHVybiBFRklfU1VDQ0VTUzsNCj4gPiA+Pj4gICAg fQ0KPiA+ID4+Pg0KPiA+ID4+PiAgICAvKioNCj4gPiA+Pj4gZGlmZiAtLWdpdA0KPiA+ID4+Pg0K PiA+ID4+DQo+ID4gYS9GZWF0dXJlcy9NYW5hZ2VhYmlsaXR5UGtnL0xpYnJhcnkvTWFuYWdlYWJp bGl0eVRyYW5zcG9ydEtjc0xpYi9EeGUvDQo+ID4gPj4gTQ0KPiA+ID4+PiBhbmFnZWFiaWxpdHlU cmFuc3BvcnRLY3MuYw0KPiA+ID4+Pg0KPiA+ID4+DQo+ID4gYi9GZWF0dXJlcy9NYW5hZ2VhYmls aXR5UGtnL0xpYnJhcnkvTWFuYWdlYWJpbGl0eVRyYW5zcG9ydEtjc0xpYi9EeGUvDQo+ID4gPj4g TQ0KPiA+ID4+PiBhbmFnZWFiaWxpdHlUcmFuc3BvcnRLY3MuYw0KPiA+ID4+PiBpbmRleCBhYjQx NmU1NDQ5Li43ZDg1Mzc4ZmMxIDEwMDY0NA0KPiA+ID4+PiAtLS0NCj4gPiA+Pj4NCj4gPiA+Pg0K PiA+IGEvRmVhdHVyZXMvTWFuYWdlYWJpbGl0eVBrZy9MaWJyYXJ5L01hbmFnZWFiaWxpdHlUcmFu c3BvcnRLY3NMaWIvRHhlLw0KPiA+ID4+IE0NCj4gPiA+Pj4gYW5hZ2VhYmlsaXR5VHJhbnNwb3J0 S2NzLmMNCj4gPiA+Pj4gKysrDQo+ID4gYi9GZWF0dXJlcy9NYW5hZ2VhYmlsaXR5UGtnL0xpYnJh cnkvTWFuYWdlYWJpbGl0eVRyYW5zcG9ydEtjc0xpYg0KPiA+ID4+PiArKysgL0QNCj4gPiA+Pj4g KysrIHhlL01hbmFnZWFiaWxpdHlUcmFuc3BvcnRLY3MuYw0KPiA+ID4+PiBAQCAtNjIsNyArNjIs NyBAQCBLY3NUcmFuc3BvcnRJbml0ICgNCj4gPiA+Pj4gICAgICB9DQo+ID4gPj4+DQo+ID4gPj4+ ICAgICAgaWYgKEhhcmR3YXJlSW5mby5LY3MgPT0gTlVMTCkgew0KPiA+ID4+PiAtICAgIERFQlVH ICgoREVCVUdfSU5GTywgIiVhOiBIYXJkd2FyZSBpbmZvcm1hdGlvbiBpcyBub3QgcHJvdmlkZWQs DQo+ID4gdXNlDQo+ID4gPj4gZGZhdWx0IHNldHRpbmdzLlxuIiwgX19GVU5DVElPTl9fKSk7DQo+ ID4gPj4+ICsgICAgREVCVUcgKChERUJVR19NQU5BR0VBQklMSVRZX0lORk8sICIlYTogSGFyZHdh cmUNCj4gPiBpbmZvcm1hdGlvbiBpcw0KPiA+ID4+PiArIG5vdCBwcm92aWRlZCwgdXNlIGRmYXVs dCBzZXR0aW5ncy5cbiIsIF9fRlVOQ1RJT05fXykpOw0KPiA+ID4+PiAgICAgICAgbUtjc0hhcmR3 YXJlSW5mby5NZW1vcnlNYXAgICAgICAgICAgICAgICAgICAgID0NCj4gPiA+PiBNQU5BR0VBQklM SVRZX1RSQU5TUE9SVF9LQ1NfSU9fTUFQX0lPOw0KPiA+ID4+PiAgICAgICAgbUtjc0hhcmR3YXJl SW5mby5Jb0Jhc2VBZGRyZXNzLklvQWRkcmVzczE2ICAgID0gUGNkR2V0MTYNCj4gPiA+PiAoUGNk SXBtaUtjc0lvQmFzZUFkZHJlc3MpOw0KPiA+ID4+PiAgICAgICAgbUtjc0hhcmR3YXJlSW5mby5J b0RhdGFJbkFkZHJlc3MuSW9BZGRyZXNzMTYgID0NCj4gPiA+Pj4gbUtjc0hhcmR3YXJlSW5mby5J b0Jhc2VBZGRyZXNzLklvQWRkcmVzczE2ICsNCj4gPiA+PiBJUE1JX0tDU19EQVRBX0lOX1JFR0lT VEVSX09GRlNFVDsgQEAgLTgxLDIxICs4MSwyMSBAQA0KPiA+ID4+IEtjc1RyYW5zcG9ydEluaXQg KA0KPiA+ID4+PiAgICAgIC8vIEdldCBwcm90b2NvbCBzcGVjaWZpY2F0aW9uIG5hbWUuDQo+ID4g Pj4+ICAgICAgTWFuYWdlYWJpbGl0eVByb3RvY29sTmFtZSA9IEhlbHBlck1hbmFnZWFiaWxpdHlT cGVjTmFtZQ0KPiA+ID4+PiAoVHJhbnNwb3J0VG9rZW4tPk1hbmFnZWFiaWxpdHlQcm90b2NvbFNw ZWNpZmljYXRpb24pOw0KPiA+ID4+Pg0KPiA+ID4+PiAtICBERUJVRyAoKERFQlVHX0lORk8sICIl YTogS0NTIHRyYW5zcG9ydCBoYXJkd2FyZSBmb3IgJXMgaXM6XG4iLA0KPiA+ID4+PiBfX0ZVTkNU SU9OX18sIE1hbmFnZWFiaWxpdHlQcm90b2NvbE5hbWUpKTsNCj4gPiA+Pj4gKyAgREVCVUcgKChE RUJVR19NQU5BR0VBQklMSVRZX0lORk8sICIlYTogS0NTIHRyYW5zcG9ydA0KPiA+IGhhcmR3YXJl DQo+ID4gPj4gZm9yDQo+ID4gPj4+ICsgJXMgaXM6XG4iLCBfX0ZVTkNUSU9OX18sIE1hbmFnZWFi aWxpdHlQcm90b2NvbE5hbWUpKTsNCj4gPiA+Pj4gICAgICBpZiAobUtjc0hhcmR3YXJlSW5mby5N ZW1vcnlNYXApIHsNCj4gPiA+Pj4gLSAgICBERUJVRyAoKERFQlVHX0lORk8sICJNZW1vcnkgTWFw IEkvT1xuIiwgX19GVU5DVElPTl9fKSk7DQo+ID4gPj4+IC0gICAgREVCVUcgKChERUJVR19JTkZP LCAiQmFzZSBNZW1vcnkgQWRkcmVzcyA6IDB4JTA4eFxuIiwNCj4gPiA+PiBtS2NzSGFyZHdhcmVJ bmZvLklvQmFzZUFkZHJlc3MuSW9BZGRyZXNzMzIpKTsNCj4gPiA+Pj4gLSAgICBERUJVRyAoKERF QlVHX0lORk8sICJEYXRhIGluIEFkZHJlc3MgICAgIDogMHglMDh4XG4iLA0KPiA+ID4+IG1LY3NI YXJkd2FyZUluZm8uSW9EYXRhSW5BZGRyZXNzLklvQWRkcmVzczMyKSk7DQo+ID4gPj4+IC0gICAg REVCVUcgKChERUJVR19JTkZPLCAiRGF0YSBvdXQgQWRkcmVzcyAgICA6IDB4JTA4eFxuIiwNCj4g PiA+PiBtS2NzSGFyZHdhcmVJbmZvLklvRGF0YU91dEFkZHJlc3MuSW9BZGRyZXNzMzIpKTsNCj4g PiA+Pj4gLSAgICBERUJVRyAoKERFQlVHX0lORk8sICJDb21tYW5kIEFkZHJlc3MgICAgIDogMHgl MDh4XG4iLA0KPiA+ID4+IG1LY3NIYXJkd2FyZUluZm8uSW9Db21tYW5kQWRkcmVzcy5Jb0FkZHJl c3MzMikpOw0KPiA+ID4+PiAtICAgIERFQlVHICgoREVCVUdfSU5GTywgIlN0YXR1cyBBZGRyZXNz ICAgICAgOiAweCUwOHhcbiIsDQo+ID4gPj4gbUtjc0hhcmR3YXJlSW5mby5Jb1N0YXR1c0FkZHJl c3MuSW9BZGRyZXNzMzIpKTsNCj4gPiA+Pj4gKyAgICBERUJVRyAoKERFQlVHX01BTkFHRUFCSUxJ VFlfSU5GTywgIk1lbW9yeSBNYXAgSS9PXG4iLA0KPiA+ID4+IF9fRlVOQ1RJT05fXykpOw0KPiA+ ID4+PiArICAgIERFQlVHICgoREVCVUdfTUFOQUdFQUJJTElUWV9JTkZPLCAiQmFzZSBNZW1vcnkg QWRkcmVzcyA6DQo+ID4gPj4gMHglMDh4XG4iLCBtS2NzSGFyZHdhcmVJbmZvLklvQmFzZUFkZHJl c3MuSW9BZGRyZXNzMzIpKTsNCj4gPiA+Pj4gKyAgICBERUJVRyAoKERFQlVHX01BTkFHRUFCSUxJ VFlfSU5GTywgIkRhdGEgaW4gQWRkcmVzcyAgICAgOg0KPiA+ID4+IDB4JTA4eFxuIiwgbUtjc0hh cmR3YXJlSW5mby5Jb0RhdGFJbkFkZHJlc3MuSW9BZGRyZXNzMzIpKTsNCj4gPiA+Pj4gKyAgICBE RUJVRyAoKERFQlVHX01BTkFHRUFCSUxJVFlfSU5GTywgIkRhdGEgb3V0IEFkZHJlc3MgICAgOg0K PiA+ID4+IDB4JTA4eFxuIiwgbUtjc0hhcmR3YXJlSW5mby5Jb0RhdGFPdXRBZGRyZXNzLklvQWRk cmVzczMyKSk7DQo+ID4gPj4+ICsgICAgREVCVUcgKChERUJVR19NQU5BR0VBQklMSVRZX0lORk8s ICJDb21tYW5kIEFkZHJlc3MgICAgIDoNCj4gPiA+PiAweCUwOHhcbiIsIG1LY3NIYXJkd2FyZUlu Zm8uSW9Db21tYW5kQWRkcmVzcy5Jb0FkZHJlc3MzMikpOw0KPiA+ID4+PiArICAgIERFQlVHICgo REVCVUdfTUFOQUdFQUJJTElUWV9JTkZPLCAiU3RhdHVzIEFkZHJlc3MgICAgICA6DQo+ID4gPj4g MHglMDh4XG4iLCBtS2NzSGFyZHdhcmVJbmZvLklvU3RhdHVzQWRkcmVzcy5Jb0FkZHJlc3MzMikp Ow0KPiA+ID4+PiAgICAgIH0gZWxzZSB7DQo+ID4gPj4+IC0gICAgREVCVUcgKChERUJVR19JTkZP LCAiSS9PIE1hcCBJL09cbiIpKTsNCj4gPiA+Pj4gLSAgICBERUJVRyAoKERFQlVHX0lORk8sICJC YXNlIEkvTyBwb3J0ICAgIDogMHglMDR4XG4iLA0KPiA+ID4+IG1LY3NIYXJkd2FyZUluZm8uSW9C YXNlQWRkcmVzcy5Jb0FkZHJlc3MxNikpOw0KPiA+ID4+PiAtICAgIERFQlVHICgoREVCVUdfSU5G TywgIkRhdGEgaW4gSS9PIHBvcnQgOiAweCUwNHhcbiIsDQo+ID4gPj4gbUtjc0hhcmR3YXJlSW5m by5Jb0RhdGFJbkFkZHJlc3MuSW9BZGRyZXNzMTYpKTsNCj4gPiA+Pj4gLSAgICBERUJVRyAoKERF QlVHX0lORk8sICJEYXRhIG91dCBJL08gcG9ydDogMHglMDR4XG4iLA0KPiA+ID4+IG1LY3NIYXJk d2FyZUluZm8uSW9EYXRhT3V0QWRkcmVzcy5Jb0FkZHJlc3MxNikpOw0KPiA+ID4+PiAtICAgIERF QlVHICgoREVCVUdfSU5GTywgIkNvbW1hbmQgSS9PIHBvcnQgOiAweCUwNHhcbiIsDQo+ID4gPj4g bUtjc0hhcmR3YXJlSW5mby5Jb0NvbW1hbmRBZGRyZXNzLklvQWRkcmVzczE2KSk7DQo+ID4gPj4+ IC0gICAgREVCVUcgKChERUJVR19JTkZPLCAiU3RhdHVzIEkvTyBwb3J0ICA6IDB4JTA0eFxuIiwN Cj4gPiA+PiBtS2NzSGFyZHdhcmVJbmZvLklvU3RhdHVzQWRkcmVzcy5Jb0FkZHJlc3MxNikpOw0K PiA+ID4+PiArICAgIERFQlVHICgoREVCVUdfTUFOQUdFQUJJTElUWV9JTkZPLCAiSS9PIE1hcCBJ L09cbiIpKTsNCj4gPiA+Pj4gKyAgICBERUJVRyAoKERFQlVHX01BTkFHRUFCSUxJVFlfSU5GTywg IkJhc2UgSS9PIHBvcnQgICAgOg0KPiA+IDB4JTA0eFxuIiwNCj4gPiA+PiBtS2NzSGFyZHdhcmVJ bmZvLklvQmFzZUFkZHJlc3MuSW9BZGRyZXNzMTYpKTsNCj4gPiA+Pj4gKyAgICBERUJVRyAoKERF QlVHX01BTkFHRUFCSUxJVFlfSU5GTywgIkRhdGEgaW4gSS9PIHBvcnQgOg0KPiA+ID4+PiArIDB4 JTA0eFxuIiwNCj4gPiA+PiBtS2NzSGFyZHdhcmVJbmZvLklvRGF0YUluQWRkcmVzcy5Jb0FkZHJl c3MxNikpOw0KPiA+ID4+PiArICAgIERFQlVHICgoREVCVUdfTUFOQUdFQUJJTElUWV9JTkZPLCAi RGF0YSBvdXQgSS9PIHBvcnQ6DQo+ID4gPj4gMHglMDR4XG4iLCBtS2NzSGFyZHdhcmVJbmZvLklv RGF0YU91dEFkZHJlc3MuSW9BZGRyZXNzMTYpKTsNCj4gPiA+Pj4gKyAgICBERUJVRyAoKERFQlVH X01BTkFHRUFCSUxJVFlfSU5GTywgIkNvbW1hbmQgSS9PIHBvcnQgOg0KPiA+ID4+IDB4JTA0eFxu IiwgbUtjc0hhcmR3YXJlSW5mby5Jb0NvbW1hbmRBZGRyZXNzLklvQWRkcmVzczE2KSk7DQo+ID4g Pj4+ICsgICAgREVCVUcgKChERUJVR19NQU5BR0VBQklMSVRZX0lORk8sICJTdGF0dXMgSS9PIHBv cnQgIDoNCj4gPiA+Pj4gKyAweCUwNHhcbiIsIG1LY3NIYXJkd2FyZUluZm8uSW9TdGF0dXNBZGRy ZXNzLklvQWRkcmVzczE2KSk7DQo+ID4gPj4+ICAgICAgfQ0KPiA+ID4+IGlmIHRob3NlIGNvZGUg aXMganVzdCBmb3IgZGVidWdnaW5nLCB5b3Ugc2hvdWxkIHB1dCB0aGVtIGludG8NCj4gPiA+PiBE RUJVR19DT0RFX0JFR0lOKCkgYW5kIERFQlVHX0NPREVfRU5EKCkNCj4gPiA+IERFQlVHX01BTkFH RUFCSUxJVFkgaXMgZ290IGFwcHJvdmFsIGFuZCB3ZSBjYW4gdXNlIHRoYXQgdG8gZW5hYmxlDQo+ ID4gPiB0aGUNCj4gPiBwcmludCBlcnJvciBsZXZlbCBmb3IgTWFuYWdlYWJpbGl0eSBzdHVmZi4g VXNlIERFQlVHX0NPREVfQkVHSU4NCj4gPiByZXF1aXJlcyB1c2VyIHRvIGVuYWJsZSBERUJVR19Q Uk9QRVJUWV9ERUJVR19DT0RFX0VOQUJMRUQNCj4gPiBhZGRpdGlvbmFsbHksIGl0IHNhdmVzIFJP TSBzaXplIHRob3VnaC4NCj4gPiA+IEhvdyBkbyB5b3UgdGhpbms/IFdoaWNoIHdheSBpcyBjb252 ZW5pZW50IHRvIHVzZXJzIGFuZCBhbHNvIGhhdmUgYQ0KPiA+ID4gZ29vZA0KPiA+IGNvZGUgc3Ry dWN0dXJlPw0KPiA+IEkgZG8gbm90IGJlbGlldmUgUk9NIHNpemUgaXMgYW4gaXNzdWUgb2YgdGhl IHN5c3RlbSB3aGljaCBjYW4gc3VwcG9ydA0KPiA+IHRob3NlIGZlYXR1cmVzLCBzbyBsZXQncyBr ZWVwIHRoZW0NCj4gT2ssIGdvdCBpdC4NCj4gDQo+IFRoYW5rcw0KPiBBYm5lcg0KPiANCj4gDQo+ IA0KPiA+ID4gVGhhbmtzDQo+ID4gPiBBYm5lcg0KPiA+ID4NCj4gPiA+Pj4gICAgICByZXR1cm4g RUZJX1NVQ0NFU1M7DQo+ID4gPj4+IEBAIC0yMjEsNyArMjIxLDcgQEAgS2NzVHJhbnNwb3J0VHJh bnNtaXRSZWNlaXZlICgNCj4gPiA+Pj4gICAgICBFRklfU1RBVFVTICAgICAgICAgICAgICAgICAg ICAgICAgICAgU3RhdHVzOw0KPiA+ID4+PiAgICAgIE1BTkFHRUFCSUxJVFlfSVBNSV9UUkFOU1BP UlRfSEVBREVSICAqVHJhbnNtaXRIZWFkZXI7DQo+ID4gPj4+DQo+ID4gPj4+IC0gIGlmIChUcmFu c3BvcnRUb2tlbiA9PSBOVUxMIHx8IFRyYW5zZmVyVG9rZW4gPT0gTlVMTCkgew0KPiA+ID4+PiAr ICBpZiAoKFRyYW5zcG9ydFRva2VuID09IE5VTEwpIHx8IChUcmFuc2ZlclRva2VuID09IE5VTEwp KSB7DQo+ID4gPj4+ICAgICAgICBERUJVRyAoKERFQlVHX0VSUk9SLCAiJWE6IEludmFsaWQgdHJh bnNwb3J0IHRva2VuIG9yDQo+ID4gPj4+IHRyYW5zZmVyDQo+ID4gPj4gdG9rZW4uXG4iLCBfX0ZV TkNUSU9OX18pKTsNCj4gPiA+Pj4gICAgICAgIHJldHVybjsNCj4gPiA+Pj4gICAgICB9DQo+ID4g Pj4+IEBAIC0yOTgsNiArMjk4LDcgQEAgQWNxdWlyZVRyYW5zcG9ydFNlc3Npb24gKA0KPiA+ID4+ PiAgICAgICAgREVCVUcgKChERUJVR19FUlJPUiwgIiVhOiBGYWlsIHRvIGFsbG9jYXRlIG1lbW9y eSBmb3INCj4gPiA+PiBNQU5BR0VBQklMSVRZX1RSQU5TUE9SVF9LQ1NcbiIsIF9fRlVOQ1RJT05f XykpOw0KPiA+ID4+PiAgICAgICAgcmV0dXJuIEVGSV9PVVRfT0ZfUkVTT1VSQ0VTOw0KPiA+ID4+ PiAgICAgIH0NCj4gPiA+Pj4gKw0KPiA+ID4+PiAgICAgIEtjc1RyYW5zcG9ydFRva2VuLT5Ub2tl bi5UcmFuc3BvcnQgPSBBbGxvY2F0ZVplcm9Qb29sIChzaXplb2YNCj4gPiA+PiAoTUFOQUdFQUJJ TElUWV9UUkFOU1BPUlQpKTsNCj4gPiA+Pj4gICAgICBpZiAoS2NzVHJhbnNwb3J0VG9rZW4tPlRv a2VuLlRyYW5zcG9ydCA9PSBOVUxMKSB7DQo+ID4gPj4+ICAgICAgICBGcmVlUG9vbCAoS2NzVHJh bnNwb3J0VG9rZW4pOyBAQCAtMzI5LDIxICszMzAsMjkgQEANCj4gPiA+Pj4gQWNxdWlyZVRyYW5z cG9ydFNlc3Npb24gKA0KPiA+ID4+PiAgICB9DQo+ID4gPj4+DQo+ID4gPj4+ICAgIC8qKg0KPiA+ ID4+PiAtICBUaGlzIGZ1bmN0aW9uIHJldHVybnMgdGhlIHRyYW5zcG9ydCBjYXBhYmlsaXRpZXMu DQo+ID4gPj4+IC0NCj4gPiA+Pj4gLSAgQHBhcmFtIFtvdXRdICBUcmFuc3BvcnRGZWF0dXJlICAg ICAgICBQb2ludGVyIHRvIHJlY2VpdmUgdHJhbnNwb3J0DQo+ID4gPj4gY2FwYWJpbGl0aWVzLg0K PiA+ID4+PiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlZSB0aGUg ZGVmaW5pdGlvbnMgb2YNCj4gPiA+Pj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBNQU5BR0VBQklMSVRZX1RSQU5TUE9SVF9DQVBBQklMSVRZLg0KPiA+ID4+PiAtDQo+ ID4gPj4+ICsgIFRoaXMgZnVuY3Rpb24gcmV0dXJucyB0aGUgdHJhbnNwb3J0IGNhcGFiaWxpdGll cyBhY2NvcmRpbmcgdG8NCj4gPiA+Pj4gKyB0aGUgbWFuYWdlYWJpbGl0eSBwcm90b2NvbC4NCj4g PiA+Pj4gKw0KPiA+ID4+PiArICBAcGFyYW0gW2luXSAgIFRyYW5zcG9ydFRva2VuICAgICAgICAg ICAgIFRyYW5zcG9ydCB0b2tlbiBhY3F1aXJlZCBmcm9tDQo+ID4gPj4gbWFuYWdlYWJpbGl0eQ0K PiA+ID4+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5z cG9ydCBsaWJyYXJ5Lg0KPiA+ID4+PiArICBAcGFyYW0gW291dF0gIFRyYW5zcG9ydEZlYXR1cmUg ICAgICAgICAgIFBvaW50ZXIgdG8gcmVjZWl2ZSB0cmFuc3BvcnQNCj4gPiA+PiBjYXBhYmlsaXRp ZXMuDQo+ID4gPj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg U2VlIHRoZSBkZWZpbml0aW9ucyBvZg0KPiA+ID4+PiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIE1BTkFHRUFCSUxJVFlfVFJBTlNQT1JUX0NBUEFCSUxJVFkuDQo+ ID4gPj4+ICsgIEByZXR2YWwgICAgICAgRUZJX1NVQ0NFU1MgICAgICAgICAgICAgICAgVHJhbnNw b3J0Q2FwYWJpbGl0eSBpcyByZXR1cm5lZA0KPiA+ID4+IHN1Y2Nlc3NmdWxseS4NCj4gPiA+Pj4g KyAgQHJldHZhbCAgICAgICBFRklfSU5WQUxJRF9QQVJBTUVURVIgICAgICBUcmFuc3BvcnRUb2tl biBpcyBub3QgYQ0KPiB2YWxpZA0KPiA+ID4+IHRva2VuLg0KPiA+ID4+PiAgICAqKi8NCj4gPiA+ Pj4gLVZPSUQNCj4gPiA+Pj4gK0VGSV9TVEFUVVMNCj4gPiA+Pj4gICAgR2V0VHJhbnNwb3J0Q2Fw YWJpbGl0eSAoDQo+ID4gPj4+ICsgIElOIE1BTkFHRUFCSUxJVFlfVFJBTlNQT1JUX1RPS0VOICAg ICAgICAqVHJhbnNwb3J0VG9rZW4sDQo+ID4gPj4+ICAgICAgT1VUIE1BTkFHRUFCSUxJVFlfVFJB TlNQT1JUX0NBUEFCSUxJVFkNCj4gKlRyYW5zcG9ydENhcGFiaWxpdHkNCj4gPiA+Pj4gICAgICAp DQo+ID4gPj4+ICAgIHsNCj4gPiA+Pj4gLSAgaWYgKFRyYW5zcG9ydENhcGFiaWxpdHkgIT0gTlVM TCkgew0KPiA+ID4+PiAtICAgICpUcmFuc3BvcnRDYXBhYmlsaXR5ID0gMDsNCj4gPiA+Pj4gKyAg aWYgKChUcmFuc3BvcnRUb2tlbiA9PSBOVUxMKSB8fCAoVHJhbnNwb3J0Q2FwYWJpbGl0eSA9PSBO VUxMKSkgew0KPiA+ID4+PiArICAgIHJldHVybiBFRklfSU5WQUxJRF9QQVJBTUVURVI7DQo+ID4g Pj4+ICAgICAgfQ0KPiA+ID4+PiArDQo+ID4gPj4+ICsgICpUcmFuc3BvcnRDYXBhYmlsaXR5ID0g MDsNCj4gPiA+Pj4gKyAgcmV0dXJuIEVGSV9TVUNDRVNTOw0KPiA+ID4+PiAgICB9DQo+ID4gPj4+ DQo+ID4gPj4+ICAgIC8qKg0KPiA+ID4+PiBkaWZmIC0tZ2l0DQo+ID4gPj4+DQo+IGEvRmVhdHVy ZXMvTWFuYWdlYWJpbGl0eVBrZy9Vbml2ZXJzYWwvSXBtaVByb3RvY29sL0R4ZS9JcG1pUHJvdG9j b2wuDQo+ID4gPj4+IGMNCj4gPiA+Pj4NCj4gYi9GZWF0dXJlcy9NYW5hZ2VhYmlsaXR5UGtnL1Vu aXZlcnNhbC9JcG1pUHJvdG9jb2wvRHhlL0lwbWlQcm90b2NvbC4NCj4gPiA+Pj4gYw0KPiA+ID4+ PiBpbmRleCAwNTE3NWVlNDQ4Li41MWQ1YzdmMGJhIDEwMDY0NA0KPiA+ID4+PiAtLS0NCj4gPiA+ Pj4NCj4gYS9GZWF0dXJlcy9NYW5hZ2VhYmlsaXR5UGtnL1VuaXZlcnNhbC9JcG1pUHJvdG9jb2wv RHhlL0lwbWlQcm90b2NvbC4NCj4gPiA+Pj4gYw0KPiA+ID4+PiArKysNCj4gPiA+PiBiL0ZlYXR1 cmVzL01hbmFnZWFiaWxpdHlQa2cvVW5pdmVyc2FsL0lwbWlQcm90b2NvbC9EeGUvSXBtaVByb3Rv Y28NCj4gPiA+Pj4gKysrIGwuYw0KPiA+ID4+PiBAQCAtMTcsOSArMTcsOSBAQA0KPiA+ID4+Pg0K PiA+ID4+PiAgICAjaW5jbHVkZSAiSXBtaVByb3RvY29sQ29tbW9uLmgiDQo+ID4gPj4+DQo+ID4g Pj4+IC1NQU5BR0VBQklMSVRZX1RSQU5TUE9SVF9UT0tFTiAgKm1UcmFuc3BvcnRUb2tlbiA9IE5V TEw7DQo+ID4gPj4+IC1DSEFSMTYgICAgICAgICAgICAgICAgICAgICAgICAgKm1UcmFuc3BvcnRO YW1lOw0KPiA+ID4+PiAtDQo+ID4gPj4+ICtNQU5BR0VBQklMSVRZX1RSQU5TUE9SVF9UT0tFTiAg ICAgICAgICAgICAgICAgKm1UcmFuc3BvcnRUb2tlbiA9DQo+ID4gTlVMTDsNCj4gPiA+Pj4gK0NI QVIxNiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbVRyYW5zcG9ydE5h bWU7DQo+ID4gPj4+ICtVSU5UMzIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgVHJhbnNwb3J0TWF4aW11bVBheWxvYWQ7DQo+ID4gPj4+ICAgIE1BTkFHRUFCSUxJVFlfVFJB TlNQT1JUX0hBUkRXQVJFX0lORk9STUFUSU9ODQo+ID4gPj4gbUhhcmR3YXJlSW5mb3JtYXRpb247 DQo+ID4gPj4+ICAgIC8qKg0KPiA+ID4+PiBAQCAtOTIsOCArOTIsNiBAQCBEeGVJcG1pRW50cnkg KA0KPiA+ID4+PiAgICAgIE1BTkFHRUFCSUxJVFlfVFJBTlNQT1JUX0NBUEFCSUxJVFkgICAgICAg ICBUcmFuc3BvcnRDYXBhYmlsaXR5Ow0KPiA+ID4+PiAgICAgIE1BTkFHRUFCSUxJVFlfVFJBTlNQ T1JUX0FERElUSU9OQUxfU1RBVFVTDQo+ID4gPj4+IFRyYW5zcG9ydEFkZGl0aW9uYWxTdGF0dXM7 DQo+ID4gPj4+DQo+ID4gPj4+IC0gIEdldFRyYW5zcG9ydENhcGFiaWxpdHkgKCZUcmFuc3BvcnRD YXBhYmlsaXR5KTsNCj4gPiA+Pj4gLQ0KPiA+ID4+PiAgICAgIFN0YXR1cyA9IEhlbHBlckFjcXVp cmVNYW5hZ2VhYmlsaXR5VHJhbnNwb3J0ICgNCj4gPiA+Pj4gICAgICAgICAgICAgICAgICZnTWFu YWdlYWJpbGl0eVByb3RvY29sSXBtaUd1aWQsDQo+ID4gPj4+ICAgICAgICAgICAgICAgICAmbVRy YW5zcG9ydFRva2VuDQo+ID4gPj4+IEBAIC0xMDMsOCArMTAxLDIyIEBAIER4ZUlwbWlFbnRyeSAo DQo+ID4gPj4+ICAgICAgICByZXR1cm4gU3RhdHVzOw0KPiA+ID4+PiAgICAgIH0NCj4gPiA+Pj4N Cj4gPiA+Pj4gKyAgU3RhdHVzID0gR2V0VHJhbnNwb3J0Q2FwYWJpbGl0eSAobVRyYW5zcG9ydFRv a2VuLA0KPiA+ID4+PiArICZUcmFuc3BvcnRDYXBhYmlsaXR5KTsgIGlmIChFRklfRVJST1IgKFN0 YXR1cykpIHsNCj4gPiA+Pj4gKyAgICBERUJVRyAoKERFQlVHX0VSUk9SLCAiJWE6IEZhaWxlZCB0 bw0KPiA+ID4+PiArIEdldFRyYW5zcG9ydENhcGFiaWxpdHkoKS5cbiIsDQo+ID4gPj4gX19GVU5D VElPTl9fKSk7DQo+ID4gPj4+ICsgICAgcmV0dXJuIFN0YXR1czsNCj4gPiA+Pj4gKyAgfQ0KPiA+ ID4+PiArDQo+ID4gPj4+ICsgIFRyYW5zcG9ydE1heGltdW1QYXlsb2FkID0NCj4gPiA+Pj4gKyBN QU5BR0VBQklMSVRZX1RSQU5TUE9SVF9QQVlMT0FEX1NJWkVfRlJPTV9DQVBBQklMSVRZDQo+ID4g Pj4gKFRyYW5zcG9ydENhcGFiaWxpdHkpOyAgaWYgKFRyYW5zcG9ydE1heGltdW1QYXlsb2FkID09 ICgxIDw8DQo+ID4gPj4NCj4gPg0KPiBNQU5BR0VBQklMSVRZX1RSQU5TUE9SVF9DQVBBQklMSVRZ X01BWElNVU1fUEFZTE9BRF9OT1RfQVYNCj4gPiA+PiBBSUxBQkxFKSkgew0KPiA+ID4+PiArICAg IERFQlVHICgoREVCVUdfTUFOQUdFQUJJTElUWV9JTkZPLCAiJWE6IFRyYW5zcG9ydCBpbnRlcmZh Y2UNCj4gPiA+Pj4gKyBtYXhpbXVtIHBheWxvYWQgaXMgdW5kZWZpbmVkLlxuIiwgX19GVU5DVElP Tl9fKSk7ICB9IGVsc2Ugew0KPiA+ID4+PiArICAgIFRyYW5zcG9ydE1heGltdW1QYXlsb2FkIC09 IDE7DQo+ID4gPj4+ICsgICAgREVCVUcgKChERUJVR19NQU5BR0VBQklMSVRZX0lORk8sICIlYTog VHJhbnNwb3J0IGludGVyZmFjZQ0KPiA+IGZvcg0KPiA+ID4+PiArIElQTUkgcHJvdG9jb2wgaGFz IG1heGltdW0gcGF5bG9hZCAleC5cbiIsIF9fRlVOQ1RJT05fXywNCj4gPiA+Pj4gKyBUcmFuc3Bv cnRNYXhpbXVtUGF5bG9hZCkpOyAgfQ0KPiA+ID4+PiArDQo+ID4gPj4+ICAgICAgbVRyYW5zcG9y dE5hbWUgPSBIZWxwZXJNYW5hZ2VhYmlsaXR5U3BlY05hbWUNCj4gPiA+Pj4gKG1UcmFuc3BvcnRU b2tlbi0+VHJhbnNwb3J0LT5NYW5hZ2VhYmlsaXR5VHJhbnNwb3J0U3BlY2lmaWNhdGlvbik7DQo+ ID4gPj4+IC0gIERFQlVHICgoREVCVUdfSU5GTywgIiVhOiBJUE1JIHByb3RvY29sIG92ZXIgJXMu XG4iLA0KPiA+IF9fRlVOQ1RJT05fXywNCj4gPiA+Pj4gbVRyYW5zcG9ydE5hbWUpKTsNCj4gPiA+ Pj4gKyAgREVCVUcgKChERUJVR19NQU5BR0VBQklMSVRZX0lORk8sICIlYTogSVBNSSBwcm90b2Nv bCBvdmVyDQo+ID4gPj4gJXMuXG4iLA0KPiA+ID4+PiArIF9fRlVOQ1RJT05fXywgbVRyYW5zcG9y dE5hbWUpKTsNCj4gPiA+Pj4NCj4gPiA+Pj4gICAgICAvLw0KPiA+ID4+PiAgICAgIC8vIFNldHVw IGhhcmR3YXJlIGluZm9ybWF0aW9uIGFjY29yZGluZyB0byB0aGUgdHJhbnNwb3J0IGludGVyZmFj ZS4NCj4gPiA+Pj4gZGlmZiAtLWdpdA0KPiA+ID4+PiBhL0ZlYXR1cmVzL01hbmFnZWFiaWxpdHlQ a2cvVW5pdmVyc2FsL0lwbWlQcm90b2NvbC9QZWkvSXBtaVBwaS5jDQo+ID4gPj4+IGIvRmVhdHVy ZXMvTWFuYWdlYWJpbGl0eVBrZy9Vbml2ZXJzYWwvSXBtaVByb3RvY29sL1BlaS9JcG1pUHBpLmMN Cj4gPiA+Pj4gaW5kZXggZjgzOWNkNzM4Ny4uOGJmMWU3OTRmMCAxMDA2NDQNCj4gPiA+Pj4gLS0t DQo+ID4gPj4+IGEvRmVhdHVyZXMvTWFuYWdlYWJpbGl0eVBrZy9Vbml2ZXJzYWwvSXBtaVByb3Rv Y29sL1BlaS9JcG1pUHBpLmMNCj4gPiA+Pj4gKysrDQo+IGIvRmVhdHVyZXMvTWFuYWdlYWJpbGl0 eVBrZy9Vbml2ZXJzYWwvSXBtaVByb3RvY29sL1BlaS9JcG1pUHBpDQo+ID4gPj4+ICsrKyAuYw0K PiA+ID4+PiBAQCAtNTEsMTkgKzUxLDE5IEBAIFBlaUlwbWlTdWJtaXRDb21tYW5kICgNCj4gPiA+ Pj4gICAgICBJTiBPVVQgVUlOVDMyICAgICAgICAqUmVzcG9uc2VEYXRhU2l6ZQ0KPiA+ID4+PiAg ICAgICkNCj4gPiA+Pj4gICAgew0KPiA+ID4+PiAtICBFRklfU1RBVFVTICAgICAgICAgICAgU3Rh dHVzOw0KPiA+ID4+PiAtICBQRUlfSVBNSV9QUElfSU5URVJOQUwgKlBlaUlwbWlQcGlpbnRlcm5h bDsNCj4gPiA+Pj4gLQ0KPiA+ID4+PiAtICBQZWlJcG1pUHBpaW50ZXJuYWwgPQ0KPiA+ID4+PiBN QU5BR0VBQklMSVRZX0lQTUlfUFBJX0lOVEVSTkFMX0ZST01fTElOSyhUaGlzKTsNCj4gPiA+Pj4g LSAgU3RhdHVzID0gQ29tbW9uSXBtaVN1Ym1pdENvbW1hbmQgKA0KPiA+ID4+PiAtICAgICAgICAg ICAgIFBlaUlwbWlQcGlpbnRlcm5hbC0+VHJhbnNwb3J0VG9rZW4sDQo+ID4gPj4+IC0gICAgICAg ICAgICAgTmV0RnVuY3Rpb24sDQo+ID4gPj4+IC0gICAgICAgICAgICAgQ29tbWFuZCwNCj4gPiA+ Pj4gLSAgICAgICAgICAgICBSZXF1ZXN0RGF0YSwNCj4gPiA+Pj4gLSAgICAgICAgICAgICBSZXF1 ZXN0RGF0YVNpemUsDQo+ID4gPj4+IC0gICAgICAgICAgICAgUmVzcG9uc2VEYXRhLA0KPiA+ID4+ PiAtICAgICAgICAgICAgIFJlc3BvbnNlRGF0YVNpemUNCj4gPiA+Pj4gLSAgICAgICAgICAgICAp Ow0KPiA+ID4+PiArICBFRklfU1RBVFVTICAgICAgICAgICAgIFN0YXR1czsNCj4gPiA+Pj4gKyAg UEVJX0lQTUlfUFBJX0lOVEVSTkFMICAqUGVpSXBtaVBwaWludGVybmFsOw0KPiA+ID4+PiArDQo+ ID4gPj4+ICsgIFBlaUlwbWlQcGlpbnRlcm5hbCA9DQo+ID4gTUFOQUdFQUJJTElUWV9JUE1JX1BQ SV9JTlRFUk5BTF9GUk9NX0xJTksNCj4gPiA+PiAoVGhpcyk7DQo+ID4gPj4+ICsgIFN0YXR1cyAg ICAgICAgICAgICA9IENvbW1vbklwbWlTdWJtaXRDb21tYW5kICgNCj4gPiA+Pj4gKyAgICAgICAg ICAgICAgICAgICAgICAgICBQZWlJcG1pUHBpaW50ZXJuYWwtPlRyYW5zcG9ydFRva2VuLA0KPiA+ ID4+PiArICAgICAgICAgICAgICAgICAgICAgICAgIE5ldEZ1bmN0aW9uLA0KPiA+ID4+PiArICAg ICAgICAgICAgICAgICAgICAgICAgIENvbW1hbmQsDQo+ID4gPj4+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgUmVxdWVzdERhdGEsDQo+ID4gPj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAg UmVxdWVzdERhdGFTaXplLA0KPiA+ID4+PiArICAgICAgICAgICAgICAgICAgICAgICAgIFJlc3Bv bnNlRGF0YSwNCj4gPiA+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICBSZXNwb25zZURhdGFT aXplDQo+ID4gPj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgKTsNCj4gPiA+Pj4gICAgICBy ZXR1cm4gU3RhdHVzOw0KPiA+ID4+PiAgICB9DQo+ID4gPj4+DQo+ID4gPj4+IEBAIC04NywyOSAr ODcsMjggQEAgUGVpSXBtaUVudHJ5ICgNCj4gPiA+Pj4gICAgICBDSEFSMTYgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKlRyYW5zcG9ydE5hbWU7DQo+ID4gPj4+ICAgICAg UEVJX0lQTUlfUFBJX0lOVEVSTkFMICAgICAgICAgICAgICAgICAgICAgICAgICpQZWlJcG1pUHBp aW50ZXJuYWw7DQo+ID4gPj4+ICAgICAgRUZJX1BFSV9QUElfREVTQ1JJUFRPUiAgICAgICAgICAg ICAgICAgICAgICAgICpQcGlEZXNjcmlwdG9yOw0KPiA+ID4+PiAtICBNQU5BR0VBQklMSVRZX1RS QU5TUE9SVF9DQVBBQklMSVRZICAgICAgICAgICAgVHJhbnNwb3J0Q2FwYWJpbGl0eTsNCj4gPiA+ Pj4gICAgICBNQU5BR0VBQklMSVRZX1RSQU5TUE9SVF9BRERJVElPTkFMX1NUQVRVUw0KPiA+ID4+ IFRyYW5zcG9ydEFkZGl0aW9uYWxTdGF0dXM7DQo+ID4gPj4+ICAgICAgTUFOQUdFQUJJTElUWV9U UkFOU1BPUlRfSEFSRFdBUkVfSU5GT1JNQVRJT04NCj4gPiA+PiBIYXJkd2FyZUluZm9ybWF0aW9u Ow0KPiA+ID4+PiAtICBQZWlJcG1pUHBpaW50ZXJuYWwgPSAoUEVJX0lQTUlfUFBJX0lOVEVSTkFM ICopQWxsb2NhdGVaZXJvUG9vbA0KPiA+ID4+PiAoc2l6ZW9mKFBFSV9JUE1JX1BQSV9JTlRFUk5B TCkpOw0KPiA+ID4+PiArICBQZWlJcG1pUHBpaW50ZXJuYWwgPSAoUEVJX0lQTUlfUFBJX0lOVEVS TkFMICopQWxsb2NhdGVaZXJvUG9vbA0KPiA+ID4+PiArIChzaXplb2YgKFBFSV9JUE1JX1BQSV9J TlRFUk5BTCkpOw0KPiA+ID4+PiAgICAgIGlmIChQZWlJcG1pUHBpaW50ZXJuYWwgPT0gTlVMTCkg ew0KPiA+ID4+PiAgICAgICAgREVCVUcgKChERUJVR19FUlJPUiwgIiVhOiBOb3QgZW5vdWdoIG1l bW9yeSBmb3INCj4gPiA+PiBQRUlfSVBNSV9QUElfSU5URVJOQUwuXG4iLCBfX0ZVTkNUSU9OX18p KTsNCj4gPiA+Pj4gICAgICAgIHJldHVybiBFRklfT1VUX09GX1JFU09VUkNFUzsNCj4gPiA+Pj4g ICAgICB9DQo+ID4gPj4+IC0gIFBwaURlc2NyaXB0b3IgPSAoRUZJX1BFSV9QUElfREVTQ1JJUFRP UiAqKUFsbG9jYXRlWmVyb1Bvb2wNCj4gPiA+Pj4gKHNpemVvZihFRklfUEVJX1BQSV9ERVNDUklQ VE9SKSk7DQo+ID4gPj4+ICsNCj4gPiA+Pj4gKyAgUHBpRGVzY3JpcHRvciA9IChFRklfUEVJX1BQ SV9ERVNDUklQVE9SICopQWxsb2NhdGVaZXJvUG9vbA0KPiA+ID4+PiArIChzaXplb2YgKEVGSV9Q RUlfUFBJX0RFU0NSSVBUT1IpKTsNCj4gPiA+Pj4gICAgICBpZiAoUHBpRGVzY3JpcHRvciA9PSBO VUxMKSB7DQo+ID4gPj4+ICAgICAgICBERUJVRyAoKERFQlVHX0VSUk9SLCAiJWE6IE5vdCBlbm91 Z2ggbWVtb3J5IGZvcg0KPiA+ID4+IEVGSV9QRUlfUFBJX0RFU0NSSVBUT1IuXG4iLCBfX0ZVTkNU SU9OX18pKTsNCj4gPiA+Pj4gICAgICAgIHJldHVybiBFRklfT1VUX09GX1JFU09VUkNFUzsNCj4g PiA+Pj4gICAgICB9DQo+ID4gPj4+DQo+ID4gPj4+IC0gIFBlaUlwbWlQcGlpbnRlcm5hbC0+U2ln bmF0dXJlID0NCj4gPiA+Pj4gTUFOQUdFQUJJTElUWV9JUE1JX1BQSV9JTlRFUk5BTF9TSUdOQVRV UkU7DQo+ID4gPj4+ICsgIFBlaUlwbWlQcGlpbnRlcm5hbC0+U2lnbmF0dXJlICAgICAgICAgICAg ICAgICAgICA9DQo+ID4gPj4gTUFOQUdFQUJJTElUWV9JUE1JX1BQSV9JTlRFUk5BTF9TSUdOQVRV UkU7DQo+ID4gPj4+ICAgICAgUGVpSXBtaVBwaWludGVybmFsLT5QZWlJcG1pUHBpLklwbWlTdWJt aXRDb21tYW5kID0NCj4gPiA+Pj4gUGVpSXBtaVN1Ym1pdENvbW1hbmQ7DQo+ID4gPj4+DQo+ID4g Pj4+ICAgICAgUHBpRGVzY3JpcHRvci0+RmxhZ3MgPSBFRklfUEVJX1BQSV9ERVNDUklQVE9SX1BQ SSB8DQo+ID4gPj4gRUZJX1BFSV9QUElfREVTQ1JJUFRPUl9URVJNSU5BVEVfTElTVDsNCj4gPiA+ Pj4gICAgICBQcGlEZXNjcmlwdG9yLT5HdWlkICA9ICZnUGVpSXBtaVBwaUd1aWQ7DQo+ID4gPj4+ ICAgICAgUHBpRGVzY3JpcHRvci0+UHBpICAgPSAmUGVpSXBtaVBwaWludGVybmFsLT5QZWlJcG1p UHBpOw0KPiA+ID4+Pg0KPiA+ID4+PiAtICBHZXRUcmFuc3BvcnRDYXBhYmlsaXR5ICgmVHJhbnNw b3J0Q2FwYWJpbGl0eSk7DQo+ID4gPj4+ICAgICAgU3RhdHVzID0gSGVscGVyQWNxdWlyZU1hbmFn ZWFiaWxpdHlUcmFuc3BvcnQgKA0KPiA+ID4+PiAgICAgICAgICAgICAgICAgJmdNYW5hZ2VhYmls aXR5UHJvdG9jb2xJcG1pR3VpZCwNCj4gPiA+Pj4gICAgICAgICAgICAgICAgICZQZWlJcG1pUHBp aW50ZXJuYWwtPlRyYW5zcG9ydFRva2VuDQo+ID4gPj4+IEBAIC0xMTksOCArMTE4LDIyIEBAIFBl aUlwbWlFbnRyeSAoDQo+ID4gPj4+ICAgICAgICByZXR1cm4gU3RhdHVzOw0KPiA+ID4+PiAgICAg IH0NCj4gPiA+Pj4NCj4gPiA+Pj4gKyAgU3RhdHVzID0gR2V0VHJhbnNwb3J0Q2FwYWJpbGl0eQ0K PiA+ID4+PiArIChQZWlJcG1pUHBpaW50ZXJuYWwtPlRyYW5zcG9ydFRva2VuLA0KPiA+ID4+PiAr ICZQZWlJcG1pUHBpaW50ZXJuYWwtPlRyYW5zcG9ydENhcGFiaWxpdHkpOw0KPiA+ID4+PiArICBp ZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ID4gPj4+ICsgICAgREVCVUcgKChERUJVR19FUlJP UiwgIiVhOiBGYWlsZWQgdG8NCj4gPiA+Pj4gKyBHZXRUcmFuc3BvcnRDYXBhYmlsaXR5KCkuXG4i LA0KPiA+ID4+IF9fRlVOQ1RJT05fXykpOw0KPiA+ID4+PiArICAgIHJldHVybiBTdGF0dXM7DQo+ ID4gPj4+ICsgIH0NCj4gPiA+Pj4gKw0KPiA+ID4+PiArICBQZWlJcG1pUHBpaW50ZXJuYWwtPlRy YW5zcG9ydE1heGltdW1QYXlsb2FkID0NCj4gPiA+Pj4gKyBNQU5BR0VBQklMSVRZX1RSQU5TUE9S VF9QQVlMT0FEX1NJWkVfRlJPTV9DQVBBQklMSVRZDQo+ID4gPj4+ICsgKFBlaUlwbWlQcGlpbnRl cm5hbC0+VHJhbnNwb3J0Q2FwYWJpbGl0eSk7DQo+ID4gPj4+ICsgIGlmIChQZWlJcG1pUHBpaW50 ZXJuYWwtPlRyYW5zcG9ydE1heGltdW1QYXlsb2FkICA9PSAoMSA8PA0KPiA+ID4+DQo+ID4NCj4g TUFOQUdFQUJJTElUWV9UUkFOU1BPUlRfQ0FQQUJJTElUWV9NQVhJTVVNX1BBWUxPQURfTk9UX0FW DQo+ID4gPj4gQUlMQUJMRSkpIHsNCj4gPiA+Pj4gKyAgICBERUJVRyAoKERFQlVHX01BTkFHRUFC SUxJVFlfSU5GTywgIiVhOiBUcmFuc3BvcnQgaW50ZXJmYWNlDQo+ID4gPj4+ICsgbWF4aW11bSBw YXlsb2FkIGlzIHVuZGVmaW5lZC5cbiIsIF9fRlVOQ1RJT05fXykpOyAgfSBlbHNlIHsNCj4gPiA+ Pj4gKyAgICBQZWlJcG1pUHBpaW50ZXJuYWwtPlRyYW5zcG9ydE1heGltdW1QYXlsb2FkIC09IDE7 DQo+ID4gPj4+ICsgICAgREVCVUcgKChERUJVR19NQU5BR0VBQklMSVRZX0lORk8sICIlYTogVHJh bnNwb3J0IGludGVyZmFjZQ0KPiA+IGZvcg0KPiA+ID4+PiArIElQTUkgcHJvdG9jb2wgaGFzIG1h eGltdW0gcGF5bG9hZCAweCV4LlxuIiwgX19GVU5DVElPTl9fLA0KPiA+ID4+PiArIFBlaUlwbWlQ cGlpbnRlcm5hbC0+VHJhbnNwb3J0TWF4aW11bVBheWxvYWQpKTsNCj4gPiA+Pj4gKyAgfQ0KPiA+ ID4+PiArDQo+ID4gPj4+ICAgICAgVHJhbnNwb3J0TmFtZSA9IEhlbHBlck1hbmFnZWFiaWxpdHlT cGVjTmFtZQ0KPiA+ID4+PiAoUGVpSXBtaVBwaWludGVybmFsLT5UcmFuc3BvcnRUb2tlbi0+VHJh bnNwb3J0LQ0KPiA+ID5NYW5hZ2VhYmlsaXR5VHJhbnNwbw0KPiA+ID4+PiBydA0KPiA+ID4+PiBT cGVjaWZpY2F0aW9uKTsNCj4gPiA+Pj4gLSAgREVCVUcgKChERUJVR19JTkZPLCAiJWE6IElQTUkg cHJvdG9jb2wgb3ZlciAlcy5cbiIsDQo+ID4gX19GVU5DVElPTl9fLA0KPiA+ID4+PiBUcmFuc3Bv cnROYW1lKSk7DQo+ID4gPj4+ICsgIERFQlVHICgoREVCVUdfTUFOQUdFQUJJTElUWV9JTkZPLCAi JWE6IElQTUkgcHJvdG9jb2wgb3Zlcg0KPiA+ID4+ICVzLlxuIiwNCj4gPiA+Pj4gKyBfX0ZVTkNU SU9OX18sIFRyYW5zcG9ydE5hbWUpKTsNCj4gPiA+Pj4NCj4gPiA+Pj4gICAgICAvLw0KPiA+ID4+ PiAgICAgIC8vIFNldHVwIGhhcmR3YXJlIGluZm9ybWF0aW9uIGFjY29yZGluZyB0byB0aGUgdHJh bnNwb3J0IGludGVyZmFjZS4NCj4gPiA+Pj4gZGlmZiAtLWdpdA0KPiA+ID4+Pg0KPiA+IGEvRmVh dHVyZXMvTWFuYWdlYWJpbGl0eVBrZy9Vbml2ZXJzYWwvSXBtaVByb3RvY29sL1NtbS9JcG1pUHJv dG9jb2wuDQo+ID4gPj4+IGMNCj4gPiA+Pj4NCj4gPiA+Pg0KPiA+DQo+IGIvRmVhdHVyZXMvTWFu YWdlYWJpbGl0eVBrZy9Vbml2ZXJzYWwvSXBtaVByb3RvY29sL1NtbS9JcG1pUHJvdG9jb2wuYw0K PiA+ID4+PiBpbmRleCA4N2E1NDM2YmRmLi5lNGNkMTY2YjdhIDEwMDY0NA0KPiA+ID4+PiAtLS0N Cj4gPiA+Pj4NCj4gPiBhL0ZlYXR1cmVzL01hbmFnZWFiaWxpdHlQa2cvVW5pdmVyc2FsL0lwbWlQ cm90b2NvbC9TbW0vSXBtaVByb3RvY29sLg0KPiA+ID4+PiBjDQo+ID4gPj4+ICsrKw0KPiA+ID4+ DQo+IGIvRmVhdHVyZXMvTWFuYWdlYWJpbGl0eVBrZy9Vbml2ZXJzYWwvSXBtaVByb3RvY29sL1Nt bS9JcG1pUHJvdG9jbw0KPiA+ID4+PiArKysgbC5jDQo+ID4gPj4+IEBAIC0xOCw5ICsxOCw5IEBA DQo+ID4gPj4+DQo+ID4gPj4+ICAgICNpbmNsdWRlICJJcG1pUHJvdG9jb2xDb21tb24uaCINCj4g PiA+Pj4NCj4gPiA+Pj4gLU1BTkFHRUFCSUxJVFlfVFJBTlNQT1JUX1RPS0VOICAqbVRyYW5zcG9y dFRva2VuID0gTlVMTDsNCj4gPiA+Pj4gLUNIQVIxNiAgICAgICAgICAgICAgICAgICAgICAgICAq bVRyYW5zcG9ydE5hbWU7DQo+ID4gPj4+IC0NCj4gPiA+Pj4gK01BTkFHRUFCSUxJVFlfVFJBTlNQ T1JUX1RPS0VOICAgICAgICAgICAgICAgICAqbVRyYW5zcG9ydFRva2VuID0NCj4gPiBOVUxMOw0K PiA+ID4+PiArQ0hBUjE2ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpt VHJhbnNwb3J0TmFtZTsNCj4gPiA+Pj4gK1VJTlQzMiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBUcmFuc3BvcnRNYXhpbXVtUGF5bG9hZDsNCj4gPiA+Pj4gICAgTUFOQUdF QUJJTElUWV9UUkFOU1BPUlRfSEFSRFdBUkVfSU5GT1JNQVRJT04NCj4gPiA+PiBtSGFyZHdhcmVJ bmZvcm1hdGlvbjsNCj4gPiA+Pj4gICAgLyoqDQo+ID4gPj4+IEBAIC05Myw4ICs5Myw2IEBAIFNt bUlwbWlFbnRyeSAoDQo+ID4gPj4+ICAgICAgTUFOQUdFQUJJTElUWV9UUkFOU1BPUlRfQ0FQQUJJ TElUWSAgICAgICAgIFRyYW5zcG9ydENhcGFiaWxpdHk7DQo+ID4gPj4+ICAgICAgTUFOQUdFQUJJ TElUWV9UUkFOU1BPUlRfQURESVRJT05BTF9TVEFUVVMNCj4gPiA+Pj4gVHJhbnNwb3J0QWRkaXRp b25hbFN0YXR1czsNCj4gPiA+Pj4NCj4gPiA+Pj4gLSAgR2V0VHJhbnNwb3J0Q2FwYWJpbGl0eSAo JlRyYW5zcG9ydENhcGFiaWxpdHkpOw0KPiA+ID4+PiAtDQo+ID4gPj4+ICAgICAgU3RhdHVzID0g SGVscGVyQWNxdWlyZU1hbmFnZWFiaWxpdHlUcmFuc3BvcnQgKA0KPiA+ID4+PiAgICAgICAgICAg ICAgICAgJmdNYW5hZ2VhYmlsaXR5UHJvdG9jb2xJcG1pR3VpZCwNCj4gPiA+Pj4gICAgICAgICAg ICAgICAgICZtVHJhbnNwb3J0VG9rZW4NCj4gPiA+Pj4gQEAgLTEwNCw4ICsxMDIsMjIgQEAgU21t SXBtaUVudHJ5ICgNCj4gPiA+Pj4gICAgICAgIHJldHVybiBTdGF0dXM7DQo+ID4gPj4+ICAgICAg fQ0KPiA+ID4+Pg0KPiA+ID4+PiArICBTdGF0dXMgPSBHZXRUcmFuc3BvcnRDYXBhYmlsaXR5ICht VHJhbnNwb3J0VG9rZW4sDQo+ID4gPj4+ICsgJlRyYW5zcG9ydENhcGFiaWxpdHkpOyAgaWYgKEVG SV9FUlJPUiAoU3RhdHVzKSkgew0KPiA+ID4+PiArICAgIERFQlVHICgoREVCVUdfRVJST1IsICIl YTogRmFpbGVkIHRvDQo+ID4gPj4+ICsgR2V0VHJhbnNwb3J0Q2FwYWJpbGl0eSgpLlxuIiwNCj4g PiA+PiBfX0ZVTkNUSU9OX18pKTsNCj4gPiA+Pj4gKyAgICByZXR1cm4gU3RhdHVzOw0KPiA+ID4+ PiArICB9DQo+ID4gPj4+ICsNCj4gPiA+Pj4gKyAgVHJhbnNwb3J0TWF4aW11bVBheWxvYWQgPQ0K PiA+ID4+PiArIE1BTkFHRUFCSUxJVFlfVFJBTlNQT1JUX1BBWUxPQURfU0laRV9GUk9NX0NBUEFC SUxJVFkNCj4gPiA+PiAoVHJhbnNwb3J0Q2FwYWJpbGl0eSk7ICBpZiAoVHJhbnNwb3J0TWF4aW11 bVBheWxvYWQgPT0gKDEgPDwNCj4gPiA+Pg0KPiA+DQo+IE1BTkFHRUFCSUxJVFlfVFJBTlNQT1JU X0NBUEFCSUxJVFlfTUFYSU1VTV9QQVlMT0FEX05PVF9BVg0KPiA+ID4+IEFJTEFCTEUpKSB7DQo+ ID4gPj4+ICsgICAgREVCVUcgKChERUJVR19NQU5BR0VBQklMSVRZX0lORk8sICIlYTogVHJhbnNw b3J0IGludGVyZmFjZQ0KPiA+ID4+PiArIG1heGltdW0gcGF5bG9hZCBpcyB1bmRlZmluZWQuXG4i LCBfX0ZVTkNUSU9OX18pKTsgIH0gZWxzZSB7DQo+ID4gPj4+ICsgICAgVHJhbnNwb3J0TWF4aW11 bVBheWxvYWQgLT0gMTsNCj4gPiA+Pj4gKyAgICBERUJVRyAoKERFQlVHX01BTkFHRUFCSUxJVFlf SU5GTywgIiVhOiBUcmFuc3BvcnQgaW50ZXJmYWNlDQo+ID4gZm9yDQo+ID4gPj4+ICsgSVBNSSBw cm90b2NvbCBoYXMgbWF4aW11bSBwYXlsb2FkIDB4JXguXG4iLCBfX0ZVTkNUSU9OX18sDQo+ID4g Pj4+ICsgVHJhbnNwb3J0TWF4aW11bVBheWxvYWQpKTsgIH0NCj4gPiA+Pj4gKw0KPiA+ID4+PiAg ICAgIG1UcmFuc3BvcnROYW1lID0gSGVscGVyTWFuYWdlYWJpbGl0eVNwZWNOYW1lDQo+ID4gPj4+ IChtVHJhbnNwb3J0VG9rZW4tPlRyYW5zcG9ydC0+TWFuYWdlYWJpbGl0eVRyYW5zcG9ydFNwZWNp ZmljYXRpb24pOw0KPiA+ID4+PiAtICBERUJVRyAoKERFQlVHX0lORk8sICIlYTogSVBNSSBwcm90 b2NvbCBvdmVyICVzLlxuIiwNCj4gPiBfX0ZVTkNUSU9OX18sDQo+ID4gPj4+IG1UcmFuc3BvcnRO YW1lKSk7DQo+ID4gPj4+ICsgIERFQlVHICgoREVCVUdfTUFOQUdFQUJJTElUWV9JTkZPLCAiJWE6 IElQTUkgcHJvdG9jb2wgb3Zlcg0KPiA+ID4+ICVzLlxuIiwNCj4gPiA+Pj4gKyBfX0ZVTkNUSU9O X18sIG1UcmFuc3BvcnROYW1lKSk7DQo+ID4gPj4+DQo+ID4gPj4+ICAgICAgLy8NCj4gPiA+Pj4g ICAgICAvLyBTZXR1cCBoYXJkd2FyZSBpbmZvcm1hdGlvbiBhY2NvcmRpbmcgdG8gdGhlIHRyYW5z cG9ydCBpbnRlcmZhY2UuDQo+IA0KPiANCj4gDQo+IA0K