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 Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id E0776C3600C for ; Thu, 3 Apr 2025 23:07:33 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1u0TeB-0005M7-ID; Thu, 03 Apr 2025 19:06:55 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1u0TeA-0005Lf-8c for grub-devel@gnu.org; Thu, 03 Apr 2025 19:06:54 -0400 Received: from mail-lj1-x22b.google.com ([2a00:1450:4864:20::22b]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1u0Te8-0003Bv-0S for grub-devel@gnu.org; Thu, 03 Apr 2025 19:06:53 -0400 Received: by mail-lj1-x22b.google.com with SMTP id 38308e7fff4ca-30bfca745c7so12609811fa.0 for ; Thu, 03 Apr 2025 16:06:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1743721609; x=1744326409; darn=gnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=hTXjYHRSf4NQdWmHLEAdTaCa/xZ0q/+7vNZxkdtoyRI=; b=RdScgIiFNY/KQZByjrS+bfDySyPGK86hgMTHSejCre/bsPFKoMd8hMy06rGIn0vS8p nqBa41fHEjGhYXJMLadJO6J9MfYVzEPfxfaTVrS11ZSxW+gj4+0OdOSQfANLD9IPirfb NjdbVlxamd8ms4TY4rpo+7NIH9n41/Ki0J9QN0Xu64Obo7NDyv3CDIrm/ssZdcRsi5jW FSw6hR2T87ATuADEMSbLuXGWiWMXBirpxe5rBfgnv3zSFU7amK90gmQz0fFoEc7ISWnZ aQtUwHBRv7sIjvbrVFRcrvXj7yUUeLuvS/HpLJ+xnWOvsdxwPg1ULmgSrgAnoswxY27z O5kg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1743721609; x=1744326409; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=hTXjYHRSf4NQdWmHLEAdTaCa/xZ0q/+7vNZxkdtoyRI=; b=dSNsrwbRS91dQHCi6uP0TIA344+L+esfpjTlxF8h6HKVgKam8ciQ4T35KQqZFkgrKi M4l64GHwbLmPhPBRzHgiroM8iRLRX4TYQCJ+bgqrFRDrym0I3xAZVPZ3FFha2WKMUWtu jtaO4VhGwqA2Oy51uNbdk7lwHhmkTH1hhDh8T2mls17iX1DUhZpkEVpnOkobttf6lO3c mI3/C7R9FufnYHz81r5LzpD30iVonGQ/I3rYy4Os2ubfnFl9vFr0c24w//W94BbV/eq8 g6PmjmbyE5l87faWoJREwqV39HXmtj/bsAw8kLmQ9o5iDXuqqx2/lcEp58iqhmn1ibtx f09w== X-Gm-Message-State: AOJu0Yz1mzIn2znKPJns91xwJ9FhOCr5EX1tDPfR+TJuNL8m6+hCprQq q2SokaAcu3ydggLZzh1i8jrX4fjbfsEC3kq5LD3UPWNTQCuLGm3B8sxDEeBL X-Gm-Gg: ASbGncuPVD9brCUjfmZAsIpReLZAzVsZA4lOVmQ/3KE7ZshYPnHzVo4nQcIDKaOK9dP T6IXNccthB/e5i5mrTu6Ujn/XUG5EE46hAbgsLIMqPoPk+dNX7EmuNqZnQritQ92paY6v0qkjlp DaMEhY8GBmqy/09Lr4Om0x7AoJx8BgLxo3fEdjDPeqhf2BUd+KDcVzxE9cDGlitqaU6/M/GUpp3 VKXt/fePKRupVACZv+Ix/TsPxfhlCH3KmKzZRHS93IomsRD1ktI/VRKgX+oAJNBxOAlChOY59wZ sT4U9Gvq+8kzy1TKyZEYAN8v3uAeGUCe3Io= X-Google-Smtp-Source: AGHT+IEctdZNQ2EnzsznvB98cJv3K2SJo9/DjYwAx9l8O0OGieXmtWRS+8dGJ0SRVjQQqIgxXiiUxg== X-Received: by 2002:a2e:a583:0:b0:30c:2da3:1493 with SMTP id 38308e7fff4ca-30f0a12f172mr3929261fa.19.1743721609222; Thu, 03 Apr 2025 16:06:49 -0700 (PDT) Received: from localhost ([5.166.23.113]) by smtp.gmail.com with ESMTPSA id 38308e7fff4ca-30f0314c62bsm3551891fa.61.2025.04.03.16.06.48 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 03 Apr 2025 16:06:48 -0700 (PDT) From: Vladimir Serbinenko To: grub-devel@gnu.org Cc: Vladimir Serbinenko Subject: [PATCH v8 2/9] Import b64dec from gpg-error Date: Fri, 4 Apr 2025 02:05:04 +0300 Message-ID: <20250403230630.3572282-3-phcoder@gmail.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250403230630.3572282-1-phcoder@gmail.com> References: <20250403230630.3572282-1-phcoder@gmail.com> MIME-Version: 1.0 Received-SPF: pass client-ip=2a00:1450:4864:20::22b; envelope-from=phcoder@gmail.com; helo=mail-lj1-x22b.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: grub-devel@gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: The development of GNU GRUB List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: The development of GNU GRUB Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: grub-devel-bounces+grub-devel=archiver.kernel.org@gnu.org Sender: grub-devel-bounces+grub-devel=archiver.kernel.org@gnu.org SW1wb3J0ZWQgZnJvbSBsaWJncGctZXJyb3IgMS41MQoKU2lnbmVkLW9mZi1ieTogVmxhZGltaXIg U2VyYmluZW5rbyA8cGhjb2RlckBnbWFpbC5jb20+Ci0tLQogZ3J1Yi1jb3JlL2xpYi9iNjRkZWMu YyB8IDI3OSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogMSBmaWxl IGNoYW5nZWQsIDI3OSBpbnNlcnRpb25zKCspCiBjcmVhdGUgbW9kZSAxMDA2NDQgZ3J1Yi1jb3Jl L2xpYi9iNjRkZWMuYwoKZGlmZiAtLWdpdCBhL2dydWItY29yZS9saWIvYjY0ZGVjLmMgYi9ncnVi LWNvcmUvbGliL2I2NGRlYy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMC4u ODY4ZDk4NTY4Ci0tLSAvZGV2L251bGwKKysrIGIvZ3J1Yi1jb3JlL2xpYi9iNjRkZWMuYwpAQCAt MCwwICsxLDI3OSBAQAorLyogYjY0ZGVjLmMgLSBTaW1wbGUgQmFzZTY0IGRlY29kZXIuCisgKiBD b3B5cmlnaHQgKEMpIDIwMDgsIDIwMTEgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisg KiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMTEsIDIwMTYgZzEwIENvZGUgR21iSAorICoKKyAqIFRo aXMgZmlsZSBpcyBwYXJ0IG9mIExpYmdwZy1lcnJvci4KKyAqCisgKiBUaGlzIGZpbGUgaXMgZnJl ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQg dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug YXMKKyAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIg dmVyc2lvbiAyLjEgb2YKKyAqIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBs YXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9w ZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3 aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBv ciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBMZXNz ZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBz aG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJs aWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgc2VlIDxodHRw czovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisgKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjog TEdQTC0yLjEtb3ItbGF0ZXIKKyAqCisgKiBUaGlzIGZpbGUgd2FzIG9yaWdpbmFsbHkgYSBwYXJ0 IG9mIEdudVBHLgorICovCisKKyNpbmNsdWRlIDxjb25maWcuaD4KKyNpbmNsdWRlIDxzdGRpby5o PgorI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgorCisjaW5jbHVkZSAi Z3BncnQtaW50LmgiCisKKworLyogVGhlIHJldmVyc2UgYmFzZS02NCBsaXN0IHVzZWQgZm9yIGJh c2UtNjQgZGVjb2RpbmcuICovCitzdGF0aWMgdW5zaWduZWQgY2hhciBjb25zdCBhc2N0b2Jpblsx MjhdID0KKyAgeworICAgIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYs IDB4ZmYsCisgICAgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhm ZiwKKyAgICAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmLAor ICAgIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsCisgICAg MHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwKKyAgICAweGZm LCAweGZmLCAweGZmLCAweDNlLCAweGZmLCAweGZmLCAweGZmLCAweDNmLAorICAgIDB4MzQsIDB4 MzUsIDB4MzYsIDB4MzcsIDB4MzgsIDB4MzksIDB4M2EsIDB4M2IsCisgICAgMHgzYywgMHgzZCwg MHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwKKyAgICAweGZmLCAweDAwLCAweDAx LCAweDAyLCAweDAzLCAweDA0LCAweDA1LCAweDA2LAorICAgIDB4MDcsIDB4MDgsIDB4MDksIDB4 MGEsIDB4MGIsIDB4MGMsIDB4MGQsIDB4MGUsCisgICAgMHgwZiwgMHgxMCwgMHgxMSwgMHgxMiwg MHgxMywgMHgxNCwgMHgxNSwgMHgxNiwKKyAgICAweDE3LCAweDE4LCAweDE5LCAweGZmLCAweGZm LCAweGZmLCAweGZmLCAweGZmLAorICAgIDB4ZmYsIDB4MWEsIDB4MWIsIDB4MWMsIDB4MWQsIDB4 MWUsIDB4MWYsIDB4MjAsCisgICAgMHgyMSwgMHgyMiwgMHgyMywgMHgyNCwgMHgyNSwgMHgyNiwg MHgyNywgMHgyOCwKKyAgICAweDI5LCAweDJhLCAweDJiLCAweDJjLCAweDJkLCAweDJlLCAweDJm LCAweDMwLAorICAgIDB4MzEsIDB4MzIsIDB4MzMsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4 ZmYKKyAgfTsKKworZW51bSBkZWNvZGVyX3N0YXRlcworICB7CisgICAgc19pbml0LCBzX2lkbGUs IHNfbGZzZWVuLCBzX2JlZ2luc2Vlbiwgc193YWl0aGVhZGVyLCBzX3dhaXRibGFuaywgc19iZWdp biwKKyAgICBzX2I2NF8wLCBzX2I2NF8xLCBzX2I2NF8yLCBzX2I2NF8zLAorICAgIHNfd2FpdGVu ZHRpdGxlLCBzX3dhaXRlbmQKKyAgfTsKKworCisKKy8qIEFsbG9jYXRlIGFuZCBpbml0aWFsaXpl IHRoZSBjb250ZXh0IGZvciB0aGUgYmFzZTY0IGRlY29kZXIuICBJZgorICAgVElUTEUgaXMgTlVM TCBhIHBsYWluIGJhc2U2NCBkZWNvZGluZyBpcyBkb25lLiAgSWYgaXQgaXMgdGhlIGVtcHR5Cisg ICBzdHJpbmcgdGhlIGRlY29kZXIgd2lsbCBza2lwIGV2ZXJ5dGhpbmcgdW50aWwgYSAiLS0tLS1C RUdJTiAiIGxpbmUKKyAgIGhhcyBiZWVuIHNlZW4sIGRlY29kaW5nIGVuZHMgYXQgYSAiLS0tLUVO RCAiIGxpbmUuICAqLworZ3BncnRfYjY0c3RhdGVfdAorX2dwZ3J0X2I2NGRlY19zdGFydCAoY29u c3QgY2hhciAqdGl0bGUpCit7CisgIGdwZ3J0X2I2NHN0YXRlX3Qgc3RhdGU7CisgIGNoYXIgKnQg PSBOVUxMOworCisgIGlmICh0aXRsZSkKKyAgICB7CisgICAgICB0ID0geHRyeXN0cmR1cCAodGl0 bGUpOworICAgICAgaWYgKCF0KQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgc3Rh dGUgPSB4dHJ5Y2FsbG9jICgxLCBzaXplb2YgKHN0cnVjdCBfZ3BncnRfYjY0c3RhdGUpKTsKKyAg aWYgKCFzdGF0ZSkKKyAgICB7CisgICAgICB4ZnJlZSAodCk7CisgICAgICByZXR1cm4gTlVMTDsK KyAgICB9CisKKyAgaWYgKHQpCisgICAgeworICAgICAgc3RhdGUtPnRpdGxlID0gdDsKKyAgICAg IHN0YXRlLT5pZHggPSBzX2luaXQ7CisgICAgfQorICBlbHNlCisgICAgc3RhdGUtPmlkeCA9IHNf YjY0XzA7CisKKyAgc3RhdGUtPnVzaW5nX2RlY29kZXIgPSAxOworCisgIHJldHVybiBzdGF0ZTsK K30KKworCisvKiBEbyBpbi1wbGFjZSBkZWNvZGluZyBvZiBiYXNlLTY0IGRhdGEgb2YgTEVOR1RI IGluIEJVRkZFUi4gIFN0b3JlcyB0aGUKKyAgIG5ldyBsZW5ndGggb2YgdGhlIGJ1ZmZlciBhdCBS X05CWVRFUy4gKi8KK2dwZ19lcnJfY29kZV90CitfZ3BncnRfYjY0ZGVjX3Byb2MgKGdwZ3J0X2I2 NHN0YXRlX3Qgc3RhdGUsIHZvaWQgKmJ1ZmZlciwgc2l6ZV90IGxlbmd0aCwKKyAgICAgICAgICAg ICAgICAgICAgc2l6ZV90ICpyX25ieXRlcykKK3sKKyAgZW51bSBkZWNvZGVyX3N0YXRlcyBkcyA9 IHN0YXRlLT5pZHg7CisgIHVuc2lnbmVkIGNoYXIgdmFsID0gc3RhdGUtPnJhZGJ1ZlswXTsKKyAg aW50IHBvcyA9IHN0YXRlLT5xdWFkX2NvdW50OworICBjaGFyICpkLCAqczsKKworICBpZiAoc3Rh dGUtPmxhc3RlcnIpCisgICAgcmV0dXJuIHN0YXRlLT5sYXN0ZXJyOworCisgIGlmIChzdGF0ZS0+ c3RvcF9zZWVuKQorICAgIHsKKyAgICAgICpyX25ieXRlcyA9IDA7CisgICAgICBzdGF0ZS0+bGFz dGVyciA9IEdQR19FUlJfRU9GOworICAgICAgeGZyZWUgKHN0YXRlLT50aXRsZSk7CisgICAgICBz dGF0ZS0+dGl0bGUgPSBOVUxMOworICAgICAgcmV0dXJuIHN0YXRlLT5sYXN0ZXJyOworICAgIH0K KworICBmb3IgKHM9ZD1idWZmZXI7IGxlbmd0aCAmJiAhc3RhdGUtPnN0b3Bfc2VlbjsgbGVuZ3Ro LS0sIHMrKykKKyAgICB7CisgICAgYWdhaW46CisgICAgICBzd2l0Y2ggKGRzKQorICAgICAgICB7 CisgICAgICAgIGNhc2Ugc19pZGxlOgorICAgICAgICAgIGlmICgqcyA9PSAnXG4nKQorICAgICAg ICAgICAgeworICAgICAgICAgICAgICBkcyA9IHNfbGZzZWVuOworICAgICAgICAgICAgICBwb3Mg PSAwOworICAgICAgICAgICAgfQorICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIHNfaW5p dDoKKyAgICAgICAgICBkcyA9IHNfbGZzZWVuOworICAgICAgICAgIC8qIEZhbGwgdGhyb3VnaCAq LworICAgICAgICBjYXNlIHNfbGZzZWVuOgorICAgICAgICAgIGlmICgqcyAhPSAiLS0tLS1CRUdJ TiAiW3Bvc10pCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgIGRzID0gc19pZGxlOworICAg ICAgICAgICAgICBnb3RvIGFnYWluOworICAgICAgICAgICAgfQorICAgICAgICAgIGVsc2UgaWYg KHBvcyA9PSAxMCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgcG9zID0gMDsKKyAgICAg ICAgICAgICAgZHMgPSBzX2JlZ2luc2VlbjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICBlbHNl CisgICAgICAgICAgICBwb3MrKzsKKyAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBzX2Jl Z2luc2VlbjoKKyAgICAgICAgICBpZiAoKnMgIT0gIlBHUCAiW3Bvc10pCisgICAgICAgICAgICBk cyA9IHNfYmVnaW47IC8qIE5vdCBhIFBHUCBhcm1vci4gICovCisgICAgICAgICAgZWxzZSBpZiAo cG9zID09IDMpCisgICAgICAgICAgICBkcyA9IHNfd2FpdGhlYWRlcjsKKyAgICAgICAgICBlbHNl CisgICAgICAgICAgICBwb3MrKzsKKyAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBzX3dh aXRoZWFkZXI6CisgICAgICAgICAgaWYgKCpzID09ICdcbicpCisgICAgICAgICAgICBkcyA9IHNf d2FpdGJsYW5rOworICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIHNfd2FpdGJsYW5rOgor ICAgICAgICAgIGlmICgqcyA9PSAnXG4nKQorICAgICAgICAgICAgZHMgPSBzX2I2NF8wOyAvKiBi bGFuayBsaW5lIGZvdW5kLiAgKi8KKyAgICAgICAgICBlbHNlIGlmICgqcyA9PSAnICcgfHwgKnMg PT0gJ1xyJyB8fCAqcyA9PSAnXHQnKQorICAgICAgICAgICAgOyAvKiBJZ25vcmUgc3BhY2VzLiAq LworICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgLyogQXJtb3Ig aGVhZGVyIGxpbmUuICBOb3RlIHRoYXQgd2UgZG9uJ3QgY2FyZSB0aGF0IG91cgorICAgICAgICAg ICAgICAgKiBGU00gYWNjZXB0cyBhIGhlYWRlciBwcmVmaXhlZCB3aXRoIHNwYWNlcy4gICovCisg ICAgICAgICAgICAgIGRzID0gc193YWl0aGVhZGVyOyAvKiBXYWl0IGZvciBuZXh0IGhlYWRlci4g ICovCisgICAgICAgICAgICB9CisgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2Ugc19iZWdp bjoKKyAgICAgICAgICBpZiAoKnMgPT0gJ1xuJykKKyAgICAgICAgICAgIGRzID0gc19iNjRfMDsK KyAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBzX2I2NF8wOgorICAgICAgICBjYXNlIHNf YjY0XzE6CisgICAgICAgIGNhc2Ugc19iNjRfMjoKKyAgICAgICAgY2FzZSBzX2I2NF8zOgorICAg ICAgICAgIHsKKyAgICAgICAgICAgIGludCBjOworCisgICAgICAgICAgICBpZiAoKnMgPT0gJy0n ICYmIHN0YXRlLT50aXRsZSkKKyAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIC8qIE5v dCBhIHZhbGlkIEJhc2U2NCBjaGFyYWN0ZXI6IGFzc3VtZSBlbmQKKyAgICAgICAgICAgICAgICAg ICBoZWFkZXIuICAqLworICAgICAgICAgICAgICAgIGRzID0gc193YWl0ZW5kOworICAgICAgICAg ICAgICB9CisgICAgICAgICAgICBlbHNlIGlmICgqcyA9PSAnPScpCisgICAgICAgICAgICAgIHsK KyAgICAgICAgICAgICAgICAvKiBQYWQgY2hhcmFjdGVyOiBzdG9wICovCisgICAgICAgICAgICAg ICAgaWYgKGRzID09IHNfYjY0XzEpCisgICAgICAgICAgICAgICAgICAqZCsrID0gdmFsOworICAg ICAgICAgICAgICAgIGRzID0gc3RhdGUtPnRpdGxlPyBzX3dhaXRlbmR0aXRsZSA6IHNfd2FpdGVu ZDsKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSBpZiAoKnMgPT0gJ1xuJyB8fCAq cyA9PSAnICcgfHwgKnMgPT0gJ1xyJyB8fCAqcyA9PSAnXHQnKQorICAgICAgICAgICAgICA7IC8q IFNraXAgd2hpdGUgc3BhY2VzLiAqLworICAgICAgICAgICAgZWxzZSBpZiAoICgqcyAmIDB4ODAp CisgICAgICAgICAgICAgICAgICAgICAgfHwgKGMgPSBhc2N0b2JpblsqKHVuc2lnbmVkIGNoYXIg KilzXSkgPT0gMjU1KQorICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgLyogU2tpcCBp bnZhbGlkIGVuY29kaW5ncy4gICovCisgICAgICAgICAgICAgICAgc3RhdGUtPmludmFsaWRfZW5j b2RpbmcgPSAxOworICAgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIGlmIChkcyA9PSBz X2I2NF8wKQorICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgdmFsID0gYyA8PCAyOwor ICAgICAgICAgICAgICAgIGRzID0gc19iNjRfMTsKKyAgICAgICAgICAgICAgfQorICAgICAgICAg ICAgZWxzZSBpZiAoZHMgPT0gc19iNjRfMSkKKyAgICAgICAgICAgICAgeworICAgICAgICAgICAg ICAgIHZhbCB8PSAoYz4+NCkmMzsKKyAgICAgICAgICAgICAgICAqZCsrID0gdmFsOworICAgICAg ICAgICAgICAgIHZhbCA9IChjPDw0KSYweGYwOworICAgICAgICAgICAgICAgIGRzID0gc19iNjRf MjsKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSBpZiAoZHMgPT0gc19iNjRfMikK KyAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHZhbCB8PSAoYz4+MikmMTU7CisgICAg ICAgICAgICAgICAgKmQrKyA9IHZhbDsKKyAgICAgICAgICAgICAgICB2YWwgPSAoYzw8NikmMHhj MDsKKyAgICAgICAgICAgICAgICBkcyA9IHNfYjY0XzM7CisgICAgICAgICAgICAgIH0KKyAgICAg ICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHZhbCB8PSBjJjB4 M2Y7CisgICAgICAgICAgICAgICAgKmQrKyA9IHZhbDsKKyAgICAgICAgICAgICAgICBkcyA9IHNf YjY0XzA7CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgICAgYnJlYWs7Cisg ICAgICAgIGNhc2Ugc193YWl0ZW5kdGl0bGU6CisgICAgICAgICAgaWYgKCpzID09ICctJykKKyAg ICAgICAgICAgIGRzID0gc193YWl0ZW5kOworICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNl IHNfd2FpdGVuZDoKKyAgICAgICAgICBpZiAoICpzID09ICdcbicpCisgICAgICAgICAgICBzdGF0 ZS0+c3RvcF9zZWVuID0gMTsKKyAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAg ICAgICAgICBncGdydF9hc3NlcnQgKCEiaW52YWxpZCBzdGF0ZSIpOworICAgICAgICB9CisgICAg fQorCisKKyAgc3RhdGUtPmlkeCA9IGRzOworICBzdGF0ZS0+cmFkYnVmWzBdID0gdmFsOworICBz dGF0ZS0+cXVhZF9jb3VudCA9IHBvczsKKyAgKnJfbmJ5dGVzID0gKGQgLShjaGFyKikgYnVmZmVy KTsKKyAgcmV0dXJuIDA7Cit9CisKKworLyogUmV0dXJuIGFuIGVycm9yIGNvZGUgaW4gY2FzZSBh biBlbmNvZGluZyBlcnJvciBoYXMgYmVlbiBmb3VuZAorICAgZHVyaW5nIGRlY29kaW5nLiAqLwor Z3BnX2Vycl9jb2RlX3QKK19ncGdydF9iNjRkZWNfZmluaXNoIChncGdydF9iNjRzdGF0ZV90IHN0 YXRlKQoreworICBncGdfZXJyb3JfdCBlcnI7CisKKyAgaWYgKCFzdGF0ZSkKKyAgICByZXR1cm4g MDsgIC8qIEFscmVhZHkgcmVsZWFzZWQuICAqLworCisgIGlmICghc3RhdGUtPnVzaW5nX2RlY29k ZXIpCisgICAgZXJyID0gR1BHX0VSUl9DT05GTElDVDsgIC8qIFN0YXRlIHdhcyBhbGxvY2F0ZWQg Zm9yIHRoZSBlbmNvZGVyLiAgKi8KKyAgZWxzZSBpZiAoc3RhdGUtPmxhc3RlcnIpCisgICAgZXJy ID0gc3RhdGUtPmxhc3RlcnI7CisgIGVsc2UKKyAgICB7CisgICAgICB4ZnJlZSAoc3RhdGUtPnRp dGxlKTsKKyAgICAgIGVyciA9IHN0YXRlLT5pbnZhbGlkX2VuY29kaW5nPyBHUEdfRVJSX0JBRF9E QVRBIDogMDsKKyAgICB9CisgIHhmcmVlIChzdGF0ZSk7CisKKyAgcmV0dXJuIGVycjsKK30KLS0g CjIuNDkuMAoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f CkdydWItZGV2ZWwgbWFpbGluZyBsaXN0CkdydWItZGV2ZWxAZ251Lm9yZwpodHRwczovL2xpc3Rz LmdudS5vcmcvbWFpbG1hbi9saXN0aW5mby9ncnViLWRldmVsCg==