From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.sourceforge.net (lists.sourceforge.net [216.105.38.7]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 85D53C61DBE for ; Thu, 27 Aug 2026 01:17:12 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.sourceforge.net; s=beta; h=Content-Transfer-Encoding:Content-Type:Cc: Reply-To:From:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:Subject:In-Reply-To:References:To:MIME-Version:Date: Message-ID:Sender:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=G+0/bsWflRP0MagN/u+uWLrSJM7Sbu/WAFWblHLCioA=; b=RBwJrSK/g5HGxQO1gIOvbAgtS9 0VH+lDYLhM55yc20vLOmDtyibmskPJ+CLQYr52IHOxvAUxVxP00GryvSbVyZizJrARHndzFIjG3Ub kZlLM2eV2pmtfzgCAoaVjrG4mbVlO7wVL7AY3IDuF6HpIhF5zVnea7E55+yZH1m2mn/s=; Received: from [127.0.0.1] (helo=sfs-ml-4.v29.lw.sourceforge.com) by sfs-ml-4.v29.lw.sourceforge.com with esmtp (Exim 4.95) (envelope-from ) id 1wzOjv-0006S8-Ts; Thu, 27 Aug 2026 01:17:11 +0000 Received: from [172.30.29.66] (helo=mx.sourceforge.net) by sfs-ml-4.v29.lw.sourceforge.com with esmtps (TLS1.2) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.95) (envelope-from ) id 1wzOju-0006S2-6D for linux-f2fs-devel@lists.sourceforge.net; Thu, 27 Aug 2026 01:17:10 +0000 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=sourceforge.net; s=x; h=Content-Transfer-Encoding:Content-Type:In-Reply-To: From:References:To:Subject:Cc:MIME-Version:Date:Message-ID:Sender:Reply-To: Content-ID:Content-Description:Resent-Date:Resent-From:Resent-Sender: Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help:List-Unsubscribe: List-Subscribe:List-Post:List-Owner:List-Archive; bh=Rmoyj+JsVXj6ZHjQhuXjtMpIXQJHEcctidP9OfMrrz4=; b=PzrjQLChDSVv/43y3vveX3VuSt ZSIEMxxhQexREgghNCCNJMHQ/zaPSnfPE/oaUCrmYTmOKNvKXwwv6mFfWHnqzLRbWmbjVrw2/ivIk ctocwt7C5hRo9eEY/GpcwmRVQj4I53BBuZ+NoxXaNB/rrO1YmluYRDDDe1vBEM950W90=; DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=sf.net; s=x ; h=Content-Transfer-Encoding:Content-Type:In-Reply-To:From:References:To: Subject:Cc:MIME-Version:Date:Message-ID:Sender:Reply-To:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:List-Id:List-Help:List-Unsubscribe:List-Subscribe: List-Post:List-Owner:List-Archive; bh=Rmoyj+JsVXj6ZHjQhuXjtMpIXQJHEcctidP9OfMrrz4=; b=Cx07G8o/F/KKUzAwL0ZtcWAJl0 +CLo12bmVjRqzghWof+unlquOeTfsyKYwHJx98fqnGi1kJIMaMor83r8EZCoVF18Gw143DUgrdKpO k4roMNVMwpRxrSFsKBYVkOvPkvDVn+5ZPrbg22Dr6KeZm72zgMtiZKc91sL+nLEfHfDw=; Received: from tor.source.kernel.org ([172.105.4.254]) by sfi-mx-2.v28.lw.sourceforge.com with esmtps (TLS1.2:ECDHE-RSA-AES256-GCM-SHA384:256) (Exim 4.95) id 1wzOjr-0003Du-P4 for linux-f2fs-devel@lists.sourceforge.net; Thu, 27 Aug 2026 01:17:10 +0000 Received: from smtp.kernel.org (quasi.space.kernel.org [100.103.45.18]) by tor.source.kernel.org (Postfix) with ESMTP id 0F1C560A5C; Thu, 27 Aug 2026 01:17:02 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 896421F000E9; Thu, 27 Aug 2026 01:17:00 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1787793421; bh=Rmoyj+JsVXj6ZHjQhuXjtMpIXQJHEcctidP9OfMrrz4=; h=Date:Cc:Subject:To:References:From:In-Reply-To; b=OX1L4IubUsXphNsceCryuBNnNF+7ZfcdpkEHU5NP2jPm/Id5Ha/7o/GCmBSfAO9vo 3TsmHVDj2ZTVhou1jBael/EB9Bp528ZmaMNZwGkb0l1Jhw1Xm4sYcKBnFMP9Bb5Q+q JtpqoIARYsCrRiRi825Z8kIlAb4+c3DIRZzDL0YCaI3Zb0jWQwzAgwxc3efZPu9id1 766y78YXb1nvh/+4TT3v3aVSftqCVW2pfNe/flb0N9N5vyh1Jz13XzaiXiEwsrVa38 ro23FilGtLRhvKj0hVojbbQi7i2kjVqlf1/V2d1dQwzRxquMHZiw6426SoMu7aEjyG oth7ax6SShiNg== Message-ID: <1719b723-988a-4f97-b46f-b74c8d1a94e0@kernel.org> Date: Thu, 27 Aug 2026 09:16:58 +0800 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird To: Daeho Jeong References: <20260825130126.2078627-1-chao@kernel.org> <20260825130126.2078627-2-chao@kernel.org> Content-Language: en-US In-Reply-To: X-Headers-End: 1wzOjr-0003Du-P4 Subject: Re: [f2fs-dev] [PATCH v3 01/12] f2fs: cache: implement metadata cache X-BeenThere: linux-f2fs-devel@lists.sourceforge.net X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , From: Chao Yu via Linux-f2fs-devel Reply-To: Chao Yu Cc: jaegeuk@kernel.org, linux-kernel@vger.kernel.org, linux-f2fs-devel@lists.sourceforge.net Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: linux-f2fs-devel-bounces@lists.sourceforge.net T24gOC8yNy8yNiAwMzoxNCwgRGFlaG8gSmVvbmcgd3JvdGU6Cj4gT24gVHVlLCBBdWcgMjUsIDIw MjYgYXQgNjowNeKAr0FNIENoYW8gWXUgdmlhIExpbnV4LWYyZnMtZGV2ZWwKPiA8bGludXgtZjJm cy1kZXZlbEBsaXN0cy5zb3VyY2Vmb3JnZS5uZXQ+IHdyb3RlOgo+Pgo+PiBUaGlzIHBhdGNoIGlu dHJvZHVjZXMgdGhlIGNvcmUgbWV0YWRhdGEgYmxvY2sgY2FjaGluZyBpbmZyYXN0cnVjdHVyZSB0 bwo+PiBtYW5hZ2UgZjJmcyBtZXRhZGF0YSBpbmRlcGVuZGVudGx5IG9mIHRoZSBwYWdlIGNhY2hl Lgo+Pgo+PiBJdCBpbXBsZW1lbnRzOgo+PiAtIGNvcmUgY2FjaGUgQVBJczogZ2V0LCBjcmVhdGUs IHB1dCwgZHJvcCwgYmFja2VkIGJ5IGEgcmFkaXggdHJlZSBhbmQKPj4gICBhIHNpbmdsZSBnbG9i YWwgTFJVIGxpc3QuCj4+IC0gc3VwcG9ydCBtdWx0aXBsZSBzdGF0dXMgb2YgY2FjaGVkIGJsb2Nr OiBMT0NLRUQsIFVQVE9EQVRFLCBESVJUWSwKPj4gICBXUklURUJBQ0ssIElOTElORS4KPj4gLSBp bnRlcm5hbCBiaW8gYmFzZWQgcmVhZC93cml0ZSBoZWxwZXJzIHdpdGggYWRqYWNlbnQgYmxvY2sg dmVjdG9yIG1lcmdpbmcuCj4+Cj4+IFNpZ25lZC1vZmYtYnk6IENoYW8gWXUgPGNoYW9Aa2VybmVs Lm9yZz4KPj4gLS0tCj4+ICBmcy9mMmZzL01ha2VmaWxlIHwgICAyICstCj4+ICBmcy9mMmZzL2Nh Y2hlLmMgIHwgNTM2ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrCj4+ICBmcy9mMmZzL2NhY2hlLmggIHwgMTc1ICsrKysrKysrKysrKysrKysKPj4gIGZzL2Yy ZnMvZGF0YS5jICAgfCAyODIgKysrKysrKysrKysrKysrKysrKysrKy0tLQo+PiAgZnMvZjJmcy9m MmZzLmggICB8ICAyNCArKysKPj4gIGZzL2YyZnMvaW9zdGF0LmggfCAgMTEgKwo+PiAgNiBmaWxl cyBjaGFuZ2VkLCAxMDAyIGluc2VydGlvbnMoKyksIDI4IGRlbGV0aW9ucygtKQo+PiAgY3JlYXRl IG1vZGUgMTAwNjQ0IGZzL2YyZnMvY2FjaGUuYwo+PiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGZzL2Yy ZnMvY2FjaGUuaAo+Pgo+PiBkaWZmIC0tZ2l0IGEvZnMvZjJmcy9NYWtlZmlsZSBiL2ZzL2YyZnMv TWFrZWZpbGUKPj4gaW5kZXggOGE3MzIyZDIyOWU0Li5mYmY0OWMzMGIwNjYgMTAwNjQ0Cj4+IC0t LSBhL2ZzL2YyZnMvTWFrZWZpbGUKPj4gKysrIGIvZnMvZjJmcy9NYWtlZmlsZQo+PiBAQCAtMyw3 ICszLDcgQEAgb2JqLSQoQ09ORklHX0YyRlNfRlMpICs9IGYyZnMubwo+Pgo+PiAgZjJmcy15ICAg ICAgICAgOj0gZGlyLm8gZmlsZS5vIGlub2RlLm8gbmFtZWkubyBoYXNoLm8gc3VwZXIubyBpbmxp bmUubwo+PiAgZjJmcy15ICAgICAgICAgKz0gY2hlY2twb2ludC5vIGdjLm8gZGF0YS5vIG5vZGUu byBzZWdtZW50Lm8gcmVjb3Zlcnkubwo+PiAtZjJmcy15ICAgICAgICAgKz0gc2hyaW5rZXIubyBl eHRlbnRfY2FjaGUubyBzeXNmcy5vCj4+ICtmMmZzLXkgICAgICAgICArPSBzaHJpbmtlci5vIGV4 dGVudF9jYWNoZS5vIHN5c2ZzLm8gY2FjaGUubwo+PiAgZjJmcy0kKENPTkZJR19GMkZTX1NUQVRf RlMpICs9IGRlYnVnLm8KPj4gIGYyZnMtJChDT05GSUdfRjJGU19GU19YQVRUUikgKz0geGF0dHIu bwo+PiAgZjJmcy0kKENPTkZJR19GMkZTX0ZTX1BPU0lYX0FDTCkgKz0gYWNsLm8KPj4gZGlmZiAt LWdpdCBhL2ZzL2YyZnMvY2FjaGUuYyBiL2ZzL2YyZnMvY2FjaGUuYwo+PiBuZXcgZmlsZSBtb2Rl IDEwMDY0NAo+PiBpbmRleCAwMDAwMDAwMDAwMDAuLjhmMDk0OTJjNDAyZgo+PiAtLS0gL2Rldi9u dWxsCj4+ICsrKyBiL2ZzL2YyZnMvY2FjaGUuYwo+PiBAQCAtMCwwICsxLDUzNiBAQAo+PiArLy8g U1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAKPj4gKy8qCj4+ICsgKiBDb3B5cmlnaHQg KGMpIDIwMjYgR29vZ2xlIExMQwo+PiArICogQXV0aG9yOiBDaGFvIFl1IDxjaGFzZXl1QGdvb2ds ZS5jb20+Cj4+ICsgKi8KPj4gKyNpbmNsdWRlIDxsaW51eC9mcy5oPgo+PiArI2luY2x1ZGUgPGxp bnV4L2YyZnNfZnMuaD4KPj4gKyNpbmNsdWRlIDxsaW51eC9yYWRpeC10cmVlLmg+Cj4+ICsjaW5j bHVkZSA8bGludXgvc2xhYi5oPgo+PiArI2luY2x1ZGUgPGxpbnV4L2xpc3QuaD4KPj4gKyNpbmNs dWRlIDxsaW51eC9wYWdlbWFwLmg+Cj4+ICsjaW5jbHVkZSA8bGludXgva3RocmVhZC5oPgo+PiAr I2luY2x1ZGUgPGxpbnV4L2ZyZWV6ZXIuaD4KPj4gKyNpbmNsdWRlIDxsaW51eC9kZWxheS5oPgo+ PiArI2luY2x1ZGUgImYyZnMuaCIKPj4gKyNpbmNsdWRlICJjYWNoZS5oIgo+PiArI2luY2x1ZGUg Im5vZGUuaCIKPj4gKyNpbmNsdWRlICJzZWdtZW50LmgiCj4+ICsKPj4gK3ZvaWQgZjJmc19jYWNo ZV93YWl0X3dyaXRlYmFja19jb25kKHN0cnVjdCBmMmZzX2NhY2hlZF9ibG9jayAqZW50cnksCj4+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnVtIHBhZ2VfdHlwZSB0 eXBlKQo+PiArewo+PiArICAgICAgIC8qIGluIGNhc2UgdGhlIGVudHJ5IHdhcyB0cnVuY2F0ZWQg b3Igb24tZ29pbmcgc2hyaW5rICovCj4+ICsgICAgICAgaWYgKCFlbnRyeS0+Y2FjaGUpCj4+ICsg ICAgICAgICAgICAgICByZXR1cm47Cj4+ICsKPj4gKyAgICAgICBpZiAoIWYyZnNfY2FjaGVfdGVz dF93cml0ZWJhY2soZW50cnkpKQo+PiArICAgICAgICAgICAgICAgcmV0dXJuOwo+PiArCj4+ICsg ICAgICAgLyogc3VibWl0IGNhY2hlZCBiaW8gKi8KPj4gKyAgICAgICBmMmZzX3N1Ym1pdF9tZXJn ZWRfd3JpdGVfY2FjaGUoZW50cnksIHR5cGUpOwo+PiArCj4+ICsgICAgICAgd2FpdF9vbl9iaXRf aW8oJmVudHJ5LT5zdGF0ZSwgRjJGU19CTE9DS19XUklURUJBQ0ssCj4+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBUQVNLX1VOSU5URVJSVVBUSUJMRSk7Cj4+ICt9Cj4+ ICsKPj4gK3ZvaWQgZjJmc19jYWNoZV93YWl0X3dyaXRlYmFjayhzdHJ1Y3QgZjJmc19jYWNoZWRf YmxvY2sgKmVudHJ5KQo+PiArewo+PiArICAgICAgIC8qIGluIGNhc2UgdGhlIGVudHJ5IHdhcyB0 cnVuY2F0ZWQgb3Igb24tZ29pbmcgc2hyaW5rICovCj4+ICsgICAgICAgaWYgKCFlbnRyeS0+Y2Fj aGUpCj4+ICsgICAgICAgICAgICAgICByZXR1cm47Cj4+ICsKPj4gKyAgICAgICBmMmZzX2NhY2hl X3dhaXRfd3JpdGViYWNrX2NvbmQoZW50cnksCj4+ICsgICAgICAgICAgICAgICAgICAgICAgIElT X01FVEFfQ0FDSEUoZW50cnktPmNhY2hlKSA/IE1FVEEgOiBOT0RFKTsKPj4gK30KPj4gKwo+PiAr c3RhdGljIHZvaWQgZjJmc19jYWNoZV91cGRhdGVfdGFnKHN0cnVjdCBmMmZzX2NhY2hlZF9ibG9j ayAqZW50cnksCj4+ICsgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgY2xlYXJfZnJvbSwgdW5z aWduZWQgaW50IHNldF90bykKPj4gK3sKPj4gKyAgICAgICBzdHJ1Y3QgZjJmc19jYWNoZWRfYmxv Y2tfbGlzdCAqY2FjaGUgPSBlbnRyeS0+Y2FjaGU7Cj4+ICsgICAgICAgdW5zaWduZWQgbG9uZyBm bGFnczsKPj4gKwo+PiArICAgICAgIHNwaW5fbG9ja19pcnFzYXZlKCZjYWNoZS0+dHJlZV9sb2Nr LCBmbGFncyk7Cj4+ICsgICAgICAgaWYgKGNsZWFyX2Zyb20gIT0gRjJGU19DQUNIRV9UQUdfTk9O RSkKPj4gKyAgICAgICAgICAgICAgIHJhZGl4X3RyZWVfdGFnX2NsZWFyKCZjYWNoZS0+cm9vdCwg ZW50cnktPmluZGV4LCBjbGVhcl9mcm9tKTsKPj4gKyAgICAgICBpZiAoc2V0X3RvICE9IEYyRlNf Q0FDSEVfVEFHX05PTkUpCj4+ICsgICAgICAgICAgICAgICByYWRpeF90cmVlX3RhZ19zZXQoJmNh Y2hlLT5yb290LCBlbnRyeS0+aW5kZXgsIHNldF90byk7Cj4+ICsgICAgICAgc3Bpbl91bmxvY2tf aXJxcmVzdG9yZSgmY2FjaGUtPnRyZWVfbG9jaywgZmxhZ3MpOwo+PiArfQo+PiArCj4+ICtib29s IGYyZnNfbWFya19jYWNoZV9kaXJ0eShzdHJ1Y3QgZjJmc19jYWNoZWRfYmxvY2sgKmVudHJ5KQo+ PiArewo+PiArICAgICAgIHN0cnVjdCBmMmZzX2NhY2hlZF9ibG9ja19saXN0ICpjYWNoZSA9IGVu dHJ5LT5jYWNoZTsKPj4gKwo+PiArICAgICAgIGYyZnNfY2FjaGVfc2V0X3VwdG9kYXRlKGVudHJ5 KTsKPj4gKwo+PiArI2lmZGVmIENPTkZJR19GMkZTX0NIRUNLX0ZTCj4+ICsgICAgICAgaWYgKGNh Y2hlLT50eXBlID09IEYyRlNfTk9ERV9DQUNIRSAmJiBJU19JTk9ERShjYWNoZV9mb2xpbyhlbnRy eSkpKQo+PiArICAgICAgICAgICAgICAgZjJmc19pbm9kZV9jaGtzdW1fc2V0KGNhY2hlLT5zYmks IGNhY2hlX2ZvbGlvKGVudHJ5KSk7Cj4+ICsjZW5kaWYKPj4gKwo+PiArICAgICAgIGlmIChmMmZz X2NhY2hlX3Rlc3RfZGlydHkoZW50cnkpKQo+PiArICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNl Owo+PiArCj4+ICsgICAgICAgaWYgKCFmMmZzX2NhY2hlX3Rlc3RfYW5kX3NldF9kaXJ0eShlbnRy eSkpIHsKPj4gKyAgICAgICAgICAgICAgIGVudW0gY291bnRfdHlwZSB0eXBlID0gSVNfTUVUQV9D QUNIRShjYWNoZSkgPwo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEYyRlNfRElS VFlfTUVUQSA6IEYyRlNfRElSVFlfTk9ERVM7Cj4+ICsKPj4gKyAgICAgICAgICAgICAgIGYyZnNf Y2FjaGVfdXBkYXRlX3RhZyhlbnRyeSwgRjJGU19DQUNIRV9UQUdfTk9ORSwKPj4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRjJGU19DQUNIRV9UQUdfRElS VFkpOwo+PiArICAgICAgICAgICAgICAgaW5jX3BhZ2VfY291bnQoY2FjaGUtPnNiaSwgdHlwZSk7 Cj4+ICsgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKPj4gKyAgICAgICB9Cj4+ICsKPj4gKyAg ICAgICByZXR1cm4gZmFsc2U7Cj4+ICt9Cj4+ICsKPj4gK2Jvb2wgZjJmc19jbGVhcl9jYWNoZV9k aXJ0eShzdHJ1Y3QgZjJmc19jYWNoZWRfYmxvY2sgKmVudHJ5KQo+PiArewo+PiArICAgICAgIGlm ICghZjJmc19jYWNoZV90ZXN0X2RpcnR5KGVudHJ5KSkKPj4gKyAgICAgICAgICAgICAgIHJldHVy biBmYWxzZTsKPj4gKwo+PiArICAgICAgIGYyZnNfY2FjaGVfY2xlYXJfZGlydHkoZW50cnkpOwo+ PiArICAgICAgIHJldHVybiB0cnVlOwo+PiArfQo+PiArCj4+ICtzdGF0aWMgdm9pZCBfX2Ryb3Bf Y2FjaGVfZGlydHkoc3RydWN0IGYyZnNfY2FjaGVkX2Jsb2NrICplbnRyeSwgYm9vbCBmb3JjZSkK Pj4gK3sKPj4gKwo+PiArICAgICAgIHN0cnVjdCBmMmZzX2NhY2hlZF9ibG9ja19saXN0ICpjYWNo ZSA9IGVudHJ5LT5jYWNoZTsKPj4gKyAgICAgICBlbnVtIGNvdW50X3R5cGUgdHlwZSA9IElTX01F VEFfQ0FDSEUoY2FjaGUpID8KPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGMkZT X0RJUlRZX01FVEEgOiBGMkZTX0RJUlRZX05PREVTOwo+PiArCj4+ICsgICAgICAgZjJmc19jYWNo ZV9jbGVhcl91cHRvZGF0ZShlbnRyeSk7Cj4+ICsKPj4gKyAgICAgICBpZiAoIWZvcmNlICYmICFm MmZzX2NsZWFyX2NhY2hlX2RpcnR5KGVudHJ5KSkKPj4gKyAgICAgICAgICAgICAgIHJldHVybjsK Pj4gKwo+PiArICAgICAgIGYyZnNfY2FjaGVfdXBkYXRlX3RhZyhlbnRyeSwgRjJGU19DQUNIRV9U QUdfRElSVFksCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGMkZT X0NBQ0hFX1RBR19OT05FKTsKPj4gKyAgICAgICBkZWNfcGFnZV9jb3VudChjYWNoZS0+c2JpLCB0 eXBlKTsKPj4gK30KPj4gKwo+PiArdm9pZCBmMmZzX2Ryb3BfY2FjaGVfZGlydHkoc3RydWN0IGYy ZnNfY2FjaGVkX2Jsb2NrICplbnRyeSkKPj4gK3sKPj4gKyAgICAgICBfX2Ryb3BfY2FjaGVfZGly dHkoZW50cnksIGZhbHNlKTsKPj4gK30KPj4gKwo+PiArdm9pZCBmMmZzX2ZvcmNlX2NsZWFyX2Nh Y2hlX2RpcnR5KHN0cnVjdCBmMmZzX2NhY2hlZF9ibG9jayAqZW50cnkpCj4+ICt7Cj4+ICsgICAg ICAgX19kcm9wX2NhY2hlX2RpcnR5KGVudHJ5LCB0cnVlKTsKPj4gK30KPj4gKwo+PiArdm9pZCBm MmZzX3N0YXJ0X2NhY2hlX3dyaXRlYmFjayhzdHJ1Y3QgZjJmc19jYWNoZWRfYmxvY2sgKmVudHJ5 KQo+PiArewo+PiArICAgICAgIGYyZnNfY2FjaGVfc2V0X3dyaXRlYmFjayhlbnRyeSk7Cj4+ICsg ICAgICAgZjJmc19jYWNoZV91cGRhdGVfdGFnKGVudHJ5LCBGMkZTX0NBQ0hFX1RBR19ESVJUWSwK Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGMkZTX0NBQ0hFX1RBR19XUklURUJB Q0spOwo+PiArfQo+PiArCj4+ICt2b2lkIGYyZnNfZW5kX2NhY2hlX3dyaXRlYmFjayhzdHJ1Y3Qg ZjJmc19jYWNoZWRfYmxvY2sgKmVudHJ5KQo+PiArewo+PiArICAgICAgIC8qCj4+ICsgICAgICAg ICogc2hvdWxkIGNhbGwgZjJmc19jYWNoZV91cGRhdGVfdGFnKCkgYmVmb3JlIGNsZWFyaW5nIHdy aXRlYmFjayBiaXQsCj4+ICsgICAgICAgICogaW4gY2FzZSBmMmZzX3RydW5jYXRlX2NhY2hlKCkg c2V0IGVudHJ5LT5jYWNoZSB0byBOVUxMLgo+PiArICAgICAgICAqLwo+PiArICAgICAgIGYyZnNf Y2FjaGVfdXBkYXRlX3RhZyhlbnRyeSwgRjJGU19DQUNIRV9UQUdfV1JJVEVCQUNLLAo+PiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGMkZTX0NBQ0hFX1RB R19OT05FKTsKPj4gKyAgICAgICBjbGVhcl9hbmRfd2FrZV91cF9iaXQoRjJGU19CTE9DS19XUklU RUJBQ0ssICZlbnRyeS0+c3RhdGUpOwo+PiArfQo+PiArCj4+ICtzdGF0aWMgaW50IGYyZnNfY2Fj aGVfcmVmY291bnQoc3RydWN0IGYyZnNfY2FjaGVkX2Jsb2NrICplbnRyeSkKPj4gK3sKPj4gKyAg ICAgICByZXR1cm4gYXRvbWljX3JlYWQoJmVudHJ5LT5yZWZjb3VudCk7Cj4+ICt9Cj4+ICsKPj4g K3N0YXRpYyB2b2lkIF9fZjJmc19mcmVlX2NhY2hlKHN0cnVjdCBmMmZzX2NhY2hlZF9ibG9jayAq ZW50cnkpCj4+ICt7Cj4+ICsgICAgICAga2ZyZWUoZW50cnktPmRhdGEpOwo+PiArICAgICAgIGtm cmVlKGVudHJ5KTsKPj4gK30KPj4gKwo+PiArc3RhdGljIHZvaWQgZjJmc19mcmVlX2NhY2hlKHN0 cnVjdCBmMmZzX2NhY2hlZF9ibG9jayAqZW50cnkpCj4+ICt7Cj4+ICsgICAgICAgV0FSTl9PTl9P TkNFKCFsaXN0X2VtcHR5KCZlbnRyeS0+bGlzdCkpOwo+PiArICAgICAgIFdBUk5fT05fT05DRShm MmZzX2NhY2hlX3JlZmNvdW50KGVudHJ5KSk7Cj4+ICsgICAgICAgX19mMmZzX2ZyZWVfY2FjaGUo ZW50cnkpOwo+PiArfQo+PiArCj4+ICt2b2lkIGYyZnNfY2FjaGVfZ2V0KHN0cnVjdCBmMmZzX2Nh Y2hlZF9ibG9jayAqZW50cnkpCj4+ICt7Cj4+ICsgICAgICAgYXRvbWljX2luYygmZW50cnktPnJl ZmNvdW50KTsKPj4gK30KPj4gKwo+PiArc3RhdGljIGJvb2wgZjJmc19jYWNoZV9wdXQoc3RydWN0 IGYyZnNfY2FjaGVkX2Jsb2NrICplbnRyeSkKPj4gK3sKPj4gKyAgICAgICBXQVJOX09OX09OQ0Uo IWYyZnNfY2FjaGVfcmVmY291bnQoZW50cnkpKTsKPj4gKyAgICAgICBpZiAoYXRvbWljX2RlY19h bmRfdGVzdCgmZW50cnktPnJlZmNvdW50KSkgewo+PiArICAgICAgICAgICAgICAgZjJmc19mcmVl X2NhY2hlKGVudHJ5KTsKPj4gKyAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwo+PiArICAgICAg IH0KPj4gKyAgICAgICByZXR1cm4gZmFsc2U7Cj4+ICt9Cj4+ICsKPj4gK3N0YXRpYyBzdHJ1Y3Qg ZjJmc19jYWNoZWRfYmxvY2sgKmYyZnNfY3JlYXRlX2NhY2hlKAo+PiArICAgICAgICAgICAgICAg c3RydWN0IGYyZnNfY2FjaGVkX2Jsb2NrX2xpc3QgKmNhY2hlLAo+PiArICAgICAgICAgICAgICAg dW5zaWduZWQgbG9uZyBpbmRleCwgYm9vbCBub2ZhaWwpCj4+ICt7Cj4+ICsgICAgICAgc3RydWN0 IGYyZnNfY2FjaGVkX2Jsb2NrICplbnRyeTsKPj4gKyAgICAgICB1bnNpZ25lZCBpbnQgZmxhZ3Mg PSBHRlBfTk9GUzsKPj4gKwo+PiArICAgICAgIGlmIChub2ZhaWwpCj4+ICsgICAgICAgICAgICAg ICBmbGFncyB8PSBfX0dGUF9OT0ZBSUw7Cj4+ICsKPj4gKyAgICAgICBlbnRyeSA9IGt6YWxsb2Nf b2JqKCplbnRyeSwgZmxhZ3MpOwo+PiArICAgICAgIGlmICghZW50cnkpCj4+ICsgICAgICAgICAg ICAgICByZXR1cm4gRVJSX1BUUigtRU5PTUVNKTsKPj4gKwo+PiArICAgICAgIGVudHJ5LT5kYXRh ID0ga21hbGxvYyhjYWNoZS0+c2JpLT5ibG9ja3NpemUsIGZsYWdzKTsKPj4gKyAgICAgICBpZiAo IWVudHJ5LT5kYXRhKSB7Cj4+ICsgICAgICAgICAgICAgICBrZnJlZShlbnRyeSk7Cj4+ICsgICAg ICAgICAgICAgICByZXR1cm4gRVJSX1BUUigtRU5PTUVNKTsKPj4gKyAgICAgICB9Cj4+ICsKPj4g KyAgICAgICBlbnRyeS0+aW5kZXggPSBpbmRleDsKPj4gKwo+PiArICAgICAgIGF0b21pY19zZXQo JmVudHJ5LT5yZWZjb3VudCwgMCk7Cj4+ICsgICAgICAgZW50cnktPm5leHRfZW50cnkgPSBOVUxM Owo+PiArICAgICAgIElOSVRfTElTVF9IRUFEKCZlbnRyeS0+bGlzdCk7Cj4+ICsKPj4gKyAgICAg ICBlbnRyeS0+Y2FjaGUgPSBjYWNoZTsKPj4gKwo+PiArICAgICAgIHJldHVybiBlbnRyeTsKPj4g K30KPj4gKwo+PiArc3RhdGljIHN0cnVjdCBmMmZzX2NhY2hlZF9ibG9jayAqZjJmc19pbnNlcnRf Y2FjaGUoCj4+ICsgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBmMmZzX2NhY2hlZF9ibG9j a19saXN0ICpjYWNoZSwKPj4gKyAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBp bmRleCwKPj4gKyAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGYyZnNfY2FjaGVkX2Jsb2Nr ICpuZXcpCj4+ICt7Cj4+ICsgICAgICAgc3RydWN0IGYyZnNfY2FjaGVkX2Jsb2NrICplOwo+PiAr ICAgICAgIGludCByZXQ7Cj4+ICsgICAgICAgdW5zaWduZWQgbG9uZyBmbGFnczsKPj4gKwo+PiAr ICAgICAgIHJldCA9IHJhZGl4X3RyZWVfcHJlbG9hZChHRlBfTk9GUyB8IF9fR0ZQX05PRkFJTCk7 Cj4+ICsgICAgICAgZjJmc19idWdfb24oY2FjaGUtPnNiaSwgcmV0KTsKPj4gKwo+PiArICAgICAg IHNwaW5fbG9jaygmY2FjaGUtPmxpc3RfbG9jayk7Cj4+ICsgICAgICAgc3Bpbl9sb2NrX2lycXNh dmUoJmNhY2hlLT50cmVlX2xvY2ssIGZsYWdzKTsKPj4gKyAgICAgICBlID0gcmFkaXhfdHJlZV9s b29rdXAoJmNhY2hlLT5yb290LCBpbmRleCk7Cj4+ICsgICAgICAgaWYgKCFlKSB7Cj4+ICsgICAg ICAgICAgICAgICBlID0gbmV3Owo+PiArICAgICAgICAgICAgICAgZjJmc19idWdfb24oY2FjaGUt PnNiaSwgZjJmc19jYWNoZV9yZWZjb3VudChlKSk7Cj4+ICsKPj4gKyAgICAgICAgICAgICAgIHJl dCA9IHJhZGl4X3RyZWVfaW5zZXJ0KCZjYWNoZS0+cm9vdCwgaW5kZXgsIGUpOwo+PiArICAgICAg ICAgICAgICAgZjJmc19idWdfb24oY2FjaGUtPnNiaSwgcmV0KTsKPj4gKwo+PiArICAgICAgICAg ICAgICAgLyogcmFkaXggdHJlZSByZWZlcmVuY2VkIGNhY2hlIGVudHJ5ICovCj4+ICsgICAgICAg ICAgICAgICBmMmZzX2NhY2hlX2dldChlKTsKPj4gKyAgICAgICAgICAgICAgIGYyZnNfYnVnX29u KGNhY2hlLT5zYmksICFsaXN0X2VtcHR5KCZlLT5saXN0KSk7Cj4+ICsgICAgICAgICAgICAgICBs aXN0X2FkZF90YWlsKCZlLT5saXN0LCAmY2FjaGUtPmxydV9saXN0KTsKPj4gKyAgICAgICAgICAg ICAgIGNhY2hlLT5udW1fZW50cmllcysrOwo+PiArICAgICAgIH0KPj4gKyAgICAgICBmMmZzX2Nh Y2hlX2dldChlKTsKPj4gKyAgICAgICBzcGluX3VubG9ja19pcnFyZXN0b3JlKCZjYWNoZS0+dHJl ZV9sb2NrLCBmbGFncyk7Cj4+ICsgICAgICAgc3Bpbl91bmxvY2soJmNhY2hlLT5saXN0X2xvY2sp Owo+PiArICAgICAgIHJhZGl4X3RyZWVfcHJlbG9hZF9lbmQoKTsKPj4gKwo+PiArICAgICAgIGlm IChuZXcgIT0gZSkgewo+PiArICAgICAgICAgICAgICAgZjJmc19idWdfb24oY2FjaGUtPnNiaSwg ZjJmc19jYWNoZV9yZWZjb3VudChuZXcpKTsKPj4gKyAgICAgICAgICAgICAgIF9fZjJmc19mcmVl X2NhY2hlKG5ldyk7Cj4+ICsgICAgICAgfQo+PiArCj4+ICsgICAgICAgcmV0dXJuIGU7Cj4+ICt9 Cj4+ICsKPj4gK3N0cnVjdCBmMmZzX2NhY2hlZF9ibG9jayAqZjJmc19maW5kX2NhY2hlKAo+PiAr ICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgZjJmc19jYWNoZWRfYmxvY2tfbGlzdCAqY2Fj aGUsCj4+ICsgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgaW5kZXgpCj4+ICt7 Cj4+ICsgICAgICAgc3RydWN0IGYyZnNfY2FjaGVkX2Jsb2NrICplbnRyeTsKPj4gKyAgICAgICB1 bnNpZ25lZCBsb25nIGZsYWdzOwo+PiArCj4gCj4gRXZlcnkgbG9va3VwIGFjcXVpcmVzIGJvdGgg Y2FjaGUtPmxpc3RfbG9jayBhbmQgY2FjaGUtPnRyZWVfbG9jayB0bwo+IG1vdmUgdGhlIGVudHJ5 IHRvIHRoZSBMUlUgdGFpbAo+IAo+IEZvciBtZXRhZGF0YSBhbmQgbm9kZSBjYWNoZXMsIGxvb2t1 cCBpcyBhIHZlcnkgZnJlcXVlbnQsIHJlYWQtaGVhdnkgb3BlcmF0aW9uLgo+IEdyYWJiaW5nIHRo ZSBnbG9iYWwgbGlzdF9sb2NrIGFuZCBtb3ZpbmcgdGhlIGVudHJ5IG9uIGV2ZXJ5IHNpbmdsZQo+ IGNhY2hlIGhpdCB3aWxsIGNhdXNlIHNldmVyZSBzcGlubG9jayBjb250ZW50aW9uLgo+IAo+IElu c3RlYWQgb2YgdXBkYXRpbmcgdGhlIExSVSBsaXN0IHN5bmNocm9ub3VzbHkgb24gZXZlcnkgbG9v a3VwLAo+IGNvbnNpZGVyIGFkb3B0aW5nIGEgcmVmZXJlbmNlIGJpdCBsaWtlIFZGUz8KCkRhZWhv LAoKSUlVQywgZG8geW91IG1lYW4gc29tZXRoaW5nIGxpa2UgdGhpcz8KCnVwZGF0ZV9scnUgPSBm bGFnICYgRjJGU19DQUNIRV9BQ0NFU1M7CgppZiAodXBkYXRlX2xydSkKCXNwaW5fbG9jaygmY2Fj aGUtPmxpc3RfbG9jayk7CnNwaW5fbG9ja19pcnFzYXZlKCZjYWNoZS0+dHJlZV9sb2NrLCBmbGFn cyk7Ci4uLgoJaWYgKHVwZGF0ZV9scnUgJiYgIWxpc3RfZW1wdHkoJmVudHJ5LT5saXN0KSkKCQls aXN0X21vdmVfdGFpbCgmZW50cnktPmxpc3QsICZjYWNoZS0+bHJ1X2xpc3QpOwouLi4Kc3Bpbl91 bmxvY2tfaXJxcmVzdG9yZSgmY2FjaGUtPnRyZWVfbG9jaywgZmxhZ3MpOwppZiAodXBkYXRlX2xy dSkKCSBzcGluX3VubG9jaygmY2FjaGUtPmxpc3RfbG9jayk7CgpUaGFua3MsCgo+IAo+IFRoYW5r cywKPiAKPj4gKyAgICAgICBzcGluX2xvY2soJmNhY2hlLT5saXN0X2xvY2spOwo+PiArICAgICAg IHNwaW5fbG9ja19pcnFzYXZlKCZjYWNoZS0+dHJlZV9sb2NrLCBmbGFncyk7Cj4+ICsgICAgICAg ZW50cnkgPSByYWRpeF90cmVlX2xvb2t1cCgmY2FjaGUtPnJvb3QsIGluZGV4KTsKPj4gKyAgICAg ICBpZiAoZW50cnkpIHsKPj4gKyAgICAgICAgICAgICAgIGYyZnNfYnVnX29uKGNhY2hlLT5zYmks ICFmMmZzX2NhY2hlX3JlZmNvdW50KGVudHJ5KSk7Cj4+ICsgICAgICAgICAgICAgICBmMmZzX2Nh Y2hlX2dldChlbnRyeSk7Cj4+ICsgICAgICAgICAgICAgICBpZiAoIWxpc3RfZW1wdHkoJmVudHJ5 LT5saXN0KSkKPj4gKyAgICAgICAgICAgICAgICAgICAgICAgbGlzdF9tb3ZlX3RhaWwoJmVudHJ5 LT5saXN0LCAmY2FjaGUtPmxydV9saXN0KTsKPj4gKwo+PiArICAgICAgIH0gZWxzZSB7Cj4+ICsg ICAgICAgICAgICAgICBlbnRyeSA9IEVSUl9QVFIoLUVOT0VOVCk7Cj4+ICsgICAgICAgfQo+PiAr ICAgICAgIHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmNhY2hlLT50cmVlX2xvY2ssIGZsYWdzKTsK Pj4gKyAgICAgICBzcGluX3VubG9jaygmY2FjaGUtPmxpc3RfbG9jayk7Cj4+ICsKPj4gKyAgICAg ICByZXR1cm4gZW50cnk7Cj4+ICt9Cj4+ICsKPj4gK3N0cnVjdCBmMmZzX2NhY2hlZF9ibG9jayAq ZjJmc19ncmFiX2NhY2hlKAo+PiArICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgZjJmc19j YWNoZWRfYmxvY2tfbGlzdCAqY2FjaGUsCj4+ICsgICAgICAgICAgICAgICAgICAgICAgIHVuc2ln bmVkIGxvbmcgaW5kZXgsIGludCBmbGFncykKPj4gKwo+PiArewo+PiArICAgICAgIHN0cnVjdCBm MmZzX2NhY2hlZF9ibG9jayAqZW50cnksICpuZXc7Cj4+ICsgICAgICAgYm9vbCBjcmVhdGUgPSBm bGFncyAmIEYyRlNfQ0FDSEVfQ1JFQVRFOwo+PiArICAgICAgIGJvb2wgbm9mYWlsID0gZmxhZ3Mg JiBGMkZTX0NBQ0hFX05PRkFJTDsKPj4gKyAgICAgICBib29sIGxvY2sgPSBmbGFncyAmIEYyRlNf Q0FDSEVfTE9DSzsKPj4gKwo+PiArcmVwZWF0Ogo+PiArICAgICAgIGVudHJ5ID0gZjJmc19maW5k X2NhY2hlKGNhY2hlLCBpbmRleCk7Cj4+ICsgICAgICAgaWYgKCFJU19FUlIoZW50cnkpKQo+PiAr ICAgICAgICAgICAgICAgZ290byBmb3VuZDsKPj4gKwo+PiArICAgICAgIGlmICghY3JlYXRlKQo+ PiArICAgICAgICAgICAgICAgcmV0dXJuIEVSUl9QVFIoLUVOT0VOVCk7Cj4+ICsKPj4gKyAgICAg ICBuZXcgPSBmMmZzX2NyZWF0ZV9jYWNoZShjYWNoZSwgaW5kZXgsIG5vZmFpbCk7Cj4+ICsgICAg ICAgaWYgKElTX0VSUihuZXcpKQo+PiArICAgICAgICAgICAgICAgcmV0dXJuIG5ldzsKPj4gKwo+ PiArICAgICAgIGVudHJ5ID0gZjJmc19pbnNlcnRfY2FjaGUoY2FjaGUsIGluZGV4LCBuZXcpOwo+ PiArZm91bmQ6Cj4+ICsgICAgICAgaWYgKGxvY2spIHsKPj4gKyAgICAgICAgICAgICAgIGYyZnNf bG9ja19jYWNoZShlbnRyeSk7Cj4+ICsgICAgICAgICAgICAgICAvKiBoYXMgYmVlbiB0cnVuY2F0 ZWQgKi8KPj4gKyAgICAgICAgICAgICAgIGlmIChlbnRyeS0+Y2FjaGUgIT0gY2FjaGUpIHsKPj4g KyAgICAgICAgICAgICAgICAgICAgICAgZjJmc19wdXRfY2FjaGUoZW50cnksIHRydWUpOwo+PiAr ICAgICAgICAgICAgICAgICAgICAgICBnb3RvIHJlcGVhdDsKPj4gKyAgICAgICAgICAgICAgIH0K Pj4gKyAgICAgICB9Cj4+ICsgICAgICAgcmV0dXJuIGVudHJ5Owo+PiArfQo+PiArCj4+ICtib29s IGYyZnNfdHJ5bG9ja19jYWNoZShzdHJ1Y3QgZjJmc19jYWNoZWRfYmxvY2sgKmVudHJ5KQo+PiAr ewo+PiArICAgICAgIHJldHVybiAhdGVzdF9hbmRfc2V0X2JpdChGMkZTX0JMT0NLX0xPQ0tFRCwg JmVudHJ5LT5zdGF0ZSk7Cj4+ICt9Cj4+ICsKPj4gK3ZvaWQgZjJmc19sb2NrX2NhY2hlKHN0cnVj dCBmMmZzX2NhY2hlZF9ibG9jayAqZW50cnkpCj4+ICt7Cj4+ICsgICAgICAgd2FpdF9vbl9iaXRf bG9jaygmZW50cnktPnN0YXRlLCBGMkZTX0JMT0NLX0xPQ0tFRCwKPj4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFRBU0tfVU5JTlRFUlJVUFRJQkxFKTsKPj4gK30KPj4g Kwo+PiArdm9pZCBmMmZzX3VubG9ja19jYWNoZShzdHJ1Y3QgZjJmc19jYWNoZWRfYmxvY2sgKmVu dHJ5KQo+PiArewo+PiArICAgICAgIGNsZWFyX2FuZF93YWtlX3VwX2JpdChGMkZTX0JMT0NLX0xP Q0tFRCwgJmVudHJ5LT5zdGF0ZSk7Cj4+ICt9Cj4+ICsKPj4gK2Jvb2wgZjJmc19wdXRfY2FjaGUo c3RydWN0IGYyZnNfY2FjaGVkX2Jsb2NrICplbnRyeSwgYm9vbCB1bmxvY2spCj4+ICt7Cj4+ICsg ICAgICAgaWYgKElTX0VSUl9PUl9OVUxMKGVudHJ5KSkKPj4gKyAgICAgICAgICAgICAgIHJldHVy biBmYWxzZTsKPj4gKyAgICAgICBpZiAodW5sb2NrKQo+PiArICAgICAgICAgICAgICAgZjJmc191 bmxvY2tfY2FjaGUoZW50cnkpOwo+PiArICAgICAgIHJldHVybiBmMmZzX2NhY2hlX3B1dChlbnRy eSk7Cj4+ICt9Cj4+ICsKPj4gK3Vuc2lnbmVkIGludCBmMmZzX2NhY2hlX2dhbmdfbG9va3VwX3Rh ZyhzdHJ1Y3QgZjJmc19jYWNoZWRfYmxvY2tfbGlzdCAqY2FjaGUsCj4+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgc3RydWN0IGYyZnNfY2FjaGVkX2Jsb2NrICoqZW50cmllcywKPj4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZ29mZl90ICpmaXJzdF9pbmRleCwgdW5z aWduZWQgaW50IG1heF9uciwKPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQg dGFnKQo+PiArewo+PiArICAgICAgIHVuc2lnbmVkIGxvbmcgZmxhZ3M7Cj4+ICsgICAgICAgaW50 IG5yLCBpOwo+PiArCj4+ICsgICAgICAgc3Bpbl9sb2NrX2lycXNhdmUoJmNhY2hlLT50cmVlX2xv Y2ssIGZsYWdzKTsKPj4gKyAgICAgICBuciA9IHJhZGl4X3RyZWVfZ2FuZ19sb29rdXBfdGFnKCZj YWNoZS0+cm9vdCwgKHZvaWQgKiopZW50cmllcywKPj4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAqZmlyc3RfaW5kZXgsIG1heF9uciwgdGFnKTsKPj4gKyAgICAgICBpZiAoIW5yKQo+ PiArICAgICAgICAgICAgICAgZ290byBvdXQ7Cj4+ICsKPj4gKyAgICAgICBmb3IgKGkgPSAwOyBp IDwgbnI7IGkrKykKPj4gKyAgICAgICAgICAgICAgIGYyZnNfY2FjaGVfZ2V0KGVudHJpZXNbaV0p Owo+PiArICAgICAgICpmaXJzdF9pbmRleCA9IGVudHJpZXNbbnIgLSAxXS0+aW5kZXggKyAxOwo+ PiArb3V0Ogo+PiArICAgICAgIHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmNhY2hlLT50cmVlX2xv Y2ssIGZsYWdzKTsKPj4gKyAgICAgICByZXR1cm4gbnI7Cj4+ICt9Cj4+ICsKPj4gK3ZvaWQgZjJm c19jYWNoZV9nYW5nX3JlbGVhc2Uoc3RydWN0IGYyZnNfY2FjaGVkX2Jsb2NrICoqZW50cmllcywK Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgbnJfZW50cmll cykKPj4gK3sKPj4gKyAgICAgICBpbnQgaTsKPj4gKwo+PiArICAgICAgIGZvciAoaSA9IDA7IGkg PCBucl9lbnRyaWVzOyBpKyspCj4+ICsgICAgICAgICAgICAgICBmMmZzX3B1dF9jYWNoZShlbnRy aWVzW2ldLCBmYWxzZSk7Cj4+ICt9Cj4+ICsKPj4gK3ZvaWQgZjJmc19jYWNoZV93YWl0X29uX2Fs bF93cml0ZWJhY2soc3RydWN0IGYyZnNfY2FjaGVkX2Jsb2NrX2xpc3QgKmNhY2hlKQo+PiArewo+ PiArICAgICAgIHVuc2lnbmVkIGxvbmcgaW5kZXggPSAwOwo+PiArICAgICAgIHN0cnVjdCBmMmZz X2NhY2hlZF9ibG9jayAqZW50cmllc1tGMkZTX09OU1RBQ0tfQ0FDSEVTXTsKPj4gKyAgICAgICBp bnQgbnIsIGk7Cj4+ICsKPj4gK25leHQ6Cj4+ICsgICAgICAgbnIgPSBmMmZzX2NhY2hlX2dhbmdf bG9va3VwX3RhZyhjYWNoZSwgZW50cmllcywgJmluZGV4LAo+PiArICAgICAgICAgICAgICAgICAg ICAgICBGMkZTX09OU1RBQ0tfQ0FDSEVTLCBGMkZTX0NBQ0hFX1RBR19XUklURUJBQ0spOwo+PiAr ICAgICAgIGlmICghbnIpCj4+ICsgICAgICAgICAgICAgICByZXR1cm47Cj4+ICsKPj4gKyAgICAg ICBmb3IgKGkgPSAwOyBpIDwgbnI7IGkrKykKPj4gKyAgICAgICAgICAgICAgIGYyZnNfY2FjaGVf d2FpdF93cml0ZWJhY2soZW50cmllc1tpXSk7Cj4+ICsgICAgICAgZjJmc19jYWNoZV9nYW5nX3Jl bGVhc2UoZW50cmllcywgbnIpOwo+PiArCj4+ICsgICAgICAgY29uZF9yZXNjaGVkKCk7Cj4+ICsg ICAgICAgZ290byBuZXh0Owo+PiArfQo+PiArCj4+ICtzdGF0aWMgdm9pZCBmMmZzX2RvX3RydW5j YXRlX2NhY2hlKHN0cnVjdCBmMmZzX2NhY2hlZF9ibG9jayAqZW50cnksCj4+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgZHJvcF9kaXJ0eSkKPj4g K3sKPj4gKyAgICAgICBzdHJ1Y3QgZjJmc19jYWNoZWRfYmxvY2tfbGlzdCAqY2FjaGUgPSBlbnRy eS0+Y2FjaGU7Cj4+ICsgICAgICAgdW5zaWduZWQgbG9uZyBmbGFnczsKPj4gKwo+PiArICAgICAg IGlmICghZHJvcF9kaXJ0eSAmJgo+PiArICAgICAgICAgICAgICAgKGYyZnNfY2FjaGVfdGVzdF9k aXJ0eShlbnRyeSkgfHwKPj4gKyAgICAgICAgICAgICAgIGYyZnNfY2FjaGVfdGVzdF93cml0ZWJh Y2soZW50cnkpKSkKPj4gKyAgICAgICAgICAgICAgIHJldHVybjsKPj4gKwo+PiArICAgICAgIGYy ZnNfY2FjaGVfd2FpdF93cml0ZWJhY2soZW50cnkpOwo+PiArICAgICAgIGYyZnNfZHJvcF9jYWNo ZV9kaXJ0eShlbnRyeSk7Cj4+ICsKPj4gKyAgICAgICBzcGluX2xvY2soJmNhY2hlLT5saXN0X2xv Y2spOwo+PiArICAgICAgIHNwaW5fbG9ja19pcnFzYXZlKCZjYWNoZS0+dHJlZV9sb2NrLCBmbGFn cyk7Cj4+ICsKPj4gKyAgICAgICBmMmZzX2J1Z19vbihjYWNoZS0+c2JpLCAhZW50cnktPmNhY2hl KTsKPj4gKyAgICAgICBpZiAoIXJhZGl4X3RyZWVfZGVsZXRlKCZjYWNoZS0+cm9vdCwgZW50cnkt PmluZGV4KSkKPj4gKyAgICAgICAgICAgICAgIGYyZnNfYnVnX29uKGNhY2hlLT5zYmksICFlbnRy eS0+Y2FjaGUpOwo+PiArCj4+ICsgICAgICAgZW50cnktPmNhY2hlID0gTlVMTDsKPj4gKyAgICAg ICBjYWNoZS0+bnVtX2VudHJpZXMtLTsKPj4gKwo+PiArICAgICAgIGF0b21pY19kZWMoJmVudHJ5 LT5yZWZjb3VudCk7Cj4+ICsgICAgICAgZjJmc19idWdfb24oY2FjaGUtPnNiaSwgIWYyZnNfY2Fj aGVfcmVmY291bnQoZW50cnkpKTsKPj4gKwo+PiArICAgICAgIGYyZnNfYnVnX29uKGNhY2hlLT5z YmksIGxpc3RfZW1wdHkoJmVudHJ5LT5saXN0KSk7Cj4+ICsgICAgICAgbGlzdF9kZWxfaW5pdCgm ZW50cnktPmxpc3QpOwo+PiArCj4+ICsgICAgICAgc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmY2Fj aGUtPnRyZWVfbG9jaywgZmxhZ3MpOwo+PiArICAgICAgIHNwaW5fdW5sb2NrKCZjYWNoZS0+bGlz dF9sb2NrKTsKPj4gK30KPj4gKwo+PiArc3RhdGljIHZvaWQgZjJmc190cnVuY2F0ZV9jYWNoZShz dHJ1Y3QgZjJmc19jYWNoZWRfYmxvY2sgKmVudHJ5LAo+PiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgYm9vbCBkcm9wX2RpcnR5KQo+PiArewo+PiArICAgICAgIGYyZnNf bG9ja19jYWNoZShlbnRyeSk7Cj4+ICsgICAgICAgaWYgKGVudHJ5LT5jYWNoZSkKPj4gKyAgICAg ICAgICAgICAgIGYyZnNfZG9fdHJ1bmNhdGVfY2FjaGUoZW50cnksIGRyb3BfZGlydHkpOwo+PiAr ICAgICAgIGYyZnNfdW5sb2NrX2NhY2hlKGVudHJ5KTsKPj4gK30KPj4gKwo+PiArc3RhdGljIHZv aWQgZjJmc19kcm9wX2NhY2hlKHN0cnVjdCBmMmZzX2NhY2hlZF9ibG9ja19saXN0ICpjYWNoZSwK Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgYmxvY2tfdCBibGthZGRyLCBib29sIGRyb3BfZGly dHkpCj4+ICt7Cj4+ICsgICAgICAgc3RydWN0IGYyZnNfY2FjaGVkX2Jsb2NrICplbnRyeTsKPj4g Kwo+PiArICAgICAgIGVudHJ5ID0gZjJmc19maW5kX2NhY2hlKGNhY2hlLCBibGthZGRyKTsKPj4g KyAgICAgICBpZiAoSVNfRVJSKGVudHJ5KSkKPj4gKyAgICAgICAgICAgICAgIHJldHVybjsKPj4g Kwo+PiArICAgICAgIGYyZnNfdHJ1bmNhdGVfY2FjaGUoZW50cnksIGRyb3BfZGlydHkpOwo+PiAr ICAgICAgIGYyZnNfcHV0X2NhY2hlKGVudHJ5LCBmYWxzZSk7Cj4+ICt9Cj4+ICsKPj4gK3ZvaWQg ZjJmc19kcm9wX2NhY2hlX3JhbmdlKHN0cnVjdCBmMmZzX2NhY2hlZF9ibG9ja19saXN0ICpjYWNo ZSwKPj4gKyAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcg bGVuLCBib29sIGRyb3BfZGlydHkpCj4+ICt7Cj4+ICsgICAgICAgdW5zaWduZWQgbG9uZyBpbmRl eCA9IHN0YXJ0Owo+PiArICAgICAgIHVuc2lnbmVkIGxvbmcgZW5kID0gKFVMT05HX01BWCAtIHN0 YXJ0IDwgbGVuKSA/Cj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVUxPTkdfTUFY IDogKHN0YXJ0ICsgbGVuKTsKPj4gKyAgICAgICBzdHJ1Y3QgZjJmc19jYWNoZWRfYmxvY2sgKmVu dHJpZXNbRjJGU19PTlNUQUNLX0NBQ0hFU107Cj4+ICsgICAgICAgdW5zaWduZWQgbG9uZyBmbGFn czsKPj4gKyAgICAgICBpbnQgbnIsIGk7Cj4+ICsKPj4gKyAgICAgICBpZiAobGVuID09IDEpCj4+ ICsgICAgICAgICAgICAgICByZXR1cm4gZjJmc19kcm9wX2NhY2hlKGNhY2hlLCBpbmRleCwgZHJv cF9kaXJ0eSk7Cj4+ICsKPj4gK25leHQ6Cj4+ICsgICAgICAgc3Bpbl9sb2NrX2lycXNhdmUoJmNh Y2hlLT50cmVlX2xvY2ssIGZsYWdzKTsKPj4gKyAgICAgICBuciA9IHJhZGl4X3RyZWVfZ2FuZ19s b29rdXAoJmNhY2hlLT5yb290LCAodm9pZCAqKillbnRyaWVzLCBpbmRleCwKPj4gKyAgICAgICAg ICAgICAgIG1pbigodW5zaWduZWQgbG9uZylGMkZTX09OU1RBQ0tfQ0FDSEVTLCBlbmQgLSBpbmRl eCkpOwo+PiArICAgICAgIGlmICghbnIpCj4+ICsgICAgICAgICAgICAgICBnb3RvIG91dF91bmxv Y2s7Cj4+ICsKPj4gKyAgICAgICBmb3IgKGkgPSAwOyBpIDwgbnI7IGkrKykgewo+PiArICAgICAg ICAgICAgICAgc3RydWN0IGYyZnNfY2FjaGVkX2Jsb2NrICplbnRyeSA9IGVudHJpZXNbaV07Cj4+ ICsKPj4gKyAgICAgICAgICAgICAgIGlmIChlbnRyeS0+aW5kZXggPj0gZW5kKSB7Cj4+ICsgICAg ICAgICAgICAgICAgICAgICAgIG5yID0gaTsKPj4gKyAgICAgICAgICAgICAgICAgICAgICAgYnJl YWs7Cj4+ICsgICAgICAgICAgICAgICB9Cj4+ICsgICAgICAgICAgICAgICBmMmZzX2NhY2hlX2dl dChlbnRyeSk7Cj4+ICsgICAgICAgfQo+PiArb3V0X3VubG9jazoKPj4gKyAgICAgICBzcGluX3Vu bG9ja19pcnFyZXN0b3JlKCZjYWNoZS0+dHJlZV9sb2NrLCBmbGFncyk7Cj4+ICsgICAgICAgaWYg KCFucikKPj4gKyAgICAgICAgICAgICAgIHJldHVybjsKPj4gKwo+PiArICAgICAgIGZvciAoaSA9 IDA7IGkgPCBucjsgaSsrKSB7Cj4+ICsgICAgICAgICAgICAgICBzdHJ1Y3QgZjJmc19jYWNoZWRf YmxvY2sgKmVudHJ5ID0gZW50cmllc1tpXTsKPj4gKwo+PiArICAgICAgICAgICAgICAgaW5kZXgg PSBlbnRyeS0+aW5kZXggKyAxOwo+PiArCj4+ICsgICAgICAgICAgICAgICBmMmZzX3RydW5jYXRl X2NhY2hlKGVudHJ5LCBkcm9wX2RpcnR5KTsKPj4gKyAgICAgICB9Cj4+ICsgICAgICAgZjJmc19j YWNoZV9nYW5nX3JlbGVhc2UoZW50cmllcywgbnIpOwo+PiArCj4+ICsgICAgICAgaWYgKGluZGV4 IDwgZW5kKSB7Cj4+ICsgICAgICAgICAgICAgICBjb25kX3Jlc2NoZWQoKTsKPj4gKyAgICAgICAg ICAgICAgIGdvdG8gbmV4dDsKPj4gKyAgICAgICB9Cj4+ICt9Cj4+ICsKPj4gK2ludCBmMmZzX2lu aXRfY2FjaGUoc3RydWN0IGYyZnNfc2JfaW5mbyAqc2JpLAo+PiArICAgICAgICAgICAgICAgc3Ry dWN0IGYyZnNfY2FjaGVkX2Jsb2NrX2xpc3QgKmNhY2hlLAo+PiArICAgICAgICAgICAgICAgZW51 bSBmMmZzX2NhY2hlX3R5cGUgdHlwZSkKPj4gK3sKPj4gKyAgICAgICBjYWNoZS0+c2JpID0gc2Jp Owo+PiArICAgICAgIGNhY2hlLT50eXBlID0gdHlwZTsKPj4gKyAgICAgICBJTklUX1JBRElYX1RS RUUoJmNhY2hlLT5yb290LCBHRlBfQVRPTUlDKTsKPj4gKyAgICAgICBzcGluX2xvY2tfaW5pdCgm Y2FjaGUtPnRyZWVfbG9jayk7Cj4+ICsgICAgICAgc3Bpbl9sb2NrX2luaXQoJmNhY2hlLT5saXN0 X2xvY2spOwo+PiArICAgICAgIElOSVRfTElTVF9IRUFEKCZjYWNoZS0+bHJ1X2xpc3QpOwo+PiAr ICAgICAgIGNhY2hlLT5udW1fZW50cmllcyA9IDA7Cj4+ICsKPj4gKyAgICAgICByZXR1cm4gMDsK Pj4gK30KPj4gKwo+PiArdm9pZCBmMmZzX2Rlc3Ryb3lfY2FjaGUoc3RydWN0IGYyZnNfY2FjaGVk X2Jsb2NrX2xpc3QgKmNhY2hlKQo+PiArewo+PiArICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgKmhl YWQgPSAmY2FjaGUtPmxydV9saXN0Owo+PiArICAgICAgIHN0cnVjdCBmMmZzX2NhY2hlZF9ibG9j ayAqZW50cnk7Cj4+ICsgICAgICAgdW5zaWduZWQgbG9uZyBmbGFnczsKPj4gKwo+PiArICAgICAg IGYyZnNfY2FjaGVfd2FpdF9vbl9hbGxfd3JpdGViYWNrKGNhY2hlKTsKPj4gK25leHQ6Cj4+ICsg ICAgICAgc3Bpbl9sb2NrKCZjYWNoZS0+bGlzdF9sb2NrKTsKPj4gKyAgICAgICBpZiAobGlzdF9l bXB0eShoZWFkKSkgewo+PiArICAgICAgICAgICAgICAgc3Bpbl91bmxvY2soJmNhY2hlLT5saXN0 X2xvY2spOwo+PiArICAgICAgICAgICAgICAgcmV0dXJuOwo+PiArICAgICAgIH0KPj4gKyAgICAg ICBlbnRyeSA9IGxpc3RfZmlyc3RfZW50cnkoaGVhZCwgc3RydWN0IGYyZnNfY2FjaGVkX2Jsb2Nr LCBsaXN0KTsKPj4gKwo+PiArICAgICAgIHNwaW5fbG9ja19pcnFzYXZlKCZjYWNoZS0+dHJlZV9s b2NrLCBmbGFncyk7Cj4+ICsgICAgICAgcmFkaXhfdHJlZV9kZWxldGUoJmNhY2hlLT5yb290LCBl bnRyeS0+aW5kZXgpOwo+PiArICAgICAgIGNhY2hlLT5udW1fZW50cmllcy0tOwo+PiArICAgICAg IGxpc3RfZGVsX2luaXQoJmVudHJ5LT5saXN0KTsKPj4gKyAgICAgICBzcGluX3VubG9ja19pcnFy ZXN0b3JlKCZjYWNoZS0+dHJlZV9sb2NrLCBmbGFncyk7Cj4+ICsKPj4gKyAgICAgICBzcGluX3Vu bG9jaygmY2FjaGUtPmxpc3RfbG9jayk7Cj4+ICsKPj4gKyAgICAgICAvKiB3YWl0IG9uIHJlYWQg Y2FjaGUgSU8gKi8KPj4gKyAgICAgICBmMmZzX2xvY2tfY2FjaGUoZW50cnkpOwo+PiArICAgICAg IC8qIHdhaXQgb24gd3JpdGUgY2FjaGUgSU8gKi8KPj4gKyAgICAgICBmMmZzX2NhY2hlX3dhaXRf d3JpdGViYWNrKGVudHJ5KTsKPj4gKyAgICAgICBmMmZzX2J1Z19vbihjYWNoZS0+c2JpLCBmMmZz X2NhY2hlX3Rlc3RfZGlydHkoZW50cnkpKTsKPj4gKyAgICAgICBmMmZzX2J1Z19vbihjYWNoZS0+ c2JpLCBmMmZzX2NhY2hlX3Rlc3Rfd3JpdGViYWNrKGVudHJ5KSk7Cj4+ICsgICAgICAgZjJmc19i dWdfb24oY2FjaGUtPnNiaSwgIWxpc3RfZW1wdHkoJmVudHJ5LT5saXN0KSk7Cj4+ICsgICAgICAg ZjJmc19idWdfb24oY2FjaGUtPnNiaSwgZjJmc19jYWNoZV9yZWZjb3VudChlbnRyeSkgIT0gMSk7 Cj4+ICsgICAgICAgZjJmc19wdXRfY2FjaGUoZW50cnksIHRydWUpOwo+PiArICAgICAgIGdvdG8g bmV4dDsKPj4gK30KPj4gZGlmZiAtLWdpdCBhL2ZzL2YyZnMvY2FjaGUuaCBiL2ZzL2YyZnMvY2Fj aGUuaAo+PiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+PiBpbmRleCAwMDAwMDAwMDAwMDAuLmMzMzZk NWYxMzQxOAo+PiAtLS0gL2Rldi9udWxsCj4+ICsrKyBiL2ZzL2YyZnMvY2FjaGUuaAo+PiBAQCAt MCwwICsxLDE3NSBAQAo+PiArLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAgKi8K Pj4gKy8qCj4+ICsgKiBDb3B5cmlnaHQgKGMpIDIwMjYgR29vZ2xlIExMQwo+PiArICogQXV0aG9y OiBDaGFvIFl1IDxjaGFzZXl1QGdvb2dsZS5jb20+Cj4+ICsgKi8KPj4gKyNpZm5kZWYgX0xJTlVY X0YyRlNfQ0FDSEVfSAo+PiArI2RlZmluZSBfTElOVVhfRjJGU19DQUNIRV9ICj4+ICsKPj4gKyNp bmNsdWRlIDxsaW51eC9wYWdlbWFwLmg+Cj4+ICsjaW5jbHVkZSA8bGludXgvbW0uaD4KPj4gKyNp bmNsdWRlIDxsaW51eC9saXN0Lmg+Cj4+ICsjaW5jbHVkZSA8bGludXgvcmFkaXgtdHJlZS5oPgo+ PiArI2luY2x1ZGUgPGxpbnV4L3NwaW5sb2NrLmg+Cj4+ICsjaW5jbHVkZSA8bGludXgvd2FpdC5o Pgo+PiArI2luY2x1ZGUgPGxpbnV4L3R5cGVzLmg+Cj4+ICsKPj4gK3N0cnVjdCBmMmZzX3J3c2Vt Owo+PiArc3RydWN0IGYyZnNfaW9faW5mbzsKPj4gK2VudW0gcGFnZV90eXBlOwo+PiArCj4+ICsv KiBSZXByZXNlbnRzIGEgc2luZ2xlIGNhY2hlZCBibG9jayAobWV0YSwgbm9kZSkgKi8KPj4gK3N0 cnVjdCBmMmZzX2NhY2hlZF9ibG9jayB7Cj4+ICsgICAgICAgc3RydWN0IGxpc3RfaGVhZCBsaXN0 OyAgICAgICAgICAvKiBMUlUgbGlzdCBoZWFkICovCj4+ICsgICAgICAgc3RydWN0IGYyZnNfY2Fj aGVkX2Jsb2NrX2xpc3QgKmNhY2hlOyAgIC8qIHBhcmVudCBjYWNoZSBsaXN0ICovCj4+ICsgICAg ICAgc3RydWN0IGYyZnNfY2FjaGVkX2Jsb2NrICpuZXh0X2VudHJ5OyAgIC8qIGNoYWluIGZvciBt ZXJnZWQgQklPICovCj4+ICsgICAgICAgdW5zaWduZWQgbG9uZyBpbmRleDsgICAgICAgICAgICAv KiBrZXkgaW4gcmFkaXggdHJlZSwgKG1ldGE6IHBiYSwgbm9kZTogbmlkKSAqLwo+PiArICAgICAg IHVuc2lnbmVkIGxvbmcgc3RhdGU7ICAgICAgICAgICAgLyogY2FjaGUgZW50cnkgc3RhdGUgKGUu Zy4sIERpcnR5LCBVcFRvRGF0ZSkgKi8KPj4gKyAgICAgICB2b2lkICpkYXRhOyAgICAgICAgICAg ICAgICAgICAgIC8qIGJsb2Nrc2l6ZS1hbGlnbmVkIG1lbW9yeSAoNEtCIG9yIDE2S0IpICovCj4+ ICsgICAgICAgYXRvbWljX3QgcmVmY291bnQ7ICAgICAgICAgICAgICAvKiByZWZlcmVuY2UgY291 bnQgKi8KPj4gK307Cj4+ICsKPj4gK3N0cnVjdCBmMmZzX3NiX2luZm87Cj4+ICsKPj4gK2VudW0g ZjJmc19jYWNoZV90eXBlIHsKPj4gKyAgICAgICBGMkZTX01FVEFfQ0FDSEUsCj4+ICsgICAgICAg RjJGU19OT0RFX0NBQ0hFLAo+PiArfTsKPj4gKwo+PiArLyogTWFpbiBjYWNoZSBjb250cm9sIHN0 cnVjdHVyZSAocGVyIHNiX2luZm8pICovCj4+ICtzdHJ1Y3QgZjJmc19jYWNoZWRfYmxvY2tfbGlz dCB7Cj4+ICsgICAgICAgc3RydWN0IGYyZnNfc2JfaW5mbyAqc2JpOyAgICAgICAvKiBQb2ludGVy IHRvIGYyZnNfc2JfaW5mbyAqLwo+PiArICAgICAgIHN0cnVjdCByYWRpeF90cmVlX3Jvb3Qgcm9v dDsgICAgLyogUmFkaXggdHJlZSBmb3IgY2FjaGUgbG9va3VwICovCj4+ICsgICAgICAgc3Bpbmxv Y2tfdCB0cmVlX2xvY2s7ICAgICAgICAgICAvKiBMb2NrIGZvciByYWRpeCB0cmVlICovCj4+ICsg ICAgICAgc3RydWN0IGxpc3RfaGVhZCBscnVfbGlzdDsgICAgICAvKiBTaW5nbGUgZ2xvYmFsIExS VSBsaXN0ICovCj4+ICsgICAgICAgc3BpbmxvY2tfdCBsaXN0X2xvY2s7ICAgICAgICAgICAvKiBM b2NrIGZvciBMUlUgbGlzdCAqLwo+PiArICAgICAgIGVudW0gZjJmc19jYWNoZV90eXBlIHR5cGU7 ICAgICAgLyogQ2FjaGUgdHlwZSAoTm9kZSBvciBNZXRhKSAqLwo+PiArICAgICAgIHVuc2lnbmVk IGxvbmcgbnVtX2VudHJpZXM7ICAgICAgLyogQ3VycmVudCBudW1iZXIgb2YgZW50cmllcyAqLwo+ PiArfTsKPj4gKwo+PiArI2RlZmluZSBJU19NRVRBX0NBQ0hFKGNhY2hlKSAoY2FjaGUtPnR5cGUg PT0gRjJGU19NRVRBX0NBQ0hFKQo+PiArCj4+ICsvKiBGbGFncyBmb3IgZjJmc19jYWNoZWRfYmxv Y2sgc3RhdGUgKi8KPj4gK2VudW0gZjJmc19jYWNoZWRfc3RhdGUgewo+PiArICAgICAgIEYyRlNf QkxPQ0tfTE9DS0VELCAgICAgICAgICAgICAgLyogY2FjaGUgZW50cnkgaXMgbG9ja2VkICovCj4+ ICsgICAgICAgRjJGU19CTE9DS19VUFRPREFURSwgICAgICAgICAgICAvKiBjYWNoZSBkYXRhIGlz IHZhbGlkICovCj4+ICsgICAgICAgRjJGU19CTE9DS19ESVJUWSwgICAgICAgICAgICAgICAvKiBj YWNoZSBkYXRhIGlzIGRpcnR5LCBuZWVkIHRvIHdyaXRlYmFjayB0aGUgZGF0YSAqLwo+PiArICAg ICAgIEYyRlNfQkxPQ0tfV1JJVEVCQUNLLCAgICAgICAgICAgLyogY2FjaGUgZGF0YSBpcyB3cml0 ZWJhY2sgc3RhdGUgKi8KPj4gKyAgICAgICBGMkZTX0JMT0NLX0lOTElORV9EQVRBLCAgICAgICAg IC8qIGluZGljYXRlIGlubGluZSBkYXRhICovCj4+ICt9Owo+PiArCj4+ICtlbnVtIHsKPj4gKyAg ICAgICBfX0YyRlNfQ0FDSEVfQ1JFQVRFLCAgICAgICAgICAgIC8qIGNyZWF0ZSB0aGUgY2FjaGUg aWYgdGhlcmUgaXMgbm8gY2FjaGUgZW50cnkgKi8KPj4gKyAgICAgICBfX0YyRlNfQ0FDSEVfTE9D SywgICAgICAgICAgICAgIC8qIGdldCBhbmQgbG9jayB0aGUgY2FjaGUgZW50cnkgKi8KPj4gKyAg ICAgICBfX0YyRlNfQ0FDSEVfTk9GQUlMLCAgICAgICAgICAgIC8qIGRvIG5vdCBhbGxvdyBmYWls dXJlICovCj4+ICt9Owo+PiArCj4+ICtlbnVtIGYyZnNfY2FjaGVfcmVxdWVzdF9mbGFnIHsKPj4g KyAgICAgICBGMkZTX0NBQ0hFX0NSRUFURSAgICAgICA9IDEgPDwgX19GMkZTX0NBQ0hFX0NSRUFU RSwKPj4gKyAgICAgICBGMkZTX0NBQ0hFX0xPQ0sgICAgICAgICA9IDEgPDwgX19GMkZTX0NBQ0hF X0xPQ0ssCj4+ICsgICAgICAgRjJGU19DQUNIRV9OT0ZBSUwgICAgICAgPSAxIDw8IF9fRjJGU19D QUNIRV9OT0ZBSUwsCj4+ICt9Owo+PiArCj4+ICsjZGVmaW5lIEYyRlNfQ0FDSEVfTE9DS19DUkVB VEUgKEYyRlNfQ0FDSEVfTE9DSyB8IEYyRlNfQ0FDSEVfQ1JFQVRFKQo+PiArCj4+ICsjZGVmaW5l IEYyRlNfT05TVEFDS19DQUNIRVMgICAgICAgICAgICAoMzIpCj4+ICsKPj4gKyNkZWZpbmUgRjJG U19DQUNIRV9GTEFHX1RFU1RfRlVOQyhuYW1lLCBmbGFnbmFtZSkgICAgICAgICAgICAgICAgICAg ICAgXAo+PiArc3RhdGljIGlubGluZSBib29sIGYyZnNfY2FjaGVfdGVzdF8jI25hbWUoICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBcCj4+ICsgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0 IHN0cnVjdCBmMmZzX2NhY2hlZF9ibG9jayAqZW50cnkpICAgICAgICAgIFwKPj4gK3sgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgXAo+PiArICAgICAgIHJldHVybiB0ZXN0X2JpdChGMkZTX0JMT0NLXyMjZmxhZ25hbWUs ICZlbnRyeS0+c3RhdGUpOyAgICAgICAgICBcCj4+ICt9ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKPj4gKwo+PiAr I2RlZmluZSBGMkZTX0NBQ0hFX0ZMQUdfU0VUX0ZVTkMobmFtZSwgZmxhZ25hbWUpICAgICAgICAg ICAgICAgICAgICAgICBcCj4+ICtzdGF0aWMgaW5saW5lIHZvaWQgZjJmc19jYWNoZV9zZXRfIyNu YW1lKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKPj4gKyAgICAgICAgICAgICAgICAg ICAgICAgc3RydWN0IGYyZnNfY2FjaGVkX2Jsb2NrICplbnRyeSkgICAgICAgICAgICAgICAgXAo+ PiAreyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBcCj4+ICsgICAgICAgc2V0X2JpdChGMkZTX0JMT0NLXyMjZmxhZ25h bWUsICZlbnRyeS0+c3RhdGUpOyAgICAgICAgICAgICAgICAgIFwKPj4gK30gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg XAo+PiArCj4+ICsjZGVmaW5lIEYyRlNfQ0FDSEVfRkxBR19DTEVBUl9GVU5DKG5hbWUsIGZsYWdu YW1lKSAgICAgICAgICAgICAgICAgICAgIFwKPj4gK3N0YXRpYyBpbmxpbmUgdm9pZCBmMmZzX2Nh Y2hlX2NsZWFyXyMjbmFtZSggICAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+PiArICAgICAg ICAgICAgICAgICAgICAgICBzdHJ1Y3QgZjJmc19jYWNoZWRfYmxvY2sgKmVudHJ5KSAgICAgICAg ICAgICAgICBcCj4+ICt7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKPj4gKyAgICAgICBjbGVhcl9iaXQoRjJGU19C TE9DS18jI2ZsYWduYW1lLCAmZW50cnktPnN0YXRlKTsgICAgICAgICAgICAgICAgXAo+PiArfSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBcCj4+ICsKPj4gKyNkZWZpbmUgRjJGU19DQUNIRV9GTEFHX1RFU1RfQU5EX1NF VF9GVU5DKG5hbWUsIGZsYWduYW1lKSAgICAgICAgICAgICAgXAo+PiArc3RhdGljIGlubGluZSBi b29sIGYyZnNfY2FjaGVfdGVzdF9hbmRfc2V0XyMjbmFtZSggICAgICAgICAgICAgICAgICAgICBc Cj4+ICsgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBmMmZzX2NhY2hlZF9ibG9jayAqZW50 cnkpICAgICAgICAgICAgICAgIFwKPj4gK3sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+PiArICAgICAgIHJldHVy biB0ZXN0X2FuZF9zZXRfYml0KEYyRlNfQkxPQ0tfIyNmbGFnbmFtZSwgJmVudHJ5LT5zdGF0ZSk7 ICBcCj4+ICt9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFwKPj4gKwo+PiArRjJGU19DQUNIRV9GTEFHX1RFU1RfRlVO Qyhsb2NrZWQsIExPQ0tFRCk7Cj4+ICtGMkZTX0NBQ0hFX0ZMQUdfU0VUX0ZVTkMobG9ja2VkLCBM T0NLRUQpOwo+PiArRjJGU19DQUNIRV9GTEFHX0NMRUFSX0ZVTkMobG9ja2VkLCBMT0NLRUQpOwo+ PiArCj4+ICtGMkZTX0NBQ0hFX0ZMQUdfVEVTVF9GVU5DKHVwdG9kYXRlLCBVUFRPREFURSk7Cj4+ ICtGMkZTX0NBQ0hFX0ZMQUdfU0VUX0ZVTkModXB0b2RhdGUsIFVQVE9EQVRFKTsKPj4gK0YyRlNf Q0FDSEVfRkxBR19DTEVBUl9GVU5DKHVwdG9kYXRlLCBVUFRPREFURSk7Cj4+ICsKPj4gK0YyRlNf Q0FDSEVfRkxBR19URVNUX0ZVTkMoZGlydHksIERJUlRZKTsKPj4gK0YyRlNfQ0FDSEVfRkxBR19T RVRfRlVOQyhkaXJ0eSwgRElSVFkpOwo+PiArRjJGU19DQUNIRV9GTEFHX0NMRUFSX0ZVTkMoZGly dHksIERJUlRZKTsKPj4gK0YyRlNfQ0FDSEVfRkxBR19URVNUX0FORF9TRVRfRlVOQyhkaXJ0eSwg RElSVFkpOwo+PiArCj4+ICtGMkZTX0NBQ0hFX0ZMQUdfVEVTVF9GVU5DKHdyaXRlYmFjaywgV1JJ VEVCQUNLKTsKPj4gK0YyRlNfQ0FDSEVfRkxBR19TRVRfRlVOQyh3cml0ZWJhY2ssIFdSSVRFQkFD Syk7Cj4+ICtGMkZTX0NBQ0hFX0ZMQUdfQ0xFQVJfRlVOQyh3cml0ZWJhY2ssIFdSSVRFQkFDSyk7 Cj4+ICsKPj4gK0YyRlNfQ0FDSEVfRkxBR19URVNUX0ZVTkMoaW5saW5lLCBJTkxJTkVfREFUQSk7 Cj4+ICtGMkZTX0NBQ0hFX0ZMQUdfU0VUX0ZVTkMoaW5saW5lLCBJTkxJTkVfREFUQSk7Cj4+ICtG MkZTX0NBQ0hFX0ZMQUdfQ0xFQVJfRlVOQyhpbmxpbmUsIElOTElORV9EQVRBKTsKPj4gKwo+PiAr c3RhdGljIGlubGluZSB2b2lkICpjYWNoZV9hZGRyZXNzKGNvbnN0IHN0cnVjdCBmMmZzX2NhY2hl ZF9ibG9jayAqZW50cnkpCj4+ICt7Cj4+ICsgICAgICAgcmV0dXJuIGVudHJ5LT5kYXRhOwo+PiAr fQo+PiArCj4+ICsjZGVmaW5lIENBQ0hFRF9OT0RFKGVudHJ5KSAgICAgKChzdHJ1Y3QgZjJmc19u b2RlICopKGNhY2hlX2FkZHJlc3MoZW50cnkpKSkKPj4gKwo+PiArc3RhdGljIGlubGluZSBzdHJ1 Y3QgZm9saW8gKmNhY2hlX2ZvbGlvKGNvbnN0IHN0cnVjdCBmMmZzX2NhY2hlZF9ibG9jayAqZW50 cnkpCj4+ICt7Cj4+ICsgICAgICAgcmV0dXJuIHZpcnRfdG9fZm9saW8oZW50cnktPmRhdGEpOwo+ PiArfQo+PiArCj4+ICtpbnQgZjJmc19pbml0X2NhY2hlKHN0cnVjdCBmMmZzX3NiX2luZm8gKnNi aSwKPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgZjJmc19jYWNoZWRf YmxvY2tfbGlzdCAqY2FjaGUsCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW51 bSBmMmZzX2NhY2hlX3R5cGUgdHlwZSk7Cj4+ICt2b2lkIGYyZnNfZGVzdHJveV9jYWNoZShzdHJ1 Y3QgZjJmc19jYWNoZWRfYmxvY2tfbGlzdCAqY2FjaGUpOwo+PiArdm9pZCBmMmZzX2NhY2hlX2dl dChzdHJ1Y3QgZjJmc19jYWNoZWRfYmxvY2sgKmVudHJ5KTsKPj4gK3N0cnVjdCBmMmZzX2NhY2hl ZF9ibG9jayAqZjJmc19maW5kX2NhY2hlKAo+PiArICAgICAgICAgICAgICAgICAgICAgICBzdHJ1 Y3QgZjJmc19jYWNoZWRfYmxvY2tfbGlzdCAqY2FjaGUsCj4+ICsgICAgICAgICAgICAgICAgICAg ICAgIHVuc2lnbmVkIGxvbmcgaW5kZXgpOwo+PiArI2RlZmluZSBGMkZTX0NBQ0hFX1RBR19OT05F ICAgICAgICAgICAgMAo+PiArI2RlZmluZSBGMkZTX0NBQ0hFX1RBR19ESVJUWSAgICAgICAgICAg MQo+PiArI2RlZmluZSBGMkZTX0NBQ0hFX1RBR19XUklURUJBQ0sgICAgICAgMgo+PiArCj4+ICti b29sIGYyZnNfdHJ5bG9ja19jYWNoZShzdHJ1Y3QgZjJmc19jYWNoZWRfYmxvY2sgKmVudHJ5KTsK Pj4gK3ZvaWQgZjJmc19sb2NrX2NhY2hlKHN0cnVjdCBmMmZzX2NhY2hlZF9ibG9jayAqZW50cnkp Owo+PiArdm9pZCBmMmZzX3VubG9ja19jYWNoZShzdHJ1Y3QgZjJmc19jYWNoZWRfYmxvY2sgKmVu dHJ5KTsKPj4gK2Jvb2wgZjJmc19wdXRfY2FjaGUoc3RydWN0IGYyZnNfY2FjaGVkX2Jsb2NrICpl bnRyeSwgYm9vbCB1bmxvY2spOwo+PiArYm9vbCBmMmZzX21hcmtfY2FjaGVfZGlydHkoc3RydWN0 IGYyZnNfY2FjaGVkX2Jsb2NrICplbnRyeSk7Cj4+ICtib29sIGYyZnNfY2xlYXJfY2FjaGVfZGly dHkoc3RydWN0IGYyZnNfY2FjaGVkX2Jsb2NrICplbnRyeSk7Cj4+ICt2b2lkIGYyZnNfZHJvcF9j YWNoZV9kaXJ0eShzdHJ1Y3QgZjJmc19jYWNoZWRfYmxvY2sgKmVudHJ5KTsKPj4gK3ZvaWQgZjJm c19mb3JjZV9jbGVhcl9jYWNoZV9kaXJ0eShzdHJ1Y3QgZjJmc19jYWNoZWRfYmxvY2sgKmVudHJ5 KTsKPj4gK3ZvaWQgZjJmc19zdGFydF9jYWNoZV93cml0ZWJhY2soc3RydWN0IGYyZnNfY2FjaGVk X2Jsb2NrICplbnRyeSk7Cj4+ICt2b2lkIGYyZnNfZW5kX2NhY2hlX3dyaXRlYmFjayhzdHJ1Y3Qg ZjJmc19jYWNoZWRfYmxvY2sgKmVudHJ5KTsKPj4gK3Vuc2lnbmVkIGludCBmMmZzX2NhY2hlX2dh bmdfbG9va3VwX3RhZyhzdHJ1Y3QgZjJmc19jYWNoZWRfYmxvY2tfbGlzdCAqY2FjaGUsCj4+ICsg ICAgICAgICAgICAgICBzdHJ1Y3QgZjJmc19jYWNoZWRfYmxvY2sgKipyZXN1bHRzLCBwZ29mZl90 ICpmaXJzdF9pbmRleCwKPj4gKyAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBtYXhfaXRlbXMs IGludCB0YWcpOwo+PiArdm9pZCBmMmZzX2NhY2hlX2dhbmdfcmVsZWFzZShzdHJ1Y3QgZjJmc19j YWNoZWRfYmxvY2sgKiplbnRyaWVzLAo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHVuc2lnbmVkIGludCBucl9lbnRyaWVzKTsKPj4gK2ludCBmMmZzX3dyaXRlYmFja19jYWNoZShz dHJ1Y3QgZjJmc19jYWNoZWRfYmxvY2tfbGlzdCAqY2FjaGUsIGJvb2wgc3luYyk7Cj4+ICt2b2lk IGYyZnNfY2FjaGVfd2FpdF9vbl9hbGxfd3JpdGViYWNrKHN0cnVjdCBmMmZzX2NhY2hlZF9ibG9j a19saXN0ICpjYWNoZSk7Cj4+ICt2b2lkIGYyZnNfY2FjaGVfd2FpdF93cml0ZWJhY2tfY29uZChz dHJ1Y3QgZjJmc19jYWNoZWRfYmxvY2sgKmVudHJ5LAo+PiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgZW51bSBwYWdlX3R5cGUgdHlwZSk7Cj4+ICt2b2lkIGYyZnNfY2Fj aGVfd2FpdF93cml0ZWJhY2soc3RydWN0IGYyZnNfY2FjaGVkX2Jsb2NrICplbnRyeSk7Cj4+ICtz dHJ1Y3QgZjJmc19jYWNoZWRfYmxvY2sgKmYyZnNfZ3JhYl9jYWNoZShzdHJ1Y3QgZjJmc19jYWNo ZWRfYmxvY2tfbGlzdCAqY2FjaGUsCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg dW5zaWduZWQgbG9uZyBpbmRleCwgaW50IGZsYWdzKTsKPj4gK3ZvaWQgZjJmc19kcm9wX2NhY2hl X3JhbmdlKHN0cnVjdCBmMmZzX2NhY2hlZF9ibG9ja19saXN0ICpjYWNoZSwKPj4gKyAgICAgICAg ICAgICAgIHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgbGVuLCBib29sIGRyb3Bf ZGlydHkpOwo+PiArCj4+ICsjZW5kaWYgLyogX0xJTlVYX0YyRlNfQ0FDSEVfSCAqLwo+PiBkaWZm IC0tZ2l0IGEvZnMvZjJmcy9kYXRhLmMgYi9mcy9mMmZzL2RhdGEuYwo+PiBpbmRleCA2YWUwZWIz N2QyMGYuLjc1YWI3NjhiYjRmNyAxMDA2NDQKPj4gLS0tIGEvZnMvZjJmcy9kYXRhLmMKPj4gKysr IGIvZnMvZjJmcy9kYXRhLmMKPj4gQEAgLTQxLDExICs0MSw2IEBAIHN0cnVjdCBmMmZzX2ZvbGlv X3N0YXRlIHsKPj4gICAgICAgICB1bnNpZ25lZCBpbnQgICAgICAgICAgICByZWFkX3BhZ2VzX3Bl bmRpbmc7Cj4+ICB9Owo+Pgo+PiAtc3RydWN0IGYyZnNfYmlvIHsKPj4gLSAgICAgICBzdHJ1Y3Qg d29ya19zdHJ1Y3Qgd29yazsKPj4gLSAgICAgICBzdHJ1Y3QgYmlvIGJpbzsKPj4gLX07Cj4+IC0K Pj4gICNkZWZpbmUgICAgICAgIEYyRlNfQklPX1BPT0xfU0laRSAgICAgIE5SX0NVUlNFR19UWVBF Cj4+Cj4+ICBpbnQgX19pbml0IGYyZnNfaW5pdF9iaW9zZXQodm9pZCkKPj4gQEAgLTY5LDcgKzY0 LDYgQEAgYm9vbCBmMmZzX2lzX2NwX2d1YXJhbnRlZWQoY29uc3Qgc3RydWN0IGZvbGlvICpmb2xp bykKPj4gICAgICAgICAgICAgICAgIHJldHVybiBmb2xpb190ZXN0X2YyZnNfZ2NpbmcoZnNjcnlw dF9wYWdlY2FjaGVfZm9saW8oZm9saW8pKTsKPj4KPj4gICAgICAgICBpbm9kZSA9IG1hcHBpbmct Pmhvc3Q7Cj4+IC0gICAgICAgc2JpID0gRjJGU19JX1NCKGlub2RlKTsKPj4KPj4gICAgICAgICBp ZiAoaW5vZGUtPmlfaW5vID09IEYyRlNfTUVUQV9JTk8oc2JpKSB8fAo+PiAgICAgICAgICAgICAg ICAgICAgICAgICBpbm9kZS0+aV9pbm8gPT0gRjJGU19OT0RFX0lOTyhzYmkpIHx8Cj4+IEBAIC00 MzcsNiArNDMxLDY1IEBAIHN0YXRpYyB2b2lkIGYyZnNfd3JpdGVfZW5kX2lvKHN0cnVjdCBiaW8g KmJpbykKPj4gICAgICAgICB9Cj4+ICB9Cj4+Cj4+ICtzdGF0aWMgdm9pZCBmMmZzX2NhY2hlX3Jl YWRfZW5kX2lvKHN0cnVjdCBiaW8gKmJpbykKPj4gK3sKPj4gKyAgICAgICBzdHJ1Y3QgZjJmc19j YWNoZWRfYmxvY2sgKmVudHJ5ID0gRjJGU19CSU8oYmlvKS0+ZW50cnk7Cj4+ICsgICAgICAgc3Ry dWN0IGYyZnNfc2JfaW5mbyAqc2JpID0gZW50cnktPmNhY2hlLT5zYmk7Cj4+ICsgICAgICAgZW51 bSBjb3VudF90eXBlIGlvX3R5cGUgPSBJU19NRVRBX0NBQ0hFKGVudHJ5LT5jYWNoZSkgPwo+PiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRjJGU19SRF9NRVRBIDogRjJG U19SRF9OT0RFOwo+PiArICAgICAgIHN0cnVjdCBmMmZzX2NhY2hlZF9ibG9jayAqbmV4dDsKPj4g Kwo+PiArICAgICAgIGlvc3RhdF91cGRhdGVfYW5kX3VuYmluZF9jdHgoYmlvKTsKPj4gKwo+PiAr ICAgICAgIGlmICh0aW1lX3RvX2luamVjdChzYmksIEZBVUxUX1JFQURfSU8pKQo+PiArICAgICAg ICAgICAgICAgYmlvLT5iaV9zdGF0dXMgPSBCTEtfU1RTX0lPRVJSOwo+PiArCj4+ICsgICAgICAg d2hpbGUgKGVudHJ5KSB7Cj4+ICsgICAgICAgICAgICAgICBuZXh0ID0gZW50cnktPm5leHRfZW50 cnk7Cj4+ICsgICAgICAgICAgICAgICBlbnRyeS0+bmV4dF9lbnRyeSA9IE5VTEw7Cj4+ICsKPj4g KyAgICAgICAgICAgICAgIGlmIChiaW8tPmJpX3N0YXR1cyA9PSBCTEtfU1RTX09LKQo+PiArICAg ICAgICAgICAgICAgICAgICAgICBmMmZzX2NhY2hlX3NldF91cHRvZGF0ZShlbnRyeSk7Cj4+ICsK Pj4gKyAgICAgICAgICAgICAgIGRlY19wYWdlX2NvdW50KHNiaSwgaW9fdHlwZSk7Cj4+ICsKPj4g KyAgICAgICAgICAgICAgIGYyZnNfdW5sb2NrX2NhY2hlKGVudHJ5KTsKPj4gKyAgICAgICAgICAg ICAgIGVudHJ5ID0gbmV4dDsKPj4gKyAgICAgICB9Cj4+ICsgICAgICAgYmlvX3B1dChiaW8pOwo+ PiArfQo+PiArCj4+ICtzdGF0aWMgdm9pZCBmMmZzX2NhY2hlX3dyaXRlX2VuZF9pbyhzdHJ1Y3Qg YmlvICpiaW8pCj4+ICt7Cj4+ICsgICAgICAgc3RydWN0IGYyZnNfY2FjaGVkX2Jsb2NrICplbnRy eSA9IEYyRlNfQklPKGJpbyktPmVudHJ5Owo+PiArICAgICAgIHN0cnVjdCBmMmZzX3NiX2luZm8g KnNiaSA9IGVudHJ5LT5jYWNoZS0+c2JpOwo+PiArICAgICAgIHN0cnVjdCBmMmZzX2NhY2hlZF9i bG9jayAqbmV4dDsKPj4gKwo+PiArICAgICAgIGlvc3RhdF91cGRhdGVfYW5kX3VuYmluZF9jdHgo YmlvKTsKPj4gKwo+PiArICAgICAgIGlmICh0aW1lX3RvX2luamVjdChzYmksIEZBVUxUX1dSSVRF X0lPKSkKPj4gKyAgICAgICAgICAgICAgIGJpby0+Ymlfc3RhdHVzID0gQkxLX1NUU19JT0VSUjsK Pj4gKwo+PiArICAgICAgIGlmIChiaW8tPmJpX3N0YXR1cyAhPSBCTEtfU1RTX09LKQo+PiArICAg ICAgICAgICAgICAgZjJmc19zdG9wX2NoZWNrcG9pbnQoc2JpLCB0cnVlLAo+PiArICAgICAgICAg ICAgICAgICAgICAgICBTVE9QX0NQX1JFQVNPTl9XUklURV9GQUlMKTsKPj4gKwo+PiArICAgICAg IHdoaWxlIChlbnRyeSkgewo+PiArICAgICAgICAgICAgICAgbmV4dCA9IGVudHJ5LT5uZXh0X2Vu dHJ5Owo+PiArICAgICAgICAgICAgICAgZW50cnktPm5leHRfZW50cnkgPSBOVUxMOwo+PiArCj4+ ICsgICAgICAgICAgICAgICBkZWNfcGFnZV9jb3VudChzYmksIEYyRlNfV0JfQ1BfREFUQSk7Cj4+ ICsKPj4gKyAgICAgICAgICAgICAgIGlmICghZ2V0X3BhZ2VzKHNiaSwgRjJGU19XQl9DUF9EQVRB KSAmJgo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdxX2hhc19zbGVlcGVyKCZz YmktPmNwX3dhaXQpKQo+PiArICAgICAgICAgICAgICAgICAgICAgICB3YWtlX3VwKCZzYmktPmNw X3dhaXQpOwo+PiArCj4+ICsgICAgICAgICAgICAgICBmMmZzX2VuZF9jYWNoZV93cml0ZWJhY2so ZW50cnkpOwo+PiArICAgICAgICAgICAgICAgZW50cnkgPSBuZXh0Owo+PiArICAgICAgIH0KPj4g KyAgICAgICBiaW9fcHV0KGJpbyk7Cj4+ICt9Cj4+ICsKPj4gICNpZmRlZiBDT05GSUdfQkxLX0RF Vl9aT05FRAo+PiAgc3RhdGljIHZvaWQgZjJmc196b25lX3dyaXRlX2VuZF9pbyhzdHJ1Y3QgYmlv ICpiaW8pCj4+ICB7Cj4+IEBAIC00NDQsNyArNDk3LDEwIEBAIHN0YXRpYyB2b2lkIGYyZnNfem9u ZV93cml0ZV9lbmRfaW8oc3RydWN0IGJpbyAqYmlvKQo+Pgo+PiAgICAgICAgIGJpby0+YmlfcHJp dmF0ZSA9IGlvLT5iaV9wcml2YXRlOwo+PiAgICAgICAgIGNvbXBsZXRlKCZpby0+em9uZV93YWl0 KTsKPj4gLSAgICAgICBmMmZzX3dyaXRlX2VuZF9pbyhiaW8pOwo+PiArICAgICAgIGlmIChmMmZz X2lzX2NhY2hlX2JpbyhiaW8pKQo+PiArICAgICAgICAgICAgICAgZjJmc19jYWNoZV93cml0ZV9l bmRfaW8oYmlvKTsKPj4gKyAgICAgICBlbHNlCj4+ICsgICAgICAgICAgICAgICBmMmZzX3dyaXRl X2VuZF9pbyhiaW8pOwo+PiAgfQo+PiAgI2VuZGlmCj4+Cj4+IEBAIC01MzEsMTIgKzU4NywyMSBA QCBzdGF0aWMgc3RydWN0IGJpbyAqX19iaW9fYWxsb2Moc3RydWN0IGYyZnNfaW9faW5mbyAqZmlv LCBpbnQgbnBhZ2VzKQo+PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpby0+b3Ag fCBmaW8tPm9wX2ZsYWdzIHwgZjJmc19pb19mbGFncyhmaW8pLAo+PiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIEdGUF9OT0lPLCAmZjJmc19iaW9zZXQpOwo+PiAgICAgICAgIGJpby0+ YmlfaXRlci5iaV9zZWN0b3IgPSBzZWN0b3I7Cj4+ICsgICAgICAgRjJGU19CSU8oYmlvKS0+ZW50 cnkgPSBOVUxMOwo+PiArICAgICAgIGJpby0+YmlfcHJpdmF0ZSA9IE5VTEw7Cj4+ICAgICAgICAg aWYgKGlzX3JlYWRfaW8oZmlvLT5vcCkpIHsKPj4gLSAgICAgICAgICAgICAgIGJpby0+YmlfZW5k X2lvID0gZjJmc19yZWFkX2VuZF9pbzsKPj4gLSAgICAgICAgICAgICAgIGJpby0+YmlfcHJpdmF0 ZSA9IE5VTEw7Cj4+ICsgICAgICAgICAgICAgICBpZiAoZmlvLT5pc19jYWNoZSkKPj4gKyAgICAg ICAgICAgICAgICAgICAgICAgYmlvLT5iaV9lbmRfaW8gPSBmMmZzX2NhY2hlX3JlYWRfZW5kX2lv Owo+PiArICAgICAgICAgICAgICAgZWxzZQo+PiArICAgICAgICAgICAgICAgICAgICAgICBiaW8t PmJpX2VuZF9pbyA9IGYyZnNfcmVhZF9lbmRfaW87Cj4+ICAgICAgICAgfSBlbHNlIHsKPj4gLSAg ICAgICAgICAgICAgIGJpby0+YmlfZW5kX2lvID0gZjJmc193cml0ZV9lbmRfaW87Cj4+IC0gICAg ICAgICAgICAgICBiaW8tPmJpX3ByaXZhdGUgPSBzYmk7Cj4+ICsgICAgICAgICAgICAgICBpZiAo ZmlvLT5pc19jYWNoZSkgewo+PiArICAgICAgICAgICAgICAgICAgICAgICBiaW8tPmJpX2VuZF9p byA9IGYyZnNfY2FjaGVfd3JpdGVfZW5kX2lvOwo+PiArICAgICAgICAgICAgICAgfSBlbHNlIHsK Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgYmlvLT5iaV9lbmRfaW8gPSBmMmZzX3dyaXRlX2Vu ZF9pbzsKPj4gKyAgICAgICAgICAgICAgICAgICAgICAgYmlvLT5iaV9wcml2YXRlID0gc2JpOwo+ PiArICAgICAgICAgICAgICAgfQo+PiArCj4+ICAgICAgICAgICAgICAgICBiaW8tPmJpX3dyaXRl X2hpbnQgPSBmMmZzX2lvX3R5cGVfdG9fcndfaGludChzYmksCj4+ICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpby0+dHlwZSwgZmlvLT50ZW1wKTsKPj4g ICAgICAgICAgICAgICAgIGJpby0+Ymlfd3JpdGVfc3RyZWFtID0gZjJmc19pb190eXBlX3RvX3dy aXRlX3N0cmVhbShiZGV2LCBmaW8tPnR5cGUsCj4+IEBAIC01NTksNyArNjI0LDcgQEAgc3RhdGlj IHZvaWQgZjJmc19zZXRfYmlvX2NyeXB0X2N0eChzdHJ1Y3QgYmlvICpiaW8sIGNvbnN0IHN0cnVj dCBpbm9kZSAqaW5vZGUsCj4+ICAgICAgICAgICogVGhlIGYyZnMgZ2FyYmFnZSBjb2xsZWN0b3Ig c2V0cyAtPmVuY3J5cHRlZF9wYWdlIHdoZW4gaXQgd2FudHMgdG8KPj4gICAgICAgICAgKiByZWFk L3dyaXRlIHJhdyBkYXRhIHdpdGhvdXQgZW5jcnlwdGlvbi4KPj4gICAgICAgICAgKi8KPj4gLSAg ICAgICBpZiAoIWZpbyB8fCAhZmlvLT5lbmNyeXB0ZWRfcGFnZSkKPj4gKyAgICAgICBpZiAoIWZp byB8fCAoIWZpby0+ZW5jcnlwdGVkX3BhZ2UgJiYgIWZpby0+aXNfY2FjaGUpKQo+PiAgICAgICAg ICAgICAgICAgZnNjcnlwdF9zZXRfYmlvX2NyeXB0X2N0eChiaW8sIGlub2RlLAo+PiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIChsb2ZmX3QpZmlyc3RfaWR4IDw8IGlub2RlLT5pX2Js a2JpdHMsCj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2ZwX21hc2spOwo+PiBA QCAtNzY5LDYgKzgzNCw1MyBAQCB2b2lkIGYyZnNfc3VibWl0X21lcmdlZF93cml0ZV9mb2xpbyhz dHJ1Y3QgZjJmc19zYl9pbmZvICpzYmksCj4+ICAgICAgICAgX19zdWJtaXRfbWVyZ2VkX3dyaXRl X2NvbmQoc2JpLCBOVUxMLCBmb2xpbywgMCwgdHlwZSwgdHJ1ZSk7Cj4+ICB9Cj4+Cj4+ICtzdGF0 aWMgYm9vbCBfX2hhc19tZXJnZWRfY2FjaGUoc3RydWN0IGJpbyAqYmlvLAo+PiArICAgICAgICAg ICAgICAgc3RydWN0IGYyZnNfY2FjaGVkX2Jsb2NrICp0YXJnZXQpCj4+ICt7Cj4+ICsgICAgICAg c3RydWN0IGYyZnNfY2FjaGVkX2Jsb2NrICplbnRyeTsKPj4gKwo+PiArICAgICAgIGlmICghYmlv KQo+PiArICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwo+PiArCj4+ICsgICAgICAgZW50cnkg PSBGMkZTX0JJTyhiaW8pLT5lbnRyeTsKPj4gKwo+PiArICAgICAgIHdoaWxlIChlbnRyeSkgewo+ PiArICAgICAgICAgICAgICAgaWYgKHRhcmdldCAmJiBlbnRyeSA9PSB0YXJnZXQpCj4+ICsgICAg ICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwo+PiArICAgICAgICAgICAgICAgZW50cnkg PSBlbnRyeS0+bmV4dF9lbnRyeTsKPj4gKyAgICAgICB9Cj4+ICsgICAgICAgcmV0dXJuIGZhbHNl Owo+PiArfQo+PiArCj4+ICtib29sIGYyZnNfc3VibWl0X21lcmdlZF93cml0ZV9jYWNoZShzdHJ1 Y3QgZjJmc19jYWNoZWRfYmxvY2sgKmVudHJ5LAo+PiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGVudW0gcGFnZV90eXBlIHR5cGUpCj4+ICt7Cj4+ICsgICAgICAgc3RydWN0IGYyZnNf c2JfaW5mbyAqc2JpID0gZW50cnktPmNhY2hlLT5zYmk7Cj4+ICsgICAgICAgZW51bSB0ZW1wX3R5 cGUgdGVtcDsKPj4gKyAgICAgICBib29sIHJldCA9IGZhbHNlOwo+PiArCj4+ICsgICAgICAgZm9y ICh0ZW1wID0gSE9UOyB0ZW1wIDwgTlJfVEVNUF9UWVBFOyB0ZW1wKyspIHsKPj4gKyAgICAgICAg ICAgICAgIGVudW0gcGFnZV90eXBlIGJ0eXBlID0gUEFHRV9UWVBFX09GX0JJTyh0eXBlKTsKPj4g KyAgICAgICAgICAgICAgIHN0cnVjdCBmMmZzX2Jpb19pbmZvICppbyA9IHNiaS0+d3JpdGVfaW9b YnR5cGVdICsgdGVtcDsKPj4gKyAgICAgICAgICAgICAgIHN0cnVjdCBmMmZzX2xvY2tfY29udGV4 dCBsYzsKPj4gKyAgICAgICAgICAgICAgIGJvb2wgbWVyZ2VkOwo+PiArCj4+ICsgICAgICAgICAg ICAgICBmMmZzX2Rvd25fcmVhZF90cmFjZSgmaW8tPmlvX3J3c2VtLCAmbGMpOwo+PiArICAgICAg ICAgICAgICAgbWVyZ2VkID0gX19oYXNfbWVyZ2VkX2NhY2hlKGlvLT5iaW8sIGVudHJ5KTsKPj4g KyAgICAgICAgICAgICAgIGYyZnNfdXBfcmVhZF90cmFjZSgmaW8tPmlvX3J3c2VtLCAmbGMpOwo+ PiArCj4+ICsgICAgICAgICAgICAgICBpZiAobWVyZ2VkKSB7Cj4+ICsgICAgICAgICAgICAgICAg ICAgICAgIF9fZjJmc19zdWJtaXRfbWVyZ2VkX3dyaXRlKHNiaSwgdHlwZSwgdGVtcCk7Cj4+ICsg ICAgICAgICAgICAgICAgICAgICAgIHJldCA9IHRydWU7Cj4+ICsgICAgICAgICAgICAgICB9Cj4+ ICsKPj4gKyAgICAgICAgICAgICAgIC8qIFRPRE86IHVzZSBIT1QgdGVtcCBvbmx5IGZvciBtZXRh IHBhZ2VzIG5vdy4gKi8KPj4gKyAgICAgICAgICAgICAgIGlmICh0eXBlID49IE1FVEEpCj4+ICsg ICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwo+PiArICAgICAgIH0KPj4gKyAgICAgICByZXR1 cm4gcmV0Owo+PiArfQo+PiArCj4+ICB2b2lkIGYyZnNfZmx1c2hfbWVyZ2VkX3dyaXRlcyhzdHJ1 Y3QgZjJmc19zYl9pbmZvICpzYmkpCj4+ICB7Cj4+ICAgICAgICAgZjJmc19zdWJtaXRfbWVyZ2Vk X3dyaXRlKHNiaSwgREFUQSk7Cj4+IEBAIC04MzIsNiArOTQ0LDggQEAgc3RhdGljIGJvb2wgaW9f dHlwZV9pc19tZXJnZWFibGUoc3RydWN0IGYyZnNfYmlvX2luZm8gKmlvLAo+Pgo+PiAgICAgICAg IGlmIChpby0+ZmlvLm9wICE9IGZpby0+b3ApCj4+ICAgICAgICAgICAgICAgICByZXR1cm4gZmFs c2U7Cj4+ICsgICAgICAgaWYgKGlvLT5maW8uaXNfY2FjaGUgIT0gZmlvLT5pc19jYWNoZSkKPj4g KyAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKPj4gICAgICAgICByZXR1cm4gKGlvLT5maW8u b3BfZmxhZ3MgJiBtYXNrKSA9PSAoZmlvLT5vcF9mbGFncyAmIG1hc2spOwo+PiAgfQo+Pgo+PiBA QCAtMTA2Myw2ICsxMTc3LDMzIEBAIHN0YXRpYyBib29sIGlzX2VuZF96b25lX2Jsa2FkZHIoc3Ry dWN0IGYyZnNfc2JfaW5mbyAqc2JpLCBibG9ja190IGJsa2FkZHIpCj4+ICAgICAgICAgICAgICAg ICBmMmZzX2Jsa3pfaXNfc2VxKHNiaSwgZGV2aSwgYmxrYWRkcikgJiYKPj4gICAgICAgICAgICAg ICAgIChibGthZGRyICUgc2JpLT5ibG9ja3NfcGVyX2Jsa3ogPT0gc2JpLT5ibG9ja3NfcGVyX2Js a3ogLSAxKTsKPj4gIH0KPj4gKwo+PiArc3RhdGljIHZvaWQgZjJmc193YWl0X3pvbmVfaW9fY29t cGxldGlvbihzdHJ1Y3QgZjJmc19zYl9pbmZvICpzYmksCj4+ICsgICAgICAgICAgICAgICAgICAg ICAgIHN0cnVjdCBmMmZzX2Jpb19pbmZvICppbywgZW51bSBwYWdlX3R5cGUgYnR5cGUpCj4+ICt7 Cj4+ICsgICAgICAgaWYgKGYyZnNfc2JfaGFzX2Jsa3pvbmVkKHNiaSkgJiYgYnR5cGUgPCBNRVRB ICYmIGlvLT56b25lX3BlbmRpbmdfYmlvKSB7Cj4+ICsgICAgICAgICAgICAgICB3YWl0X2Zvcl9j b21wbGV0aW9uX2lvKCZpby0+em9uZV93YWl0KTsKPj4gKyAgICAgICAgICAgICAgIGJpb19wdXQo aW8tPnpvbmVfcGVuZGluZ19iaW8pOwo+PiArICAgICAgICAgICAgICAgaW8tPnpvbmVfcGVuZGlu Z19iaW8gPSBOVUxMOwo+PiArICAgICAgICAgICAgICAgaW8tPmJpX3ByaXZhdGUgPSBOVUxMOwo+ PiArICAgICAgIH0KPj4gK30KPj4gKwo+PiArc3RhdGljIHZvaWQgZjJmc19zdWJtaXRfem9uZV9p byhzdHJ1Y3QgZjJmc19zYl9pbmZvICpzYmksCj4+ICsgICAgICAgICAgICAgICAgICAgICAgIHN0 cnVjdCBmMmZzX2lvX2luZm8gKmZpbywgc3RydWN0IGYyZnNfYmlvX2luZm8gKmlvLAo+PiArICAg ICAgICAgICAgICAgICAgICAgICBlbnVtIHBhZ2VfdHlwZSBidHlwZSkKPj4gK3sKPj4gKyAgICAg ICBpZiAoZjJmc19zYl9oYXNfYmxrem9uZWQoc2JpKSAmJiBidHlwZSA8IE1FVEEgJiYKPj4gKyAg ICAgICAgICAgICAgICAgICAgICAgaXNfZW5kX3pvbmVfYmxrYWRkcihzYmksIGZpby0+bmV3X2Js a2FkZHIpKSB7Cj4+ICsgICAgICAgICAgICAgICBiaW9fZ2V0KGlvLT5iaW8pOwo+PiArICAgICAg ICAgICAgICAgcmVpbml0X2NvbXBsZXRpb24oJmlvLT56b25lX3dhaXQpOwo+PiArICAgICAgICAg ICAgICAgaW8tPmJpX3ByaXZhdGUgPSBpby0+YmlvLT5iaV9wcml2YXRlOwo+PiArICAgICAgICAg ICAgICAgaW8tPmJpby0+YmlfcHJpdmF0ZSA9IGlvOwo+PiArICAgICAgICAgICAgICAgaW8tPmJp by0+YmlfZW5kX2lvID0gZjJmc196b25lX3dyaXRlX2VuZF9pbzsKPj4gKyAgICAgICAgICAgICAg IGlvLT56b25lX3BlbmRpbmdfYmlvID0gaW8tPmJpbzsKPj4gKyAgICAgICAgICAgICAgIF9fc3Vi bWl0X21lcmdlZF9iaW8oaW8pOwo+PiArICAgICAgIH0KPj4gK30KPj4gICNlbmRpZgo+Pgo+PiAg dm9pZCBmMmZzX3N1Ym1pdF9wYWdlX3dyaXRlKHN0cnVjdCBmMmZzX2lvX2luZm8gKmZpbykKPj4g QEAgLTEwNzksMTQgKzEyMjAsOCBAQCB2b2lkIGYyZnNfc3VibWl0X3BhZ2Vfd3JpdGUoc3RydWN0 IGYyZnNfaW9faW5mbyAqZmlvKQo+PiAgICAgICAgIGYyZnNfZG93bl93cml0ZV90cmFjZSgmaW8t PmlvX3J3c2VtLCAmbGMpOwo+PiAgbmV4dDoKPj4gICNpZmRlZiBDT05GSUdfQkxLX0RFVl9aT05F RAo+PiAtICAgICAgIGlmIChmMmZzX3NiX2hhc19ibGt6b25lZChzYmkpICYmIGJ0eXBlIDwgTUVU QSAmJiBpby0+em9uZV9wZW5kaW5nX2Jpbykgewo+PiAtICAgICAgICAgICAgICAgd2FpdF9mb3Jf Y29tcGxldGlvbl9pbygmaW8tPnpvbmVfd2FpdCk7Cj4+IC0gICAgICAgICAgICAgICBiaW9fcHV0 KGlvLT56b25lX3BlbmRpbmdfYmlvKTsKPj4gLSAgICAgICAgICAgICAgIGlvLT56b25lX3BlbmRp bmdfYmlvID0gTlVMTDsKPj4gLSAgICAgICAgICAgICAgIGlvLT5iaV9wcml2YXRlID0gTlVMTDsK Pj4gLSAgICAgICB9Cj4+ICsgICAgICAgZjJmc193YWl0X3pvbmVfaW9fY29tcGxldGlvbihzYmks IGlvLCBidHlwZSk7Cj4+ICAjZW5kaWYKPj4gLQo+PiAgICAgICAgIGlmIChmaW8tPmluX2xpc3Qp IHsKPj4gICAgICAgICAgICAgICAgIHNwaW5fbG9jaygmaW8tPmlvX2xvY2spOwo+PiAgICAgICAg ICAgICAgICAgaWYgKGxpc3RfZW1wdHkoJmlvLT5pb19saXN0KSkgewo+PiBAQCAtMTE0MSwxNiAr MTI3NiwxMDkgQEAgdm9pZCBmMmZzX3N1Ym1pdF9wYWdlX3dyaXRlKHN0cnVjdCBmMmZzX2lvX2lu Zm8gKmZpbykKPj4KPj4gICAgICAgICB0cmFjZV9mMmZzX3N1Ym1pdF9mb2xpb193cml0ZShmaW8t PmZvbGlvLCBmaW8pOwo+PiAgI2lmZGVmIENPTkZJR19CTEtfREVWX1pPTkVECj4+IC0gICAgICAg aWYgKGYyZnNfc2JfaGFzX2Jsa3pvbmVkKHNiaSkgJiYgYnR5cGUgPCBNRVRBICYmCj4+IC0gICAg ICAgICAgICAgICAgICAgICAgIGlzX2VuZF96b25lX2Jsa2FkZHIoc2JpLCBmaW8tPm5ld19ibGth ZGRyKSkgewo+PiAtICAgICAgICAgICAgICAgYmlvX2dldChpby0+YmlvKTsKPj4gLSAgICAgICAg ICAgICAgIHJlaW5pdF9jb21wbGV0aW9uKCZpby0+em9uZV93YWl0KTsKPj4gLSAgICAgICAgICAg ICAgIGlvLT5iaV9wcml2YXRlID0gaW8tPmJpby0+YmlfcHJpdmF0ZTsKPj4gLSAgICAgICAgICAg ICAgIGlvLT5iaW8tPmJpX3ByaXZhdGUgPSBpbzsKPj4gLSAgICAgICAgICAgICAgIGlvLT5iaW8t PmJpX2VuZF9pbyA9IGYyZnNfem9uZV93cml0ZV9lbmRfaW87Cj4+IC0gICAgICAgICAgICAgICBp by0+em9uZV9wZW5kaW5nX2JpbyA9IGlvLT5iaW87Cj4+ICsgICAgICAgZjJmc19zdWJtaXRfem9u ZV9pbyhzYmksIGZpbywgaW8sIGJ0eXBlKTsKPj4gKyNlbmRpZgo+PiArCj4+ICsgICAgICAgaWYg KGZpby0+aW5fbGlzdCkKPj4gKyAgICAgICAgICAgICAgIGdvdG8gbmV4dDsKPj4gK291dDoKPj4g KyAgICAgICBpZiAoaXNfc2JpX2ZsYWdfc2V0KHNiaSwgU0JJX0lTX1NIVVRET1dOKSB8fAo+PiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICFmMmZzX2lzX2NoZWNrcG9pbnRfcmVhZHko c2JpKSkKPj4gICAgICAgICAgICAgICAgIF9fc3VibWl0X21lcmdlZF9iaW8oaW8pOwo+PiArICAg ICAgIGYyZnNfdXBfd3JpdGVfdHJhY2UoJmlvLT5pb19yd3NlbSwgJmxjKTsKPj4gK30KPj4gKwo+ PiArc3RhdGljIHZvaWQgZjJmc19iaW9fYWRkX2NhY2hlKHN0cnVjdCBmMmZzX2lvX2luZm8gKmZp bywgc3RydWN0IGJpbyAqYmlvKQo+PiArewo+PiArICAgICAgIHN0cnVjdCBmMmZzX2JpbyAqZmJp byA9IEYyRlNfQklPKGJpbyk7Cj4+ICsgICAgICAgc3RydWN0IGYyZnNfY2FjaGVkX2Jsb2NrICpo ZWFkID0gZmJpby0+ZW50cnk7Cj4+ICsgICAgICAgc3RydWN0IGYyZnNfY2FjaGVkX2Jsb2NrICpu ZXcgPSBmaW8tPmNhY2hlX2VudHJ5Owo+PiArCj4+ICsgICAgICAgbmV3LT5uZXh0X2VudHJ5ID0g aGVhZDsKPj4gKyAgICAgICBmYmlvLT5lbnRyeSA9IG5ldzsKPj4gK30KPj4gKwo+PiAraW50IGYy ZnNfc3VibWl0X2NhY2hlX3JlYWQoc3RydWN0IGYyZnNfaW9faW5mbyAqZmlvKQo+PiArewo+PiAr ICAgICAgIHN0cnVjdCBmMmZzX3NiX2luZm8gKnNiaSA9IGZpby0+c2JpOwo+PiArICAgICAgIHN0 cnVjdCBmMmZzX2NhY2hlZF9ibG9jayAqZW50cnkgPSBmaW8tPmNhY2hlX2VudHJ5Owo+PiArICAg ICAgIHN0cnVjdCBiaW8gKmJpbzsKPj4gKyAgICAgICBlbnVtIGNvdW50X3R5cGUgaW9fdHlwZSA9 IElTX01FVEFfQ0FDSEUoZW50cnktPmNhY2hlKSA/Cj4+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgRjJGU19SRF9NRVRBIDogRjJGU19SRF9OT0RFOwo+PiArCj4+ICsgICAgICAgaWYg KCFmMmZzX2lzX3ZhbGlkX2Jsa2FkZHIoZmlvLT5zYmksIGZpby0+bmV3X2Jsa2FkZHIsCj4+ICsg ICAgICAgICAgICAgICAgICAgICAgIGZpby0+aXNfcG9yID8gTUVUQV9QT1IgOiAoX19pc19tZXRh X2lvKGZpbykgPwo+PiArICAgICAgICAgICAgICAgICAgICAgICBNRVRBX0dFTkVSSUMgOiBEQVRB X0dFTkVSSUNfRU5IQU5DRSkpKQo+PiArICAgICAgICAgICAgICAgcmV0dXJuIC1FRlNDT1JSVVBU RUQ7Cj4+ICsKPj4gKyAgICAgICBiaW8gPSBfX2Jpb19hbGxvYyhmaW8sIDEpOwo+PiArCj4+ICsg ICAgICAgYmlvX2FkZF92aXJ0X25vZmFpbChiaW8sIGNhY2hlX2FkZHJlc3MoZW50cnkpLCBzYmkt PmJsb2Nrc2l6ZSk7Cj4+ICsgICAgICAgZjJmc19iaW9fYWRkX2NhY2hlKGZpbywgYmlvKTsKPj4g KyAgICAgICBpbmNfcGFnZV9jb3VudChzYmksIGlvX3R5cGUpOwo+PiArCj4+ICsgICAgICAgZjJm c19zdWJtaXRfcmVhZF9iaW8oc2JpLCBiaW8sIGZpby0+dHlwZSk7Cj4+ICsgICAgICAgcmV0dXJu IDA7Cj4+ICt9Cj4+ICsKPj4gK3ZvaWQgZjJmc19zdWJtaXRfY2FjaGVfd3JpdGUoc3RydWN0IGYy ZnNfaW9faW5mbyAqZmlvKQo+PiArewo+PiArICAgICAgIHN0cnVjdCBmMmZzX3NiX2luZm8gKnNi aSA9IGZpby0+c2JpOwo+PiArICAgICAgIGVudW0gcGFnZV90eXBlIGJ0eXBlID0gUEFHRV9UWVBF X09GX0JJTyhmaW8tPnR5cGUpOwo+PiArICAgICAgIHN0cnVjdCBmMmZzX2Jpb19pbmZvICppbyA9 IHNiaS0+d3JpdGVfaW9bYnR5cGVdICsgZmlvLT50ZW1wOwo+PiArICAgICAgIHN0cnVjdCBmMmZz X2xvY2tfY29udGV4dCBsYzsKPj4gKyAgICAgICBzdHJ1Y3QgZm9saW8gKmZvbGlvOwo+PiArCj4+ ICsgICAgICAgZjJmc19idWdfb24oc2JpLCBpc19yZWFkX2lvKGZpby0+b3ApKTsKPj4gKwo+PiAr ICAgICAgIGYyZnNfZG93bl93cml0ZV90cmFjZSgmaW8tPmlvX3J3c2VtLCAmbGMpOwo+PiArbmV4 dDoKPj4gKyNpZmRlZiBDT05GSUdfQkxLX0RFVl9aT05FRAo+PiArICAgICAgIGYyZnNfd2FpdF96 b25lX2lvX2NvbXBsZXRpb24oc2JpLCBpbywgYnR5cGUpOwo+PiArI2VuZGlmCj4+ICsgICAgICAg aWYgKGZpby0+aW5fbGlzdCkgewo+PiArICAgICAgICAgICAgICAgc3Bpbl9sb2NrKCZpby0+aW9f bG9jayk7Cj4+ICsgICAgICAgICAgICAgICBpZiAobGlzdF9lbXB0eSgmaW8tPmlvX2xpc3QpKSB7 Cj4+ICsgICAgICAgICAgICAgICAgICAgICAgIHNwaW5fdW5sb2NrKCZpby0+aW9fbG9jayk7Cj4+ ICsgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gb3V0Owo+PiArICAgICAgICAgICAgICAgfQo+ PiArICAgICAgICAgICAgICAgZmlvID0gbGlzdF9maXJzdF9lbnRyeSgmaW8tPmlvX2xpc3QsCj4+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBm MmZzX2lvX2luZm8sIGxpc3QpOwo+PiArICAgICAgICAgICAgICAgbGlzdF9kZWwoJmZpby0+bGlz dCk7Cj4+ICsgICAgICAgICAgICAgICBzcGluX3VubG9jaygmaW8tPmlvX2xvY2spOwo+PiAgICAg ICAgIH0KPj4gKwo+PiArICAgICAgIHZlcmlmeV9maW9fYmxrYWRkcihmaW8pOwo+PiArCj4+ICsg ICAgICAgZmlvLT5zdWJtaXR0ZWQgPSAxOwo+PiArICAgICAgIGluY19wYWdlX2NvdW50KHNiaSwg RjJGU19XQl9DUF9EQVRBKTsKPj4gKwo+PiArICAgICAgIGlmIChpby0+YmlvICYmCj4+ICsgICAg ICAgICAgICghaW9faXNfbWVyZ2VhYmxlKHNiaSwgaW8tPmJpbywgaW8sIGZpbywgaW8tPmxhc3Rf YmxvY2tfaW5fYmlvLAo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaW8tPm5ld19i bGthZGRyKSkpCj4+ICsgICAgICAgICAgICAgICBfX3N1Ym1pdF9tZXJnZWRfYmlvKGlvKTsKPj4g K2FsbG9jX25ldzoKPj4gKyAgICAgICBpZiAoaW8tPmJpbyA9PSBOVUxMKSB7Cj4+ICsgICAgICAg ICAgICAgICBpby0+YmlvID0gX19iaW9fYWxsb2MoZmlvLCBCSU9fTUFYX1ZFQ1MpOwo+PiArICAg ICAgICAgICAgICAgaW8tPmZpbyA9ICpmaW87Cj4+ICsgICAgICAgfQo+PiArCj4+ICsgICAgICAg Zm9saW8gPSBjYWNoZV9mb2xpbyhmaW8tPmNhY2hlX2VudHJ5KTsKPj4gKwo+PiArICAgICAgIGlm ICghYmlvX2FkZF9mb2xpbyhpby0+YmlvLCBmb2xpbywgc2JpLT5ibG9ja3NpemUsCj4gCj4gQXZv aWQgdmlydF90b19mb2xpbygpIG9uIGttYWxsb2MgYnVmZmVycyBpbiBmMmZzX3N1Ym1pdF9jYWNo ZV93cml0ZSgpLgo+IFNpbmNlIGVudHJ5LT5kYXRhIGlzIGFsbG9jYXRlZCB2aWEga21hbGxvYygp LCBpdCBpcyBhIHNsYWIgb2JqZWN0Cj4gcmF0aGVyIHRoYW4gYSBnZW51aW5lIHBhZ2VjYWNoZS9z dGFuZGFsb25lIGZvbGlvLiBQYXNzaW5nIGl0IHRocm91Z2gKPiBjYWNoZV9mb2xpbygpICh2aXJ0 X3RvX2ZvbGlvKCkpIGFuZCBiaW9fYWRkX2ZvbGlvKCkgaW50cm9kdWNlcyBhbgo+IHVubmVjZXNz YXJ5IHJvdW5kLXRyaXA/Cj4gCj4+ICsgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldF9pbl9m b2xpbyhmb2xpbywgY2FjaGVfYWRkcmVzcyhmaW8tPmNhY2hlX2VudHJ5KSkpKSB7Cj4+ICsgICAg ICAgICAgICAgICBmMmZzX2J1Z19vbihzYmksICFGMkZTX0JJTyhpby0+YmlvKS0+ZW50cnkpOwo+ PiArCj4+ICsgICAgICAgICAgICAgICBfX3N1Ym1pdF9tZXJnZWRfYmlvKGlvKTsKPj4gKyAgICAg ICAgICAgICAgIGdvdG8gYWxsb2NfbmV3Owo+PiArICAgICAgIH0KPj4gKwo+PiArICAgICAgIGYy ZnNfYmlvX2FkZF9jYWNoZShmaW8sIGlvLT5iaW8pOwo+PiArCj4+ICsgICAgICAgaW8tPmxhc3Rf YmxvY2tfaW5fYmlvID0gZmlvLT5uZXdfYmxrYWRkcjsKPj4gKwo+PiArI2lmZGVmIENPTkZJR19C TEtfREVWX1pPTkVECj4+ICsgICAgICAgZjJmc19zdWJtaXRfem9uZV9pbyhzYmksIGZpbywgaW8s IGJ0eXBlKTsKPj4gICNlbmRpZgo+PiAgICAgICAgIGlmIChmaW8tPmluX2xpc3QpCj4+ICAgICAg ICAgICAgICAgICBnb3RvIG5leHQ7Cj4+IGRpZmYgLS1naXQgYS9mcy9mMmZzL2YyZnMuaCBiL2Zz L2YyZnMvZjJmcy5oCj4+IGluZGV4IDE2NzIwZjFmMGE5Yy4uODRlZTQ2MDExMjZkIDEwMDY0NAo+ PiAtLS0gYS9mcy9mMmZzL2YyZnMuaAo+PiArKysgYi9mcy9mMmZzL2YyZnMuaAo+PiBAQCAtMjIy LDYgKzIyMiw4IEBAIHN0cnVjdCBmMmZzX3J3c2VtIHsKPj4gICNlbmRpZgo+PiAgfTsKPj4KPj4g KyNpbmNsdWRlICJjYWNoZS5oIgo+PiArCj4+ICBzdHJ1Y3QgZjJmc19tb3VudF9pbmZvIHsKPj4g ICAgICAgICB1bnNpZ25lZCBsb25nIGxvbmcgb3B0Owo+PiAgICAgICAgIGJsb2NrX3Qgcm9vdF9y ZXNlcnZlZF9ibG9ja3M7ICAgLyogcm9vdCByZXNlcnZlZCBibG9ja3MgKi8KPj4gQEAgLTEzNzIs OCArMTM3NCwxMCBAQCBzdHJ1Y3QgZjJmc19pb19pbmZvIHsKPj4gICAgICAgICB1bnNpZ25lZCBp bnQgaXNfcG9yOjE7ICAgICAgICAgIC8qIGluZGljYXRlIElPIGlzIGZyb20gcmVjb3Zlcnkgb3Ig bm90ICovCj4+ICAgICAgICAgdW5zaWduZWQgaW50IGVuY3J5cHRlZDoxOyAgICAgICAvKiBpbmRp Y2F0ZSBmaWxlIGlzIGVuY3J5cHRlZCAqLwo+PiAgICAgICAgIHVuc2lnbmVkIGludCBtZXRhX2dj OjE7ICAgICAgICAgLyogcmVxdWlyZSBtZXRhIGlub2RlIEdDICovCj4+ICsgICAgICAgdW5zaWdu ZWQgaW50IGlzX2NhY2hlOjE7ICAgICAgICAvKiBpbmRpY2F0ZSBJTyBpcyBmcm9tIGludGVybmFs IGNhY2hlICovCj4+ICAgICAgICAgZW51bSBpb3N0YXRfdHlwZSBpb190eXBlOyAgICAgICAvKiBp byB0eXBlICovCj4+ICAgICAgICAgc3RydWN0IHdyaXRlYmFja19jb250cm9sICppb193YmM7IC8q IHdyaXRlYmFjayBjb250cm9sICovCj4+ICsgICAgICAgc3RydWN0IGYyZnNfY2FjaGVkX2Jsb2Nr ICpjYWNoZV9lbnRyeTsKPj4gICAgICAgICBzdHJ1Y3QgYmlvICoqYmlvOyAgICAgICAgICAgICAg IC8qIGJpbyBmb3IgaXB1ICovCj4+ICAgICAgICAgc2VjdG9yX3QgKmxhc3RfYmxvY2s7ICAgICAg ICAgICAvKiBsYXN0IGJsb2NrIG51bWJlciBpbiBiaW8gKi8KPj4gIH07Cj4+IEBAIC0xNzgzLDYg KzE3ODcsMTIgQEAgc3RydWN0IGYyZnNfZ2Nfa3RocmVhZCB7Cj4+ICAgICAgICAgdW5zaWduZWQg aW50IGJvb3N0X2djX2dyZWVkeTsKPj4gIH07Cj4+Cj4+ICtzdHJ1Y3QgZjJmc19iaW8gewo+PiAr ICAgICAgIHN0cnVjdCB3b3JrX3N0cnVjdCB3b3JrOwo+PiArICAgICAgIHN0cnVjdCBmMmZzX2Nh Y2hlZF9ibG9jayAqZW50cnk7Cj4+ICsgICAgICAgc3RydWN0IGJpbyBiaW87Cj4+ICt9Owo+PiAr Cj4+ICBzdHJ1Y3QgZjJmc19zYl9pbmZvIHsKPj4gICAgICAgICBzdHJ1Y3Qgc3VwZXJfYmxvY2sg KnNiOyAgICAgICAgICAgICAgICAgLyogcG9pbnRlciB0byBWRlMgc3VwZXIgYmxvY2sgKi8KPj4g ICAgICAgICBzdHJ1Y3QgcHJvY19kaXJfZW50cnkgKnNfcHJvYzsgICAgICAgICAgLyogcHJvYyBl bnRyeSAqLwo+PiBAQCAtMjMyNiw2ICsyMzM2LDE2IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBpc19u b2RlX2ZvbGlvKHN0cnVjdCBmb2xpbyAqZm9saW8pCj4+ICAgICAgICAgcmV0dXJuIGZvbGlvLT5t YXBwaW5nID09IE5PREVfTUFQUElORyhGMkZTX0ZfU0IoZm9saW8pKTsKPj4gIH0KPj4KPj4gK3N0 YXRpYyBpbmxpbmUgc3RydWN0IGYyZnNfYmlvICpGMkZTX0JJTyhzdHJ1Y3QgYmlvICpiaW8pCj4+ ICt7Cj4+ICsgICAgICAgcmV0dXJuIGNvbnRhaW5lcl9vZihiaW8sIHN0cnVjdCBmMmZzX2Jpbywg YmlvKTsKPj4gK30KPj4gKwo+PiArc3RhdGljIGlubGluZSBib29sIGYyZnNfaXNfY2FjaGVfYmlv KHN0cnVjdCBiaW8gKmJpbykKPj4gK3sKPj4gKyAgICAgICByZXR1cm4gRjJGU19CSU8oYmlvKS0+ ZW50cnkgIT0gTlVMTDsKPj4gK30KPj4gKwo+PiAgc3RhdGljIGlubGluZSBib29sIGlzX3NiaV9m bGFnX3NldChzdHJ1Y3QgZjJmc19zYl9pbmZvICpzYmksIHVuc2lnbmVkIGludCB0eXBlKQo+PiAg ewo+PiAgICAgICAgIHJldHVybiB0ZXN0X2JpdCh0eXBlLCAmc2JpLT5zX2ZsYWcpOwo+PiBAQCAt NDI0MSw2ICs0MjYxLDggQEAgdm9pZCBmMmZzX3N1Ym1pdF9tZXJnZWRfd3JpdGVfY29uZChzdHJ1 Y3QgZjJmc19zYl9pbmZvICpzYmksCj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg bmlkX3QgaW5vLCBlbnVtIHBhZ2VfdHlwZSB0eXBlKTsKPj4gIHZvaWQgZjJmc19zdWJtaXRfbWVy Z2VkX3dyaXRlX2ZvbGlvKHN0cnVjdCBmMmZzX3NiX2luZm8gKnNiaSwKPj4gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgZm9saW8gKmZvbGlvLCBlbnVtIHBhZ2VfdHlwZSB0 eXBlKTsKPj4gK2Jvb2wgZjJmc19zdWJtaXRfbWVyZ2VkX3dyaXRlX2NhY2hlKHN0cnVjdCBmMmZz X2NhY2hlZF9ibG9jayAqZW50cnksCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ZW51bSBwYWdlX3R5cGUgdHlwZSk7Cj4+ICB2b2lkIGYyZnNfc3VibWl0X21lcmdlZF9pcHVfd3Jp dGUoc3RydWN0IGYyZnNfc2JfaW5mbyAqc2JpLAo+PiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgc3RydWN0IGJpbyAqKmJpbywgc3RydWN0IGZvbGlvICpmb2xpbyk7Cj4+ ICB2b2lkIGYyZnNfc3VibWl0X2FsbF9tZXJnZWRfaXB1X3dyaXRlcyhzdHJ1Y3QgZjJmc19zYl9p bmZvICpzYmkpOwo+PiBAQCAtNDI0OCw2ICs0MjcwLDggQEAgdm9pZCBmMmZzX2ZsdXNoX21lcmdl ZF93cml0ZXMoc3RydWN0IGYyZnNfc2JfaW5mbyAqc2JpKTsKPj4gIGludCBmMmZzX3N1Ym1pdF9w YWdlX2JpbyhzdHJ1Y3QgZjJmc19pb19pbmZvICpmaW8pOwo+PiAgaW50IGYyZnNfbWVyZ2VfcGFn ZV9iaW8oc3RydWN0IGYyZnNfaW9faW5mbyAqZmlvKTsKPj4gIHZvaWQgZjJmc19zdWJtaXRfcGFn ZV93cml0ZShzdHJ1Y3QgZjJmc19pb19pbmZvICpmaW8pOwo+PiAraW50IGYyZnNfc3VibWl0X2Nh Y2hlX3JlYWQoc3RydWN0IGYyZnNfaW9faW5mbyAqZmlvKTsKPj4gK3ZvaWQgZjJmc19zdWJtaXRf Y2FjaGVfd3JpdGUoc3RydWN0IGYyZnNfaW9faW5mbyAqZmlvKTsKPj4gIHN0cnVjdCBibG9ja19k ZXZpY2UgKmYyZnNfdGFyZ2V0X2RldmljZShzdHJ1Y3QgZjJmc19zYl9pbmZvICpzYmksCj4+ICAg ICAgICAgICAgICAgICBibG9ja190IGJsa19hZGRyLCBzZWN0b3JfdCAqc2VjdG9yKTsKPj4gIGlu dCBmMmZzX3RhcmdldF9kZXZpY2VfaW5kZXgoc3RydWN0IGYyZnNfc2JfaW5mbyAqc2JpLCBibG9j a190IGJsa2FkZHIpOwo+PiBkaWZmIC0tZ2l0IGEvZnMvZjJmcy9pb3N0YXQuaCBiL2ZzL2YyZnMv aW9zdGF0LmgKPj4gaW5kZXggMjAyNTIyNWI1YmVkLi42MWM2YmM4ZTMxMTkgMTAwNjQ0Cj4+IC0t LSBhL2ZzL2YyZnMvaW9zdGF0LmgKPj4gKysrIGIvZnMvZjJmcy9pb3N0YXQuaAo+PiBAQCAtNjAs NiArNjAsMTMgQEAgc3RhdGljIGlubGluZSBzdHJ1Y3QgYmlvX3Bvc3RfcmVhZF9jdHggKmdldF9w b3N0X3JlYWRfY3R4KHN0cnVjdCBiaW8gKmJpbykKPj4gICAgICAgICByZXR1cm4gaW9zdGF0X2N0 eC0+cG9zdF9yZWFkX2N0eDsKPj4gIH0KPj4KPj4gK3N0YXRpYyBpbmxpbmUgdm9pZCBpb3N0YXRf c2V0X3Bvc3RfcmVhZF9jdHgoc3RydWN0IGJpbyAqYmlvLCB2b2lkICpjdHgpCj4+ICt7Cj4+ICsg ICAgICAgc3RydWN0IGJpb19pb3N0YXRfY3R4ICppb3N0YXRfY3R4ID0gYmlvLT5iaV9wcml2YXRl Owo+PiArCj4+ICsgICAgICAgaW9zdGF0X2N0eC0+cG9zdF9yZWFkX2N0eCA9IGN0eDsKPj4gK30K Pj4gKwo+PiAgZXh0ZXJuIHZvaWQgaW9zdGF0X3VwZGF0ZV9hbmRfdW5iaW5kX2N0eChzdHJ1Y3Qg YmlvICpiaW8pOwo+PiAgZXh0ZXJuIHZvaWQgaW9zdGF0X2FsbG9jX2FuZF9iaW5kX2N0eChzdHJ1 Y3QgZjJmc19zYl9pbmZvICpzYmksCj4+ICAgICAgICAgICAgICAgICBzdHJ1Y3QgYmlvICpiaW8s IHN0cnVjdCBiaW9fcG9zdF9yZWFkX2N0eCAqY3R4KTsKPj4gQEAgLTgxLDYgKzg4LDEwIEBAIHN0 YXRpYyBpbmxpbmUgc3RydWN0IGJpb19wb3N0X3JlYWRfY3R4ICpnZXRfcG9zdF9yZWFkX2N0eChz dHJ1Y3QgYmlvICpiaW8pCj4+ICB7Cj4+ICAgICAgICAgcmV0dXJuIGJpby0+YmlfcHJpdmF0ZTsK Pj4gIH0KPj4gK3N0YXRpYyBpbmxpbmUgdm9pZCBpb3N0YXRfc2V0X3Bvc3RfcmVhZF9jdHgoc3Ry dWN0IGJpbyAqYmlvLCB2b2lkICpjdHgpCj4+ICt7Cj4+ICsgICAgICAgYmlvLT5iaV9wcml2YXRl ID0gY3R4Owo+PiArfQo+PiAgc3RhdGljIGlubGluZSBpbnQgZjJmc19pbml0X2lvc3RhdF9wcm9j ZXNzaW5nKHZvaWQpIHsgcmV0dXJuIDA7IH0KPj4gIHN0YXRpYyBpbmxpbmUgdm9pZCBmMmZzX2Rl c3Ryb3lfaW9zdGF0X3Byb2Nlc3Npbmcodm9pZCkge30KPj4gIHN0YXRpYyBpbmxpbmUgaW50IGYy ZnNfaW5pdF9pb3N0YXQoc3RydWN0IGYyZnNfc2JfaW5mbyAqc2JpKSB7IHJldHVybiAwOyB9Cj4+ IC0tCj4+IDIuNDkuMAo+Pgo+Pgo+Pgo+PiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fXwo+PiBMaW51eC1mMmZzLWRldmVsIG1haWxpbmcgbGlzdAo+PiBMaW51 eC1mMmZzLWRldmVsQGxpc3RzLnNvdXJjZWZvcmdlLm5ldAo+PiBodHRwczovL2xpc3RzLnNvdXJj ZWZvcmdlLm5ldC9saXN0cy9saXN0aW5mby9saW51eC1mMmZzLWRldmVsCgoKCl9fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkxpbnV4LWYyZnMtZGV2ZWwgbWFp bGluZyBsaXN0CkxpbnV4LWYyZnMtZGV2ZWxAbGlzdHMuc291cmNlZm9yZ2UubmV0Cmh0dHBzOi8v bGlzdHMuc291cmNlZm9yZ2UubmV0L2xpc3RzL2xpc3RpbmZvL2xpbnV4LWYyZnMtZGV2ZWwK