Received: by 2002:a05:6500:1b45:b0:1f5:f2ab:c469 with SMTP id cz5csp379130lqb; Tue, 16 Apr 2024 21:04:58 -0700 (PDT) X-Forwarded-Encrypted: i=3; AJvYcCVIjzd27iV6mCOYTUFiPrCF1PTWGKIfO16RGhWQtnBs+hc0QMw1CbotHqISVA3sDEFkANeA0FVZgBhrr1E09yRyvhc83/57m6KU0bulNA== X-Google-Smtp-Source: AGHT+IFopC64I+kWs9tm4ULQRJVPn0rRFPufNLP4apL4fF8E4elu/cryD4lxkm3v8AejfixscmfZ X-Received: by 2002:a17:906:32d3:b0:a55:577e:4e2e with SMTP id k19-20020a17090632d300b00a55577e4e2emr555155ejk.20.1713326698850; Tue, 16 Apr 2024 21:04:58 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1713326698; cv=pass; d=google.com; s=arc-20160816; b=jnBxWRwet8dSLFATasCF7dW0nXE8ZSDNdi1pnVJK0ik/MG4sxVSc/g/SNLNPQ+LXJF G823OxmxFESDMgboS+9z/t5Xnea0J0Yrg9Z3rc0TKtAbBFO+EjmAu5DyF4g9SxD4TMyp hjDrPl+FgRFonTxMJMOm4ilw0eGlTHXXT+7RQOHkPxbhZ/3MMI7hkF5u5VIrvpBHlNwg lLmf5JWErWzOT+HBkM+Qd8RlfkkwF5UYRn7GoMlccRRvBEUI1nMGN3xcv81Rozcd1ACW E0aqZ5Xe9IDqc+uTSIxsLe8HegCiDiwzipD3MUf687ZMLAKFM0x9101/XtF5VWqk7ax9 njVA== 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=HbLC1omzaH+VOVhLAQ27cZ+SwUijehsqY6VP1weC7As=; fh=MYHMex9RtJ9rl7wWABazG5I8YbLVem7wb5c7A89ye8g=; b=06Li0qUS6dMNd+K1BTaT745kwyl7LrP/vL1yajHCMP+zQH8DSbkmgOSfZkuPkNgE0c Wzfm6ptQ/Z0jjnyM8nsLDu+A6Q4uRYieBNrFr/3Mtkq9qlbgxX5xQxoixrPTpT3pN8O1 kQYbazVoyY8eE8BBDBC3xS0Os9TGONfh6jbBZWEWnp+sZhFVq7jsqGWCd3x7tqCQeJpD 5VT8IO7B4MpqiSI2yPwkb88C1BEu1QUrY0UOoJ0MKwaGG8v3GVZKE7yaT60wyEgyOIYj cOKwkgJy4cEE0xgnboVZpnb3LoZioP2VpX8lMDdiWo4zsqe9DbDcxZgtU9gtLfEzxxKo wTCg==; 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-6414-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:4601:e00::3 as permitted sender) smtp.mailfrom="linux-wireless+bounces-6414-linux.lists.archive=gmail.com@vger.kernel.org" Return-Path: Received: from am.mirrors.kernel.org (am.mirrors.kernel.org. [2604:1380:4601:e00::3]) by mx.google.com with ESMTPS id qk12-20020a1709077f8c00b00a52241b8243si6528279ejc.72.2024.04.16.21.04.58 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 16 Apr 2024 21:04:58 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-wireless+bounces-6414-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:4601:e00::3 as permitted sender) client-ip=2604:1380:4601:e00::3; Authentication-Results: mx.google.com; arc=pass (i=1 spf=pass spfdomain=realtek.com); spf=pass (google.com: domain of linux-wireless+bounces-6414-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:4601:e00::3 as permitted sender) smtp.mailfrom="linux-wireless+bounces-6414-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 am.mirrors.kernel.org (Postfix) with ESMTPS id 6B1ED1F22206 for ; Wed, 17 Apr 2024 04:04:58 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 9F2173FBAD; Wed, 17 Apr 2024 04:04:54 +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 CF7293C0C for ; Wed, 17 Apr 2024 04:04:50 +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=1713326694; cv=none; b=TETk4i8m7fpYtQ0af87d+E6HA7HFINFHLyjTygtbYBI2VkhuUH58sOslc2kGNHoMfoaSzRPzImYSwaQRrJFtaTkxFn81fdSVozZFRPYHyrsYFmzszR5u8aajz1N1SDI1o8RyVGbVfmgTyfRsbytOOMqPds8ZZXmquN9WyJqpe9s= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1713326694; c=relaxed/simple; bh=HbLC1omzaH+VOVhLAQ27cZ+SwUijehsqY6VP1weC7As=; h=From:To:CC:Subject:Date:Message-ID:References:In-Reply-To: Content-Type:MIME-Version; b=Rg0pzn+PniYgvlPqAj/pakLa5neI7kA1W6ALovI+/goz0BR1VYrcKglkCVKIj8hVJsRVr4RiTGR7F/dNVrCkAKl23DBFa1Q/NF/4/XlbizUhhecdWCKOrBPn343LZBrWeI3aCdJ9dqkQvey2IhXpDM/wNurubw5HDvHSsw0t+Bg= 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 43H44JWn82960733, 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 43H44JWn82960733 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 17 Apr 2024 12:04:19 +0800 Received: from RTEXMBS02.realtek.com.tw (172.21.6.95) 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; Wed, 17 Apr 2024 12:04:20 +0800 Received: from RTEXMBS04.realtek.com.tw (172.21.6.97) by RTEXMBS02.realtek.com.tw (172.21.6.95) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.35; Wed, 17 Apr 2024 12:04:19 +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; Wed, 17 Apr 2024 12:04:19 +0800 From: Ping-Ke Shih To: Bitterblue Smith , "linux-wireless@vger.kernel.org" CC: Larry Finger , Stefan Lippers-Hollmann , Christian Hewitt Subject: RE: [PATCH v5 4/6] wifi: rtlwifi: Move code from rtl8192de to rtl8192d-common Thread-Topic: [PATCH v5 4/6] wifi: rtlwifi: Move code from rtl8192de to rtl8192d-common Thread-Index: AQHaj3NVaoRcNWiOCkuEgyRUHzdMS7Frx8LQ Date: Wed, 17 Apr 2024 04:04:19 +0000 Message-ID: <3bab3540ac644c879624ac200730fbee@realtek.com> References: <561cc9e4-3ddc-40cd-a076-2c14c44eea87@gmail.com> In-Reply-To: Accept-Language: en-US, zh-TW Content-Language: zh-TW x-kse-serverinfo: RTEXMBS02.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+IHdyb3RlOg0KPiANCj4g Q3JlYXRlIHRoZSBuZXcgbW9kdWxlIHJ0bDgxOTJkLWNvbW1vbiBhbmQgbW92ZSBzb21lIGNvZGUg aW50byBpdCBmcm9tDQo+IHJ0bDgxOTJkZS4gTm93IHRoZSBydGw4MTkyZGUgZHJpdmVyIChQQ0kp IGFuZCB0aGUgbmV3IHJ0bDgxOTJkdSBkcml2ZXINCj4gKFVTQikgY2FuIHNoYXJlIHNvbWUgb2Yg dGhlIGNvZGUuDQo+IA0KPiBUaGlzIGlzIG1vc3RseSB0aGUgY29kZSB0aGF0IHJlcXVpcmVkIGxp dHRsZSBlZmZvcnQgdG8gbWFrZSBpdA0KPiBzaGFyZWFibGUuIFRoZXJlIGFyZSBhIGZldyBtb3Jl IGZ1bmN0aW9ucyB3aGljaCB0aGV5IGNvdWxkIHNoYXJlLCB3aXRoDQo+IG1vcmUgY2hhbmdlcy4N Cj4gDQo+IEFkZCBwaHlfaXFfY2FsaWJyYXRlIG1lbWJlciB0byBzdHJ1Y3QgcnRsX2hhbF9vcHMg dG8gYWxsb3cgbW92aW5nIHRoZQ0KPiBUWCBwb3dlciB0cmFja2luZyBjb2RlIGZyb20gZG0uYy4N Cj4gDQo+IFRoZSBvdGhlciBjaGFuZ2VzIGluIHRoaXMgcGF0Y2ggYXJlIGFkanVzdGluZyB3aGl0 ZXNwYWNlLCByZW5hbWluZyBzb21lDQo+IGZ1bmN0aW9ucywgbWFraW5nIHNvbWUgYXJyYXlzIGNv bnN0LCBhbmQgbWFraW5nIGNoZWNrcGF0Y2gucGwgbGVzcw0KPiB1bmhhcHB5Lg0KPiANCj4gcnRs ODE5MmRlIGlzIGNvbXBpbGUtdGVzdGVkIG9ubHkuIHJ0bDgxOTJkLWNvbW1vbiBpcyB0ZXN0ZWQg d2l0aCB0aGUNCj4gbmV3IHJ0bDgxOTJkdSBkcml2ZXIuDQo+IA0KPiBTaWduZWQtb2ZmLWJ5OiBC aXR0ZXJibHVlIFNtaXRoIDxydGw4ODIxY2VyZmUyQGdtYWlsLmNvbT4NCg0KUGxlYXNlIGZpbmQg bXkgY29tbWVudHMgYmVsb3cuIE1vc3Qgc2hvdWxkIGJlIGZpeGVkIGJ5IHBhdGNoIDUvNiwgYW5k DQpzb21lIHNob3VsZCBiZSBpbiB0aGlzIHBhdGNoLg0KDQoNCj4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsd2lmaS9ydGw4MTkyZC9md19jb21tb24uaA0KPiBi L2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsd2lmaS9ydGw4MTkyZC9md19jb21tb24u aA0KPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRleCAwMDAwMDAwMDAwMDAuLjMzYjhiYTM2 M2NhMg0KPiAtLS0gL2Rldi9udWxsDQo+ICsrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0 ZWsvcnRsd2lmaS9ydGw4MTkyZC9md19jb21tb24uaA0KPiBAQCAtMCwwICsxLDM5IEBADQo+ICsv KiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCAqLw0KPiArLyogQ29weXJpZ2h0KGMp IDIwMDktMjAxMiAgUmVhbHRlayBDb3Jwb3JhdGlvbi4qLw0KPiArDQo+ICsjaWZuZGVmIF9fUlRM OTJEX19GV19DT01NT05fSF9fDQo+ICsjZGVmaW5lIF9fUlRMOTJEX19GV19DT01NT05fSF9fDQoN CiAgICNkZWZpbmUgX19SVEw5MkRfX0ZXX0NPTU1PTl9IX18NCiAgIC0tPg0KICAgI2RlZmluZSBf X1JUTDkyRF9GV19DT01NT05fSF9fDQoNCiAgICNkZWZpbmUgX19SVEw5MkRFX0hXX0NPTU1PTl9I X18NCiAgIC0tPg0KICAgI2RlZmluZSBfX1JUTDkyRF9IV19DT01NT05fSF9fDQoNCiAgI2RlZmlu ZSBfX1JUTDkyREVfVFJYX0NPTU1PTl9IX18NCiAgLS0+IA0KICAjZGVmaW5lIF9fUlRMOTJEX1RS WF9DT01NT05fSF9fDQoNCg0KWy4uLl0NCg0KPiArc3RhdGljIHZvaWQgX3J0bDkyZGVfcmVhZHBv d2VydmFsdWVfZnJvbXByb20oc3RydWN0IHR4cG93ZXJfaW5mbyAqcHdyaW5mbywNCj4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdTggKnJvbV9jb250ZW50LCBi b29sIGF1dG9sb2FkZmFpbCkNCj4gK3sNCj4gKyAgICAgICB1MzIgcmZwYXRoLCBlZWFkZHIsIGdy b3VwLCBvZmZzZXQxLCBvZmZzZXQyOw0KPiArICAgICAgIHU4IGk7DQo+ICsNCj4gKyAgICAgICBt ZW1zZXQocHdyaW5mbywgMCwgc2l6ZW9mKHN0cnVjdCB0eHBvd2VyX2luZm8pKTsNCj4gKyAgICAg ICBpZiAoYXV0b2xvYWRmYWlsKSB7DQo+ICsgICAgICAgICAgICAgICBmb3IgKGdyb3VwID0gMDsg Z3JvdXAgPCBDSEFOTkVMX0dST1VQX01BWDsgZ3JvdXArKykgew0KPiArICAgICAgICAgICAgICAg ICAgICAgICBmb3IgKHJmcGF0aCA9IDA7IHJmcGF0aCA8IFJGNjA1Ml9NQVhfUEFUSDsgcmZwYXRo KyspIHsNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZ3JvdXAgPCBDSEFO TkVMX0dST1VQX01BWF8yRykgew0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgcHdyaW5mby0+Y2NrX2luZGV4W3JmcGF0aF1bZ3JvdXBdID0NCj4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFRVBST01fREVGQVVMVF9UWFBPV0VSTEVW RUxfMkc7DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwd3JpbmZv LT5odDQwXzFzaW5kZXhbcmZwYXRoXVtncm91cF0gPQ0KPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIEVFUFJPTV9ERUZBVUxUX1RYUE9XRVJMRVZFTF8yRzsNCj4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugew0KPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgcHdyaW5mby0+aHQ0MF8xc2luZGV4W3JmcGF0aF1b Z3JvdXBdID0NCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBF RVBST01fREVGQVVMVF9UWFBPV0VSTEVWRUxfNUc7DQo+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgfQ0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB3cmluZm8tPmh0 NDBfMnNpbmRleGRpZmZbcmZwYXRoXVtncm91cF0gPQ0KPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBFRVBST01fREVGQVVMVF9IVDQwXzJTRElGRjsNCj4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBwd3JpbmZvLT5odDIwaW5kZXhkaWZmW3JmcGF0aF1bZ3JvdXBd ID0NCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUVQUk9NX0RFRkFVTFRf SFQyMF9ESUZGOw0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB3cmluZm8tPm9m ZG1pbmRleGRpZmZbcmZwYXRoXVtncm91cF0gPQ0KPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBFRVBST01fREVGQVVMVF9MRUdBQ1lIVFRYUE9XRVJESUZGOw0KPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHB3cmluZm8tPmh0NDBtYXhvZmZzZXRbcmZwYXRoXVtn cm91cF0gPQ0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFRVBST01fREVG QVVMVF9IVDQwX1BXUk1BWE9GRlNFVDsNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBwd3JpbmZvLT5odDIwbWF4b2Zmc2V0W3JmcGF0aF1bZ3JvdXBdID0NCj4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgRUVQUk9NX0RFRkFVTFRfSFQyMF9QV1JNQVhPRkZTRVQ7 DQo+ICsgICAgICAgICAgICAgICAgICAgICAgIH0NCj4gKyAgICAgICAgICAgICAgIH0NCj4gKyAg ICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCAzOyBpKyspIHsNCj4gKyAgICAgICAgICAgICAg ICAgICAgICAgcHdyaW5mby0+dHNzaV9hW2ldID0gRUVQUk9NX0RFRkFVTFRfVFNTSTsNCj4gKyAg ICAgICAgICAgICAgICAgICAgICAgcHdyaW5mby0+dHNzaV9iW2ldID0gRUVQUk9NX0RFRkFVTFRf VFNTSTsNCj4gKyAgICAgICAgICAgICAgIH0NCj4gKyAgICAgICAgICAgICAgIHJldHVybjsNCj4g KyAgICAgICB9DQo+ICsNCj4gKyAgICAgICAvKiBNYXliZSBhdXRvbG9hZCBPSyxidWYgdGhlIHR4 IHBvd2VyIGluZGV4IHZhbHVlIGlzIG5vdCBmaWxsZWQuDQo+ICsgICAgICAgICogSWYgd2UgZmlu ZCBpdCwgd2Ugc2V0IGl0IHRvIGRlZmF1bHQgdmFsdWUuDQo+ICsgICAgICAgICovDQo+ICsgICAg ICAgZm9yIChyZnBhdGggPSAwOyByZnBhdGggPCBSRjYwNTJfTUFYX1BBVEg7IHJmcGF0aCsrKSB7 DQo+ICsgICAgICAgICAgICAgICBmb3IgKGdyb3VwID0gMDsgZ3JvdXAgPCBDSEFOTkVMX0dST1VQ X01BWF8yRzsgZ3JvdXArKykgew0KPiArICAgICAgICAgICAgICAgICAgICAgICBlZWFkZHIgPSBF RVBST01fQ0NLX1RYX1BXUl9JTlhfMkcgKyAocmZwYXRoICogMykNCj4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKyBncm91cDsNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgcHdy aW5mby0+Y2NrX2luZGV4W3JmcGF0aF1bZ3JvdXBdID0NCj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIChyb21fY29udGVudFtlZWFkZHJdID09IDB4RkYpID8NCj4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVlYWRkciA+IDB4N0Ig Pw0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFRVBST01f REVGQVVMVF9UWFBPV0VSTEVWRUxfNUcgOg0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBFRVBST01fREVGQVVMVF9UWFBPV0VSTEVWRUxfMkcpIDoNCj4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm9tX2NvbnRlbnRbZWVh ZGRyXTsNCg0KV2l0aCBwcm9wZXIgaW5kZW50LCBpdCB3b3VsZCBiZSBjbGVhcmVyOg0KDQoJCWZv ciAoZ3JvdXAgPSAwOyBncm91cCA8IENIQU5ORUxfR1JPVVBfTUFYXzJHOyBncm91cCsrKSB7DQoJ CQllZWFkZHIgPSBFRVBST01fQ0NLX1RYX1BXUl9JTlhfMkcgKyAocmZwYXRoICogMykgKyBncm91 cDsNCgkJCXB3cmluZm8tPmNja19pbmRleFtyZnBhdGhdW2dyb3VwXSA9DQoJCQkJcm9tX2NvbnRl bnRbZWVhZGRyXSA9PSAweEZGID8NCgkJCQkoZWVhZGRyID4gMHg3QiA/DQoJCQkJIEVFUFJPTV9E RUZBVUxUX1RYUE9XRVJMRVZFTF81RyA6DQoJCQkJIEVFUFJPTV9ERUZBVUxUX1RYUE9XRVJMRVZF TF8yRykgOg0KCQkJCXJvbV9jb250ZW50W2VlYWRkcl07DQoJCX0NCg0KPiArICAgICAgICAgICAg ICAgfQ0KPiArICAgICAgIH0NCj4gKyAgICAgICBmb3IgKHJmcGF0aCA9IDA7IHJmcGF0aCA8IFJG NjA1Ml9NQVhfUEFUSDsgcmZwYXRoKyspIHsNCj4gKyAgICAgICAgICAgICAgIGZvciAoZ3JvdXAg PSAwOyBncm91cCA8IENIQU5ORUxfR1JPVVBfTUFYOyBncm91cCsrKSB7DQo+ICsgICAgICAgICAg ICAgICAgICAgICAgIG9mZnNldDEgPSBncm91cCAvIDM7DQo+ICsgICAgICAgICAgICAgICAgICAg ICAgIG9mZnNldDIgPSBncm91cCAlIDM7DQo+ICsgICAgICAgICAgICAgICAgICAgICAgIGVlYWRk ciA9IEVFUFJPTV9IVDQwXzFTX1RYX1BXUl9JTlhfMkcgKyAocmZwYXRoICogMykgKw0KPiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0MiArIG9mZnNldDEgKiAyMTsNCj4gKyAgICAg ICAgICAgICAgICAgICAgICAgcHdyaW5mby0+aHQ0MF8xc2luZGV4W3JmcGF0aF1bZ3JvdXBdID0N Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgIChyb21fY29udGVudFtlZWFkZHJdID09IDB4 RkYpID8gKGVlYWRkciA+IDB4N0IgPw0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBFRVBST01fREVGQVVMVF9UWFBPV0VSTEVWRUxfNUcgOg0KPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFRVBST01fREVGQVVMVF9UWFBP V0VSTEVWRUxfMkcpIDoNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHJvbV9jb250ZW50W2VlYWRkcl07DQoNClNpbWlsYXJseS4NCg0KPiArICAgICAg ICAgICAgICAgfQ0KPiArICAgICAgIH0NCj4gKyAgICAgICAvKiBUaGVzZSBqdXN0IGZvciA5MkQg ZWZ1c2Ugb2Zmc2V0LiAqLw0KPiArICAgICAgIGZvciAoZ3JvdXAgPSAwOyBncm91cCA8IENIQU5O RUxfR1JPVVBfTUFYOyBncm91cCsrKSB7DQo+ICsgICAgICAgICAgICAgICBmb3IgKHJmcGF0aCA9 IDA7IHJmcGF0aCA8IFJGNjA1Ml9NQVhfUEFUSDsgcmZwYXRoKyspIHsNCj4gKyAgICAgICAgICAg ICAgICAgICAgICAgaW50IGJhc2UxID0gRUVQUk9NX0hUNDBfMlNfVFhfUFdSX0lOWF9ESUZGXzJH Ow0KPiArDQo+ICsgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldDEgPSBncm91cCAvIDM7DQo+ ICsgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldDIgPSBncm91cCAlIDM7DQo+ICsNCj4gKyAg ICAgICAgICAgICAgICAgICAgICAgaWYgKHJvbV9jb250ZW50W2Jhc2UxICsgb2Zmc2V0MiArIG9m ZnNldDEgKiAyMV0gIT0gMHhGRikNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBw d3JpbmZvLT5odDQwXzJzaW5kZXhkaWZmW3JmcGF0aF1bZ3JvdXBdID0NCj4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKHJvbV9jb250ZW50W2Jhc2UxICsNCj4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldDIgKyBvZmZzZXQxICogMjFdID4+IChy ZnBhdGggKiA0KSkNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYgMHhG Ow0KDQppdCB3b3VsZCBiZSBtb3JlIHJlYWRhYmxlIHRvIG1vdmUgJyYgMHhGJyB0byB0YWlsIG9m IHByZXZpb3VzIGxpbmUgDQoNCgkJCQlwd3JpbmZvLT5odDQwXzJzaW5kZXhkaWZmW3JmcGF0aF1b Z3JvdXBdID0NCgkJCQkgICAgKHJvbV9jb250ZW50W2Jhc2UxICsNCgkJCQkgICAgIG9mZnNldDIg KyBvZmZzZXQxICogMjFdID4+IChyZnBhdGggKiA0KSkgJiAweEY7DQoNCj4gKyAgICAgICAgICAg ICAgICAgICAgICAgZWxzZQ0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB3cmlu Zm8tPmh0NDBfMnNpbmRleGRpZmZbcmZwYXRoXVtncm91cF0gPQ0KPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBFRVBST01fREVGQVVMVF9IVDQwXzJTRElGRjsNCj4gKyAgICAg ICAgICAgICAgICAgICAgICAgaWYgKHJvbV9jb250ZW50W0VFUFJPTV9IVDIwX1RYX1BXUl9JTlhf RElGRl8yRyArIG9mZnNldDINCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICsgb2Zmc2V0 MSAqIDIxXSAhPSAweEZGKQ0KDQpTcGxpdHRpbmcgaW5kZXggb2YgW10gaW50byB0d28gbGluZXMg d291bGQgaGFyZCB0byByZWFkLg0KVXNlIGEgbG9jYWwgdmFyaWFsYmUuDQoNCgkJCShhIGJsYW5r IGxpbmUpDQoJCQlvZmZzZXQgPSBFRVBST01fSFQyMF9UWF9QV1JfSU5YX0RJRkZfMkcgKyBvZmZz ZXQyICsgb2Zmc2V0MSAqIDIxOw0KCQkJaWYgKHJvbV9jb250ZW50W29mZnNldF0gIT0gMHhGRikN Cg0KV2UgY2FuIGFwcGx5IHRoaXMgcGF0dGVyIGFjcm9zcyB0aGlzIGZ1bmN0aW9uLg0KDQoNCj4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwd3JpbmZvLT5odDIwaW5kZXhkaWZmW3Jm cGF0aF1bZ3JvdXBdID0NCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHJv bV9jb250ZW50W0VFUFJPTV9IVDIwX1RYX1BXUl9JTlhfRElGRl8yRw0KPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICArIG9mZnNldDIgKyBvZmZzZXQxICogMjFdID4+IChyZnBh dGggKiA0KSkNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiAweEY7DQo+ ICsgICAgICAgICAgICAgICAgICAgICAgIGVsc2UNCj4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBwd3JpbmZvLT5odDIwaW5kZXhkaWZmW3JmcGF0aF1bZ3JvdXBdID0NCj4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUVQUk9NX0RFRkFVTFRfSFQyMF9ESUZGOw0K PiArICAgICAgICAgICAgICAgICAgICAgICBpZiAocm9tX2NvbnRlbnRbRUVQUk9NX09GRE1fVFhf UFdSX0lOWF9ESUZGXzJHICsgb2Zmc2V0Mg0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg KyBvZmZzZXQxICogMjFdICE9IDB4RkYpDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgcHdyaW5mby0+b2ZkbWluZGV4ZGlmZltyZnBhdGhdW2dyb3VwXSA9DQo+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIChyb21fY29udGVudFtFRVBST01fT0ZETV9UWF9QV1Jf SU5YX0RJRkZfMkcNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgb2Zm c2V0MiArIG9mZnNldDEgKiAyMV0gPj4gKHJmcGF0aCAqIDQpKQ0KPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgJiAweEY7DQo+ICsgICAgICAgICAgICAgICAgICAgICAgIGVs c2UNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwd3JpbmZvLT5vZmRtaW5kZXhk aWZmW3JmcGF0aF1bZ3JvdXBdID0NCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgRUVQUk9NX0RFRkFVTFRfTEVHQUNZSFRUWFBPV0VSRElGRjsNCj4gKyAgICAgICAgICAgICAg ICAgICAgICAgaWYgKHJvbV9jb250ZW50W0VFUFJPTV9IVDQwX01BWF9QV1JfT0ZGU0VUXzJHICsg b2Zmc2V0Mg0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgKyBvZmZzZXQxICogMjFdICE9 IDB4RkYpDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHdyaW5mby0+aHQ0MG1h eG9mZnNldFtyZnBhdGhdW2dyb3VwXSA9DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIChyb21fY29udGVudFtFRVBST01fSFQ0MF9NQVhfUFdSX09GRlNFVF8yRw0KPiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArIG9mZnNldDIgKyBvZmZzZXQxICogMjFd ID4+IChyZnBhdGggKiA0KSkNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg JiAweEY7DQo+ICsgICAgICAgICAgICAgICAgICAgICAgIGVsc2UNCj4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBwd3JpbmZvLT5odDQwbWF4b2Zmc2V0W3JmcGF0aF1bZ3JvdXBdID0N Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUVQUk9NX0RFRkFVTFRfSFQ0 MF9QV1JNQVhPRkZTRVQ7DQo+ICsgICAgICAgICAgICAgICAgICAgICAgIGlmIChyb21fY29udGVu dFtFRVBST01fSFQyMF9NQVhfUFdSX09GRlNFVF8yRyArIG9mZnNldDINCj4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICsgb2Zmc2V0MSAqIDIxXSAhPSAweEZGKQ0KPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHB3cmluZm8tPmh0MjBtYXhvZmZzZXRbcmZwYXRoXVtncm91cF0g PQ0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocm9tX2NvbnRlbnRbRUVQ Uk9NX0hUMjBfTUFYX1BXUl9PRkZTRVRfMkcgKw0KPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgb2Zmc2V0MiArIG9mZnNldDEgKiAyMV0gPj4gKHJmcGF0aCAqIDQpKSAmDQo+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweEY7DQo+ICsgICAgICAgICAg ICAgICAgICAgICAgIGVsc2UNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwd3Jp bmZvLT5odDIwbWF4b2Zmc2V0W3JmcGF0aF1bZ3JvdXBdID0NCj4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgRUVQUk9NX0RFRkFVTFRfSFQyMF9QV1JNQVhPRkZTRVQ7DQo+ICsg ICAgICAgICAgICAgICB9DQo+ICsgICAgICAgfQ0KPiArICAgICAgIGlmIChyb21fY29udGVudFtF RVBST01fVFNTSV9BXzVHXSAhPSAweEZGKSB7DQo+ICsgICAgICAgICAgICAgICAvKiA1R0wgKi8N Cj4gKyAgICAgICAgICAgICAgIHB3cmluZm8tPnRzc2lfYVswXSA9IHJvbV9jb250ZW50W0VFUFJP TV9UU1NJX0FfNUddICYgMHgzRjsNCj4gKyAgICAgICAgICAgICAgIHB3cmluZm8tPnRzc2lfYlsw XSA9IHJvbV9jb250ZW50W0VFUFJPTV9UU1NJX0JfNUddICYgMHgzRjsNCj4gKyAgICAgICAgICAg ICAgIC8qIDVHTSAqLw0KPiArICAgICAgICAgICAgICAgcHdyaW5mby0+dHNzaV9hWzFdID0gcm9t X2NvbnRlbnRbRUVQUk9NX1RTU0lfQUJfNUddICYgMHgzRjsNCj4gKyAgICAgICAgICAgICAgIHB3 cmluZm8tPnRzc2lfYlsxXSA9DQo+ICsgICAgICAgICAgICAgICAgICAgKHJvbV9jb250ZW50W0VF UFJPTV9UU1NJX0FCXzVHXSAmIDB4QzApID4+IDYgfA0KPiArICAgICAgICAgICAgICAgICAgIChy b21fY29udGVudFtFRVBST01fVFNTSV9BQl81RyArIDFdICYgMHgwRikgPDwgMjsNCj4gKyAgICAg ICAgICAgICAgIC8qIDVHSCAqLw0KPiArICAgICAgICAgICAgICAgcHdyaW5mby0+dHNzaV9hWzJd ID0gKHJvbV9jb250ZW50W0VFUFJPTV9UU1NJX0FCXzVHICsgMV0gJg0KPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIDB4RjApID4+IDQgfA0KPiArICAgICAgICAgICAgICAg ICAgIChyb21fY29udGVudFtFRVBST01fVFNTSV9BQl81RyArIDJdICYgMHgwMykgPDwgNDsNCj4g KyAgICAgICAgICAgICAgIHB3cmluZm8tPnRzc2lfYlsyXSA9IChyb21fY29udGVudFtFRVBST01f VFNTSV9BQl81RyArIDJdICYNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAweEZDKSA+PiAyOw0KPiArICAgICAgIH0gZWxzZSB7DQo+ICsgICAgICAgICAgICAgICBmb3Ig KGkgPSAwOyBpIDwgMzsgaSsrKSB7DQo+ICsgICAgICAgICAgICAgICAgICAgICAgIHB3cmluZm8t PnRzc2lfYVtpXSA9IEVFUFJPTV9ERUZBVUxUX1RTU0k7DQo+ICsgICAgICAgICAgICAgICAgICAg ICAgIHB3cmluZm8tPnRzc2lfYltpXSA9IEVFUFJPTV9ERUZBVUxUX1RTU0k7DQo+ICsgICAgICAg ICAgICAgICB9DQo+ICsgICAgICAgfQ0KPiArfQ0KPiArDQoNClsuLi5dDQoNCj4gK3N0YXRpYyB2 b2lkIF9ydGw5MmRlX3JlYWRfYWRhcHRlcl9pbmZvKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3KQ0K PiArew0KPiArICAgICAgIHN0cnVjdCBydGxfcHJpdiAqcnRscHJpdiA9IHJ0bF9wcml2KGh3KTsN Cj4gKyAgICAgICBzdHJ1Y3QgcnRsX2VmdXNlICpydGxlZnVzZSA9IHJ0bF9lZnVzZShydGxfcHJp dihodykpOw0KPiArICAgICAgIHN0cnVjdCBydGxfaGFsICpydGxoYWwgPSBydGxfaGFsKHJ0bF9w cml2KGh3KSk7DQo+ICsgICAgICAgaW50IHBhcmFtc1tdID0ge1JUTDgxOTBfRUVQUk9NX0lELCBF RVBST01fVklELCBFRVBST01fRElELA0KPiArICAgICAgICAgICAgICAgICAgICAgICBFRVBST01f U1ZJRCwgRUVQUk9NX1NNSUQsIEVFUFJPTV9NQUNfQUREUl9NQUMwXzkyRCwNCj4gKyAgICAgICAg ICAgICAgICAgICAgICAgRUVQUk9NX0NIQU5ORUxfUExBTiwgRUVQUk9NX1ZFUlNJT04sIEVFUFJP TV9DVVNUT01FUl9JRCwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgQ09VTlRSWV9DT0RFX1dP UkxEX1dJREVfMTN9Ow0KPiArICAgICAgIGludCBpOw0KPiArICAgICAgIHUxNiB1c3ZhbHVlOw0K PiArICAgICAgIHU4ICpod2luZm87DQo+ICsNCj4gKyAgICAgICBod2luZm8gPSBremFsbG9jKEhX U0VUX01BWF9TSVpFLCBHRlBfS0VSTkVMKTsNCj4gKyAgICAgICBpZiAoIWh3aW5mbykNCj4gKyAg ICAgICAgICAgICAgIHJldHVybjsNCj4gKw0KPiArICAgICAgIGlmIChydGxfZ2V0X2h3aW5mbyho dywgcnRscHJpdiwgSFdTRVRfTUFYX1NJWkUsIGh3aW5mbywgcGFyYW1zKSkNCj4gKyAgICAgICAg ICAgICAgIGdvdG8gZXhpdDsNCj4gKw0KPiArICAgICAgIF9ydGw5MmRlX2VmdXNlX3VwZGF0ZV9j aGlwX3ZlcnNpb24oaHcpOw0KPiArICAgICAgIF9ydGw5MmRlX3JlYWRfbWFjcGh5bW9kZV9hbmRf YmFuZHR5cGUoaHcsIGh3aW5mbyk7DQo+ICsNCj4gKyAgICAgICAvKiBSZWFkIFBlcm1hbmVudCBN QUMgYWRkcmVzcyBmb3IgMm5kIGludGVyZmFjZSAqLw0KPiArICAgICAgIGlmIChydGxoYWwtPmlu dGVyZmFjZWluZGV4ICE9IDApIHsNCj4gKyAgICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCA2 OyBpICs9IDIpIHsNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgdXN2YWx1ZSA9ICoodTE2ICop Jmh3aW5mb1tFRVBST01fTUFDX0FERFJfTUFDMV85MkQgKyBpXTsNCj4gKyAgICAgICAgICAgICAg ICAgICAgICAgKigodTE2ICopKCZydGxlZnVzZS0+ZGV2X2FkZHJbaV0pKSA9IHVzdmFsdWU7DQoN CkNvcHlpbmcgdTE2IGxvb2tzIHdlaXJkLiBJIGd1ZXNzIGl0IHdvdWxkIGxpa2UgdG8gc3dhcCBi eXRlcyAoZW5kaWFuIHByb2JsZW0pLg0KQXQgbGVhc3QgaXQgc2hvdWxkIGJlICdfX2xlMTYnIG9y ICdfX2JlMTYnIGJlY2F1c2UgaHdpbmZvW10gaXMgZnJvbSBlZnVzZS4NCg0KPiArICAgICAgICAg ICAgICAgfQ0KPiArICAgICAgIH0NCj4gKyAgICAgICBydGxwcml2LT5jZmctPm9wcy0+c2V0X2h3 X3JlZyhodywgSFdfVkFSX0VUSEVSX0FERFIsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgcnRsZWZ1c2UtPmRldl9hZGRyKTsNCj4gKyAgICAgICBydGxfZGJnKHJ0bHBy aXYsIENPTVBfSU5JVCwgREJHX0RNRVNHLCAiJXBNXG4iLCBydGxlZnVzZS0+ZGV2X2FkZHIpOw0K PiArICAgICAgIF9ydGw5MmRlX3JlYWRfdHhwb3dlcl9pbmZvKGh3LCBydGxlZnVzZS0+YXV0b2xv YWRfZmFpbGZsYWcsIGh3aW5mbyk7DQo+ICsNCj4gKyAgICAgICAvKiBSZWFkIENoYW5uZWwgUGxh biAqLw0KPiArICAgICAgIHN3aXRjaCAocnRsaGFsLT5iYW5kc2V0KSB7DQo+ICsgICAgICAgY2Fz ZSBCQU5EX09OXzJfNEc6DQo+ICsgICAgICAgICAgICAgICBydGxlZnVzZS0+Y2hhbm5lbF9wbGFu ID0gQ09VTlRSWV9DT0RFX1RFTEVDOw0KPiArICAgICAgICAgICAgICAgYnJlYWs7DQo+ICsgICAg ICAgY2FzZSBCQU5EX09OXzVHOg0KPiArICAgICAgICAgICAgICAgcnRsZWZ1c2UtPmNoYW5uZWxf cGxhbiA9IENPVU5UUllfQ09ERV9GQ0M7DQo+ICsgICAgICAgICAgICAgICBicmVhazsNCj4gKyAg ICAgICBjYXNlIEJBTkRfT05fQk9USDoNCj4gKyAgICAgICAgICAgICAgIHJ0bGVmdXNlLT5jaGFu bmVsX3BsYW4gPSBDT1VOVFJZX0NPREVfRkNDOw0KPiArICAgICAgICAgICAgICAgYnJlYWs7DQo+ ICsgICAgICAgZGVmYXVsdDoNCj4gKyAgICAgICAgICAgICAgIHJ0bGVmdXNlLT5jaGFubmVsX3Bs YW4gPSBDT1VOVFJZX0NPREVfRkNDOw0KPiArICAgICAgICAgICAgICAgYnJlYWs7DQo+ICsgICAg ICAgfQ0KPiArICAgICAgIHJ0bGVmdXNlLT50eHB3cl9mcm9tZXByb20gPSB0cnVlOw0KPiArZXhp dDoNCj4gKyAgICAgICBrZnJlZShod2luZm8pOw0KPiArfQ0KPiArDQoNClsuLi5dDQoNCg0KPiAr c3RhdGljIHZvaWQgcnRsOTJkX3BoeV9zZXRfaW8oc3RydWN0IGllZWU4MDIxMV9odyAqaHcpDQo+ ICt7DQo+ICsgICAgICAgc3RydWN0IHJ0bF9wcml2ICpydGxwcml2ID0gcnRsX3ByaXYoaHcpOw0K PiArICAgICAgIHN0cnVjdCBkaWdfdCAqZGVfZGlndGFibGUgPSAmcnRscHJpdi0+ZG1fZGlndGFi bGU7DQo+ICsgICAgICAgc3RydWN0IHJ0bF9waHkgKnJ0bHBoeSA9ICZydGxwcml2LT5waHk7DQo+ ICsNCj4gKyAgICAgICBydGxfZGJnKHJ0bHByaXYsIENPTVBfQ01ELCBEQkdfVFJBQ0UsDQo+ICsg ICAgICAgICAgICAgICAiLS0tPkNtZCglI3gpLCBzZXRfaW9faW5wcm9ncmVzcyglZClcbiIsDQo+ ICsgICAgICAgICAgICAgICBydGxwaHktPmN1cnJlbnRfaW9fdHlwZSwgcnRscGh5LT5zZXRfaW9f aW5wcm9ncmVzcyk7DQoNCmEgYmxhbmsgbGluZQ0KDQo+ICsgICAgICAgc3dpdGNoIChydGxwaHkt PmN1cnJlbnRfaW9fdHlwZSkgew0KPiArICAgICAgIGNhc2UgSU9fQ01EX1JFU1VNRV9ETV9CWV9T Q0FOOg0KPiArICAgICAgICAgICAgICAgZGVfZGlndGFibGUtPmN1cl9pZ3ZhbHVlID0gcnRscGh5 LT5pbml0Z2Fpbl9iYWNrdXAueGFhZ2Njb3JlMTsNCj4gKyAgICAgICAgICAgICAgIHJ0bDkyZF9k bV93cml0ZV9kaWcoaHcpOw0KPiArICAgICAgICAgICAgICAgcnRsOTJkX3BoeV9zZXRfdHhwb3dl cl9sZXZlbChodywgcnRscGh5LT5jdXJyZW50X2NoYW5uZWwpOw0KPiArICAgICAgICAgICAgICAg YnJlYWs7DQo+ICsgICAgICAgY2FzZSBJT19DTURfUEFVU0VfRE1fQllfU0NBTjoNCj4gKyAgICAg ICAgICAgICAgIHJ0bHBoeS0+aW5pdGdhaW5fYmFja3VwLnhhYWdjY29yZTEgPSBkZV9kaWd0YWJs ZS0+Y3VyX2lndmFsdWU7DQo+ICsgICAgICAgICAgICAgICBkZV9kaWd0YWJsZS0+Y3VyX2lndmFs dWUgPSAweDM3Ow0KPiArICAgICAgICAgICAgICAgcnRsOTJkX2RtX3dyaXRlX2RpZyhodyk7DQo+ ICsgICAgICAgICAgICAgICBicmVhazsNCj4gKyAgICAgICBkZWZhdWx0Og0KPiArICAgICAgICAg ICAgICAgcHJfZXJyKCJzd2l0Y2ggY2FzZSAlI3ggbm90IHByb2Nlc3NlZFxuIiwNCj4gKyAgICAg ICAgICAgICAgICAgICAgICBydGxwaHktPmN1cnJlbnRfaW9fdHlwZSk7DQo+ICsgICAgICAgICAg ICAgICBicmVhazsNCj4gKyAgICAgICB9DQoNCg0KYSBibGFuayBsaW5lDQoNCj4gKyAgICAgICBy dGxwaHktPnNldF9pb19pbnByb2dyZXNzID0gZmFsc2U7DQo+ICsgICAgICAgcnRsX2RiZyhydGxw cml2LCBDT01QX0NNRCwgREJHX1RSQUNFLCAiPC0tLSglI3gpXG4iLA0KPiArICAgICAgICAgICAg ICAgcnRscGh5LT5jdXJyZW50X2lvX3R5cGUpOw0KPiArfQ0KPiArDQo+ICtib29sIHJ0bDkyZF9w aHlfc2V0X2lvX2NtZChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgZW51bSBpb190eXBlIGlvdHlw ZSkNCj4gK3sNCj4gKyAgICAgICBzdHJ1Y3QgcnRsX3ByaXYgKnJ0bHByaXYgPSBydGxfcHJpdiho dyk7DQo+ICsgICAgICAgc3RydWN0IHJ0bF9waHkgKnJ0bHBoeSA9ICZydGxwcml2LT5waHk7DQo+ ICsgICAgICAgYm9vbCBwb3N0cHJvY2Vzc2luZyA9IGZhbHNlOw0KPiArDQo+ICsgICAgICAgcnRs X2RiZyhydGxwcml2LCBDT01QX0NNRCwgREJHX1RSQUNFLA0KPiArICAgICAgICAgICAgICAgIi0t PklPIENtZCglI3gpLCBzZXRfaW9faW5wcm9ncmVzcyglZClcbiIsDQo+ICsgICAgICAgICAgICAg ICAgaW90eXBlLCBydGxwaHktPnNldF9pb19pbnByb2dyZXNzKTsNCg0KYSBibGFuayBsaW5lDQoN Cj4gKyAgICAgICBkbyB7DQo+ICsgICAgICAgICAgICAgICBzd2l0Y2ggKGlvdHlwZSkgew0KPiAr ICAgICAgICAgICAgICAgY2FzZSBJT19DTURfUkVTVU1FX0RNX0JZX1NDQU46DQo+ICsgICAgICAg ICAgICAgICAgICAgICAgIHJ0bF9kYmcocnRscHJpdiwgQ09NUF9DTUQsIERCR19UUkFDRSwNCj4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiW0lPIENNRF0gUmVzdW1lIERNIGFmdGVy IHNjYW5cbiIpOw0KPiArICAgICAgICAgICAgICAgICAgICAgICBwb3N0cHJvY2Vzc2luZyA9IHRy dWU7DQo+ICsgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KPiArICAgICAgICAgICAgICAg Y2FzZSBJT19DTURfUEFVU0VfRE1fQllfU0NBTjoNCj4gKyAgICAgICAgICAgICAgICAgICAgICAg cnRsX2RiZyhydGxwcml2LCBDT01QX0NNRCwgREJHX1RSQUNFLA0KPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICJbSU8gQ01EXSBQYXVzZSBETSBiZWZvcmUgc2NhblxuIik7DQo+ICsg ICAgICAgICAgICAgICAgICAgICAgIHBvc3Rwcm9jZXNzaW5nID0gdHJ1ZTsNCj4gKyAgICAgICAg ICAgICAgICAgICAgICAgYnJlYWs7DQo+ICsgICAgICAgICAgICAgICBkZWZhdWx0Og0KPiArICAg ICAgICAgICAgICAgICAgICAgICBwcl9lcnIoInN3aXRjaCBjYXNlICUjeCBub3QgcHJvY2Vzc2Vk XG4iLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW90eXBlKTsNCj4gKyAgICAg ICAgICAgICAgICAgICAgICAgYnJlYWs7DQo+ICsgICAgICAgICAgICAgICB9DQo+ICsgICAgICAg fSB3aGlsZSAoZmFsc2UpOw0KDQphIGJsYW5rIGxpbmUNCg0KPiArICAgICAgIGlmIChwb3N0cHJv Y2Vzc2luZyAmJiAhcnRscGh5LT5zZXRfaW9faW5wcm9ncmVzcykgew0KPiArICAgICAgICAgICAg ICAgcnRscGh5LT5zZXRfaW9faW5wcm9ncmVzcyA9IHRydWU7DQo+ICsgICAgICAgICAgICAgICBy dGxwaHktPmN1cnJlbnRfaW9fdHlwZSA9IGlvdHlwZTsNCj4gKyAgICAgICB9IGVsc2Ugew0KPiAr ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KPiArICAgICAgIH0NCg0KYSBibGFuayBsaW5l DQoNCj4gKyAgICAgICBydGw5MmRfcGh5X3NldF9pbyhodyk7DQo+ICsgICAgICAgcnRsX2RiZyhy dGxwcml2LCBDT01QX0NNRCwgREJHX1RSQUNFLCAiPC0tSU8gVHlwZSglI3gpXG4iLCBpb3R5cGUp Ow0KPiArICAgICAgIHJldHVybiB0cnVlOw0KPiArfQ0KPiArRVhQT1JUX1NZTUJPTF9HUEwocnRs OTJkX3BoeV9zZXRfaW9fY21kKTsNCj4gKw0KDQpbLi4uXQ0KDQo+ICsNCj4gK3ZvaWQgcnRsOTJk X3BoeV9yZjYwNTJfc2V0X2JhbmR3aWR0aChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgdTggYmFu ZHdpZHRoKQ0KPiArew0KPiArICAgICAgIHN0cnVjdCBydGxfcHJpdiAqcnRscHJpdiA9IHJ0bF9w cml2KGh3KTsNCj4gKyAgICAgICBzdHJ1Y3QgcnRsX3BoeSAqcnRscGh5ID0gJnJ0bHByaXYtPnBo eTsNCj4gKyAgICAgICB1OCByZnBhdGg7DQo+ICsNCj4gKyAgICAgICBzd2l0Y2ggKGJhbmR3aWR0 aCkgew0KPiArICAgICAgIGNhc2UgSFRfQ0hBTk5FTF9XSURUSF8yMDoNCj4gKyAgICAgICAgICAg ICAgIGZvciAocmZwYXRoID0gMDsgcmZwYXRoIDwgcnRscGh5LT5udW1fdG90YWxfcmZwYXRoOyBy ZnBhdGgrKykgew0KPiArICAgICAgICAgICAgICAgICAgICAgICBydGxwaHktPnJmcmVnX2Nobmx2 YWxbcmZwYXRoXSA9ICgocnRscGh5LT5yZnJlZ19jaG5sdmFsDQo+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBbcmZwYXRoXSAmIDB4ZmZmZmYzZmYpIHwgMHgwNDAwKTsN Cg0KW10gc2hvdWxkIGJlIHRvZ2V0aGVyIHdpdGggdmFyaWFibGVzIA0KDQoJCQlydGxwaHktPnJm cmVnX2Nobmx2YWxbcmZwYXRoXSA9DQoJCQkJKChydGxwaHktPnJmcmVnX2Nobmx2YWxbcmZwYXRo XSAmIDB4ZmZmZmYzZmYpIHwgMHgwNDAwKTsNCg0KDQo+ICsgICAgICAgICAgICAgICAgICAgICAg IHJ0bF9zZXRfcmZyZWcoaHcsIHJmcGF0aCwgUkZfQ0hOTEJXLCBCSVQoMTApIHwNCj4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCSVQoMTEpLCAweDAxKTsNCj4gKw0KPiAr ICAgICAgICAgICAgICAgICAgICAgICBydGxfZGJnKHJ0bHByaXYsIENPTVBfUkYsIERCR19MT1VE LA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIyME0gUkYgMHgxOCA9IDB4JXhc biIsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnRscGh5LT5yZnJlZ19jaG5s dmFsW3JmcGF0aF0pOw0KPiArICAgICAgICAgICAgICAgfQ0KPiArDQo+ICsgICAgICAgICAgICAg ICBicmVhazsNCj4gKyAgICAgICBjYXNlIEhUX0NIQU5ORUxfV0lEVEhfMjBfNDA6DQo+ICsgICAg ICAgICAgICAgICBmb3IgKHJmcGF0aCA9IDA7IHJmcGF0aCA8IHJ0bHBoeS0+bnVtX3RvdGFsX3Jm cGF0aDsgcmZwYXRoKyspIHsNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgcnRscGh5LT5yZnJl Z19jaG5sdmFsW3JmcGF0aF0gPQ0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgKChydGxw aHktPnJmcmVnX2Nobmx2YWxbcmZwYXRoXSAmIDB4ZmZmZmYzZmYpKTsNCj4gKyAgICAgICAgICAg ICAgICAgICAgICAgcnRsX3NldF9yZnJlZyhodywgcmZwYXRoLCBSRl9DSE5MQlcsIEJJVCgxMCkg fCBCSVQoMTEpLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAp Ow0KPiArICAgICAgICAgICAgICAgICAgICAgICBydGxfZGJnKHJ0bHByaXYsIENPTVBfUkYsIERC R19MT1VELA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICI0ME0gUkYgMHgxOCA9 IDB4JXhcbiIsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnRscGh5LT5yZnJl Z19jaG5sdmFsW3JmcGF0aF0pOw0KPiArICAgICAgICAgICAgICAgfQ0KPiArICAgICAgICAgICAg ICAgYnJlYWs7DQo+ICsgICAgICAgZGVmYXVsdDoNCj4gKyAgICAgICAgICAgICAgIHByX2Vycigi dW5rbm93biBiYW5kd2lkdGg6ICUjWFxuIiwgYmFuZHdpZHRoKTsNCj4gKyAgICAgICAgICAgICAg IGJyZWFrOw0KPiArICAgICAgIH0NCj4gK30NCg0KWy4uLl0NCg0KDQo+ICsNCj4gK3N0YXRpYyB2 b2lkIF9ydGw5MmRfcGh5X2dldF9wb3dlcl9iYXNlKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LA0K PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1OCAqcHBvd2VybGV2ZWws IHU4IGNoYW5uZWwsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUz MiAqb2ZkbWJhc2UsIHUzMiAqbWNzYmFzZSkNCj4gK3sNCj4gKyAgICAgICBzdHJ1Y3QgcnRsX2Vm dXNlICpydGxlZnVzZSA9IHJ0bF9lZnVzZShydGxfcHJpdihodykpOw0KPiArICAgICAgIHN0cnVj dCBydGxfcHJpdiAqcnRscHJpdiA9IHJ0bF9wcml2KGh3KTsNCj4gKyAgICAgICBzdHJ1Y3QgcnRs X3BoeSAqcnRscGh5ID0gJnJ0bHByaXYtPnBoeTsNCj4gKyAgICAgICB1MzIgcG93ZXJiYXNlMCwg cG93ZXJiYXNlMTsNCj4gKyAgICAgICB1OCBsZWdhY3lfcHdyZGlmZiwgaHQyMF9wd3JkaWZmOw0K PiArICAgICAgIHU4IGksIHBvd2VybGV2ZWxbMl07DQo+ICsNCj4gKyAgICAgICBmb3IgKGkgPSAw OyBpIDwgMjsgaSsrKSB7DQo+ICsgICAgICAgICAgICAgICBwb3dlcmxldmVsW2ldID0gcHBvd2Vy bGV2ZWxbaV07DQo+ICsgICAgICAgICAgICAgICBsZWdhY3lfcHdyZGlmZiA9IHJ0bGVmdXNlLT50 eHB3cl9sZWdhY3lodGRpZmZbaV1bY2hhbm5lbCAtIDFdOw0KPiArICAgICAgICAgICAgICAgcG93 ZXJiYXNlMCA9IHBvd2VybGV2ZWxbaV0gKyBsZWdhY3lfcHdyZGlmZjsNCj4gKyAgICAgICAgICAg ICAgIHBvd2VyYmFzZTAgPSAocG93ZXJiYXNlMCA8PCAyNCkgfCAocG93ZXJiYXNlMCA8PCAxNikg fA0KPiArICAgICAgICAgICAgICAgICAgIChwb3dlcmJhc2UwIDw8IDgpIHwgcG93ZXJiYXNlMDsN Cg0KCQlwb3dlcmJhc2UwID0gKHBvd2VyYmFzZTAgPDwgMjQpIHwgKHBvd2VyYmFzZTAgPDwgMTYp IHwNCgkJCSAgICAgKHBvd2VyYmFzZTAgPDwgOCkgfCBwb3dlcmJhc2UwOw0KDQo+ICsgICAgICAg ICAgICAgICAqKG9mZG1iYXNlICsgaSkgPSBwb3dlcmJhc2UwOw0KPiArICAgICAgICAgICAgICAg UlRQUklOVChydGxwcml2LCBGUEhZLCBQSFlfVFhQV1IsDQo+ICsgICAgICAgICAgICAgICAgICAg ICAgICIgW09GRE0gcG93ZXIgYmFzZSBpbmRleCByZiglYykgPSAweCV4XVxuIiwNCj4gKyAgICAg ICAgICAgICAgICAgICAgICAgaSA9PSAwID8gJ0EnIDogJ0InLCAqKG9mZG1iYXNlICsgaSkpOw0K PiArICAgICAgIH0NCj4gKw0KPiArICAgICAgIGZvciAoaSA9IDA7IGkgPCAyOyBpKyspIHsNCj4g KyAgICAgICAgICAgICAgIGlmIChydGxwaHktPmN1cnJlbnRfY2hhbl9idyA9PSBIVF9DSEFOTkVM X1dJRFRIXzIwKSB7DQo+ICsgICAgICAgICAgICAgICAgICAgICAgIGh0MjBfcHdyZGlmZiA9IHJ0 bGVmdXNlLT50eHB3cl9odDIwZGlmZltpXVtjaGFubmVsIC0gMV07DQo+ICsgICAgICAgICAgICAg ICAgICAgICAgIHBvd2VybGV2ZWxbaV0gKz0gaHQyMF9wd3JkaWZmOw0KPiArICAgICAgICAgICAg ICAgfQ0KPiArICAgICAgICAgICAgICAgcG93ZXJiYXNlMSA9IHBvd2VybGV2ZWxbaV07DQo+ICsg ICAgICAgICAgICAgICBwb3dlcmJhc2UxID0gKHBvd2VyYmFzZTEgPDwgMjQpIHwgKHBvd2VyYmFz ZTEgPDwgMTYpIHwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAocG93ZXJiYXNlMSA8 PCA4KSB8IHBvd2VyYmFzZTE7DQo+ICsgICAgICAgICAgICAgICAqKG1jc2Jhc2UgKyBpKSA9IHBv d2VyYmFzZTE7DQo+ICsgICAgICAgICAgICAgICBSVFBSSU5UKHJ0bHByaXYsIEZQSFksIFBIWV9U WFBXUiwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgIiBbTUNTIHBvd2VyIGJhc2UgaW5kZXgg cmYoJWMpID0gMHgleF1cbiIsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgIGkgPT0gMCA/ICdB JyA6ICdCJywgKihtY3NiYXNlICsgaSkpOw0KPiArICAgICAgIH0NCj4gK30NCj4gKw0KDQo=