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 X-Spam-Level: X-Spam-Status: No, score=-9.3 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI, MENTIONS_GIT_HOSTING,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS, URIBL_DBL_ABUSE_MALW,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id A683EC33C9E for ; Thu, 30 Jan 2020 12:43:40 +0000 (UTC) Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 7409D206D3 for ; Thu, 30 Jan 2020 12:43:40 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="C0jHorV0"; dkim=fail reason="signature verification failed" (1024-bit key) header.d=samsung.com header.i=@samsung.com header.b="MHxtAm+u" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 7409D206D3 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=samsung.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+infradead-linux-arm-kernel=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20170209; h=Sender: Content-Transfer-Encoding:Content-Type:Cc:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:References:MIME-Version:In-Reply-To: Message-Id:Date:Subject:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=2Njh71N9ayMxbzkB7s29tgjlS115YHOtIjxRtTzfYtQ=; b=C0jHorV0SPZZAy g6HdJOEr/mlwu7FeehzleWwzyYQuRyfPNxlnAqmP/Cz6Ih0I0FKWDwbz9lsfJJUR5zO1sLAPXs8vQ a02uubWQEhCbEON0Acb0RpYjcZ9QKLt/r79xysh7iuasoXXjqmZSmkxeuODq5obCX2CyWCAm7WPPY /R5mRtDczJDAzXyNqyFbnj/o6MXaO1qZVdC1rqQvphYNCTq2lzse58ItnKIpCF3NE8cQIwTXc42sq EFebZHzT/Rb8NjpTqTE04uvMXcy2dCkExwOPEQ4ZtOXWYHsWscnHH2YKSeOrN4bMG/bQ5rcx9KVz0 4NWE361eiHzeBSFKwJuw==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1ix9AT-0003lF-1c; Thu, 30 Jan 2020 12:43:33 +0000 Received: from mailout2.w1.samsung.com ([210.118.77.12]) by bombadil.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1ix9AD-0003cB-3L for linux-arm-kernel@lists.infradead.org; Thu, 30 Jan 2020 12:43:24 +0000 Received: from eucas1p1.samsung.com (unknown [182.198.249.206]) by mailout2.w1.samsung.com (KnoxPortal) with ESMTP id 20200130124315euoutp025d7f6608623e56041e4b9a1559b92ad3~uqrDSVVUP0875908759euoutp02D for ; Thu, 30 Jan 2020 12:43:15 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 mailout2.w1.samsung.com 20200130124315euoutp025d7f6608623e56041e4b9a1559b92ad3~uqrDSVVUP0875908759euoutp02D DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=samsung.com; s=mail20170921; t=1580388195; bh=u0T3trcPCRl0Q7vpugRvojgpgGpIu2Bq4V1J0AMOTPY=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=MHxtAm+uTrPEFIVYoldBzRr56lj+GEDAIbv3Ow+rYaQ/lu2pPsuFCkckC1gY//1XV Lb88x8vRNlaaF1uekGHmET1wntNOu7TYKleb5qOAIdBTsLjVYNF6h1k2JT1n9eFKma 4u5PP42l09A2I7Bnfx7eNGOphNOQ+5V2uhujDt6k= Received: from eusmges2new.samsung.com (unknown [203.254.199.244]) by eucas1p2.samsung.com (KnoxPortal) with ESMTP id 20200130124314eucas1p2c80c56755ba2cef935be2df307bd9666~uqrCZJUEQ1245412454eucas1p2S; Thu, 30 Jan 2020 12:43:14 +0000 (GMT) Received: from eucas1p2.samsung.com ( [182.198.249.207]) by eusmges2new.samsung.com (EUCPMTA) with SMTP id 47.EF.60679.26FC23E5; Thu, 30 Jan 2020 12:43:14 +0000 (GMT) Received: from eusmtrp1.samsung.com (unknown [182.198.249.138]) by eucas1p1.samsung.com (KnoxPortal) with ESMTPA id 20200130124314eucas1p11a244e77c9c5f583832832313ba93335~uqrBv1Vko0693106931eucas1p1h; Thu, 30 Jan 2020 12:43:14 +0000 (GMT) Received: from eusmgms2.samsung.com (unknown [182.198.249.180]) by eusmtrp1.samsung.com (KnoxPortal) with ESMTP id 20200130124314eusmtrp1a13fac857b1f591d7fd28be841b5bf62~uqrBvOOo92256022560eusmtrp1C; Thu, 30 Jan 2020 12:43:14 +0000 (GMT) X-AuditID: cbfec7f4-0cbff7000001ed07-33-5e32cf627fef Received: from eusmtip1.samsung.com ( [203.254.199.221]) by eusmgms2.samsung.com (EUCPMTA) with SMTP id F3.6D.07950.16FC23E5; Thu, 30 Jan 2020 12:43:13 +0000 (GMT) Received: from localhost (unknown [106.120.51.46]) by eusmtip1.samsung.com (KnoxPortal) with ESMTPA id 20200130124313eusmtip1a712638181fb4d06a893d2a4f974e23f~uqrBmpkPc2123221232eusmtip1l; Thu, 30 Jan 2020 12:43:13 +0000 (GMT) From: =?UTF-8?q?=C5=81ukasz=20Stelmach?= To: linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-samsung-soc@vger.kernel.org Subject: [RFC PATCH 3/4] Add tools/hsinit Date: Thu, 30 Jan 2020 13:42:32 +0100 Message-Id: <20200130124233.4006-3-l.stelmach@samsung.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20200130124233.4006-1-l.stelmach@samsung.com> MIME-Version: 1.0 Organization: Samsung R&D Institute Poland X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFuplleLIzCtJLcpLzFFi42LZduzned2k80ZxBgd2aFncPLSC0WLT42us Fpd3zWGzmHF+H5PFrecPGR1YPTYvqfc4+G4Pk0ffllWMHp83yQWwRHHZpKTmZJalFunbJXBl LP0ZWfCnpuLQlt/sDYzvUrsYOTkkBEwker6uY+pi5OIQEljBKLH4zHw2COcLo8SpDzNZIZzP jBLzfjYxdjFygLU0P6yDiC9nlNj+bhYzhPOcUWLCrM1MIHPZBBwl+peeYAWxRQSyJSZ//AK2 g1mgg1Fi58YTYEXCApoSF45NYwSxWQRUJbpbnoHZvAJWEvceTGOBOFBe4nzvOnYQm1PAWuLj 6t+sEDWCEidnPgGr4RfQkljTdB3MZgaqb946G+wiCYHp7BKHm+cwQwxykfj1fAfUUGGJV8e3 sEPYMhKnJ/ewQLxWLzF5khlEbw+jxLY5P6DqrSXunPvFBlLDDHT0+l36EGFHiX3v3rNBtPJJ 3HgrCHECn8SkbdOZIcK8Eh1tQhDVKhLr+vdADZSS6H21gnECo9IsJM/MQvLALIRdCxiZVzGK p5YW56anFhvlpZbrFSfmFpfmpesl5+duYgQmktP/jn/ZwbjrT9IhRgEORiUeXo8zRnFCrIll xZW5hxglOJiVRHhFXQ3jhHhTEiurUovy44tKc1KLDzFKc7AoifMaL3oZKySQnliSmp2aWpBa BJNl4uCUamBktljJoi1uHp51T37XbgcVXjPRqH9+/2Su26yqnOv1W2hpn6lpxa4rNe65uQcm XmPfb5XyYXVc/KO4A6sf/DKLOlzwaoZLxNZz/E9lJn4X2NH36cebN4/+Z1ndfJnPkCVzfx4D 1ytRlncxR07F1n1g+ZWbF3eLY1fTTC2Ru8f8Go9stv1r9fC5EktxRqKhFnNRcSIAr+VNUCAD AAA= X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFprLIsWRmVeSWpSXmKPExsVy+t/xu7qJ543iDHYftLG4eWgFo8Wmx9dY LS7vmsNmMeP8PiaLW88fMjqwemxeUu9x8N0eJo++LasYPT5vkgtgidKzKcovLUlVyMgvLrFV ija0MNIztLTQMzKx1DM0No+1MjJV0rezSUnNySxLLdK3S9DLWPozsuBPTcWhLb/ZGxjfpXYx cnBICJhIND+s62Lk4hASWMoosWDrE2aIuJTEyrnpXYycQKawxJ9rXWwQNU8ZJVYs/MwMkmAT cJToX3qCFcQWEciVuHboKDtIEbNAB6PEzo0nmEASwgKaEheOTWMEsVkEVCW6W56B2bwCVhL3 HkxjgdggL3G+dx07iM0pYC3xcfVvsKFCAtkSXXteQdULSpyc+YQF5DhmAXWJ9fOEQML8AloS a5qug41hBhrTvHU28wRGoVlIOmYhdMxCUrWAkXkVo0hqaXFuem6xkV5xYm5xaV66XnJ+7iZG YNRsO/Zzyw7GrnfBhxgFOBiVeHg9zhjFCbEmlhVX5h5ilOBgVhLhFXU1jBPiTUmsrEotyo8v Ks1JLT7EaAr05kRmKdHkfGBE55XEG5oamltYGpobmxubWSiJ83YIHIwREkhPLEnNTk0tSC2C 6WPi4JRqYFxt1c64UvOSipL5a1m1LQ4rnT7++LLOSs3l2JpHXC3r+X9+MeZb/3k/i3TUNWVz plJj3s44iegJBvKawYurHlxu2lv322v71SptbVdvpmaXi6L+91eaL+aSzYivrnfzS5lff+wR +/qDgesD460iX73Vv1BmFn895K3Kvhd2gs5KfzpKZI75K7EUZyQaajEXFScCAM3VG0ywAgAA X-CMS-MailID: 20200130124314eucas1p11a244e77c9c5f583832832313ba93335 X-Msg-Generator: CA X-RootMTR: 20200130124314eucas1p11a244e77c9c5f583832832313ba93335 X-EPHeader: CA CMS-TYPE: 201P X-CMS-RootMailID: 20200130124314eucas1p11a244e77c9c5f583832832313ba93335 References: <20200130123934.3900-1-l.stelmach@samsung.com> <20200130124233.4006-1-l.stelmach@samsung.com> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20200130_044317_447001_3F84E32D X-CRM114-Status: GOOD ( 20.24 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: =?UTF-8?q?=C5=81ukasz=20Stelmach?= , =?UTF-8?q?Mateusz=20Mo=C5=9Bcicki?= Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+infradead-linux-arm-kernel=archiver.kernel.org@lists.infradead.org Q28tYXV0aG9yZWQgYnkgTS5Nb8WbY2lja2kgYW5kIMWBLlN0ZWxtYWNoLgoKU2lnbmVkLW9mZi1i eTogTWF0ZXVzeiBNb8WbY2lja2kgPG0ubW9zY2lja2kyQHBhcnRuZXIuc2Ftc3VuZy5jb20+ClNp Z25lZC1vZmYtYnk6IMWBdWthc3ogU3RlbG1hY2ggPGwuc3RlbG1hY2hAc2Ftc3VuZy5jb20+Ci0t LQogdG9vbHMvaHNpbml0L01ha2VmaWxlLmFtICAgICAgIHwgIDI5ICsrKysKIHRvb2xzL2hzaW5p dC9SRUFETUUub3JnICAgICAgICB8ICA1NiArKysrKysKIHRvb2xzL2hzaW5pdC9ib290c3RyYXAg ICAgICAgICB8ICAgNyArCiB0b29scy9oc2luaXQvY29uZmlndXJlLmFjICAgICAgfCAxMjggKysr KysrKysrKysrKysKIHRvb2xzL2hzaW5pdC9oc2luaXQuYyAgICAgICAgICB8IDI5OSArKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysKIHRvb2xzL2hzaW5pdC92ZW5kb3IvLmdpdGlnbm9y ZSB8ICAgNSArCiB0b29scy9oc2luaXQvdmVuZG9yL1NIQTI1NlNVTVMgfCAgIDIgKwogNyBmaWxl cyBjaGFuZ2VkLCA1MjYgaW5zZXJ0aW9ucygrKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHRvb2xzL2hz aW5pdC9NYWtlZmlsZS5hbQogY3JlYXRlIG1vZGUgMTAwNjQ0IHRvb2xzL2hzaW5pdC9SRUFETUUu b3JnCiBjcmVhdGUgbW9kZSAxMDA3NTUgdG9vbHMvaHNpbml0L2Jvb3RzdHJhcAogY3JlYXRlIG1v ZGUgMTAwNjQ0IHRvb2xzL2hzaW5pdC9jb25maWd1cmUuYWMKIGNyZWF0ZSBtb2RlIDEwMDY0NCB0 b29scy9oc2luaXQvaHNpbml0LmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCB0b29scy9oc2luaXQvdmVu ZG9yLy5naXRpZ25vcmUKIGNyZWF0ZSBtb2RlIDEwMDY0NCB0b29scy9oc2luaXQvdmVuZG9yL1NI QTI1NlNVTVMKCmRpZmYgLS1naXQgdG9vbHMvaHNpbml0L01ha2VmaWxlLmFtIHRvb2xzL2hzaW5p dC9NYWtlZmlsZS5hbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjNj OGIzY2ZmMWI2NAotLS0gL2Rldi9udWxsCisrKyB0b29scy9oc2luaXQvTWFrZWZpbGUuYW0KQEAg LTAsMCArMSwyOSBAQAorSU5JVFJBTUZTX0RJUiA9IC4vaW5pdHJhbWZzCisKK2Jpbl9QUk9HUkFN Uz1oc2luaXQKK2hzaW5pdF9MREZMQUdTID0gJChFTkFCTEVfU1RBVElDKQoraHNpbml0X1NPVVJD RVMgPSBoc2luaXQuYworaHNpbml0X0xJTksgPSAkKENDTEQpICQoaHNpbml0X0NGTEFHUykgJChD RkxBR1MpICQoaHNpbml0X0xERkxBR1MpIFwKKyAgICAgICAgJChMREZMQUdTKSAtbyAkQAorCisK K2RhdGFfREFUQSA9IGluaXRyYW1mcy5jcGlvLnh6CisKK0NQSU8gPSBAQ1BJT0AKK0NQSU9fRkxB R1MgPSAtbyAtLWZvcm1hdD1uZXdjCisKK1haPUBYWkAKK1haX0ZMQUdTID0gLS1jaGVjaz1jcmMz MiAtLWx6bWEyPWRpY3Q9MU1pQiAtZiAtaworCitFTkFCTEVfU1RBVElDID0gQEVOQUJMRV9TVEFU SUNACisKKyUueHogOiAlCisJeHogJChYWl9GTEFHUykgJDwKKworaW5pdHJhbWZzLmNwaW86IGhz aW5pdAorCWZvciBkIGluIGJpbiBkZXYgZXRjIGxpYiBtbnQgcHJvYyByb290IHNiaW4gc3lzOyBk byBcCisJCW1rZGlyIC1wICQoSU5JVFJBTUZTX0RJUikvJCRkOyBcCisJZG9uZQorCWNwICQ8ICQo SU5JVFJBTUZTX0RJUikvaW5pdAorCWNkICQoSU5JVFJBTUZTX0RJUik7IGZpbmQgLiAtcHJpbnQw IHwgY3BpbyAtLW51bGwgJChDUElPX0ZMQUdTKSA+IC4uLyRACisKZGlmZiAtLWdpdCB0b29scy9o c2luaXQvUkVBRE1FLm9yZyB0b29scy9oc2luaXQvUkVBRE1FLm9yZwpuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjI4NzQ3ODFiNWU3MAotLS0gL2Rldi9udWxsCisrKyB0 b29scy9oc2luaXQvUkVBRE1FLm9yZwpAQCAtMCwwICsxLDU2IEBACisqIGhzaW5pdAorCisgIGhz aW5pdCBpcyBhIG1pbmltYWwgaW5pdCBwcm9ncmFtIGZvciBib290L2xvYWRlciAoYS5rLmEuIGst Ym9vdCkgb24KKyAgT2Ryb2lkIFhVNCBhbmQgb3RoZXIgcGxhdGZvcm1zIHdpdGggbGltaXRlZCBz aXplIG9mIGJvb3Rsb2FkZXIKKyAgaW1hZ2UuICgxTWlCIG9uIE9kcm9pZCBYVTQpLiBJdHMgc29s ZSBwdXJwb3NlIGlzIHRvIHVucGFjayB0aGUgcmVzdAorICBvZiB0aGUgaW5pdHJhbWZzIGltYWdl IGZyb20gYW4gYXJjaGl2ZSBwb2ludGVkIGJ5IHRoZSAnaHMnIHBhcmFtZXRlcgorICBpbiAvcHJv Yy9jbWRsaW5lLiBGb3IgZXhhbXBsZToKKworIytCRUdJTl9FWEFNUExFOgorICAgICAgaHM9L2Rl di9tbWNibGsxcDY6dXJvb3QuY3Bpby5negorIytFTkRfRVhBTVBMRQorCisgIHdpbGwgbWFrZSBo c2luaXQgbW91bnQgL2Rldi9tbWNibGsxcDYgYW5kIHVucGFjayB0aGUgY29udGVudCBvZgorICB1 cm9vdC5jcGlvLmd6IG9udG8gaW5pdHJhbWZzLiBQbGVhc2Ugbm90ZSB0aGF0IHVubGlrZSB0aGUg b2xkIGluaXRyZAorICBpbml0cmFtZnMgaGFzbid0IGdvdCBmaXhlZCBzaXplIGFuZCBpcyBtdWNo IG1vcmUgc3VpdGFibGUgZm9yIGhzaW5pdAorICB0byB3b3JrIHdpdGguCisKKyogQnVpbGRpbmcg aHNpbml0CisKKyAgVGhlIGJhc2ljIHdheSB0byBidWlsZCBoc2luaXQgb24gYSBob3N0IHN5c3Rl bSBpcworCisjK0JFR0lOX1NSQyBzaAorICAuL2Jvb3RzdHJhcCAmJiAuL2NvbmZpZ3VyZSAmJiBt YWtlCisjK0VORF9TUkMKKworICBUaGUgb25seSBkaXJlY3QgZGVwZW5kZW5jeSBvZiBoc2luaXQg aXMgW1todHRwczovL2xpYmFyY2hpdmUub3JnL11bbGliYXJjaGl2ZV1dLCB3aGljaCwgaG93ZXZl ciwKKyAgbmVlZHMgYXQgbGVhc3QgemxpYiB0byBzdXBwb3J0IHJlYXNvbmFibGUgY29tcHJlc3Np b24uIFlvdSB1c2UKKyAgbGliYXJjaGl2ZSBhbmQgbGlieiBwYWNrYWdlZCBmb3IgeW91ciBzeXN0 ZW0gb3IgZG93bmxvYWQgYXBwcm9wcmlhdGUKKyAgYXJjaGl2ZXMgaW50byB0aGUgdmVuZG9yIGRp cmVjdG9yeSAoc2VlIHZlbmRvci9TSEEyNTZTVU1TKSBhbmQgdGhlCisgIGxpYnJhcmllcyBzaGFs bCBiZSBidWlsdCBhdXRvbWF0aWNhbGx5LgorCisqIEJ1aWxkaW5nIGZvciBtdXNsCisKKyAgV2hp bGUgaXQgaXMgcG9zc2libGUgdG8gYnVpbGQgaHNpbml0IGZvciB0aGUgaG9zdCBzeXN0ZW0gKGUu Zy4geDg2KQorICBhbmQgbGluayBpdCBkeW5hbWljYWxseSwgaXQgbWFrZXMgbGl0dGxlIHNlbnMu IE1vc3Qgb2YgdGhlIHRpbWUgeW91CisgIHdpbGwgd2FudCB0byBjb21waWxlIHRvIGZvciBkaWZm ZXJlbnQgQ1BVIGFuZCBsaW5rIGl0IHN0YXRpY2FsbHkgYWdhaW5zdAorICBhIEMgbGlicmFyeSBv dGhlciB0aGFuIEdOVSBDIExpYnJhcnkgdG8gbWFrZSB0aGUgYmluYXJ5IHNtYWxsIGVub3VnaAor ICB0byBmaXQgdGhlIGltYWdlLgorCisgIFRvIGNyb3NzLWNvbXBpbGUgaHNpbml0IGZvciBBUk0g YW5kIGxpbmsgaXQgc3RhdGljYWxseSBhZ2FpbnN0IG11c2wKKyAgcnVuIHRoZSBmb2xsb3dpbmcg Y29tbWFuZC4KKworIytCRUdJTl9TUkMgc2gKKyAgLi9ib290c3RyYXAgJiYgXAorICAgIE1VU0xf RElSPS91c3IvbGliL2FybS1saW51eC1tdXNsZWFiaS8gXAorICAgIEdDQ19DUk9TU19ESVI9L3Vz ci9saWIvZ2NjLWNyb3NzL2FybS1saW51eC1nbnVlYWJpLzgvIFwKKyAgICBDUFBGTEFHUz0nLW5v c3RkaW5jIC1pc3lzdGVtIC91c3IvaW5jbHVkZS9hcm0tbGludXgtbXVzbGVhYmkvJyBcCisgICAg Q0ZMQUdTPSctbXRodW1iIC1PcyAtZmZ1bmN0aW9uLXNlY3Rpb25zIC1mZGF0YS1zZWN0aW9ucycg XAorICAgIExJQkFSQ0hJVkVfQ1BQX0ZMQUdTPS1JL3Vzci9pbmNsdWRlL2FybS1saW51eC1tdXNs ZWFiaS8gXAorICAgIExJQkFSQ0hJVkVfQ19GTEFHUz0kQ0ZMQUdTIFwKKyAgICBaTElCX0NfRkxB R1M9JENGTEFHUyBcCisgICAgTERGTEFHUz0iLW5vc3RkbGliIC1MJHtNVVNMX0RJUn0vIC1MJHtH Q0NfQ1JPU1NfRElSfS8gJHtNVVNMX0RJUn0vY3J0MS5vICAke01VU0xfRElSfS9jcnRpLm8gICR7 R0NDX0NST1NTX0RJUn0vY3J0YmVnaW4ubyAtV2wsLS1nYy1zZWN0aW9ucyAtV2wsLS1zdGFydC1n cm91cCAgJHtHQ0NfQ1JPU1NfRElSfS9saWJnY2MuYSAgJHtHQ0NfQ1JPU1NfRElSfS9saWJnY2Nf ZWguYSAtV2wsLS1lbmQtZ3JvdXAgJHtHQ0NfQ1JPU1NfRElSfS9jcnRlbmQubyAgJHtNVVNMX0RJ Un0vY3J0bi5vIC1zIiAgXAorICAgIExJQlM9Ii1sYyAtbGdjYyIKKyAgLi9jb25maWd1cmUgLS1l bmFibGUtbG9jYWwtbGlicmFyaWVzIC0taG9zdD1hcm0tbGludXgtZ251ZWFiaSAtLWVuYWJsZS1z dGF0aWMgJiYgXAorICBtYWtlCisjK0VORF9TUkMKZGlmZiAtLWdpdCB0b29scy9oc2luaXQvYm9v dHN0cmFwIHRvb2xzL2hzaW5pdC9ib290c3RyYXAKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXgg MDAwMDAwMDAwMDAwLi5kM2U5ZmJjOGE2YzMKLS0tIC9kZXYvbnVsbAorKysgdG9vbHMvaHNpbml0 L2Jvb3RzdHJhcApAQCAtMCwwICsxLDcgQEAKKyMhL2Jpbi9zaAorCitzZXQgLXggLWUKKyNhY2xv Y2FsCisjYXV0b2hlYWRlcgorI2F1dG9jb25mCithdXRvcmVjb25mIC1pIC1mIC12CmRpZmYgLS1n aXQgdG9vbHMvaHNpbml0L2NvbmZpZ3VyZS5hYyB0b29scy9oc2luaXQvY29uZmlndXJlLmFjCm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMTM1ZjUzMzU0YzlhCi0tLSAv ZGV2L251bGwKKysrIHRvb2xzL2hzaW5pdC9jb25maWd1cmUuYWMKQEAgLTAsMCArMSwxMjggQEAK K2RubAorZG5sIGNvbmZpZ3VyZS5hYyBmb3IgaHNpbml0CitkbmwKKworQUNfUFJFUkVRKDIuNjkp CitBQ19JTklUKGhzaW5pdCwgMS4wLjApCitBQ19DT05GSUdfU1JDRElSKFsuL2hzaW5pdC5jXSkK K0FDX0NPTkZJR19BVVhfRElSKFtidWlsZC1hdXhdKQorQU1fSU5JVF9BVVRPTUFLRShbZm9yZWln bl0pCitBQ19DT05GSUdfSEVBREVSUyhbY29uZmlnLmhdKQorQUNfTEFORyhDKQorQUNfUFJPR19D QworUEtHX1BST0dfUEtHX0NPTkZJRworCitkbmwgLS0gUHJlcGFyZSBmb3IgY3Jvc3MtY29tcGls YXRpb24KK0FDX0NBTk9OSUNBTF9IT1NUCitpZiB0ZXN0ICIke2J1aWxkfSIgIT0gIiR7aG9zdH0i IDsgdGhlbgorICAgICAgICBBQ19DSEVDS19QUk9HUyhCVUlMRF9DQywgWyR7YnVpbGRfYWxpYXN9 LWdjYyAke2J1aWxkfS1nY2MgZ2NjXSkKKyAgICAgICAgQUNfQ0hFQ0tfUFJPR1MoQlVJTERfTEQs IFske2J1aWxkX2FsaWFzfS1sZCAke2J1aWxkfS1sZCBsZF0pCisgICAgICAgIEFDX0NIRUNLX1BS T0dTKEhPU1RfQ0MsIFske2hvc3RfYWxpYXN9LWdjYyAke2hvc3R9LWdjYyBnY2NdKQorICAgICAg ICBBQ19DSEVDS19QUk9HUyhIT1NUX0xELCBbJHtob3N0X2FsaWFzfS1sZCAke2hvc3R9LWxkIGxk XSkKK2Vsc2UKKyAgICAgICAgQlVJTERfQ0M9IiRDQyIKKyAgICAgICAgQlVJTERfTEQ9IiRMRCIK KworICAgICAgICBIT1NUX0NDPSIkQ0MiCisgICAgICAgIEhPU1RfTEQ9IiRMRCIKK2ZpCisKKwor QUNfQVJHX0VOQUJMRShsb2NhbC1saWJyYXJpZXMsCisgIEFTX0hFTFBfU1RSSU5HKFstLWVuYWJs ZS1sb2NhbC1saWJyYXJpZXNdLFtCdWlsZCBhbmQgdXNlIGxvY2FsIHZlcnNpb25zIG9mIGxpYmFy Y2hpdmUgYW5kIHpsaWJdKSwKKyAgRU5BQkxFX0xPQ0FMX0xJQlM9eWVzKQorCitBQ19BUkdfRU5B QkxFKHN0YXRpYywKKyAgQVNfSEVMUF9TVFJJTkcoWy0tZW5hYmxlLXN0YXRpY10sIFtCdWlsZCBz dGF0aWMgYmluYXJ5XSksCisgIEVOQUJMRV9TVEFUSUM9LXN0YXRpYykKKworQUNfQVJHX1ZBUiha TElCX0NfRkxBR1MsIFtDRkxBR1MgZm9yIGxvY2FsIHpsaWIgY29tcGlsYXRpb25dKQorQUNfQVJH X1ZBUihaTElCX0NQUF9GTEFHUywgW0NQUEZMQUdTIGZvciBsb2NhbCB6bGliIGNvbXBpbGF0aW9u XSkKK0FDX0FSR19WQVIoWkxJQl9MRF9GTEFHUywgW0xERkxBR1MgZm9yIGxvY2FsIHpsaWIgY29t cGlsYXRpb25dKQorQUNfQVJHX1ZBUihMSUJBUkNISVZFX0NfRkxBR1MsIFtDRkxBR1MgZm9yIGxv Y2FsIGxpYmFyY2hpdmUgY29tcGlsYXRpb25dKQorQUNfQVJHX1ZBUihMSUJBUkNISVZFX0NQUF9G TEFHUywgW0NQUEZMQUdTIGZvciBsb2NhbCBsaWJhcmNoaXZlIGNvbXBpbGF0aW9uXSkKK0FDX0FS R19WQVIoTElCQVJDSElWRV9MRF9GTEFHUywgW0xERkxBR1MgZm9yIGxvY2FsIGxpYmFyY2hpdmUg Y29tcGlsYXRpb25dKQorCitBQ19TVUJTVChFTkFCTEVfU1RBVElDKQorQUNfU1VCU1QoSE9TVF9D RkxBR1MsIFsiJENGTEFHUyJdKQorQUNfU1VCU1QoSE9TVF9DUFBGTEFHUywgWyIkQ1BQRkxBR1Mi XSkKK0FDX1NVQlNUKEhPU1RfTERGTEFHUywgWyIkTERGTEFHUyJdKQorCitBQ19QQVRIX1BST0co Q1BJTywgY3BpbykKK0FDX1BBVEhfUFJPRyhYWiwgeHopCitBQ19QQVRIX1BST0coU0hBMjU2U1VN LCBzaGEyNTZzdW0pCisKKworQVNfSUYoW3Rlc3QgLW4gIiR7RU5BQkxFX0xPQ0FMX0xJQlN9Il0s CisgIEFDX01TR19DSEVDS0lORyhbZm9yIGxvY2FsIGxpYnJhcmllc10pCisgIEFTX0lGKFtjZCAk c3JjZGlyL3ZlbmRvciAmJiAkU0hBMjU2U1VNIC1jIFNIQTI1NlNVTVMgLS1xdWlldCAmJiBjZCAt ID4gL2Rldi9udWxsXSwKKyAgICAgICAgQUNfTVNHX1JFU1VMVChbb2tdKSwKKyAgICAgICAgQUNf TVNHX0VSUk9SKFtlcnJvcl0pKSkKK0FTX0lGKFt0ZXN0IC1uICIke0VOQUJMRV9MT0NBTF9MSUJT fSIgJiYgL2Jpbi90cnVlXSwKKyAgcHVzaGQgdmVuZG9yCisgIG1rZGlyIC1wIGxpYnMKKyAgemxp Yl9hcmNoaXZlPSQoZ3JlcCAtbyB6bGliLS4qIFNIQTI1NlNVTVMpCisgIHpsaWJfZGlyPSR7emxp Yl9hcmNoaXZlJS50YXIuZ3p9CisgIEFDX01TR19OT1RJQ0UoW0J1aWxkaW5nICR7emxpYl9kaXJ9 XSkKKyAgcm0gLXJmICIkemxpYl9kaXIiCisgIHRhciAteGYgIiR6bGliX2FyY2hpdmUiCisgIGNk ICIkemxpYl9kaXIiCisgIENGTEFHUz0iJHtaTElCX0NfRkxBR1N9IiBcCisgIENQUEZMQUdTPSIk e1pMSUJfQ1BQX0ZMQUdTfSIgXAorICBMREZMQUdTPSIke1pMSUJfTERfRkxBR1N9IiBcCisgIENS T1NTX1BSRUZJWD0iJHtob3N0X2FsaWFzOi0ke2hvc3R9fS0iIC4vY29uZmlndXJlICR7RU5BQkxF X1NUQVRJQzorLS1zdGF0aWN9IC0tcHJlZml4PSQocHdkKS8uLi9saWJzCisgIG1ha2UgLWo4IGlu c3RhbGwKKworICBjZCAuLgorICAKKyAgbGliYXJjaGl2ZV9hcmNoaXZlPSQoZ3JlcCAtbyBsaWJh cmNoaXZlLS4qIFNIQTI1NlNVTVMpCisgIGxpYmFyY2hpdmVfZGlyPSR7bGliYXJjaGl2ZV9hcmNo aXZlJS50YXIuZ3p9CisgIHJtIC1yZiAiJGxpYmFyY2hpdmVfZGlyIgorICB0YXIgLXhmICIkbGli YXJjaGl2ZV9hcmNoaXZlIgorICBjZCAkbGliYXJjaGl2ZV9kaXIKKworICBQS0dfQ09ORklHX1BB VEg9JChwd2QpLy4uL2xpYnMvbGliL3BrZ2NvbmZpZworICBDRkxBR1M9IiR7TElCQVJDSElWRV9D X0ZMQUdTfSIgXAorICBDUFBGTEFHUz0iJHtMSUJBUkNISVZFX0NQUF9GTEFHU30iIFwKKyAgTERG TEFHUz0iJHtMSUJBUkNISVZFX0xEX0ZMQUdTfSIgXAorICAuL2NvbmZpZ3VyZSAtLWhvc3Q9JHto b3N0X2FsaWFzOi0ke2hvc3R9fSBcCisgICR7RU5BQkxFX1NUQVRJQzorLS1lbmFibGUtc3RhdGlj IC0tZGlzYWJsZS1zaGFyZWR9IFwKKyAgLS1wcmVmaXg9JChwd2QpLy4uL2xpYnMgXAorICAtLWRp c2FibGUtYnNkdGFyIFwKKyAgLS1kaXNhYmxlLWJzZGNhdCBcCisgIC0tZGlzYWJsZS1ic2RjcGlv IFwKKyAgLS1kaXNhYmxlLXhhdHRyIFwKKyAgLS1kaXNhYmxlLWFjbCBcCisgIC0tZGlzYWJsZS1z aGFyZWQgXAorICAtLWRpc2FibGUtbGFyZ2VmaWxlIFwKKyAgLS13aXRob3V0LWJ6MmxpYiBcCisg IC0td2l0aG91dC1pY29udiBcCisgIC0td2l0aG91dC1sejQgIFwKKyAgLS13aXRob3V0LWx6bWEg XAorICAtLXdpdGhvdXQtbHpvMiBcCisgIC0td2l0aG91dC1jbmcgICAgIFwKKyAgLS13aXRob3V0 LW5ldHRsZSBcCisgIC0td2l0aG91dC1vcGVuc3NsIFwKKyAgLS13aXRob3V0LXhtbDIgICAgXAor ICAtLXdpdGhvdXQtZXhwYXQKKyAgbWFrZSAtajggaW5zdGFsbAorICBwb3BkCispCisKK0FTX0lG KFt0ZXN0IC1uICIke0VOQUJMRV9MT0NBTF9MSUJTfSJdLAorICBleHBvcnQgUEtHX0NPTkZJR19Q QVRIPSQocHdkKS92ZW5kb3IvbGlicy9saWIvcGtnY29uZmlnLworKQorQVNfSUYoW3Rlc3QgLW4g IiRFTkFCTEVfU1RBVElDIl0sCisgIFtQS0dfQ0hFQ0tfTU9EVUxFU19TVEFUSUMoW0xJQkFSQ0hJ VkVdLCBbbGliYXJjaGl2ZV0pXSwKKyAgW1BLR19DSEVDS19NT0RVTEVTKFtMSUJBUkNISVZFXSwg W2xpYmFyY2hpdmVdKV0pCisKK0NGTEFHUz0iJENGTEFHUyAkTElCQVJDSElWRV9DRkxBR1MiCitM SUJTPSIkTElCUyAkTElCQVJDSElWRV9MSUJTIgorCitkbmwgLS0tT3V0cHV0CitBQ19PVVRQVVQo W01ha2VmaWxlXSkKKworZWNobworZWNobyBIb3N0IENDOiAkSE9TVF9DQworZWNobyBCdWlsZCBD QzogJEJVSUxEX0NDCitlY2hvCmRpZmYgLS1naXQgdG9vbHMvaHNpbml0L2hzaW5pdC5jIHRvb2xz L2hzaW5pdC9oc2luaXQuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAu LjgzMzJjMDZiODUwMQotLS0gL2Rldi9udWxsCisrKyB0b29scy9oc2luaXQvaHNpbml0LmMKQEAg LTAsMCArMSwyOTkgQEAKKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDxzdGRkZWYuaD4K KyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHN0ZGJvb2wuaD4KKyNpbmNsdWRlIDxzeXMv bW91bnQuaD4KKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyNpbmNsdWRlIDxsaW1pdHMuaD4KKyNp bmNsdWRlIDxmY250bC5oPgorI2luY2x1ZGUgPHVuaXN0ZC5oPgorI2luY2x1ZGUgPGVycm5vLmg+ CisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSA8YXJjaGl2ZS5oPgorI2luY2x1ZGUgPGFy Y2hpdmVfZW50cnkuaD4KKyNpbmNsdWRlIDxkaXJlbnQuaD4KKworCisjZGVmaW5lIENPTU1BTkRf TElORV9TSVpFIDUxMgorI2RlZmluZSBQQVJBTV9OQU1FICJocyIKKworLyoKKyAqIEJhc2VkIG9u IGV4YW1wbGVzOgorICogaHR0cHM6Ly9naXRodWIuY29tL2xpYmFyY2hpdmUvbGliYXJjaGl2ZS93 aWtpL0V4YW1wbGVzCisgKi8KK2ludCBjb3B5X2RhdGEoc3RydWN0IGFyY2hpdmUgKmFyLCBzdHJ1 Y3QgYXJjaGl2ZSAqYXcpCit7CisJaW50IHI7CisJY29uc3Qgdm9pZCAqYnVmZjsKKwlzaXplX3Qg c2l6ZTsKKwlpbnQ2NF90IG9mZnNldDsKKworCWZvciAoOzspIHsKKwkJciA9IGFyY2hpdmVfcmVh ZF9kYXRhX2Jsb2NrKGFyLCAmYnVmZiwgJnNpemUsICZvZmZzZXQpOworCQlpZiAociA9PSBBUkNI SVZFX0VPRikKKwkJCXJldHVybiAoQVJDSElWRV9PSyk7CisJCWlmIChyIDwgQVJDSElWRV9PSykK KwkJCXJldHVybiAocik7CisJCXIgPSBhcmNoaXZlX3dyaXRlX2RhdGFfYmxvY2soYXcsIGJ1ZmYs IHNpemUsIG9mZnNldCk7CisJCWlmIChyIDwgQVJDSElWRV9PSykgeworCQkJcHJpbnRmKCIlc1xu IiwgYXJjaGl2ZV9lcnJvcl9zdHJpbmcoYXcpKTsKKwkJCXJldHVybiAocik7CisJCX0KKwl9Cit9 CisKK3N0YXRpYyBpbnQgZXh0cmFjdChjb25zdCBjaGFyICpmaWxlbmFtZSkKK3sKKwlzdHJ1Y3Qg YXJjaGl2ZSAqYTsKKwlzdHJ1Y3QgYXJjaGl2ZSAqZXh0OworCXN0cnVjdCBhcmNoaXZlX2VudHJ5 ICplbnRyeTsKKwlpbnQgZmxhZ3M7CisJaW50IHI7CisKKwlmbGFncyA9IEFSQ0hJVkVfRVhUUkFD VF9USU1FOworCWZsYWdzIHw9IEFSQ0hJVkVfRVhUUkFDVF9QRVJNOworCWZsYWdzIHw9IEFSQ0hJ VkVfRVhUUkFDVF9BQ0w7CisJZmxhZ3MgfD0gQVJDSElWRV9FWFRSQUNUX0ZGTEFHUzsKKworCWEg PSBhcmNoaXZlX3JlYWRfbmV3KCk7CisJYXJjaGl2ZV9yZWFkX3N1cHBvcnRfZm9ybWF0X2NwaW8o YSk7CisJYXJjaGl2ZV9yZWFkX3N1cHBvcnRfZmlsdGVyX2d6aXAoYSk7CisJZXh0ID0gYXJjaGl2 ZV93cml0ZV9kaXNrX25ldygpOworCWFyY2hpdmVfd3JpdGVfZGlza19zZXRfb3B0aW9ucyhleHQs IGZsYWdzKTsKKwlhcmNoaXZlX3dyaXRlX2Rpc2tfc2V0X3N0YW5kYXJkX2xvb2t1cChleHQpOwor CisJaWYgKChyID0gYXJjaGl2ZV9yZWFkX29wZW5fZmlsZW5hbWUoYSwgZmlsZW5hbWUsIDEwMjQw KSkpCisJCXJldHVybiAtMTsKKworCWZvciAoOzspIHsKKwkJciA9IGFyY2hpdmVfcmVhZF9uZXh0 X2hlYWRlcihhLCAmZW50cnkpOworCQlpZiAociA9PSBBUkNISVZFX0VPRikKKwkJCWJyZWFrOwor CQlpZiAociA8IEFSQ0hJVkVfT0spCisJCQlwcmludGYoIiVzXG4iLCBhcmNoaXZlX2Vycm9yX3N0 cmluZyhhKSk7CisJCWlmIChyIDwgQVJDSElWRV9XQVJOKQorCQkJcmV0dXJuIC0xOworCQlyID0g YXJjaGl2ZV93cml0ZV9oZWFkZXIoZXh0LCBlbnRyeSk7CisJCWlmIChyIDwgQVJDSElWRV9PSykK KwkJCXByaW50ZigiJXNcbiIsIGFyY2hpdmVfZXJyb3Jfc3RyaW5nKGV4dCkpOworCQllbHNlIGlm IChhcmNoaXZlX2VudHJ5X3NpemUoZW50cnkpID4gMCkgeworCQkJciA9IGNvcHlfZGF0YShhLCBl eHQpOworCQkJaWYgKHIgPCBBUkNISVZFX09LKQorCQkJCXByaW50ZigiJXNcbiIsIGFyY2hpdmVf ZXJyb3Jfc3RyaW5nKGV4dCkpOworCQkJaWYgKHIgPCBBUkNISVZFX1dBUk4pCisJCQkJcmV0dXJu IC0xOworCQl9CisKKwkJciA9IGFyY2hpdmVfd3JpdGVfZmluaXNoX2VudHJ5KGV4dCk7CisKKwkJ aWYgKHIgPCBBUkNISVZFX09LKQorCQkJcHJpbnRmKCIlc1xuIiwgYXJjaGl2ZV9lcnJvcl9zdHJp bmcoZXh0KSk7CisJCWlmIChyIDwgQVJDSElWRV9XQVJOKQorCQkJcmV0dXJuIC0xOworCX0KKwor CWFyY2hpdmVfcmVhZF9jbG9zZShhKTsKKwlhcmNoaXZlX3JlYWRfZnJlZShhKTsKKwlhcmNoaXZl X3dyaXRlX2Nsb3NlKGV4dCk7CisJYXJjaGl2ZV93cml0ZV9mcmVlKGV4dCk7CisKKwlyZXR1cm4g MTsKK30KKworaW50IG1vdW50X3N5c2ZzKCkKK3sKKwlyZXR1cm4gbW91bnQoIm5vbmUiLCAiL3N5 cyIsICJzeXNmcyIsIE1TX05PRVhFQyB8CisJCQkJCU1TX1JFTEFUSU1FIHwgTVNfTk9ERVYgfCBN U19OT1NVSUQsIE5VTEwpOworfQorCitpbnQgbW91bnRfcHJvY2ZzKCkKK3sKKwlyZXR1cm4gbW91 bnQoIm5vbmUiLCAiL3Byb2MiLCAicHJvYyIsIE1TX05PRVhFQyB8CisJCQkJCU1TX1JFTEFUSU1F IHwgTVNfTk9ERVYgfCBNU19OT1NVSUQsIE5VTEwpOworfQorCitpbnQgbW91bnRfZGV2ZnMoKQor eworCXJldHVybiBtb3VudCgibm9uZSIsICIvZGV2IiwgImRldnRtcGZzIiwgTVNfTk9FWEVDIHwK KwkJCQkJTVNfUkVMQVRJTUUgfCBNU19OT1NVSUQsIE5VTEwpOworfQorCitpbnQgbW91bnRfc3Rv cmFnZShjaGFyICpkZXZpY2UpCit7CisJY2hhciBCVUZGWzI1Nl07CisJc3ByaW50ZihCVUZGLCAi JXMiLCBkZXZpY2UpOworCS8vIG1vdW50KCIvZGV2L3NkYjYiLCAiL21udCIsICJ2ZmF0IiwgTVNf UkRPTkxZLCBOVUxMKSA9IDAKKwlyZXR1cm4gbW91bnQoQlVGRiwgIi9tbnQiLCAidmZhdCIsIDAs IE5VTEwpOworfQorCit2b2lkIGxzKGNoYXIgKmRpcikKK3sKKwlESVIgKmQgPSBOVUxMOworCXN0 cnVjdCBkaXJlbnQgKmRlOworCisJZCA9IG9wZW5kaXIoZGlyKTsKKworCWlmIChkID09IE5VTEwp IHsKKwkJcHJpbnRmKCJFcnJvciBvcGVuaW5nIGRpcmVjdG9yeTogJXNcbiIsIGRpcik7CisJCXJl dHVybjsKKwl9CisKKwlwcmludGYoIlJlYWRpbmcgJXNcbiIsIGRpcik7CisJd2hpbGUgKChkZSA9 IHJlYWRkaXIoZCkpICE9IE5VTEwpIHsKKwkJcHJpbnRmKCIlc1xuIiwgZGUtPmRfbmFtZSk7CisJ fQorCXByaW50ZigiXG4iKTsKK30KKworaW50IHVtb3VudF9zdG9yYWdlKCkKK3sKKwlyZXR1cm4g dW1vdW50KCIvbW50Iik7Cit9CisKK2ludCByZWFkX2NtZF9wYXJhbXMoY2hhciAqYnVmZikKK3sK KwlpbnQgZmQgPSBvcGVuKCIvcHJvYy9jbWRsaW5lIiwgT19SRE9OTFkpOworCWlmIChmZCA8IDAp IHsKKwkJcHJpbnRmKCJPcGVuIC9wcm9jL2NtZGxpbmUgZXJyb3I6ICVzIiwgc3RyZXJyb3IoZXJy bm8pKTsKKwkJcmV0dXJuIGZkOworCX0KKworCWludCByZWFkZWQgPSByZWFkKGZkLCBidWZmLCBD T01NQU5EX0xJTkVfU0laRS0xKTsKKworCWlmIChyZWFkZWQgPj0gMCkKKwkJYnVmZltyZWFkZWRd ID0gJ1wwJzsKKwlyZXR1cm4gcmVhZGVkOworfQorCisvKgorICogR2V0IHBhcmFtPXZhbHVlIGZy b20gL3Byb2MvY21kbGluZQorICovCitjb25zdCBjaGFyICpmaW5kX3BhcmFtKGNvbnN0IGNoYXIg KmNtZGxpbmUsIGNvbnN0IGNoYXIgKnBhcmFtX25hbWUsIGNoYXIgKnZhbHVlKQoreworCWNvbnN0 IGNoYXIgKmN1ciA9IGNtZGxpbmU7CisJYm9vbCBpbl9xdW90ZSA9IGZhbHNlOworCWJvb2wgYmVn aW4gPSB0cnVlOworCWludCBwYXJhbV9uYW1lX2xlbiA9IHN0cmxlbihwYXJhbV9uYW1lKTsKKwlp bnQgaSwgbGVuZ3RoOworCisJd2hpbGUgKCpjdXIgIT0gJ1wwJykgeworCQlpZiAoYmVnaW4pIHsK KwkJCWZvciAoaSA9IDA7ICoocGFyYW1fbmFtZStpKSAhPSAnXDAnICYmCisJCQkgICAgICooY3Vy ICsgaSkgPT0gKihwYXJhbV9uYW1lK2kpOyBpKyspOworCisJCQlpZiAoaSA9PSBwYXJhbV9uYW1l X2xlbiAmJiAoKihjdXIraSkgPT0gJz0nKSkgeworCQkJCWN1ciArPSBpKzE7CisJCQkJYnJlYWs7 CisJCQl9CisJCQliZWdpbiA9IGZhbHNlOworCQl9CisKKwkJaWYgKCpjdXIgPT0gJ1wiJykKKwkJ CWluX3F1b3RlID0gIWluX3F1b3RlOworCisJCWlmICghaW5fcXVvdGUgJiYgKmN1ciA9PSAnICcp CisJCQliZWdpbiA9IHRydWU7CisKKwkJY3VyKys7CisJfQorCisJaWYgKCpjdXIgPiAwKSB7CisJ CWZvciAoaSA9IDA7ICooY3VyK2kpICE9ICcgJyAmJiAqKGN1citpKSAhPSAnXDAnICYmICooY3Vy K2kpICE9ICdcbic7IGkrKyk7CisJCWxlbmd0aCA9IGkgPiAoQ09NTUFORF9MSU5FX1NJWkUgLSAx KSA/IChDT01NQU5EX0xJTkVfU0laRSAtIDEpIDogaTsKKwkJbWVtY3B5KHZhbHVlLCBjdXIsIGxl bmd0aCk7CisJCXZhbHVlW2xlbmd0aF0gPSAnXDAnOworCX0KKwlyZXR1cm4gY3VyOworfQorCitp bnQgcGFyc2VfY21kbGluZShjb25zdCBjaGFyICpjbWRsaW5lLCBjaGFyICpkZXZpY2UsIGNoYXIg KmRlc3QpCit7CisJY2hhciB2YWx1ZVtDT01NQU5EX0xJTkVfU0laRV07CisJY29uc3QgY2hhciAq cmVzID0gZmluZF9wYXJhbShjbWRsaW5lLCBQQVJBTV9OQU1FLCB2YWx1ZSk7CisKKwlpZiAoKnJl cyA9PSAwKSB7CisJCXByaW50ZigiaHMgcGFyYW0gbm90IGZvdW5kXG4iKTsKKwkJcmV0dXJuIDA7 CisJfQorCisJY2hhciAqciA9IHN0cnRvayh2YWx1ZSwgIjoiKTsKKwlpZiAociA9PSBOVUxMKSB7 CisJCXByaW50ZigiV3Jvbmcgc2ggcGFyYW1ldGVyIGZvcm1hdFxuIik7CisJCXJldHVybiAtMTsK Kwl9CisKKwlzdHJuY3B5KGRldmljZSwgciwgTkFNRV9NQVgpOworCisJciA9IHN0cnRvayhOVUxM LCAiOiIpOworCWlmIChyID09IE5VTEwpIHsKKwkJcHJpbnRmKCJXcm9uZyBocyBwYXJhbWV0ZXIg Zm9ybWF0XG4iKTsKKwkJcmV0dXJuIC0xOworCX0KKworCXN0cm5jcHkoZGVzdCwgciwgTkFNRV9N QVgpOworCisJcmV0dXJuIDE7Cit9CisKK2ludCBtYWluKHZvaWQpCit7CisJY2hhciBwYXJhbXNb Q09NTUFORF9MSU5FX1NJWkVdOworCWNoYXIgZGV2aWNlW05BTUVfTUFYXTsKKwljaGFyIGluaXRy YW1mc19mbltOQU1FX01BWF07CisJY2hhciBmdWxsX2lyZnNfZmlsZVtQQVRIX01BWF07CisKKwlw cmludGYoIkhlbGxvLi4uXG4iKTsKKworCWlmIChtb3VudF9zeXNmcygpIDwgMCkgeworCQlwcmlu dGYoIk1vdW50IHN5c2ZzIGVycm9yOiAlc1xuIiwgc3RyZXJyb3IoZXJybm8pKTsKKwkJZXhpdCgx KTsKKwl9CisKKwlpZiAobW91bnRfcHJvY2ZzKCkgPCAwKSB7CisJCXByaW50ZigiTW91bnQgcHJv Y2ZzIGVycm9yOiAlc1xuIiwgc3RyZXJyb3IoZXJybm8pKTsKKwkJZXhpdCgxKTsKKwl9CisKKwlp ZiAobW91bnRfZGV2ZnMoKSA8IDApIHsKKwkJcHJpbnRmKCJNb3VudCBkZXZmcyBlcnJvcjogJXNc biIsIHN0cmVycm9yKGVycm5vKSk7CisJCWV4aXQoMSk7CisJfQorCisJcHJpbnRmKCJTbGVlcCB6 elpaLi4uXG4iKTsKKwlzbGVlcCgxKTsKKwlwcmludGYoIldha2UgdXAgOilcbiIpOworCisJbHMo Ii9kZXYiKTsKKworCWlmIChyZWFkX2NtZF9wYXJhbXMocGFyYW1zKSA8IDApIHsKKwkJcHJpbnRm KCJSZWFkIGNtZF9wYXJhbXMgZXJyb3I6ICVzXG4iLCBzdHJlcnJvcihlcnJubykpOworCQlleGl0 KDEpOworCX0KKworCWlmIChwYXJzZV9jbWRsaW5lKHBhcmFtcywgZGV2aWNlLCBpbml0cmFtZnNf Zm4pIDw9IDApCisJCWV4aXQoMSk7CisKKwlpZiAobW91bnRfc3RvcmFnZShkZXZpY2UpIDwgMCkg eworCQlwcmludGYoIk1vdW50ICVzIGVycm9yOiAlc1xuIiwgZGV2aWNlLCBzdHJlcnJvcihlcnJu bykpOworCQlleGl0KDEpOworCX0KKworCXNwcmludGYoZnVsbF9pcmZzX2ZpbGUsICIvbW50LyVz IiwgaW5pdHJhbWZzX2ZuKTsKKworCWlmIChleHRyYWN0KGZ1bGxfaXJmc19maWxlKSA8PSAwKSB7 CisJCXByaW50ZigiRXh0cmFjdCBlcnJvcjogJXNcbiIsIHN0cmVycm9yKGVycm5vKSk7CisJCWV4 aXQoMSk7CisJfQorCisJdW1vdW50X3N0b3JhZ2UoKTsKKworCS8qaWYgKGV4ZWNsKCIvYmluL2J1 c3lib3giLCAic2giLCBOVUxMKSA8PSAwKSovCisJCS8qcHJpbnRmKCJFeGVjbCBlcnJvcjogJXNc biIsIHN0cmVycm9yKGVycm5vKSk7Ki8KKworCXByaW50ZigiSW5pdC4uLlxuIik7CisKKwlpZiAo ZXhlY2woIi9pbml0IiwgIi9pbml0IiwgKGNoYXIgKilOVUxMKSA8PSAwKQorCQlwcmludGYoIkV4 ZWNsIGVycm9yOiAlc1xuIiwgc3RyZXJyb3IoZXJybm8pKTsKKworCXJldHVybiAwOworfQpkaWZm IC0tZ2l0IHRvb2xzL2hzaW5pdC92ZW5kb3IvLmdpdGlnbm9yZSB0b29scy9oc2luaXQvdmVuZG9y Ly5naXRpZ25vcmUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4wN2E0 ZDczN2NiODcKLS0tIC9kZXYvbnVsbAorKysgdG9vbHMvaHNpbml0L3ZlbmRvci8uZ2l0aWdub3Jl CkBAIC0wLDAgKzEsNSBAQAorL3psaWItKi8KKy9saWJhcmNoaXZlLSovCisvbGlicy8KKy9saWJh cmNoaXZlLSoudGFyLmd6CisvemxpYi0qLnRhci5negpkaWZmIC0tZ2l0IHRvb2xzL2hzaW5pdC92 ZW5kb3IvU0hBMjU2U1VNUyB0b29scy9oc2luaXQvdmVuZG9yL1NIQTI1NlNVTVMKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5mZDQyYzQ0YmE5NDgKLS0tIC9kZXYvbnVs bAorKysgdG9vbHMvaHNpbml0L3ZlbmRvci9TSEEyNTZTVU1TCkBAIC0wLDAgKzEsMiBAQAorYzNl NWU5ZmRkNTAwNGRjYjU0MmZlZGE1ZWU0ZjBmZjA3NDQ2MjhiYWY4ZWQyZGQ1ZDY2ZjhjYTExOTdj YjFhMSAgemxpYi0xLjIuMTEudGFyLmd6CitlZDJkYmQ2OTU0NzkyYjJjMDU0Y2NmOGVjNGIzMzBh NTRiODU5MDRhODBjZWY0NzdhMWM3NDY0M2RkYWZhMGNlICBsaWJhcmNoaXZlLTMuMy4yLnRhci5n egotLSAKMi4yMC4xCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX18KbGludXgtYXJtLWtlcm5lbCBtYWlsaW5nIGxpc3QKbGludXgtYXJtLWtlcm5lbEBsaXN0 cy5pbmZyYWRlYWQub3JnCmh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGlu Zm8vbGludXgtYXJtLWtlcm5lbAo=