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 72BC7C369A4 for ; Tue, 8 Apr 2025 15:18:08 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1u2Ahb-0001Kt-8Y; Tue, 08 Apr 2025 11:17:27 -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 1u2AhX-0001JA-Um for grub-devel@gnu.org; Tue, 08 Apr 2025 11:17:25 -0400 Received: from mail-wr1-x433.google.com ([2a00:1450:4864:20::433]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1u2AhT-0008EN-T6 for grub-devel@gnu.org; Tue, 08 Apr 2025 11:17:23 -0400 Received: by mail-wr1-x433.google.com with SMTP id ffacd0b85a97d-39149bccb69so5353088f8f.2 for ; Tue, 08 Apr 2025 08:17:18 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1744125437; x=1744730237; 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=LeUxp68KPJhPDnbzh1r4dg1yHLSKciElksOkI40U7vY=; b=Gn8FfV8gNdx/6Wjz4kiMPXptQmWdHoyiL2mX73gJ909APi4NYcSKjBgK7697+fHwhb qL+23eolkRE1gtEIhQvgt/zPFHM0DJNfwJMVdHdqZh9l6UaR8nAVuL5x7VLLy8AlvtPU iHRnETO9hWr+4d7fxBP73PBJ5v1jQh9kCC+oE3CCBs2dbCl7gTV731aIiIYL2aEgT7/8 Q/QEk/IAoI5NDjJLyGkWKuTM6qhrb1Bvn2tf1dmxqF+DDc1tmmnUBnTBSzoYEyg9tuWU xPmrHVQSNdQxCrS+2g3guKokkgI17y6lfIJzCx2lpY3Y7IptZWKI8iajcVcY66uutAv0 jGHQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1744125437; x=1744730237; 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=LeUxp68KPJhPDnbzh1r4dg1yHLSKciElksOkI40U7vY=; b=A7j41iFbe5WPk14gD9+ypzXXQ+v0IxwzisPWxsQko/vQbhU69vuN8fEf8xwKqRSvlY W+WecfbObsPeYnoyVBra6PTTtqIoHx/rHDrewTlNamkOfcff/EvBTKVUKQ8sqsgkBWMi +knC3w/GC7mRQWxxdwYTxHPBK6rLdyZuH2CeY96tNsBpv3+IChedPfHGqxu4YRI0t1VS oo2AfQpm0TLYlFZynBKL/zvxAqyFDMaGBtVjBAcRlwMsiVuF0P5uGt3lf+iougzLR/86 YpM5/JDM/nSqQkTJZnqVa1mB0sPET9M54iWWezUMm6fA/9kgmMAEkd5mhynUeDchmbMO maGw== X-Gm-Message-State: AOJu0YwO5swlknxuDMClhGmd9+jqr9q4YCi6ZjM+HSxPxYLSpR3fpMFF tooGMn0UPX7ROD6VXqupDeTuMEOG5h074i/zHXCk5QChhLkz8ybMRJUukC5T X-Gm-Gg: ASbGncsHE3BZch0nhVAuwlNtpJfJpat80LyVDBzp23wtosreLqtRAkCPbhAd2LQJB7b kaY/FjB23jVv8s3RsuEBKTGAeCZFutlI1y1kEy3Sdx2tRrMAImQQzEi8jB3gZzBJkXgF/IDY79v HvsKQQ6JcIBgOO4jaSOU4u9DzVBysXh3yU5hCpCteen7gbBXAl9MRRUF9ggM9YNR1NBC7iBXymi jMQ4B/5L7hhLMFEVMywTiqXxmW+qSHWusPrVdiz/jI2utCSlXRyInhP1Zd+RxJvT306Vu6JplIv rfGWkImcEOGgYonljlovfHyoFDS/dxwA7D8= X-Google-Smtp-Source: AGHT+IEy+HEyhLkYe2Nwo0CmA+k1WuYD8g0Tv/Byq8EdBESmfCQqVuR0bLFHBHLpZkud0AjIwVgxzQ== X-Received: by 2002:adf:9c88:0:b0:39d:724f:a8ec with SMTP id ffacd0b85a97d-39d724fad57mr9731824f8f.44.1744125436802; Tue, 08 Apr 2025 08:17:16 -0700 (PDT) Received: from localhost ([5.166.19.28]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-39c301a67b7sm14877531f8f.25.2025.04.08.08.17.15 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 08 Apr 2025 08:17:16 -0700 (PDT) From: Vladimir Serbinenko To: grub-devel@gnu.org Cc: Vladimir Serbinenko Subject: [PATCH 3/3] Use ET_DYN images and PHDRs for creating relocatable images Date: Tue, 8 Apr 2025 15:16:25 +0000 Message-ID: <20250408151657.3303174-4-phcoder@gmail.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250408151657.3303174-1-phcoder@gmail.com> References: <20250408151657.3303174-1-phcoder@gmail.com> MIME-Version: 1.0 Received-SPF: pass client-ip=2a00:1450:4864:20::433; envelope-from=phcoder@gmail.com; helo=mail-wr1-x433.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 RVRfUkVMIGltYWdlcyBjb250YWluIGxvdHMgb2YgY29tcGxpY2F0ZWQgcmVsb2NhdGlvbnMuIE9u ZSBuZXcgcmVsb2NhdGlvbgp3ZSBuZWVkIHRvIHN1cHBvcnQgaXMgUl9MQVJDSF9HT1RfUENfSEky MC9MTzEyLiBSYXRoZXIgdGhhbiB0aGUgZXRlcm5hbCBjaGFzaW5nCm9mIGNvbXBsaWNhdGVkIHdl IGNhbiB1c2UgbGlua2VyIHRvIGhhbmRsZSB0aGVtIGFuZCB0aGVuIG9ubHkgcmVsYXRpdmVseQpz aW1wbGUgZHluYW1pYyByZWxvY3MgcmVtYWluIHRvIGhhbmRsZS4KClRoaXMgcmVxdWlyZWQgc21h bGwgYWRqdXN0bWVudHMgdG8gdGhlIGFzbSBjb2RlIHRvIGJlIGNvbXBhdGlibGUgd2l0aAotc2hh cmVkLgoKU2lnbmVkLW9mZi1ieTogVmxhZGltaXIgU2VyYmluZW5rbyA8cGhjb2RlckBnbWFpbC5j b20+Ci0tLQogY29uZi9NYWtlZmlsZS5jb21tb24gICAgICAgICAgICAgICAgfCAgIDggKy0KIGNv bmZpZ3VyZS5hYyAgICAgICAgICAgICAgICAgICAgICAgIHwgICA3ICstCiBncnViLWNvcmUvTWFr ZWZpbGUuY29yZS5kZWYgICAgICAgICB8ICAyMCArLQogZ3J1Yi1jb3JlL2tlcm4vaWE2NC9lZmkv c3RhcnR1cC5TICAgfCAgIDcgKy0KIGdydWItY29yZS9rZXJuL21pcHMvc3RhcnR1cC5TICAgICAg IHwgICA0ICstCiBncnViLWNvcmUva2Vybi94ODZfNjQvZWZpL3N0YXJ0dXAuUyB8ICAgNiArLQog aW5jbHVkZS9ncnViL3V0aWwvbWtpbWFnZS5oICAgICAgICAgfCAgIDMgKwogdXRpbC9ncnViLW1r aW1hZ2V4eC5jICAgICAgICAgICAgICAgfCA0NTEgKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0t LQogOCBmaWxlcyBjaGFuZ2VkLCAyNzAgaW5zZXJ0aW9ucygrKSwgMjM2IGRlbGV0aW9ucygtKQoK ZGlmZiAtLWdpdCBhL2NvbmYvTWFrZWZpbGUuY29tbW9uIGIvY29uZi9NYWtlZmlsZS5jb21tb24K aW5kZXggM2UyZGZmMDkwLi45MDBhMTVjN2IgMTAwNjQ0Ci0tLSBhL2NvbmYvTWFrZWZpbGUuY29t bW9uCisrKyBiL2NvbmYvTWFrZWZpbGUuY29tbW9uCkBAIC00MSw3ICs0MSw3IEBAIENGTEFHU19L RVJORUwgPSAkKENGTEFHU19QTEFURk9STSkgLWZmcmVlc3RhbmRpbmcKIExERkxBR1NfS0VSTkVM ID0gJChMREZMQUdTX1BMQVRGT1JNKSAtbm9zdGRsaWIgJChUQVJHRVRfTERGTEFHU19PTERNQUdJ QykKIENQUEZMQUdTX0tFUk5FTCA9ICQoQ1BQRkxBR1NfQ1BVKSAkKENQUEZMQUdTX1BMQVRGT1JN KSAtREdSVUJfS0VSTkVMPTEKIENDQVNGTEFHU19LRVJORUwgPSAkKENDQVNGTEFHU19DUFUpICQo Q0NBU0ZMQUdTX1BMQVRGT1JNKQotU1RSSVBGTEFHU19LRVJORUwgPSAtUiAucmVsLmR5biAtUiAu cmVnaW5mbyAtUiAubm90ZSAtUiAuY29tbWVudCAtUiAuZHJlY3R2ZSAtUiAubm90ZS5nbnUuZ29s ZC12ZXJzaW9uIC1SIC5NSVBTLmFiaWZsYWdzIC1SIC5BUk0uZXhpZHgKK1NUUklQRkxBR1NfS0VS TkVMID0gLVIgLnJlZ2luZm8gLVIgLm5vdGUgLVIgLmNvbW1lbnQgLVIgLmRyZWN0dmUgLVIgLm5v dGUuZ251LmdvbGQtdmVyc2lvbiAtUiAuTUlQUy5hYmlmbGFncyAtUiAuQVJNLmV4aWR4CiBpZiAh Q09ORF9lbXUKIGlmIENPTkRfSEFWRV9BU01fVVNDT1JFCiAgIExERkxBR1NfS0VSTkVMICs9IC1X bCwtLWRlZnN5bT1fbWFsbG9jPV9ncnViX21hbGxvYyAtV2wsLS1kZWZzeW09X2ZyZWU9X2dydWJf ZnJlZQpAQCAtNTQsMTAgKzU0LDEwIEBAIENGTEFHU19NT0RVTEUgPSAkKENGTEFHU19QTEFURk9S TSkgLWZmcmVlc3RhbmRpbmcKIGlmIENPTkRfZW11CiBMREZMQUdTX01PRFVMRSA9ICQoTERGTEFH U19QTEFURk9STSkgLW5vc3RkbGliIC1XbCwtcgogZWxzZQotaWYgQ09ORF9taXBzCi1MREZMQUdT X01PRFVMRSA9ICQoTERGTEFHU19QTEFURk9STSkgLW5vc3RkbGliICQoVEFSR0VUX0xERkxBR1Nf T0xETUFHSUMpIC1zaGFyZWQKK2lmIENPTkRfaTM4NgorTERGTEFHU19NT0RVTEUgPSAkKExERkxB R1NfUExBVEZPUk0pIC1ub3N0ZGxpYiAkKFRBUkdFVF9MREZMQUdTX09MRE1BR0lDKSAtc2hhcmVk IC1XbCwtVHRleHQtc2VnbWVudD0wIC1XbCwtQnN0YXRpYyAtV2wsLVQke3NyY2Rpcn0vLi4vY29u Zi9pMzg2LW1vZHVsZXMuc2MKIGVsc2UKLUxERkxBR1NfTU9EVUxFID0gJChMREZMQUdTX1BMQVRG T1JNKSAtbm9zdGRsaWIgJChUQVJHRVRfTERGTEFHU19PTERNQUdJQykgLXNoYXJlZCAtV2wsLVR0 ZXh0LXNlZ21lbnQ9MCAtV2wsLUJzdGF0aWMgLVdsLC1UJHtzcmNkaXJ9Ly4uL2NvbmYvbW9kdWxl cy5zYworTERGTEFHU19NT0RVTEUgPSAkKExERkxBR1NfUExBVEZPUk0pIC1ub3N0ZGxpYiAkKFRB UkdFVF9MREZMQUdTX09MRE1BR0lDKSAtc2hhcmVkCiBlbmRpZgogZW5kaWYKIENQUEZMQUdTX01P RFVMRSA9ICQoQ1BQRkxBR1NfQ1BVKSAkKENQUEZMQUdTX1BMQVRGT1JNKQpkaWZmIC0tZ2l0IGEv Y29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCmluZGV4IGNkYjZhNWM0MS4uMjVmM2ZmOTMyIDEw MDY0NAotLS0gYS9jb25maWd1cmUuYWMKKysrIGIvY29uZmlndXJlLmFjCkBAIC04NzYsOSArODc2 LDYgQEAgaWYgKCB0ZXN0ICJ4JHRhcmdldF9jcHUiID0geGkzODYgfHwgdGVzdCAieCR0YXJnZXRf Y3B1IiA9IHh4ODZfNjQgKTsgdGhlbgogZmkKIAogaWYgdGVzdCAieCR0YXJnZXRfY3B1IiA9IHhs b29uZ2FyY2g2NDsgdGhlbgotICBUQVJHRVRfQ0ZMQUdTPSIkVEFSR0VUX0NGTEFHUyAtZm5vLXBs dCIKLSAgVEFSR0VUX0NDQVNGTEFHUz0iJFRBUkdFVF9DQ0FTRkxBR1MgLWZuby1wbHQiCi0KICAg QUNfQ0FDSEVfQ0hFQ0soW2ZvciBuby1yZWxheCBvcHRpb25zXSwgZ3J1Yl9jdl90YXJnZXRfY2Nf bW5vX3JlbGF4LCBbCiAgICAgZ3J1Yl9jdl90YXJnZXRfY2NfbW5vX3JlbGF4PW5vCiAgICAgZm9y IGNhbmQgaW4gIi1tbm8tcmVsYXgiICItV2EsLW1uby1yZWxheCI7IGRvCkBAIC0xNDA1LDcgKzE0 MDIsOCBAQCBjYXNlICR0YXJnZXRfY3B1LSRwbGF0Zm9ybSBpbgogCSAgIFRBUkdFVF9DRkxBR1M9 IiRUQVJHRVRfQ0ZMQUdTIC1mUElDIgogCWZpCiAJOzsKLSAgICAgcmlzY3YzMi0qIHwgaWE2NC0q KQorICAgICAjIFRIb3NlIHBsYXRmb3JtcyByZXF1aXJlIC1mUElDIGluIG9yZGVyIHRvIGdlbmVy YXRlIEVUX0RZTgorICAgICByaXNjdjMyLSogfCBpYTY0LSogfCBsb29uZ2FyY2g2NC0qKQogICAg ICAgICBUQVJHRVRfQ0ZMQUdTPSIkVEFSR0VUX0NGTEFHUyAtZlBJQyIKIAk7OwogICAgICAqKQpA QCAtMjE5OCw2ICsyMTk2LDcgQEAgQU1fQ09ORElUSU9OQUwoW0NPTkRfc3BhcmM2NF9pZWVlMTI3 NV0sIFt0ZXN0IHgkdGFyZ2V0X2NwdSA9IHhzcGFyYzY0IC1hIHgkcGxhdGYKIEFNX0NPTkRJVElP TkFMKFtDT05EX3NwYXJjNjRfZW11XSwgW3Rlc3QgeCR0YXJnZXRfY3B1ID0geHNwYXJjNjQgLWEg eCRwbGF0Zm9ybSA9IHhlbXVdKQogQU1fQ09ORElUSU9OQUwoW0NPTkRfeDg2XzY0X2VmaV0sIFt0 ZXN0IHgkdGFyZ2V0X2NwdSA9IHh4ODZfNjQgLWEgeCRwbGF0Zm9ybSA9IHhlZmldKQogQU1fQ09O RElUSU9OQUwoW0NPTkRfeDg2XzY0X3hlbl0sIFt0ZXN0IHgkdGFyZ2V0X2NwdSA9IHh4ODZfNjQg LWEgeCRwbGF0Zm9ybSA9IHh4ZW5dKQorQU1fQ09ORElUSU9OQUwoW0NPTkRfaTM4Nl0sIFt0ZXN0 IHgkdGFyZ2V0X2NwdSA9IHhpMzg2XSkKIAogQU1fQ09ORElUSU9OQUwoW0NPTkRfSE9TVF9IVVJE XSwgW3Rlc3QgeCRob3N0X2tlcm5lbCA9IHhodXJkXSkKIEFNX0NPTkRJVElPTkFMKFtDT05EX0hP U1RfTElOVVhdLCBbdGVzdCB4JGhvc3Rfa2VybmVsID0geGxpbnV4XSkKZGlmZiAtLWdpdCBhL2dy dWItY29yZS9NYWtlZmlsZS5jb3JlLmRlZiBiL2dydWItY29yZS9NYWtlZmlsZS5jb3JlLmRlZgpp bmRleCBmNzBlMDJlNjkuLjRjNjI2OWMyYiAxMDA2NDQKLS0tIGEvZ3J1Yi1jb3JlL01ha2VmaWxl LmNvcmUuZGVmCisrKyBiL2dydWItY29yZS9NYWtlZmlsZS5jb3JlLmRlZgpAQCAtNTEsMzQgKzUx LDM0IEBAIGtlcm5lbCA9IHsKIAogICBlbXVfbGRmbGFncyAgICAgICAgICAgICAgPSAnLVdsLC1y JzsKICAgaTM4Nl9lZmlfY2ZsYWdzICAgICAgICAgID0gJy1mc2hvcnQtd2NoYXInOwotICBpMzg2 X2VmaV9sZGZsYWdzICAgICAgICAgPSAnLVdsLC1yJzsKKyAgaTM4Nl9lZmlfbGRmbGFncyAgICAg ICAgID0gJy1zaGFyZWQnOwogICBpMzg2X2VmaV9zdHJpcGZsYWdzICAgICAgPSAnLS1zdHJpcC11 bm5lZWRlZCAtSyBzdGFydCAtUiAubm90ZSAtUiAuY29tbWVudCAtUiAubm90ZS5nbnUuZ29sZC12 ZXJzaW9uJzsKICAgeDg2XzY0X2VmaV9jZmxhZ3MgICAgICAgID0gJy1mc2hvcnQtd2NoYXInOwot ICB4ODZfNjRfZWZpX2xkZmxhZ3MgICAgICAgPSAnLVdsLC1yJzsKKyAgeDg2XzY0X2VmaV9sZGZs YWdzICAgICAgID0gJy1zaGFyZWQnOwogICB4ODZfNjRfZWZpX3N0cmlwZmxhZ3MgICAgPSAnLS1z dHJpcC11bm5lZWRlZCAtSyBzdGFydCAtUiAubm90ZSAtUiAuY29tbWVudCAtUiAubm90ZS5nbnUu Z29sZC12ZXJzaW9uJzsKIAogICBpYTY0X2VmaV9jZmxhZ3MgPSAnLWZzaG9ydC13Y2hhciAtZm5v LWJ1aWx0aW4gLWZwaWMgLW1pbmxpbmUtaW50LWRpdmlkZS1tYXgtdGhyb3VnaHB1dCc7Ci0gIGlh NjRfZWZpX2xkZmxhZ3MgPSAnLVdsLC1yJzsKKyAgaWE2NF9lZmlfbGRmbGFncyA9ICctc2hhcmVk JzsKICAgaWE2NF9lZmlfc3RyaXBmbGFncyA9ICctLXN0cmlwLXVubmVlZGVkIC1LIHN0YXJ0IC1S IC5ub3RlIC1SIC5jb21tZW50IC1SIC5ub3RlLmdudS5nb2xkLXZlcnNpb24nOwogCiAgIGFybV9l ZmlfY2ZsYWdzICAgICAgICAgICA9ICctZnNob3J0LXdjaGFyJzsKLSAgYXJtX2VmaV9sZGZsYWdz ICAgICAgICAgID0gJy1XbCwtcic7CisgIGFybV9lZmlfbGRmbGFncyAgICAgICAgICA9ICctc2hh cmVkJzsKICAgYXJtX2VmaV9zdHJpcGZsYWdzICAgICAgID0gJy0tc3RyaXAtdW5uZWVkZWQgLUsg c3RhcnQgLVIgLm5vdGUgLVIgLmNvbW1lbnQgLVIgLm5vdGUuZ251LmdvbGQtdmVyc2lvbic7CiAK ICAgYXJtNjRfZWZpX2NmbGFncyAgICAgICAgICAgPSAnLWZzaG9ydC13Y2hhcic7Ci0gIGFybTY0 X2VmaV9sZGZsYWdzICAgICAgICAgID0gJy1XbCwtcic7CisgIGFybTY0X2VmaV9sZGZsYWdzICAg ICAgICAgID0gJy1zaGFyZWQnOwogICBhcm02NF9lZmlfc3RyaXBmbGFncyAgICAgICA9ICctLXN0 cmlwLXVubmVlZGVkIC1LIHN0YXJ0IC1SIC5ub3RlIC1SIC5jb21tZW50IC1SIC5ub3RlLmdudS5n b2xkLXZlcnNpb24gLVIgLmVoX2ZyYW1lJzsKIAogICBsb29uZ2FyY2g2NF9lZmlfY2ZsYWdzICAg ICAgID0gJy1mc2hvcnQtd2NoYXInOwotICBsb29uZ2FyY2g2NF9lZmlfbGRmbGFncyAgICAgID0g Jy1XbCwtcic7CisgIGxvb25nYXJjaDY0X2VmaV9sZGZsYWdzICAgICAgPSAnLXNoYXJlZCc7CiAg IGxvb25nYXJjaDY0X2VmaV9zdHJpcGZsYWdzICAgPSAnLS1zdHJpcC11bm5lZWRlZCAtSyBzdGFy dCAtUiAubm90ZSAtUiAuY29tbWVudCAtUiAubm90ZS5nbnUuZ29sZC12ZXJzaW9uIC1SIC5laF9m cmFtZSc7CiAKICAgcmlzY3YzMl9lZmlfY2ZsYWdzICAgICAgID0gJy1mc2hvcnQtd2NoYXInOwot ICByaXNjdjMyX2VmaV9sZGZsYWdzICAgICAgPSAnLVdsLC1yJzsKKyAgcmlzY3YzMl9lZmlfbGRm bGFncyAgICAgID0gJy1zaGFyZWQnOwogICByaXNjdjMyX2VmaV9zdHJpcGZsYWdzICAgPSAnLS1z dHJpcC11bm5lZWRlZCAtSyBzdGFydCAtUiAubm90ZSAtUiAuY29tbWVudCAtUiAubm90ZS5nbnUu Z29sZC12ZXJzaW9uIC1SIC5laF9mcmFtZSc7CiAKICAgcmlzY3Y2NF9lZmlfY2ZsYWdzICAgICAg ID0gJy1mc2hvcnQtd2NoYXInOwotICByaXNjdjY0X2VmaV9sZGZsYWdzICAgICAgPSAnLVdsLC1y JzsKKyAgcmlzY3Y2NF9lZmlfbGRmbGFncyAgICAgID0gJy1zaGFyZWQnOwogICByaXNjdjY0X2Vm aV9zdHJpcGZsYWdzICAgPSAnLS1zdHJpcC11bm5lZWRlZCAtSyBzdGFydCAtUiAubm90ZSAtUiAu Y29tbWVudCAtUiAubm90ZS5nbnUuZ29sZC12ZXJzaW9uIC1SIC5laF9mcmFtZSc7CiAKICAgaTM4 Nl9wY19sZGZsYWdzICAgICAgICAgID0gJyQoVEFSR0VUX0lNR19MREZMQUdTKSc7CkBAIC0xMDgs OSArMTA4LDkgQEAga2VybmVsID0gewogICBpMzg2X3FlbXVfY3BwZmxhZ3MgICAgID0gJy1ER1JV Ql9CT09UX01BQ0hJTkVfTElOS19BRERSPSQoR1JVQl9CT09UX01BQ0hJTkVfTElOS19BRERSKSc7 CiAgIGVtdV9jZmxhZ3MgPSAnJChDRkxBR1NfR05VTElCKSc7CiAgIGVtdV9jcHBmbGFncyA9ICck KENQUEZMQUdTX0dOVUxJQiknOwotICBhcm1fdWJvb3RfbGRmbGFncyAgICAgICA9ICctV2wsLXIn OworICBhcm1fdWJvb3RfbGRmbGFncyAgICAgICA9ICctc2hhcmVkJzsKICAgYXJtX3Vib290X3N0 cmlwZmxhZ3MgICAgPSAnLS1zdHJpcC11bm5lZWRlZCAtSyBzdGFydCAtUiAubm90ZSAtUiAuY29t bWVudCAtUiAubm90ZS5nbnUuZ29sZC12ZXJzaW9uJzsKLSAgYXJtX2NvcmVib290X2xkZmxhZ3Mg ICAgICAgPSAnLVdsLC1yJzsKKyAgYXJtX2NvcmVib290X2xkZmxhZ3MgICAgICAgPSAnLXNoYXJl ZCc7CiAgIGFybV9jb3JlYm9vdF9zdHJpcGZsYWdzICAgID0gJy0tc3RyaXAtdW5uZWVkZWQgLUsg c3RhcnQgLVIgLm5vdGUgLVIgLmNvbW1lbnQgLVIgLm5vdGUuZ251LmdvbGQtdmVyc2lvbic7CiAK ICAgaTM4Nl9wY19zdGFydHVwID0ga2Vybi9pMzg2L3BjL3N0YXJ0dXAuUzsKZGlmZiAtLWdpdCBh L2dydWItY29yZS9rZXJuL2lhNjQvZWZpL3N0YXJ0dXAuUyBiL2dydWItY29yZS9rZXJuL2lhNjQv ZWZpL3N0YXJ0dXAuUwppbmRleCBkNzVjNmQ3Y2MuLmUyMjBjYmYyZCAxMDA2NDQKLS0tIGEvZ3J1 Yi1jb3JlL2tlcm4vaWE2NC9lZmkvc3RhcnR1cC5TCisrKyBiL2dydWItY29yZS9rZXJuL2lhNjQv ZWZpL3N0YXJ0dXAuUwpAQCAtMjksOCArMjksMTEgQEAKIF9zdGFydDoKIAlhbGxvYyBsb2MwPWFy LnBmcywyLDQsMCwwCiAJbW92IGxvYzE9cnAKLQlhZGRsIGxvYzI9QGdwcmVsKGdydWJfZWZpX2lt YWdlX2hhbmRsZSksZ3AKLQlhZGRsIGxvYzM9QGdwcmVsKGdydWJfZWZpX3N5c3RlbV90YWJsZSks Z3AKKwlhZGRsIGxvYzI9QGx0b2ZmeChncnViX2VmaV9pbWFnZV9oYW5kbGUpLHIxCisJYWRkbCBs b2MzPUBsdG9mZngoZ3J1Yl9lZmlfc3lzdGVtX3RhYmxlKSxyMQorCTs7CisJbGQ4Lm1vdiBsb2My ID0gW2xvYzJdLCBncnViX2VmaV9pbWFnZV9oYW5kbGUKKwlsZDgubW92IGxvYzMgPSBbbG9jM10s IGdydWJfZWZpX3N5c3RlbV90YWJsZQogCTs7CiAJc3Q4IFtsb2MyXT1pbjAKIAlzdDggW2xvYzNd PWluMQpkaWZmIC0tZ2l0IGEvZ3J1Yi1jb3JlL2tlcm4vbWlwcy9zdGFydHVwLlMgYi9ncnViLWNv cmUva2Vybi9taXBzL3N0YXJ0dXAuUwppbmRleCAxZmRiNThhY2EuLmZkZTY0MzU4YyAxMDA2NDQK LS0tIGEvZ3J1Yi1jb3JlL2tlcm4vbWlwcy9zdGFydHVwLlMKKysrIGIvZ3J1Yi1jb3JlL2tlcm4v bWlwcy9zdGFydHVwLlMKQEAgLTc0LDggKzc0LDggQEAgY29udDoKICNlbmRpZgogCiAJLyogTW92 ZSB0aGUgbW9kdWxlcyBvdXQgb2YgQlNTLiAgKi8KLQlsdWkgJHQyLCAlaGkoX19ic3Nfc3RhcnQp Ci0JYWRkaXUgJHQyLCAlbG8oX19ic3Nfc3RhcnQpCisJbHVpICR0MiwgJWhpKF9lZGF0YSkKKwlh ZGRpdSAkdDIsICVsbyhfZWRhdGEpCiAJCiAJbHVpICR0MSwgJWhpKF9lbmQpCiAJYWRkaXUgJHQx LCAlbG8oX2VuZCkKZGlmZiAtLWdpdCBhL2dydWItY29yZS9rZXJuL3g4Nl82NC9lZmkvc3RhcnR1 cC5TIGIvZ3J1Yi1jb3JlL2tlcm4veDg2XzY0L2VmaS9zdGFydHVwLlMKaW5kZXggOTM1N2U1YzVk Li5kMjdiYmJmMTIgMTAwNjQ0Ci0tLSBhL2dydWItY29yZS9rZXJuL3g4Nl82NC9lZmkvc3RhcnR1 cC5TCisrKyBiL2dydWItY29yZS9rZXJuL3g4Nl82NC9lZmkvc3RhcnR1cC5TCkBAIC0yNyw4ICsy NywxMCBAQAogCiBzdGFydDoKIF9zdGFydDoKLQltb3ZxCSVyY3gsIEVYVF9DKGdydWJfZWZpX2lt YWdlX2hhbmRsZSkoJXJpcCkKLQltb3ZxCSVyZHgsIEVYVF9DKGdydWJfZWZpX3N5c3RlbV90YWJs ZSkoJXJpcCkKKwltb3ZxCUVYVF9DKGdydWJfZWZpX2ltYWdlX2hhbmRsZSlAR09UUENSRUwoJXJp cCksICVyYXgKKwltb3ZxCSVyY3gsICglcmF4KQorCW1vdnEJRVhUX0MoZ3J1Yl9lZmlfc3lzdGVt X3RhYmxlKUBHT1RQQ1JFTCglcmlwKSwgJXJheAorCW1vdnEJJXJkeCwgKCVyYXgpCiAKIAlhbmRx CSR+MHhmLCAlcnNwCiAJY2FsbAlFWFRfQyhncnViX21haW4pCmRpZmYgLS1naXQgYS9pbmNsdWRl L2dydWIvdXRpbC9ta2ltYWdlLmggYi9pbmNsdWRlL2dydWIvdXRpbC9ta2ltYWdlLmgKaW5kZXgg OWQ3NGY4MmM1Li5lOWVkMzg4NzQgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvZ3J1Yi91dGlsL21raW1h Z2UuaAorKysgYi9pbmNsdWRlL2dydWIvdXRpbC9ta2ltYWdlLmgKQEAgLTM2LDYgKzM2LDkgQEAg c3RydWN0IGdydWJfbWtpbWFnZV9sYXlvdXQKICAgdW5zaWduZWQgaWE2NGptcG51bTsKICAgZ3J1 Yl91aW50MzJfdCBic3Nfc3RhcnQ7CiAgIGdydWJfdWludDMyX3QgZW5kOworICBncnViX2ludDY0 X3QgdmFkZHJfZGlmZjsKKyAgZ3J1Yl9pbnQ2NF90IG9mZl9kaWZmOworICBncnViX3NpemVfdCBk eW5fcGx0b2ZmOwogfTsKIAogLyogUHJpdmF0ZSBoZWFkZXIuIFVzZSBvbmx5IGluIG1raW1hZ2Ut cmVsYXRlZCBzb3VyY2VzLiAgKi8KZGlmZiAtLWdpdCBhL3V0aWwvZ3J1Yi1ta2ltYWdleHguYyBi L3V0aWwvZ3J1Yi1ta2ltYWdleHguYwppbmRleCA5N2U4MzY3MWEuLjhmYTNkNTI2NiAxMDA2NDQK LS0tIGEvdXRpbC9ncnViLW1raW1hZ2V4eC5jCisrKyBiL3V0aWwvZ3J1Yi1ta2ltYWdleHguYwpA QCAtMTAwLDExICsxMDAsMTMgQEAgc3RydWN0IHNlY3Rpb25fbWV0YWRhdGEKIHsKICAgRWxmX0hh bGYgbnVtX3NlY3Rpb25zOwogICBFbGZfU2hkciAqc2VjdGlvbnM7Ci0gIEVsZl9BZGRyICphZGRy czsKLSAgRWxmX0FkZHIgKnZhZGRyczsKICAgRWxmX0hhbGYgc2VjdGlvbl9lbnRzaXplOwogICBF bGZfU2hkciAqc3ltdGFiOwogICBjb25zdCBjaGFyICpzdHJ0YWI7CisKKyAgRWxmX0hhbGYgbnVt X3BoZHJzOworICBFbGZfUGhkciAqcGhkcnM7CisgIEVsZl9IYWxmIHBoZHJfZW50c2l6ZTsKIH07 CiAKICNkZWZpbmUgR1JVQl9TQkFUX05PVEVfTkFNRSAiLnNiYXQiCkBAIC02MDQsNyArNjA2LDcg QEAgU1VGRklYIChncnViX21raW1hZ2VfZ2VuZXJhdGVfZWxmKSAoY29uc3Qgc3RydWN0IGdydWJf aW5zdGFsbF9pbWFnZV90YXJnZXRfZGVzYwogc3RhdGljIEVsZl9BZGRyCiBTVUZGSVggKHJlbG9j YXRlX3N5bWJvbHMpIChFbGZfRWhkciAqZSwgc3RydWN0IHNlY3Rpb25fbWV0YWRhdGEgKnNtZCwK IAkJCSAgIHZvaWQgKmp1bXBlcnMsIEVsZl9BZGRyIGp1bXBlcnNfYWRkciwKLQkJCSAgIEVsZl9B ZGRyIGJzc19zdGFydCwgRWxmX0FkZHIgZW5kLAorCQkJICAgc3RydWN0IGdydWJfbWtpbWFnZV9s YXlvdXQgKmxheW91dCwKIAkJCSAgIGNvbnN0IHN0cnVjdCBncnViX2luc3RhbGxfaW1hZ2VfdGFy Z2V0X2Rlc2MgKmltYWdlX3RhcmdldCkKIHsKICAgRWxmX1dvcmQgc3ltdGFiX3NpemUsIHN5bV9z aXplLCBudW1fc3ltczsKQEAgLTY0MiwxMSArNjQ0LDcgQEAgU1VGRklYIChyZWxvY2F0ZV9zeW1i b2xzKSAoRWxmX0VoZHIgKmUsIHN0cnVjdCBzZWN0aW9uX21ldGFkYXRhICpzbWQsCiAgICAgICAg IH0KICAgICAgIGVsc2UgaWYgKGN1cl9pbmRleCA9PSBTVE5fVU5ERUYpCiAJewotCSAgaWYgKHN5 bS0+c3RfbmFtZSAmJiBncnViX3N0cmNtcCAobmFtZSwgIl9fYnNzX3N0YXJ0IikgPT0gMCkKLQkg ICAgc3ltLT5zdF92YWx1ZSA9IGJzc19zdGFydDsKLQkgIGVsc2UgaWYgKHN5bS0+c3RfbmFtZSAm JiBncnViX3N0cmNtcCAobmFtZSwgIl9lbmQiKSA9PSAwKQotCSAgICBzeW0tPnN0X3ZhbHVlID0g ZW5kOwotCSAgZWxzZSBpZiAoc3ltLT5zdF9uYW1lKQorCSAgaWYgKHN5bS0+c3RfbmFtZSkKIAkg ICAgZ3J1Yl91dGlsX2Vycm9yICgidW5kZWZpbmVkIHN5bWJvbCAlcyIsIG5hbWUpOwogCSAgZWxz ZQogCSAgICBjb250aW51ZTsKQEAgLTY1Niw3ICs2NTQsNyBAQCBTVUZGSVggKHJlbG9jYXRlX3N5 bWJvbHMpIChFbGZfRWhkciAqZSwgc3RydWN0IHNlY3Rpb25fbWV0YWRhdGEgKnNtZCwKICAgICAg IGVsc2UKIAl7CiAJICBzeW0tPnN0X3ZhbHVlID0gKGdydWJfdGFyZ2V0X3RvX2hvc3QgKHN5bS0+ c3RfdmFsdWUpCi0JCQkgICArIHNtZC0+dmFkZHJzW2N1cl9pbmRleF0pOworCQkJICAgKyBsYXlv dXQtPnZhZGRyX2RpZmYpOwogCX0KIAogICAgICAgaWYgKGltYWdlX3RhcmdldC0+ZWxmX3Rhcmdl dCA9PSBFTV9JQV82NCAmJiBFTEZfU1RfVFlQRSAoc3ltLT5zdF9pbmZvKQpAQCAtNjY1LDEzICs2 NjMsMTEgQEAgU1VGRklYIChyZWxvY2F0ZV9zeW1ib2xzKSAoRWxmX0VoZHIgKmUsIHN0cnVjdCBz ZWN0aW9uX21ldGFkYXRhICpzbWQsCiAJICAqanB0ciA9IGdydWJfaG9zdF90b190YXJnZXQ2NCAo c3ltLT5zdF92YWx1ZSk7CiAJICBzeW0tPnN0X3ZhbHVlID0gKGNoYXIgKikganB0ciAtIChjaGFy ICopIGp1bXBlcnMgKyBqdW1wZXJzX2FkZHI7CiAJICBqcHRyKys7Ci0JICAqanB0ciA9IDA7CisJ ICAqanB0ciA9IGxheW91dC0+dmFkZHJfZGlmZiArIGxheW91dC0+ZHluX3BsdG9mZjsKIAkgIGpw dHIrKzsKIAl9Ci0gICAgICBncnViX3V0aWxfaW5mbyAoImxvY2F0aW5nICVzIGF0IDB4JSIgIEdS VUJfSE9TVF9QUkl4TE9OR19MT05HCi0JCSAgICAgICIgKDB4JSIgIEdSVUJfSE9TVF9QUkl4TE9O R19MT05HICIpIiwgbmFtZSwKLQkJICAgICAgKHVuc2lnbmVkIGxvbmcgbG9uZykgc3ltLT5zdF92 YWx1ZSwKLQkJICAgICAgKHVuc2lnbmVkIGxvbmcgbG9uZykgc21kLT52YWRkcnNbY3VyX2luZGV4 XSk7CisgICAgICBncnViX3V0aWxfaW5mbyAoImxvY2F0aW5nICVzIGF0IDB4JSIgIEdSVUJfSE9T VF9QUkl4TE9OR19MT05HLCBuYW1lLAorCQkgICAgICAodW5zaWduZWQgbG9uZyBsb25nKSBzeW0t PnN0X3ZhbHVlKTsKIAogICAgICAgaWYgKHN0YXJ0X2FkZHJlc3MgPT0gKEVsZl9BZGRyKS0xKQog CWlmIChzdHJjbXAgKG5hbWUsICJfc3RhcnQiKSA9PSAwIHx8IHN0cmNtcCAobmFtZSwgInN0YXJ0 IikgPT0gMCkKQEAgLTY5NiwxMCArNjkyLDEwIEBAIFNVRkZJWCAoZ2V0X3N5bWJvbF9hZGRyZXNz KSAoRWxmX0VoZHIgKmUsIEVsZl9TaGRyICpzLCBFbGZfV29yZCBpLAogCiAvKiBSZXR1cm4gdGhl IGFkZHJlc3Mgb2YgYSBtb2RpZmllZCB2YWx1ZS4gICovCiBzdGF0aWMgRWxmX0FkZHIgKgotU1VG RklYIChnZXRfdGFyZ2V0X2FkZHJlc3MpIChFbGZfRWhkciAqZSwgRWxmX1NoZHIgKnMsIEVsZl9B ZGRyIG9mZnNldCwKK1NVRkZJWCAoZ2V0X3RhcmdldF9hZGRyZXNzKSAoY2hhciAqZSwgc3RydWN0 IGdydWJfbWtpbWFnZV9sYXlvdXQgKmxheW91dCwgRWxmX0FkZHIgb2Zmc2V0LAogCQkgICAgY29u c3Qgc3RydWN0IGdydWJfaW5zdGFsbF9pbWFnZV90YXJnZXRfZGVzYyAqaW1hZ2VfdGFyZ2V0KQog ewotICByZXR1cm4gKEVsZl9BZGRyICopICgoY2hhciAqKSBlICsgZ3J1Yl90YXJnZXRfdG9faG9z dCAocy0+c2hfb2Zmc2V0KSArIG9mZnNldCk7CisgIHJldHVybiAoRWxmX0FkZHIgKikgKChjaGFy ICopIGUgKyBvZmZzZXQgKyBsYXlvdXQtPm9mZl9kaWZmKTsKIH0KIAogI2lmZGVmIE1LSU1BR0Vf RUxGNjQKQEAgLTc4Myw2ICs3NzksOCBAQCBhcm1fZ2V0X3RyYW1wb2xpbmVfc2l6ZSAoRWxmX0Vo ZHIgKmUsCiAJICAgICAgewogCSAgICAgIGNhc2UgUl9BUk1fQUJTMzI6CiAJICAgICAgY2FzZSBS X0FSTV9WNEJYOgorCSAgICAgIGNhc2UgUl9BUk1fSlVNUF9TTE9UOgorCSAgICAgIGNhc2UgUl9B Uk1fUkVMQVRJVkU6CiAJCWJyZWFrOwogCSAgICAgIGNhc2UgUl9BUk1fVEhNX0NBTEw6CiAJICAg ICAgY2FzZSBSX0FSTV9USE1fSlVNUDI0OgpAQCAtODIwLDIwICs4MTgsMjAgQEAgU1VGRklYIChp c19rZXB0X3JlbG9jX3NlY3Rpb24pIChFbGZfU2hkciAqcywgY29uc3Qgc3RydWN0IGdydWJfaW5z dGFsbF9pbWFnZV90YXIKICAgIGFnYWluIGJ5IGEgUEUzMiByZWxvY2F0b3Igd2hlbiBsb2FkZWQu ICAqLwogc3RhdGljIHZvaWQKIFNVRkZJWCAocmVsb2NhdGVfYWRkcnMpIChFbGZfRWhkciAqZSwg c3RydWN0IHNlY3Rpb25fbWV0YWRhdGEgKnNtZCwKLQkJCSAgICAgY2hhciAqcGVfdGFyZ2V0LCBF bGZfQWRkciB0cmFtcF9vZmYsIEVsZl9BZGRyIGdvdF9vZmYsCisJCQkgICAgIGNoYXIgKnBlX3Rh cmdldCwgc3RydWN0IGdydWJfbWtpbWFnZV9sYXlvdXQgKmxheW91dCwKIAkJCSAgICAgY29uc3Qg c3RydWN0IGdydWJfaW5zdGFsbF9pbWFnZV90YXJnZXRfZGVzYyAqaW1hZ2VfdGFyZ2V0KQogewog ICBFbGZfSGFsZiBpOwogICBFbGZfU2hkciAqczsKICNpZmRlZiBNS0lNQUdFX0VMRjY0Ci0gIHN0 cnVjdCBncnViX2lhNjRfdHJhbXBvbGluZSAqdHIgPSAodm9pZCAqKSAocGVfdGFyZ2V0ICsgdHJh bXBfb2ZmKTsKLSAgZ3J1Yl91aW50NjRfdCAqZ3BwdHIgPSAodm9pZCAqKSAocGVfdGFyZ2V0ICsg Z290X29mZik7CisgIHN0cnVjdCBncnViX2lhNjRfdHJhbXBvbGluZSAqdHIgPSAodm9pZCAqKSAo cGVfdGFyZ2V0ICsgbGF5b3V0LT50cmFtcF9vZmYpOworICBncnViX3VpbnQ2NF90ICpncHB0ciA9 ICh2b2lkICopIChwZV90YXJnZXQgKyBsYXlvdXQtPmdvdF9vZmYpOwogICB1bnNpZ25lZCB1bm1h dGNoZWRfYWRyX2dvdF9wYWdlID0gMDsKICAgc3RydWN0IGdydWJfbG9vbmdhcmNoNjRfc3RhY2sg c3RhY2s7CiAgIGdydWJfbG9vbmdhcmNoNjRfc3RhY2tfaW5pdCAoJnN0YWNrKTsKICNkZWZpbmUg TUFTSzE5ICgoMSA8PCAxOSkgLSAxKQogI2Vsc2UKLSAgZ3J1Yl91aW50MzJfdCAqdHIgPSAodm9p ZCAqKSAocGVfdGFyZ2V0ICsgdHJhbXBfb2ZmKTsKKyAgZ3J1Yl91aW50MzJfdCAqdHIgPSAodm9p ZCAqKSAocGVfdGFyZ2V0ICsgbGF5b3V0LT50cmFtcF9vZmYpOwogI2VuZGlmCiAKICAgZm9yIChp ID0gMCwgcyA9IHNtZC0+c2VjdGlvbnM7CkBAIC04NDYsNyArODQ0LDcgQEAgU1VGRklYIChyZWxv Y2F0ZV9hZGRycykgKEVsZl9FaGRyICplLCBzdHJ1Y3Qgc2VjdGlvbl9tZXRhZGF0YSAqc21kLAog CUVsZl9Xb3JkIHJ0YWJfc2l6ZSwgcl9zaXplLCBudW1fcnM7CiAJRWxmX09mZiBydGFiX29mZnNl dDsKIAlFbGZfV29yZCB0YXJnZXRfc2VjdGlvbl9pbmRleDsKLQlFbGZfQWRkciB0YXJnZXRfc2Vj dGlvbl9hZGRyOworCUVsZl9BZGRyIHRhcmdldF9zZWN0aW9uX2FkZHIgPSBsYXlvdXQtPnZhZGRy X2RpZmY7CiAJRWxmX1NoZHIgKnRhcmdldF9zZWN0aW9uOwogCUVsZl9Xb3JkIGo7CiAKQEAgLTg1 OSw3ICs4NTcsNiBAQCBTVUZGSVggKHJlbG9jYXRlX2FkZHJzKSAoRWxmX0VoZHIgKmUsIHN0cnVj dCBzZWN0aW9uX21ldGFkYXRhICpzbWQsCiAJICB9CiAKIAl0YXJnZXRfc2VjdGlvbl9pbmRleCA9 IGdydWJfdGFyZ2V0X3RvX2hvc3QzMiAocy0+c2hfaW5mbyk7Ci0JdGFyZ2V0X3NlY3Rpb25fYWRk ciA9IHNtZC0+YWRkcnNbdGFyZ2V0X3NlY3Rpb25faW5kZXhdOwogCXRhcmdldF9zZWN0aW9uID0g KEVsZl9TaGRyICopICgoY2hhciAqKSBzbWQtPnNlY3Rpb25zCiAJCQkJCSArICh0YXJnZXRfc2Vj dGlvbl9pbmRleAogCQkJCQkgICAgKiBzbWQtPnNlY3Rpb25fZW50c2l6ZSkpOwpAQCAtODg0LDcg Kzg4MSw3IEBAIFNVRkZJWCAocmVsb2NhdGVfYWRkcnMpIChFbGZfRWhkciAqZSwgc3RydWN0IHNl Y3Rpb25fbWV0YWRhdGEgKnNtZCwKIAkgICAgRWxmX0FkZHIgYWRkZW5kOwogCiAJICAgIG9mZnNl dCA9IGdydWJfdGFyZ2V0X3RvX2hvc3QgKHItPnJfb2Zmc2V0KTsKLQkgICAgdGFyZ2V0ID0gU1VG RklYIChnZXRfdGFyZ2V0X2FkZHJlc3MpIChlLCB0YXJnZXRfc2VjdGlvbiwKKwkgICAgdGFyZ2V0 ID0gU1VGRklYIChnZXRfdGFyZ2V0X2FkZHJlc3MpIChwZV90YXJnZXQsIGxheW91dCwKIAkJCQkJ CSAgb2Zmc2V0LCBpbWFnZV90YXJnZXQpOwogCSAgICBpbmZvID0gZ3J1Yl90YXJnZXRfdG9faG9z dCAoci0+cl9pbmZvKTsKIAkgICAgc3ltX2FkZHIgPSBTVUZGSVggKGdldF9zeW1ib2xfYWRkcmVz cykgKGUsIHNtZC0+c3ltdGFiLApAQCAtOTM4LDEwICs5MzUsMjQgQEAgU1VGRklYIChyZWxvY2F0 ZV9hZGRycykgKEVsZl9FaGRyICplLCBzdHJ1Y3Qgc2VjdGlvbl9tZXRhZGF0YSAqc21kLAogCQlj YXNlIFJfWDg2XzY0X05PTkU6CiAJCSAgYnJlYWs7CiAKKwkJY2FzZSBSX1g4Nl82NF9SRUxBVElW RToKKwkJICAqdGFyZ2V0ID0gZ3J1Yl9ob3N0X3RvX3RhcmdldDY0IChhZGRlbmQgKyBsYXlvdXQt PnZhZGRyX2RpZmYpOworCQkgIGJyZWFrOworCisJCWNhc2UgUl9YODZfNjRfR0xPQl9EQVQ6CiAJ CWNhc2UgUl9YODZfNjRfNjQ6CiAJCSAgKnRhcmdldCA9IGdydWJfaG9zdF90b190YXJnZXQ2NCAo Z3J1Yl90YXJnZXRfdG9faG9zdDY0ICgqdGFyZ2V0KQogCQkJCQkJICAgKyBhZGRlbmQgKyBzeW1f YWRkcik7CiAJCSAgZ3J1Yl91dGlsX2luZm8gKCJyZWxvY2F0aW5nIGFuIFJfWDg2XzY0XzY0IGVu dHJ5IHRvIDB4JSIKKwkJCQkgIEdSVUJfSE9TVF9QUkl4TE9OR19MT05HICIgYXQgdGhlIG9mZnNl dCAweCUiCisJCQkJICBHUlVCX0hPU1RfUFJJeExPTkdfTE9ORyAiIGJ5IDB4JWx4IiwKKwkJCQkg ICh1bnNpZ25lZCBsb25nIGxvbmcpICp0YXJnZXQsCisJCQkJICAodW5zaWduZWQgbG9uZyBsb25n KSBvZmZzZXQsICBhZGRlbmQgKyBzeW1fYWRkcik7CisJCSAgYnJlYWs7CisKKwkJY2FzZSBSX1g4 Nl82NF9KVU1QX1NMT1Q6CisJCSAgKnRhcmdldCA9IGdydWJfaG9zdF90b190YXJnZXQ2NCAoYWRk ZW5kICsgc3ltX2FkZHIpOworCQkgIGdydWJfdXRpbF9pbmZvICgicmVsb2NhdGluZyBhbiBSX1g4 Nl82NF9KVU1QX1NMT1QgZW50cnkgdG8gMHglIgogCQkJCSAgR1JVQl9IT1NUX1BSSXhMT05HX0xP TkcgIiBhdCB0aGUgb2Zmc2V0IDB4JSIKIAkJCQkgIEdSVUJfSE9TVF9QUkl4TE9OR19MT05HLAog CQkJCSAgKHVuc2lnbmVkIGxvbmcgbG9uZykgKnRhcmdldCwKQEAgLTEwMTIsNiArMTAyMywxMCBA QCBTVUZGSVggKHJlbG9jYXRlX2FkZHJzKSAoRWxmX0VoZHIgKmUsIHN0cnVjdCBzZWN0aW9uX21l dGFkYXRhICpzbWQsCiAJCSAgfQogCQkgIGJyZWFrOwogCisJCWNhc2UgUl9JQTY0X1JFTDY0TFNC OgorCQkgICp0YXJnZXQgPSBncnViX2hvc3RfdG9fdGFyZ2V0NjQgKGFkZGVuZCArIGxheW91dC0+ dmFkZHJfZGlmZik7CisJCSAgYnJlYWs7CisKIAkJY2FzZSBSX0lBNjRfTFRPRkYyMlg6CiAJCWNh c2UgUl9JQTY0X0xUT0ZGMjI6CiAJCSAgewpAQCAtMTA1MywxMCArMTA2OCwxOCBAQCBTVUZGSVgg KHJlbG9jYXRlX2FkZHJzKSAoRWxmX0VoZHIgKmUsIHN0cnVjdCBzZWN0aW9uX21ldGFkYXRhICpz bWQsCiAJCSAgKnRhcmdldCA9IGdydWJfaG9zdF90b190YXJnZXQ2NCAoZ3J1Yl90YXJnZXRfdG9f aG9zdDY0ICgqdGFyZ2V0KQogCQkJCQkJICAgKyBhZGRlbmQgKyBzeW1fYWRkciAtIHRhcmdldF9z ZWN0aW9uX2FkZHIpOwogCQkgIGJyZWFrOworCQljYXNlIFJfSUE2NF9JUExUTFNCOgorCQkgIG1l bWNweSh0YXJnZXQsICgoY2hhciAqKXBlX3RhcmdldCArIGFkZGVuZCArIHN5bV9hZGRyIC0gaW1h Z2VfdGFyZ2V0LT52YWRkcl9vZmZzZXQpLCAxNik7CisJCSAgZ3J1Yl91dGlsX2luZm8gKCJyZWxv Y2F0aW5nIGFuIElQTFQgZW50cnkgdG8gMHglIgorCQkJCSAgR1JVQl9IT1NUX1BSSXhMT05HX0xP TkcgIiBhdCB0aGUgb2Zmc2V0IDB4JSIKKwkJCQkgIEdSVUJfSE9TVF9QUkl4TE9OR19MT05HLAor CQkJCSAgKHVuc2lnbmVkIGxvbmcgbG9uZykKKwkJCQkgIGdydWJfdGFyZ2V0X3RvX2hvc3Q2NCAo KnRhcmdldCksCisJCQkJICAodW5zaWduZWQgbG9uZyBsb25nKSBvZmZzZXQpOworCQkgIGJyZWFr OwogCQljYXNlIFJfSUE2NF9ESVI2NExTQjoKIAkJY2FzZSBSX0lBNjRfRlBUUjY0TFNCOgotCQkg ICp0YXJnZXQgPSBncnViX2hvc3RfdG9fdGFyZ2V0NjQgKGdydWJfdGFyZ2V0X3RvX2hvc3Q2NCAo KnRhcmdldCkKLQkJCQkJCSAgICsgYWRkZW5kICsgc3ltX2FkZHIpOworCQkgICp0YXJnZXQgPSBn cnViX2hvc3RfdG9fdGFyZ2V0NjQgKGFkZGVuZCArIHN5bV9hZGRyKTsKIAkJICBncnViX3V0aWxf aW5mbyAoInJlbG9jYXRpbmcgYSBkaXJlY3QgZW50cnkgdG8gMHglIgogCQkJCSAgR1JVQl9IT1NU X1BSSXhMT05HX0xPTkcgIiBhdCB0aGUgb2Zmc2V0IDB4JSIKIAkJCQkgIEdSVUJfSE9TVF9QUkl4 TE9OR19MT05HLApAQCAtMTA4MCwxMSArMTEwMywxNyBAQCBTVUZGSVggKHJlbG9jYXRlX2FkZHJz KSAoRWxmX0VoZHIgKmUsIHN0cnVjdCBzZWN0aW9uX21ldGFkYXRhICpzbWQsCiAJCSBzeW1fYWRk ciArPSBhZGRlbmQ7CiAJCSBzd2l0Y2ggKEVMRl9SX1RZUEUgKGluZm8pKQogCQkgICB7CisJCSAg IGNhc2UgUl9BQVJDSDY0X0pVTVBfU0xPVDoKKwkJICAgICAqdGFyZ2V0ID0gZ3J1Yl9ob3N0X3Rv X3RhcmdldDY0IChzeW1fYWRkcik7CisJCSAgICAgYnJlYWs7CiAJCSAgIGNhc2UgUl9BQVJDSDY0 X0FCUzY0OgogCQkgICAgIHsKIAkJICAgICAgICp0YXJnZXQgPSBncnViX2hvc3RfdG9fdGFyZ2V0 NjQgKGdydWJfdGFyZ2V0X3RvX2hvc3Q2NCAoKnRhcmdldCkgKyBzeW1fYWRkcik7CiAJCSAgICAg fQogCQkgICAgIGJyZWFrOworCQkgICBjYXNlIFJfQUFSQ0g2NF9SRUxBVElWRToKKwkJICAgICAq dGFyZ2V0ID0gZ3J1Yl9ob3N0X3RvX3RhcmdldDY0IChhZGRlbmQgKyBsYXlvdXQtPnZhZGRyX2Rp ZmYpOworCQkgICAgIGJyZWFrOwogCQkgICBjYXNlIFJfQUFSQ0g2NF9QUkVMMzI6CiAJCSAgICAg ewogCQkgICAgICAgZ3J1Yl91aW50MzJfdCAqdDMyID0gKGdydWJfdWludDMyX3QgKikgdGFyZ2V0 OwpAQCAtMTEzNyw3ICsxMTY2LDcgQEAgU1VGRklYIChyZWxvY2F0ZV9hZGRycykgKEVsZl9FaGRy ICplLCBzdHJ1Y3Qgc2VjdGlvbl9tZXRhZGF0YSAqc21kLAogCQkJICAgICAmJiByLT5yX2FkZGVu ZCA9PSByZWwyLT5yX2FkZGVuZAogCQkJICAgICAmJiBFTEZfUl9UWVBFIChyZWwyLT5yX2luZm8p ID09IFJfQUFSQ0g2NF9MRDY0X0dPVF9MTzEyX05DKQogCQkJICAgewotCQkJICAgICBncnViX2Fy bTY0X3NldF9hYnNfbG8xMl9sZHN0NjQgKChncnViX3VpbnQzMl90ICopIFNVRkZJWCAoZ2V0X3Rh cmdldF9hZGRyZXNzKSAoZSwgdGFyZ2V0X3NlY3Rpb24sCisJCQkgICAgIGdydWJfYXJtNjRfc2V0 X2Fic19sbzEyX2xkc3Q2NCAoKGdydWJfdWludDMyX3QgKikgU1VGRklYIChnZXRfdGFyZ2V0X2Fk ZHJlc3MpIChwZV90YXJnZXQsIGxheW91dCwKIAkJCQkJCQkJCQkJCQkgICAgZ3J1Yl90YXJnZXRf dG9faG9zdCAocmVsMi0+cl9vZmZzZXQpLCBpbWFnZV90YXJnZXQpLAogCQkJCQkJCSAgICAgKChj aGFyICopIGdwcHRyIC0gKGNoYXIgKikgcGVfdGFyZ2V0ICsgaW1hZ2VfdGFyZ2V0LT52YWRkcl9v ZmZzZXQpKTsKIAkJCSAgICAgYnJlYWs7CkBAIC0xMTg0LDkgKzEyMTMsMTUgQEAgU1VGRklYIChy ZWxvY2F0ZV9hZGRycykgKEVsZl9FaGRyICplLCBzdHJ1Y3Qgc2VjdGlvbl9tZXRhZGF0YSAqc21k LAogCQkgICBjYXNlIFJfTEFSQ0hfNjQ6CiAJCSAgICAgewogCQkgICAgICAgZ3J1Yl91aW50NjRf dCAqdDY0ID0gKGdydWJfdWludDY0X3QgKikgdGFyZ2V0OwotCQkgICAgICAgKnQ2NCA9IGdydWJf aG9zdF90b190YXJnZXQ2NCAoZ3J1Yl90YXJnZXRfdG9faG9zdDY0ICgqdDY0KSArIHN5bV9hZGRy KTsKKwkJICAgICAgICp0NjQgPSBncnViX2hvc3RfdG9fdGFyZ2V0NjQgKHN5bV9hZGRyKTsKIAkJ ICAgICB9CiAJCSAgICAgYnJlYWs7CisJCSAgIGNhc2UgUl9MQVJDSF9KVU1QX1NMT1Q6CisJCSAg ICAgKnRhcmdldCA9IGdydWJfaG9zdF90b190YXJnZXQ2NCAoc3ltX2FkZHIpOworCQkgICAgIGJy ZWFrOworCQkgICBjYXNlIFJfTEFSQ0hfUkVMQVRJVkU6CisJCSAgICAgKnRhcmdldCA9IGdydWJf aG9zdF90b190YXJnZXQ2NCAoYWRkZW5kICsgbGF5b3V0LT52YWRkcl9kaWZmKTsKKwkJICAgICBi cmVhazsKIAkJICAgY2FzZSBSX0xBUkNIX01BUktfTEE6CiAJCSAgICAgYnJlYWs7CiAJCSAgIGNh c2UgUl9MQVJDSF9TT1BfUFVTSF9QQ1JFTDoKQEAgLTEyNDMsNiArMTI3OCwxNSBAQCBTVUZGSVgg KHJlbG9jYXRlX2FkZHJzKSAoRWxmX0VoZHIgKmUsIHN0cnVjdCBzZWN0aW9uX21ldGFkYXRhICpz bWQsCiAJCSBzeW1fYWRkciAtPSBpbWFnZV90YXJnZXQtPnZhZGRyX29mZnNldDsKIAkJIHN3aXRj aCAoRUxGX1JfVFlQRSAoaW5mbykpCiAJCSAgIHsKKwkJICAgY2FzZSBSX0FSTV9KVU1QX1NMT1Q6 CisJCSAgICAgeworCQkgICAgICAgZ3J1Yl91dGlsX2luZm8gKCIgIEpVTVA6XHRvZmZzZXQ9JWRc dCgweCUwOHgpIiwKKwkJCQkgICAgICAgKGludCkgc3ltX2FkZHIsIChpbnQpIHN5bV9hZGRyKTsK KwkJICAgICAgIGlmIChpbWFnZV90YXJnZXQtPmlkID09IElNQUdFX0VGSSkKKwkJCSBzeW1fYWRk ciArPSBHUlVCX1BFMzJfU0VDVElPTl9BTElHTk1FTlQ7CisJCSAgICAgICAqdGFyZ2V0ID0gZ3J1 Yl9ob3N0X3RvX3RhcmdldDMyIChzeW1fYWRkcik7CisJCSAgICAgICBicmVhazsKKwkJICAgICB9 CiAJCSAgIGNhc2UgUl9BUk1fQUJTMzI6CiAJCSAgICAgewogCQkgICAgICAgZ3J1Yl91dGlsX2lu Zm8gKCIgIEFCUzMyOlx0b2Zmc2V0PSVkXHQoMHglMDh4KSIsCkBAIC0xMjUzLDYgKzEyOTcsOSBA QCBTVUZGSVggKHJlbG9jYXRlX2FkZHJzKSAoRWxmX0VoZHIgKmUsIHN0cnVjdCBzZWN0aW9uX21l dGFkYXRhICpzbWQsCiAJCSAgICAgICAqdGFyZ2V0ID0gZ3J1Yl9ob3N0X3RvX3RhcmdldDMyIChn cnViX3RhcmdldF90b19ob3N0MzIgKCp0YXJnZXQpICsgc3ltX2FkZHIpOwogCQkgICAgIH0KIAkJ ICAgICBicmVhazsKKwkJICAgY2FzZSBSX0FSTV9SRUxBVElWRToKKwkJICAgICAqdGFyZ2V0ID0g Z3J1Yl9ob3N0X3RvX3RhcmdldDMyIChncnViX3RhcmdldF90b19ob3N0MzIgKCp0YXJnZXQpICsg YWRkZW5kICsgbGF5b3V0LT52YWRkcl9kaWZmKTsKKwkJICAgICBicmVhazsKIAkJICAgICAvKiBI YXBwZW5zIHdoZW4gY29tcGlsZWQgd2l0aCAtbWFyY2g9YXJtdjQuCiAJCQlTaW5jZSBjdXJyZW50 bHkgd2UgbmVlZCBhdCBsZWFzdCBhcm12NSwga2VlcCBieCBhcy1pcy4KIAkJICAgICAqLwpAQCAt MTM1OCw2ICsxNDA1LDEyIEBAIFNVRkZJWCAocmVsb2NhdGVfYWRkcnMpIChFbGZfRWhkciAqZSwg c3RydWN0IHNlY3Rpb25fbWV0YWRhdGEgKnNtZCwKIAogCQkgc3dpdGNoIChFTEZfUl9UWVBFIChp bmZvKSkKIAkJICAgeworCQkgICBjYXNlIFJfUklTQ1ZfSlVNUF9TTE9UOgorCQkgICAgICp0YXJn ZXQgPSBncnViX2hvc3RfdG9fdGFyZ2V0X2FkZHIgKHN5bV9hZGRyKTsKKwkJICAgICBicmVhazsK KwkJICAgY2FzZSBSX1JJU0NWX1JFTEFUSVZFOgorCQkgICAgICp0YXJnZXQgPSBncnViX2hvc3Rf dG9fdGFyZ2V0X2FkZHIgKGFkZGVuZCArIGxheW91dC0+dmFkZHJfZGlmZik7CisJCSAgICAgYnJl YWs7CiAJCSAgIGNhc2UgUl9SSVNDVl9BREQ4OgogCQkgICAgICp0OCA9ICp0OCArIHN5bV9hZGRy OwogCQkgICAgIGJyZWFrOwpAQCAtMTY5Niw3ICsxNzQ5LDEwIEBAIHRyYW5zbGF0ZV9yZWxvY2F0 aW9uX3BlIChzdHJ1Y3QgdHJhbnNsYXRlX2NvbnRleHQgKmN0eCwKIAl7CiAJICBncnViX3V0aWxf ZXJyb3IgKCJjYW5cJ3QgYWRkIGZpeHVwIGVudHJ5IGZvciBSX1g4Nl82NF8zMihTKSIpOwogCX0K LSAgICAgIGVsc2UgaWYgKEVMRl9SX1RZUEUgKGluZm8pID09IFJfWDg2XzY0XzY0KQorICAgICAg ZWxzZSBpZiAoRUxGX1JfVFlQRSAoaW5mbykgPT0gUl9YODZfNjRfNjQKKwkgICAgICAgfHwgRUxG X1JfVFlQRSAoaW5mbykgPT0gUl9YODZfNjRfUkVMQVRJVkUKKwkgICAgICAgfHwgRUxGX1JfVFlQ RSAoaW5mbykgPT0gUl9YODZfNjRfSlVNUF9TTE9UCisJICAgICAgIHx8IEVMRl9SX1RZUEUgKGlu Zm8pID09IFJfWDg2XzY0X0dMT0JfREFUKQogCXsKIAkgIGdydWJfdXRpbF9pbmZvICgiYWRkaW5n IGEgcmVsb2NhdGlvbiBlbnRyeSBmb3IgMHglIgogCQkJICBHUlVCX0hPU1RfUFJJeExPTkdfTE9O RywKQEAgLTE3MjMsOCArMTc3OSwzMSBAQCB0cmFuc2xhdGVfcmVsb2NhdGlvbl9wZSAoc3RydWN0 IHRyYW5zbGF0ZV9jb250ZXh0ICpjdHgsCiAJY2FzZSBSX0lBNjRfU0VHUkVMNjRMU0I6CiAJICBi cmVhazsKIAorCWNhc2UgUl9JQTY0X0lQTFRMU0I6CisjaWYgMQorCSAgeworCSAgICBncnViX3V0 aWxfaW5mbyAoImFkZGluZyBhIHJlbG9jYXRpb24gZW50cnkgZm9yIDB4JSIKKwkJCSAgICBHUlVC X0hPU1RfUFJJeExPTkdfTE9ORywKKwkJCSAgICAodW5zaWduZWQgbG9uZyBsb25nKSBhZGRyKTsK KwkgICAgY3R4LT5jdXJyZW50X2FkZHJlc3MKKwkgICAgICA9IGFkZF9maXh1cF9lbnRyeSAoJmN0 eC0+bHN0LAorCQkJCSBHUlVCX1BFMzJfUkVMX0JBU0VEX0RJUjY0LAorCQkJCSBhZGRyLAorCQkJ CSAwLCBjdHgtPmN1cnJlbnRfYWRkcmVzcywKKwkJCQkgaW1hZ2VfdGFyZ2V0KTsKKwkgICAgY3R4 LT5jdXJyZW50X2FkZHJlc3MKKwkgICAgICA9IGFkZF9maXh1cF9lbnRyeSAoJmN0eC0+bHN0LAor CQkJCSBHUlVCX1BFMzJfUkVMX0JBU0VEX0RJUjY0LAorCQkJCSBhZGRyICsgOCwKKwkJCQkgMCwg Y3R4LT5jdXJyZW50X2FkZHJlc3MsCisJCQkJIGltYWdlX3RhcmdldCk7CisJICB9CisjZW5kaWYK KwkgIGJyZWFrOworCiAJY2FzZSBSX0lBNjRfRlBUUjY0TFNCOgogCWNhc2UgUl9JQTY0X0RJUjY0 TFNCOgorCWNhc2UgUl9JQTY0X1JFTDY0TFNCOgogI2lmIDEKIAkgIHsKIAkgICAgZ3J1Yl91dGls X2luZm8gKCJhZGRpbmcgYSByZWxvY2F0aW9uIGVudHJ5IGZvciAweCUiCkBAIC0xNzQ5LDcgKzE4 MjgsOSBAQCB0cmFuc2xhdGVfcmVsb2NhdGlvbl9wZSAoc3RydWN0IHRyYW5zbGF0ZV9jb250ZXh0 ICpjdHgsCiAjaWYgZGVmaW5lZChNS0lNQUdFX0VMRjY0KQogICAgICAgc3dpdGNoIChFTEZfUl9U WVBFIChpbmZvKSkKIAl7CisJY2FzZSBSX0FBUkNINjRfUkVMQVRJVkU6CiAJY2FzZSBSX0FBUkNI NjRfQUJTNjQ6CisJY2FzZSBSX0FBUkNINjRfSlVNUF9TTE9UOgogCSAgewogCSAgICBjdHgtPmN1 cnJlbnRfYWRkcmVzcwogCSAgICAgID0gYWRkX2ZpeHVwX2VudHJ5ICgmY3R4LT5sc3QsCkBAIC0x Nzg5LDYgKzE4NzAsOCBAQCB0cmFuc2xhdGVfcmVsb2NhdGlvbl9wZSAoc3RydWN0IHRyYW5zbGF0 ZV9jb250ZXh0ICpjdHgsCiAgICAgICBzd2l0Y2ggKEVMRl9SX1RZUEUgKGluZm8pKQogCXsKIAlj YXNlIFJfTEFSQ0hfNjQ6CisJY2FzZSBSX0xBUkNIX1JFTEFUSVZFOgorCWNhc2UgUl9MQVJDSF9K VU1QX1NMT1Q6CiAJICB7CiAJICAgIGN0eC0+Y3VycmVudF9hZGRyZXNzID0gYWRkX2ZpeHVwX2Vu dHJ5ICgmY3R4LT5sc3QsCiAJCQkJCQkgICAgR1JVQl9QRTMyX1JFTF9CQVNFRF9ESVI2NCwKQEAg LTE4NTksNiArMTk0Miw4IEBAIHRyYW5zbGF0ZV9yZWxvY2F0aW9uX3BlIChzdHJ1Y3QgdHJhbnNs YXRlX2NvbnRleHQgKmN0eCwKIAkgIGJyZWFrOwogCSAgLyogQ3JlYXRlIGZpeHVwIGVudHJ5IGZv ciBQRS9DT0ZGIGxvYWRlciAqLwogCWNhc2UgUl9BUk1fQUJTMzI6CisJY2FzZSBSX0FSTV9KVU1Q X1NMT1Q6CisJY2FzZSBSX0FSTV9SRUxBVElWRToKIAkgIHsKIAkgICAgY3R4LT5jdXJyZW50X2Fk ZHJlc3MKIAkgICAgICA9IGFkZF9maXh1cF9lbnRyeSAoJmN0eC0+bHN0LApAQCAtMTg3Nyw2ICsx OTYyLDEwIEBAIHRyYW5zbGF0ZV9yZWxvY2F0aW9uX3BlIChzdHJ1Y3QgdHJhbnNsYXRlX2NvbnRl eHQgKmN0eCwKICAgICBjYXNlIEVNX1JJU0NWOgogICAgICAgc3dpdGNoIChFTEZfUl9UWVBFIChp bmZvKSkKIAl7CisjaWYgZGVmaW5lZChNS0lNQUdFX0VMRjMyKQorCWNhc2UgUl9SSVNDVl9SRUxB VElWRToKKwljYXNlIFJfUklTQ1ZfSlVNUF9TTE9UOgorI2VuZGlmCiAJY2FzZSBSX1JJU0NWXzMy OgogCSAgewogCSAgICBjdHgtPmN1cnJlbnRfYWRkcmVzcwpAQCAtMTg4Niw2ICsxOTc1LDEwIEBA IHRyYW5zbGF0ZV9yZWxvY2F0aW9uX3BlIChzdHJ1Y3QgdHJhbnNsYXRlX2NvbnRleHQgKmN0eCwK IAkJCQkgaW1hZ2VfdGFyZ2V0KTsKIAkgIH0KIAkgIGJyZWFrOworI2lmIGRlZmluZWQoTUtJTUFH RV9FTEY2NCkKKwljYXNlIFJfUklTQ1ZfUkVMQVRJVkU6CisJY2FzZSBSX1JJU0NWX0pVTVBfU0xP VDoKKyNlbmRpZgogCWNhc2UgUl9SSVNDVl82NDoKIAkgIHsKIAkgICAgY3R4LT5jdXJyZW50X2Fk ZHJlc3MKQEAgLTIxNDcsNyArMjI0MCw2IEBAIG1ha2VfcmVsb2Nfc2VjdGlvbiAoRWxmX0VoZHIg KmUsIHN0cnVjdCBncnViX21raW1hZ2VfbGF5b3V0ICpsYXlvdXQsCiAJRWxmX1JlbCAqcjsKIAlF bGZfV29yZCBydGFiX3NpemUsIHJfc2l6ZSwgbnVtX3JzOwogCUVsZl9PZmYgcnRhYl9vZmZzZXQ7 Ci0JRWxmX0FkZHIgc2VjdGlvbl9hZGRyZXNzOwogCUVsZl9Xb3JkIGo7CiAKIAlpZiAoIVNVRkZJ WCAoaXNfa2VwdF9yZWxvY19zZWN0aW9uKSAocywgaW1hZ2VfdGFyZ2V0LCBzbWQpKQpAQCAtMjE2 NSw4ICsyMjU3LDYgQEAgbWFrZV9yZWxvY19zZWN0aW9uIChFbGZfRWhkciAqZSwgc3RydWN0IGdy dWJfbWtpbWFnZV9sYXlvdXQgKmxheW91dCwKIAlydGFiX29mZnNldCA9IGdydWJfdGFyZ2V0X3Rv X2hvc3QgKHMtPnNoX29mZnNldCk7CiAJbnVtX3JzID0gcnRhYl9zaXplIC8gcl9zaXplOwogCi0J c2VjdGlvbl9hZGRyZXNzID0gc21kLT52YWRkcnNbZ3J1Yl9sZV90b19jcHUzMiAocy0+c2hfaW5m byldOwotCiAJZm9yIChqID0gMCwgciA9IChFbGZfUmVsICopICgoY2hhciAqKSBlICsgcnRhYl9v ZmZzZXQpOwogCSAgICAgaiA8IG51bV9yczsKIAkgICAgIGorKywgciA9IChFbGZfUmVsICopICgo Y2hhciAqKSByICsgcl9zaXplKSkKQEAgLTIxNzgsNyArMjI2OCw3IEBAIG1ha2VfcmVsb2Nfc2Vj dGlvbiAoRWxmX0VoZHIgKmUsIHN0cnVjdCBncnViX21raW1hZ2VfbGF5b3V0ICpsYXlvdXQsCiAJ ICAgIG9mZnNldCA9IGdydWJfdGFyZ2V0X3RvX2hvc3QgKHItPnJfb2Zmc2V0KTsKIAkgICAgaW5m byA9IGdydWJfdGFyZ2V0X3RvX2hvc3QgKHItPnJfaW5mbyk7CiAKLQkgICAgYWRkciA9IHNlY3Rp b25fYWRkcmVzcyArIG9mZnNldDsKKwkgICAgYWRkciA9IGxheW91dC0+dmFkZHJfZGlmZiArIG9m ZnNldDsKIAogCSAgICB0cmFuc2xhdGVfcmVsb2NhdGlvbiAoJmN0eCwgYWRkciwgaW5mbywgaW1h Z2VfdGFyZ2V0KTsKIAkgIH0KQEAgLTIyNjIsNiArMjM1Miw5IEBAIFNVRkZJWCAoaXNfa2VwdF9y ZWxvY19zZWN0aW9uKSAoRWxmX1NoZHIgKnMsIGNvbnN0IHN0cnVjdCBncnViX2luc3RhbGxfaW1h Z2VfdGFyCiAgIGludCByID0gMDsKICAgY29uc3QgY2hhciAqbmFtZSA9IHNtZC0+c3RydGFiICsg Z3J1Yl9ob3N0X3RvX3RhcmdldDMyIChzLT5zaF9uYW1lKTsKIAorICBpZiAoc3RybmNtcCAobmFt ZSwgIi5yZWxhLmR5biIsIDkpID09IDAgfHwgc3RybmNtcCAobmFtZSwgIi5yZWwuZHluIiwgOCkg PT0gMCkKKyAgICByZXR1cm4gMTsKKwogICBpZiAoIXN0cm5jbXAgKG5hbWUsICIucmVsYS4iLCA2 KSkKICAgICBuYW1lICs9IDU7CiAgIGVsc2UgaWYgKCFzdHJuY21wIChuYW1lLCAiLnJlbC4iLCA1 KSkKQEAgLTIyOTksMzEgKzIzOTIsNiBAQCBTVUZGSVggKGNoZWNrX2VsZl9oZWFkZXIpIChFbGZf RWhkciAqZSwgc2l6ZV90IHNpemUsIGNvbnN0IHN0cnVjdCBncnViX2luc3RhbGxfaQogICByZXR1 cm4gMTsKIH0KIAotc3RhdGljIEVsZl9BZGRyCi1TVUZGSVggKHB1dF9zZWN0aW9uKSAoRWxmX1No ZHIgKnMsIGludCBpLAotCQkgICAgICBFbGZfQWRkciBjdXJyZW50X2FkZHJlc3MsCi0JCSAgICAg IHN0cnVjdCBzZWN0aW9uX21ldGFkYXRhICpzbWQsCi0JCSAgICAgIGNvbnN0IHN0cnVjdCBncnVi X2luc3RhbGxfaW1hZ2VfdGFyZ2V0X2Rlc2MgKmltYWdlX3RhcmdldCkKLXsKLQlFbGZfV29yZCBh bGlnbiA9IGdydWJfaG9zdF90b190YXJnZXRfYWRkciAocy0+c2hfYWRkcmFsaWduKTsKLQljb25z dCBjaGFyICpuYW1lID0gc21kLT5zdHJ0YWIgKyBncnViX2hvc3RfdG9fdGFyZ2V0MzIgKHMtPnNo X25hbWUpOwotCi0JaWYgKGFsaWduKQotCSAgY3VycmVudF9hZGRyZXNzID0gQUxJR05fVVAgKGN1 cnJlbnRfYWRkcmVzcyArIGltYWdlX3RhcmdldC0+dmFkZHJfb2Zmc2V0LAotCQkJCSAgICAgIGFs aWduKQotCSAgICAtIGltYWdlX3RhcmdldC0+dmFkZHJfb2Zmc2V0OwotCi0JZ3J1Yl91dGlsX2lu Zm8gKCJsb2NhdGluZyB0aGUgc2VjdGlvbiAlcyBhdCAweCUiCi0JCQlHUlVCX0hPU1RfUFJJeExP TkdfTE9ORywKLQkJCW5hbWUsICh1bnNpZ25lZCBsb25nIGxvbmcpIGN1cnJlbnRfYWRkcmVzcyk7 Ci0JaWYgKCFpc19yZWxvY2F0YWJsZSAoaW1hZ2VfdGFyZ2V0KSkKLQkgIGN1cnJlbnRfYWRkcmVz cyA9IGdydWJfaG9zdF90b190YXJnZXRfYWRkciAocy0+c2hfYWRkcikKLQkJCSAgICAtIGltYWdl X3RhcmdldC0+bGlua19hZGRyOwotCXNtZC0+YWRkcnNbaV0gPSBjdXJyZW50X2FkZHJlc3M7Ci0J Y3VycmVudF9hZGRyZXNzICs9IGdydWJfaG9zdF90b190YXJnZXRfYWRkciAocy0+c2hfc2l6ZSk7 Ci0JcmV0dXJuIGN1cnJlbnRfYWRkcmVzczsKLX0KLQogLyoKICAqIExvY2F0ZSBzZWN0aW9uIGFk ZHJlc3NlcyBieSBtZXJnaW5nIGNvZGUgc2VjdGlvbnMgYW5kIGRhdGEgc2VjdGlvbnMKICAqIGlu dG8gLnRleHQgYW5kIC5kYXRhLCByZXNwZWN0aXZlbHkuCkBAIC0yMzM1LDk3ICsyNDAzLDEwNSBA QCBTVUZGSVggKGxvY2F0ZV9zZWN0aW9ucykgKEVsZl9FaGRyICplLCBjb25zdCBjaGFyICprZXJu ZWxfcGF0aCwKIAkJCSAgY29uc3Qgc3RydWN0IGdydWJfaW5zdGFsbF9pbWFnZV90YXJnZXRfZGVz YyAqaW1hZ2VfdGFyZ2V0KQogewogICBpbnQgaTsKLSAgRWxmX1NoZHIgKnM7CisgIEVsZl9QaGRy ICpwOwogCiAgIGxheW91dC0+YWxpZ24gPSAxOworICBsYXlvdXQtPmtlcm5lbF9zaXplID0gMDsK KworICBFbGZfQWRkciBtaW5fdmFkZHIgPSB+KEVsZl9BZGRyKTA7CisgIEVsZl9BZGRyIG1heF92 YWRkciA9IDA7CisgIEVsZl9BZGRyIG1heF9maWxsZWRfdmFkZHIgPSAwOworICBFbGZfQWRkciBt YXhfYWxpZ24gPSAxOworICBFbGZfQWRkciBtYXhfZXhlY3ZhZGRyID0gMDsKKyAgRWxmX0FkZHIg bWluX3d2YWRkciA9IH4oRWxmX0FkZHIpMDsKKwogICAvKiBQYWdlLWFsaWduaW5nIHNpbXBsaWZp ZXMgcmVsb2NhdGlvbiBoYW5kbGluZy4gICovCiAgIGlmIChpbWFnZV90YXJnZXQtPmVsZl90YXJn ZXQgPT0gRU1fQUFSQ0g2NCkKLSAgICBsYXlvdXQtPmFsaWduID0gNDA5NjsKKyAgICBtYXhfYWxp Z24gPSA0MDk2OwogCi0gIGxheW91dC0+a2VybmVsX3NpemUgPSAwOworICBmb3IgKGkgPSAwLCBw ID0gc21kLT5waGRyczsKKyAgICAgICBpIDwgc21kLT5udW1fcGhkcnM7CisgICAgICAgaSsrLCBw ID0gKEVsZl9QaGRyICopICgoY2hhciAqKSBwICsgc21kLT5waGRyX2VudHNpemUpKQorICAgIHsK KyAgICAgIGlmIChncnViX3RhcmdldF90b19ob3N0MzIgKHAtPnBfdHlwZSkgPT0gUFRfTE9BRCkK Kwl7CisJICBpZiAoZ3J1Yl90YXJnZXRfdG9faG9zdCAocC0+cF92YWRkcikgPCBtaW5fdmFkZHIp CisJICAgIG1pbl92YWRkciA9IGdydWJfdGFyZ2V0X3RvX2hvc3QgKHAtPnBfdmFkZHIpOworCSAg aWYgKGdydWJfdGFyZ2V0X3RvX2hvc3QgKHAtPnBfdmFkZHIpICsgZ3J1Yl90YXJnZXRfdG9faG9z dCAocC0+cF9tZW1zeikgPiBtYXhfdmFkZHIpCisJICAgIG1heF92YWRkciA9IGdydWJfdGFyZ2V0 X3RvX2hvc3QgKHAtPnBfdmFkZHIpICsgZ3J1Yl90YXJnZXRfdG9faG9zdCAocC0+cF9tZW1zeik7 CisJICBpZiAoZ3J1Yl90YXJnZXRfdG9faG9zdCAocC0+cF92YWRkcikgKyBncnViX3RhcmdldF90 b19ob3N0IChwLT5wX2ZpbGVzeikgPiBtYXhfZmlsbGVkX3ZhZGRyKQorCSAgICBtYXhfZmlsbGVk X3ZhZGRyID0gZ3J1Yl90YXJnZXRfdG9faG9zdCAocC0+cF92YWRkcikgKyBncnViX3RhcmdldF90 b19ob3N0IChwLT5wX2ZpbGVzeik7CisJICBpZiAoKGdydWJfdGFyZ2V0X3RvX2hvc3QzMiAocC0+ cF9mbGFncykgJiBQRl9YKSAmJiBncnViX3RhcmdldF90b19ob3N0IChwLT5wX3ZhZGRyKSArIGdy dWJfdGFyZ2V0X3RvX2hvc3QgKHAtPnBfbWVtc3opID4gbWF4X2V4ZWN2YWRkcikKKwkgICAgbWF4 X2V4ZWN2YWRkciA9IGdydWJfdGFyZ2V0X3RvX2hvc3QgKHAtPnBfdmFkZHIpICsgZ3J1Yl90YXJn ZXRfdG9faG9zdCAocC0+cF9tZW1zeik7CisJICBpZiAoKGdydWJfdGFyZ2V0X3RvX2hvc3QzMiAo cC0+cF9mbGFncykgJiBQRl9XKSAmJiBncnViX3RhcmdldF90b19ob3N0IChwLT5wX3ZhZGRyKSA8 IG1pbl93dmFkZHIpCisJICAgIG1pbl93dmFkZHIgPSBncnViX3RhcmdldF90b19ob3N0IChwLT5w X3ZhZGRyKTsKKwkgIGlmIChncnViX3RhcmdldF90b19ob3N0IChwLT5wX2FsaWduKSA+IG1heF9h bGlnbikKKwkgICAgbWF4X2FsaWduID0gZ3J1Yl90YXJnZXRfdG9faG9zdCAocC0+cF9hbGlnbik7 CisJfQorICAgICAgaWYgKGdydWJfdGFyZ2V0X3RvX2hvc3QzMiAocC0+cF90eXBlKSA9PSBQVF9E WU5BTUlDKQorCXsKKwkgIEVsZjY0X0R5biAqZHluID0gKEVsZjY0X0R5biAqKSAoKGNoYXIgKikg ZSArIGdydWJfdGFyZ2V0X3RvX2hvc3QgKHAtPnBfb2Zmc2V0KSk7CisJICBncnViX3NpemVfdCBz eiA9IGdydWJfdGFyZ2V0X3RvX2hvc3QgKHAtPnBfZmlsZXN6KTsKKwkgIHVuc2lnbmVkIGo7CisJ ICBmb3IgKGogPSAwOyBqIDwgc3ogLyBzaXplb2YoZHluWzBdKTsgaisrKQorCSAgICBzd2l0Y2gg KGR5bltqXS5kX3RhZykKKwkgICAgICB7CisJICAgICAgY2FzZSBEVF9QTFRHT1Q6CisJCWxheW91 dC0+ZHluX3BsdG9mZiA9IGR5bltqXS5kX3VuLmRfcHRyOworCQlicmVhazsKKwkgICAgICBjYXNl IERUX05VTEw6CisJCWdvdG8gZW5kX2R5bmFtaWM7CisJICAgICAgfQorCWVuZF9keW5hbWljOjsK Kwl9CisgICAgfQogCi0gIGZvciAoaSA9IDAsIHMgPSBzbWQtPnNlY3Rpb25zOwotICAgICAgIGkg PCBzbWQtPm51bV9zZWN0aW9uczsKLSAgICAgICBpKyssIHMgPSAoRWxmX1NoZHIgKikgKChjaGFy ICopIHMgKyBzbWQtPnNlY3Rpb25fZW50c2l6ZSkpCi0gICAgaWYgKChncnViX3RhcmdldF90b19o b3N0IChzLT5zaF9mbGFncykgJiBTSEZfQUxMT0MpCi0JJiYgZ3J1Yl9ob3N0X3RvX3RhcmdldDMy IChzLT5zaF9hZGRyYWxpZ24pID4gbGF5b3V0LT5hbGlnbikKLSAgICAgIGxheW91dC0+YWxpZ24g PSBncnViX2hvc3RfdG9fdGFyZ2V0MzIgKHMtPnNoX2FkZHJhbGlnbik7CisgIGlmIChpbWFnZV90 YXJnZXQtPmlkID09IElNQUdFX0VGSSkKKyAgICB7CisgICAgICBpZiAoQUxJR05fRE9XTihtaW5f d3ZhZGRyLCA0MDk2KSA8IEFMSUdOX1VQKG1heF9leGVjdmFkZHIsIDQwOTYpKQorCWdydWJfdXRp bF9lcnJvcigid3JpdGFibGUgYW5kIGV4ZWN1dGFibGUgb3ZlcmxhcCIpOworICAgICAgbWF4X2V4 ZWN2YWRkciA9IEFMSUdOX1VQKG1heF9leGVjdmFkZHIsIDQwOTYpOworICAgIH0KIAotICAvKiAu dGV4dCAqLwotICBmb3IgKGkgPSAwLCBzID0gc21kLT5zZWN0aW9uczsKLSAgICAgICBpIDwgc21k LT5udW1fc2VjdGlvbnM7Ci0gICAgICAgaSsrLCBzID0gKEVsZl9TaGRyICopICgoY2hhciAqKSBz ICsgc21kLT5zZWN0aW9uX2VudHNpemUpKQotICAgIGlmIChTVUZGSVggKGlzX3RleHRfc2VjdGlv bikgKHMsIGltYWdlX3RhcmdldCkpCi0gICAgICB7Ci0JbGF5b3V0LT5rZXJuZWxfc2l6ZSA9IFNV RkZJWCAocHV0X3NlY3Rpb24pIChzLCBpLCBsYXlvdXQtPmtlcm5lbF9zaXplLAotCQkJCQkJc21k LCBpbWFnZV90YXJnZXQpOwotCWlmICghaXNfcmVsb2NhdGFibGUgKGltYWdlX3RhcmdldCkgJiYK LQkgICAgZ3J1Yl9ob3N0X3RvX3RhcmdldF9hZGRyIChzLT5zaF9hZGRyKSAhPSBpbWFnZV90YXJn ZXQtPmxpbmtfYWRkcikKLQkgIHsKLQkgICAgY2hhciAqbXNnCi0JICAgICAgPSBncnViX3hhc3By aW50ZiAoXygiYCVzJyBpcyBtaXNjb21waWxlZDogaXRzIHN0YXJ0IGFkZHJlc3MgaXMgMHglbGx4 IgotCQkJCSAgIiBpbnN0ZWFkIG9mIDB4JWxseDogbGQuZ29sZCBidWc/IiksCi0JCQkJa2VybmVs X3BhdGgsCi0JCQkJKHVuc2lnbmVkIGxvbmcgbG9uZykgZ3J1Yl9ob3N0X3RvX3RhcmdldF9hZGRy IChzLT5zaF9hZGRyKSwKLQkJCQkodW5zaWduZWQgbG9uZyBsb25nKSBpbWFnZV90YXJnZXQtPmxp bmtfYWRkcik7Ci0JICAgIGdydWJfdXRpbF9lcnJvciAoIiVzIiwgbXNnKTsKLQkgIH0KLSAgICAg IH0KKyAgaWYgKCFpc19yZWxvY2F0YWJsZSAoaW1hZ2VfdGFyZ2V0KSAmJgorICAgICAgbWluX3Zh ZGRyICE9IGltYWdlX3RhcmdldC0+bGlua19hZGRyKQorICAgIHsKKyAgICAgIGNoYXIgKm1zZwor CT0gZ3J1Yl94YXNwcmludGYgKF8oImAlcycgaXMgbWlzY29tcGlsZWQ6IGl0cyBzdGFydCBhZGRy ZXNzIGlzIDB4JWxseCIKKwkJCSAgICAiIGluc3RlYWQgb2YgMHglbGx4OiBsZC5nb2xkIGJ1Zz8i KSwKKwkJCSAga2VybmVsX3BhdGgsCisJCQkgICh1bnNpZ25lZCBsb25nIGxvbmcpIG1pbl92YWRk ciwKKwkJCSAgKHVuc2lnbmVkIGxvbmcgbG9uZykgaW1hZ2VfdGFyZ2V0LT5saW5rX2FkZHIpOwor ICAgICAgZ3J1Yl91dGlsX2Vycm9yICgiJXMiLCBtc2cpOworICAgIH0KKworICBsYXlvdXQtPnZh ZGRyX2RpZmYgPSBpbWFnZV90YXJnZXQtPnZhZGRyX29mZnNldDsKKyAgbGF5b3V0LT5vZmZfZGlm ZiA9IC0oZ3J1Yl9pbnQ2NF90KW1pbl92YWRkcjsKKyAgbGF5b3V0LT5rZXJuZWxfc2l6ZSA9IG1h eF9maWxsZWRfdmFkZHIgLSBtaW5fdmFkZHI7CisgIGxheW91dC0+YnNzX3NpemUgPSBtYXhfdmFk ZHIgLSBtYXhfZmlsbGVkX3ZhZGRyOworICBsYXlvdXQtPmV4ZWNfc2l6ZSA9IG1heF9leGVjdmFk ZHIgLSBtaW5fdmFkZHI7CisgIGxheW91dC0+YWxpZ24gPSBtYXhfYWxpZ247CisKKyAgaWYgKGlt YWdlX3RhcmdldC0+aWQgPT0gSU1BR0VfRUZJKQorICAgIHsKKyAgICAgIGxheW91dC0+a2VybmVs X3NpemUgKz0gbGF5b3V0LT5ic3Nfc2l6ZTsKKyAgICAgIGxheW91dC0+YnNzX3NpemUgPSAwOwor ICAgIH0KIAogI2lmZGVmIE1LSU1BR0VfRUxGMzIKICAgaWYgKGltYWdlX3RhcmdldC0+ZWxmX3Rh cmdldCA9PSBFTV9BUk0pCiAgICAgewogICAgICAgZ3J1Yl9zaXplX3QgdHJhbXA7CiAKLSAgICAg IGxheW91dC0+a2VybmVsX3NpemUgPSBBTElHTl9VUCAobGF5b3V0LT5rZXJuZWxfc2l6ZSwgMTYp OwotCiAgICAgICB0cmFtcCA9IGFybV9nZXRfdHJhbXBvbGluZV9zaXplIChlLCBzbWQtPnNlY3Rp b25zLCBzbWQtPnNlY3Rpb25fZW50c2l6ZSwKIAkJCQkgICAgICAgc21kLT5udW1fc2VjdGlvbnMs IGltYWdlX3RhcmdldCk7Ci0KLSAgICAgIGxheW91dC0+dHJhbXBfb2ZmID0gbGF5b3V0LT5rZXJu ZWxfc2l6ZTsKLSAgICAgIGxheW91dC0+a2VybmVsX3NpemUgKz0gQUxJR05fVVAgKHRyYW1wLCAx Nik7CisgICAgICBpZiAodHJhbXAgIT0gMCkKKwlncnViX3V0aWxfZXJyb3IoImluc2VydGluZyB0 cmFtcG9saW5lcyBpcyBubyBsb25nZXIgc3VwcG9ydGVkIik7CiAgICAgfQogI2VuZGlmCiAKLSAg bGF5b3V0LT5rZXJuZWxfc2l6ZSA9IEFMSUdOX1VQIChsYXlvdXQtPmtlcm5lbF9zaXplICsgaW1h Z2VfdGFyZ2V0LT52YWRkcl9vZmZzZXQsCi0JCQkgICAgICBpbWFnZV90YXJnZXQtPnNlY3Rpb25f YWxpZ24pCi0gICAgLSBpbWFnZV90YXJnZXQtPnZhZGRyX29mZnNldDsKLSAgbGF5b3V0LT5leGVj X3NpemUgPSBsYXlvdXQtPmtlcm5lbF9zaXplOwotCi0gIC8qIC5kYXRhICovCi0gIGZvciAoaSA9 IDAsIHMgPSBzbWQtPnNlY3Rpb25zOwotICAgICAgIGkgPCBzbWQtPm51bV9zZWN0aW9uczsKLSAg ICAgICBpKyssIHMgPSAoRWxmX1NoZHIgKikgKChjaGFyICopIHMgKyBzbWQtPnNlY3Rpb25fZW50 c2l6ZSkpCi0gICAgaWYgKFNVRkZJWCAoaXNfZGF0YV9zZWN0aW9uKSAocywgaW1hZ2VfdGFyZ2V0 KSkKLSAgICAgIGxheW91dC0+a2VybmVsX3NpemUgPSBTVUZGSVggKHB1dF9zZWN0aW9uKSAocywg aSwgbGF5b3V0LT5rZXJuZWxfc2l6ZSwgc21kLAotCQkJCQkJICBpbWFnZV90YXJnZXQpOwotCi0g IGxheW91dC0+YnNzX3N0YXJ0ID0gbGF5b3V0LT5rZXJuZWxfc2l6ZTsKLSAgbGF5b3V0LT5lbmQg PSBsYXlvdXQtPmtlcm5lbF9zaXplOwotCi0gIC8qIC5ic3MgKi8KLSAgZm9yIChpID0gMCwgcyA9 IHNtZC0+c2VjdGlvbnM7Ci0gICAgICAgaSA8IHNtZC0+bnVtX3NlY3Rpb25zOwotICAgICAgIGkr KywgcyA9IChFbGZfU2hkciAqKSAoKGNoYXIgKikgcyArIHNtZC0+c2VjdGlvbl9lbnRzaXplKSkK LSAgICB7Ci0gICAgICBpZiAoU1VGRklYIChpc19ic3Nfc2VjdGlvbikgKHMsIGltYWdlX3Rhcmdl dCkpCi0JbGF5b3V0LT5lbmQgPSBTVUZGSVggKHB1dF9zZWN0aW9uKSAocywgaSwgbGF5b3V0LT5l bmQsIHNtZCwgaW1hZ2VfdGFyZ2V0KTsKLQotICAgICAgLyoKLSAgICAgICAqIFRoaXMgbXVzdCB0 byBiZSBpbiB0aGUgbGFzdCB0aW1lIHRoaXMgZnVuY3Rpb24gcGFzc2VzIHRocm91Z2ggdGhlIGxv b3AuCi0gICAgICAgKi8KLSAgICAgIHNtZC0+dmFkZHJzW2ldID0gc21kLT5hZGRyc1tpXSArIGlt YWdlX3RhcmdldC0+dmFkZHJfb2Zmc2V0OwotICAgIH0KLQotICBsYXlvdXQtPmVuZCA9IEFMSUdO X1VQIChsYXlvdXQtPmVuZCArIGltYWdlX3RhcmdldC0+dmFkZHJfb2Zmc2V0LAorICBsYXlvdXQt PmVuZCA9IEFMSUdOX1VQIChsYXlvdXQtPmtlcm5lbF9zaXplICsgaW1hZ2VfdGFyZ2V0LT52YWRk cl9vZmZzZXQsCiAJCQkgICAgICBpbWFnZV90YXJnZXQtPnNlY3Rpb25fYWxpZ24pIC0gaW1hZ2Vf dGFyZ2V0LT52YWRkcl9vZmZzZXQ7Ci0gIC8qIEV4cGxpY2l0bHkgaW5pdGlhbGl6ZSBCU1MKLSAg ICAgd2hlbiBwcm9kdWNpbmcgUEUzMiB0byBhdm9pZCBhIGJ1ZyBpbiBFRkkgaW1wbGVtZW50YXRp b25zLgotICAgICBQbGF0Zm9ybXMgb3RoZXIgdGhhbiBFRkkgYW5kIFUtYm9vdCBzaG91bGRuJ3Qg aGF2ZSAuYnNzIGluCi0gICAgIHRoZWlyIGJpbmFyaWVzIGFzIHdlIGJ1aWxkIHdpdGggLVdsLC1U dGV4dC4KLSAgKi8KLSAgaWYgKGltYWdlX3RhcmdldC0+aWQgPT0gSU1BR0VfRUZJIHx8ICFpc19y ZWxvY2F0YWJsZSAoaW1hZ2VfdGFyZ2V0KSkKLSAgICBsYXlvdXQtPmtlcm5lbF9zaXplID0gbGF5 b3V0LT5lbmQ7CiB9CiAKIGNoYXIgKgpAQCAtMjQzNSwxMSArMjUxMSwxMiBAQCBTVUZGSVggKGdy dWJfbWtpbWFnZV9sb2FkX2ltYWdlKSAoY29uc3QgY2hhciAqa2VybmVsX3BhdGgsCiAJCQkJICBj b25zdCBzdHJ1Y3QgZ3J1Yl9pbnN0YWxsX2ltYWdlX3RhcmdldF9kZXNjICppbWFnZV90YXJnZXQp CiB7CiAgIGNoYXIgKmtlcm5lbF9pbWcsICpvdXRfaW1nOwotICBzdHJ1Y3Qgc2VjdGlvbl9tZXRh ZGF0YSBzbWQgPSB7IDAsIDAsIDAsIDAsIDAsIDAsIDAgfTsKKyAgc3RydWN0IHNlY3Rpb25fbWV0 YWRhdGEgc21kID0geyAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwIH07CiAgIEVsZl9FaGRyICplOwog ICBpbnQgaTsKICAgRWxmX1NoZHIgKnM7Ci0gIEVsZl9PZmYgc2VjdGlvbl9vZmZzZXQ7CisgIEVs Zl9QaGRyICpwOworICBFbGZfT2ZmIHNlY3Rpb25fb2Zmc2V0LCBwaGRyX29mZnNldDsKICAgZ3J1 Yl9zaXplX3Qga2VybmVsX3NpemU7CiAKICAgZ3J1Yl9tZW1zZXQgKGxheW91dCwgMCwgc2l6ZW9m ICgqbGF5b3V0KSk7CkBAIC0yNDY0LDcxICsyNTQxLDIzIEBAIFNVRkZJWCAoZ3J1Yl9ta2ltYWdl X2xvYWRfaW1hZ2UpIChjb25zdCBjaGFyICprZXJuZWxfcGF0aCwKIAogICBzbWQuc2VjdGlvbnMg PSAoRWxmX1NoZHIgKikgKGtlcm5lbF9pbWcgKyBzZWN0aW9uX29mZnNldCk7CiAKKyAgcGhkcl9v ZmZzZXQgPSBncnViX3RhcmdldF90b19ob3N0IChlLT5lX3Bob2ZmKTsKKyAgc21kLnBoZHJfZW50 c2l6ZSA9IGdydWJfdGFyZ2V0X3RvX2hvc3QxNiAoZS0+ZV9waGVudHNpemUpOworICBzbWQubnVt X3BoZHJzID0gZ3J1Yl90YXJnZXRfdG9faG9zdDE2IChlLT5lX3BobnVtKTsKKworICBpZiAoa2Vy bmVsX3NpemUgPCBwaGRyX29mZnNldAorCQkgICAgKyAoZ3J1Yl91aW50MzJfdCkgc21kLnBoZHJf ZW50c2l6ZSAqIHNtZC5udW1fcGhkcnMpCisgICAgZ3J1Yl91dGlsX2Vycm9yIChfKCJwcmVtYXR1 cmUgZW5kIG9mIGZpbGUgJXMiKSwga2VybmVsX3BhdGgpOworCisgIHNtZC5waGRycyA9IChFbGZf UGhkciAqKSAoa2VybmVsX2ltZyArIHBoZHJfb2Zmc2V0KTsKKwogICAvKiBSZWxvY2F0ZSBzZWN0 aW9ucyB0aGVuIHN5bWJvbHMgaW4gdGhlIHZpcnR1YWwgYWRkcmVzcyBzcGFjZS4gICovCiAgIHMg PSAoRWxmX1NoZHIgKikgKChjaGFyICopIHNtZC5zZWN0aW9ucwogCQkgICAgICArIGdydWJfaG9z dF90b190YXJnZXQxNiAoZS0+ZV9zaHN0cm5keCkgKiBzbWQuc2VjdGlvbl9lbnRzaXplKTsKICAg c21kLnN0cnRhYiA9IChjaGFyICopIGUgKyBncnViX2hvc3RfdG9fdGFyZ2V0X2FkZHIgKHMtPnNo X29mZnNldCk7CiAKLSAgc21kLmFkZHJzID0geGNhbGxvYyAoc21kLm51bV9zZWN0aW9ucywgc2l6 ZW9mICgqc21kLmFkZHJzKSk7Ci0gIHNtZC52YWRkcnMgPSB4Y2FsbG9jIChzbWQubnVtX3NlY3Rp b25zLCBzaXplb2YgKCpzbWQudmFkZHJzKSk7Ci0KICAgU1VGRklYIChsb2NhdGVfc2VjdGlvbnMp IChlLCBrZXJuZWxfcGF0aCwgJnNtZCwgbGF5b3V0LCBpbWFnZV90YXJnZXQpOwogCi0gIGlmICgh aXNfcmVsb2NhdGFibGUgKGltYWdlX3RhcmdldCkpCi0gICAgewotICAgICAgRWxmX0FkZHIgY3Vy cmVudF9hZGRyZXNzID0gbGF5b3V0LT5rZXJuZWxfc2l6ZTsKLSAgICAgIEVsZl9BZGRyIGJzc19z dGFydCA9IGxheW91dC0+a2VybmVsX3NpemU7Ci0gICAgICBib29sIGlzX2ZpcnN0ID0gdHJ1ZTsK LQotICAgICAgZm9yIChpID0gMCwgcyA9IHNtZC5zZWN0aW9uczsKLQkgICBpIDwgc21kLm51bV9z ZWN0aW9uczsKLQkgICBpKyssIHMgPSAoRWxmX1NoZHIgKikgKChjaGFyICopIHMgKyBzbWQuc2Vj dGlvbl9lbnRzaXplKSkKLQlpZiAoZ3J1Yl90YXJnZXRfdG9faG9zdDMyIChzLT5zaF90eXBlKSA9 PSBTSFRfTk9CSVRTKQotCSAgewotCSAgICBFbGZfV29yZCBzZWNfYWxpZ24gPSBncnViX2hvc3Rf dG9fdGFyZ2V0X2FkZHIgKHMtPnNoX2FkZHJhbGlnbik7Ci0JICAgIGNvbnN0IGNoYXIgKm5hbWUg PSBzbWQuc3RydGFiICsgZ3J1Yl9ob3N0X3RvX3RhcmdldDMyIChzLT5zaF9uYW1lKTsKLQotCSAg ICBpZiAoc2VjX2FsaWduKQotCSAgICAgIGN1cnJlbnRfYWRkcmVzcyA9IEFMSUdOX1VQIChjdXJy ZW50X2FkZHJlc3MKLQkJCQkJICArIGltYWdlX3RhcmdldC0+dmFkZHJfb2Zmc2V0LAotCQkJCQkg IHNlY19hbGlnbikKLQkJLSBpbWFnZV90YXJnZXQtPnZhZGRyX29mZnNldDsKLQotCSAgICBncnVi X3V0aWxfaW5mbyAoImxvY2F0aW5nIHRoZSBzZWN0aW9uICVzIGF0IDB4JSIKLQkJCSAgICBHUlVC X0hPU1RfUFJJeExPTkdfTE9ORywKLQkJCSAgICBuYW1lLCAodW5zaWduZWQgbG9uZyBsb25nKSBj dXJyZW50X2FkZHJlc3MpOwotCSAgICBpZiAoIWlzX3JlbG9jYXRhYmxlIChpbWFnZV90YXJnZXQp KQotCSAgICAgIGN1cnJlbnRfYWRkcmVzcyA9IGdydWJfaG9zdF90b190YXJnZXRfYWRkciAocy0+ c2hfYWRkcikKLQkJLSBpbWFnZV90YXJnZXQtPmxpbmtfYWRkcjsKLQotCSAgICBpZiAoaXNfZmly c3QgPT0gdHJ1ZSkKLQkgICAgICB7Ci0JCWJzc19zdGFydCA9IGN1cnJlbnRfYWRkcmVzczsKLQkJ aXNfZmlyc3QgPSBmYWxzZTsKLQkgICAgICB9Ci0KLQkgICAgc21kLnZhZGRyc1tpXSA9IGN1cnJl bnRfYWRkcmVzcwotCSAgICAgICsgaW1hZ2VfdGFyZ2V0LT52YWRkcl9vZmZzZXQ7Ci0JICAgIGN1 cnJlbnRfYWRkcmVzcyArPSBncnViX2hvc3RfdG9fdGFyZ2V0X2FkZHIgKHMtPnNoX3NpemUpOwot CSAgfQotICAgICAgY3VycmVudF9hZGRyZXNzID0gQUxJR05fVVAgKGN1cnJlbnRfYWRkcmVzcyAr IGltYWdlX3RhcmdldC0+dmFkZHJfb2Zmc2V0LAotCQkJCSAgaW1hZ2VfdGFyZ2V0LT5zZWN0aW9u X2FsaWduKQotCS0gaW1hZ2VfdGFyZ2V0LT52YWRkcl9vZmZzZXQ7Ci0KLSAgICAgIGlmIChpbWFn ZV90YXJnZXQtPmlkID09IElNQUdFX1lFRUxPT05HX0ZMQVNICi0JICB8fCBpbWFnZV90YXJnZXQt PmlkID09IElNQUdFX0ZVTE9PTkcyRl9GTEFTSAotCSAgfHwgaW1hZ2VfdGFyZ2V0LT5pZCA9PSBJ TUFHRV9MT09OR1NPTl9FTEYKLQkgIHx8IGltYWdlX3RhcmdldC0+aWQgPT0gSU1BR0VfUUVNVV9N SVBTX0ZMQVNICi0JICB8fCBpbWFnZV90YXJnZXQtPmlkID09IElNQUdFX01JUFNfQVJDKQotCXsK LQkgIGxheW91dC0+a2VybmVsX3NpemUgPSBic3Nfc3RhcnQ7Ci0JfQotCi0gICAgICBsYXlvdXQt PmJzc19zaXplID0gY3VycmVudF9hZGRyZXNzIC0gbGF5b3V0LT5rZXJuZWxfc2l6ZTsKLSAgICB9 Ci0gIGVsc2UKLSAgICBsYXlvdXQtPmJzc19zaXplID0gMDsKLQogICBpZiAoaW1hZ2VfdGFyZ2V0 LT5pZCA9PSBJTUFHRV9TUEFSQzY0X0FPVVQKICAgICAgIHx8IGltYWdlX3RhcmdldC0+aWQgPT0g SU1BR0VfU1BBUkM2NF9SQVcKICAgICAgIHx8IGltYWdlX3RhcmdldC0+aWQgPT0gSU1BR0VfVUJP T1QKQEAgLTI1NDIsNyArMjU3MSw3IEBAIFNVRkZJWCAoZ3J1Yl9ta2ltYWdlX2xvYWRfaW1hZ2Up IChjb25zdCBjaGFyICprZXJuZWxfcGF0aCwKICAgICAgIGZvciAoaSA9IDAsIHMgPSBzbWQuc2Vj dGlvbnM7CiAJICAgaSA8IHNtZC5udW1fc2VjdGlvbnM7CiAJICAgaSsrLCBzID0gKEVsZl9TaGRy ICopICgoY2hhciAqKSBzICsgc21kLnNlY3Rpb25fZW50c2l6ZSkpCi0JaWYgKHMtPnNoX3R5cGUg PT0gZ3J1Yl9ob3N0X3RvX3RhcmdldDMyIChTSFRfU1lNVEFCKSkKKwlpZiAocy0+c2hfdHlwZSA9 PSBncnViX2hvc3RfdG9fdGFyZ2V0MzIgKFNIVF9EWU5TWU0pKQogCSAgewogCSAgICBzbWQuc3lt dGFiID0gczsKIAkgICAgYnJlYWs7CkBAIC0yNjAwLDE2ICsyNjI5LDMyIEBAIFNVRkZJWCAoZ3J1 Yl9ta2ltYWdlX2xvYWRfaW1hZ2UpIChjb25zdCBjaGFyICprZXJuZWxfcGF0aCwKICAgICAgIGxh eW91dC0+c3RhcnRfYWRkcmVzcyA9IFNVRkZJWCAocmVsb2NhdGVfc3ltYm9scykgKGUsICZzbWQs CiAJCQkJICAoY2hhciAqKSBvdXRfaW1nICsgbGF5b3V0LT5pYTY0am1wX29mZiwKIAkJCQkgIGxh eW91dC0+aWE2NGptcF9vZmYgKyBpbWFnZV90YXJnZXQtPnZhZGRyX29mZnNldCwKLQkJCQkgIGxh eW91dC0+YnNzX3N0YXJ0LCBsYXlvdXQtPmVuZCwgaW1hZ2VfdGFyZ2V0KTsKKwkJCQkgIGxheW91 dCwgaW1hZ2VfdGFyZ2V0KTsKIAogICAgICAgaWYgKGxheW91dC0+c3RhcnRfYWRkcmVzcyA9PSAo RWxmX0FkZHIpIC0xKQogCWdydWJfdXRpbF9lcnJvciAoInN0YXJ0IHN5bWJvbCBpcyBub3QgZGVm aW5lZCIpOwogCisgICAgICBtYWtlX3JlbG9jX3NlY3Rpb24gKGUsIGxheW91dCwgJnNtZCwgaW1h Z2VfdGFyZ2V0KTsKKyAgICB9CisKKyAgZm9yIChpID0gMCwgcCA9IHNtZC5waGRyczsKKyAgICAg ICBpIDwgc21kLm51bV9waGRyczsKKyAgICAgICBpKyssIHAgPSAoRWxmX1BoZHIgKikgKChjaGFy ICopIHAgKyBzbWQucGhkcl9lbnRzaXplKSkKKyAgICAgIHsKKwlpZiAoZ3J1Yl90YXJnZXRfdG9f aG9zdDMyIChwLT5wX3R5cGUpICE9IFBUX0xPQUQpCisJICBjb250aW51ZTsKKwltZW1jcHkgKG91 dF9pbWcgKyBncnViX3RhcmdldF90b19ob3N0IChwLT5wX3ZhZGRyKSArIGxheW91dC0+b2ZmX2Rp ZmYsCisJICAgICAgIGtlcm5lbF9pbWcgKyBncnViX3RhcmdldF90b19ob3N0IChwLT5wX29mZnNl dCksIGdydWJfdGFyZ2V0X3RvX2hvc3QgKHAtPnBfZmlsZXN6KSk7CisJaWYgKGltYWdlX3Rhcmdl dC0+aWQgPT0gSU1BR0VfRUZJKQorCSAgbWVtc2V0IChvdXRfaW1nICsgZ3J1Yl90YXJnZXRfdG9f aG9zdCAocC0+cF92YWRkcikgKyBsYXlvdXQtPm9mZl9kaWZmICsgZ3J1Yl90YXJnZXRfdG9faG9z dCAocC0+cF9maWxlc3opLAorCQkgIDAsIGdydWJfdGFyZ2V0X3RvX2hvc3QgKHAtPnBfbWVtc3op IC0gZ3J1Yl90YXJnZXRfdG9faG9zdCAocC0+cF9maWxlc3opKTsKKyAgICAgIH0KKworICBpZiAo aXNfcmVsb2NhdGFibGUgKGltYWdlX3RhcmdldCkpCisgICAgewogICAgICAgLyogUmVzb2x2ZSBh ZGRycyBpbiB0aGUgdmlydHVhbCBhZGRyZXNzIHNwYWNlLiAgKi8KLSAgICAgIFNVRkZJWCAocmVs b2NhdGVfYWRkcnMpIChlLCAmc21kLCBvdXRfaW1nLCBsYXlvdXQtPnRyYW1wX29mZiwKLQkJCQkg ICBsYXlvdXQtPmdvdF9vZmYsIGltYWdlX3RhcmdldCk7CisgICAgICBTVUZGSVggKHJlbG9jYXRl X2FkZHJzKSAoZSwgJnNtZCwgb3V0X2ltZywgbGF5b3V0LCBpbWFnZV90YXJnZXQpOwogCi0gICAg ICBtYWtlX3JlbG9jX3NlY3Rpb24gKGUsIGxheW91dCwgJnNtZCwgaW1hZ2VfdGFyZ2V0KTsKICAg ICAgIGlmIChpbWFnZV90YXJnZXQtPmlkICE9IElNQUdFX0VGSSkKIAl7CiAJICBvdXRfaW1nID0g eHJlYWxsb2MgKG91dF9pbWcsIGxheW91dC0+a2VybmVsX3NpemUgKyB0b3RhbF9tb2R1bGVfc2l6 ZQpAQCAtMjYyMSwyNSArMjY2Niw3IEBAIFNVRkZJWCAoZ3J1Yl9ta2ltYWdlX2xvYWRfaW1hZ2Up IChjb25zdCBjaGFyICprZXJuZWxfcGF0aCwKIAl9CiAgICAgfQogCi0gIGZvciAoaSA9IDAsIHMg PSBzbWQuc2VjdGlvbnM7Ci0gICAgICAgaSA8IHNtZC5udW1fc2VjdGlvbnM7Ci0gICAgICAgaSsr LCBzID0gKEVsZl9TaGRyICopICgoY2hhciAqKSBzICsgc21kLnNlY3Rpb25fZW50c2l6ZSkpCi0g ICAgaWYgKFNVRkZJWCAoaXNfa2VwdF9zZWN0aW9uKSAocywgaW1hZ2VfdGFyZ2V0KSkKLSAgICAg IHsKLQlpZiAoZ3J1Yl90YXJnZXRfdG9faG9zdDMyIChzLT5zaF90eXBlKSA9PSBTSFRfTk9CSVRT KQotCSAgbWVtc2V0IChvdXRfaW1nICsgc21kLmFkZHJzW2ldLCAwLAotCQkgIGdydWJfaG9zdF90 b190YXJnZXRfYWRkciAocy0+c2hfc2l6ZSkpOwotCWVsc2UKLQkgIG1lbWNweSAob3V0X2ltZyAr IHNtZC5hZGRyc1tpXSwKLQkJICBrZXJuZWxfaW1nICsgZ3J1Yl9ob3N0X3RvX3RhcmdldF9hZGRy IChzLT5zaF9vZmZzZXQpLAotCQkgIGdydWJfaG9zdF90b190YXJnZXRfYWRkciAocy0+c2hfc2l6 ZSkpOwotICAgICAgfQogICBmcmVlIChrZXJuZWxfaW1nKTsKIAotICBmcmVlIChzbWQudmFkZHJz KTsKLSAgc21kLnZhZGRycyA9IE5VTEw7Ci0gIGZyZWUgKHNtZC5hZGRycyk7Ci0gIHNtZC5hZGRy cyA9IE5VTEw7Ci0KICAgcmV0dXJuIG91dF9pbWc7CiB9Ci0tIAoyLjQ5LjAKCgpfX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpHcnViLWRldmVsIG1haWxpbmcg bGlzdApHcnViLWRldmVsQGdudS5vcmcKaHR0cHM6Ly9saXN0cy5nbnUub3JnL21haWxtYW4vbGlz dGluZm8vZ3J1Yi1kZXZlbAo=