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 15033C25B7A for ; Thu, 16 May 2024 18:29:39 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1s7fqH-0003tV-AF; Thu, 16 May 2024 14:28:37 -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 1s7fq9-0003sD-UA for grub-devel@gnu.org; Thu, 16 May 2024 14:28:30 -0400 Received: from mail-ej1-x635.google.com ([2a00:1450:4864:20::635]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1s7fq4-0000DJ-NR for grub-devel@gnu.org; Thu, 16 May 2024 14:28:29 -0400 Received: by mail-ej1-x635.google.com with SMTP id a640c23a62f3a-a59a5f81af4so349483966b.3 for ; Thu, 16 May 2024 11:28:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1715884103; x=1716488903; 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=J4Yuu/7arTQBckUgk9wnG5RZIu/0FbIOB3kJBBpWD8M=; b=mOFhAXCTW5/QYmp3XF6DJn36RFV7QGDM+CBVso9Tpo3NQK79KpESclcmA47FWZJltW BCVUc/nRecNJleYnY4z4vqG5MkUVK921dISeFUjM7dMYDxVSA48V0WiEHfkYoE3quGLe vdlMBDOmTJOoou52T1EX7uL/I1tiuqT1V3kYalAA8PCv0VUhJvB23dlbUh0DNcSYhaTW xa9xOfo5xLnkeCM12IvmpNnRdLTz303xibapPh3Vs5ki4+Yuo/xIOUjXXWEbLae/W2FQ CGkR8hQ60MaQKe9Zo4TcnsLploE/zQwrLLHDo3CXqvdlutwfayP/yN8chw/imJp1kxa5 8ukQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1715884103; x=1716488903; 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=J4Yuu/7arTQBckUgk9wnG5RZIu/0FbIOB3kJBBpWD8M=; b=JQ1EmSJRuGPetO8pjm2uRCacUjz/dWML+zbpagOc/bq5mcbQvdAEi5oOKCZ9VbKiI+ cGC//NAXfPFUgNZx5H52ypv7rF8xas+tiHxqw8vyyy2Yb1m+RECnYk0VEP4T72j1LbO4 ukkF3GY3+x4I5uk/z0HutvmntbMgoEucB8o4ECmSXVN/P6jdpdRZjzW/lmtyUzwyW3Cs /iYxLGovTWRqRSohb8meOrtYmiW6bIn/nN3ljOXqcvpyuJfjctU+KsJHk7oPTNEJpbRw MU4bb8kvHir+USZUrNe/qZcVydLvexhIzlTCWQm5DRMewi6up/zIPfZNPkx2A/5zl7xj gsig== X-Gm-Message-State: AOJu0YwCqEDKtvZGJKJ+YQtLUXanrE+p03MrGSNnmsP0eijOn5krufOv BIfaTadb+ly8Da1U111h3WB+0DJWaH93mfrLnjxRctBzswn3fznCNFwS6DzJ X-Google-Smtp-Source: AGHT+IHVH1NDMchS63kkqcrrs8WoZCfXCF8evZwiSG9mUcIAMSDrxX6g8CKnRkm8TXLFnTYS1iFBCQ== X-Received: by 2002:a17:907:36c:b0:a59:c6fd:5160 with SMTP id a640c23a62f3a-a5a2d6bc140mr1436693266b.76.1715884101649; Thu, 16 May 2024 11:28:21 -0700 (PDT) Received: from localhost ([5.253.206.60]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-a5a1781ce3fsm1010245666b.4.2024.05.16.11.28.20 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 16 May 2024 11:28:21 -0700 (PDT) From: Vladimir Serbinenko To: grub-devel@gnu.org Cc: Vladimir Serbinenko Subject: [PATCH 2/3] Adjust import script, definitions and API users for libgcrypt 1.10 Date: Thu, 16 May 2024 21:27:42 +0300 Message-Id: <20240516182743.2350-2-phcoder@gmail.com> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20240516182743.2350-1-phcoder@gmail.com> References: <20240516182743.2350-1-phcoder@gmail.com> MIME-Version: 1.0 Received-SPF: pass client-ip=2a00:1450:4864:20::635; envelope-from=phcoder@gmail.com; helo=mail-ej1-x635.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 LS0tCiBhdXRvZ2VuLnNoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDEgKwog Y29uZi9NYWtlZmlsZS5jb21tb24gICAgICAgICAgICAgICAgICAgICAgIHwgICA0ICstCiBncnVi LWNvcmUvTWFrZWZpbGUuY29yZS5kZWYgICAgICAgICAgICAgICAgfCAgMzYgKy0KIGdydWItY29y ZS9jb21tYW5kcy9oYXNoc3VtLmMgICAgICAgICAgICAgICB8ICAgMiArLQogZ3J1Yi1jb3JlL2Nv bW1hbmRzL2xlZ2FjeWNmZy5jICAgICAgICAgICAgIHwgICA2ICstCiBncnViLWNvcmUvY29tbWFu ZHMvcGdwLmMgICAgICAgICAgICAgICAgICAgfCAxMTQgKy0tLQogZ3J1Yi1jb3JlL2NvbW1hbmRz L3hudV91dWlkLmMgICAgICAgICAgICAgIHwgICAyICstCiBncnViLWNvcmUvZGlzay9jcnlwdG9k aXNrLmMgICAgICAgICAgICAgICAgfCAgIDIgKy0KIGdydWItY29yZS9pby9nemlvLmMgICAgICAg ICAgICAgICAgICAgICAgICB8ICAgMiArLQogZ3J1Yi1jb3JlL2lvL2x6b3Bpby5jICAgICAgICAg ICAgICAgICAgICAgIHwgICAyICstCiBncnViLWNvcmUvbGliL2FkbGVyMzIuYyAgICAgICAgICAg ICAgICAgICAgfCAgMjEgKy0KIGdydWItY29yZS9saWIvYjY0ZGVjLmMgICAgICAgICAgICAgICAg ICAgICB8IDI5MyArKysrKysrKysKIGdydWItY29yZS9saWIvY3JjNjQuYyAgICAgICAgICAgICAg ICAgICAgICB8ICAyNCArLQogZ3J1Yi1jb3JlL2xpYi9jcnlwdG8uYyAgICAgICAgICAgICAgICAg ICAgIHwgMjQ1ICsrKysrKystCiBncnViLWNvcmUvbGliL2xpYmdjcnlwdC9zcmMvZ2NyeXB0LWlu dC5oICAgfCAgNTEgLS0KIGdydWItY29yZS9saWIvbGliZ2NyeXB0X3dyYXAvY2lwaGVyX3dyYXAu aCB8ICAxMiArLQogZ3J1Yi1jb3JlL2xpYi9saWJnY3J5cHRfd3JhcC9tZC5jICAgICAgICAgIHwg Njg3ICsrKysrKysrKysrKysrKysrKysrKwogZ3J1Yi1jb3JlL2xpYi9saWJnY3J5cHRfd3JhcC9t ZW0uYyAgICAgICAgIHwgIDgzICsrLQogZ3J1Yi1jb3JlL2xpYi94emVtYmVkL3h6X2RlY19zdHJl YW0uYyAgICAgIHwgIDE4ICstCiBncnViLWNvcmUvdGVzdHMvZHNhX3NleHBfdGVzdC5jICAgICAg ICAgICAgfCAxMDcgKysrKwogZ3J1Yi1jb3JlL3Rlc3RzL3JzYV9zZXhwX3Rlc3QuYyAgICAgICAg ICAgIHwgIDgxICsrKwogaW5jbHVkZS9ncnViL2NyeXB0by5oICAgICAgICAgICAgICAgICAgICAg IHwgMjYxICsrKysrKy0tCiBpbmNsdWRlL2dydWIvZ2NyeXB0L2dwZy1lcnJvci5oICAgICAgICAg ICAgfCAgIDkgKwogdXRpbC9ncnViLWZzdGVzdC5jICAgICAgICAgICAgICAgICAgICAgICAgIHwg ICAyICstCiB1dGlsL2ltcG9ydF9nY3J5LnB5ICAgICAgICAgICAgICAgICAgICAgICAgfCAxMjIg KystLQogdXRpbC9pbXBvcnRfZ2NyeXB0X2ludGguc2VkICAgICAgICAgICAgICAgIHwgIDE3ICsK IHV0aWwvaW1wb3J0X2djcnlwdGguc2VkICAgICAgICAgICAgICAgICAgICB8ICAgMiAtCiAyNyBm aWxlcyBjaGFuZ2VkLCAxOTQyIGluc2VydGlvbnMoKyksIDI2NCBkZWxldGlvbnMoLSkKIGNyZWF0 ZSBtb2RlIDEwMDY0NCBncnViLWNvcmUvbGliL2I2NGRlYy5jCiBjcmVhdGUgbW9kZSAxMDA2NDQg Z3J1Yi1jb3JlL2xpYi9saWJnY3J5cHRfd3JhcC9tZC5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgZ3J1 Yi1jb3JlL3Rlc3RzL2RzYV9zZXhwX3Rlc3QuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGdydWItY29y ZS90ZXN0cy9yc2Ffc2V4cF90ZXN0LmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCB1dGlsL2ltcG9ydF9n Y3J5cHRfaW50aC5zZWQKCmRpZmYgLS1naXQgYS9hdXRvZ2VuLnNoIGIvYXV0b2dlbi5zaAppbmRl eCAxOTVkYWE1NDEuLjA0Nzc5Yzk1NSAxMDA3NTUKLS0tIGEvYXV0b2dlbi5zaAorKysgYi9hdXRv Z2VuLnNoCkBAIC0zNSw2ICszNSw3IEBAICR7UFlUSE9OfSB1dGlsL2ltcG9ydF91bmljb2RlLnB5 IHVuaWNvZGUvVW5pY29kZURhdGEudHh0IHVuaWNvZGUvQmlkaU1pcnJvcmluZy50CiBlY2hvICJJ bXBvcnRpbmcgbGliZ2NyeXB0Li4uIgogJHtQWVRIT059IHV0aWwvaW1wb3J0X2djcnkucHkgZ3J1 Yi1jb3JlL2xpYi9saWJnY3J5cHQvIGdydWItY29yZQogc2VkIC1uIC1mIHV0aWwvaW1wb3J0X2dj cnlwdGguc2VkIDwgZ3J1Yi1jb3JlL2xpYi9saWJnY3J5cHQvc3JjL2djcnlwdC5oLmluID4gaW5j bHVkZS9ncnViL2djcnlwdC9nY3J5cHQuaAorc2VkIC1uIC1mIHV0aWwvaW1wb3J0X2djcnlwdF9p bnRoLnNlZCA8IGdydWItY29yZS9saWIvbGliZ2NyeXB0L3NyYy9nY3J5cHQtaW50LmggPj4gaW5j bHVkZS9ncnViL2djcnlwdC9nY3J5cHQuaAogaWYgWyAtZiBpbmNsdWRlL2dydWIvZ2NyeXB0L2cx MGxpYi5oIF07IHRoZW4KICAgICBybSBpbmNsdWRlL2dydWIvZ2NyeXB0L2cxMGxpYi5oCiBmaQpk aWZmIC0tZ2l0IGEvY29uZi9NYWtlZmlsZS5jb21tb24gYi9jb25mL01ha2VmaWxlLmNvbW1vbgpp bmRleCBiOGYyMTZmNmMuLjFmZDNmYzlkYSAxMDA2NDQKLS0tIGEvY29uZi9NYWtlZmlsZS5jb21t b24KKysrIGIvY29uZi9NYWtlZmlsZS5jb21tb24KQEAgLTgxLDggKzgxLDggQEAgQ1BQRkxBR1Nf R05VTElCID0gLUkkKHRvcF9idWlsZGRpcikvZ3J1Yi1jb3JlL2xpYi9nbnVsaWIgLUkkKHRvcF9z cmNkaXIpL2dydWItY28KIENGTEFHU19QT1NJWCA9IC1mbm8tYnVpbHRpbgogQ1BQRkxBR1NfUE9T SVggPSAtSSQodG9wX3NyY2RpcikvZ3J1Yi1jb3JlL2xpYi9wb3NpeF93cmFwCiAKLUNGTEFHU19H Q1JZID0gLVduby1lcnJvciAtV25vLW1pc3NpbmctZmllbGQtaW5pdGlhbGl6ZXJzIC1Xbm8tcmVk dW5kYW50LWRlY2xzIC1Xbm8tdW5kZWYgJChDRkxBR1NfUE9TSVgpCi1DUFBGTEFHU19HQ1JZID0g LUkkKHRvcF9zcmNkaXIpL2dydWItY29yZS9saWIvbGliZ2NyeXB0X3dyYXAgJChDUFBGTEFHU19Q T1NJWCkgLURfR0NSWVBUX0lOX0xJQkdDUllQVD0xIC1JJCh0b3Bfc3JjZGlyKS9pbmNsdWRlL2dy dWIvZ2NyeXB0CitDRkxBR1NfR0NSWSA9IC1Xbm8tZXJyb3I9c2lnbi1jb21wYXJlIC1Xbm8tZXJy b3I9c2hpZnQtY291bnQtb3ZlcmZsb3cgLVduby1taXNzaW5nLWZpZWxkLWluaXRpYWxpemVycyAt V25vLXJlZHVuZGFudC1kZWNscyAtV25vLXVuZGVmICQoQ0ZMQUdTX1BPU0lYKQorQ1BQRkxBR1Nf R0NSWSA9IC1JJCh0b3Bfc3JjZGlyKS9ncnViLWNvcmUvbGliL2xpYmdjcnlwdF93cmFwICQoQ1BQ RkxBR1NfUE9TSVgpIC1EX0dDUllQVF9JTl9MSUJHQ1JZUFQ9MSAtRF9HQ1JZUFRfQ09ORklHX0hf SU5DTFVERUQ9MSAtREhBVkVfU1RSVE9VTD0xIC1JJCh0b3Bfc3JjZGlyKS9pbmNsdWRlL2dydWIv Z2NyeXB0CiAKIENQUEZMQUdTX0VGSUVNVSA9IC1JJCh0b3Bfc3JjZGlyKS9ncnViLWNvcmUvZWZp ZW11L3J1bnRpbWUKIApkaWZmIC0tZ2l0IGEvZ3J1Yi1jb3JlL01ha2VmaWxlLmNvcmUuZGVmIGIv Z3J1Yi1jb3JlL01ha2VmaWxlLmNvcmUuZGVmCmluZGV4IDE1NzE0MjFkNy4uNTkyNzBmYzlhIDEw MDY0NAotLS0gYS9ncnViLWNvcmUvTWFrZWZpbGUuY29yZS5kZWYKKysrIGIvZ3J1Yi1jb3JlL01h a2VmaWxlLmNvcmUuZGVmCkBAIC05NzEsOCArOTcxLDggQEAgbW9kdWxlID0gewogbW9kdWxlID0g ewogICBuYW1lID0gcGdwOwogICBjb21tb24gPSBjb21tYW5kcy9wZ3AuYzsKLSAgY2ZsYWdzID0g JyQoQ0ZMQUdTX1BPU0lYKSc7Ci0gIGNwcGZsYWdzID0gJy1JJChzcmNkaXIpL2xpYi9wb3NpeF93 cmFwJzsKKyAgY2ZsYWdzID0gJyQoQ0ZMQUdTX0dDUlkpIC1Xbm8tcmVkdW5kYW50LWRlY2xzIC1X bm8tc2lnbi1jb21wYXJlJzsKKyAgY3BwZmxhZ3MgPSAnJChDUFBGTEFHU19HQ1JZKSc7CiB9Owog CiBtb2R1bGUgPSB7CkBAIC0yMTY1LDYgKzIxNjUsMjIgQEAgbW9kdWxlID0gewogICBjb21tb24g PSB0ZXN0cy9zZXRqbXBfdGVzdC5jOwogfTsKIAorbW9kdWxlID0geworICBuYW1lID0gZHNhX3Nl eHBfdGVzdDsKKyAgY29tbW9uID0gdGVzdHMvZHNhX3NleHBfdGVzdC5jOworCisgIGNmbGFncyA9 ICckKENGTEFHU19HQ1JZKSAtV25vLXJlZHVuZGFudC1kZWNscyAtV25vLXNpZ24tY29tcGFyZSc7 CisgIGNwcGZsYWdzID0gJyQoQ1BQRkxBR1NfR0NSWSknOworfTsKKworbW9kdWxlID0geworICBu YW1lID0gcnNhX3NleHBfdGVzdDsKKyAgY29tbW9uID0gdGVzdHMvcnNhX3NleHBfdGVzdC5jOwor CisgIGNmbGFncyA9ICckKENGTEFHU19HQ1JZKSAtV25vLXJlZHVuZGFudC1kZWNscyAtV25vLXNp Z24tY29tcGFyZSc7CisgIGNwcGZsYWdzID0gJyQoQ1BQRkxBR1NfR0NSWSknOworfTsKKwogbW9k dWxlID0gewogICBuYW1lID0gc2lnbmF0dXJlX3Rlc3Q7CiAgIGNvbW1vbiA9IHRlc3RzL3NpZ25h dHVyZV90ZXN0LmM7CkBAIC0yNTE5LDcgKzI1MzUsMjMgQEAgbW9kdWxlID0gewogICBjb21tb24g PSBsaWIvbGliZ2NyeXB0LWdydWIvbXBpL21waWNvZGVyLmM7CiAgIGNvbW1vbiA9IGxpYi9saWJn Y3J5cHQtZ3J1Yi9tcGkvbXBpaC1yc2hpZnQuYzsKICAgY29tbW9uID0gbGliL2xpYmdjcnlwdC1n cnViL21waS9tcGktaW5saW5lLmM7CisgIGNvbW1vbiA9IGxpYi9saWJnY3J5cHQtZ3J1Yi9tcGkv bXBpaC1jb25zdC10aW1lLmM7CisgIGNvbW1vbiA9IGxpYi9saWJnY3J5cHQtZ3J1Yi9tcGkvbXBp LXNjYW4uYzsKKyAgY29tbW9uID0gbGliL2xpYmdjcnlwdC1ncnViL3NyYy9jb25zdC10aW1lLmM7 CiAgIGNvbW1vbiA9IGxpYi9saWJnY3J5cHRfd3JhcC9tZW0uYzsKKyAgY29tbW9uID0gbGliL2xp YmdjcnlwdF93cmFwL21kLmM7CisKKyAgY2ZsYWdzID0gJyQoQ0ZMQUdTX0dDUlkpIC1Xbm8tcmVk dW5kYW50LWRlY2xzIC1Xbm8tc2lnbi1jb21wYXJlIC1Xbm8tdW51c2VkLWJ1dC1zZXQtdmFyaWFi bGUnOworICBjcHBmbGFncyA9ICckKENQUEZMQUdTX0dDUlkpJzsKK307CisKK21vZHVsZSA9IHsK KyAgbmFtZSA9IHB1YmtleTsKKyAgY29tbW9uID0gbGliL2xpYmdjcnlwdC1ncnViL2NpcGhlci9w dWJrZXktdXRpbC5jOworICBjb21tb24gPSBsaWIvbGliZ2NyeXB0LWdydWIvY2lwaGVyL3JzYS1j b21tb24uYzsKKyAgY29tbW9uID0gbGliL2xpYmdjcnlwdC1ncnViL2NpcGhlci9kc2EtY29tbW9u LmM7CisgIGNvbW1vbiA9IGxpYi9saWJnY3J5cHQtZ3J1Yi9zcmMvc2V4cC5jOworICBjb21tb24g PSBsaWIvYjY0ZGVjLmM7CiAKICAgY2ZsYWdzID0gJyQoQ0ZMQUdTX0dDUlkpIC1Xbm8tcmVkdW5k YW50LWRlY2xzIC1Xbm8tc2lnbi1jb21wYXJlJzsKICAgY3BwZmxhZ3MgPSAnJChDUFBGTEFHU19H Q1JZKSc7CmRpZmYgLS1naXQgYS9ncnViLWNvcmUvY29tbWFuZHMvaGFzaHN1bS5jIGIvZ3J1Yi1j b3JlL2NvbW1hbmRzL2hhc2hzdW0uYwppbmRleCBkNTZiNWIwYmIuLmI2ZjhlM2QxYSAxMDA2NDQK LS0tIGEvZ3J1Yi1jb3JlL2NvbW1hbmRzL2hhc2hzdW0uYworKysgYi9ncnViLWNvcmUvY29tbWFu ZHMvaGFzaHN1bS5jCkBAIC03Myw3ICs3Myw3IEBAIGhhc2hfZmlsZSAoZ3J1Yl9maWxlX3QgZmls ZSwgY29uc3QgZ2NyeV9tZF9zcGVjX3QgKmhhc2gsIHZvaWQgKnJlc3VsdCkKICAgaWYgKCFyZWFk YnVmIHx8ICFjb250ZXh0KQogICAgIGdvdG8gZmFpbDsKIAotICBoYXNoLT5pbml0IChjb250ZXh0 KTsKKyAgaGFzaC0+aW5pdCAoY29udGV4dCwgMCk7CiAgIHdoaWxlICgxKQogICAgIHsKICAgICAg IGdydWJfc3NpemVfdCByOwpkaWZmIC0tZ2l0IGEvZ3J1Yi1jb3JlL2NvbW1hbmRzL2xlZ2FjeWNm Zy5jIGIvZ3J1Yi1jb3JlL2NvbW1hbmRzL2xlZ2FjeWNmZy5jCmluZGV4IGU5ZTlkOTRlZi4uMDUy YmIxMTBkIDEwMDY0NAotLS0gYS9ncnViLWNvcmUvY29tbWFuZHMvbGVnYWN5Y2ZnLmMKKysrIGIv Z3J1Yi1jb3JlL2NvbW1hbmRzL2xlZ2FjeWNmZy5jCkBAIC02MjUsNyArNjI1LDcgQEAgY2hlY2tf cGFzc3dvcmRfbWQ1X3JlYWwgKGNvbnN0IGNoYXIgKmVudGVyZWQsCiAgIGlmICghY3R4KQogICAg IHJldHVybiAwOwogCi0gIEdSVUJfTURfTUQ1LT5pbml0IChjdHgpOworICBHUlVCX01EX01ENS0+ aW5pdCAoY3R4LCAwKTsKICAgR1JVQl9NRF9NRDUtPndyaXRlIChjdHgsIGVudGVyZWQsIGVudGVy ZWRsZW4pOwogICBHUlVCX01EX01ENS0+d3JpdGUgKGN0eCwgcHctPnNhbHQgKyAzLCBwdy0+c2Fs dGxlbiAtIDMpOwogICBHUlVCX01EX01ENS0+d3JpdGUgKGN0eCwgZW50ZXJlZCwgZW50ZXJlZGxl bik7CkBAIC02MzMsNyArNjMzLDcgQEAgY2hlY2tfcGFzc3dvcmRfbWQ1X3JlYWwgKGNvbnN0IGNo YXIgKmVudGVyZWQsCiAgIEdSVUJfTURfTUQ1LT5maW5hbCAoY3R4KTsKICAgZ3J1Yl9tZW1jcHkg KGFsdF9yZXN1bHQsIGRpZ2VzdCwgTUQ1X0hBU0hMRU4pOwogCi0gIEdSVUJfTURfTUQ1LT5pbml0 IChjdHgpOworICBHUlVCX01EX01ENS0+aW5pdCAoY3R4LCAwKTsKICAgR1JVQl9NRF9NRDUtPndy aXRlIChjdHgsIGVudGVyZWQsIGVudGVyZWRsZW4pOwogICBHUlVCX01EX01ENS0+d3JpdGUgKGN0 eCwgcHctPnNhbHQsIHB3LT5zYWx0bGVuKTsgLyogaW5jbHVkZSB0aGUgJDEkIGhlYWRlciAqLwog ICBmb3IgKGkgPSBlbnRlcmVkbGVuOyBpID4gMTY7IGkgLT0gMTYpCkBAIC02NDksNyArNjQ5LDcg QEAgY2hlY2tfcGFzc3dvcmRfbWQ1X3JlYWwgKGNvbnN0IGNoYXIgKmVudGVyZWQsCiAgICAgewog ICAgICAgZ3J1Yl9tZW1jcHkgKGFsdF9yZXN1bHQsIGRpZ2VzdCwgMTYpOwogCi0gICAgICBHUlVC X01EX01ENS0+aW5pdCAoY3R4KTsKKyAgICAgIEdSVUJfTURfTUQ1LT5pbml0IChjdHgsIDApOwog ICAgICAgaWYgKChpICYgMSkgIT0gMCkKIAlHUlVCX01EX01ENS0+d3JpdGUgKGN0eCwgZW50ZXJl ZCwgZW50ZXJlZGxlbik7CiAgICAgICBlbHNlCmRpZmYgLS1naXQgYS9ncnViLWNvcmUvY29tbWFu ZHMvcGdwLmMgYi9ncnViLWNvcmUvY29tbWFuZHMvcGdwLmMKaW5kZXggYzY3NjZmMDQ0Li4yMmVj YTk3ZmYgMTAwNjQ0Ci0tLSBhL2dydWItY29yZS9jb21tYW5kcy9wZ3AuYworKysgYi9ncnViLWNv cmUvY29tbWFuZHMvcGdwLmMKQEAgLTEzNiw0MSArMTM2LDI3IEBAIHN0cnVjdCBzaWduYXR1cmVf djRfaGVhZGVyCiAgIGdydWJfdWludDE2X3QgaGFzaGVkX3N1YjsKIH0gR1JVQl9QQUNLRUQ7CiAK LWNvbnN0IGNoYXIgKmhhc2hlc1tdID0gewotICBbMHgwMV0gPSAibWQ1IiwKLSAgWzB4MDJdID0g InNoYTEiLAotICBbMHgwM10gPSAicmlwZW1kMTYwIiwKLSAgWzB4MDhdID0gInNoYTI1NiIsCi0g IFsweDA5XSA9ICJzaGEzODQiLAotICBbMHgwYV0gPSAic2hhNTEyIiwKLSAgWzB4MGJdID0gInNo YTIyNCIKLX07Ci0KIHN0cnVjdCBnY3J5X3BrX3NwZWMgKmdydWJfY3J5cHRvX3BrX2RzYTsKIHN0 cnVjdCBnY3J5X3BrX3NwZWMgKmdydWJfY3J5cHRvX3BrX2VjZHNhOwogc3RydWN0IGdjcnlfcGtf c3BlYyAqZ3J1Yl9jcnlwdG9fcGtfcnNhOwogCi1zdGF0aWMgaW50Ci1kc2FfcGFkIChnY3J5X21w aV90ICpobXBpLCBncnViX3VpbnQ4X3QgKmh2YWwsCi0JIGNvbnN0IGdjcnlfbWRfc3BlY190ICpo YXNoLCBzdHJ1Y3QgZ3J1Yl9wdWJsaWNfc3Via2V5ICpzayk7Ci1zdGF0aWMgaW50Ci1yc2FfcGFk IChnY3J5X21waV90ICpobXBpLCBncnViX3VpbnQ4X3QgKmh2YWwsCi0JIGNvbnN0IGdjcnlfbWRf c3BlY190ICpoYXNoLCBzdHJ1Y3QgZ3J1Yl9wdWJsaWNfc3Via2V5ICpzayk7Ci0KIHN0cnVjdAog ewogICBjb25zdCBjaGFyICpuYW1lOworICBjb25zdCBjaGFyICpzaWdzZXhwOwogICBncnViX3Np emVfdCBubXBpc2lnOworICBjb25zdCBjaGFyICpwdWJzZXhwOwogICBncnViX3NpemVfdCBubXBp cHViOwogICBzdHJ1Y3QgZ2NyeV9wa19zcGVjICoqYWxnbzsKLSAgaW50ICgqcGFkKSAoZ2NyeV9t cGlfdCAqaG1waSwgZ3J1Yl91aW50OF90ICpodmFsLAotCSAgICAgIGNvbnN0IGdjcnlfbWRfc3Bl Y190ICpoYXNoLCBzdHJ1Y3QgZ3J1Yl9wdWJsaWNfc3Via2V5ICpzayk7CisgIGNvbnN0IGNoYXIg KnBhZGRpbmc7CiAgIGNvbnN0IGNoYXIgKm1vZHVsZTsKIH0gcGthbGdvc1tdID0KICAgewotICAg IFsxXSA9IHsgInJzYSIsIDEsIDIsICZncnViX2NyeXB0b19wa19yc2EsIHJzYV9wYWQsICJnY3J5 X3JzYSIgfSwKLSAgICBbM10gPSB7ICJyc2EiLCAxLCAyLCAmZ3J1Yl9jcnlwdG9fcGtfcnNhLCBy c2FfcGFkLCAiZ2NyeV9yc2EiIH0sCi0gICAgWzE3XSA9IHsgImRzYSIsIDIsIDQsICZncnViX2Ny eXB0b19wa19kc2EsIGRzYV9wYWQsICJnY3J5X2RzYSIgfSwKKyAgICBbMV0gPSB7ICJyc2EiLCAi KHNpZy12YWwgKHJzYSAocyAlTSkpKSIsIDEsICIocHVibGljLWtleSAoZHNhIChuICVNKSAoZSAl TSkpKSIsIDIsICZncnViX2NyeXB0b19wa19yc2EsICJwa2NzMSIsICJnY3J5X3JzYSIgfSwKKyAg ICBbM10gPSB7ICJyc2EiLCAiKHNpZy12YWwgKHJzYSAocyAlTSkpKSIsIDEsICIocHVibGljLWtl eSAoZHNhIChuICVNKSAoZSAlTSkpKSIsIDIsICZncnViX2NyeXB0b19wa19yc2EsICJwa2NzMSIs ICJnY3J5X3JzYSIgfSwKKyAgICBbMTddID0geyAiZHNhIiwgIihzaWctdmFsIChkc2EgKHIgJU0p IChzICVNKSkpIiwgMiwKKwkgICAgICIocHVibGljLWtleSAoZHNhIChwICVNKSAocSAlTSkgKGcg JU0pICh5ICVNKSkpIiwKKwkgICAgIDQsICZncnViX2NyeXB0b19wa19kc2EsICJyYXciLCAiZ2Ny eV9kc2EiIH0sCiAgIH07CiAKIHN0cnVjdCBncnViX3B1YmxpY19rZXkKQEAgLTE5Niw3ICsxODIs NyBAQCBmcmVlX3BrIChzdHJ1Y3QgZ3J1Yl9wdWJsaWNfa2V5ICpwaykKICAgICAgIGdydWJfc2l6 ZV90IGk7CiAgICAgICBmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRSAoc2stPm1waXMpOyBpKysp CiAJaWYgKHNrLT5tcGlzW2ldKQotCSAgZ2NyeV9tcGlfcmVsZWFzZSAoc2stPm1waXNbaV0pOwor CSAgX2djcnlfbXBpX3JlbGVhc2UgKHNrLT5tcGlzW2ldKTsKICAgICAgIG5zayA9IHNrLT5uZXh0 OwogICAgICAgZ3J1Yl9mcmVlIChzayk7CiAgICAgfQpAQCAtMzAzLDcgKzI4OSw3IEBAIGdydWJf bG9hZF9wdWJsaWNfa2V5IChncnViX2ZpbGVfdCBmKQogCWdvdG8gZmFpbDsKIAogICAgICAgZ3J1 Yl9tZW1zZXQgKGZpbmdlcnByaW50X2NvbnRleHQsIDAsIEdSVUJfTURfU0hBMS0+Y29udGV4dHNp emUpOwotICAgICAgR1JVQl9NRF9TSEExLT5pbml0IChmaW5nZXJwcmludF9jb250ZXh0KTsKKyAg ICAgIEdSVUJfTURfU0hBMS0+aW5pdCAoZmluZ2VycHJpbnRfY29udGV4dCwgMCk7CiAgICAgICBH UlVCX01EX1NIQTEtPndyaXRlIChmaW5nZXJwcmludF9jb250ZXh0LCAiXHg5OSIsIDEpOwogICAg ICAgbGVuX2JlID0gZ3J1Yl9jcHVfdG9fYmUxNiAobGVuKTsKICAgICAgIEdSVUJfTURfU0hBMS0+ d3JpdGUgKGZpbmdlcnByaW50X2NvbnRleHQsICZsZW5fYmUsIHNpemVvZiAobGVuX2JlKSk7CkBA IC0zMzYsNyArMzIyLDcgQEAgZ3J1Yl9sb2FkX3B1YmxpY19rZXkgKGdydWJfZmlsZV90IGYpCiAK IAkgIEdSVUJfTURfU0hBMS0+d3JpdGUgKGZpbmdlcnByaW50X2NvbnRleHQsIGJ1ZmZlciwgbGIg KyBzaXplb2YgKGdydWJfdWludDE2X3QpKTsKIAotCSAgaWYgKGdjcnlfbXBpX3NjYW4gKCZzay0+ bXBpc1tpXSwgR0NSWU1QSV9GTVRfUEdQLAorCSAgaWYgKF9nY3J5X21waV9zY2FuICgmc2stPm1w aXNbaV0sIEdDUllNUElfRk1UX1BHUCwKIAkJCSAgICAgYnVmZmVyLCBsYiArIHNpemVvZiAoZ3J1 Yl91aW50MTZfdCksIDApKQogCSAgICB7CiAJICAgICAgZ3J1Yl9lcnJvciAoR1JVQl9FUlJfQkFE X1NJR05BVFVSRSwgTl8oImJhZCBzaWduYXR1cmUiKSk7CkBAIC0zOTQsNTEgKzM4MCw2IEBAIGdy dWJfY3J5cHRvX3BrX2xvY2F0ZV9zdWJrZXlfaW5fdHJ1c3RkYiAoZ3J1Yl91aW50NjRfdCBrZXlp ZCkKICAgcmV0dXJuIDA7CiB9CiAKLQotc3RhdGljIGludAotZHNhX3BhZCAoZ2NyeV9tcGlfdCAq aG1waSwgZ3J1Yl91aW50OF90ICpodmFsLAotCSBjb25zdCBnY3J5X21kX3NwZWNfdCAqaGFzaCwg c3RydWN0IGdydWJfcHVibGljX3N1YmtleSAqc2spCi17Ci0gIHVuc2lnbmVkIG5iaXRzID0gZ2Ny eV9tcGlfZ2V0X25iaXRzIChzay0+bXBpc1sxXSk7Ci0gIGdydWJfZHByaW50ZiAoImNyeXB0Iiwg Im11c3QgYmUgJXUgYml0cyBnb3QgJWQgYml0c1xuIiwgbmJpdHMsCi0JCShpbnQpKDggKiBoYXNo LT5tZGxlbikpOwotICByZXR1cm4gZ2NyeV9tcGlfc2NhbiAoaG1waSwgR0NSWU1QSV9GTVRfVVNH LCBodmFsLAotCQkJbmJpdHMgLyA4IDwgKHVuc2lnbmVkKSBoYXNoLT5tZGxlbiA/IG5iaXRzIC8g OAotCQkJOiAodW5zaWduZWQpIGhhc2gtPm1kbGVuLCAwKTsKLX0KLQotc3RhdGljIGludAotcnNh X3BhZCAoZ2NyeV9tcGlfdCAqaG1waSwgZ3J1Yl91aW50OF90ICpodmFsLAotCSBjb25zdCBnY3J5 X21kX3NwZWNfdCAqaGFzaCwgc3RydWN0IGdydWJfcHVibGljX3N1YmtleSAqc2spCi17Ci0gIGdy dWJfc2l6ZV90IHRsZW4sIGVtbGVuLCBmZmxlbjsKLSAgZ3J1Yl91aW50OF90ICplbSwgKmVtcHRy OwotICB1bnNpZ25lZCBuYml0cyA9IGdjcnlfbXBpX2dldF9uYml0cyAoc2stPm1waXNbMF0pOwot ICBpbnQgcmV0OwotICB0bGVuID0gaGFzaC0+bWRsZW4gKyBoYXNoLT5hc25sZW47Ci0gIGVtbGVu ID0gKG5iaXRzICsgNykgLyA4OwotICBpZiAoZW1sZW4gPCB0bGVuICsgMTEpCi0gICAgcmV0dXJu IDE7Ci0KLSAgZW0gPSBncnViX21hbGxvYyAoZW1sZW4pOwotICBpZiAoIWVtKQotICAgIHJldHVy biAxOwotCi0gIGVtWzBdID0gMHgwMDsKLSAgZW1bMV0gPSAweDAxOwotICBmZmxlbiA9IGVtbGVu IC0gdGxlbiAtIDM7Ci0gIGZvciAoZW1wdHIgPSBlbSArIDI7IGVtcHRyIDwgZW0gKyAyICsgZmZs ZW47IGVtcHRyKyspCi0gICAgKmVtcHRyID0gMHhmZjsKLSAgKmVtcHRyKysgPSAweDAwOwotICBn cnViX21lbWNweSAoZW1wdHIsIGhhc2gtPmFzbm9pZCwgaGFzaC0+YXNubGVuKTsKLSAgZW1wdHIg Kz0gaGFzaC0+YXNubGVuOwotICBncnViX21lbWNweSAoZW1wdHIsIGh2YWwsIGhhc2gtPm1kbGVu KTsKLQotICByZXQgPSBnY3J5X21waV9zY2FuIChobXBpLCBHQ1JZTVBJX0ZNVF9VU0csIGVtLCBl bWxlbiwgMCk7Ci0gIGdydWJfZnJlZSAoZW0pOwotICByZXR1cm4gcmV0OwotfQotCiBzdHJ1Y3Qg Z3J1Yl9wdWJrZXlfY29udGV4dAogewogICBncnViX2ZpbGVfdCBzaWc7CkBAIC00ODMsMTUgKzQy NCwxMiBAQCBncnViX3ZlcmlmeV9zaWduYXR1cmVfaW5pdCAoc3RydWN0IGdydWJfcHVia2V5X2Nv bnRleHQgKmN0eHQsIGdydWJfZmlsZV90IHNpZykKICAgaWYgKHQgIT0gMCkKICAgICByZXR1cm4g Z3J1Yl9lcnJvciAoR1JVQl9FUlJfQkFEX1NJR05BVFVSRSwgTl8oImJhZCBzaWduYXR1cmUiKSk7 CiAKLSAgaWYgKGggPj0gQVJSQVlfU0laRSAoaGFzaGVzKSB8fCBoYXNoZXNbaF0gPT0gTlVMTCkK LSAgICByZXR1cm4gZ3J1Yl9lcnJvciAoR1JVQl9FUlJfQkFEX1NJR05BVFVSRSwgInVua25vd24g aGFzaCIpOwotCiAgIGlmIChwayA+PSBBUlJBWV9TSVpFIChwa2FsZ29zKSB8fCBwa2FsZ29zW3Br XS5uYW1lID09IE5VTEwpCiAgICAgcmV0dXJuIGdydWJfZXJyb3IgKEdSVUJfRVJSX0JBRF9TSUdO QVRVUkUsIE5fKCJiYWQgc2lnbmF0dXJlIikpOwogCi0gIGN0eHQtPmhhc2ggPSBncnViX2NyeXB0 b19sb29rdXBfbWRfYnlfbmFtZSAoaGFzaGVzW2hdKTsKKyAgY3R4dC0+aGFzaCA9IGdydWJfY3J5 cHRvX2xvb2t1cF9tZF9ieV9hbGdvIChoKTsKICAgaWYgKCFjdHh0LT5oYXNoKQotICAgIHJldHVy biBncnViX2Vycm9yIChHUlVCX0VSUl9CQURfU0lHTkFUVVJFLCAiaGFzaCBgJXMnIG5vdCBsb2Fk ZWQiLCBoYXNoZXNbaF0pOworICAgIHJldHVybiBncnViX2Vycm9yIChHUlVCX0VSUl9CQURfU0lH TkFUVVJFLCAiaGFzaCBgJWQnIG5vdCBsb2FkZWQiLCBoKTsKIAogICBncnViX2RwcmludGYgKCJj cnlwdCIsICJhbGl2ZVxuIik7CiAKQEAgLTQ5OSw3ICs0MzcsNyBAQCBncnViX3ZlcmlmeV9zaWdu YXR1cmVfaW5pdCAoc3RydWN0IGdydWJfcHVia2V5X2NvbnRleHQgKmN0eHQsIGdydWJfZmlsZV90 IHNpZykKICAgaWYgKCFjdHh0LT5oYXNoX2NvbnRleHQpCiAgICAgcmV0dXJuIGdydWJfZXJybm87 CiAKLSAgY3R4dC0+aGFzaC0+aW5pdCAoY3R4dC0+aGFzaF9jb250ZXh0KTsKKyAgY3R4dC0+aGFz aC0+aW5pdCAoY3R4dC0+aGFzaF9jb250ZXh0LCAwKTsKICAgY3R4dC0+c2lnID0gc2lnOwogCiAg IHJldHVybiBHUlVCX0VSUl9OT05FOwpAQCAtNTI4LDcgKzQ2Niw2IEBAIGdydWJfdmVyaWZ5X3Np Z25hdHVyZV9yZWFsIChzdHJ1Y3QgZ3J1Yl9wdWJrZXlfY29udGV4dCAqY3R4dCwKICAgZ3J1Yl91 aW50MTZfdCB1bmhhc2hlZF9zdWI7CiAgIGdydWJfc3NpemVfdCByOwogICBncnViX3VpbnQ4X3Qg aGFzaF9zdGFydFsyXTsKLSAgZ2NyeV9tcGlfdCBobXBpOwogICBncnViX3VpbnQ2NF90IGtleWlk ID0gMDsKICAgc3RydWN0IGdydWJfcHVibGljX3N1YmtleSAqc2s7CiAKQEAgLTYyMCw3ICs1NTcs NyBAQCBncnViX3ZlcmlmeV9zaWduYXR1cmVfcmVhbCAoc3RydWN0IGdydWJfcHVia2V5X2NvbnRl eHQgKmN0eHQsCiAgICAgICBncnViX21lbWNweSAocmVhZGJ1ZiwgJmwsIHNpemVvZiAobCkpOwog ICAgICAgZ3J1Yl9kcHJpbnRmICgiY3J5cHQiLCAiYWxpdmVcbiIpOwogCi0gICAgICBpZiAoZ2Ny eV9tcGlfc2NhbiAoJm1waXNbaV0sIEdDUllNUElfRk1UX1BHUCwKKyAgICAgIGlmIChfZ2NyeV9t cGlfc2NhbiAoJm1waXNbaV0sIEdDUllNUElfRk1UX1BHUCwKIAkJCSByZWFkYnVmLCBsYiArIHNp emVvZiAoZ3J1Yl91aW50MTZfdCksIDApKQogCWdvdG8gZmFpbDsKICAgICAgIGdydWJfZHByaW50 ZiAoImNyeXB0IiwgImFsaXZlXG4iKTsKQEAgLTYzOCw4ICs1NzUsNiBAQCBncnViX3ZlcmlmeV9z aWduYXR1cmVfcmVhbCAoc3RydWN0IGdydWJfcHVia2V5X2NvbnRleHQgKmN0eHQsCiAgICAgICBn b3RvIGZhaWw7CiAgICAgfQogCi0gIGlmIChwa2FsZ29zW3BrXS5wYWQgKCZobXBpLCBodmFsLCBj dHh0LT5oYXNoLCBzaykpCi0gICAgZ290byBmYWlsOwogICBpZiAoISpwa2FsZ29zW3BrXS5hbGdv KQogICAgIHsKICAgICAgIGdydWJfZGxfbG9hZCAocGthbGdvc1twa10ubW9kdWxlKTsKQEAgLTY1 Miw3ICs1ODcsMjQgQEAgZ3J1Yl92ZXJpZnlfc2lnbmF0dXJlX3JlYWwgKHN0cnVjdCBncnViX3B1 YmtleV9jb250ZXh0ICpjdHh0LAogCQkgIHBrYWxnb3NbcGtdLm1vZHVsZSk7CiAgICAgICBnb3Rv IGZhaWw7CiAgICAgfQotICBpZiAoKCpwa2FsZ29zW3BrXS5hbGdvKS0+dmVyaWZ5ICgwLCBobXBp LCBtcGlzLCBzay0+bXBpcywgMCwgMCkpCisKKyAgZ2NyeV9zZXhwX3QgaHNleHAsIHB1YmtleSwg c2lnOworICBncnViX3NpemVfdCBlcnJvZjsKKworICBpZihfZ2NyeV9zZXhwX2J1aWxkKCZoc2V4 cCwgJmVycm9mLCAiKGRhdGEgKGZsYWdzICVzKSAoaGFzaCAlcyAlYikpIiwgcGthbGdvc1twa10u cGFkZGluZywgY3R4dC0+aGFzaC0+bmFtZSwgY3R4dC0+aGFzaC0+bWRsZW4sIGh2YWwpKQorICAg IGdvdG8gZmFpbDsKKworICBpZihfZ2NyeV9zZXhwX2J1aWxkKCZwdWJrZXksICZlcnJvZiwgcGth bGdvc1twa10ucHVic2V4cCwgc2stPm1waXNbMF0sIHNrLT5tcGlzWzFdLCBzay0+bXBpc1syXSwg c2stPm1waXNbM10pKQorICAgIGdvdG8gZmFpbDsKKworICBpZihfZ2NyeV9zZXhwX2J1aWxkKCZz aWcsICZlcnJvZiwgcGthbGdvc1twa10uc2lnc2V4cCwgbXBpc1swXSwgbXBpc1sxXSkpCisgICAg Z290byBmYWlsOworCisgIF9nY3J5X3NleHBfZHVtcChzaWcpOworICBfZ2NyeV9zZXhwX2R1bXAo aHNleHApOworICBfZ2NyeV9zZXhwX2R1bXAocHVia2V5KTsKKworICBpZiAoKCpwa2FsZ29zW3Br XS5hbGdvKS0+dmVyaWZ5IChzaWcsIGhzZXhwLCBwdWJrZXkpKQogICAgIGdvdG8gZmFpbDsKIAog ICBncnViX2ZyZWUgKHJlYWRidWYpOwpkaWZmIC0tZ2l0IGEvZ3J1Yi1jb3JlL2NvbW1hbmRzL3hu dV91dWlkLmMgYi9ncnViLWNvcmUvY29tbWFuZHMveG51X3V1aWQuYwppbmRleCBhZTRiM2E0MTUu LjE0MDZjNDNmNSAxMDA2NDQKLS0tIGEvZ3J1Yi1jb3JlL2NvbW1hbmRzL3hudV91dWlkLmMKKysr IGIvZ3J1Yi1jb3JlL2NvbW1hbmRzL3hudV91dWlkLmMKQEAgLTY4LDcgKzY4LDcgQEAgZ3J1Yl9j bWRfeG51X3V1aWQgKGdydWJfY29tbWFuZF90IGNtZCBfX2F0dHJpYnV0ZV9fICgodW51c2VkKSks CiAgIGN0eCA9IGdydWJfemFsbG9jIChHUlVCX01EX01ENS0+Y29udGV4dHNpemUpOwogICBpZiAo IWN0eCkKICAgICByZXR1cm4gZ3J1Yl9lcnJubzsKLSAgR1JVQl9NRF9NRDUtPmluaXQgKGN0eCk7 CisgIEdSVUJfTURfTUQ1LT5pbml0IChjdHgsIDApOwogICBHUlVCX01EX01ENS0+d3JpdGUgKGN0 eCwgaGFzaF9wcmVmaXgsIHNpemVvZiAoaGFzaF9wcmVmaXgpKTsKICAgR1JVQl9NRF9NRDUtPndy aXRlIChjdHgsICZzZXJpYWwsIHNpemVvZiAoc2VyaWFsKSk7CiAgIEdSVUJfTURfTUQ1LT5maW5h bCAoY3R4KTsKZGlmZiAtLWdpdCBhL2dydWItY29yZS9kaXNrL2NyeXB0b2Rpc2suYyBiL2dydWIt Y29yZS9kaXNrL2NyeXB0b2Rpc2suYwppbmRleCAyMjQ2YWY1MWIuLjdmZjFjNTMyMiAxMDA2NDQK LS0tIGEvZ3J1Yi1jb3JlL2Rpc2svY3J5cHRvZGlzay5jCisrKyBiL2dydWItY29yZS9kaXNrL2Ny eXB0b2Rpc2suYwpAQCAtMjk2LDcgKzI5Niw3IEBAIGdydWJfY3J5cHRvZGlza19lbmRlY3J5cHQg KHN0cnVjdCBncnViX2NyeXB0b2Rpc2sgKmRldiwKIAkgICAgICByZXR1cm4gR1BHX0VSUl9PVVRf T0ZfTUVNT1JZOwogCiAJICAgIHRtcCA9IGdydWJfY3B1X3RvX2xlNjQgKHNlY3RvciA8PCBsb2df c2VjdG9yX3NpemUpOwotCSAgICBkZXYtPml2X2hhc2gtPmluaXQgKGN0eCk7CisJICAgIGRldi0+ aXZfaGFzaC0+aW5pdCAoY3R4LCAwKTsKIAkgICAgZGV2LT5pdl9oYXNoLT53cml0ZSAoY3R4LCBk ZXYtPml2X3ByZWZpeCwgZGV2LT5pdl9wcmVmaXhfbGVuKTsKIAkgICAgZGV2LT5pdl9oYXNoLT53 cml0ZSAoY3R4LCAmdG1wLCBzaXplb2YgKHRtcCkpOwogCSAgICBkZXYtPml2X2hhc2gtPmZpbmFs IChjdHgpOwpkaWZmIC0tZ2l0IGEvZ3J1Yi1jb3JlL2lvL2d6aW8uYyBiL2dydWItY29yZS9pby9n emlvLmMKaW5kZXggY2E5MzU1NzUxLi4zMGM4NjNlNWIgMTAwNjQ0Ci0tLSBhL2dydWItY29yZS9p by9nemlvLmMKKysrIGIvZ3J1Yi1jb3JlL2lvL2d6aW8uYwpAQCAtMTE4NCw3ICsxMTg0LDcgQEAg aW5pdGlhbGl6ZV90YWJsZXMgKGdydWJfZ3ppb190IGd6aW8pCiAgIGd6aW8tPnRkID0gTlVMTDsK IAogICBpZiAoZ3ppby0+aGNvbnRleHQpCi0gICAgZ3ppby0+aGRlc2MtPmluaXQoZ3ppby0+aGNv bnRleHQpOworICAgIGd6aW8tPmhkZXNjLT5pbml0KGd6aW8tPmhjb250ZXh0LCAwKTsKIH0KIAog CmRpZmYgLS1naXQgYS9ncnViLWNvcmUvaW8vbHpvcGlvLmMgYi9ncnViLWNvcmUvaW8vbHpvcGlv LmMKaW5kZXggYTdkNDQyNTQzLi5jZWE5NDIzMDggMTAwNjQ0Ci0tLSBhL2dydWItY29yZS9pby9s em9waW8uYworKysgYi9ncnViLWNvcmUvaW8vbHpvcGlvLmMKQEAgLTM0NSw3ICszNDUsNyBAQCB0 ZXN0X2hlYWRlciAoZ3J1Yl9maWxlX3QgZmlsZSkKICAgICBpZiAoISBjb250ZXh0KQogICAgICAg cmV0dXJuIDA7CiAKLSAgICBoY2hlY2stPmluaXQoY29udGV4dCk7CisgICAgaGNoZWNrLT5pbml0 KGNvbnRleHQsIDApOwogCiAgICAgLyogTUFHSUMgaXMgbm90IGluY2x1ZGVkIGluIGNoZWNrIGNh bGN1bGF0aW9uLiAgKi8KICAgICBoY2hlY2stPndyaXRlKGNvbnRleHQsICZoZWFkZXIubHpvcF92 ZXJzaW9uLCBzaXplb2YoaGVhZGVyKS0gTFpPUF9NQUdJQ19TSVpFKTsKZGlmZiAtLWdpdCBhL2dy dWItY29yZS9saWIvYWRsZXIzMi5jIGIvZ3J1Yi1jb3JlL2xpYi9hZGxlcjMyLmMKaW5kZXggNDNi NjhhZjYyLi5mODQ5Y2NlZTYgMTAwNjQ0Ci0tLSBhL2dydWItY29yZS9saWIvYWRsZXIzMi5jCisr KyBiL2dydWItY29yZS9saWIvYWRsZXIzMi5jCkBAIC0yOSwxMCArMjksMTIgQEAgc3RydWN0IGFk bGVyMzJfY29udGV4dAogfTsKIAogc3RhdGljIHZvaWQKLWFkbGVyMzJfaW5pdCAodm9pZCAqY29u dGV4dCkKK2FkbGVyMzJfaW5pdCAodm9pZCAqY29udGV4dCwgdW5zaWduZWQgaW50IGZsYWdzKQog ewogICBzdHJ1Y3QgYWRsZXIzMl9jb250ZXh0ICpjdHggPSBjb250ZXh0OwogCisgICh2b2lkKSBm bGFnczsKKwogICBjdHgtPmEgPSAxOwogICBjdHgtPmIgPSAwOwogfQpAQCAtODEsMTMgKzgzLDIy IEBAIGFkbGVyMzJfcmVhZCAodm9pZCAqY29udGV4dCkKIAogc3RhdGljIGdjcnlfbWRfc3BlY190 IHNwZWNfYWRsZXIzMiA9CiAgIHsKLSAgICAiQURMRVIzMiIsIDAsIDAsIDAsIDQsCi0gICAgYWRs ZXIzMl9pbml0LCBhZGxlcjMyX3dyaXRlLCBhZGxlcjMyX2ZpbmFsLCBhZGxlcjMyX3JlYWQsCi0g ICAgc2l6ZW9mIChzdHJ1Y3QgYWRsZXIzMl9jb250ZXh0KSwKKyAgICAuYWxnbyA9IEdDUllfTURf QURMRVIzMiwKKyAgICAuZmxhZ3MgPSB7LmRpc2FibGVkID0gMCwgLmZpcHMgPSAwfSwKKyAgICAu bmFtZSA9ICJBRExFUjMyIiwKKyAgICAuYXNub2lkID0gTlVMTCwKKyAgICAuYXNubGVuID0gMCwK KyAgICAub2lkcyA9IE5VTEwsCisgICAgLm1kbGVuID0gNCwKKyAgICAuaW5pdCA9IGFkbGVyMzJf aW5pdCwKKyAgICAud3JpdGUgPSBhZGxlcjMyX3dyaXRlLAorICAgIC5maW5hbCA9IGFkbGVyMzJf ZmluYWwsCisgICAgLnJlYWQgPSBhZGxlcjMyX3JlYWQsCisgICAgLmNvbnRleHRzaXplID0gc2l6 ZW9mIChzdHJ1Y3QgYWRsZXIzMl9jb250ZXh0KSwKKyAgICAuYmxvY2tzaXplID0gNjQsCiAjaWZk ZWYgR1JVQl9VVElMCiAgICAgLm1vZG5hbWUgPSAiYWRsZXIzMiIsCiAjZW5kaWYKLSAgICAuYmxv Y2tzaXplID0gNjQKICAgfTsKIAogCmRpZmYgLS1naXQgYS9ncnViLWNvcmUvbGliL2I2NGRlYy5j IGIvZ3J1Yi1jb3JlL2xpYi9iNjRkZWMuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw MDAwMDAuLjhhYWZhOTcwMAotLS0gL2Rldi9udWxsCisrKyBiL2dydWItY29yZS9saWIvYjY0ZGVj LmMKQEAgLTAsMCArMSwyOTMgQEAKKy8qIGI2NGRlYy5jIC0gU2ltcGxlIEJhc2U2NCBkZWNvZGVy LgorICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDExIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwg SW5jLgorICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDExLCAyMDE2IGcxMCBDb2RlIEdtYkgKKyAq CisgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBMaWJncGctZXJyb3IuCisgKgorICogVGhpcyBmaWxl IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkK KyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlIGFzCisgKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsg ZWl0aGVyIHZlcnNpb24gMi4xIG9mCisgKiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9u KSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgaW4g dGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJS QU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFC SUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBH TlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisg KiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVy YWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHNl ZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorICogU1BEWC1MaWNlbnNlLUlkZW50 aWZpZXI6IExHUEwtMi4xLW9yLWxhdGVyCisgKgorICogVGhpcyBmaWxlIHdhcyBvcmlnaW5hbGx5 IGEgcGFydCBvZiBHbnVQRy4KKyAqLworCisjaW5jbHVkZSA8Y29uZmlnLmg+CisjaW5jbHVkZSA8 c3RkaW8uaD4KKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKworI2lu Y2x1ZGUgPGdydWIvY3J5cHRvLmg+CisKK3N0cnVjdCBfZ3BncnRfYjY0c3RhdGUKK3sKKyAgaW50 IGlkeDsKKyAgaW50IHF1YWRfY291bnQ7CisgIGNoYXIgKnRpdGxlOworICB1bnNpZ25lZCBjaGFy IHJhZGJ1Zls0XTsKKyAgdW5zaWduZWQgaW50IGNyYzsKKyAgZ3BnX2Vycl9jb2RlX3QgbGFzdGVy cjsKKyAgdW5zaWduZWQgaW50IGZsYWdzOworICB1bnNpZ25lZCBpbnQgc3RvcF9zZWVuOjE7Cisg IHVuc2lnbmVkIGludCBpbnZhbGlkX2VuY29kaW5nOjE7CisgIHVuc2lnbmVkIGludCB1c2luZ19k ZWNvZGVyOjE7Cit9OworCisKKy8qIFRoZSByZXZlcnNlIGJhc2UtNjQgbGlzdCB1c2VkIGZvciBi YXNlLTY0IGRlY29kaW5nLiAqLworc3RhdGljIHVuc2lnbmVkIGNoYXIgY29uc3QgYXNjdG9iaW5b MTI4XSA9CisgIHsKKyAgICAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZm LCAweGZmLAorICAgIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4 ZmYsCisgICAgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwK KyAgICAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmLAorICAg IDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsCisgICAgMHhm ZiwgMHhmZiwgMHhmZiwgMHgzZSwgMHhmZiwgMHhmZiwgMHhmZiwgMHgzZiwKKyAgICAweDM0LCAw eDM1LCAweDM2LCAweDM3LCAweDM4LCAweDM5LCAweDNhLCAweDNiLAorICAgIDB4M2MsIDB4M2Qs IDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsCisgICAgMHhmZiwgMHgwMCwgMHgw MSwgMHgwMiwgMHgwMywgMHgwNCwgMHgwNSwgMHgwNiwKKyAgICAweDA3LCAweDA4LCAweDA5LCAw eDBhLCAweDBiLCAweDBjLCAweDBkLCAweDBlLAorICAgIDB4MGYsIDB4MTAsIDB4MTEsIDB4MTIs IDB4MTMsIDB4MTQsIDB4MTUsIDB4MTYsCisgICAgMHgxNywgMHgxOCwgMHgxOSwgMHhmZiwgMHhm ZiwgMHhmZiwgMHhmZiwgMHhmZiwKKyAgICAweGZmLCAweDFhLCAweDFiLCAweDFjLCAweDFkLCAw eDFlLCAweDFmLCAweDIwLAorICAgIDB4MjEsIDB4MjIsIDB4MjMsIDB4MjQsIDB4MjUsIDB4MjYs IDB4MjcsIDB4MjgsCisgICAgMHgyOSwgMHgyYSwgMHgyYiwgMHgyYywgMHgyZCwgMHgyZSwgMHgy ZiwgMHgzMCwKKyAgICAweDMxLCAweDMyLCAweDMzLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAw eGZmCisgIH07CisKK2VudW0gZGVjb2Rlcl9zdGF0ZXMKKyAgeworICAgIHNfaW5pdCwgc19pZGxl LCBzX2xmc2Vlbiwgc19iZWdpbnNlZW4sIHNfd2FpdGhlYWRlciwgc193YWl0YmxhbmssIHNfYmVn aW4sCisgICAgc19iNjRfMCwgc19iNjRfMSwgc19iNjRfMiwgc19iNjRfMywKKyAgICBzX3dhaXRl bmR0aXRsZSwgc193YWl0ZW5kCisgIH07CisKKworCisvKiBBbGxvY2F0ZSBhbmQgaW5pdGlhbGl6 ZSB0aGUgY29udGV4dCBmb3IgdGhlIGJhc2U2NCBkZWNvZGVyLiAgSWYKKyAgIFRJVExFIGlzIE5V TEwgYSBwbGFpbiBiYXNlNjQgZGVjb2RpbmcgaXMgZG9uZS4gIElmIGl0IGlzIHRoZSBlbXB0eQor ICAgc3RyaW5nIHRoZSBkZWNvZGVyIHdpbGwgc2tpcCBldmVyeXRoaW5nIHVudGlsIGEgIi0tLS0t QkVHSU4gIiBsaW5lCisgICBoYXMgYmVlbiBzZWVuLCBkZWNvZGluZyBlbmRzIGF0IGEgIi0tLS1F TkQgIiBsaW5lLiAgKi8KK2dwZ3J0X2I2NHN0YXRlX3QKK2dwZ3J0X2I2NGRlY19zdGFydCAoY29u c3QgY2hhciAqdGl0bGUpCit7CisgIGdwZ3J0X2I2NHN0YXRlX3Qgc3RhdGU7CisgIGNoYXIgKnQg PSBOVUxMOworCisgIGlmICh0aXRsZSkKKyAgICB7CisgICAgICB0ID0gZ3J1Yl9zdHJkdXAgKHRp dGxlKTsKKyAgICAgIGlmICghdCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgIHN0 YXRlID0gZ3J1Yl9jYWxsb2MgKDEsIHNpemVvZiAoc3RydWN0IF9ncGdydF9iNjRzdGF0ZSkpOwor ICBpZiAoIXN0YXRlKQorICAgIHsKKyAgICAgIGdydWJfZnJlZSAodCk7CisgICAgICByZXR1cm4g TlVMTDsKKyAgICB9CisKKyAgaWYgKHQpCisgICAgeworICAgICAgc3RhdGUtPnRpdGxlID0gdDsK KyAgICAgIHN0YXRlLT5pZHggPSBzX2luaXQ7CisgICAgfQorICBlbHNlCisgICAgc3RhdGUtPmlk eCA9IHNfYjY0XzA7CisKKyAgc3RhdGUtPnVzaW5nX2RlY29kZXIgPSAxOworCisgIHJldHVybiBz dGF0ZTsKK30KKworCisvKiBEbyBpbi1wbGFjZSBkZWNvZGluZyBvZiBiYXNlLTY0IGRhdGEgb2Yg TEVOR1RIIGluIEJVRkZFUi4gIFN0b3JlcyB0aGUKKyAgIG5ldyBsZW5ndGggb2YgdGhlIGJ1ZmZl ciBhdCBSX05CWVRFUy4gKi8KK2dwZ19lcnJfY29kZV90CitncGdydF9iNjRkZWNfcHJvYyAoZ3Bn cnRfYjY0c3RhdGVfdCBzdGF0ZSwgdm9pZCAqYnVmZmVyLCBzaXplX3QgbGVuZ3RoLAorICAgICAg ICAgICAgICAgICAgICBzaXplX3QgKnJfbmJ5dGVzKQoreworICBlbnVtIGRlY29kZXJfc3RhdGVz IGRzID0gc3RhdGUtPmlkeDsKKyAgdW5zaWduZWQgY2hhciB2YWwgPSBzdGF0ZS0+cmFkYnVmWzBd OworICBpbnQgcG9zID0gc3RhdGUtPnF1YWRfY291bnQ7CisgIGNoYXIgKmQsICpzOworCisgIGlm IChzdGF0ZS0+bGFzdGVycikKKyAgICByZXR1cm4gc3RhdGUtPmxhc3RlcnI7CisKKyAgaWYgKHN0 YXRlLT5zdG9wX3NlZW4pCisgICAgeworICAgICAgKnJfbmJ5dGVzID0gMDsKKyAgICAgIHN0YXRl LT5sYXN0ZXJyID0gR1BHX0VSUl9FT0Y7CisgICAgICBncnViX2ZyZWUgKHN0YXRlLT50aXRsZSk7 CisgICAgICBzdGF0ZS0+dGl0bGUgPSBOVUxMOworICAgICAgcmV0dXJuIHN0YXRlLT5sYXN0ZXJy OworICAgIH0KKworICBmb3IgKHM9ZD1idWZmZXI7IGxlbmd0aCAmJiAhc3RhdGUtPnN0b3Bfc2Vl bjsgbGVuZ3RoLS0sIHMrKykKKyAgICB7CisgICAgYWdhaW46CisgICAgICBzd2l0Y2ggKGRzKQor ICAgICAgICB7CisgICAgICAgIGNhc2Ugc19pZGxlOgorICAgICAgICAgIGlmICgqcyA9PSAnXG4n KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICBkcyA9IHNfbGZzZWVuOworICAgICAgICAg ICAgICBwb3MgPSAwOworICAgICAgICAgICAgfQorICAgICAgICAgIGJyZWFrOworICAgICAgICBj YXNlIHNfaW5pdDoKKyAgICAgICAgICBkcyA9IHNfbGZzZWVuOworICAgICAgICAgIC8qIEZhbGwg dGhyb3VnaCAqLworICAgICAgICBjYXNlIHNfbGZzZWVuOgorICAgICAgICAgIGlmICgqcyAhPSAi LS0tLS1CRUdJTiAiW3Bvc10pCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgIGRzID0gc19p ZGxlOworICAgICAgICAgICAgICBnb3RvIGFnYWluOworICAgICAgICAgICAgfQorICAgICAgICAg IGVsc2UgaWYgKHBvcyA9PSAxMCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgcG9zID0g MDsKKyAgICAgICAgICAgICAgZHMgPSBzX2JlZ2luc2VlbjsKKyAgICAgICAgICAgIH0KKyAgICAg ICAgICBlbHNlCisgICAgICAgICAgICBwb3MrKzsKKyAgICAgICAgICBicmVhazsKKyAgICAgICAg Y2FzZSBzX2JlZ2luc2VlbjoKKyAgICAgICAgICBpZiAoKnMgIT0gIlBHUCAiW3Bvc10pCisgICAg ICAgICAgICBkcyA9IHNfYmVnaW47IC8qIE5vdCBhIFBHUCBhcm1vci4gICovCisgICAgICAgICAg ZWxzZSBpZiAocG9zID09IDMpCisgICAgICAgICAgICBkcyA9IHNfd2FpdGhlYWRlcjsKKyAgICAg ICAgICBlbHNlCisgICAgICAgICAgICBwb3MrKzsKKyAgICAgICAgICBicmVhazsKKyAgICAgICAg Y2FzZSBzX3dhaXRoZWFkZXI6CisgICAgICAgICAgaWYgKCpzID09ICdcbicpCisgICAgICAgICAg ICBkcyA9IHNfd2FpdGJsYW5rOworICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIHNfd2Fp dGJsYW5rOgorICAgICAgICAgIGlmICgqcyA9PSAnXG4nKQorICAgICAgICAgICAgZHMgPSBzX2I2 NF8wOyAvKiBibGFuayBsaW5lIGZvdW5kLiAgKi8KKyAgICAgICAgICBlbHNlIGlmICgqcyA9PSAn ICcgfHwgKnMgPT0gJ1xyJyB8fCAqcyA9PSAnXHQnKQorICAgICAgICAgICAgOyAvKiBJZ25vcmUg c3BhY2VzLiAqLworICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg LyogQXJtb3IgaGVhZGVyIGxpbmUuICBOb3RlIHRoYXQgd2UgZG9uJ3QgY2FyZSB0aGF0IG91cgor ICAgICAgICAgICAgICAgKiBGU00gYWNjZXB0cyBhIGhlYWRlciBwcmVmaXhlZCB3aXRoIHNwYWNl cy4gICovCisgICAgICAgICAgICAgIGRzID0gc193YWl0aGVhZGVyOyAvKiBXYWl0IGZvciBuZXh0 IGhlYWRlci4gICovCisgICAgICAgICAgICB9CisgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNh c2Ugc19iZWdpbjoKKyAgICAgICAgICBpZiAoKnMgPT0gJ1xuJykKKyAgICAgICAgICAgIGRzID0g c19iNjRfMDsKKyAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBzX2I2NF8wOgorICAgICAg ICBjYXNlIHNfYjY0XzE6CisgICAgICAgIGNhc2Ugc19iNjRfMjoKKyAgICAgICAgY2FzZSBzX2I2 NF8zOgorICAgICAgICAgIHsKKyAgICAgICAgICAgIGludCBjOworCisgICAgICAgICAgICBpZiAo KnMgPT0gJy0nICYmIHN0YXRlLT50aXRsZSkKKyAgICAgICAgICAgICAgeworICAgICAgICAgICAg ICAgIC8qIE5vdCBhIHZhbGlkIEJhc2U2NCBjaGFyYWN0ZXI6IGFzc3VtZSBlbmQKKyAgICAgICAg ICAgICAgICAgICBoZWFkZXIuICAqLworICAgICAgICAgICAgICAgIGRzID0gc193YWl0ZW5kOwor ICAgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIGlmICgqcyA9PSAnPScpCisgICAgICAg ICAgICAgIHsKKyAgICAgICAgICAgICAgICAvKiBQYWQgY2hhcmFjdGVyOiBzdG9wICovCisgICAg ICAgICAgICAgICAgaWYgKGRzID09IHNfYjY0XzEpCisgICAgICAgICAgICAgICAgICAqZCsrID0g dmFsOworICAgICAgICAgICAgICAgIGRzID0gc3RhdGUtPnRpdGxlPyBzX3dhaXRlbmR0aXRsZSA6 IHNfd2FpdGVuZDsKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSBpZiAoKnMgPT0g J1xuJyB8fCAqcyA9PSAnICcgfHwgKnMgPT0gJ1xyJyB8fCAqcyA9PSAnXHQnKQorICAgICAgICAg ICAgICA7IC8qIFNraXAgd2hpdGUgc3BhY2VzLiAqLworICAgICAgICAgICAgZWxzZSBpZiAoICgq cyAmIDB4ODApCisgICAgICAgICAgICAgICAgICAgICAgfHwgKGMgPSBhc2N0b2JpblsqKHVuc2ln bmVkIGNoYXIgKilzXSkgPT0gMjU1KQorICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg LyogU2tpcCBpbnZhbGlkIGVuY29kaW5ncy4gICovCisgICAgICAgICAgICAgICAgc3RhdGUtPmlu dmFsaWRfZW5jb2RpbmcgPSAxOworICAgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIGlm IChkcyA9PSBzX2I2NF8wKQorICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgdmFsID0g YyA8PCAyOworICAgICAgICAgICAgICAgIGRzID0gc19iNjRfMTsKKyAgICAgICAgICAgICAgfQor ICAgICAgICAgICAgZWxzZSBpZiAoZHMgPT0gc19iNjRfMSkKKyAgICAgICAgICAgICAgeworICAg ICAgICAgICAgICAgIHZhbCB8PSAoYz4+NCkmMzsKKyAgICAgICAgICAgICAgICAqZCsrID0gdmFs OworICAgICAgICAgICAgICAgIHZhbCA9IChjPDw0KSYweGYwOworICAgICAgICAgICAgICAgIGRz ID0gc19iNjRfMjsKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSBpZiAoZHMgPT0g c19iNjRfMikKKyAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHZhbCB8PSAoYz4+Mikm MTU7CisgICAgICAgICAgICAgICAgKmQrKyA9IHZhbDsKKyAgICAgICAgICAgICAgICB2YWwgPSAo Yzw8NikmMHhjMDsKKyAgICAgICAgICAgICAgICBkcyA9IHNfYjY0XzM7CisgICAgICAgICAgICAg IH0KKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHZh bCB8PSBjJjB4M2Y7CisgICAgICAgICAgICAgICAgKmQrKyA9IHZhbDsKKyAgICAgICAgICAgICAg ICBkcyA9IHNfYjY0XzA7CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgICAg YnJlYWs7CisgICAgICAgIGNhc2Ugc193YWl0ZW5kdGl0bGU6CisgICAgICAgICAgaWYgKCpzID09 ICctJykKKyAgICAgICAgICAgIGRzID0gc193YWl0ZW5kOworICAgICAgICAgIGJyZWFrOworICAg ICAgICBjYXNlIHNfd2FpdGVuZDoKKyAgICAgICAgICBpZiAoICpzID09ICdcbicpCisgICAgICAg ICAgICBzdGF0ZS0+c3RvcF9zZWVuID0gMTsKKyAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVm YXVsdDoKKyAgICAgICAgICBncnViX2ZhdGFsICgiaW52YWxpZCBzdGF0ZSIpOworICAgICAgICB9 CisgICAgfQorCisKKyAgc3RhdGUtPmlkeCA9IGRzOworICBzdGF0ZS0+cmFkYnVmWzBdID0gdmFs OworICBzdGF0ZS0+cXVhZF9jb3VudCA9IHBvczsKKyAgKnJfbmJ5dGVzID0gKGQgLShjaGFyKikg YnVmZmVyKTsKKyAgcmV0dXJuIDA7Cit9CisKKworLyogUmV0dXJuIGFuIGVycm9yIGNvZGUgaW4g Y2FzZSBhbiBlbmNvZGluZyBlcnJvciBoYXMgYmVlbiBmb3VuZAorICAgZHVyaW5nIGRlY29kaW5n LiAqLworZ3BnX2Vycl9jb2RlX3QKK2dwZ3J0X2I2NGRlY19maW5pc2ggKGdwZ3J0X2I2NHN0YXRl X3Qgc3RhdGUpCit7CisgIGdwZ19lcnJvcl90IGVycjsKKworICBpZiAoIXN0YXRlKQorICAgIHJl dHVybiAwOyAgLyogQWxyZWFkeSByZWxlYXNlZC4gICovCisKKyAgaWYgKCFzdGF0ZS0+dXNpbmdf ZGVjb2RlcikKKyAgICBlcnIgPSBHUEdfRVJSX0NPTkZMSUNUOyAgLyogU3RhdGUgd2FzIGFsbG9j YXRlZCBmb3IgdGhlIGVuY29kZXIuICAqLworICBlbHNlIGlmIChzdGF0ZS0+bGFzdGVycikKKyAg ICBlcnIgPSBzdGF0ZS0+bGFzdGVycjsKKyAgZWxzZQorICAgIHsKKyAgICAgIGdydWJfZnJlZSAo c3RhdGUtPnRpdGxlKTsKKyAgICAgIGVyciA9IHN0YXRlLT5pbnZhbGlkX2VuY29kaW5nPyBHUEdf RVJSX0JBRF9EQVRBIDogMDsKKyAgICB9CisgIGdydWJfZnJlZSAoc3RhdGUpOworCisgIHJldHVy biBlcnI7Cit9CmRpZmYgLS1naXQgYS9ncnViLWNvcmUvbGliL2NyYzY0LmMgYi9ncnViLWNvcmUv bGliL2NyYzY0LmMKaW5kZXggNDk2MGYzZjg5Li5jMjMxZmE5N2MgMTAwNjQ0Ci0tLSBhL2dydWIt Y29yZS9saWIvY3JjNjQuYworKysgYi9ncnViLWNvcmUvbGliL2NyYzY0LmMKQEAgLTYxLDggKzYx LDEwIEBAIGluaXRfY3JjNjRfdGFibGUgKHZvaWQpCiB9CiAKIHN0YXRpYyB2b2lkCi1jcmM2NF9p bml0ICh2b2lkICpjb250ZXh0KQorY3JjNjRfaW5pdCAodm9pZCAqY29udGV4dCwgdW5zaWduZWQg aW50IGZsYWdzKQogeworICAodm9pZCkgZmxhZ3M7CisKICAgaWYgKCEgY3JjNjRfdGFibGVbMV0p CiAgICAgaW5pdF9jcmM2NF90YWJsZSAoKTsKICAgKihncnViX3VpbnQ2NF90ICopIGNvbnRleHQg PSAwOwpAQCAtOTcsMTAgKzk5LDIyIEBAIGNyYzY0X2ZpbmFsICh2b2lkICpjb250ZXh0IF9fYXR0 cmlidXRlX18gKCh1bnVzZWQpKSkKIAogZ2NyeV9tZF9zcGVjX3QgX2djcnlfZGlnZXN0X3NwZWNf Y3JjNjQgPQogICB7Ci0gICAgIkNSQzY0IiwgMCwgMCwgMCwgOCwKLSAgICBjcmM2NF9pbml0LCBj cmM2NF93cml0ZSwgY3JjNjRfZmluYWwsIGNyYzY0X3JlYWQsCi0gICAgc2l6ZW9mIChncnViX3Vp bnQ2NF90KSwKLSAgICAuYmxvY2tzaXplID0gNjQKKyAgICAuYWxnbyA9IEdDUllfTURfQ1JDNjQs CisgICAgLmZsYWdzID0gey5kaXNhYmxlZCA9IDAsIC5maXBzID0gMH0sCisgICAgLm5hbWUgPSAi Q1JDNjQiLAorICAgIC5hc25vaWQgPSBOVUxMLAorICAgIC5hc25sZW4gPSAwLAorICAgIC5vaWRz ID0gTlVMTCwKKyAgICAubWRsZW4gPSA4LAorICAgIC5pbml0ID0gY3JjNjRfaW5pdCwKKyAgICAu d3JpdGUgPSBjcmM2NF93cml0ZSwKKyAgICAuZmluYWwgPSBjcmM2NF9maW5hbCwKKyAgICAucmVh ZCA9IGNyYzY0X3JlYWQsCisgICAgLmNvbnRleHRzaXplID0gc2l6ZW9mIChncnViX3VpbnQ2NF90 KSwKKyAgICAuYmxvY2tzaXplID0gNjQsCisjaWZkZWYgR1JVQl9VVElMCisgICAgLm1vZG5hbWUg PSAiY3JjNjQiLAorI2VuZGlmCiAgIH07CiAKIEdSVUJfTU9EX0lOSVQoY3JjNjQpCmRpZmYgLS1n aXQgYS9ncnViLWNvcmUvbGliL2NyeXB0by5jIGIvZ3J1Yi1jb3JlL2xpYi9jcnlwdG8uYwppbmRl eCAzOTZmNzY0MTAuLmRkNjBkZDRhYyAxMDA2NDQKLS0tIGEvZ3J1Yi1jb3JlL2xpYi9jcnlwdG8u YworKysgYi9ncnViLWNvcmUvbGliL2NyeXB0by5jCkBAIC0zNyw2ICszNyw4IEBAIHN0cnVjdCBn cnViX2NyeXB0b19obWFjX2hhbmRsZQogc3RhdGljIGdjcnlfY2lwaGVyX3NwZWNfdCAqZ3J1Yl9j aXBoZXJzID0gTlVMTDsKIHN0YXRpYyBnY3J5X21kX3NwZWNfdCAqZ3J1Yl9kaWdlc3RzID0gTlVM TDsKIAoraW50IF9nY3J5X25vX2ZpcHNfbW9kZV9yZXF1aXJlZCA9IDE7CisKIHZvaWQgKCpncnVi X2NyeXB0b19hdXRvbG9hZF9ob29rKSAoY29uc3QgY2hhciAqbmFtZSkgPSBOVUxMOwogCiAvKiBC YXNlZCBvbiBsaWJnY3J5cHQtMS40LjQvc3JjL21pc2MuYy4gICovCkBAIC01Niw2ICs1OCwxNyBA QCBfZ2NyeV9idXJuX3N0YWNrIChpbnQgc2l6ZSkKICAgZ3J1Yl9idXJuX3N0YWNrIChzaXplKTsK IH0KIAordm9pZAorX19nY3J5X2J1cm5fc3RhY2sgKHVuc2lnbmVkIGludCBzaXplKQoreworICBn cnViX2J1cm5fc3RhY2sgKHNpemUpOworfQorCit2b2lkCitfX2djcnlfYnVybl9zdGFja19kdW1t eSAodm9pZCkKK3sKK30KKwogdm9pZCBfX2F0dHJpYnV0ZV9fICgobm9yZXR1cm4pKQogX2djcnlf YXNzZXJ0X2ZhaWxlZCAoY29uc3QgY2hhciAqZXhwciwgY29uc3QgY2hhciAqZmlsZSwgaW50IGxp bmUsCiAJCSAgICAgY29uc3QgY2hhciAqZnVuYykKQEAgLTY0LDYgKzc3LDEyIEBAIF9nY3J5X2Fz c2VydF9mYWlsZWQgKGNvbnN0IGNoYXIgKmV4cHIsIGNvbnN0IGNoYXIgKmZpbGUsIGludCBsaW5l LAogICBncnViX2ZhdGFsICgiYXNzZXJ0aW9uICVzIGF0ICVzOiVkICglcykgZmFpbGVkXG4iLCBl eHByLCBmaWxlLCBsaW5lLCBmdW5jKTsKIH0KIAordm9pZAorX2djcnlfYnVnKCBjb25zdCBjaGFy ICpmaWxlLCBpbnQgbGluZSwgY29uc3QgY2hhciAqZnVuYyApCit7CisgICAgZ3J1Yl9mYXRhbCAo Ii4uLiB0aGlzIGlzIGEgYnVnICglczolZDolcylcbiIsIGZpbGUsIGxpbmUsIGZ1bmMpOworfQor CiAKIHZvaWQgX2djcnlfbG9nX2Vycm9yIChjb25zdCBjaGFyICpmbXQsIC4uLikKIHsKQEAgLTgz LDYgKzEwMiwzNiBAQCB2b2lkIF9nY3J5X2xvZ19lcnJvciAoY29uc3QgY2hhciAqZm10LCAuLi4p CiAgICAgfQogfQogCit2b2lkIF9nY3J5X2xvZ19pbmZvIChjb25zdCBjaGFyICpmbXQsIC4uLikK K3sKKyAgdmFfbGlzdCBhcmdzOworICBjb25zdCBjaGFyICpkZWJ1ZyA9IGdydWJfZW52X2dldCAo ImRlYnVnIik7CisKKyAgaWYgKCEgZGVidWcpCisgICAgcmV0dXJuOworCisgIGlmIChncnViX3N0 cndvcmQgKGRlYnVnLCAiYWxsIikgfHwgZ3J1Yl9zdHJ3b3JkIChkZWJ1ZywgImdjcnlwdCIpKQor ICAgIHsKKyAgICAgIGdydWJfcHJpbnRmICgiZ2NyeXB0IGluZm86ICIpOworICAgICAgdmFfc3Rh cnQgKGFyZ3MsIGZtdCk7CisgICAgICBncnViX3ZwcmludGYgKGZtdCwgYXJncyk7CisgICAgICB2 YV9lbmQgKGFyZ3MpOworICAgICAgZ3J1Yl9yZWZyZXNoICgpOworICAgIH0KK30KKwordm9pZAor X2djcnlfZmFzdF93aXBlbWVtb3J5MiAodm9pZCAqcHRyLCBpbnQgc2V0LCBncnViX3NpemVfdCBs ZW4pCit7CisgIGdydWJfbWVtc2V0KHB0ciwgc2V0LCBsZW4pOworfQorCit2b2lkCitfZ2NyeV9m YXN0X3dpcGVtZW1vcnkgKHZvaWQgKnB0ciwgZ3J1Yl9zaXplX3QgbGVuKQoreworICBncnViX21l bXNldChwdHIsIDAsIGxlbik7Cit9CisKIHZvaWQKIGdydWJfY2lwaGVyX3JlZ2lzdGVyIChnY3J5 X2NpcGhlcl9zcGVjX3QgKmNpcGhlcikKIHsKQEAgLTEyOSw3ICsxNzgsNyBAQCBncnViX2NyeXB0 b19oYXNoIChjb25zdCBnY3J5X21kX3NwZWNfdCAqaGFzaCwgdm9pZCAqb3V0LCBjb25zdCB2b2lk ICppbiwKIAogICBpZiAoaGFzaC0+Y29udGV4dHNpemUgPiBzaXplb2YgKGN0eCkpCiAgICAgZ3J1 Yl9mYXRhbCAoIlRvbyBsYXJnZSBtZCBjb250ZXh0Iik7Ci0gIGhhc2gtPmluaXQgKCZjdHgpOwor ICBoYXNoLT5pbml0ICgmY3R4LCAwKTsKICAgaGFzaC0+d3JpdGUgKCZjdHgsIGluLCBpbmxlbik7 CiAgIGhhc2gtPmZpbmFsICgmY3R4KTsKICAgZ3J1Yl9tZW1jcHkgKG91dCwgaGFzaC0+cmVhZCAo JmN0eCksIGhhc2gtPm1kbGVuKTsKQEAgLTE1Myw2ICsyMDIsOTEgQEAgZ3J1Yl9jcnlwdG9fbG9v a3VwX21kX2J5X25hbWUgKGNvbnN0IGNoYXIgKm5hbWUpCiAgICAgfQogfQogCitjb25zdCBnY3J5 X21kX3NwZWNfdCAqCitncnViX2NyeXB0b19sb29rdXBfbWRfYnlfb2lkIChjb25zdCBjaGFyICpv aWQpCit7CisgIGNvbnN0IGdjcnlfbWRfc3BlY190ICptZDsKKworICBpZiAoIW9pZCkKKyAgICBy ZXR1cm4gTlVMTDsKKworICBpZiAoZ3J1Yl9zdHJuY21wIChvaWQsICJvaWQuIiwgNCkgPT0gMCB8 fCBncnViX3N0cm5jbXAgKG9pZCwgIk9JRC4iLCA0KSA9PSAwKQorICAgIG9pZCArPSA0OworCisK KyAgZm9yIChtZCA9IGdydWJfZGlnZXN0czsgbWQ7IG1kID0gbWQtPm5leHQpCisgICAgeworICAg ICAgY29uc3QgZ2NyeV9tZF9vaWRfc3BlY190ICpvaWRfc3BlY3MgPSBtZC0+b2lkczsKKyAgICAg IGlmIChvaWRfc3BlY3MpCisgICAgICAgIHsKKyAgICAgICAgICBmb3IgKGludCBqID0gMDsgb2lk X3NwZWNzW2pdLm9pZHN0cmluZzsgaisrKQorICAgICAgICAgICAgaWYgKGdydWJfc3RyY2FzZWNt cCAob2lkLCBvaWRfc3BlY3Nbal0ub2lkc3RyaW5nKSA9PSAwKQorICAgICAgICAgICAgICByZXR1 cm4gbWQ7CisgICAgICAgIH0KKyAgICB9CisKKyAgcmV0dXJuIE5VTEw7Cit9CisKK3N0YXRpYyBj b25zdCBjaGFyICptZF9hbGdvc1tdID0geworICAgIFsxXSA9ICJNRDUiLAorICAgIFsyXSA9ICJT SEExIiwKKyAgICBbM10gPSAiUklQRU1EMTYwIiwKKyAgICBbNl0gPSAiVElHRVIiLAorICAgIFs4 XSA9ICJTSEEyNTYiLAorICAgIFs5XSA9ICJTSEEzODQiLAorICAgIFsxMF0gPSAiU0hBNTEyIiwK KyAgICBbMTFdID0gIlNIQTIyNCIsCisKKyAgICBbMzAxXSA9ICJNRDQiLAorICAgIFszMDJdID0g IkNSQzMyIiwKKyAgICBbMzAzXSA9ICJDUkMzMlJGQzE1MTAiLAorICAgIFszMDRdID0gIkNSQzI0 UkZDMjQ0MCIsCisgICAgWzMwNV0gPSAiV0hJUkxQT09MIiwKKyAgICBbMzA2XSA9ICJUSUdFUjEi LAorICAgIFszMDddID0gIlRJR0VSMiIsCisgICAgWzMwOF0gPSAiR09TVFIzNDExXzk0IiwKKyAg ICBbMzA5XSA9ICJTVFJJQk9HMjU2IiwKKyAgICBbMzEwXSA9ICJTVFJJQk9HNTEyIiwKKyAgICBb MzExXSA9ICJHT1NUUjM0MTFfQ1AiLAorICAgIFszMTJdID0gIlNIQTMtMjI0IiwKKyAgICBbMzEz XSA9ICJTSEEzLTI1NiIsCisgICAgWzMxNF0gPSAiU0hBMy0zODQiLAorICAgIFszMTVdID0gIlNI QTMtNTEyIiwKKyAgICBbMzE2XSA9ICJTSEFLRTEyOCIsCisgICAgWzMxN10gPSAiU0hBS0UyNTYi LAorICAgIFszMThdID0gIkJMQUtFMkJfNTEyIiwKKyAgICBbMzE5XSA9ICJCTEFLRTJCXzM4NCIs CisgICAgWzMyMF0gPSAiQkxBS0UyQl8yNTYiLAorICAgIFszMjFdID0gIkJMQUtFMkJfMTYwIiwK KyAgICBbMzIyXSA9ICJCTEFLRTJTXzI1NiIsCisgICAgWzMyM10gPSAiQkxBS0UyU18yMjQiLAor ICAgIFszMjRdID0gIkJMQUtFMlNfMTYwIiwKKyAgICBbMzI1XSA9ICJCTEFLRTJTXzEyOCIsCisg ICAgWzMyNl0gPSAiU00zIiwKKyAgICBbMzI3XSA9ICJTSEE1MTJfMjU2IiwKKyAgICBbMzI4XSA9 ICJTSEE1MTJfMjI0IiwKK307CisKKworY29uc3QgZ2NyeV9tZF9zcGVjX3QgKgorZ3J1Yl9jcnlw dG9fbG9va3VwX21kX2J5X2FsZ28gKGludCBhbGdvKQoreworICBjb25zdCBnY3J5X21kX3NwZWNf dCAqbWQ7CisgIGludCBmaXJzdCA9IDE7CisgIHdoaWxlICgxKQorICAgIHsKKyAgICAgIGZvciAo bWQgPSBncnViX2RpZ2VzdHM7IG1kOyBtZCA9IG1kLT5uZXh0KQorCWlmIChhbGdvID09IG1kLT5h bGdvKQorCSAgcmV0dXJuIG1kOworICAgICAgaWYgKGdydWJfY3J5cHRvX2F1dG9sb2FkX2hvb2sg JiYgZmlyc3QgJiYgYWxnbyA+IDAgJiYgYWxnbyA8IChpbnQpQVJSQVlfU0laRShtZF9hbGdvcykg JiYgbWRfYWxnb3NbYWxnb10pIHsKKwlncnViX2NyeXB0b19hdXRvbG9hZF9ob29rIChtZF9hbGdv c1thbGdvXSk7CisgICAgICB9IGVsc2UKKwlyZXR1cm4gTlVMTDsKKyAgICAgIGZpcnN0ID0gMDsK KyAgICB9Cit9CisKIGNvbnN0IGdjcnlfY2lwaGVyX3NwZWNfdCAqCiBncnViX2NyeXB0b19sb29r dXBfY2lwaGVyX2J5X25hbWUgKGNvbnN0IGNoYXIgKm5hbWUpCiB7CkBAIC0xOTYsNyArMzMwLDkg QEAgZ3J1Yl9jcnlwdG9fY2lwaGVyX3NldF9rZXkgKGdydWJfY3J5cHRvX2NpcGhlcl9oYW5kbGVf dCBjaXBoZXIsCiAJCQkgICAgY29uc3QgdW5zaWduZWQgY2hhciAqa2V5LAogCQkJICAgIHVuc2ln bmVkIGtleWxlbikKIHsKLSAgcmV0dXJuIGNpcGhlci0+Y2lwaGVyLT5zZXRrZXkgKGNpcGhlci0+ Y3R4LCBrZXksIGtleWxlbik7CisgIC8qIFRPRE86IEZpeCB0aGlzLiBJdCdzIHVnbHkgYXMgaGVs bC4gICovCisgIHZvaWQgKmJ1bGtfb3BzWzEwMF07CisgIHJldHVybiBjaXBoZXItPmNpcGhlci0+ c2V0a2V5IChjaXBoZXItPmN0eCwga2V5LCBrZXlsZW4sICh2b2lkICopIGJ1bGtfb3BzKTsKIH0K IAogZ2NyeV9lcnJfY29kZV90CkBAIC0zNDMsNyArNDc5LDcgQEAgZ3J1Yl9jcnlwdG9faG1hY19p bml0IChjb25zdCBzdHJ1Y3QgZ2NyeV9tZF9zcGVjICptZCwKICAgZ3J1Yl9mcmVlIChoZWxwa2V5 KTsKICAgaGVscGtleSA9IE5VTEw7CiAKLSAgbWQtPmluaXQgKGN0eCk7CisgIG1kLT5pbml0IChj dHgsIDApOwogCiAgIG1kLT53cml0ZSAoY3R4LCBpcGFkLCBtZC0+YmxvY2tzaXplKTsgLyogaW5u ZXIgcGFkICovCiAgIGdydWJfbWVtc2V0IChpcGFkLCAwLCBtZC0+YmxvY2tzaXplKTsKQEAgLTM5 MCw3ICs1MjYsNyBAQCBncnViX2NyeXB0b19obWFjX2ZpbmkgKHN0cnVjdCBncnViX2NyeXB0b19o bWFjX2hhbmRsZSAqaG5kLCB2b2lkICpvdXQpCiAgIGhuZC0+bWQtPnJlYWQgKGhuZC0+Y3R4KTsK ICAgcCA9IGhuZC0+bWQtPnJlYWQgKGhuZC0+Y3R4KTsKIAotICBobmQtPm1kLT5pbml0IChjdHgy KTsKKyAgaG5kLT5tZC0+aW5pdCAoY3R4MiwgMCk7CiAgIGhuZC0+bWQtPndyaXRlIChjdHgyLCBo bmQtPm9wYWQsIGhuZC0+bWQtPmJsb2Nrc2l6ZSk7CiAgIGhuZC0+bWQtPndyaXRlIChjdHgyLCBw LCBobmQtPm1kLT5tZGxlbik7CiAgIGhuZC0+bWQtPmZpbmFsIChjdHgyKTsKQEAgLTQzMywxOSAr NTY5LDEwNiBAQCBncnViX2NyeXB0b19nY3J5X2Vycm9yIChnY3J5X2Vycl9jb2RlX3QgaW4pCiAg IHJldHVybiBHUlVCX0FDQ0VTU19ERU5JRUQ7CiB9CiAKKworLyoKKyAqIENvbXBhcmUgYnl0ZSBh cnJheXMgb2YgbGVuZ3RoIExFTiwgcmV0dXJuIDEgaWYgaXQncyBub3Qgc2FtZSwKKyAqIDAsIG90 aGVyd2lzZS4KKyAqLwogaW50Ci1ncnViX2NyeXB0b19tZW1jbXAgKGNvbnN0IHZvaWQgKmEsIGNv bnN0IHZvaWQgKmIsIGdydWJfc2l6ZV90IG4pCitncnViX2NyeXB0b19tZW1jbXAgKGNvbnN0IHZv aWQgKmIxLCBjb25zdCB2b2lkICpiMiwgZ3J1Yl9zaXplX3QgbGVuKQogewotICByZWdpc3RlciBn cnViX3NpemVfdCBjb3VudGVyID0gMDsKLSAgY29uc3QgZ3J1Yl91aW50OF90ICpwYSwgKnBiOwor ICBjb25zdCBncnViX3VpbnQ4X3QgKmEgPSBiMTsKKyAgY29uc3QgZ3J1Yl91aW50OF90ICpiID0g YjI7CisgIGludCBhYiwgYmE7CisgIGdydWJfc2l6ZV90IGk7CiAKLSAgZm9yIChwYSA9IGEsIHBi ID0gYjsgbjsgcGErKywgcGIrKywgbi0tKQorICAvKiBDb25zdGFudC10aW1lIGNvbXBhcmUuICov CisgIGZvciAoaSA9IDAsIGFiID0gMCwgYmEgPSAwOyBpIDwgbGVuOyBpKyspCiAgICAgewotICAg ICAgaWYgKCpwYSAhPSAqcGIpCi0JY291bnRlcisrOworICAgICAgLyogSWYgYVtpXSAhPSBiW2ld LCBlaXRoZXIgYWIgb3IgYmEgd2lsbCBiZSBuZWdhdGl2ZS4gKi8KKyAgICAgIGFiIHw9IGFbaV0g LSBiW2ldOworICAgICAgYmEgfD0gYltpXSAtIGFbaV07CiAgICAgfQogCi0gIHJldHVybiAhIWNv dW50ZXI7CisgIC8qICdhYiB8IGJhJyBpcyBuZWdhdGl2ZSB3aGVuIGJ1ZmZlcnMgYXJlIG5vdCBl cXVhbCwgZXh0cmFjdCBzaWduIGJpdC4gICovCisgIHJldHVybiAoKHVuc2lnbmVkIGludCkoYWIg fCBiYSkgPj4gKHNpemVvZih1bnNpZ25lZCBpbnQpICogOCAtIDEpKSAmIDE7Cit9CisKKwordm9p ZCAqCitfZ2NyeV9tYWxsb2Nfc2VjdXJlIChncnViX3NpemVfdCBuKQoreworICByZXR1cm4gZ3J1 Yl9tYWxsb2Mobik7Cit9CisKK3ZvaWQgKgorX2djcnlfbWFsbG9jIChncnViX3NpemVfdCBuKQor eworICByZXR1cm4gZ3J1Yl9tYWxsb2Mobik7Cit9CisKK3ZvaWQgKgorX2djcnlfeG1hbGxvYyhn cnViX3NpemVfdCBuKQoreworICB2b2lkICpyZXQgPSBncnViX21hbGxvYyhuKTsKKyAgaWYgKHJl dCA9PSBOVUxMKQorICAgIGdydWJfZmF0YWwoIl9nY3J5X3htYWxsb2MgZmFpbGVkIik7CisgIHJl dHVybiByZXQ7Cit9CisKK3ZvaWQgKgorX2djcnlfeG1hbGxvY19zZWN1cmUoZ3J1Yl9zaXplX3Qg bikKK3sKKyAgdm9pZCAqcmV0ID0gZ3J1Yl9tYWxsb2Mobik7CisgIGlmIChyZXQgPT0gTlVMTCkK KyAgICBncnViX2ZhdGFsKCJfZ2NyeV94bWFsbG9jX3NlY3VyZSBmYWlsZWQiKTsKKyAgcmV0dXJu IHJldDsKK30KKwordm9pZCBfZ2NyeV9mcmVlICh2b2lkICpwKQoreworICBncnViX2ZyZWUgKHAp OworfQorCit2b2lkICoKK19nY3J5X3hyZWFsbG9jICh2b2lkICphLCBncnViX3NpemVfdCBuKQor eworICB2b2lkICpyZXQgPSBncnViX3JlYWxsb2MoYSwgbik7CisgIGlmIChyZXQgPT0gTlVMTCkK KyAgICBncnViX2ZhdGFsKCJfZ2NyeV94cmVhbGxvYyBmYWlsZWQiKTsKKyAgcmV0dXJuIHJldDsK K30KKwordm9pZCAqCitfZ2NyeV94Y2FsbG9jIChncnViX3NpemVfdCBuLCBncnViX3NpemVfdCBt KQoreworICB2b2lkICpyZXQgPSBncnViX2NhbGxvYyhuLCBtKTsKKyAgaWYgKHJldCA9PSBOVUxM KQorICAgIGdydWJfZmF0YWwoIl9nY3J5X3hjYWxsb2MgZmFpbGVkIik7CisgIHJldHVybiByZXQ7 Cit9CisKK3ZvaWQgKgorX2djcnlfeGNhbGxvY19zZWN1cmUgKGdydWJfc2l6ZV90IG4sIGdydWJf c2l6ZV90IG0pCit7CisgIHZvaWQgKnJldCA9IGdydWJfY2FsbG9jKG4sIG0pOworICBpZiAocmV0 ID09IE5VTEwpCisgICAgZ3J1Yl9mYXRhbCgiX2djcnlfeGNhbGxvY19zZWN1cmUgZmFpbGVkIik7 CisgIHJldHVybiByZXQ7Cit9CisKKworaW50CitfZ2NyeV9pc19zZWN1cmUgKGNvbnN0IHZvaWQg KmEpCit7CisgICh2b2lkKSBhOworCisgIHJldHVybiAwOworfQorCit2b2lkIF9nY3J5X2Rpdmlk ZV9ieV96ZXJvICh2b2lkKQoreworICBncnViX2ZhdGFsKCJnY3J5cHQgZGl2aXNpb24gYnkgemVy byIpOwogfQogCiAjaWZuZGVmIEdSVUJfVVRJTApkaWZmIC0tZ2l0IGEvZ3J1Yi1jb3JlL2xpYi9s aWJnY3J5cHQvc3JjL2djcnlwdC1pbnQuaCBiL2dydWItY29yZS9saWIvbGliZ2NyeXB0L3NyYy9n Y3J5cHQtaW50LmgKaW5kZXggMzA3MWI0MjFlLi4xY2E0ZjIxZmUgMTAwNjQ0Ci0tLSBhL2dydWIt Y29yZS9saWIvbGliZ2NyeXB0L3NyYy9nY3J5cHQtaW50LmgKKysrIGIvZ3J1Yi1jb3JlL2xpYi9s aWJnY3J5cHQvc3JjL2djcnlwdC1pbnQuaApAQCAtMjY1LDU3ICsyNjUsNiBAQCB2b2lkIF9nY3J5 X3NldF9sb2dfaGFuZGxlciAoZ2NyeV9oYW5kbGVyX2xvZ190IGYsIHZvaWQgKm9wYXF1ZSk7CiB2 b2lkIF9nY3J5X3NldF9nZXR0ZXh0X2hhbmRsZXIgKGNvbnN0IGNoYXIgKigqZikoY29uc3QgY2hh ciopKTsKIHZvaWQgX2djcnlfc2V0X3Byb2dyZXNzX2hhbmRsZXIgKGdjcnlfaGFuZGxlcl9wcm9n cmVzc190IGNiLCB2b2lkICpjYl9kYXRhKTsKIAotDAotLyogUmV0dXJuIGEgcG9pbnRlciB0byBh IHN0cmluZyBjb250YWluaW5nIGEgZGVzY3JpcHRpb24gb2YgdGhlIGVycm9yCi0gICBjb2RlIGlu IHRoZSBlcnJvciB2YWx1ZSBFUlIuICAqLwotc3RhdGljIGlubGluZSBjb25zdCBjaGFyICoKLV9n Y3J5X3N0cmVycm9yIChnY3J5X2Vycm9yX3QgZXJyKQotewotICByZXR1cm4gZ3BnX3N0cmVycm9y IChlcnIpOwotfQotCi0vKiBSZXR1cm4gYSBwb2ludGVyIHRvIGEgc3RyaW5nIGNvbnRhaW5pbmcg YSBkZXNjcmlwdGlvbiBvZiB0aGUgZXJyb3IKLSAgIHNvdXJjZSBpbiB0aGUgZXJyb3IgdmFsdWUg RVJSLiAgKi8KLXN0YXRpYyBpbmxpbmUgY29uc3QgY2hhciAqCi1fZ2NyeV9zdHJzb3VyY2UgKGdj cnlfZXJyb3JfdCBlcnIpCi17Ci0gIHJldHVybiBncGdfc3Ryc291cmNlIChlcnIpOwotfQotCi0v KiBSZXRyaWV2ZSB0aGUgZXJyb3IgY29kZSBmb3IgdGhlIHN5c3RlbSBlcnJvciBFUlIuICBUaGlz IHJldHVybnMKLSAgIEdQR19FUlJfVU5LTk9XTl9FUlJOTyBpZiB0aGUgc3lzdGVtIGVycm9yIGlz IG5vdCBtYXBwZWQgKHJlcG9ydAotICAgdGhpcykuICAqLwotc3RhdGljIGlubGluZSBnY3J5X2Vy cl9jb2RlX3QKLV9nY3J5X2Vycl9jb2RlX2Zyb21fZXJybm8gKGludCBlcnIpCi17Ci0gIHJldHVy biBncGdfZXJyX2NvZGVfZnJvbV9lcnJubyAoZXJyKTsKLX0KLQotLyogUmV0cmlldmUgdGhlIHN5 c3RlbSBlcnJvciBmb3IgdGhlIGVycm9yIGNvZGUgQ09ERS4gIFRoaXMgcmV0dXJucyAwCi0gICBp ZiBDT0RFIGlzIG5vdCBhIHN5c3RlbSBlcnJvciBjb2RlLiAgKi8KLXN0YXRpYyBpbmxpbmUgaW50 Ci1fZ2NyeV9lcnJfY29kZV90b19lcnJubyAoZ2NyeV9lcnJfY29kZV90IGNvZGUpCi17Ci0gIHJl dHVybiBncGdfZXJyX2NvZGVfdG9fZXJybm8gKGNvZGUpOwotfQotCi0vKiBSZXR1cm4gYW4gZXJy b3IgdmFsdWUgd2l0aCB0aGUgZXJyb3Igc291cmNlIFNPVVJDRSBhbmQgdGhlIHN5c3RlbQotICAg ZXJyb3IgRVJSLiAgKi8KLXN0YXRpYyBpbmxpbmUgZ2NyeV9lcnJvcl90Ci1fZ2NyeV9lcnJfbWFr ZV9mcm9tX2Vycm5vIChncGdfZXJyX3NvdXJjZV90IHNvdXJjZSwgaW50IGVycikKLXsKLSAgcmV0 dXJuIGdwZ19lcnJfbWFrZV9mcm9tX2Vycm5vIChzb3VyY2UsIGVycik7Ci19Ci0KLQotLyogUmV0 dXJuIGFuIGVycm9yIHZhbHVlIHdpdGggdGhlIHN5c3RlbSBlcnJvciBFUlIuICAqLwotc3RhdGlj IGlubGluZSBnY3J5X2Vycm9yX3QKLV9nY3J5X2Vycm9yX2Zyb21fZXJybm8gKGludCBlcnIpCi17 Ci0gIHJldHVybiBncGdfZXJyb3IgKGdwZ19lcnJfY29kZV9mcm9tX2Vycm5vIChlcnIpKTsKLX0K LQotCiAMCiBncGdfZXJyX2NvZGVfdCBfZ2NyeV9zZXhwX25ldyAoZ2NyeV9zZXhwX3QgKnJldHNl eHAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqYnVmZmVyLCBz aXplX3QgbGVuZ3RoLApkaWZmIC0tZ2l0IGEvZ3J1Yi1jb3JlL2xpYi9saWJnY3J5cHRfd3JhcC9j aXBoZXJfd3JhcC5oIGIvZ3J1Yi1jb3JlL2xpYi9saWJnY3J5cHRfd3JhcC9jaXBoZXJfd3JhcC5o CmluZGV4IDQyODM1NDkzZC4uMjI1ZWI3OTE5IDEwMDY0NAotLS0gYS9ncnViLWNvcmUvbGliL2xp YmdjcnlwdF93cmFwL2NpcGhlcl93cmFwLmgKKysrIGIvZ3J1Yi1jb3JlL2xpYi9saWJnY3J5cHRf d3JhcC9jaXBoZXJfd3JhcC5oCkBAIC0zNSw5ICszNSw3IEBACiAjdW5kZWYgX19HTlVfTElCUkFS WV9fCiAjZGVmaW5lIF9fR05VX0xJQlJBUllfXyAxCiAKLSNkZWZpbmUgVTY0X0MoYykgKGMgIyMg VUxMKQotCi0jZGVmaW5lIFBVQktFWV9GTEFHX05PX0JMSU5ESU5HICAgICgxIDw8IDApCisjZGVm aW5lIFVJTlQ2NF9DKGMpIChjICMjIFVMTCkKIAogI2RlZmluZSBDSVBIRVJfSU5GT19OT19XRUFL X0tFWSAgICAxCiAKQEAgLTc0LDQgKzcyLDEyIEBAIF9nY3J5X2ZpcHNfbW9kZSAodm9pZCkKIAog I2RlZmluZSBnY3J5X21waV9tb2QgX2djcnlfbXBpX21vZAogCisjZGVmaW5lIHN0cnRvbCBncnVi X3N0cnRvbAorI2RlZmluZSBzdHJ0b3VsIGdydWJfc3RydG91bAorI2RlZmluZSBhdG9pKG5wdHIp IChzdHJ0b2woKG5wdHIpLCBOVUxMLCAxMCkpCisKKyNkZWZpbmUgc3RwY3B5IGdydWJfc3RwY3B5 CisKKyNkZWZpbmUgc3BlY19mcm9tX2FsZ28gZ3J1Yl9jcnlwdG9fbG9va3VwX21kX2J5X2FsZ28K KwogI2VuZGlmCmRpZmYgLS1naXQgYS9ncnViLWNvcmUvbGliL2xpYmdjcnlwdF93cmFwL21kLmMg Yi9ncnViLWNvcmUvbGliL2xpYmdjcnlwdF93cmFwL21kLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMDAwLi5jMjRjNzQ2NzIKLS0tIC9kZXYvbnVsbAorKysgYi9ncnViLWNvcmUv bGliL2xpYmdjcnlwdF93cmFwL21kLmMKQEAgLTAsMCArMSw2ODcgQEAKKyNpbmNsdWRlIDxjb25m aWcuaD4KKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUg PHN0cmluZy5oPgorI2luY2x1ZGUgPGVycm5vLmg+CisKKyNpbmNsdWRlICJnMTBsaWIuaCIKKwor dHlwZWRlZiBzdHJ1Y3QgZ2NyeV9tZF9saXN0Cit7CisgIGNvbnN0IGdjcnlfbWRfc3BlY190ICpz cGVjOworICBzdHJ1Y3QgZ2NyeV9tZF9saXN0ICpuZXh0OworICBzaXplX3QgYWN0dWFsX3N0cnVj dF9zaXplOyAgICAgLyogQWxsb2NhdGVkIHNpemUgb2YgdGhpcyBzdHJ1Y3R1cmUuICovCisgIFBS T1BFUkxZX0FMSUdORURfVFlQRSBjb250ZXh0WzFdOworfSBHY3J5RGlnZXN0RW50cnk7CisKKy8q IFRoaXMgc3RydWN0dXJlIGlzIHB1dCByaWdodCBhZnRlciB0aGUgZ2NyeV9tZF9oZF90IGJ1ZmZl ciwgc28gdGhhdAorICogb25seSBvbmUgbWVtb3J5IGJsb2NrIGlzIG5lZWRlZC4gKi8KK3N0cnVj dCBnY3J5X21kX2NvbnRleHQKK3sKKyAgaW50ICBtYWdpYzsKKyAgc3RydWN0IHsKKyAgICB1bnNp Z25lZCBpbnQgc2VjdXJlOjE7CisgICAgdW5zaWduZWQgaW50IGZpbmFsaXplZDoxOworICAgIHVu c2lnbmVkIGludCBidWdlbXUxOjE7CisgICAgdW5zaWduZWQgaW50IGhtYWM6MTsKKyAgfSBmbGFn czsKKyAgc2l6ZV90IGFjdHVhbF9oYW5kbGVfc2l6ZTsgICAgIC8qIEFsbG9jYXRlZCBzaXplIG9m IHRoaXMgaGFuZGxlLiAqLworICBHY3J5RGlnZXN0RW50cnkgKmxpc3Q7Cit9OworCisjZGVmaW5l IENUWF9NQUdJQ19OT1JNQUwgMHgxMTA3MTk2MQorI2RlZmluZSBDVFhfTUFHSUNfU0VDVVJFIDB4 MTY5MTcwMTEKKworc3RhdGljIGdjcnlfZXJyX2NvZGVfdCBtZF9lbmFibGUgKGdjcnlfbWRfaGRf dCBoZCwgaW50IGFsZ28pOworc3RhdGljIHZvaWQgbWRfY2xvc2UgKGdjcnlfbWRfaGRfdCBhKTsK K3N0YXRpYyB2b2lkIG1kX3dyaXRlIChnY3J5X21kX2hkX3QgYSwgY29uc3Qgdm9pZCAqaW5idWYs IHNpemVfdCBpbmxlbik7CitzdGF0aWMgYnl0ZSAqbWRfcmVhZCggZ2NyeV9tZF9oZF90IGEsIGlu dCBhbGdvICk7CisvLy9zdGF0aWMgaW50IG1kX2dldF9hbGdvKCBnY3J5X21kX2hkX3QgYSApOwor c3RhdGljIGludCBtZF9kaWdlc3RfbGVuZ3RoKCBpbnQgYWxnbyApOworCitpbnQKK19nY3J5X21k X21hcF9uYW1lIChjb25zdCBjaGFyICpzdHJpbmcpCit7CisgIGNvbnN0IGdjcnlfbWRfc3BlY190 ICpzcGVjOworCisgIGlmICghc3RyaW5nKQorICAgIHJldHVybiAwOworCisgIC8qIElmIHRoZSBz dHJpbmcgc3RhcnRzIHdpdGggYSBkaWdpdCAob3B0aW9uYWxseSBwcmVmaXhlZCB3aXRoCisgICAg IGVpdGhlciAiT0lELiIgb3IgIm9pZC4iKSwgd2UgZmlyc3QgbG9vayBpbnRvIG91ciB0YWJsZSBv ZiBBU04uMQorICAgICBvYmplY3QgaWRlbnRpZmllcnMgdG8gZmlndXJlIG91dCB0aGUgYWxnb3Jp dGhtICovCisgIHNwZWMgPSBncnViX2NyeXB0b19sb29rdXBfbWRfYnlfb2lkIChzdHJpbmcpOwor ICBpZiAoc3BlYykKKyAgICByZXR1cm4gc3BlYy0+YWxnbzsKKworICAvKiBOb3QgZm91bmQsIHNl YXJjaCBhIG1hdGNoaW5nIGRpZ2VzdCBuYW1lLiAgKi8KKyAgc3BlYyA9IGdydWJfY3J5cHRvX2xv b2t1cF9tZF9ieV9uYW1lIChzdHJpbmcpOworICBpZiAoc3BlYykKKyAgICByZXR1cm4gc3BlYy0+ YWxnbzsKKworICByZXR1cm4gMDsKK30KKworc3RhdGljIGdjcnlfZXJyX2NvZGVfdAorY2hlY2tf ZGlnZXN0X2FsZ28gKGludCBhbGdvcml0aG0pCit7CisgIGNvbnN0IGdjcnlfbWRfc3BlY190ICpz cGVjOworCisgIHNwZWMgPSBzcGVjX2Zyb21fYWxnbyAoYWxnb3JpdGhtKTsKKyAgaWYgKHNwZWMg JiYgIXNwZWMtPmZsYWdzLmRpc2FibGVkICYmIChzcGVjLT5mbGFncy5maXBzIHx8ICFmaXBzX21v ZGUgKCkpKQorICAgIHJldHVybiAwOworCisgIHJldHVybiBHUEdfRVJSX0RJR0VTVF9BTEdPOwor Cit9CisKKy8qKioqKioqKioqKioqKioqCisgKiBPcGVuIGEgbWVzc2FnZSBkaWdlc3QgaGFuZGxl IGZvciB1c2Ugd2l0aCBhbGdvcml0aG0gQUxHTy4KKyAqIE1vcmUgYWxnb3JpdGhtcyBtYXkgYmUg YWRkZWQgYnkgbWRfZW5hYmxlKCkuIFRoZSBpbml0aWFsIGFsZ29yaXRobQorICogbWF5IGJlIDAu CisgKi8KK3N0YXRpYyBnY3J5X2Vycl9jb2RlX3QKK21kX29wZW4gKGdjcnlfbWRfaGRfdCAqaCwg aW50IGFsZ28sIHVuc2lnbmVkIGludCBmbGFncykKK3sKKyAgZ2NyeV9lcnJfY29kZV90IGVyciA9 IDA7CisgIGludCBzZWN1cmUgPSAhIShmbGFncyAmIEdDUllfTURfRkxBR19TRUNVUkUpOworICBp bnQgaG1hYyA9ICAgISEoZmxhZ3MgJiBHQ1JZX01EX0ZMQUdfSE1BQyk7CisgIGludCBidWZzaXpl ID0gc2VjdXJlID8gNTEyIDogMTAyNDsKKyAgZ2NyeV9tZF9oZF90IGhkOworICBzaXplX3QgbjsK KworICAvKiBBbGxvY2F0ZSBhIG1lbW9yeSBhcmVhIHRvIGhvbGQgdGhlIGNhbGxlciB2aXNpYmxl IGJ1ZmZlciB3aXRoIGl0J3MKKyAgICogY29udHJvbCBpbmZvcm1hdGlvbiBhbmQgdGhlIGRhdGEg cmVxdWlyZWQgYnkgdGhpcyBtb2R1bGUuIFNldCB0aGUKKyAgICogY29udGV4dCBwb2ludGVyIGF0 IHRoZSBiZWdpbm5pbmcgdG8gdGhpcyBhcmVhLgorICAgKiBXZSBoYXZlIHRvIHVzZSB0aGlzIHN0 cmFuZ2Ugc2NoZW1lIGJlY2F1c2Ugd2Ugd2FudCB0byBoaWRlIHRoZQorICAgKiBpbnRlcm5hbCBk YXRhIGJ1dCBoYXZlIGEgdmFyaWFibGUgc2l6ZWQgYnVmZmVyLgorICAgKgorICAgKgkrLS0tKy0t LS0tLSstLS0uLi4uLi4uLi0tLS0tLSstLS0tLS0tLS0tLS0tKworICAgKgkhY3R4ISBiY3RsICEg IGJ1ZmZlcgkgICAgICEgcHJpdmF0ZQkgICAhCisgICAqCSstLS0rLS0tLS0tKy0tLS4uLi4uLi4u LS0tLS0tKy0tLS0tLS0tLS0tLS0rCisgICAqCSAgIQkJCSAgICAgIF4KKyAgICoJICAhLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tIQorICAgKgorICAgKiBXZSBoYXZlIHRvIG1ha2Ugc3VyZSB0 aGF0IHByaXZhdGUgaXMgd2VsbCBhbGlnbmVkLgorICAgKi8KKyAgbiA9IG9mZnNldG9mIChzdHJ1 Y3QgZ2NyeV9tZF9oYW5kbGUsIGJ1ZikgKyBidWZzaXplOworICBuID0gKChuICsgc2l6ZW9mIChQ Uk9QRVJMWV9BTElHTkVEX1RZUEUpIC0gMSkKKyAgICAgICAvIHNpemVvZiAoUFJPUEVSTFlfQUxJ R05FRF9UWVBFKSkgKiBzaXplb2YgKFBST1BFUkxZX0FMSUdORURfVFlQRSk7CisKKyAgLyogQWxs b2NhdGUgYW5kIHNldCB0aGUgQ29udGV4dCBwb2ludGVyIHRvIHRoZSBwcml2YXRlIGRhdGEgKi8K KyAgaWYgKHNlY3VyZSkKKyAgICBoZCA9IHh0cnltYWxsb2Nfc2VjdXJlIChuICsgc2l6ZW9mIChz dHJ1Y3QgZ2NyeV9tZF9jb250ZXh0KSk7CisgIGVsc2UKKyAgICBoZCA9IHh0cnltYWxsb2MgKG4g KyBzaXplb2YgKHN0cnVjdCBnY3J5X21kX2NvbnRleHQpKTsKKworICBpZiAoISBoZCkKKyAgICBl cnIgPSBncGdfZXJyX2NvZGVfZnJvbV9lcnJubyAoZXJybm8pOworCisgIGlmICghIGVycikKKyAg ICB7CisgICAgICBzdHJ1Y3QgZ2NyeV9tZF9jb250ZXh0ICpjdHg7CisKKyAgICAgIGN0eCA9ICh2 b2lkICopIChoZC0+YnVmIC0gb2Zmc2V0b2YgKHN0cnVjdCBnY3J5X21kX2hhbmRsZSwgYnVmKSAr IG4pOworICAgICAgLyogU2V0dXAgdGhlIGdsb2JhbGx5IHZpc2libGUgZGF0YSAoYmN0bCBpbiB0 aGUgZGlhZ3JhbSkuKi8KKyAgICAgIGhkLT5jdHggPSBjdHg7CisgICAgICBoZC0+YnVmc2l6ZSA9 IG4gLSBvZmZzZXRvZiAoc3RydWN0IGdjcnlfbWRfaGFuZGxlLCBidWYpOworICAgICAgaGQtPmJ1 ZnBvcyA9IDA7CisKKyAgICAgIC8qIEluaXRpYWxpemUgdGhlIHByaXZhdGUgZGF0YS4gKi8KKyAg ICAgIHdpcGVtZW1vcnkyIChjdHgsIDAsIHNpemVvZiAqY3R4KTsKKyAgICAgIGN0eC0+bWFnaWMg PSBzZWN1cmUgPyBDVFhfTUFHSUNfU0VDVVJFIDogQ1RYX01BR0lDX05PUk1BTDsKKyAgICAgIGN0 eC0+YWN0dWFsX2hhbmRsZV9zaXplID0gbiArIHNpemVvZiAoc3RydWN0IGdjcnlfbWRfY29udGV4 dCk7CisgICAgICBjdHgtPmZsYWdzLnNlY3VyZSA9IHNlY3VyZTsKKyAgICAgIGN0eC0+ZmxhZ3Mu aG1hYyA9IGhtYWM7CisgICAgICBjdHgtPmZsYWdzLmJ1Z2VtdTEgPSAhIShmbGFncyAmIEdDUllf TURfRkxBR19CVUdFTVUxKTsKKyAgICB9CisKKyAgaWYgKCEgZXJyKQorICAgIHsKKyAgICAgIGlm IChhbGdvKQorCXsKKwkgIGVyciA9IG1kX2VuYWJsZSAoaGQsIGFsZ28pOworCSAgaWYgKGVycikK KwkgICAgbWRfY2xvc2UgKGhkKTsKKwl9CisgICAgfQorCisgIGlmICghIGVycikKKyAgICAqaCA9 IGhkOworCisgIHJldHVybiBlcnI7Cit9CisKKy8qIENyZWF0ZSBhIG1lc3NhZ2UgZGlnZXN0IG9i amVjdCBmb3IgYWxnb3JpdGhtIEFMR08uICBGTEFHUyBtYXkgYmUKKyAgIGdpdmVuIGFzIGFuIGJp dHdpc2UgT1Igb2YgdGhlIGdjcnlfbWRfZmxhZ3MgdmFsdWVzLiAgQUxHTyBtYXkgYmUKKyAgIGdp dmVuIGFzIDAgaWYgdGhlIGFsZ29yaXRobXMgdG8gYmUgdXNlZCBhcmUgbGF0ZXIgc2V0IHVzaW5n CisgICBnY3J5X21kX2VuYWJsZS4gSCBpcyBndWFyYW50ZWVkIHRvIGJlIGEgdmFsaWQgaGFuZGxl IG9yIE5VTEwgb24KKyAgIGVycm9yLiAgKi8KK2djcnlfZXJyX2NvZGVfdAorX2djcnlfbWRfb3Bl biAoZ2NyeV9tZF9oZF90ICpoLCBpbnQgYWxnbywgdW5zaWduZWQgaW50IGZsYWdzKQoreworICBn Y3J5X2Vycl9jb2RlX3QgcmM7CisgIGdjcnlfbWRfaGRfdCBoZDsKKworICBpZiAoKGZsYWdzICYg fihHQ1JZX01EX0ZMQUdfU0VDVVJFCisgICAgICAgICAgICAgICAgIHwgR0NSWV9NRF9GTEFHX0hN QUMKKyAgICAgICAgICAgICAgICAgfCBHQ1JZX01EX0ZMQUdfQlVHRU1VMSkpKQorICAgIHJjID0g R1BHX0VSUl9JTlZfQVJHOworICBlbHNlCisgICAgcmMgPSBtZF9vcGVuICgmaGQsIGFsZ28sIGZs YWdzKTsKKworICAqaCA9IHJjPyBOVUxMIDogaGQ7CisgIHJldHVybiByYzsKK30KKworc3RhdGlj IGdjcnlfZXJyX2NvZGVfdAorbWRfY29weSAoZ2NyeV9tZF9oZF90IGFoZCwgZ2NyeV9tZF9oZF90 ICpiX2hkKQoreworICBnY3J5X2Vycl9jb2RlX3QgZXJyID0gMDsKKyAgc3RydWN0IGdjcnlfbWRf Y29udGV4dCAqYSA9IGFoZC0+Y3R4OworICBzdHJ1Y3QgZ2NyeV9tZF9jb250ZXh0ICpiOworICBH Y3J5RGlnZXN0RW50cnkgKmFyLCAqYnI7CisgIGdjcnlfbWRfaGRfdCBiaGQ7CisgIHNpemVfdCBu OworCisgIGlmIChhaGQtPmJ1ZnBvcykKKyAgICBtZF93cml0ZSAoYWhkLCBOVUxMLCAwKTsKKwor ICBuID0gKGNoYXIgKikgYWhkLT5jdHggLSAoY2hhciAqKSBhaGQ7CisgIGlmIChhLT5mbGFncy5z ZWN1cmUpCisgICAgYmhkID0geHRyeW1hbGxvY19zZWN1cmUgKG4gKyBzaXplb2YgKHN0cnVjdCBn Y3J5X21kX2NvbnRleHQpKTsKKyAgZWxzZQorICAgIGJoZCA9IHh0cnltYWxsb2MgKG4gKyBzaXpl b2YgKHN0cnVjdCBnY3J5X21kX2NvbnRleHQpKTsKKworICBpZiAoIWJoZCkKKyAgICB7CisgICAg ICBlcnIgPSBncGdfZXJyX2NvZGVfZnJvbV9zeXNlcnJvciAoKTsKKyAgICAgIGdvdG8gbGVhdmU7 CisgICAgfQorCisgIGJoZC0+Y3R4ID0gYiA9ICh2b2lkICopICgoY2hhciAqKSBiaGQgKyBuKTsK KyAgLyogTm8gbmVlZCB0byBjb3B5IHRoZSBidWZmZXIgZHVlIHRvIHRoZSB3cml0ZSBhYm92ZS4g Ki8KKyAgZ2NyeV9hc3NlcnQgKGFoZC0+YnVmc2l6ZSA9PSAobiAtIG9mZnNldG9mIChzdHJ1Y3Qg Z2NyeV9tZF9oYW5kbGUsIGJ1ZikpKTsKKyAgYmhkLT5idWZzaXplID0gYWhkLT5idWZzaXplOwor ICBiaGQtPmJ1ZnBvcyA9IDA7CisgIGdjcnlfYXNzZXJ0ICghIGFoZC0+YnVmcG9zKTsKKyAgbWVt Y3B5IChiLCBhLCBzaXplb2YgKmEpOworICBiLT5saXN0ID0gTlVMTDsKKworICAvKiBDb3B5IHRo ZSBjb21wbGV0ZSBsaXN0IG9mIGFsZ29yaXRobXMuICBUaGUgY29waWVkIGxpc3QgaXMKKyAgICAg cmV2ZXJzZWQsIGJ1dCB0aGF0IGRvZXNuJ3QgbWF0dGVyLiAqLworICBmb3IgKGFyID0gYS0+bGlz dDsgYXI7IGFyID0gYXItPm5leHQpCisgICAgeworICAgICAgaWYgKGEtPmZsYWdzLnNlY3VyZSkK KyAgICAgICAgYnIgPSB4dHJ5bWFsbG9jX3NlY3VyZSAoYXItPmFjdHVhbF9zdHJ1Y3Rfc2l6ZSk7 CisgICAgICBlbHNlCisgICAgICAgIGJyID0geHRyeW1hbGxvYyAoYXItPmFjdHVhbF9zdHJ1Y3Rf c2l6ZSk7CisgICAgICBpZiAoIWJyKQorICAgICAgICB7CisgICAgICAgICAgZXJyID0gZ3BnX2Vy cl9jb2RlX2Zyb21fc3lzZXJyb3IgKCk7CisgICAgICAgICAgbWRfY2xvc2UgKGJoZCk7CisgICAg ICAgICAgZ290byBsZWF2ZTsKKyAgICAgICAgfQorCisgICAgICBtZW1jcHkgKGJyLCBhciwgYXIt PmFjdHVhbF9zdHJ1Y3Rfc2l6ZSk7CisgICAgICBici0+bmV4dCA9IGItPmxpc3Q7CisgICAgICBi LT5saXN0ID0gYnI7CisgICAgfQorCisgICpiX2hkID0gYmhkOworCisgbGVhdmU6CisgIHJldHVy biBlcnI7Cit9CisKK2djcnlfZXJyX2NvZGVfdAorX2djcnlfbWRfY29weSAoZ2NyeV9tZF9oZF90 ICpoYW5kbGUsIGdjcnlfbWRfaGRfdCBoZCkKK3sKKyAgZ2NyeV9lcnJfY29kZV90IHJjOworCisg IHJjID0gbWRfY29weSAoaGQsIGhhbmRsZSk7CisgIGlmIChyYykKKyAgICAqaGFuZGxlID0gTlVM TDsKKyAgcmV0dXJuIHJjOworfQorCisKKy8qCisgKiBSZXNldCBhbGwgY29udGV4dHMgYW5kIGRp c2NhcmQgYW55IGJ1ZmZlcmVkIHN0dWZmLiAgVGhpcyBtYXkgYmUgdXNlZAorICogaW5zdGVhZCBv ZiBhIG1kX2Nsb3NlKCk7IG1kX29wZW4oKS4KKyAqLwordm9pZAorX2djcnlfbWRfcmVzZXQgKGdj cnlfbWRfaGRfdCBhKQoreworICBHY3J5RGlnZXN0RW50cnkgKnI7CisKKyAgLyogTm90ZTogV2Ug YWxsb3cgdGhpcyBldmVuIGluIGZpcHMgbm9uIG9wZXJhdGlvbmFsIG1vZGUuICAqLworCisgIGEt PmJ1ZnBvcyA9IGEtPmN0eC0+ZmxhZ3MuZmluYWxpemVkID0gMDsKKworICBpZiAoYS0+Y3R4LT5m bGFncy5obWFjKQorICAgIGZvciAociA9IGEtPmN0eC0+bGlzdDsgcjsgciA9IHItPm5leHQpCisg ICAgICB7CisgICAgICAgIG1lbWNweSAoci0+Y29udGV4dCwgKGNoYXIgKilyLT5jb250ZXh0ICsg ci0+c3BlYy0+Y29udGV4dHNpemUsCisgICAgICAgICAgICAgICAgci0+c3BlYy0+Y29udGV4dHNp emUpOworICAgICAgfQorICBlbHNlCisgICAgZm9yIChyID0gYS0+Y3R4LT5saXN0OyByOyByID0g ci0+bmV4dCkKKyAgICAgIHsKKyAgICAgICAgbWVtc2V0IChyLT5jb250ZXh0LCAwLCByLT5zcGVj LT5jb250ZXh0c2l6ZSk7CisgICAgICAgICgqci0+c3BlYy0+aW5pdCkgKHItPmNvbnRleHQsCisg ICAgICAgICAgICAgICAgICAgICAgICAgIGEtPmN0eC0+ZmxhZ3MuYnVnZW11MT8gR0NSWV9NRF9G TEFHX0JVR0VNVTE6MCk7CisgICAgICB9Cit9CisKK3N0YXRpYyB2b2lkCittZF9jbG9zZSAoZ2Ny eV9tZF9oZF90IGEpCit7CisgIEdjcnlEaWdlc3RFbnRyeSAqciwgKnIyOworCisgIGlmICghIGEp CisgICAgcmV0dXJuOworICBmb3IgKHIgPSBhLT5jdHgtPmxpc3Q7IHI7IHIgPSByMikKKyAgICB7 CisgICAgICByMiA9IHItPm5leHQ7CisgICAgICB3aXBlbWVtb3J5IChyLCByLT5hY3R1YWxfc3Ry dWN0X3NpemUpOworICAgICAgeGZyZWUgKHIpOworICAgIH0KKworICB3aXBlbWVtb3J5IChhLCBh LT5jdHgtPmFjdHVhbF9oYW5kbGVfc2l6ZSk7CisgIHhmcmVlKGEpOworfQorCisKK3ZvaWQKK19n Y3J5X21kX2Nsb3NlIChnY3J5X21kX2hkX3QgaGQpCit7CisgIC8qIE5vdGU6IFdlIGFsbG93IHRo aXMgZXZlbiBpbiBmaXBzIG5vbiBvcGVyYXRpb25hbCBtb2RlLiAgKi8KKyAgbWRfY2xvc2UgKGhk KTsKK30KKworc3RhdGljIHZvaWQKK21kX3dyaXRlIChnY3J5X21kX2hkX3QgYSwgY29uc3Qgdm9p ZCAqaW5idWYsIHNpemVfdCBpbmxlbikKK3sKKyAgR2NyeURpZ2VzdEVudHJ5ICpyOworCisgIGZv ciAociA9IGEtPmN0eC0+bGlzdDsgcjsgciA9IHItPm5leHQpCisgICAgeworICAgICAgaWYgKGEt PmJ1ZnBvcykKKwkoKnItPnNwZWMtPndyaXRlKSAoci0+Y29udGV4dCwgYS0+YnVmLCBhLT5idWZw b3MpOworICAgICAgKCpyLT5zcGVjLT53cml0ZSkgKHItPmNvbnRleHQsIGluYnVmLCBpbmxlbik7 CisgICAgfQorICBhLT5idWZwb3MgPSAwOworfQorCisKKy8qIE5vdGUgdGhhdCB0aGlzIGZ1bmN0 aW9uIG1heSBiZSB1c2VkIGFmdGVyIGZpbmFsaXplIGFuZCByZWFkIHRvIGtlZXAKKyAgIG9uIHdy aXRpbmcgdG8gdGhlIHRyYW5zZm9ybSBmdW5jdGlvbiBzbyB0byBtaXRpZ2F0ZSB0aW1pbmcKKyAg IGF0dGFja3MuICAqLwordm9pZAorX2djcnlfbWRfd3JpdGUgKGdjcnlfbWRfaGRfdCBoZCwgY29u c3Qgdm9pZCAqaW5idWYsIHNpemVfdCBpbmxlbikKK3sKKyAgbWRfd3JpdGUgKGhkLCBpbmJ1Ziwg aW5sZW4pOworfQorCitzdGF0aWMgdm9pZAorbWRfZmluYWwgKGdjcnlfbWRfaGRfdCBhKQorewor ICBHY3J5RGlnZXN0RW50cnkgKnI7CisKKyAgaWYgKGEtPmN0eC0+ZmxhZ3MuZmluYWxpemVkKQor ICAgIHJldHVybjsKKworICBpZiAoYS0+YnVmcG9zKQorICAgIG1kX3dyaXRlIChhLCBOVUxMLCAw KTsKKworICBmb3IgKHIgPSBhLT5jdHgtPmxpc3Q7IHI7IHIgPSByLT5uZXh0KQorICAgICgqci0+ c3BlYy0+ZmluYWwpIChyLT5jb250ZXh0KTsKKworICBhLT5jdHgtPmZsYWdzLmZpbmFsaXplZCA9 IDE7CisKKyAgaWYgKCFhLT5jdHgtPmZsYWdzLmhtYWMpCisgICAgcmV0dXJuOworCisgIGZvciAo ciA9IGEtPmN0eC0+bGlzdDsgcjsgciA9IHItPm5leHQpCisgICAgeworICAgICAgYnl0ZSAqcDsK KyAgICAgIHNpemVfdCBkbGVuID0gci0+c3BlYy0+bWRsZW47CisgICAgICBieXRlICpoYXNoOwor ICAgICAgZ2NyeV9lcnJfY29kZV90IGVycjsKKworICAgICAgaWYgKHItPnNwZWMtPnJlYWQgPT0g TlVMTCkKKyAgICAgICAgY29udGludWU7CisKKyAgICAgIHAgPSByLT5zcGVjLT5yZWFkIChyLT5j b250ZXh0KTsKKworICAgICAgaWYgKGEtPmN0eC0+ZmxhZ3Muc2VjdXJlKQorICAgICAgICBoYXNo ID0geHRyeW1hbGxvY19zZWN1cmUgKGRsZW4pOworICAgICAgZWxzZQorICAgICAgICBoYXNoID0g eHRyeW1hbGxvYyAoZGxlbik7CisgICAgICBpZiAoIWhhc2gpCisgICAgICAgIHsKKyAgICAgICAg ICBlcnIgPSBncGdfZXJyX2NvZGVfZnJvbV9lcnJubyAoZXJybm8pOworICAgICAgICAgIF9nY3J5 X2ZhdGFsX2Vycm9yIChlcnIsIE5VTEwpOworICAgICAgICB9CisKKyAgICAgIG1lbWNweSAoaGFz aCwgcCwgZGxlbik7CisgICAgICBtZW1jcHkgKHItPmNvbnRleHQsIChjaGFyICopci0+Y29udGV4 dCArIHItPnNwZWMtPmNvbnRleHRzaXplICogMiwKKyAgICAgICAgICAgICAgci0+c3BlYy0+Y29u dGV4dHNpemUpOworICAgICAgKCpyLT5zcGVjLT53cml0ZSkgKHItPmNvbnRleHQsIGhhc2gsIGRs ZW4pOworICAgICAgKCpyLT5zcGVjLT5maW5hbCkgKHItPmNvbnRleHQpOworICAgICAgeGZyZWUg KGhhc2gpOworICAgIH0KK30KKworc3RhdGljIGdjcnlfZXJyX2NvZGVfdAorbWRfZW5hYmxlIChn Y3J5X21kX2hkX3QgaGQsIGludCBhbGdvcml0aG0pCit7CisgIHN0cnVjdCBnY3J5X21kX2NvbnRl eHQgKmggPSBoZC0+Y3R4OworICBjb25zdCBnY3J5X21kX3NwZWNfdCAqc3BlYzsKKyAgR2NyeURp Z2VzdEVudHJ5ICplbnRyeTsKKyAgZ2NyeV9lcnJfY29kZV90IGVyciA9IDA7CisKKyAgZm9yIChl bnRyeSA9IGgtPmxpc3Q7IGVudHJ5OyBlbnRyeSA9IGVudHJ5LT5uZXh0KQorICAgIGlmIChlbnRy eS0+c3BlYy0+YWxnbyA9PSBhbGdvcml0aG0pCisgICAgICByZXR1cm4gMDsgLyogQWxyZWFkeSBl bmFibGVkICovCisKKyAgc3BlYyA9IHNwZWNfZnJvbV9hbGdvIChhbGdvcml0aG0pOworICBpZiAo IXNwZWMpCisgICAgeworICAgICAgbG9nX2RlYnVnICgibWRfZW5hYmxlOiBhbGdvcml0aG0gJWQg bm90IGF2YWlsYWJsZVxuIiwgYWxnb3JpdGhtKTsKKyAgICAgIGVyciA9IEdQR19FUlJfRElHRVNU X0FMR087CisgICAgfQorCisgIGlmICghZXJyICYmIHNwZWMtPmZsYWdzLmRpc2FibGVkKQorICAg IGVyciA9IEdQR19FUlJfRElHRVNUX0FMR087CisKKyAgLyogQW55IG5vbi1GSVBTIGFsZ29yaXRo bSBzaG91bGQgZ28gdGhpcyB3YXkgKi8KKyAgaWYgKCFlcnIgJiYgIXNwZWMtPmZsYWdzLmZpcHMg JiYgZmlwc19tb2RlICgpKQorICAgIGVyciA9IEdQR19FUlJfRElHRVNUX0FMR087CisKKyAgaWYg KCFlcnIgJiYgaC0+ZmxhZ3MuaG1hYyAmJiBzcGVjLT5yZWFkID09IE5VTEwpCisgICAgeworICAg ICAgLyogRXhwYW5kYWJsZSBvdXRwdXQgZnVuY3Rpb24gY2Fubm90IGFjdCBhcyBwYXJ0IG9mIEhN QUMuICovCisgICAgICBlcnIgPSBHUEdfRVJSX0RJR0VTVF9BTEdPOworICAgIH0KKworICBpZiAo IWVycikKKyAgICB7CisgICAgICBzaXplX3Qgc2l6ZSA9IChzaXplb2YgKCplbnRyeSkKKyAgICAg ICAgICAgICAgICAgICAgICsgc3BlYy0+Y29udGV4dHNpemUgKiAoaC0+ZmxhZ3MuaG1hYz8gMyA6 IDEpCisgICAgICAgICAgICAgICAgICAgICAtIHNpemVvZiAoZW50cnktPmNvbnRleHQpKTsKKwor ICAgICAgLyogQW5kIGFsbG9jYXRlIGEgbmV3IGxpc3QgZW50cnkuICovCisgICAgICBpZiAoaC0+ ZmxhZ3Muc2VjdXJlKQorCWVudHJ5ID0geHRyeW1hbGxvY19zZWN1cmUgKHNpemUpOworICAgICAg ZWxzZQorCWVudHJ5ID0geHRyeW1hbGxvYyAoc2l6ZSk7CisKKyAgICAgIGlmICghIGVudHJ5KQor CWVyciA9IGdwZ19lcnJfY29kZV9mcm9tX2Vycm5vIChlcnJubyk7CisgICAgICBlbHNlCisJewor CSAgZW50cnktPnNwZWMgPSBzcGVjOworCSAgZW50cnktPm5leHQgPSBoLT5saXN0OworICAgICAg ICAgIGVudHJ5LT5hY3R1YWxfc3RydWN0X3NpemUgPSBzaXplOworCSAgaC0+bGlzdCA9IGVudHJ5 OworCisJICAvKiBBbmQgaW5pdCB0aGlzIGluc3RhbmNlLiAqLworCSAgZW50cnktPnNwZWMtPmlu aXQgKGVudHJ5LT5jb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoLT5mbGFn cy5idWdlbXUxPyBHQ1JZX01EX0ZMQUdfQlVHRU1VMTowKTsKKwl9CisgICAgfQorCisgIHJldHVy biBlcnI7Cit9CisKKworZ2NyeV9lcnJfY29kZV90CitfZ2NyeV9tZF9lbmFibGUgKGdjcnlfbWRf aGRfdCBoZCwgaW50IGFsZ29yaXRobSkKK3sKKyAgcmV0dXJuIG1kX2VuYWJsZSAoaGQsIGFsZ29y aXRobSk7Cit9CisKK2djcnlfZXJyX2NvZGVfdAorX2djcnlfbWRfY3RsIChnY3J5X21kX2hkX3Qg aGQsIGludCBjbWQsIHZvaWQgKmJ1ZmZlciwgc2l6ZV90IGJ1ZmxlbikKK3sKKyAgZ2NyeV9lcnJf Y29kZV90IHJjID0gMDsKKworICAodm9pZClidWZsZW47IC8qIEN1cnJlbnRseSBub3QgdXNlZC4g ICovCisgICh2b2lkKWJ1ZmZlcjsKKworICBzd2l0Y2ggKGNtZCkKKyAgICB7CisgICAgY2FzZSBH Q1JZQ1RMX0ZJTkFMSVpFOgorICAgICAgbWRfZmluYWwgKGhkKTsKKyAgICAgIGJyZWFrOworICAg IGNhc2UgR0NSWUNUTF9TVEFSVF9EVU1QOgorICAgICAgYnJlYWs7CisgICAgY2FzZSBHQ1JZQ1RM X1NUT1BfRFVNUDoKKyAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICByYyA9IEdQR19F UlJfSU5WX09QOworICAgIH0KKyAgcmV0dXJuIHJjOworfQorCisvKioqKioqKioqKioqKioqKgor ICogSWYgQUxHTyBpcyBudWxsIGdldCB0aGUgZGlnZXN0IGZvciB0aGUgdXNlZCBhbGdvICh3aGlj aCBzaG91bGQgYmUKKyAqIG9ubHkgb25lKQorICovCitzdGF0aWMgYnl0ZSAqCittZF9yZWFkKCBn Y3J5X21kX2hkX3QgYSwgaW50IGFsZ28gKQoreworICBHY3J5RGlnZXN0RW50cnkgKnIgPSBhLT5j dHgtPmxpc3Q7CisKKyAgaWYgKCEgYWxnbykKKyAgICB7CisgICAgICAvKiBSZXR1cm4gdGhlIGZp cnN0IGFsZ29yaXRobSAqLworICAgICAgaWYgKHIpCisgICAgICAgIHsKKyAgICAgICAgICBpZiAo ci0+bmV4dCkKKyAgICAgICAgICAgIGxvZ19kZWJ1ZyAoIm1vcmUgdGhhbiBvbmUgYWxnb3JpdGht IGluIG1kX3JlYWQoMClcbiIpOworICAgICAgICAgIGlmIChyLT5zcGVjLT5yZWFkKQorICAgICAg ICAgICAgcmV0dXJuIHItPnNwZWMtPnJlYWQgKHItPmNvbnRleHQpOworICAgICAgICB9CisgICAg fQorICBlbHNlCisgICAgeworICAgICAgZm9yIChyID0gYS0+Y3R4LT5saXN0OyByOyByID0gci0+ bmV4dCkKKwlpZiAoci0+c3BlYy0+YWxnbyA9PSBhbGdvKQorCSAgeworCSAgICBpZiAoci0+c3Bl Yy0+cmVhZCkKKyAgICAgICAgICAgICAgcmV0dXJuIHItPnNwZWMtPnJlYWQgKHItPmNvbnRleHQp OworICAgICAgICAgICAgYnJlYWs7CisJICB9CisgICAgfQorCisgIGlmIChyICYmICFyLT5zcGVj LT5yZWFkKQorICAgIF9nY3J5X2ZhdGFsX2Vycm9yIChHUEdfRVJSX0RJR0VTVF9BTEdPLAorICAg ICAgICAgICAgICAgICAgICAgICAicmVxdWVzdGVkIGFsZ28gaGFzIG5vIGZpeGVkIGRpZ2VzdCBs ZW5ndGgiKTsKKyAgZWxzZQorICAgIF9nY3J5X2ZhdGFsX2Vycm9yIChHUEdfRVJSX0RJR0VTVF9B TEdPLCAicmVxdWVzdGVkIGFsZ28gbm90IGluIG1kIGNvbnRleHQiKTsKKyAgcmV0dXJuIE5VTEw7 Cit9CisKKworLyoKKyAqIFJlYWQgb3V0IHRoZSBjb21wbGV0ZSBkaWdlc3QsIHRoaXMgZnVuY3Rp b24gaW1wbGljdGx5IGZpbmFsaXplcworICogdGhlIGhhc2guCisgKi8KK2J5dGUgKgorX2djcnlf bWRfcmVhZCAoZ2NyeV9tZF9oZF90IGhkLCBpbnQgYWxnbykKK3sKKyAgLyogVGhpcyBmdW5jdGlv biBpcyBleHBlY3RlZCB0byBhbHdheXMgcmV0dXJuIGEgZGlnZXN0LCB0aHVzIHdlCisgICAgIGNh bid0IHJldHVybiBhbiBlcnJvciB3aGljaCB3ZSBhY3R1YWxseSBzaG91bGQgZG8gaW4KKyAgICAg bm9uLW9wZXJhdGlvbmFsIHN0YXRlLiAgKi8KKyAgX2djcnlfbWRfY3RsIChoZCwgR0NSWUNUTF9G SU5BTElaRSwgTlVMTCwgMCk7CisgIHJldHVybiBtZF9yZWFkIChoZCwgYWxnbyk7Cit9CisKKy8q CisgKiBTaG9ydGN1dCBmdW5jdGlvbiB0byBoYXNoIGEgYnVmZmVyIHdpdGggYSBnaXZlbiBhbGdv LiBUaGUgb25seQorICogZ3VhcmFudGVlZCBzdXBwb3J0ZWQgYWxnb3JpdGhtcyBhcmUgUklQRS1N RDE2MCBhbmQgU0hBLTEuIFRoZQorICogc3VwcGxpZWQgZGlnZXN0IGJ1ZmZlciBtdXN0IGJlIGxh cmdlIGVub3VnaCB0byBzdG9yZSB0aGUgcmVzdWx0aW5nCisgKiBoYXNoLiAgTm8gZXJyb3IgaXMg cmV0dXJuZWQsIHRoZSBmdW5jdGlvbiB3aWxsIGFib3J0IG9uIGFuIGludmFsaWQKKyAqIGFsZ28u ICBESVNBQkxFRF9BTEdPUyBhcmUgaWdub3JlZCBoZXJlLiAgKi8KK3ZvaWQKK19nY3J5X21kX2hh c2hfYnVmZmVyIChpbnQgYWxnbywgdm9pZCAqZGlnZXN0LAorICAgICAgICAgICAgICAgICAgICAg IGNvbnN0IHZvaWQgKmJ1ZmZlciwgc2l6ZV90IGxlbmd0aCkKK3sKKyAgY29uc3QgZ2NyeV9tZF9z cGVjX3QgKnNwZWM7CisKKyAgc3BlYyA9IHNwZWNfZnJvbV9hbGdvIChhbGdvKTsKKyAgaWYgKCFz cGVjKQorICAgIHsKKyAgICAgIGxvZ19kZWJ1ZyAoIm1kX2hhc2hfYnVmZmVyOiBhbGdvcml0aG0g JWQgbm90IGF2YWlsYWJsZVxuIiwgYWxnbyk7CisgICAgICByZXR1cm47CisgICAgfQorCisgIC8q ICBpZiAoc3BlYy0+aGFzaF9idWZmZXJzICE9IE5VTEwpCisgICAgeworICAgICAgZ2NyeV9idWZm ZXJfdCBpb3Y7CisKKyAgICAgIGlvdi5zaXplID0gMDsKKyAgICAgIGlvdi5kYXRhID0gKHZvaWQg KilidWZmZXI7CisgICAgICBpb3Yub2ZmID0gMDsKKyAgICAgIGlvdi5sZW4gPSBsZW5ndGg7CisK KyAgICAgIGlmIChzcGVjLT5mbGFncy5kaXNhYmxlZCB8fCAoIXNwZWMtPmZsYWdzLmZpcHMgJiYg Zmlwc19tb2RlICgpKSkKKyAgICAgICAgbG9nX2J1ZyAoImdjcnlfbWRfaGFzaF9idWZmZXIgZmFp bGVkIGZvciBhbGdvICVkOiAlcyIsCisgICAgICAgICAgICAgICAgYWxnbywgZ3BnX3N0cmVycm9y IChnY3J5X2Vycm9yIChHUEdfRVJSX0RJR0VTVF9BTEdPKSkpOworCisgICAgICBzcGVjLT5oYXNo X2J1ZmZlcnMgKGRpZ2VzdCwgc3BlYy0+bWRsZW4sICZpb3YsIDEpOworICAgIH0KKyAgICBlbHNl Ki8KKyAgICB7CisgICAgICAvKiBGb3IgdGhlIG90aGVycyB3ZSBkbyBub3QgaGF2ZSBhIGZhc3Qg ZnVuY3Rpb24sIHNvIHdlIHVzZSB0aGUKKyAgICAgICAgIG5vcm1hbCBmdW5jdGlvbnMuICovCisg ICAgICBnY3J5X21kX2hkX3QgaDsKKyAgICAgIGdwZ19lcnJfY29kZV90IGVycjsKKworICAgICAg ZXJyID0gbWRfb3BlbiAoJmgsIGFsZ28sIDApOworICAgICAgaWYgKGVycikKKyAgICAgICAgbG9n X2J1ZyAoImdjcnlfbWRfb3BlbiBmYWlsZWQgZm9yIGFsZ28gJWQ6ICVzIiwKKyAgICAgICAgICAg ICAgICBhbGdvLCBncGdfc3RyZXJyb3IgKGdjcnlfZXJyb3IoZXJyKSkpOworICAgICAgbWRfd3Jp dGUgKGgsIChieXRlICopIGJ1ZmZlciwgbGVuZ3RoKTsKKyAgICAgIG1kX2ZpbmFsIChoKTsKKyAg ICAgIG1lbWNweSAoZGlnZXN0LCBtZF9yZWFkIChoLCBhbGdvKSwgbWRfZGlnZXN0X2xlbmd0aCAo YWxnbykpOworICAgICAgbWRfY2xvc2UgKGgpOworICAgIH0KK30KKworLyoqKioqKioqKioqKioq KioKKyAqIFJldHVybiB0aGUgbGVuZ3RoIG9mIHRoZSBkaWdlc3QKKyAqLworc3RhdGljIGludAor bWRfZGlnZXN0X2xlbmd0aCAoaW50IGFsZ29yaXRobSkKK3sKKyAgY29uc3QgZ2NyeV9tZF9zcGVj X3QgKnNwZWM7CisKKyAgc3BlYyA9IHNwZWNfZnJvbV9hbGdvIChhbGdvcml0aG0pOworICByZXR1 cm4gc3BlYz8gc3BlYy0+bWRsZW4gOiAwOworfQorCisKKy8qKioqKioqKioqKioqKioqCisgKiBS ZXR1cm4gdGhlIGxlbmd0aCBvZiB0aGUgZGlnZXN0IGluIGJ5dGVzLgorICogVGhpcyBmdW5jdGlv biB3aWxsIHJldHVybiAwIGluIGNhc2Ugb2YgZXJyb3JzLgorICovCit1bnNpZ25lZCBpbnQKK19n Y3J5X21kX2dldF9hbGdvX2RsZW4gKGludCBhbGdvcml0aG0pCit7CisgIHJldHVybiBtZF9kaWdl c3RfbGVuZ3RoIChhbGdvcml0aG0pOworfQorCisvKiBIbW1tOiBhZGQgYSBtb2RlIHRvIGVudW1l cmF0ZSB0aGUgT0lEcworICoJdG8gbWFrZSBnMTAvc2lnLWNoZWNrLmMgbW9yZSBwb3J0YWJsZSAq Lworc3RhdGljIGNvbnN0IGJ5dGUgKgorbWRfYXNuX29pZCAoaW50IGFsZ29yaXRobSwgc2l6ZV90 ICphc25sZW4sIHNpemVfdCAqbWRsZW4pCit7CisgIGNvbnN0IGdjcnlfbWRfc3BlY190ICpzcGVj OworICBjb25zdCBieXRlICphc25vaWQgPSBOVUxMOworCisgIHNwZWMgPSBzcGVjX2Zyb21fYWxn byAoYWxnb3JpdGhtKTsKKyAgaWYgKHNwZWMpCisgICAgeworICAgICAgaWYgKGFzbmxlbikKKwkq YXNubGVuID0gc3BlYy0+YXNubGVuOworICAgICAgaWYgKG1kbGVuKQorCSptZGxlbiA9IHNwZWMt Pm1kbGVuOworICAgICAgYXNub2lkID0gc3BlYy0+YXNub2lkOworICAgIH0KKyAgZWxzZQorICAg IGxvZ19idWcgKCJubyBBU04uMSBPSUQgZm9yIG1kIGFsZ28gJWRcbiIsIGFsZ29yaXRobSk7CisK KyAgcmV0dXJuIGFzbm9pZDsKK30KKworCisvKioqKioqKioqKioqKioqKgorICogUmV0dXJuIGlu Zm9ybWF0aW9uIGFib3V0IHRoZSBnaXZlbiBjaXBoZXIgYWxnb3JpdGhtCisgKiBXSEFUIHNlbGVj dCB0aGUga2luZCBvZiBpbmZvcm1hdGlvbiByZXR1cm5lZDoKKyAqICBHQ1JZQ1RMX1RFU1RfQUxH TzoKKyAqCVJldHVybnMgMCB3aGVuIHRoZSBzcGVjaWZpZWQgYWxnb3JpdGhtIGlzIGF2YWlsYWJs ZSBmb3IgdXNlLgorICoJYnVmZmVyIGFuZCBuYnl0ZXMgbXVzdCBiZSB6ZXJvLgorICogIEdDUllD VExfR0VUX0FTTk9JRDoKKyAqCVJldHVybiB0aGUgQVNOT0lEIG9mIHRoZSBhbGdvcml0aG0gaW4g YnVmZmVyLiBpZiBidWZmZXIgaXMgTlVMTCwgb25seQorICoJdGhlIHJlcXVpcmVkIGxlbmd0aCBp cyByZXR1cm5lZC4KKyAqICBHQ1JZQ1RMX1NFTEZURVNUCisgKiAgICAgIEhlbHBlciBmb3IgdGhl IHJlZ3Jlc3Npb24gdGVzdHMgLSBzaGFsbCBub3QgYmUgdXNlZCBieSBhcHBsaWNhdGlvbnMuCisg KgorICogTm90ZTogIEJlY2F1c2UgdGhpcyBmdW5jdGlvbiBpcyBpbiBtb3N0IGNhc2VzIHVzZWQg dG8gcmV0dXJuIGFuCisgKiBpbnRlZ2VyIHZhbHVlLCB3ZSBjYW4gbWFrZSBpdCBlYXNpZXIgZm9y IHRoZSBjYWxsZXIgdG8ganVzdCBsb29rIGF0CisgKiB0aGUgcmV0dXJuIHZhbHVlLiAgVGhlIGNh bGxlciB3aWxsIGluIGFsbCBjYXNlcyBjb25zdWx0IHRoZSB2YWx1ZQorICogYW5kIHRoZXJlYnkg ZGV0ZWN0aW5nIHdoZXRoZXIgYSBlcnJvciBvY2N1cnJlZCBvciBub3QgKGkuZS4gd2hpbGUgY2hl Y2tpbmcKKyAqIHRoZSBibG9jayBzaXplKQorICovCitnY3J5X2Vycl9jb2RlX3QKK19nY3J5X21k X2FsZ29faW5mbyAoaW50IGFsZ28sIGludCB3aGF0LCB2b2lkICpidWZmZXIsIHNpemVfdCAqbmJ5 dGVzKQoreworICBnY3J5X2Vycl9jb2RlX3QgcmM7CisKKyAgc3dpdGNoICh3aGF0KQorICAgIHsK KyAgICBjYXNlIEdDUllDVExfVEVTVF9BTEdPOgorICAgICAgaWYgKGJ1ZmZlciB8fCBuYnl0ZXMp CisJcmMgPSBHUEdfRVJSX0lOVl9BUkc7CisgICAgICBlbHNlCisJcmMgPSBjaGVja19kaWdlc3Rf YWxnbyAoYWxnbyk7CisgICAgICBicmVhazsKKworICAgIGNhc2UgR0NSWUNUTF9HRVRfQVNOT0lE OgorICAgICAgLyogV2UgbmVlZCB0byBjaGVjayB0aGF0IHRoZSBhbGdvIGlzIGF2YWlsYWJsZSBi ZWNhdXNlCisgICAgICAgICBtZF9hc25fb2lkIHdvdWxkIG90aGVyd2lzZSByYWlzZSBhbiBhc3Nl cnRpb24uICovCisgICAgICByYyA9IGNoZWNrX2RpZ2VzdF9hbGdvIChhbGdvKTsKKyAgICAgIGlm ICghcmMpCisgICAgICAgIHsKKyAgICAgICAgICBjb25zdCBjaGFyIHVuc2lnbmVkICphc247Cisg ICAgICAgICAgc2l6ZV90IGFzbmxlbjsKKworICAgICAgICAgIGFzbiA9IG1kX2Fzbl9vaWQgKGFs Z28sICZhc25sZW4sIE5VTEwpOworICAgICAgICAgIGlmIChidWZmZXIgJiYgKCpuYnl0ZXMgPj0g YXNubGVuKSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgbWVtY3B5IChidWZmZXIsIGFz biwgYXNubGVuKTsKKyAgICAgICAgICAgICAgKm5ieXRlcyA9IGFzbmxlbjsKKyAgICAgICAgICAg IH0KKyAgICAgICAgICBlbHNlIGlmICghYnVmZmVyICYmIG5ieXRlcykKKyAgICAgICAgICAgICpu Ynl0ZXMgPSBhc25sZW47CisgICAgICAgICAgZWxzZQorICAgICAgICAgICAgeworICAgICAgICAg ICAgICBpZiAoYnVmZmVyKQorICAgICAgICAgICAgICAgIHJjID0gR1BHX0VSUl9UT09fU0hPUlQ7 CisgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICByYyA9IEdQR19FUlJfSU5WX0FS RzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgYnJlYWs7CisKKyAgICBkZWZhdWx0 OgorICAgICAgcmMgPSBHUEdfRVJSX0lOVl9PUDsKKyAgICAgIGJyZWFrOworICB9CisKKyAgcmV0 dXJuIHJjOworfQpkaWZmIC0tZ2l0IGEvZ3J1Yi1jb3JlL2xpYi9saWJnY3J5cHRfd3JhcC9tZW0u YyBiL2dydWItY29yZS9saWIvbGliZ2NyeXB0X3dyYXAvbWVtLmMKaW5kZXggNzRjNmVhZmU1Li5h YjBjZjRhZDMgMTAwNjQ0Ci0tLSBhL2dydWItY29yZS9saWIvbGliZ2NyeXB0X3dyYXAvbWVtLmMK KysrIGIvZ3J1Yi1jb3JlL2xpYi9saWJnY3J5cHRfd3JhcC9tZW0uYwpAQCAtNDYsNiArNDYsMTUg QEAgZ2NyeV94Y2FsbG9jIChzaXplX3Qgbiwgc2l6ZV90IG0pCiAgIHJldHVybiByZXQ7CiB9CiAK K3ZvaWQgKgorX2djcnlfY2FsbG9jIChzaXplX3Qgbiwgc2l6ZV90IG0pCit7CisgIHNpemVfdCBz ejsKKyAgaWYgKGdydWJfbXVsIChuLCBtLCAmc3opKQorICAgIHJldHVybiBOVUxMOworICByZXR1 cm4gZ3J1Yl96YWxsb2MgKHN6KTsKK30KKwogdm9pZCAqCiBnY3J5X3htYWxsb2Nfc2VjdXJlIChz aXplX3QgbikKIHsKQEAgLTY5LDYgKzc4LDE1IEBAIGdjcnlfeGNhbGxvY19zZWN1cmUgKHNpemVf dCBuLCBzaXplX3QgbSkKICAgcmV0dXJuIHJldDsKIH0KIAordm9pZCAqCitfZ2NyeV9jYWxsb2Nf c2VjdXJlIChzaXplX3Qgbiwgc2l6ZV90IG0pCit7CisgIHNpemVfdCBzejsKKyAgaWYgKGdydWJf bXVsIChuLCBtLCAmc3opKQorICAgIHJldHVybiBOVUxMOworICByZXR1cm4gZ3J1Yl96YWxsb2Mg KHN6KTsKK30KKwogdm9pZCAqCiBnY3J5X3htYWxsb2MgKHNpemVfdCBuKQogewpAQCAtODksNiAr MTA3LDEyIEBAIGdjcnlfeHJlYWxsb2MgKHZvaWQgKmEsIHNpemVfdCBuKQogICByZXR1cm4gcmV0 OwogfQogCit2b2lkICoKK19nY3J5X3JlYWxsb2MgKHZvaWQgKmEsIHNpemVfdCBuKQoreworICBy ZXR1cm4gZ3J1Yl9yZWFsbG9jIChhLCBuKTsKK30KKwogdm9pZAogX2djcnlfY2hlY2tfaGVhcCAo Y29uc3Qgdm9pZCAqYSBfX2F0dHJpYnV0ZV9fICgodW51c2VkKSkpCiB7CkBAIC0xMTMsNiArMTM3 LDI0IEBAIHZvaWQgX2djcnlfbG9nX3ByaW50ZiAoY29uc3QgY2hhciAqZm10LCAuLi4pCiAgICAg fQogfQogCit2b2lkIF9nY3J5X2xvZ19kZWJ1ZyAoY29uc3QgY2hhciAqZm10LCAuLi4pCit7Cisg IHZhX2xpc3QgYXJnczsKKyAgY29uc3QgY2hhciAqZGVidWcgPSBncnViX2Vudl9nZXQgKCJkZWJ1 ZyIpOworCisgIGlmICghIGRlYnVnKQorICAgIHJldHVybjsKKworICBpZiAoZ3J1Yl9zdHJ3b3Jk IChkZWJ1ZywgImFsbCIpIHx8IGdydWJfc3Ryd29yZCAoZGVidWcsICJnY3J5cHQiKSkKKyAgICB7 CisgICAgICBncnViX3ByaW50ZiAoImdjcnlwdDogIik7CisgICAgICB2YV9zdGFydCAoYXJncywg Zm10KTsKKyAgICAgIGdydWJfdnByaW50ZiAoZm10LCBhcmdzKTsKKyAgICAgIHZhX2VuZCAoYXJn cyk7CisgICAgICBncnViX3JlZnJlc2ggKCk7CisgICAgfQorfQorCiB2b2lkIF9nY3J5X2xvZ19i dWcgKGNvbnN0IGNoYXIgKmZtdCwgLi4uKQogewogICB2YV9saXN0IGFyZ3M7CkBAIC0xMjYsOSAr MTY4LDkgQEAgdm9pZCBfZ2NyeV9sb2dfYnVnIChjb25zdCBjaGFyICpmbXQsIC4uLikKIH0KIAog Z2NyeV9lcnJfY29kZV90Ci1ncGdfZXJyb3JfZnJvbV9zeXNlcnJvciAodm9pZCkKK2dwZ19lcnJf Y29kZV9mcm9tX2Vycm5vIChpbnQgZXJyKQogewotICBzd2l0Y2ggKGdydWJfZXJybm8pCisgIHN3 aXRjaCAoZXJyKQogICAgIHsKICAgICBjYXNlIEdSVUJfRVJSX05PTkU6CiAgICAgICByZXR1cm4g R1BHX0VSUl9OT19FUlJPUjsKQEAgLTEzOCwzICsxODAsNDAgQEAgZ3BnX2Vycm9yX2Zyb21fc3lz ZXJyb3IgKHZvaWQpCiAgICAgICByZXR1cm4gR1BHX0VSUl9HRU5FUkFMOwogICAgIH0KIH0KKwor Z2NyeV9lcnJfY29kZV90CitncGdfZXJyb3JfZnJvbV9zeXNlcnJvciAodm9pZCkKK3sKKyAgcmV0 dXJuIGdwZ19lcnJfY29kZV9mcm9tX2Vycm5vKGdydWJfZXJybm8pOworfQorCitnY3J5X2Vycl9j b2RlX3QKK2dwZ19lcnJfY29kZV9mcm9tX3N5c2Vycm9yICh2b2lkKQoreworICByZXR1cm4gZ3Bn X2Vycm9yX2Zyb21fc3lzZXJyb3IgKCk7Cit9CisKK3ZvaWQgX2djcnlfZmF0YWxfZXJyb3IoaW50 IHJjLCBjb25zdCBjaGFyICp0ZXh0ICkKK3sKKyAgZ3J1Yl9mYXRhbCgiZ2NyeSBmYXRhbCAlZDog JXMiLCByYywgdGV4dCk7Cit9CisKKwordm9pZCBfZ2NyeV9yYW5kb21pemUgKHZvaWQgKmJ1ZmZl ciBfX2F0dHJpYnV0ZV9fKCh1bnVzZWQpKSwgc2l6ZV90IGxlbmd0aCBfX2F0dHJpYnV0ZV9fKCh1 bnVzZWQpKSwKKyAgICAgICAgICAgICAgICAgICAgICBlbnVtIGdjcnlfcmFuZG9tX2xldmVsIGxl dmVsIF9fYXR0cmlidXRlX18oKHVudXNlZCkpKQoreworICBncnViX2ZhdGFsKCJBdHRlbXB0IHRv IGdldCBzZWN1cmUgcmFuZG9tIG51bWJlcnMiKTsKK30KKworCit2b2lkICpfZ2NyeV9yYW5kb21f Ynl0ZXNfc2VjdXJlIChzaXplX3QgbmJ5dGVzIF9fYXR0cmlidXRlX18oKHVudXNlZCkpLCBlbnVt IGdjcnlfcmFuZG9tX2xldmVsIGxldmVsIF9fYXR0cmlidXRlX18oKHVudXNlZCkpKQoreworICBn cnViX2ZhdGFsKCJBdHRlbXB0IHRvIGdldCBzZWN1cmUgcmFuZG9tIG51bWJlcnMiKTsKK30KKwor Y29uc3QgY2hhciAqZ3BnX3N0cmVycm9yIChncGdfZXJyb3JfdCBlcnIpCit7CisgIHN0YXRpYyBj aGFyIGJ1ZlsyNTZdOworICBncnViX3NucHJpbnRmKGJ1Ziwgc2l6ZW9mKGJ1ZikgLSA1LCAiZ3Bn IGVycm9yICVkXG4iLCBlcnIpOworICByZXR1cm4gYnVmOworfQpkaWZmIC0tZ2l0IGEvZ3J1Yi1j b3JlL2xpYi94emVtYmVkL3h6X2RlY19zdHJlYW0uYyBiL2dydWItY29yZS9saWIveHplbWJlZC94 el9kZWNfc3RyZWFtLmMKaW5kZXggODMyZDhhZjlhLi5mMmRkNDJkYzIgMTAwNjQ0Ci0tLSBhL2dy dWItY29yZS9saWIveHplbWJlZC94el9kZWNfc3RyZWFtLmMKKysrIGIvZ3J1Yi1jb3JlL2xpYi94 emVtYmVkL3h6X2RlY19zdHJlYW0uYwpAQCAtNDI1LDkgKzQyNSw5IEBAIHN0YXRpYyBlbnVtIHh6 X3JldCBoYXNoX3ZhbGlkYXRlKHN0cnVjdCB4el9kZWMgKnMsIHN0cnVjdCB4el9idWYgKmIsCiAK ICNpZm5kZWYgR1JVQl9FTUJFRF9ERUNPTVBSRVNTT1IKIAlpZiAocy0+aGFzaCkKLQkJcy0+aGFz aC0+aW5pdChzLT5oYXNoX2NvbnRleHQpOworCQlzLT5oYXNoLT5pbml0KHMtPmhhc2hfY29udGV4 dCwgMCk7CiAJaWYgKHMtPmNyYzMyKQotCQlzLT5jcmMzMi0+aW5pdChzLT5jcmMzMl9jb250ZXh0 KTsKKwkJcy0+Y3JjMzItPmluaXQocy0+Y3JjMzJfY29udGV4dCwgMCk7CiAjZW5kaWYKIAlzLT5o YXZlX2hhc2hfdmFsdWUgPSAwOwogCXMtPnBvcyA9IDA7CkBAIC00OTMsNyArNDkzLDcgQEAgc3Rh dGljIGVudW0geHpfcmV0IGRlY19zdHJlYW1faGVhZGVyKHN0cnVjdCB4el9kZWMgKnMpCiAJCXMt PmNyYzMyX2NvbnRleHQgPSBrbWFsbG9jKHMtPmNyYzMyLT5jb250ZXh0c2l6ZSwgR0ZQX0tFUk5F TCk7CiAJCWlmIChzLT5jcmMzMl9jb250ZXh0ID09IE5VTEwpCiAJCQlyZXR1cm4gWFpfTUVNTElN SVRfRVJST1I7Ci0JCXMtPmNyYzMyLT5pbml0KHMtPmNyYzMyX2NvbnRleHQpOworCQlzLT5jcmMz Mi0+aW5pdChzLT5jcmMzMl9jb250ZXh0LCAwKTsKIAl9CiAjZW5kaWYKIApAQCAtNTMxLDkgKzUz MSw5IEBAIHN0YXRpYyBlbnVtIHh6X3JldCBkZWNfc3RyZWFtX2hlYWRlcihzdHJ1Y3QgeHpfZGVj ICpzKQogCQkJCXJldHVybiBYWl9NRU1MSU1JVF9FUlJPUjsKIAkJCX0KIAotCQkJcy0+aGFzaC0+ aW5pdChzLT5oYXNoX2NvbnRleHQpOwotCQkJcy0+aGFzaC0+aW5pdChzLT5pbmRleC5oYXNoLmhh c2hfY29udGV4dCk7Ci0gCQkJcy0+aGFzaC0+aW5pdChzLT5ibG9jay5oYXNoLmhhc2hfY29udGV4 dCk7CisJCQlzLT5oYXNoLT5pbml0KHMtPmhhc2hfY29udGV4dCwgMCk7CisJCQlzLT5oYXNoLT5p bml0KHMtPmluZGV4Lmhhc2guaGFzaF9jb250ZXh0LCAwKTsKKyAJCQlzLT5oYXNoLT5pbml0KHMt PmJsb2NrLmhhc2guaGFzaF9jb250ZXh0LCAwKTsKIAkJfQogI2VuZGlmCiAJfQpAQCAtMTAxNCw5 ICsxMDE0LDkgQEAgdm9pZCB4el9kZWNfcmVzZXQoc3RydWN0IHh6X2RlYyAqcykKICNpZm5kZWYg R1JVQl9FTUJFRF9ERUNPTVBSRVNTT1IKIAlpZiAocy0+aGFzaCkKIAl7Ci0JCXMtPmhhc2gtPmlu aXQocy0+aGFzaF9jb250ZXh0KTsKLQkJcy0+aGFzaC0+aW5pdChzLT5pbmRleC5oYXNoLmhhc2hf Y29udGV4dCk7Ci0JCXMtPmhhc2gtPmluaXQocy0+YmxvY2suaGFzaC5oYXNoX2NvbnRleHQpOwor CQlzLT5oYXNoLT5pbml0KHMtPmhhc2hfY29udGV4dCwgMCk7CisJCXMtPmhhc2gtPmluaXQocy0+ aW5kZXguaGFzaC5oYXNoX2NvbnRleHQsIDApOworCQlzLT5oYXNoLT5pbml0KHMtPmJsb2NrLmhh c2guaGFzaF9jb250ZXh0LCAwKTsKIAl9CiAjZW5kaWYKIAlzLT5oYXZlX2hhc2hfdmFsdWUgPSAw OwpkaWZmIC0tZ2l0IGEvZ3J1Yi1jb3JlL3Rlc3RzL2RzYV9zZXhwX3Rlc3QuYyBiL2dydWItY29y ZS90ZXN0cy9kc2Ffc2V4cF90ZXN0LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MDAwLi5lYTIzM2JmMGMKLS0tIC9kZXYvbnVsbAorKysgYi9ncnViLWNvcmUvdGVzdHMvZHNhX3Nl eHBfdGVzdC5jCkBAIC0wLDAgKzEsMTA3IEBACisjaW5jbHVkZSA8Z3J1Yi90ZXN0Lmg+CisjaW5j bHVkZSA8Z3J1Yi9jcnlwdG8uaD4KKyNpbmNsdWRlIDxncnViL2djcnlwdC9nY3J5cHQuaD4KKwor R1JVQl9NT0RfTElDRU5TRSAoIkdQTHYzKyIpOworCitzdGF0aWMgY2hhciBwdWJrZXlfZHVtcFtd ID0geworICAweDI4LCAweDMxLCAweDMwLCAweDNhLCAweDcwLCAweDc1LCAweDYyLCAweDZjLCAK KyAgMHg2OSwgMHg2MywgMHgyZCwgMHg2YiwgMHg2NSwgMHg3OSwgMHgyOCwgMHgzMywgCisgIDB4 M2EsIDB4NjQsIDB4NzMsIDB4NjEsIDB4MjgsIDB4MzEsIDB4M2EsIDB4NzAsIAorICAweDMxLCAw eDMyLCAweDM5LCAweDNhLCAweDAwLCAweGMwLCAweDUwLCAweDE0LCAKKyAgMHg0YywgMHg5Nywg MHgxMCwgMHg2OSwgMHgwNywgMHhhNywgMHhlOSwgMHgyYiwgCisgIDB4ZTUsIDB4YzYsIDB4ODgs IDB4ZTEsIDB4NmQsIDB4ZDgsIDB4MzgsIDB4MjgsIAorICAweDA5LCAweDQ5LCAweDViLCAweGU4 LCAweGEzLCAweDA0LCAweGI4LCAweGM0LCAKKyAgMHg2ZSwgMHg5OCwgMHhjMSwgMHhjMiwgMHhi MCwgMHgyYSwgMHhlMCwgMHhlMiwgCisgIDB4MWEsIDB4MzAsIDB4ZDIsIDB4ZGIsIDB4NDUsIDB4 MWEsIDB4ODgsIDB4ODAsIAorICAweDI4LCAweDI0LCAweGIwLCAweGJmLCAweGMyLCAweGJkLCAw eGU5LCAweGY2LCAKKyAgMHg5ZCwgMHhhMiwgMHgwMSwgMHg5NCwgMHhlNiwgMHg3ZiwgMHhhMCwg MHhiNiwgCisgIDB4ZTQsIDB4MzksIDB4ZmMsIDB4NTQsIDB4YmEsIDB4OTksIDB4YjYsIDB4YmUs IAorICAweDM5LCAweGVlLCAweGE1LCAweGQ5LCAweGEwLCAweDM1LCAweDNjLCAweDJkLCAKKyAg MHgzZSwgMHg5NiwgMHhjMywgMHg5NiwgMHhhNSwgMHgwZCwgMHgyYiwgMHhiZiwgCisgIDB4M2Is IDB4YTMsIDB4ZTIsIDB4ZTgsIDB4ODksIDB4ZWQsIDB4NjAsIDB4ZTAsIAorICAweDQzLCAweDYx LCAweGI2LCAweDczLCAweGY2LCAweGE3LCAweGI0LCAweDU2LCAKKyAgMHg3NiwgMHgwNCwgMHhm NywgMHg4YiwgMHhmMSwgMHg4NCwgMHhhYSwgMHgzZSwgCisgIDB4ZTAsIDB4MDgsIDB4YWQsIDB4 ZGQsIDB4YzIsIDB4MzYsIDB4ZmQsIDB4M2QsIAorICAweGQwLCAweGFkLCAweGY0LCAweDNhLCAw eDdlLCAweDgwLCAweDhjLCAweDUyLCAKKyAgMHgyYiwgMHgwNCwgMHhhOCwgMHgwMywgMHgyNywg MHgyOSwgMHgyOCwgMHgzMSwgCisgIDB4M2EsIDB4NzEsIDB4MzIsIDB4MzEsIDB4M2EsIDB4MDAs IDB4ZDUsIDB4MzQsIAorICAweGQyLCAweGM1LCAweDFjLCAweDI2LCAweGRmLCAweGIwLCAweGJh LCAweDc4LCAKKyAgMHg3NSwgMHhlNSwgMHhlOSwgMHgzNiwgMHg2YiwgMHgwNCwgMHgwMywgMHhl MiwgCisgIDB4NTcsIDB4M2YsIDB4MjksIDB4MjgsIDB4MzEsIDB4M2EsIDB4NjcsIDB4MzEsIAor ICAweDMyLCAweDM4LCAweDNhLCAweDNiLCAweGEwLCAweGFjLCAweGEzLCAweGExLCAKKyAgMHhk MSwgMHgwNCwgMHgyMywgMHg1ZiwgMHg5ZiwgMHhiYywgMHg2ZCwgMHg5ZSwgCisgIDB4ODgsIDB4 MmEsIDB4MjgsIDB4YzEsIDB4NDgsIDB4YWYsIDB4YTUsIDB4MTcsIAorICAweDU5LCAweDNhLCAw eDE3LCAweDMzLCAweDU2LCAweGFhLCAweDhkLCAweDI3LCAKKyAgMHg2NCwgMHhmZSwgMHg4ZSwg MHg4YSwgMHgyZSwgMHhiYSwgMHhmMiwgMHg2NiwgCisgIDB4Y2MsIDB4NjYsIDB4YmQsIDB4YTQs IDB4ZmUsIDB4YTksIDB4MDcsIDB4MGQsIAorICAweGFlLCAweDhjLCAweDlmLCAweDcwLCAweGY3 LCAweDg3LCAweGFhLCAweDAxLCAKKyAgMHg0NywgMHg2YiwgMHhmOSwgMHgwZiwgMHgwOSwgMHgx OCwgMHg0MiwgMHg3NiwgCisgIDB4YzQsIDB4YTMsIDB4YjksIDB4NTUsIDB4MTEsIDB4OGQsIDB4 YTMsIDB4YTUsIAorICAweDY5LCAweDMwLCAweDkxLCAweGI3LCAweDAzLCAweGVmLCAweDdmLCAw eDEyLCAKKyAgMHhlNiwgMHhiOSwgMHg3OCwgMHg3MywgMHhlMCwgMHhjMCwgMHg0ZiwgMHhjNiwg CisgIDB4ZDksIDB4NDMsIDB4OTksIDB4OTUsIDB4MGIsIDB4NGQsIDB4NTgsIDB4ZDMsIAorICAw eDZiLCAweDc2LCAweGIwLCAweDZhLCAweGNmLCAweDY4LCAweDZkLCAweGYwLCAKKyAgMHhkOSwg MHhjMSwgMHg4OCwgMHg0MywgMHg5ZCwgMHhmOSwgMHgwNCwgMHhjYiwgCisgIDB4YzksIDB4ODIs IDB4NmMsIDB4ZWUsIDB4ZDQsIDB4OWMsIDB4YmQsIDB4MWMsIAorICAweDRkLCAweDU0LCAweDI5 LCAweDgzLCAweGE5LCAweDVlLCAweGFhLCAweDEwLCAKKyAgMHhhNywgMHhjMSwgMHgwNCwgMHgy OSwgMHgyOCwgMHgzMSwgMHgzYSwgMHg3OSwgCisgIDB4MzEsIDB4MzIsIDB4MzksIDB4M2EsIDB4 MDAsIDB4ODIsIDB4MzMsIDB4ZjEsIAorICAweDkxLCAweGUzLCAweGYyLCAweDEyLCAweDkzLCAw eDVhLCAweGVkLCAweDBjLCAKKyAgMHg5ZCwgMHhlYywgMHg2NywgMHhhYSwgMHhhNywgMHg5Nywg MHg3ZiwgMHg5ZiwgCisgIDB4NWUsIDB4ZWYsIDB4NmEsIDB4M2UsIDB4YTQsIDB4N2YsIDB4OWIs IDB4ZWQsIAorICAweDY1LCAweGQ3LCAweGJhLCAweDQwLCAweDZkLCAweGUxLCAweGRlLCAweGMx LCAKKyAgMHgxNCwgMHg0YywgMHg5YiwgMHgyOCwgMHg1YywgMHgwMywgMHg4ZSwgMHgxYSwgCisg IDB4ZDQsIDB4MWIsIDB4ODAsIDB4MWIsIDB4MDcsIDB4ZDYsIDB4ODQsIDB4MDQsIAorICAweDQ5 LCAweDZjLCAweDFiLCAweDA4LCAweDg0LCAweDE1LCAweDU0LCAweDYyLCAKKyAgMHhjYSwgMHhk NSwgMHg3NSwgMHhmZiwgMHhjOCwgMHhiMywgMHg4MSwgMHg3NiwgCisgIDB4ODIsIDB4OTEsIDB4 MzUsIDB4ODAsIDB4MjAsIDB4NzMsIDB4MmEsIDB4MjEsIAorICAweGNhLCAweDIyLCAweDA2LCAw eGE3LCAweDczLCAweDk5LCAweDc1LCAweDdlLCAKKyAgMHg1ZSwgMHhhNiwgMHgwOSwgMHg1OSwg MHg2NiwgMHgyYywgMHhjZCwgMHhiMSwgCisgIDB4OGQsIDB4M2IsIDB4YzAsIDB4NjgsIDB4YzUs IDB4NDEsIDB4YTAsIDB4OWQsIAorICAweDgyLCAweDE1LCAweGM0LCAweGRkLCAweDQ3LCAweDFj LCAweDViLCAweGE5LCAKKyAgMHg3NCwgMHgxOCwgMHhhZiwgMHg3MiwgMHg2MywgMHg2YiwgMHgw YSwgMHg0ZSwgCisgIDB4OTUsIDB4MDksIDB4N2EsIDB4YjUsIDB4NGIsIDB4OTgsIDB4ODUsIDB4 YjksIAorICAweDZkLCAweDlkLCAweDNiLCAweDczLCAweDhjLCAweDI5LCAweDI5LCAweDI5LCAK K307CisKK3N0YXRpYyBjaGFyIHNpZ19kdW1wW10gPSB7CisgIDB4MjgsIDB4MzcsIDB4M2EsIDB4 NzMsIDB4NjksIDB4NjcsIDB4MmQsIDB4NzYsIAorICAweDYxLCAweDZjLCAweDI4LCAweDMzLCAw eDNhLCAweDY0LCAweDczLCAweDYxLCAKKyAgMHgyOCwgMHgzMSwgMHgzYSwgMHg3MiwgMHgzMiwg MHgzMCwgMHgzYSwgMHhiNiwgCisgIDB4NjAsIDB4MzcsIDB4ZWYsIDB4MDIsIDB4N2MsIDB4N2Ms IDB4NmUsIDB4NGYsIAorICAweDY2LCAweDhjLCAweDdjLCAweDI2LCAweDc3LCAweGQ5LCAweDMz LCAweDkwLCAKKyAgMHhiYSwgMHg3YywgMHhmYiwgMHgyOSwgMHgyOCwgMHgzMSwgMHgzYSwgMHg3 MywgCisgIDB4MzIsIDB4MzAsIDB4M2EsIDB4ODMsIDB4YzAsIDB4ODQsIDB4NzIsIDB4YzYsIAor ICAweDFjLCAweDg1LCAweDZmLCAweDhiLCAweDliLCAweGIwLCAweDM4LCAweDM4LCAKKyAgMHhi MiwgMHhiNiwgMHhkZiwgMHgxYywgMHg1MiwgMHg5NiwgMHgxYiwgMHgyOSwgCisgIDB4MjksIDB4 MjksCit9OworCitleHRlcm4gZ2NyeV9wa19zcGVjX3QgX2djcnlfcHVia2V5X3NwZWNfZHNhOwor CitzdGF0aWMgdm9pZAorZHNhX3NleHBfdGVzdCAodm9pZCkKK3sKKyAgZ2NyeV9zZXhwX3Qgc2ln bl9wYXJtcywgc2lnbl9wYXJtc19pbnZhbGlkLCBwdWJrZXksIHNpZzsKKyAgaW50IHJjOworICBn cnViX3NpemVfdCBlcnJvZjsKKworICByYyA9IF9nY3J5X3NleHBfYnVpbGQgKCZzaWduX3Bhcm1z X2ludmFsaWQsICZlcnJvZiwKKwkJCSIoZGF0YSAodmFsdWUgXCJoaVwiKSlcbiIpOworICBncnVi X3Rlc3RfYXNzZXJ0IChyYyA9PSAwLCAic2V4cCBidWlsZCBmYWlsZWQiKTsKKworICByYyA9IF9n Y3J5X3NleHBfYnVpbGQgKCZzaWduX3Bhcm1zLCAmZXJyb2YsCisJCQkiKGRhdGEgKHZhbHVlIFwi aGVsbG9cIikpXG4iKTsKKyAgZ3J1Yl90ZXN0X2Fzc2VydCAocmMgPT0gMCwgInNleHAgYnVpbGQg ZmFpbGVkIik7CisgIHJjID0gX2djcnlfc2V4cF9uZXcgKCZwdWJrZXksIHB1YmtleV9kdW1wLCBz aXplb2YocHVia2V5X2R1bXApLCAwKTsKKyAgZ3J1Yl90ZXN0X2Fzc2VydCAocmMgPT0gMCwgInNl eHAgbmV3IGZhaWxlZCIpOworICByYyA9IF9nY3J5X3NleHBfbmV3ICgmc2lnLCBzaWdfZHVtcCwg c2l6ZW9mKHNpZ19kdW1wKSwgMCk7CisgIGdydWJfdGVzdF9hc3NlcnQgKHJjID09IDAsICJzZXhw IG5ldyBmYWlsZWQiKTsKKyAgcmMgPSBfZ2NyeV9wdWJrZXlfc3BlY19kc2EudmVyaWZ5IChzaWcs IHNpZ25fcGFybXMsIHB1YmtleSk7CisgIGdydWJfdGVzdF9hc3NlcnQgKHJjID09IDAsICJzaWdu YXR1cmUgdmVyaWZpY2F0aW9uIGZhaWxlZDogJWQiLCByYyk7CisgIHJjID0gX2djcnlfcHVia2V5 X3NwZWNfZHNhLnZlcmlmeSAoc2lnLCBzaWduX3Bhcm1zX2ludmFsaWQsIHB1YmtleSk7CisgIGdy dWJfdGVzdF9hc3NlcnQgKHJjICE9IDAsICJzaWduYXR1cmUgdmVyaWZpY2F0aW9uIHN1Y2NlZGVk IHdyb25nbHkiKTsKK30KKworR1JVQl9GVU5DVElPTkFMX1RFU1QgKGRzYV9zZXhwX3Rlc3QsIGRz YV9zZXhwX3Rlc3QpOwpkaWZmIC0tZ2l0IGEvZ3J1Yi1jb3JlL3Rlc3RzL3JzYV9zZXhwX3Rlc3Qu YyBiL2dydWItY29yZS90ZXN0cy9yc2Ffc2V4cF90ZXN0LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMDAwLi5lMDBiZWZlNGUKLS0tIC9kZXYvbnVsbAorKysgYi9ncnViLWNvcmUv dGVzdHMvcnNhX3NleHBfdGVzdC5jCkBAIC0wLDAgKzEsODEgQEAKKyNpbmNsdWRlIDxncnViL3Rl c3QuaD4KKyNpbmNsdWRlIDxncnViL2NyeXB0by5oPgorI2luY2x1ZGUgPGdydWIvZ2NyeXB0L2dj cnlwdC5oPgorCitHUlVCX01PRF9MSUNFTlNFICgiR1BMdjMrIik7CisKK3N0YXRpYyBjaGFyIHB1 YmtleV9kdW1wW10gPSB7CisgIDB4MjgsIDB4MzEsIDB4MzAsIDB4M2EsIDB4NzAsIDB4NzUsIDB4 NjIsIDB4NmMsIAorICAweDY5LCAweDYzLCAweDJkLCAweDZiLCAweDY1LCAweDc5LCAweDI4LCAw eDMzLCAKKyAgMHgzYSwgMHg3MiwgMHg3MywgMHg2MSwgMHgyOCwgMHgzMSwgMHgzYSwgMHg2ZSwg CisgIDB4MzEsIDB4MzIsIDB4MzksIDB4M2EsIDB4MDAsIDB4ZTEsIDB4MzUsIDB4YzEsIAorICAw eDk3LCAweDkwLCAweGU4LCAweDU0LCAweGE4LCAweDNiLCAweDk3LCAweDA1LCAKKyAgMHhhZiwg MHg0NSwgMHhhZiwgMHg2NywgMHhiZiwgMHhlYywgMHgwNywgMHhiZSwgCisgIDB4OWIsIDB4NTUs IDB4OWMsIDB4M2YsIDB4NDcsIDB4YWUsIDB4MjUsIDB4YjYsIAorICAweGUzLCAweDIzLCAweDk5 LCAweDEwLCAweDVlLCAweDE3LCAweDFhLCAweGRhLCAKKyAgMHgzMywgMHhlNiwgMHg3MywgMHgw ZCwgMHg5NiwgMHg5YywgMHg1YywgMHgyNSwgCisgIDB4MTMsIDB4NWQsIDB4NDksIDB4YjksIDB4 ODYsIDB4YzAsIDB4YjEsIDB4ODAsIAorICAweDI5LCAweDIwLCAweGIyLCAweDkxLCAweDcyLCAw eDQzLCAweGNjLCAweDJhLCAKKyAgMHg2NywgMHhkMywgMHgxMSwgMHhlOCwgMHg3YiwgMHgyMSwg MHg3NSwgMHhmNiwgCisgIDB4MWIsIDB4YzAsIDB4YjIsIDB4MDEsIDB4YzgsIDB4MzUsIDB4YWEs IDB4ZmIsIAorICAweGE3LCAweDI5LCAweGI0LCAweGI5LCAweDk0LCAweDRlLCAweDUzLCAweDQ5 LCAKKyAgMHg4MiwgMHg3NCwgMHhlOSwgMHgyMywgMHg2OSwgMHhhNCwgMHhmNiwgMHhkZiwgCisg IDB4NDAsIDB4MmEsIDB4NzMsIDB4MDEsIDB4ZmEsIDB4ZTcsIDB4ZjgsIDB4MzIsIAorICAweDZi LCAweDU3LCAweGZlLCAweGI5LCAweDdkLCAweDAyLCAweGMyLCAweGZiLCAKKyAgMHg3ZiwgMHg5 OSwgMHgxZiwgMHg2ZSwgMHg4ZCwgMHg1MywgMHgwMSwgMHg1NiwgCisgIDB4YWYsIDB4NDYsIDB4 NjIsIDB4YjMsIDB4ZTAsIDB4YTgsIDB4YTYsIDB4MGEsIAorICAweDU1LCAweDJjLCAweDRiLCAw eDg1LCAweDViLCAweDI5LCAweDI4LCAweDMxLCAKKyAgMHgzYSwgMHg2NSwgMHgzMywgMHgzYSwg MHgwMSwgMHgwMCwgMHgwMSwgMHgyOSwgCisgIDB4MjksIDB4MjksIAorfTsKKworc3RhdGljIGNo YXIgc2lnX2R1bXBbXSA9IHsKKyAgMHgyOCwgMHgzNywgMHgzYSwgMHg3MywgMHg2OSwgMHg2Nywg MHgyZCwgMHg3NiwgCisgIDB4NjEsIDB4NmMsIDB4MjgsIDB4MzMsIDB4M2EsIDB4NzIsIDB4NzMs IDB4NjEsIAorICAweDI4LCAweDMxLCAweDNhLCAweDczLCAweDMxLCAweDMyLCAweDM4LCAweDNh LCAKKyAgMHg1YiwgMHgyZCwgMHhlYiwgMHhhNSwgMHg0YiwgMHg4YiwgMHhkOSwgMHg5MiwgCisg IDB4NjYsIDB4NTcsIDB4ODksIDB4ZDgsIDB4MzEsIDB4YzAsIDB4MGUsIDB4NTMsIAorICAweGY4 LCAweDFjLCAweDRmLCAweGM4LCAweDc5LCAweDY3LCAweGI5LCAweDEwLCAKKyAgMHhlNSwgMHg2 MywgMHg1ZiwgMHhlZiwgMHhiMSwgMHgwYiwgMHgwZSwgMHg3ZiwgCisgIDB4ZWQsIDB4ODYsIDB4 MDYsIDB4YTgsIDB4MDUsIDB4YmYsIDB4NmIsIDB4ZDEsIAorICAweDM2LCAweDQxLCAweDA4LCAw eDNiLCAweGQwLCAweGJkLCAweGVmLCAweGI3LCAKKyAgMHhjMiwgMHg2OSwgMHhiOCwgMHhiNCwg MHgzZSwgMHgyYywgMHhiNSwgMHgzOSwgCisgIDB4MTMsIDB4MDMsIDB4Y2EsIDB4YWQsIDB4NWYs IDB4ZDIsIDB4NTcsIDB4MjMsIAorICAweDE5LCAweGRkLCAweDcxLCAweGRkLCAweDkzLCAweGUx LCAweDNlLCAweDQzLCAKKyAgMHhhZiwgMHhkZCwgMHg5NCwgMHgwNywgMHhmMywgMHg3OCwgMHhi MywgMHgyYSwgCisgIDB4NTcsIDB4MjQsIDB4OTcsIDB4MDQsIDB4NTgsIDB4YzEsIDB4YWYsIDB4 ZDMsIAorICAweGU3LCAweGE3LCAweDY1LCAweGQxLCAweDIzLCAweGEzLCAweDkzLCAweDE4LCAK KyAgMHhjNywgMHg1MiwgMHg3MCwgMHg1MywgMHg2MCwgMHg4YiwgMHg1YSwgMHg1ZCwgCisgIDB4 NmUsIDB4ZjksIDB4ODMsIDB4NTIsIDB4OTksIDB4YmIsIDB4MGEsIDB4NTMsIAorICAweDBlLCAw eDJhLCAweDdmLCAweDgxLCAweDUyLCAweDAyLCAweDMyLCAweGE0LCAKKyAgMHhmYywgMHhlMCwg MHgxNywgMHgwYywgMHgwZSwgMHg5NiwgMHhiZCwgMHgwMSwgCisgIDB4MjksIDB4MjksIDB4Mjks IAorfTsKKworZXh0ZXJuIGdjcnlfcGtfc3BlY190IF9nY3J5X3B1YmtleV9zcGVjX3JzYTsKKwor c3RhdGljIHZvaWQKK3JzYV9zZXhwX3Rlc3QgKHZvaWQpCit7CisgIGdjcnlfc2V4cF90IHNpZ25f cGFybXMsIHNpZ25fcGFybXNfaW52YWxpZCwgcHVia2V5LCBzaWc7CisgIGludCByYzsKKyAgZ3J1 Yl9zaXplX3QgZXJyb2Y7CisKKyAgcmMgPSBfZ2NyeV9zZXhwX2J1aWxkICgmc2lnbl9wYXJtc19p bnZhbGlkLCAmZXJyb2YsCisJCQkiKGRhdGEgKGZsYWdzKSAodmFsdWUgXCJoaVwiKSlcbiIpOwor ICBncnViX3Rlc3RfYXNzZXJ0IChyYyA9PSAwLCAic2V4cCBidWlsZCBmYWlsZWQiKTsKKworICBy YyA9IF9nY3J5X3NleHBfYnVpbGQgKCZzaWduX3Bhcm1zLCAmZXJyb2YsCisJCQkiKGRhdGEgKGZs YWdzKSAodmFsdWUgXCJoZWxsb1wiKSlcbiIpOworICBncnViX3Rlc3RfYXNzZXJ0IChyYyA9PSAw LCAic2V4cCBidWlsZCBmYWlsZWQiKTsKKyAgcmMgPSBfZ2NyeV9zZXhwX25ldyAoJnB1YmtleSwg cHVia2V5X2R1bXAsIHNpemVvZihwdWJrZXlfZHVtcCksIDApOworICBncnViX3Rlc3RfYXNzZXJ0 IChyYyA9PSAwLCAic2V4cCBuZXcgZmFpbGVkIik7CisgIHJjID0gX2djcnlfc2V4cF9uZXcgKCZz aWcsIHNpZ19kdW1wLCBzaXplb2Yoc2lnX2R1bXApLCAwKTsKKyAgZ3J1Yl90ZXN0X2Fzc2VydCAo cmMgPT0gMCwgInNleHAgbmV3IGZhaWxlZCIpOworICByYyA9IF9nY3J5X3B1YmtleV9zcGVjX3Jz YS52ZXJpZnkgKHNpZywgc2lnbl9wYXJtcywgcHVia2V5KTsKKyAgZ3J1Yl90ZXN0X2Fzc2VydCAo cmMgPT0gMCwgInNpZ25hdHVyZSB2ZXJpZmljYXRpb24gZmFpbGVkOiAlZCIsIHJjKTsKKyAgcmMg PSBfZ2NyeV9wdWJrZXlfc3BlY19yc2EudmVyaWZ5IChzaWcsIHNpZ25fcGFybXNfaW52YWxpZCwg cHVia2V5KTsKKyAgZ3J1Yl90ZXN0X2Fzc2VydCAocmMgIT0gMCwgInNpZ25hdHVyZSB2ZXJpZmlj YXRpb24gc3VjY2VkZWQgd3JvbmdseSIpOworfQorCitHUlVCX0ZVTkNUSU9OQUxfVEVTVCAocnNh X3NleHBfdGVzdCwgcnNhX3NleHBfdGVzdCk7CmRpZmYgLS1naXQgYS9pbmNsdWRlL2dydWIvY3J5 cHRvLmggYi9pbmNsdWRlL2dydWIvY3J5cHRvLmgKaW5kZXggMzFjODdjMzAyLi4wMWY4NmJlNzEg MTAwNjQ0Ci0tLSBhL2luY2x1ZGUvZ3J1Yi9jcnlwdG8uaAorKysgYi9pbmNsdWRlL2dydWIvY3J5 cHRvLmgKQEAgLTY1LDcgKzY1LDMxIEBAIHR5cGVkZWYgZW51bQogICAgIEdQR19FUlJfV1JPTkdf UFVCS0VZX0FMR08sCiAgICAgR1BHX0VSUl9PVVRfT0ZfTUVNT1JZLAogICAgIEdQR19FUlJfVE9P X0xBUkdFLAotICAgIEdQR19FUlJfRU5PTUVNCisgICAgR1BHX0VSUl9FTk9NRU0sCisgICAgR1BH X0VSUl9DSEVDS1NVTSwKKyAgICBHUEdfRVJSX0lOVl9MRU5HVEgsCisgICAgR1BHX0VSUl9WQUxV RV9OT1RfRk9VTkQsCisgICAgR1BHX0VSUl9FUkFOR0UsCisgICAgR1BHX0VSUl9JTlZfREFUQSwK KyAgICBHUEdfRVJSX0VOQ09ESU5HX1BST0JMRU0sCisgICAgR1BHX0VSUl9CVUZGRVJfVE9PX1NI T1JULAorICAgIEdQR19FUlJfU1lOVEFYLAorICAgIEdQR19FUlJfU0VYUF9JTlZfTEVOX1NQRUMs CisgICAgR1BHX0VSUl9TRVhQX1VOTUFUQ0hFRF9ESCwKKyAgICBHUEdfRVJSX1NFWFBfVU5NQVRD SEVEX1BBUkVOLAorICAgIEdQR19FUlJfU0VYUF9aRVJPX1BSRUZJWCwKKyAgICBHUEdfRVJSX1NF WFBfTkVTVEVEX0RILAorICAgIEdQR19FUlJfU0VYUF9VTkVYUEVDVEVEX1BVTkMsCisgICAgR1BH X0VSUl9TRVhQX0JBRF9DSEFSQUNURVIsCisgICAgR1BHX0VSUl9TRVhQX05PVF9DQU5PTklDQUws CisgICAgR1BHX0VSUl9TRVhQX1NUUklOR19UT09fTE9ORywKKyAgICBHUEdfRVJSX1NFWFBfQkFE X1FVT1RBVElPTiwKKyAgICBHUEdfRVJSX1NFWFBfT0REX0hFWF9OVU1CRVJTLAorICAgIEdQR19F UlJfU0VYUF9CQURfSEVYX0NIQVIsCisgICAgR1BHX0VSUl9MSU1JVF9SRUFDSEVELAorICAgIEdQ R19FUlJfRU9GLAorICAgIEdQR19FUlJfQkFEX0RBVEEsCisgICAgR1BHX0VSUl9FSU5WQUwsCiAg IH0gZ3BnX2Vycl9jb2RlX3Q7CiB0eXBlZGVmIGdwZ19lcnJfY29kZV90IGdwZ19lcnJvcl90Owog dHlwZWRlZiBncGdfZXJyb3JfdCBnY3J5X2Vycm9yX3Q7CkBAIC04NCwzNyArMTA4LDYwIEBAIGVu dW0gZ2NyeV9jaXBoZXJfbW9kZXMKICAgfTsKICNlbmRpZgogCisvKiBFeHRyYSBhbGdvIElEcyBu b3QgY29taW5nIGZyb20gZ2NyeXB0LiAgKi8KKyNkZWZpbmUgR0NSWV9NRF9BRExFUjMyIDEwMzAx CisjZGVmaW5lIEdDUllfTURfQ1JDNjQgMTAzMDIKKwogLyogRG9uJ3QgcmVseSBvbiB0aGlzLiBD aGVjayEgICovCiAjZGVmaW5lIEdSVUJfQ1JZUFRPX01BWF9NRExFTiA2NAogI2RlZmluZSBHUlVC X0NSWVBUT19NQVhfQ0lQSEVSX0JMT0NLU0laRSAxNgogI2RlZmluZSBHUlVCX0NSWVBUT19NQVhf TURfQ09OVEVYVF9TSVpFIDI1NgogCiAvKiBUeXBlIGZvciB0aGUgY2lwaGVyX3NldGtleSBmdW5j dGlvbi4gICovCitzdHJ1Y3QgY2lwaGVyX2J1bGtfb3BzOworCiB0eXBlZGVmIGdjcnlfZXJyX2Nv ZGVfdCAoKmdjcnlfY2lwaGVyX3NldGtleV90KSAodm9pZCAqYywKIAkJCQkJCSBjb25zdCB1bnNp Z25lZCBjaGFyICprZXksCi0JCQkJCQkgdW5zaWduZWQga2V5bGVuKTsKKwkJCQkJCSB1bnNpZ25l ZCBrZXlsZW4sCisJCQkJCQkgc3RydWN0IGNpcGhlcl9idWxrX29wcyAqYnVsa19vcHMpOwogCiAv KiBUeXBlIGZvciB0aGUgY2lwaGVyX2VuY3J5cHQgZnVuY3Rpb24uICAqLwotdHlwZWRlZiB2b2lk ICgqZ2NyeV9jaXBoZXJfZW5jcnlwdF90KSAodm9pZCAqYywKLQkJCQkgICAgICAgdW5zaWduZWQg Y2hhciAqb3V0YnVmLAotCQkJCSAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyICppbmJ1Zik7Cit0 eXBlZGVmIHVuc2lnbmVkIGludCAoKmdjcnlfY2lwaGVyX2VuY3J5cHRfdCkgKHZvaWQgKmMsCisJ CQkJCSAgICAgICB1bnNpZ25lZCBjaGFyICpvdXRidWYsCisJCQkJCSAgICAgICBjb25zdCB1bnNp Z25lZCBjaGFyICppbmJ1Zik7CiAKIC8qIFR5cGUgZm9yIHRoZSBjaXBoZXJfZGVjcnlwdCBmdW5j dGlvbi4gICovCi10eXBlZGVmIHZvaWQgKCpnY3J5X2NpcGhlcl9kZWNyeXB0X3QpICh2b2lkICpj LAotCQkJCSAgICAgICB1bnNpZ25lZCBjaGFyICpvdXRidWYsCi0JCQkJICAgICAgIGNvbnN0IHVu c2lnbmVkIGNoYXIgKmluYnVmKTsKK3R5cGVkZWYgdW5zaWduZWQgaW50ICgqZ2NyeV9jaXBoZXJf ZGVjcnlwdF90KSAodm9pZCAqYywKKwkJCQkJICAgICAgIHVuc2lnbmVkIGNoYXIgKm91dGJ1ZiwK KwkJCQkJICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmluYnVmKTsKIAogLyogVHlwZSBmb3Ig dGhlIGNpcGhlcl9zdGVuY3J5cHQgZnVuY3Rpb24uICAqLwogdHlwZWRlZiB2b2lkICgqZ2NyeV9j aXBoZXJfc3RlbmNyeXB0X3QpICh2b2lkICpjLAogCQkJCQkgdW5zaWduZWQgY2hhciAqb3V0YnVm LAogCQkJCQkgY29uc3QgdW5zaWduZWQgY2hhciAqaW5idWYsCi0JCQkJCSB1bnNpZ25lZCBpbnQg bik7CisJCQkJCSBncnViX3NpemVfdCBuKTsKIAogLyogVHlwZSBmb3IgdGhlIGNpcGhlcl9zdGRl Y3J5cHQgZnVuY3Rpb24uICAqLwogdHlwZWRlZiB2b2lkICgqZ2NyeV9jaXBoZXJfc3RkZWNyeXB0 X3QpICh2b2lkICpjLAogCQkJCQkgdW5zaWduZWQgY2hhciAqb3V0YnVmLAogCQkJCQkgY29uc3Qg dW5zaWduZWQgY2hhciAqaW5idWYsCi0JCQkJCSB1bnNpZ25lZCBpbnQgbik7CisJCQkJCSBncnVi X3NpemVfdCBuKTsKKwordHlwZWRlZiB2b2lkICgqc2VsZnRlc3RfcmVwb3J0X2Z1bmNfdCkoY29u c3QgY2hhciAqZG9tYWluLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg aW50IGFsZ28sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBj aGFyICp3aGF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg Y2hhciAqZXJyZGVzYyk7CisKKy8qIFRoZSB0eXBlIHVzZWQgdG8gY29udmV5IGFkZGl0aW9uYWwg aW5mb3JtYXRpb24gdG8gYSBjaXBoZXIuICAqLwordHlwZWRlZiBncGdfZXJyX2NvZGVfdCAoKmdj cnlfY2lwaGVyX3NldF9leHRyYV9pbmZvX3QpCisgICAgICh2b2lkICpjLCBpbnQgd2hhdCwgY29u c3Qgdm9pZCAqYnVmZmVyLCBncnViX3NpemVfdCBidWZsZW4pOworCisvKiBUaGUgdHlwZSB1c2Vk IHRvIHNldCBhbiBJViBkaXJlY3RseSBpbiB0aGUgYWxnb3JpdGhtIG1vZHVsZS4gICovCit0eXBl ZGVmIHZvaWQgKCpnY3J5X2NpcGhlcl9zZXRpdl9mdW5jX3QpKHZvaWQgKmMsIGNvbnN0IGdydWJf dWludDhfdCAqaXYsIGdydWJfc2l6ZV90IGl2bGVuKTsKKworLyogRGVmaW5pdGlvbiBvZiB0aGUg c2VsZnRlc3QgZnVuY3Rpb25zLiAgKi8KK3R5cGVkZWYgZ3BnX2Vycl9jb2RlX3QgKCpnY3J5X3Nl bGZ0ZXN0X2Z1bmNfdCkKKyAgICAgKGludCBhbGdvLCBpbnQgZXh0ZW5kZWQsIHNlbGZ0ZXN0X3Jl cG9ydF9mdW5jX3QgcmVwb3J0KTsKIAogdHlwZWRlZiBzdHJ1Y3QgZ2NyeV9jaXBoZXJfb2lkX3Nw ZWMKIHsKQEAgLTEyNSw5ICsxNzIsMTQgQEAgdHlwZWRlZiBzdHJ1Y3QgZ2NyeV9jaXBoZXJfb2lk X3NwZWMKIC8qIE1vZHVsZSBzcGVjaWZpY2F0aW9uIHN0cnVjdHVyZSBmb3IgY2lwaGVycy4gICov CiB0eXBlZGVmIHN0cnVjdCBnY3J5X2NpcGhlcl9zcGVjCiB7CisgIGludCBhbGdvOworICBzdHJ1 Y3QgeworICAgIHVuc2lnbmVkIGludCBkaXNhYmxlZDoxOworICAgIHVuc2lnbmVkIGludCBmaXBz OjE7CisgIH0gZmxhZ3M7CiAgIGNvbnN0IGNoYXIgKm5hbWU7CiAgIGNvbnN0IGNoYXIgKiphbGlh c2VzOwotICBnY3J5X2NpcGhlcl9vaWRfc3BlY190ICpvaWRzOworICBjb25zdCBnY3J5X2NpcGhl cl9vaWRfc3BlY190ICpvaWRzOwogICBncnViX3NpemVfdCBibG9ja3NpemU7CiAgIGdydWJfc2l6 ZV90IGtleWxlbjsKICAgZ3J1Yl9zaXplX3QgY29udGV4dHNpemU7CkBAIC0xMzYsNiArMTg4LDEw IEBAIHR5cGVkZWYgc3RydWN0IGdjcnlfY2lwaGVyX3NwZWMKICAgZ2NyeV9jaXBoZXJfZGVjcnlw dF90IGRlY3J5cHQ7CiAgIGdjcnlfY2lwaGVyX3N0ZW5jcnlwdF90IHN0ZW5jcnlwdDsKICAgZ2Ny eV9jaXBoZXJfc3RkZWNyeXB0X3Qgc3RkZWNyeXB0OworICBnY3J5X3NlbGZ0ZXN0X2Z1bmNfdCBz ZWxmdGVzdDsKKyAgZ2NyeV9jaXBoZXJfc2V0X2V4dHJhX2luZm9fdCBzZXRfZXh0cmFfaW5mbzsK KyAgZ2NyeV9jaXBoZXJfc2V0aXZfZnVuY190IHNldGl2OworCiAjaWZkZWYgR1JVQl9VVElMCiAg IGNvbnN0IGNoYXIgKm1vZG5hbWU7CiAjZW5kaWYKQEAgLTE0Myw3ICsxOTksNyBAQCB0eXBlZGVm IHN0cnVjdCBnY3J5X2NpcGhlcl9zcGVjCiB9IGdjcnlfY2lwaGVyX3NwZWNfdDsKIAogLyogVHlw ZSBmb3IgdGhlIG1kX2luaXQgZnVuY3Rpb24uICAqLwotdHlwZWRlZiB2b2lkICgqZ2NyeV9tZF9p bml0X3QpICh2b2lkICpjKTsKK3R5cGVkZWYgdm9pZCAoKmdjcnlfbWRfaW5pdF90KSAodm9pZCAq YywgdW5zaWduZWQgaW50IGZsYWdzKTsKIAogLyogVHlwZSBmb3IgdGhlIG1kX3dyaXRlIGZ1bmN0 aW9uLiAgKi8KIHR5cGVkZWYgdm9pZCAoKmdjcnlfbWRfd3JpdGVfdCkgKHZvaWQgKmMsIGNvbnN0 IHZvaWQgKmJ1ZiwgZ3J1Yl9zaXplX3QgbmJ5dGVzKTsKQEAgLTE2MiwxNiArMjE4LDI0IEBAIHR5 cGVkZWYgc3RydWN0IGdjcnlfbWRfb2lkX3NwZWMKIC8qIE1vZHVsZSBzcGVjaWZpY2F0aW9uIHN0 cnVjdHVyZSBmb3IgbWVzc2FnZSBkaWdlc3RzLiAgKi8KIHR5cGVkZWYgc3RydWN0IGdjcnlfbWRf c3BlYwogeworICBpbnQgYWxnbzsKKyAgc3RydWN0IHsKKyAgICB1bnNpZ25lZCBpbnQgZGlzYWJs ZWQ6MTsKKyAgICB1bnNpZ25lZCBpbnQgZmlwczoxOworICB9IGZsYWdzOwogICBjb25zdCBjaGFy ICpuYW1lOwotICB1bnNpZ25lZCBjaGFyICphc25vaWQ7CisgIGNvbnN0IHVuc2lnbmVkIGNoYXIg KmFzbm9pZDsKICAgaW50IGFzbmxlbjsKLSAgZ2NyeV9tZF9vaWRfc3BlY190ICpvaWRzOworICBj b25zdCBnY3J5X21kX29pZF9zcGVjX3QgKm9pZHM7CiAgIGdydWJfc2l6ZV90IG1kbGVuOwogICBn Y3J5X21kX2luaXRfdCBpbml0OwogICBnY3J5X21kX3dyaXRlX3Qgd3JpdGU7CiAgIGdjcnlfbWRf ZmluYWxfdCBmaW5hbDsKICAgZ2NyeV9tZF9yZWFkX3QgcmVhZDsKKyAgdm9pZCAqZXh0cmFjdDsK KyAgdm9pZCAqaGFzaF9idWZmZXJzOwogICBncnViX3NpemVfdCBjb250ZXh0c2l6ZTsgLyogYWxs b2NhdGUgdGhpcyBhbW91bnQgb2YgY29udGV4dCAqLworCiAgIC8qIEJsb2NrIHNpemUsIG5lZWRl ZCBmb3IgSE1BQy4gICovCiAgIGdydWJfc2l6ZV90IGJsb2Nrc2l6ZTsKICNpZmRlZiBHUlVCX1VU SUwKQEAgLTE4MCw1NCArMjQ0LDEyMyBAQCB0eXBlZGVmIHN0cnVjdCBnY3J5X21kX3NwZWMKICAg c3RydWN0IGdjcnlfbWRfc3BlYyAqbmV4dDsKIH0gZ2NyeV9tZF9zcGVjX3Q7CiAKK3R5cGVkZWYg c3RydWN0IGdjcnlfbWRfaGFuZGxlKmdjcnlfbWRfaGRfdDsKKwogc3RydWN0IGdjcnlfbXBpOwog dHlwZWRlZiBzdHJ1Y3QgZ2NyeV9tcGkgKmdjcnlfbXBpX3Q7CiAKK3N0cnVjdCBnY3J5X3NleHA7 Cit0eXBlZGVmIHN0cnVjdCBnY3J5X3NleHAgKmdjcnlfc2V4cF90OworCisKKyNkZWZpbmUgUFVC S0VZX0ZMQUdfTk9fQkxJTkRJTkcgICAgKDEgPDwgMCkKKyNkZWZpbmUgUFVCS0VZX0ZMQUdfUkZD Njk3OSAgICAgICAgKDEgPDwgMSkKKyNkZWZpbmUgUFVCS0VZX0ZMQUdfRklYRURMRU4gICAgICAg KDEgPDwgMikKKyNkZWZpbmUgUFVCS0VZX0ZMQUdfTEVHQUNZUkVTVUxUICAgKDEgPDwgMykKKyNk ZWZpbmUgUFVCS0VZX0ZMQUdfUkFXX0ZMQUcgICAgICAgKDEgPDwgNCkKKyNkZWZpbmUgUFVCS0VZ X0ZMQUdfVFJBTlNJRU5UX0tFWSAgKDEgPDwgNSkKKyNkZWZpbmUgUFVCS0VZX0ZMQUdfVVNFX1g5 MzEgICAgICAgKDEgPDwgNikKKyNkZWZpbmUgUFVCS0VZX0ZMQUdfVVNFX0ZJUFMxODYgICAgKDEg PDwgNykKKyNkZWZpbmUgUFVCS0VZX0ZMQUdfVVNFX0ZJUFMxODZfMiAgKDEgPDwgOCkKKyNkZWZp bmUgUFVCS0VZX0ZMQUdfUEFSQU0gICAgICAgICAgKDEgPDwgOSkKKyNkZWZpbmUgUFVCS0VZX0ZM QUdfQ09NUCAgICAgICAgICAgKDEgPDwgMTApCisjZGVmaW5lIFBVQktFWV9GTEFHX05PQ09NUCAg ICAgICAgICgxIDw8IDExKQorI2RlZmluZSBQVUJLRVlfRkxBR19FRERTQSAgICAgICAgICAoMSA8 PCAxMikKKyNkZWZpbmUgUFVCS0VZX0ZMQUdfR09TVCAgICAgICAgICAgKDEgPDwgMTMpCisjZGVm aW5lIFBVQktFWV9GTEFHX05PX0tFWVRFU1QgICAgICgxIDw8IDE0KQorI2RlZmluZSBQVUJLRVlf RkxBR19ESkJfVFdFQUsgICAgICAoMSA8PCAxNSkKKyNkZWZpbmUgUFVCS0VZX0ZMQUdfU00yICAg ICAgICAgICAgKDEgPDwgMTYpCisjZGVmaW5lIFBVQktFWV9GTEFHX1BSRUhBU0ggICAgICAgICgx IDw8IDE3KQorCitlbnVtIHBrX29wZXJhdGlvbgorICB7CisgICAgUFVCS0VZX09QX0VOQ1JZUFQs CisgICAgUFVCS0VZX09QX0RFQ1JZUFQsCisgICAgUFVCS0VZX09QX1NJR04sCisgICAgUFVCS0VZ X09QX1ZFUklGWQorICB9OworCitlbnVtIHBrX2VuY29kaW5nCisgIHsKKyAgICBQVUJLRVlfRU5D X1JBVywKKyAgICBQVUJLRVlfRU5DX1BLQ1MxLAorICAgIFBVQktFWV9FTkNfUEtDUzFfUkFXLAor ICAgIFBVQktFWV9FTkNfT0FFUCwKKyAgICBQVUJLRVlfRU5DX1BTUywKKyAgICBQVUJLRVlfRU5D X1VOS05PV04KKyAgfTsKKworc3RydWN0IHBrX2VuY29kaW5nX2N0eAoreworICBlbnVtIHBrX29w ZXJhdGlvbiBvcDsKKyAgdW5zaWduZWQgaW50IG5iaXRzOworCisgIGVudW0gcGtfZW5jb2Rpbmcg ZW5jb2Rpbmc7CisgIGludCBmbGFnczsKKworICBpbnQgaGFzaF9hbGdvOworCisgIC8qIGZvciBP QUVQICovCisgIHVuc2lnbmVkIGNoYXIgKmxhYmVsOworICBncnViX3NpemVfdCBsYWJlbGxlbjsK KworICAvKiBmb3IgUFNTICovCisgIGdydWJfc2l6ZV90IHNhbHRsZW47CisKKyAgaW50ICgqIHZl cmlmeV9jbXApICh2b2lkICpvcGFxdWUsIGdjcnlfbXBpX3QgdG1wKTsKKyAgdm9pZCAqdmVyaWZ5 X2FyZzsKK307CisKIC8qIFR5cGUgZm9yIHRoZSBwa19nZW5lcmF0ZSBmdW5jdGlvbi4gICovCi10 eXBlZGVmIGdjcnlfZXJyX2NvZGVfdCAoKmdjcnlfcGtfZ2VuZXJhdGVfdCkgKGludCBhbGdvLAot CQkJCQkgICAgICAgdW5zaWduZWQgaW50IG5iaXRzLAotCQkJCQkgICAgICAgdW5zaWduZWQgbG9u ZyB1c2VfZSwKLQkJCQkJICAgICAgIGdjcnlfbXBpX3QgKnNrZXksCi0JCQkJCSAgICAgICBnY3J5 X21waV90ICoqcmV0ZmFjdG9ycyk7Cit0eXBlZGVmIGdjcnlfZXJyX2NvZGVfdCAoKmdjcnlfcGtf Z2VuZXJhdGVfdCkgKGdjcnlfc2V4cF90IGdlbnBhcm1zLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBnY3J5X3NleHBfdCAqcl9za2V5KTsKIAogLyogVHlw ZSBmb3IgdGhlIHBrX2NoZWNrX3NlY3JldF9rZXkgZnVuY3Rpb24uICAqLwotdHlwZWRlZiBnY3J5 X2Vycl9jb2RlX3QgKCpnY3J5X3BrX2NoZWNrX3NlY3JldF9rZXlfdCkgKGludCBhbGdvLAotCQkJ CQkJICAgICAgIGdjcnlfbXBpX3QgKnNrZXkpOwordHlwZWRlZiBnY3J5X2Vycl9jb2RlX3QgKCpn Y3J5X3BrX2NoZWNrX3NlY3JldF9rZXlfdCkgKGdjcnlfc2V4cF90IGtleXBhcm1zKTsKIAogLyog VHlwZSBmb3IgdGhlIHBrX2VuY3J5cHQgZnVuY3Rpb24uICAqLwotdHlwZWRlZiBnY3J5X2Vycl9j b2RlX3QgKCpnY3J5X3BrX2VuY3J5cHRfdCkgKGludCBhbGdvLAotCQkJCQkgICAgICBnY3J5X21w aV90ICpyZXNhcnIsCi0JCQkJCSAgICAgIGdjcnlfbXBpX3QgZGF0YSwKLQkJCQkJICAgICAgZ2Ny eV9tcGlfdCAqcGtleSwKLQkJCQkJICAgICAgaW50IGZsYWdzKTsKK3R5cGVkZWYgZ2NyeV9lcnJf Y29kZV90ICgqZ2NyeV9wa19lbmNyeXB0X3QpIChnY3J5X3NleHBfdCAqcl9jaXBoLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdjcnlfc2V4cF90IHNfZGF0 YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnY3J5X3Nl eHBfdCBrZXlwYXJtcyk7CiAKIC8qIFR5cGUgZm9yIHRoZSBwa19kZWNyeXB0IGZ1bmN0aW9uLiAg Ki8KLXR5cGVkZWYgZ2NyeV9lcnJfY29kZV90ICgqZ2NyeV9wa19kZWNyeXB0X3QpIChpbnQgYWxn bywKLQkJCQkJICAgICAgZ2NyeV9tcGlfdCAqcmVzdWx0LAotCQkJCQkgICAgICBnY3J5X21waV90 ICpkYXRhLAotCQkJCQkgICAgICBnY3J5X21waV90ICpza2V5LAotCQkJCQkgICAgICBpbnQgZmxh Z3MpOwordHlwZWRlZiBnY3J5X2Vycl9jb2RlX3QgKCpnY3J5X3BrX2RlY3J5cHRfdCkgKGdjcnlf c2V4cF90ICpyX3BsYWluLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGdjcnlfc2V4cF90IHNfZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBnY3J5X3NleHBfdCBrZXlwYXJtcyk7CiAKIC8qIFR5cGUgZm9yIHRo ZSBwa19zaWduIGZ1bmN0aW9uLiAgKi8KLXR5cGVkZWYgZ2NyeV9lcnJfY29kZV90ICgqZ2NyeV9w a19zaWduX3QpIChpbnQgYWxnbywKLQkJCQkJICAgZ2NyeV9tcGlfdCAqcmVzYXJyLAotCQkJCQkg ICBnY3J5X21waV90IGRhdGEsCi0JCQkJCSAgIGdjcnlfbXBpX3QgKnNrZXkpOwordHlwZWRlZiBn Y3J5X2Vycl9jb2RlX3QgKCpnY3J5X3BrX3NpZ25fdCkgKGdjcnlfc2V4cF90ICpyX3NpZywKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnY3J5X3NleHBfdCBzX2Rh dGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2NyeV9zZXhw X3Qga2V5cGFybXMpOwogCiAvKiBUeXBlIGZvciB0aGUgcGtfdmVyaWZ5IGZ1bmN0aW9uLiAgKi8K LXR5cGVkZWYgZ2NyeV9lcnJfY29kZV90ICgqZ2NyeV9wa192ZXJpZnlfdCkgKGludCBhbGdvLAot CQkJCQkgICAgIGdjcnlfbXBpX3QgaGFzaCwKLQkJCQkJICAgICBnY3J5X21waV90ICpkYXRhLAot CQkJCQkgICAgIGdjcnlfbXBpX3QgKnBrZXksCi0JCQkJCSAgICAgaW50ICgqY21wKSAodm9pZCAq LCBnY3J5X21waV90KSwKLQkJCQkJICAgICB2b2lkICpvcGFxdWV2KTsKK3R5cGVkZWYgZ2NyeV9l cnJfY29kZV90ICgqZ2NyeV9wa192ZXJpZnlfdCkgKGdjcnlfc2V4cF90IHNfc2lnLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2NyeV9zZXhwX3Qgc19kYXRh LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2NyeV9zZXhw X3Qga2V5cGFybXMpOwogCiAvKiBUeXBlIGZvciB0aGUgcGtfZ2V0X25iaXRzIGZ1bmN0aW9uLiAg Ki8KLXR5cGVkZWYgdW5zaWduZWQgKCpnY3J5X3BrX2dldF9uYml0c190KSAoaW50IGFsZ28sIGdj cnlfbXBpX3QgKnBrZXkpOwordHlwZWRlZiB1bnNpZ25lZCAoKmdjcnlfcGtfZ2V0X25iaXRzX3Qp IChnY3J5X3NleHBfdCBrZXlwYXJtcyk7CisKKy8qIFRoZSB0eXBlIHVzZWQgdG8gY29tcHV0ZSB0 aGUga2V5Z3JpcC4gICovCit0eXBlZGVmIGdwZ19lcnJfY29kZV90ICgqcGtfY29tcF9rZXlncmlw X3QpIChnY3J5X21kX2hkX3QgbWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBnY3J5X3NleHBfdCBrZXlwYXJtKTsKKworLyogVGhlIHR5cGUgdXNlZCB0byBx dWVyeSBhbiBFQ0MgY3VydmUgbmFtZS4gICovCit0eXBlZGVmIGNvbnN0IGNoYXIgKigqcGtfZ2V0 X2N1cnZlX3QpKGdjcnlfc2V4cF90IGtleXBhcm1zLCBpbnQgaXRlcmF0b3IsCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCAqcl9uYml0cyk7CisKKy8q IFRoZSB0eXBlIHVzZWQgdG8gcXVlcnkgRUNDIGN1cnZlIHBhcmFtZXRlcnMgYnkgbmFtZS4gICov Cit0eXBlZGVmIGdjcnlfc2V4cF90ICgqcGtfZ2V0X2N1cnZlX3BhcmFtX3QpKGNvbnN0IGNoYXIg Km5hbWUpOwogCiAvKiBNb2R1bGUgc3BlY2lmaWNhdGlvbiBzdHJ1Y3R1cmUgZm9yIG1lc3NhZ2Ug ZGlnZXN0cy4gICovCiB0eXBlZGVmIHN0cnVjdCBnY3J5X3BrX3NwZWMKIHsKKyAgaW50IGFsZ287 CisgIHN0cnVjdCB7CisgICAgdW5zaWduZWQgaW50IGRpc2FibGVkOjE7CisgICAgdW5zaWduZWQg aW50IGZpcHM6MTsKKyAgfSBmbGFnczsKKyAgaW50IHVzZTsKICAgY29uc3QgY2hhciAqbmFtZTsK ICAgY29uc3QgY2hhciAqKmFsaWFzZXM7CiAgIGNvbnN0IGNoYXIgKmVsZW1lbnRzX3BrZXk7CkBA IC0yMzUsNyArMzY4LDYgQEAgdHlwZWRlZiBzdHJ1Y3QgZ2NyeV9wa19zcGVjCiAgIGNvbnN0IGNo YXIgKmVsZW1lbnRzX2VuYzsKICAgY29uc3QgY2hhciAqZWxlbWVudHNfc2lnOwogICBjb25zdCBj aGFyICplbGVtZW50c19ncmlwOwotICBpbnQgdXNlOwogICBnY3J5X3BrX2dlbmVyYXRlX3QgZ2Vu ZXJhdGU7CiAgIGdjcnlfcGtfY2hlY2tfc2VjcmV0X2tleV90IGNoZWNrX3NlY3JldF9rZXk7CiAg IGdjcnlfcGtfZW5jcnlwdF90IGVuY3J5cHQ7CkBAIC0yNDMsNiArMzc1LDEwIEBAIHR5cGVkZWYg c3RydWN0IGdjcnlfcGtfc3BlYwogICBnY3J5X3BrX3NpZ25fdCBzaWduOwogICBnY3J5X3BrX3Zl cmlmeV90IHZlcmlmeTsKICAgZ2NyeV9wa19nZXRfbmJpdHNfdCBnZXRfbmJpdHM7CisgIHBrX2Nv bXBfa2V5Z3JpcF90IGNvbXBfa2V5Z3JpcDsKKyAgcGtfZ2V0X2N1cnZlX3QgZ2V0X2N1cnZlOwor ICBwa19nZXRfY3VydmVfcGFyYW1fdCBnZXRfY3VydmVfcGFyYW07CisKICNpZmRlZiBHUlVCX1VU SUwKICAgY29uc3QgY2hhciAqbW9kbmFtZTsKICNlbmRpZgpAQCAtMzQ1LDYgKzQ4MSwxMCBAQCBn cnViX2NyeXB0b19oYXNoIChjb25zdCBnY3J5X21kX3NwZWNfdCAqaGFzaCwgdm9pZCAqb3V0LCBj b25zdCB2b2lkICppbiwKIAkJICBncnViX3NpemVfdCBpbmxlbik7CiBjb25zdCBnY3J5X21kX3Nw ZWNfdCAqCiBncnViX2NyeXB0b19sb29rdXBfbWRfYnlfbmFtZSAoY29uc3QgY2hhciAqbmFtZSk7 Citjb25zdCBnY3J5X21kX3NwZWNfdCAqCitncnViX2NyeXB0b19sb29rdXBfbWRfYnlfYWxnbyAo aW50IGFsZ28pOworY29uc3QgZ2NyeV9tZF9zcGVjX3QgKgorZ3J1Yl9jcnlwdG9fbG9va3VwX21k X2J5X29pZCAoY29uc3QgY2hhciAqb2lkKTsKIAogZ3J1Yl9lcnJfdAogZ3J1Yl9jcnlwdG9fZ2Ny eV9lcnJvciAoZ2NyeV9lcnJfY29kZV90IGluKTsKQEAgLTQwOCw3ICs1NDgsMzUgQEAgdm9pZCBf Z2NyeV9hc3NlcnRfZmFpbGVkIChjb25zdCBjaGFyICpleHByLCBjb25zdCBjaGFyICpmaWxlLCBp bnQgbGluZSwKIAogdm9pZCBfZ2NyeV9idXJuX3N0YWNrIChpbnQgYnl0ZXMpOwogdm9pZCBfZ2Ny eV9sb2dfZXJyb3IoIGNvbnN0IGNoYXIgKmZtdCwgLi4uICkgIF9fYXR0cmlidXRlX18gKChmb3Jt YXQgKF9fcHJpbnRmX18sIDEsIDIpKSk7Cit2b2lkIF9nY3J5X2xvZ19pbmZvIChjb25zdCBjaGFy ICpmbXQsIC4uLik7Cit2b2lkIF9fZ2NyeV9idXJuX3N0YWNrICh1bnNpZ25lZCBpbnQgc2l6ZSk7 Cit2b2lkIF9fZ2NyeV9idXJuX3N0YWNrX2R1bW15ICh2b2lkKTsKK3ZvaWQgX2djcnlfYnVnKCBj b25zdCBjaGFyICpmaWxlLCBpbnQgbGluZSwgY29uc3QgY2hhciAqZnVuYyApOwordm9pZAorX2dj cnlfZmFzdF93aXBlbWVtb3J5ICh2b2lkICpwdHIsIGdydWJfc2l6ZV90IGxlbik7Cit2b2lkCitf Z2NyeV9mYXN0X3dpcGVtZW1vcnkyICh2b2lkICpwdHIsIGludCBzZXQsIGdydWJfc2l6ZV90IGxl bik7Cit1bnNpZ25lZCBpbnQKK19nY3J5X2N0X21lbWVxdWFsIChjb25zdCB2b2lkICpiMSwgY29u c3Qgdm9pZCAqYjIsIGdydWJfc2l6ZV90IGxlbik7Cit1bnNpZ25lZCBpbnQKK19nY3J5X2N0X25v dF9tZW1lcXVhbCAoY29uc3Qgdm9pZCAqYjEsIGNvbnN0IHZvaWQgKmIyLCBncnViX3NpemVfdCBs ZW4pOworCisKK3N0YXRpYyBpbmxpbmUgdW5zaWduZWQgaW50IF9nY3J5X2dldF9od19mZWF0dXJl cyh2b2lkKQoreworICByZXR1cm4gMDsKK30KIAordm9pZCAqX2djcnlfbWFsbG9jKGdydWJfc2l6 ZV90IG4pOwordm9pZCAqX2djcnlfbWFsbG9jX3NlY3VyZShncnViX3NpemVfdCBuKTsKK3ZvaWQg Kl9nY3J5X3htYWxsb2MoZ3J1Yl9zaXplX3Qgbik7Cit2b2lkICpfZ2NyeV94bWFsbG9jX3NlY3Vy ZShncnViX3NpemVfdCBuKTsKK3ZvaWQgX2djcnlfZnJlZSAodm9pZCAqcCk7Cit2b2lkICpfZ2Ny eV94cmVhbGxvYyAodm9pZCAqYSwgZ3J1Yl9zaXplX3Qgbik7CitpbnQgX2djcnlfaXNfc2VjdXJl IChjb25zdCB2b2lkICphKTsKK3ZvaWQgKl9nY3J5X3hjYWxsb2MgKGdydWJfc2l6ZV90IG4sIGdy dWJfc2l6ZV90IG0pOwordm9pZCAqX2djcnlfeGNhbGxvY19zZWN1cmUgKGdydWJfc2l6ZV90IG4s IGdydWJfc2l6ZV90IG0pOwordm9pZCBfZ2NyeV9kaXZpZGVfYnlfemVybyAodm9pZCk7CiAKICNp ZmRlZiBHUlVCX1VUSUwKIHZvaWQgZ3J1Yl9nY3J5X2luaXRfYWxsICh2b2lkKTsKQEAgLTQxOSw0 ICs1ODcsMTEgQEAgZ3J1Yl9nZXRfcmFuZG9tICh2b2lkICpvdXQsIGdydWJfc2l6ZV90IGxlbik7 CiAKICNlbmRpZgogCit0eXBlZGVmIHN0cnVjdCBfZ3BncnRfYjY0c3RhdGUgKmdwZ3J0X2I2NHN0 YXRlX3Q7CitncGdydF9iNjRzdGF0ZV90IGdwZ3J0X2I2NGRlY19zdGFydCAoY29uc3QgY2hhciAq dGl0bGUpOworZ3BnX2Vycm9yX3QgICAgICBncGdydF9iNjRkZWNfcHJvYyAoZ3BncnRfYjY0c3Rh dGVfdCBzdGF0ZSwKKwkJCQkgICAgdm9pZCAqYnVmZmVyLCBncnViX3NpemVfdCBsZW5ndGgsCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncnViX3NpemVfdCAqcl9uYnl0ZXMp OworZ3BnX2Vycm9yX3QgICAgICBncGdydF9iNjRkZWNfZmluaXNoIChncGdydF9iNjRzdGF0ZV90 IHN0YXRlKTsKK2NvbnN0IGNoYXIgKmdwZ19zdHJlcnJvciAoZ3BnX2Vycm9yX3QgZXJyKTsKICNl bmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9ncnViL2djcnlwdC9ncGctZXJyb3IuaCBiL2luY2x1 ZGUvZ3J1Yi9nY3J5cHQvZ3BnLWVycm9yLmgKaW5kZXggMWU0MjUwMjg0Li40NDRiZWYyMjEgMTAw NjQ0Ci0tLSBhL2luY2x1ZGUvZ3J1Yi9nY3J5cHQvZ3BnLWVycm9yLmgKKysrIGIvaW5jbHVkZS9n cnViL2djcnlwdC9ncGctZXJyb3IuaApAQCAtMjksNCArMjksMTMgQEAgZ3BnX2Vycl9zb3VyY2Ug KGdwZ19lcnJvcl90IGVyciBfX2F0dHJpYnV0ZV9fICgodW51c2VkKSkpCiBnY3J5X2Vycl9jb2Rl X3QKIGdwZ19lcnJvcl9mcm9tX3N5c2Vycm9yICh2b2lkKTsKIAorZ2NyeV9lcnJfY29kZV90Citn cGdfZXJyX2NvZGVfZnJvbV9zeXNlcnJvciAodm9pZCk7CisKK2djcnlfZXJyX2NvZGVfdAorZ3Bn X2Vycm9yX2Zyb21fZXJybm8gKGludCBlcnIpOworCitnY3J5X2Vycl9jb2RlX3QKK2dwZ19lcnJf Y29kZV9mcm9tX2Vycm5vIChpbnQgZXJyKTsKKwogI2VuZGlmCmRpZmYgLS1naXQgYS91dGlsL2dy dWItZnN0ZXN0LmMgYi91dGlsL2dydWItZnN0ZXN0LmMKaW5kZXggMjVhZTUyYWI2Li43ZTY3MDY5 NzYgMTAwNjQ0Ci0tLSBhL3V0aWwvZ3J1Yi1mc3Rlc3QuYworKysgYi91dGlsL2dydWItZnN0ZXN0 LmMKQEAgLTM2NCw3ICszNjQsNyBAQCBzdGF0aWMgdm9pZAogY21kX2NyYyAoY2hhciAqcGF0aG5h bWUpCiB7CiAgIGdydWJfdWludDhfdCAqY3JjMzJfY29udGV4dCA9IHhtYWxsb2MgKEdSVUJfTURf Q1JDMzItPmNvbnRleHRzaXplKTsKLSAgR1JVQl9NRF9DUkMzMi0+aW5pdChjcmMzMl9jb250ZXh0 KTsKKyAgR1JVQl9NRF9DUkMzMi0+aW5pdChjcmMzMl9jb250ZXh0LCAwKTsKIAogICByZWFkX2Zp bGUgKHBhdGhuYW1lLCBjcmNfaG9vaywgY3JjMzJfY29udGV4dCk7CiAgIEdSVUJfTURfQ1JDMzIt PmZpbmFsKGNyYzMyX2NvbnRleHQpOwpkaWZmIC0tZ2l0IGEvdXRpbC9pbXBvcnRfZ2NyeS5weSBi L3V0aWwvaW1wb3J0X2djcnkucHkKaW5kZXggMmIzMzIyZDNhLi41NDIyYWZhMTEgMTAwNjQ0Ci0t LSBhL3V0aWwvaW1wb3J0X2djcnkucHkKKysrIGIvdXRpbC9pbXBvcnRfZ2NyeS5weQpAQCAtNjIs NiArNjIsMTIgQEAgY29uZnV0aWwud3JpdGUgKCIgIGNmbGFncyA9ICckKENGTEFHU19HQ1JZKSc7 XG4iKTsKIGNvbmZ1dGlsLndyaXRlICgiICBjcHBmbGFncyA9ICckKENQUEZMQUdTX0dDUlkpJztc biIpOwogY29uZnV0aWwud3JpdGUgKCIgIGV4dHJhX2Rpc3QgPSBncnViLWNvcmUvbGliL2xpYmdj cnlwdC1ncnViL2NpcGhlci9DaGFuZ2VMb2c7XG4iKTsKIGNvbmZ1dGlsLndyaXRlICgiXG4iKTsK KworZm9yIHNyYyBpbiBbJ3NyYy9jb25zdC10aW1lLmMnXToKKyAgICBjb25mdXRpbC53cml0ZSAo IiAgY29tbW9uID0gZ3J1Yi1jb3JlL2xpYi9saWJnY3J5cHQtZ3J1Yi8lcztcbiIgJSBzcmMpCisK K2NvbmZ1dGlsLndyaXRlICgiXG4iKTsKKwogY2hsb2cgPSAiIgogbW9kdWxlc19zeW1fbWQgPSBb XQogCkBAIC03OSwxMCArODUsMjMgQEAgbWRibG9ja3NpemVzID0geyJfZ2NyeV9kaWdlc3Rfc3Bl Y19jcmMzMiIgOiA2NCwKICAgICAgICAgICAgICAgICAiX2djcnlfZGlnZXN0X3NwZWNfc2hhMjU2 IiA6IDY0LAogICAgICAgICAgICAgICAgICJfZ2NyeV9kaWdlc3Rfc3BlY19zaGEzODQiIDogMTI4 LAogICAgICAgICAgICAgICAgICJfZ2NyeV9kaWdlc3Rfc3BlY19zaGE1MTIiIDogMTI4LAorICAg ICAgICAgICAgICAgICJfZ2NyeV9kaWdlc3Rfc3BlY19zaGE1MTJfMjU2IjogMTI4LAorICAgICAg ICAgICAgICAgICJfZ2NyeV9kaWdlc3Rfc3BlY19zaGE1MTJfMjI0IjogMTI4LAogICAgICAgICAg ICAgICAgICJfZ2NyeV9kaWdlc3Rfc3BlY190aWdlciIgOiA2NCwKICAgICAgICAgICAgICAgICAi X2djcnlfZGlnZXN0X3NwZWNfdGlnZXIxIiA6IDY0LAogICAgICAgICAgICAgICAgICJfZ2NyeV9k aWdlc3Rfc3BlY190aWdlcjIiIDogNjQsCi0gICAgICAgICAgICAgICAgIl9nY3J5X2RpZ2VzdF9z cGVjX3doaXJscG9vbCIgOiA2NH0KKyAgICAgICAgICAgICAgICAiX2djcnlfZGlnZXN0X3NwZWNf d2hpcmxwb29sIiA6IDY0LAorICAgICAgICAgICAgICAgICJfZ2NyeV9kaWdlc3Rfc3BlY19zaGFr ZTEyOCI6IDY0LAorICAgICAgICAgICAgICAgICJfZ2NyeV9kaWdlc3Rfc3BlY19zaGFrZTI1NiI6 IDY0LAorICAgICAgICAgICAgICAgICJfZ2NyeV9kaWdlc3Rfc3BlY19zbTMiOiA2NCwKKyAgICAg ICAgICAgICAgICAiX2djcnlfZGlnZXN0X3NwZWNfc3RyaWJvZ18yNTYiOiA2NCwKKyAgICAgICAg ICAgICAgICAiX2djcnlfZGlnZXN0X3NwZWNfc3RyaWJvZ181MTIiOiA2NCwKKyAgICAgICAgICAg ICAgICAiX2djcnlfZGlnZXN0X3NwZWNfc2hhM18yMjQiOiAxMTUyIC8gOCwKKyAgICAgICAgICAg ICAgICAiX2djcnlfZGlnZXN0X3NwZWNfc2hhM18yNTYiOiAxMDg4IC8gOCwKKyAgICAgICAgICAg ICAgICAiX2djcnlfZGlnZXN0X3NwZWNfc2hhM18zODQiOiA4MzIgLyA4LAorICAgICAgICAgICAg ICAgICJfZ2NyeV9kaWdlc3Rfc3BlY19zaGEzXzUxMiI6IDU3NiAvIDgsCisgICAgICAgICAgICAg ICAgIl9nY3J5X2RpZ2VzdF9zcGVjX2dvc3QzNDExXzk0IjogMzIsCisgICAgICAgICAgICAgICAg Il9nY3J5X2RpZ2VzdF9zcGVjX2dvc3QzNDExX2NwIjogMzJ9CiAKIGNyeXB0b2xpc3QgPSBjb2Rl Y3Mub3BlbiAob3MucGF0aC5qb2luIChjaXBoZXJfZGlyX291dCwgImNyeXB0by5sc3QiKSwgInci LCAidXRmLTgiKQogCkBAIC05OSwxMyArMTE4LDMyIEBAIGNyeXB0b2xpc3Qud3JpdGUgKCJBRVMt MjU2OiBnY3J5X3Jpam5kYWVsXG4iKTsKIGNyeXB0b2xpc3Qud3JpdGUgKCJBRExFUjMyOiBhZGxl cjMyXG4iKTsKIGNyeXB0b2xpc3Qud3JpdGUgKCJDUkM2NDogY3JjNjRcbiIpOwogCitleHRyYV9m aWxlcyA9IHsKKyAgICAiZ2NyeV9jYW1lbGxpYSI6IFsiY2FtZWxsaWEuYyJdLCAjIE1haW4gZmls ZSBpcyBjYW1lbGxpYS1nbHVlLmMKKyAgICAiZ2NyeV9zaGE1MTIiICA6IFsiaGFzaC1jb21tb24u YyJdLAorfQorZXh0cmFfZmlsZXNfbGlzdCA9IFt4IGZvciB4cyBpbiBleHRyYV9maWxlcy52YWx1 ZXMoKSBmb3IgeCBpbiB4c10gKyBbInB1YmtleS11dGlsLmMiLCAicnNhLWNvbW1vbi5jIiwgImRz YS1jb21tb24uYyJdCisKIGZvciBjaXBoZXJfZmlsZSBpbiBjaXBoZXJfZmlsZXM6CiAgICAgaW5m aWxlID0gb3MucGF0aC5qb2luIChjaXBoZXJfZGlyX2luLCBjaXBoZXJfZmlsZSkKICAgICBvdXRm aWxlID0gb3MucGF0aC5qb2luIChjaXBoZXJfZGlyX291dCwgY2lwaGVyX2ZpbGUpCiAgICAgaWYg Y2lwaGVyX2ZpbGUgPT0gIkNoYW5nZUxvZyIgb3IgY2lwaGVyX2ZpbGUgPT0gIkNoYW5nZUxvZy0y MDExIjoKICAgICAgICAgY29udGludWUKICAgICBjaGxvZ25ldyA9ICIJKiAlcyIgJSBjaXBoZXJf ZmlsZQotICAgIGlmIHJlLm1hdGNoICgiKE1hbmlmZXN0fE1ha2VmaWxlXC5hbXxhY1wuY3xjaXBo ZXJcLmN8aGFzaC1jb21tb25cLmN8aG1hYy10ZXN0c1wuY3xtZFwuY3xwdWJrZXlcLmMpJCIsIGNp cGhlcl9maWxlKSBvciBjaXBoZXJfZmlsZSA9PSAia2RmLmMiIG9yIGNpcGhlcl9maWxlID09ICJl bGdhbWFsLmMiIG9yIGNpcGhlcl9maWxlID09ICJwcmltZWdlbi5jIiBvciBjaXBoZXJfZmlsZSA9 PSAiZWNjLmMiIG9yIGNpcGhlcl9maWxlID09ICJ0ZXN0LWdldHJ1c2FnZS5jIjoKKyAgICAjIFVu dXNlZCBnZW5lcmljIHN1cHBvcnQgZmlsZXMKKyAgICBpZiByZS5tYXRjaCAoIihNYWtlZmlsZVwu YW18bWRcLmN8Y2lwaGVyXC5jfGNpcGhlci0uKlwuY3xtYWMtLipcLmN8bWFjXC5jfHB1YmtleVwu YykkIiwgY2lwaGVyX2ZpbGUpOgorICAgICAgICBjaGxvZyA9ICIlcyVzOiBSZW1vdmVkXG4iICUg KGNobG9nLCBjaGxvZ25ldykKKyAgICAgICAgY29udGludWUKKyAgICAjIFRPRE86IFN1cHBvcnQg S0RGCisgICAgaWYgcmUubWF0Y2ggKCIoa2RmXC5jfHNjcnlwdFwuYykkIiwgY2lwaGVyX2ZpbGUp OgorICAgICAgICBjaGxvZyA9ICIlcyVzOiBSZW1vdmVkXG4iICUgKGNobG9nLCBjaGxvZ25ldykK KyAgICAgICAgY29udGludWUKKyAgICAjIFRPRE86IFN1cHBvcnQgY2hhY2hhMjAgYW5kIHBvbHkx MzA1CisgICAgaWYgY2lwaGVyX2ZpbGUgaW4gWyJjaGFjaGEyMC5jIiwgImVjYy5jIiwgImVsZ2Ft YWwuYyJdOgorICAgICAgICBjaGxvZyA9ICIlcyVzOiBSZW1vdmVkXG4iICUgKGNobG9nLCBjaGxv Z25ldykKKyAgICAgICAgY29udGludWUgICAgICAgIAorICAgICMgVE9ETzogVXNlIG9wdGltaXpl ZCB2ZXJzaW9ucworICAgIGlmIHJlLm1hdGNoICgiKC4qXC5bc1NdfC4qLWludGVsLXNoYWV4dFwu Y3wuKi1zc3NlMy1pMzg2XC5jfC4qLXBwY1wuY3wuKi1zc3NlMy1hbWQ2NFwuY3wuKi1zMzkweFwu Y3xyaWpuZGFlbC1hZXNuaVwuY3xjcmMtaW50ZWwtcGNsbXVsXC5jfC4qLWFybXY4LWNlXC5jfC4q LXAxMGxlXC5jfHJpam5kYWVsLXBhZGxvY2suY3xyaWpuZGFlbC1wcGM5bGUuY3xyaWpuZGFlbC12 YWVzLmMpJCIsIGNpcGhlcl9maWxlKToKICAgICAgICAgY2hsb2cgPSAiJXMlczogUmVtb3ZlZFxu IiAlIChjaGxvZywgY2hsb2duZXcpCiAgICAgICAgIGNvbnRpbnVlCiAgICAgIyBBdXRvZ2VuZXJh dGVkIGZpbGVzLiBOb3QgZXZlbiB3b3J0aCBtZW50aW9ubmluZyBpbiBDaGFuZ2VMb2cKQEAgLTE0 OCwxNCArMTg2LDEwIEBAIGZvciBjaXBoZXJfZmlsZSBpbiBjaXBoZXJfZmlsZXM6CiAgICAgICAg IGlzY2lwaGVyID0gRmFsc2UKICAgICAgICAgaXNjcnlwdG9zdGFydCA9IEZhbHNlCiAgICAgICAg IGlzY29tbWEgPSBGYWxzZQotICAgICAgICBpc2dsdWUgPSBGYWxzZQogICAgICAgICBza2lwX3N0 YXRlbWVudCA9IEZhbHNlCisgICAgICAgIHNraXBfY29tbWEgPSBGYWxzZQogICAgICAgICBpZiBp c2M6Ci0gICAgICAgICAgICBtb2RuYW1lID0gY2lwaGVyX2ZpbGUgWzA6bGVuKGNpcGhlcl9maWxl KSAtIDJdCi0gICAgICAgICAgICBpZiByZS5tYXRjaCAoIi4qLWdsdWUkIiwgbW9kbmFtZSk6Ci0g ICAgICAgICAgICAgICAgbW9kbmFtZSA9IG1vZG5hbWUucmVwbGFjZSAoIi1nbHVlIiwgIiIpCi0g ICAgICAgICAgICAgICAgaXNnbHVlID0gVHJ1ZQotICAgICAgICAgICAgbW9kbmFtZSA9ICJnY3J5 XyVzIiAlIG1vZG5hbWUKKyAgICAgICAgICAgIG1vZG5hbWUgPSAiZ2NyeV8lcyIgJSBjaXBoZXJf ZmlsZS5yZW1vdmVzdWZmaXgoIi5jIikucmVtb3Zlc3VmZml4KCItZ2x1ZSIpLnJlcGxhY2UoIi0i LCAiXyIpCiAgICAgICAgIGZvciBsaW5lIGluIGY6CiAgICAgICAgICAgICBsaW5lID0gbGluZQog ICAgICAgICAgICAgaWYgc2tpcF9zdGF0ZW1lbnQ6CkBAIC0xNzEsNyArMjA1LDcgQEAgZm9yIGNp cGhlcl9maWxlIGluIGNpcGhlcl9maWxlczoKICAgICAgICAgICAgICAgICAgICAgc2tpcDIgPSBG YWxzZQogICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICBpZiBpc2NyeXB0b3N0 YXJ0OgotICAgICAgICAgICAgICAgIHMgPSByZS5zZWFyY2ggKCIgKlwiKFtBLVowLTlfYS16XSop XCIiLCBsaW5lKQorICAgICAgICAgICAgICAgIHMgPSByZS5zZWFyY2ggKCIgKlwiKFtBLVowLTlf YS16LV0qKVwiIiwgbGluZSkKICAgICAgICAgICAgICAgICBpZiBub3QgcyBpcyBOb25lOgogICAg ICAgICAgICAgICAgICAgICBzZyA9IHMuZ3JvdXBzKClbMF0KICAgICAgICAgICAgICAgICAgICAg Y3J5cHRvbGlzdC53cml0ZSAoKCIlczogJXNcbiIpICUgKHNnLCBtb2RuYW1lKSkKQEAgLTIxMiwx MSArMjQ2LDE0IEBAIGZvciBjaXBoZXJfZmlsZSBpbiBjaXBoZXJfZmlsZXM6CiAgICAgICAgICAg ICAgICAgICAgIGNobG9nbmV3ID0gIiVzICVzIiAlIChjaGxvZ25ldywgY2htc2cpCiAgICAgICAg ICAgICAgICAgICAgIG5jaCA9IFRydWUKICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAg ICAgICAgaWYgKG5vdCBob2xkKSBhbmQgKHJlLm1hdGNoIChyIlsgXHRdKihydW5fc2VsZnRlc3Rz fGRvX3RyaXBsZWRlc19zZXRfZXh0cmFfaW5mbyksPyIsIGxpbmUpIGlzIG5vdCBOb25lKToKKyAg ICAgICAgICAgICAgICBpc2NvbW1hID0gVHJ1ZQorICAgICAgICAgICAgICAgIGxpbmUgPSAiIgog ICAgICAgICAgICAgaWYgaG9sZDoKICAgICAgICAgICAgICAgICBob2xkID0gRmFsc2UKICAgICAg ICAgICAgICAgICAjIFdlJ3JlIG9wdGltaXNpbmcgZm9yIHNpemUgYW5kIGV4Y2x1ZGUgYW55dGhp bmcgbmVlZGluZyBnb29kCiAgICAgICAgICAgICAgICAgIyByYW5kb21uZXNzLgotICAgICAgICAg ICAgICAgIGlmIG5vdCByZS5tYXRjaCAoIihydW5fc2VsZnRlc3RzfHNlbGZ0ZXN0fF9nY3J5X2Fl c19jLi5fLi5jfF9nY3J5X1thLXowLTldKl9oYXNoX2J1ZmZlcnx0cmlwbGVkZXNfc2V0MmtleXN8 ZG9fdHJpcGxlZGVzX3NldF9leHRyYV9pbmZvfF9nY3J5X3JtZDE2MF9taXhibG9ja3xzZXJwZW50 X3Rlc3R8ZHNhX2dlbmVyYXRlX2V4dHx0ZXN0X2tleXN8Z2VuX2t8c2lnbnxnZW5feDkzMV9wYXJt X3hwfGdlbmVyYXRlX3g5MzF8Z2VuZXJhdGVfa2V5fGRzYV9nZW5lcmF0ZXxkc2Ffc2lnbnxlY2Nf c2lnbnxnZW5lcmF0ZXxnZW5lcmF0ZV9maXBzMTg2fF9nY3J5X3JlZ2lzdGVyX3BrX2RzYV9wcm9n cmVzc3xfZ2NyeV9yZWdpc3Rlcl9wa19lY2NfcHJvZ3Jlc3N8cHJvZ3Jlc3N8c2NhbnZhbHxlYzJv c3xlY2NfZ2VuZXJhdGVfZXh0fGVjY19nZW5lcmF0ZXxjb21wdXRlX2tleWdyaXB8ZWNjX2dldF9w YXJhbXxfZ2NyeV9yZWdpc3Rlcl9wa19kc2FfcHJvZ3Jlc3N8Z2VuX3g5MzFfcGFybV94cHxnZW5f eDkzMV9wYXJtX3hpfHJzYV9kZWNyeXB0fHJzYV9zaWdufHJzYV9nZW5lcmF0ZV9leHR8cnNhX2dl bmVyYXRlfHNlY3JldHxjaGVja19leHBvbmVudHxyc2FfYmxpbmR8cnNhX3VuYmxpbmR8ZXh0cmFj dF9hX2Zyb21fc2V4cHxjdXJ2ZV9mcmVlfGN1cnZlX2NvcHl8cG9pbnRfc2V0KSIsIGxpbmUpIGlz IE5vbmU6CisgICAgICAgICAgICAgICAgaWYgcmUubWF0Y2ggKCIoX2djcnlfaGFzaF9zZWxmdGVz dF9jaGVja19vbmV8YnVsa19zZWxmdGVzdF9zZXRrZXl8cnVuX3NlbGZ0ZXN0c3xkb190cmlwbGVk ZXNfc2V0X2V4dHJhX2luZm98c2VsZnRlc3R8c200X3NlbGZ0ZXN0fF9nY3J5X1thLXowLTlfXSpf aGFzaF9idWZmZXJ8dHJpcGxlZGVzX3NldDJrZXlzfF9nY3J5X3JtZDE2MF9taXhibG9ja3xzZXJw ZW50X3Rlc3R8ZHNhX2dlbmVyYXRlX2V4dHx0ZXN0X2tleXN8Z2VuX2t8c2lnbnxnZW5feDkzMV9w YXJtX3hwfGdlbmVyYXRlX3g5MzF8Z2VuZXJhdGVfa2V5fGRzYV9nZW5lcmF0ZXxkc2Ffc2lnbnxl Y2Nfc2lnbnxnZW5lcmF0ZXxnZW5lcmF0ZV9maXBzMTg2fF9nY3J5X3JlZ2lzdGVyX3BrX2RzYV9w cm9ncmVzc3xfZ2NyeV9yZWdpc3Rlcl9wa19lY2NfcHJvZ3Jlc3N8cHJvZ3Jlc3N8c2NhbnZhbHxl YzJvc3xlY2NfZ2VuZXJhdGVfZXh0fGVjY19nZW5lcmF0ZXxlY2NfZ2V0X3BhcmFtfF9nY3J5X3Jl Z2lzdGVyX3BrX2RzYV9wcm9ncmVzc3xnZW5feDkzMV9wYXJtX3hwfGdlbl94OTMxX3Bhcm1feGl8 cnNhX2RlY3J5cHR8cnNhX3NpZ258cnNhX2dlbmVyYXRlX2V4dHxyc2FfZ2VuZXJhdGV8c2VjcmV0 fGNoZWNrX2V4cG9uZW50fHJzYV9ibGluZHxyc2FfdW5ibGluZHxleHRyYWN0X2FfZnJvbV9zZXhw fGN1cnZlX2ZyZWV8Y3VydmVfY29weXxwb2ludF9zZXR8X2djcnlfZHNhX2dlbl9yZmM2OTc5X2t8 Yml0czJvY3RldHN8aW50Mm9jdGV0cykiLCBsaW5lKSBpcyBub3QgTm9uZToKIAogICAgICAgICAg ICAgICAgICAgICBza2lwID0gMQogICAgICAgICAgICAgICAgICAgICBpZiBub3QgcmUubWF0Y2gg KCJzZWxmdGVzdCIsIGxpbmUpIGlzIE5vbmUgYW5kIGNpcGhlcl9maWxlID09ICJpZGVhLmMiOgpA QCAtMjI0LDYgKzI2MSwxMSBAQCBmb3IgY2lwaGVyX2ZpbGUgaW4gY2lwaGVyX2ZpbGVzOgogCiAg ICAgICAgICAgICAgICAgICAgIGlmIG5vdCByZS5tYXRjaCAoInNlcnBlbnRfdGVzdCIsIGxpbmUp IGlzIE5vbmU6CiAgICAgICAgICAgICAgICAgICAgICAgICBmdy53cml0ZSAoInN0YXRpYyBjb25z dCBjaGFyICpzZXJwZW50X3Rlc3QgKHZvaWQpIHsgcmV0dXJuIDA7IH1cbiIpOworICAgICAgICAg ICAgICAgICAgICBpZiBub3QgcmUubWF0Y2ggKCJzbTRfc2VsZnRlc3QiLCBsaW5lKSBpcyBOb25l OgorICAgICAgICAgICAgICAgICAgICAgICAgZncud3JpdGUgKCJzdGF0aWMgY29uc3QgY2hhciAq c200X3NlbGZ0ZXN0ICh2b2lkKSB7IHJldHVybiAwOyB9XG4iKTsKKyAgICAgICAgICAgICAgICAg ICAgaGFzaF9idWYgPSByZS5tYXRjaCAoIihfZ2NyeV9bYS16MC05X10qX2hhc2hfYnVmZmVycyki LCBsaW5lKQorICAgICAgICAgICAgICAgICAgICBpZiBoYXNoX2J1ZiBpcyBub3QgTm9uZToKKyAg ICAgICAgICAgICAgICAgICAgICAgIGZ3LndyaXRlICgiI2RlZmluZSAlcyAwIiAlIChoYXNoX2J1 Zi5ncm91cCgwKSkpCiAgICAgICAgICAgICAgICAgICAgIGlmIG5vdCByZS5tYXRjaCAoImRzYV9n ZW5lcmF0ZSIsIGxpbmUpIGlzIE5vbmU6CiAgICAgICAgICAgICAgICAgICAgICAgICBmdy53cml0 ZSAoIiNkZWZpbmUgZHNhX2dlbmVyYXRlIDAiKTsKICAgICAgICAgICAgICAgICAgICAgaWYgbm90 IHJlLm1hdGNoICgiZWNjX2dlbmVyYXRlIiwgbGluZSkgaXMgTm9uZToKQEAgLTI1NywzNyArMjk5 LDM4IEBAIGZvciBjaXBoZXJfZmlsZSBpbiBjaXBoZXJfZmlsZXM6CiAgICAgICAgICAgICAgICAg ICAgIGNobG9nbmV3ID0gIiVzOiAlcyIgJSAoY2hsb2duZXcsIGNobXNnKQogICAgICAgICAgICAg ICAgICAgICBuY2ggPSBUcnVlCiAgICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAg IG0gPSByZS5tYXRjaCAoImdjcnlfY2lwaGVyX3NwZWNfdCIsIGxpbmUpCisgICAgICAgICAgICBt ID0gcmUubWF0Y2ggKCIoY29uc3QgKT9nY3J5X2NpcGhlcl9zcGVjX3QiLCBsaW5lKQogICAgICAg ICAgICAgaWYgaXNjIGFuZCBub3QgbSBpcyBOb25lOgogICAgICAgICAgICAgICAgIGFzc2VydCAo bm90IGlzbWQpCiAgICAgICAgICAgICAgICAgYXNzZXJ0IChub3QgaXNwaykKICAgICAgICAgICAg ICAgICBhc3NlcnQgKG5vdCBpc2NpcGhlcikKICAgICAgICAgICAgICAgICBhc3NlcnQgKG5vdCBp c2NyeXB0b3N0YXJ0KQotICAgICAgICAgICAgICAgIGNpcGhlcm5hbWUgPSBsaW5lIFtsZW4gKCJn Y3J5X2NpcGhlcl9zcGVjX3QiKTpdLnN0cmlwICgpCisgICAgICAgICAgICAgICAgY2lwaGVybmFt ZSA9IGxpbmUucmVtb3ZlcHJlZml4KCJjb25zdCAiKS5yZW1vdmVwcmVmaXgoImdjcnlfY2lwaGVy X3NwZWNfdCIpLnN0cmlwICgpCiAgICAgICAgICAgICAgICAgY2lwaGVybmFtZSA9IHJlLm1hdGNo KCJbYS16QS1aMC05X10qIixjaXBoZXJuYW1lKS5ncm91cCAoKQogICAgICAgICAgICAgICAgIGNp cGhlcm5hbWVzLmFwcGVuZCAoY2lwaGVybmFtZSkKICAgICAgICAgICAgICAgICBpc2NpcGhlciA9 IFRydWUKICAgICAgICAgICAgICAgICBpc2NyeXB0b3N0YXJ0ID0gVHJ1ZQogCi0gICAgICAgICAg ICBtID0gcmUubWF0Y2ggKCJnY3J5X3BrX3NwZWNfdCIsIGxpbmUpCisgICAgICAgICAgICBtID0g cmUubWF0Y2ggKCIoY29uc3QgKT9nY3J5X3BrX3NwZWNfdCIsIGxpbmUpCiAgICAgICAgICAgICBp ZiBpc2MgYW5kIG5vdCBtIGlzIE5vbmU6CiAgICAgICAgICAgICAgICAgYXNzZXJ0IChub3QgaXNt ZCkKICAgICAgICAgICAgICAgICBhc3NlcnQgKG5vdCBpc3BrKQogICAgICAgICAgICAgICAgIGFz c2VydCAobm90IGlzY2lwaGVyKQogICAgICAgICAgICAgICAgIGFzc2VydCAobm90IGlzY3J5cHRv c3RhcnQpCi0gICAgICAgICAgICAgICAgcGtuYW1lID0gbGluZSBbbGVuICgiZ2NyeV9wa19zcGVj X3QiKTpdLnN0cmlwICgpCisgICAgICAgICAgICAgICAgcGtuYW1lID0gbGluZS5yZW1vdmVwcmVm aXgoImNvbnN0ICIpLnJlbW92ZXByZWZpeCgiZ2NyeV9wa19zcGVjX3QiKS5zdHJpcCAoKQogICAg ICAgICAgICAgICAgIHBrbmFtZSA9IHJlLm1hdGNoKCJbYS16QS1aMC05X10qIixwa25hbWUpLmdy b3VwICgpCiAgICAgICAgICAgICAgICAgcGtuYW1lcy5hcHBlbmQgKHBrbmFtZSkKICAgICAgICAg ICAgICAgICBpc3BrID0gVHJ1ZQogICAgICAgICAgICAgICAgIGlzY3J5cHRvc3RhcnQgPSBUcnVl CiAKLSAgICAgICAgICAgIG0gPSByZS5tYXRjaCAoImdjcnlfbWRfc3BlY190IiwgbGluZSkKKyAg ICAgICAgICAgIG0gPSByZS5tYXRjaCAoIihjb25zdCApP2djcnlfbWRfc3BlY190IiwgbGluZSkK ICAgICAgICAgICAgIGlmIGlzYyBhbmQgbm90IG0gaXMgTm9uZToKICAgICAgICAgICAgICAgICBh c3NlcnQgKG5vdCBpc21kKQogICAgICAgICAgICAgICAgIGFzc2VydCAobm90IGlzcGspCiAgICAg ICAgICAgICAgICAgYXNzZXJ0IChub3QgaXNjaXBoZXIpCiAgICAgICAgICAgICAgICAgYXNzZXJ0 IChub3QgaXNjcnlwdG9zdGFydCkKLSAgICAgICAgICAgICAgICBtZG5hbWUgPSBsaW5lIFtsZW4g KCJnY3J5X21kX3NwZWNfdCIpOl0uc3RyaXAgKCkKKyAgICAgICAgICAgICAgICBsaW5lID0gbGlu ZS5yZW1vdmVwcmVmaXgoImNvbnN0ICIpCisgICAgICAgICAgICAgICAgbWRuYW1lID0gbGluZS5y ZW1vdmVwcmVmaXgoImNvbnN0ICIpLnJlbW92ZXByZWZpeCgiZ2NyeV9tZF9zcGVjX3QiKS5zdHJp cCAoKQogICAgICAgICAgICAgICAgIG1kbmFtZSA9IHJlLm1hdGNoKCJbYS16QS1aMC05X10qIixt ZG5hbWUpLmdyb3VwICgpCiAgICAgICAgICAgICAgICAgbWRuYW1lcy5hcHBlbmQgKG1kbmFtZSkK ICAgICAgICAgICAgICAgICBpc21kID0gVHJ1ZQpAQCAtMzUwLDcgKzM5Myw3IEBAIGZvciBjaXBo ZXJfZmlsZSBpbiBjaXBoZXJfZmlsZXM6CiAgICAgICAgICAgICAgICAgICAgIG5jaCA9IFRydWUK ICAgICAgICAgICAgICAgICBjb250aW51ZQogCi0gICAgICAgICAgICBtID0gcmUubWF0Y2ggKCIo c3RhdGljIGNvbnN0IGNoYXIoIHwpXCp8c3RhdGljIGdwZ19lcnJfY29kZV90fHZvaWR8c3RhdGlj IGludHxzdGF0aWMgZ2NyeV9lcnJfY29kZV90fHN0YXRpYyBnY3J5X21waV90fHN0YXRpYyB2b2lk fHZvaWR8c3RhdGljIGVsbGlwdGljX2N1cnZlX3QpICokIiwgbGluZSkKKyAgICAgICAgICAgIG0g PSByZS5tYXRjaCAoIigoc3RhdGljICk/Y29uc3QgY2hhciggfClcKnwoc3RhdGljICk/Z3BnX2Vy cl9jb2RlX3R8dm9pZHxzdGF0aWMgaW50fChzdGF0aWMgKT9nY3J5X2Vycl9jb2RlX3R8c3RhdGlj IGdjcnlfbXBpX3R8c3RhdGljIHZvaWR8dm9pZHxzdGF0aWMgZWxsaXB0aWNfY3VydmVfdCkgKiQi LCBsaW5lKQogICAgICAgICAgICAgaWYgbm90IG0gaXMgTm9uZToKICAgICAgICAgICAgICAgICBo b2xkID0gVHJ1ZQogICAgICAgICAgICAgICAgIGhvbGRsaW5lID0gbGluZQpAQCAtNDIxLDExICs0 NjQsOSBAQCBmb3IgY2lwaGVyX2ZpbGUgaW4gY2lwaGVyX2ZpbGVzOgogICAgICAgICAgICAgICAg IGNvbnRpbnVlCiAgICAgICAgICAgICBmdy53cml0ZSAobGluZSkKICAgICAgICAgaWYgbGVuIChj aXBoZXJuYW1lcykgPiAwIG9yIGxlbiAobWRuYW1lcykgPiAwIG9yIGxlbiAocGtuYW1lcykgPiAw OgotICAgICAgICAgICAgaWYgaXNnbHVlOgotICAgICAgICAgICAgICAgIG1vZGZpbGVzID0gImxp Yi9saWJnY3J5cHQtZ3J1Yi9jaXBoZXIvJXMgbGliL2xpYmdjcnlwdC1ncnViL2NpcGhlci8lcyIg XAotICAgICAgICAgICAgICAgICAgICAlIChjaXBoZXJfZmlsZSwgY2lwaGVyX2ZpbGUucmVwbGFj ZSAoIi1nbHVlLmMiLCAiLmMiKSkKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAg bW9kZmlsZXMgPSAibGliL2xpYmdjcnlwdC1ncnViL2NpcGhlci8lcyIgJSBjaXBoZXJfZmlsZQor ICAgICAgICAgICAgbW9kZmlsZXMgPSBbY2lwaGVyX2ZpbGVdCisgICAgICAgICAgICBpZiBtb2Ru YW1lIGluIGV4dHJhX2ZpbGVzLmtleXMoKToKKyAgICAgICAgICAgICAgICBtb2RmaWxlcyArPSBl eHRyYV9maWxlc1ttb2RuYW1lXQogICAgICAgICAgICAgaWYgbGVuIChjaXBoZXJuYW1lcykgPiAw IG9yIGxlbiAobWRuYW1lcykgPiAwOgogICAgICAgICAgICAgICAgIG1vZHVsZXNfc3ltX21kLmFw cGVuZCAobW9kbmFtZSkKICAgICAgICAgICAgIGNobXNnID0gIihHUlVCX01PRF9JTklUKCVzKSk6 IE5ldyBmdW5jdGlvblxuIiAlIG1vZG5hbWUKQEAgLTQ0Nyw3ICs0ODgsNyBAQCBmb3IgY2lwaGVy X2ZpbGUgaW4gY2lwaGVyX2ZpbGVzOgogICAgICAgICAgICAgICAgIGNobG9nbmV3ID0gIiVzXG4J JXMiICUgKGNobG9nbmV3LCBjaG1zZykKICAgICAgICAgICAgICAgICBmdy53cml0ZSAoIiAgZ3J1 Yl9tZF9yZWdpc3RlciAoJiVzKTtcbiIgJSBtZG5hbWUpCiAgICAgICAgICAgICBmb3IgcGtuYW1l IGluIHBrbmFtZXM6Ci0gICAgICAgICAgICAgICAgY2htc2cgPSAiUmVnaXN0ZXIgcGsgJXMiICUg bWRuYW1lCisgICAgICAgICAgICAgICAgY2htc2cgPSAiUmVnaXN0ZXIgcGsgJXMiICUgcGtuYW1l CiAgICAgICAgICAgICAgICAgY2hsb2duZXcgPSAiJXNcbgklcyIgJSAoY2hsb2duZXcsIGNobXNn KQogICAgICAgICAgICAgICAgIGZ3LndyaXRlICgiICBncnViX2NyeXB0b19wa18lcyA9ICYlcztc biIKICAgICAgICAgICAgICAgICAgICAgICAgICAgJSAocGtuYW1lLnJlcGxhY2UgKCJfZ2NyeV9w dWJrZXlfc3BlY18iLCAiIiksIHBrbmFtZSkpCkBAIC00NjUsMTcgKzUwNiwxNyBAQCBmb3IgY2lw aGVyX2ZpbGUgaW4gY2lwaGVyX2ZpbGVzOgogICAgICAgICAgICAgICAgIGNobG9nbmV3ID0gIiVz XG4JJXMiICUgKGNobG9nbmV3LCBjaG1zZykKICAgICAgICAgICAgICAgICBmdy53cml0ZSAoIiAg Z3J1Yl9tZF91bnJlZ2lzdGVyICgmJXMpO1xuIiAlIG1kbmFtZSkKICAgICAgICAgICAgIGZvciBw a25hbWUgaW4gcGtuYW1lczoKLSAgICAgICAgICAgICAgICBjaG1zZyA9ICJVbnJlZ2lzdGVyIHBr ICVzIiAlIG1kbmFtZQorICAgICAgICAgICAgICAgIGNobXNnID0gIlVucmVnaXN0ZXIgcGsgJXMi ICUgcGtuYW1lCiAgICAgICAgICAgICAgICAgY2hsb2duZXcgPSAiJXNcbgklcyIgJSAoY2hsb2du ZXcsIGNobXNnKQogICAgICAgICAgICAgICAgIGZ3LndyaXRlICgiICBncnViX2NyeXB0b19wa18l cyA9IDA7XG4iCiAgICAgICAgICAgICAgICAgICAgICAgICAgICUgKHBrbmFtZS5yZXBsYWNlICgi X2djcnlfcHVia2V5X3NwZWNfIiwgIiIpKSkKICAgICAgICAgICAgIGZ3LndyaXRlICgifVxuIikK ICAgICAgICAgICAgIGNvbmYud3JpdGUgKCJtb2R1bGUgPSB7XG4iKQogICAgICAgICAgICAgY29u Zi53cml0ZSAoIiAgbmFtZSA9ICVzO1xuIiAlIG1vZG5hbWUpCi0gICAgICAgICAgICBmb3Igc3Jj IGluIG1vZGZpbGVzLnNwbGl0KCk6Ci0gICAgICAgICAgICAgICAgY29uZi53cml0ZSAoIiAgY29t bW9uID0gJXM7XG4iICUgc3JjKQorICAgICAgICAgICAgZm9yIHNyYyBpbiBtb2RmaWxlczoKKyAg ICAgICAgICAgICAgICBjb25mLndyaXRlICgiICBjb21tb24gPSBsaWIvbGliZ2NyeXB0LWdydWIv Y2lwaGVyLyVzO1xuIiAlIHNyYykKICAgICAgICAgICAgICAgICBpZiBsZW4gKGNpcGhlcm5hbWVz KSA+IDAgb3IgbGVuIChtZG5hbWVzKSA+IDA6Ci0gICAgICAgICAgICAgICAgICAgIGNvbmZ1dGls LndyaXRlICgiICBjb21tb24gPSBncnViLWNvcmUvJXM7XG4iICUgc3JjKQorICAgICAgICAgICAg ICAgICAgICBjb25mdXRpbC53cml0ZSAoIiAgY29tbW9uID0gZ3J1Yi1jb3JlL2xpYi9saWJnY3J5 cHQtZ3J1Yi9jaXBoZXIvJXM7XG4iICUgc3JjKQogICAgICAgICAgICAgaWYgbW9kbmFtZSA9PSAi Z2NyeV9lY2MiOgogICAgICAgICAgICAgICAgIGNvbmYud3JpdGUgKCIgIGNvbW1vbiA9IGxpYi9s aWJnY3J5cHQtZ3J1Yi9tcGkvZWMuYztcbiIpCiAgICAgICAgICAgICAgICAgY29uZi53cml0ZSAo IiAgY2ZsYWdzID0gJyQoQ0ZMQUdTX0dDUlkpIC1Xbm8tcmVkdW5kYW50LWRlY2xzIC1Xbm8tc2ln bi1jb21wYXJlJztcbiIpCkBAIC00OTAsNyArNTMxLDcgQEAgZm9yIGNpcGhlcl9maWxlIGluIGNp cGhlcl9maWxlczoKICAgICAgICAgICAgIGZ3LmNsb3NlICgpCiAgICAgICAgICAgICBpZiBuY2g6 CiAgICAgICAgICAgICAgICAgY2hsb2cgPSAiJXMlc1xuIiAlIChjaGxvZywgY2hsb2duZXcpCi0g ICAgICAgIGVsaWYgaXNjIGFuZCBjaXBoZXJfZmlsZSAhPSAiY2FtZWxsaWEuYyI6CisgICAgICAg IGVsaWYgaXNjIGFuZCBjaXBoZXJfZmlsZSBub3QgaW4gZXh0cmFfZmlsZXNfbGlzdDoKICAgICAg ICAgICAgIHByaW50ICgiV0FSTklORzogQyBmaWxlIGlzbid0IGEgbW9kdWxlOiAlcyIgJSBjaXBo ZXJfZmlsZSkKICAgICAgICAgICAgIGYuY2xvc2UgKCkKICAgICAgICAgICAgIGZ3LmNsb3NlICgp CkBAIC01MTIsNyArNTUzLDcgQEAgZm9yIHNyYyBpbiBzb3J0ZWQgKG9zLmxpc3RkaXIgKG9zLnBh dGguam9pbiAoaW5kaXIsICJzcmMiKSkpOgogICAgICAgICAgICAgb3Igc3JjID09ICJsaWJnY3J5 cHQudmVycyIgb3Igc3JjID09ICJNYWtlZmlsZS5hbSIgXAogICAgICAgICAgICAgb3Igc3JjID09 ICJNYW5pZmVzdCIgb3Igc3JjID09ICJtaXNjLmMiIFwKICAgICAgICAgICAgIG9yIHNyYyA9PSAi bWlzc2luZy1zdHJpbmcuYyIgb3Igc3JjID09ICJtb2R1bGUuYyIgXAotICAgICAgICAgICAgb3Ig c3JjID09ICJzZWNtZW0uYyIgb3Igc3JjID09ICJzZXhwLmMiIFwKKyAgICAgICAgICAgIG9yIHNy YyA9PSAic2VjbWVtLmMiIFwKICAgICAgICAgICAgIG9yIHNyYyA9PSAic3RkbWVtLmMiIG9yIHNy YyA9PSAidmlzaWJpbGl0eS5jIjoKICAgICAgICAgY29udGludWUKICAgICBvdXRmaWxlID0gb3Mu cGF0aC5qb2luIChiYXNlZGlyLCAic3JjIiwgc3JjKQpAQCAtNTM0LDggKzU3NSwxNyBAQCBmb3Ig c3JjIGluIHNvcnRlZCAob3MubGlzdGRpciAob3MucGF0aC5qb2luIChpbmRpciwgInNyYyIpKSk6 CiAgICAgICAgIGZ3LmNsb3NlICgpCiAgICAgICAgIGNvbnRpbnVlCiAKKyAgICBpZiBzcmMgPT0g ImNpcGhlci1wcm90by5oIjoKKyAgICAgICAgZncud3JpdGUoIiNpbmNsdWRlIDxncnViL2NyeXB0 by5oPlxuIikKKyAgICAgICAgZncud3JpdGUoInR5cGVkZWYgZ2NyeV9zZWxmdGVzdF9mdW5jX3Qg c2VsZnRlc3RfZnVuY190OyIpCisgICAgICAgIGYuY2xvc2UgKCkKKyAgICAgICAgZncuY2xvc2Ug KCkKKyAgICAgICAgY29udGludWUKKwogICAgIGlmIHNyYyA9PSAiZzEwbGliLmgiOgotICAgICAg ICBmdy53cml0ZSAoZi5yZWFkICgpLnJlcGxhY2UgKCIocHJpbnRmLGYsYSkiLCAiKF9fcHJpbnRm X18sZixhKSIpKQorICAgICAgICBmdy53cml0ZSgiI2luY2x1ZGUgPGNpcGhlcl93cmFwLmg+XG4i KQorICAgICAgICBmdy53cml0ZSgiI2luY2x1ZGUgPGdydWIvY3J5cHRvLmg+XG4iKQorICAgICAg ICBmdy53cml0ZSAoZi5yZWFkICgpLnJlcGxhY2UgKCIocHJpbnRmLGYsYSkiLCAiKF9fcHJpbnRm X18sZixhKSIpLnJlcGxhY2UgKCIjaW5jbHVkZSBcIi4uL2NvbXBhdC9saWJjb21wYXQuaFwiIiwg IiIpLnJlcGxhY2UoIiNkZWZpbmUgTl8oYSkgKGEpIiwgIiIpKQogICAgICAgICBmLmNsb3NlICgp CiAgICAgICAgIGZ3LmNsb3NlICgpCiAgICAgICAgIGNvbnRpbnVlCkBAIC01NDYsNyArNTk2LDcg QEAgZm9yIHNyYyBpbiBzb3J0ZWQgKG9zLmxpc3RkaXIgKG9zLnBhdGguam9pbiAoaW5kaXIsICJz cmMiKSkpOgogCiBmb3Igc3JjIGluIHNvcnRlZCAob3MubGlzdGRpciAob3MucGF0aC5qb2luIChp bmRpciwgIm1waSIpKSk6CiAgICAgaWYgc3JjID09ICJjb25maWcubGlua3MiIG9yIHNyYyA9PSAi Q2hhbmdlTG9nLTIwMTEiIFwKLSAgICAgICAgICAgIG9yIHNyYyA9PSAibXBpLXNjYW4uYyIgb3Ig c3JjID09ICJNYW5pZmVzdCIgXAorICAgICAgICAgICAgb3Igc3JjID09ICJNYW5pZmVzdCIgXAog ICAgICAgICAgICAgb3Igc3JjID09ICJNYWtlZmlsZS5hbSI6CiAgICAgICAgIGNvbnRpbnVlCiAg ICAgaW5maWxlID0gb3MucGF0aC5qb2luIChpbmRpciwgIm1waSIsIHNyYykKQEAgLTU2OCw3ICs2 MTgsNyBAQCBmb3Igc3JjIGluIHNvcnRlZCAob3MubGlzdGRpciAob3MucGF0aC5qb2luIChpbmRp ciwgIm1waSIpKSk6CiAgICAgICAgICAgICBob2xkID0gRmFsc2UKICAgICAgICAgICAgICMgV2Un cmUgb3B0aW1pc2luZyBmb3Igc2l6ZSBhbmQgZXhjbHVkZSBhbnl0aGluZyBuZWVkaW5nIGdvb2QK ICAgICAgICAgICAgICMgcmFuZG9tbmVzcy4KLSAgICAgICAgICAgIGlmIG5vdCByZS5tYXRjaCAo IihfZ2NyeV9tcGlfZ2V0X2h3X2NvbmZpZ3xnY3J5X21waV9yYW5kb21pemUpIiwgbGluZSkgaXMg Tm9uZToKKyAgICAgICAgICAgIGlmIG5vdCByZS5tYXRjaCAoIihfZ2NyeV9tcGlfZ2V0X2h3X2Nv bmZpZ3xnY3J5X21waV9yYW5kb21pemV8X2djcnlfbXBpX3JhbmRvbWl6ZSkiLCBsaW5lKSBpcyBO b25lOgogICAgICAgICAgICAgICAgIHNraXAgPSAxCiAgICAgICAgICAgICAgICAgY29udGludWUK ICAgICAgICAgICAgIGVsc2U6CkBAIC02MTIsOSArNjYyLDYgQEAgZncud3JpdGUgKCIjaW5jbHVk ZSA8Y2lwaGVyX3dyYXAuaD5cbiIpCiBjaGxvZyA9ICIlcwkqIGcxMGxpYi5oOiBMaWtld2lzZS5c biIgJSBjaGxvZwogZncuY2xvc2UgKCkKIAotaW5maWxlID0gb3MucGF0aC5qb2luIChjaXBoZXJf ZGlyX2luLCAiQ2hhbmdlTG9nIikKLW91dGZpbGUgPSBvcy5wYXRoLmpvaW4gKGNpcGhlcl9kaXJf b3V0LCAiQ2hhbmdlTG9nIikKLQogY29uZi5jbG9zZSAoKTsKIAogaW5pdGZpbGUgPSBjb2RlY3Mu b3BlbiAob3MucGF0aC5qb2luIChjaXBoZXJfZGlyX291dCwgImluaXQuYyIpLCAidyIsICJ1dGYt OCIpCkBAIC02NDMsNyArNjkwLDcgQEAgY29uZnV0aWwud3JpdGUgKCJ9O1xuIik7CiBjb25mdXRp bC5jbG9zZSAoKTsKIAogCi1mPWNvZGVjcy5vcGVuIChpbmZpbGUsICJyIiwgInV0Zi04IikKK291 dGZpbGUgPSBvcy5wYXRoLmpvaW4gKGNpcGhlcl9kaXJfb3V0LCAiQ2hhbmdlTG9nIikKIGZ3PWNv ZGVjcy5vcGVuIChvdXRmaWxlLCAidyIsICJ1dGYtOCIpCiBkdCA9IGRhdGV0aW1lLmRhdGUudG9k YXkgKCkKIGZ3LndyaXRlICgiJTA0ZC0lMDJkLSUwMmQgIEF1dG9tYXRpYyBpbXBvcnQgdG9vbFxu IiAlIFwKQEAgLTY1Myw3ICs3MDAsNCBAQCBmdy53cml0ZSAoIglJbXBvcnRlZCBjaXBoZXJzIHRv IEdSVUJcbiIpCiBmdy53cml0ZSAoIlxuIikKIGZ3LndyaXRlIChjaGxvZykKIGZ3LndyaXRlICgi XG4iKQotZm9yIGxpbmUgaW4gZjoKLSAgICBmdy53cml0ZSAobGluZSkKLWYuY2xvc2UgKCkKIGZ3 LmNsb3NlICgpCmRpZmYgLS1naXQgYS91dGlsL2ltcG9ydF9nY3J5cHRfaW50aC5zZWQgYi91dGls L2ltcG9ydF9nY3J5cHRfaW50aC5zZWQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MDAwLi5lYmU5MzcxZWUKLS0tIC9kZXYvbnVsbAorKysgYi91dGlsL2ltcG9ydF9nY3J5cHRfaW50 aC5zZWQKQEAgLTAsMCArMSwxNyBAQAorL14jQElOU0VSVF9TWVNfU0VMRUNUX0hALyBkCisvXkBG QUxMQkFDS19TT0NLTEVOX1RALyBkCisvXiMgKmluY2x1ZGUgPHN0ZGxpYlwuaD4vIGQKKy9eIyAq aW5jbHVkZSA8c3RyaW5nXC5oPi8gZAorL14jICppbmNsdWRlIDx3aW5zb2NrMlwuaD4vIGQKKy9e IyAqaW5jbHVkZSA8d3MydGNwaXBcLmg+LyBkCisvXiMgKmluY2x1ZGUgPHRpbWVcLmg+LyBkCisv XiMgKmluY2x1ZGUgPHN5c1wvc29ja2V0XC5oPi8gZAorL14jICppbmNsdWRlIDxzeXNcL3RpbWVc Lmg+LyBkCisvXiAgdHlwZWRlZiBsb25nIHNzaXplX3Q7LyBkCisvXiAgdHlwZWRlZiBpbnQgIHBp ZF90Oy8gZAorL14jICppbmNsdWRlIDxncGctZXJyb3JcLmg+LyBzLCNpbmNsdWRlIDxncGctZXJy b3IuaD4sI2luY2x1ZGUgPGdydWIvZ2NyeXB0L2dwZy1lcnJvci5oPiwKKy9edHlwZWRlZiBncGdf ZXJyb3JfdCBnY3J5X2Vycm9yX3Q7LyBkCisvXnR5cGVkZWYgZ3BnX2Vycl9jb2RlX3QgZ2NyeV9l cnJfY29kZV90Oy8gZAorL150eXBlZGVmIHN0cnVjdCBnY3J5X21waSBcKmdjcnlfbXBpX3Q7LyBk CisvXiNlcnJvciAgZ2NyeXB0LmggYWxyZWFkeSBpbmNsdWRlZC8gZAorcApkaWZmIC0tZ2l0IGEv dXRpbC9pbXBvcnRfZ2NyeXB0aC5zZWQgYi91dGlsL2ltcG9ydF9nY3J5cHRoLnNlZAppbmRleCBm ZTZkMWEwNzIuLjUwM2I0YjU0NyAxMDA2NDQKLS0tIGEvdXRpbC9pbXBvcnRfZ2NyeXB0aC5zZWQK KysrIGIvdXRpbC9pbXBvcnRfZ2NyeXB0aC5zZWQKQEAgLTEzLDYgKzEzLDQgQEAKIC9edHlwZWRl ZiBncGdfZXJyb3JfdCBnY3J5X2Vycm9yX3Q7LyBkCiAvXnR5cGVkZWYgZ3BnX2Vycl9jb2RlX3Qg Z2NyeV9lcnJfY29kZV90Oy8gZAogL150eXBlZGVmIHN0cnVjdCBnY3J5X21waSBcKmdjcnlfbXBp X3Q7LyBkCi0vXnN0cnVjdCBnY3J5X3RocmVhZF9jYnMvIGQKLXMsX2djcnlfbXBpX2ludm0sZ2Ny eV9tcGlfaW52bSxnCiBwClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQotLSAKMi4zOS4yCgoK X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KR3J1Yi1kZXZl bCBtYWlsaW5nIGxpc3QKR3J1Yi1kZXZlbEBnbnUub3JnCmh0dHBzOi8vbGlzdHMuZ251Lm9yZy9t YWlsbWFuL2xpc3RpbmZvL2dydWItZGV2ZWwK