From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by master.gitmailbox.com (Postfix) with ESMTP id 57A32424BC for ; Thu, 23 Jun 2022 10:04:23 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 550D268B6DC; Thu, 23 Jun 2022 13:04:20 +0300 (EEST) Received: from mail0.khirnov.net (red.khirnov.net [176.97.15.12]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id C8B8768B595 for ; Thu, 23 Jun 2022 13:04:13 +0300 (EEST) Received: from localhost (localhost [IPv6:::1]) by mail0.khirnov.net (Postfix) with ESMTP id DF6C1240179 for ; Thu, 23 Jun 2022 12:04:12 +0200 (CEST) Received: from mail0.khirnov.net ([IPv6:::1]) by localhost (mail0.khirnov.net [IPv6:::1]) (amavisd-new, port 10024) with ESMTP id FOhTSDTOIF6l for ; Thu, 23 Jun 2022 12:04:09 +0200 (CEST) Received: from libav.khirnov.net (libav.khirnov.net [IPv6:2a00:c500:561:201::7]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256 client-signature RSA-PSS (2048 bits) client-digest SHA256) (Client CN "libav.khirnov.net", Issuer "smtp.khirnov.net SMTP CA" (verified OK)) by mail0.khirnov.net (Postfix) with ESMTPS id C2BAC2400F5 for ; Thu, 23 Jun 2022 12:04:09 +0200 (CEST) Received: by libav.khirnov.net (Postfix, from userid 1000) id B730D3A068E; Thu, 23 Jun 2022 12:04:09 +0200 (CEST) From: Anton Khirnov To: ffmpeg-devel@ffmpeg.org Date: Thu, 23 Jun 2022 12:04:06 +0200 Message-Id: <20220623100406.31710-1-anton@khirnov.net> X-Mailer: git-send-email 2.34.1 In-Reply-To: <165546151874.13099.8566311940420340782@lain> References: <165546151874.13099.8566311940420340782@lain> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH] fftools/ffmpeg: rework -shortest implementation X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Archived-At: List-Archive: List-Post: VGhlIC1zaG9ydGVzdCBvcHRpb24gKHdoaWNoIGZpbmlzaGVzIHRoZSBvdXRwdXQgZmlsZSBhdCB0 aGUgdGltZSB0aGUKc2hvcnRlc3Qgc3RyZWFtIGVuZHMpIGlzIGN1cnJlbnRseSBpbXBsZW1lbnRl ZCBieSBmYWtpbmcgdGhlIC10IG9wdGlvbgp3aGVuIGFuIG91dHB1dCBzdHJlYW0gZW5kcy4gVGhp cyBhcHByb2FjaCBpcyBmcmFnaWxlLCBzaW5jZSBpdCBkZXBlbmRzCm9uIHRoZSBmcmFtZXMvcGFj a2V0cyBiZWluZyBwcm9jZXNzZWQgaW4gYSBzcGVjaWZpYyBvcmRlci4gRS5nLiB0aGVyZQphcmUg Y3VycmVudGx5IHNvbWUgc2l0dWF0aW9ucyBpbiB3aGljaCB0aGUgb3V0cHV0IGZpbGUgbGVuZ3Ro IHdpbGwKZGVwZW5kIHVucHJlZGljdGFibHkgb24gdW5yZWxhdGVkIGZhY3RvcnMgbGlrZSBlbmNv ZGVyIGRlbGF5LiBNb3JlCmltcG9ydGFudGx5LCB0aGUgcHJlc2VudCB3b3JrIGFpbWluZyBhdCBz cGxpdHRpbmcgdmFyaW91cyBmZm1wZWcKY29tcG9uZW50cyBpbnRvIGRpZmZlcmVudCB0aHJlYWRz IHdpbGwgbWFrZSB0aGlzIGFwcHJvYWNoIGNvbXBsZXRlbHkKdW53b3JrYWJsZSwgc2luY2UgdGhl IGZyYW1lcy9wYWNrZXRzIHdpbGwgYXJyaXZlIGluIGVmZmVjdGl2ZWx5IHJhbmRvbQpvcmRlci4K ClRoaXMgY29tbWl0IGludHJvZHVjZXMgYSAic3luYyBxdWV1ZSIsIHdoaWNoIGlzIGVzc2VudGlh bGx5IGEgY29sbGVjdGlvbgpvZiBGSUZPcywgb25lIHBlciBzdHJlYW0uIEZyYW1lcy9wYWNrZXRz IGFyZSBzdWJtaXR0ZWQgdG8gdGhlc2UgRklGT3MKYW5kIGFyZSB0aGVuIHJlbGVhc2VkIGZvciBm dXJ0aGVyIHByb2Nlc3NpbmcgKGVuY29kaW5nIG9yIG11eGluZykgd2hlbgppdCBpcyBlbnN1cmVk IHRoYXQgdGhlIGZyYW1lIGluIHF1ZXN0aW9uIHdpbGwgbm90IGNhdXNlIGl0cyBzdHJlYW0gdG8K Z2V0IGFoZWFkIG9mIHRoZSBvdGhlciBzdHJlYW1zICh0aGUgbG9naWMgaXMgc2ltaWxhciB0byBs aWJhdmZvcm1hdCdzCmludGVybGVhdmluZyBxdWV1ZSkuCgpUaGVzZSBzeW5jIHF1ZXVlcyBhcmUg dGhlbiB1c2VkIGZvciBlbmNvZGluZyBhbmQvb3IgbXV4aW5nIHdoZW4gdGhlCi1zaG9ydGVzdCBv cHRpb24gaXMgc3BlY2lmaWVkLgoKQSBuZXcgb3B0aW9uIOKAkyAtc2hvcnRlc3RfYnVmX2R1cmF0 aW9uIOKAkyBjb250cm9scyB0aGUgbWF4aW11bSBudW1iZXIgb2YKcXVldWVkIHBhY2tldHMsIHRv IGF2b2lkIHJ1bmF3YXkgbWVtb3J5IHVzYWdlLgoKVGhpcyBjb21taXQgY2hhbmdlcyB0aGUgcmVz dWx0cyBvZiB0aGUgZm9sbG93aW5nIHRlc3RzOgotIGNvcHktc2hvcnRlc3RbMTJdOiB0aGUgbGFz dCBhdWRpbyBmcmFtZSBpcyBub3cgZ29uZS4gVGhpcyBpcwogIGNvcnJlY3QsIHNpbmNlIGl0IGFj dHVhbGx5IG91dGxhc3RzIHRoZSBsYXN0IHZpZGVvIGZyYW1lLgotIHNob3J0ZXN0LXN1YjogdGhl IHZpZGVvIHBhY2tldHMgZm9sbG93aW5nIHRoZSBsYXN0IHN1YnRpdGxlIHBhY2tldCBhcmUKICBu b3cgZ29uZS4gVGhpcyBpcyBhbHNvIGNvcnJlY3QuCi0tLQpOb3cgYWxzbyBtb3ZpbmcgdGhlIHNh bXBsZXNfZW5jb2RlZCBpbmNyZW1lbnQgaW50byBlbmNvZGVfZnJhbWUoKSwgc28KZnJhbWVzIGRy b3BwZWQgYnkgdGhlIHN5bmMgcXVldWUgYXJlIG5vdCBjb3VudGVkLiBUaGUgdmFsdWUgaXMgb25s eQpwcmludGVkIGF0IHRoZSBlbmQgb2YgZW5jb2RpbmcsIG5vdCB1c2VkIG90aGVyd2lzZS4KLS0t CiBDaGFuZ2Vsb2cgICAgICAgICAgICAgICAgICAgICB8ICAgMSArCiBkb2MvZmZtcGVnLnRleGkg ICAgICAgICAgICAgICB8ICAxNiArKwogZmZ0b29scy9NYWtlZmlsZSAgICAgICAgICAgICAgfCAg IDIgKwogZmZ0b29scy9mZm1wZWcuYyAgICAgICAgICAgICAgfCAxMDYgKysrKysrLS0tCiBmZnRv b2xzL2ZmbXBlZy5oICAgICAgICAgICAgICB8ICAgOSArCiBmZnRvb2xzL2ZmbXBlZ19tdXguYyAg ICAgICAgICB8ICA2NyArKysrKy0KIGZmdG9vbHMvZmZtcGVnX29wdC5jICAgICAgICAgIHwgIDgy ICsrKysrKysKIGZmdG9vbHMvc3luY19xdWV1ZS5jICAgICAgICAgIHwgNDI1ICsrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysKIGZmdG9vbHMvc3luY19xdWV1ZS5oICAgICAgICAgIHwg MTAwICsrKysrKysrCiB0ZXN0cy9mYXRlL2ZmbXBlZy5tYWsgICAgICAgICB8ICAgMiArLQogdGVz dHMvcmVmL2ZhdGUvY29weS1zaG9ydGVzdDEgfCAgIDEgLQogdGVzdHMvcmVmL2ZhdGUvY29weS1z aG9ydGVzdDIgfCAgIDEgLQogdGVzdHMvcmVmL2ZhdGUvc2hvcnRlc3Qtc3ViICAgfCAgIDQgKy0K IDEzIGZpbGVzIGNoYW5nZWQsIDc3NSBpbnNlcnRpb25zKCspLCA0MSBkZWxldGlvbnMoLSkKIGNy ZWF0ZSBtb2RlIDEwMDY0NCBmZnRvb2xzL3N5bmNfcXVldWUuYwogY3JlYXRlIG1vZGUgMTAwNjQ0 IGZmdG9vbHMvc3luY19xdWV1ZS5oCgpkaWZmIC0tZ2l0IGEvQ2hhbmdlbG9nIGIvQ2hhbmdlbG9n CmluZGV4IGVmNTg5NzA1YzQuLjgxNGRhZmY2ODAgMTAwNjQ0Ci0tLSBhL0NoYW5nZWxvZworKysg Yi9DaGFuZ2Vsb2cKQEAgLTIxLDYgKzIxLDcgQEAgdmVyc2lvbiA1LjE6CiAtIFFPSSBpbWFnZSBm b3JtYXQgc3VwcG9ydAogLSBmZnByb2JlIC1vIG9wdGlvbgogLSB2aXJ0dWFsYmFzcyBhdWRpbyBm aWx0ZXIKKy0gZmZtcGVnIC1zaG9ydGVzdF9idWZfZHVyYXRpb24gb3B0aW9uCiAKIAogdmVyc2lv biA1LjA6CmRpZmYgLS1naXQgYS9kb2MvZmZtcGVnLnRleGkgYi9kb2MvZmZtcGVnLnRleGkKaW5k ZXggZDk0M2Y0ZDZmNS4uNzU0MjgzMmViMyAxMDA2NDQKLS0tIGEvZG9jL2ZmbXBlZy50ZXhpCisr KyBiL2RvYy9mZm1wZWcudGV4aQpAQCAtMTc1MCw2ICsxNzUwLDIyIEBAIERlZmF1bHQgdmFsdWUg aXMgMC4KIEVuYWJsZSBiaXRleGFjdCBtb2RlIGZvciAoZGUpbXV4ZXIgYW5kIChkZS9lbiljb2Rl cgogQGl0ZW0gLXNob3J0ZXN0IChAZW1waHtvdXRwdXR9KQogRmluaXNoIGVuY29kaW5nIHdoZW4g dGhlIHNob3J0ZXN0IGlucHV0IHN0cmVhbSBlbmRzLgorCitOb3RlIHRoYXQgdGhpcyBvcHRpb24g bWF5IHJlcXVpcmUgYnVmZmVyaW5nIGZyYW1lcywgd2hpY2ggaW50cm9kdWNlcyBleHRyYQorbGF0 ZW5jeS4gVGhlIG1heGltdW0gYW1vdW50IG9mIHRoaXMgbGF0ZW5jeSBtYXkgYmUgY29udHJvbGxl ZCB3aXRoIHRoZQorQGNvZGV7LXNob3J0ZXN0X2J1Zl9kdXJhdGlvbn0gb3B0aW9uLgorCitAaXRl bSAtc2hvcnRlc3RfYnVmX2R1cmF0aW9uIEB2YXJ7ZHVyYXRpb259IChAZW1waHtvdXRwdXR9KQor VGhlIEBjb2Rley1zaG9ydGVzdH0gb3B0aW9uIG1heSByZXF1aXJlIGJ1ZmZlcmluZyBwb3RlbnRp YWxseSBsYXJnZSBhbW91bnRzCitvZiBkYXRhIHdoZW4gYXQgbGVhc3Qgb25lIG9mIHRoZSBzdHJl YW1zIGlzICJzcGFyc2UiIChpLmUuIGhhcyBsYXJnZSBnYXBzCitiZXR3ZWVuIGZyYW1lcyDigJMg dGhpcyBpcyB0eXBpY2FsbHkgdGhlIGNhc2UgZm9yIHN1YnRpdGxlcykuCisKK1RoaXMgb3B0aW9u IGNvbnRyb2xzIHRoZSBtYXhpbXVtIGR1cmF0aW9uIG9mIGJ1ZmZlcmVkIGZyYW1lcyBpbiBzZWNv bmRzLgorTGFyZ2VyIHZhbHVlcyBtYXkgYWxsb3cgdGhlIEBjb2Rley1zaG9ydGVzdH0gb3B0aW9u IHRvIHByb2R1Y2UgbW9yZSBhY2N1cmF0ZQorcmVzdWx0cywgYnV0IGluY3JlYXNlIG1lbW9yeSB1 c2UgYW5kIGxhdGVuY3kuCisKK1RoZSBkZWZhdWx0IHZhbHVlIGlzIDEwIHNlY29uZHMuCisKIEBp dGVtIC1kdHNfZGVsdGFfdGhyZXNob2xkCiBUaW1lc3RhbXAgZGlzY29udGludWl0eSBkZWx0YSB0 aHJlc2hvbGQuCiBAaXRlbSAtZHRzX2Vycm9yX3RocmVzaG9sZCBAdmFye3NlY29uZHN9CmRpZmYg LS1naXQgYS9mZnRvb2xzL01ha2VmaWxlIGIvZmZ0b29scy9NYWtlZmlsZQppbmRleCA4MWFkNmM0 ZjRmLi5iYzU3ZWJlNzQ4IDEwMDY0NAotLS0gYS9mZnRvb2xzL01ha2VmaWxlCisrKyBiL2ZmdG9v bHMvTWFrZWZpbGUKQEAgLTE0LDYgKzE0LDggQEAgT0JKUy1mZm1wZWcgKz0gICAgICAgICAgICAg ICAgICBcCiAgICAgZmZ0b29scy9mZm1wZWdfaHcubyAgICAgICAgIFwKICAgICBmZnRvb2xzL2Zm bXBlZ19tdXgubyAgICAgICAgXAogICAgIGZmdG9vbHMvZmZtcGVnX29wdC5vICAgICAgICBcCisg ICAgZmZ0b29scy9vYmpwb29sLm8gICAgICAgICAgIFwKKyAgICBmZnRvb2xzL3N5bmNfcXVldWUu byAgICAgICAgXAogCiBkZWZpbmUgRE9GRlRPT0wKIE9CSlMtJCgxKSArPSBmZnRvb2xzL2NtZHV0 aWxzLm8gZmZ0b29scy9vcHRfY29tbW9uLm8gZmZ0b29scy8kKDEpLm8gJChPQkpTLSQoMSkteWVz KQpkaWZmIC0tZ2l0IGEvZmZ0b29scy9mZm1wZWcuYyBiL2ZmdG9vbHMvZmZtcGVnLmMKaW5kZXgg NmNkNDcxZDVjZC4uYjJkM2U3M2NjNyAxMDA2NDQKLS0tIGEvZmZ0b29scy9mZm1wZWcuYworKysg Yi9mZnRvb2xzL2ZmbXBlZy5jCkBAIC0xMDQsNiArMTA0LDcgQEAKIAogI2luY2x1ZGUgImZmbXBl Zy5oIgogI2luY2x1ZGUgImNtZHV0aWxzLmgiCisjaW5jbHVkZSAic3luY19xdWV1ZS5oIgogCiAj aW5jbHVkZSAibGliYXZ1dGlsL2F2YXNzZXJ0LmgiCiAKQEAgLTU2OSw2ICs1NzAsNyBAQCBzdGF0 aWMgdm9pZCBmZm1wZWdfY2xlYW51cChpbnQgcmV0KQogICAgICAgICBhdl9ic2ZfZnJlZSgmb3N0 LT5ic2ZfY3R4KTsKIAogICAgICAgICBhdl9mcmFtZV9mcmVlKCZvc3QtPmZpbHRlcmVkX2ZyYW1l KTsKKyAgICAgICAgYXZfZnJhbWVfZnJlZSgmb3N0LT5zcV9mcmFtZSk7CiAgICAgICAgIGF2X2Zy YW1lX2ZyZWUoJm9zdC0+bGFzdF9mcmFtZSk7CiAgICAgICAgIGF2X3BhY2tldF9mcmVlKCZvc3Qt PnBrdCk7CiAgICAgICAgIGF2X2RpY3RfZnJlZSgmb3N0LT5lbmNvZGVyX29wdHMpOwpAQCAtNjkx LDEzICs2OTMsMTAgQEAgc3RhdGljIHZvaWQgdXBkYXRlX2JlbmNobWFyayhjb25zdCBjaGFyICpm bXQsIC4uLikKIHN0YXRpYyB2b2lkIGNsb3NlX291dHB1dF9zdHJlYW0oT3V0cHV0U3RyZWFtICpv c3QpCiB7CiAgICAgT3V0cHV0RmlsZSAqb2YgPSBvdXRwdXRfZmlsZXNbb3N0LT5maWxlX2luZGV4 XTsKLSAgICBBVlJhdGlvbmFsIHRpbWVfYmFzZSA9IG9zdC0+c3RyZWFtX2NvcHkgPyBvc3QtPm11 eF90aW1lYmFzZSA6IG9zdC0+ZW5jX2N0eC0+dGltZV9iYXNlOwotCiAgICAgb3N0LT5maW5pc2hl ZCB8PSBFTkNPREVSX0ZJTklTSEVEOwotICAgIGlmIChvZi0+c2hvcnRlc3QpIHsKLSAgICAgICAg aW50NjRfdCBlbmQgPSBhdl9yZXNjYWxlX3Eob3N0LT5zeW5jX29wdHMgLSBvc3QtPmZpcnN0X3B0 cywgdGltZV9iYXNlLCBBVl9USU1FX0JBU0VfUSk7Ci0gICAgICAgIG9mLT5yZWNvcmRpbmdfdGlt ZSA9IEZGTUlOKG9mLT5yZWNvcmRpbmdfdGltZSwgZW5kKTsKLSAgICB9CisKKyAgICBpZiAob3N0 LT5zcV9pZHhfZW5jb2RlID49IDApCisgICAgICAgIHNxX3NlbmQob2YtPnNxX2VuY29kZSwgb3N0 LT5zcV9pZHhfZW5jb2RlLCBTUUZSQU1FKE5VTEwpKTsKIH0KIAogLyoKQEAgLTcyNiwxMCArNzI1 LDE1IEBAIHN0YXRpYyB2b2lkIG91dHB1dF9wYWNrZXQoT3V0cHV0RmlsZSAqb2YsIEFWUGFja2V0 ICpwa3QsCiAgICAgICAgICAgICBnb3RvIGZpbmlzaDsKICAgICAgICAgd2hpbGUgKChyZXQgPSBh dl9ic2ZfcmVjZWl2ZV9wYWNrZXQob3N0LT5ic2ZfY3R4LCBwa3QpKSA+PSAwKQogICAgICAgICAg ICAgb2Zfc3VibWl0X3BhY2tldChvZiwgcGt0LCBvc3QpOworICAgICAgICBpZiAocmV0ID09IEFW RVJST1JfRU9GKQorICAgICAgICAgICAgb2Zfc3VibWl0X3BhY2tldChvZiwgTlVMTCwgb3N0KTsK ICAgICAgICAgaWYgKHJldCA9PSBBVkVSUk9SKEVBR0FJTikpCiAgICAgICAgICAgICByZXQgPSAw OwotICAgIH0gZWxzZSBpZiAoIWVvZikKLSAgICAgICAgb2Zfc3VibWl0X3BhY2tldChvZiwgcGt0 LCBvc3QpOworICAgIH0gZWxzZQorICAgICAgICBvZl9zdWJtaXRfcGFja2V0KG9mLCBlb2YgPyBO VUxMIDogcGt0LCBvc3QpOworCisgICAgaWYgKGVvZikKKyAgICAgICAgb3N0LT5maW5pc2hlZCB8 PSBNVVhFUl9GSU5JU0hFRDsKIAogZmluaXNoOgogICAgIGlmIChyZXQgPCAwICYmIHJldCAhPSBB VkVSUk9SX0VPRikgewpAQCAtODkxLDYgKzg5NSw3IEBAIHN0YXRpYyBpbnQgZW5jb2RlX2ZyYW1l KE91dHB1dEZpbGUgKm9mLCBPdXRwdXRTdHJlYW0gKm9zdCwgQVZGcmFtZSAqZnJhbWUpCiAKICAg ICBpZiAoZnJhbWUpIHsKICAgICAgICAgb3N0LT5mcmFtZXNfZW5jb2RlZCsrOworICAgICAgICBv c3QtPnNhbXBsZXNfZW5jb2RlZCArPSBmcmFtZS0+bmJfc2FtcGxlczsKIAogICAgICAgICBpZiAo ZGVidWdfdHMpIHsKICAgICAgICAgICAgIGF2X2xvZyhOVUxMLCBBVl9MT0dfSU5GTywgImVuY29k ZXIgPC0gdHlwZTolcyAiCkBAIC05NjMsNiArOTY4LDUyIEBAIHN0YXRpYyBpbnQgZW5jb2RlX2Zy YW1lKE91dHB1dEZpbGUgKm9mLCBPdXRwdXRTdHJlYW0gKm9zdCwgQVZGcmFtZSAqZnJhbWUpCiAg ICAgYXZfYXNzZXJ0MCgwKTsKIH0KIAorc3RhdGljIGludCBzdWJtaXRfZW5jb2RlX2ZyYW1lKE91 dHB1dEZpbGUgKm9mLCBPdXRwdXRTdHJlYW0gKm9zdCwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBBVkZyYW1lICpmcmFtZSkKK3sKKyAgICBpbnQgcmV0OworCisgICAgaWYgKG9zdC0+ c3FfaWR4X2VuY29kZSA8IDApCisgICAgICAgIHJldHVybiBlbmNvZGVfZnJhbWUob2YsIG9zdCwg ZnJhbWUpOworCisgICAgaWYgKGZyYW1lKSB7CisgICAgICAgIHJldCA9IGF2X2ZyYW1lX3JlZihv c3QtPnNxX2ZyYW1lLCBmcmFtZSk7CisgICAgICAgIGlmIChyZXQgPCAwKQorICAgICAgICAgICAg cmV0dXJuIHJldDsKKyAgICAgICAgZnJhbWUgPSBvc3QtPnNxX2ZyYW1lOworICAgIH0KKworICAg IHJldCA9IHNxX3NlbmQob2YtPnNxX2VuY29kZSwgb3N0LT5zcV9pZHhfZW5jb2RlLAorICAgICAg ICAgICAgICAgICAgU1FGUkFNRShmcmFtZSkpOworICAgIGlmIChyZXQgPCAwKSB7CisgICAgICAg IGlmIChmcmFtZSkKKyAgICAgICAgICAgIGF2X2ZyYW1lX3VucmVmKGZyYW1lKTsKKyAgICAgICAg aWYgKHJldCAhPSBBVkVSUk9SX0VPRikKKyAgICAgICAgICAgIHJldHVybiByZXQ7CisgICAgfQor CisgICAgd2hpbGUgKDEpIHsKKyAgICAgICAgQVZGcmFtZSAqZW5jX2ZyYW1lID0gb3N0LT5zcV9m cmFtZTsKKworICAgICAgICByZXQgPSBzcV9yZWNlaXZlKG9mLT5zcV9lbmNvZGUsIG9zdC0+c3Ff aWR4X2VuY29kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTUUZSQU1FKGVuY19m cmFtZSkpOworICAgICAgICBpZiAocmV0ID09IEFWRVJST1JfRU9GKSB7CisgICAgICAgICAgICBl bmNfZnJhbWUgPSBOVUxMOworICAgICAgICB9IGVsc2UgaWYgKHJldCA8IDApIHsKKyAgICAgICAg ICAgIHJldHVybiAocmV0ID09IEFWRVJST1IoRUFHQUlOKSkgPyAwIDogcmV0OworICAgICAgICB9 CisKKyAgICAgICAgcmV0ID0gZW5jb2RlX2ZyYW1lKG9mLCBvc3QsIGVuY19mcmFtZSk7CisgICAg ICAgIGlmIChlbmNfZnJhbWUpCisgICAgICAgICAgICBhdl9mcmFtZV91bnJlZihlbmNfZnJhbWUp OworICAgICAgICBpZiAocmV0IDwgMCkgeworICAgICAgICAgICAgaWYgKHJldCA9PSBBVkVSUk9S X0VPRikKKyAgICAgICAgICAgICAgICBjbG9zZV9vdXRwdXRfc3RyZWFtKG9zdCk7CisgICAgICAg ICAgICByZXR1cm4gcmV0OworICAgICAgICB9CisgICAgfQorfQorCiBzdGF0aWMgdm9pZCBkb19h dWRpb19vdXQoT3V0cHV0RmlsZSAqb2YsIE91dHB1dFN0cmVhbSAqb3N0LAogICAgICAgICAgICAg ICAgICAgICAgICAgIEFWRnJhbWUgKmZyYW1lKQogewpAQCAtOTc2LDEwICsxMDI3LDkgQEAgc3Rh dGljIHZvaWQgZG9fYXVkaW9fb3V0KE91dHB1dEZpbGUgKm9mLCBPdXRwdXRTdHJlYW0gKm9zdCwK ICAgICBpZiAoZnJhbWUtPnB0cyA9PSBBVl9OT1BUU19WQUxVRSB8fCBhdWRpb19zeW5jX21ldGhv ZCA8IDApCiAgICAgICAgIGZyYW1lLT5wdHMgPSBvc3QtPnN5bmNfb3B0czsKICAgICBvc3QtPnN5 bmNfb3B0cyA9IGZyYW1lLT5wdHMgKyBmcmFtZS0+bmJfc2FtcGxlczsKLSAgICBvc3QtPnNhbXBs ZXNfZW5jb2RlZCArPSBmcmFtZS0+bmJfc2FtcGxlczsKIAotICAgIHJldCA9IGVuY29kZV9mcmFt ZShvZiwgb3N0LCBmcmFtZSk7Ci0gICAgaWYgKHJldCA8IDApCisgICAgcmV0ID0gc3VibWl0X2Vu Y29kZV9mcmFtZShvZiwgb3N0LCBmcmFtZSk7CisgICAgaWYgKHJldCA8IDAgJiYgcmV0ICE9IEFW RVJST1JfRU9GKQogICAgICAgICBleGl0X3Byb2dyYW0oMSk7CiB9CiAKQEAgLTEyNjUsOCArMTMx NSw4IEBAIHN0YXRpYyB2b2lkIGRvX3ZpZGVvX291dChPdXRwdXRGaWxlICpvZiwKICAgICAgICAg ICAgIGF2X2xvZyhOVUxMLCBBVl9MT0dfREVCVUcsICJGb3JjZWQga2V5ZnJhbWUgYXQgdGltZSAl ZlxuIiwgcHRzX3RpbWUpOwogICAgICAgICB9CiAKLSAgICAgICAgcmV0ID0gZW5jb2RlX2ZyYW1l KG9mLCBvc3QsIGluX3BpY3R1cmUpOwotICAgICAgICBpZiAocmV0IDwgMCkKKyAgICAgICAgcmV0 ID0gc3VibWl0X2VuY29kZV9mcmFtZShvZiwgb3N0LCBpbl9waWN0dXJlKTsKKyAgICAgICAgaWYg KHJldCA8IDAgJiYgcmV0ICE9IEFWRVJST1JfRU9GKQogICAgICAgICAgICAgZXhpdF9wcm9ncmFt KDEpOwogCiAgICAgICAgIG9zdC0+c3luY19vcHRzKys7CkBAIC0xMjc4LDE5ICsxMzI4LDYgQEAg c3RhdGljIHZvaWQgZG9fdmlkZW9fb3V0KE91dHB1dEZpbGUgKm9mLAogICAgICAgICBhdl9mcmFt ZV9tb3ZlX3JlZihvc3QtPmxhc3RfZnJhbWUsIG5leHRfcGljdHVyZSk7CiB9CiAKLXN0YXRpYyB2 b2lkIGZpbmlzaF9vdXRwdXRfc3RyZWFtKE91dHB1dFN0cmVhbSAqb3N0KQotewotICAgIE91dHB1 dEZpbGUgKm9mID0gb3V0cHV0X2ZpbGVzW29zdC0+ZmlsZV9pbmRleF07Ci0gICAgQVZSYXRpb25h bCB0aW1lX2Jhc2UgPSBvc3QtPnN0cmVhbV9jb3B5ID8gb3N0LT5tdXhfdGltZWJhc2UgOiBvc3Qt PmVuY19jdHgtPnRpbWVfYmFzZTsKLQotICAgIG9zdC0+ZmluaXNoZWQgPSBFTkNPREVSX0ZJTklT SEVEIHwgTVVYRVJfRklOSVNIRUQ7Ci0KLSAgICBpZiAob2YtPnNob3J0ZXN0KSB7Ci0gICAgICAg IGludDY0X3QgZW5kID0gYXZfcmVzY2FsZV9xKG9zdC0+c3luY19vcHRzIC0gb3N0LT5maXJzdF9w dHMsIHRpbWVfYmFzZSwgQVZfVElNRV9CQVNFX1EpOwotICAgICAgICBvZi0+cmVjb3JkaW5nX3Rp bWUgPSBGRk1JTihvZi0+cmVjb3JkaW5nX3RpbWUsIGVuZCk7Ci0gICAgfQotfQotCiAvKioKICAq IEdldCBhbmQgZW5jb2RlIG5ldyBvdXRwdXQgZnJvbSBhbnkgb2YgdGhlIGZpbHRlcmdyYXBocywg d2l0aG91dCBjYXVzaW5nCiAgKiBhY3Rpdml0eS4KQEAgLTE3NTgsNyArMTc5NSw3IEBAIHN0YXRp YyB2b2lkIGZsdXNoX2VuY29kZXJzKHZvaWQpCiAgICAgICAgICAgICAgICAgICAgIGV4aXRfcHJv Z3JhbSgxKTsKICAgICAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgICAgICBmaW5pc2hfb3V0 cHV0X3N0cmVhbShvc3QpOworICAgICAgICAgICAgICAgIG91dHB1dF9wYWNrZXQob2YsIG9zdC0+ cGt0LCBvc3QsIDEpOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBpbml0X291dHB1dF9z dHJlYW1fd3JhcHBlcihvc3QsIE5VTEwsIDEpOwpAQCAtMTc2Nyw3ICsxODA0LDcgQEAgc3RhdGlj IHZvaWQgZmx1c2hfZW5jb2RlcnModm9pZCkKICAgICAgICAgaWYgKGVuYy0+Y29kZWNfdHlwZSAh PSBBVk1FRElBX1RZUEVfVklERU8gJiYgZW5jLT5jb2RlY190eXBlICE9IEFWTUVESUFfVFlQRV9B VURJTykKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIHJldCA9IGVuY29kZV9mcmFt ZShvZiwgb3N0LCBOVUxMKTsKKyAgICAgICAgcmV0ID0gc3VibWl0X2VuY29kZV9mcmFtZShvZiwg b3N0LCBOVUxMKTsKICAgICAgICAgaWYgKHJldCAhPSBBVkVSUk9SX0VPRikKICAgICAgICAgICAg IGV4aXRfcHJvZ3JhbSgxKTsKICAgICB9CkBAIC0zMDc4LDYgKzMxMTUsOSBAQCBzdGF0aWMgaW50 IGluaXRfb3V0cHV0X3N0cmVhbV9lbmNvZGUoT3V0cHV0U3RyZWFtICpvc3QsIEFWRnJhbWUgKmZy YW1lKQogICAgICAgICBicmVhazsKICAgICB9CiAKKyAgICBpZiAob3N0LT5zcV9pZHhfZW5jb2Rl ID49IDApCisgICAgICAgIHNxX3NldF90YihvZi0+c3FfZW5jb2RlLCBvc3QtPnNxX2lkeF9lbmNv ZGUsIGVuY19jdHgtPnRpbWVfYmFzZSk7CisKICAgICBvc3QtPm11eF90aW1lYmFzZSA9IGVuY19j dHgtPnRpbWVfYmFzZTsKIAogICAgIHJldHVybiAwOwpAQCAtMzA4Niw2ICszMTI2LDcgQEAgc3Rh dGljIGludCBpbml0X291dHB1dF9zdHJlYW1fZW5jb2RlKE91dHB1dFN0cmVhbSAqb3N0LCBBVkZy YW1lICpmcmFtZSkKIHN0YXRpYyBpbnQgaW5pdF9vdXRwdXRfc3RyZWFtKE91dHB1dFN0cmVhbSAq b3N0LCBBVkZyYW1lICpmcmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIg KmVycm9yLCBpbnQgZXJyb3JfbGVuKQogeworICAgIE91dHB1dEZpbGUgKm9mID0gb3V0cHV0X2Zp bGVzW29zdC0+ZmlsZV9pbmRleF07CiAgICAgaW50IHJldCA9IDA7CiAKICAgICBpZiAob3N0LT5l bmNvZGluZ19uZWVkZWQpIHsKQEAgLTMyMTgsNiArMzI1OSw5IEBAIHN0YXRpYyBpbnQgaW5pdF9v dXRwdXRfc3RyZWFtKE91dHB1dFN0cmVhbSAqb3N0LCBBVkZyYW1lICpmcmFtZSwKICAgICBpZiAo cmV0IDwgMCkKICAgICAgICAgcmV0dXJuIHJldDsKIAorICAgIGlmIChvc3QtPnNxX2lkeF9tdXgg Pj0gMCkKKyAgICAgICAgc3Ffc2V0X3RiKG9mLT5zcV9tdXgsIG9zdC0+c3FfaWR4X211eCwgb3N0 LT5tdXhfdGltZWJhc2UpOworCiAgICAgb3N0LT5pbml0aWFsaXplZCA9IDE7CiAKICAgICByZXQg PSBvZl9jaGVja19pbml0KG91dHB1dF9maWxlc1tvc3QtPmZpbGVfaW5kZXhdKTsKQEAgLTM5MjMs OCArMzk2NywxMCBAQCBzdGF0aWMgaW50IHByb2Nlc3NfaW5wdXQoaW50IGZpbGVfaW5kZXgpCiAg ICAgICAgICAgICAgICAgT3V0cHV0U3RyZWFtICpvc3QgPSBvdXRwdXRfc3RyZWFtc1tqXTsKIAog ICAgICAgICAgICAgICAgIGlmIChvc3QtPnNvdXJjZV9pbmRleCA9PSBpZmlsZS0+aXN0X2luZGV4 ICsgaSAmJgotICAgICAgICAgICAgICAgICAgICAob3N0LT5zdHJlYW1fY29weSB8fCBvc3QtPmVu Yy0+dHlwZSA9PSBBVk1FRElBX1RZUEVfU1VCVElUTEUpKQotICAgICAgICAgICAgICAgICAgICBm aW5pc2hfb3V0cHV0X3N0cmVhbShvc3QpOworICAgICAgICAgICAgICAgICAgICAob3N0LT5zdHJl YW1fY29weSB8fCBvc3QtPmVuYy0+dHlwZSA9PSBBVk1FRElBX1RZUEVfU1VCVElUTEUpKSB7Cisg ICAgICAgICAgICAgICAgICAgIE91dHB1dEZpbGUgKm9mID0gb3V0cHV0X2ZpbGVzW29zdC0+Zmls ZV9pbmRleF07CisgICAgICAgICAgICAgICAgICAgIG91dHB1dF9wYWNrZXQob2YsIG9zdC0+cGt0 LCBvc3QsIDEpOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgfQog CmRpZmYgLS1naXQgYS9mZnRvb2xzL2ZmbXBlZy5oIGIvZmZ0b29scy9mZm1wZWcuaAppbmRleCA1 NDAzZjk5OThiLi4xMDY1ODBhZGIyIDEwMDY0NAotLS0gYS9mZnRvb2xzL2ZmbXBlZy5oCisrKyBi L2ZmdG9vbHMvZmZtcGVnLmgKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlIDxzaWduYWwuaD4K IAogI2luY2x1ZGUgImNtZHV0aWxzLmgiCisjaW5jbHVkZSAic3luY19xdWV1ZS5oIgogCiAjaW5j bHVkZSAibGliYXZmb3JtYXQvYXZmb3JtYXQuaCIKICNpbmNsdWRlICJsaWJhdmZvcm1hdC9hdmlv LmgiCkBAIC0xNTAsNiArMTUxLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgT3B0aW9uc0NvbnRleHQgewog ICAgIGludDY0X3QgbGltaXRfZmlsZXNpemU7CiAgICAgZmxvYXQgbXV4X3ByZWxvYWQ7CiAgICAg ZmxvYXQgbXV4X21heF9kZWxheTsKKyAgICBmbG9hdCBzaG9ydGVzdF9idWZfZHVyYXRpb247CiAg ICAgaW50IHNob3J0ZXN0OwogICAgIGludCBiaXRleGFjdDsKIApAQCAtNDgyLDYgKzQ4NCw3IEBA IHR5cGVkZWYgc3RydWN0IE91dHB1dFN0cmVhbSB7CiAgICAgaW50NjRfdCBtYXhfZnJhbWVzOwog ICAgIEFWRnJhbWUgKmZpbHRlcmVkX2ZyYW1lOwogICAgIEFWRnJhbWUgKmxhc3RfZnJhbWU7Cisg ICAgQVZGcmFtZSAqc3FfZnJhbWU7CiAgICAgQVZQYWNrZXQgKnBrdDsKICAgICBpbnQgbGFzdF9k cm9wcGVkOwogICAgIGludCBsYXN0X25iMF9mcmFtZXNbM107CkBAIC01NzMsNiArNTc2LDkgQEAg dHlwZWRlZiBzdHJ1Y3QgT3V0cHV0U3RyZWFtIHsKIAogICAgIC8qIGZyYW1lIGVuY29kZSBzdW0g b2Ygc3F1YXJlZCBlcnJvciB2YWx1ZXMgKi8KICAgICBpbnQ2NF90IGVycm9yWzRdOworCisgICAg aW50IHNxX2lkeF9lbmNvZGU7CisgICAgaW50IHNxX2lkeF9tdXg7CiB9IE91dHB1dFN0cmVhbTsK IAogdHlwZWRlZiBzdHJ1Y3QgTXV4ZXIgTXV4ZXI7CkBAIC01ODMsNiArNTg5LDkgQEAgdHlwZWRl ZiBzdHJ1Y3QgT3V0cHV0RmlsZSB7CiAgICAgTXV4ZXIgICAgICAgICAgICAgICAgKm11eDsKICAg ICBjb25zdCBBVk91dHB1dEZvcm1hdCAqZm9ybWF0OwogCisgICAgU3luY1F1ZXVlICpzcV9lbmNv ZGU7CisgICAgU3luY1F1ZXVlICpzcV9tdXg7CisKICAgICBBVkZvcm1hdENvbnRleHQgKmN0eDsK ICAgICBpbnQgb3N0X2luZGV4OyAgICAgICAvKiBpbmRleCBvZiB0aGUgZmlyc3Qgc3RyZWFtIGlu IG91dHB1dF9zdHJlYW1zICovCiAgICAgaW50NjRfdCByZWNvcmRpbmdfdGltZTsgIC8vLzwgZGVz aXJlZCBsZW5ndGggb2YgdGhlIHJlc3VsdGluZyBmaWxlIGluIG1pY3Jvc2Vjb25kcyA9PSBBVl9U SU1FX0JBU0UgdW5pdHMKZGlmZiAtLWdpdCBhL2ZmdG9vbHMvZmZtcGVnX211eC5jIGIvZmZ0b29s cy9mZm1wZWdfbXV4LmMKaW5kZXggYTMzNTBhNzNlOS4uNDUzY2NhYzkxMiAxMDA2NDQKLS0tIGEv ZmZ0b29scy9mZm1wZWdfbXV4LmMKKysrIGIvZmZ0b29scy9mZm1wZWdfbXV4LmMKQEAgLTIwLDYg KzIwLDcgQEAKICNpbmNsdWRlIDxzdHJpbmcuaD4KIAogI2luY2x1ZGUgImZmbXBlZy5oIgorI2lu Y2x1ZGUgInN5bmNfcXVldWUuaCIKIAogI2luY2x1ZGUgImxpYmF2dXRpbC9maWZvLmgiCiAjaW5j bHVkZSAibGliYXZ1dGlsL2ludHJlYWR3cml0ZS5oIgpAQCAtNTYsNiArNTcsOCBAQCBzdHJ1Y3Qg TXV4ZXIgewogICAgIGludDY0X3QgbGltaXRfZmlsZXNpemU7CiAgICAgaW50NjRfdCBmaW5hbF9m aWxlc2l6ZTsKICAgICBpbnQgaGVhZGVyX3dyaXR0ZW47CisKKyAgICBBVlBhY2tldCAqc3FfcGt0 OwogfTsKIAogc3RhdGljIGludCB3YW50X3NkcCA9IDE7CkBAIC03MiwxMyArNzUsMTQgQEAgc3Rh dGljIHZvaWQgY2xvc2VfYWxsX291dHB1dF9zdHJlYW1zKE91dHB1dFN0cmVhbSAqb3N0LCBPU1RG aW5pc2hlZCB0aGlzX3N0cmVhbSwKIHN0YXRpYyBpbnQgcXVldWVfcGFja2V0KE91dHB1dEZpbGUg Km9mLCBPdXRwdXRTdHJlYW0gKm9zdCwgQVZQYWNrZXQgKnBrdCkKIHsKICAgICBNdXhTdHJlYW0g Km1zID0gJm9mLT5tdXgtPnN0cmVhbXNbb3N0LT5pbmRleF07Ci0gICAgQVZQYWNrZXQgKnRtcF9w a3Q7CisgICAgQVZQYWNrZXQgKnRtcF9wa3QgPSBOVUxMOwogICAgIGludCByZXQ7CiAKICAgICBp ZiAoIWF2X2ZpZm9fY2FuX3dyaXRlKG1zLT5tdXhpbmdfcXVldWUpKSB7CiAgICAgICAgIHNpemVf dCBjdXJfc2l6ZSA9IGF2X2ZpZm9fY2FuX3JlYWQobXMtPm11eGluZ19xdWV1ZSk7CisgICAgICAg IHNpemVfdCBwa3Rfc2l6ZSA9IHBrdCA/IHBrdC0+c2l6ZSA6IDA7CiAgICAgICAgIHVuc2lnbmVk IGludCBhcmVfd2Vfb3Zlcl9zaXplID0KLSAgICAgICAgICAgIChtcy0+bXV4aW5nX3F1ZXVlX2Rh dGFfc2l6ZSArIHBrdC0+c2l6ZSkgPiBvc3QtPm11eGluZ19xdWV1ZV9kYXRhX3RocmVzaG9sZDsK KyAgICAgICAgICAgIChtcy0+bXV4aW5nX3F1ZXVlX2RhdGFfc2l6ZSArIHBrdF9zaXplKSA+IG9z dC0+bXV4aW5nX3F1ZXVlX2RhdGFfdGhyZXNob2xkOwogICAgICAgICBzaXplX3QgbGltaXQgICAg PSBhcmVfd2Vfb3Zlcl9zaXplID8gb3N0LT5tYXhfbXV4aW5nX3F1ZXVlX3NpemUgOiBTSVpFX01B WDsKICAgICAgICAgc2l6ZV90IG5ld19zaXplID0gRkZNSU4oMiAqIGN1cl9zaXplLCBsaW1pdCk7 CiAKQEAgLTkzLDYgKzk3LDcgQEAgc3RhdGljIGludCBxdWV1ZV9wYWNrZXQoT3V0cHV0RmlsZSAq b2YsIE91dHB1dFN0cmVhbSAqb3N0LCBBVlBhY2tldCAqcGt0KQogICAgICAgICAgICAgcmV0dXJu IHJldDsKICAgICB9CiAKKyAgICBpZiAocGt0KSB7CiAgICAgcmV0ID0gYXZfcGFja2V0X21ha2Vf cmVmY291bnRlZChwa3QpOwogICAgIGlmIChyZXQgPCAwKQogICAgICAgICByZXR1cm4gcmV0OwpA QCAtMTAzLDYgKzEwOCw3IEBAIHN0YXRpYyBpbnQgcXVldWVfcGFja2V0KE91dHB1dEZpbGUgKm9m LCBPdXRwdXRTdHJlYW0gKm9zdCwgQVZQYWNrZXQgKnBrdCkKIAogICAgIGF2X3BhY2tldF9tb3Zl X3JlZih0bXBfcGt0LCBwa3QpOwogICAgIG1zLT5tdXhpbmdfcXVldWVfZGF0YV9zaXplICs9IHRt cF9wa3QtPnNpemU7CisgICAgfQogICAgIGF2X2ZpZm9fd3JpdGUobXMtPm11eGluZ19xdWV1ZSwg JnRtcF9wa3QsIDEpOwogCiAgICAgcmV0dXJuIDA7CkBAIC0xOTIsMTEgKzE5OCw0NCBAQCBzdGF0 aWMgdm9pZCB3cml0ZV9wYWNrZXQoT3V0cHV0RmlsZSAqb2YsIE91dHB1dFN0cmVhbSAqb3N0LCBB VlBhY2tldCAqcGt0KQogICAgIH0KIH0KIAorc3RhdGljIHZvaWQgc3VibWl0X3BhY2tldChPdXRw dXRGaWxlICpvZiwgT3V0cHV0U3RyZWFtICpvc3QsIEFWUGFja2V0ICpwa3QpCit7CisgICAgaWYg KG9zdC0+c3FfaWR4X211eCA+PSAwKSB7CisgICAgICAgIGludCByZXQgPSBzcV9zZW5kKG9mLT5z cV9tdXgsIG9zdC0+c3FfaWR4X211eCwgU1FQS1QocGt0KSk7CisgICAgICAgIGlmIChyZXQgPCAw KSB7CisgICAgICAgICAgICBpZiAocGt0KQorICAgICAgICAgICAgICAgIGF2X3BhY2tldF91bnJl Zihwa3QpOworICAgICAgICAgICAgaWYgKHJldCA9PSBBVkVSUk9SX0VPRikgeworICAgICAgICAg ICAgICAgIG9zdC0+ZmluaXNoZWQgfD0gTVVYRVJfRklOSVNIRUQ7CisgICAgICAgICAgICAgICAg cmV0dXJuOworICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgZXhpdF9wcm9ncmFt KDEpOworICAgICAgICB9CisKKyAgICAgICAgd2hpbGUgKDEpIHsKKyAgICAgICAgICAgIHJldCA9 IHNxX3JlY2VpdmUob2YtPnNxX211eCwgLTEsIFNRUEtUKG9mLT5tdXgtPnNxX3BrdCkpOworICAg ICAgICAgICAgaWYgKHJldCA9PSBBVkVSUk9SX0VPRiB8fCByZXQgPT0gQVZFUlJPUihFQUdBSU4p KQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIGVsc2UgaWYgKHJldCA8IDAp CisgICAgICAgICAgICAgICAgZXhpdF9wcm9ncmFtKDEpOworCisgICAgICAgICAgICB3cml0ZV9w YWNrZXQob2YsIG91dHB1dF9zdHJlYW1zW29mLT5vc3RfaW5kZXggKyByZXRdLAorICAgICAgICAg ICAgICAgICAgICAgICAgIG9mLT5tdXgtPnNxX3BrdCk7CisgICAgICAgIH0KKyAgICB9IGVsc2Ug eworICAgICAgICBpZiAocGt0KQorICAgICAgICAgICAgd3JpdGVfcGFja2V0KG9mLCBvc3QsIHBr dCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG9zdC0+ZmluaXNoZWQgfD0gTVVYRVJfRklO SVNIRUQ7CisgICAgfQorfQorCiB2b2lkIG9mX3N1Ym1pdF9wYWNrZXQoT3V0cHV0RmlsZSAqb2Ys IEFWUGFja2V0ICpwa3QsIE91dHB1dFN0cmVhbSAqb3N0KQogewogICAgIEFWU3RyZWFtICpzdCA9 IG9zdC0+c3Q7CiAgICAgaW50IHJldDsKIAorICAgIGlmIChwa3QpIHsKICAgICAvKgogICAgICAq IEF1ZGlvIGVuY29kZXJzIG1heSBzcGxpdCB0aGUgcGFja2V0cyAtLSAgI2ZyYW1lcyBpbiAhPSAj cGFja2V0cyBvdXQuCiAgICAgICogQnV0IHRoZXJlIGlzIG5vIHJlb3JkZXJpbmcsIHNvIHdlIGNh biBsaW1pdCB0aGUgbnVtYmVyIG9mIG91dHB1dCBwYWNrZXRzCkBAIC0yMTEsOSArMjUwLDEwIEBA IHZvaWQgb2Zfc3VibWl0X3BhY2tldChPdXRwdXRGaWxlICpvZiwgQVZQYWNrZXQgKnBrdCwgT3V0 cHV0U3RyZWFtICpvc3QpCiAgICAgICAgIH0KICAgICAgICAgb3N0LT5mcmFtZV9udW1iZXIrKzsK ICAgICB9CisgICAgfQogCiAgICAgaWYgKG9mLT5tdXgtPmhlYWRlcl93cml0dGVuKSB7Ci0gICAg ICAgIHdyaXRlX3BhY2tldChvZiwgb3N0LCBwa3QpOworICAgICAgICBzdWJtaXRfcGFja2V0KG9m LCBvc3QsIHBrdCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgLyogdGhlIG11eGVyIGlzIG5vdCBp bml0aWFsaXplZCB5ZXQsIGJ1ZmZlciB0aGUgcGFja2V0ICovCiAgICAgICAgIHJldCA9IHF1ZXVl X3BhY2tldChvZiwgb3N0LCBwa3QpOwpAQCAtMzIxLDkgKzM2MSwxMSBAQCBpbnQgb2ZfY2hlY2tf aW5pdChPdXRwdXRGaWxlICpvZikKICAgICAgICAgICAgIG9zdC0+bXV4X3RpbWViYXNlID0gb3N0 LT5zdC0+dGltZV9iYXNlOwogCiAgICAgICAgIHdoaWxlIChhdl9maWZvX3JlYWQobXMtPm11eGlu Z19xdWV1ZSwgJnBrdCwgMSkgPj0gMCkgewotICAgICAgICAgICAgbXMtPm11eGluZ19xdWV1ZV9k YXRhX3NpemUgLT0gcGt0LT5zaXplOwotICAgICAgICAgICAgd3JpdGVfcGFja2V0KG9mLCBvc3Qs IHBrdCk7Ci0gICAgICAgICAgICBhdl9wYWNrZXRfZnJlZSgmcGt0KTsKKyAgICAgICAgICAgIHN1 Ym1pdF9wYWNrZXQob2YsIG9zdCwgcGt0KTsKKyAgICAgICAgICAgIGlmIChwa3QpIHsKKyAgICAg ICAgICAgICAgICBtcy0+bXV4aW5nX3F1ZXVlX2RhdGFfc2l6ZSAtPSBwa3QtPnNpemU7CisgICAg ICAgICAgICAgICAgYXZfcGFja2V0X2ZyZWUoJnBrdCk7CisgICAgICAgICAgICB9CiAgICAgICAg IH0KICAgICB9CiAKQEAgLTM4Myw2ICs0MjUsOCBAQCBzdGF0aWMgdm9pZCBtdXhfZnJlZShNdXhl ciAqKnBtdXgsIGludCBuYl9zdHJlYW1zKQogICAgIGF2X2ZyZWVwKCZtdXgtPnN0cmVhbXMpOwog ICAgIGF2X2RpY3RfZnJlZSgmbXV4LT5vcHRzKTsKIAorICAgIGF2X3BhY2tldF9mcmVlKCZtdXgt PnNxX3BrdCk7CisKICAgICBhdl9mcmVlcChwbXV4KTsKIH0KIApAQCAtMzk0LDYgKzQzOCw5IEBA IHZvaWQgb2ZfY2xvc2UoT3V0cHV0RmlsZSAqKnBvZikKICAgICBpZiAoIW9mKQogICAgICAgICBy ZXR1cm47CiAKKyAgICBzcV9mcmVlKCZvZi0+c3FfZW5jb2RlKTsKKyAgICBzcV9mcmVlKCZvZi0+ c3FfbXV4KTsKKwogICAgIHMgPSBvZi0+Y3R4OwogCiAgICAgbXV4X2ZyZWUoJm9mLT5tdXgsIHMg PyBzLT5uYl9zdHJlYW1zIDogMCk7CkBAIC00MzcsNiArNDg0LDE0IEBAIGludCBvZl9tdXhlcl9p bml0KE91dHB1dEZpbGUgKm9mLCBBVkRpY3Rpb25hcnkgKm9wdHMsIGludDY0X3QgbGltaXRfZmls ZXNpemUpCiAgICAgaWYgKHN0cmNtcChvZi0+Zm9ybWF0LT5uYW1lLCAicnRwIikpCiAgICAgICAg IHdhbnRfc2RwID0gMDsKIAorICAgIGlmIChvZi0+c3FfbXV4KSB7CisgICAgICAgIG11eC0+c3Ff cGt0ID0gYXZfcGFja2V0X2FsbG9jKCk7CisgICAgICAgIGlmICghbXV4LT5zcV9wa3QpIHsKKyAg ICAgICAgICAgIHJldCA9IEFWRVJST1IoRU5PTUVNKTsKKyAgICAgICAgICAgIGdvdG8gZmFpbDsK KyAgICAgICAgfQorICAgIH0KKwogICAgIC8qIHdyaXRlIHRoZSBoZWFkZXIgZm9yIGZpbGVzIHdp dGggbm8gc3RyZWFtcyAqLwogICAgIGlmIChvZi0+Zm9ybWF0LT5mbGFncyAmIEFWRk1UX05PU1RS RUFNUyAmJiBvZi0+Y3R4LT5uYl9zdHJlYW1zID09IDApIHsKICAgICAgICAgcmV0ID0gb2ZfY2hl Y2tfaW5pdChvZik7CmRpZmYgLS1naXQgYS9mZnRvb2xzL2ZmbXBlZ19vcHQuYyBiL2ZmdG9vbHMv ZmZtcGVnX29wdC5jCmluZGV4IDA5YTI4MWRiYTMuLjJjZDRkNDJmMmEgMTAwNjQ0Ci0tLSBhL2Zm dG9vbHMvZmZtcGVnX29wdC5jCisrKyBiL2ZmdG9vbHMvZmZtcGVnX29wdC5jCkBAIC0zMSw2ICsz MSw3IEBACiAjaW5jbHVkZSAiZm9wZW5fdXRmOC5oIgogI2luY2x1ZGUgImNtZHV0aWxzLmgiCiAj aW5jbHVkZSAib3B0X2NvbW1vbi5oIgorI2luY2x1ZGUgInN5bmNfcXVldWUuaCIKIAogI2luY2x1 ZGUgImxpYmF2Zm9ybWF0L2F2Zm9ybWF0LmgiCiAKQEAgLTIzNCw2ICsyMzUsNyBAQCBzdGF0aWMg dm9pZCBpbml0X29wdGlvbnMoT3B0aW9uc0NvbnRleHQgKm8pCiAgICAgby0+Y2hhcHRlcnNfaW5w dXRfZmlsZSA9IElOVF9NQVg7CiAgICAgby0+YWNjdXJhdGVfc2VlayAgPSAxOwogICAgIG8tPnRo cmVhZF9xdWV1ZV9zaXplID0gLTE7CisgICAgby0+c2hvcnRlc3RfYnVmX2R1cmF0aW9uID0gMTAu ZjsKIH0KIAogc3RhdGljIGludCBzaG93X2h3YWNjZWxzKHZvaWQgKm9wdGN0eCwgY29uc3QgY2hh ciAqb3B0LCBjb25zdCBjaGFyICphcmcpCkBAIC0yMzI2LDYgKzIzMjgsNzggQEAgc3RhdGljIGlu dCBpbml0X2NvbXBsZXhfZmlsdGVycyh2b2lkKQogICAgIHJldHVybiAwOwogfQogCitzdGF0aWMg aW50IHNldHVwX3N5bmNfcXVldWVzKE91dHB1dEZpbGUgKm9mLCBBVkZvcm1hdENvbnRleHQgKm9j LCBpbnQ2NF90IGJ1Zl9zaXplX3VzKQoreworICAgIGludCBuYl9hdl9lbmMgPSAwLCBuYl9pbnRl cmxlYXZlZCA9IDA7CisKKyNkZWZpbmUgSVNfQVZfRU5DKG9zdCwgdHlwZSkgIFwKKyAgICAob3N0 LT5lbmNvZGluZ19uZWVkZWQgJiYgKHR5cGUgPT0gQVZNRURJQV9UWVBFX1ZJREVPIHx8IHR5cGUg PT0gQVZNRURJQV9UWVBFX0FVRElPKSkKKyNkZWZpbmUgSVNfSU5URVJMRUFWRUQodHlwZSkgKHR5 cGUgIT0gQVZNRURJQV9UWVBFX0FUVEFDSE1FTlQpCisKKyAgICBmb3IgKGludCBpID0gMDsgaSA8 IG9jLT5uYl9zdHJlYW1zOyBpKyspIHsKKyAgICAgICAgT3V0cHV0U3RyZWFtICpvc3QgPSBvdXRw dXRfc3RyZWFtc1tvZi0+b3N0X2luZGV4ICsgaV07CisgICAgICAgIGVudW0gQVZNZWRpYVR5cGUg dHlwZSA9IG9zdC0+c3QtPmNvZGVjcGFyLT5jb2RlY190eXBlOworCisgICAgICAgIG9zdC0+c3Ff aWR4X2VuY29kZSA9IC0xOworICAgICAgICBvc3QtPnNxX2lkeF9tdXggICAgPSAtMTsKKworICAg ICAgICBuYl9pbnRlcmxlYXZlZCArPSBJU19JTlRFUkxFQVZFRCh0eXBlKTsKKyAgICAgICAgbmJf YXZfZW5jICAgICAgKz0gSVNfQVZfRU5DKG9zdCwgdHlwZSk7CisgICAgfQorCisgICAgaWYgKCEo bmJfaW50ZXJsZWF2ZWQgPiAxICYmIG9mLT5zaG9ydGVzdCkpCisgICAgICAgIHJldHVybiAwOwor CisgICAgLyogaWYgd2UgaGF2ZSBtb3JlIHRoYW4gb25lIGVuY29kZWQgYXVkaW8vdmlkZW8gc3Ry ZWFtcywgdGhlbiB3ZQorICAgICAqIHN5bmNocm9uaXplIHRoZW0gYmVmb3JlIGVuY29kaW5nICov CisgICAgaWYgKG5iX2F2X2VuYyA+IDEpIHsKKyAgICAgICAgb2YtPnNxX2VuY29kZSA9IHNxX2Fs bG9jKFNZTkNfUVVFVUVfRlJBTUVTLCBidWZfc2l6ZV91cyk7CisgICAgICAgIGlmICghb2YtPnNx X2VuY29kZSkKKyAgICAgICAgICAgIHJldHVybiBBVkVSUk9SKEVOT01FTSk7CisKKyAgICAgICAg Zm9yIChpbnQgaSA9IDA7IGkgPCBvYy0+bmJfc3RyZWFtczsgaSsrKSB7CisgICAgICAgICAgICBP dXRwdXRTdHJlYW0gKm9zdCA9IG91dHB1dF9zdHJlYW1zW29mLT5vc3RfaW5kZXggKyBpXTsKKyAg ICAgICAgICAgIGVudW0gQVZNZWRpYVR5cGUgdHlwZSA9IG9zdC0+c3QtPmNvZGVjcGFyLT5jb2Rl Y190eXBlOworCisgICAgICAgICAgICBpZiAoIUlTX0FWX0VOQyhvc3QsIHR5cGUpKQorICAgICAg ICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgICAgICBvc3QtPnNxX2lkeF9lbmNvZGUgPSBz cV9hZGRfc3RyZWFtKG9mLT5zcV9lbmNvZGUpOworICAgICAgICAgICAgaWYgKG9zdC0+c3FfaWR4 X2VuY29kZSA8IDApCisgICAgICAgICAgICAgICAgcmV0dXJuIG9zdC0+c3FfaWR4X2VuY29kZTsK KworICAgICAgICAgICAgb3N0LT5zcV9mcmFtZSA9IGF2X2ZyYW1lX2FsbG9jKCk7CisgICAgICAg ICAgICBpZiAoIW9zdC0+c3FfZnJhbWUpCisgICAgICAgICAgICAgICAgcmV0dXJuIEFWRVJST1Io RU5PTUVNKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qIGlmIHRoZXJlIGFyZSBhbnkgYWRk aXRpb25hbCBpbnRlcmxlYXZlZCBzdHJlYW1zLCB0aGVuIEFMTCB0aGUgc3RyZWFtcworICAgICAq IGFyZSBhbHNvIHN5bmNocm9uaXplZCBiZWZvcmUgc2VuZGluZyB0aGVtIHRvIHRoZSBtdXhlciAq LworICAgIGlmIChuYl9pbnRlcmxlYXZlZCA+IG5iX2F2X2VuYykgeworICAgICAgICBvZi0+c3Ff bXV4ID0gc3FfYWxsb2MoU1lOQ19RVUVVRV9QQUNLRVRTLCBidWZfc2l6ZV91cyk7CisgICAgICAg IGlmICghb2YtPnNxX211eCkKKyAgICAgICAgICAgIHJldHVybiBBVkVSUk9SKEVOT01FTSk7CisK KyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBvYy0+bmJfc3RyZWFtczsgaSsrKSB7CisgICAg ICAgICAgICBPdXRwdXRTdHJlYW0gKm9zdCA9IG91dHB1dF9zdHJlYW1zW29mLT5vc3RfaW5kZXgg KyBpXTsKKyAgICAgICAgICAgIGVudW0gQVZNZWRpYVR5cGUgdHlwZSA9IG9zdC0+c3QtPmNvZGVj cGFyLT5jb2RlY190eXBlOworCisgICAgICAgICAgICBpZiAoIUlTX0lOVEVSTEVBVkVEKHR5cGUp KQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgICAgICBvc3QtPnNxX2lkeF9t dXggPSBzcV9hZGRfc3RyZWFtKG9mLT5zcV9tdXgpOworICAgICAgICAgICAgaWYgKG9zdC0+c3Ff aWR4X211eCA8IDApCisgICAgICAgICAgICAgICAgcmV0dXJuIG9zdC0+c3FfaWR4X211eDsKKyAg ICAgICAgfQorICAgIH0KKworI3VuZGVmIElTX0FWX0VOQworI3VuZGVmIElTX0lOVEVSTEVBVkVE CisKKyAgICByZXR1cm4gMDsKK30KKwogc3RhdGljIGludCBvcGVuX291dHB1dF9maWxlKE9wdGlv bnNDb250ZXh0ICpvLCBjb25zdCBjaGFyICpmaWxlbmFtZSkKIHsKICAgICBBVkZvcm1hdENvbnRl eHQgKm9jOwpAQCAtMjk2Myw2ICszMDM3LDEyIEBAIGxvb3BfZW5kOgogICAgICAgICBleGl0X3By b2dyYW0oMSk7CiAgICAgfQogCisgICAgZXJyID0gc2V0dXBfc3luY19xdWV1ZXMob2YsIG9jLCBv LT5zaG9ydGVzdF9idWZfZHVyYXRpb24gKiBBVl9USU1FX0JBU0UpOworICAgIGlmIChlcnIgPCAw KSB7CisgICAgICAgIGF2X2xvZyhOVUxMLCBBVl9MT0dfRkFUQUwsICJFcnJvciBzZXR0aW5nIHVw IG91dHB1dCBzeW5jIHF1ZXVlc1xuIik7CisgICAgICAgIGV4aXRfcHJvZ3JhbSgxKTsKKyAgICB9 CisKICAgICBlcnIgPSBvZl9tdXhlcl9pbml0KG9mLCBmb3JtYXRfb3B0cywgby0+bGltaXRfZmls ZXNpemUpOwogICAgIGlmIChlcnIgPCAwKSB7CiAgICAgICAgIGF2X2xvZyhOVUxMLCBBVl9MT0df RkFUQUwsICJFcnJvciBpbml0aWFsaXppbmcgaW50ZXJuYWwgbXV4aW5nIHN0YXRlXG4iKTsKQEAg LTM2NzUsNiArMzc1NSw4IEBAIGNvbnN0IE9wdGlvbkRlZiBvcHRpb25zW10gPSB7CiAgICAgeyAi c2hvcnRlc3QiLCAgICAgICBPUFRfQk9PTCB8IE9QVF9FWFBFUlQgfCBPUFRfT0ZGU0VUIHwKICAg ICAgICAgICAgICAgICAgICAgICAgIE9QVF9PVVRQVVQsICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHsgLm9mZiA9IE9GRlNFVChzaG9ydGVzdCkgfSwKICAgICAgICAgImZpbmlzaCBl bmNvZGluZyB3aXRoaW4gc2hvcnRlc3QgaW5wdXQiIH0sCisgICAgeyAic2hvcnRlc3RfYnVmX2R1 cmF0aW9uIiwgSEFTX0FSRyB8IE9QVF9GTE9BVCB8IE9QVF9FWFBFUlQgfCBPUFRfT0ZGU0VUIHwg T1BUX09VVFBVVCwgeyAub2ZmID0gT0ZGU0VUKHNob3J0ZXN0X2J1Zl9kdXJhdGlvbikgfSwKKyAg ICAgICAgIm1heGltdW0gYnVmZmVyaW5nIGR1cmF0aW9uIChpbiBzZWNvbmRzKSBmb3IgdGhlIC1z aG9ydGVzdCBvcHRpb24iIH0sCiAgICAgeyAiYml0ZXhhY3QiLCAgICAgICBPUFRfQk9PTCB8IE9Q VF9FWFBFUlQgfCBPUFRfT0ZGU0VUIHwKICAgICAgICAgICAgICAgICAgICAgICAgIE9QVF9PVVRQ VVQgfCBPUFRfSU5QVVQsICAgICAgICAgICAgICAgICAgICAgIHsgLm9mZiA9IE9GRlNFVChiaXRl eGFjdCkgfSwKICAgICAgICAgImJpdGV4YWN0IG1vZGUiIH0sCmRpZmYgLS1naXQgYS9mZnRvb2xz L3N5bmNfcXVldWUuYyBiL2ZmdG9vbHMvc3luY19xdWV1ZS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAwMDAuLmFiNjU0Y2E3OTAKLS0tIC9kZXYvbnVsbAorKysgYi9mZnRvb2xz L3N5bmNfcXVldWUuYwpAQCAtMCwwICsxLDQyNSBAQAorLyoKKyAqIFRoaXMgZmlsZSBpcyBwYXJ0 IG9mIEZGbXBlZy4KKyAqCisgKiBGRm1wZWcgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp c3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH TlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUg RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMi4xIG9mIHRoZSBM aWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIEZG bXBlZyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAor ICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2Fy cmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg UFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm b3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkg b2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYWxvbmcgd2l0aCBG Rm1wZWc7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24s IEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAt MTMwMSBVU0EKKyAqLworCisjaW5jbHVkZSA8c3RkaW50Lmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+ CisKKyNpbmNsdWRlICJsaWJhdnV0aWwvYXZhc3NlcnQuaCIKKyNpbmNsdWRlICJsaWJhdnV0aWwv ZXJyb3IuaCIKKyNpbmNsdWRlICJsaWJhdnV0aWwvZmlmby5oIgorI2luY2x1ZGUgImxpYmF2dXRp bC9tYXRoZW1hdGljcy5oIgorI2luY2x1ZGUgImxpYmF2dXRpbC9tZW0uaCIKKworI2luY2x1ZGUg Im9ianBvb2wuaCIKKyNpbmNsdWRlICJzeW5jX3F1ZXVlLmgiCisKK3R5cGVkZWYgc3RydWN0IFN5 bmNRdWV1ZVN0cmVhbSB7CisgICAgQVZGaWZvICAgICAgICAgICpmaWZvOworICAgIEFWUmF0aW9u YWwgICAgICAgdGI7CisKKyAgICAvKiBzdHJlYW0gaGVhZDogbGFyZ2VzdCB0aW1lc3RhbXAgc2Vl biAqLworICAgIGludDY0X3QgICAgICAgICAgaGVhZF90czsKKyAgICAvKiBubyBtb3JlIGZyYW1l cyB3aWxsIGJlIHNlbnQgZm9yIHRoaXMgc3RyZWFtICovCisgICAgaW50ICAgICAgICAgICAgICBm aW5pc2hlZDsKK30gU3luY1F1ZXVlU3RyZWFtOworCitzdHJ1Y3QgU3luY1F1ZXVlIHsKKyAgICBl bnVtIFN5bmNRdWV1ZVR5cGUgdHlwZTsKKworICAgIC8qIG5vIG1vcmUgZnJhbWVzIHdpbGwgYmUg c2VudCBmb3IgYW55IHN0cmVhbSAqLworICAgIGludCBmaW5pc2hlZDsKKyAgICAvKiBzeW5jIGhl YWQ6IHRoZSBzdHJlYW0gd2l0aCB0aGUgX3NtYWxsZXN0XyBoZWFkIHRpbWVzdGFtcAorICAgICAq IHRoaXMgc3RyZWFtIGRldGVybWluZXMgd2hpY2ggZnJhbWVzIGNhbiBiZSBvdXRwdXQgKi8KKyAg ICBpbnQgaGVhZF9zdHJlYW07CisgICAgLyogdGhlIGZpbmlzaGVkIHN0cmVhbSB3aXRoIHRoZSBz bWFsbGVzdCBmaW5pc2ggdGltZXN0YW1wIG9yIC0xICovCisgICAgaW50IGhlYWRfZmluaXNoZWRf c3RyZWFtOworCisgICAgLy8gbWF4aW11bSBidWZmZXJpbmcgZHVyYXRpb24gaW4gbWljcm9zZWNv bmRzCisgICAgaW50NjRfdCBidWZfc2l6ZV91czsKKworICAgIFN5bmNRdWV1ZVN0cmVhbSAqc3Ry ZWFtczsKKyAgICB1bnNpZ25lZCBpbnQgIG5iX3N0cmVhbXM7CisKKyAgICAvLyBwb29sIG9mIHBy ZWFsbG9jYXRlZCBmcmFtZXMgdG8gYXZvaWQgY29uc3RhbnQgYWxsb2NhdGlvbnMKKyAgICBPYmpQ b29sICpwb29sOworfTsKKworc3RhdGljIHZvaWQgZnJhbWVfbW92ZShjb25zdCBTeW5jUXVldWUg KnNxLCBTeW5jUXVldWVGcmFtZSBkc3QsCisgICAgICAgICAgICAgICAgICAgICAgIFN5bmNRdWV1 ZUZyYW1lIHNyYykKK3sKKyAgICBpZiAoc3EtPnR5cGUgPT0gU1lOQ19RVUVVRV9QQUNLRVRTKQor ICAgICAgICBhdl9wYWNrZXRfbW92ZV9yZWYoZHN0LnAsIHNyYy5wKTsKKyAgICBlbHNlCisgICAg ICAgIGF2X2ZyYW1lX21vdmVfcmVmKGRzdC5mLCBzcmMuZik7Cit9CisKK3N0YXRpYyBpbnQ2NF90 IGZyYW1lX3RzKGNvbnN0IFN5bmNRdWV1ZSAqc3EsIFN5bmNRdWV1ZUZyYW1lIGZyYW1lKQorewor ICAgIHJldHVybiAoc3EtPnR5cGUgPT0gU1lOQ19RVUVVRV9QQUNLRVRTKSA/CisgICAgICAgICAg IGZyYW1lLnAtPnB0cyArIGZyYW1lLnAtPmR1cmF0aW9uIDoKKyAgICAgICAgICAgZnJhbWUuZi0+ cHRzICsgZnJhbWUuZi0+cGt0X2R1cmF0aW9uOworfQorCitzdGF0aWMgaW50IGZyYW1lX251bGwo Y29uc3QgU3luY1F1ZXVlICpzcSwgU3luY1F1ZXVlRnJhbWUgZnJhbWUpCit7CisgICAgcmV0dXJu IChzcS0+dHlwZSA9PSBTWU5DX1FVRVVFX1BBQ0tFVFMpID8gKGZyYW1lLnAgPT0gTlVMTCkgOiAo ZnJhbWUuZiA9PSBOVUxMKTsKK30KKworc3RhdGljIHZvaWQgZmluaXNoX3N0cmVhbShTeW5jUXVl dWUgKnNxLCB1bnNpZ25lZCBpbnQgc3RyZWFtX2lkeCkKK3sKKyAgICBTeW5jUXVldWVTdHJlYW0g KnN0ID0gJnNxLT5zdHJlYW1zW3N0cmVhbV9pZHhdOworCisgICAgc3QtPmZpbmlzaGVkID0gMTsK KworICAgIGlmIChzdC0+aGVhZF90cyAhPSBBVl9OT1BUU19WQUxVRSkgeworICAgICAgICAvKiBj aGVjayBpZiB0aGlzIHN0cmVhbSBpcyB0aGUgbmV3IGZpbmlzaGVkIGhlYWQgKi8KKyAgICAgICAg aWYgKHNxLT5oZWFkX2ZpbmlzaGVkX3N0cmVhbSA8IDAgfHwKKyAgICAgICAgICAgIGF2X2NvbXBh cmVfdHMoc3QtPmhlYWRfdHMsIHN0LT50YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc3Et PnN0cmVhbXNbc3EtPmhlYWRfZmluaXNoZWRfc3RyZWFtXS5oZWFkX3RzLAorICAgICAgICAgICAg ICAgICAgICAgICAgICBzcS0+c3RyZWFtc1tzcS0+aGVhZF9maW5pc2hlZF9zdHJlYW1dLnRiKSA8 IDApIHsKKyAgICAgICAgICAgIHNxLT5oZWFkX2ZpbmlzaGVkX3N0cmVhbSA9IHN0cmVhbV9pZHg7 CisgICAgICAgIH0KKworICAgICAgICAvKiBtYXJrIGFzIGZpbmlzaGVkIGFsbCBzdHJlYW1zIHRo YXQgc2hvdWxkIG5vIGxvbmdlciByZWNlaXZlIG5ldyBmcmFtZXMsCisgICAgICAgICAqIGR1ZSB0 byB0aGVtIGJlaW5nIGFoZWFkIG9mIHNvbWUgZmluaXNoZWQgc3RyZWFtICovCisgICAgICAgIHN0 ID0gJnNxLT5zdHJlYW1zW3NxLT5oZWFkX2ZpbmlzaGVkX3N0cmVhbV07CisgICAgICAgIGZvciAo dW5zaWduZWQgaW50IGkgPSAwOyBpIDwgc3EtPm5iX3N0cmVhbXM7IGkrKykgeworICAgICAgICAg ICAgU3luY1F1ZXVlU3RyZWFtICpzdDEgPSAmc3EtPnN0cmVhbXNbaV07CisgICAgICAgICAgICBp ZiAoc3QgIT0gc3QxICYmIHN0MS0+aGVhZF90cyAhPSBBVl9OT1BUU19WQUxVRSAmJgorICAgICAg ICAgICAgICAgIGF2X2NvbXBhcmVfdHMoc3QtPmhlYWRfdHMsIHN0LT50Yiwgc3QxLT5oZWFkX3Rz LCBzdDEtPnRiKSA8PSAwKQorICAgICAgICAgICAgICAgIHN0MS0+ZmluaXNoZWQgPSAxOworICAg ICAgICB9CisgICAgfQorCisgICAgLyogbWFyayB0aGUgd2hvbGUgcXVldWUgYXMgZmluaXNoZWQg aWYgYWxsIHN0cmVhbXMgYXJlIGZpbmlzaGVkICovCisgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9 IDA7IGkgPCBzcS0+bmJfc3RyZWFtczsgaSsrKSB7CisgICAgICAgIGlmICghc3EtPnN0cmVhbXNb aV0uZmluaXNoZWQpCisgICAgICAgICAgICByZXR1cm47CisgICAgfQorICAgIHNxLT5maW5pc2hl ZCA9IDE7Cit9CisKK3N0YXRpYyB2b2lkIHF1ZXVlX2hlYWRfdXBkYXRlKFN5bmNRdWV1ZSAqc3Ep Cit7CisgICAgaWYgKHNxLT5oZWFkX3N0cmVhbSA8IDApIHsKKyAgICAgICAgLyogd2FpdCBmb3Ig b25lIHRpbWVzdGFtcCBpbiBlYWNoIHN0cmVhbSBiZWZvcmUgZGV0ZXJtaW5pbmcKKyAgICAgICAg ICogdGhlIHF1ZXVlIGhlYWQgKi8KKyAgICAgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkg PCBzcS0+bmJfc3RyZWFtczsgaSsrKSB7CisgICAgICAgICAgICBTeW5jUXVldWVTdHJlYW0gKnN0 ID0gJnNxLT5zdHJlYW1zW2ldOworICAgICAgICAgICAgaWYgKHN0LT5oZWFkX3RzID09IEFWX05P UFRTX1ZBTFVFKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAg IC8vIHBsYWNlaG9sZGVyIHZhbHVlLCBjb3JyZWN0IG9uZSB3aWxsIGJlIGZvdW5kIGJlbG93Cisg ICAgICAgIHNxLT5oZWFkX3N0cmVhbSA9IDA7CisgICAgfQorCisgICAgZm9yICh1bnNpZ25lZCBp bnQgaSA9IDA7IGkgPCBzcS0+bmJfc3RyZWFtczsgaSsrKSB7CisgICAgICAgIFN5bmNRdWV1ZVN0 cmVhbSAqc3RfaGVhZCAgPSAmc3EtPnN0cmVhbXNbc3EtPmhlYWRfc3RyZWFtXTsKKyAgICAgICAg U3luY1F1ZXVlU3RyZWFtICpzdF9vdGhlciA9ICZzcS0+c3RyZWFtc1tpXTsKKyAgICAgICAgaWYg KHN0X290aGVyLT5oZWFkX3RzICE9IEFWX05PUFRTX1ZBTFVFICYmCisgICAgICAgICAgICBhdl9j b21wYXJlX3RzKHN0X290aGVyLT5oZWFkX3RzLCBzdF9vdGhlci0+dGIsCisgICAgICAgICAgICAg ICAgICAgICAgICAgIHN0X2hlYWQtPmhlYWRfdHMsICBzdF9oZWFkLT50YikgPCAwKQorICAgICAg ICAgICAgc3EtPmhlYWRfc3RyZWFtID0gaTsKKyAgICB9Cit9CisKKy8qIHVwZGF0ZSB0aGlzIHN0 cmVhbSdzIGhlYWQgdGltZXN0YW1wICovCitzdGF0aWMgdm9pZCBzdHJlYW1fdXBkYXRlX3RzKFN5 bmNRdWV1ZSAqc3EsIHVuc2lnbmVkIGludCBzdHJlYW1faWR4LCBpbnQ2NF90IHRzKQoreworICAg IFN5bmNRdWV1ZVN0cmVhbSAqc3QgPSAmc3EtPnN0cmVhbXNbc3RyZWFtX2lkeF07CisKKyAgICBp ZiAodHMgPT0gQVZfTk9QVFNfVkFMVUUgfHwKKyAgICAgICAgKHN0LT5oZWFkX3RzICE9IEFWX05P UFRTX1ZBTFVFICYmIHN0LT5oZWFkX3RzID49IHRzKSkKKyAgICAgICAgcmV0dXJuOworCisgICAg c3QtPmhlYWRfdHMgPSB0czsKKworICAgIC8qIGlmIHRoaXMgc3RyZWFtIGlzIG5vdyBhaGVhZCBv ZiBzb21lIGZpbmlzaGVkIHN0cmVhbSwgdGhlbgorICAgICAqIHRoaXMgc3RyZWFtIGlzIGFsc28g ZmluaXNoZWQgKi8KKyAgICBpZiAoc3EtPmhlYWRfZmluaXNoZWRfc3RyZWFtID49IDAgJiYKKyAg ICAgICAgYXZfY29tcGFyZV90cyhzcS0+c3RyZWFtc1tzcS0+aGVhZF9maW5pc2hlZF9zdHJlYW1d LmhlYWRfdHMsCisgICAgICAgICAgICAgICAgICAgICAgc3EtPnN0cmVhbXNbc3EtPmhlYWRfZmlu aXNoZWRfc3RyZWFtXS50YiwKKyAgICAgICAgICAgICAgICAgICAgICB0cywgc3QtPnRiKSA8PSAw KQorICAgICAgICBmaW5pc2hfc3RyZWFtKHNxLCBzdHJlYW1faWR4KTsKKworICAgIC8qIHVwZGF0 ZSB0aGUgb3ZlcmFsbCBoZWFkIHRpbWVzdGFtcCBpZiBpdCBjb3VsZCBoYXZlIGNoYW5nZWQgKi8K KyAgICBpZiAoc3EtPmhlYWRfc3RyZWFtIDwgMCB8fCBzcS0+aGVhZF9zdHJlYW0gPT0gc3RyZWFt X2lkeCkKKyAgICAgICAgcXVldWVfaGVhZF91cGRhdGUoc3EpOworfQorCisvKiBJZiB0aGUgcXVl dWUgZm9yIHRoZSBnaXZlbiBzdHJlYW0gKG9yIGFsbCBzdHJlYW1zIHdoZW4gc3RyZWFtX2lkeD0t MSkKKyAqIGlzIG92ZXJmbG93aW5nLCB0cmlnZ2VyIGEgZmFrZSBoZWFydGJlYXQgb24gbGFnZ2lu ZyBzdHJlYW1zLgorICoKKyAqIEByZXR1cm4gMSBpZiBoZWFydGJlYXQgdHJpZ2dlcmVkLCAwIG90 aGVyd2lzZQorICovCitzdGF0aWMgaW50IG92ZXJmbG93X2hlYXJ0YmVhdChTeW5jUXVldWUgKnNx LCBpbnQgc3RyZWFtX2lkeCkKK3sKKyAgICBTeW5jUXVldWVTdHJlYW0gKnN0OworICAgIFN5bmNR dWV1ZUZyYW1lIGZyYW1lOworICAgIGludDY0X3QgdGFpbF90cyA9IEFWX05PUFRTX1ZBTFVFOwor CisgICAgLyogaWYgbm8gc3RyZWFtIHNwZWNpZmllZCwgcGljayB0aGUgb25lIHRoYXQgaXMgbW9z dCBhaGVhZCAqLworICAgIGlmIChzdHJlYW1faWR4IDwgMCkgeworICAgICAgICBpbnQ2NF90IHRz ID0gQVZfTk9QVFNfVkFMVUU7CisKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzcS0+bmJf c3RyZWFtczsgaSsrKSB7CisgICAgICAgICAgICBzdCA9ICZzcS0+c3RyZWFtc1tpXTsKKyAgICAg ICAgICAgIGlmIChzdC0+aGVhZF90cyAhPSBBVl9OT1BUU19WQUxVRSAmJgorICAgICAgICAgICAg ICAgICh0cyA9PSBBVl9OT1BUU19WQUxVRSB8fAorICAgICAgICAgICAgICAgICBhdl9jb21wYXJl X3RzKHRzLCBzcS0+c3RyZWFtc1tzdHJlYW1faWR4XS50YiwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBzdC0+aGVhZF90cywgc3QtPnRiKSA8IDApKSB7CisgICAgICAgICAgICAgICAg dHMgPSBzdC0+aGVhZF90czsKKyAgICAgICAgICAgICAgICBzdHJlYW1faWR4ID0gaTsKKyAgICAg ICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICAvKiBubyBzdHJlYW0gaGFzIGEgdGltZXN0YW1w IHlldCAtPiBub3RoaW5nIHRvIGRvICovCisgICAgICAgIGlmIChzdHJlYW1faWR4IDwgMCkKKyAg ICAgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIHN0ID0gJnNxLT5zdHJlYW1zW3N0cmVh bV9pZHhdOworCisgICAgLyogZ2V0IHRoZSBjaG9zZW4gc3RyZWFtJ3MgdGFpbCB0aW1lc3RhbXAg Ki8KKyAgICBmb3IgKHNpemVfdCBpID0gMDsgdGFpbF90cyA9PSBBVl9OT1BUU19WQUxVRSAmJgor ICAgICAgICAgICAgICAgICAgICAgICBhdl9maWZvX3BlZWsoc3QtPmZpZm8sICZmcmFtZSwgMSwg aSkgPj0gMDsgaSsrKQorICAgICAgICB0YWlsX3RzID0gZnJhbWVfdHMoc3EsIGZyYW1lKTsKKwor ICAgIC8qIG92ZXJmbG93IHRyaWdnZXJzIHdoZW4gdGhlIHRhaWwgaXMgb3ZlciBzcGVjaWZpZWQg ZHVyYXRpb24gYmVoaW5kIHRoZSBoZWFkICovCisgICAgaWYgKHRhaWxfdHMgPT0gQVZfTk9QVFNf VkFMVUUgfHwgdGFpbF90cyA+PSBzdC0+aGVhZF90cyB8fAorICAgICAgICBhdl9yZXNjYWxlX3Eo c3QtPmhlYWRfdHMgLSB0YWlsX3RzLCBzdC0+dGIsIEFWX1RJTUVfQkFTRV9RKSA8IHNxLT5idWZf c2l6ZV91cykKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICAvKiBzaWduYWwgYSBmYWtlIHRpbWVz dGFtcCBmb3IgYWxsIHN0cmVhbXMgdGhhdCBwcmV2ZW50IHRhaWxfdHMgZnJvbSBiZWluZyBvdXRw dXQgKi8KKyAgICB0YWlsX3RzKys7CisgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBz cS0+bmJfc3RyZWFtczsgaSsrKSB7CisgICAgICAgIFN5bmNRdWV1ZVN0cmVhbSAqc3QxID0gJnNx LT5zdHJlYW1zW2ldOworICAgICAgICBpbnQ2NF90IHRzOworCisgICAgICAgIGlmIChzdCA9PSBz dDEgfHwgc3QxLT5maW5pc2hlZCB8fAorICAgICAgICAgICAgKHN0MS0+aGVhZF90cyAhPSBBVl9O T1BUU19WQUxVRSAmJgorICAgICAgICAgICAgIGF2X2NvbXBhcmVfdHModGFpbF90cywgc3QtPnRi LCBzdDEtPmhlYWRfdHMsIHN0MS0+dGIpIDw9IDApKQorICAgICAgICAgICAgY29udGludWU7CisK KyAgICAgICAgdHMgPSBhdl9yZXNjYWxlX3EodGFpbF90cywgc3QtPnRiLCBzdDEtPnRiKTsKKyAg ICAgICAgaWYgKHN0MS0+aGVhZF90cyAhPSBBVl9OT1BUU19WQUxVRSkKKyAgICAgICAgICAgIHRz ID0gRkZNQVgoc3QxLT5oZWFkX3RzICsgMSwgdHMpOworCisgICAgICAgIHN0cmVhbV91cGRhdGVf dHMoc3EsIGksIHRzKTsKKyAgICB9CisKKyAgICByZXR1cm4gMTsKK30KKworaW50IHNxX3NlbmQo U3luY1F1ZXVlICpzcSwgdW5zaWduZWQgaW50IHN0cmVhbV9pZHgsIFN5bmNRdWV1ZUZyYW1lIGZy YW1lKQoreworICAgIFN5bmNRdWV1ZVN0cmVhbSAqc3Q7CisgICAgU3luY1F1ZXVlRnJhbWUgZHN0 OworICAgIGludDY0X3QgdHM7CisgICAgaW50IHJldDsKKworICAgIGF2X2Fzc2VydDAoc3RyZWFt X2lkeCA8IHNxLT5uYl9zdHJlYW1zKTsKKyAgICBzdCA9ICZzcS0+c3RyZWFtc1tzdHJlYW1faWR4 XTsKKworICAgIGF2X2Fzc2VydDAoc3QtPnRiLm51bSA+IDAgJiYgc3QtPnRiLmRlbiA+IDApOwor CisgICAgaWYgKGZyYW1lX251bGwoc3EsIGZyYW1lKSkgeworICAgICAgICBmaW5pc2hfc3RyZWFt KHNxLCBzdHJlYW1faWR4KTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIGlmIChzdC0+ ZmluaXNoZWQpCisgICAgICAgIHJldHVybiBBVkVSUk9SX0VPRjsKKworICAgIHJldCA9IG9ianBv b2xfZ2V0KHNxLT5wb29sLCAodm9pZCoqKSZkc3QpOworICAgIGlmIChyZXQgPCAwKQorICAgICAg ICByZXR1cm4gcmV0OworCisgICAgZnJhbWVfbW92ZShzcSwgZHN0LCBmcmFtZSk7CisKKyAgICB0 cyA9IGZyYW1lX3RzKHNxLCBkc3QpOworCisgICAgcmV0ID0gYXZfZmlmb193cml0ZShzdC0+Zmlm bywgJmRzdCwgMSk7CisgICAgaWYgKHJldCA8IDApIHsKKyAgICAgICAgZnJhbWVfbW92ZShzcSwg ZnJhbWUsIGRzdCk7CisgICAgICAgIG9ianBvb2xfcmVsZWFzZShzcS0+cG9vbCwgKHZvaWQqKikm ZHN0KTsKKyAgICAgICAgcmV0dXJuIHJldDsKKyAgICB9CisKKyAgICBzdHJlYW1fdXBkYXRlX3Rz KHNxLCBzdHJlYW1faWR4LCB0cyk7CisKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIGludCBy ZWNlaXZlX2Zvcl9zdHJlYW0oU3luY1F1ZXVlICpzcSwgdW5zaWduZWQgaW50IHN0cmVhbV9pZHgs CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTeW5jUXVldWVGcmFtZSBmcmFtZSkKK3sK KyAgICBTeW5jUXVldWVTdHJlYW0gKnN0X2hlYWQgPSBzcS0+aGVhZF9zdHJlYW0gPj0gMCA/Cisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnNxLT5zdHJlYW1zW3NxLT5oZWFkX3N0cmVh bV0gOiBOVUxMOworICAgIFN5bmNRdWV1ZVN0cmVhbSAqc3Q7CisKKyAgICBhdl9hc3NlcnQwKHN0 cmVhbV9pZHggPCBzcS0+bmJfc3RyZWFtcyk7CisgICAgc3QgPSAmc3EtPnN0cmVhbXNbc3RyZWFt X2lkeF07CisKKyAgICBpZiAoYXZfZmlmb19jYW5fcmVhZChzdC0+ZmlmbykpIHsKKyAgICAgICAg U3luY1F1ZXVlRnJhbWUgcGVlazsKKyAgICAgICAgaW50NjRfdCB0czsKKyAgICAgICAgaW50IGNt cCA9IDE7CisKKyAgICAgICAgYXZfZmlmb19wZWVrKHN0LT5maWZvLCAmcGVlaywgMSwgMCk7Cisg ICAgICAgIHRzID0gZnJhbWVfdHMoc3EsIHBlZWspOworCisgICAgICAgIC8qIGNoZWNrIGlmIHRo aXMgc3RyZWFtJ3MgdGFpbCB0aW1lc3RhbXAgZG9lcyBub3Qgb3ZlcnRha2UKKyAgICAgICAgICog dGhlIG92ZXJhbGwgcXVldWUgaGVhZCAqLworICAgICAgICBpZiAodHMgIT0gQVZfTk9QVFNfVkFM VUUgJiYgc3RfaGVhZCkKKyAgICAgICAgICAgIGNtcCA9IGF2X2NvbXBhcmVfdHModHMsIHN0LT50 Yiwgc3RfaGVhZC0+aGVhZF90cywgc3RfaGVhZC0+dGIpOworCisgICAgICAgIC8qIFdlIGNhbiBy ZWxlYXNlIGZyYW1lcyB0aGF0IGRvIG5vdCBlbmQgYWZ0ZXIgdGhlIHF1ZXVlIGhlYWQuCisgICAg ICAgICAqIEZyYW1lcyB3aXRoIG5vIHRpbWVzdGFtcHMgYXJlIGp1c3QgcGFzc2VkIHRocm91Z2gg d2l0aCBubyBjb25kaXRpb25zLgorICAgICAgICAgKi8KKyAgICAgICAgaWYgKGNtcCA8PSAwIHx8 IHRzID09IEFWX05PUFRTX1ZBTFVFKSB7CisgICAgICAgICAgICBmcmFtZV9tb3ZlKHNxLCBmcmFt ZSwgcGVlayk7CisgICAgICAgICAgICBvYmpwb29sX3JlbGVhc2Uoc3EtPnBvb2wsICh2b2lkKiop JnBlZWspOworICAgICAgICAgICAgYXZfZmlmb19kcmFpbjIoc3QtPmZpZm8sIDEpOworICAgICAg ICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gKHNxLT5maW5p c2hlZCB8fCAoc3QtPmZpbmlzaGVkICYmICFhdl9maWZvX2Nhbl9yZWFkKHN0LT5maWZvKSkpID8K KyAgICAgICAgICAgIEFWRVJST1JfRU9GIDogQVZFUlJPUihFQUdBSU4pOworfQorCitzdGF0aWMg aW50IHJlY2VpdmVfaW50ZXJuYWwoU3luY1F1ZXVlICpzcSwgaW50IHN0cmVhbV9pZHgsIFN5bmNR dWV1ZUZyYW1lIGZyYW1lKQoreworICAgIGludCBuYl9lb2YgPSAwOworICAgIGludCByZXQ7CisK KyAgICAvKiByZWFkIGEgZnJhbWUgZm9yIGEgc3BlY2lmaWMgc3RyZWFtICovCisgICAgaWYgKHN0 cmVhbV9pZHggPj0gMCkgeworICAgICAgICByZXQgPSByZWNlaXZlX2Zvcl9zdHJlYW0oc3EsIHN0 cmVhbV9pZHgsIGZyYW1lKTsKKyAgICAgICAgcmV0dXJuIChyZXQgPCAwKSA/IHJldCA6IHN0cmVh bV9pZHg7CisgICAgfQorCisgICAgLyogcmVhZCBhIGZyYW1lIGZvciBhbnkgc3RyZWFtIHdpdGgg YXZhaWxhYmxlIG91dHB1dCAqLworICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgc3Et Pm5iX3N0cmVhbXM7IGkrKykgeworICAgICAgICByZXQgPSByZWNlaXZlX2Zvcl9zdHJlYW0oc3Es IGksIGZyYW1lKTsKKyAgICAgICAgaWYgKHJldCA9PSBBVkVSUk9SX0VPRiB8fCByZXQgPT0gQVZF UlJPUihFQUdBSU4pKSB7CisgICAgICAgICAgICBuYl9lb2YgKz0gKHJldCA9PSBBVkVSUk9SX0VP Rik7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gKHJl dCA8IDApID8gcmV0IDogaTsKKyAgICB9CisKKyAgICByZXR1cm4gKG5iX2VvZiA9PSBzcS0+bmJf c3RyZWFtcykgPyBBVkVSUk9SX0VPRiA6IEFWRVJST1IoRUFHQUlOKTsKK30KKworaW50IHNxX3Jl Y2VpdmUoU3luY1F1ZXVlICpzcSwgaW50IHN0cmVhbV9pZHgsIFN5bmNRdWV1ZUZyYW1lIGZyYW1l KQoreworICAgIGludCByZXQgPSByZWNlaXZlX2ludGVybmFsKHNxLCBzdHJlYW1faWR4LCBmcmFt ZSk7CisKKyAgICAvKiB0cnkgYWdhaW4gaWYgdGhlIHF1ZXVlIG92ZXJmbG93ZWQgYW5kIHRyaWdn ZXJlZCBhIGZha2UgaGVhcnRiZWF0CisgICAgICogZm9yIGxhZ2dpbmcgc3RyZWFtcyAqLworICAg IGlmIChyZXQgPT0gQVZFUlJPUihFQUdBSU4pICYmIG92ZXJmbG93X2hlYXJ0YmVhdChzcSwgc3Ry ZWFtX2lkeCkpCisgICAgICAgIHJldCA9IHJlY2VpdmVfaW50ZXJuYWwoc3EsIHN0cmVhbV9pZHgs IGZyYW1lKTsKKworICAgIHJldHVybiByZXQ7Cit9CisKK2ludCBzcV9hZGRfc3RyZWFtKFN5bmNR dWV1ZSAqc3EpCit7CisgICAgU3luY1F1ZXVlU3RyZWFtICp0bXAsICpzdDsKKworICAgIHRtcCA9 IGF2X3JlYWxsb2NfYXJyYXkoc3EtPnN0cmVhbXMsIHNxLT5uYl9zdHJlYW1zICsgMSwgc2l6ZW9m KCpzcS0+c3RyZWFtcykpOworICAgIGlmICghdG1wKQorICAgICAgICByZXR1cm4gQVZFUlJPUihF Tk9NRU0pOworICAgIHNxLT5zdHJlYW1zID0gdG1wOworCisgICAgc3QgPSAmc3EtPnN0cmVhbXNb c3EtPm5iX3N0cmVhbXNdOworICAgIG1lbXNldChzdCwgMCwgc2l6ZW9mKCpzdCkpOworCisgICAg c3QtPmZpZm8gPSBhdl9maWZvX2FsbG9jMigxLCBzaXplb2YoU3luY1F1ZXVlRnJhbWUpLCBBVl9G SUZPX0ZMQUdfQVVUT19HUk9XKTsKKyAgICBpZiAoIXN0LT5maWZvKQorICAgICAgICByZXR1cm4g QVZFUlJPUihFTk9NRU0pOworCisgICAgLyogd2Ugc2V0IGEgdmFsaWQgZGVmYXVsdCwgc28gdGhh dCBhIHBhdGhvbG9naWNhbCBzdHJlYW0gdGhhdCBuZXZlcgorICAgICAqIHJlY2VpdmVzIGV2ZW4g YSByZWFsIHRpbWViYXNlIChhbmQgbm8gZnJhbWVzKSB3b24ndCBzdGFsbCBhbGwgb3RoZXIKKyAg ICAgKiBzdHJlYW1zIGZvcmV2ZXI7IGNmLiBvdmVyZmxvd19oZWFydGJlYXQoKSAqLworICAgIHN0 LT50YiAgICAgID0gKEFWUmF0aW9uYWwpeyAxLCAxIH07CisgICAgc3QtPmhlYWRfdHMgPSBBVl9O T1BUU19WQUxVRTsKKworICAgIHJldHVybiBzcS0+bmJfc3RyZWFtcysrOworfQorCit2b2lkIHNx X3NldF90YihTeW5jUXVldWUgKnNxLCB1bnNpZ25lZCBpbnQgc3RyZWFtX2lkeCwgQVZSYXRpb25h bCB0YikKK3sKKyAgICBTeW5jUXVldWVTdHJlYW0gKnN0OworCisgICAgYXZfYXNzZXJ0MChzdHJl YW1faWR4IDwgc3EtPm5iX3N0cmVhbXMpOworICAgIHN0ID0gJnNxLT5zdHJlYW1zW3N0cmVhbV9p ZHhdOworCisgICAgYXZfYXNzZXJ0MCghYXZfZmlmb19jYW5fcmVhZChzdC0+ZmlmbykpOworCisg ICAgaWYgKHN0LT5oZWFkX3RzICE9IEFWX05PUFRTX1ZBTFVFKQorICAgICAgICBzdC0+aGVhZF90 cyA9IGF2X3Jlc2NhbGVfcShzdC0+aGVhZF90cywgc3QtPnRiLCB0Yik7CisKKyAgICBzdC0+dGIg PSB0YjsKK30KKworU3luY1F1ZXVlICpzcV9hbGxvYyhlbnVtIFN5bmNRdWV1ZVR5cGUgdHlwZSwg aW50NjRfdCBidWZfc2l6ZV91cykKK3sKKyAgICBTeW5jUXVldWUgKnNxID0gYXZfbWFsbG9jeihz aXplb2YoKnNxKSk7CisKKyAgICBpZiAoIXNxKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAg IHNxLT50eXBlICAgICAgICAgICAgICAgICA9IHR5cGU7CisgICAgc3EtPmJ1Zl9zaXplX3VzICAg ICAgICAgID0gYnVmX3NpemVfdXM7CisKKyAgICBzcS0+aGVhZF9zdHJlYW0gICAgICAgICAgPSAt MTsKKyAgICBzcS0+aGVhZF9maW5pc2hlZF9zdHJlYW0gPSAtMTsKKworICAgIHNxLT5wb29sID0g KHR5cGUgPT0gU1lOQ19RVUVVRV9QQUNLRVRTKSA/IG9ianBvb2xfYWxsb2NfcGFja2V0cygpIDoK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvYmpwb29sX2Fs bG9jX2ZyYW1lcygpOworICAgIGlmICghc3EtPnBvb2wpIHsKKyAgICAgICAgYXZfZnJlZXAoJnNx KTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgcmV0dXJuIHNxOworfQorCit2 b2lkIHNxX2ZyZWUoU3luY1F1ZXVlICoqcHNxKQoreworICAgIFN5bmNRdWV1ZSAqc3EgPSAqcHNx OworCisgICAgaWYgKCFzcSkKKyAgICAgICAgcmV0dXJuOworCisgICAgZm9yICh1bnNpZ25lZCBp bnQgaSA9IDA7IGkgPCBzcS0+bmJfc3RyZWFtczsgaSsrKSB7CisgICAgICAgIFN5bmNRdWV1ZUZy YW1lIGZyYW1lOworICAgICAgICB3aGlsZSAoYXZfZmlmb19yZWFkKHNxLT5zdHJlYW1zW2ldLmZp Zm8sICZmcmFtZSwgMSkgPj0gMCkKKyAgICAgICAgICAgIG9ianBvb2xfcmVsZWFzZShzcS0+cG9v bCwgKHZvaWQqKikmZnJhbWUpOworCisgICAgICAgIGF2X2ZpZm9fZnJlZXAyKCZzcS0+c3RyZWFt c1tpXS5maWZvKTsKKyAgICB9CisKKyAgICBhdl9mcmVlcCgmc3EtPnN0cmVhbXMpOworCisgICAg b2JqcG9vbF9mcmVlKCZzcS0+cG9vbCk7CisKKyAgICBhdl9mcmVlcChwc3EpOworfQpkaWZmIC0t Z2l0IGEvZmZ0b29scy9zeW5jX3F1ZXVlLmggYi9mZnRvb2xzL3N5bmNfcXVldWUuaApuZXcgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi5lMDg3ODBiN2JmCi0tLSAvZGV2L251bGwK KysrIGIvZmZ0b29scy9zeW5jX3F1ZXVlLmgKQEAgLTAsMCArMSwxMDAgQEAKKy8qCisgKiBUaGlz IGZpbGUgaXMgcGFydCBvZiBGRm1wZWcuCisgKgorICogRkZtcGVnIGlzIGZyZWUgc29mdHdhcmU7 IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0 ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJs aXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9u IDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lv bi4KKyAqCisgKiBGRm1wZWcgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxs IGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRo ZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1Ig QSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGVzc2VyIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVj ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNl IGFsb25nIHdpdGggRkZtcGVnOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisg KiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0 b24sIE1BIDAyMTEwLTEzMDEgVVNBCisgKi8KKworI2lmbmRlZiBGRlRPT0xTX1NZTkNfUVVFVUVf SAorI2RlZmluZSBGRlRPT0xTX1NZTkNfUVVFVUVfSAorCisjaW5jbHVkZSA8c3RkaW50Lmg+CisK KyNpbmNsdWRlICJsaWJhdmNvZGVjL3BhY2tldC5oIgorCisjaW5jbHVkZSAibGliYXZ1dGlsL2Zy YW1lLmgiCisKK2VudW0gU3luY1F1ZXVlVHlwZSB7CisgICAgU1lOQ19RVUVVRV9QQUNLRVRTLAor ICAgIFNZTkNfUVVFVUVfRlJBTUVTLAorfTsKKwordHlwZWRlZiB1bmlvbiBTeW5jUXVldWVGcmFt ZSB7CisgICAgQVZGcmFtZSAgKmY7CisgICAgQVZQYWNrZXQgKnA7Cit9IFN5bmNRdWV1ZUZyYW1l OworCisjZGVmaW5lIFNRRlJBTUUoZnJhbWUpICgoU3luY1F1ZXVlRnJhbWUpeyAuZiA9IChmcmFt ZSkgfSkKKyNkZWZpbmUgU1FQS1QocGt0KSAgICAgKChTeW5jUXVldWVGcmFtZSl7IC5wID0gKHBr dCkgfSkKKwordHlwZWRlZiBzdHJ1Y3QgU3luY1F1ZXVlIFN5bmNRdWV1ZTsKKworLyoqCisgKiBB bGxvY2F0ZSBhIHN5bmMgcXVldWUgb2YgdGhlIGdpdmVuIHR5cGUuCisgKgorICogQHBhcmFtIGJ1 Zl9zaXplX3VzIG1heGltdW0gZHVyYXRpb24gdGhhdCB3aWxsIGJlIGJ1ZmZlcmVkIGluIG1pY3Jv c2Vjb25kcworICovCitTeW5jUXVldWUgKnNxX2FsbG9jKGVudW0gU3luY1F1ZXVlVHlwZSB0eXBl LCBpbnQ2NF90IGJ1Zl9zaXplX3VzKTsKK3ZvaWQgICAgICAgc3FfZnJlZShTeW5jUXVldWUgKipz cSk7CisKKy8qKgorICogQWRkIGEgbmV3IHN0cmVhbSB0byB0aGUgc3luYyBxdWV1ZS4KKyAqCisg KiBAcmV0dXJuCisgKiAtIGEgbm9uLW5lZ2F0aXZlIHN0cmVhbSBpbmRleCBvbiBzdWNjZXNzCisg KiAtIGEgbmVnYXRpdmUgZXJyb3IgY29kZSBvbiBlcnJvcgorICovCitpbnQgc3FfYWRkX3N0cmVh bShTeW5jUXVldWUgKnNxKTsKKworLyoqCisgKiBTZXQgdGhlIHRpbWViYXNlIGZvciB0aGUgc3Ry ZWFtIHdpdGggaW5kZXggc3RyZWFtX2lkeC4gU2hvdWxkIGJlIGNhbGxlZAorICogYmVmb3JlIHNl bmRpbmcgYW55IGZyYW1lcyBmb3IgdGhpcyBzdHJlYW0uCisgKi8KK3ZvaWQgc3Ffc2V0X3RiKFN5 bmNRdWV1ZSAqc3EsIHVuc2lnbmVkIGludCBzdHJlYW1faWR4LCBBVlJhdGlvbmFsIHRiKTsKKwor LyoqCisgKiBTdWJtaXQgYSBmcmFtZSBmb3IgdGhlIHN0cmVhbSB3aXRoIGluZGV4IHN0cmVhbV9p ZHguCisgKgorICogT24gc3VjY2VzcywgdGhlIHN5bmMgcXVldWUgdGFrZXMgb3duZXJzaGlwIG9m IHRoZSBmcmFtZSBhbmQgd2lsbCByZXNldCB0aGUKKyAqIGNvbnRlbnRzIG9mIHRoZSBzdXBwbGll ZCBmcmFtZS4gT24gZmFpbHVyZSwgdGhlIGZyYW1lIHJlbWFpbnMgb3duZWQgYnkgdGhlCisgKiBj YWxsZXIuCisgKgorICogU2VuZGluZyBhIGZyYW1lIHdpdGggTlVMTCBjb250ZW50cyBtYXJrcyB0 aGUgc3RyZWFtIGFzIGZpbmlzaGVkLgorICoKKyAqIEByZXR1cm4KKyAqIC0gMCBvbiBzdWNjZXNz CisgKiAtIEFWRVJST1JfRU9GIHdoZW4gbm8gbW9yZSBmcmFtZXMgc2hvdWxkIGJlIHN1Ym1pdHRl ZCBmb3IgdGhpcyBzdHJlYW0KKyAqIC0gYW5vdGhlciBhIG5lZ2F0aXZlIGVycm9yIGNvZGUgb24g ZmFpbHVyZQorICovCitpbnQgc3Ffc2VuZChTeW5jUXVldWUgKnNxLCB1bnNpZ25lZCBpbnQgc3Ry ZWFtX2lkeCwgU3luY1F1ZXVlRnJhbWUgZnJhbWUpOworCisvKioKKyAqIFJlYWQgYSBmcmFtZSBm cm9tIHRoZSBxdWV1ZS4KKyAqCisgKiBAcGFyYW0gc3RyZWFtX2lkeCBpbmRleCBvZiB0aGUgc3Ry ZWFtIHRvIHJlYWQgYSBmcmFtZSBmb3IuIE1heSBiZSAtMSwgdGhlbgorICogICAgICAgICAgICAg ICAgICAgdHJ5IHRvIHJlYWQgYSBmcmFtZSBmcm9tIGFueSBzdHJlYW0gdGhhdCBpcyByZWFkeSBm b3IKKyAqICAgICAgICAgICAgICAgICAgIG91dHB1dC4KKyAqIEBwYXJhbSBmcmFtZSBvdXRwdXQg ZnJhbWUgd2lsbCBiZSB3cml0dGVuIGhlcmUgb24gc3VjY2Vzcy4gVGhlIGZyYW1lIGlzIG93bmVk CisgKiAgICAgICAgICAgICAgYnkgdGhlIGNhbGxlci4KKyAqCisgKiBAcmV0dXJuCisgKiAtIGEg bm9uLW5lZ2F0aXZlIGluZGV4IG9mIHRoZSBzdHJlYW0gdG8gd2hpY2ggdGhlIHJldHVybmVkIGZy YW1lIGJlbG9uZ3MKKyAqIC0gQVZFUlJPUihFQUdBSU4pIHdoZW4gbW9yZSBmcmFtZXMgbmVlZCB0 byBiZSBzdWJtaXR0ZWQgdG8gdGhlIHF1ZXVlCisgKiAtIEFWRVJST1JfRU9GIHdoZW4gbm8gbW9y ZSBmcmFtZXMgd2lsbCBiZSBhdmFpbGFibGUgZm9yIHRoaXMgc3RyZWFtIChmb3IgYW55CisgKiAg ICAgICAgICAgICAgIHN0cmVhbSBpZiBzdHJlYW1faWR4IGlzIC0xKQorICogLSBhbm90aGVyIG5l Z2F0aXZlIGVycm9yIGNvZGUgb24gZmFpbHVyZQorICovCitpbnQgc3FfcmVjZWl2ZShTeW5jUXVl dWUgKnNxLCBpbnQgc3RyZWFtX2lkeCwgU3luY1F1ZXVlRnJhbWUgZnJhbWUpOworCisjZW5kaWYg Ly8gRkZUT09MU19TWU5DX1FVRVVFX0gKZGlmZiAtLWdpdCBhL3Rlc3RzL2ZhdGUvZmZtcGVnLm1h ayBiL3Rlc3RzL2ZhdGUvZmZtcGVnLm1hawppbmRleCAxNTRhZjJmYWM4Li4zOGExYWU3ZWQ1IDEw MDY0NAotLS0gYS90ZXN0cy9mYXRlL2ZmbXBlZy5tYWsKKysrIGIvdGVzdHMvZmF0ZS9mZm1wZWcu bWFrCkBAIC0xMDUsNyArMTA1LDcgQEAgRkFURV9TQU1QTEVTX0ZGTVBFRy0kKGNhbGwgQUxMWUVT LCBDT0xPUl9GSUxURVIsIFZPQlNVQl9ERU1VWEVSLCBNQVRST1NLQV9ERU1VWEUKIGZhdGUtc2hv cnRlc3Qtc3ViOiBDTUQgPSBlbmNfZGVjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgdm9ic3ViICQo VEFSR0VUX1NBTVBMRVMpL3N1Yi92b2JzdWIuaWR4IG1hdHJvc2thICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgIi1maWx0ZXJfY29tcGxleCAn Y29sb3I9cz0xeDE6cmF0ZT0xOmR1cmF0aW9uPTQwMCcgLXBpeF9mbXQgcmdiMjQgLWFsbG93X3Jh d192ZncgMSAtYzpzIGNvcHkgLWM6diByYXd2aWRlbyIgIFwKLSAgICAgICAgZnJhbWVjcmMgIi1t YXAgMCAtYyBjb3B5IC1zaG9ydGVzdCIKKyAgICAgICAgZnJhbWVjcmMgIi1tYXAgMCAtYyBjb3B5 IC1zaG9ydGVzdCAtc2hvcnRlc3RfYnVmX2R1cmF0aW9uIDQwIgogCiAjIEJhc2ljIHRlc3QgZm9y IGZpeF9zdWJfZHVyYXRpb24sIHdoaWNoIGNhbGN1bGF0ZXMgZHVyYXRpb24gYmFzZWQgb24gdGhl CiAjIGZvbGxvd2luZyBzdWJ0aXRsZSdzIHB0cy4KZGlmZiAtLWdpdCBhL3Rlc3RzL3JlZi9mYXRl L2NvcHktc2hvcnRlc3QxIGIvdGVzdHMvcmVmL2ZhdGUvY29weS1zaG9ydGVzdDEKaW5kZXggNTAz ODk3M2U0ZS4uODdiZWU0YzQxZiAxMDA2NDQKLS0tIGEvdGVzdHMvcmVmL2ZhdGUvY29weS1zaG9y dGVzdDEKKysrIGIvdGVzdHMvcmVmL2ZhdGUvY29weS1zaG9ydGVzdDEKQEAgLTEyMCw0ICsxMjAs MyBAQAogMCwgICAgICA5ODMwNCwgICAgICA5ODMwNCwgICAgIDIwNDgsICAgIDExMTgyLCBlMzVh MmFiODQ2MDI5ZWZmZGJjYTBlNDM2Mzk3MTdmMgogMSwgICAgICA4NTc2MCwgICAgICA4NTc2MCwg ICAgIDE1MzYsICAgICAgNDE4LCBjZjUyZWE3ZmM2OWU0YzViYzhmNzViMzU0ZGZlNjBhZgogMCwg ICAgIDEwMDM1MiwgICAgIDEwMDM1MiwgICAgIDIwNDgsICAgICAxNDIzLCBmNDgwMjcyYzdkMGI5 NzgzNGJjOGVhMzZjY2VjYTYxZAotMSwgICAgICA4NzI5NiwgICAgICA4NzI5NiwgICAgIDE1MzYs ICAgICAgNDE4LCA3OGFiMjI2NTdhMWI2YzhhMGU1Yjg2MTJjZWI4MDgxZApkaWZmIC0tZ2l0IGEv dGVzdHMvcmVmL2ZhdGUvY29weS1zaG9ydGVzdDIgYi90ZXN0cy9yZWYvZmF0ZS9jb3B5LXNob3J0 ZXN0MgppbmRleCA1MDM4OTczZTRlLi44N2JlZTRjNDFmIDEwMDY0NAotLS0gYS90ZXN0cy9yZWYv ZmF0ZS9jb3B5LXNob3J0ZXN0MgorKysgYi90ZXN0cy9yZWYvZmF0ZS9jb3B5LXNob3J0ZXN0MgpA QCAtMTIwLDQgKzEyMCwzIEBACiAwLCAgICAgIDk4MzA0LCAgICAgIDk4MzA0LCAgICAgMjA0OCwg ICAgMTExODIsIGUzNWEyYWI4NDYwMjllZmZkYmNhMGU0MzYzOTcxN2YyCiAxLCAgICAgIDg1NzYw LCAgICAgIDg1NzYwLCAgICAgMTUzNiwgICAgICA0MTgsIGNmNTJlYTdmYzY5ZTRjNWJjOGY3NWIz NTRkZmU2MGFmCiAwLCAgICAgMTAwMzUyLCAgICAgMTAwMzUyLCAgICAgMjA0OCwgICAgIDE0MjMs IGY0ODAyNzJjN2QwYjk3ODM0YmM4ZWEzNmNjZWNhNjFkCi0xLCAgICAgIDg3Mjk2LCAgICAgIDg3 Mjk2LCAgICAgMTUzNiwgICAgICA0MTgsIDc4YWIyMjY1N2ExYjZjOGEwZTViODYxMmNlYjgwODFk CmRpZmYgLS1naXQgYS90ZXN0cy9yZWYvZmF0ZS9zaG9ydGVzdC1zdWIgYi90ZXN0cy9yZWYvZmF0 ZS9zaG9ydGVzdC1zdWIKaW5kZXggM2IyODg5ODE3Ny4uZmYyMjNkMGZhMCAxMDA2NDQKLS0tIGEv dGVzdHMvcmVmL2ZhdGUvc2hvcnRlc3Qtc3ViCisrKyBiL3Rlc3RzL3JlZi9mYXRlL3Nob3J0ZXN0 LXN1YgpAQCAtMSw0ICsxLDQgQEAKIDUyYmMzZDZhMGM4MGU2MzkwOTVhMmMyOGRhNGVmNDJjICp0 ZXN0cy9kYXRhL2ZhdGUvc2hvcnRlc3Qtc3ViLm1hdHJvc2thCiAxMzkyNDYgdGVzdHMvZGF0YS9m YXRlL3Nob3J0ZXN0LXN1Yi5tYXRyb3NrYQotZDcxZjVkMzU5ZWY3ODhlYTY4OTQxNWJjMWU0YTkw ZGYgKnRlc3RzL2RhdGEvZmF0ZS9zaG9ydGVzdC1zdWIub3V0LmZyYW1lY3JjCi1zdGRkZXY6MTE1 NDEuMTIgUFNOUjogMTUuMDggTUFYRElGRjoyMjg1NCBieXRlczogICAgIDI1OTEvICAgIDI2MDU1 Cis4NzZhYzNmYTUyZTQ2NzA1MGFiODQzOTY5ZDRjZjM0MyAqdGVzdHMvZGF0YS9mYXRlL3Nob3J0 ZXN0LXN1Yi5vdXQuZnJhbWVjcmMKK3N0ZGRldjoxMTU0MS4xMiBQU05SOiAxNS4wOCBNQVhESUZG OjIyODU0IGJ5dGVzOiAgICAgMjU5MS8gICAgMjM3MzUKLS0gCjIuMzQuMQoKCl9fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmZmbXBlZy1kZXZlbCBtYWlsaW5n IGxpc3QKZmZtcGVnLWRldmVsQGZmbXBlZy5vcmcKaHR0cHM6Ly9mZm1wZWcub3JnL21haWxtYW4v bGlzdGluZm8vZmZtcGVnLWRldmVsCgpUbyB1bnN1YnNjcmliZSwgdmlzaXQgbGluayBhYm92ZSwg b3IgZW1haWwKZmZtcGVnLWRldmVsLXJlcXVlc3RAZmZtcGVnLm9yZyB3aXRoIHN1YmplY3QgInVu c3Vic2NyaWJlIi4K