X-Original-To: alpine-aports@lists.alpinelinux.org Received: from mail.bitmessage.ch (mail.bitmessage.ch [146.228.112.252]) by lists.alpinelinux.org (Postfix) with ESMTP id 376645C56AA for ; Fri, 6 Oct 2017 18:46:29 +0000 (GMT) dkim-signature: v=1; a=rsa-sha256; d=bitmessage.ch; s=mail; c=relaxed/relaxed; q=dns/txt; h=From:Subject:Date:Message-ID:To:MIME-Version:Content-Type:Content-Transfer-Encoding; bh=Q0H4VfUQv8gXLRIbFv9e0cJm/Ndjt5FzwKdUA4CHgRA=; b=UxvZdFiIuVvib8fnAKEDOmxuU6QDmCCK1oXGdnOSuQoC4qbY41uGiS9fvNfY7PFuwe86oSuixXyRl3NLuFyjHtkbH8f11BJ+QIGe5AMZI8Po9qt7ubt5/yBkLVaKaaof29cubUURKNLWQgcjhREZV4uswOM2hjoj/XH18uPeiv8= Received: from alpine.my.domain (ip.178-71-21-48.avangarddsl.ru [178.71.21.48]) by mail.bitmessage.ch with ESMTPSA (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128) ; Fri, 6 Oct 2017 20:46:26 +0200 From: =?UTF-8?q?C=C3=A1g?= To: alpine-aports@lists.alpinelinux.org Subject: [alpine-aports] [PATCH] main/mg: update to the latest version Date: Fri, 6 Oct 2017 19:45:26 +0100 Message-Id: <20171006184526.3389-1-ca6c@bitmessage.ch> X-Mailer: git-send-email 2.14.2 X-Mailinglist: alpine-aports Precedence: list List-Id: Alpine Development List-Unsubscribe: List-Post: List-Help: List-Subscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 UmVtb3ZlIHRoZSBwYXRjaC4gSWdub3JlIHRoZSBwcmV2aW91cyBvbmUgYmVjYXVzZSBvZiBtaXNz aW5nDQpjaGVja3N1bXMuDQotLS0NCiBtYWluL21nL0FQS0JVSUxEICAgICAgfCAgIDEwICstDQog bWFpbi9tZy91bmljb2RlLnBhdGNoIHwgMTM0NyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogMiBmaWxlcyBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyks IDEzNTMgZGVsZXRpb25zKC0pDQogZGVsZXRlIG1vZGUgMTAwNjQ0IG1haW4vbWcvdW5pY29kZS5w YXRjaA0KDQpkaWZmIC0tZ2l0IGEvbWFpbi9tZy9BUEtCVUlMRCBiL21haW4vbWcvQVBLQlVJTEQN CmluZGV4IDViNWE5MDFmZWEuLjkzMzFiMmE2ZWUgMTAwNjQ0DQotLS0gYS9tYWluL21nL0FQS0JV SUxEDQorKysgYi9tYWluL21nL0FQS0JVSUxEDQpAQCAtMSw4ICsxLDggQEANCiAjIENvbnRyaWJ1 dG9yOiBMZWUgSGlubWFuIDxoaW5tYW5AZ21haWwuY29tPg0KICMgTWFpbnRhaW5lcjogQ8OhZyA8 Y2E2Y0BiaXRtZXNzYWdlLmNoPg0KIHBrZ25hbWU9bWcNCi1wa2d2ZXI9MjAxNzA0MDENCi1wa2dy ZWw9MQ0KK3BrZ3Zlcj0yMDE3MDgyOA0KK3BrZ3JlbD0wDQogcGtnZGVzYz0ibWljcm9zY29waWMg RU1BQ1Mgc3R5bGUgZWRpdG9yIg0KIHVybD0iaHR0cDovL2hvbWVwYWdlLmJvZXRlcy5vcmcvc29m dHdhcmUvbWciDQogYXJjaD0iYWxsIg0KQEAgLTEzLDcgKzEzLDYgQEAgaW5zdGFsbD0NCiBzdWJw YWNrYWdlcz0iJHBrZ25hbWUtZG9jIg0KIHNvdXJjZT0iaHR0cDovL2hvbWVwYWdlLmJvZXRlcy5v cmcvc29mdHdhcmUvbWcvJHBrZ25hbWUtJHBrZ3Zlci50YXIuZ3oNCiAJbWlzc2luZy1kZWZpbmVz LnBhdGNoDQotCXVuaWNvZGUucGF0Y2gNCiAJIg0KIA0KIF9idWlsZGRpcj0iJHNyY2RpciIvJHBr Z25hbWUtJHBrZ3Zlcg0KQEAgLTM5LDYgKzM4LDUgQEAgcGFja2FnZSgpIHsNCiAJaW5zdGFsbCAt RG02NDQgdHV0b3JpYWwgIiRwa2dkaXIiL3Vzci9zaGFyZS9kb2MvJHBrZ25hbWUvdHV0b3JpYWwN CiB9DQogDQotc2hhNTEyc3Vtcz0iNzI5YjJkOWJhN2ViMjM2Y2M4YmNiY2YzYWM3NjA0NDk0OTgw Y2JmMmZkMjFkYzVhMzg1NjAxMWJjODMwZWVlNzViZTI5YTI0NmIwYmYzZGZhNmM3YTAzZmNmNjlh OTAyYWU1MGQwNWVhMzcxYWM0ZDAyMjVhNGRhNjA4OWQ3Y2UgIG1nLTIwMTcwNDAxLnRhci5neg0K LWYxOTY3ZGQzM2EwMjVlMTFmZjYzYmE3OTdjMmZiNjRhYzA2NzljZDZjMDlhMzMyMjQxYTI4ZTA5 NzZiOTZkYjQ2Nzg5NGUxZTM1NzNjNWJjODhiN2ZlYWVjZGI0MzA2OTVhYTRmOGZhMjcxMmIyMjdk MDk0N2IzZDhiMDVjOTdjICBtaXNzaW5nLWRlZmluZXMucGF0Y2gNCi01ODZhNjIyYjY4MzhiYjVi NGYyZTk1ODM1MmNlYzZiZDRjYTljN2RiOTNiY2MwZGZlYjZkOGU1ODhmYjExOTFiYzVmMDFhZmQx N2EzODVjMTBkZGJkNmNlYjYzMWQyZDljYWNjZDRlMDgwMjk0ZDFmY2ViNWRiNjc2YWI2YTRmYyAg dW5pY29kZS5wYXRjaCINCitzaGE1MTJzdW1zPSIxZWExNmIxZGQ1ZTllMDhhYmY5ZmNmMDg4OTEz MGI0ZjM5ZDM2ODcyYmI2NGRmODU0NzBhOWNlZDFkYjg3YzBlZWNiMThjYzZlOGMzYzVhMDRmOTA0 OWQ1OGVmNDQ5MmQ1YTg4Y2YzNTAyZWMzMzUxYWJjY2I3YmRkZmI5MGMxNCAgbWctMjAxNzA4Mjgu dGFyLmd6DQorZjE5NjdkZDMzYTAyNWUxMWZmNjNiYTc5N2MyZmI2NGFjMDY3OWNkNmMwOWEzMzIy NDFhMjhlMDk3NmI5NmRiNDY3ODk0ZTFlMzU3M2M1YmM4OGI3ZmVhZWNkYjQzMDY5NWFhNGY4ZmEy NzEyYjIyN2QwOTQ3YjNkOGIwNWM5N2MgIG1pc3NpbmctZGVmaW5lcy5wYXRjaCINCmRpZmYgLS1n aXQgYS9tYWluL21nL3VuaWNvZGUucGF0Y2ggYi9tYWluL21nL3VuaWNvZGUucGF0Y2gNCmRlbGV0 ZWQgZmlsZSBtb2RlIDEwMDY0NA0KaW5kZXggMzlkODgzMWY2OC4uMDAwMDAwMDAwMA0KLS0tIGEv bWFpbi9tZy91bmljb2RlLnBhdGNoDQorKysgL2Rldi9udWxsDQpAQCAtMSwxMzQ3ICswLDAgQEAN Ci1kaWZmIC0tZ2l0IGEvUkVBRE1FLm1kIGIvUkVBRE1FLm1kDQotaW5kZXggOTk0ZDZiZS4uMmY1 ZDJjMSAxMDA2NDQNCi0tLS0gYS9SRUFETUUubWQNCi0rKysgYi9SRUFETUUubWQNCi1AQCAtMSw0 OSArMSw1MCBAQA0KLS0jIFBPUlRJTkcgTUcgQU5EIFVTSU5HIExJQkJTRA0KLSsjIG1nIHdpdGgg d2lkZSBkaXNwbGF5IHN1cHBvcnQuDQotIA0KLS1JJ3ZlIG1haW50YWluZWQgYW5kIHBvcnRlZCBt ZyBmb3IgcXVpdGUgc29tZSB0aW1lIG5vdyBhbmQgYXQgZmlyc3QgaXQNCi0td2FzIGVhc3kgcmVj ZW50bHkgaXQgZ290IGhhcmRlciBhbmQgaGFyZGVyIHNpbmNlIGl0IHdhcyBhIG1vdmluZw0KLS10 YXJnZXQuIEVzcGVjaWFsbHkgdGhlIGluY2x1c2lvbiBvZiBzb21lIHN5c3RlbSBzcGVjaWZpYyBs aWJyYXJpZXMgc2luY2UNCi0tYWJvdXQgMiB5ZWFycyBhZ28gbWFkZSBpdCB0b28gbXVjaCBvZiBh biBlZmZvcnQgZm9yIG15IGh1bWJsZSBjb2RpbmcNCi0tc2tpbGxzLg0KLS0NCi0tU28gcmVjZW50 bHkgSmFzcGVyIExpZXZpc3NlIEFkcmlhYW5zZSBhc2tlZCBtZSB0byB0cnkgaXQgYWdhaW4gYW5k IEkNCi0tcmVzdGFydGVkIHdvcmtpbmcgb24gdGhlIHByb2plY3QgYW5kIHJhbiBpbnRvIGV4YWN0 bHkgdGhlIHNhbWUgcHJvYmxlbXMNCi0tYWdhaW4uIFdoaWxlIGdvb2dsaW5nIGZvciBzb2x1dGlv bnMgSSByYW4gaW50byBsaWJic2Q6DQotLQ0KLS0gIGh0dHA6Ly9saWJic2QuZnJlZWRlc2t0b3Au b3JnL3dpa2kvDQotLQ0KLS1JdCdzIGEgcG9ydGluZyBsaWJyYXJ5IGZvciBPcGVuQlNEIGNvZGUh IEFuZCBhZnRlciBpbnN0YWxsaW5nIHRoYXQgaXQNCi0td2FzIGEgcGllY2Ugb2YgcGllIHRvIGdl dCBtZyBwb3J0ZWQgYWdhaW4uDQotLQ0KLS0jIyBQT1JUSU5HIFRPIEFMTCBPVEhFUiBQTEFURk9S TVMNCi0tDQotLU9rYXksIHRoYXQgd2FzIGRlYmlhbi4gTm93IEkgaGF2ZSB0byBnZXQgdGhlIHJl c3Qgb2YgYWxsIHRoZSBwcmV2aW91c2x5DQotLXN1cG9ydGVkIHBsYXRmb3JtcyB3b3JraW5nIGFn YWluLiBBbGwgaGVscCBpcyB3ZWxjb21lIGFuZCBhcyBhbHdheXM6DQotLVBsZWFzZSBwcm92aWRl IHBhdGNoZXMgdGhhdCBkbyBub3QgYnJlYWsgc3R1ZmYgZm9yIG90aGVyIHBsYXRmb3Jtcy4NCi0t DQotLSMjIEJVSUxESU5HIE1HDQotLQ0KLS1TbywgYmFzaWMgaW5zdHJ1Y3Rpb25zIGZvciBidWls ZGluZyBtZzoNCi0tDQotLSAtIEdldCBsaWJic2QgaW5zdGFsbGVkLg0KLS0gLSBSdW4gdGhlIGZv bGxvd2luZyBjb21tYW5kczoNCi0rSSBqdXN0IHJlY2VpdmVkIHRoaXMgYW1hemluZyBwYXRjaCBm cm9tIFMuIEdpbGVzLiBGb3IgdGhvc2UgaW1wYXRpZW50DQotK3Blb3BsZTogY2hlY2sgaXQgb3V0 ICh0aWhpaGkpIGFuZCBhZGQgdGhpcyBsaW5lIHRvIHlvdXIgYC5tZ2ANCi0gDQotIGBgYA0KLS1t YWtlDQotLXN1ZG8gbWFrZSBpbnN0YWxsDQotK3NldC1kZWZhdWx0LW1vZGUgIndpZGUiDQotIGBg YA0KLSANCi0tIyMgVVNJTkcgQ1ZTDQotLQ0KLS1UaGlzIGNvZGUgaXMgdGhlIGN2cyBjaGVja291 dCBmcm9tIHRoZSBPcGVuQlNEIHByb2plY3Qgc28gaWYgeW91IGluc3RhbGwNCi0tY3ZzIHlvdSBj YW4gc2VlIHdoYXQgSSBjaGFuZ2VkIHRvIHBvcnQgbWcuIExpa2UgdGhpczoNCi0tDQotLWBgYA0K LS1jdnMgZGlmZiAtdXcNCi0tYGBgDQotLQ0KLS0jIyBBQk9VVCBmZ2V0bG4oKQ0KLS0NCi0tSW5j YXNlIHlvdSBhcmUgd29uZGVyaW5nIGFib3V0IHRoYXQgZGVwcmVjYXRpb24gd2FybmluZywgaGVy ZSBpcyBhIG5pY2UgZXhwbGFuYXRpb24gYWJvdXQgd2h5IGl0IGlzIGhhcmQgdG8gZml4Og0KLS0N Ci0tICBodHRwOi8vbmlhbGxvaGlnZ2lucy5jb20vMjAwOS8xMC8wMy9yZWFkLWEtZmlsZS1saW5l LWJ5LWxpbmUtaW4tYy1zZWN1cmUtZmdldHMtaWRpb20vDQotKyMjIEludHJvZHVjdGlvbiBieSBT LiBHaWxlcw0KLSsNCi0rSGksDQotKw0KLStJJ3ZlIGdvdCBhIHBhdGNoIHRoYXQgYWxsb3dzIG1n IHRvIGRpc3BsYXkgd2lkZSBjaGFyYWN0ZXJzLCBpZiB5b3UncmUNCi0raW50ZXJlc3RlZC4NCi0r DQotK0l0IGNhbiBiZSB0dXJuZWQgb24gYnkgc2hvdy13aWRlLW1vZGUgKGJldHRlciBuYW1lIHdl bGNvbWUpLCBhbmQgaXMNCi0rZmFpcmx5IGxpbWl0ZWQgaW4gcmVnYXJkIHRvIHdoYXQgdHlwZXMg b2Ygd2lkZSBjaGFyYWN0ZXJzIGFyZQ0KLStkaXNwbGF5ZWQuIEV2ZXJ5dGhpbmcgZ29lcyB0aHJv dWdoIG1icnRvd2MoMyksIHNvIHlvdSBnZXQgZXhhY3RseSBvbmUNCi0rc3VwcG9ydGVkIGVuY29k aW5nOiB3aGF0ZXZlciBMQ18qIHNheXMuIEV2ZXJ5dGhpbmcgZWxzZSBpcyBkaXNwbGF5ZWQNCi0r YXMgb2N0YWwgZXNjYXBlIHNlcXVlbmNlcyAoYXMgbm9ybWFsIGN1cnJlbnQgYmVoYXZpb3IpLiBN b3Rpb24gaXMNCi0rc3RpbGwgb24gYSBieXRlIGxldmVsLCBzbyBtdWx0aWJ5dGUgY2hhcmFjdGVy cyBhcmUgc2xvdyB0byB0cmF2ZWwNCi0rdGhyb3VnaCwgYW5kIHlvdSBjYW4gaW5zZXJ0IGJ5dGVz IGluIHRoZSBtaWRkbGUgb2YgdGhlbSAod2hpY2ggd29ya3MNCi0rZmluZSkuIEEgbGltaXRlZCB2 ZXJzaW9uIG9mIGluc2VydC1jaGFyIGlzIGFsc28gaW5jbHVkZWQsIHdoaWNoIHdvcmtzDQotK3Ro cm91Z2ggd2NoYXJfdCwgc28gdGhhdCBvbiBhbnkgc3lzdGVtIHdpdGggX19TVERDX0lTT18xMDY0 Nl9fIHNldCwNCi0raW5zZXJ0aW5nIHVuaWNvZGUgY29kZXBvaW50cyBieSBudW1iZXIgaXMgcG9z c2libGUuDQotKw0KLStJdCBhbHNvIGZpeGVzIHNvbWUgb2RkIGJ1Z3MgcmVsYXRlZCB0byB3aWRl IGNoYXJhY3RlciBkaXNwbGF5IGFuZA0KLStleHRlbmRlZCBsaW5lcy4gRm9yIGV4YW1wbGU6IGlu IGEgZmlsZSB3aXRoIGVub3VnaCB3aWRlIGNoYXJhY3RlcnMNCi0rKHN1Y2ggYXMg77yh77yi77yj KSB0byBtYWtlIGEgbGluZSBleHRlbmQgZmFyIChzYXksIDIwMCBjaGFyYWN0ZXJzIG9uIGFuDQot KzgwLXdpZGUgZGlzcGxheSksIG1vdmluZyB0byB0aGUgcmlnaHQgb25lIGNoYXJhY3RlciBhdCBh IHRpbWUgd2lsbCAoaW4NCi0rMjAxNjAxMTgpIGNvcnJ1cHQgdGhlIGRpc3BsYXksIHRoZW4gZXZl bnR1YWxseSBzZWdmYXVsdCwgYmVjYXVzZQ0KLSt2dHB1dGUgZG9lc24ndCBwZXJmb3JtIHRoZSBz YW1lIG9jdGFsIGV4cGFuc2lvbiBhcyB2dHB1dGMgYW5kIHRoZQ0KLStjb2x1bW5zIGdldCBvdXQg b2Ygc3luYy4gVGhpcyBwYXRjaCBtYWtlcyBkaXNwbGF5LmMgYXdhcmUgb2YgdGhlDQotK3Bvc3Np YmlsaXR5IHRoYXQgdGhlIGJ5dGVzIGFuZCBnbHlwaHMgb2YgdGhlIGJ1ZmZlcnMgYXJlbid0IDE6 MSwgc28NCi0rcHJvdGVjdHMgYWdhaW5zdCB0aGF0Lg0KLSsNCi0rVGhhdCBzYWlkLCB3aWRlIGNo YXJhY3RlciBzdXBwb3J0IGNvbXBsaWNhdGVzIGEgbG90IG9mIGFscmVhZHkNCi0rY29tcGxpY2F0 ZWQgbG9naWMgKGZvciBleGFtcGxlLCB2dHB1dHMpIGFuZCByZWxpZXMgb24gd2NoYXJfdCBmb3IN Ci0rYWxtb3N0IGV2ZXJ5dGhpbmcsIGFkZGluZyBzb21lIHVuZXNjYXBhYmxlIG92ZXJoZWFkLg0K LSsNCi0rSWYgeW91IHdhbnQgdG8gdGFrZSB0aGlzIHBhdGNoLCBwbGVhc2UgZG8gc28uIElmIHlv dSB0aGluayBpdCdzIHRvbw0KLSt1Z2x5IG9yIG5vdCB1c2VmdWwsIHRoYXQncyBhbHNvIGZpbmUu ICBMZXQgbWUga25vdyBpZiB5b3Ugd2FudCBtZSB0bw0KLStyZXdyaXRlIHBhcnRzIG9mIGl0IChv ciBpZiB5b3Ugc2VlIGFueSBidWdzKSBvciBpZiB0aGVyZSBhcmUgc3R5bGUNCi0rY29udmVudGlv bnMgSSBkaWRuJ3QgZm9sbG93LiBJdCBhcHBsaWVzIGNsZWFubHkgd2l0aCBwYXRjaCAtaSwgcGxl YXNlDQotK2ZvcmdpdmUgdGhlIGdpdC1pc21zLg0KLSsNCi0rKEFuZCwgb2YgY291cnNlLCBtYW55 IHRoYW5rcyBmb3IgeW91ciB3b3JrIGluIG1haW50YWluaW5nIHRoZSBwb3J0LikNCi0rDQotK1Mu IEdpbGxlcw0KLWRpZmYgLS1naXQgYS9iYXNpYy5jIGIvYmFzaWMuYw0KLWluZGV4IDg1ZDlmNzAu LjEyM2UxMTUgMTAwNjQ0DQotLS0tIGEvYmFzaWMuYw0KLSsrKyBiL2Jhc2ljLmMNCi1AQCAtMTgs NiArMTgsNyBAQA0KLSAjaW5jbHVkZSA8c2lnbmFsLmg+DQotICNpbmNsdWRlIDxzdGRpby5oPg0K LSAjaW5jbHVkZSA8c3RkbGliLmg+DQotKyNpbmNsdWRlIDx3Y2hhci5oPg0KLSANCi0gI2luY2x1 ZGUgImRlZi5oIg0KLSANCi1AQCAtMjY5LDEyICsyNzAsMjUgQEAgc2V0Z29hbCh2b2lkKQ0KLSBp bnQNCi0gZ2V0Z29hbChzdHJ1Y3QgbGluZSAqZGxwKQ0KLSB7DQotLQlpbnQgYywgaSwgY29sID0g MDsNCi0tCWNoYXIgdG1wWzVdOw0KLSsJcmV0dXJuIGdldGJ5dGVvZmNvbChkbHAsIDAsIGN1cmdv YWwpOw0KLSt9DQotIA0KLSsvKg0KLSsgKiBSZXR1cm4gdGhlIGJ5dGUgb2Zmc2V0IHdpdGhpbiBs cCB0aGF0IGlzIHRhcmdldGNvbCBjb2x1bW5zIGJleW9uZA0KLSsgKiBzdGFydGJ5dGUNCi0rICov DQotK3NpemVfdA0KLStnZXRieXRlb2Zjb2woY29uc3Qgc3RydWN0IGxpbmUgKmxwLCBjb25zdCBz aXplX3Qgc3RhcnRieXRlLA0KLSsgICAgICAgICAgICAgY29uc3Qgc2l6ZV90IHRhcmdldGNvbCkN Ci0rew0KLSsJaW50IGM7DQotKwlzaXplX3QgaSwgY29sID0gMDsNCi0rCWNoYXIgdG1wWzVdOw0K LSsJc2l6ZV90IGFkdmFuY2VfYnkgPSAxOw0KLSANCi0tCWZvciAoaSA9IDA7IGkgPCBsbGVuZ3Ro KGRscCk7IGkrKykgew0KLS0JCWMgPSBsZ2V0YyhkbHAsIGkpOw0KLSsJZm9yIChpID0gc3RhcnRi eXRlOyBpIDwgbGxlbmd0aChscCk7IGkgKz0gYWR2YW5jZV9ieSkgew0KLSsJCWFkdmFuY2VfYnkg PSAxOw0KLSsJCWMgPSBsZ2V0YyhscCwgaSk7DQotIAkJaWYgKGMgPT0gJ1x0Jw0KLSAjaWZkZWYJ Tk9UQUINCi0gCQkgICAgJiYgIShjdXJicC0+Yl9mbGFnICYgQkZOT1RBQikNCi1AQCAtMjg0LDE4 ICsyOTgsODYgQEAgZ2V0Z29hbChzdHJ1Y3QgbGluZSAqZGxwKQ0KLSAJCQljb2wrKzsNCi0gCQl9 IGVsc2UgaWYgKElTQ1RSTChjKSAhPSBGQUxTRSkgew0KLSAJCQljb2wgKz0gMjsNCi0tCQl9IGVs c2UgaWYgKGlzcHJpbnQoYykpDQotKwkJfSBlbHNlIGlmIChpc3ByaW50KGMpKSB7DQotIAkJCWNv bCsrOw0KLS0JCWVsc2Ugew0KLSsJCX0gZWxzZSBpZiAoIShjdXJicC0+Yl9mbGFnICYgQkZTSE9X UkFXKSkgew0KLSsJCQltYnN0YXRlX3QgbWJzID0geyAwIH07DQotKwkJCXdjaGFyX3Qgd2MgPSAw Ow0KLSsJCQlzaXplX3QgY29uc3VtZWQgPSBtYnJ0b3djKCZ3YywgJmxwLT5sX3RleHRbaV0sDQot KwkJCSAgICAgICAgICAgICAgICAgICAgICAgICAgbGxlbmd0aChscCkgLSBpLCAmbWJzKTsNCi0r CQkJaW50IHdpZHRoID0gLTE7DQotKwkJCWlmIChjb25zdW1lZCA8IChzaXplX3QpIC0yKSB7DQot KwkJCQl3aWR0aCA9IHdjd2lkdGgod2MpOw0KLSsJCQl9DQotKwkJCWlmICh3aWR0aCA+PSAwKSB7 DQotKwkJCQljb2wgKz0gd2lkdGg7DQotKwkJCQlhZHZhbmNlX2J5ID0gY29uc3VtZWQ7DQotKwkJ CX0gZWxzZSB7DQotKwkJCQljb2wgKz0gc25wcmludGYodG1wLCBzaXplb2YodG1wKSwgIlxcJW8i LCBjKTsNCi0rCQkJfQ0KLSsJCX0gZWxzZSB7DQotIAkJCWNvbCArPSBzbnByaW50Zih0bXAsIHNp emVvZih0bXApLCAiXFwlbyIsIGMpOw0KLSAJCX0NCi0tCQlpZiAoY29sID4gY3VyZ29hbCkNCi0r CQlpZiAoY29sID4gdGFyZ2V0Y29sKQ0KLSAJCQlicmVhazsNCi0gCX0NCi0gCXJldHVybiAoaSk7 DQotIH0NCi0gDQotIC8qDQotKyAqIFJldHVybiB0aGUgY29sdW1uIGF0IHdoaWNoIHNwZWNpZmll ZCBvZmZzZXQgYnl0ZSB3b3VsZCBhcHBlYXIsIGlmDQotKyAqIHRoaXMgd2VyZSBwYXJ0IG9mIGEg bG9uZ2VyIHN0cmluZyBwcmludGVkIGJ5IHZ0cHV0cywgc3RhcnRpbmcgYXQNCi0rICogaW50aWFs X2NvbA0KLSsgKi8NCi0rc2l6ZV90DQotK2dldGNvbG9mYnl0ZShjb25zdCBzdHJ1Y3QgbGluZSAq bHAsIGNvbnN0IHNpemVfdCBzdGFydGJ5dGUsDQotKyAgICAgICAgICAgICBjb25zdCBzaXplX3Qg aW5pdGlhbF9jb2wsIGNvbnN0IHNpemVfdCB0YXJnZXRvZmZzZXQpDQotK3sNCi0rCWludCBjOw0K LSsJc2l6ZV90IGksIGNvbCA9IGluaXRpYWxfY29sOw0KLSsJY2hhciB0bXBbNV07DQotKwlzaXpl X3QgYWR2YW5jZV9ieSA9IDE7DQotKw0KLSsJZm9yIChpID0gc3RhcnRieXRlOyBpIDwgbGxlbmd0 aChscCk7IGkgKz0gYWR2YW5jZV9ieSkgew0KLSsJCWlmIChpID49IHRhcmdldG9mZnNldCkNCi0r CQkJYnJlYWs7DQotKwkJYWR2YW5jZV9ieSA9IDE7DQotKwkJYyA9IGxnZXRjKGxwLCBpKTsNCi0r CQlpZiAoYyA9PSAnXHQnDQotKyNpZmRlZglOT1RBQg0KLSsJCSAgICAmJiAhKGN1cmJwLT5iX2Zs YWcgJiBCRk5PVEFCKQ0KLSsjZW5kaWYNCi0rCQkJKSB7DQotKwkJCWNvbCB8PSAweDA3Ow0KLSsJ CQljb2wrKzsNCi0rCQl9IGVsc2UgaWYgKElTQ1RSTChjKSAhPSBGQUxTRSkgew0KLSsJCQljb2wg Kz0gMjsNCi0rCQl9IGVsc2UgaWYgKGlzcHJpbnQoYykpIHsNCi0rCQkJY29sKys7DQotKwkJfSBl bHNlIGlmICghKGN1cmJwLT5iX2ZsYWcgJiBCRlNIT1dSQVcpKSB7DQotKwkJCW1ic3RhdGVfdCBt YnMgPSB7IDAgfTsNCi0rCQkJd2NoYXJfdCB3YyA9IDA7DQotKwkJCXNpemVfdCBjb25zdW1lZCA9 IG1icnRvd2MoJndjLCAmbHAtPmxfdGV4dFtpXSwNCi0rCQkJICAgICAgICAgICAgICAgICAgICAg ICAgICBsbGVuZ3RoKGxwKSAtIGksICZtYnMpOw0KLSsJCQlpbnQgd2lkdGggPSAtMTsNCi0rCQkJ aWYgKGNvbnN1bWVkIDwgKHNpemVfdCkgLTIpIHsNCi0rCQkJCXdpZHRoID0gd2N3aWR0aCh3Yyk7 DQotKwkJCX0NCi0rCQkJaWYgKHdpZHRoID49IDApIHsNCi0rCQkJCWNvbCArPSB3aWR0aDsNCi0r CQkJCWFkdmFuY2VfYnkgPSBjb25zdW1lZDsNCi0rCQkJfSBlbHNlIHsNCi0rCQkJCWNvbCArPSBz bnByaW50Zih0bXAsIHNpemVvZih0bXApLCAiXFwlbyIsIGMpOw0KLSsJCQl9DQotKwkJfSBlbHNl IHsNCi0rCQkJY29sICs9IHNucHJpbnRmKHRtcCwgc2l6ZW9mKHRtcCksICJcXCVvIiwgYyk7DQot KwkJfQ0KLSsJfQ0KLSsJcmV0dXJuIChjb2wpOw0KLSt9DQotKw0KLSsNCi0rLyoNCi0gICogU2Ny b2xsIGZvcndhcmQgYnkgYSBzcGVjaWZpZWQgbnVtYmVyDQotICAqIG9mIGxpbmVzLCBvciBieSBh IGZ1bGwgcGFnZSBpZiBubyBhcmd1bWVudC4NCi0gICogVGhlICIyIiBpcyB0aGUgd2luZG93IG92 ZXJsYXAgKHRoaXMgaXMgdGhlIGRlZmF1bHQNCi1kaWZmIC0tZ2l0IGEvY21vZGUuYyBiL2Ntb2Rl LmMNCi1pbmRleCBhMjM4Mjg1Li45ZDRjYWMzIDEwMDY0NA0KLS0tLSBhL2Ntb2RlLmMNCi0rKysg Yi9jbW9kZS5jDQotQEAgLTE0LDYgKzE0LDcgQEANCi0gI2luY2x1ZGUgPGN0eXBlLmg+DQotICNp bmNsdWRlIDxzaWduYWwuaD4NCi0gI2luY2x1ZGUgPHN0ZGlvLmg+DQotKyNpbmNsdWRlIDx3Y2hh ci5oPg0KLSANCi0gI2luY2x1ZGUgImRlZi5oIg0KLSAjaW5jbHVkZSAiZnVubWFwLmgiDQotQEAg LTQxOSwxMCArNDIwLDI1IEBAIGZpbmRjb2xwb3MoY29uc3Qgc3RydWN0IGJ1ZmZlciAqYnAsIGNv bnN0IHN0cnVjdCBsaW5lICpscCwgaW50IGxvKQ0KLSAJCQkpIHsNCi0gCQkJY29sIHw9IDB4MDc7 DQotIAkJCWNvbCsrOw0KLS0JCX0gZWxzZSBpZiAoSVNDVFJMKGMpICE9IEZBTFNFKQ0KLSsJCX0g ZWxzZSBpZiAoSVNDVFJMKGMpICE9IEZBTFNFKSB7DQotIAkJCWNvbCArPSAyOw0KLS0JCWVsc2Ug aWYgKGlzcHJpbnQoYykpIHsNCi0rCQl9IGVsc2UgaWYgKGlzcHJpbnQoYykpIHsNCi0gCQkJY29s Kys7DQotKwkJfSBlbHNlIGlmICghKGJwLT5iX2ZsYWcgJiBCRlNIT1dSQVcpKSB7DQotKwkJCW1i c3RhdGVfdCBtYnMgPSB7IDAgfTsNCi0rCQkJd2NoYXJfdCB3YyA9IDA7DQotKwkJCXNpemVfdCBj b25zdW1lZCA9IG1icnRvd2MoJndjLCAmbHAtPmxfdGV4dFtpXSwNCi0rCQkJICAgICAgICAgICAg ICAgICAgICAgICAgICBsbGVuZ3RoKGxwKSAtIGksICZtYnMpOw0KLSsJCQlpbnQgd2lkdGggPSAt MTsNCi0rCQkJaWYgKGNvbnN1bWVkIDwgKHNpemVfdCkgLTIpIHsNCi0rCQkJCXdpZHRoID0gd2N3 aWR0aCh3Yyk7DQotKwkJCX0NCi0rCQkJaWYgKHdpZHRoID49IDApIHsNCi0rCQkJCWNvbCArPSB3 aWR0aDsNCi0rCQkJCWkgKz0gKGNvbnN1bWVkIC0gMSk7DQotKwkJCX0gZWxzZSB7DQotKwkJCQlj b2wgKz0gc25wcmludGYodG1wLCBzaXplb2YodG1wKSwgIlxcJW8iLCBjKTsNCi0rCQkJfQ0KLSAJ CX0gZWxzZSB7DQotIAkJCWNvbCArPSBzbnByaW50Zih0bXAsIHNpemVvZih0bXApLCAiXFwlbyIs IGMpOw0KLSAJCX0NCi1kaWZmIC0tZ2l0IGEvZGVmLmggYi9kZWYuaA0KLWluZGV4IDU0Yjc0Y2Uu LjJmYjI4OWQgMTAwNjQ0DQotLS0tIGEvZGVmLmgNCi0rKysgYi9kZWYuaA0KLUBAIC0yNzAsNyAr MjcwLDcgQEAgc3RydWN0IGJ1ZmZlciB7DQotIAlpbnQJCSBiX21hcmtvOwkvKiBkaXR0byBmb3Ig dGhlICJtYXJrIgkJICovDQotIAlzaG9ydAkJIGJfbm1vZGVzOwkvKiBudW1iZXIgb2Ygbm9uLWZ1 bmRhbWVudGFsIG1vZGVzICovDQotIAljaGFyCQkgYl9ud25kOwkvKiBDb3VudCBvZiB3aW5kb3dz IG9uIGJ1ZmZlcgkgKi8NCi0tCWNoYXIJCSBiX2ZsYWc7CS8qIEZsYWdzCQkJICovDQotKwlzaG9y dAkJIGJfZmxhZzsJLyogRmxhZ3MJCQkgKi8NCi0gCWNoYXIJCSBiX2ZuYW1lW05GSUxFTl07IC8q IEZpbGUgbmFtZQkJCSAqLw0KLSAJY2hhcgkJIGJfY3dkW05GSUxFTl07IC8qIHdvcmtpbmcgZGly ZWN0b3J5CQkgKi8NCi0gCXN0cnVjdCBmaWxlaW5mbwkgYl9maTsJCS8qIEZpbGUgYXR0cmlidXRl cwkJICovDQotQEAgLTI5Nyw2ICsyOTcsNyBAQCBzdHJ1Y3QgYnVmZmVyIHsNCi0gI2RlZmluZSBC RkRJUlRZICAgICAweDIwCQkvKiBCdWZmZXIgd2FzIG1vZGlmaWVkIGVsc2V3aGVyZSAqLw0KLSAj ZGVmaW5lIEJGSUdORElSVFkgIDB4NDAJCS8qIElnbm9yZSBtb2RpZmljYXRpb25zIAkgKi8NCi0g I2RlZmluZSBCRkRJUkVEREVMICAweDgwCQkvKiBEaXJlZCBoYXMgYSBkZWxldGVkICdEJyBmaWxl CSAqLw0KLSsjZGVmaW5lIEJGU0hPV1JBVyAgIDB4MTAwCQkvKiBTaG93IHVucHJpbnRhYmxlIGFz IG9jdGFsCSAqLw0KLSAvKg0KLSAgKiBUaGlzIHN0cnVjdHVyZSBob2xkcyBpbmZvcm1hdGlvbiBh Ym91dCByZWNlbnQgYWN0aW9ucyBmb3IgdGhlIFVuZG8gY29tbWFuZC4NCi0gICovDQotQEAgLTQ5 Nyw2ICs0OTgsNyBAQCBpbnQJCSBkaWdpdF9hcmd1bWVudChpbnQsIGludCk7DQotIGludAkJIG5l Z2F0aXZlX2FyZ3VtZW50KGludCwgaW50KTsNCi0gaW50CQkgc2VsZmluc2VydChpbnQsIGludCk7 DQotIGludAkJIHF1b3RlKGludCwgaW50KTsNCi0raW50CQkgaW5zZXJ0X2NoYXIoaW50LCBpbnQp Ow0KLSANCi0gLyogbWFpbi5jICovDQotIGludAkJIGN0cmxnKGludCwgaW50KTsNCi1AQCAtNTE5 LDYgKzUyMSw4IEBAIGludAkJIGZvcndsaW5lKGludCwgaW50KTsNCi0gaW50CQkgYmFja2xpbmUo aW50LCBpbnQpOw0KLSB2b2lkCQkgc2V0Z29hbCh2b2lkKTsNCi0gaW50CQkgZ2V0Z29hbChzdHJ1 Y3QgbGluZSAqKTsNCi0rc2l6ZV90CQkgZ2V0Ynl0ZW9mY29sKGNvbnN0IHN0cnVjdCBsaW5lICos IHNpemVfdCwgc2l6ZV90KTsNCi0rc2l6ZV90CQkgZ2V0Y29sb2ZieXRlKGNvbnN0IHN0cnVjdCBs aW5lICosIHNpemVfdCwgc2l6ZV90LCBzaXplX3QpOw0KLSBpbnQJCSBmb3J3cGFnZShpbnQsIGlu dCk7DQotIGludAkJIGJhY2twYWdlKGludCwgaW50KTsNCi0gaW50CQkgZm9ydzFwYWdlKGludCwg aW50KTsNCi1AQCAtNjY1LDYgKzY2OSw3IEBAIGludAkJIG5vdGFibW9kZShpbnQsIGludCk7DQot ICNlbmRpZgkvKiBOT1RBQiAqLw0KLSBpbnQJCSBvdmVyd3JpdGVfbW9kZShpbnQsIGludCk7DQot IGludAkJIHNldF9kZWZhdWx0X21vZGUoaW50LGludCk7DQotK2ludAkJIHNob3dfcmF3X21vZGUo aW50LCBpbnQpOw0KLSANCi0gI2lmZGVmIFJFR0VYDQotIC8qIHJlX3NlYXJjaC5jIFggKi8NCi1k aWZmIC0tZ2l0IGEvZGlzcGxheS5jIGIvZGlzcGxheS5jDQotaW5kZXggN2FmNzIzYy4uMTA0Zjg3 MyAxMDA2NDQNCi0tLS0gYS9kaXNwbGF5LmMNCi0rKysgYi9kaXNwbGF5LmMNCi1AQCAtNyw3ICs3 LDcgQEANCi0gICogcmVkaXNwbGF5IHN5c3RlbSBrbm93cyBhbG1vc3Qgbm90aGluZyBhYm91dCB0 aGUgZWRpdGluZw0KLSAgKiBwcm9jZXNzOyB0aGUgZWRpdGluZyBmdW5jdGlvbnMgZG8sIGhvd2V2 ZXIsIHNldCBzb21lDQotICAqIGhpbnRzIHRvIGVsaW1pbmF0ZSBhIGxvdCBvZiB0aGUgZ3JpbmRp bmcuIFRoZXJlIGlzIG1vcmUNCi0tICogdGhhdCBjYW4gYmUgZG9uZTsgdGhlICJ2dHB1dGMiIGlu dGVyZmFjZSBpcyBhIHJlYWwNCi0rICogdGhhdCBjYW4gYmUgZG9uZTsgdGhlICJ2dHB1dHMiIGlu dGVyZmFjZSBpcyBhIHJlYWwNCi0gICogcGlnLg0KLSAgKi8NCi0gDQotQEAgLTE4LDYgKzE4LDcg QEANCi0gI2luY2x1ZGUgPHN0ZGxpYi5oPg0KLSAjaW5jbHVkZSA8c3RyaW5nLmg+DQotICNpbmNs dWRlIDx0ZXJtLmg+DQotKyNpbmNsdWRlIDx3Y2hhci5oPg0KLSANCi0gI2luY2x1ZGUgImRlZi5o Ig0KLSAjaW5jbHVkZSAia2JkLmgiDQotQEAgLTUyLDExICs1MywxMCBAQCBzdHJ1Y3Qgc2NvcmUg ew0KLSB9Ow0KLSANCi0gdm9pZAl2dG1vdmUoaW50LCBpbnQpOw0KLS12b2lkCXZ0cHV0YyhpbnQp Ow0KLSB2b2lkCXZ0cHV0ZShpbnQpOw0KLS1pbnQJdnRwdXRzKGNvbnN0IGNoYXIgKik7DQotK2lu dAl2dHB1dHMoY29uc3QgY2hhciAqLCBzaXplX3QsIHNpemVfdCk7DQotIHZvaWQJdnRlZW9sKHZv aWQpOw0KLS12b2lkCXVwZGV4dChpbnQsIGludCk7DQotK2ludAl1cGRleHQoaW50LCBpbnQpOw0K LSB2b2lkCW1vZGVsaW5lKHN0cnVjdCBtZ3dpbiAqLCBpbnQpOw0KLSB2b2lkCXNldHNjb3Jlcyhp bnQsIGludCk7DQotIHZvaWQJdHJhY2ViYWNrKGludCwgaW50LCBpbnQsIGludCk7DQotQEAgLTIx Niw4ICsyMTYsOCBAQCB2dHJlc2l6ZShpbnQgZm9yY2UsIGludCBuZXdyb3csIGludCBuZXdjb2wp DQotIAl9DQotIAlpZiAocm93Y2hhbmdlZCB8fCBjb2xjaGFuZ2VkIHx8IGZpcnN0X3J1bikgew0K LSAJCWZvciAoaSA9IDA7IGkgPCAyICogKG5ld3JvdyAtIDEpOyBpKyspDQotLQkJCVRSWVJFQUxM T0ModmlkZW9baV0udl90ZXh0LCBuZXdjb2wpOw0KLS0JCVRSWVJFQUxMT0MoYmxhbmtzLnZfdGV4 dCwgbmV3Y29sKTsNCi0rCQkJVFJZUkVBTExPQyh2aWRlb1tpXS52X3RleHQsIG5ld2NvbCAqIE1C X0NVUl9NQVgpOw0KLSsJCVRSWVJFQUxMT0MoYmxhbmtzLnZfdGV4dCwgbmV3Y29sICogTUJfQ1VS X01BWCk7DQotIAl9DQotIA0KLSAJbnJvdyA9IG5ld3JvdzsNCi1AQCAtMjYwLDcgKzI2MCw3IEBA IHZ0aW5pdCh2b2lkKQ0KLSAJICovDQotIA0KLSAJYmxhbmtzLnZfY29sb3IgPSBDVEVYVDsNCi0t CWZvciAoaSA9IDA7IGkgPCBuY29sOyArK2kpDQotKwlmb3IgKGkgPSAwOyBpIDwgbmNvbCAqIE1C X0NVUl9NQVg7ICsraSkNCi0gCQlibGFua3Mudl90ZXh0W2ldID0gJyAnOw0KLSB9DQotIA0KLUBA IC0yODcsNyArMjg3LDcgQEAgdnR0aWR5KHZvaWQpDQotICAqIE1vdmUgdGhlIHZpcnR1YWwgY3Vy c29yIHRvIGFuIG9yaWdpbg0KLSAgKiAwIHNwb3Qgb24gdGhlIHZpcnR1YWwgZGlzcGxheSBzY3Jl ZW4uIEkgY291bGQNCi0gICogc3RvcmUgdGhlIGNvbHVtbiBhcyBhIGNoYXJhY3RlciBwb2ludGVy IHRvIHRoZSBzcG90DQotLSAqIG9uIHRoZSBsaW5lLCB3aGljaCB3b3VsZCBtYWtlICJ2dHB1dGMi IGEgbGl0dGxlIGJpdA0KLSsgKiBvbiB0aGUgbGluZSwgd2hpY2ggd291bGQgbWFrZSAidnRwdXRz IiBhIGxpdHRsZSBiaXQNCi0gICogbW9yZSBlZmZpY2llbnQuIE5vIGNoZWNraW5nIGZvciBlcnJv cnMuDQotICAqLw0KLSB2b2lkDQotQEAgLTI5OCw4MiArMjk4LDYgQEAgdnRtb3ZlKGludCByb3cs IGludCBjb2wpDQotIH0NCi0gDQotIC8qDQotLSAqIFdyaXRlIGEgY2hhcmFjdGVyIHRvIHRoZSB2 aXJ0dWFsIGRpc3BsYXksDQotLSAqIGRlYWxpbmcgd2l0aCBsb25nIGxpbmVzIGFuZCB0aGUgZGlz cGxheSBvZiB1bnByaW50YWJsZQ0KLS0gKiB0aGluZ3MgbGlrZSBjb250cm9sIGNoYXJhY3RlcnMu IEFsc28gZXhwYW5kIHRhYnMgZXZlcnkgOA0KLS0gKiBjb2x1bW5zLiBUaGlzIGNvZGUgb25seSBw dXRzIHByaW50aW5nIGNoYXJhY3RlcnMgaW50bw0KLS0gKiB0aGUgdmlydHVhbCBkaXNwbGF5IGlt YWdlLiBTcGVjaWFsIGNhcmUgbXVzdCBiZSB0YWtlbiB3aGVuDQotLSAqIGV4cGFuZGluZyB0YWJz LiBPbiBhIHNjcmVlbiB3aG9zZSB3aWR0aCBpcyBub3QgYSBtdWx0aXBsZQ0KLS0gKiBvZiA4LCBp dCBpcyBwb3NzaWJsZSBmb3IgdGhlIHZpcnR1YWwgY3Vyc29yIHRvIGhpdCB0aGUNCi0tICogcmln aHQgbWFyZ2luIGJlZm9yZSB0aGUgbmV4dCB0YWIgc3RvcCBpcyByZWFjaGVkLiBUaGlzDQotLSAq IG1ha2VzIHRoZSB0YWIgY29kZSBsb29wIGlmIHlvdSBhcmUgbm90IGNhcmVmdWwuDQotLSAqIFRo cmVlIGd1ZXNzZXMgaG93IHdlIGZvdW5kIHRoaXMuDQotLSAqLw0KLS12b2lkDQotLXZ0cHV0Yyhp bnQgYykNCi0tew0KLS0Jc3RydWN0IHZpZGVvCSp2cDsNCi0tDQotLQljICY9IDB4ZmY7DQotLQ0K LS0JdnAgPSB2c2NyZWVuW3Z0cm93XTsNCi0tCWlmICh2dGNvbCA+PSBuY29sKQ0KLS0JCXZwLT52 X3RleHRbbmNvbCAtIDFdID0gJyQnOw0KLS0JZWxzZSBpZiAoYyA9PSAnXHQnDQotLSNpZmRlZglO T1RBQg0KLS0JICAgICYmICEoY3VyYnAtPmJfZmxhZyAmIEJGTk9UQUIpDQotLSNlbmRpZg0KLS0J ICAgICkgew0KLS0JCWRvIHsNCi0tCQkJdnRwdXRjKCcgJyk7DQotLQkJfSB3aGlsZSAodnRjb2wg PCBuY29sICYmICh2dGNvbCAmIDB4MDcpICE9IDApOw0KLS0JfSBlbHNlIGlmIChJU0NUUkwoYykp IHsNCi0tCQl2dHB1dGMoJ14nKTsNCi0tCQl2dHB1dGMoQ0NIUihjKSk7DQotLQl9IGVsc2UgaWYg KGlzcHJpbnQoYykpDQotLQkJdnAtPnZfdGV4dFt2dGNvbCsrXSA9IGM7DQotLQllbHNlIHsNCi0t CQljaGFyIGJmWzVdOw0KLS0NCi0tCQlzbnByaW50ZihiZiwgc2l6ZW9mKGJmKSwgIlxcJW8iLCBj KTsNCi0tCQl2dHB1dHMoYmYpOw0KLS0JfQ0KLS19DQotLQ0KLS0vKg0KLS0gKiBQdXQgYSBjaGFy YWN0ZXIgdG8gdGhlIHZpcnR1YWwgc2NyZWVuIGluIGFuIGV4dGVuZGVkIGxpbmUuICBJZiB3ZSBh cmUgbm90DQotLSAqIHlldCBvbiBsZWZ0IGVkZ2UsIGRvbid0IHByaW50IGl0IHlldC4gIENoZWNr IGZvciBvdmVyZmxvdyBvbiB0aGUgcmlnaHQNCi0tICogbWFyZ2luLg0KLS0gKi8NCi0tdm9pZA0K LS12dHB1dGUoaW50IGMpDQotLXsNCi0tCXN0cnVjdCB2aWRlbyAqdnA7DQotLQ0KLS0JYyAmPSAw eGZmOw0KLS0NCi0tCXZwID0gdnNjcmVlblt2dHJvd107DQotLQlpZiAodnRjb2wgPj0gbmNvbCkN Ci0tCQl2cC0+dl90ZXh0W25jb2wgLSAxXSA9ICckJzsNCi0tCWVsc2UgaWYgKGMgPT0gJ1x0Jw0K LS0jaWZkZWYJTk9UQUINCi0tCSAgICAmJiAhKGN1cmJwLT5iX2ZsYWcgJiBCRk5PVEFCKQ0KLS0j ZW5kaWYNCi0tCSAgICApIHsNCi0tCQlkbyB7DQotLQkJCXZ0cHV0ZSgnICcpOw0KLS0JCX0gd2hp bGUgKCgodnRjb2wgKyBsYm91bmQpICYgMHgwNykgIT0gMCAmJiB2dGNvbCA8IG5jb2wpOw0KLS0J fSBlbHNlIGlmIChJU0NUUkwoYykgIT0gRkFMU0UpIHsNCi0tCQl2dHB1dGUoJ14nKTsNCi0tCQl2 dHB1dGUoQ0NIUihjKSk7DQotLQl9IGVsc2Ugew0KLS0JCWlmICh2dGNvbCA+PSAwKQ0KLS0JCQl2 cC0+dl90ZXh0W3Z0Y29sXSA9IGM7DQotLQkJKyt2dGNvbDsNCi0tCX0NCi0tfQ0KLS0NCi0tLyoN Ci0gICogRXJhc2UgZnJvbSB0aGUgZW5kIG9mIHRoZSBzb2Z0d2FyZSBjdXJzb3IgdG8gdGhlIGVu ZCBvZiB0aGUgbGluZSBvbiB3aGljaA0KLSAgKiB0aGUgc29mdHdhcmUgY3Vyc29yIGlzIGxvY2F0 ZWQuIFRoZSBkaXNwbGF5IHJvdXRpbmVzIHdpbGwgZGVjaWRlIGlmIGENCi0gICogaGFyZHdhcmUg ZXJhc2UgdG8gZW5kIG9mIGxpbmUgY29tbWFuZCBzaG91bGQgYmUgdXNlZCB0byBkaXNwbGF5IHRo aXMuDQotQEAgLTM4NCw3ICszMDgsNyBAQCB2dGVlb2wodm9pZCkNCi0gCXN0cnVjdCB2aWRlbyAq dnA7DQotIA0KLSAJdnAgPSB2c2NyZWVuW3Z0cm93XTsNCi0tCXdoaWxlICh2dGNvbCA8IG5jb2wp DQotKwl3aGlsZSAodnRjb2wgPCBuY29sICogTUJfQ1VSX01BWCkNCi0gCQl2cC0+dl90ZXh0W3Z0 Y29sKytdID0gJyAnOw0KLSB9DQotIA0KLUBAIC00MDQsNyArMzI4LDcgQEAgdXBkYXRlKGludCBt b2RlbGluZWNvbG9yKQ0KLSAJc3RydWN0IG1nd2luCSp3cDsNCi0gCXN0cnVjdCB2aWRlbwkqdnAx Ow0KLSAJc3RydWN0IHZpZGVvCSp2cDI7DQotLQlpbnQJIGMsIGksIGo7DQotKwlpbnQJIGMsIGk7 DQotIAlpbnQJIGhmbGFnOw0KLSAJaW50CSBjdXJyb3csIGN1cmNvbDsNCi0gCWludAkgb2Zmcywg c2l6ZTsNCi1AQCAtNDc5LDggKzQwMyw5IEBAIHVwZGF0ZShpbnQgbW9kZWxpbmVjb2xvcikNCi0g CQkJdnNjcmVlbltpXS0+dl9jb2xvciA9IENURVhUOw0KLSAJCQl2c2NyZWVuW2ldLT52X2ZsYWcg fD0gKFZGQ0hHIHwgVkZIQkFEKTsNCi0gCQkJdnRtb3ZlKGksIDApOw0KLS0JCQlmb3IgKGogPSAw OyBqIDwgbGxlbmd0aChscCk7ICsraikNCi0tCQkJCXZ0cHV0YyhsZ2V0YyhscCwgaikpOw0KLSsJ CQlpZiAobGxlbmd0aChscCkpIHsNCi0rCQkJCXZ0cHV0cyhscC0+bF90ZXh0LCBsbGVuZ3RoKGxw KSwgMCk7DQotKwkJCX0NCi0gCQkJdnRlZW9sKCk7DQotIAkJfSBlbHNlIGlmICgod3AtPndfcmZs YWcgJiAoV0ZFRElUIHwgV0ZGVUxMKSkgIT0gMCkgew0KLSAJCQloZmxhZyA9IFRSVUU7DQotQEAg LTQ4OSw4ICs0MTQsMTAgQEAgdXBkYXRlKGludCBtb2RlbGluZWNvbG9yKQ0KLSAJCQkJdnNjcmVl bltpXS0+dl9mbGFnIHw9IChWRkNIRyB8IFZGSEJBRCk7DQotIAkJCQl2dG1vdmUoaSwgMCk7DQot IAkJCQlpZiAobHAgIT0gd3AtPndfYnVmcC0+Yl9oZWFkcCkgew0KLS0JCQkJCWZvciAoaiA9IDA7 IGogPCBsbGVuZ3RoKGxwKTsgKytqKQ0KLS0JCQkJCQl2dHB1dGMobGdldGMobHAsIGopKTsNCi0r CQkJCQlpZiAobGxlbmd0aChscCkpIHsNCi0rCQkJCQkJdnRwdXRzKGxwLT5sX3RleHQsIGxsZW5n dGgobHApLA0KLSsJCQkJCQkgICAgMCk7DQotKwkJCQkJfQ0KLSAJCQkJCWxwID0gbGZvcncobHAp Ow0KLSAJCQkJfQ0KLSAJCQkJdnRlZW9sKCk7DQotQEAgLTUwOCwzMiArNDM1LDUzIEBAIHVwZGF0 ZShpbnQgbW9kZWxpbmVjb2xvcikNCi0gCQkrK2N1cnJvdzsNCi0gCQlscCA9IGxmb3J3KGxwKTsN Ci0gCX0NCi0rDQotIAljdXJjb2wgPSAwOw0KLSAJaSA9IDA7DQotIAl3aGlsZSAoaSA8IGN1cndw LT53X2RvdG8pIHsNCi0tCQljID0gbGdldGMobHAsIGkrKyk7DQotKwkJY2hhciB0bXBbNV07DQot KwkJYyA9IGxnZXRjKGxwLCBpKTsNCi0gCQlpZiAoYyA9PSAnXHQnDQotICNpZmRlZglOT1RBQg0K LSAJCSAgICAmJiAhKGN1cmJwLT5iX2ZsYWcgJiBCRk5PVEFCKQ0KLSAjZW5kaWYNCi0gCQkJKSB7 DQotLQkJCWN1cmNvbCB8PSAweDA3Ow0KLSAJCQljdXJjb2wrKzsNCi0rCQkJd2hpbGUgKChjdXJj b2wgLSBsYm91bmQpICYgMHgwNykgew0KLSsJCQkJY3VyY29sKys7DQotKwkJCX0NCi0gCQl9IGVs c2UgaWYgKElTQ1RSTChjKSAhPSBGQUxTRSkNCi0gCQkJY3VyY29sICs9IDI7DQotLQkJZWxzZSBp ZiAoaXNwcmludChjKSkNCi0rCQllbHNlIGlmIChpc3ByaW50KGMpKSB7DQotIAkJCWN1cmNvbCsr Ow0KLS0JCWVsc2Ugew0KLS0JCQljaGFyIGJmWzVdOw0KLS0NCi0tCQkJc25wcmludGYoYmYsIHNp emVvZihiZiksICJcXCVvIiwgYyk7DQotLQkJCWN1cmNvbCArPSBzdHJsZW4oYmYpOw0KLSsJCX0g ZWxzZSBpZiAoIShjdXJicC0+Yl9mbGFnICYgQkZTSE9XUkFXKSkgew0KLSsJCQltYnN0YXRlX3Qg bWJzID0geyAwIH07DQotKwkJCXdjaGFyX3Qgd2MgPSAwOw0KLSsJCQlzaXplX3QgY29uc3VtZWQg PSBtYnJ0b3djKCZ3YywgJmxwLT5sX3RleHRbaV0sDQotKwkJCSAgICAgICAgICAgICAgICAgICAg ICAgICAgbGxlbmd0aChscCkgLSBpLCAmbWJzKTsNCi0rCQkJaW50IHdpZHRoID0gLTE7DQotKwkJ CWlmIChjb25zdW1lZCA8IChzaXplX3QpIC0yKSB7DQotKwkJCQl3aWR0aCA9IHdjd2lkdGgod2Mp Ow0KLSsJCQl9IGVsc2Ugew0KLSsJCQkJbWVtc2V0KCZtYnMsIDAsIHNpemVvZiBtYnMpOw0KLSsJ CQl9DQotKwkJCWlmICh3aWR0aCA+PSAwKSB7DQotKwkJCQljdXJjb2wgKz0gd2lkdGg7DQotKwkJ CQlpICs9IChjb25zdW1lZCAtIDEpOw0KLSsJCQl9IGVsc2Ugew0KLSsJCQkJc25wcmludGYodG1w LCBzaXplb2YodG1wKSwgIlxcJW8iLCBjKTsNCi0rCQkJCWN1cmNvbCArPSBzdHJsZW4odG1wKTsN Ci0rCQkJfQ0KLSsJCX0gZWxzZSB7DQotKwkJCXNucHJpbnRmKHRtcCwgc2l6ZW9mKHRtcCksICJc XCVvIiwgYyk7DQotKwkJCWN1cmNvbCArPSBzdHJsZW4odG1wKTsNCi0gCQl9DQotKwkJaSsrOw0K LSAJfQ0KLSAJaWYgKGN1cmNvbCA+PSBuY29sIC0gMSkgewkvKiBleHRlbmRlZCBsaW5lLiAqLw0K LSAJCS8qIGZsYWcgd2UgYXJlIGV4dGVuZGVkIGFuZCBjaGFuZ2VkICovDQotIAkJdnNjcmVlbltj dXJyb3ddLT52X2ZsYWcgfD0gVkZFWFQgfCBWRkNIRzsNCi0tCQl1cGRleHQoY3Vycm93LCBjdXJj b2wpOwkvKiBhbmQgb3V0cHV0IGV4dGVuZGVkIGxpbmUgKi8NCi0rCQljdXJjb2wgPSB1cGRleHQo Y3Vycm93LCBjdXJjb2wpOw0KLSAJfSBlbHNlDQotIAkJbGJvdW5kID0gMDsJLyogbm90IGV4dGVu ZGVkIGxpbmUgKi8NCi0gDQotQEAgLTU1Miw4ICs1MDAsMTAgQEAgdXBkYXRlKGludCBtb2RlbGlu ZWNvbG9yKQ0KLSAJCQkJaWYgKCh3cCAhPSBjdXJ3cCkgfHwgKGxwICE9IHdwLT53X2RvdHApIHx8 DQotIAkJCQkgICAgKGN1cmNvbCA8IG5jb2wgLSAxKSkgew0KLSAJCQkJCXZ0bW92ZShpLCAwKTsN Ci0tCQkJCQlmb3IgKGogPSAwOyBqIDwgbGxlbmd0aChscCk7ICsraikNCi0tCQkJCQkJdnRwdXRj KGxnZXRjKGxwLCBqKSk7DQotKwkJCQkJaWYgKGxsZW5ndGgobHApKSB7DQotKwkJCQkJCXZ0cHV0 cyhscC0+bF90ZXh0LCBsbGVuZ3RoKGxwKSwNCi0rCQkJCQkJICAgIDApOw0KLSsJCQkJCX0NCi0g CQkJCQl2dGVlb2woKTsNCi0gCQkJCQkvKiB0aGlzIGxpbmUgbm8gbG9uZ2VyIGlzIGV4dGVuZGVk ICovDQotIAkJCQkJdnNjcmVlbltpXS0+dl9mbGFnICY9IH5WRkVYVDsNCi1AQCAtNjU1LDM5ICs2 MDUsNDQgQEAgdWNvcHkoc3RydWN0IHZpZGVvICp2dnAsIHN0cnVjdCB2aWRlbyAqcHZwKQ0KLSAJ cHZwLT52X2hhc2ggPSB2dnAtPnZfaGFzaDsNCi0gCXB2cC0+dl9jb3N0ID0gdnZwLT52X2Nvc3Q7 DQotIAlwdnAtPnZfY29sb3IgPSB2dnAtPnZfY29sb3I7DQotLQliY29weSh2dnAtPnZfdGV4dCwg cHZwLT52X3RleHQsIG5jb2wpOw0KLSsJYmNvcHkodnZwLT52X3RleHQsIHB2cC0+dl90ZXh0LCBu Y29sICogTUJfQ1VSX01BWCk7DQotIH0NCi0gDQotIC8qDQotLSAqIHVwZGV4dDogdXBkYXRlIHRo ZSBleHRlbmRlZCBsaW5lIHdoaWNoIHRoZSBjdXJzb3IgaXMgY3VycmVudGx5IG9uIGF0IGENCi0t ICogY29sdW1uIGdyZWF0ZXIgdGhhbiB0aGUgdGVybWluYWwgd2lkdGguIFRoZSBsaW5lIHdpbGwg YmUgc2Nyb2xsZWQgcmlnaHQgb3INCi0tICogbGVmdCB0byBsZXQgdGhlIHVzZXIgc2VlIHdoZXJl IHRoZSBjdXJzb3IgaXMuDQotKyAqIHVwZGV4dDogdXBkYXRlIHRoZSBleHRlbmRlZCBsaW5lIHdo aWNoIHRoZSBjdXJzb3IgaXMgY3VycmVudGx5IG9uDQotKyAqIGF0IGEgY29sdW1uIGdyZWF0ZXIg dGhhbiB0aGUgdGVybWluYWwgd2lkdGguIFRoZSBsaW5lIHdpbGwgYmUNCi0rICogc2Nyb2xsZWQg cmlnaHQgb3IgbGVmdCB0byBsZXQgdGhlIHVzZXIgc2VlIHdoZXJlIHRoZSBjdXJzb3INCi0rICog aXMuIGN1cmNvbCBtYXkgbmVlZCB0byBiZSBhZGp1c3RlZCwgZGVwZW5kaW5nIG9uIGhvdyB3aWRl DQotKyAqIGNoYXJhY3RlcnMgYW5kIGxib3VuZCBpbnRlcmFjdCwgdGhhdCBhZGp1c3RlZCBwb3Np dGlvbiBpcyByZXR1cm5lZC4NCi0gICovDQotLXZvaWQNCi0raW50DQotIHVwZGV4dChpbnQgY3Vy cm93LCBpbnQgY3VyY29sKQ0KLSB7DQotLQlzdHJ1Y3QgbGluZQkqbHA7CQkJLyogcG9pbnRlciB0 byBjdXJyZW50IGxpbmUgKi8NCi0tCWludAkgajsJCQkvKiBpbmRleCBpbnRvIGxpbmUgKi8NCi0r CXN0cnVjdCBsaW5lICpscCA9IGN1cndwLT53X2RvdHA7CS8qIHBvaW50ZXIgdG8gY3VycmVudCBs aW5lICovDQotKwlzaXplX3Qgc3RhcnRieXRlOw0KLSsJaW50IGJldHRlcmNvbCA9IGN1cmNvbDsN Ci0rCXNpemVfdCBmdWxsZXh0ZW50Ow0KLSANCi0gCWlmIChuY29sIDwgMikNCi0tCQlyZXR1cm47 DQotKwkJcmV0dXJuIGN1cmNvbDsNCi0gDQotIAkvKg0KLS0JICogY2FsY3VsYXRlIHdoYXQgY29s dW1uIHRoZSBsZWZ0IGJvdW5kIHNob3VsZCBiZQ0KLS0JICogKGZvcmNlIGN1cnNvciBpbnRvIG1p ZGRsZSBoYWxmIG9mIHNjcmVlbikNCi0rCSAqIGNhbGN1bGF0ZSB3aGF0IGNvbHVtbiB0aGUgbGVm dCBib3VuZCBzaG91bGQgYmUgKGZvcmNlDQotKwkgKiBjdXJzb3IgaW50byBtaWRkbGUgaGFsZiBv ZiBzY3JlZW4pLiBFbnN1cmluZyB0aGF0IGl0IGlzIGF0DQotKwkgKiBhIHRhYnN0b3AgYWxsb3dz IHVwZGF0ZSgpIHRvIGNhbGN1bGF0ZSBjdXJjb2wgd2l0aG91dA0KLSsJICogd29uZGVyaW5nIGhv dyB0YWJzdG9wcyBhcmUgY2FsY3VsYXRlZCBiZWZvcmUgdGhlIGZpcnN0ICckJy4NCi0gCSAqLw0K LSAJbGJvdW5kID0gY3VyY29sIC0gKGN1cmNvbCAlIChuY29sID4+IDEpKSAtIChuY29sID4+IDIp Ow0KLS0NCi0tCS8qDQotLQkgKiBzY2FuIHRocm91Z2ggdGhlIGxpbmUgb3V0cHV0aW5nIGNoYXJh Y3RlcnMgdG8gdGhlIHZpcnR1YWwgc2NyZWVuDQotLQkgKiBvbmNlIHdlIHJlYWNoIHRoZSBsZWZ0 IGVkZ2UNCi0tCSAqLw0KLS0JdnRtb3ZlKGN1cnJvdywgLWxib3VuZCk7CQkvKiBzdGFydCBzY2Fu bmluZyBvZmZzY3JlZW4gKi8NCi0tCWxwID0gY3Vyd3AtPndfZG90cDsJCQkvKiBsaW5lIHRvIG91 dHB1dCAqLw0KLS0JZm9yIChqID0gMDsgaiA8IGxsZW5ndGgobHApOyArK2opCS8qIHVudGlsIHRo ZSBlbmQtb2YtbGluZSAqLw0KLS0JCXZ0cHV0ZShsZ2V0YyhscCwgaikpOw0KLS0JdnRlZW9sKCk7 CQkJCS8qIHRydW5jYXRlIHRoZSB2aXJ0dWFsIGxpbmUgKi8NCi0tCXZzY3JlZW5bY3Vycm93XS0+ dl90ZXh0WzBdID0gJyQnOwkvKiBhbmQgcHV0IGEgJyQnIGluIGNvbHVtbiAxICovDQotKwlsYm91 bmQgPSAobGJvdW5kIHwgMHgwNykgKyAxOw0KLSsJdnNjcmVlbltjdXJyb3ddLT52X3RleHRbMF0g PSAnJCc7DQotKwl2dG1vdmUoY3Vycm93LCAxKTsNCi0rCXN0YXJ0Ynl0ZSA9IGdldGJ5dGVvZmNv bChscCwgMCwgbGJvdW5kICsgMSk7DQotKwlmdWxsZXh0ZW50ID0gZ2V0Ynl0ZW9mY29sKGxwLCBz dGFydGJ5dGUsIG5jb2wgKyAxKTsNCi0rCXZ0cHV0cyhscC0+bF90ZXh0ICsgc3RhcnRieXRlLCBm dWxsZXh0ZW50IC0gc3RhcnRieXRlLCAxKTsNCi0rCXZ0ZWVvbCgpOw0KLSsNCi0rCWJldHRlcmNv bCA9IGxib3VuZCArIGdldGNvbG9mYnl0ZShscCwgc3RhcnRieXRlLCAxLCBjdXJ3cC0+d19kb3Rv KTsNCi0rCXJldHVybiAoYmV0dGVyY29sKTsNCi0gfQ0KLSANCi0gLyoNCi1AQCAtNzAyLDEyICs2 NTcsMzUgQEAgdXBkZXh0KGludCBjdXJyb3csIGludCBjdXJjb2wpDQotIHZvaWQNCi0gdWxpbmUo aW50IHJvdywgc3RydWN0IHZpZGVvICp2dnAsIHN0cnVjdCB2aWRlbyAqcHZwKQ0KLSB7DQotLQlj aGFyICAqY3AxOw0KLS0JY2hhciAgKmNwMjsNCi0tCWNoYXIgICpjcDM7DQotLQljaGFyICAqY3A0 Ow0KLS0JY2hhciAgKmNwNTsNCi0rCWNoYXIgICpjcDE7IC8qIFBvaW50ZXIgdG8gdGhlIHN0YXJ0 IG9mIGRpcnR5IHJlZ2lvbiAqLw0KLSsJY2hhciAgKmNwMjsgLyogcHZwJ3MgY291bnRlcnBhcnQg Zm9yIGNwMSAqLw0KLSsJY2hhciAgKmNwMzsgLyogUG9pbnRlciB0byBlbmQgb2YgZGlydHkgcmVn aW9uICovDQotKwljaGFyICAqY3A0OyAvKiBwdnAncyBjb3VudGVycGFydCBmb3IgY3AzICovDQot KwljaGFyICAqY3A1OyAvKiBBZnRlciB0aGlzLCB3aXRoaW4gZGlydHkgcmVnaW9uLCBhbGwgaXMg JyAnICovDQotKwljaGFyICAqbWJjb3VudGVyOw0KLSAJaW50ICAgIG5iZmxhZzsNCi0rCWludCAg ICBzdGFydGNvbDsgLyogb25zY3JlZW4gY29sdW1uIG1hdGNoaW5nIGNwMSAqLw0KLSsJY2hhciAg Kmxhc3RieXRlOyAvKiBieXRlIHdoaWNoIGhhbmRsZXMgbGFzdCBvbnNjcmVlbiBjb2x1bW4gICov DQotKwlpbnQgICAgc2VlbmNvbHMgPSAwOw0KLSsJbWJzdGF0ZV90IG1icyA9IHsgMCB9Ow0KLSsJ d2NoYXJfdCB3YyA9IDA7DQotKw0KLSsJbGFzdGJ5dGUgPSB2dnAtPnZfdGV4dDsNCi0rCXdoaWxl IChzZWVuY29scyA8IG5jb2wgJiYgKmxhc3RieXRlKSB7DQotKwkJc2l6ZV90IGNvbnN1bWVkID0g bWJydG93Yygmd2MsIGxhc3RieXRlLA0KLSsJCSAgICAodnZwLT52X3RleHQgKyBuY29sICogTUJf Q1VSX01BWCAtIGxhc3RieXRlKSwgJm1icyk7DQotKwkJaWYgKGNvbnN1bWVkIDwgKHNpemVfdCkg LTIpIHsNCi0rCQkJbGFzdGJ5dGUgKz0gY29uc3VtZWQ7DQotKwkJCXNlZW5jb2xzICs9IHdjd2lk dGgod2MpOw0KLSsJCX0gZWxzZSB7DQotKwkJCWxhc3RieXRlKys7DQotKwkJCXNlZW5jb2xzKys7 DQotKwkJCW1lbXNldCgmbWJzLCAwLCBzaXplb2YgbWJzKTsNCi0rCQl9DQotKwl9DQotKwlpZiAo bGFzdGJ5dGUgLSB2dnAtPnZfdGV4dCA8IG5jb2wpIHsNCi0rCQlsYXN0Ynl0ZSA9ICZ2dnAtPnZf dGV4dFtuY29sXTsNCi0rCX0NCi0gDQotIAlpZiAodnZwLT52X2NvbG9yICE9IHB2cC0+dl9jb2xv cikgewkvKiBXcm9uZyBjb2xvciwgZG8gYQkgKi8NCi0gCQl0dG1vdmUocm93LCAwKTsJCQkvKiBm dWxsIHJlZHJhdy4JCSAqLw0KLUBAIC03MjMsMTEgKzcwMSwxMiBAQCB1bGluZShpbnQgcm93LCBz dHJ1Y3QgdmlkZW8gKnZ2cCwgc3RydWN0IHZpZGVvICpwdnApDQotIAkJICogcHV0dGluZyB0aGUg aW52aXNpYmxlIGdsaXRjaCBjaGFyYWN0ZXIgb24gdGhlIG5leHQgbGluZS4NCi0gCQkgKiAoSGF6 ZWx0aW5lIGV4ZWN1dGl2ZSA4MCBtb2RlbCAzMCkNCi0gCQkgKi8NCi0tCQljcDIgPSAmdnZwLT52 X3RleHRbbmNvbCAtIChtYWdpY19jb29raWVfZ2xpdGNoID49IDAgPw0KLS0JCSAgICAobWFnaWNf Y29va2llX2dsaXRjaCAhPSAwID8gbWFnaWNfY29va2llX2dsaXRjaCA6IDEpIDogMCldOw0KLSsJ CWNwMiA9IGxhc3RieXRlIC0NCi0rCQkgICAgKG1hZ2ljX2Nvb2tpZV9nbGl0Y2ggPj0gMCA/ICht YWdpY19jb29raWVfZ2xpdGNoICE9IDAgPw0KLSsJCSAgICBtYWdpY19jb29raWVfZ2xpdGNoIDog MSkgOiAwKTsNCi0gI2Vsc2UNCi0gCQljcDEgPSAmdnZwLT52X3RleHRbMF07DQotLQkJY3AyID0g JnZ2cC0+dl90ZXh0W25jb2xdOw0KLSsJCWNwMiA9IGxhc3RieXRlOw0KLSAjZW5kaWYNCi0gCQl3 aGlsZSAoY3AxICE9IGNwMikgew0KLSAJCQl0dHB1dGMoKmNwMSsrKTsNCi1AQCAtNzM4LDIxICs3 MTcsMzEgQEAgdWxpbmUoaW50IHJvdywgc3RydWN0IHZpZGVvICp2dnAsIHN0cnVjdCB2aWRlbyAq cHZwKQ0KLSAJfQ0KLSAJY3AxID0gJnZ2cC0+dl90ZXh0WzBdOwkJLyogQ29tcHV0ZSBsZWZ0IG1h dGNoLgkgKi8NCi0gCWNwMiA9ICZwdnAtPnZfdGV4dFswXTsNCi0tCXdoaWxlIChjcDEgIT0gJnZ2 cC0+dl90ZXh0W25jb2xdICYmIGNwMVswXSA9PSBjcDJbMF0pIHsNCi0rCXdoaWxlIChjcDEgIT0g bGFzdGJ5dGUgJiYgY3AxWzBdID09IGNwMlswXSkgew0KLSAJCSsrY3AxOw0KLSAJCSsrY3AyOw0K LSAJfQ0KLS0JaWYgKGNwMSA9PSAmdnZwLT52X3RleHRbbmNvbF0pCS8qIEFsbCBlcXVhbC4JCSAq Lw0KLSsJaWYgKGNwMSA9PSBsYXN0Ynl0ZSkJLyogQWxsIGVxdWFsLgkJICovDQotIAkJcmV0dXJu Ow0KLSsJd2hpbGUgKGNwMSAhPSB2dnAtPnZfdGV4dCAmJiAhaXNwcmludCgqY3AxKSAmJg0KLSsJ ICAgICAgIG1icnRvd2MoJndjLCBjcDEsIChsYXN0Ynl0ZSAtIGNwMSksICZtYnMpID49IChzaXpl X3QpIC0yKSB7DQotKwkJLS1jcDE7DQotKwkJLS1jcDI7DQotKwl9DQotIAluYmZsYWcgPSBGQUxT RTsNCi0tCWNwMyA9ICZ2dnAtPnZfdGV4dFtuY29sXTsJLyogQ29tcHV0ZSByaWdodCBtYXRjaC4g ICovDQotLQljcDQgPSAmcHZwLT52X3RleHRbbmNvbF07DQotKwljcDMgPSBsYXN0Ynl0ZTsJLyog Q29tcHV0ZSByaWdodCBtYXRjaC4gICovDQotKwljcDQgPSAmcHZwLT52X3RleHRbbGFzdGJ5dGUg LSB2dnAtPnZfdGV4dF07DQotIAl3aGlsZSAoY3AzWy0xXSA9PSBjcDRbLTFdKSB7DQotIAkJLS1j cDM7DQotIAkJLS1jcDQ7DQotIAkJaWYgKGNwM1swXSAhPSAnICcpCS8qIE5vdGUgbm9uLWJsYW5r cyBpbgkgKi8NCi0gCQkJbmJmbGFnID0gVFJVRTsJLyogdGhlIHJpZ2h0IG1hdGNoLgkgKi8NCi0g CX0NCi0rCXdoaWxlIChjcDMgIT0gbGFzdGJ5dGUgJiYgIWlzcHJpbnQoKmNwMykgJiYNCi0rCSAg ICAgICAgbWJydG93Yygmd2MsIGNwMywgKGxhc3RieXRlIC0gY3AzKSwgJm1icykgPj0gKHNpemVf dCkgLTIpIHsNCi0rCQkrK2NwMzsNCi0rCQkrK2NwNDsNCi0rCX0NCi0gCWNwNSA9IGNwMzsJCQkv KiBJcyBlcmFzZSBnb29kPwkgKi8NCi0gCWlmIChuYmZsYWcgPT0gRkFMU0UgJiYgdnZwLT52X2Nv bG9yID09IENURVhUKSB7DQotIAkJd2hpbGUgKGNwNSAhPSBjcDEgJiYgY3A1Wy0xXSA9PSAnICcp DQotQEAgLTc2MiwxMyArNzUxLDI3IEBAIHVsaW5lKGludCByb3csIHN0cnVjdCB2aWRlbyAqdnZw LCBzdHJ1Y3QgdmlkZW8gKnB2cCkNCi0gCQkJY3A1ID0gY3AzOw0KLSAJfQ0KLSAJLyogQWxjeW9u IGhhY2sgKi8NCi0tCXR0bW92ZShyb3csIChpbnQpIChjcDEgLSAmdnZwLT52X3RleHRbMF0pKTsN Ci0rCXN0YXJ0Y29sID0gMDsNCi0rCW1iY291bnRlciA9IHZ2cC0+dl90ZXh0Ow0KLSsJd2hpbGUg KChjcDEgLSBtYmNvdW50ZXIpID4gMCkgew0KLSsJCXNpemVfdCBjb25zdW1lZCA9IG1icnRvd2Mo JndjLCBtYmNvdW50ZXIsIChjcDEgLSBtYmNvdW50ZXIpLA0KLSsJCSAgICAgICAgICAgICAgICAg ICAgICAgICAgJm1icyk7DQotKwkJaWYgKGNvbnN1bWVkIDwgKHNpemVfdCkgLTIpIHsNCi0rCQkJ bWJjb3VudGVyICs9IGNvbnN1bWVkOw0KLSsJCQlzdGFydGNvbCArPSB3Y3dpZHRoKHdjKTsNCi0r CQl9IGVsc2Ugew0KLSsJCQltYmNvdW50ZXIrKzsNCi0rCQkJc3RhcnRjb2wrKzsNCi0rCQkJbWVt c2V0KCZtYnMsIDAsIHNpemVvZiBtYnMpOw0KLSsJCX0NCi0rCX0NCi0rCXR0bW92ZShyb3csIHN0 YXJ0Y29sKTsNCi0gI2lmZGVmCVNUQU5ET1VUX0dMSVRDSA0KLSAJaWYgKHZ2cC0+dl9jb2xvciAh PSBDVEVYVCAmJiBtYWdpY19jb29raWVfZ2xpdGNoID4gMCkgew0KLSAJCWlmIChjcDEgPCAmdnZw LT52X3RleHRbbWFnaWNfY29va2llX2dsaXRjaF0pDQotIAkJCWNwMSA9ICZ2dnAtPnZfdGV4dFtt YWdpY19jb29raWVfZ2xpdGNoXTsNCi0tCQlpZiAoY3A1ID4gJnZ2cC0+dl90ZXh0W25jb2wgLSBt YWdpY19jb29raWVfZ2xpdGNoXSkNCi0tCQkJY3A1ID0gJnZ2cC0+dl90ZXh0W25jb2wgLSBtYWdp Y19jb29raWVfZ2xpdGNoXTsNCi0rCQlpZiAoY3A1ID4gbGFzdGJ5dGUgLSBtYWdpY19jb29raWVf Z2xpdGNoKQ0KLSsJCQljcDUgPSBsYXN0Ynl0ZSAtIG1hZ2ljX2Nvb2tpZV9nbGl0Y2g7DQotIAl9 IGVsc2UgaWYgKG1hZ2ljX2Nvb2tpZV9nbGl0Y2ggPCAwKQ0KLSAjZW5kaWYNCi0gCQl0dGNvbG9y KHZ2cC0+dl9jb2xvcik7DQotQEAgLTgwMSw0NiArODA0LDM5IEBAIG1vZGVsaW5lKHN0cnVjdCBt Z3dpbiAqd3AsIGludCBtb2RlbGluZWNvbG9yKQ0KLSAJdnNjcmVlbltuXS0+dl9mbGFnIHw9IChW RkNIRyB8IFZGSEJBRCk7CS8qIFJlY29tcHV0ZSwgZGlzcGxheS4JICovDQotIAl2dG1vdmUobiwg MCk7CQkJCS8qIFNlZWsgdG8gcmlnaHQgbGluZS4JICovDQotIAlicCA9IHdwLT53X2J1ZnA7DQot LQl2dHB1dGMoJy0nKTsNCi0tCXZ0cHV0YygnLScpOw0KLSsJbiA9IHZ0cHV0cygiLS0iLCAwLCAw KTsNCi0gCWlmICgoYnAtPmJfZmxhZyAmIEJGUkVBRE9OTFkpICE9IDApIHsNCi0tCQl2dHB1dGMo JyUnKTsNCi0rCQluICs9IHZ0cHV0cygiJSIsIDAsIG4pOw0KLSAJCWlmICgoYnAtPmJfZmxhZyAm IEJGQ0hHKSAhPSAwKQ0KLS0JCQl2dHB1dGMoJyonKTsNCi0rCQkJbiArPSB2dHB1dHMoIioiLCAw LCBuKTsNCi0gCQllbHNlDQotLQkJCXZ0cHV0YygnJScpOw0KLSsJCQluICs9IHZ0cHV0cygiJSIs IDAsIG4pOw0KLSAJfSBlbHNlIGlmICgoYnAtPmJfZmxhZyAmIEJGQ0hHKSAhPSAwKSB7CS8qICIq IiBpZiBjaGFuZ2VkLgkgKi8NCi0tCQl2dHB1dGMoJyonKTsNCi0tCQl2dHB1dGMoJyonKTsNCi0r CQluICs9IHZ0cHV0cygiKioiLCAwLCBuKTsNCi0gCX0gZWxzZSB7DQotLQkJdnRwdXRjKCctJyk7 DQotLQkJdnRwdXRjKCctJyk7DQotKwkJbiArPSB2dHB1dHMoIi0tIiwgMCwgbik7DQotIAl9DQot LQl2dHB1dGMoJy0nKTsNCi0rCW4gKz0gdnRwdXRzKCItIiwgMCwgbik7DQotIAluID0gNTsNCi0t CW4gKz0gdnRwdXRzKCJNZzogIik7DQotKwluICs9IHZ0cHV0cygiTWc6ICIsIDAsIG4pOw0KLSAJ aWYgKGJwLT5iX2JuYW1lWzBdICE9ICdcMCcpDQotLQkJbiArPSB2dHB1dHMoJihicC0+Yl9ibmFt ZVswXSkpOw0KLSsJCW4gKz0gdnRwdXRzKCYoYnAtPmJfYm5hbWVbMF0pLCAwLCBuKTsNCi0gCXdo aWxlIChuIDwgNDIpIHsJCQkvKiBQYWQgb3V0IHdpdGggYmxhbmtzLgkgKi8NCi0tCQl2dHB1dGMo JyAnKTsNCi0tCQkrK247DQotKwkJbiArPSB2dHB1dHMoIiAiLCAwLCBuKTsNCi0gCX0NCi0tCXZ0 cHV0YygnKCcpOw0KLS0JKytuOw0KLSsJbiArPSB2dHB1dHMoIigiLCAwLCBuKTsNCi0gCWZvciAo bWQgPSAwOyA7ICkgew0KLS0JCW4gKz0gdnRwdXRzKGJwLT5iX21vZGVzW21kXS0+cF9uYW1lKTsN Ci0rCQluICs9IHZ0cHV0cyhicC0+Yl9tb2Rlc1ttZF0tPnBfbmFtZSwgMCwgbik7DQotIAkJaWYg KCsrbWQgPiBicC0+Yl9ubW9kZXMpDQotIAkJCWJyZWFrOw0KLS0JCXZ0cHV0YygnLScpOw0KLS0J CSsrbjsNCi0rCQluICs9IHZ0cHV0cygiLSIsIDAsIG4pOw0KLSAJfQ0KLSAJLyogWFhYIFRoZXNl IHNob3VsZCBldmVudHVhbGx5IG1vdmUgdG8gYSByZWFsIG1vZGUgKi8NCi0gCWlmIChtYWNyb2Rl ZiA9PSBUUlVFKQ0KLS0JCW4gKz0gdnRwdXRzKCItZGVmIik7DQotKwkJbiArPSB2dHB1dHMoIi1k ZWYiLCAwLCBuKTsNCi0gCWlmIChnbG9iYWx3ZCA9PSBUUlVFKQ0KLS0JCW4gKz0gdnRwdXRzKCIt Z3dkIik7DQotLQl2dHB1dGMoJyknKTsNCi0tCSsrbjsNCi0rCQluICs9IHZ0cHV0cygiLWd3ZCIs IDAsIG4pOw0KLSsJbiArPSB2dHB1dHMoIikiLCAwLCBuKTsNCi0gDQotIAlpZiAobGluZW5vcyAm JiBjb2xub3MpDQotIAkJbGVuID0gc25wcmludGYoc2wsIHNpemVvZihzbCksICItLUwlZC0tQyVk Iiwgd3AtPndfZG90bGluZSwNCi1AQCAtODUwLDI3ICs4NDYsMTMyIEBAIG1vZGVsaW5lKHN0cnVj dCBtZ3dpbiAqd3AsIGludCBtb2RlbGluZWNvbG9yKQ0KLSAJZWxzZSBpZiAoY29sbm9zKQ0KLSAJ CWxlbiA9IHNucHJpbnRmKHNsLCBzaXplb2Yoc2wpLCAiLS1DJWQiLCBnZXRjb2xwb3Mod3ApKTsN Ci0gCWlmICgobGluZW5vcyB8fCBjb2xub3MpICYmIGxlbiA8IHNpemVvZihzbCkgJiYgbGVuICE9 IC0xKQ0KLS0JCW4gKz0gdnRwdXRzKHNsKTsNCi0rCQluICs9IHZ0cHV0cyhzbCwgMCwgbik7DQot IA0KLSAJd2hpbGUgKG4gPCBuY29sKSB7CQkJLyogUGFkIG91dC4JCSAqLw0KLS0JCXZ0cHV0Yygn LScpOw0KLS0JCSsrbjsNCi0rCQluICs9IHZ0cHV0cygiLSIsIDAsIG4pOw0KLSAJfQ0KLSB9DQot IA0KLSAvKg0KLS0gKiBPdXRwdXQgYSBzdHJpbmcgdG8gdGhlIG1vZGUgbGluZSwgcmVwb3J0IGhv dyBsb25nIGl0IHdhcy4NCi0rICogT3V0cHV0IGEgc3RyaW5nIHRvIHRoZSBtb2RlIGxpbmUsIHJl cG9ydCBob3cgbG9uZyBpdCB3YXMsDQotKyAqIGRlYWxpbmcgd2l0aCBsb25nIGxpbmVzIGFuZCB0 aGUgZGlzcGxheSBvZiB1bnByaW50YWJsZQ0KLSsgKiB0aGluZ3MgbGlrZSBjb250cm9sIGNoYXJh Y3RlcnMuIEFsc28gZXhwYW5kIHRhYnMgZXZlcnkgOA0KLSsgKiBjb2x1bW5zLiBUaGlzIGNvZGUg b25seSBwdXRzIHByaW50aW5nIGNoYXJhY3RlcnMgaW50bw0KLSsgKiB0aGUgdmlydHVhbCBkaXNw bGF5IGltYWdlLiBTcGVjaWFsIGNhcmUgbXVzdCBiZSB0YWtlbiB3aGVuDQotKyAqIGV4cGFuZGlu ZyB0YWJzLiBPbiBhIHNjcmVlbiB3aG9zZSB3aWR0aCBpcyBub3QgYSBtdWx0aXBsZQ0KLSsgKiBv ZiA4LCBpdCBpcyBwb3NzaWJsZSBmb3IgdGhlIHZpcnR1YWwgY3Vyc29yIHRvIGhpdCB0aGUNCi0r ICogcmlnaHQgbWFyZ2luIGJlZm9yZSB0aGUgbmV4dCB0YWIgc3RvcCBpcyByZWFjaGVkLiBUaGlz DQotKyAqIG1ha2VzIHRoZSB0YWIgY29kZSBsb29wIGlmIHlvdSBhcmUgbm90IGNhcmVmdWwuDQot KyAqIFRocmVlIGd1ZXNzZXMgaG93IHdlIGZvdW5kIHRoaXMuDQotICAqLw0KLSBpbnQNCi0tdnRw dXRzKGNvbnN0IGNoYXIgKnMpDQotK3Z0cHV0cyhjb25zdCBjaGFyICpzLCBjb25zdCBzaXplX3Qg bWF4X2J5dGVzLCBjb25zdCBzaXplX3QgaW5pdGlhbF9jb2wpDQotIHsNCi0tCWludCBuID0gMDsN Ci0rCWNvbnN0IHVuc2lnbmVkIGNoYXIgKnVzID0gKGNvbnN0IHVuc2lnbmVkIGNoYXIgKikgczsN Ci0rCXN0cnVjdCB2aWRlbyAqdnAgPSB2c2NyZWVuW3Z0cm93XTsNCi0rCXNpemVfdCBieXRlc19o YW5kbGVkID0gMDsNCi0rCXNpemVfdCBsYXN0X2Z1bGxfYnl0ZV9zdGFydCA9IHZ0Y29sOw0KLSsJ c2l6ZV90IHNwYWNlX3ByaW50ZWQgPSAwOw0KLSsNCi0rCWlmICghcykgew0KLSsJCXJldHVybiAo MCk7DQotKwl9DQotKw0KLSsJd2hpbGUgKCp1cyAmJiAoIW1heF9ieXRlcyB8fCBieXRlc19oYW5k bGVkIDwgbWF4X2J5dGVzKSkgew0KLSsJCWlmIChzcGFjZV9wcmludGVkICsgaW5pdGlhbF9jb2wg Pj0gbmNvbCkgew0KLSsJCQlicmVhazsNCi0rCQl9IGVsc2UgaWYgKCp1cyA9PSAnXHQnDQotKyNp ZmRlZglOT1RBQg0KLSsJCSAgICAgICAgICAgJiYgIShjdXJicC0+Yl9mbGFnICYgQkZOT1RBQikN Ci0rI2VuZGlmDQotKwkJICAgICAgICAgICApIHsNCi0rCQkJbGFzdF9mdWxsX2J5dGVfc3RhcnQg PSB2dGNvbDsNCi0rCQkJZG8gew0KLSsJCQkJaWYgKHZ0Y29sID49IDApIHsNCi0rCQkJCQlsYXN0 X2Z1bGxfYnl0ZV9zdGFydCA9IHZ0Y29sOw0KLSsJCQkJCXZwLT52X3RleHRbdnRjb2xdID0gJyAn Ow0KLSsJCQkJfQ0KLSsJCQkJdnRjb2wrKzsNCi0rCQkJCXNwYWNlX3ByaW50ZWQrKzsNCi0rCQkJ fSB3aGlsZSAoc3BhY2VfcHJpbnRlZCArIGluaXRpYWxfY29sIDwgbmNvbCAmJg0KLSsJCQkgICAg ICAgICAoKHNwYWNlX3ByaW50ZWQgKyBpbml0aWFsX2NvbCkgJiAweDA3KSk7DQotKwkJCXVzKys7 DQotKwkJCWJ5dGVzX2hhbmRsZWQrKzsNCi0rCQl9IGVsc2UgaWYgKElTQ1RSTCgqdXMpKSB7DQot KwkJCWxhc3RfZnVsbF9ieXRlX3N0YXJ0ID0gdnRjb2w7DQotKwkJCWlmICh2dGNvbCA+PSAwKSB7 DQotKwkJCQl2cC0+dl90ZXh0W3Z0Y29sXSA9ICdeJzsNCi0rCQkJfQ0KLSsJCQl2dGNvbCsrOw0K LSsJCQlpZiAodnRjb2wgPj0gMCkgew0KLSsJCQkJdnAtPnZfdGV4dFt2dGNvbF0gPSBDQ0hSKCp1 cyk7DQotKwkJCX0NCi0rCQkJdnRjb2wrKzsNCi0rCQkJYnl0ZXNfaGFuZGxlZCsrOw0KLSsJCQlz cGFjZV9wcmludGVkICs9IDI7DQotKwkJCXVzKys7DQotKwkJfSBlbHNlIGlmIChpc3ByaW50KCp1 cykpIHsNCi0rCQkJbGFzdF9mdWxsX2J5dGVfc3RhcnQgPSB2dGNvbDsNCi0rCQkJaWYgKHZ0Y29s ID49IDApIHsNCi0rCQkJCXZwLT52X3RleHRbdnRjb2xdID0gKnVzKys7DQotKwkJCX0NCi0rCQkJ dnRjb2wrKzsNCi0rCQkJYnl0ZXNfaGFuZGxlZCsrOw0KLSsJCQlzcGFjZV9wcmludGVkKys7DQot KwkJfSBlbHNlIGlmICghKGN1cmJwLT5iX2ZsYWcgJiBCRlNIT1dSQVcpKSB7DQotKwkJCW1ic3Rh dGVfdCBtYnMgPSB7IDAgfTsNCi0rCQkJd2NoYXJfdCB3YyA9IDA7DQotKwkJCXNpemVfdCBjb25z dW1hYmxlID0gbWF4X2J5dGVzID8NCi0rCQkJICAgICAgICAobWF4X2J5dGVzIC0gYnl0ZXNfaGFu ZGxlZCkgOiAtMTsNCi0rCQkJc2l6ZV90IGNvbnN1bWVkID0gbWJydG93Yygmd2MsIChjb25zdCBj aGFyICopdXMsDQotKwkJCSAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3VtYWJsZSwgJm1i cyk7DQotKwkJCWludCB3aWR0aCA9IC0xOw0KLSsJCQlsYXN0X2Z1bGxfYnl0ZV9zdGFydCA9IHZ0 Y29sOw0KLSsJCQlpZiAoY29uc3VtZWQgPCAoc2l6ZV90KSAtMikgew0KLSsJCQkJd2lkdGggPSB3 Y3dpZHRoKHdjKTsNCi0rCQkJfQ0KLSsJCQlpZiAod2lkdGggPj0gMCkgew0KLSsJCQkJYnl0ZXNf aGFuZGxlZCArPSBjb25zdW1lZDsNCi0rCQkJCXNwYWNlX3ByaW50ZWQgKz0gd2lkdGg7DQotKwkJ CQlkbyB7DQotKwkJCQkJaWYgKHZ0Y29sID49IDApIHsNCi0rCQkJCQkJdnAtPnZfdGV4dFt2dGNv bF0gPSAqdXMrKzsNCi0rCQkJCQl9DQotKwkJCQkJdnRjb2wrKzsNCi0rCQkJCX0gd2hpbGUgKC0t Y29uc3VtZWQpOw0KLSsJCQl9IGVsc2Ugew0KLSsJCQkJY2hhciBiZls1XTsNCi0rCQkJCXNucHJp bnRmKGJmLCBzaXplb2YoYmYpLCAiXFwlbyIsICp1cyk7DQotKwkJCQlieXRlc19oYW5kbGVkKys7 DQotKwkJCQlzcGFjZV9wcmludGVkICs9IHZ0cHV0cyhiZiwgMCwNCi0rCQkJCSAgICBzcGFjZV9w cmludGVkICsgaW5pdGlhbF9jb2wpOw0KLSsJCQkJdXMrKzsNCi0rCQkJfQ0KLSsJCX0gZWxzZSB7 DQotKwkJCWNoYXIgYmZbNV07DQotKwkJCWxhc3RfZnVsbF9ieXRlX3N0YXJ0ID0gdnRjb2w7DQot KwkJCXNucHJpbnRmKGJmLCBzaXplb2YoYmYpLCAiXFwlbyIsICp1cyk7DQotKwkJCWJ5dGVzX2hh bmRsZWQrKzsNCi0rCQkJc3BhY2VfcHJpbnRlZCArPSB2dHB1dHMoYmYsIDAsDQotKwkJCSAgICBz cGFjZV9wcmludGVkICsgaW5pdGlhbF9jb2wpOw0KLSsJCQl1cysrOw0KLSsJCX0NCi0rCX0NCi0g DQotLQl3aGlsZSAoKnMgIT0gJ1wwJykgew0KLS0JCXZ0cHV0YygqcysrKTsNCi0tCQkrK247DQot KwlpZiAoKHNwYWNlX3ByaW50ZWQgKyBpbml0aWFsX2NvbCA+IG5jb2wpIHx8DQotKwkgICAgKHNw YWNlX3ByaW50ZWQgKyBpbml0aWFsX2NvbCA9PSBuY29sICYmDQotKwkgICAgKCp1cyAmJiAoIW1h eF9ieXRlcyB8fCBieXRlc19oYW5kbGVkIDwgbWF4X2J5dGVzKSkpKSB7DQotKwkJdnAtPnZfdGV4 dFtsYXN0X2Z1bGxfYnl0ZV9zdGFydF0gPSAnJCc7DQotKwkJd2hpbGUgKCsrbGFzdF9mdWxsX2J5 dGVfc3RhcnQgPD0gdnRjb2wpIHsNCi0rCQkJdnAtPnZfdGV4dFtsYXN0X2Z1bGxfYnl0ZV9zdGFy dF0gPSAnICc7DQotKwkJfQ0KLSsJCWJ5dGVzX2hhbmRsZWQrKzsNCi0rCQlzcGFjZV9wcmludGVk Kys7DQotKwkJdXMrKzsNCi0gCX0NCi0tCXJldHVybiAobik7DQotKw0KLSsJcmV0dXJuIChzcGFj ZV9wcmludGVkKTsNCi0gfQ0KLSANCi0gLyoNCi1AQCAtODg4LDExICs5ODksMTEgQEAgaGFzaChz dHJ1Y3QgdmlkZW8gKnZwKQ0KLSAJY2hhciAgICpzOw0KLSANCi0gCWlmICgodnAtPnZfZmxhZyAm IFZGSEJBRCkgIT0gMCkgewkvKiBIYXNoIGJhZC4JCSAqLw0KLS0JCXMgPSAmdnAtPnZfdGV4dFtu Y29sIC0gMV07DQotLQkJZm9yIChpID0gbmNvbDsgaSAhPSAwOyAtLWksIC0tcykNCi0rCQlzID0g JnZwLT52X3RleHRbbmNvbCAqIE1CX0NVUl9NQVggLSAxXTsNCi0rCQlmb3IgKGkgPSBuY29sICog TUJfQ1VSX01BWDsgaSAhPSAwOyAtLWksIC0tcykNCi0gCQkJaWYgKCpzICE9ICcgJykNCi0gCQkJ CWJyZWFrOw0KLS0JCW4gPSBuY29sIC0gaTsJCQkvKiBFcmFzZSBjaGVhcGVyPwkgKi8NCi0rCQlu ID0gbmNvbCAqIE1CX0NVUl9NQVggLSBpOwkJCS8qIEVyYXNlIGNoZWFwZXI/CSAqLw0KLSAJCWlm IChuID4gdGNlZW9sKQ0KLSAJCQluID0gdGNlZW9sOw0KLSAJCXZwLT52X2Nvc3QgPSBpICsgbjsJ CS8qIEJ5dGVzICsgYmxhbmtzLgkgKi8NCi1kaWZmIC0tZ2l0IGEvZWNoby5jIGIvZWNoby5jDQot aW5kZXggNjk2NmMwMC4uMjJiODMzMyAxMDA2NDQNCi0tLS0gYS9lY2hvLmMNCi0rKysgYi9lY2hv LmMNCi1AQCAtODQ0LDkgKzg0NCwxMSBAQCBld3ByaW50Zihjb25zdCBjaGFyICpmbXQsIC4uLikN Ci0gICogJWsgcHJpbnRzIHRoZSBuYW1lIG9mIHRoZSBjdXJyZW50IGtleSAoYW5kIHRha2VzIG5v IGFyZ3VtZW50cykuDQotICAqICVkIHByaW50cyBhIGRlY2ltYWwgaW50ZWdlcg0KLSAgKiAlbyBw cmludHMgYW4gb2N0YWwgaW50ZWdlcg0KLSsgKiAleCBwcmludHMgYSBoZXhhZGVjaW1hbCBpbnRl Z2VyDQotICAqICVwIHByaW50cyBhIHBvaW50ZXINCi0gICogJXMgcHJpbnRzIGEgc3RyaW5nDQot ICAqICVsZCBwcmludHMgYSBsb25nIHdvcmQNCi0rICogJWx4IHByaW50cyBhIGhleGFkZWNpbWFs IGxvbmcgd29yZA0KLSAgKiBBbnl0aGluZyBlbHNlIGlzIGVjaG9lZCB2ZXJiYXRpbQ0KLSAgKi8N Ci0gc3RhdGljIHZvaWQNCi1AQCAtODg1LDYgKzg4NywxMCBAQCBlZm9ybWF0KGNvbnN0IGNoYXIg KmZwLCB2YV9saXN0IGFwKQ0KLSAJCQkJZXB1dGkodmFfYXJnKGFwLCBpbnQpLCA4KTsNCi0gCQkJ CWJyZWFrOw0KLSANCi0rCQkJY2FzZSAneCc6DQotKwkJCQllcHV0aSh2YV9hcmcoYXAsIGludCks IDE2KTsNCi0rCQkJCWJyZWFrOw0KLSsNCi0gCQkJY2FzZSAncCc6DQotIAkJCQlzbnByaW50Zih0 bXAsIHNpemVvZih0bXApLCAiJXAiLA0KLSAJCQkJICAgIHZhX2FyZyhhcCwgdm9pZCAqKSk7DQot QEAgLTkwMiw2ICs5MDgsOSBAQCBlZm9ybWF0KGNvbnN0IGNoYXIgKmZwLCB2YV9saXN0IGFwKQ0K LSAJCQkJY2FzZSAnZCc6DQotIAkJCQkJZXB1dGwodmFfYXJnKGFwLCBsb25nKSwgMTApOw0KLSAJ CQkJCWJyZWFrOw0KLSsJCQkJY2FzZSAneCc6DQotKwkJCQkJZXB1dGwodmFfYXJnKGFwLCBsb25n KSwgMTYpOw0KLSsJCQkJCWJyZWFrOw0KLSAJCQkJZGVmYXVsdDoNCi0gCQkJCQllcHV0YyhjKTsN Ci0gCQkJCQlicmVhazsNCi1AQCAtOTM5LDYgKzk0OCw3IEBAIHN0YXRpYyB2b2lkDQotIGVwdXRs KGxvbmcgbCwgaW50IHIpDQotIHsNCi0gCWxvbmcJIHE7DQotKwlpbnQJIGM7DQotIA0KLSAJaWYg KGwgPCAwKSB7DQotIAkJZXB1dGMoJy0nKTsNCi1AQCAtOTQ2LDcgKzk1NiwxMCBAQCBlcHV0bChs b25nIGwsIGludCByKQ0KLSAJfQ0KLSAJaWYgKChxID0gbCAvIHIpICE9IDApDQotIAkJZXB1dGwo cSwgcik7DQotLQllcHV0YygoaW50KShsICUgcikgKyAnMCcpOw0KLSsJYyA9IChpbnQpKGwgJSBy KSArICcwJzsNCi0rCWlmIChjID4gJzknKQ0KLSsJCWMgKz0gJ2EnIC0gJzknIC0gMTsNCi0rCWVw dXRjKGMpOw0KLSB9DQotIA0KLSAvKg0KLWRpZmYgLS1naXQgYS9mdW5tYXAuYyBiL2Z1bm1hcC5j DQotaW5kZXggYmQ1NTVkNi4uN2Q4OGI3NSAxMDA2NDQNCi0tLS0gYS9mdW5tYXAuYw0KLSsrKyBi L2Z1bm1hcC5jDQotQEAgLTExNCw2ICsxMTQsNyBAQCBzdGF0aWMgc3RydWN0IGZ1bm1hcCBmdW5j dG5hbWVzW10gPSB7DQotIAl7YnVmZmVyaW5zZXJ0LCAiaW5zZXJ0LWJ1ZmZlciIsfSwNCi0gCXtm aWxlaW5zZXJ0LCAiaW5zZXJ0LWZpbGUiLH0sDQotIAl7ZmlsbHdvcmQsICJpbnNlcnQtd2l0aC13 cmFwIix9LA0KLSsJe2luc2VydF9jaGFyLCAiaW5zZXJ0LWNoYXIiLH0sDQotIAl7YmFja2lzZWFy Y2gsICJpc2VhcmNoLWJhY2t3YXJkIix9LA0KLSAJe2Zvcndpc2VhcmNoLCAiaXNlYXJjaC1mb3J3 YXJkIix9LA0KLSAJe2pvaW5saW5lLCAiam9pbi1saW5lIix9LA0KLUBAIC0xOTEsNiArMTkyLDcg QEAgc3RhdGljIHN0cnVjdCBmdW5tYXAgZnVuY3RuYW1lc1tdID0gew0KLSAJe3NoZWxsY29tbWFu ZCwgInNoZWxsLWNvbW1hbmQiLH0sDQotIAl7cGlwZXJlZ2lvbiwgInNoZWxsLWNvbW1hbmQtb24t cmVnaW9uIix9LA0KLSAJe3Nocmlua3dpbmQsICJzaHJpbmstd2luZG93Iix9LA0KLSsJe3Nob3df cmF3X21vZGUsICJzaG93LXJhdy1tb2RlIix9LA0KLSAjaWZkZWYgTk9UQUINCi0gCXtzcGFjZV90 b190YWJzdG9wLCAic3BhY2UtdG8tdGFic3RvcCIsfSwNCi0gI2VuZGlmIC8qIE5PVEFCICovDQot ZGlmZiAtLWdpdCBhL2tiZC5jIGIva2JkLmMNCi1pbmRleCAxZDdhMWEyLi5mNjEzYjEwIDEwMDY0 NA0KLS0tLSBhL2tiZC5jDQotKysrIGIva2JkLmMNCi1AQCAtOSw2ICs5LDggQEANCi0gI2luY2x1 ZGUgPHN5cy9xdWV1ZS5oPg0KLSAjaW5jbHVkZSA8c2lnbmFsLmg+DQotICNpbmNsdWRlIDxzdGRp by5oPg0KLSsjaW5jbHVkZSA8c3RkbGliLmg+DQotKyNpbmNsdWRlIDx3Y2hhci5oPg0KLSANCi0g I2luY2x1ZGUgImRlZi5oIg0KLSAjaW5jbHVkZSAia2JkLmgiDQotQEAgLTQwNiw2ICs0MDgsNDMg QEAgcXVvdGUoaW50IGYsIGludCBuKQ0KLSB9DQotIA0KLSAvKg0KLSsgKiBQcm9tcHQgZm9yIGEg Y29kZXBvaW50IGluIHdoYXRldmVyIHRoZSBuYXRpdmUgc3lzdGVtJ3MgZW5jb2RpbmcgaXMsDQot KyAqIGluc2VydCBpdCBpbnRvIHRoZSBmaWxlDQotKyAqLw0KLStpbnQNCi0raW5zZXJ0X2NoYXIo aW50IGYsIGludCBuKQ0KLSt7DQotKwljaGFyICpidWZwOw0KLSsJY2hhciBpbnBidWZbMzJdOw0K LSsJd2NoYXJfdCB3YzsNCi0rCWNoYXIgbWJbTUJfQ1VSX01BWCArIDFdOw0KLSsJbWJzdGF0ZV90 IG1icyA9IHsgMCB9Ow0KLSsJc2l6ZV90IG1ic2xlbjsNCi0rCXNpemVfdCBpOw0KLSsNCi0rCWlm ICgoYnVmcCA9IGVyZWFkKCJJbnNlcnQgY2hhcmFjdGVyIChoZXgpOiAiLCBpbnBidWYsIHNpemVv ZiBpbnBidWYsDQotKwkgICAgIEVGTkVXKSkgPT0gTlVMTCkgew0KLSsJCXJldHVybiAoQUJPUlQp Ow0KLSsJfSBlbHNlIGlmIChidWZwWzBdID09ICdcMCcpIHsNCi0rCQlyZXR1cm4gKEZBTFNFKTsN Ci0rCX0NCi0rDQotKwl3YyA9ICh3Y2hhcl90KSBzdHJ0b2xsKGJ1ZnAsIE5VTEwsIDE2KTsNCi0r CW1ic2xlbiA9IHdjcnRvbWIobWIsIHdjLCAmbWJzKTsNCi0rCWlmIChtYnNsZW4gPT0gKHNpemVf dCkgLTEpIHsNCi0rCQlyZXR1cm4gKEZBTFNFKTsNCi0rCX0NCi0rDQotKwlmb3IgKGkgPSAwOyBp IDwgbWJzbGVuOyArK2kpIHsNCi0rCQlpZiAobGluc2VydCgxLCBtYltpXSkgPT0gRkFMU0UpIHsN Ci0rCQkJcmV0dXJuIChGQUxTRSk7DQotKwkJfQ0KLSsJfQ0KLSsNCi0rCXJldHVybiAoVFJVRSk7 DQotK30NCi0rDQotKy8qDQotICAqIFdyYXBlciBmdW5jdGlvbiB0byBjb3VudCBpbnZvY2F0aW9u IHJlcGVhdHMuDQotICAqIFdlIGlnbm9yZSBhbnkgZnVuY3Rpb24gd2hvc2Ugc29sZSBwdXJwb3Nl IGlzIHRvIGdldCB1cw0KLSAgKiB0byB0aGUgaW50ZW5kZWQgZnVuY3Rpb24uDQotZGlmZiAtLWdp dCBhL2tleW1hcC5jIGIva2V5bWFwLmMNCi1pbmRleCBlZjcxZjg0Li5hYjIzMTgyIDEwMDY0NA0K LS0tLSBhL2tleW1hcC5jDQotKysrIGIva2V5bWFwLmMNCi1AQCAtMTIwLDYgKzEyMCwyMSBAQCBz dGF0aWMgc3RydWN0IEtFWU1BUEUgKDIpIGNYNG1hcCA9IHsNCi0gCX0NCi0gfTsNCi0gDQotK3N0 YXRpYyBQRiBjWDhKW10gPSB7DQotKwlpbnNlcnRfY2hhcgkJLyogXk0gKi8NCi0rfTsNCi0rDQot K3N0YXRpYyBzdHJ1Y3QgS0VZTUFQRSAoMSkgY1g4bWFwID0gew0KLSsJMSwNCi0rCTEsDQotKwly ZXNjYW4sDQotKwl7DQotKwkJew0KLSsJCQlDQ0hSKCdNJyksIENDSFIoJ00nKSwgY1g4SiwgTlVM TA0KLSsJCX0NCi0rCX0NCi0rfTsNCi0rDQotIHN0YXRpYyBQRiBjWGNCW10gPSB7DQotIAlsaXN0 YnVmZmVycywJCS8qIF5CICovDQotIAlxdWl0LAkJCS8qIF5DICovDQotQEAgLTE1OCw2ICsxNzMs MTAgQEAgc3RhdGljIFBGIGNYMFtdID0gew0KLSAJTlVMTAkJCS8qIDQgKi8NCi0gfTsNCi0gDQot K3N0YXRpYyBQRiBjWDhbXSA9IHsNCi0rCU5VTEwJCQkvKiA0ICovDQotK307DQotKw0KLSBzdGF0 aWMgUEYgY1hlcVtdID0gew0KLSAJc2hvd2Nwb3MJCS8qID0gKi8NCi0gfTsNCi1AQCAtMTg5LDkg KzIwOCw5IEBAIHN0YXRpYyBQRiBjWGNhcltdID0gew0KLSAJdW5kbwkJCS8qIHUgKi8NCi0gfTsN Ci0gDQotLXN0cnVjdCBLRVlNQVBFICg2KSBjWG1hcCA9IHsNCi0tCTYsDQotLQk2LA0KLStzdHJ1 Y3QgS0VZTUFQRSAoNykgY1htYXAgPSB7DQotKwk3LA0KLSsJNywNCi0gCXJlc2NhbiwNCi0gCXsN Ci0gCQl7DQotQEAgLTIwNyw2ICsyMjYsOSBAQCBzdHJ1Y3QgS0VZTUFQRSAoNikgY1htYXAgPSB7 DQotIAkJCScwJywgJzQnLCBjWDAsIChLRVlNQVAgKikgJiBjWDRtYXANCi0gCQl9LA0KLSAJCXsN Ci0rCQkJJzgnLCAnOCcsIGNYOCwgKEtFWU1BUCAqKSAmIGNYOG1hcA0KLSsJCX0sDQotKwkJew0K LSAJCQknPScsICc9JywgY1hlcSwgTlVMTA0KLSAJCX0sDQotIAkJew0KLUBAIC00OTEsNiArNTEz LDE4IEBAIHN0YXRpYyBzdHJ1Y3QgS0VZTUFQRSAoMSkgb3ZlcndtYXAgPSB7DQotIAl9DQotIH07 DQotIA0KLStzdGF0aWMgc3RydWN0IEtFWU1BUEUgKDEpIHJhd21hcCA9IHsNCi0rCTAsDQotKwkx LAkJLyogMSB0byBhdm9pZCAwIHNpemVkIGFycmF5ICovDQotKwlyZXNjYW4sDQotKwl7DQotKwkJ LyogdW51c2VkIGR1bW15IGVudHJ5IGZvciBWTVMgQyAqLw0KLSsJCXsNCi0rCQkJKEtDSEFSKTAs IChLQ0hBUikwLCBOVUxMLCBOVUxMDQotKwkJfQ0KLSsJfQ0KLSt9Ow0KLSsNCi0gDQotIC8qDQot ICAqIFRoZSBiYXNpYyAocm9vdCkga2V5Ym9hcmQgbWFwDQotQEAgLTUxMyw2ICs1NDcsNyBAQCBz dGF0aWMgc3RydWN0IG1hcHNfcyBtYXBfdGFibGVbXSA9IHsNCi0gCXsoS0VZTUFQICopICZub3Rh Ym1hcCwgIm5vdGFiIix9LA0KLSAjZW5kaWYgLyogTk9UQUIgKi8NCi0gCXsoS0VZTUFQICopICZv dmVyd21hcCwgIm92ZXJ3cml0ZSIsfSwNCi0rCXsoS0VZTUFQICopICZyYXdtYXAsICJyYXciLH0s DQotIAl7KEtFWU1BUCAqKSAmbWV0YW1hcCwgImVzYyBwcmVmaXgiLH0sDQotIAl7KEtFWU1BUCAq KSAmY1htYXAsICJjLXggcHJlZml4Iix9LA0KLSAJeyhLRVlNQVAgKikgJmNYNG1hcCwgImMteCA0 IHByZWZpeCIsfSwNCi1kaWZmIC0tZ2l0IGEvbW9kZXMuYyBiL21vZGVzLmMNCi1pbmRleCAwMjdh NWNkLi4yMDEzYmNiIDEwMDY0NA0KLS0tLSBhL21vZGVzLmMNCi0rKysgYi9tb2Rlcy5jDQotQEAg LTExMSw2ICsxMTEsMjMgQEAgb3ZlcndyaXRlX21vZGUoaW50IGYsIGludCBuKQ0KLSB9DQotIA0K LSBpbnQNCi0rc2hvd19yYXdfbW9kZShpbnQgZiwgaW50IG4pDQotK3sNCi0rCWlmIChjaGFuZ2Vt b2RlKGYsIG4sICJyYXciKSA9PSBGQUxTRSkNCi0rCQlyZXR1cm4gKEZBTFNFKTsNCi0rCWlmIChm ICYgRkZBUkcpIHsNCi0rCQlpZiAobiA8PSAwKQ0KLSsJCQljdXJicC0+Yl9mbGFnICY9IH5CRlNI T1dSQVc7DQotKwkJZWxzZQ0KLSsJCQljdXJicC0+Yl9mbGFnIHw9IEJGU0hPV1JBVzsNCi0rCX0g ZWxzZQ0KLSsJCWN1cmJwLT5iX2ZsYWcgXj0gQkZTSE9XUkFXOw0KLSsNCi0rCXNnYXJiZiA9IFRS VUU7DQotKwlyZXR1cm4gKFRSVUUpOw0KLSt9DQotKw0KLStpbnQNCi0gc2V0X2RlZmF1bHRfbW9k ZShpbnQgZiwgaW50IG4pDQotIHsNCi0gCWludAkgaTsNCi1AQCAtMTcwLDUgKzE4NywxMSBAQCBz ZXRfZGVmYXVsdF9tb2RlKGludCBmLCBpbnQgbikNCi0gCQkJZGVmYl9mbGFnIHw9IEJGTk9UQUI7 DQotIAl9DQotICNlbmRpZgkvKiBOT1RBQiAqLw0KLSsJaWYgKHN0cmNtcChtb2RlYnVmLCAicmF3 IikgPT0gMCkgew0KLSsJCWlmIChuIDw9IDApDQotKwkJCWRlZmJfZmxhZyAmPSB+QkZTSE9XUkFX Ow0KLSsJCWVsc2UNCi0rCQkJZGVmYl9mbGFnIHw9IEJGU0hPV1JBVzsNCi0rCX0NCi0gCXJldHVy biAoVFJVRSk7DQotIH0NCi1kaWZmIC0tZ2l0IGEvdXRpbC5jIGIvdXRpbC5jDQotaW5kZXggOTM1 N2Q0ZC4uZGJmYzA1OCAxMDA2NDQNCi0tLS0gYS91dGlsLmMNCi0rKysgYi91dGlsLmMNCi1AQCAt MTMsNiArMTMsOCBAQA0KLSAjaW5jbHVkZSA8Y3R5cGUuaD4NCi0gI2luY2x1ZGUgPHNpZ25hbC5o Pg0KLSAjaW5jbHVkZSA8c3RkaW8uaD4NCi0rI2luY2x1ZGUgPHN0ZGxpYi5oPg0KLSsjaW5jbHVk ZSA8d2NoYXIuaD4NCi0gDQotICNpbmNsdWRlICJkZWYuaCINCi0gDQotQEAgLTMzLDYgKzM1LDkg QEAgc2hvd2Nwb3MoaW50IGYsIGludCBuKQ0KLSAJaW50CSBubGluZSwgcm93Ow0KLSAJaW50CSBj bGluZSwgY2J5dGU7CQkvKiBDdXJyZW50IGxpbmUvY2hhci9ieXRlICovDQotIAlpbnQJIHJhdGlv Ow0KLSsJY2hhcgkgaXNtYiA9IDA7DQotKwl3Y2hhcl90CSB3YyA9IDA7DQotKwljaGFyCSBtYmNb TUJfQ1VSX01BWCArIDFdOw0KLSANCi0gCS8qIGNvbGxlY3QgdGhlIGRhdGEgKi8NCi0gCWNscCA9 IGJmaXJzdGxwKGN1cmJwKTsNCi1AQCAtNjksOCArNzQsNDMgQEAgc2hvd2Nwb3MoaW50IGYsIGlu dCBuKQ0KLSAJCWNscCA9IGxmb3J3KGNscCk7DQotIAl9DQotIAlyYXRpbyA9IG5jaGFyID8gKDEw MEwgKiBjY2hhcikgLyBuY2hhciA6IDEwMDsNCi0tCWV3cHJpbnRmKCJDaGFyOiAlYyAoMCVvKSAg cG9pbnQ9JWxkKCVkJSUpICBsaW5lPSVkICByb3c9JWQgIGNvbD0lZCIsDQotLQkgICAgY2J5dGUs IGNieXRlLCBjY2hhciwgcmF0aW8sIGNsaW5lLCByb3csIGdldGNvbHBvcyhjdXJ3cCkpOw0KLSsN Ci0rCWlmICghKGN1cmJwLT5iX2ZsYWcgJiBCRlNIT1dSQVcpKSB7DQotKwkJbWJzdGF0ZV90IG1i cyA9IHsgMCB9Ow0KLSsJCXNpemVfdCBjb25zdW1lZCA9IDA7DQotKwkJc2l6ZV90IG9mZnNldCA9 IDA7DQotKwkJd2hpbGUgKGNieXRlICE9ICdcbicgJiYgb2Zmc2V0IDw9IGN1cndwLT53X2RvdG8p IHsNCi0rCQkJaW50IGMgPSBsZ2V0YyhjbHAsIGN1cndwLT53X2RvdG8gLSBvZmZzZXQpOw0KLSsJ CQlpZiAoaXNwcmludChjKSB8fCAoSVNDVFJMKGMpICE9IEZBTFNFKSkgew0KLSsJCQkJYnJlYWs7 DQotKwkJCX0NCi0rCQkJY29uc3VtZWQgPSBtYnJ0b3djKCZ3YywNCi0rCQkJICAgICAgICAgICAg ICAgICAgICZjbHAtPmxfdGV4dFtjdXJ3cC0+d19kb3RvIC0gb2Zmc2V0XSwNCi0rCQkJICAgICAg ICAgICAgICAgICAgIGxsZW5ndGgoY2xwKSAtIGN1cndwLT53X2RvdG8gKyBvZmZzZXQsDQotKwkJ CSAgICAgICAgICAgICAgICAgICAmbWJzKTsNCi0rCQkJaWYgKGNvbnN1bWVkIDwgKHNpemVfdCkg LTIpIHsNCi0rCQkJCWlzbWIgPSAob2Zmc2V0IDwgY29uc3VtZWQpOw0KLSsJCQkJc25wcmludGYo bWJjLCBjb25zdW1lZCArIDEsICIlcyIsDQotKwkJCQkgICAgICAgICAmY2xwLT5sX3RleHRbY3Vy d3AtPndfZG90byAtIG9mZnNldF0pOw0KLSsJCQkJbWJjW2NvbnN1bWVkICsgMV0gPSAnXDAnOw0K LSsJCQkJYnJlYWs7DQotKwkJCX0gZWxzZSB7DQotKwkJCQltZW1zZXQoJm1icywgMCwgc2l6ZW9m IG1icyk7DQotKwkJCX0NCi0rCQkJb2Zmc2V0Kys7DQotKwkJfQ0KLSsJfQ0KLSsNCi0rCWlmIChp c21iKSB7DQotKwkJZXdwcmludGYoIkNoYXI6ICVzIChjb2RlcG9pbnQgMHglbHgpIEJ5dGU6ICVj ICgwJW8pICAiDQotKwkJICAgICAgICAgInBvaW50PSVsZCglZCUlKSAgbGluZT0lZCAgcm93PSVk IGNvbD0lZCIsIG1iYywNCi0rCQkgICAgICAgICAobG9uZykgd2MsIGNieXRlLCBjYnl0ZSwgY2No YXIsIHJhdGlvLCBjbGluZSwgcm93LA0KLSsJCSAgICAgICAgIGdldGNvbHBvcyhjdXJ3cCkpOw0K LSsJfSBlbHNlIHsNCi0rCQlld3ByaW50ZigiQ2hhcjogJWMgKDAlbykgIHBvaW50PSVsZCglZCUl KSAgbGluZT0lZCAgcm93PSVkIg0KLSsJCSAgICAgICAgICJjb2w9JWQiLCBjYnl0ZSwgY2J5dGUs IGNjaGFyLCByYXRpbywgY2xpbmUsIHJvdywNCi0rCQkgICAgICAgICBnZXRjb2xwb3MoY3Vyd3Ap KTsNCi0rCX0NCi0gCXJldHVybiAoVFJVRSk7DQotIH0NCi0gDQotQEAgLTk2LDYgKzEzNiwyMiBA QCBnZXRjb2xwb3Moc3RydWN0IG1nd2luICp3cCkNCi0gCQkJY29sICs9IDI7DQotIAkJZWxzZSBp ZiAoaXNwcmludChjKSkgew0KLSAJCQljb2wrKzsNCi0rCQl9IGVsc2UgaWYgKCEod3AtPndfYnVm cC0+Yl9mbGFnICYgQkZTSE9XUkFXKSkgew0KLSsJCQltYnN0YXRlX3QgbWJzID0geyAwIH07DQot KwkJCXdjaGFyX3Qgd2MgPSAwOw0KLSsJCQlzaXplX3QgY29uc3VtZWQgPSBtYnJ0b3djKCZ3Yywg JndwLT53X2RvdHAtPmxfdGV4dFtpXSwNCi0rCQkJICAgICAgICAgICAgICAgICAgICAgICAgICBs bGVuZ3RoKHdwLT53X2RvdHApIC0gaSwNCi0rCQkJICAgICAgICAgICAgICAgICAgICAgICAgICAm bWJzKTsNCi0rCQkJaW50IHdpZHRoID0gLTE7DQotKwkJCWlmIChjb25zdW1lZCA8IChzaXplX3Qp IC0yKSB7DQotKwkJCQl3aWR0aCA9IHdjd2lkdGgod2MpOw0KLSsJCQl9DQotKwkJCWlmICh3aWR0 aCA+PSAwKSB7DQotKwkJCQljb2wgKz0gd2lkdGg7DQotKwkJCQlpICs9IChjb25zdW1lZCAtIDEp Ow0KLSsJCQl9IGVsc2Ugew0KLSsJCQkJY29sICs9IHNucHJpbnRmKHRtcCwgc2l6ZW9mKHRtcCks ICJcXCVvIiwgYyk7DQotKwkJCX0NCi0gCQl9IGVsc2Ugew0KLSAJCQljb2wgKz0gc25wcmludGYo dG1wLCBzaXplb2YodG1wKSwgIlxcJW8iLCBjKTsNCi0gCQl9DQotLSANCjIuMTQuMg0KDQoNCg0K DQotLS0NClVuc3Vic2NyaWJlOiAgYWxwaW5lLWFwb3J0cyt1bnN1YnNjcmliZUBsaXN0cy5hbHBp bmVsaW51eC5vcmcNCkhlbHA6ICAgICAgICAgYWxwaW5lLWFwb3J0cytoZWxwQGxpc3RzLmFscGlu ZWxpbnV4Lm9yZw0KLS0tDQo=