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 A3053CCD183 for ; Mon, 6 Oct 2025 07:27:04 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v5fc8-00089B-Ks; Mon, 06 Oct 2025 03:26:32 -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 1v5fc6-00088t-SV for grub-devel@gnu.org; Mon, 06 Oct 2025 03:26:31 -0400 Received: from mx0a-001b2d01.pphosted.com ([148.163.156.1]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1v5fc4-00020N-C6 for grub-devel@gnu.org; Mon, 06 Oct 2025 03:26:30 -0400 Received: from pps.filterd (m0353729.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 5964Ye1F000785; Mon, 6 Oct 2025 07:26:24 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ibm.com; h=cc :content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=pp1; bh=79JUf6 T+uYQSO1okiYus6rlT8B5K/0ts4M5USwgQYmE=; b=ME4yBwsSAVueEmu557V9w6 /rUHHlptJhSEy+aX+6yqClrTYjkLhlTB+LE8jzL7Jp0z6rO73vhpzvDKFEEE8WJt YSQcNgnethlJx42Q93xflnkbQzGIn9a/S1ubBlOUcRIQDy/TfgPRiOfyod8gKmOe s4w/U8/84W+KdMqiXeDOWeiBS1ZeSvyn1H6uEWNsezdc/f+dTJcHr9k9lxLLphk5 beFn/BWQgohMhHkGm3WvCMvh7AVlZtnMCh3HIWuGVVodCIJaP1sjgOalNs/7/O3E 7MUYWtMuxm7AqF+JvLFntAiIAkh3fc6Wakpa+Akdr/9lwE4/CuBU6Fya4k6SrnkQ == Received: from ppma12.dal12v.mail.ibm.com (dc.9e.1632.ip4.static.sl-reverse.com [50.22.158.220]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 49ju937t0h-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 06 Oct 2025 07:26:24 +0000 (GMT) Received: from pps.filterd (ppma12.dal12v.mail.ibm.com [127.0.0.1]) by ppma12.dal12v.mail.ibm.com (8.18.1.2/8.18.1.2) with ESMTP id 59645F9e019616; Mon, 6 Oct 2025 07:26:23 GMT Received: from smtprelay07.fra02v.mail.ibm.com ([9.218.2.229]) by ppma12.dal12v.mail.ibm.com (PPS) with ESMTPS id 49kdws50u5-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 06 Oct 2025 07:26:23 +0000 Received: from smtpav07.fra02v.mail.ibm.com (smtpav07.fra02v.mail.ibm.com [10.20.54.106]) by smtprelay07.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 5967QKh953150018 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 6 Oct 2025 07:26:20 GMT Received: from smtpav07.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id EBCEE20043; Mon, 6 Oct 2025 07:26:19 +0000 (GMT) Received: from smtpav07.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 43B5520040; Mon, 6 Oct 2025 07:26:17 +0000 (GMT) Received: from localhost.localdomain (unknown [9.124.213.16]) by smtpav07.fra02v.mail.ibm.com (Postfix) with ESMTP; Mon, 6 Oct 2025 07:26:17 +0000 (GMT) From: Sudhakar Kuppusamy To: grub-devel@gnu.org Cc: dja@axtens.net, jan.setjeeilers@oracle.com, julian.klode@canonical.com, mate.kukri@canonical.com, pjones@redhat.com, msuchanek@suse.com, mlewando@redhat.com, stefanb@linux.ibm.com, avnish@linux.ibm.com, nayna@linux.ibm.com, ssrish@linux.ibm.com, Sudhakar Kuppusamy , sridharm@linux.ibm.com, Daniel Kiper Subject: [PATCH v18 16/20] appended signatures: GRUB commands to manage the hashes Date: Mon, 6 Oct 2025 12:55:01 +0530 Message-ID: <20251006072508.19088-17-sudhakar@linux.ibm.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20251006072508.19088-1-sudhakar@linux.ibm.com> References: <20251006072508.19088-1-sudhakar@linux.ibm.com> MIME-Version: 1.0 X-TM-AS-GCONF: 00 X-Proofpoint-GUID: F5CGwVXkxE9T1jBQP1zErGDr0-r8E2U5 X-Proofpoint-ORIG-GUID: F5CGwVXkxE9T1jBQP1zErGDr0-r8E2U5 X-Authority-Analysis: v=2.4 cv=Fec6BZ+6 c=1 sm=1 tr=0 ts=68e36f20 cx=c_pps a=bLidbwmWQ0KltjZqbj+ezA==:117 a=bLidbwmWQ0KltjZqbj+ezA==:17 a=IkcTkHD0fZMA:10 a=x6icFKpwvdMA:10 a=VnNF1IyMAAAA:8 a=yPCof4ZbAAAA:8 a=e-nx5uoHNrGU2HCnJ5kA:9 a=3ZKOabzyN94A:10 a=QEXdDO2ut3YA:10 a=cPQSjfK2_nFv0Q5t_7PE:22 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUxMDA0MDAyMiBTYWx0ZWRfXzqntOi5TI0Im 83Z3wpRvqnzxhMMlt99lD4R15yfOlptysCnE6WxET8/FxCoKB/RSv3lcauwqwwLmbls7S+M0xa+ 0vr+df4NY4qOtIoYd+tfJH7W4heY6Jus+TEDgt/TIAFB6dB3DNo7o8a46LYn6wmjZG3/iE026jV LBdWg+C8h5q2howHJfx2Lhx0wpFCG8YRZto5m95DMnYPCfBZ+sspCXLCAz1IfrxfbYWIsns/uZI dwLffoVVVCa9vOJU0g8joe/eXO6DERzo7uAQ7R33KyyIKBCH/5DIXbS2oHaKYCdEGBYXSeuaywv 4dFsuW5wdF1XQ6NbHfbOfAuLTrcIJ/1QgFwCLb+F09CZdv7iuZc2MwmB2B6hHJa3w/Ub+Hk/yFo sD0/CEvIPYZhmn4zL2s0/tp7KeKEGg== X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1117,Hydra:6.1.9,FMLib:17.12.80.40 definitions=2025-10-06_02,2025-10-02_03,2025-03-28_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 lowpriorityscore=0 impostorscore=0 suspectscore=0 spamscore=0 adultscore=0 clxscore=1015 malwarescore=0 priorityscore=1501 phishscore=0 bulkscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.19.0-2509150000 definitions=main-2510040022 Received-SPF: pass client-ip=148.163.156.1; envelope-from=sudhakar@linux.ibm.com; helo=mx0a-001b2d01.pphosted.com X-Spam_score_int: -26 X-Spam_score: -2.7 X-Spam_bar: -- X-Spam_report: (-2.7 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H4=-0.01, RCVD_IN_MSPIKE_WL=-0.01, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, 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 SW50cm9kdWNpbmcgdGhlIGZvbGxvd2luZyBHUlVCIGNvbW1hbmRzIHRvIG1hbmFnZSBjZXJ0aWZp Y2F0ZS9iaW5hcnkKaGFzaGVzLgoKICAxLiBhcHBlbmRfbGlzdF9kYng6CiAgICAgIFNob3cgdGhl IGxpc3Qgb2YgZGlzdHJ1c3RlZCBjZXJ0aWZpY2F0ZXMgYW5kIGJpbmFyeS9jZXJ0aWZpY2F0ZQog ICAgICBoYXNoZXMgZnJvbSB0aGUgZGJ4IGxpc3QuCiAgMi4gYXBwZW5kX2FkZF9kYl9oYXNoOgog ICAgICBBZGQgdGhlIHRydXN0ZWQgYmluYXJ5IGhhc2ggdG8gdGhlIGRiIGxpc3QuCiAgMy4gYXBw ZW5kX2FkZF9kYnhfaGFzaDoKICAgICAgQWRkIHRoZSBkaXN0cnVzdGVkIGNlcnRpZmljYXRlL2Jp bmFyeSBoYXNoIHRvIHRoZSBkYnggbGlzdC4KCk5vdGUgdGhhdCBpZiBzaWduYXR1cmUgdmVyaWZp Y2F0aW9uIChjaGVja19hcHBlbmRlZF9zaWduYXR1cmVzKSBpcyBzZXQgdG8geWVzLAp0aGUgYXBw ZW5kX2FkZF9kYl9oYXNoIGFuZCBhcHBlbmRfYWRkX2RieF9oYXNoIGNvbW1hbmRzIG9ubHkgYWNj ZXB0IHRoZSBmaWxlCuKAmGhhc2hfZmlsZeKAmSB0aGF0IGlzIHNpZ25lZCB3aXRoIGFuIGFwcGVu ZGVkIHNpZ25hdHVyZS4KClNpZ25lZC1vZmYtYnk6IFN1ZGhha2FyIEt1cHB1c2FteSA8c3VkaGFr YXJAbGludXguaWJtLmNvbT4KVGVzdGVkLWJ5OiBTcmlkaGFyIE1hcmtvbmRhIDxzcmlkaGFybUBs aW51eC5pYm0uY29tPgpSZXZpZXdlZC1ieTogQXZuaXNoIENob3VoYW4gPGF2bmlzaEBsaW51eC5p Ym0uY29tPgpSZXZpZXdlZC1ieTogRGFuaWVsIEtpcGVyIDxkYW5pZWwua2lwZXJAb3JhY2xlLmNv bT4KLS0tCiBncnViLWNvcmUvY29tbWFuZHMvYXBwZW5kZWRzaWcvYXBwZW5kZWRzaWcuYyB8IDI3 OSArKysrKysrKysrKysrKysrKysrCiBpbmNsdWRlL2dydWIvZmlsZS5oICAgICAgICAgICAgICAg ICAgICAgICAgICB8ICAgMiArCiAyIGZpbGVzIGNoYW5nZWQsIDI4MSBpbnNlcnRpb25zKCspCgpk aWZmIC0tZ2l0IGEvZ3J1Yi1jb3JlL2NvbW1hbmRzL2FwcGVuZGVkc2lnL2FwcGVuZGVkc2lnLmMg Yi9ncnViLWNvcmUvY29tbWFuZHMvYXBwZW5kZWRzaWcvYXBwZW5kZWRzaWcuYwppbmRleCA2MTRl YmVlYzAuLjVjNTNmNjM0YyAxMDA2NDQKLS0tIGEvZ3J1Yi1jb3JlL2NvbW1hbmRzL2FwcGVuZGVk c2lnL2FwcGVuZGVkc2lnLmMKKysrIGIvZ3J1Yi1jb3JlL2NvbW1hbmRzL2FwcGVuZGVkc2lnL2Fw cGVuZGVkc2lnLmMKQEAgLTUyLDYgKzUyLDkgQEAgR1JVQl9NT0RfTElDRU5TRSAoIkdQTHYzKyIp OwogI2RlZmluZSBTSEEzODRfSEFTSF9TSVpFICAgNDgKICNkZWZpbmUgU0hBNTEyX0hBU0hfU0la RSAgIDY0CiAKKyNkZWZpbmUgT1BUSU9OX0JJTkFSWV9IQVNIIDAKKyNkZWZpbmUgT1BUSU9OX0NF UlRfSEFTSCAgIDEKKwogLyoKICAqIFRoaXMgc3RydWN0dXJlIGlzIGV4dHJhY3RlZCBmcm9tIHNj cmlwdHMvc2lnbi1maWxlLmMgaW4gdGhlIGxpbnV4IGtlcm5lbAogICogc291cmNlLiBJdCB3YXMg bGljZW5zZWQgYXMgTEdQTHYyLjErLCB3aGljaCBpcyBHUEx2MysgY29tcGF0aWJsZS4KQEAgLTEy Niw2ICsxMjksMTMgQEAgc3RhdGljIGdydWJfcGtzX3QgKnBrc19rZXlzdG9yZTsKIC8qIEFwcGVu ZGVkIHNpZ25hdHVyZSBzaXplLiAqLwogc3RhdGljIGdydWJfc2l6ZV90IGFwcGVuZF9zaWdfbGVu ID0gMDsKIAorc3RhdGljIGNvbnN0IHN0cnVjdCBncnViX2FyZ19vcHRpb24gb3B0aW9uc1tdID0K K3sKKyAgeyJiaW5hcnktaGFzaCIsICdiJywgMCwgTl8oImhhc2ggZmlsZSBvZiB0aGUgYmluYXJ5 LiIpLCAwLCBBUkdfVFlQRV9QQVRITkFNRX0sCisgIHsiY2VydC1oYXNoIiwgJ2MnLCAxLCBOXygi aGFzaCBmaWxlIG9mIHRoZSBjZXJ0aWZpY2F0ZS4iKSwgMCwgQVJHX1RZUEVfUEFUSE5BTUV9LAor ICB7MCwgMCwgMCwgMCwgMCwgMH0KK307CisKIHN0YXRpYyBncnViX3NzaXplX3QKIHBzZXVkb19y ZWFkIChzdHJ1Y3QgZ3J1Yl9maWxlICpmaWxlLCBjaGFyICpidWYsIGdydWJfc2l6ZV90IGxlbikK IHsKQEAgLTU0Niw2ICs1NTYsNjkgQEAgcmVtb3ZlX2NlcnRfZnJvbV9kYiAoY29uc3QgZ3J1Yl91 aW50OF90ICpkYXRhLCBjb25zdCBncnViX3NpemVfdCBkYXRhX3NpemUpCiAgIHJldHVybiByYzsK IH0KIAorc3RhdGljIGJvb2wKK2NlcnRfZmluZ2VycHJpbnRfbWF0Y2ggKGNvbnN0IGdydWJfdWlu dDhfdCAqaGFzaF9kYXRhLCBjb25zdCBncnViX3NpemVfdCBoYXNoX2RhdGFfc2l6ZSwKKyAgICAg ICAgICAgICAgICAgICAgICAgIGNvbnN0IGdydWJfeDUwOV9jZXJ0X3QgKmNlcnQpCit7CisgIGdy dWJfaW50MzJfdCB0eXBlOworCisgIGlmIChoYXNoX2RhdGFfc2l6ZSA9PSBTSEEyNTZfSEFTSF9T SVpFKQorICAgIHR5cGUgPSBHUlVCX0ZJTkdFUlBSSU5UX1NIQTI1NjsKKyAgZWxzZSBpZiAoaGFz aF9kYXRhX3NpemUgPT0gU0hBMzg0X0hBU0hfU0laRSkKKyAgICB0eXBlID0gR1JVQl9GSU5HRVJQ UklOVF9TSEEzODQ7CisgIGVsc2UgaWYgKGhhc2hfZGF0YV9zaXplID09IFNIQTUxMl9IQVNIX1NJ WkUpCisgICAgdHlwZSA9IEdSVUJfRklOR0VSUFJJTlRfU0hBNTEyOworICBlbHNlCisgICAgewor ICAgICAgZ3J1Yl9kcHJpbnRmICgiYXBwZW5kZWRzaWciLCAidW5zdXBwb3J0ZWQgZmluZ2VycHJp bnQgaGFzaCB0eXBlICIKKyAgICAgICAgICAgICAgICAgICAgIiglIiBQUkl1R1JVQl9TSVpFICIp IFxuIiwgaGFzaF9kYXRhX3NpemUpOworICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICBp ZiAoZ3J1Yl9tZW1jbXAgKGNlcnQtPmZpbmdlcnByaW50W3R5cGVdLCBoYXNoX2RhdGEsIGhhc2hf ZGF0YV9zaXplKSA9PSAwKQorICAgIHJldHVybiB0cnVlOworCisgIHJldHVybiBmYWxzZTsKK30K Kworc3RhdGljIHZvaWQKK3JlbW92ZV9oYXNoX2Zyb21fZGIgKGNvbnN0IGdydWJfdWludDhfdCAq aGFzaF9kYXRhLCBjb25zdCBncnViX3NpemVfdCBoYXNoX2RhdGFfc2l6ZSwKKyAgICAgICAgICAg ICAgICAgICAgIGNvbnN0IGJvb2wgYmluX2hhc2gpCit7CisgIGdydWJfdWludDMyX3QgaTsKKyAg Z3J1Yl94NTA5X2NlcnRfdCAqY2VydDsKKworICBpZiAoYmluX2hhc2ggPT0gdHJ1ZSkKKyAgICB7 CisgICAgICBmb3IgKGkgPSAwOyBpIDwgZGIuaGFzaF9lbnRyaWVzOyBpKyspCisgICAgICAgIHsK KyAgICAgICAgICBpZiAoZGIuaGFzaGVzW2ldID09IE5VTEwpCisgICAgICAgICAgICBjb250aW51 ZTsKKworICAgICAgICAgIGlmIChncnViX21lbWNtcCAoZGIuaGFzaGVzW2ldLCBoYXNoX2RhdGEs IGhhc2hfZGF0YV9zaXplKSA9PSAwKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICBncnVi X2RwcmludGYgKCJhcHBlbmRlZHNpZyIsICJyZW1vdmVkIGRpc3RydXN0ZWQgaGFzaCAlMDJ4JTAy eCUwMnglMDJ4Li4gZnJvbSB0aGUgZGIgbGlzdFxuIiwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICBkYi5oYXNoZXNbaV1bMF0sIGRiLmhhc2hlc1tpXVsxXSwgZGIuaGFzaGVzW2ldWzJdLCBk Yi5oYXNoZXNbaV1bM10pOworICAgICAgICAgICAgICBncnViX2ZyZWUgKGRiLmhhc2hlc1tpXSk7 CisgICAgICAgICAgICAgIGRiLmhhc2hlc1tpXSA9IE5VTEw7CisgICAgICAgICAgICAgIGRiLmhh c2hfc2l6ZXNbaV0gPSAwOworICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAg ICAgICAgfQorICAgIH0KKyAgZWxzZQorICAgIHsKKyAgICAgIGZvciAoY2VydCA9IGRiLmNlcnRz OyBjZXJ0ICE9IE5VTEw7IGNlcnQgPSBjZXJ0LT5uZXh0KQorICAgICAgICB7CisgICAgICAgICAg aWYgKGNlcnRfZmluZ2VycHJpbnRfbWF0Y2ggKGhhc2hfZGF0YSwgaGFzaF9kYXRhX3NpemUsIGNl cnQpID09IHRydWUpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgIF9yZW1vdmVfY2VydF9m cm9tX2RiIChjZXJ0KTsKKyAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAg ICAgIH0KKyAgICB9Cit9CisKIHN0YXRpYyBncnViX2Vycl90CiBmaWxlX3JlYWRfd2hvbGUgKGdy dWJfZmlsZV90IGZpbGUsIGdydWJfdWludDhfdCAqKmJ1ZiwgZ3J1Yl9zaXplX3QgKmxlbikKIHsK QEAgLTEwMTAsNiArMTA4MywxOTIgQEAgZ3J1Yl9jbWRfbGlzdF9kYiAoZ3J1Yl9jb21tYW5kX3Qg Y21kIF9fYXR0cmlidXRlX18gKCh1bnVzZWQpKSwgaW50IGFyZ2MgX19hdHRyaWIKICAgcmV0dXJu IEdSVUJfRVJSX05PTkU7CiB9CiAKK3N0YXRpYyBncnViX2Vycl90CitncnViX2NtZF9saXN0X2Ri eCAoZ3J1Yl9jb21tYW5kX3QgY21kIF9fYXR0cmlidXRlX18oKHVudXNlZCkpLAorICAgICAgICAg ICAgICAgICAgIGludCBhcmdjIF9fYXR0cmlidXRlX18oKHVudXNlZCkpLCBjaGFyICoqYXJncyBf X2F0dHJpYnV0ZV9fKCh1bnVzZWQpKSkKK3sKKyAgc3RydWN0IHg1MDlfY2VydGlmaWNhdGUgKmNl cnQ7CisgIGdydWJfdWludDMyX3QgaSwgY2VydF9udW0gPSAxOworCisgIGlmIChhcHBlbmRfa2V5 X21nbXQgPT0gZmFsc2UpCisgICAgcmV0dXJuIGdydWJfZXJyb3IgKEdSVUJfRVJSX0FDQ0VTU19E RU5JRUQsCisgICAgICAgICAgICAgICAgICAgICAgICJhcHBlbmRfbGlzdF9kYnggY29tbWFuZCBp cyB1bnN1cHBvcnRlZCBpbiBzdGF0aWMga2V5IG1vZGUiKTsKKworICBmb3IgKGNlcnQgPSBkYngu Y2VydHM7IGNlcnQgIT0gTlVMTDsgY2VydCA9IGNlcnQtPm5leHQsIGNlcnRfbnVtKyspCisgICAg cHJpbnRfY2VydGlmaWNhdGUgKGNlcnQsIGNlcnRfbnVtKTsKKworICBmb3IgKGkgPSAwOyBpIDwg ZGJ4Lmhhc2hfZW50cmllczsgaSsrKQorICAgIHsKKyAgICAgIGlmIChkYnguaGFzaGVzW2ldICE9 IE5VTEwpCisgICAgICAgIHsKKyAgICAgICAgICBncnViX3ByaW50ZiAoIlxuQ2VydGlmaWNhdGUv QmluYXJ5IGhhc2g6ICV1XG4iLCBpICsgMSk7CisgICAgICAgICAgZ3J1Yl9wcmludGYgKCIgICAg SGFzaDogc2hhJSIgUFJJdUdSVUJfU0laRSAiXG4gICAgICAgICAiLCBkYnguaGFzaF9zaXplc1tp XSAqIDgpOworICAgICAgICAgIGhleGR1bXBfY29sb24gKGRieC5oYXNoZXNbaV0sIGRieC5oYXNo X3NpemVzW2ldKTsKKyAgICAgICAgfQorICAgIH0KKworICByZXR1cm4gR1JVQl9FUlJfTk9ORTsK K30KKworLyoKKyAqIFJlbW92ZSB0aGUgdHJ1c3RlZCBiaW5hcnkgaGFzaCBmcm9tIHRoZSBkYngg bGlzdCBpZiBwcmVzZW50LiBBbmQgYWRkIHRoZW0gdG8KKyAqIHRoZSBkYiBsaXN0IGlmIGl0IGlz IG5vdCBhbHJlYWR5IHByZXNlbnQuCisgKgorICogTm90ZTogV2hlbiBzaWduYXR1cmUgdmVyaWZp Y2F0aW9uIGlzIGVuYWJsZWQsIHRoaXMgY29tbWFuZCBvbmx5IGFjY2VwdHMgdGhlCisgKiBiaW5h cnkgaGFzaCBmaWxlIHRoYXQgaXMgc2lnbmVkIHdpdGggYW4gYXBwZW5kZWQgc2lnbmF0dXJlLiBU aGUgc2lnbmF0dXJlIGlzCisgKiB2ZXJpZmllZCBieSB0aGUgYXBwZW5kZWRzaWcgbW9kdWxlLiBJ ZiB2ZXJpZmljYXRpb24gc3VjY2VlZHMsIHRoZSBiaW5hcnkgaGFzaAorICogaXMgYWRkZWQgdG8g dGhlIGRiIGxpc3QuIE90aGVyd2lzZSwgYW4gZXJyb3IgaXMgcG9zdGVkIGFuZCB0aGUgYmluYXJ5 IGhhc2ggaXMKKyAqIG5vdCBhZGRlZC4KKyAqIFdoZW4gc2lnbmF0dXJlIHZlcmlmaWNhdGlvbiBp cyBkaXNhYmxlZCwgaXQgYWNjZXB0cyB0aGUgYmluYXJ5IGhhc2ggZmlsZQorICogd2l0aG91dCBh biBhcHBlbmRlZCBzaWduYXR1cmUgYW5kIGFkZHMgaXQgdG8gdGhlIGRiIGxpc3QuCisgKgorICog QWxzbywgbm90ZSB0aGF0IHRoZSBhZGRpbmcgb2YgdGhlIHRydXN0ZWQgYmluYXJ5IGhhc2ggdXNp bmcgdGhpcyBjb21tYW5kIGRvZXMKKyAqIG5vdCBwZXJzaXN0IGFjcm9zcyByZWJvb3RzLgorICov CitzdGF0aWMgZ3J1Yl9lcnJfdAorZ3J1Yl9jbWRfYWRkX2RiX2hhc2ggKGdydWJfY29tbWFuZF90 IGNtZCBfX2F0dHJpYnV0ZV9fKCh1bnVzZWQpKSwgaW50IGFyZ2MsIGNoYXIqKmFyZ3MpCit7Cisg IGdydWJfZXJyX3QgcmM7CisgIGdydWJfZmlsZV90IGhhc2hfZmlsZTsKKyAgZ3J1Yl91aW50OF90 ICpoYXNoX2RhdGEgPSBOVUxMOworICBncnViX3NpemVfdCBoYXNoX2RhdGFfc2l6ZSA9IDA7CisK KyAgaWYgKGFwcGVuZF9rZXlfbWdtdCA9PSBmYWxzZSkKKyAgICByZXR1cm4gZ3J1Yl9lcnJvciAo R1JVQl9FUlJfQUNDRVNTX0RFTklFRCwKKyAgICAgICAgICAgICAgICAgICAgICAgImFwcGVuZF9h ZGRfZGJfaGFzaCBjb21tYW5kIGlzIHVuc3VwcG9ydGVkIGluIHN0YXRpYyBrZXkgbW9kZSIpOwor CisgIGlmIChhcmdjICE9IDEpCisgICAgcmV0dXJuIGdydWJfZXJyb3IgKEdSVUJfRVJSX0JBRF9B UkdVTUVOVCwKKyAgICAgICAgICAgICAgICAgICAgICAgImEgdHJ1c3RlZCBiaW5hcnkgaGFzaCBm aWxlIGlzIGV4cGVjdGVkIGluIGJpbmFyeSBmb3JtYXRcbiIKKyAgICAgICAgICAgICAgICAgICAg ICAgIkV4YW1wbGU6XG5cdGFwcGVuZF9hZGRfZGJfaGFzaCA8QklOQVJZIEhBU0ggRklMRT5cbiIp OworCisgIGlmICghZ3J1Yl9zdHJsZW4gKGFyZ3NbMF0pKQorICAgIHJldHVybiBncnViX2Vycm9y IChHUlVCX0VSUl9CQURfRklMRU5BTUUsICJtaXNzaW5nIHRydXN0ZWQgYmluYXJ5IGhhc2ggZmls ZSIpOworCisgIGhhc2hfZmlsZSA9IGdydWJfZmlsZV9vcGVuIChhcmdzWzBdLCBHUlVCX0ZJTEVf VFlQRV9IQVNIX1RSVVNUIHwgR1JVQl9GSUxFX1RZUEVfTk9fREVDT01QUkVTUyk7CisgIGlmICho YXNoX2ZpbGUgPT0gTlVMTCkKKyAgICByZXR1cm4gZ3J1Yl9lcnJvciAoR1JVQl9FUlJfRklMRV9O T1RfRk9VTkQsICJ1bmFibGUgdG8gb3BlbiAlcyBmaWxlIiwgYXJnc1swXSk7CisKKyAgcmMgPSBm aWxlX3JlYWRfd2hvbGUgKGhhc2hfZmlsZSwgJmhhc2hfZGF0YSwgJmhhc2hfZGF0YV9zaXplKTsK KyAgZ3J1Yl9maWxlX2Nsb3NlIChoYXNoX2ZpbGUpOworICBpZiAocmMgIT0gR1JVQl9FUlJfTk9O RSkKKyAgICByZXR1cm4gcmM7CisKKyAgLyoKKyAgICogSWYgc2lnbmF0dXJlIHZlcmlmaWNhdGlv biBpcyBlbmFibGVkIChjaGVja19zaWdzIGlzIHNldCB0byB0cnVlKSwgb2J0YWluCisgICAqIHRo ZSBhY3R1YWwgaGFzaCBkYXRhIHNpemUgYnkgc3VidHJhY3RpbmcgdGhlIGFwcGVuZGVkIHNpZ25h dHVyZSBzaXplIGZyb20KKyAgICogdGhlIGhhc2ggZGF0YSBzaXplIGJlY2F1c2UgdGhlIGhhc2gg aGFzIGFuIGFwcGVuZGVkIHNpZ25hdHVyZSwgYW5kIHRoaXMKKyAgICogYWN0dWFsIGhhc2ggZGF0 YSBzaXplIGlzIHVzZWQgdG8gZ2V0IHRoZSBoYXNoIGRhdGEuCisgICAqLworICBpZiAoY2hlY2tf c2lncyA9PSB0cnVlKQorICAgIGhhc2hfZGF0YV9zaXplIC09IGFwcGVuZF9zaWdfbGVuOworCisg IGdydWJfZHByaW50ZiAoImFwcGVuZGVkc2lnIiwKKyAgICAgICAgICAgICAgICAiYWRkaW5nIGEg dHJ1c3RlZCBiaW5hcnkgaGFzaCAlMDJ4JTAyeCUwMnglMDJ4Li4uIHdpdGggc2l6ZSBvZiAlIiBQ Ukl1R1JVQl9TSVpFICJcbiIsCisgICAgICAgICAgICAgICAgaGFzaF9kYXRhWzBdLCBoYXNoX2Rh dGFbMV0sIGhhc2hfZGF0YVsyXSwgaGFzaF9kYXRhWzNdLCBoYXNoX2RhdGFfc2l6ZSk7CisKKyAg LyogT25seSBhY2NlcHQgU0hBMjU2LCBTSEEzODQgYW5kIFNIQTUxMiBiaW5hcnkgaGFzaCAqLwor ICBpZiAoaGFzaF9kYXRhX3NpemUgIT0gU0hBMjU2X0hBU0hfU0laRSAmJiBoYXNoX2RhdGFfc2l6 ZSAhPSBTSEEzODRfSEFTSF9TSVpFICYmCisgICAgICBoYXNoX2RhdGFfc2l6ZSAhPSBTSEE1MTJf SEFTSF9TSVpFKQorICAgIHsKKyAgICAgIGdydWJfZnJlZSAoaGFzaF9kYXRhKTsKKyAgICAgIHJl dHVybiBncnViX2Vycm9yIChHUlVCX0VSUl9CQURfU0lHTkFUVVJFLCAidW5hY2NlcHRhYmxlIHRy dXN0ZWQgYmluYXJ5IGhhc2ggdHlwZSIpOworICAgIH0KKworICByYyA9IGFkZF9oYXNoIChoYXNo X2RhdGEsIGhhc2hfZGF0YV9zaXplLCAmZGIpOworICBncnViX2ZyZWUgKGhhc2hfZGF0YSk7CisK KyAgcmV0dXJuIHJjOworfQorCisvKgorICogUmVtb3ZlIHRoZSBkaXN0cnVzdGVkIGJpbmFyeS9j ZXJ0aWZpY2F0ZSBoYXNoIGZyb20gdGhlIGRiIGxpc3QgaWYgcHJlc2VudC4KKyAqIEFuZCBhZGQg dGhlbSB0byB0aGUgZGJ4IGxpc3QgaWYgaXQgaXMgbm90IGFscmVhZHkgcHJlc2VudC4KKyAqCisg KiBOb3RlOiBXaGVuIHNpZ25hdHVyZSB2ZXJpZmljYXRpb24gaXMgZW5hYmxlZCwgdGhpcyBjb21t YW5kIG9ubHkgYWNjZXB0cyB0aGUKKyAqIGJpbmFyeS9jZXJ0aWZpY2F0ZSBoYXNoIGZpbGUgdGhh dCBpcyBzaWduZWQgd2l0aCBhbiBhcHBlbmRlZCBzaWduYXR1cmUuIFRoZQorICogc2lnbmF0dXJl IGlzIHZlcmlmaWVkIGJ5IHRoZSBhcHBlbmRlZHNpZyBtb2R1bGUuIElmIHZlcmlmaWNhdGlvbiBz dWNjZWVkcywKKyAqIHRoZSBiaW5hcnkvY2VydGlmaWNhdGUgaGFzaCBpcyBhZGRlZCB0byB0aGUg ZGJ4IGxpc3QuIE90aGVyd2lzZSwgYW4gZXJyb3IgaXMKKyAqIHBvc3RlZCBhbmQgdGhlIGJpbmFy eS9jZXJ0aWZpY2F0ZSBoYXNoIGlzIG5vdCBhZGRlZC4KKyAqIFdoZW4gc2lnbmF0dXJlIHZlcmlm aWNhdGlvbiBpcyBkaXNhYmxlZCwgaXQgYWNjZXB0cyB0aGUgYmluYXJ5L2NlcnRpZmljYXRlCisg KiBoYXNoIGZpbGUgd2l0aG91dCBhbiBhcHBlbmRlZCBzaWduYXR1cmUgYW5kIGFkZHMgaXQgdG8g dGhlIGRieCBsaXN0LgorICoKKyAqIEFsc28sIG5vdGUgdGhhdCB0aGUgYWRkaW5nIG9mIHRoZSBk aXN0cnVzdGVkIGJpbmFyeS9jZXJ0aWZpY2F0ZSBoYXNoIHVzaW5nCisgKiB0aGlzIGNvbW1hbmQg ZG9lcyBub3QgcGVyc2lzdCBhY3Jvc3MgcmVib290cy4KKyAqLworc3RhdGljIGdydWJfZXJyX3QK K2dydWJfY21kX2FkZF9kYnhfaGFzaCAoZ3J1Yl9leHRjbWRfY29udGV4dF90IGN0eHQsIGludCBh cmdjIF9fYXR0cmlidXRlX18gKCh1bnVzZWQpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgY2hh ciAqKmFyZ3MgX19hdHRyaWJ1dGVfXyAoKHVudXNlZCkpKQoreworICBncnViX2Vycl90IHJjOwor ICBncnViX2ZpbGVfdCBoYXNoX2ZpbGU7CisgIGdydWJfdWludDhfdCAqaGFzaF9kYXRhID0gTlVM TDsKKyAgZ3J1Yl9zaXplX3QgaGFzaF9kYXRhX3NpemUgPSAwOworICBjaGFyICpmaWxlX3BhdGg7 CisKKyAgaWYgKGFwcGVuZF9rZXlfbWdtdCA9PSBmYWxzZSkKKyAgICByZXR1cm4gZ3J1Yl9lcnJv ciAoR1JVQl9FUlJfQUNDRVNTX0RFTklFRCwKKyAgICAgICAgICAgICAgICAgICAgICAgImFwcGVu ZF9hZGRfZGJ4X2hhc2ggY29tbWFuZCBpcyB1bnN1cHBvcnRlZCBpbiBzdGF0aWMga2V5IG1vZGUi KTsKKworICBpZiAoIWN0eHQtPnN0YXRlW09QVElPTl9CSU5BUllfSEFTSF0uc2V0ICYmICFjdHh0 LT5zdGF0ZVtPUFRJT05fQ0VSVF9IQVNIXS5zZXQpCisgICAgcmV0dXJuIGdydWJfZXJyb3IgKEdS VUJfRVJSX0JBRF9BUkdVTUVOVCwKKyAgICAgICAgICAgICAgICAgICAgICAgImEgZGlzdHJ1c3Rl ZCBjZXJ0aWZpY2F0ZS9iaW5hcnkgaGFzaCBmaWxlIGlzIGV4cGVjdGVkIGluIGJpbmFyeSBmb3Jt YXRcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgIkV4YW1wbGU6XG5cdGFwcGVuZF9hZGRfZGJ4 X2hhc2ggW29wdGlvbl0gPEZJTEU+XG4iCisgICAgICAgICAgICAgICAgICAgICAgICJvcHRpb246 XG5bLWJ8LS1iaW5hcnktaGFzaF0gRklMRSBbQklOQVJZIEhBU0ggRklMRV1cbiIKKyAgICAgICAg ICAgICAgICAgICAgICAgIlstY3wtLWNlcnQtaGFzaF0gRklMRSBbQ0VSVEZJQ0FURSBIQVNIIEZJ TEVdXG4iKTsKKworICBpZiAoY3R4dC0+c3RhdGVbT1BUSU9OX0JJTkFSWV9IQVNIXS5hcmcgPT0g TlVMTCAmJiBjdHh0LT5zdGF0ZVtPUFRJT05fQ0VSVF9IQVNIXS5hcmcgPT0gTlVMTCkKKyAgICBy ZXR1cm4gZ3J1Yl9lcnJvciAoR1JVQl9FUlJfQkFEX0ZJTEVOQU1FLCAibWlzc2luZyBkaXN0cnVz dGVkIGNlcnRpZmljYXRlL2JpbmFyeSBoYXNoIGZpbGUiKTsKKworICBpZiAoY3R4dC0+c3RhdGVb T1BUSU9OX0JJTkFSWV9IQVNIXS5hcmcgIT0gTlVMTCkKKyAgICBmaWxlX3BhdGggPSBjdHh0LT5z dGF0ZVtPUFRJT05fQklOQVJZX0hBU0hdLmFyZzsKKyAgZWxzZQorICAgIGZpbGVfcGF0aCA9IGN0 eHQtPnN0YXRlW09QVElPTl9DRVJUX0hBU0hdLmFyZzsKKworICBoYXNoX2ZpbGUgPSBncnViX2Zp bGVfb3BlbiAoZmlsZV9wYXRoLCBHUlVCX0ZJTEVfVFlQRV9IQVNIX1RSVVNUIHwgR1JVQl9GSUxF X1RZUEVfTk9fREVDT01QUkVTUyk7CisgIGlmIChoYXNoX2ZpbGUgPT0gTlVMTCkKKyAgICByZXR1 cm4gZ3J1Yl9lcnJvciAoR1JVQl9FUlJfRklMRV9OT1RfRk9VTkQsICJ1bmFibGUgdG8gb3BlbiAl cyBmaWxlIiwgZmlsZV9wYXRoKTsKKworICByYyA9IGZpbGVfcmVhZF93aG9sZSAoaGFzaF9maWxl LCAmaGFzaF9kYXRhLCAmaGFzaF9kYXRhX3NpemUpOworICBncnViX2ZpbGVfY2xvc2UgKGhhc2hf ZmlsZSk7CisgIGlmIChyYyAhPSBHUlVCX0VSUl9OT05FKQorICAgIHJldHVybiByYzsKKworICAv KgorICAgKiBJZiBzaWduYXR1cmUgdmVyaWZpY2F0aW9uIGlzIGVuYWJsZWQgKGNoZWNrX3NpZ3Mg aXMgc2V0IHRvIHRydWUpLCBvYnRhaW4KKyAgICogdGhlIGFjdHVhbCBoYXNoIGRhdGEgc2l6ZSBi eSBzdWJ0cmFjdGluZyB0aGUgYXBwZW5kZWQgc2lnbmF0dXJlIHNpemUgZnJvbQorICAgKiB0aGUg aGFzaCBkYXRhIHNpemUgYmVjYXVzZSB0aGUgaGFzaCBoYXMgYW4gYXBwZW5kZWQgc2lnbmF0dXJl LCBhbmQgdGhpcworICAgKiBhY3R1YWwgaGFzaCBkYXRhIHNpemUgaXMgdXNlZCB0byBnZXQgdGhl IGhhc2ggZGF0YS4KKyAgICovCisgIGlmIChjaGVja19zaWdzID09IHRydWUpCisgICAgaGFzaF9k YXRhX3NpemUgLT0gYXBwZW5kX3NpZ19sZW47CisKKyAgZ3J1Yl9kcHJpbnRmICgiYXBwZW5kZWRz aWciLAorICAgICAgICAgICAgICAgICJhZGRpbmcgYSBkaXN0cnVzdGVkIGNlcnRpZmljYXRlL2Jp bmFyeSBoYXNoICUwMnglMDJ4JTAyeCUwMnguLi4iCisgICAgICAgICAgICAgICAgIiB3aXRoIHNp emUgb2YgJSIgUFJJdUdSVUJfU0laRSAiXG4iLCBoYXNoX2RhdGFbMF0sIGhhc2hfZGF0YVsxXSwK KyAgICAgICAgICAgICAgICBoYXNoX2RhdGFbMl0sIGhhc2hfZGF0YVszXSwgaGFzaF9kYXRhX3Np emUpOworCisgIGlmIChjdHh0LT5zdGF0ZVtPUFRJT05fQklOQVJZX0hBU0hdLnNldCB8fCBjdHh0 LT5zdGF0ZVtPUFRJT05fQ0VSVF9IQVNIXS5zZXQpCisgICAgeworICAgICAgLyogT25seSBhY2Nl cHQgU0hBMjU2LCBTSEEzODQgYW5kIFNIQTUxMiBjZXJ0aWZpY2F0ZS9iaW5hcnkgaGFzaCAqLwor ICAgICAgaWYgKGhhc2hfZGF0YV9zaXplICE9IFNIQTI1Nl9IQVNIX1NJWkUgJiYgaGFzaF9kYXRh X3NpemUgIT0gU0hBMzg0X0hBU0hfU0laRSAmJgorICAgICAgICAgIGhhc2hfZGF0YV9zaXplICE9 IFNIQTUxMl9IQVNIX1NJWkUpCisgICAgICAgIHsKKyAgICAgICAgICBncnViX2ZyZWUgKGhhc2hf ZGF0YSk7CisgICAgICAgICAgcmV0dXJuIGdydWJfZXJyb3IgKEdSVUJfRVJSX0JBRF9TSUdOQVRV UkUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ1bmFjY2VwdGFibGUgZGlzdHJ1c3Rl ZCBjZXJ0aWZpY2F0ZS9iaW5hcnkgaGFzaCB0eXBlIik7CisgICAgICAgIH0KKyAgICB9CisKKyAg LyogUmVtb3ZlIGRpc3RydXN0ZWQgYmluYXJ5IGhhc2gvY2VydGlmaWNhdGUgZnJvbSB0aGUgZGIg bGlzdCBpZiBwcmVzZW50LiAqLworICByZW1vdmVfaGFzaF9mcm9tX2RiIChoYXNoX2RhdGEsIGhh c2hfZGF0YV9zaXplLAorICAgICAgICAgICAgICAgICAgICAgICAoY3R4dC0+c3RhdGVbT1BUSU9O X0JJTkFSWV9IQVNIXS5zZXQpID8gdHJ1ZSA6IGZhbHNlKTsKKyAgcmMgPSBhZGRfaGFzaCAoaGFz aF9kYXRhLCBoYXNoX2RhdGFfc2l6ZSwgJmRieCk7CisgIGdydWJfZnJlZSAoaGFzaF9kYXRhKTsK KworICByZXR1cm4gcmM7Cit9CisKIC8qIEFkZCB0aGUgWC41MDkgY2VydGlmaWNhdGVzL2JpbmFy eSBoYXNoIHRvIHRoZSBkYiBsaXN0IGZyb20gUEtTLiAqLwogc3RhdGljIGdydWJfZXJyX3QKIGxv YWRfcGtzMmRiICh2b2lkKQpAQCAtMTI5Miw2ICsxNTUxLDExIEBAIGFwcGVuZGVkc2lnX2luaXQg KGdydWJfZmlsZV90IGlvIF9fYXR0cmlidXRlX18gKCh1bnVzZWQpKSwgZW51bSBncnViX2ZpbGVf dHlwZSB0CiAgICAgICAgICAqIHZlcmlmaWVyLCBidXQgd2UgbGFjayB0aGUgaHVicmlzIHJlcXVp cmVkIHRvIHRha2UgdGhpcyBvbi4gSW5zdGVhZCwKICAgICAgICAgICogcmVxdWlyZSB0aGF0IGl0 IGhhdmUgYW4gYXBwZW5kZWQgc2lnbmF0dXJlLgogICAgICAgICAgKi8KKyAgICAgIGNhc2UgR1JV Ql9GSUxFX1RZUEVfSEFTSF9UUlVTVDoKKyAgICAgICAgLyoKKyAgICAgICAgICogVGhpcyBpcyBh IGNlcnRpZmljYXRlL2JpbmFyeSBoYXNoIHRvIGFkZCB0byBkYi9kYnguIFRoaXMgbmVlZHMgdG8g YmUKKyAgICAgICAgICogdmVyaWZpZWQgb3IgYmxvY2tlZC4KKyAgICAgICAgICovCiAgICAgICBj YXNlIEdSVUJfRklMRV9UWVBFX0xJTlVYX0tFUk5FTDoKICAgICAgIGNhc2UgR1JVQl9GSUxFX1RZ UEVfR1JVQl9NT0RVTEU6CiAgICAgICAgIC8qCkBAIC0xMzMzLDYgKzE1OTcsOCBAQCBzdHJ1Y3Qg Z3J1Yl9maWxlX3ZlcmlmaWVyIGdydWJfYXBwZW5kZWRzaWdfdmVyaWZpZXIgPSB7CiB9OwogCiBz dGF0aWMgZ3J1Yl9jb21tYW5kX3QgY21kX3ZlcmlmeSwgY21kX2xpc3RfZGIsIGNtZF9kYnhfY2Vy dCwgY21kX2RiX2NlcnQ7CitzdGF0aWMgZ3J1Yl9jb21tYW5kX3QgY21kX2xpc3RfZGJ4LCBjbWRf ZGJfaGFzaDsKK3N0YXRpYyBncnViX2V4dGNtZF90IGNtZF9kYnhfaGFzaDsKIAogR1JVQl9NT0Rf SU5JVCAoYXBwZW5kZWRzaWcpCiB7CkBAIC0xNDEyLDYgKzE2NzgsMTYgQEAgR1JVQl9NT0RfSU5J VCAoYXBwZW5kZWRzaWcpCiAgIGNtZF9kYnhfY2VydCA9IGdydWJfcmVnaXN0ZXJfY29tbWFuZCAo ImFwcGVuZF9hZGRfZGJ4X2NlcnQiLCBncnViX2NtZF9kYnhfY2VydCwgTl8oIjxYNTA5X0NFUlRJ RklDQVRFPiIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5fKCJB ZGQgZGlzdHJ1c3RlZCBYNTA5X0NFUlRJRklDQVRFIHRvIHRoZSBkYnggbGlzdCIpKTsKIAorICBj bWRfbGlzdF9kYnggPSBncnViX3JlZ2lzdGVyX2NvbW1hbmQgKCJhcHBlbmRfbGlzdF9kYngiLCBn cnViX2NtZF9saXN0X2RieCwgMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBOXygiU2hvdyB0aGUgbGlzdCBvZiBkaXN0cnVzdGVkIGNlcnRpZmljYXRlcyBhbmQiCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiBjZXJ0aWZpY2F0ZS9iaW5h cnkgaGFzaGVzIGZyb20gdGhlIGRieCBsaXN0IikpOworICBjbWRfZGJfaGFzaCA9IGdydWJfcmVn aXN0ZXJfY29tbWFuZCAoImFwcGVuZF9hZGRfZGJfaGFzaCIsIGdydWJfY21kX2FkZF9kYl9oYXNo LCBOXygiQklOQVJZIEhBU0ggRklMRSIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgTl8oIkFkZCB0cnVzdGVkIEJJTkFSWSBIQVNIIHRvIHRoZSBkYiBsaXN0LiIpKTsK KyAgY21kX2RieF9oYXNoID0gZ3J1Yl9yZWdpc3Rlcl9leHRjbWQgKCJhcHBlbmRfYWRkX2RieF9o YXNoIiwgZ3J1Yl9jbWRfYWRkX2RieF9oYXNoLCAwLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgTl8oIlstYnwtLWJpbmFyeS1oYXNoXSBGSUxFIFtCSU5BUlkgSEFTSCBG SUxFXVxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlstY3wtLWNl cnQtaGFzaF0gRklMRSBbQ0VSVEZJQ0FURSBIQVNIIEZJTEVdIiksCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBOXygiQWRkIGRpc3RydXN0ZWQgQ0VSVEZJQ0FURS9CSU5B UlkgSEFTSCB0byB0aGUgZGJ4IGxpc3QuIiksIG9wdGlvbnMpOworCiAgIGdydWJfdmVyaWZpZXJf cmVnaXN0ZXIgKCZncnViX2FwcGVuZGVkc2lnX3ZlcmlmaWVyKTsKICAgZ3J1Yl9kbF9zZXRfcGVy c2lzdGVudCAobW9kKTsKIH0KQEAgLTE0MzQsNCArMTcxMCw3IEBAIEdSVUJfTU9EX0ZJTkkgKGFw cGVuZGVkc2lnKQogICBncnViX3VucmVnaXN0ZXJfY29tbWFuZCAoY21kX2xpc3RfZGIpOwogICBn cnViX3VucmVnaXN0ZXJfY29tbWFuZCAoY21kX2RiX2NlcnQpOwogICBncnViX3VucmVnaXN0ZXJf Y29tbWFuZCAoY21kX2RieF9jZXJ0KTsKKyAgZ3J1Yl91bnJlZ2lzdGVyX2NvbW1hbmQgKGNtZF9s aXN0X2RieCk7CisgIGdydWJfdW5yZWdpc3Rlcl9jb21tYW5kIChjbWRfZGJfaGFzaCk7CisgIGdy dWJfdW5yZWdpc3Rlcl9leHRjbWQgKGNtZF9kYnhfaGFzaCk7CiB9CmRpZmYgLS1naXQgYS9pbmNs dWRlL2dydWIvZmlsZS5oIGIvaW5jbHVkZS9ncnViL2ZpbGUuaAppbmRleCBkNjc4ZGUwNjMuLjE2 YTRiN2QyNiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9ncnViL2ZpbGUuaAorKysgYi9pbmNsdWRlL2dy dWIvZmlsZS5oCkBAIC0xMTUsNiArMTE1LDggQEAgZW51bSBncnViX2ZpbGVfdHlwZQogICAgIEdS VUJfRklMRV9UWVBFX0hBU0hMSVNULAogICAgIC8qIEZpbGUgaGFzaGVkIGJ5IGhhc2hzdW0uICAq LwogICAgIEdSVUJfRklMRV9UWVBFX1RPX0hBU0gsCisgICAgLyogRmlsZSBob2xkaW5nIGNlcnRp ZmljaWF0ZS9iaW5hcnkgaGFzaCB0byBhZGQgdG8gZGIvZGJ4LiAqLworICAgIEdSVUJfRklMRV9U WVBFX0hBU0hfVFJVU1QsCiAgICAgLyogS2V5Ym9hcmQgbGF5b3V0LiAgKi8KICAgICBHUlVCX0ZJ TEVfVFlQRV9LRVlCT0FSRF9MQVlPVVQsCiAgICAgLyogUGljdHVyZSBmaWxlLiAgKi8KLS0gCjIu NTAuMSAoQXBwbGUgR2l0LTE1NSkKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fXwpHcnViLWRldmVsIG1haWxpbmcgbGlzdApHcnViLWRldmVsQGdudS5vcmcK aHR0cHM6Ly9saXN0cy5nbnUub3JnL21haWxtYW4vbGlzdGluZm8vZ3J1Yi1kZXZlbAo=