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 D2940CCA470 for ; Wed, 1 Oct 2025 09:21:28 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v3t0z-0003u3-J0; Wed, 01 Oct 2025 05:20:49 -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 1v3srQ-0007Jy-FI for grub-devel@gnu.org; Wed, 01 Oct 2025 05:10:56 -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 1v3srJ-0005F2-ES for grub-devel@gnu.org; Wed, 01 Oct 2025 05:10:56 -0400 Received: from pps.filterd (m0360083.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 5911uMpA027163; Wed, 1 Oct 2025 09:10:39 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=uPuGdR WDFNnMZlV79PNX1Jo9uD/vcZqiOX0z/O4XYOE=; b=sAaegT+CHmEqE+DLI73FdM DIYwcah4QrDKS8bo7z/Q1bxcHvai4TY7dkSGxWYB38Gy4aY3y606YkNEbzw7eHQJ n3MfiNA3iUFoX2ZkStdIx9Z1flADAVfhe0hzuoAGz+PZiK3gZ+K3hvKcxQgHdFVA I+mrt6CbX7xdNpzPRRmevStCESrus/b0o6A60bsW52kL3MBb4hs3ZfLIU8oN/3Ch Goh6EwwuC3btGvXwugSMqaP10jzcMJIi4I2QQB0Dg5WRaxIs6mueyM5orHh8QWAv V+Qte4GNWlFoODze68VJzGvtj5kPGCScAeD8F3HZDtoDnT2ksqziA4RpRnVH+B3w == Received: from ppma22.wdc07v.mail.ibm.com (5c.69.3da9.ip4.static.sl-reverse.com [169.61.105.92]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 49e7e7edu2-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 01 Oct 2025 09:10:38 +0000 (GMT) Received: from pps.filterd (ppma22.wdc07v.mail.ibm.com [127.0.0.1]) by ppma22.wdc07v.mail.ibm.com (8.18.1.2/8.18.1.2) with ESMTP id 5917v7Zj003310; Wed, 1 Oct 2025 09:10:37 GMT Received: from smtprelay06.fra02v.mail.ibm.com ([9.218.2.230]) by ppma22.wdc07v.mail.ibm.com (PPS) with ESMTPS id 49etmy03j6-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 01 Oct 2025 09:10:37 +0000 Received: from smtpav02.fra02v.mail.ibm.com (smtpav02.fra02v.mail.ibm.com [10.20.54.101]) by smtprelay06.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 5919AXQG28836136 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 1 Oct 2025 09:10:33 GMT Received: from smtpav02.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 9075D20043; Wed, 1 Oct 2025 09:10:33 +0000 (GMT) Received: from smtpav02.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 027F820040; Wed, 1 Oct 2025 09:10:31 +0000 (GMT) Received: from [9.124.210.197] (unknown [9.124.210.197]) by smtpav02.fra02v.mail.ibm.com (Postfix) with ESMTP; Wed, 1 Oct 2025 09:10:30 +0000 (GMT) Message-ID: Date: Wed, 1 Oct 2025 14:40:30 +0530 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH v13 15/20] appended signatures: GRUB commands to manage the certificates To: Sudhakar Kuppusamy , 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, Daniel Kiper References: <20250930114018.78215-1-sudhakar@linux.ibm.com> <20250930114018.78215-16-sudhakar@linux.ibm.com> Content-Language: en-US From: Sridhar Markonda In-Reply-To: <20250930114018.78215-16-sudhakar@linux.ibm.com> X-TM-AS-GCONF: 00 X-Proofpoint-ORIG-GUID: Rdln8oDrTB2RydHQa9KE_PYrL6DM47Nv X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwOTI3MDAyMCBTYWx0ZWRfXyIf4JorF0v30 zCuNVH6R1LqbrMQLLznEf9fx9UVhBNeTmqFvaePVri2O7e8gmIvwrefGeaABbwWUfyMUriwD369 DWz6P4I5Ek4BbA5YVXO1VLhI3QOFCU/217w5ynqJlPTVx5aLMiwvzi1C1ETnee+oJiugNyj3hO6 ziBr7Y6WCXTGJ9+hHtYzkXKDlEef09sdeAGsXomI8Ax+9LZlvQ4ntdnR0q6QT+I3HpEW+Cd1UvM 1Hxf5D1+yxVpOhlCXC5VjPznsPbfGNPSHhTSvbCnFpX/RhejP7CN56Twdmj58eQAWPzgulJKb5j zMLiv0jraFj36cfhRskkbAbAuWuL9immWtlkcMbDYo6eyAthlTUiCjCCNtPOkNiZWpwNrLsI/tD 4AFQkqh4Mzn2lUA7APWf6GnozNxK7w== X-Proofpoint-GUID: Rdln8oDrTB2RydHQa9KE_PYrL6DM47Nv X-Authority-Analysis: v=2.4 cv=Jvj8bc4C c=1 sm=1 tr=0 ts=68dcf00f cx=c_pps a=5BHTudwdYE3Te8bg5FgnPg==:117 a=5BHTudwdYE3Te8bg5FgnPg==:17 a=IkcTkHD0fZMA:10 a=x6icFKpwvdMA:10 a=JuTF4qcAAAAA:8 a=VnNF1IyMAAAA:8 a=yPCof4ZbAAAA:8 a=I5Zad9kGZx7Ay9XH_J0A:9 a=3ZKOabzyN94A:10 a=QEXdDO2ut3YA:10 a=WlT8qwTXB_Kj6um4hl3b:22 a=cPQSjfK2_nFv0Q5t_7PE:22 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-01_02,2025-09-29_04,2025-03-28_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 lowpriorityscore=0 malwarescore=0 priorityscore=1501 impostorscore=0 suspectscore=0 phishscore=0 bulkscore=0 clxscore=1015 spamscore=0 adultscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.19.0-2509150000 definitions=main-2509270020 Received-SPF: pass client-ip=148.163.156.1; envelope-from=sridharm@linux.ibm.com; helo=mx0a-001b2d01.pphosted.com X-Spam_score_int: -23 X-Spam_score: -2.4 X-Spam_bar: -- X-Spam_report: (-2.4 / 5.0 requ) BAYES_00=-1.9, DKIM_INVALID=0.1, DKIM_SIGNED=0.1, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, 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-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Errors-To: grub-devel-bounces+grub-devel=archiver.kernel.org@gnu.org Sender: grub-devel-bounces+grub-devel=archiver.kernel.org@gnu.org Ck9uIDMwLzA5LzI1IDU6MTAgcG0sIFN1ZGhha2FyIEt1cHB1c2FteSB3cm90ZToKPiBJbnRyb2R1 Y2luZyB0aGUgZm9sbG93aW5nIEdSVUIgY29tbWFuZHMgdG8gbWFuYWdlIHRoZSBjZXJ0aWZpY2F0 ZXMuCj4KPiAgIDEuIGFwcGVuZF9saXN0X2RiOgo+ICAgICAgICBTaG93IHRoZSBsaXN0IG9mIHRy dXN0ZWQgY2VydGlmaWNhdGVzIGZyb20gdGhlIGRiIGxpc3QKPiAgIDIuIGFwcGVuZF9hZGRfZGJf Y2VydDoKPiAgICAgICAgQWRkIHRoZSB0cnVzdGVkIGNlcnRpZmljYXRlIHRvIHRoZSBkYiBsaXN0 Cj4gICAzLiBhcHBlbmRfYWRkX2RieF9jZXJ0Ogo+ICAgICAgICBBZGQgdGhlIGRpc3RydXN0ZWQg Y2VydGlmaWNhdGUgdG8gdGhlIGRieCBsaXN0Cj4gICA0LiBhcHBlbmRfdmVyaWZ5Ogo+ICAgICAg ICBWZXJpZnkgdGhlIHNpZ25lZCBmaWxlIHVzaW5nIGRiIGxpc3QKPgo+IE5vdGUgdGhhdCBpZiBz aWduYXR1cmUgdmVyaWZpY2F0aW9uIChjaGVja19hcHBlbmRlZF9zaWduYXR1cmVzKSBpcyBzZXQg dG8geWVzLAo+IHRoZSBhcHBlbmRfYWRkX2RiX2NlcnQgYW5kIGFwcGVuZF9hZGRfZGJ4X2NlcnQg Y29tbWFuZHMgb25seSBhY2NlcHQgdGhlIGZpbGUKPiDigJhYNTA5X2NlcnRpZmljYXRl4oCZIHRo YXQgaXMgc2lnbmVkIHdpdGggYW4gYXBwZW5kZWQgc2lnbmF0dXJlLgo+Cj4gU2lnbmVkLW9mZi1i eTogRGFuaWVsIEF4dGVucyA8ZGphQGF4dGVucy5uZXQ+Cj4gU2lnbmVkLW9mZi1ieTogU3VkaGFr YXIgS3VwcHVzYW15IDxzdWRoYWthckBsaW51eC5pYm0uY29tPgo+IFJldmlld2VkLWJ5OiBBdm5p c2ggQ2hvdWhhbiA8YXZuaXNoQGxpbnV4LmlibS5jb20+Cj4gUmV2aWV3ZWQtYnk6IERhbmllbCBL aXBlciA8ZGFuaWVsLmtpcGVyQG9yYWNsZS5jb20+Cj4gLS0tCj4gICBncnViLWNvcmUvY29tbWFu ZHMvYXBwZW5kZWRzaWcvYXBwZW5kZWRzaWcuYyB8IDMyMCArKysrKysrKysrKysrKysrKysrCj4g ICAxIGZpbGUgY2hhbmdlZCwgMzIwIGluc2VydGlvbnMoKykKPgo+IGRpZmYgLS1naXQgYS9ncnVi LWNvcmUvY29tbWFuZHMvYXBwZW5kZWRzaWcvYXBwZW5kZWRzaWcuYyBiL2dydWItY29yZS9jb21t YW5kcy9hcHBlbmRlZHNpZy9hcHBlbmRlZHNpZy5jCj4gaW5kZXggYjRiOWU0Y2QzLi5kMDRhYWYx ZTIgMTAwNjQ0Cj4gLS0tIGEvZ3J1Yi1jb3JlL2NvbW1hbmRzL2FwcGVuZGVkc2lnL2FwcGVuZGVk c2lnLmMKPiArKysgYi9ncnViLWNvcmUvY29tbWFuZHMvYXBwZW5kZWRzaWcvYXBwZW5kZWRzaWcu Ywo+IEBAIC0xMjMsNiArMTIzLDkgQEAgc3RhdGljIGJvb2wgYXBwZW5kX2tleV9tZ210ID0gZmFs c2U7Cj4gICAvKiBQbGF0Zm9ybSBLZXlTdG9yZSBkYiBhbmQgZGJ4LiAqLwo+ICAgc3RhdGljIGdy dWJfcGtzX3QgKnBrc19rZXlzdG9yZTsKPiAgIAo+ICsvKiBBcHBlbmRlZCBzaWduYXR1cmUgc2l6 ZS4gKi8KPiArc3RhdGljIGdydWJfc2l6ZV90IGFwcGVuZF9zaWdfbGVuID0gMDsKPiArCj4gICBz dGF0aWMgZ3J1Yl9zc2l6ZV90Cj4gICBwc2V1ZG9fcmVhZCAoc3RydWN0IGdydWJfZmlsZSAqZmls ZSwgY2hhciAqYnVmLCBncnViX3NpemVfdCBsZW4pCj4gICB7Cj4gQEAgLTEzNiw2ICsxMzksNjUg QEAgc3RhdGljIHN0cnVjdCBncnViX2ZzIHBzZXVkb19mcyA9IHsKPiAgICAgLmZzX3JlYWQgPSBw c2V1ZG9fcmVhZAo+ICAgfTsKPiAgIAo+ICsvKgo+ICsgKiBXZSBjYW5ub3QgdXNlIGhleGR1bXAo KSB0byBkaXNwbGF5IGhhc2ggZGF0YSBiZWNhdXNlIGl0IGlzIHR5cGljYWxseSBkaXNwbGF5ZWQK PiArICogaW4gaGV4YWRlY2ltYWwgZm9ybWF0LCBhbG9uZyB3aXRoIGFuIEFTQ0lJIHJlcHJlc2Vu dGF0aW9uIG9mIHRoZSBzYW1lIGRhdGEuCj4gKyAqCj4gKyAqIEV4YW1wbGU6IHNoYTI1NiBoYXNo IGRhdGEKPiArICogMDAwMDAwMDAgIDUyIGI1IDkwIDQ5IDY0IGRlIDIyIGQ3ICA0ZSA1ZiA0ZiBi NCAxYiA1MSA5YyAzNCAgfFIuLklkLiIuTl9PLi5RLjR8Cj4gKyAqIDAwMDAwMDEwICBiMSA5NiAy MSA3YyA5MSA3OCBhNSAwZCAgMjAgOGMgZTkgNWMgMjIgNTQgNTMgZjcgIHwuLiF8LnguLiAuLlwi VFMufAo+ICsgKgo+ICsgKiBBbiBhcHBlbmRlZCBzaWduYXR1cmUgb25seSByZXF1aXJlZCB0byBk aXNwbGF5IHRoZSBoZXhhZGVjaW1hbCBvZiB0aGUgaGFzaCBkYXRhCj4gKyAqIGJ5IHNlcGFyYXRp bmcgZWFjaCBieXRlIHdpdGggIjoiLiBTbywgd2UgaW50cm9kdWNlZCBhIG5ldyBtZXRob2QgaGV4 ZHVtcF9jb2xvbgo+ICsgKiB0byBkaXNwbGF5IGl0Lgo+ICsgKgo+ICsgKiBFeGFtcGxlOiBTaGEy NTYgaGFzaCBkYXRhCj4gKyAqICA1MjpiNTo5MDo0OTo2NDpkZToyMjpkNzo0ZTo1Zjo0ZjpiNDox Yjo1MTo5YzozNDoKPiArICogIGIxOjk2OjIxOjdjOjkxOjc4OmE1OjBkOjIwOjhjOmU5OjVjOjIy OjU0OjUzOmY3Cj4gKyAqLwo+ICtzdGF0aWMgdm9pZAo+ICtoZXhkdW1wX2NvbG9uIChjb25zdCBn cnViX3VpbnQ4X3QgKmRhdGEsIGNvbnN0IGdydWJfc2l6ZV90IGxlbmd0aCkKPiArewo+ICsgIGdy dWJfc2l6ZV90IGksIGNvdW50ID0gMDsKPiArCj4gKyAgZm9yIChpID0gMDsgaSA8IGxlbmd0aCAt IDE7IGkrKykKPiArICAgIHsKPiArICAgICAgZ3J1Yl9wcmludGYgKCIlMDJ4OiIsIGRhdGFbaV0p Owo+ICsgICAgICBjb3VudCsrOwo+ICsgICAgICBpZiAoY291bnQgPT0gMTYpCj4gKyAgICAgICAg ewo+ICsgICAgICAgICAgZ3J1Yl9wcmludGYgKCJcbiAgICAgICAgICIpOwo+ICsgICAgICAgICAg Y291bnQgPSAwOwo+ICsgICAgICAgIH0KPiArICAgIH0KPiArCj4gKyAgZ3J1Yl9wcmludGYgKCIl MDJ4XG4iLCBkYXRhW2ldKTsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQKPiArcHJpbnRfY2VydGlm aWNhdGUgKGNvbnN0IGdydWJfeDUwOV9jZXJ0X3QgKmNlcnQsIGNvbnN0IGdydWJfdWludDMyX3Qg Y2VydF9udW0pCj4gK3sKPiArICBncnViX3VpbnQzMl90IGk7Cj4gKwo+ICsgIGdydWJfcHJpbnRm ICgiXG5DZXJ0aWZpY2F0ZTogJXVcbiIsIGNlcnRfbnVtKTsKPiArICBncnViX3ByaW50ZiAoIiAg ICBEYXRhOlxuIik7Cj4gKyAgZ3J1Yl9wcmludGYgKCIgICAgICAgIFZlcnNpb246ICV1ICgweCV1 KVxuIiwgY2VydC0+dmVyc2lvbiArIDEsIGNlcnQtPnZlcnNpb24pOwo+ICsgIGdydWJfcHJpbnRm ICgiICAgICAgICBTZXJpYWwgTnVtYmVyOlxuICAgICAgICAgICAgICIpOwo+ICsKPiArICBmb3Ig KGkgPSAwOyBpIDwgY2VydC0+c2VyaWFsX2xlbiAtIDE7IGkrKykKPiArICAgIGdydWJfcHJpbnRm ICgiJTAyeDoiLCBjZXJ0LT5zZXJpYWxbaV0pOwo+ICsKPiArICBncnViX3ByaW50ZiAoIiUwMnhc biIsIGNlcnQtPnNlcmlhbFtjZXJ0LT5zZXJpYWxfbGVuIC0gMV0pOwo+ICsgIGdydWJfcHJpbnRm ICgiICAgICAgICBJc3N1ZXI6ICVzXG4iLCBjZXJ0LT5pc3N1ZXIpOwo+ICsgIGdydWJfcHJpbnRm ICgiICAgICAgICBTdWJqZWN0OiAlc1xuIiwgY2VydC0+c3ViamVjdCk7Cj4gKyAgZ3J1Yl9wcmlu dGYgKCIgICAgICAgIFN1YmplY3QgUHVibGljIEtleSBJbmZvOlxuIik7Cj4gKyAgZ3J1Yl9wcmlu dGYgKCIgICAgICAgICAgICBQdWJsaWMgS2V5IEFsZ29yaXRobTogcnNhRW5jcnlwdGlvblxuIik7 Cj4gKyAgZ3J1Yl9wcmludGYgKCIgICAgICAgICAgICAgICAgUlNBIFB1YmxpYy1LZXk6ICglZCBi aXQpXG4iLCBjZXJ0LT5tb2R1bHVzX3NpemUpOwo+ICsgIGdydWJfcHJpbnRmICgiICAgIEZpbmdl cnByaW50OiBzaGEyNTZcbiAgICAgICAgICIpOwo+ICsgIGhleGR1bXBfY29sb24gKCZjZXJ0LT5m aW5nZXJwcmludFtHUlVCX0ZJTkdFUlBSSU5UX1NIQTI1Nl1bMF0sCj4gKyAgICAgICAgICAgICAg ICAgZ3J1Yl9zdHJsZW4gKChjaGFyICopIGNlcnQtPmZpbmdlcnByaW50W0dSVUJfRklOR0VSUFJJ TlRfU0hBMjU2XSkpOwo+ICt9Cj4gKwo+ICAgLyoKPiAgICAqIEdVSUQgY2FuIGJlIHVzZWQgdG8g ZGV0ZXJtaW5lIHRoZSBoYXNoaW5nIGZ1bmN0aW9uIGFuZCBnZW5lcmF0ZSB0aGUgaGFzaCB1c2lu Zwo+ICAgICogZGV0ZXJtaW5lZCBoYXNoaW5nIGZ1bmN0aW9uLgo+IEBAIC00MjksNiArNDkxLDYx IEBAIGFkZF9jZXJ0aWZpY2F0ZSAoY29uc3QgZ3J1Yl91aW50OF90ICpkYXRhLCBjb25zdCBncnVi X3NpemVfdCBkYXRhX3NpemUsCj4gICAgIHJldHVybiByYzsKPiAgIH0KPiAgIAo+ICtzdGF0aWMg dm9pZAo+ICtfcmVtb3ZlX2NlcnRfZnJvbV9kYiAoY29uc3QgZ3J1Yl94NTA5X2NlcnRfdCAqY2Vy dCkKPiArewo+ICsgIGdydWJfdWludDMyX3QgaSA9IDE7Cj4gKyAgZ3J1Yl94NTA5X2NlcnRfdCAq Y3Vycl9jZXJ0LCAqcHJldl9jZXJ0Owo+ICsKPiArICBmb3IgKGN1cnJfY2VydCA9IHByZXZfY2Vy dCA9IGRiLmNlcnRzOyBjdXJyX2NlcnQgIT0gTlVMTDsgY3Vycl9jZXJ0ID0gY3Vycl9jZXJ0LT5u ZXh0LCBpKyspCj4gKyAgICB7Cj4gKyAgICAgIGlmIChpc19jZXJ0X21hdGNoIChjdXJyX2NlcnQs IGNlcnQpID09IHRydWUpCj4gKyAgICAgICAgewo+ICsgICAgICAgICAgaWYgKGkgPT0gMSkgLyog TWF0Y2ggd2l0aCBmaXJzdCBjZXJ0aWZpY2F0ZSBpbiB0aGUgZGIgbGlzdC4gKi8KPiArICAgICAg ICAgICAgZGIuY2VydHMgPSBjdXJyX2NlcnQtPm5leHQ7Cj4gKyAgICAgICAgICBlbHNlCj4gKyAg ICAgICAgICAgIHByZXZfY2VydC0+bmV4dCA9IGN1cnJfY2VydC0+bmV4dDsKPiArCj4gKyAgICAg ICAgICBncnViX2RwcmludGYgKCJhcHBlbmRlZHNpZyIsCj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICJyZW1vdmVkIGRpc3RydXN0ZWQgY2VydGlmaWNhdGUgd2l0aCBDTjogJXMgZnJvbSB0aGUg ZGIgbGlzdFxuIiwKPiArICAgICAgICAgICAgICAgICAgICAgICAgY3Vycl9jZXJ0LT5zdWJqZWN0 KTsKPiArICAgICAgICAgIGN1cnJfY2VydC0+bmV4dCA9IE5VTEw7Cj4gKyAgICAgICAgICBncnVi X3g1MDlfY2VydF9yZWxlYXNlIChjdXJyX2NlcnQpOwo+ICsgICAgICAgICAgZ3J1Yl9mcmVlIChj dXJyX2NlcnQpOwo+ICsgICAgICAgICAgYnJlYWs7Cj4gKyAgICAgICAgfQo+ICsgICAgICBlbHNl Cj4gKyAgICAgICAgcHJldl9jZXJ0ID0gY3Vycl9jZXJ0Owo+ICsgICAgfQo+ICt9Cj4gKwo+ICtz dGF0aWMgZ3J1Yl9lcnJfdAo+ICtyZW1vdmVfY2VydF9mcm9tX2RiIChjb25zdCBncnViX3VpbnQ4 X3QgKmRhdGEsIGNvbnN0IGdydWJfc2l6ZV90IGRhdGFfc2l6ZSkKPiArewo+ICsgIGdydWJfZXJy X3QgcmM7Cj4gKyAgZ3J1Yl94NTA5X2NlcnRfdCAqY2VydDsKPiArCj4gKyAgaWYgKGRhdGEgPT0g TlVMTCB8fCBkYXRhX3NpemUgPT0gMCkKPiArICAgIHJldHVybiBncnViX2Vycm9yIChHUlVCX0VS Ul9PVVRfT0ZfUkFOR0UsICJjZXJ0aWZpY2F0ZSBkYXRhIG9yIHNpemUgaXMgbm90IGF2YWlsYWJs ZSIpOwo+ICsKPiArICBjZXJ0ID0gZ3J1Yl96YWxsb2MgKHNpemVvZiAoZ3J1Yl94NTA5X2NlcnRf dCkpOwo+ICsgIGlmIChjZXJ0ID09IE5VTEwpCj4gKyAgICByZXR1cm4gZ3J1Yl9lcnJvciAoR1JV Ql9FUlJfT1VUX09GX01FTU9SWSwgIm91dCBvZiBtZW1vcnkiKTsKPiArCj4gKyAgcmMgPSBncnVi X3g1MDlfY2VydF9wYXJzZSAoZGF0YSwgZGF0YV9zaXplLCBjZXJ0KTsKPiArICBpZiAocmMgIT0g R1JVQl9FUlJfTk9ORSkKPiArICAgIHsKPiArICAgICAgZ3J1Yl9kcHJpbnRmICgiYXBwZW5kZWRz aWciLCAiY2Fubm90IHJlbW92ZSBhbiBpbnZhbGlkIGNlcnRpZmljYXRlIGZyb20gdGhlIGRiIGxp c3RcbiIpOwo+ICsgICAgICBncnViX2ZyZWUgKGNlcnQpOwo+ICsgICAgICByZXR1cm4gcmM7Cj4g KyAgICB9Cj4gKwo+ICsgIC8qIFJlbW92ZSBjZXJ0aWZpY2F0ZSBmcm9tIHRoZSBkYiBsaXN0LiAq Lwo+ICsgIF9yZW1vdmVfY2VydF9mcm9tX2RiIChjZXJ0KTsKPiArCj4gKyAgcmV0dXJuIHJjOwo+ ICt9Cj4gKwo+ICAgc3RhdGljIGdydWJfZXJyX3QKPiAgIGZpbGVfcmVhZF93aG9sZSAoZ3J1Yl9m aWxlX3QgZmlsZSwgZ3J1Yl91aW50OF90ICoqYnVmLCBncnViX3NpemVfdCAqbGVuKQo+ICAgewo+ IEBAIC02NDksNiArNzY2LDcgQEAgZ3J1Yl92ZXJpZnlfYXBwZW5kZWRfc2lnbmF0dXJlIChjb25z dCBncnViX3VpbnQ4X3QgKmJ1ZiwgZ3J1Yl9zaXplX3QgYnVmc2l6ZSkKPiAgICAgaWYgKGVyciAh PSBHUlVCX0VSUl9OT05FKQo+ICAgICAgIHJldHVybiBlcnI7Cj4gICAKPiArICBhcHBlbmRfc2ln X2xlbiA9IHNpZy5zaWduYXR1cmVfbGVuOwo+ICAgICBkYXRhc2l6ZSA9IGJ1ZnNpemUgLSBzaWcu c2lnbmF0dXJlX2xlbjsKPiAgIAo+ICAgICAvKgo+IEBAIC03MDksNiArODI3LDE5MyBAQCBncnVi X3ZlcmlmeV9hcHBlbmRlZF9zaWduYXR1cmUgKGNvbnN0IGdydWJfdWludDhfdCAqYnVmLCBncnVi X3NpemVfdCBidWZzaXplKQo+ICAgICByZXR1cm4gZXJyOwo+ICAgfQo+ICAgCj4gK3N0YXRpYyBn cnViX2Vycl90Cj4gK2dydWJfY21kX3ZlcmlmeV9zaWduYXR1cmUgKGdydWJfY29tbWFuZF90IGNt ZCBfX2F0dHJpYnV0ZV9fICgodW51c2VkKSksIGludCBhcmdjLCBjaGFyICoqYXJncykKPiArewo+ ICsgIGdydWJfZmlsZV90IHNpZ25lZF9maWxlOwo+ICsgIGdydWJfZXJyX3QgZXJyOwo+ICsgIGdy dWJfdWludDhfdCAqc2lnbmVkX2RhdGEgPSBOVUxMOwo+ICsgIGdydWJfc2l6ZV90IHNpZ25lZF9k YXRhX3NpemUgPSAwOwo+ICsKPiArICBpZiAoYXJnYyAhPSAxKQo+ICsgICAgcmV0dXJuIGdydWJf ZXJyb3IgKEdSVUJfRVJSX0JBRF9BUkdVTUVOVCwKPiArICAgICAgICAgICAgICAgICAgICAgICAi YSBzaWduZWQgZmlsZSBpcyBleHBlY3RlZFxuRXhhbXBsZTpcblx0YXBwZW5kX3ZlcmlmeSA8U0lH TkVEIEZJTEU+XG4iKTsKPiArCj4gKyAgaWYgKCFncnViX3N0cmxlbiAoYXJnc1swXSkpCj4gKyAg ICByZXR1cm4gZ3J1Yl9lcnJvciAoR1JVQl9FUlJfQkFEX0ZJTEVOQU1FLCAibWlzc2luZyBzaWdu ZWQgZmlsZSIpOwo+ICsKPiArICBncnViX2RwcmludGYgKCJhcHBlbmRlZHNpZyIsICJ2ZXJpZnlp bmcgJXNcbiIsIGFyZ3NbMF0pOwo+ICsKPiArICBzaWduZWRfZmlsZSA9IGdydWJfZmlsZV9vcGVu IChhcmdzWzBdLCBHUlVCX0ZJTEVfVFlQRV9WRVJJRllfU0lHTkFUVVJFKTsKPiArICBpZiAoc2ln bmVkX2ZpbGUgPT0gTlVMTCkKPiArICAgIHJldHVybiBncnViX2Vycm9yIChHUlVCX0VSUl9GSUxF X05PVF9GT1VORCwgImNvdWxkIG5vdCBvcGVuICVzIGZpbGUiLCBhcmdzWzBdKTsKPiArCj4gKyAg ZXJyID0gZmlsZV9yZWFkX3dob2xlIChzaWduZWRfZmlsZSwgJnNpZ25lZF9kYXRhLCAmc2lnbmVk X2RhdGFfc2l6ZSk7Cj4gKyAgaWYgKGVyciA9PSBHUlVCX0VSUl9OT05FKQo+ICsgICAgZXJyID0g Z3J1Yl92ZXJpZnlfYXBwZW5kZWRfc2lnbmF0dXJlIChzaWduZWRfZGF0YSwgc2lnbmVkX2RhdGFf c2l6ZSk7Cj4gKwo+ICsgIGdydWJfZmlsZV9jbG9zZSAoc2lnbmVkX2ZpbGUpOwo+ICsgIGdydWJf ZnJlZSAoc2lnbmVkX2RhdGEpOwo+ICsKPiArICByZXR1cm4gZXJyOwo+ICt9Cj4gKwo+ICsvKgo+ ICsgKiBDaGVja3MgdGhlIHRydXN0ZWQgY2VydGlmaWNhdGUgYWdhaW5zdCBkYnggbGlzdCBpZiBk eW5hbWljIGtleSBtYW5hZ2VtZW50IGlzCj4gKyAqIGVuYWJsZWQuIEFuZCBhZGQgaXQgdG8gdGhl IGRiIGxpc3QgaWYgaXQgaXMgbm90IGFscmVhZHkgcHJlc2VudC4KPiArICoKPiArICogTm90ZTog V2hlbiBzaWduYXR1cmUgdmVyaWZpY2F0aW9uIGlzIGVuYWJsZWQsIHRoaXMgY29tbWFuZCBvbmx5 IGFjY2VwdHMgdGhlCj4gKyAqIHRydXN0ZWQgY2VydGlmaWNhdGUgdGhhdCBpcyBzaWduZWQgd2l0 aCBhbiBhcHBlbmRlZCBzaWduYXR1cmUuCj4gKyAqIFRoZSBzaWduYXR1cmUgaXMgdmVyaWZpZWQg YnkgdGhlIGFwcGVuZGVkc2lnIG1vZHVsZS4gSWYgdmVyaWZpY2F0aW9uIHN1Y2NlZWRzLAo+ICsg KiB0aGUgY2VydGlmaWNhdGUgaXMgYWRkZWQgdG8gdGhlIGRiIGxpc3QuIE90aGVyd2lzZSwgYW4g ZXJyb3IgaXMgcG9zdGVkIGFuZAo+ICsgKiB0aGUgY2VydGlmaWNhdGUgaXMgbm90IGFkZGVkLgo+ ICsgKiBXaGVuIHNpZ25hdHVyZSB2ZXJpZmljYXRpb24gaXMgZGlzYWJsZWQsIGl0IGFjY2VwdHMg dGhlIHRydXN0ZWQgY2VydGlmaWNhdGUKPiArICogd2l0aG91dCBhbiBhcHBlbmRlZCBzaWduYXR1 cmUgYW5kIGFkZCBpdCB0byB0aGUgZGIgbGlzdC4KPiArICoKPiArICogQWxzbywgbm90ZSB0aGF0 IHRoZSBhZGRpbmcgb2YgdGhlIHRydXN0ZWQgY2VydGlmaWNhdGUgdXNpbmcgdGhpcyBjb21tYW5k IGRvZXMKPiArICogbm90IHBlcnNpc3QgYWNyb3NzIHJlYm9vdHMuCj4gKyAqLwo+ICtzdGF0aWMg Z3J1Yl9lcnJfdAo+ICtncnViX2NtZF9kYl9jZXJ0IChncnViX2NvbW1hbmRfdCBjbWQgX19hdHRy aWJ1dGVfXyAoKHVudXNlZCkpLCBpbnQgYXJnYywgY2hhciAqKmFyZ3MpCj4gK3sKPiArICBncnVi X2Vycl90IGVycjsKPiArICBncnViX2ZpbGVfdCBjZXJ0X2ZpbGU7Cj4gKyAgZ3J1Yl91aW50OF90 ICpjZXJ0X2RhdGEgPSBOVUxMOwo+ICsgIGdydWJfc2l6ZV90IGNlcnRfZGF0YV9zaXplID0gMDsK PiArCj4gKyAgaWYgKGFyZ2MgIT0gMSkKPiArICAgIHJldHVybiBncnViX2Vycm9yIChHUlVCX0VS Ul9CQURfQVJHVU1FTlQsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgImEgdHJ1c3RlZCBYLjUw OSBjZXJ0aWZpY2F0ZSBmaWxlIGlzIGV4cGVjdGVkIGluIERFUiBmb3JtYXRcbiIKPiArICAgICAg ICAgICAgICAgICAgICAgICAiRXhhbXBsZTpcblx0YXBwZW5kX2FkZF9kYl9jZXJ0IDxYNTA5X0NF UlRJRklDQVRFPlxuIik7Cj4gKwo+ICsgIGlmICghZ3J1Yl9zdHJsZW4gKGFyZ3NbMF0pKQo+ICsg ICAgcmV0dXJuIGdydWJfZXJyb3IgKEdSVUJfRVJSX0JBRF9GSUxFTkFNRSwgIm1pc3NpbmcgdHJ1 c3RlZCBYLjUwOSBjZXJ0aWZpY2F0ZSBmaWxlIik7Cj4gKwo+ICsgIGNlcnRfZmlsZSA9IGdydWJf ZmlsZV9vcGVuIChhcmdzWzBdLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHUlVC X0ZJTEVfVFlQRV9DRVJUSUZJQ0FURV9UUlVTVCB8IEdSVUJfRklMRV9UWVBFX05PX0RFQ09NUFJF U1MpOwo+ICsgIGlmIChjZXJ0X2ZpbGUgPT0gTlVMTCkKPiArICAgIHJldHVybiBncnViX2Vycm9y IChHUlVCX0VSUl9CQURfRklMRV9UWVBFLCAiY291bGQgbm90IG9wZW4gJXMgZmlsZSIsIGFyZ3Nb MF0pOwo+ICsKPiArICBlcnIgPSBmaWxlX3JlYWRfd2hvbGUgKGNlcnRfZmlsZSwgJmNlcnRfZGF0 YSwgJmNlcnRfZGF0YV9zaXplKTsKPiArICBncnViX2ZpbGVfY2xvc2UgKGNlcnRfZmlsZSk7Cj4g KyAgaWYgKGVyciAhPSBHUlVCX0VSUl9OT05FKQo+ICsgICAgcmV0dXJuIGVycjsKPiArCj4gKyAg LyoKPiArICAgKiBJZiBzaWduYXR1cmUgdmVyaWZpY2F0aW9uIGlzIGVuYWJsZWQgKGNoZWNrX3Np Z3MgaXMgc2V0IHRvIHRydWUpLCBvYnRhaW4KPiArICAgKiB0aGUgYWN0dWFsIGNlcnRpZmljYXRl IHNpemUgYnkgc3VidHJhY3RpbmcgdGhlIGFwcGVuZGVkIHNpZ25hdHVyZSBzaXplIGZyb20KPiAr ICAgKiB0aGUgY2VydGlmaWNhdGUgc2l6ZSBiZWNhdXNlIHRoZSBjZXJ0aWZpY2F0ZSBoYXMgYW4g YXBwZW5kZWQgc2lnbmF0dXJlLCBhbmQKPiArICAgKiB0aGlzIGFjdHVhbCBjZXJ0aWZpY2F0ZSBz aXplIGlzIHVzZWQgdG8gZ2V0IHRoZSBYLjUwOSBjZXJ0aWZpY2F0ZS4KPiArICAgKi8KPiArICBp ZiAoY2hlY2tfc2lncyA9PSB0cnVlKQo+ICsgICAgY2VydF9kYXRhX3NpemUgLT0gYXBwZW5kX3Np Z19sZW47Cj4gKwo+ICsgIGVyciA9IGFkZF9jZXJ0aWZpY2F0ZSAoY2VydF9kYXRhLCBjZXJ0X2Rh dGFfc2l6ZSwgJmRiKTsKPiArICBncnViX2ZyZWUgKGNlcnRfZGF0YSk7Cj4gKyAgaWYgKGVyciAh PSBHUlVCX0VSUl9OT05FKQo+ICsgICAgcmV0dXJuIGVycjsKPiArCj4gKyAgcmV0dXJuIEdSVUJf RVJSX05PTkU7Cj4gK30KPiArCj4gKy8qCj4gKyAqIFJlbW92ZSB0aGUgZGlzdHJ1c3RlZCBjZXJ0 aWZpY2F0ZSBmcm9tIHRoZSBkYiBsaXN0IGlmIGl0IGlzIGFscmVhZHkgcHJlc2VudC4KPiArICog QW5kIGFkZCBpdCB0byB0aGUgZGJ4IGxpc3QgaWYgbm90IHByZXNlbnQgd2hlbiBkeW5hbWljIGtl eSBtYW5hZ2VtZW50IGlzCj4gKyAqIGVuYWJsZWQuCj4gKyAqCj4gKyAqIE5vdGU6IFdoZW4gc2ln bmF0dXJlIHZlcmlmaWNhdGlvbiBpcyBlbmFibGVkLCB0aGlzIGNvbW1hbmQgb25seSBhY2NlcHRz IHRoZQo+ICsgKiBkaXN0cnVzdGVkIGNlcnRpZmljYXRlIHRoYXQgaXMgc2lnbmVkIHdpdGggYW4g YXBwZW5kZWQgc2lnbmF0dXJlLgo+ICsgKiBUaGUgc2lnbmF0dXJlIGlzIHZlcmlmaWVkIGJ5IHRo ZSBhcHBlbmRlZCBzaWcgbW9kdWxlLiBJZiB2ZXJpZmljYXRpb24KPiArICogc3VjY2VlZHMsIHRo ZSBjZXJ0aWZpY2F0ZSBpcyByZW1vdmVkIGZyb20gdGhlIGRiIGxpc3QuIE90aGVyd2lzZSwgYW4g ZXJyb3IKPiArICogaXMgcG9zdGVkIGFuZCB0aGUgY2VydGlmaWNhdGUgaXMgbm90IHJlbW92ZWQu Cj4gKyAqIFdoZW4gc2lnbmF0dXJlIHZlcmlmaWNhdGlvbiBpcyBkaXNhYmxlZCwgaXQgYWNjZXB0 cyB0aGUgZGlzdHJ1c3RlZCBjZXJ0aWZpY2F0ZQo+ICsgKiB3aXRob3V0IGFuIGFwcGVuZGVkIHNp Z25hdHVyZSBhbmQgcmVtb3ZlcyBpdCBmcm9tIHRoZSBkYiBsaXN0Lgo+ICsgKgo+ICsgKiBBbHNv LCBub3RlIHRoYXQgdGhlIHJlbW92YWwgb2YgdGhlIGRpc3RydXN0ZWQgY2VydGlmaWNhdGUgdXNp bmcgdGhpcyBjb21tYW5kCj4gKyAqIGRvZXMgbm90IHBlcnNpc3QgYWNyb3NzIHJlYm9vdHMuCj4g KyAqLwo+ICtzdGF0aWMgZ3J1Yl9lcnJfdAo+ICtncnViX2NtZF9kYnhfY2VydCAoZ3J1Yl9jb21t YW5kX3QgY21kIF9fYXR0cmlidXRlX18gKCh1bnVzZWQpKSwgaW50IGFyZ2MsIGNoYXIgKiphcmdz KQo+ICt7Cj4gKyAgZ3J1Yl9lcnJfdCBlcnI7Cj4gKyAgZ3J1Yl9maWxlX3QgY2VydF9maWxlOwo+ ICsgIGdydWJfdWludDhfdCAqY2VydF9kYXRhID0gTlVMTDsKPiArICBncnViX3NpemVfdCBjZXJ0 X2RhdGFfc2l6ZSA9IDA7Cj4gKwo+ICsgIGlmIChhcmdjICE9IDEpCj4gKyAgICByZXR1cm4gZ3J1 Yl9lcnJvciAoR1JVQl9FUlJfQkFEX0FSR1VNRU5ULAo+ICsgICAgICAgICAgICAgICAgICAgICAg ICJhIGRpc3RydXN0ZWQgWC41MDkgY2VydGlmaWNhdGUgZmlsZSBpcyBleHBlY3RlZCBpbiBERVIg Zm9ybWF0XG4iCj4gKyAgICAgICAgICAgICAgICAgICAgICAgIkV4YW1wbGU6XG5cdGFwcGVuZF9h ZGRfZGJ4X2NlcnQgPFg1MDlfQ0VSVElGSUNBVEU+XG4iKTsKPiArCj4gKyAgaWYgKCFncnViX3N0 cmxlbiAoYXJnc1swXSkpCj4gKyAgICByZXR1cm4gZ3J1Yl9lcnJvciAoR1JVQl9FUlJfQkFEX0ZJ TEVOQU1FLCAibWlzc2luZyBkaXN0cnVzdGVkIFguNTA5IGNlcnRpZmljYXRlIGZpbGUiKTsKPiAr Cj4gKyAgY2VydF9maWxlID0gZ3J1Yl9maWxlX29wZW4gKGFyZ3NbMF0sCj4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIEdSVUJfRklMRV9UWVBFX0NFUlRJRklDQVRFX1RSVVNUIHwgR1JV Ql9GSUxFX1RZUEVfTk9fREVDT01QUkVTUyk7Cj4gKyAgaWYgKGNlcnRfZmlsZSA9PSBOVUxMKQo+ ICsgICAgcmV0dXJuIGdydWJfZXJyb3IgKEdSVUJfRVJSX0JBRF9GSUxFX1RZUEUsICJjb3VsZCBu b3Qgb3BlbiAlcyBmaWxlIiwgYXJnc1swXSk7Cj4gKwo+ICsgIGVyciA9IGZpbGVfcmVhZF93aG9s ZSAoY2VydF9maWxlLCAmY2VydF9kYXRhLCAmY2VydF9kYXRhX3NpemUpOwo+ICsgIGdydWJfZmls ZV9jbG9zZSAoY2VydF9maWxlKTsKPiArICBpZiAoZXJyICE9IEdSVUJfRVJSX05PTkUpCj4gKyAg ICByZXR1cm4gZXJyOwo+ICsKPiArICAvKgo+ICsgICAqIElmIHNpZ25hdHVyZSB2ZXJpZmljYXRp b24gaXMgZW5hYmxlZCAoY2hlY2tfc2lncyBpcyBzZXQgdG8gdHJ1ZSksIG9idGFpbgo+ICsgICAq IHRoZSBhY3R1YWwgY2VydGlmaWNhdGUgc2l6ZSBieSBzdWJ0cmFjdGluZyB0aGUgYXBwZW5kZWQg c2lnbmF0dXJlIHNpemUgZnJvbQo+ICsgICAqIHRoZSBjZXJ0aWZpY2F0ZSBzaXplIGJlY2F1c2Ug dGhlIGNlcnRpZmljYXRlIGhhcyBhbiBhcHBlbmRlZCBzaWduYXR1cmUsIGFuZAo+ICsgICAqIHRo aXMgYWN0dWFsIGNlcnRpZmljYXRlIHNpemUgaXMgdXNlZCB0byBnZXQgdGhlIFguNTA5IGNlcnRp ZmljYXRlLgo+ICsgICAqLwo+ICsgIGlmIChjaGVja19zaWdzID09IHRydWUpCj4gKyAgICBjZXJ0 X2RhdGFfc2l6ZSAtPSBhcHBlbmRfc2lnX2xlbjsKPiArCj4gKyAgLyogUmVtb3ZlIGRpc3RydXN0 ZWQgY2VydGlmaWNhdGUgZnJvbSB0aGUgZGIgbGlzdCBpZiBwcmVzZW50LiAqLwo+ICsgIGVyciA9 IHJlbW92ZV9jZXJ0X2Zyb21fZGIgKGNlcnRfZGF0YSwgY2VydF9kYXRhX3NpemUpOwo+ICsgIGlm IChlcnIgIT0gR1JVQl9FUlJfTk9ORSkKPiArICAgIHsKPiArICAgICAgZ3J1Yl9mcmVlIChjZXJ0 X2RhdGEpOwo+ICsgICAgICByZXR1cm4gZXJyOwo+ICsgICAgfQo+ICsKPiArICAvKiBPbmx5IGFk ZCB0aGUgY2VydGlmaWNhdGUgdG8gdGhlIGRieCBsaXN0IGlmIGR5bmFtaWMga2V5IG1hbmFnZW1l bnQgaXMgZW5hYmxlZC4gKi8KPiArICBpZiAoYXBwZW5kX2tleV9tZ210ID09IHRydWUpCj4gKyAg ICB7Cj4gKyAgICAgIGVyciA9IGFkZF9jZXJ0aWZpY2F0ZSAoY2VydF9kYXRhLCBjZXJ0X2RhdGFf c2l6ZSwgJmRieCk7Cj4gKyAgICAgIGlmIChlcnIgIT0gR1JVQl9FUlJfTk9ORSkKPiArICAgICAg ICByZXR1cm4gZXJyOwo+ICsgICAgfQo+ICsKPiArICBncnViX2ZyZWUgKGNlcnRfZGF0YSk7Cj4g Kwo+ICsgIHJldHVybiBHUlVCX0VSUl9OT05FOwo+ICt9Cj4gKwo+ICtzdGF0aWMgZ3J1Yl9lcnJf dAo+ICtncnViX2NtZF9saXN0X2RiIChncnViX2NvbW1hbmRfdCBjbWQgX19hdHRyaWJ1dGVfXyAo KHVudXNlZCkpLCBpbnQgYXJnYyBfX2F0dHJpYnV0ZV9fICgodW51c2VkKSksCj4gKyAgICAgICAg ICAgICAgICAgIGNoYXIgKiphcmdzIF9fYXR0cmlidXRlX18gKCh1bnVzZWQpKSkKPiArewo+ICsg IHN0cnVjdCB4NTA5X2NlcnRpZmljYXRlICpjZXJ0Owo+ICsgIGdydWJfdWludDMyX3QgaSwgY2Vy dF9udW0gPSAxOwo+ICsKPiArICBmb3IgKGNlcnQgPSBkYi5jZXJ0czsgY2VydCAhPSBOVUxMOyBj ZXJ0ID0gY2VydC0+bmV4dCwgY2VydF9udW0rKykKPiArICAgIHByaW50X2NlcnRpZmljYXRlIChj ZXJ0LCBjZXJ0X251bSk7Cj4gKwo+ICsgIGlmIChhcHBlbmRfa2V5X21nbXQgPT0gZmFsc2UpCj4g KyAgICByZXR1cm4gR1JVQl9FUlJfTk9ORTsKPiArCj4gKyAgZm9yIChpID0gMDsgaSA8IGRiLmhh c2hfZW50cmllczsgaSsrKQo+ICsgICAgewo+ICsgICAgICBpZiAoZGIuaGFzaGVzW2ldICE9IE5V TEwpCj4gKyAgICAgICAgewo+ICsgICAgICAgICAgZ3J1Yl9wcmludGYgKCJcbkJpbmFyeSBoYXNo OiAldVxuIiwgaSArIDEpOwo+ICsgICAgICAgICAgZ3J1Yl9wcmludGYgKCIgICAgSGFzaDogc2hh JSIgUFJJdUdSVUJfU0laRSAiXG4gICAgICAgICAiLCBkYi5oYXNoX3NpemVzW2ldICogOCk7Cj4g KyAgICAgICAgICBoZXhkdW1wX2NvbG9uIChkYi5oYXNoZXNbaV0sIGRiLmhhc2hfc2l6ZXNbaV0p Owo+ICsgICAgICAgIH0KPiArICAgIH0KPiArCj4gKyAgcmV0dXJuIEdSVUJfRVJSX05PTkU7Cj4g K30KPiArCj4gICAvKiBBZGQgdGhlIFguNTA5IGNlcnRpZmljYXRlcy9iaW5hcnkgaGFzaCB0byB0 aGUgZGIgbGlzdCBmcm9tIFBLUy4gKi8KPiAgIHN0YXRpYyBncnViX2Vycl90Cj4gICBsb2FkX3Br czJkYiAodm9pZCkKPiBAQCAtMTAzMiw2ICsxMzM3LDggQEAgc3RydWN0IGdydWJfZmlsZV92ZXJp ZmllciBncnViX2FwcGVuZGVkc2lnX3ZlcmlmaWVyID0gewo+ICAgICAud3JpdGUgPSBhcHBlbmRl ZHNpZ193cml0ZSwKPiAgIH07Cj4gICAKPiArc3RhdGljIGdydWJfY29tbWFuZF90IGNtZF92ZXJp ZnksIGNtZF9saXN0X2RiLCBjbWRfZGJ4X2NlcnQsIGNtZF9kYl9jZXJ0Owo+ICsKPiAgIEdSVUJf TU9EX0lOSVQgKGFwcGVuZGVkc2lnKQo+ICAgewo+ICAgICBncnViX2ludDMyX3QgcmM7Cj4gQEAg LTExMDEsNiArMTQwOCwxNSBAQCBHUlVCX01PRF9JTklUIChhcHBlbmRlZHNpZykKPiAgICAgICAg ICAgICAgICAgICAgICAgZGIuY2VydF9lbnRyaWVzKTsKPiAgICAgICB9Cj4gICAKPiArICBjbWRf dmVyaWZ5ID0gZ3J1Yl9yZWdpc3Rlcl9jb21tYW5kICgiYXBwZW5kX3ZlcmlmeSIsIGdydWJfY21k X3ZlcmlmeV9zaWduYXR1cmUsIE5fKCI8U0lHTkVEX0ZJTEU+IiksCj4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgTl8oIlZlcmlmeSBTSUdORURfRklMRSBhZ2FpbnN0IHRo ZSB0cnVzdGVkIFguNTA5IGNlcnRpZmljYXRlcyBpbiB0aGUgZGIgbGlzdCIpKTsKPiArICBjbWRf bGlzdF9kYiA9IGdydWJfcmVnaXN0ZXJfY29tbWFuZCAoImFwcGVuZF9saXN0X2RiIiwgZ3J1Yl9j bWRfbGlzdF9kYiwgMCwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Tl8oIlNob3cgdGhlIGxpc3Qgb2YgdHJ1c3RlZCBYLjUwOSBjZXJ0aWZpY2F0ZXMgZnJvbSB0aGUg ZGIgbGlzdCIpKTsKPiArICBjbWRfZGJfY2VydCA9IGdydWJfcmVnaXN0ZXJfY29tbWFuZCAoImFw cGVuZF9hZGRfZGJfY2VydCIsIGdydWJfY21kX2RiX2NlcnQsIE5fKCI8WDUwOV9DRVJUSUZJQ0FU RT4iKSwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTl8oIkFkZCB0 cnVzdGVkIFg1MDlfQ0VSVElGSUNBVEUgdG8gdGhlIGRiIGxpc3QiKSk7Cj4gKyAgY21kX2RieF9j ZXJ0ID0gZ3J1Yl9yZWdpc3Rlcl9jb21tYW5kICgiYXBwZW5kX2FkZF9kYnhfY2VydCIsIGdydWJf Y21kX2RieF9jZXJ0LCBOXygiPFg1MDlfQ0VSVElGSUNBVEU+IiksCj4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBOXygiQWRkIGRpc3RydXN0ZWQgWDUwOV9DRVJUSUZJ Q0FURSB0byB0aGUgZGJ4IGxpc3QiKSk7Cj4gKwo+ICAgICBncnViX3ZlcmlmaWVyX3JlZ2lzdGVy ICgmZ3J1Yl9hcHBlbmRlZHNpZ192ZXJpZmllcik7Cj4gICAgIGdydWJfZGxfc2V0X3BlcnNpc3Rl bnQgKG1vZCk7Cj4gICB9Cj4gQEAgLTExMTksNCArMTQzNSw4IEBAIEdSVUJfTU9EX0ZJTkkgKGFw cGVuZGVkc2lnKQo+ICAgICBncnViX3JlZ2lzdGVyX3ZhcmlhYmxlX2hvb2sgKCJhcHBlbmRlZHNp Z19rZXlfbWdtdCIsIE5VTEwsIE5VTEwpOwo+ICAgICBncnViX2Vudl91bnNldCAoImFwcGVuZGVk c2lnX2tleV9tZ210Iik7Cj4gICAgIGdydWJfdmVyaWZpZXJfdW5yZWdpc3RlciAoJmdydWJfYXBw ZW5kZWRzaWdfdmVyaWZpZXIpOwo+ICsgIGdydWJfdW5yZWdpc3Rlcl9jb21tYW5kIChjbWRfdmVy aWZ5KTsKPiArICBncnViX3VucmVnaXN0ZXJfY29tbWFuZCAoY21kX2xpc3RfZGIpOwo+ICsgIGdy dWJfdW5yZWdpc3Rlcl9jb21tYW5kIChjbWRfZGJfY2VydCk7Cj4gKyAgZ3J1Yl91bnJlZ2lzdGVy X2NvbW1hbmQgKGNtZF9kYnhfY2VydCk7Cj4gICB9ClRlc3RlZC1ieTogU3JpZGhhciBNYXJrb25k YSA8c3JpZGhhcm1AbGludXguaWJtLmNvbT4KCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fCkdydWItZGV2ZWwgbWFpbGluZyBsaXN0CkdydWItZGV2ZWxAZ251 Lm9yZwpodHRwczovL2xpc3RzLmdudS5vcmcvbWFpbG1hbi9saXN0aW5mby9ncnViLWRldmVsCg==