Received: by 2002:ab2:7041:0:b0:1f4:bcc8:f211 with SMTP id x1csp6769lql; Fri, 12 Apr 2024 01:37:15 -0700 (PDT) X-Forwarded-Encrypted: i=3; AJvYcCXyFeh/wWdOiHEkJVqW63d6RdnekVrENFEreY6fmCJiK3btd2Cm4L+wO8o2as9adO5MN9e+qZiLuzlimGWQWL6FPmm5qrslbiMIrRHCEA== X-Google-Smtp-Source: AGHT+IHkxuGFMYRSYubefhOlHOWNH3yJ7pSOWkmt7X3DICLvfSAAvAbDVHc61j5jf+A9LwtJbh7s X-Received: by 2002:a05:6358:8496:b0:186:5c1:1dd1 with SMTP id e22-20020a056358849600b0018605c11dd1mr1847386rwk.19.1712911034786; Fri, 12 Apr 2024 01:37:14 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1712911034; cv=pass; d=google.com; s=arc-20160816; b=azCsZCnY3LQhcYLJpZSNhXnQBQsMyOmD+Fy5p3pSRHmNrP4YsJp0RRpTC7V2aweu3n zEPXSZhSfdXkNObbxko+MkQZp7APda2RpqL+OFGMwj6UgIwzJnRkyNigPsQanfHrR21O JT7AQiW0LwpMDso1Ucgv41ujAZQlkfeSGIjg5AyUQSglwKuB2SGBeXO+HC/57+0tMKCI alWLIFx1kfRMWyGEZQ1jwdCi0E0/wJj3GFRktbnqbvhz9TcaxYvNvOKIRAh9oa1Ip+/m wk+8cl9/6Km+dMsiTfApKwIzxna+vzSHtLJpDSkyCq9gvAta5AtnS4kyOYQ3TDj30axg fl9g== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=mime-version:list-unsubscribe:list-subscribe:list-id:precedence :content-transfer-encoding:content-language:accept-language :in-reply-to:references:message-id:date:thread-index:thread-topic :subject:cc:to:from; bh=g7eJA3HHmEHarME3Fq+bH8ykGeLnyjf/CxYhAiWXpq0=; fh=MYHMex9RtJ9rl7wWABazG5I8YbLVem7wb5c7A89ye8g=; b=XVJzTJN/2Rfbccjgx+HZIowaa4lRQ4xa9pTnWnxUOmkT8BfKjz3EMmEvIjvCbAcX2I TKFcvuqhLx2ZAEqUDxwzaPN1zJsY4T4oLIlJm5TH34bduSr8IBXge3S9NF6vHXCz9OQk BEn8Fe/ed87co0SCrAiUaDDtJfas24UBcmNxA5bJ/hFcGd9eYRXo5VB7m3vhDbv3b9xN TFbQnNCl9FZTEph9zP6TIQ7u5y2Lhpq72GQmlO2LWd1/kn3bd4gGCCkxfIU2T2wjBviq BAMsZ8nw+0gJMqhodCFhzhVu85AVSuuhfZfjR51FIo3i+enYcE3E1RIOgPAgsxiCRcH/ jLYw==; dara=google.com ARC-Authentication-Results: i=2; mx.google.com; arc=pass (i=1 spf=pass spfdomain=realtek.com); spf=pass (google.com: domain of linux-wireless+bounces-6231-linux.lists.archive=gmail.com@vger.kernel.org designates 147.75.48.161 as permitted sender) smtp.mailfrom="linux-wireless+bounces-6231-linux.lists.archive=gmail.com@vger.kernel.org" Return-Path: Received: from sy.mirrors.kernel.org (sy.mirrors.kernel.org. [147.75.48.161]) by mx.google.com with ESMTPS id g12-20020a63564c000000b005dc97ac8afcsi2751844pgm.125.2024.04.12.01.37.14 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 12 Apr 2024 01:37:14 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-wireless+bounces-6231-linux.lists.archive=gmail.com@vger.kernel.org designates 147.75.48.161 as permitted sender) client-ip=147.75.48.161; Authentication-Results: mx.google.com; arc=pass (i=1 spf=pass spfdomain=realtek.com); spf=pass (google.com: domain of linux-wireless+bounces-6231-linux.lists.archive=gmail.com@vger.kernel.org designates 147.75.48.161 as permitted sender) smtp.mailfrom="linux-wireless+bounces-6231-linux.lists.archive=gmail.com@vger.kernel.org" Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by sy.mirrors.kernel.org (Postfix) with ESMTPS id 98982B2105C for ; Fri, 12 Apr 2024 08:23:26 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id F22414F5E6; Fri, 12 Apr 2024 08:23:22 +0000 (UTC) X-Original-To: linux-wireless@vger.kernel.org Received: from rtits2.realtek.com.tw (rtits2.realtek.com [211.75.126.72]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 0D1E14F1F2 for ; Fri, 12 Apr 2024 08:23:17 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=211.75.126.72 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1712910202; cv=none; b=OR8L5T3BskwCVMF0a1Exm+tCgiGzaYVrjunt68uFMppholdSrSpgCfDeeKIlzb7P4SbHKAEyWKPxz/U6yStv7KPy6d3Bau+O5YGq5HUmja1O8oaPyWIx8b+b30wZjFLyvNdZA+VRKmYsE4q2iJ33I6dS5KtLHcjCVe173AhA2+M= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1712910202; c=relaxed/simple; bh=g7eJA3HHmEHarME3Fq+bH8ykGeLnyjf/CxYhAiWXpq0=; h=From:To:CC:Subject:Date:Message-ID:References:In-Reply-To: Content-Type:MIME-Version; b=kr5GwLEMtbO7Wchp6oGjHZv77rwlfyUPnT29KM4NoQvzizt77itS8rRG8qxaOY3rITy8flu1waYrp2+vQTgcHV4C3ZvHq6iFa0hB7o86BB7IydBoNIJl7R/q5PFnV+g6DI5o8B8pzl6OdPWXGC+8YVHz0cpusfRJAC0JiI8LjBw= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=realtek.com; spf=pass smtp.mailfrom=realtek.com; arc=none smtp.client-ip=211.75.126.72 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=realtek.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=realtek.com X-SpamFilter-By: ArmorX SpamTrap 5.78 with qID 43C8MnFY21934368, This message is accepted by code: ctloc85258 Received: from mail.realtek.com (rtexh36506.realtek.com.tw[172.21.6.27]) by rtits2.realtek.com.tw (8.15.2/2.95/5.92) with ESMTPS id 43C8MnFY21934368 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 12 Apr 2024 16:22:49 +0800 Received: from RTEXMBS01.realtek.com.tw (172.21.6.94) by RTEXH36506.realtek.com.tw (172.21.6.27) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.35; Fri, 12 Apr 2024 16:22:49 +0800 Received: from RTEXMBS04.realtek.com.tw (172.21.6.97) by RTEXMBS01.realtek.com.tw (172.21.6.94) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.35; Fri, 12 Apr 2024 16:22:48 +0800 Received: from RTEXMBS04.realtek.com.tw ([fe80::1a1:9ae3:e313:52e7]) by RTEXMBS04.realtek.com.tw ([fe80::1a1:9ae3:e313:52e7%5]) with mapi id 15.01.2507.035; Fri, 12 Apr 2024 16:22:48 +0800 From: Ping-Ke Shih To: Bitterblue Smith , "linux-wireless@vger.kernel.org" CC: Larry Finger , Stefan Lippers-Hollmann , Christian Hewitt Subject: RE: [PATCH v4 03/14] wifi: rtlwifi: Move code from rtl8192de to rtl8192d-common Thread-Topic: [PATCH v4 03/14] wifi: rtlwifi: Move code from rtl8192de to rtl8192d-common Thread-Index: AQHaireXzgCdEBXZYk+tByPyJVjvJrFkMCSQ Date: Fri, 12 Apr 2024 08:22:48 +0000 Message-ID: References: <91d932b3-5c72-4416-920e-f2bf4fc9b039@gmail.com> <6e18882f-3da3-4c17-8bce-4ebffe022713@gmail.com> In-Reply-To: <6e18882f-3da3-4c17-8bce-4ebffe022713@gmail.com> Accept-Language: en-US, zh-TW Content-Language: zh-TW x-kse-serverinfo: RTEXMBS01.realtek.com.tw, 9 x-kse-antispam-interceptor-info: fallback x-kse-antivirus-interceptor-info: fallback Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Precedence: bulk X-Mailing-List: linux-wireless@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-KSE-AntiSpam-Interceptor-Info: fallback Qml0dGVyYmx1ZSBTbWl0aCA8cnRsODgyMWNlcmZlMkBnbWFpbC5jb20+IHdyb3RlOg0KDQo+IA0K PiBDcmVhdGUgdGhlIG5ldyBtb2R1bGUgcnRsODE5MmQtY29tbW9uIGFuZCBtb3ZlIHNvbWUgY29k ZSBpbnRvIGl0IGZyb20NCj4gcnRsODE5MmRlLiBOb3cgdGhlIHJ0bDgxOTJkZSBkcml2ZXIgKFBD SSkgYW5kIHRoZSBuZXcgcnRsODE5MmR1IGRyaXZlcg0KPiAoVVNCKSBjYW4gc2hhcmUgc29tZSBv ZiB0aGUgY29kZS4NCj4gDQo+IFRoaXMgaXMgbW9zdGx5IHRoZSBjb2RlIHRoYXQgcmVxdWlyZWQg bGl0dGxlIGVmZm9ydCB0byBtYWtlIGl0DQo+IHNoYXJlYWJsZS4gVGhlcmUgYXJlIGEgZmV3IG1v cmUgZnVuY3Rpb25zIHdoaWNoIHRoZXkgY291bGQgc2hhcmUsIHdpdGgNCj4gbW9yZSBjaGFuZ2Vz Lg0KPiANCj4gQWRkIHBoeV9pcV9jYWxpYnJhdGUgbWVtYmVyIHRvIHN0cnVjdCBydGxfaGFsX29w cyB0byBhbGxvdyBtb3ZpbmcgdGhlDQo+IFRYIHBvd2VyIHRyYWNraW5nIGNvZGUgZnJvbSBkbS5j Lg0KPiANCj4gVGhlIG90aGVyIGNoYW5nZXMgaW4gdGhpcyBwYXRjaCBhcmUgYWRqdXN0aW5nIHdo aXRlc3BhY2UsIHJlbmFtaW5nIHNvbWUNCj4gZnVuY3Rpb25zLCBtYWtpbmcgc29tZSBhcnJheXMg Y29uc3QsIGFuZCBtYWtpbmcgY2hlY2twYXRjaC5wbCBsZXNzDQo+IHVuaGFwcHkuDQo+IA0KPiBy dGw4MTkyZGUgaXMgY29tcGlsZS10ZXN0ZWQgb25seS4gcnRsODE5MmQtY29tbW9uIGlzIHRlc3Rl ZCB3aXRoIHRoZQ0KPiBuZXcgcnRsODE5MmR1IGRyaXZlci4NCj4gDQo+IFNpZ25lZC1vZmYtYnk6 IEJpdHRlcmJsdWUgU21pdGggPHJ0bDg4MjFjZXJmZTJAZ21haWwuY29tPg0KDQpbLi4uXQ0KDQo+ IGRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0bHdpZmkvS2NvbmZp Zw0KPiBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsd2lmaS9LY29uZmlnDQo+IGlu ZGV4IDlmNmE0ZTM1NTQzYy4uMjMxOWVhYTg4NDVhIDEwMDY0NA0KPiAtLS0gYS9kcml2ZXJzL25l dC93aXJlbGVzcy9yZWFsdGVrL3J0bHdpZmkvS2NvbmZpZw0KPiArKysgYi9kcml2ZXJzL25ldC93 aXJlbGVzcy9yZWFsdGVrL3J0bHdpZmkvS2NvbmZpZw0KPiBAQCAtMzcsNiArMzcsNyBAQCBjb25m aWcgUlRMODE5MlNFDQo+ICBjb25maWcgUlRMODE5MkRFDQo+ICAgICAgICAgdHJpc3RhdGUgIlJl YWx0ZWsgUlRMODE5MkRFL1JUTDgxODhERSBQQ0llIFdpcmVsZXNzIE5ldHdvcmsgQWRhcHRlciIN Cj4gICAgICAgICBkZXBlbmRzIG9uIFBDSQ0KPiArICAgICAgIHNlbGVjdCBSVEw4MTkyRF9DT01N T04NCj4gICAgICAgICBzZWxlY3QgUlRMV0lGSQ0KPiAgICAgICAgIHNlbGVjdCBSVExXSUZJX1BD SQ0KPiAgICAgICAgIGhlbHANCj4gQEAgLTE0Miw2ICsxNDMsMTEgQEAgY29uZmlnIFJUTDgxOTJD X0NPTU1PTg0KPiAgICAgICAgIGRlcGVuZHMgb24gUlRMODE5MkNFIHx8IFJUTDgxOTJDVQ0KPiAg ICAgICAgIGRlZmF1bHQgeQ0KPiANCj4gK2NvbmZpZyBSVEw4MTkyRF9DT01NT04NCj4gKyAgICAg ICB0cmlzdGF0ZQ0KPiArICAgICAgIGRlcGVuZHMgb24gUlRMODE5MkRFDQo+ICsgICAgICAgZGVm YXVsdCB5DQo+ICsNCg0KRXhpc3RpbmcgUlRMODcyM19DT01NT04gYWxzbyB1c2VzIGJvdGggJ2Rl cGVuZHMgb24nIGFuZCAnc2VsZWN0Jywgd2hpY2ggYXJlDQptdXR1YWwgcmVmZXJlbmNlLCBzbyBJ IHRoaW5rIGNob29zaW5nIG9ubHkgb25lIG9mIHRoZW0gd291bGQgYmUgYmV0dGVyLg0KDQo+ICBj b25maWcgUlRMODcyM19DT01NT04NCj4gICAgICAgICB0cmlzdGF0ZQ0KPiAgICAgICAgIGRlcGVu ZHMgb24gUlRMODcyM0FFIHx8IFJUTDg3MjNCRQ0KDQpbLi4uXQ0KDQo+ICsrKyBiL2RyaXZlcnMv bmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsd2lmaS9ydGw4MTkyZC9kbV9jb21tb24uYw0KPiBAQCAt MCwwICsxLDEwNzkgQEANCj4gKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wDQo+ ICsvKiBDb3B5cmlnaHQoYykgMjAwOS0yMDEyICBSZWFsdGVrIENvcnBvcmF0aW9uLiovDQo+ICsN Cj4gKyNpbmNsdWRlICIuLi93aWZpLmgiDQo+ICsjaW5jbHVkZSAiLi4vYmFzZS5oIg0KPiArI2lu Y2x1ZGUgIi4uL2NvcmUuaCINCj4gKyNpbmNsdWRlICJyZWcuaCINCj4gKyNpbmNsdWRlICJkZWYu aCINCj4gKyNpbmNsdWRlICJwaHlfY29tbW9uLmgiDQo+ICsjaW5jbHVkZSAiZG1fY29tbW9uLmgi DQo+ICsNCj4gKyNkZWZpbmUgVU5ERUNfU01fUFdEQiAgZW50cnlfbWluX3VuZGVjX3NtX3B3ZGIN Cg0KVGhpcyBkZWZpbml0aW9uIGNhbiBoZWxwIG5vdGhpbmcsIGp1c3QgdXNlIGVudHJ5X21pbl91 bmRlY19zbV9wd2RiLiANCg0KWy4uLl0NCg0KPiArc3RhdGljIHZvaWQgcnRsOTJkX2RtX3J4Z2Fp bl90cmFja2luZ190aGVybWFsbWV0ZXIoc3RydWN0IGllZWU4MDIxMV9odyAqaHcpDQo+ICt7DQo+ ICsgICAgICAgc3RhdGljIGNvbnN0IHU4IGluZGV4X21hcHBpbmdbUlhfSU5ERVhfTUFQUElOR19O VU1dID0gew0KPiArICAgICAgICAgICAgICAgMHgwZiwgMHgwZiwgMHgwZCwgMHgwYywgMHgwYiwN Cj4gKyAgICAgICAgICAgICAgIDB4MGEsIDB4MDksIDB4MDgsIDB4MDcsIDB4MDYsDQo+ICsgICAg ICAgICAgICAgICAweDA1LCAweDA0LCAweDA0LCAweDAzLCAweDAyDQo+ICsgICAgICAgfTsNCj4g KyAgICAgICBzdHJ1Y3QgcnRsX3ByaXYgKnJ0bHByaXYgPSBydGxfcHJpdihodyk7DQo+ICsgICAg ICAgdTMyIHU0dG1wOw0KPiArICAgICAgIGludCBpOw0KPiArDQo+ICsgICAgICAgdTR0bXAgPSAo aW5kZXhfbWFwcGluZ1socnRscHJpdi0+ZWZ1c2UuZWVwcm9tX3RoZXJtYWxtZXRlciAtDQo+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnRscHJpdi0+ZG0udGhlcm1hbHZhbHVlX3J4 Z2FpbildKSA8PCAxMjsNCg0KTmVjZXNzYXJ5IHBhcmVudGhlc2lzIGFyb3VuZCBpbmRleF9tYXBw aW5nW10sIGFuZCBhZGRpbmcgYSBsb2NhbCAnaWR4JyB2YXJpYWJsZQ0Kd291bGQgYmUgY2xlYXIs IGxpa2UNCg0KaWR4ID0gcnRscHJpdi0+ZWZ1c2UuZWVwcm9tX3RoZXJtYWxtZXRlciAtIHJ0bHBy aXYtPmRtLnRoZXJtYWx2YWx1ZV9yeGdhaW47DQp1NHRtcCA9IGluZGV4X21hcHBpbmdbaWR4XSA8 PCAxMjsNCg0KSSBrbm93IHRoaXMga2luZCBvZiBjb2RlcyBpcyBleGlzdGluZyBmb3IgbG9uZyB0 aW1lLiBOZWVkIHlvdXIgaGVscCB0byByZWZpbmUNCnRoZW0uIFRoYW5rcyBpbiBhZHZhbmNlLiAN Cg0KDQo+ICtzdGF0aWMgdm9pZCBydGw5MmRfYmFuZHR5cGVfNUcoc3RydWN0IHJ0bF9oYWwgKnJ0 bGhhbCwgdTggKm9mZG1faW5kZXgsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBi b29sICppbnRlcm5hbF9wYSwgdTggdGhlcm1hbHZhbHVlLCB1OCBkZWx0YSwNCj4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHU4IHJmLCBzdHJ1Y3QgcnRsX2VmdXNlICpydGxlZnVzZSwN Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBydGxfcHJpdiAqcnRscHJp diwgc3RydWN0IHJ0bF9waHkgKnJ0bHBoeSwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGNvbnN0IHU4IGluZGV4X21hcHBpbmdbNV1bSU5ERVhfTUFQUElOR19OVU1dLA0KPiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdTggaW5kZXhfbWFwcGluZ19wYVs4XVtJ TkRFWF9NQVBQSU5HX05VTV0pDQo+ICt7DQo+ICsgICAgICAgdTggb2Zmc2V0ID0gMDsNCj4gKyAg ICAgICB1OCBpbmRleDsNCj4gKyAgICAgICBpbnQgaTsNCj4gKw0KPiArICAgICAgIGZvciAoaSA9 IDA7IGkgPCByZjsgaSsrKSB7DQo+ICsgICAgICAgICAgICAgICBpZiAocnRsaGFsLT5tYWNwaHlt b2RlID09IERVQUxNQUNfRFVBTFBIWSAmJg0KPiArICAgICAgICAgICAgICAgICAgIHJ0bGhhbC0+ aW50ZXJmYWNlaW5kZXggPT0gMSkgLyogTUFDIDEgNUcgKi8NCj4gKyAgICAgICAgICAgICAgICAg ICAgICAgKmludGVybmFsX3BhID0gcnRsZWZ1c2UtPmludGVybmFsX3BhXzVnWzFdOw0KPiArICAg ICAgICAgICAgICAgZWxzZQ0KPiArICAgICAgICAgICAgICAgICAgICAgICAqaW50ZXJuYWxfcGEg PSBydGxlZnVzZS0+aW50ZXJuYWxfcGFfNWdbaV07DQoNCkluc2VydCBibGFuayBsaW5lcyBiZXR3 ZWVuIHRoZXNlIGlmLWJsb2Nrcy4gDQoNCj4gKyAgICAgICAgICAgICAgIGlmICgqaW50ZXJuYWxf cGEpIHsNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJ0bGhhbC0+aW50ZXJmYWNlaW5k ZXggPT0gMSB8fCBpID09IHJmKQ0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9m ZnNldCA9IDQ7DQo+ICsgICAgICAgICAgICAgICAgICAgICAgIGVsc2UNCj4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBvZmZzZXQgPSAwOw0KPiArICAgICAgICAgICAgICAgICAgICAg ICBpZiAocnRscGh5LT5jdXJyZW50X2NoYW5uZWwgPj0gMTAwICYmDQo+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICBydGxwaHktPmN1cnJlbnRfY2hhbm5lbCA8PSAxNjUpDQo+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0ICs9IDI7DQo+ICsgICAgICAgICAgICAgICB9 IGVsc2Ugew0KPiArICAgICAgICAgICAgICAgICAgICAgICBpZiAocnRsaGFsLT5pbnRlcmZhY2Vp bmRleCA9PSAxIHx8IGkgPT0gcmYpDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg b2Zmc2V0ID0gMjsNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgZWxzZQ0KPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIG9mZnNldCA9IDA7DQo+ICsgICAgICAgICAgICAgICB9DQo+ ICsgICAgICAgICAgICAgICBpZiAodGhlcm1hbHZhbHVlID4gcnRsZWZ1c2UtPmVlcHJvbV90aGVy bWFsbWV0ZXIpDQo+ICsgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldCsrOw0KPiArICAgICAg ICAgICAgICAgaWYgKCppbnRlcm5hbF9wYSkgew0KPiArICAgICAgICAgICAgICAgICAgICAgICBp ZiAoZGVsdGEgPiBJTkRFWF9NQVBQSU5HX05VTSAtIDEpDQo+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgaW5kZXggPSBpbmRleF9tYXBwaW5nX3BhW29mZnNldF0NCj4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtJTkRFWF9NQVBQSU5H X05VTSAtIDFdOw0KPiArICAgICAgICAgICAgICAgICAgICAgICBlbHNlDQo+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgaW5kZXggPQ0KPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgaW5kZXhfbWFwcGluZ19wYVtvZmZzZXRdW2RlbHRhXTsNCj4gKyAgICAgICAg ICAgICAgIH0gZWxzZSB7DQo+ICsgICAgICAgICAgICAgICAgICAgICAgIGlmIChkZWx0YSA+IElO REVYX01BUFBJTkdfTlVNIC0gMSkNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp bmRleCA9DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXhfbWFwcGlu Z1tvZmZzZXRdW0lOREVYX01BUFBJTkdfTlVNIC0gMV07DQo+ICsgICAgICAgICAgICAgICAgICAg ICAgIGVsc2UNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleCA9IGluZGV4 X21hcHBpbmdbb2Zmc2V0XVtkZWx0YV07DQo+ICsgICAgICAgICAgICAgICB9DQo+ICsgICAgICAg ICAgICAgICBpZiAodGhlcm1hbHZhbHVlID4gcnRsZWZ1c2UtPmVlcHJvbV90aGVybWFsbWV0ZXIp IHsNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgaWYgKCppbnRlcm5hbF9wYSAmJiB0aGVybWFs dmFsdWUgPiAweDEyKSB7DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2ZkbV9p bmRleFtpXSA9IHJ0bHByaXYtPmRtLm9mZG1faW5kZXhbaV0gLQ0KPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGRlbHRhIC8gMikgKiAzICsgKGRlbHRh ICUgMikpOw0KPiArICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugew0KPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIG9mZG1faW5kZXhbaV0gLT0gaW5kZXg7DQo+ICsgICAgICAg ICAgICAgICAgICAgICAgIH0NCj4gKyAgICAgICAgICAgICAgIH0gZWxzZSB7DQo+ICsgICAgICAg ICAgICAgICAgICAgICAgIG9mZG1faW5kZXhbaV0gKz0gaW5kZXg7DQo+ICsgICAgICAgICAgICAg ICB9DQo+ICsgICAgICAgfQ0KPiArfQ0KPiArDQo+ICtzdGF0aWMgdm9pZA0KPiArcnRsOTJkX2Rt X3R4cG93ZXJfdHJhY2tpbmdfY2FsbGJhY2tfdGhlcm1hbG1ldGVyKHN0cnVjdCBpZWVlODAyMTFf aHcgKmh3KQ0KPiArew0KPiArICAgICAgIHN0YXRpYyBjb25zdCB1OCBpbmRleF9tYXBwaW5nWzVd W0lOREVYX01BUFBJTkdfTlVNXSA9IHsNCj4gKyAgICAgICAgICAgICAgIC8qIDVHLCBwYXRoIEEv TUFDIDAsIGRlY3JlYXNlIHBvd2VyICAqLw0KPiArICAgICAgICAgICAgICAgezAsIDEsIDMsIDYs IDgsIDksICAgICAgMTEsIDEzLCAxNCwgMTYsIDE3LCAxOCwgMTh9LA0KDQpOb3Qgc3VyZSB3aHkg bW9yZSB0aGFuIG9uZSBzcGFjZXMgYmV0d2VlbiAiOSIgYW5kICIxMSIuIEp1c3Qgc2luZ2xlIG9u ZT8NCg0KPiArICAgICAgICAgICAgICAgLyogNUcsIHBhdGggQS9NQUMgMCwgaW5jcmVhc2UgcG93 ZXIgICovDQo+ICsgICAgICAgICAgICAgICB7MCwgMiwgNCwgNSwgNywgMTAsICAgICAxMiwgMTQs IDE2LCAxOCwgMTgsIDE4LCAxOH0sDQo+ICsgICAgICAgICAgICAgICAvKiA1RywgcGF0aCBCL01B QyAxLCBkZWNyZWFzZSBwb3dlciAqLw0KPiArICAgICAgICAgICAgICAgezAsIDIsIDMsIDYsIDgs IDksICAgICAgMTEsIDEzLCAxNCwgMTYsIDE3LCAxOCwgMTh9LA0KPiArICAgICAgICAgICAgICAg LyogNUcsIHBhdGggQi9NQUMgMSwgaW5jcmVhc2UgcG93ZXIgKi8NCj4gKyAgICAgICAgICAgICAg IHswLCAyLCA0LCA1LCA3LCAxMCwgICAgIDEzLCAxNiwgMTYsIDE4LCAxOCwgMTgsIDE4fSwNCj4g KyAgICAgICAgICAgICAgIC8qIDIuNEcsIGZvciBkZWNyZWFzIHBvd2VyICovDQo+ICsgICAgICAg ICAgICAgICB7MCwgMSwgMiwgMywgNCwgNSwgICAgICA2LCA3LCA3LCA4LCA5LCAxMCwgMTB9LA0K PiArICAgICAgIH07DQo+ICsgICAgICAgc3RhdGljIGNvbnN0IHU4IGluZGV4X21hcHBpbmdfaW50 ZXJuYWxfcGFbOF1bSU5ERVhfTUFQUElOR19OVU1dID0gew0KPiArICAgICAgICAgICAgICAgLyog NUcsIHBhdGggQS9NQUMgMCwgY2gzNi02NCwgZGVjcmVhc2UgcG93ZXIgICovDQo+ICsgICAgICAg ICAgICAgICB7MCwgMSwgMiwgNCwgNiwgNywgICAgICA5LCAxMSwgMTIsIDE0LCAxNSwgMTYsIDE2 fSwNCj4gKyAgICAgICAgICAgICAgIC8qIDVHLCBwYXRoIEEvTUFDIDAsIGNoMzYtNjQsIGluY3Jl YXNlIHBvd2VyICAqLw0KPiArICAgICAgICAgICAgICAgezAsIDIsIDQsIDUsIDcsIDEwLCAgICAg MTIsIDE0LCAxNiwgMTgsIDE4LCAxOCwgMTh9LA0KPiArICAgICAgICAgICAgICAgLyogNUcsIHBh dGggQS9NQUMgMCwgY2gxMDAtMTY1LCBkZWNyZWFzZSBwb3dlciAgKi8NCj4gKyAgICAgICAgICAg ICAgIHswLCAxLCAyLCAzLCA1LCA2LCAgICAgIDgsIDEwLCAxMSwgMTMsIDE0LCAxNSwgMTV9LA0K PiArICAgICAgICAgICAgICAgLyogNUcsIHBhdGggQS9NQUMgMCwgY2gxMDAtMTY1LCBpbmNyZWFz ZSBwb3dlciAgKi8NCj4gKyAgICAgICAgICAgICAgIHswLCAyLCA0LCA1LCA3LCAxMCwgICAgIDEy LCAxNCwgMTYsIDE4LCAxOCwgMTgsIDE4fSwNCj4gKyAgICAgICAgICAgICAgIC8qIDVHLCBwYXRo IEIvTUFDIDEsIGNoMzYtNjQsIGRlY3JlYXNlIHBvd2VyICovDQo+ICsgICAgICAgICAgICAgICB7 MCwgMSwgMiwgNCwgNiwgNywgICAgICA5LCAxMSwgMTIsIDE0LCAxNSwgMTYsIDE2fSwNCj4gKyAg ICAgICAgICAgICAgIC8qIDVHLCBwYXRoIEIvTUFDIDEsIGNoMzYtNjQsIGluY3JlYXNlIHBvd2Vy ICovDQo+ICsgICAgICAgICAgICAgICB7MCwgMiwgNCwgNSwgNywgMTAsICAgICAxMywgMTYsIDE2 LCAxOCwgMTgsIDE4LCAxOH0sDQo+ICsgICAgICAgICAgICAgICAvKiA1RywgcGF0aCBCL01BQyAx LCBjaDEwMC0xNjUsIGRlY3JlYXNlIHBvd2VyICovDQo+ICsgICAgICAgICAgICAgICB7MCwgMSwg MiwgMywgNSwgNiwgICAgICA4LCA5LCAxMCwgMTIsIDEzLCAxNCwgMTR9LA0KPiArICAgICAgICAg ICAgICAgLyogNUcsIHBhdGggQi9NQUMgMSwgY2gxMDAtMTY1LCBpbmNyZWFzZSBwb3dlciAqLw0K PiArICAgICAgICAgICAgICAgezAsIDIsIDQsIDUsIDcsIDEwLCAgICAgMTMsIDE2LCAxNiwgMTgs IDE4LCAxOCwgMTh9LA0KPiArICAgICAgIH07DQo+ICsgICAgICAgc3RydWN0IHJ0bF9wcml2ICpy dGxwcml2ID0gcnRsX3ByaXYoaHcpOw0KPiArICAgICAgIHN0cnVjdCBydGxfZWZ1c2UgKnJ0bGVm dXNlID0gcnRsX2VmdXNlKHJ0bHByaXYpOw0KPiArICAgICAgIHN0cnVjdCBydGxfaGFsICpydGxo YWwgPSBydGxfaGFsKHJ0bHByaXYpOw0KPiArICAgICAgIHN0cnVjdCBydGxfcGh5ICpydGxwaHkg PSAmcnRscHJpdi0+cGh5Ow0KPiArICAgICAgIHU4IHRoZXJtYWx2YWx1ZSwgZGVsdGEsIGRlbHRh X2xjaywgZGVsdGFfaXFrLCBkZWx0YV9yeGdhaW47DQo+ICsgICAgICAgdTggb2Zmc2V0LCB0aGVy bWFsdmFsdWVfYXZnX2NvdW50ID0gMDsNCj4gKyAgICAgICB1MzIgdGhlcm1hbHZhbHVlX2F2ZyA9 IDA7DQo+ICsgICAgICAgYm9vbCBpbnRlcm5hbF9wYSA9IGZhbHNlOw0KPiArICAgICAgIGxvbmcg ZWxlX2EgPSAwLCBlbGVfZCwgdGVtcF9jY2ssIHZhbF94LCB2YWx1ZTMyOw0KPiArICAgICAgIGxv bmcgdmFsX3ksIGVsZV9jID0gMDsNCj4gKyAgICAgICB1OCBvZmRtX2luZGV4WzJdOw0KPiArICAg ICAgIHM4IGNja19pbmRleCA9IDA7DQo+ICsgICAgICAgdTggb2ZkbV9pbmRleF9vbGRbMl0gPSB7 MCwgMH07DQo+ICsgICAgICAgczggY2NrX2luZGV4X29sZCA9IDA7DQo+ICsgICAgICAgdTggaW5k ZXg7DQo+ICsgICAgICAgaW50IGk7DQo+ICsgICAgICAgYm9vbCBpczJ0ID0gSVNfOTJEX1NJTkdM RVBIWShydGxoYWwtPnZlcnNpb24pOw0KPiArICAgICAgIHU4IG9mZG1fbWluX2luZGV4ID0gNiwg b2ZkbV9taW5faW5kZXhfaW50ZXJuYWxfcGEgPSAzLCByZjsNCg0KSW4gcmV2ZXJzZSBYJ21hcyB0 cmVlLiANCg0KPiArICAgICAgIHU4IGluZGV4Zm9yY2hhbm5lbCA9DQo+ICsgICAgICAgICAgIHJ0 bDkyZF9nZXRfcmlnaHRjaG5scGxhY2VfZm9yX2lxayhydGxwaHktPmN1cnJlbnRfY2hhbm5lbCk7 DQoNCk1heWJlLCBtb3ZlIGluaXRpYWxpemVyIG91dCBvZiBsb25nIHN0YXRlbWVudC4NCg0KPiAr DQo+ICsgICAgICAgcnRscHJpdi0+ZG0udHhwb3dlcl90cmFja2luZ2luaXQgPSB0cnVlOw0KPiAr ICAgICAgIHJ0bF9kYmcocnRscHJpdiwgQ09NUF9QT1dFUl9UUkFDS0lORywgREJHX0xPVUQsICJc biIpOw0KPiArICAgICAgIHRoZXJtYWx2YWx1ZSA9ICh1OClydGxfZ2V0X3JmcmVnKGh3LCBSRjkw X1BBVEhfQSwgUkZfVF9NRVRFUiwgMHhmODAwKTsNCj4gKyAgICAgICBydGxfZGJnKHJ0bHByaXYs IENPTVBfUE9XRVJfVFJBQ0tJTkcsIERCR19MT1VELA0KPiArICAgICAgICAgICAgICAgIlJlYWRi YWNrIFRoZXJtYWwgTWV0ZXIgPSAweCV4IHByZSB0aGVybWFsIG1ldGVyIDB4JXggZWVwcm9tX3Ro ZXJtYWxtZXRlciAweCV4XG4iLA0KPiArICAgICAgICAgICAgICAgdGhlcm1hbHZhbHVlLA0KPiAr ICAgICAgICAgICAgICAgcnRscHJpdi0+ZG0udGhlcm1hbHZhbHVlLCBydGxlZnVzZS0+ZWVwcm9t X3RoZXJtYWxtZXRlcik7DQo+ICsNCj4gKyAgICAgICBpZiAoIXRoZXJtYWx2YWx1ZSkNCj4gKyAg ICAgICAgICAgICAgIGdvdG8gZXhpdDsNCj4gKw0KPiArICAgICAgIGlmIChpczJ0KQ0KPiArICAg ICAgICAgICAgICAgcmYgPSAyOw0KPiArICAgICAgIGVsc2UNCj4gKyAgICAgICAgICAgICAgIHJm ID0gMTsNCj4gKw0KPiArICAgICAgIGlmIChydGxwcml2LT5kbS50aGVybWFsdmFsdWUgJiYgIXJ0 bGhhbC0+cmVsb2FkdHhwb3dlcmluZGV4KQ0KPiArICAgICAgICAgICAgICAgZ290byBvbGRfaW5k ZXhfZG9uZTsNCj4gKw0KPiArICAgICAgIGVsZV9kID0gcnRsX2dldF9iYnJlZyhodywgUk9GRE0w X1hBVFhJUUlNQkFMQU5DRSwgIE1BU0tEV09SRCkgJiBNQVNLT0ZETV9EOw0KPiArICAgICAgIGZv ciAoaSA9IDA7IGkgPCBPRkRNX1RBQkxFX1NJWkVfOTJEOyBpKyspIHsNCj4gKyAgICAgICAgICAg ICAgIGlmIChlbGVfZCA9PSAob2ZkbXN3aW5nX3RhYmxlW2ldICYgTUFTS09GRE1fRCkpIHsNCj4g KyAgICAgICAgICAgICAgICAgICAgICAgb2ZkbV9pbmRleF9vbGRbMF0gPSAodTgpaTsNCj4gKw0K PiArICAgICAgICAgICAgICAgICAgICAgICBydGxfZGJnKHJ0bHByaXYsIENPTVBfUE9XRVJfVFJB Q0tJTkcsIERCR19MT1VELA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJJbml0 aWFsIHBhdGhBIGVsZV9kIHJlZzB4JXggPSAweCVseCwgb2ZkbV9pbmRleD0weCV4XG4iLA0KPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJPRkRNMF9YQVRYSVFJTUJBTEFOQ0UsDQo+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxlX2QsIG9mZG1faW5kZXhfb2xkWzBd KTsNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQo+ICsgICAgICAgICAgICAgICB9 DQo+ICsgICAgICAgfQ0KPiArICAgICAgIGlmIChpczJ0KSB7DQo+ICsgICAgICAgICAgICAgICBl bGVfZCA9IHJ0bF9nZXRfYmJyZWcoaHcsIFJPRkRNMF9YQlRYSVFJTUJBTEFOQ0UsDQo+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTUFTS0RXT1JEKSAmIE1BU0tPRkRNX0Q7 DQo+ICsgICAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgT0ZETV9UQUJMRV9TSVpFXzkyRDsg aSsrKSB7DQo+ICsgICAgICAgICAgICAgICAgICAgICAgIGlmIChlbGVfZCA9PQ0KPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgKG9mZG1zd2luZ190YWJsZVtpXSAmIE1BU0tPRkRNX0QpKSB7 DQoNClN0cmFpZ2h0ZW4gaW50byBzaW5nbGUgbGluZToNCg0KICAgICAgICAgICAgICAgICAgICAg ICBpZiAoZWxlX2QgPT0gKG9mZG1zd2luZ190YWJsZVtpXSAmIE1BU0tPRkRNX0QpKSB7DQoNCj4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmRtX2luZGV4X29sZFsxXSA9ICh1OClp Ow0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ0bF9kYmcocnRscHJpdiwgQ09N UF9QT1dFUl9UUkFDS0lORywNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIERCR19MT1VELA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IkluaXRpYWwgcGF0aEIgZWxlX2QgcmVnIDB4JXggPSAweCVseCwgb2ZkbV9pbmRleCA9IDB4JXhc biIsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBST0ZETTBfWEJU WElRSU1CQUxBTkNFLCBlbGVfZCwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIG9mZG1faW5kZXhfb2xkWzFdKTsNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBicmVhazsNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgfQ0KPiArICAgICAgICAgICAg ICAgfQ0KPiArICAgICAgIH0NCj4gKyAgICAgICBpZiAocnRsaGFsLT5jdXJyZW50X2JhbmR0eXBl ID09IEJBTkRfT05fMl80Rykgew0KPiArICAgICAgICAgICAgICAgcnRsOTJkX2JhbmR0eXBlXzJf NEcoaHcsICZ0ZW1wX2NjaywgJmNja19pbmRleF9vbGQpOw0KPiArICAgICAgIH0gZWxzZSB7DQo+ ICsgICAgICAgICAgICAgICB0ZW1wX2NjayA9IDB4MDkwZTEzMTc7DQo+ICsgICAgICAgICAgICAg ICBjY2tfaW5kZXhfb2xkID0gMTI7DQo+ICsgICAgICAgfQ0KPiArDQo+ICsgICAgICAgaWYgKCFy dGxwcml2LT5kbS50aGVybWFsdmFsdWUpIHsNCj4gKyAgICAgICAgICAgICAgIHJ0bHByaXYtPmRt LnRoZXJtYWx2YWx1ZSA9IHJ0bGVmdXNlLT5lZXByb21fdGhlcm1hbG1ldGVyOw0KPiArICAgICAg ICAgICAgICAgcnRscHJpdi0+ZG0udGhlcm1hbHZhbHVlX2xjayA9IHRoZXJtYWx2YWx1ZTsNCj4g KyAgICAgICAgICAgICAgIHJ0bHByaXYtPmRtLnRoZXJtYWx2YWx1ZV9pcWsgPSB0aGVybWFsdmFs dWU7DQo+ICsgICAgICAgICAgICAgICBydGxwcml2LT5kbS50aGVybWFsdmFsdWVfcnhnYWluID0g cnRsZWZ1c2UtPmVlcHJvbV90aGVybWFsbWV0ZXI7DQo+ICsgICAgICAgICAgICAgICBmb3IgKGkg PSAwOyBpIDwgcmY7IGkrKykNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgcnRscHJpdi0+ZG0u b2ZkbV9pbmRleFtpXSA9IG9mZG1faW5kZXhfb2xkW2ldOw0KPiArICAgICAgICAgICAgICAgcnRs cHJpdi0+ZG0uY2NrX2luZGV4ID0gY2NrX2luZGV4X29sZDsNCj4gKyAgICAgICB9DQo+ICsgICAg ICAgaWYgKHJ0bGhhbC0+cmVsb2FkdHhwb3dlcmluZGV4KSB7DQo+ICsgICAgICAgICAgICAgICBm b3IgKGkgPSAwOyBpIDwgcmY7IGkrKykNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgcnRscHJp di0+ZG0ub2ZkbV9pbmRleFtpXSA9IG9mZG1faW5kZXhfb2xkW2ldOw0KPiArICAgICAgICAgICAg ICAgcnRscHJpdi0+ZG0uY2NrX2luZGV4ID0gY2NrX2luZGV4X29sZDsNCj4gKyAgICAgICAgICAg ICAgIHJ0bF9kYmcocnRscHJpdiwgQ09NUF9QT1dFUl9UUkFDS0lORywgREJHX0xPVUQsDQo+ICsg ICAgICAgICAgICAgICAgICAgICAgICJyZWxvYWQgb2ZkbSBpbmRleCBmb3IgYmFuZCBzd2l0Y2hc biIpOw0KPiArICAgICAgIH0NCj4gK29sZF9pbmRleF9kb25lOg0KPiArICAgICAgIGZvciAoaSA9 IDA7IGkgPCByZjsgaSsrKQ0KPiArICAgICAgICAgICAgICAgb2ZkbV9pbmRleFtpXSA9IHJ0bHBy aXYtPmRtLm9mZG1faW5kZXhbaV07DQo+ICsNCj4gKyAgICAgICBydGxwcml2LT5kbS50aGVybWFs dmFsdWVfYXZnDQo+ICsgICAgICAgICAgICAgICAgICAgW3J0bHByaXYtPmRtLnRoZXJtYWx2YWx1 ZV9hdmdfaW5kZXhdID0gdGhlcm1hbHZhbHVlOw0KPiArICAgICAgIHJ0bHByaXYtPmRtLnRoZXJt YWx2YWx1ZV9hdmdfaW5kZXgrKzsNCg0KQ291bGQgeW91IHBsZWFzZSBhZGQgcHJvcGVyIGJsYW5r IGxpbmVzIGZvciB0aGlzIGZ1bmN0aW9uPyBFc3BlY2lhbGx5LCByaWdodA0KYWZ0ZXIgaWYtYmxv Y2sgYW5kIGZvci1ibG9jay4NCg0KPiArICAgICAgIGlmIChydGxwcml2LT5kbS50aGVybWFsdmFs dWVfYXZnX2luZGV4ID09IEFWR19USEVSTUFMX05VTSkNCj4gKyAgICAgICAgICAgICAgIHJ0bHBy aXYtPmRtLnRoZXJtYWx2YWx1ZV9hdmdfaW5kZXggPSAwOw0KPiArICAgICAgIGZvciAoaSA9IDA7 IGkgPCBBVkdfVEhFUk1BTF9OVU07IGkrKykgew0KPiArICAgICAgICAgICAgICAgaWYgKHJ0bHBy aXYtPmRtLnRoZXJtYWx2YWx1ZV9hdmdbaV0pIHsNCj4gKyAgICAgICAgICAgICAgICAgICAgICAg dGhlcm1hbHZhbHVlX2F2ZyArPSBydGxwcml2LT5kbS50aGVybWFsdmFsdWVfYXZnW2ldOw0KPiAr ICAgICAgICAgICAgICAgICAgICAgICB0aGVybWFsdmFsdWVfYXZnX2NvdW50Kys7DQo+ICsgICAg ICAgICAgICAgICB9DQo+ICsgICAgICAgfQ0KPiArICAgICAgIGlmICh0aGVybWFsdmFsdWVfYXZn X2NvdW50KQ0KPiArICAgICAgICAgICAgICAgdGhlcm1hbHZhbHVlID0gKHU4KSh0aGVybWFsdmFs dWVfYXZnIC8gdGhlcm1hbHZhbHVlX2F2Z19jb3VudCk7DQo+ICsgICAgICAgaWYgKHJ0bGhhbC0+ cmVsb2FkdHhwb3dlcmluZGV4KSB7DQo+ICsgICAgICAgICAgICAgICBkZWx0YSA9ICh0aGVybWFs dmFsdWUgPiBydGxlZnVzZS0+ZWVwcm9tX3RoZXJtYWxtZXRlcikgPw0KPiArICAgICAgICAgICAg ICAgICAgICh0aGVybWFsdmFsdWUgLSBydGxlZnVzZS0+ZWVwcm9tX3RoZXJtYWxtZXRlcikgOg0K PiArICAgICAgICAgICAgICAgICAgIChydGxlZnVzZS0+ZWVwcm9tX3RoZXJtYWxtZXRlciAtIHRo ZXJtYWx2YWx1ZSk7DQo+ICsgICAgICAgICAgICAgICBydGxoYWwtPnJlbG9hZHR4cG93ZXJpbmRl eCA9IGZhbHNlOw0KPiArICAgICAgICAgICAgICAgcnRscHJpdi0+ZG0uZG9uZV90eHBvd2VyID0g ZmFsc2U7DQo+ICsgICAgICAgfSBlbHNlIGlmIChydGxwcml2LT5kbS5kb25lX3R4cG93ZXIpIHsN Cj4gKyAgICAgICAgICAgICAgIGRlbHRhID0gKHRoZXJtYWx2YWx1ZSA+IHJ0bHByaXYtPmRtLnRo ZXJtYWx2YWx1ZSkgPw0KPiArICAgICAgICAgICAgICAgICAgICh0aGVybWFsdmFsdWUgLSBydGxw cml2LT5kbS50aGVybWFsdmFsdWUpIDoNCj4gKyAgICAgICAgICAgICAgICAgICAocnRscHJpdi0+ ZG0udGhlcm1hbHZhbHVlIC0gdGhlcm1hbHZhbHVlKTsNCj4gKyAgICAgICB9IGVsc2Ugew0KPiAr ICAgICAgICAgICAgICAgZGVsdGEgPSAodGhlcm1hbHZhbHVlID4gcnRsZWZ1c2UtPmVlcHJvbV90 aGVybWFsbWV0ZXIpID8NCj4gKyAgICAgICAgICAgICAgICAgICAodGhlcm1hbHZhbHVlIC0gcnRs ZWZ1c2UtPmVlcHJvbV90aGVybWFsbWV0ZXIpIDoNCj4gKyAgICAgICAgICAgICAgICAgICAocnRs ZWZ1c2UtPmVlcHJvbV90aGVybWFsbWV0ZXIgLSB0aGVybWFsdmFsdWUpOw0KPiArICAgICAgIH0N Cj4gKyAgICAgICBkZWx0YV9sY2sgPSAodGhlcm1hbHZhbHVlID4gcnRscHJpdi0+ZG0udGhlcm1h bHZhbHVlX2xjaykgPw0KPiArICAgICAgICAgICAodGhlcm1hbHZhbHVlIC0gcnRscHJpdi0+ZG0u dGhlcm1hbHZhbHVlX2xjaykgOg0KPiArICAgICAgICAgICAocnRscHJpdi0+ZG0udGhlcm1hbHZh bHVlX2xjayAtIHRoZXJtYWx2YWx1ZSk7DQo+ICsgICAgICAgZGVsdGFfaXFrID0gKHRoZXJtYWx2 YWx1ZSA+IHJ0bHByaXYtPmRtLnRoZXJtYWx2YWx1ZV9pcWspID8NCj4gKyAgICAgICAgICAgKHRo ZXJtYWx2YWx1ZSAtIHJ0bHByaXYtPmRtLnRoZXJtYWx2YWx1ZV9pcWspIDoNCj4gKyAgICAgICAg ICAgKHJ0bHByaXYtPmRtLnRoZXJtYWx2YWx1ZV9pcWsgLSB0aGVybWFsdmFsdWUpOw0KPiArICAg ICAgIGRlbHRhX3J4Z2FpbiA9DQo+ICsgICAgICAgICAgICAgICAodGhlcm1hbHZhbHVlID4gcnRs cHJpdi0+ZG0udGhlcm1hbHZhbHVlX3J4Z2FpbikgPw0KPiArICAgICAgICAgICAgICAgKHRoZXJt YWx2YWx1ZSAtIHJ0bHByaXYtPmRtLnRoZXJtYWx2YWx1ZV9yeGdhaW4pIDoNCj4gKyAgICAgICAg ICAgICAgIChydGxwcml2LT5kbS50aGVybWFsdmFsdWVfcnhnYWluIC0gdGhlcm1hbHZhbHVlKTsN Cj4gKyAgICAgICBydGxfZGJnKHJ0bHByaXYsIENPTVBfUE9XRVJfVFJBQ0tJTkcsIERCR19MT1VE LA0KPiArICAgICAgICAgICAgICAgIlJlYWRiYWNrIFRoZXJtYWwgTWV0ZXIgPSAweCV4IHByZSB0 aGVybWFsIG1ldGVyIDB4JXggZWVwcm9tX3RoZXJtYWxtZXRlciAweCV4IGRlbHRhIDB4JXgNCj4g ZGVsdGFfbGNrIDB4JXggZGVsdGFfaXFrIDB4JXhcbiIsDQo+ICsgICAgICAgICAgICAgICB0aGVy bWFsdmFsdWUsIHJ0bHByaXYtPmRtLnRoZXJtYWx2YWx1ZSwNCj4gKyAgICAgICAgICAgICAgIHJ0 bGVmdXNlLT5lZXByb21fdGhlcm1hbG1ldGVyLCBkZWx0YSwgZGVsdGFfbGNrLA0KPiArICAgICAg ICAgICAgICAgZGVsdGFfaXFrKTsNCj4gKyAgICAgICBpZiAoZGVsdGFfbGNrID4gcnRsZWZ1c2Ut PmRlbHRhX2xjayAmJiBydGxlZnVzZS0+ZGVsdGFfbGNrICE9IDApIHsNCj4gKyAgICAgICAgICAg ICAgIHJ0bHByaXYtPmRtLnRoZXJtYWx2YWx1ZV9sY2sgPSB0aGVybWFsdmFsdWU7DQo+ICsgICAg ICAgICAgICAgICBydGxwcml2LT5jZmctPm9wcy0+cGh5X2xjX2NhbGlicmF0ZShodywgaXMydCk7 DQo+ICsgICAgICAgfQ0KPiArDQo+ICsgICAgICAgaWYgKGRlbHRhID09IDAgfHwgIXJ0bHByaXYt PmRtLnR4cG93ZXJfdHJhY2tfY29udHJvbCkNCj4gKyAgICAgICAgICAgICAgIGdvdG8gY2hlY2tf ZGVsdGE7DQo+ICsNCj4gKyAgICAgICBydGxwcml2LT5kbS5kb25lX3R4cG93ZXIgPSB0cnVlOw0K PiArICAgICAgIGRlbHRhID0gKHRoZXJtYWx2YWx1ZSA+IHJ0bGVmdXNlLT5lZXByb21fdGhlcm1h bG1ldGVyKSA/DQo+ICsgICAgICAgICAgICh0aGVybWFsdmFsdWUgLSBydGxlZnVzZS0+ZWVwcm9t X3RoZXJtYWxtZXRlcikgOg0KPiArICAgICAgICAgICAocnRsZWZ1c2UtPmVlcHJvbV90aGVybWFs bWV0ZXIgLSB0aGVybWFsdmFsdWUpOw0KPiArICAgICAgIGlmIChydGxoYWwtPmN1cnJlbnRfYmFu ZHR5cGUgPT0gQkFORF9PTl8yXzRHKSB7DQo+ICsgICAgICAgICAgICAgICBvZmZzZXQgPSA0Ow0K PiArICAgICAgICAgICAgICAgaWYgKGRlbHRhID4gSU5ERVhfTUFQUElOR19OVU0gLSAxKQ0KPiAr ICAgICAgICAgICAgICAgICAgICAgICBpbmRleCA9IGluZGV4X21hcHBpbmdbb2Zmc2V0XVtJTkRF WF9NQVBQSU5HX05VTSAtIDFdOw0KPiArICAgICAgICAgICAgICAgZWxzZQ0KPiArICAgICAgICAg ICAgICAgICAgICAgICBpbmRleCA9IGluZGV4X21hcHBpbmdbb2Zmc2V0XVtkZWx0YV07DQo+ICsg ICAgICAgICAgICAgICBpZiAodGhlcm1hbHZhbHVlID4gcnRscHJpdi0+ZG0udGhlcm1hbHZhbHVl KSB7DQo+ICsgICAgICAgICAgICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCByZjsgaSsrKQ0K PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZG1faW5kZXhbaV0gLT0gZGVsdGE7 DQo+ICsgICAgICAgICAgICAgICAgICAgICAgIGNja19pbmRleCAtPSBkZWx0YTsNCj4gKyAgICAg ICAgICAgICAgIH0gZWxzZSB7DQo+ICsgICAgICAgICAgICAgICAgICAgICAgIGZvciAoaSA9IDA7 IGkgPCByZjsgaSsrKQ0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZG1faW5k ZXhbaV0gKz0gaW5kZXg7DQo+ICsgICAgICAgICAgICAgICAgICAgICAgIGNja19pbmRleCArPSBp bmRleDsNCj4gKyAgICAgICAgICAgICAgIH0NCj4gKyAgICAgICB9IGVsc2UgaWYgKHJ0bGhhbC0+ Y3VycmVudF9iYW5kdHlwZSA9PSBCQU5EX09OXzVHKSB7DQo+ICsgICAgICAgICAgICAgICBydGw5 MmRfYmFuZHR5cGVfNUcocnRsaGFsLCBvZmRtX2luZGV4LA0KPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICZpbnRlcm5hbF9wYSwgdGhlcm1hbHZhbHVlLA0KPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGRlbHRhLCByZiwgcnRsZWZ1c2UsIHJ0bHByaXYsDQo+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnRscGh5LCBpbmRleF9tYXBwaW5n LA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4X21hcHBpbmdfaW50 ZXJuYWxfcGEpOw0KPiArICAgICAgIH0NCj4gKyAgICAgICBpZiAoaXMydCkgew0KPiArICAgICAg ICAgICAgICAgcnRsX2RiZyhydGxwcml2LCBDT01QX1BPV0VSX1RSQUNLSU5HLCBEQkdfTE9VRCwN Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgInRlbXAgT0ZETV9BX2luZGV4PTB4JXgsIE9GRE1f Ql9pbmRleCA9IDB4JXgsY2NrX2luZGV4PTB4JXhcbiIsDQo+ICsgICAgICAgICAgICAgICAgICAg ICAgIHJ0bHByaXYtPmRtLm9mZG1faW5kZXhbMF0sDQo+ICsgICAgICAgICAgICAgICAgICAgICAg IHJ0bHByaXYtPmRtLm9mZG1faW5kZXhbMV0sDQo+ICsgICAgICAgICAgICAgICAgICAgICAgIHJ0 bHByaXYtPmRtLmNja19pbmRleCk7DQo+ICsgICAgICAgfSBlbHNlIHsNCj4gKyAgICAgICAgICAg ICAgIHJ0bF9kYmcocnRscHJpdiwgQ09NUF9QT1dFUl9UUkFDS0lORywgREJHX0xPVUQsDQo+ICsg ICAgICAgICAgICAgICAgICAgICAgICJ0ZW1wIE9GRE1fQV9pbmRleD0weCV4LGNja19pbmRleCA9 IDB4JXhcbiIsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgIHJ0bHByaXYtPmRtLm9mZG1faW5k ZXhbMF0sDQo+ICsgICAgICAgICAgICAgICAgICAgICAgIHJ0bHByaXYtPmRtLmNja19pbmRleCk7 DQo+ICsgICAgICAgfQ0KPiArICAgICAgIGZvciAoaSA9IDA7IGkgPCByZjsgaSsrKSB7DQo+ICsg ICAgICAgICAgICAgICBpZiAob2ZkbV9pbmRleFtpXSA+IE9GRE1fVEFCTEVfU0laRV85MkQgLSAx KSB7DQo+ICsgICAgICAgICAgICAgICAgICAgICAgIG9mZG1faW5kZXhbaV0gPSBPRkRNX1RBQkxF X1NJWkVfOTJEIC0gMTsNCj4gKyAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoaW50ZXJuYWxfcGEg fHwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgcnRsaGFsLT5jdXJyZW50X2JhbmR0eXBl ID09IEJBTkRfT05fMl80Rykgew0KPiArICAgICAgICAgICAgICAgICAgICAgICBpZiAob2ZkbV9p bmRleFtpXSA8IG9mZG1fbWluX2luZGV4X2ludGVybmFsX3BhKQ0KPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIG9mZG1faW5kZXhbaV0gPSBvZmRtX21pbl9pbmRleF9pbnRlcm5hbF9w YTsNCj4gKyAgICAgICAgICAgICAgIH0gZWxzZSBpZiAob2ZkbV9pbmRleFtpXSA8IG9mZG1fbWlu X2luZGV4KSB7DQo+ICsgICAgICAgICAgICAgICAgICAgICAgIG9mZG1faW5kZXhbaV0gPSBvZmRt X21pbl9pbmRleDsNCj4gKyAgICAgICAgICAgICAgIH0NCj4gKyAgICAgICB9DQo+ICsgICAgICAg aWYgKHJ0bGhhbC0+Y3VycmVudF9iYW5kdHlwZSA9PSBCQU5EX09OXzJfNEcpIHsNCj4gKyAgICAg ICAgICAgICAgIGlmIChjY2tfaW5kZXggPiBDQ0tfVEFCTEVfU0laRSAtIDEpDQo+ICsgICAgICAg ICAgICAgICAgICAgICAgIGNja19pbmRleCA9IENDS19UQUJMRV9TSVpFIC0gMTsNCj4gKyAgICAg ICAgICAgICAgIGVsc2UgaWYgKGNja19pbmRleCA8IDApDQo+ICsgICAgICAgICAgICAgICAgICAg ICAgIGNja19pbmRleCA9IDA7DQo+ICsgICAgICAgfQ0KPiArICAgICAgIGlmIChpczJ0KSB7DQo+ ICsgICAgICAgICAgICAgICBydGxfZGJnKHJ0bHByaXYsIENPTVBfUE9XRVJfVFJBQ0tJTkcsIERC R19MT1VELA0KPiArICAgICAgICAgICAgICAgICAgICAgICAibmV3IE9GRE1fQV9pbmRleD0weCV4 LCBPRkRNX0JfaW5kZXggPSAweCV4LCBjY2tfaW5kZXg9MHgleFxuIiwNCj4gKyAgICAgICAgICAg ICAgICAgICAgICAgb2ZkbV9pbmRleFswXSwgb2ZkbV9pbmRleFsxXSwNCj4gKyAgICAgICAgICAg ICAgICAgICAgICAgY2NrX2luZGV4KTsNCj4gKyAgICAgICB9IGVsc2Ugew0KPiArICAgICAgICAg ICAgICAgcnRsX2RiZyhydGxwcml2LCBDT01QX1BPV0VSX1RSQUNLSU5HLCBEQkdfTE9VRCwNCj4g KyAgICAgICAgICAgICAgICAgICAgICAgIm5ldyBPRkRNX0FfaW5kZXg9MHgleCxjY2tfaW5kZXgg PSAweCV4XG4iLA0KPiArICAgICAgICAgICAgICAgICAgICAgICBvZmRtX2luZGV4WzBdLCBjY2tf aW5kZXgpOw0KPiArICAgICAgIH0NCj4gKyAgICAgICBlbGVfZCA9IChvZmRtc3dpbmdfdGFibGVb b2ZkbV9pbmRleFswXV0gJiAweEZGQzAwMDAwKSA+PiAyMjsNCj4gKyAgICAgICB2YWxfeCA9IHJ0 bHBoeS0+aXFrX21hdHJpeFtpbmRleGZvcmNoYW5uZWxdLnZhbHVlWzBdWzBdOw0KPiArICAgICAg IHZhbF95ID0gcnRscGh5LT5pcWtfbWF0cml4W2luZGV4Zm9yY2hhbm5lbF0udmFsdWVbMF1bMV07 DQo+ICsgICAgICAgaWYgKHZhbF94ICE9IDApIHsNCj4gKyAgICAgICAgICAgICAgIGlmICgodmFs X3ggJiAweDAwMDAwMjAwKSAhPSAwKQ0KPiArICAgICAgICAgICAgICAgICAgICAgICB2YWxfeCA9 IHZhbF94IHwgMHhGRkZGRkMwMDsNCj4gKyAgICAgICAgICAgICAgIGVsZV9hID0gKCh2YWxfeCAq IGVsZV9kKSA+PiA4KSAmIDB4MDAwMDAzRkY7DQo+ICsNCj4gKyAgICAgICAgICAgICAgIC8qIG5l dyBlbGVtZW50IEMgPSBlbGVtZW50IEQgeCBZICovDQo+ICsgICAgICAgICAgICAgICBpZiAoKHZh bF95ICYgMHgwMDAwMDIwMCkgIT0gMCkNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgdmFsX3kg PSB2YWxfeSB8IDB4RkZGRkZDMDA7DQo+ICsgICAgICAgICAgICAgICBlbGVfYyA9ICgodmFsX3kg KiBlbGVfZCkgPj4gOCkgJiAweDAwMDAwM0ZGOw0KPiArDQo+ICsgICAgICAgICAgICAgICAvKiB3 cml0ZSBuZXcgZWxlbWVudHMgQSwgQywgRCB0byByZWdDODAgYW5kDQo+ICsgICAgICAgICAgICAg ICAgKiByZWdDOTQsIGVsZW1lbnQgQiBpcyBhbHdheXMgMA0KPiArICAgICAgICAgICAgICAgICov DQo+ICsgICAgICAgICAgICAgICB2YWx1ZTMyID0gKGVsZV9kIDw8IDIyKSB8ICgoZWxlX2MgJiAw eDNGKSA8PCAxNikgfCBlbGVfYTsNCj4gKyAgICAgICAgICAgICAgIHJ0bF9zZXRfYmJyZWcoaHcs IFJPRkRNMF9YQVRYSVFJTUJBTEFOQ0UsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg IE1BU0tEV09SRCwgdmFsdWUzMik7DQo+ICsNCj4gKyAgICAgICAgICAgICAgIHZhbHVlMzIgPSAo ZWxlX2MgJiAweDAwMDAwM0MwKSA+PiA2Ow0KPiArICAgICAgICAgICAgICAgcnRsX3NldF9iYnJl ZyhodywgUk9GRE0wX1hDVFhBRkUsIE1BU0tINEJJVFMsDQo+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHZhbHVlMzIpOw0KPiArDQo+ICsgICAgICAgICAgICAgICB2YWx1ZTMyID0gKCh2 YWxfeCAqIGVsZV9kKSA+PiA3KSAmIDB4MDE7DQo+ICsgICAgICAgICAgICAgICBydGxfc2V0X2Ji cmVnKGh3LCBST0ZETTBfRUNDQVRIUkVTSE9MRCwgQklUKDI0KSwNCj4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgdmFsdWUzMik7DQo+ICsNCj4gKyAgICAgICB9IGVsc2Ugew0KPiArICAg ICAgICAgICAgICAgcnRsX3NldF9iYnJlZyhodywgUk9GRE0wX1hBVFhJUUlNQkFMQU5DRSwNCj4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTUFTS0RXT1JELA0KPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBvZmRtc3dpbmdfdGFibGVbKHU4KW9mZG1faW5kZXhbMF1dKTsNCj4g KyAgICAgICAgICAgICAgIHJ0bF9zZXRfYmJyZWcoaHcsIFJPRkRNMF9YQ1RYQUZFLCBNQVNLSDRC SVRTLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwKTsNCj4gKyAgICAgICAg ICAgICAgIHJ0bF9zZXRfYmJyZWcoaHcsIFJPRkRNMF9FQ0NBVEhSRVNIT0xELA0KPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBCSVQoMjQpLCAweDAwKTsNCj4gKyAgICAgICB9DQo+ICsN Cg0KWy4uLl0NCg0KDQoNCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0 ZWsvcnRsd2lmaS9ydGw4MTkyZC9kbV9jb21tb24uaA0KPiBiL2RyaXZlcnMvbmV0L3dpcmVsZXNz L3JlYWx0ZWsvcnRsd2lmaS9ydGw4MTkyZC9kbV9jb21tb24uaA0KPiBuZXcgZmlsZSBtb2RlIDEw MDY0NA0KPiBpbmRleCAwMDAwMDAwMDAwMDAuLjlkYzBkZjViYjA2OA0KPiAtLS0gL2Rldi9udWxs DQo+ICsrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsd2lmaS9ydGw4MTkyZC9k bV9jb21tb24uaA0KPiBAQCAtMCwwICsxLDEwMCBAQA0KDQpbLi4uXQ0KDQo+ICtzdHJ1Y3Qgc3dh dCB7DQo+ICsgICAgICAgdTggZmFpbHVyZV9jbnQ7DQo+ICsgICAgICAgdTggdHJ5X2ZsYWc7DQo+ ICsgICAgICAgdTggc3RvcF90cnlpbmc7DQo+ICsgICAgICAgbG9uZyBwcmVfcnNzaTsNCj4gKyAg ICAgICBsb25nIHRyeWluZ190aHJlc2hvbGQ7DQo+ICsgICAgICAgdTggY3VyX2FudGVubmE7DQo+ ICsgICAgICAgdTggcHJlX2FudGVubmE7DQo+ICt9Ow0KDQpTZWVtaW5nbHksIG5vIG9uZSB1c2Vz IHRoaXMuIERvIEkgbWlzcyBzb21ldGhpbmc/DQoNCj4gKw0KPiArZW51bSB0YWdfZHluYW1pY19p bml0X2dhaW5fb3BlcmF0aW9uX3R5cGVfZGVmaW5pdGlvbiB7DQo+ICsgICAgICAgRElHX1RZUEVf VEhSRVNIX0hJR0ggPSAwLA0KPiArICAgICAgIERJR19UWVBFX1RIUkVTSF9MT1cgPSAxLA0KPiAr ICAgICAgIERJR19UWVBFX0JBQ0tPRkYgPSAyLA0KPiArICAgICAgIERJR19UWVBFX1JYX0dBSU5f TUlOID0gMywNCj4gKyAgICAgICBESUdfVFlQRV9SWF9HQUlOX01BWCA9IDQsDQo+ICsgICAgICAg RElHX1RZUEVfRU5BQkxFID0gNSwNCj4gKyAgICAgICBESUdfVFlQRV9ESVNBQkxFID0gNiwNCj4g KyAgICAgICBESUdfT1BfVFlQRV9NQVgNCj4gK307DQoNCk5vIGNvbnN1bWVyPyANCg0KWy4uLl0N Cg0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGx3aWZpL3J0 bDgxOTJkL2Z3X2NvbW1vbi5jDQo+IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGx3 aWZpL3J0bDgxOTJkL2Z3X2NvbW1vbi5jDQo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4 IDAwMDAwMDAwMDAwMC4uNzNjZmE5YWQ3OGFlDQo+IC0tLSAvZGV2L251bGwNCj4gKysrIGIvZHJp dmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGx3aWZpL3J0bDgxOTJkL2Z3X2NvbW1vbi5jDQo+ IEBAIC0wLDAgKzEsMzY5IEBADQo+ICsvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIu MA0KPiArLyogQ29weXJpZ2h0KGMpIDIwMDktMjAxMiAgUmVhbHRlayBDb3Jwb3JhdGlvbi4qLw0K PiArDQo+ICsjaW5jbHVkZSAiLi4vd2lmaS5oIg0KPiArI2luY2x1ZGUgIi4uL3BjaS5oIg0KPiAr I2luY2x1ZGUgIi4uL2Jhc2UuaCINCj4gKyNpbmNsdWRlICIuLi9lZnVzZS5oIg0KPiArI2luY2x1 ZGUgImRlZi5oIg0KPiArI2luY2x1ZGUgInJlZy5oIg0KPiArI2luY2x1ZGUgImZ3X2NvbW1vbi5o Ig0KPiArDQo+ICtib29sIHJ0bDkyZF9pc19md19kb3dubG9hZGVkKHN0cnVjdCBydGxfcHJpdiAq cnRscHJpdikNCj4gK3sNCj4gKyAgICAgICByZXR1cm4gKHJ0bF9yZWFkX2R3b3JkKHJ0bHByaXYs IFJFR19NQ1VGV0RMKSAmIE1DVUZXRExfUkRZKSA/DQo+ICsgICAgICAgICAgICAgICB0cnVlIDog ZmFsc2U7DQoNCnJldHVybiAhIShydGxfcmVhZF9kd29yZChydGxwcml2LCBSRUdfTUNVRldETCkg JiBNQ1VGV0RMX1JEWSk7DQoNClsuLi5dDQoNCg0KPiArdm9pZCBydGw5MmRfZmlybXdhcmVfc2Vs ZnJlc2V0KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3KQ0KPiArew0KPiArICAgICAgIHN0cnVjdCBy dGxfcHJpdiAqcnRscHJpdiA9IHJ0bF9wcml2KGh3KTsNCj4gKyAgICAgICB1OCB1MWJfdG1wOw0K PiArICAgICAgIHU4IGRlbGF5ID0gMTAwOw0KPiArDQo+ICsgICAgICAgLyogU2V0IChSRUdfSE1F VEZSICsgMykgdG8gIDB4MjAgaXMgcmVzZXQgODA1MSAqLw0KPiArICAgICAgIHJ0bF93cml0ZV9i eXRlKHJ0bHByaXYsIFJFR19ITUVURlIgKyAzLCAweDIwKTsNCj4gKyAgICAgICB1MWJfdG1wID0g cnRsX3JlYWRfYnl0ZShydGxwcml2LCBSRUdfU1lTX0ZVTkNfRU4gKyAxKTsNCg0KQWRkIHByb3Bl ciBibGFuayBsaW5lcy4gDQoNCj4gKyAgICAgICB3aGlsZSAodTFiX3RtcCAmIEJJVCgyKSkgew0K PiArICAgICAgICAgICAgICAgZGVsYXktLTsNCj4gKyAgICAgICAgICAgICAgIGlmIChkZWxheSA9 PSAwKQ0KPiArICAgICAgICAgICAgICAgICAgICAgICBicmVhazsNCj4gKyAgICAgICAgICAgICAg IHVkZWxheSg1MCk7DQo+ICsgICAgICAgICAgICAgICB1MWJfdG1wID0gcnRsX3JlYWRfYnl0ZShy dGxwcml2LCBSRUdfU1lTX0ZVTkNfRU4gKyAxKTsNCj4gKyAgICAgICB9DQo+ICsgICAgICAgV0FS Tl9PTkNFKChkZWxheSA8PSAwKSwgInJ0bDgxOTJkZTogODA1MSByZXNldCBmYWlsZWQhXG4iKTsN Cj4gKyAgICAgICBydGxfZGJnKHJ0bHByaXYsIENPTVBfRlcsIERCR19ETUVTRywNCj4gKyAgICAg ICAgICAgICAgICI9PT09PT4gODA1MSByZXNldCBzdWNjZXNzICglZClcbiIsIGRlbGF5KTsNCj4g K30NCj4gK0VYUE9SVF9TWU1CT0xfR1BMKHJ0bDkyZF9maXJtd2FyZV9zZWxmcmVzZXQpOw0KPiAr DQoNClsuLi5dDQoNCg0KPiArc3RhdGljIHZvaWQgX3J0bDkyZF9maWxsX2gyY19jb21tYW5kKHN0 cnVjdCBpZWVlODAyMTFfaHcgKmh3LA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgdTggZWxlbWVudF9pZCwgdTMyIGNtZF9sZW4sIHU4ICpjbWRidWZmZXIpDQo+ICt7DQo+ ICsgICAgICAgc3RydWN0IHJ0bF9wcml2ICpydGxwcml2ID0gcnRsX3ByaXYoaHcpOw0KPiArICAg ICAgIHN0cnVjdCBydGxfaGFsICpydGxoYWwgPSBydGxfaGFsKHJ0bF9wcml2KGh3KSk7DQo+ICsg ICAgICAgc3RydWN0IHJ0bF9wc19jdGwgKnBwc2MgPSBydGxfcHNjKHJ0bF9wcml2KGh3KSk7DQo+ ICsgICAgICAgdTggYm94bnVtOw0KPiArICAgICAgIHUxNiBib3hfcmVnID0gMCwgYm94X2V4dHJl ZyA9IDA7DQo+ICsgICAgICAgdTggdTFiX3RtcDsNCj4gKyAgICAgICBib29sIGlzZndfcmVhZCA9 IGZhbHNlOw0KPiArICAgICAgIHU4IGJ1Zl9pbmRleCA9IDA7DQo+ICsgICAgICAgYm9vbCBid3Jp dGVfc3VjY2VzcyA9IGZhbHNlOw0KPiArICAgICAgIHU4IHdhaXRfaDJjX2xpbW1pdCA9IDEwMDsN Cj4gKyAgICAgICB1OCB3YWl0X3dyaXRlaDJjX2xpbW1pdCA9IDEwMDsNCj4gKyAgICAgICB1OCBi b3hjb250ZW50WzRdLCBib3hleHRjb250ZW50WzJdOw0KPiArICAgICAgIHUzMiBoMmNfd2FpdGNv dW50ZXIgPSAwOw0KPiArICAgICAgIHVuc2lnbmVkIGxvbmcgZmxhZzsNCj4gKyAgICAgICB1OCBp ZHg7DQoNCkluIHJldmVyc2UgWCdtYXMgdHJlZSBvcmRlciANCg0KPiArDQo+ICsgICAgICAgaWYg KHBwc2MtPnJmcHdyX3N0YXRlID09IEVSRk9GRiB8fCBwcHNjLT5pbmFjdGl2ZV9wd3JzdGF0ZSA9 PSBFUkZPRkYpIHsNCj4gKyAgICAgICAgICAgICAgIHJ0bF9kYmcocnRscHJpdiwgQ09NUF9DTUQs IERCR19MT1VELA0KPiArICAgICAgICAgICAgICAgICAgICAgICAiUmV0dXJuIGFzIFJGIGlzIG9m ZiEhIVxuIik7DQo+ICsgICAgICAgICAgICAgICByZXR1cm47DQo+ICsgICAgICAgfQ0KPiArICAg ICAgIHJ0bF9kYmcocnRscHJpdiwgQ09NUF9DTUQsIERCR19MT1VELCAiY29tZSBpblxuIik7DQo+ ICsgICAgICAgd2hpbGUgKHRydWUpIHsNCj4gKyAgICAgICAgICAgICAgIHNwaW5fbG9ja19pcnFz YXZlKCZydGxwcml2LT5sb2Nrcy5oMmNfbG9jaywgZmxhZyk7DQo+ICsgICAgICAgICAgICAgICBp ZiAocnRsaGFsLT5oMmNfc2V0aW5wcm9ncmVzcykgew0KPiArICAgICAgICAgICAgICAgICAgICAg ICBydGxfZGJnKHJ0bHByaXYsIENPTVBfQ01ELCBEQkdfTE9VRCwNCj4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAiSDJDIHNldCBpbiBwcm9ncmVzcyEgV2FpdCB0byBzZXQuLmVsZW1l bnRfaWQoJWQpXG4iLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnRf aWQpOw0KPiArDQo+ICsgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlIChydGxoYWwtPmgyY19z ZXRpbnByb2dyZXNzKSB7DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Bpbl91 bmxvY2tfaXJxcmVzdG9yZSgmcnRscHJpdi0+bG9ja3MuaDJjX2xvY2ssDQo+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGFnKTsNCj4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoMmNfd2FpdGNvdW50ZXIrKzsNCj4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBydGxfZGJnKHJ0bHByaXYsIENPTVBfQ01ELCBEQkdf TE9VRCwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJXYWl0IDEw MCB1cyAoJWQgdGltZXMpLi4uXG4iLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgaDJjX3dhaXRjb3VudGVyKTsNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB1ZGVsYXkoMTAwKTsNCj4gKw0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGlmIChoMmNfd2FpdGNvdW50ZXIgPiAxMDAwKQ0KPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgcmV0dXJuOw0KPiArDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgc3Bpbl9sb2NrX2lycXNhdmUoJnJ0bHByaXYtPmxvY2tzLmgyY19sb2NrLA0KPiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWcpOw0KPiAr ICAgICAgICAgICAgICAgICAgICAgICB9DQo+ICsgICAgICAgICAgICAgICAgICAgICAgIHNwaW5f dW5sb2NrX2lycXJlc3RvcmUoJnJ0bHByaXYtPmxvY2tzLmgyY19sb2NrLCBmbGFnKTsNCj4gKyAg ICAgICAgICAgICAgIH0gZWxzZSB7DQo+ICsgICAgICAgICAgICAgICAgICAgICAgIHJ0bGhhbC0+ aDJjX3NldGlucHJvZ3Jlc3MgPSB0cnVlOw0KPiArICAgICAgICAgICAgICAgICAgICAgICBzcGlu X3VubG9ja19pcnFyZXN0b3JlKCZydGxwcml2LT5sb2Nrcy5oMmNfbG9jaywgZmxhZyk7DQo+ICsg ICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KPiArICAgICAgICAgICAgICAgfQ0KPiArICAg ICAgIH0NCj4gKyAgICAgICB3aGlsZSAoIWJ3cml0ZV9zdWNjZXNzKSB7DQo+ICsgICAgICAgICAg ICAgICB3YWl0X3dyaXRlaDJjX2xpbW1pdC0tOw0KPiArICAgICAgICAgICAgICAgaWYgKHdhaXRf d3JpdGVoMmNfbGltbWl0ID09IDApIHsNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgcHJfZXJy KCJXcml0ZSBIMkMgZmFpbCBiZWNhdXNlIG5vIHRyaWdnZXIgZm9yIEZXIElOVCFcbiIpOw0KPiAr ICAgICAgICAgICAgICAgICAgICAgICBicmVhazsNCj4gKyAgICAgICAgICAgICAgIH0NCj4gKyAg ICAgICAgICAgICAgIGJveG51bSA9IHJ0bGhhbC0+bGFzdF9obWVib3hudW07DQo+ICsgICAgICAg ICAgICAgICBzd2l0Y2ggKGJveG51bSkgew0KPiArICAgICAgICAgICAgICAgY2FzZSAwOg0KPiAr ICAgICAgICAgICAgICAgICAgICAgICBib3hfcmVnID0gUkVHX0hNRUJPWF8wOw0KPiArICAgICAg ICAgICAgICAgICAgICAgICBib3hfZXh0cmVnID0gUkVHX0hNRUJPWF9FWFRfMDsNCj4gKyAgICAg ICAgICAgICAgICAgICAgICAgYnJlYWs7DQo+ICsgICAgICAgICAgICAgICBjYXNlIDE6DQo+ICsg ICAgICAgICAgICAgICAgICAgICAgIGJveF9yZWcgPSBSRUdfSE1FQk9YXzE7DQo+ICsgICAgICAg ICAgICAgICAgICAgICAgIGJveF9leHRyZWcgPSBSRUdfSE1FQk9YX0VYVF8xOw0KPiArICAgICAg ICAgICAgICAgICAgICAgICBicmVhazsNCj4gKyAgICAgICAgICAgICAgIGNhc2UgMjoNCj4gKyAg ICAgICAgICAgICAgICAgICAgICAgYm94X3JlZyA9IFJFR19ITUVCT1hfMjsNCj4gKyAgICAgICAg ICAgICAgICAgICAgICAgYm94X2V4dHJlZyA9IFJFR19ITUVCT1hfRVhUXzI7DQo+ICsgICAgICAg ICAgICAgICAgICAgICAgIGJyZWFrOw0KPiArICAgICAgICAgICAgICAgY2FzZSAzOg0KPiArICAg ICAgICAgICAgICAgICAgICAgICBib3hfcmVnID0gUkVHX0hNRUJPWF8zOw0KPiArICAgICAgICAg ICAgICAgICAgICAgICBib3hfZXh0cmVnID0gUkVHX0hNRUJPWF9FWFRfMzsNCj4gKyAgICAgICAg ICAgICAgICAgICAgICAgYnJlYWs7DQo+ICsgICAgICAgICAgICAgICBkZWZhdWx0Og0KPiArICAg ICAgICAgICAgICAgICAgICAgICBwcl9lcnIoInN3aXRjaCBjYXNlICUjeCBub3QgcHJvY2Vzc2Vk XG4iLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm94bnVtKTsNCj4gKyAgICAg ICAgICAgICAgICAgICAgICAgYnJlYWs7DQo+ICsgICAgICAgICAgICAgICB9DQo+ICsgICAgICAg ICAgICAgICBpc2Z3X3JlYWQgPSBfcnRsOTJkX2NoZWNrX2Z3X3JlYWRfbGFzdF9oMmMoaHcsIGJv eG51bSk7DQo+ICsgICAgICAgICAgICAgICB3aGlsZSAoIWlzZndfcmVhZCkgew0KPiArICAgICAg ICAgICAgICAgICAgICAgICB3YWl0X2gyY19saW1taXQtLTsNCj4gKyAgICAgICAgICAgICAgICAg ICAgICAgaWYgKHdhaXRfaDJjX2xpbW1pdCA9PSAwKSB7DQo+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgcnRsX2RiZyhydGxwcml2LCBDT01QX0NNRCwgREJHX0xPVUQsDQo+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiV2FpdGluZyB0b28gbG9uZyBmb3Ig RlcgcmVhZCBjbGVhciBITUVCb3goJWQpIVxuIiwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGJveG51bSk7DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgYnJlYWs7DQo+ICsgICAgICAgICAgICAgICAgICAgICAgIH0NCj4gKyAgICAgICAgICAgICAg ICAgICAgICAgdWRlbGF5KDEwKTsNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgaXNmd19yZWFk ID0gX3J0bDkyZF9jaGVja19md19yZWFkX2xhc3RfaDJjKGh3LCBib3hudW0pOw0KPiArICAgICAg ICAgICAgICAgICAgICAgICB1MWJfdG1wID0gcnRsX3JlYWRfYnl0ZShydGxwcml2LCAweDFCRik7 DQo+ICsgICAgICAgICAgICAgICAgICAgICAgIHJ0bF9kYmcocnRscHJpdiwgQ09NUF9DTUQsIERC R19MT1VELA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJXYWl0aW5nIGZvciBG VyByZWFkIGNsZWFyIEhNRUJveCglZCkhISEgMHgxQkYgPSAlMnhcbiIsDQo+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgYm94bnVtLCB1MWJfdG1wKTsNCj4gKyAgICAgICAgICAgICAg IH0NCj4gKyAgICAgICAgICAgICAgIGlmICghaXNmd19yZWFkKSB7DQo+ICsgICAgICAgICAgICAg ICAgICAgICAgIHJ0bF9kYmcocnRscHJpdiwgQ09NUF9DTUQsIERCR19MT1VELA0KPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICJXcml0ZSBIMkMgcmVnaXN0ZXIgQk9YWyVkXSBmYWls ISEhISEgRncgZG8gbm90IHJlYWQuXG4iLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGJveG51bSk7DQo+ICsgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KPiArICAgICAg ICAgICAgICAgfQ0KPiArICAgICAgICAgICAgICAgbWVtc2V0KGJveGNvbnRlbnQsIDAsIHNpemVv Zihib3hjb250ZW50KSk7DQo+ICsgICAgICAgICAgICAgICBtZW1zZXQoYm94ZXh0Y29udGVudCwg MCwgc2l6ZW9mKGJveGV4dGNvbnRlbnQpKTsNCj4gKyAgICAgICAgICAgICAgIGJveGNvbnRlbnRb MF0gPSBlbGVtZW50X2lkOw0KPiArICAgICAgICAgICAgICAgcnRsX2RiZyhydGxwcml2LCBDT01Q X0NNRCwgREJHX0xPVUQsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICJXcml0ZSBlbGVtZW50 X2lkIGJveF9yZWcoJTR4KSA9ICUyeFxuIiwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgYm94 X3JlZywgZWxlbWVudF9pZCk7DQo+ICsgICAgICAgICAgICAgICBzd2l0Y2ggKGNtZF9sZW4pIHsN Cj4gKyAgICAgICAgICAgICAgIGNhc2UgMToNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgYm94 Y29udGVudFswXSAmPSB+KEJJVCg3KSk7DQo+ICsgICAgICAgICAgICAgICAgICAgICAgIG1lbWNw eShib3hjb250ZW50ICsgMSwgY21kYnVmZmVyICsgYnVmX2luZGV4LCAxKTsNCj4gKyAgICAgICAg ICAgICAgICAgICAgICAgZm9yIChpZHggPSAwOyBpZHggPCA0OyBpZHgrKykNCj4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBydGxfd3JpdGVfYnl0ZShydGxwcml2LCBib3hfcmVnICsg aWR4LA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJv eGNvbnRlbnRbaWR4XSk7DQoNClRoZXNlIHN3aXRjaC4uLmNhc2Ugc2VlbSB0byB3YW50IHRvIHNo YXJlIGZvci1sb29wIGZyb20gaWR4PTB+Mywgc28gaXQgZGlkIGNvcHkNCnRvIGNvbW1vbiBidWZm ZXIgYWJvdmUuIEhvd2V2ZXIsIGl0IGRpZCBzaGFyZSBub3RoaW5nLiBSZWFsbHkgd2FudCBzb21l DQppbXByb3ZlbWVudCBoZXJlLg0KDQoNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7 DQo+ICsgICAgICAgICAgICAgICBjYXNlIDI6DQo+ICsgICAgICAgICAgICAgICAgICAgICAgIGJv eGNvbnRlbnRbMF0gJj0gfihCSVQoNykpOw0KPiArICAgICAgICAgICAgICAgICAgICAgICBtZW1j cHkoYm94Y29udGVudCArIDEsIGNtZGJ1ZmZlciArIGJ1Zl9pbmRleCwgMik7DQo+ICsgICAgICAg ICAgICAgICAgICAgICAgIGZvciAoaWR4ID0gMDsgaWR4IDwgNDsgaWR4KyspDQo+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgcnRsX3dyaXRlX2J5dGUocnRscHJpdiwgYm94X3JlZyAr IGlkeCwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBi b3hjb250ZW50W2lkeF0pOw0KPiArICAgICAgICAgICAgICAgICAgICAgICBicmVhazsNCj4gKyAg ICAgICAgICAgICAgIGNhc2UgMzoNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgYm94Y29udGVu dFswXSAmPSB+KEJJVCg3KSk7DQo+ICsgICAgICAgICAgICAgICAgICAgICAgIG1lbWNweShib3hj b250ZW50ICsgMSwgY21kYnVmZmVyICsgYnVmX2luZGV4LCAzKTsNCj4gKyAgICAgICAgICAgICAg ICAgICAgICAgZm9yIChpZHggPSAwOyBpZHggPCA0OyBpZHgrKykNCj4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBydGxfd3JpdGVfYnl0ZShydGxwcml2LCBib3hfcmVnICsgaWR4LA0K PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJveGNvbnRl bnRbaWR4XSk7DQo+ICsgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KPiArICAgICAgICAg ICAgICAgY2FzZSA0Og0KPiArICAgICAgICAgICAgICAgICAgICAgICBib3hjb250ZW50WzBdIHw9 IChCSVQoNykpOw0KPiArICAgICAgICAgICAgICAgICAgICAgICBtZW1jcHkoYm94ZXh0Y29udGVu dCwgY21kYnVmZmVyICsgYnVmX2luZGV4LCAyKTsNCj4gKyAgICAgICAgICAgICAgICAgICAgICAg bWVtY3B5KGJveGNvbnRlbnQgKyAxLCBjbWRidWZmZXIgKyBidWZfaW5kZXggKyAyLCAyKTsNCj4g KyAgICAgICAgICAgICAgICAgICAgICAgZm9yIChpZHggPSAwOyBpZHggPCAyOyBpZHgrKykNCj4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBydGxfd3JpdGVfYnl0ZShydGxwcml2LCBi b3hfZXh0cmVnICsgaWR4LA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGJveGV4dGNvbnRlbnRbaWR4XSk7DQo+ICsgICAgICAgICAgICAgICAgICAgICAg IGZvciAoaWR4ID0gMDsgaWR4IDwgNDsgaWR4KyspDQo+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgcnRsX3dyaXRlX2J5dGUocnRscHJpdiwgYm94X3JlZyArIGlkeCwNCj4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3hjb250ZW50W2lkeF0p Ow0KPiArICAgICAgICAgICAgICAgICAgICAgICBicmVhazsNCj4gKyAgICAgICAgICAgICAgIGNh c2UgNToNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgYm94Y29udGVudFswXSB8PSAoQklUKDcp KTsNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgbWVtY3B5KGJveGV4dGNvbnRlbnQsIGNtZGJ1 ZmZlciArIGJ1Zl9pbmRleCwgMik7DQo+ICsgICAgICAgICAgICAgICAgICAgICAgIG1lbWNweShi b3hjb250ZW50ICsgMSwgY21kYnVmZmVyICsgYnVmX2luZGV4ICsgMiwgMyk7DQo+ICsgICAgICAg ICAgICAgICAgICAgICAgIGZvciAoaWR4ID0gMDsgaWR4IDwgMjsgaWR4KyspDQo+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgcnRsX3dyaXRlX2J5dGUocnRscHJpdiwgYm94X2V4dHJl ZyArIGlkeCwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBib3hleHRjb250ZW50W2lkeF0pOw0KPiArICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGlk eCA9IDA7IGlkeCA8IDQ7IGlkeCsrKQ0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHJ0bF93cml0ZV9ieXRlKHJ0bHByaXYsIGJveF9yZWcgKyBpZHgsDQo+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm94Y29udGVudFtpZHhdKTsNCj4gKyAg ICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQo+ICsgICAgICAgICAgICAgICBkZWZhdWx0Og0K PiArICAgICAgICAgICAgICAgICAgICAgICBwcl9lcnIoInN3aXRjaCBjYXNlICUjeCBub3QgcHJv Y2Vzc2VkXG4iLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY21kX2xlbik7DQo+ ICsgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KPiArICAgICAgICAgICAgICAgfQ0KPiAr ICAgICAgICAgICAgICAgYndyaXRlX3N1Y2Nlc3MgPSB0cnVlOw0KPiArICAgICAgICAgICAgICAg cnRsaGFsLT5sYXN0X2htZWJveG51bSA9IGJveG51bSArIDE7DQo+ICsgICAgICAgICAgICAgICBp ZiAocnRsaGFsLT5sYXN0X2htZWJveG51bSA9PSA0KQ0KPiArICAgICAgICAgICAgICAgICAgICAg ICBydGxoYWwtPmxhc3RfaG1lYm94bnVtID0gMDsNCj4gKyAgICAgICAgICAgICAgIHJ0bF9kYmco cnRscHJpdiwgQ09NUF9DTUQsIERCR19MT1VELA0KPiArICAgICAgICAgICAgICAgICAgICAgICAi cEhhbERhdGEtPmxhc3RfaG1lYm94bnVtICA9ICVkXG4iLA0KPiArICAgICAgICAgICAgICAgICAg ICAgICBydGxoYWwtPmxhc3RfaG1lYm94bnVtKTsNCj4gKyAgICAgICB9DQo+ICsgICAgICAgc3Bp bl9sb2NrX2lycXNhdmUoJnJ0bHByaXYtPmxvY2tzLmgyY19sb2NrLCBmbGFnKTsNCj4gKyAgICAg ICBydGxoYWwtPmgyY19zZXRpbnByb2dyZXNzID0gZmFsc2U7DQo+ICsgICAgICAgc3Bpbl91bmxv Y2tfaXJxcmVzdG9yZSgmcnRscHJpdi0+bG9ja3MuaDJjX2xvY2ssIGZsYWcpOw0KPiArICAgICAg IHJ0bF9kYmcocnRscHJpdiwgQ09NUF9DTUQsIERCR19MT1VELCAiZ28gb3V0XG4iKTsNCj4gK30N Cj4gKw0KDQpbLi4uXQ0KDQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFs dGVrL3J0bHdpZmkvcnRsODE5MmQvaHdfY29tbW9uLmMNCj4gYi9kcml2ZXJzL25ldC93aXJlbGVz cy9yZWFsdGVrL3J0bHdpZmkvcnRsODE5MmQvaHdfY29tbW9uLmMNCj4gbmV3IGZpbGUgbW9kZSAx MDA2NDQNCj4gaW5kZXggMDAwMDAwMDAwMDAwLi5lNzBlODMyNTJlMTYNCj4gLS0tIC9kZXYvbnVs bA0KPiArKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0bHdpZmkvcnRsODE5MmQv aHdfY29tbW9uLmMNCj4gQEAgLTAsMCArMSwxMTkxIEBADQoNClsuLi5dDQoNCj4gK3N0YXRpYyB2 b2lkIF9ydGw5MmRlX3JlYWRfYWRhcHRlcl9pbmZvKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3KQ0K PiArew0KPiArICAgICAgIHN0cnVjdCBydGxfcHJpdiAqcnRscHJpdiA9IHJ0bF9wcml2KGh3KTsN Cj4gKyAgICAgICBzdHJ1Y3QgcnRsX2VmdXNlICpydGxlZnVzZSA9IHJ0bF9lZnVzZShydGxfcHJp dihodykpOw0KPiArICAgICAgIHN0cnVjdCBydGxfaGFsICpydGxoYWwgPSBydGxfaGFsKHJ0bF9w cml2KGh3KSk7DQo+ICsgICAgICAgaW50IHBhcmFtc1tdID0ge1JUTDgxOTBfRUVQUk9NX0lELCBF RVBST01fVklELCBFRVBST01fRElELA0KPiArICAgICAgICAgICAgICAgICAgICAgICBFRVBST01f U1ZJRCwgRUVQUk9NX1NNSUQsIEVFUFJPTV9NQUNfQUREUl9NQUMwXzkyRCwNCj4gKyAgICAgICAg ICAgICAgICAgICAgICAgRUVQUk9NX0NIQU5ORUxfUExBTiwgRUVQUk9NX1ZFUlNJT04sIEVFUFJP TV9DVVNUT01FUl9JRCwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgQ09VTlRSWV9DT0RFX1dP UkxEX1dJREVfMTN9Ow0KDQpzdGF0aWMgY29uc3QuIA0KDQpCdXQgc2VlbWluZ2x5IHlvdSBjaGFu Z2UgaXQgYnkgbGF0dGVyIHBhdGNoLiANCg0KWy4uLl0NCg0KPiArDQo+ICtzdGF0aWMgdm9pZCBy dGw5MmRlX3VwZGF0ZV9oYWxfcmF0ZV90YWJsZShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywNCj4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGllZWU4MDIx MV9zdGEgKnN0YSkNCj4gK3sNCj4gKyAgICAgICBzdHJ1Y3QgcnRsX3ByaXYgKnJ0bHByaXYgPSBy dGxfcHJpdihodyk7DQo+ICsgICAgICAgc3RydWN0IHJ0bF9waHkgKnJ0bHBoeSA9ICZydGxwcml2 LT5waHk7DQo+ICsgICAgICAgc3RydWN0IHJ0bF9tYWMgKm1hYyA9IHJ0bF9tYWMocnRsX3ByaXYo aHcpKTsNCj4gKyAgICAgICBzdHJ1Y3QgcnRsX2hhbCAqcnRsaGFsID0gcnRsX2hhbChydGxfcHJp dihodykpOw0KPiArICAgICAgIHUzMiByYXRyX3ZhbHVlOw0KPiArICAgICAgIHU4IHJhdHJfaW5k ZXggPSAwOw0KPiArICAgICAgIHU4IG5tb2RlID0gbWFjLT5odF9lbmFibGU7DQo+ICsgICAgICAg dTggbWltb19wcyA9IElFRUU4MDIxMV9TTVBTX09GRjsNCj4gKyAgICAgICB1MTYgc2hvcnRnaV9y YXRlOw0KPiArICAgICAgIHUzMiB0bXBfcmF0cl92YWx1ZTsNCj4gKyAgICAgICB1OCBjdXJ0eGJ3 XzQwbWh6ID0gbWFjLT5id180MDsNCj4gKyAgICAgICB1OCBjdXJzaG9ydGdpXzQwbWh6ID0gKHN0 YS0+ZGVmbGluay5odF9jYXAuY2FwICYgSUVFRTgwMjExX0hUX0NBUF9TR0lfNDApID8NCj4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxIDog MDsNCj4gKyAgICAgICB1OCBjdXJzaG9ydGdpXzIwbWh6ID0gKHN0YS0+ZGVmbGluay5odF9jYXAu Y2FwICYgSUVFRTgwMjExX0hUX0NBUF9TR0lfMjApID8NCj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxIDogMDsNCj4gKyAgICAgICBlbnVt IHdpcmVsZXNzX21vZGUgd2lyZWxlc3Ntb2RlID0gbWFjLT5tb2RlOw0KDQppbiByZXZlcnNlIFgn bWFzIHRyZWUgb3JkZXIuDQoNCg0KPiArc3RhdGljIHZvaWQgcnRsOTJkZV91cGRhdGVfaGFsX3Jh dGVfbWFzayhzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywNCj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgaWVlZTgwMjExX3N0YSAqc3RhLA0KPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHU4IHJzc2lfbGV2ZWwsIGJvb2wgdXBk YXRlX2J3KQ0KPiArew0KPiArICAgICAgIHN0cnVjdCBydGxfcHJpdiAqcnRscHJpdiA9IHJ0bF9w cml2KGh3KTsNCj4gKyAgICAgICBzdHJ1Y3QgcnRsX3BoeSAqcnRscGh5ID0gJnJ0bHByaXYtPnBo eTsNCj4gKyAgICAgICBzdHJ1Y3QgcnRsX21hYyAqbWFjID0gcnRsX21hYyhydGxfcHJpdihodykp Ow0KPiArICAgICAgIHN0cnVjdCBydGxfaGFsICpydGxoYWwgPSBydGxfaGFsKHJ0bF9wcml2KGh3 KSk7DQo+ICsgICAgICAgc3RydWN0IHJ0bF9zdGFfaW5mbyAqc3RhX2VudHJ5ID0gTlVMTDsNCj4g KyAgICAgICB1MzIgcmF0cl9iaXRtYXA7DQo+ICsgICAgICAgdTggcmF0cl9pbmRleDsNCj4gKyAg ICAgICB1OCBjdXJ0eGJ3XzQwbWh6ID0gKHN0YS0+ZGVmbGluay5iYW5kd2lkdGggPj0gSUVFRTgw MjExX1NUQV9SWF9CV180MCkgPyAxIDogMDsNCj4gKyAgICAgICB1OCBjdXJzaG9ydGdpXzQwbWh6 ID0gKHN0YS0+ZGVmbGluay5odF9jYXAuY2FwICYgSUVFRTgwMjExX0hUX0NBUF9TR0lfNDApID8N Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAxIDogMDsNCj4gKyAgICAgICB1OCBjdXJzaG9ydGdpXzIwbWh6ID0gKHN0YS0+ZGVmbGluay5o dF9jYXAuY2FwICYgSUVFRTgwMjExX0hUX0NBUF9TR0lfMjApID8NCj4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxIDogMDsNCj4gKyAgICAg ICBlbnVtIHdpcmVsZXNzX21vZGUgd2lyZWxlc3Ntb2RlID0gMDsNCj4gKyAgICAgICBib29sIHNo b3J0Z2kgPSBmYWxzZTsNCj4gKyAgICAgICB1MzIgdmFsdWVbMl07DQo+ICsgICAgICAgdTggbWFj aWQgPSAwOw0KPiArICAgICAgIHU4IG1pbW9fcHMgPSBJRUVFODAyMTFfU01QU19PRkY7DQoNCmlu IHJldmVyc2UgWCdtYXMgdHJlZSBvcmRlci4NCg0KPiArdm9pZCBydGw5MmRlX3NldF9rZXkoc3Ry dWN0IGllZWU4MDIxMV9odyAqaHcsIHUzMiBrZXlfaW5kZXgsDQo+ICsgICAgICAgICAgICAgICAg ICAgIHU4ICpwX21hY2FkZHIsIGJvb2wgaXNfZ3JvdXAsIHU4IGVuY19hbGdvLA0KPiArICAgICAg ICAgICAgICAgICAgICBib29sIGlzX3dlcGtleSwgYm9vbCBjbGVhcl9hbGwpDQo+ICt7DQo+ICsg ICAgICAgc3RydWN0IHJ0bF9wcml2ICpydGxwcml2ID0gcnRsX3ByaXYoaHcpOw0KPiArICAgICAg IHN0cnVjdCBydGxfbWFjICptYWMgPSBydGxfbWFjKHJ0bF9wcml2KGh3KSk7DQo+ICsgICAgICAg c3RydWN0IHJ0bF9lZnVzZSAqcnRsZWZ1c2UgPSBydGxfZWZ1c2UocnRsX3ByaXYoaHcpKTsNCj4g KyAgICAgICBjb25zdCB1OCAqbWFjYWRkciA9IHBfbWFjYWRkcjsNCj4gKyAgICAgICB1MzIgZW50 cnlfaWQ7DQo+ICsgICAgICAgYm9vbCBpc19wYWlyd2lzZSA9IGZhbHNlOw0KPiArICAgICAgIHN0 YXRpYyBjb25zdCB1OCBjYW1fY29uc3RfYWRkcls0XVs2XSA9IHsNCj4gKyAgICAgICAgICAgICAg IHsweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwfSwNCj4gKyAgICAgICAgICAgICAg IHsweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAxfSwNCj4gKyAgICAgICAgICAgICAg IHsweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAyfSwNCj4gKyAgICAgICAgICAgICAg IHsweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAzfQ0KPiArICAgICAgIH07DQo+ICsg ICAgICAgc3RhdGljIGNvbnN0IHU4IGNhbV9jb25zdF9icm9hZFtdID0gew0KPiArICAgICAgICAg ICAgICAgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZg0KPiArICAgICAgIH07DQoN CkkgcHJlZmVyIG1vdmluZyBhcnJheSBvZiAnc3RhdGljIGNvbnN0JyB0byBiZSBmaXJzdCBkZWNs YXJhdGlvbiBvZiB0aGlzIGZ1bmN0aW9uLg0KDQpbLi4uXQ0KDQo+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0bHdpZmkvcnRsODE5MmQvcGh5X2NvbW1vbi5jDQo+ IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGx3aWZpL3J0bDgxOTJkL3BoeV9jb21t b24uYw0KPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRleCAwMDAwMDAwMDAwMDAuLjg3YzQ1 OGIyN2Y0Zg0KPiAtLS0gL2Rldi9udWxsDQo+ICsrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3Jl YWx0ZWsvcnRsd2lmaS9ydGw4MTkyZC9waHlfY29tbW9uLmMNCj4gQEAgLTAsMCArMSw4NDYgQEAN Cg0KWy4uLl0NCg0KPiArc3RhdGljIHUzMiBfcnRsOTJkX3BoeV9yZl9zZXJpYWxfcmVhZChzdHJ1 Y3QgaWVlZTgwMjExX2h3ICpodywNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBlbnVtIHJhZGlvX3BhdGggcmZwYXRoLCB1MzIgb2Zmc2V0KQ0KPiArew0KPiArICAgICAg IHN0cnVjdCBydGxfcHJpdiAqcnRscHJpdiA9IHJ0bF9wcml2KGh3KTsNCj4gKyAgICAgICBzdHJ1 Y3QgcnRsX3BoeSAqcnRscGh5ID0gJnJ0bHByaXYtPnBoeTsNCj4gKyAgICAgICBzdHJ1Y3QgYmJf cmVnX2RlZiAqcHBoeXJlZyA9ICZydGxwaHktPnBoeXJlZ19kZWZbcmZwYXRoXTsNCj4gKyAgICAg ICB1MzIgbmV3b2Zmc2V0Ow0KPiArICAgICAgIHUzMiB0bXBsb25nLCB0bXBsb25nMjsNCj4gKyAg ICAgICB1OCByZnBpX2VuYWJsZSA9IDA7DQo+ICsgICAgICAgdTMyIHJldHZhbHVlOw0KPiArDQo+ ICsgICAgICAgbmV3b2Zmc2V0ID0gb2Zmc2V0Ow0KPiArICAgICAgIHRtcGxvbmcgPSBydGxfZ2V0 X2JicmVnKGh3LCBSRlBHQTBfWEFfSFNTSVBBUkFNRVRFUjIsIE1BU0tEV09SRCk7DQo+ICsgICAg ICAgaWYgKHJmcGF0aCA9PSBSRjkwX1BBVEhfQSkNCj4gKyAgICAgICAgICAgICAgIHRtcGxvbmcy ID0gdG1wbG9uZzsNCj4gKyAgICAgICBlbHNlDQo+ICsgICAgICAgICAgICAgICB0bXBsb25nMiA9 IHJ0bF9nZXRfYmJyZWcoaHcsIHBwaHlyZWctPnJmaHNzaV9wYXJhMiwgTUFTS0RXT1JEKTsNCj4g KyAgICAgICB0bXBsb25nMiA9ICh0bXBsb25nMiAmICh+QkxTU0lSRUFEQUREUkVTUykpIHwNCj4g KyAgICAgICAgICAgICAgIChuZXdvZmZzZXQgPDwgMjMpIHwgQkxTU0lSRUFERURHRTsNCj4gKyAg ICAgICBydGxfc2V0X2JicmVnKGh3LCBSRlBHQTBfWEFfSFNTSVBBUkFNRVRFUjIsIE1BU0tEV09S RCwNCj4gKyAgICAgICAgICAgICAgICAgICAgIHRtcGxvbmcgJiAofkJMU1NJUkVBREVER0UpKTsN Cj4gKyAgICAgICB1ZGVsYXkoMTApOw0KPiArICAgICAgIHJ0bF9zZXRfYmJyZWcoaHcsIHBwaHly ZWctPnJmaHNzaV9wYXJhMiwgTUFTS0RXT1JELCB0bXBsb25nMik7DQo+ICsgICAgICAgdWRlbGF5 KDUwKTsNCj4gKyAgICAgICB1ZGVsYXkoNTApOw0KDQp1ZGVsYXkoMTAwKTsgPw0KDQpbLi5dDQoN Cj4gK3ZvaWQgcnRsOTJkX3BoeV9nZXRfaHdfcmVnX29yaWdpbmFsdmFsdWUoc3RydWN0IGllZWU4 MDIxMV9odyAqaHcpDQo+ICt7DQo+ICsgICAgICAgc3RydWN0IHJ0bF9wcml2ICpydGxwcml2ID0g cnRsX3ByaXYoaHcpOw0KPiArICAgICAgIHN0cnVjdCBydGxfcGh5ICpydGxwaHkgPSAmcnRscHJp di0+cGh5Ow0KPiArDQo+ICsgICAgICAgcnRscGh5LT5kZWZhdWx0X2luaXRpYWxnYWluWzBdID0N Cj4gKyAgICAgICAgICAgKHU4KXJ0bF9nZXRfYmJyZWcoaHcsIFJPRkRNMF9YQUFHQ0NPUkUxLCBN QVNLQllURTApOw0KPiArICAgICAgIHJ0bHBoeS0+ZGVmYXVsdF9pbml0aWFsZ2FpblsxXSA9DQo+ ICsgICAgICAgICAgICh1OClydGxfZ2V0X2JicmVnKGh3LCBST0ZETTBfWEJBR0NDT1JFMSwgTUFT S0JZVEUwKTsNCj4gKyAgICAgICBydGxwaHktPmRlZmF1bHRfaW5pdGlhbGdhaW5bMl0gPQ0KPiAr ICAgICAgICAgICAodTgpcnRsX2dldF9iYnJlZyhodywgUk9GRE0wX1hDQUdDQ09SRTEsIE1BU0tC WVRFMCk7DQo+ICsgICAgICAgcnRscGh5LT5kZWZhdWx0X2luaXRpYWxnYWluWzNdID0NCj4gKyAg ICAgICAgICAgKHU4KXJ0bF9nZXRfYmJyZWcoaHcsIFJPRkRNMF9YREFHQ0NPUkUxLCBNQVNLQllU RTApOw0KDQpJIHRoaW5rIHRoZXNlICd1OCcgY2FzdGluZyBhZmZlY3Qgbm90aGluZy4gUmVtb3Zl IHRoZW0/DQoNClsuLi5dDQoNCj4gKw0KPiArc3RhdGljIHZvaWQgX3J0bDkyZF9nZXRfdHhwb3dl cl9pbmRleChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgdTggY2hhbm5lbCwNCj4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1OCAqY2NrcG93ZXJsZXZlbCwgdTggKm9mZG1w b3dlcmxldmVsKQ0KPiArew0KPiArICAgICAgIHN0cnVjdCBydGxfcHJpdiAqcnRscHJpdiA9IHJ0 bF9wcml2KGh3KTsNCj4gKyAgICAgICBzdHJ1Y3QgcnRsX3BoeSAqcnRscGh5ID0gJnJ0bHByaXYt PnBoeTsNCj4gKyAgICAgICBzdHJ1Y3QgcnRsX2hhbCAqcnRsaGFsID0gJnJ0bHByaXYtPnJ0bGhh bDsNCj4gKyAgICAgICBzdHJ1Y3QgcnRsX2VmdXNlICpydGxlZnVzZSA9IHJ0bF9lZnVzZShydGxf cHJpdihodykpOw0KPiArICAgICAgIHU4IGluZGV4ID0gKGNoYW5uZWwgLSAxKTsNCg0KTm8gbmVl ZCBwYXJlbnRoZXNpcy4gDQoNClsuLi5dDQoNCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dp cmVsZXNzL3JlYWx0ZWsvcnRsd2lmaS9ydGw4MTkyZC9yZl9jb21tb24uYw0KPiBiL2RyaXZlcnMv bmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsd2lmaS9ydGw4MTkyZC9yZl9jb21tb24uYw0KPiBuZXcg ZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRleCAwMDAwMDAwMDAwMDAuLjhhZjE2NjE4MzY4OA0KPiAt LS0gL2Rldi9udWxsDQo+ICsrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsd2lm aS9ydGw4MTkyZC9yZl9jb21tb24uYw0KPiBAQCAtMCwwICsxLDM1MyBAQA0KDQpbLi4uXQ0KDQo+ ICtzdGF0aWMgdm9pZCBfcnRsOTJkX2dldF90eHBvd2VyX3dyaXRldmFsX2J5X3JlZ3VsYXRvcnko c3RydWN0IGllZWU4MDIxMV9odyAqaHcsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB1OCBjaGFubmVsLCB1OCBpbmRleCwNCj4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUzMiAqcG93 ZXJiYXNlMCwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHUzMiAqcG93ZXJiYXNlMSwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUzMiAqcF9vdXR3cml0ZXZhbCkNCj4gK3sNCj4g KyAgICAgICBzdHJ1Y3QgcnRsX2VmdXNlICpydGxlZnVzZSA9IHJ0bF9lZnVzZShydGxfcHJpdiho dykpOw0KPiArICAgICAgIHN0cnVjdCBydGxfcHJpdiAqcnRscHJpdiA9IHJ0bF9wcml2KGh3KTsN Cj4gKyAgICAgICBzdHJ1Y3QgcnRsX3BoeSAqcnRscGh5ID0gJnJ0bHByaXYtPnBoeTsNCj4gKyAg ICAgICB1OCBpLCBjaG5sZ3JvdXAgPSAwLCBwd3JfZGlmZl9saW1pdFs0XTsNCj4gKyAgICAgICB1 MzIgd3JpdGV2YWwgPSAwLCBjdXN0b21lcl9saW1pdCwgcmY7DQo+ICsNCj4gKyAgICAgICBmb3Ig KHJmID0gMDsgcmYgPCAyOyByZisrKSB7DQo+ICsgICAgICAgICAgICAgICBzd2l0Y2ggKHJ0bGVm dXNlLT5lZXByb21fcmVndWxhdG9yeSkgew0KPiArICAgICAgICAgICAgICAgY2FzZSAwOg0KPiAr ICAgICAgICAgICAgICAgICAgICAgICBjaG5sZ3JvdXAgPSAwOw0KPiArICAgICAgICAgICAgICAg ICAgICAgICB3cml0ZXZhbCA9IHJ0bHBoeS0+bWNzX29mZnNldA0KPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgW2Nobmxncm91cF1baW5kZXggKw0KPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHJmID8gOCA6IDApXSArICgoaW5kZXggPCAy KSA/DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3dlcmJhc2Uw W3JmXSA6DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3dlcmJh c2UxW3JmXSk7DQo+ICsgICAgICAgICAgICAgICAgICAgICAgIFJUUFJJTlQocnRscHJpdiwgRlBI WSwgUEhZX1RYUFdSLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJSVEsgYmV0 dGVyIHBlcmZvcm1hbmNlLCB3cml0ZXZhbCglYykgPSAweCV4XG4iLA0KPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHJmID09IDAgPyAnQScgOiAnQicsIHdyaXRldmFsKTsNCj4gKyAg ICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQo+ICsgICAgICAgICAgICAgICBjYXNlIDE6DQo+ ICsgICAgICAgICAgICAgICAgICAgICAgIGlmIChydGxwaHktPnB3cmdyb3VwX2NudCA9PSAxKQ0K PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNobmxncm91cCA9IDA7DQo+ICsgICAg ICAgICAgICAgICAgICAgICAgIGlmIChydGxwaHktPnB3cmdyb3VwX2NudCA+PSBNQVhfUEdfR1JP VVApIHsNCg0KVG8gcmVkdWNlIGluZGVudCwgDQoJaWYgKHJ0bHBoeS0+cHdyZ3JvdXBfY250IDwg TUFYX1BHX0dST1VQKQ0KCQlicmVhazsNCg0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGNobmxncm91cCA9IHJ0bDkyZF9waHlfZ2V0X2Nobmxncm91cF9ieXBnKGNoYW5uZWwgLSAx KTsNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocnRscGh5LT5jdXJyZW50 X2NoYW5fYncgPT0NCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSFRfQ0hB Tk5FTF9XSURUSF8yMCkNCg0Kc3RyYWlnaHRlbiBpdA0KICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGlmIChydGxwaHktPmN1cnJlbnRfY2hhbl9idyA9PSBIVF9DSEFOTkVMX1dJRFRI XzIwKQ0KDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaG5sZ3Jv dXArKzsNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlDQo+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaG5sZ3JvdXAgKz0gNDsNCj4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB3cml0ZXZhbCA9IHJ0bHBoeS0+bWNzX29mZnNldA0K PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2hubGdy b3VwXVtpbmRleCArDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIChyZiA/IDggOiAwKV0gKyAoKGluZGV4IDwgMikgPw0KPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3dlcmJhc2UwW3JmXSA6DQo+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvd2VyYmFzZTFbcmZd KTsNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSVFBSSU5UKHJ0bHByaXYsIEZQ SFksIFBIWV9UWFBXUiwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICJSZWFsdGVrIHJlZ3VsYXRvcnksIDIwTUh6LCB3cml0ZXZhbCglYykgPSAweCV4XG4iLA0KPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmYgPT0gMCA/ICdBJyA6ICdC Jywgd3JpdGV2YWwpOw0KPiArICAgICAgICAgICAgICAgICAgICAgICB9DQo+ICsgICAgICAgICAg ICAgICAgICAgICAgIGJyZWFrOw0KPiArICAgICAgICAgICAgICAgY2FzZSAyOg0KPiArICAgICAg ICAgICAgICAgICAgICAgICB3cml0ZXZhbCA9ICgoaW5kZXggPCAyKSA/IHBvd2VyYmFzZTBbcmZd IDoNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3dlcmJhc2UxW3JmXSk7 DQo+ICsgICAgICAgICAgICAgICAgICAgICAgIFJUUFJJTlQocnRscHJpdiwgRlBIWSwgUEhZX1RY UFdSLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJCZXR0ZXIgcmVndWxhdG9y eSwgd3JpdGV2YWwoJWMpID0gMHgleFxuIiwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICByZiA9PSAwID8gJ0EnIDogJ0InLCB3cml0ZXZhbCk7DQo+ICsgICAgICAgICAgICAgICAg ICAgICAgIGJyZWFrOw0KPiArICAgICAgICAgICAgICAgY2FzZSAzOg0KPiArICAgICAgICAgICAg ICAgICAgICAgICBjaG5sZ3JvdXAgPSAwOw0KPiArICAgICAgICAgICAgICAgICAgICAgICBpZiAo cnRscGh5LT5jdXJyZW50X2NoYW5fYncgPT0gSFRfQ0hBTk5FTF9XSURUSF8yMF80MCkgew0KPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJUUFJJTlQocnRscHJpdiwgRlBIWSwgUEhZ X1RYUFdSLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImN1c3Rv bWVyJ3MgbGltaXQsIDQwTUh6IHJmKCVjKSA9IDB4JXhcbiIsDQo+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICByZiA9PSAwID8gJ0EnIDogJ0InLA0KPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnRsZWZ1c2UtPnB3cmdyb3VwX2h0NDBbcmZd DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2hhbm5lbCAtIDFd KTsNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsNCj4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBSVFBSSU5UKHJ0bHByaXYsIEZQSFksIFBIWV9UWFBXUiwNCj4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjdXN0b21lcidzIGxpbWl0LCAy ME1IeiByZiglYykgPSAweCV4XG4iLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgcmYgPT0gMCA/ICdBJyA6ICdCJywNCj4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHJ0bGVmdXNlLT5wd3Jncm91cF9odDIwW3JmXQ0KPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NoYW5uZWwgLSAxXSk7DQo+ICsgICAgICAg ICAgICAgICAgICAgICAgIH0NCj4gKyAgICAgICAgICAgICAgICAgICAgICAgZm9yIChpID0gMDsg aSA8IDQ7IGkrKykgew0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB3cl9kaWZm X2xpbWl0W2ldID0gKHU4KSgocnRscGh5LT5tY3Nfb2Zmc2V0DQo+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBbY2hubGdyb3VwXVtpbmRleCArIChyZiA/IDggOiAwKV0g Jg0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDB4N2YgPDwgKGkg KiA4KSkpID4+IChpICogOCkpOw0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlm IChydGxwaHktPmN1cnJlbnRfY2hhbl9idyA9PQ0KPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBIVF9DSEFOTkVMX1dJRFRIXzIwXzQwKSB7DQo+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBpZiAocHdyX2RpZmZfbGltaXRbaV0gPg0KPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ0bGVmdXNlLT5wd3Jncm91cF9o dDQwW3JmXQ0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2No YW5uZWwgLSAxXSkNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgcHdyX2RpZmZfbGltaXRbaV0gPQ0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ0bGVmdXNlLT5wd3Jncm91cF9odDQwDQo+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3Jm XVtjaGFubmVsIC0gMV07DQoNClRoaXMgcGFydCBpcyB2ZXJ5IGhhcmQgdG8gcmVhZC4uLiANCg0K PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7DQo+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocHdyX2RpZmZfbGltaXRbaV0gPg0KPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ0bGVmdXNlLT5wd3Jn cm91cF9odDIwW3JmXVtjaGFubmVsIC0gMV0pDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHB3cl9kaWZmX2xpbWl0W2ldID0NCj4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnRsZWZ1c2UtPnB3cmdyb3Vw X2h0MjBbcmZdDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFtjaGFubmVsIC0gMV07DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg fQ0KPiArICAgICAgICAgICAgICAgICAgICAgICB9DQo+ICsgICAgICAgICAgICAgICAgICAgICAg IGN1c3RvbWVyX2xpbWl0ID0gKHB3cl9kaWZmX2xpbWl0WzNdIDw8IDI0KSB8DQo+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHB3cl9kaWZmX2xpbWl0WzJdIDw8IDE2 KSB8DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHB3cl9kaWZm X2xpbWl0WzFdIDw8IDgpIHwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAocHdyX2RpZmZfbGltaXRbMF0pOw0KPiArICAgICAgICAgICAgICAgICAgICAgICBSVFBS SU5UKHJ0bHByaXYsIEZQSFksIFBIWV9UWFBXUiwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAiQ3VzdG9tZXIncyBsaW1pdCByZiglYykgPSAweCV4XG4iLA0KPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHJmID09IDAgPyAnQScgOiAnQicsIGN1c3RvbWVyX2xpbWl0 KTsNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgd3JpdGV2YWwgPSBjdXN0b21lcl9saW1pdCAr ICgoaW5kZXggPCAyKSA/DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG93 ZXJiYXNlMFtyZl0gOiBwb3dlcmJhc2UxW3JmXSk7DQo+ICsgICAgICAgICAgICAgICAgICAgICAg IFJUUFJJTlQocnRscHJpdiwgRlBIWSwgUEhZX1RYUFdSLA0KPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICJDdXN0b21lciwgd3JpdGV2YWwgcmYoJWMpPSAweCV4XG4iLA0KPiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJmID09IDAgPyAnQScgOiAnQicsIHdyaXRldmFs KTsNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQo+ICsgICAgICAgICAgICAgICBk ZWZhdWx0Og0KPiArICAgICAgICAgICAgICAgICAgICAgICBjaG5sZ3JvdXAgPSAwOw0KPiArICAg ICAgICAgICAgICAgICAgICAgICB3cml0ZXZhbCA9IHJ0bHBoeS0+bWNzX29mZnNldFtjaG5sZ3Jv dXBdW2luZGV4ICsNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocmYgPyA4 IDogMCldICsgKChpbmRleCA8IDIpID8NCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBwb3dlcmJhc2UwW3JmXSA6IHBvd2VyYmFzZTFbcmZdKTsNCj4gKyAgICAgICAgICAgICAg ICAgICAgICAgUlRQUklOVChydGxwcml2LCBGUEhZLCBQSFlfVFhQV1IsDQo+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIlJUSyBiZXR0ZXIgcGVyZm9ybWFuY2UsIHdyaXRldmFsIHJm KCVjKSA9IDB4JXhcbiIsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmYgPT0g MCA/ICdBJyA6ICdCJywgd3JpdGV2YWwpOw0KPiArICAgICAgICAgICAgICAgICAgICAgICBicmVh azsNCj4gKyAgICAgICAgICAgICAgIH0NCj4gKyAgICAgICAgICAgICAgICoocF9vdXR3cml0ZXZh bCArIHJmKSA9IHdyaXRldmFsOw0KPiArICAgICAgIH0NCj4gK30NCj4gKw0KDQpbLi4uXQ0KDQoN Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsd2lmaS9ydGw4 MTkyZC90cnhfY29tbW9uLmMNCj4gYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0bHdp ZmkvcnRsODE5MmQvdHJ4X2NvbW1vbi5jDQo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4 IDAwMDAwMDAwMDAwMC4uMjkzNjE2YjY2MDY5DQo+IC0tLSAvZGV2L251bGwNCj4gKysrIGIvZHJp dmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGx3aWZpL3J0bDgxOTJkL3RyeF9jb21tb24uYw0K PiBAQCAtMCwwICsxLDUxNSBAQA0KDQpbLi4uXQ0KDQoNCj4gK3N0YXRpYyB2b2lkIF9ydGw5MmRl X3RyYW5zbGF0ZV9yeF9zaWduYWxfc3R1ZmYoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsDQo+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHNrX2J1 ZmYgKnNrYiwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBzdHJ1Y3QgcnRsX3N0YXRzICpwc3RhdHMsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHJ4X2Rlc2NfOTJkICpwZGVzYywNCj4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgcnhfZndpbmZv XzkyZCAqcF9kcnZpbmZvKQ0KPiArew0KPiArICAgICAgIHN0cnVjdCBydGxfbWFjICptYWMgPSBy dGxfbWFjKHJ0bF9wcml2KGh3KSk7DQo+ICsgICAgICAgc3RydWN0IHJ0bF9lZnVzZSAqcnRsZWZ1 c2UgPSBydGxfZWZ1c2UocnRsX3ByaXYoaHcpKTsNCj4gKyAgICAgICBzdHJ1Y3QgaWVlZTgwMjEx X2hkciAqaGRyOw0KPiArICAgICAgIHU4ICp0bXBfYnVmOw0KPiArICAgICAgIHU4ICpwcmFkZHI7 DQo+ICsgICAgICAgdTE2IHR5cGUsIGNmYzsNCj4gKyAgICAgICBfX2xlMTYgZmM7DQo+ICsgICAg ICAgYm9vbCBwYWNrZXRfbWF0Y2hic3NpZCwgcGFja2V0X3Rvc2VsZiwgcGFja2V0X2JlYWNvbiA9 IGZhbHNlOw0KDQppbiByZXZlcnNlIFgnbWFzIHRyZWUgb3JkZXINCg0KDQo+IGRpZmYgLS1naXQg YS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0bHdpZmkvcnRsODE5MmQvdHJ4X2NvbW1v bi5oDQo+IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGx3aWZpL3J0bDgxOTJkL3Ry eF9jb21tb24uaA0KPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRleCAwMDAwMDAwMDAwMDAu LjQ2N2UyODUyODBkYw0KPiAtLS0gL2Rldi9udWxsDQo+ICsrKyBiL2RyaXZlcnMvbmV0L3dpcmVs ZXNzL3JlYWx0ZWsvcnRsd2lmaS9ydGw4MTkyZC90cnhfY29tbW9uLmgNCg0KWy4uLl0NCg0KPiAr c3RydWN0IHJ4X2Z3aW5mb185MmQgew0KPiArICAgICAgIHU4IGdhaW5fdHJzd1s0XTsNCj4gKyAg ICAgICB1OCBwd2RiX2FsbDsNCj4gKyAgICAgICB1OCBjZm9zaG9bNF07DQo+ICsgICAgICAgdTgg Y2ZvdGFpbFs0XTsNCj4gKyAgICAgICBzOCByeGV2bVsyXTsNCj4gKyAgICAgICBzOCByeHNucls0 XTsNCj4gKyAgICAgICB1OCBwZHNuclsyXTsNCj4gKyAgICAgICB1OCBjc2lfY3VycmVudFsyXTsN Cj4gKyAgICAgICB1OCBjc2lfdGFyZ2V0WzJdOw0KPiArICAgICAgIHU4IHNpZ2V2bTsNCj4gKyAg ICAgICB1OCBtYXhfZXhfcHdyOw0KPiArICAgICAgIHU4IGV4X2ludGZfZmxhZzoxOw0KPiArICAg ICAgIHU4IHNnaV9lbjoxOw0KPiArICAgICAgIHU4IHJ4c2M6MjsNCj4gKyAgICAgICB1OCByZXNl cnZlOjQ7DQo+ICt9IF9fcGFja2VkOw0KPiArDQo+ICtzdHJ1Y3QgcnhfZGVzY185MmQgew0KPiAr ICAgICAgIHUzMiBsZW5ndGg6MTQ7DQo+ICsgICAgICAgdTMyIGNyYzMyOjE7DQo+ICsgICAgICAg dTMyIGljdmVycm9yOjE7DQo+ICsgICAgICAgdTMyIGRydl9pbmZvc2l6ZTo0Ow0KPiArICAgICAg IHUzMiBzZWN1cml0eTozOw0KPiArICAgICAgIHUzMiBxb3M6MTsNCj4gKyAgICAgICB1MzIgc2hp ZnQ6MjsNCj4gKyAgICAgICB1MzIgcGh5c3RhdHVzOjE7DQo+ICsgICAgICAgdTMyIHN3ZGVjOjE7 DQo+ICsgICAgICAgdTMyIGxhc3RzZWc6MTsNCj4gKyAgICAgICB1MzIgZmlyc3RzZWc6MTsNCj4g KyAgICAgICB1MzIgZW9yOjE7DQo+ICsgICAgICAgdTMyIG93bjoxOw0KPiArDQo+ICsgICAgICAg dTMyIG1hY2lkOjU7DQo+ICsgICAgICAgdTMyIHRpZDo0Ow0KPiArICAgICAgIHUzMiBod3JzdmQ6 NTsNCj4gKyAgICAgICB1MzIgcGFnZ3I6MTsNCj4gKyAgICAgICB1MzIgZmFnZ3I6MTsNCj4gKyAg ICAgICB1MzIgYTFfZml0OjQ7DQo+ICsgICAgICAgdTMyIGEyX2ZpdDo0Ow0KPiArICAgICAgIHUz MiBwYW06MTsNCj4gKyAgICAgICB1MzIgcHdyOjE7DQo+ICsgICAgICAgdTMyIG1vcmVkYXRhOjE7 DQo+ICsgICAgICAgdTMyIG1vcmVmcmFnOjE7DQo+ICsgICAgICAgdTMyIHR5cGU6MjsNCj4gKyAg ICAgICB1MzIgbWM6MTsNCj4gKyAgICAgICB1MzIgYmM6MTsNCj4gKw0KPiArICAgICAgIHUzMiBz ZXE6MTI7DQo+ICsgICAgICAgdTMyIGZyYWc6NDsNCj4gKyAgICAgICB1MzIgbmV4dHBrdGxlbjox NDsNCj4gKyAgICAgICB1MzIgbmV4dGluZDoxOw0KPiArICAgICAgIHUzMiByc3ZkOjE7DQo+ICsN Cj4gKyAgICAgICB1MzIgcnhtY3M6NjsNCj4gKyAgICAgICB1MzIgcnhodDoxOw0KPiArICAgICAg IHUzMiBhbXNkdToxOw0KPiArICAgICAgIHUzMiBzcGxjcDoxOw0KPiArICAgICAgIHUzMiBiYW5k d2lkdGg6MTsNCj4gKyAgICAgICB1MzIgaHRjOjE7DQo+ICsgICAgICAgdTMyIHRjcGNoa19ycHQ6 MTsNCj4gKyAgICAgICB1MzIgaXBjY2hrX3JwdDoxOw0KPiArICAgICAgIHUzMiB0Y3BjaGtfdmFs aWQ6MTsNCj4gKyAgICAgICB1MzIgaHdwY2VycjoxOw0KPiArICAgICAgIHUzMiBod3BjaW5kOjE7 DQo+ICsgICAgICAgdTMyIGl2MDoxNjsNCj4gKw0KPiArICAgICAgIHUzMiBpdjE7DQo+ICsNCj4g KyAgICAgICB1MzIgdHNmbDsNCj4gKw0KPiArICAgICAgIHUzMiBidWZmZXJhZGRyZXNzOw0KPiAr ICAgICAgIHUzMiBidWZmZXJhZGRyZXNzNjQ7DQo+ICsNCj4gK30gX19wYWNrZWQ7DQoNClRoZXNl IGFyZSBub3QgY29tcGF0aWJsZSB0byBiaWctZW5kaWFuIG1hY2hpbmUuIA0KDQpbLi4uXQ0KDQpB ZnRlciBnb2luZyB0aHJvdWdoIHRoaXMgcGF0Y2ggYWdhaW4sIEkgcmVhbGx5IHdhbnQgeW91IChv ciBzb21lb25lKSBjYW4gaGVscA0KdG8gcmVmaW5lIHRoaXMgZHJpdmVyLiBUaGUgbWFqb3IgcHJv YmxlbSBpcyByZWFkYWJpbGl0eSBpbmNsdWRpbmcNCiAtIHNob3VsZCBkZWNsYXJlIGluIHJldmVy c2UgWCdtYXMgdHJlZQ0KIC0gbGFyZ2UgZnVuY3Rpb24NCiAtIG5vIHByb3BlciBibGFuayBsaW5l cw0KIC0gdW5yZWFkYWJsZSBpbmRlbnQgdG8gZml0IDgwIGNoYXJhY3RlcnMgbGltaXQgb2YgY2hl Y2twYXRjaA0KIC0gLi4uDQoNClRoZXNlIHByb2JsZW1zIGFyZSBleGlzdGluZyBmb3IgYSBsb25n IHRpbWUsIGFuZCBub3cgbWF5IGJlIGEgZ29vZCB0aW1lIHRvDQphZGp1c3Qgc29tZSBvZiB0aGVt IHdlIGFyZSB0b3VjaGluZy4NCg0KQSB3YXkgdG8gYWRqdXN0IHRoZW0gaXMgdG8gYWRkIHBhdGNo ZXMgdG8gY29udmVydCBhYm92ZSBpdGVtcyBJIGxpc3QgDQpvbmUgYnkgb25lLiBJIGNhbiBpZ25v cmUgZmxhd3MgKG5vdCBpbnRyb2R1Y2UgYnkgdGhpcyBwYXRjaCB0aG91Z2gpIGluIHRoaXMNCnBh dGNoLCBhbmQgcmV2aWV3IGNvbWluZyBwYXRjaGVzIChidXQgc3RpbGwgaG9wZSBpbiB0aGUgc2Ft ZSBwYXRjaHNldCkgdGhhdA0KZml4IHRoZXNlIGZsYXdzLiBTaW5jZSB0aGlzIHBhdGNoc2V0IGNv bnRhaW5zIDE0IHBhdGNoZXMgYWxyZWFkeSwgbWF5YmUgd2UNCnNob3VsZCBoYXZlIGZpcnN0IHBh dGNoc2V0IHRvIGFkanVzdCBjb2RlcyB5b3Ugd2lsbCB0b3VjaCwgYW5kIHRoZW4gYWRkIDgxOTJE VQ0KYnkgc2Vjb25kIHBhdGNoc2V0LiANCg0KUGluZy1LZSANCg0K