From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-8.0 required=3.0 tests=BAYES_00,DATE_IN_PAST_06_12, DKIM_ADSP_CUSTOM_MED,DKIM_SIGNED,DKIM_VALID,FREEMAIL_FORGED_FROMDOMAIN, FREEMAIL_FROM,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id C6FFCC433DF for ; Wed, 14 Oct 2020 10:35:08 +0000 (UTC) Received: from merlin.infradead.org (merlin.infradead.org [205.233.59.134]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 2CA2520878 for ; Wed, 14 Oct 2020 10:35:07 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="CQvd2YeK"; dkim=fail reason="signature verification failed" (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="Nme3cGr+" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 2CA2520878 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-mediatek-bounces+linux-mediatek=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=merlin.20170209; h=Sender:Content-Transfer-Encoding: Content-Type:Cc:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:To:Subject:Message-ID:Date:From:In-Reply-To: References:MIME-Version:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=kfbZhgQxdTu/hBCfAuG02p6mpp1RP10RBMRkHWJ3Ii0=; b=CQvd2YeKha12Bmz7btVNFNh0d 5ckVUt7jyf0YWuwsr6Bv01I2Xjbr++2PDoW373xQVN6qS+sJJu5nHJ+3/I0W4yCUk8rt3apOMaOYv QvevEjc6Cr9FrvaguyU8Mtuxnq/Ds52JKH3wnodSQC9S9u/tQ3M5Phk746VucHHGDEVo4EaTHj9l0 giH9mlH+juPx6Dx6Y6DKGzalJPnviropetx5AEWLeKr7Wh+FWbjecLKowdK6y3ejRKTuBVCI/E/0r 5FvGsG7aMblALzJ/dEMaBDAouf6XJCYSjLGTLMU7jcIWO5H6n+l27WQ5nCBcml20BjM4dVvGVAbab XLFESk4NQ==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1kSe7V-00013V-5o; Wed, 14 Oct 2020 10:34:57 +0000 Received: from mail-ot1-x344.google.com ([2607:f8b0:4864:20::344]) by merlin.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1kSe7Q-00012C-4o; Wed, 14 Oct 2020 10:34:54 +0000 Received: by mail-ot1-x344.google.com with SMTP id e20so2916895otj.11; Wed, 14 Oct 2020 03:34:49 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc:content-transfer-encoding; bh=VNigyW8y4Y35XUJyyPUeAzbGrb+duf3QpiVxZqysLwA=; b=Nme3cGr+ArDU0DVR4rfuBNnk6iBw/EKO/mH5/I+ks+p9o4MuawtoJF5uwVe5PERUiK prpZLUHtF5+O7bc2hhM/rfoHDdA4W/oAm1GasO+5zgOmzW9Q5yg7MzsaTmV4nyptI2Qt s1Kz8DzfvWWKOcsJ6tCFHuXz4o3MwjXOddv8oEwHkJrDjWG93eGeFodLQNpO3XYBYREx GlJp+91by7VqPG2zKm0mtTOO6+sfvCC9Xpw0USFTY0p6qm/qQTcgmWGmQBpOGbOJIlSM 8ZX3BKPbw14jyTe3IhRmdVRRGZr4VTt8c+sGykDsMOKEkIfkngueL+QS30YVBbY/lzOj rZkg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc:content-transfer-encoding; bh=VNigyW8y4Y35XUJyyPUeAzbGrb+duf3QpiVxZqysLwA=; b=CW1dchmoMQk4kjbYjzhbf/31o3G0Hl5mQf3wZpqxlJbtAyh8memplCI62xTUmaANKU bltuABk3/LCW8r4kQ8Je/QVx/qxaUmiuaz7v8THEvgpxTCbDxhmsLmgW9FTjZ4gImIY4 mO8V847+D/ELj4xQCiXepU3YB5O0TRABUyzojaRx50VOrO35jYemNe4vSG8xMbCF1Reo MsPfyRo+Y5ZpU7vdHKzFnS7ezuOSZAOGgJL4Zq9aVH4wnrlU0C15XuI/8HMokuYAWLgZ Ujs8csZKY4Q6sKAYhRX7dJdqfYWtweR+qFkEs0qAfD/xV+VJIJ2WynOOtT4LjFz2J+zZ Ofyw== X-Gm-Message-State: AOAM531XW/juYCBIYboTukHW2G1O5XdRSXNHy67QnyUSCYsi7cGYHzJw YWtcd/IbUDIMH06gXeMDUwnt7z+Q+VoMB2ilXZU= X-Google-Smtp-Source: ABdhPJwM4jJdlV826DYgo9sw1CbtMbgmpO7vI5OgShBalPFjJsxz84RwvFsZ5EVjD1Rc8qapJ5H8Lp721qSA/ZvrSwU= X-Received: by 2002:a9d:6d15:: with SMTP id o21mr3042832otp.232.1602671688127; Wed, 14 Oct 2020 03:34:48 -0700 (PDT) MIME-Version: 1.0 References: <1600859910-15855-1-git-send-email-gene.chen.richtek@gmail.com> <1600859910-15855-2-git-send-email-gene.chen.richtek@gmail.com> In-Reply-To: <1600859910-15855-2-git-send-email-gene.chen.richtek@gmail.com> From: Gene Chen Date: Wed, 14 Oct 2020 10:34:27 +0800 Message-ID: Subject: Re: [PATCH 2/2] power: supply: mt6360_charger: add MT6360 charger support To: sre@kernel.org, Matthias Brugger , Rob Herring X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20201014_063452_194655_AFEE7DE0 X-CRM114-Status: GOOD ( 25.08 ) X-BeenThere: linux-mediatek@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Gene Chen , devicetree , linux-pm@vger.kernel.org, Linux Kernel Mailing List , cy_huang@richtek.com, "moderated list:ARM/Mediatek SoC support" , linux-arm Mailing List , shufan_lee@richtek.com Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "Linux-mediatek" Errors-To: linux-mediatek-bounces+linux-mediatek=archiver.kernel.org@lists.infradead.org RGVhciBSZXZpZXdlcnMsCgogICAgRG9lcyBhbnkgY29tbWVudCBhYm91dCB0aGlzIHBhdGNoPwoK R2VuZSBDaGVuIDxnZW5lLmNoZW4ucmljaHRla0BnbWFpbC5jb20+IOaWvCAyMDIw5bm0OeaciDIz 5pelIOmAseS4iSDkuIvljYg3OjE45a+r6YGT77yaCj4KPiBGcm9tOiBHZW5lIENoZW4gPGdlbmVf Y2hlbkByaWNodGVrLmNvbT4KPgo+IEFkZCBiYXNpYyBzdXBwb3J0IGZvciB0aGUgYmF0dGVyeSBj aGFyZ2VyIGZvciBNVDYzNjAgUE1JQwo+Cj4gU2lnbmVkLW9mZi1ieTogR2VuZSBDaGVuIDxnZW5l X2NoZW5AcmljaHRlay5jb20+Cj4gLS0tCj4gIGRyaXZlcnMvcG93ZXIvc3VwcGx5L0tjb25maWcg ICAgICAgICAgfCAgIDExICsKPiAgZHJpdmVycy9wb3dlci9zdXBwbHkvTWFrZWZpbGUgICAgICAg ICB8ICAgIDEgKwo+ICBkcml2ZXJzL3Bvd2VyL3N1cHBseS9tdDYzNjBfY2hhcmdlci5jIHwgMTE5 MCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKPiAgMyBmaWxlcyBjaGFuZ2VkLCAx MjAyIGluc2VydGlvbnMoKykKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvcG93ZXIvc3Vw cGx5L210NjM2MF9jaGFyZ2VyLmMKPgo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3Bvd2VyL3N1cHBs eS9LY29uZmlnIGIvZHJpdmVycy9wb3dlci9zdXBwbHkvS2NvbmZpZwo+IGluZGV4IGZhZjI4MzAu LjFiZWI2YTQgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9wb3dlci9zdXBwbHkvS2NvbmZpZwo+ICsr KyBiL2RyaXZlcnMvcG93ZXIvc3VwcGx5L0tjb25maWcKPiBAQCAtNTYyLDYgKzU2MiwxNyBAQCBj b25maWcgQ0hBUkdFUl9NUDI2MjkKPiAgICAgICAgICAgQmF0dGVyeSBjaGFyZ2VyLiBUaGlzIGRy aXZlciBwcm92aWRlcyBCYXR0ZXJ5IGNoYXJnZXIgcG93ZXIgbWFuYWdlbWVudAo+ICAgICAgICAg ICBmdW5jdGlvbnMgb24gdGhlIHN5c3RlbXMuCj4KPiArY29uZmlnIENIQVJHRVJfTVQ2MzYwCj4g KyAgICAgICB0cmlzdGF0ZSAiTWVkaWF0ZWsgTVQ2MzYwIENoYXJnZXIgRHJpdmVyIgo+ICsgICAg ICAgZGVwZW5kcyBvbiBNRkRfTVQ2MzYwCj4gKyAgICAgICBkZXBlbmRzIG9uIFJFR1VMQVRPUgo+ ICsgICAgICAgc2VsZWN0IEVYVENPTgo+ICsgICAgICAgaGVscAo+ICsgICAgICAgICBTYXkgWSBo ZXJlIHRvIGVuYWJsZSBNVDYzNjAgQ2hhcmdlciBQYXJ0Lgo+ICsgICAgICAgICBzdXBwb3J0IEhp Z2gtQWNjdXJhY3kgVm9sdGFnZS9DdXJyZW50IFJlZ3VsYXRpb24sCj4gKyAgICAgICAgIEF2ZXJh Z2UgSW5wdXQgQ3VycmVudCBSZWd1bGF0aW9uLCBCYXR0ZXJ5IFRlbXBhdHVyZSBTZW5zaW5nLAo+ ICsgICAgICAgICBPdmVyLVRlbXBlcmF0dXJlIFByb3RlY3Rpb24sIERQRE0gRGV0ZWN0aW9uIGZv ciBCQzEuMgo+ICsKPiAgY29uZmlnIENIQVJHRVJfUUNPTV9TTUJCCj4gICAgICAgICB0cmlzdGF0 ZSAiUXVhbGNvbW0gU3dpdGNoLU1vZGUgQmF0dGVyeSBDaGFyZ2VyIGFuZCBCb29zdCIKPiAgICAg ICAgIGRlcGVuZHMgb24gTUZEX1NQTUlfUE1JQyB8fCBDT01QSUxFX1RFU1QKPiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9wb3dlci9zdXBwbHkvTWFrZWZpbGUgYi9kcml2ZXJzL3Bvd2VyL3N1cHBseS9N YWtlZmlsZQo+IGluZGV4IGIzYzY5NGEuLjlhYmVjYjljIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMv cG93ZXIvc3VwcGx5L01ha2VmaWxlCj4gKysrIGIvZHJpdmVycy9wb3dlci9zdXBwbHkvTWFrZWZp bGUKPiBAQCAtNzcsNiArNzcsNyBAQCBvYmotJChDT05GSUdfQ0hBUkdFUl9NQVg3NzY5MykgICAg ICAgICs9IG1heDc3NjkzX2NoYXJnZXIubwo+ICBvYmotJChDT05GSUdfQ0hBUkdFUl9NQVg4OTk3 KSAgKz0gbWF4ODk5N19jaGFyZ2VyLm8KPiAgb2JqLSQoQ09ORklHX0NIQVJHRVJfTUFYODk5OCkg ICs9IG1heDg5OThfY2hhcmdlci5vCj4gIG9iai0kKENPTkZJR19DSEFSR0VSX01QMjYyOSkgICAr PSBtcDI2MjlfY2hhcmdlci5vCj4gK29iai0kKENPTkZJR19DSEFSR0VSX01UNjM2MCkgICArPSBt dDYzNjBfY2hhcmdlci5vCj4gIG9iai0kKENPTkZJR19DSEFSR0VSX1FDT01fU01CQikgICAgICAg ICs9IHFjb21fc21iYi5vCj4gIG9iai0kKENPTkZJR19DSEFSR0VSX0JRMjQxNVgpICArPSBicTI0 MTV4X2NoYXJnZXIubwo+ICBvYmotJChDT05GSUdfQ0hBUkdFUl9CUTI0MTkwKSAgKz0gYnEyNDE5 MF9jaGFyZ2VyLm8KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9wb3dlci9zdXBwbHkvbXQ2MzYwX2No YXJnZXIuYyBiL2RyaXZlcnMvcG93ZXIvc3VwcGx5L210NjM2MF9jaGFyZ2VyLmMKPiBuZXcgZmls ZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAuLjcwZTNmYjYKPiAtLS0gL2Rldi9udWxsCj4g KysrIGIvZHJpdmVycy9wb3dlci9zdXBwbHkvbXQ2MzYwX2NoYXJnZXIuYwo+IEBAIC0wLDAgKzEs MTE5MCBAQAo+ICsvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMAo+ICsvKgo+ICsg KiBDb3B5cmlnaHQgKGMpIDIwMTkgTWVkaWFUZWsgSW5jLgo+ICsgKi8KPiArCj4gKyNpbmNsdWRl IDxsaW51eC9pbml0Lmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4KPiArI2luY2x1ZGUg PGxpbnV4L2tlcm5lbC5oPgo+ICsjaW5jbHVkZSA8bGludXgvcmVnbWFwLmg+Cj4gKyNpbmNsdWRl IDxsaW51eC9wbGF0Zm9ybV9kZXZpY2UuaD4KPiArI2luY2x1ZGUgPGxpbnV4L29mLmg+Cj4gKyNp bmNsdWRlIDxsaW51eC9pbnRlcnJ1cHQuaD4KPiArI2luY2x1ZGUgPGxpbnV4L2V4dGNvbi1wcm92 aWRlci5oPgo+ICsjaW5jbHVkZSA8bGludXgvcG93ZXJfc3VwcGx5Lmg+Cj4gKyNpbmNsdWRlIDxs aW51eC9yZWd1bGF0b3IvZHJpdmVyLmg+Cj4gKwo+ICsjZGVmaW5lIE1UNjM2MF9QTVVfQ0hHX0NU UkwxICAgICAgICAgICAgICAgICAgICgweDExKQo+ICsjZGVmaW5lIE1UNjM2MF9QTVVfQ0hHX0NU UkwyICAgICAgICAgICAgICAgICAgICgweDEyKQo+ICsjZGVmaW5lIE1UNjM2MF9QTVVfQ0hHX0NU UkwzICAgICAgICAgICAgICAgICAgICgweDEzKQo+ICsjZGVmaW5lIE1UNjM2MF9QTVVfQ0hHX0NU Ukw0ICAgICAgICAgICAgICAgICAgICgweDE0KQo+ICsjZGVmaW5lIE1UNjM2MF9QTVVfQ0hHX0NU Ukw1ICAgICAgICAgICAgICAgICAgICgweDE1KQo+ICsjZGVmaW5lIE1UNjM2MF9QTVVfQ0hHX0NU Ukw2ICAgICAgICAgICAgICAgICAgICgweDE2KQo+ICsjZGVmaW5lIE1UNjM2MF9QTVVfQ0hHX0NU Ukw3ICAgICAgICAgICAgICAgICAgICgweDE3KQo+ICsjZGVmaW5lIE1UNjM2MF9QTVVfQ0hHX0NU Ukw4ICAgICAgICAgICAgICAgICAgICgweDE4KQo+ICsjZGVmaW5lIE1UNjM2MF9QTVVfQ0hHX0NU Ukw5ICAgICAgICAgICAgICAgICAgICgweDE5KQo+ICsjZGVmaW5lIE1UNjM2MF9QTVVfQ0hHX0NU UkwxMCAgICAgICAgICAgICAgICAgICgweDFBKQo+ICsjZGVmaW5lIE1UNjM2MF9QTVVfQ0hHX0NU UkwxMSAgICAgICAgICAgICAgICAgICgweDFCKQo+ICsjZGVmaW5lIE1UNjM2MF9QTVVfQ0hHX0NU UkwxMiAgICAgICAgICAgICAgICAgICgweDFDKQo+ICsjZGVmaW5lIE1UNjM2MF9QTVVfQ0hHX0NU UkwxMyAgICAgICAgICAgICAgICAgICgweDFEKQo+ICsjZGVmaW5lIE1UNjM2MF9QTVVfREVWSUNF X1RZUEUgICAgICAgICAgICAgICAgICgweDIyKQo+ICsjZGVmaW5lIE1UNjM2MF9QTVVfVVNCX1NU QVRVUzEgICAgICAgICAgICAgICAgICgweDI3KQo+ICsjZGVmaW5lIE1UNjM2MF9QTVVfQ0hHX0NU UkwxNyAgICAgICAgICAgICAgICAgICgweDJCKQo+ICsjZGVmaW5lIE1UNjM2MF9QTVVfQ0hHX0NU UkwxOCAgICAgICAgICAgICAgICAgICgweDJDKQo+ICsjZGVmaW5lIE1UNjM2MF9QTVVfQ0hHX1NU QVQgICAgICAgICAgICAgICAgICAgICgweDRBKQo+ICsjZGVmaW5lIE1UNjM2MF9QTVVfQ0hHX0NU UkwxOSAgICAgICAgICAgICAgICAgICgweDYxKQo+ICsjZGVmaW5lIE1UNjM2MF9QTVVfRk9EX1NU QVQgICAgICAgICAgICAgICAgICAgICgweEU3KQo+ICsKPiArLyogMHgxMSAqLwo+ICsjZGVmaW5l IE1UNjM2MF9NQVNLX0ZTTFAgICAgICAgQklUKDMpCj4gKyNkZWZpbmUgTVQ2MzYwX1NIRlRfRlNM UCAgICAgICAoMykKPiArI2RlZmluZSBNVDYzNjBfTUFTS19ISVogICAgICAgICAgICAgICAgQklU KDIpCj4gKyNkZWZpbmUgTVQ2MzYwX1NIRlRfSElaICAgICAgICAgICAgICAgICgyKQo+ICsjZGVm aW5lIE1UNjM2MF9NQVNLX09QQV9NT0RFICAgQklUKDApCj4gKyNkZWZpbmUgTVQ2MzYwX1NIRlRf T1BBX01PREUgICAoMCkKPiArLyogMHgxMiAqLwo+ICsjZGVmaW5lIE1UNjM2MF9NQVNLX1RFICAg ICAgICAgQklUKDQpCj4gKyNkZWZpbmUgTVQ2MzYwX1NIRlRfVEUgICAgICAgICAoNCkKPiArI2Rl ZmluZSBNVDYzNjBfTUFTS19JSU5MTVRTRUwgIEdFTk1BU0soMywgMikKPiArI2RlZmluZSBNVDYz NjBfU0hGVF9JSU5MTVRTRUwgICgyKQo+ICsjZGVmaW5lIE1UNjM2MF9NQVNLX0NIR19FTiAgICAg QklUKDApCj4gKyNkZWZpbmUgTVQ2MzYwX1NIRlRfQ0hHX0VOICAgICAoMCkKPiArLyogMHgxMyAq Lwo+ICsjZGVmaW5lIE1UNjM2MF9NQVNLX0lBSUNSICAgICAgR0VOTUFTSyg3LCAyKQo+ICsjZGVm aW5lIE1UNjM2MF9TSEZUX0lBSUNSICAgICAgKDIpCj4gKyNkZWZpbmUgTVQ2MzYwX01BU0tfSUxJ TV9FTiAgICBCSVQoMCkKPiArLyogMHgxNCAqLwo+ICsjZGVmaW5lIE1UNjM2MF9NQVNLX1ZPUkVH ICAgICAgR0VOTUFTSyg3LCAxKQo+ICsjZGVmaW5lIE1UNjM2MF9TSEZUX1ZPUkVHICAgICAgKDEp Cj4gKy8qIDB4MTUgKi8KPiArI2RlZmluZSBNVDYzNjBfTUFTS19WT0JTVCAgICAgIEdFTk1BU0so NywgMikKPiArLyogMHgxNiAqLwo+ICsjZGVmaW5lIE1UNjM2MF9NQVNLX1ZNSVZSICAgICAgR0VO TUFTSyg3LCAxKQo+ICsjZGVmaW5lIE1UNjM2MF9TSEZUX1ZNSVZSICAgICAgKDEpCj4gKy8qIDB4 MTcgKi8KPiArI2RlZmluZSBNVDYzNjBfTUFTS19JQ0hHICAgICAgIEdFTk1BU0soNywgMikKPiAr I2RlZmluZSBNVDYzNjBfU0hGVF9JQ0hHICAgICAgICgyKQo+ICsvKiAweDE4ICovCj4gKyNkZWZp bmUgTVQ2MzYwX01BU0tfSVBSRUMgICAgICBHRU5NQVNLKDMsIDApCj4gKyNkZWZpbmUgTVQ2MzYw X1NIRlRfSVBSRUMgICAgICAoMCkKPiArLyogMHgxOSAqLwo+ICsjZGVmaW5lIE1UNjM2MF9NQVNL X0lFT0MgICAgICAgR0VOTUFTSyg3LCA0KQo+ICsjZGVmaW5lIE1UNjM2MF9TSEZUX0lFT0MgICAg ICAgKDQpCj4gKy8qIDB4MUEgKi8KPiArI2RlZmluZSBNVDYzNjBfTUFTS19MQlAgICAgICAgICAg ICAgICAgR0VOTUFTSyg3LCA0KQo+ICsjZGVmaW5lIE1UNjM2MF9TSEZUX0xCUCAgICAgICAgICAg ICAgICAoNCkKPiArI2RlZmluZSBNVDYzNjBfTUFTS19PVEdfT0MgICAgIEdFTk1BU0soMywgMCkK PiArI2RlZmluZSBNVDYzNjBfU0hGVF9PVEdfT0MgICAgICgwKQo+ICsvKiAweDFCICovCj4gKyNk ZWZpbmUgTVQ2MzYwX01BU0tfU1lTUkVHICAgICBHRU5NQVNLKDQsIDIpCj4gKyNkZWZpbmUgTVQ2 MzYwX1NIRlRfU1lTUkVHICAgICAoMikKPiArI2RlZmluZSBNVDYzNjBfTUFTS19WUkVDICAgICAg IEdFTk1BU0soMiwgMCkKPiArI2RlZmluZSBNVDYzNjBfU0hGVF9WUkVDICAgICAgICgwKQo+ICsv KiAweDFDICovCj4gKyNkZWZpbmUgTVQ2MzYwX01BU0tfV1RfRkMgICAgICBHRU5NQVNLKDcsIDUp Cj4gKyNkZWZpbmUgTVQ2MzYwX1NIRlRfV1RfRkMgICAgICAoNSkKPiArLyogMHgxRCAqLwo+ICsj ZGVmaW5lIE1UNjM2MF9NQVNLX0NIR19XRFRfRU4gQklUKDcpCj4gKyNkZWZpbmUgTVQ2MzYwX1NI RlRfQ0hHX1dEVF9FTiAoNykKPiArI2RlZmluZSBNVDYzNjBfTUFTS19DSEdfV0RUICAgIEdFTk1B U0soNSwgNCkKPiArI2RlZmluZSBNVDYzNjBfU0hGVF9DSEdfV0RUICAgICg0KQo+ICsvKiAweDIy ICovCj4gKyNkZWZpbmUgTVQ2MzYwX01BU0tfVVNCQ0hHRU4gICBCSVQoNykKPiArI2RlZmluZSBN VDYzNjBfU0hGVF9VU0JDSEdFTiAgICg3KQo+ICsvKiAweDI3ICovCj4gKyNkZWZpbmUgTVQ2MzYw X01BU0tfVVNCX1NUQVRVUyBHRU5NQVNLKDYsIDQpCj4gKyNkZWZpbmUgTVQ2MzYwX1NIRlRfVVNC X1NUQVRVUyAoNCkKPiArLyogMHgyQyAqLwo+ICsjZGVmaW5lIE1UNjM2MF9NQVNLX0JBVF9DT01Q ICAgR0VOTUFTSyg1LCAzKQo+ICsjZGVmaW5lIE1UNjM2MF9TSEZUX0JBVF9DT01QICAgKDMpCj4g KyNkZWZpbmUgTVQ2MzYwX01BU0tfVkNMQU1QICAgICBHRU5NQVNLKDIsIDApCj4gKyNkZWZpbmUg TVQ2MzYwX1NIRlRfVkNMQU1QICAgICAoMCkKPiArLyogMHg0QSAqLwo+ICsjZGVmaW5lIE1UNjM2 MF9NQVNLX0NIR19TVEFUICAgR0VOTUFTSyg3LCA2KQo+ICsjZGVmaW5lIE1UNjM2MF9TSEZUX0NI R19TVEFUICAgKDYpCj4gKyNkZWZpbmUgTVQ2MzYwX01BU0tfVkJBVF9MVkwgICBCSVQoNSkKPiAr LyogMHg2MSAqLwo+ICsjZGVmaW5lIE1UNjM2MF9NQVNLX1ZJTk9WUCAgICAgR0VOTUFTSyg2LCA1 KQo+ICsjZGVmaW5lIE1UNjM2MF9TSEZUX1ZJTk9WUCAgICAgKDUpCj4gKy8qIDB4RTcgKi8KPiAr I2RlZmluZSBNVDYzNjBfTUFTS19DSFJERVRfRVhUIEJJVCg0KQo+ICsjZGVmaW5lIE1UNjM2MF9T SEZUX0NIUkRFVF9FWFQgKDQpCj4gKwo+ICsvKiB1QSAqLwo+ICsjZGVmaW5lIE1UNjM2MF9JQ0hH X01JTiAgICAgICAgICAgICAgICAxMDAwMDAKPiArI2RlZmluZSBNVDYzNjBfSUNIR19NQVggICAg ICAgICAgICAgICAgNTAwMDAwMAo+ICsjZGVmaW5lIE1UNjM2MF9JQ0hHX1NURVAgICAgICAgMTAw MDAwCj4gKy8qIHVWICovCj4gKyNkZWZpbmUgTVQ2MzYwX1ZPUkVHX01JTiAgICAgICAzOTAwMDAw Cj4gKyNkZWZpbmUgTVQ2MzYwX1ZPUkVHX01BWCAgICAgICA0NzEwMDAwCj4gKyNkZWZpbmUgTVQ2 MzYwX1ZPUkVHX1NURVAgICAgICAxMDAwMAo+ICsvKiB1QSAqLwo+ICsjZGVmaW5lIE1UNjM2MF9B SUNSX01JTiAgICAgICAgICAgICAgICAxMDAwMDAKPiArI2RlZmluZSBNVDYzNjBfQUlDUl9NQVgg ICAgICAgICAgICAgICAgMzI1MDAwMAo+ICsjZGVmaW5lIE1UNjM2MF9BSUNSX1NURVAgICAgICAg NTAwMDAKPiArLyogdUEgKi8KPiArI2RlZmluZSBNVDYzNjBfSVBSRUNfTUlOICAgICAgIDEwMDAw MAo+ICsjZGVmaW5lIE1UNjM2MF9JUFJFQ19NQVggICAgICAgODUwMDAwCj4gKyNkZWZpbmUgTVQ2 MzYwX0lQUkVDX1NURVAgICAgICA1MDAwMAo+ICsvKiB1QSAqLwo+ICsjZGVmaW5lIE1UNjM2MF9J RU9DX01JTiAgICAgICAgICAgICAgICAxMDAwMDAKPiArI2RlZmluZSBNVDYzNjBfSUVPQ19NQVgg ICAgICAgICAgICAgICAgODUwMDAwCj4gKyNkZWZpbmUgTVQ2MzYwX0lFT0NfU1RFUCAgICAgICA1 MDAwMAo+ICsKPiArc3RydWN0IG10NjM2MF9jaGdfcGxhdGZvcm1fZGF0YSB7Cj4gKyAgICAgICB1 MzIgdmlub3ZwOwo+ICt9Owo+ICsKPiArc3RydWN0IG10NjM2MF9jaGdfaW5mbyB7Cj4gKyAgICAg ICBzdHJ1Y3QgZGV2aWNlICpkZXY7Cj4gKyAgICAgICBzdHJ1Y3QgbXQ2MzYwX2NoZ19wbGF0Zm9y bV9kYXRhICpwZGF0YTsKPiArICAgICAgIHN0cnVjdCByZWdtYXAgKnJlZ21hcDsKPiArICAgICAg IHN0cnVjdCBleHRjb25fZGV2ICplZGV2Owo+ICsgICAgICAgc3RydWN0IHBvd2VyX3N1cHBseV9k ZXNjIHBzeV9kZXNjOwo+ICsgICAgICAgc3RydWN0IHBvd2VyX3N1cHBseSAqcHN5Owo+ICsgICAg ICAgc3RydWN0IHJlZ3VsYXRvcl9kZXNjIG90Z19yZGVzYzsKPiArICAgICAgIHN0cnVjdCByZWd1 bGF0b3JfZGV2ICpvdGdfcmRldjsKPiArICAgICAgIHN0cnVjdCBtdXRleCBjaGdkZXRfbG9jazsK PiArICAgICAgIGJvb2wgcHdyX3JkeTsKPiArICAgICAgIGJvb2wgYmMxMl9lbjsKPiArICAgICAg IGludCBwc3lfdXNiX3R5cGU7Cj4gKyAgICAgICBzdHJ1Y3Qgd29ya19zdHJ1Y3QgY2hyZGV0X3dv cms7Cj4gK307Cj4gKwo+ICtzdGF0aWMgc3RydWN0IG10NjM2MF9jaGdfcGxhdGZvcm1fZGF0YSBk ZWZfcGxhdGZvcm1fZGF0YSA9IHsKPiArICAgICAgIC52aW5vdnAgPSA2NTAwMDAwLAo+ICt9Owo+ ICsKPiArc3RydWN0IG10NjM2MF9pcnFfZGVzYyB7Cj4gKyAgICAgICBjb25zdCBjaGFyICpuYW1l Owo+ICsgICAgICAgaXJxX2hhbmRsZXJfdCBpcnFfaGFuZGxlcjsKPiArfTsKPiArCj4gK2VudW0g bXQ2MzYwX2lpbmxtdHNlbCB7Cj4gKyAgICAgICBNVDYzNjBfSUlOTE1UU0VMX0FJQ1JfMzI1MCA9 IDAsCj4gKyAgICAgICBNVDYzNjBfSUlOTE1UU0VMX0NIR19UWVBFLAo+ICsgICAgICAgTVQ2MzYw X0lJTkxNVFNFTF9BSUNSLAo+ICsgICAgICAgTVQ2MzYwX0lJTkxNVFNFTF9MT1dFUl9MRVZFTCwK PiArfTsKPiArCj4gK2VudW0gbXQ2MzYwX3BtdV9jaGdfdHlwZSB7Cj4gKyAgICAgICBNVDYzNjBf Q0hHX1RZUEVfTk9WQlVTID0gMCwKPiArICAgICAgIE1UNjM2MF9DSEdfVFlQRV9VTkRFUl9HT0lO RywKPiArICAgICAgIE1UNjM2MF9DSEdfVFlQRV9TRFAsCj4gKyAgICAgICBNVDYzNjBfQ0hHX1RZ UEVfU0RQTlNURCwKPiArICAgICAgIE1UNjM2MF9DSEdfVFlQRV9EQ1AsCj4gKyAgICAgICBNVDYz NjBfQ0hHX1RZUEVfQ0RQLAo+ICsgICAgICAgTVQ2MzYwX0NIR19UWVBFX01BWCwKPiArfTsKPiAr Cj4gK3N0YXRpYyBlbnVtIHBvd2VyX3N1cHBseV91c2JfdHlwZSBtdDYzNjBfY2hhcmdlcl91c2Jf dHlwZXNbXSA9IHsKPiArICAgICAgIFBPV0VSX1NVUFBMWV9VU0JfVFlQRV9VTktOT1dOLAo+ICsg ICAgICAgUE9XRVJfU1VQUExZX1VTQl9UWVBFX1NEUCwKPiArICAgICAgIFBPV0VSX1NVUFBMWV9V U0JfVFlQRV9EQ1AsCj4gKyAgICAgICBQT1dFUl9TVVBQTFlfVVNCX1RZUEVfQ0RQLAo+ICsgICAg ICAgUE9XRVJfU1VQUExZX1VTQl9UWVBFX0MsCj4gKyAgICAgICBQT1dFUl9TVVBQTFlfVVNCX1RZ UEVfUEQsCj4gKyAgICAgICBQT1dFUl9TVVBQTFlfVVNCX1RZUEVfUERfRFJQLAo+ICsgICAgICAg UE9XRVJfU1VQUExZX1VTQl9UWVBFX0FQUExFX0JSSUNLX0lECj4gK307Cj4gKwo+ICtzdGF0aWMg aW5saW5lIHVuc2lnbmVkIGludCBtdDYzNjBfdHJhbnNfcmVnX3NlbCh1MzIgZGF0YSwgdTMyIG1p bl92YWwsIHUzMiBzdGVwLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHUzMiBtYXhfc2VsKQo+ICt7Cj4gKyAgICAgICB1bnNpZ25lZCBpbnQgdGFyZ2V0 ID0gMDsKPiArCj4gKyAgICAgICBpZiAoZGF0YSA+PSBtaW5fdmFsKQo+ICsgICAgICAgICAgICAg ICB0YXJnZXQgPSAoZGF0YSAtIG1pbl92YWwpIC8gc3RlcDsKPiArICAgICAgIGlmICh0YXJnZXQg PiBtYXhfc2VsKQo+ICsgICAgICAgICAgICAgICB0YXJnZXQgPSBtYXhfc2VsOwo+ICsgICAgICAg cmV0dXJuIHRhcmdldDsKPiArfQo+ICsKPiArc3RhdGljIGlubGluZSBpbnQgbXQ2MzYwX2dldF9j aHJkZXRfZXh0X3N0YXQoc3RydWN0IG10NjM2MF9jaGdfaW5mbyAqbWNpLAo+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgKnB3cl9yZHkpCj4gK3sKPiAr ICAgICAgIGludCByZXQ7Cj4gKyAgICAgICB1bnNpZ25lZCBpbnQgcmVndmFsOwo+ICsKPiArICAg ICAgIHJldCA9IHJlZ21hcF9yZWFkKG1jaS0+cmVnbWFwLCBNVDYzNjBfUE1VX0ZPRF9TVEFULCAm cmVndmFsKTsKPiArICAgICAgIGlmIChyZXQgPCAwKQo+ICsgICAgICAgICAgICAgICByZXR1cm4g cmV0Owo+ICsgICAgICAgKnB3cl9yZHkgPSAocmVndmFsICYgTVQ2MzYwX01BU0tfQ0hSREVUX0VY VCkgPyB0cnVlIDogZmFsc2U7Cj4gKyAgICAgICByZXR1cm4gMDsKPiArfQo+ICsKPiArc3RhdGlj IGludCBtdDYzNjBfY2hhcmdlcl9nZXRfb25saW5lKHN0cnVjdCBtdDYzNjBfY2hnX2luZm8gKm1j aSwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pb24gcG93ZXJfc3Vw cGx5X3Byb3B2YWwgKnZhbCkKPiArewo+ICsgICAgICAgaW50IHJldDsKPiArICAgICAgIGJvb2wg cHdyX3JkeTsKPiArCj4gKyAgICAgICByZXQgPSBtdDYzNjBfZ2V0X2NocmRldF9leHRfc3RhdCht Y2ksICZwd3JfcmR5KTsKPiArICAgICAgIGlmIChyZXQgPCAwKQo+ICsgICAgICAgICAgICAgICBy ZXR1cm4gcmV0Owo+ICsgICAgICAgdmFsLT5pbnR2YWwgPSBwd3JfcmR5ID8gdHJ1ZSA6IGZhbHNl Owo+ICsgICAgICAgcmV0dXJuIDA7Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQgbXQ2MzYwX2NoYXJn ZXJfZ2V0X3N0YXR1cyhzdHJ1Y3QgbXQ2MzYwX2NoZ19pbmZvICptY2ksCj4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHVuaW9uIHBvd2VyX3N1cHBseV9wcm9wdmFsICp2YWwp Cj4gK3sKPiArICAgICAgIGludCBzdGF0dXMsIHJldDsKPiArICAgICAgIHVuc2lnbmVkIGludCBy ZWd2YWw7Cj4gKyAgICAgICBib29sIHB3cl9yZHk7Cj4gKwo+ICsgICAgICAgcmV0ID0gbXQ2MzYw X2dldF9jaHJkZXRfZXh0X3N0YXQobWNpLCAmcHdyX3JkeSk7Cj4gKyAgICAgICBpZiAocmV0IDwg MCkKPiArICAgICAgICAgICAgICAgcmV0dXJuIHJldDsKPiArICAgICAgIGlmICghcHdyX3JkeSkg ewo+ICsgICAgICAgICAgICAgICBzdGF0dXMgPSBQT1dFUl9TVVBQTFlfU1RBVFVTX0RJU0NIQVJH SU5HOwo+ICsgICAgICAgICAgICAgICBnb3RvIG91dDsKPiArICAgICAgIH0KPiArCj4gKyAgICAg ICByZXQgPSByZWdtYXBfcmVhZChtY2ktPnJlZ21hcCwgTVQ2MzYwX1BNVV9DSEdfU1RBVCwgJnJl Z3ZhbCk7Cj4gKyAgICAgICBpZiAocmV0IDwgMCkKPiArICAgICAgICAgICAgICAgcmV0dXJuIHJl dDsKPiArICAgICAgIHJlZ3ZhbCAmPSBNVDYzNjBfTUFTS19DSEdfU1RBVDsKPiArICAgICAgIHJl Z3ZhbCA+Pj0gTVQ2MzYwX1NIRlRfQ0hHX1NUQVQ7Cj4gKyAgICAgICBzd2l0Y2ggKHJlZ3ZhbCkg ewo+ICsgICAgICAgY2FzZSAweDA6Cj4gKyAgICAgICAgICAgICAgIHN0YXR1cyA9IFBPV0VSX1NV UFBMWV9TVEFUVVNfTk9UX0NIQVJHSU5HOwo+ICsgICAgICAgICAgICAgICBicmVhazsKPiArICAg ICAgIGNhc2UgMHgxOgo+ICsgICAgICAgICAgICAgICBzdGF0dXMgPSBQT1dFUl9TVVBQTFlfU1RB VFVTX0NIQVJHSU5HOwo+ICsgICAgICAgICAgICAgICBicmVhazsKPiArICAgICAgIGNhc2UgMHgy Ogo+ICsgICAgICAgICAgICAgICBzdGF0dXMgPSBQT1dFUl9TVVBQTFlfU1RBVFVTX0ZVTEw7Cj4g KyAgICAgICAgICAgICAgIGJyZWFrOwo+ICsgICAgICAgZGVmYXVsdDoKPiArICAgICAgICAgICAg ICAgcmV0ID0gLUVJTzsKPiArICAgICAgIH0KPiArb3V0Ogo+ICsgICAgICAgaWYgKCFyZXQpCj4g KyAgICAgICAgICAgICAgIHZhbC0+aW50dmFsID0gc3RhdHVzOwo+ICsgICAgICAgcmV0dXJuIHJl dDsKPiArfQo+ICsKPiArc3RhdGljIGludCBtdDYzNjBfY2hhcmdlcl9nZXRfY2hhcmdlX3R5cGUo c3RydWN0IG10NjM2MF9jaGdfaW5mbyAqbWNpLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHVuaW9uIHBvd2VyX3N1cHBseV9wcm9wdmFsICp2YWwpCj4gK3sKPiAr ICAgICAgIGludCB0eXBlLCByZXQ7Cj4gKyAgICAgICB1bnNpZ25lZCBpbnQgcmVndmFsOwo+ICsg ICAgICAgdTggY2hnX3N0YXQ7Cj4gKwo+ICsgICAgICAgcmV0ID0gcmVnbWFwX3JlYWQobWNpLT5y ZWdtYXAsIE1UNjM2MF9QTVVfQ0hHX1NUQVQsICZyZWd2YWwpOwo+ICsgICAgICAgaWYgKHJldCA8 IDApCj4gKyAgICAgICAgICAgICAgIHJldHVybiByZXQ7Cj4gKyAgICAgICBjaGdfc3RhdCA9IChy ZWd2YWwgJiBNVDYzNjBfTUFTS19DSEdfU1RBVCkgPj4gTVQ2MzYwX1NIRlRfQ0hHX1NUQVQ7Cj4g KyAgICAgICBzd2l0Y2ggKGNoZ19zdGF0KSB7Cj4gKyAgICAgICBjYXNlIDB4MDA6IC8qIE5vdCBD aGFyZ2luZyAqLwo+ICsgICAgICAgICAgICAgICB0eXBlID0gUE9XRVJfU1VQUExZX0NIQVJHRV9U WVBFX05PTkU7Cj4gKyAgICAgICAgICAgICAgIGJyZWFrOwo+ICsgICAgICAgY2FzZSAweDAxOiAv KiBDaGFyZ2UgaW4gUHJvZ3Jlc3MgKi8KPiArICAgICAgICAgICAgICAgaWYgKHJlZ3ZhbCAmIE1U NjM2MF9NQVNLX1ZCQVRfTFZMKQo+ICsgICAgICAgICAgICAgICAgICAgICAgIHR5cGUgPSBQT1dF Ul9TVVBQTFlfQ0hBUkdFX1RZUEVfRkFTVDsKPiArICAgICAgICAgICAgICAgZWxzZQo+ICsgICAg ICAgICAgICAgICAgICAgICAgIHR5cGUgPSBQT1dFUl9TVVBQTFlfQ0hBUkdFX1RZUEVfVFJJQ0tM RTsKPiArICAgICAgICAgICAgICAgYnJlYWs7Cj4gKyAgICAgICBjYXNlIDB4MDI6IC8qIENoYXJn ZSBEb25lICovCj4gKyAgICAgICAgICAgICAgIHR5cGUgPSBQT1dFUl9TVVBQTFlfQ0hBUkdFX1RZ UEVfTk9ORTsKPiArICAgICAgICAgICAgICAgYnJlYWs7Cj4gKyAgICAgICBjYXNlIDB4MDM6IC8q IENoYXJnZSBGYXVsdCAqLwo+ICsgICAgICAgICAgICAgICB0eXBlID0gUE9XRVJfU1VQUExZX1NU QVRVU19VTktOT1dOOwo+ICsgICAgICAgICAgICAgICBicmVhazsKPiArICAgICAgIGRlZmF1bHQ6 Cj4gKyAgICAgICAgICAgICAgIGJyZWFrOwo+ICsgICAgICAgfQo+ICsgICAgICAgdmFsLT5pbnR2 YWwgPSB0eXBlOwo+ICsgICAgICAgcmV0dXJuIDA7Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQgbXQ2 MzYwX2NoYXJnZXJfZ2V0X2ljaGcoc3RydWN0IG10NjM2MF9jaGdfaW5mbyAqbWNpLAo+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pb24gcG93ZXJfc3VwcGx5X3Byb3B2YWwg KnZhbCkKPiArewo+ICsgICAgICAgaW50IGljaGcsIHJldDsKPiArICAgICAgIHVuc2lnbmVkIGlu dCByZWd2YWw7Cj4gKwo+ICsgICAgICAgcmV0ID0gcmVnbWFwX3JlYWQobWNpLT5yZWdtYXAsIE1U NjM2MF9QTVVfQ0hHX0NUUkw3LCAmcmVndmFsKTsKPiArICAgICAgIGlmIChyZXQgPCAwKQo+ICsg ICAgICAgICAgICAgICByZXR1cm4gcmV0Owo+ICsgICAgICAgcmVndmFsID0gKHJlZ3ZhbCAmIE1U NjM2MF9NQVNLX0lDSEcpID4+IE1UNjM2MF9TSEZUX0lDSEc7Cj4gKyAgICAgICBpY2hnID0gTVQ2 MzYwX0lDSEdfTUlOICsgKHJlZ3ZhbCAqIE1UNjM2MF9JQ0hHX1NURVApOwo+ICsgICAgICAgaWYg KGljaGcgPiBNVDYzNjBfSUNIR19NQVgpCj4gKyAgICAgICAgICAgICAgIGljaGcgPSBNVDYzNjBf SUNIR19NQVg7Cj4gKyAgICAgICB2YWwtPmludHZhbCA9IGljaGc7Cj4gKyAgICAgICByZXR1cm4g MDsKPiArfQo+ICsKPiArc3RhdGljIGludCBtdDYzNjBfY2hhcmdlcl9nZXRfbWF4X2ljaGcoc3Ry dWN0IG10NjM2MF9jaGdfaW5mbyAqbWNpLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHVuaW9uIHBvd2VyX3N1cHBseV9wcm9wdmFsICp2YWwpCj4gK3sKPiArICAgICAg IHZhbC0+aW50dmFsID0gTVQ2MzYwX0lDSEdfTUFYOwo+ICsgICAgICAgcmV0dXJuIDA7Cj4gK30K PiArCj4gK3N0YXRpYyBpbnQgbXQ2MzYwX2NoYXJnZXJfZ2V0X2N2KHN0cnVjdCBtdDYzNjBfY2hn X2luZm8gKm1jaSwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmlvbiBwb3dl cl9zdXBwbHlfcHJvcHZhbCAqdmFsKQo+ICt7Cj4gKyAgICAgICBpbnQgY3YsIHJldDsKPiArICAg ICAgIHVuc2lnbmVkIGludCByZWd2YWw7Cj4gKwo+ICsgICAgICAgcmV0ID0gcmVnbWFwX3JlYWQo bWNpLT5yZWdtYXAsIE1UNjM2MF9QTVVfQ0hHX0NUUkw0LCAmcmVndmFsKTsKPiArICAgICAgIGlm IChyZXQgPCAwKQo+ICsgICAgICAgICAgICAgICByZXR1cm4gcmV0Owo+ICsgICAgICAgcmVndmFs ID0gKHJlZ3ZhbCAmIE1UNjM2MF9NQVNLX1ZPUkVHKSA+PiBNVDYzNjBfU0hGVF9WT1JFRzsKPiAr ICAgICAgIGN2ID0gTVQ2MzYwX1ZPUkVHX01JTiArIChyZWd2YWwgKiBNVDYzNjBfVk9SRUdfU1RF UCk7Cj4gKyAgICAgICBpZiAoY3YgPiBNVDYzNjBfVk9SRUdfTUFYKQo+ICsgICAgICAgICAgICAg ICBjdiA9IE1UNjM2MF9WT1JFR19NQVg7Cj4gKyAgICAgICB2YWwtPmludHZhbCA9IGN2Owo+ICsg ICAgICAgcmV0dXJuIDA7Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQgbXQ2MzYwX2NoYXJnZXJfZ2V0 X21heF9jdihzdHJ1Y3QgbXQ2MzYwX2NoZ19pbmZvICptY2ksCj4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHVuaW9uIHBvd2VyX3N1cHBseV9wcm9wdmFsICp2YWwpCj4gK3sK PiArICAgICAgIHZhbC0+aW50dmFsID0gTVQ2MzYwX1ZPUkVHX01BWDsKPiArICAgICAgIHJldHVy biAwOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50IG10NjM2MF9jaGFyZ2VyX2dldF9haWNyKHN0cnVj dCBtdDYzNjBfY2hnX2luZm8gKm1jaSwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHVuaW9uIHBvd2VyX3N1cHBseV9wcm9wdmFsICp2YWwpCj4gK3sKPiArICAgICAgIGludCBy ZXQ7Cj4gKyAgICAgICB1bnNpZ25lZCBpbnQgcmVndmFsOwo+ICsKPiArICAgICAgIHJldCA9IHJl Z21hcF9yZWFkKG1jaS0+cmVnbWFwLCBNVDYzNjBfUE1VX0NIR19DVFJMMywgJnJlZ3ZhbCk7Cj4g KyAgICAgICBpZiAocmV0IDwgMCkKPiArICAgICAgICAgICAgICAgcmV0dXJuIHJldDsKPiArICAg ICAgIHJlZ3ZhbCA9IChyZWd2YWwgJiBNVDYzNjBfTUFTS19JQUlDUikgPj4gTVQ2MzYwX1NIRlRf SUFJQ1I7Cj4gKyAgICAgICB2YWwtPmludHZhbCA9IE1UNjM2MF9BSUNSX01JTiArIChyZWd2YWwg KiBNVDYzNjBfQUlDUl9TVEVQKTsKPiArICAgICAgIHJldHVybiAwOwo+ICt9Cj4gKwo+ICtzdGF0 aWMgaW50IG10NjM2MF9jaGFyZ2VyX2dldF9pcHJlY2hnKHN0cnVjdCBtdDYzNjBfY2hnX2luZm8g Km1jaSwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuaW9uIHBvd2Vy X3N1cHBseV9wcm9wdmFsICp2YWwpCj4gK3sKPiArICAgICAgIGludCByZXQ7Cj4gKyAgICAgICB1 bnNpZ25lZCBpbnQgcmVndmFsOwo+ICsKPiArICAgICAgIHJldCA9IHJlZ21hcF9yZWFkKG1jaS0+ cmVnbWFwLCBNVDYzNjBfUE1VX0NIR19DVFJMOCwgJnJlZ3ZhbCk7Cj4gKyAgICAgICBpZiAocmV0 IDwgMCkKPiArICAgICAgICAgICAgICAgcmV0dXJuIHJldDsKPiArICAgICAgIHJlZ3ZhbCA9IChy ZWd2YWwgJiBNVDYzNjBfTUFTS19JUFJFQykgPj4gTVQ2MzYwX1NIRlRfSVBSRUM7Cj4gKyAgICAg ICB2YWwtPmludHZhbCA9IE1UNjM2MF9JUFJFQ19NSU4gKyAocmVndmFsICogTVQ2MzYwX0lQUkVD X1NURVApOwo+ICsgICAgICAgcmV0dXJuIDA7Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQgbXQ2MzYw X2NoYXJnZXJfZ2V0X2llb2Moc3RydWN0IG10NjM2MF9jaGdfaW5mbyAqbWNpLAo+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pb24gcG93ZXJfc3VwcGx5X3Byb3B2YWwgKnZh bCkKPiArewo+ICsgICAgICAgaW50IHJldDsKPiArICAgICAgIHVuc2lnbmVkIGludCByZWd2YWw7 Cj4gKwo+ICsgICAgICAgcmV0ID0gcmVnbWFwX3JlYWQobWNpLT5yZWdtYXAsIE1UNjM2MF9QTVVf Q0hHX0NUUkw5LCAmcmVndmFsKTsKPiArICAgICAgIGlmIChyZXQgPCAwKQo+ICsgICAgICAgICAg ICAgICByZXR1cm4gcmV0Owo+ICsgICAgICAgcmVndmFsID0gKHJlZ3ZhbCAmIE1UNjM2MF9NQVNL X0lFT0MpID4+IE1UNjM2MF9TSEZUX0lFT0M7Cj4gKyAgICAgICB2YWwtPmludHZhbCA9IE1UNjM2 MF9JRU9DX01JTiArIChyZWd2YWwgKiBNVDYzNjBfSUVPQ19TVEVQKTsKPiArICAgICAgIHJldHVy biAwOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50IG10NjM2MF9jaGFyZ2VyX3NldF9vbmxpbmUoc3Ry dWN0IG10NjM2MF9jaGdfaW5mbyAqbWNpLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBjb25zdCB1bmlvbiBwb3dlcl9zdXBwbHlfcHJvcHZhbCAqdmFsKQo+ICt7Cj4gKyAg ICAgICB1OCBmb3JjZV9zbGVlcCA9IHZhbC0+aW50dmFsID8gMCA6IDE7Cj4gKwo+ICsgICAgICAg cmV0dXJuIHJlZ21hcF91cGRhdGVfYml0cyhtY2ktPnJlZ21hcCwgTVQ2MzYwX1BNVV9DSEdfQ1RS TDEsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1UNjM2MF9NQVNLX0ZTTFAs Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcmNlX3NsZWVwIDw8IE1UNjM2 MF9TSEZUX0ZTTFApOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50IG10NjM2MF9jaGFyZ2VyX3NldF9p Y2hnKHN0cnVjdCBtdDYzNjBfY2hnX2luZm8gKm1jaSwKPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGNvbnN0IHVuaW9uIHBvd2VyX3N1cHBseV9wcm9wdmFsICp2YWwpCj4gK3sK PiArICAgICAgIHVuc2lnbmVkIGludCByZWd2YWw7Cj4gKwo+ICsgICAgICAgcmVndmFsID0gbXQ2 MzYwX3RyYW5zX3JlZ19zZWwodmFsLT5pbnR2YWwsIDEwMDAwMCwgMTAwMDAwLCAweDMxKTsKPiAr ICAgICAgIHJldHVybiByZWdtYXBfdXBkYXRlX2JpdHMobWNpLT5yZWdtYXAsIE1UNjM2MF9QTVVf Q0hHX0NUUkw3LAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNVDYzNjBfTUFT S19JQ0hHLCByZWd2YWwgPDwgTVQ2MzYwX1NIRlRfSUNIRyk7Cj4gK30KPiArCj4gK3N0YXRpYyBp bnQgbXQ2MzYwX2NoYXJnZXJfc2V0X2N2KHN0cnVjdCBtdDYzNjBfY2hnX2luZm8gKm1jaSwKPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1bmlvbiBwb3dlcl9zdXBwbHlf cHJvcHZhbCAqdmFsKQo+ICt7Cj4gKyAgICAgICB1bnNpZ25lZCBpbnQgcmVndmFsOwo+ICsKPiAr ICAgICAgIHJlZ3ZhbCA9IG10NjM2MF90cmFuc19yZWdfc2VsKHZhbC0+aW50dmFsLCAzOTAwMDAw LCAxMDAwMCwgMHg1MSk7Cj4gKyAgICAgICByZXR1cm4gcmVnbWFwX3VwZGF0ZV9iaXRzKG1jaS0+ cmVnbWFwLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNVDYzNjBfUE1VX0NI R19DVFJMNCwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTVQ2MzYwX01BU0tf Vk9SRUcsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ3ZhbCA8PCBNVDYz NjBfU0hGVF9WT1JFRyk7Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQgbXQ2MzYwX2NoYXJnZXJfc2V0 X2FpY3Ioc3RydWN0IG10NjM2MF9jaGdfaW5mbyAqbWNpLAo+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgY29uc3QgdW5pb24gcG93ZXJfc3VwcGx5X3Byb3B2YWwgKnZhbCkKPiAr ewo+ICsgICAgICAgdW5zaWduZWQgaW50IHJlZ3ZhbDsKPiArCj4gKyAgICAgICByZWd2YWwgPSBt dDYzNjBfdHJhbnNfcmVnX3NlbCh2YWwtPmludHZhbCwgMTAwMDAwLCA1MDAwMCwgMHgzRik7Cj4g KyAgICAgICByZXR1cm4gcmVnbWFwX3VwZGF0ZV9iaXRzKG1jaS0+cmVnbWFwLAo+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBNVDYzNjBfUE1VX0NIR19DVFJMMywKPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgTVQ2MzYwX01BU0tfSUFJQ1IsCj4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ3ZhbCA8PCBNVDYzNjBfU0hGVF9JQUlDUik7Cj4g K30KPiArCj4gK3N0YXRpYyBpbnQgbXQ2MzYwX2NoYXJnZXJfc2V0X2lwcmVjaGcoc3RydWN0IG10 NjM2MF9jaGdfaW5mbyAqbWNpLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgY29uc3QgdW5pb24gcG93ZXJfc3VwcGx5X3Byb3B2YWwgKnZhbCkKPiArewo+ICsgICAgICAg dW5zaWduZWQgaW50IHJlZ3ZhbDsKPiArCj4gKyAgICAgICByZWd2YWwgPSBtdDYzNjBfdHJhbnNf cmVnX3NlbCh2YWwtPmludHZhbCwgMTAwMDAwLCA1MDAwMCwgMHgwRik7Cj4gKyAgICAgICByZXR1 cm4gcmVnbWFwX3VwZGF0ZV9iaXRzKG1jaS0+cmVnbWFwLAo+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBNVDYzNjBfUE1VX0NIR19DVFJMOCwKPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgTVQ2MzYwX01BU0tfSVBSRUMsCj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHJlZ3ZhbCA8PCBNVDYzNjBfU0hGVF9JUFJFQyk7Cj4gK30KPiArCj4gK3N0 YXRpYyBpbnQgbXQ2MzYwX2NoYXJnZXJfc2V0X2llb2Moc3RydWN0IG10NjM2MF9jaGdfaW5mbyAq bWNpLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdW5pb24gcG93 ZXJfc3VwcGx5X3Byb3B2YWwgKnZhbCkKPiArewo+ICsgICAgICAgdW5zaWduZWQgaW50IHJlZ3Zh bDsKPiArCj4gKyAgICAgICByZWd2YWwgPSBtdDYzNjBfdHJhbnNfcmVnX3NlbCh2YWwtPmludHZh bCwgMTAwMDAwLCA1MDAwMCwgMHgwRik7Cj4gKyAgICAgICByZXR1cm4gcmVnbWFwX3VwZGF0ZV9i aXRzKG1jaS0+cmVnbWFwLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNVDYz NjBfUE1VX0NIR19DVFJMOSwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTVQ2 MzYwX01BU0tfSUVPQywKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVndmFs IDw8IE1UNjM2MF9TSEZUX0lFT0MpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50IG10NjM2MF9jaGFy Z2VyX2dldF9wcm9wZXJ0eShzdHJ1Y3QgcG93ZXJfc3VwcGx5ICpwc3ksCj4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgZW51bSBwb3dlcl9zdXBwbHlfcHJvcGVydHkgcHNw LAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuaW9uIHBvd2VyX3N1 cHBseV9wcm9wdmFsICp2YWwpCj4gK3sKPiArICAgICAgIHN0cnVjdCBtdDYzNjBfY2hnX2luZm8g Km1jaSA9IHBvd2VyX3N1cHBseV9nZXRfZHJ2ZGF0YShwc3kpOwo+ICsgICAgICAgaW50IHJldCA9 IDA7Cj4gKwo+ICsgICAgICAgZGV2X2RiZyhtY2ktPmRldiwgIiVzOiBwcm9wID0gJWRcbiIsIF9f ZnVuY19fLCBwc3ApOwo+ICsgICAgICAgc3dpdGNoIChwc3ApIHsKPiArICAgICAgIGNhc2UgUE9X RVJfU1VQUExZX1BST1BfT05MSU5FOgo+ICsgICAgICAgICAgICAgICByZXQgPSBtdDYzNjBfY2hh cmdlcl9nZXRfb25saW5lKG1jaSwgdmFsKTsKPiArICAgICAgICAgICAgICAgYnJlYWs7Cj4gKyAg ICAgICBjYXNlIFBPV0VSX1NVUFBMWV9QUk9QX1NUQVRVUzoKPiArICAgICAgICAgICAgICAgcmV0 ID0gbXQ2MzYwX2NoYXJnZXJfZ2V0X3N0YXR1cyhtY2ksIHZhbCk7Cj4gKyAgICAgICAgICAgICAg IGJyZWFrOwo+ICsgICAgICAgY2FzZSBQT1dFUl9TVVBQTFlfUFJPUF9DSEFSR0VfVFlQRToKPiAr ICAgICAgICAgICAgICAgcmV0ID0gbXQ2MzYwX2NoYXJnZXJfZ2V0X2NoYXJnZV90eXBlKG1jaSwg dmFsKTsKPiArICAgICAgICAgICAgICAgYnJlYWs7Cj4gKyAgICAgICBjYXNlIFBPV0VSX1NVUFBM WV9QUk9QX0NPTlNUQU5UX0NIQVJHRV9DVVJSRU5UOgo+ICsgICAgICAgICAgICAgICByZXQgPSBt dDYzNjBfY2hhcmdlcl9nZXRfaWNoZyhtY2ksIHZhbCk7Cj4gKyAgICAgICAgICAgICAgIGJyZWFr Owo+ICsgICAgICAgY2FzZSBQT1dFUl9TVVBQTFlfUFJPUF9DT05TVEFOVF9DSEFSR0VfQ1VSUkVO VF9NQVg6Cj4gKyAgICAgICAgICAgICAgIHJldCA9IG10NjM2MF9jaGFyZ2VyX2dldF9tYXhfaWNo ZyhtY2ksIHZhbCk7Cj4gKyAgICAgICAgICAgICAgIGJyZWFrOwo+ICsgICAgICAgY2FzZSBQT1dF Ul9TVVBQTFlfUFJPUF9DT05TVEFOVF9DSEFSR0VfVk9MVEFHRToKPiArICAgICAgICAgICAgICAg cmV0ID0gbXQ2MzYwX2NoYXJnZXJfZ2V0X2N2KG1jaSwgdmFsKTsKPiArICAgICAgICAgICAgICAg YnJlYWs7Cj4gKyAgICAgICBjYXNlIFBPV0VSX1NVUFBMWV9QUk9QX0NPTlNUQU5UX0NIQVJHRV9W T0xUQUdFX01BWDoKPiArICAgICAgICAgICAgICAgcmV0ID0gbXQ2MzYwX2NoYXJnZXJfZ2V0X21h eF9jdihtY2ksIHZhbCk7Cj4gKyAgICAgICAgICAgICAgIGJyZWFrOwo+ICsgICAgICAgY2FzZSBQ T1dFUl9TVVBQTFlfUFJPUF9JTlBVVF9DVVJSRU5UX0xJTUlUOgo+ICsgICAgICAgICAgICAgICBy ZXQgPSBtdDYzNjBfY2hhcmdlcl9nZXRfYWljcihtY2ksIHZhbCk7Cj4gKyAgICAgICAgICAgICAg IGJyZWFrOwo+ICsgICAgICAgY2FzZSBQT1dFUl9TVVBQTFlfUFJPUF9QUkVDSEFSR0VfQ1VSUkVO VDoKPiArICAgICAgICAgICAgICAgcmV0ID0gbXQ2MzYwX2NoYXJnZXJfZ2V0X2lwcmVjaGcobWNp LCB2YWwpOwo+ICsgICAgICAgICAgICAgICBicmVhazsKPiArICAgICAgIGNhc2UgUE9XRVJfU1VQ UExZX1BST1BfQ0hBUkdFX1RFUk1fQ1VSUkVOVDoKPiArICAgICAgICAgICAgICAgcmV0ID0gbXQ2 MzYwX2NoYXJnZXJfZ2V0X2llb2MobWNpLCB2YWwpOwo+ICsgICAgICAgICAgICAgICBicmVhazsK PiArICAgICAgIGNhc2UgUE9XRVJfU1VQUExZX1BST1BfVVNCX1RZUEU6Cj4gKyAgICAgICAgICAg ICAgIHZhbC0+aW50dmFsID0gbWNpLT5wc3lfdXNiX3R5cGU7Cj4gKyAgICAgICAgICAgICAgIGJy ZWFrOwo+ICsgICAgICAgZGVmYXVsdDoKPiArICAgICAgICAgICAgICAgcmV0ID0gLUVOT0RBVEE7 Cj4gKyAgICAgICB9Cj4gKyAgICAgICByZXR1cm4gcmV0Owo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50 IG10NjM2MF9jaGFyZ2VyX3NldF9wcm9wZXJ0eShzdHJ1Y3QgcG93ZXJfc3VwcGx5ICpwc3ksCj4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW51bSBwb3dlcl9zdXBwbHlf cHJvcGVydHkgcHNwLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv bnN0IHVuaW9uIHBvd2VyX3N1cHBseV9wcm9wdmFsICp2YWwpCj4gK3sKPiArICAgICAgIHN0cnVj dCBtdDYzNjBfY2hnX2luZm8gKm1jaSA9IHBvd2VyX3N1cHBseV9nZXRfZHJ2ZGF0YShwc3kpOwo+ ICsgICAgICAgaW50IHJldDsKPiArCj4gKyAgICAgICBkZXZfZGJnKG1jaS0+ZGV2LCAiJXM6IHBy b3AgPSAlZFxuIiwgX19mdW5jX18sIHBzcCk7Cj4gKyAgICAgICBzd2l0Y2ggKHBzcCkgewo+ICsg ICAgICAgY2FzZSBQT1dFUl9TVVBQTFlfUFJPUF9PTkxJTkU6Cj4gKyAgICAgICAgICAgICAgIHJl dCA9IG10NjM2MF9jaGFyZ2VyX3NldF9vbmxpbmUobWNpLCB2YWwpOwo+ICsgICAgICAgICAgICAg ICBicmVhazsKPiArICAgICAgIGNhc2UgUE9XRVJfU1VQUExZX1BST1BfQ09OU1RBTlRfQ0hBUkdF X0NVUlJFTlQ6Cj4gKyAgICAgICAgICAgICAgIHJldCA9IG10NjM2MF9jaGFyZ2VyX3NldF9pY2hn KG1jaSwgdmFsKTsKPiArICAgICAgICAgICAgICAgYnJlYWs7Cj4gKyAgICAgICBjYXNlIFBPV0VS X1NVUFBMWV9QUk9QX0NPTlNUQU5UX0NIQVJHRV9WT0xUQUdFOgo+ICsgICAgICAgICAgICAgICBy ZXQgPSBtdDYzNjBfY2hhcmdlcl9zZXRfY3YobWNpLCB2YWwpOwo+ICsgICAgICAgICAgICAgICBi cmVhazsKPiArICAgICAgIGNhc2UgUE9XRVJfU1VQUExZX1BST1BfSU5QVVRfQ1VSUkVOVF9MSU1J VDoKPiArICAgICAgICAgICAgICAgcmV0ID0gbXQ2MzYwX2NoYXJnZXJfc2V0X2FpY3IobWNpLCB2 YWwpOwo+ICsgICAgICAgICAgICAgICBicmVhazsKPiArICAgICAgIGNhc2UgUE9XRVJfU1VQUExZ X1BST1BfUFJFQ0hBUkdFX0NVUlJFTlQ6Cj4gKyAgICAgICAgICAgICAgIHJldCA9IG10NjM2MF9j aGFyZ2VyX3NldF9pcHJlY2hnKG1jaSwgdmFsKTsKPiArICAgICAgICAgICAgICAgYnJlYWs7Cj4g KyAgICAgICBjYXNlIFBPV0VSX1NVUFBMWV9QUk9QX0NIQVJHRV9URVJNX0NVUlJFTlQ6Cj4gKyAg ICAgICAgICAgICAgIHJldCA9IG10NjM2MF9jaGFyZ2VyX3NldF9pZW9jKG1jaSwgdmFsKTsKPiAr ICAgICAgICAgICAgICAgYnJlYWs7Cj4gKyAgICAgICBkZWZhdWx0Ogo+ICsgICAgICAgICAgICAg ICByZXQgPSAtRUlOVkFMOwo+ICsgICAgICAgfQo+ICsgICAgICAgcmV0dXJuIHJldDsKPiArfQo+ ICsKPiArc3RhdGljIGludCBtdDYzNjBfY2hhcmdlcl9wcm9wZXJ0eV9pc193cml0ZWFibGUoc3Ry dWN0IHBvd2VyX3N1cHBseSAqcHN5LAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgZW51bSBwb3dlcl9zdXBwbHlfcHJvcGVydHkgcHNwKQo+ICt7Cj4gKyAg ICAgICBzd2l0Y2ggKHBzcCkgewo+ICsgICAgICAgY2FzZSBQT1dFUl9TVVBQTFlfUFJPUF9PTkxJ TkU6Cj4gKyAgICAgICBjYXNlIFBPV0VSX1NVUFBMWV9QUk9QX0NPTlNUQU5UX0NIQVJHRV9DVVJS RU5UOgo+ICsgICAgICAgY2FzZSBQT1dFUl9TVVBQTFlfUFJPUF9DT05TVEFOVF9DSEFSR0VfVk9M VEFHRToKPiArICAgICAgIGNhc2UgUE9XRVJfU1VQUExZX1BST1BfSU5QVVRfQ1VSUkVOVF9MSU1J VDoKPiArICAgICAgIGNhc2UgUE9XRVJfU1VQUExZX1BST1BfUFJFQ0hBUkdFX0NVUlJFTlQ6Cj4g KyAgICAgICBjYXNlIFBPV0VSX1NVUFBMWV9QUk9QX0NIQVJHRV9URVJNX0NVUlJFTlQ6Cj4gKyAg ICAgICAgICAgICAgIHJldHVybiAxOwo+ICsgICAgICAgZGVmYXVsdDoKPiArICAgICAgICAgICAg ICAgcmV0dXJuIDA7Cj4gKyAgICAgICB9Cj4gK30KPiArCj4gK3N0YXRpYyBlbnVtIHBvd2VyX3N1 cHBseV9wcm9wZXJ0eSBtdDYzNjBfY2hhcmdlcl9wcm9wZXJ0aWVzW10gPSB7Cj4gKyAgICAgICBQ T1dFUl9TVVBQTFlfUFJPUF9PTkxJTkUsCj4gKyAgICAgICBQT1dFUl9TVVBQTFlfUFJPUF9TVEFU VVMsCj4gKyAgICAgICBQT1dFUl9TVVBQTFlfUFJPUF9DSEFSR0VfVFlQRSwKPiArICAgICAgIFBP V0VSX1NVUFBMWV9QUk9QX0NPTlNUQU5UX0NIQVJHRV9DVVJSRU5ULAo+ICsgICAgICAgUE9XRVJf U1VQUExZX1BST1BfQ09OU1RBTlRfQ0hBUkdFX0NVUlJFTlRfTUFYLAo+ICsgICAgICAgUE9XRVJf U1VQUExZX1BST1BfQ09OU1RBTlRfQ0hBUkdFX1ZPTFRBR0UsCj4gKyAgICAgICBQT1dFUl9TVVBQ TFlfUFJPUF9DT05TVEFOVF9DSEFSR0VfVk9MVEFHRV9NQVgsCj4gKyAgICAgICBQT1dFUl9TVVBQ TFlfUFJPUF9JTlBVVF9DVVJSRU5UX0xJTUlULAo+ICsgICAgICAgUE9XRVJfU1VQUExZX1BST1Bf UFJFQ0hBUkdFX0NVUlJFTlQsCj4gKyAgICAgICBQT1dFUl9TVVBQTFlfUFJPUF9DSEFSR0VfVEVS TV9DVVJSRU5ULAo+ICsgICAgICAgUE9XRVJfU1VQUExZX1BST1BfVVNCX1RZUEUsCj4gK307Cj4g Kwo+ICtzdGF0aWMgY2hhciAqbXQ2MzYwX2NoYXJnZXJfc3VwcGxpZWRfdG9bXSA9IHsKPiArICAg ICAgICJtYWluLWJhdHRlcnkiCj4gK307Cj4gKwo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IHBvd2Vy X3N1cHBseV9kZXNjIG10NjM2MF9jaGFyZ2VyX2Rlc2MgPSB7Cj4gKyAgICAgICAudHlwZSAgICAg ICAgICAgICAgICAgICA9IFBPV0VSX1NVUFBMWV9UWVBFX1VTQiwKPiArICAgICAgIC5wcm9wZXJ0 aWVzICAgICAgICAgICAgID0gbXQ2MzYwX2NoYXJnZXJfcHJvcGVydGllcywKPiArICAgICAgIC5u dW1fcHJvcGVydGllcyAgICAgICAgID0gQVJSQVlfU0laRShtdDYzNjBfY2hhcmdlcl9wcm9wZXJ0 aWVzKSwKPiArICAgICAgIC5nZXRfcHJvcGVydHkgICAgICAgICAgID0gbXQ2MzYwX2NoYXJnZXJf Z2V0X3Byb3BlcnR5LAo+ICsgICAgICAgLnNldF9wcm9wZXJ0eSAgICAgICAgICAgPSBtdDYzNjBf Y2hhcmdlcl9zZXRfcHJvcGVydHksCj4gKyAgICAgICAucHJvcGVydHlfaXNfd3JpdGVhYmxlICA9 IG10NjM2MF9jaGFyZ2VyX3Byb3BlcnR5X2lzX3dyaXRlYWJsZSwKPiArICAgICAgIC51c2JfdHlw ZXMgICAgICAgICAgICAgID0gbXQ2MzYwX2NoYXJnZXJfdXNiX3R5cGVzLAo+ICsgICAgICAgLm51 bV91c2JfdHlwZXMgICAgICAgICAgPSBBUlJBWV9TSVpFKG10NjM2MF9jaGFyZ2VyX3VzYl90eXBl cyksCj4gK307Cj4gKwo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IHJlZ3VsYXRvcl9vcHMgbXQ2MzYw X2NoZ19vdGdfb3BzID0gewo+ICsgICAgICAgLmxpc3Rfdm9sdGFnZSA9IHJlZ3VsYXRvcl9saXN0 X3ZvbHRhZ2VfbGluZWFyLAo+ICsgICAgICAgLmVuYWJsZSA9IHJlZ3VsYXRvcl9lbmFibGVfcmVn bWFwLAo+ICsgICAgICAgLmRpc2FibGUgPSByZWd1bGF0b3JfZGlzYWJsZV9yZWdtYXAsCj4gKyAg ICAgICAuaXNfZW5hYmxlZCA9IHJlZ3VsYXRvcl9pc19lbmFibGVkX3JlZ21hcCwKPiArICAgICAg IC5zZXRfdm9sdGFnZV9zZWwgPSByZWd1bGF0b3Jfc2V0X3ZvbHRhZ2Vfc2VsX3JlZ21hcCwKPiAr ICAgICAgIC5nZXRfdm9sdGFnZV9zZWwgPSByZWd1bGF0b3JfZ2V0X3ZvbHRhZ2Vfc2VsX3JlZ21h cCwKPiArfTsKPiArCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgcmVndWxhdG9yX2Rlc2MgbXQ2MzYw X290Z19yZGVzYyA9IHsKPiArICAgICAgIC5vZl9tYXRjaCA9ICJ1c2Itb3RnLXZidXMiLAo+ICsg ICAgICAgLm5hbWUgPSAidXNiLW90Zy12YnVzIiwKPiArICAgICAgIC5vcHMgPSAmbXQ2MzYwX2No Z19vdGdfb3BzLAo+ICsgICAgICAgLm93bmVyID0gVEhJU19NT0RVTEUsCj4gKyAgICAgICAudHlw ZSA9IFJFR1VMQVRPUl9WT0xUQUdFLAo+ICsgICAgICAgLm1pbl91ViA9IDQ0MjUwMDAsCj4gKyAg ICAgICAudVZfc3RlcCA9IDI1MDAwLCAvKiBzdGVwICAyNW1WICovCj4gKyAgICAgICAubl92b2x0 YWdlcyA9IDU3LCAvKiA0NDI1bVYgdG8gNTgyNW1WICovCj4gKyAgICAgICAudnNlbF9yZWcgPSBN VDYzNjBfUE1VX0NIR19DVFJMNSwKPiArICAgICAgIC52c2VsX21hc2sgPSBNVDYzNjBfTUFTS19W T0JTVCwKPiArICAgICAgIC5lbmFibGVfcmVnID0gTVQ2MzYwX1BNVV9DSEdfQ1RSTDEsCj4gKyAg ICAgICAuZW5hYmxlX21hc2sgPSBNVDYzNjBfTUFTS19PUEFfTU9ERSwKPiArfTsKPiArCj4gK3N0 YXRpYyBjb25zdCB1bnNpZ25lZCBpbnQgbXQ2MzYwX2V4dGNvbl9jYWJsZVtdID0gewo+ICsgICAg ICAgRVhUQ09OX1VTQiwKPiArICAgICAgIEVYVENPTl9VU0JfSE9TVCwKPiArICAgICAgIEVYVENP Tl9DSEdfVVNCX1NEUCwKPiArICAgICAgIEVYVENPTl9DSEdfVVNCX0RDUCwKPiArICAgICAgIEVY VENPTl9DSEdfVVNCX0NEUCwKPiArICAgICAgIEVYVENPTl9DSEdfVVNCX1NMT1csIC8qIEZvciBO b25TdGFuZGFyZCBDaGFyZ2VyICovCj4gKyAgICAgICBFWFRDT05fTk9ORSwKPiArfTsKPiArCj4g K3N0YXRpYyBpcnFyZXR1cm5fdCBtdDYzNjBfcG11X2NoZ190cmVnX2V2dF9oYW5kbGVyKGludCBp cnEsIHZvaWQgKmRhdGEpCj4gK3sKPiArICAgICAgIHN0cnVjdCBtdDYzNjBfY2hnX2luZm8gKm1j aSA9IGRhdGE7Cj4gKwo+ICsgICAgICAgZGV2X3dhcm4obWNpLT5kZXYsICIlc1xuIiwgX19mdW5j X18pOwo+ICsgICAgICAgcmV0dXJuIElSUV9IQU5ETEVEOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaXJx cmV0dXJuX3QgbXQ2MzYwX3BtdV9wd3JfcmR5X2V2dF9oYW5kbGVyKGludCBpcnEsIHZvaWQgKmRh dGEpCj4gK3sKPiArICAgICAgIHN0cnVjdCBtdDYzNjBfY2hnX2luZm8gKm1jaSA9IGRhdGE7Cj4g Kwo+ICsgICAgICAgZGV2X2RiZyhtY2ktPmRldiwgIiVzXG4iLCBfX2Z1bmNfXyk7Cj4gKyAgICAg ICByZXR1cm4gSVJRX0hBTkRMRUQ7Cj4gK30KPiArCj4gK3N0YXRpYyBpcnFyZXR1cm5fdCBtdDYz NjBfcG11X2NoZ19iYXRzeXN1dl9ldnRfaGFuZGxlcihpbnQgaXJxLCB2b2lkICpkYXRhKQo+ICt7 Cj4gKyAgICAgICBzdHJ1Y3QgbXQ2MzYwX2NoZ19pbmZvICptY2kgPSBkYXRhOwo+ICsKPiArICAg ICAgIGRldl93YXJuKG1jaS0+ZGV2LCAiJXNcbiIsIF9fZnVuY19fKTsKPiArICAgICAgIHJldHVy biBJUlFfSEFORExFRDsKPiArfQo+ICsKPiArc3RhdGljIGlycXJldHVybl90IG10NjM2MF9wbXVf Y2hnX3ZzeXN1dl9ldnRfaGFuZGxlcihpbnQgaXJxLCB2b2lkICpkYXRhKQo+ICt7Cj4gKyAgICAg ICBzdHJ1Y3QgbXQ2MzYwX2NoZ19pbmZvICptY2kgPSBkYXRhOwo+ICsKPiArICAgICAgIGRldl93 YXJuKG1jaS0+ZGV2LCAiJXNcbiIsIF9fZnVuY19fKTsKPiArICAgICAgIHJldHVybiBJUlFfSEFO RExFRDsKPiArfQo+ICsKPiArc3RhdGljIGlycXJldHVybl90IG10NjM2MF9wbXVfY2hnX3ZzeXNv dl9ldnRfaGFuZGxlcihpbnQgaXJxLCB2b2lkICpkYXRhKQo+ICt7Cj4gKyAgICAgICBzdHJ1Y3Qg bXQ2MzYwX2NoZ19pbmZvICptY2kgPSBkYXRhOwo+ICsKPiArICAgICAgIGRldl93YXJuKG1jaS0+ ZGV2LCAiJXNcbiIsIF9fZnVuY19fKTsKPiArICAgICAgIHJldHVybiBJUlFfSEFORExFRDsKPiAr fQo+ICsKPiArc3RhdGljIGlycXJldHVybl90IG10NjM2MF9wbXVfY2hnX3ZiYXRvdl9ldnRfaGFu ZGxlcihpbnQgaXJxLCB2b2lkICpkYXRhKQo+ICt7Cj4gKyAgICAgICBzdHJ1Y3QgbXQ2MzYwX2No Z19pbmZvICptY2kgPSBkYXRhOwo+ICsKPiArICAgICAgIGRldl93YXJuKG1jaS0+ZGV2LCAiJXNc biIsIF9fZnVuY19fKTsKPiArICAgICAgIHJldHVybiBJUlFfSEFORExFRDsKPiArfQo+ICsKPiAr c3RhdGljIGlycXJldHVybl90IG10NjM2MF9wbXVfY2hnX3ZidXNvdl9ldnRfaGFuZGxlcihpbnQg aXJxLCB2b2lkICpkYXRhKQo+ICt7Cj4gKyAgICAgICBzdHJ1Y3QgbXQ2MzYwX2NoZ19pbmZvICpt Y2kgPSBkYXRhOwo+ICsKPiArICAgICAgIGRldl93YXJuKG1jaS0+ZGV2LCAiJXNcbiIsIF9fZnVu Y19fKTsKPiArICAgICAgIHJldHVybiBJUlFfSEFORExFRDsKPiArfQo+ICsKPiArc3RhdGljIGly cXJldHVybl90IG10NjM2MF9wbXVfY2hnX2FpY2NtZWFzbF9oYW5kbGVyKGludCBpcnEsIHZvaWQg KmRhdGEpCj4gK3sKPiArICAgICAgIHN0cnVjdCBtdDYzNjBfY2hnX2luZm8gKm1jaSA9IGRhdGE7 Cj4gKwo+ICsgICAgICAgZGV2X2RiZyhtY2ktPmRldiwgIiVzXG4iLCBfX2Z1bmNfXyk7Cj4gKyAg ICAgICByZXR1cm4gSVJRX0hBTkRMRUQ7Cj4gK30KPiArCj4gK3N0YXRpYyBpcnFyZXR1cm5fdCBt dDYzNjBfcG11X3dkdG1yaV9oYW5kbGVyKGludCBpcnEsIHZvaWQgKmRhdGEpCj4gK3sKPiArICAg ICAgIHN0cnVjdCBtdDYzNjBfY2hnX2luZm8gKm1jaSA9IGRhdGE7Cj4gKwo+ICsgICAgICAgZGV2 X2RiZyhtY2ktPmRldiwgIiVzXG4iLCBfX2Z1bmNfXyk7Cj4gKyAgICAgICByZXR1cm4gSVJRX0hB TkRMRUQ7Cj4gK30KPiArCj4gK3N0YXRpYyBpcnFyZXR1cm5fdCBtdDYzNjBfcG11X2NoZ19yZWNo Z2lfaGFuZGxlcihpbnQgaXJxLCB2b2lkICpkYXRhKQo+ICt7Cj4gKyAgICAgICBzdHJ1Y3QgbXQ2 MzYwX2NoZ19pbmZvICptY2kgPSBkYXRhOwo+ICsKPiArICAgICAgIGRldl9kYmcobWNpLT5kZXYs ICIlc1xuIiwgX19mdW5jX18pOwo+ICsgICAgICAgcmV0dXJuIElSUV9IQU5ETEVEOwo+ICt9Cj4g Kwo+ICtzdGF0aWMgaXJxcmV0dXJuX3QgbXQ2MzYwX3BtdV9jaGdfdGVybWlfaGFuZGxlcihpbnQg aXJxLCB2b2lkICpkYXRhKQo+ICt7Cj4gKyAgICAgICBzdHJ1Y3QgbXQ2MzYwX2NoZ19pbmZvICpt Y2kgPSBkYXRhOwo+ICsKPiArICAgICAgIGRldl9kYmcobWNpLT5kZXYsICIlc1xuIiwgX19mdW5j X18pOwo+ICsgICAgICAgcmV0dXJuIElSUV9IQU5ETEVEOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaXJx cmV0dXJuX3QgbXQ2MzYwX3BtdV9jaGdfaWVvY2lfaGFuZGxlcihpbnQgaXJxLCB2b2lkICpkYXRh KQo+ICt7Cj4gKyAgICAgICBzdHJ1Y3QgbXQ2MzYwX2NoZ19pbmZvICptY2kgPSBkYXRhOwo+ICsK PiArICAgICAgIGRldl9kYmcobWNpLT5kZXYsICIlc1xuIiwgX19mdW5jX18pOwo+ICsgICAgICAg cmV0dXJuIElSUV9IQU5ETEVEOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaXJxcmV0dXJuX3QgbXQ2MzYw X3BtdV9wdW1weF9kb25laV9oYW5kbGVyKGludCBpcnEsIHZvaWQgKmRhdGEpCj4gK3sKPiArICAg ICAgIHN0cnVjdCBtdDYzNjBfY2hnX2luZm8gKm1jaSA9IGRhdGE7Cj4gKwo+ICsgICAgICAgZGV2 X2RiZyhtY2ktPmRldiwgIiVzXG4iLCBfX2Z1bmNfXyk7Cj4gKyAgICAgICByZXR1cm4gSVJRX0hB TkRMRUQ7Cj4gK30KPiArCj4gK3N0YXRpYyBpcnFyZXR1cm5fdCBtdDYzNjBfcG11X2F0dGFjaF9p X2hhbmRsZXIoaW50IGlycSwgdm9pZCAqZGF0YSkKPiArewo+ICsgICAgICAgc3RydWN0IG10NjM2 MF9jaGdfaW5mbyAqbWNpID0gZGF0YTsKPiArICAgICAgIGludCByZXQsIGNoZ190eXBlID0gRVhU Q09OX05PTkU7Cj4gKyAgICAgICB1bnNpZ25lZCBpbnQgdXNiX3N0YXR1czsKPiArICAgICAgIGlu dCBsYXN0X3VzYl90eXBlOwo+ICsKPiArICAgICAgIGRldl9kYmcobWNpLT5kZXYsICIlc1xuIiwg X19mdW5jX18pOwo+ICsgICAgICAgbXV0ZXhfbG9jaygmbWNpLT5jaGdkZXRfbG9jayk7Cj4gKyAg ICAgICBpZiAoIW1jaS0+YmMxMl9lbikgewo+ICsgICAgICAgICAgICAgICBkZXZfaW5mbyhtY2kt PmRldiwgIiVzOiBiYzEyIGRpc2FibGVkLCBpZ25vcmUgaXJxXG4iLCBfX2Z1bmNfXyk7Cj4gKyAg ICAgICAgICAgICAgIGdvdG8gb3V0Owo+ICsgICAgICAgfQo+ICsgICAgICAgbGFzdF91c2JfdHlw ZSA9IG1jaS0+cHN5X3VzYl90eXBlOwo+ICsgICAgICAgLyogUGx1ZyBpbiAqLwo+ICsgICAgICAg cmV0ID0gcmVnbWFwX3JlYWQobWNpLT5yZWdtYXAsIE1UNjM2MF9QTVVfVVNCX1NUQVRVUzEsICZ1 c2Jfc3RhdHVzKTsKPiArICAgICAgIGlmIChyZXQgPCAwKQo+ICsgICAgICAgICAgICAgICBnb3Rv IG91dDsKPiArICAgICAgIHVzYl9zdGF0dXMgJj0gTVQ2MzYwX01BU0tfVVNCX1NUQVRVUzsKPiAr ICAgICAgIHVzYl9zdGF0dXMgPj49IE1UNjM2MF9TSEZUX1VTQl9TVEFUVVM7Cj4gKyAgICAgICBz d2l0Y2ggKHVzYl9zdGF0dXMpIHsKPiArICAgICAgIGNhc2UgTVQ2MzYwX0NIR19UWVBFX1VOREVS X0dPSU5HOgo+ICsgICAgICAgICAgICAgICBkZXZfaW5mbyhtY2ktPmRldiwgIiVzOiB1bmRlciBn b2luZy4uLlxuIiwgX19mdW5jX18pOwo+ICsgICAgICAgICAgICAgICBnb3RvIG91dDsKPiArICAg ICAgIGNhc2UgTVQ2MzYwX0NIR19UWVBFX1NEUDoKPiArICAgICAgICAgICAgICAgY2hnX3R5cGUg PSBFWFRDT05fQ0hHX1VTQl9TRFA7Cj4gKyAgICAgICAgICAgICAgIG1jaS0+cHN5X3VzYl90eXBl ID0gUE9XRVJfU1VQUExZX1VTQl9UWVBFX1NEUDsKPiArICAgICAgICAgICAgICAgYnJlYWs7Cj4g KyAgICAgICBjYXNlIE1UNjM2MF9DSEdfVFlQRV9TRFBOU1REOgo+ICsgICAgICAgICAgICAgICBj aGdfdHlwZSA9IEVYVENPTl9DSEdfVVNCX1NMT1c7Cj4gKyAgICAgICAgICAgICAgIG1jaS0+cHN5 X3VzYl90eXBlID0gUE9XRVJfU1VQUExZX1VTQl9UWVBFX1NEUDsKPiArICAgICAgICAgICAgICAg YnJlYWs7Cj4gKyAgICAgICBjYXNlIE1UNjM2MF9DSEdfVFlQRV9DRFA6Cj4gKyAgICAgICAgICAg ICAgIGNoZ190eXBlID0gRVhUQ09OX0NIR19VU0JfQ0RQOwo+ICsgICAgICAgICAgICAgICBtY2kt PnBzeV91c2JfdHlwZSA9IFBPV0VSX1NVUFBMWV9VU0JfVFlQRV9DRFA7Cj4gKyAgICAgICAgICAg ICAgIGJyZWFrOwo+ICsgICAgICAgY2FzZSBNVDYzNjBfQ0hHX1RZUEVfRENQOgo+ICsgICAgICAg ICAgICAgICBjaGdfdHlwZSA9IEVYVENPTl9DSEdfVVNCX0RDUDsKPiArICAgICAgICAgICAgICAg bWNpLT5wc3lfdXNiX3R5cGUgPSBQT1dFUl9TVVBQTFlfVVNCX1RZUEVfRENQOwo+ICsgICAgICAg ICAgICAgICBicmVhazsKPiArICAgICAgIGRlZmF1bHQ6Cj4gKyAgICAgICAgICAgICAgIGRldl93 YXJuKG1jaS0+ZGV2LAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAiJXM6IGRpc2Nvbm5lY3Qg b3IgdW5rbm93biBzdGF0dXNcbiIsIF9fZnVuY19fKTsKPiArICAgICAgICAgICAgICAgZ290byBv dXQ7Cj4gKyAgICAgICB9Cj4gKwo+ICsgICAgICAgZGV2X2luZm8obWNpLT5kZXYsICIlczogY2hn X3R5cGUgPSAlZFxuIiwgX19mdW5jX18sIGNoZ190eXBlKTsKPiArICAgICAgIGlmIChjaGdfdHlw ZSA9PSBFWFRDT05fQ0hHX1VTQl9TRFAgfHwgY2hnX3R5cGUgPT0gRVhUQ09OX0NIR19VU0JfQ0RQ KSB7Cj4gKyAgICAgICAgICAgICAgIGV4dGNvbl9zZXRfc3RhdGVfc3luYyhtY2ktPmVkZXYsIEVY VENPTl9VU0JfSE9TVCwgZmFsc2UpOwo+ICsgICAgICAgICAgICAgICBleHRjb25fc2V0X3N0YXRl X3N5bmMobWNpLT5lZGV2LCBFWFRDT05fVVNCLCB0cnVlKTsKPiArICAgICAgIH0KPiArICAgICAg IGV4dGNvbl9zZXRfc3RhdGVfc3luYyhtY2ktPmVkZXYsIGNoZ190eXBlLCB0cnVlKTsKPiArICAg ICAgIGlmIChsYXN0X3VzYl90eXBlICE9IG1jaS0+cHN5X3VzYl90eXBlKQo+ICsgICAgICAgICAg ICAgICBwb3dlcl9zdXBwbHlfY2hhbmdlZChtY2ktPnBzeSk7Cj4gK291dDoKPiArICAgICAgIG11 dGV4X3VubG9jaygmbWNpLT5jaGdkZXRfbG9jayk7Cj4gKyAgICAgICByZXR1cm4gSVJRX0hBTkRM RUQ7Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkIG10NjM2MF9oYW5kbGVfY2hyZGV0X2V4dF9ldnQo c3RydWN0IG10NjM2MF9jaGdfaW5mbyAqbWNpKQo+ICt7Cj4gKyAgICAgICBpbnQgaSwgcmV0Owo+ ICsgICAgICAgYm9vbCBwd3JfcmR5Owo+ICsgICAgICAgaW50IGxhc3RfdXNiX3R5cGU7Cj4gKwo+ ICsgICAgICAgbXV0ZXhfbG9jaygmbWNpLT5jaGdkZXRfbG9jayk7Cj4gKyAgICAgICByZXQgPSBt dDYzNjBfZ2V0X2NocmRldF9leHRfc3RhdChtY2ksICZwd3JfcmR5KTsKPiArICAgICAgIGlmIChy ZXQgPCAwKQo+ICsgICAgICAgICAgICAgICBnb3RvIG91dDsKPiArICAgICAgIGlmIChtY2ktPnB3 cl9yZHkgPT0gcHdyX3JkeSkgewo+ICsgICAgICAgICAgICAgICBkZXZfaW5mbyhtY2ktPmRldiwK PiArICAgICAgICAgICAgICAgICAgICAgICAgIiVzOiBwd3JfcmR5IGlzIHNhbWUoJWQpXG4iLCBf X2Z1bmNfXywgcHdyX3JkeSk7Cj4gKyAgICAgICAgICAgICAgIGdvdG8gb3V0Owo+ICsgICAgICAg fQo+ICsgICAgICAgbWNpLT5wd3JfcmR5ID0gcHdyX3JkeTsKPiArICAgICAgIGxhc3RfdXNiX3R5 cGUgPSBtY2ktPnBzeV91c2JfdHlwZTsKPiArICAgICAgIGRldl9pbmZvKG1jaS0+ZGV2LCAiJXM6 IHB3cl9yZHkgPSAlZFxuIiwgX19mdW5jX18sIHB3cl9yZHkpOwo+ICsgICAgICAgaWYgKCFwd3Jf cmR5KSB7Cj4gKyAgICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKG10NjM2 MF9leHRjb25fY2FibGUpIC0gMTsgaSsrKSB7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgZXh0 Y29uX3NldF9zdGF0ZV9zeW5jKG1jaS0+ZWRldiwKPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgbXQ2MzYwX2V4dGNvbl9jYWJsZVtpXSwgZmFsc2UpOwo+ICsg ICAgICAgICAgICAgICB9Cj4gKyAgICAgICAgICAgICAgIG1jaS0+cHN5X3VzYl90eXBlID0gUE9X RVJfU1VQUExZX1VTQl9UWVBFX1VOS05PV047Cj4gKyAgICAgICAgICAgICAgIGlmIChsYXN0X3Vz Yl90eXBlICE9IG1jaS0+cHN5X3VzYl90eXBlKQo+ICsgICAgICAgICAgICAgICAgICAgICAgIHBv d2VyX3N1cHBseV9jaGFuZ2VkKG1jaS0+cHN5KTsKPiArCj4gKyAgICAgICB9Cj4gKyAgICAgICBy ZXQgPSByZWdtYXBfdXBkYXRlX2JpdHMobWNpLT5yZWdtYXAsCj4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgTVQ2MzYwX1BNVV9ERVZJQ0VfVFlQRSwKPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBNVDYzNjBfTUFTS19VU0JDSEdFTiwKPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBwd3JfcmR5ID8gTVQ2MzYwX01BU0tfVVNCQ0hHRU4gOiAwKTsKPiAr ICAgICAgIGlmIChyZXQgPCAwKQo+ICsgICAgICAgICAgICAgICBnb3RvIG91dDsKPiArICAgICAg IG1jaS0+YmMxMl9lbiA9IHB3cl9yZHk7Cj4gK291dDoKPiArICAgICAgIG11dGV4X3VubG9jaygm bWNpLT5jaGdkZXRfbG9jayk7Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkIG10NjM2MF9jaHJkZXRf d29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspCj4gK3sKPiArICAgICAgIHN0cnVjdCBtdDYz NjBfY2hnX2luZm8gKm1jaSA9IChzdHJ1Y3QgbXQ2MzYwX2NoZ19pbmZvICopY29udGFpbmVyX29m KAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3b3JrLCBzdHJ1Y3QgbXQ2 MzYwX2NoZ19pbmZvLCBjaHJkZXRfd29yayk7Cj4gKwo+ICsgICAgICAgZGV2X2luZm8obWNpLT5k ZXYsICIlc1xuIiwgX19mdW5jX18pOwo+ICsgICAgICAgbXQ2MzYwX2hhbmRsZV9jaHJkZXRfZXh0 X2V2dChtY2kpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaXJxcmV0dXJuX3QgbXQ2MzYwX3BtdV9jaHJk ZXRfZXh0X2V2dF9oYW5kbGVyKGludCBpcnEsIHZvaWQgKmRhdGEpCj4gK3sKPiArICAgICAgIHN0 cnVjdCBtdDYzNjBfY2hnX2luZm8gKm1jaSA9IGRhdGE7Cj4gKwo+ICsgICAgICAgZGV2X2luZm8o bWNpLT5kZXYsICIlc1xuIiwgX19mdW5jX18pOwo+ICsgICAgICAgbXQ2MzYwX2hhbmRsZV9jaHJk ZXRfZXh0X2V2dChtY2kpOwo+ICsgICAgICAgcmV0dXJuIElSUV9IQU5ETEVEOwo+ICt9Cj4gKwo+ ICtzdGF0aWMgY29uc3Qgc3RydWN0IG10NjM2MF9pcnFfZGVzYyBtdDYzNjBfY2hnX2lycV9kZXNj W10gPSB7Cj4gKyAgICAgICB7ICJjaGdfdHJlZ19ldnQiLCBtdDYzNjBfcG11X2NoZ190cmVnX2V2 dF9oYW5kbGVyIH0sCj4gKyAgICAgICB7ICJwd3JfcmR5X2V2dCIsIG10NjM2MF9wbXVfcHdyX3Jk eV9ldnRfaGFuZGxlciB9LAo+ICsgICAgICAgeyAiY2hnX2JhdHN5c3V2X2V2dCIsIG10NjM2MF9w bXVfY2hnX2JhdHN5c3V2X2V2dF9oYW5kbGVyIH0sCj4gKyAgICAgICB7ICJjaGdfdnN5c3V2X2V2 dCIsIG10NjM2MF9wbXVfY2hnX3ZzeXN1dl9ldnRfaGFuZGxlciB9LAo+ICsgICAgICAgeyAiY2hn X3ZzeXNvdl9ldnQiLCBtdDYzNjBfcG11X2NoZ192c3lzb3ZfZXZ0X2hhbmRsZXIgfSwKPiArICAg ICAgIHsgImNoZ192YmF0b3ZfZXZ0IiwgbXQ2MzYwX3BtdV9jaGdfdmJhdG92X2V2dF9oYW5kbGVy IH0sCj4gKyAgICAgICB7ICJjaGdfdmJ1c292X2V2dCIsIG10NjM2MF9wbXVfY2hnX3ZidXNvdl9l dnRfaGFuZGxlciB9LAo+ICsgICAgICAgeyAiY2hnX2FpY2NtZWFzbCIsIG10NjM2MF9wbXVfY2hn X2FpY2NtZWFzbF9oYW5kbGVyIH0sCj4gKyAgICAgICB7ICJ3ZHRtcmkiLCBtdDYzNjBfcG11X3dk dG1yaV9oYW5kbGVyIH0sCj4gKyAgICAgICB7ICJjaGdfcmVjaGdpIiwgbXQ2MzYwX3BtdV9jaGdf cmVjaGdpX2hhbmRsZXIgfSwKPiArICAgICAgIHsgImNoZ190ZXJtaSIsIG10NjM2MF9wbXVfY2hn X3Rlcm1pX2hhbmRsZXIgfSwKPiArICAgICAgIHsgImNoZ19pZW9jaSIsIG10NjM2MF9wbXVfY2hn X2llb2NpX2hhbmRsZXIgfSwKPiArICAgICAgIHsgInB1bXB4X2RvbmVpIiwgbXQ2MzYwX3BtdV9w dW1weF9kb25laV9oYW5kbGVyIH0sCj4gKyAgICAgICB7ICJhdHRhY2hfaSIsIG10NjM2MF9wbXVf YXR0YWNoX2lfaGFuZGxlciB9LAo+ICsgICAgICAgeyAiY2hyZGV0X2V4dF9ldnQiLCBtdDYzNjBf cG11X2NocmRldF9leHRfZXZ0X2hhbmRsZXIgfSwKPiArfTsKPiArCj4gK3N0YXRpYyBpbnQgbXQ2 MzYwX2NoZ19pcnFfcmVnaXN0ZXIoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKPiArewo+ ICsgICAgICAgY29uc3Qgc3RydWN0IG10NjM2MF9pcnFfZGVzYyAqaXJxX2Rlc2M7Cj4gKyAgICAg ICBpbnQgaSwgaXJxLCByZXQ7Cj4gKwo+ICsgICAgICAgZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJ WkUobXQ2MzYwX2NoZ19pcnFfZGVzYyk7IGkrKykgewo+ICsgICAgICAgICAgICAgICBpcnFfZGVz YyA9IG10NjM2MF9jaGdfaXJxX2Rlc2MgKyBpOwo+ICsgICAgICAgICAgICAgICBpZiAodW5saWtl bHkoIWlycV9kZXNjLT5uYW1lKSkKPiArICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsK PiArICAgICAgICAgICAgICAgaXJxID0gcGxhdGZvcm1fZ2V0X2lycV9ieW5hbWUocGRldiwgaXJx X2Rlc2MtPm5hbWUpOwo+ICsgICAgICAgICAgICAgICBpZiAoaXJxIDwgMCkKPiArICAgICAgICAg ICAgICAgICAgICAgICBjb250aW51ZTsKPiArICAgICAgICAgICAgICAgcmV0ID0gZGV2bV9yZXF1 ZXN0X3RocmVhZGVkX2lycSgmcGRldi0+ZGV2LCBpcnEsIE5VTEwsCj4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXJxX2Rlc2MtPmlycV9oYW5kbGVyLAo+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElSUUZfVFJJ R0dFUl9GQUxMSU5HLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGlycV9kZXNjLT5uYW1lLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHBsYXRmb3JtX2dldF9kcnZkYXRhKHBkZXYpKTsKPiArICAgICAgICAg ICAgICAgaWYgKHJldCA8IDApIHsKPiArICAgICAgICAgICAgICAgICAgICAgICBkZXZfZXJyKCZw ZGV2LT5kZXYsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicmVxdWVzdCAlcyBp cnEgZmFpbFxuIiwgaXJxX2Rlc2MtPm5hbWUpOwo+ICsgICAgICAgICAgICAgICAgICAgICAgIHJl dHVybiByZXQ7Cj4gKyAgICAgICAgICAgICAgIH0KPiArICAgICAgIH0KPiArICAgICAgIHJldHVy biAwOwo+ICt9Cj4gKwo+ICtzdHJ1Y3QgbXQ2MzYwX2ZpZWxkX2luZm8gewo+ICsgICAgICAgc3Ry dWN0IGRldmljZV9hdHRyaWJ1dGUgZGV2X2F0dHI7Cj4gKyAgICAgICB1OCByZWc7Cj4gKyAgICAg ICB1OCBtYXNrOwo+ICsgICAgICAgdTggc2hmdDsKPiArfTsKPiArCj4gK3N0YXRpYyBzc2l6ZV90 IG10NjM2MF9zeXNmc19zaG93KHN0cnVjdCBkZXZpY2UgKmRldiwKPiArICAgICAgICAgICAgICAg c3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsIGNoYXIgKmJ1Zik7Cj4gK3N0YXRpYyBzc2l6 ZV90IG10NjM2MF9zeXNmc19zdG9yZShzdHJ1Y3QgZGV2aWNlICpkZXYsCj4gKyAgICAgICAgICAg ICAgIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLCBjb25zdCBjaGFyICpidWYsIHNpemVf dCBjb3VudCk7Cj4gKwo+ICsjZGVmaW5lIE1UNjM2MF9GSUVMRF9SVyhfbmFtZSwgX3JlZywgX25i aXQpICAgICAgICAgICAgICAgICAgICBcCj4gK3sgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKPiArICAgICAgIC5kZXZfYXR0ciA9 IF9fQVRUUihfbmFtZSwgMDY2NCwgICAgICAgICAgICAgICAgICAgICAgICAgXAo+ICsgICAgICAg ICAgICAgICAgICAgICAgbXQ2MzYwX3N5c2ZzX3Nob3csIG10NjM2MF9zeXNmc19zdG9yZSksICBc Cj4gKyAgICAgICAucmVnICAgID0gTVQ2MzYwX1BNVV8jI19yZWcsICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFwKPiArICAgICAgIC5tYXNrICAgPSBNVDYzNjBfTUFTS18jI19uYml0LCAgICAg ICAgICAgICAgICAgICAgICAgICAgXAo+ICsgICAgICAgLnNoZnQgICA9IE1UNjM2MF9TSEZUXyMj X25iaXQsICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4gK30KPiArCj4gKyNkZWZpbmUgTVQ2 MzYwX0ZJRUxEX1JPKF9uYW1lLCBfcmVnLCBfbmJpdCkgICAgICAgICAgICAgICAgICAgIFwKPiAr eyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgXAo+ICsgICAgICAgLmRldl9hdHRyID0gX19BVFRSKF9uYW1lLCAwNDQ0LCAgICAgICAg ICAgICAgICAgICAgICAgICBcCj4gKyAgICAgICAgICAgICAgICAgICAgICAgbXQ2MzYwX3N5c2Zz X3Nob3csIE5VTEwpLCAgICAgICAgICAgICAgIFwKPiArICAgICAgIC5yZWcgICAgPSBNVDYzNjBf UE1VXyMjX3JlZywgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+ICsgICAgICAgLm1hc2sg ICA9IE1UNjM2MF9NQVNLXyMjX25iaXQsICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4gKyAg ICAgICAuc2hmdCAgID0gTVQ2MzYwX1NIRlRfIyNfbmJpdCwgICAgICAgICAgICAgICAgICAgICAg ICAgIFwKPiArfQo+ICsKPiArc3RhdGljIHN0cnVjdCBtdDYzNjBfZmllbGRfaW5mbyBtdDYzNjBf ZmllbGRfdGJsW10gPSB7Cj4gKyAgICAgICBNVDYzNjBfRklFTERfUlcoaGl6LCAgICAgICAgICAg IENIR19DVFJMMSwgICAgICBISVopLAo+ICsgICAgICAgTVQ2MzYwX0ZJRUxEX1JXKHZtaXZyLCAg ICAgICAgICBDSEdfQ1RSTDYsICAgICAgVk1JVlIpLAo+ICsgICAgICAgTVQ2MzYwX0ZJRUxEX1JX KGlhaWNyLCAgICAgICAgICBDSEdfQ1RSTDMsICAgICAgSUFJQ1IpLAo+ICsgICAgICAgTVQ2MzYw X0ZJRUxEX1JXKFNZU1JFRywgICAgICAgICBDSEdfQ1RSTDExLCAgICAgU1lTUkVHKSwKPiArICAg ICAgIE1UNjM2MF9GSUVMRF9SVyhvdGdfb2MsICAgICAgICAgQ0hHX0NUUkwxMCwgICAgIE9UR19P QyksCj4gKyAgICAgICBNVDYzNjBfRklFTERfUlcoaWNoZywgICAgICAgICAgIENIR19DVFJMMTcs ICAgICBJQ0hHKSwKPiArICAgICAgIE1UNjM2MF9GSUVMRF9SVyhpcHJlYywgICAgICAgICAgQ0hH X0NUUkw4LCAgICAgIElQUkVDKSwKPiArICAgICAgIE1UNjM2MF9GSUVMRF9SVyhpZW9jLCAgICAg ICAgICAgQ0hHX0NUUkw5LCAgICAgIElFT0MpLAo+ICsgICAgICAgTVQ2MzYwX0ZJRUxEX1JXKHZv cmVnLCAgICAgICAgICBDSEdfQ1RSTDQsICAgICAgVk9SRUcpLAo+ICsgICAgICAgTVQ2MzYwX0ZJ RUxEX1JXKGxicCwgICAgICAgICAgICBDSEdfQ1RSTDEwLCAgICAgTEJQKSwKPiArICAgICAgIE1U NjM2MF9GSUVMRF9SVyh2cmVjLCAgICAgICAgICAgQ0hHX0NUUkwxMSwgICAgIFZSRUMpLAo+ICsg ICAgICAgTVQ2MzYwX0ZJRUxEX1JXKHRlLCAgICAgICAgICAgICBDSEdfQ1RSTDIsICAgICAgVEUp LAo+ICsgICAgICAgTVQ2MzYwX0ZJRUxEX1JXKGNoZ193ZHRfZW4sICAgICBDSEdfQ1RSTDEzLCAg ICAgQ0hHX1dEVF9FTiksCj4gKyAgICAgICBNVDYzNjBfRklFTERfUlcoY2hnX3dkdCwgICAgICAg IENIR19DVFJMMTMsICAgICBDSEdfV0RUKSwKPiArICAgICAgIE1UNjM2MF9GSUVMRF9SVyh3dF9m YywgICAgICAgICAgQ0hHX0NUUkwxMiwgICAgIFdUX0ZDKSwKPiArICAgICAgIE1UNjM2MF9GSUVM RF9SVyhiYXRfY29tcCwgICAgICAgQ0hHX0NUUkwxOCwgICAgIEJBVF9DT01QKSwKPiArICAgICAg IE1UNjM2MF9GSUVMRF9SVyh2Y2xhbXAsICAgICAgICAgQ0hHX0NUUkwxOCwgICAgIFZDTEFNUCks Cj4gKyAgICAgICBNVDYzNjBfRklFTERfUlcodXNiY2hnZW4sICAgICAgIERFVklDRV9UWVBFLCAg ICBVU0JDSEdFTiksCj4gKyAgICAgICBNVDYzNjBfRklFTERfUlcoY2hnX2VuLCAgICAgICAgIENI R19DVFJMMiwgICAgICBDSEdfRU4pLAo+ICsgICAgICAgTVQ2MzYwX0ZJRUxEX1JPKGNocmRldF9l eHQsICAgICBGT0RfU1RBVCwgICAgICAgQ0hSREVUX0VYVCksCj4gK307Cj4gKwo+ICtzdGF0aWMg c3RydWN0IGF0dHJpYnV0ZSAqbXQ2MzYwX2F0dHJzW0FSUkFZX1NJWkUobXQ2MzYwX2ZpZWxkX3Ri bCkgKyAxXTsKPiArCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgYXR0cmlidXRlX2dyb3VwIG10NjM2 MF9hdHRyX2dyb3VwID0gewo+ICsgICAgICAgLmF0dHJzID0gbXQ2MzYwX2F0dHJzLAo+ICt9Owo+ ICsKPiArc3RhdGljIHNzaXplX3QgbXQ2MzYwX3N5c2ZzX3Nob3coc3RydWN0IGRldmljZSAqZGV2 LAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBkZXZpY2VfYXR0cmli dXRlICphdHRyLCBjaGFyICpidWYpCj4gK3sKPiArICAgICAgIHN0cnVjdCBtdDYzNjBfY2hnX2lu Zm8gKm1jaSA9IGRldl9nZXRfZHJ2ZGF0YShkZXYtPnBhcmVudCk7Cj4gKyAgICAgICBzdHJ1Y3Qg bXQ2MzYwX2ZpZWxkX2luZm8gKmluZm8gPSAodm9pZCAqKWF0dHI7Cj4gKyAgICAgICB1bnNpZ25l ZCBpbnQgcmVndmFsOwo+ICsgICAgICAgaW50IHJldDsKPiArCj4gKyAgICAgICByZXQgPSByZWdt YXBfcmVhZChtY2ktPnJlZ21hcCwgaW5mby0+cmVnLCAmcmVndmFsKTsKPiArICAgICAgIGlmIChy ZXQgPCAwKQo+ICsgICAgICAgICAgICAgICByZXR1cm4gcmV0Owo+ICsgICAgICAgcmVndmFsID0g KHJlZ3ZhbCAmIGluZm8tPm1hc2spID4+IGluZm8tPnNoZnQ7Cj4gKyAgICAgICByZXR1cm4gc2Nu cHJpbnRmKGJ1ZiwgUEFHRV9TSVpFLCAiJTAyeFxuIiwgcmVndmFsKTsKPiArfQo+ICsKPiArc3Rh dGljIHNzaXplX3QgbXQ2MzYwX3N5c2ZzX3N0b3JlKHN0cnVjdCBkZXZpY2UgKmRldiwKPiArICAg ICAgICAgICAgICAgICAgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsIGNvbnN0IGNoYXIg KmJ1Ziwgc2l6ZV90IGNvdW50KQo+ICt7Cj4gKyAgICAgICBzdHJ1Y3QgbXQ2MzYwX2NoZ19pbmZv ICptY2kgPSBkZXZfZ2V0X2RydmRhdGEoZGV2LT5wYXJlbnQpOwo+ICsgICAgICAgc3RydWN0IG10 NjM2MF9maWVsZF9pbmZvICppbmZvID0gKHZvaWQgKilhdHRyOwo+ICsgICAgICAgaW50IHJldCwg dG1wOwo+ICsKPiArICAgICAgIGlmIChrc3RydG9pbnQoYnVmLCAxMCwgJnRtcCkgPCAwKSB7Cj4g KyAgICAgICAgICAgICAgIGRldl9lcnIoZGV2LCAiZmFpbGVkIHRvIHBhcnNpbmcgbnVtYmVyXG4i KTsKPiArICAgICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7Cj4gKyAgICAgICB9Cj4gKyAgICAg ICByZXQgPSByZWdtYXBfdXBkYXRlX2JpdHMobWNpLT5yZWdtYXAsCj4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgaW5mby0+cmVnLCBpbmZvLT5tYXNrLCB0bXAgPDwgaW5mby0+c2hm dCk7Cj4gKyAgICAgICBpZiAocmV0IDwgMCkKPiArICAgICAgICAgICAgICAgcmV0dXJuIHJldDsK PiArICAgICAgIHJldHVybiBjb3VudDsKPiArfQo+ICsKPiArc3RhdGljIGludCBtdDYzNjBfc3lz ZnNfY3JlYXRlX2dyb3VwKHN0cnVjdCBtdDYzNjBfY2hnX2luZm8gKm1jaSkKPiArewo+ICsgICAg ICAgaW50IGksIHRiX3NpemUgPSBBUlJBWV9TSVpFKG10NjM2MF9maWVsZF90YmwpOwo+ICsKPiAr ICAgICAgIGZvciAoaSA9IDA7IGkgPCB0Yl9zaXplOyBpKyspCj4gKyAgICAgICAgICAgICAgIG10 NjM2MF9hdHRyc1tpXSA9ICYobXQ2MzYwX2ZpZWxkX3RibFtpXS5kZXZfYXR0ci5hdHRyKTsKPiAr ICAgICAgIHJldHVybiBkZXZtX2RldmljZV9hZGRfZ3JvdXAoJm1jaS0+cHN5LT5kZXYsICZtdDYz NjBfYXR0cl9ncm91cCk7Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQgbXQ2MzYwX2NoZ19pbml0X3Nl dHRpbmcoc3RydWN0IG10NjM2MF9jaGdfaW5mbyAqbWNpKQo+ICt7Cj4gKyAgICAgICBpbnQgcmV0 Owo+ICsKPiArICAgICAgIC8qIERpc2FibGUgYmMxMiAqLwo+ICsgICAgICAgcmV0ID0gcmVnbWFw X3VwZGF0ZV9iaXRzKG1jaS0+cmVnbWFwLCBNVDYzNjBfUE1VX0RFVklDRV9UWVBFLAo+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1UNjM2MF9NQVNLX1VTQkNIR0VOLCAwKTsKPiAr ICAgICAgIGlmIChyZXQgPCAwKSB7Cj4gKyAgICAgICAgICAgICAgIGRldl9lcnIobWNpLT5kZXYs ICIlczogZGlzYWJsZSBiYzEyIGZhaWxcbiIsIF9fZnVuY19fKTsKPiArICAgICAgICAgICAgICAg Z290byBvdXQ7Cj4gKyAgICAgICB9Cj4gKyAgICAgICAvKiBTZXQgaW5wdXQgY3VycmVudCBsaW1p dCBzZWxlY3QgYnkgQUlDUiAqLwo+ICsgICAgICAgcmV0ID0gcmVnbWFwX3VwZGF0ZV9iaXRzKG1j aS0+cmVnbWFwLCBNVDYzNjBfUE1VX0NIR19DVFJMMiwKPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBNVDYzNjBfTUFTS19JSU5MTVRTRUwsCj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgTVQ2MzYwX0lJTkxNVFNFTF9BSUNSIDw8Cj4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIE1UNjM2MF9TSEZUX0lJTkxNVFNFTCk7Cj4gKyAgICAgICBp ZiAocmV0IDwgMCkgewo+ICsgICAgICAgICAgICAgICBkZXZfZXJyKG1jaS0+ZGV2LAo+ICsgICAg ICAgICAgICAgICAgICAgICAgICIlczogc3dpdGNoIGlpbmxtdHNlbCB0byBhaWNyIGZhaWxcbiIs IF9fZnVuY19fKTsKPiArICAgICAgICAgICAgICAgZ290byBvdXQ7Cj4gKyAgICAgICB9Cj4gKyAg ICAgICB1c2xlZXBfcmFuZ2UoNTAwMCwgNjAwMCk7Cj4gKyAgICAgICAvKiBEaXNhYmxlIGlsaW0g Ki8KPiArICAgICAgIHJldCA9IHJlZ21hcF91cGRhdGVfYml0cyhtY2ktPnJlZ21hcCwgTVQ2MzYw X1BNVV9DSEdfQ1RSTDMsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTVQ2MzYw X01BU0tfSUxJTV9FTiwgMCk7Cj4gKyAgICAgICBpZiAocmV0IDwgMCkgewo+ICsgICAgICAgICAg ICAgICBkZXZfZXJyKG1jaS0+ZGV2LAo+ICsgICAgICAgICAgICAgICAgICAgICAgICIlczogc3dp dGNoIGlpbmxtdHNlbCB0byBhaWNyIGZhaWxcbiIsIF9fZnVuY19fKTsKPiArICAgICAgICAgICAg ICAgZ290byBvdXQ7Cj4gKyAgICAgICB9Cj4gKyAgICAgICAvKiBFbmxhcmdlIE9UR19PQyB0byBt YXggM0EgKi8KPiArICAgICAgIHJldCA9IHJlZ21hcF91cGRhdGVfYml0cyhtY2ktPnJlZ21hcCwK PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNVDYzNjBfUE1VX0NIR19DVFJMMTAs IDB4MDcsIDB4MDcpOwo+ICsgICAgICAgaWYgKHJldCA8IDApIHsKPiArICAgICAgICAgICAgICAg ZGV2X2VycihtY2ktPmRldiwKPiArICAgICAgICAgICAgICAgICAgICAgICAiJXM6IGZhbGVkIGNv bmZpZyBvdGcgb2MgdG8gbWF4aW11bVxuIiwgX19mdW5jX18pOwo+ICsgICAgICAgfQo+ICtvdXQ6 Cj4gKyAgICAgICByZXR1cm4gcmV0Owo+ICt9Cj4gKwo+ICtzdGF0aWMgdTMyIG10NjM2MF92aW5v dnBfdHJhbnNfdG9fc2VsKHUzMiB2YWwpCj4gK3sKPiArICAgICAgIHUzMiB2aW5vdnBfdGJsW10g PSB7IDU1MDAwMDAsIDY1MDAwMDAsIDExMDAwMDAwLCAxNDUwMDAwMCB9Owo+ICsgICAgICAgaW50 IGk7Cj4gKwo+ICsgICAgICAgLyogU2VsZWN0IHRoZSBzbWFsbGVyIGFuZCBlcXVhbCBzdXBwb3J0 ZWQgdmFsdWUgKi8KPiArICAgICAgIGZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKHZpbm92cF90 YmwpLTE7IGkrKykgewo+ICsgICAgICAgICAgICAgICBpZiAodmFsIDwgdmlub3ZwX3RibFtpKzFd KQo+ICsgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwo+ICsgICAgICAgfQo+ICsgICAgICAg cmV0dXJuIGk7Cj4gK30KPiArCj4gK3N0YXRpYyBzdHJ1Y3QgbXQ2MzYwX2NoZ19wbGF0Zm9ybV9k YXRhICptdDYzNjBfcGFyc2VfcGRhdGEoCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKPiArewo+ ICsgICAgICAgc3RydWN0IG10NjM2MF9jaGdfcGxhdGZvcm1fZGF0YSAqcGRhdGEgPSBkZXZfZ2V0 X3BsYXRkYXRhKCZwZGV2LT5kZXYpOwo+ICsgICAgICAgc3RydWN0IGRldmljZV9ub2RlICpucCA9 IHBkZXYtPmRldi5vZl9ub2RlOwo+ICsgICAgICAgaW50IHJldDsKPiArCj4gKyAgICAgICBwZGF0 YSA9IGRldm1fa3phbGxvYygmcGRldi0+ZGV2LCBzaXplb2YoKnBkYXRhKSwgR0ZQX0tFUk5FTCk7 Cj4gKyAgICAgICBpZiAoIXBkYXRhKQo+ICsgICAgICAgICAgICAgICByZXR1cm4gRVJSX1BUUigt RU5PTUVNKTsKPiArICAgICAgIG1lbWNweShwZGF0YSwgJmRlZl9wbGF0Zm9ybV9kYXRhLCBzaXpl b2YoKnBkYXRhKSk7Cj4gKyAgICAgICByZXQgPSBvZl9wcm9wZXJ0eV9yZWFkX3UzMihucCwgInZp bm92cCIsICZwZGF0YS0+dmlub3ZwKTsKPiArICAgICAgIGlmIChyZXQpIHsKPiArICAgICAgICAg ICAgICAgZGV2X2VycigmcGRldi0+ZGV2LCAiZmFpbGVkIHRvIHBhcnNlIHZpbm92cCBpbiBEVFxu Iik7Cj4gKyAgICAgICAgICAgICAgIHJldHVybiBFUlJfUFRSKHJldCk7Cj4gKyAgICAgICB9Cj4g KyAgICAgICByZXR1cm4gcGRhdGE7Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQgbXQ2MzYwX2FwcGx5 X3BkYXRhKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCj4gK3sKPiArICAgICAgIHN0cnVj dCBtdDYzNjBfY2hnX3BsYXRmb3JtX2RhdGEgKnBkYXRhID0gZGV2X2dldF9wbGF0ZGF0YSgmcGRl di0+ZGV2KTsKPiArICAgICAgIHN0cnVjdCBtdDYzNjBfY2hnX2luZm8gKm1jaSA9IGRldl9nZXRf ZHJ2ZGF0YSgmcGRldi0+ZGV2KTsKPiArICAgICAgIGludCByZXQ7Cj4gKyAgICAgICB1MzIgc2Vs Owo+ICsKPiArICAgICAgIHNlbCA9IG10NjM2MF92aW5vdnBfdHJhbnNfdG9fc2VsKHBkYXRhLT52 aW5vdnApOwo+ICsgICAgICAgcmV0ID0gcmVnbWFwX3VwZGF0ZV9iaXRzKG1jaS0+cmVnbWFwLCBN VDYzNjBfUE1VX0NIR19DVFJMMTksCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg TVQ2MzYwX01BU0tfVklOT1ZQLCBzZWwgPDwgTVQ2MzYwX1NIRlRfVklOT1ZQKTsKPiArICAgICAg IGlmIChyZXQpCj4gKyAgICAgICAgICAgICAgIHJldHVybiByZXQ7Cj4gKyAgICAgICByZXR1cm4g MDsKPiArfQo+ICsKPiArc3RhdGljIGludCBtdDYzNjBfY2hhcmdlcl9wcm9iZShzdHJ1Y3QgcGxh dGZvcm1fZGV2aWNlICpwZGV2KQo+ICt7Cj4gKyAgICAgICBzdHJ1Y3QgbXQ2MzYwX2NoZ19wbGF0 Zm9ybV9kYXRhICpwZGF0YSA9IGRldl9nZXRfcGxhdGRhdGEoJnBkZXYtPmRldik7Cj4gKyAgICAg ICBzdHJ1Y3QgbXQ2MzYwX2NoZ19pbmZvICptY2k7Cj4gKyAgICAgICBzdHJ1Y3QgcG93ZXJfc3Vw cGx5X2NvbmZpZyBjaGFyZ2VyX2NmZyA9IHt9Owo+ICsgICAgICAgc3RydWN0IHJlZ3VsYXRvcl9j b25maWcgY29uZmlnID0geyB9Owo+ICsgICAgICAgaW50IHJldDsKPiArCj4gKyAgICAgICBtY2kg PSBkZXZtX2t6YWxsb2MoJnBkZXYtPmRldiwgc2l6ZW9mKCptY2kpLCBHRlBfS0VSTkVMKTsKPiAr ICAgICAgIGlmICghbWNpKQo+ICsgICAgICAgICAgICAgICByZXR1cm4gLUVOT01FTTsKPiArCj4g KyAgICAgICBwZGF0YSA9IG10NjM2MF9wYXJzZV9wZGF0YShwZGV2KTsKPiArICAgICAgIGlmIChJ U19FUlJfT1JfTlVMTChwZGF0YSkpCj4gKyAgICAgICAgICAgICAgIHJldHVybiBQVFJfRVJSKHBk YXRhKTsKPiArCj4gKyAgICAgICBwZGV2LT5kZXYucGxhdGZvcm1fZGF0YSA9IHBkYXRhOwo+ICsK PiArICAgICAgIG1jaS0+ZGV2ID0gJnBkZXYtPmRldjsKPiArICAgICAgIG11dGV4X2luaXQoJm1j aS0+Y2hnZGV0X2xvY2spOwo+ICsgICAgICAgcGxhdGZvcm1fc2V0X2RydmRhdGEocGRldiwgbWNp KTsKPiArICAgICAgIElOSVRfV09SSygmbWNpLT5jaHJkZXRfd29yaywgJm10NjM2MF9jaHJkZXRf d29yayk7Cj4gKwo+ICsgICAgICAgbWNpLT5yZWdtYXAgPSBkZXZfZ2V0X3JlZ21hcChwZGV2LT5k ZXYucGFyZW50LCBOVUxMKTsKPiArICAgICAgIGlmICghbWNpLT5yZWdtYXApIHsKPiArICAgICAg ICAgICAgICAgZGV2X2VycigmcGRldi0+ZGV2LCAiRmFpbGVkIHRvIGdldCBwYXJlbnQgcmVnbWFw XG4iKTsKPiArICAgICAgICAgICAgICAgcmV0dXJuIC1FTk9ERVY7Cj4gKyAgICAgICB9Cj4gKwo+ ICsgICAgICAgcmV0ID0gbXQ2MzYwX2FwcGx5X3BkYXRhKHBkZXYpOwo+ICsgICAgICAgaWYgKHJl dCkgewo+ICsgICAgICAgICAgICAgICBkZXZfZXJyKCZwZGV2LT5kZXYsICJGYWlsZWQgdG8gYXBw bHkgcGRhdGFcbiIpOwo+ICsgICAgICAgICAgICAgICByZXR1cm4gcmV0Owo+ICsgICAgICAgfQo+ ICsKPiArICAgICAgIG1jaS0+ZWRldiA9IGRldm1fZXh0Y29uX2Rldl9hbGxvY2F0ZSgmcGRldi0+ ZGV2LCBtdDYzNjBfZXh0Y29uX2NhYmxlKTsKPiArICAgICAgIGlmIChJU19FUlIobWNpLT5lZGV2 KSkgewo+ICsgICAgICAgICAgICAgICBkZXZfZXJyKCZwZGV2LT5kZXYsICJGYWlsZWQgdG8gYWxs b2NhdGUgbWVtb3J5IGZvciBleHRjb25cbiIpOwo+ICsgICAgICAgICAgICAgICByZXR1cm4gLUVO T01FTTsKPiArICAgICAgIH0KPiArCj4gKyAgICAgICByZXQgPSBkZXZtX2V4dGNvbl9kZXZfcmVn aXN0ZXIoJnBkZXYtPmRldiwgbWNpLT5lZGV2KTsKPiArICAgICAgIGlmIChyZXQpIHsKPiArICAg ICAgICAgICAgICAgZGV2X2VycigmcGRldi0+ZGV2LCAiRmFpbGVkIHRvIHJlZ2lzdGVyIGV4dGNv biBkZXZcbiIpOwo+ICsgICAgICAgICAgICAgICByZXR1cm4gcmV0Owo+ICsgICAgICAgfQo+ICsK PiArICAgICAgIG1lbWNweSgmbWNpLT5wc3lfZGVzYywgJm10NjM2MF9jaGFyZ2VyX2Rlc2MsIHNp emVvZihtY2ktPnBzeV9kZXNjKSk7Cj4gKyAgICAgICBtY2ktPnBzeV9kZXNjLm5hbWUgPSBkZXZf bmFtZSgmcGRldi0+ZGV2KTsKPiArICAgICAgIGNoYXJnZXJfY2ZnLmRydl9kYXRhID0gbWNpOwo+ ICsgICAgICAgY2hhcmdlcl9jZmcub2Zfbm9kZSA9IHBkZXYtPmRldi5vZl9ub2RlOwo+ICsgICAg ICAgY2hhcmdlcl9jZmcuc3VwcGxpZWRfdG8gPSBtdDYzNjBfY2hhcmdlcl9zdXBwbGllZF90bzsK PiArICAgICAgIGNoYXJnZXJfY2ZnLm51bV9zdXBwbGljYW50cyA9IEFSUkFZX1NJWkUobXQ2MzYw X2NoYXJnZXJfc3VwcGxpZWRfdG8pOwo+ICsgICAgICAgbWNpLT5wc3kgPSBkZXZtX3Bvd2VyX3N1 cHBseV9yZWdpc3RlcigmcGRldi0+ZGV2LAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAmbWNpLT5wc3lfZGVzYywgJmNoYXJnZXJfY2ZnKTsKPiArICAgICAg IGlmIChJU19FUlIobWNpLT5wc3kpKSB7Cj4gKyAgICAgICAgICAgICAgIGRldl9lcnIoJnBkZXYt PmRldiwgIkZhaWxlZCB0byByZWdpc3RlciBwb3dlciBzdXBwbHkgZGV2XG4iKTsKPiArICAgICAg ICAgICAgICAgcmV0dXJuIFBUUl9FUlIobWNpLT5wc3kpOwo+ICsgICAgICAgfQo+ICsKPiArICAg ICAgIHJldCA9IG10NjM2MF9jaGdfaW5pdF9zZXR0aW5nKG1jaSk7Cj4gKyAgICAgICBpZiAocmV0 KSB7Cj4gKyAgICAgICAgICAgICAgIGRldl9lcnIoJnBkZXYtPmRldiwgIkZhaWxlZCB0byBpbml0 aWFsIHNldHRpbmdcbiIpOwo+ICsgICAgICAgICAgICAgICByZXR1cm4gcmV0Owo+ICsgICAgICAg fQo+ICsKPiArICAgICAgIHNjaGVkdWxlX3dvcmsoJm1jaS0+Y2hyZGV0X3dvcmspOwo+ICsKPiAr ICAgICAgIHJldCA9IG10NjM2MF9jaGdfaXJxX3JlZ2lzdGVyKHBkZXYpOwo+ICsgICAgICAgaWYg KHJldCkgewo+ICsgICAgICAgICAgICAgICBkZXZfZXJyKCZwZGV2LT5kZXYsICJGYWlsZWQgdG8g cmVnaXN0ZXIgaXJxc1xuIik7Cj4gKyAgICAgICAgICAgICAgIHJldHVybiByZXQ7Cj4gKyAgICAg ICB9Cj4gKwo+ICsgICAgICAgY29uZmlnLmRldiA9ICZwZGV2LT5kZXY7Cj4gKyAgICAgICBjb25m aWcucmVnbWFwID0gbWNpLT5yZWdtYXA7Cj4gKyAgICAgICBtY2ktPm90Z19yZGV2ID0gZGV2bV9y ZWd1bGF0b3JfcmVnaXN0ZXIoJnBkZXYtPmRldiwgJm10NjM2MF9vdGdfcmRlc2MsCj4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmNvbmZpZyk7Cj4gKyAg ICAgICBpZiAoSVNfRVJSKG1jaS0+b3RnX3JkZXYpKQo+ICsgICAgICAgICAgICAgICByZXR1cm4g UFRSX0VSUihtY2ktPm90Z19yZGV2KTsKPiArCj4gKyAgICAgICByZXQgPSBtdDYzNjBfc3lzZnNf Y3JlYXRlX2dyb3VwKG1jaSk7Cj4gKyAgICAgICBpZiAocmV0KSB7Cj4gKyAgICAgICAgICAgICAg IGRldl9lcnIoJnBkZXYtPmRldiwKPiArICAgICAgICAgICAgICAgICAgICAgICAiJXM6IGNyZWF0 ZSBzeXNmcyBhdHRycyBmYWlsXG4iLCBfX2Z1bmNfXyk7Cj4gKyAgICAgICAgICAgICAgIHJldHVy biByZXQ7Cj4gKyAgICAgICB9Cj4gKwo+ICsgICAgICAgcmV0dXJuIDA7Cj4gK30KPiArCj4gK3N0 YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIF9fbWF5YmVfdW51c2VkIG10NjM2MF9jaGFy Z2VyX29mX2lkW10gPSB7Cj4gKyAgICAgICB7IC5jb21wYXRpYmxlID0gIm1lZGlhdGVrLG10NjM2 MC1jaGciLCB9LAo+ICsgICAgICAge30sCj4gK307Cj4gK01PRFVMRV9ERVZJQ0VfVEFCTEUob2Ys IG10NjM2MF9jaGFyZ2VyX29mX2lkKTsKPiArCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgcGxhdGZv cm1fZGV2aWNlX2lkIG10NjM2MF9jaGFyZ2VyX2lkW10gPSB7Cj4gKyAgICAgICB7ICJtdDYzNjAt Y2hnIiwgMCB9LAo+ICsgICAgICAge30sCj4gK307Cj4gK01PRFVMRV9ERVZJQ0VfVEFCTEUocGxh dGZvcm0sIG10NjM2MF9jaGFyZ2VyX2lkKTsKPiArCj4gK3N0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1f ZHJpdmVyIG10NjM2MF9jaGFyZ2VyX2RyaXZlciA9IHsKPiArICAgICAgIC5kcml2ZXIgPSB7Cj4g KyAgICAgICAgICAgICAgIC5uYW1lID0gIm10NjM2MC1jaGciLAo+ICsgICAgICAgICAgICAgICAu b3duZXIgPSBUSElTX01PRFVMRSwKPiArICAgICAgICAgICAgICAgLm9mX21hdGNoX3RhYmxlID0g b2ZfbWF0Y2hfcHRyKG10NjM2MF9jaGFyZ2VyX29mX2lkKSwKPiArICAgICAgIH0sCj4gKyAgICAg ICAucHJvYmUgPSBtdDYzNjBfY2hhcmdlcl9wcm9iZSwKPiArICAgICAgIC5pZF90YWJsZSA9IG10 NjM2MF9jaGFyZ2VyX2lkLAo+ICt9Owo+ICttb2R1bGVfcGxhdGZvcm1fZHJpdmVyKG10NjM2MF9j aGFyZ2VyX2RyaXZlcik7Cj4gKwo+ICtNT0RVTEVfQVVUSE9SKCJDWV9IdWFuZyA8Y3lfaHVhbmdA cmljaHRlay5jb20+Iik7Cj4gK01PRFVMRV9ERVNDUklQVElPTigiTVQ2MzYwIENoYXJnZXIgRHJp dmVyIik7Cj4gK01PRFVMRV9MSUNFTlNFKCJHUEwiKTsKPiArTU9EVUxFX1ZFUlNJT04oIjEuMC4w Iik7Cj4gLS0KPiAyLjcuNAo+CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fXwpMaW51eC1tZWRpYXRlayBtYWlsaW5nIGxpc3QKTGludXgtbWVkaWF0ZWtAbGlz dHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3Rp bmZvL2xpbnV4LW1lZGlhdGVrCg==