Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1n8ntc-0001vb-T5 for pgsql-hackers@arkaria.postgresql.org; Sat, 15 Jan 2022 18:35:25 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1n8ntb-000051-Nk for pgsql-hackers@arkaria.postgresql.org; Sat, 15 Jan 2022 18:35:23 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1n8ntb-00004s-0U for pgsql-hackers@lists.postgresql.org; Sat, 15 Jan 2022 18:35:23 +0000 Received: from mail-wm1-x329.google.com ([2a00:1450:4864:20::329]) by magus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92) (envelope-from ) id 1n8ntV-0005rT-RW for pgsql-hackers@postgresql.org; Sat, 15 Jan 2022 18:35:22 +0000 Received: by mail-wm1-x329.google.com with SMTP id c126-20020a1c9a84000000b00346f9ebee43so12236240wme.4 for ; Sat, 15 Jan 2022 10:35:17 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=enterprisedb.com; s=google; h=message-id:date:mime-version:user-agent:subject:content-language:to :cc:references:from:in-reply-to; bh=BGlSwx2vMJ86IYryWDDrr6TTnWiw2GlYN0ZSz7LEN7A=; b=HwdZ2WRXNGfoinIhYkdUhPs/hyGuWnOaWYyotmhh58v/yDcNk7yDXkOf5O2OKzMA0L whS5PagN35NRCDYN4sbqsHhw7WU+1RqQeiaWdCP2ZfL6auNqKobJ4SK94C/9oNYROYfJ 34hzCk/QNW6JksdIqWr9KrvHOWdEi+Gj6yeRqMXnQivpdXiRr/vdKJJBO2EEWaew6t/O Iy+sVg6YRexnSfyhrreCAo0yX5rWOevwzwsYz7tLikcHtnhIbr2Mt7AZldMtkJScChHg dEvv2weCZJNLGF3yV5BllI2Mg2Rja3/UZYBND1YeHDGcAnlr0j13uJUkfM0CqLZ0HnCS GVSw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:message-id:date:mime-version:user-agent:subject :content-language:to:cc:references:from:in-reply-to; bh=BGlSwx2vMJ86IYryWDDrr6TTnWiw2GlYN0ZSz7LEN7A=; b=wDWPdK78R73mM3iecvINQiGHMLbNkHzzvt+FNU3eofIEcPdBi51rnpVL0YA0Fx8kcr uaNp1M1iRU4zPgrZn12Lq8vghb4jzCuGDwOew53l1kNaWVK9eeR8D43KaelCLU1dTtbG tAMy2dlvyG5UXlVk2oDcKDzYYiEgic3/2Nj6H2XtTgLgXuHF4pcRiPSyQHqzfHEfB2K6 EtxXDShQiKZpSZMcyj9HSYCW6gPfuj8lhaJWNCie5b2h85m1ZgzSP/pP/Za3tcTGmWvX IJ/IzRAV/yEHsMzfvj+xejQ8UJkHo/qv5o8bDM9ymrvfbX0fLoJOrNjsKkN7KjhyvnDO CrXg== X-Gm-Message-State: AOAM531wekPaum6np7rVVRcGdheNGRz6TQsRWCG59H9ryu8fAzR367We 0VxMJRdefaDCiahBlSf/p20mFus4eaEEIOdnVYjvpURONe9X8Thnmn+wHvUOpd9Pd9Yq63FwudZ kvTP+h/+AMI+cO0YelQt1n6xxsK5szRA2eXGCArjB2Y6/5QZMJzzkBDMMSumCNP0RFkXwQVs8d6 w0j35QhC0i/iHkzbdLVhEWfYWhwwcUJbgBE7TT X-Google-Smtp-Source: ABdhPJzsSpdI+6XFcG2EGnMszWdXKE5IQMVeYHRY2SubrlYS5R2DomUjDKat+GmptSCjMK9DYmr6Pw== X-Received: by 2002:a05:600c:3589:: with SMTP id p9mr12538924wmq.109.1642271715001; Sat, 15 Jan 2022 10:35:15 -0800 (PST) Received: from [10.137.0.18] (ip-86-49-251-241.net.upcbroadband.cz. [86.49.251.241]) by smtp.gmail.com with ESMTPSA id r15sm3905578wmq.3.2022.01.15.10.35.13 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Sat, 15 Jan 2022 10:35:13 -0800 (PST) Content-Type: multipart/mixed; boundary="------------krEjryGqqIp57JesRDbyk4Se" Message-ID: Date: Sat, 15 Jan 2022 19:35:12 +0100 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.2.0 Subject: Re: extended stats on partitioned tables Content-Language: en-US To: Justin Pryzby Cc: Zhihong Yu , Jaime Casanova , pgsql-hackers@postgresql.org References: <46f37069-55cb-db6a-a15a-e351a2606592@enterprisedb.com> <20211103231904.GP17618@telsasoft.com> <689accb1-76e8-5115-6ed0-336749cdca57@enterprisedb.com> <20211203052411.GU17618@telsasoft.com> <8052505e-2dd2-e8cb-26c9-cbb5dff7d750@enterprisedb.com> <20211212213210.GP17618@telsasoft.com> <20211213135348.GT17618@telsasoft.com> <20220115051138.GR14051@telsasoft.com> From: Tomas Vondra In-Reply-To: <20220115051138.GR14051@telsasoft.com> X-CLOUD-SEC-AV-Info: enterprisedb,google_mail,monitor X-CLOUD-SEC-AV-Sent: true X-Gm-Spam: 0 X-Gm-Phishy: 0 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk This is a multi-part message in MIME format. --------------krEjryGqqIp57JesRDbyk4Se Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit On 1/15/22 06:11, Justin Pryzby wrote: > On Mon, Dec 13, 2021 at 09:40:09PM +0100, Tomas Vondra wrote: >> 1) If the table is a separate relation (not part of an inheritance >> tree), this should make no difference. -> OK >> >> 2) If the table is using "old" inheritance, this reverts back to >> pre-regression behavior. So people will keep using the old statistics >> until the ANALYZE, and we need to tell them to ANALYZE or something. >> >> 3) If the table is using partitioning, it's guaranteed to be empty and >> there are no stats at all. Again, we should tell people to run ANALYZE. > > I think these can be mentioned in the commit message, which can end up in the > minor release notes as a recommendation to rerun ANALYZE. > Good point. I pushed the 0002 part and added a short paragraph suggesting ANALYZE might be necessary. I did not go into details about the individual cases, because that'd be too much for a commit message. > Thanks for pushing 0001. > Thanks for posting the patches! I've pushed the second part - attached are the two remaining parts. I'll wait a bit before pushing the rebased 0001 (which goes into master branch only). Not sure about 0002 - I'm not convinced the refactored ACL checks are an improvement, but I'll think about it. regards -- Tomas Vondra EnterpriseDB: http://www.enterprisedb.com The Enterprise PostgreSQL Company --------------krEjryGqqIp57JesRDbyk4Se Content-Type: text/x-patch; charset=UTF-8; name="0001-Add-stxdinherit-flag-to-pg_statistic_ext_da-20220115.patch" Content-Disposition: attachment; filename*0="0001-Add-stxdinherit-flag-to-pg_statistic_ext_da-20220115.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSBlMDY1ZTU0ZDE5NjFhNGUyOTVlYmU3N2ZlYmJlNmEzMzA3ZDE0MmI1IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBUb21hcyBWb25kcmEgPHRvbWFzQDJuZHF1YWRyYW50 LmNvbT4KRGF0ZTogU3VuLCAxMiBEZWMgMjAyMSAwMDowNzoyNyArMDEwMApTdWJqZWN0OiBb UEFUQ0ggMS8yXSBBZGQgc3R4ZGluaGVyaXQgZmxhZyB0byBwZ19zdGF0aXN0aWNfZXh0X2Rh dGEKClRoZSBzdXBwb3J0IGZvciBleHRlbmRlZCBzdGF0aXN0aWNzIG9uIGluaGVyaXRhbmNl IHRyZWVzIHdhcyBzb21ld2hhdApwcm9ibGVtYXRpYywgYmVjYXVzZSB0aGUgY2F0YWxvZyBw Z19zdGF0aXN0aWNfZXh0X2RhdGEgZGlkIG5vdCBoYXZlIGEKZmxhZyBpZGVudGlmeWluZyB3 aGV0aGVyIHRoZSBkYXRhIHdhcyBidWlsdCB3aXRoL3dpdGhvdXQgZGF0YSBmb3IgdGhlCmNo aWxkIHJlbGF0aW9ucy4KCkZvciBwYXJ0aXRpb25lZCB0YWJsZXMgd2UndmUgYmVlbiBhYmxl IHRvIHdvcmsgYXJvdW5kIHRoaXMgYmVjYXVzZSB0aGUKbm9uLWxlYWYgcmVsYXRpb25zIGNh bid0IGNvbnRhaW4gZGF0YSwgc28gdGhlcmUncyByZWFsbHkganVzdCBvbmUgc2V0IG9mCnN0 YXRpc3RpY3MgdG8gc3RvcmUuIEJ1dCBmb3IgcmVndWxhciBpbmhlcml0YW5jZSB0cmVlcyB3 ZSBoYWQgdG8gcGljaywKYW5kIHRoZXJlIGlzIG5vIGNsZWFybHkgYmV0dGVyIG9wdGlvbiAt IHdlIG5lZWQgYm90aC4KClRoaXMgaW50cm9kdWNlcyB0aGUgcGdfc3RhdGlzdGljX2V4dF9k YXRhLnN0eGRpbmhlcml0IGZsYWcsIGFuYWxvZ291cyB0bwpwZ19zdGF0aXN0aWMuc3RhaW5o ZXJpdCwgYW5kIG1vZGlmaWVzIGFuYWx5emUgdG8gYnVpbGQgc3RhdGlzdGljcyBmb3IKYm90 aCBjYXNlcy4KClRoaXMgcmVsYXhlcyB0aGUgcmVsYXRpb25zaGlwIGJldHdlZW4gdGhlIHR3 byBjYXRhbG9ncyAtIHVudGlsIG5vdyB3ZSd2ZQpjcmVhdGVkIHRoZSBwZ19zdGF0aXN0aWNf ZXh0X2RhdGEgb25lIHdoZW4gY3JlYXRpbmcgdGhlIHN0YXRpc3RpY3MsIGFuZAp0aGVuIG9u bHkgdXBkYXRlZCBpdCBsYXRlci4gVGhlcmUgd2FzIGFsd2F5cyAxOjEgcmVsYXRpb25zaGlw IGJldHdlZW4Kcm93cyBpbiB0aGUgdHdvIGNhdGFsb2dzLiBXaXRoIHRoaXMgY2hhbmdlIHdl IG5vIGxvbmdlciBpbnNlcnQgYW55IGRhdGEKcm93cyB3aGlsZSBjcmVhdGluZyBzdGF0aXN0 aWNzLCBiZWNhdXNlIHdlIGRvbid0IGtub3cgd2hpY2ggZmxhZyB2YWx1ZQp0byBjcmVhdGUs IGFuZCBpdCBzZWVtcyB3YXN0ZWZ1bCB0byBpbml0aWFsaXplIGJvdGggZm9yIGV2ZXJ5IHJl bGF0aW9uLgpUaGUgdGhlcmUgbWF5IGJlIDAsIDEgb3IgMiBkYXRhIHJvd3MgZm9yIGVhY2gg c3RhdGlzdGljcyBkZWZpbml0aW9uLgoKUGF0Y2ggYnkgbWUsIHdpdGggZXh0ZW5zaXZlIGlt cHJvdmVtZW50cyBhbmQgZml4ZXMgYnkgSnVzdGluIFByeXpieS4KCkF1dGhvcjogVG9tYXMg Vm9uZHJhLCBKdXN0aW4gUHJ5emJ5ClJldmlld2VkLWJ5OiBUb21hcyBWb25kcmEsIEp1c3Rp biBQcnl6YnkKRGlzY3Vzc2lvbjogaHR0cHM6Ly9wb3N0Z3IuZXMvbS8yMDIxMDkyMzIxMjYy NC5HSTgzMSU0MHRlbHNhc29mdC5jb20KLS0tCiBkb2Mvc3JjL3NnbWwvY2F0YWxvZ3Muc2dt bCAgICAgICAgICAgICAgICAgIHwgIDIzICsrKwogc3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0 ZW1fdmlld3Muc3FsICAgICAgICB8ICAgMiArCiBzcmMvYmFja2VuZC9jb21tYW5kcy9hbmFs eXplLmMgICAgICAgICAgICAgIHwgIDI4ICstLS0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL3N0 YXRzY21kcy5jICAgICAgICAgICAgfCAgNzIgKysrKystLS0tLQogc3JjL2JhY2tlbmQvb3B0 aW1pemVyL3V0aWwvcGxhbmNhdC5jICAgICAgICB8IDE0NyArKysrKysrKysrKystLS0tLS0t LQogc3JjL2JhY2tlbmQvc3RhdGlzdGljcy9kZXBlbmRlbmNpZXMuYyAgICAgICB8ICAyMiAr Ky0KIHNyYy9iYWNrZW5kL3N0YXRpc3RpY3MvZXh0ZW5kZWRfc3RhdHMuYyAgICAgfCAgNzUg KysrKystLS0tLQogc3JjL2JhY2tlbmQvc3RhdGlzdGljcy9tY3YuYyAgICAgICAgICAgICAg ICB8ICAgOSArLQogc3JjL2JhY2tlbmQvc3RhdGlzdGljcy9tdmRpc3RpbmN0LmMgICAgICAg ICB8ICAgNSArLQogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3NlbGZ1bmNzLmMgICAgICAgICAg ICB8ICAzNyArLS0tLQogc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvc3lzY2FjaGUuYyAgICAg ICAgICB8ICAgNiArLQogc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19zdGF0aXN0aWNfZXh0X2Rh dGEuaCB8ICAgNCArLQogc3JjL2luY2x1ZGUvY29tbWFuZHMvZGVmcmVtLmggICAgICAgICAg ICAgICB8ICAgMSArCiBzcmMvaW5jbHVkZS9ub2Rlcy9wYXRobm9kZXMuaCAgICAgICAgICAg ICAgIHwgICAxICsKIHNyYy9pbmNsdWRlL3N0YXRpc3RpY3Mvc3RhdGlzdGljcy5oICAgICAg ICAgfCAgMTEgKy0KIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnVsZXMub3V0ICAgICAg ICAgfCAgIDIgKwogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zdGF0c19leHQub3V0ICAg ICB8ICAzMSArKystLQogc3JjL3Rlc3QvcmVncmVzcy9zcWwvc3RhdHNfZXh0LnNxbCAgICAg ICAgICB8ICAxMyArLQogMTggZmlsZXMgY2hhbmdlZCwgMjU0IGluc2VydGlvbnMoKyksIDIz NSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvY2F0YWxvZ3Muc2dt bCBiL2RvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sCmluZGV4IDAzZTI1MzdiMDdkLi4yYWVi MmVmMzQ2ZSAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwKKysrIGIv ZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwKQEAgLTc1MjEsNiArNzUyMSwxOSBAQCBTQ1JB TS1TSEEtMjU2JDxyZXBsYWNlYWJsZT4mbHQ7aXRlcmF0aW9uIGNvdW50Jmd0OzwvcmVwbGFj ZWFibGU+OjxyZXBsYWNlYWJsZT4mbAogICAgY3JlYXRlZCB3aXRoIDxsaW5rIGxpbmtlbmQ9 InNxbC1jcmVhdGVzdGF0aXN0aWNzIj48Y29tbWFuZD5DUkVBVEUgU1RBVElTVElDUzwvY29t bWFuZD48L2xpbms+LgogICA8L3BhcmE+CiAKKyAgPHBhcmE+CisgICBOb3JtYWxseSB0aGVy ZSBpcyBvbmUgZW50cnksIHdpdGggPHN0cnVjdGZpZWxkPnN0eGRpbmhlcml0PC9zdHJ1Y3Rm aWVsZD4gPQorICAgPGxpdGVyYWw+ZmFsc2U8L2xpdGVyYWw+LCBmb3IgZWFjaCBzdGF0aXN0 aWNzIG9iamVjdCB0aGF0IGhhcyBiZWVuIGFuYWx5emVkLgorICAgSWYgdGhlIHRhYmxlIGhh cyBpbmhlcml0YW5jZSBjaGlsZHJlbiwgYSBzZWNvbmQgZW50cnkgd2l0aAorICAgPHN0cnVj dGZpZWxkPnN0eGRpbmhlcml0PC9zdHJ1Y3RmaWVsZD4gPSA8bGl0ZXJhbD50cnVlPC9saXRl cmFsPiBpcyBhbHNvIGNyZWF0ZWQuCisgICBUaGlzIHJvdyByZXByZXNlbnRzIHRoZSBzdGF0 aXN0aWNzIG9iamVjdCBvdmVyIHRoZSBpbmhlcml0YW5jZSB0cmVlLCBpLmUuLAorICAgc3Rh dGlzdGljcyBmb3IgdGhlIGRhdGEgeW91J2Qgc2VlIHdpdGgKKyAgIDxsaXRlcmFsPlNFTEVD VCAqIEZST00gPHJlcGxhY2VhYmxlPnRhYmxlPC9yZXBsYWNlYWJsZT4qPC9saXRlcmFsPiwK KyAgIHdoZXJlYXMgdGhlIDxzdHJ1Y3RmaWVsZD5zdHhkaW5oZXJpdDwvc3RydWN0ZmllbGQ+ ID0gPGxpdGVyYWw+ZmFsc2U8L2xpdGVyYWw+IHJvdworICAgcmVwcmVzZW50cyB0aGUgcmVz dWx0cyBvZgorICAgPGxpdGVyYWw+U0VMRUNUICogRlJPTSBPTkxZIDxyZXBsYWNlYWJsZT50 YWJsZTwvcmVwbGFjZWFibGU+PC9saXRlcmFsPi4KKyAgPC9wYXJhPgorCiAgIDxwYXJhPgog ICAgTGlrZSA8bGluayBsaW5rZW5kPSJjYXRhbG9nLXBnLXN0YXRpc3RpYyI+PHN0cnVjdG5h bWU+cGdfc3RhdGlzdGljPC9zdHJ1Y3RuYW1lPjwvbGluaz4sCiAgICA8c3RydWN0bmFtZT5w Z19zdGF0aXN0aWNfZXh0X2RhdGE8L3N0cnVjdG5hbWU+IHNob3VsZCBub3QgYmUKQEAgLTc1 NjAsNiArNzU3MywxNiBAQCBTQ1JBTS1TSEEtMjU2JDxyZXBsYWNlYWJsZT4mbHQ7aXRlcmF0 aW9uIGNvdW50Jmd0OzwvcmVwbGFjZWFibGU+OjxyZXBsYWNlYWJsZT4mbAogICAgICAgPC9w YXJhPjwvZW50cnk+CiAgICAgIDwvcm93PgogCisgICAgIDxyb3c+CisgICAgICA8ZW50cnkg cm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRp b24iPgorICAgICAgIDxzdHJ1Y3RmaWVsZD5zdHhkaW5oZXJpdDwvc3RydWN0ZmllbGQ+IDx0 eXBlPmJvb2w8L3R5cGU+CisgICAgICA8L3BhcmE+CisgICAgICA8cGFyYT4KKyAgICAgICBJ ZiB0cnVlLCB0aGUgc3RhdHMgaW5jbHVkZSBpbmhlcml0YW5jZSBjaGlsZCBjb2x1bW5zLCBu b3QganVzdCB0aGUKKyAgICAgICB2YWx1ZXMgaW4gdGhlIHNwZWNpZmllZCByZWxhdGlvbgor ICAgICAgPC9wYXJhPjwvZW50cnk+CisgICAgIDwvcm93PgorCiAgICAgIDxyb3c+CiAgICAg ICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29sdW1u X2RlZmluaXRpb24iPgogICAgICAgIDxzdHJ1Y3RmaWVsZD5zdHhkbmRpc3RpbmN0PC9zdHJ1 Y3RmaWVsZD4gPHR5cGU+cGdfbmRpc3RpbmN0PC90eXBlPgpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvY2F0YWxvZy9zeXN0ZW1fdmlld3Muc3FsIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9z eXN0ZW1fdmlld3Muc3FsCmluZGV4IDcwMWZmMzhmNzYxLi4zY2I2OWIxZjg3YiAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1fdmlld3Muc3FsCisrKyBiL3NyYy9i YWNrZW5kL2NhdGFsb2cvc3lzdGVtX3ZpZXdzLnNxbApAQCAtMjY2LDYgKzI2Niw3IEBAIENS RUFURSBWSUVXIHBnX3N0YXRzX2V4dCBXSVRIIChzZWN1cml0eV9iYXJyaWVyKSBBUwogICAg ICAgICAgICApIEFTIGF0dG5hbWVzLAogICAgICAgICAgICBwZ19nZXRfc3RhdGlzdGljc29i amRlZl9leHByZXNzaW9ucyhzLm9pZCkgYXMgZXhwcnMsCiAgICAgICAgICAgIHMuc3R4a2lu ZCBBUyBraW5kcywKKyAgICAgICAgICAgc2Quc3R4ZGluaGVyaXQgQVMgaW5oZXJpdGVkLAog ICAgICAgICAgICBzZC5zdHhkbmRpc3RpbmN0IEFTIG5fZGlzdGluY3QsCiAgICAgICAgICAg IHNkLnN0eGRkZXBlbmRlbmNpZXMgQVMgZGVwZW5kZW5jaWVzLAogICAgICAgICAgICBtLm1v c3RfY29tbW9uX3ZhbHMsCkBAIC0yOTgsNiArMjk5LDcgQEAgQ1JFQVRFIFZJRVcgcGdfc3Rh dHNfZXh0X2V4cHJzIFdJVEggKHNlY3VyaXR5X2JhcnJpZXIpIEFTCiAgICAgICAgICAgIHMu c3R4bmFtZSBBUyBzdGF0aXN0aWNzX25hbWUsCiAgICAgICAgICAgIHBnX2dldF91c2VyYnlp ZChzLnN0eG93bmVyKSBBUyBzdGF0aXN0aWNzX293bmVyLAogICAgICAgICAgICBzdGF0LmV4 cHIsCisgICAgICAgICAgIHNkLnN0eGRpbmhlcml0IEFTIGluaGVyaXRlZCwKICAgICAgICAg ICAgKHN0YXQuYSkuc3RhbnVsbGZyYWMgQVMgbnVsbF9mcmFjLAogICAgICAgICAgICAoc3Rh dC5hKS5zdGF3aWR0aCBBUyBhdmdfd2lkdGgsCiAgICAgICAgICAgIChzdGF0LmEpLnN0YWRp c3RpbmN0IEFTIG5fZGlzdGluY3QsCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5k cy9hbmFseXplLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9hbmFseXplLmMKaW5kZXggZDQ0 N2JjOWI0MzYuLmEwZGE5OThjMmVhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5k cy9hbmFseXplLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvYW5hbHl6ZS5jCkBAIC01 NDksNyArNTQ5LDYgQEAgZG9fYW5hbHl6ZV9yZWwoUmVsYXRpb24gb25lcmVsLCBWYWN1dW1Q YXJhbXMgKnBhcmFtcywKIAl7CiAJCU1lbW9yeUNvbnRleHQgY29sX2NvbnRleHQsCiAJCQkJ CW9sZF9jb250ZXh0OwotCQlib29sCQlidWlsZF9leHRfc3RhdHM7CiAKIAkJcGdzdGF0X3By b2dyZXNzX3VwZGF0ZV9wYXJhbShQUk9HUkVTU19BTkFMWVpFX1BIQVNFLAogCQkJCQkJCQkJ IFBST0dSRVNTX0FOQUxZWkVfUEhBU0VfQ09NUFVURV9TVEFUUyk7CkBAIC02MTMsMzAgKzYx Miw5IEBAIGRvX2FuYWx5emVfcmVsKFJlbGF0aW9uIG9uZXJlbCwgVmFjdXVtUGFyYW1zICpw YXJhbXMsCiAJCQkJCQkJdGhpc2RhdGEtPmF0dHJfY250LCB0aGlzZGF0YS0+dmFjYXR0cnN0 YXRzKTsKIAkJfQogCi0JCS8qCi0JCSAqIFNob3VsZCB3ZSBidWlsZCBleHRlbmRlZCBzdGF0 aXN0aWNzIGZvciB0aGlzIHJlbGF0aW9uPwotCQkgKgotCQkgKiBUaGUgZXh0ZW5kZWQgc3Rh dGlzdGljcyBjYXRhbG9nIGRvZXMgbm90IGluY2x1ZGUgYW4gaW5oZXJpdGFuY2UKLQkJICog ZmxhZywgc28gd2UgY2FuJ3Qgc3RvcmUgc3RhdGlzdGljcyBidWlsdCBib3RoIHdpdGggYW5k IHdpdGhvdXQKLQkJICogZGF0YSBmcm9tIGNoaWxkIHJlbGF0aW9ucy4gV2UgY2FuIHN0b3Jl IGp1c3Qgb25lIHNldCBvZiBzdGF0aXN0aWNzCi0JCSAqIHBlciByZWxhdGlvbi4gRm9yIHBs YWluIHJlbGF0aW9ucyB0aGF0J3MgZmluZSwgYnV0IGZvciBpbmhlcml0YW5jZQotCQkgKiB0 cmVlcyB3ZSBoYXZlIHRvIHBpY2sgd2hldGhlciB0byBzdG9yZSBzdGF0aXN0aWNzIGZvciBq dXN0IHRoZQotCQkgKiBvbmUgcmVsYXRpb24gb3IgdGhlIHdob2xlIHRyZWUuIEZvciBwbGFp biBpbmhlcml0YW5jZSB3ZSBzdG9yZQotCQkgKiB0aGUgKCFpbmgpIHZlcnNpb24sIG1vc3Rs eSBmb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgcmVhc29ucy4KLQkJICogRm9yIHBhcnRp dGlvbmVkIHRhYmxlcyB0aGF0J3MgcG9pbnRsZXNzICh0aGUgbm9uLWxlYWYgdGFibGVzIGFy ZQotCQkgKiBhbHdheXMgZW1wdHkpLCBzbyB3ZSBzdG9yZSBzdGF0cyByZXByZXNlbnRpbmcg dGhlIHdob2xlIHRyZWUuCi0JCSAqLwotCQlidWlsZF9leHRfc3RhdHMgPSAob25lcmVsLT5y ZF9yZWwtPnJlbGtpbmQgPT0gUkVMS0lORF9QQVJUSVRJT05FRF9UQUJMRSkgPyBpbmggOiAo IWluaCk7Ci0KLQkJLyoKLQkJICogQnVpbGQgZXh0ZW5kZWQgc3RhdGlzdGljcyAoaWYgdGhl cmUgYXJlIGFueSkuCi0JCSAqCi0JCSAqIEZvciBub3cgd2Ugb25seSBidWlsZCBleHRlbmRl ZCBzdGF0aXN0aWNzIG9uIGluZGl2aWR1YWwgcmVsYXRpb25zLAotCQkgKiBub3QgZm9yIHJl bGF0aW9ucyByZXByZXNlbnRpbmcgaW5oZXJpdGFuY2UgdHJlZXMuCi0JCSAqLwotCQlpZiAo YnVpbGRfZXh0X3N0YXRzKQotCQkJQnVpbGRSZWxhdGlvbkV4dFN0YXRpc3RpY3Mob25lcmVs LCB0b3RhbHJvd3MsIG51bXJvd3MsIHJvd3MsCi0JCQkJCQkJCQkgICBhdHRyX2NudCwgdmFj YXR0cnN0YXRzKTsKKwkJLyogQnVpbGQgZXh0ZW5kZWQgc3RhdGlzdGljcyAoaWYgdGhlcmUg YXJlIGFueSkuICovCisJCUJ1aWxkUmVsYXRpb25FeHRTdGF0aXN0aWNzKG9uZXJlbCwgaW5o LCB0b3RhbHJvd3MsIG51bXJvd3MsIHJvd3MsCisJCQkJCQkJCSAgIGF0dHJfY250LCB2YWNh dHRyc3RhdHMpOwogCX0KIAogCXBnc3RhdF9wcm9ncmVzc191cGRhdGVfcGFyYW0oUFJPR1JF U1NfQU5BTFlaRV9QSEFTRSwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3N0 YXRzY21kcy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvc3RhdHNjbWRzLmMKaW5kZXggZjlk M2Y5YzdiODguLmY3NDE5YjhmNTYyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5k cy9zdGF0c2NtZHMuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9zdGF0c2NtZHMuYwpA QCAtNzUsMTMgKzc1LDEwIEBAIENyZWF0ZVN0YXRpc3RpY3MoQ3JlYXRlU3RhdHNTdG10ICpz dG10KQogCUhlYXBUdXBsZQlodHVwOwogCURhdHVtCQl2YWx1ZXNbTmF0dHNfcGdfc3RhdGlz dGljX2V4dF07CiAJYm9vbAkJbnVsbHNbTmF0dHNfcGdfc3RhdGlzdGljX2V4dF07Ci0JRGF0 dW0JCWRhdGF2YWx1ZXNbTmF0dHNfcGdfc3RhdGlzdGljX2V4dF9kYXRhXTsKLQlib29sCQlk YXRhbnVsbHNbTmF0dHNfcGdfc3RhdGlzdGljX2V4dF9kYXRhXTsKIAlpbnQydmVjdG9yICpz dHhrZXlzOwogCUxpc3QJICAgKnN0eGV4cHJzID0gTklMOwogCURhdHVtCQlleHByc0RhdHVt OwogCVJlbGF0aW9uCXN0YXRyZWw7Ci0JUmVsYXRpb24JZGF0YXJlbDsKIAlSZWxhdGlvbgly ZWwgPSBOVUxMOwogCU9pZAkJCXJlbGlkOwogCU9iamVjdEFkZHJlc3MgcGFyZW50b2JqZWN0 LApAQCAtNTE0LDI4ICs1MTEsMTAgQEAgQ3JlYXRlU3RhdGlzdGljcyhDcmVhdGVTdGF0c1N0 bXQgKnN0bXQpCiAJcmVsYXRpb25fY2xvc2Uoc3RhdHJlbCwgUm93RXhjbHVzaXZlTG9jayk7 CiAKIAkvKgotCSAqIEFsc28gYnVpbGQgdGhlIHBnX3N0YXRpc3RpY19leHRfZGF0YSB0dXBs ZSwgdG8gaG9sZCB0aGUgYWN0dWFsCi0JICogc3RhdGlzdGljcyBkYXRhLgorCSAqIFdlIHVz ZWQgdG8gY3JlYXRlIHRoZSBwZ19zdGF0aXN0aWNfZXh0X2RhdGEgdHVwbGUgdG9vLCBidXQg aXQncyBub3QgY2xlYXIKKwkgKiB3aGF0IHZhbHVlIHNob3VsZCB0aGUgc3R4ZGluaGVyaXQg ZmxhZyBoYXZlIChpdCBkZXBlbmRzIG9uIHdoZXRoZXIgdGhlIHJlbAorCSAqIGlzIHBhcnRp dGlvbmVkLCBjb250YWlucyBkYXRhLCBldGMuKQogCSAqLwotCWRhdGFyZWwgPSB0YWJsZV9v cGVuKFN0YXRpc3RpY0V4dERhdGFSZWxhdGlvbklkLCBSb3dFeGNsdXNpdmVMb2NrKTsKLQot CW1lbXNldChkYXRhdmFsdWVzLCAwLCBzaXplb2YoZGF0YXZhbHVlcykpOwotCW1lbXNldChk YXRhbnVsbHMsIGZhbHNlLCBzaXplb2YoZGF0YW51bGxzKSk7Ci0KLQlkYXRhdmFsdWVzW0Fu dW1fcGdfc3RhdGlzdGljX2V4dF9kYXRhX3N0eG9pZCAtIDFdID0gT2JqZWN0SWRHZXREYXR1 bShzdGF0b2lkKTsKLQotCS8qIG5vIHN0YXRpc3RpY3MgYnVpbHQgeWV0ICovCi0JZGF0YW51 bGxzW0FudW1fcGdfc3RhdGlzdGljX2V4dF9kYXRhX3N0eGRuZGlzdGluY3QgLSAxXSA9IHRy dWU7Ci0JZGF0YW51bGxzW0FudW1fcGdfc3RhdGlzdGljX2V4dF9kYXRhX3N0eGRkZXBlbmRl bmNpZXMgLSAxXSA9IHRydWU7Ci0JZGF0YW51bGxzW0FudW1fcGdfc3RhdGlzdGljX2V4dF9k YXRhX3N0eGRtY3YgLSAxXSA9IHRydWU7Ci0JZGF0YW51bGxzW0FudW1fcGdfc3RhdGlzdGlj X2V4dF9kYXRhX3N0eGRleHByIC0gMV0gPSB0cnVlOwotCi0JLyogaW5zZXJ0IGl0IGludG8g cGdfc3RhdGlzdGljX2V4dF9kYXRhICovCi0JaHR1cCA9IGhlYXBfZm9ybV90dXBsZShkYXRh cmVsLT5yZF9hdHQsIGRhdGF2YWx1ZXMsIGRhdGFudWxscyk7Ci0JQ2F0YWxvZ1R1cGxlSW5z ZXJ0KGRhdGFyZWwsIGh0dXApOwotCWhlYXBfZnJlZXR1cGxlKGh0dXApOwotCi0JcmVsYXRp b25fY2xvc2UoZGF0YXJlbCwgUm93RXhjbHVzaXZlTG9jayk7CiAKIAlJbnZva2VPYmplY3RQ b3N0Q3JlYXRlSG9vayhTdGF0aXN0aWNFeHRSZWxhdGlvbklkLCBzdGF0b2lkLCAwKTsKIApA QCAtNzE3LDMyICs2OTYsNDkgQEAgQWx0ZXJTdGF0aXN0aWNzKEFsdGVyU3RhdHNTdG10ICpz dG10KQogfQogCiAvKgotICogR3V0cyBvZiBzdGF0aXN0aWNzIG9iamVjdCBkZWxldGlvbi4K KyAqIERlbGV0ZSBlbnRyeSBpbiBwZ19zdGF0aXN0aWNfZXh0X2RhdGEgY2F0YWxvZy4gV2Ug ZG9uJ3Qga25vdyBpZiB0aGUgcm93CisgKiBleGlzdHMsIHNvIGRvbid0IGVycm9yIG91dC4K ICAqLwogdm9pZAotUmVtb3ZlU3RhdGlzdGljc0J5SWQoT2lkIHN0YXRzT2lkKQorUmVtb3Zl U3RhdGlzdGljc0RhdGFCeUlkKE9pZCBzdGF0c09pZCwgYm9vbCBpbmgpCiB7CiAJUmVsYXRp b24JcmVsYXRpb247CiAJSGVhcFR1cGxlCXR1cDsKLQlGb3JtX3BnX3N0YXRpc3RpY19leHQg c3RhdGV4dDsKLQlPaWQJCQlyZWxpZDsKIAotCS8qCi0JICogRmlyc3QgZGVsZXRlIHRoZSBw Z19zdGF0aXN0aWNfZXh0X2RhdGEgdHVwbGUgaG9sZGluZyB0aGUgYWN0dWFsCi0JICogc3Rh dGlzdGljYWwgZGF0YS4KLQkgKi8KIAlyZWxhdGlvbiA9IHRhYmxlX29wZW4oU3RhdGlzdGlj RXh0RGF0YVJlbGF0aW9uSWQsIFJvd0V4Y2x1c2l2ZUxvY2spOwogCi0JdHVwID0gU2VhcmNo U3lzQ2FjaGUxKFNUQVRFWFREQVRBU1RYT0lELCBPYmplY3RJZEdldERhdHVtKHN0YXRzT2lk KSk7Ci0KLQlpZiAoIUhlYXBUdXBsZUlzVmFsaWQodHVwKSkgLyogc2hvdWxkIG5vdCBoYXBw ZW4gKi8KLQkJZWxvZyhFUlJPUiwgImNhY2hlIGxvb2t1cCBmYWlsZWQgZm9yIHN0YXRpc3Rp Y3MgZGF0YSAldSIsIHN0YXRzT2lkKTsKKwl0dXAgPSBTZWFyY2hTeXNDYWNoZTIoU1RBVEVY VERBVEFTVFhPSUQsIE9iamVjdElkR2V0RGF0dW0oc3RhdHNPaWQpLAorCQkJCQkJICBCb29s R2V0RGF0dW0oaW5oKSk7CiAKLQlDYXRhbG9nVHVwbGVEZWxldGUocmVsYXRpb24sICZ0dXAt PnRfc2VsZik7CisJLyogV2UgZG9uJ3Qga25vdyBpZiB0aGUgZGF0YSByb3cgZm9yIGluaCB2 YWx1ZSBleGlzdHMuICovCisJaWYgKEhlYXBUdXBsZUlzVmFsaWQodHVwKSkKKwl7CisJCUNh dGFsb2dUdXBsZURlbGV0ZShyZWxhdGlvbiwgJnR1cC0+dF9zZWxmKTsKIAotCVJlbGVhc2VT eXNDYWNoZSh0dXApOworCQlSZWxlYXNlU3lzQ2FjaGUodHVwKTsKKwl9CiAKIAl0YWJsZV9j bG9zZShyZWxhdGlvbiwgUm93RXhjbHVzaXZlTG9jayk7Cit9CisKKy8qCisgKiBHdXRzIG9m IHN0YXRpc3RpY3Mgb2JqZWN0IGRlbGV0aW9uLgorICovCit2b2lkCitSZW1vdmVTdGF0aXN0 aWNzQnlJZChPaWQgc3RhdHNPaWQpCit7CisJUmVsYXRpb24JcmVsYXRpb247CisJSGVhcFR1 cGxlCXR1cDsKKwlGb3JtX3BnX3N0YXRpc3RpY19leHQgc3RhdGV4dDsKKwlPaWQJCQlyZWxp ZDsKKworCS8qCisJICogRmlyc3QgZGVsZXRlIHRoZSBwZ19zdGF0aXN0aWNfZXh0X2RhdGEg dHVwbGVzIGhvbGRpbmcgdGhlIGFjdHVhbAorCSAqIHN0YXRpc3RpY2FsIGRhdGEuIFRoZXJl IG1pZ2h0IGJlIGRhdGEgd2l0aC93aXRob3V0IGluaGVyaXRhbmNlLCBzbworCSAqIGF0dGVt cHQgZGVsZXRpbmcgYm90aC4KKwkgKi8KKwlSZW1vdmVTdGF0aXN0aWNzRGF0YUJ5SWQoc3Rh dHNPaWQsIHRydWUpOworCVJlbW92ZVN0YXRpc3RpY3NEYXRhQnlJZChzdGF0c09pZCwgZmFs c2UpOwogCiAJLyoKIAkgKiBEZWxldGUgdGhlIHBnX3N0YXRpc3RpY19leHQgdHVwbGUuICBB bHNvIHNlbmQgb3V0IGEgY2FjaGUgaW52YWwgb24gdGhlCmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9vcHRpbWl6ZXIvdXRpbC9wbGFuY2F0LmMgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIv dXRpbC9wbGFuY2F0LmMKaW5kZXggNTM1ZmEwNDFhZGEuLmJkOGM1ZTIwZjRmIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9wbGFuY2F0LmMKKysrIGIvc3JjL2Jh Y2tlbmQvb3B0aW1pemVyL3V0aWwvcGxhbmNhdC5jCkBAIC0zMCw2ICszMCw3IEBACiAjaW5j bHVkZSAiY2F0YWxvZy9wZ19hbS5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfcHJvYy5oIgog I2luY2x1ZGUgImNhdGFsb2cvcGdfc3RhdGlzdGljX2V4dC5oIgorI2luY2x1ZGUgImNhdGFs b2cvcGdfc3RhdGlzdGljX2V4dF9kYXRhLmgiCiAjaW5jbHVkZSAiZm9yZWlnbi9mZHdhcGku aCIKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIKICNpbmNsdWRlICJub2Rlcy9tYWtlZnVuY3Mu aCIKQEAgLTEyNzYsNiArMTI3Nyw4NyBAQCBnZXRfcmVsYXRpb25fY29uc3RyYWludHMoUGxh bm5lckluZm8gKnJvb3QsCiAJcmV0dXJuIHJlc3VsdDsKIH0KIAorLyoKKyAqIFRyeSBsb2Fk aW5nIGRhdGEgZm9yIHRoZSBzdGF0aXN0aWNzIG9iamVjdC4KKyAqCisgKiBXZSBkb24ndCBr bm93IGlmIHRoZSBkYXRhIChzcGVjaWZpZWQgYnkgc3RhdE9pZCBhbmQgaW5oIHZhbHVlKSBl eGlzdC4KKyAqIFRoZSByZXN1bHQgaXMgc3RvcmVkIGluIHN0YWluZm9zIGxpc3QuCisgKi8K K3N0YXRpYyB2b2lkCitnZXRfcmVsYXRpb25fc3RhdGlzdGljc193b3JrZXIoTGlzdCAqKnN0 YWluZm9zLCBSZWxPcHRJbmZvICpyZWwsCisJCQkJCQkJICAgT2lkIHN0YXRPaWQsIGJvb2wg aW5oLAorCQkJCQkJCSAgIEJpdG1hcHNldCAqa2V5cywgTGlzdCAqZXhwcnMpCit7CisJRm9y bV9wZ19zdGF0aXN0aWNfZXh0X2RhdGEgZGF0YUZvcm07CisJSGVhcFR1cGxlCWR0dXA7CisK KwlkdHVwID0gU2VhcmNoU3lzQ2FjaGUyKFNUQVRFWFREQVRBU1RYT0lELAorCQkJCQkJICAg T2JqZWN0SWRHZXREYXR1bShzdGF0T2lkKSwgQm9vbEdldERhdHVtKGluaCkpOworCWlmICgh SGVhcFR1cGxlSXNWYWxpZChkdHVwKSkKKwkJcmV0dXJuOworCisJZGF0YUZvcm0gPSAoRm9y bV9wZ19zdGF0aXN0aWNfZXh0X2RhdGEpIEdFVFNUUlVDVChkdHVwKTsKKworCS8qIGFkZCBv bmUgU3RhdGlzdGljRXh0SW5mbyBmb3IgZWFjaCBraW5kIGJ1aWx0ICovCisJaWYgKHN0YXRl eHRfaXNfa2luZF9idWlsdChkdHVwLCBTVEFUU19FWFRfTkRJU1RJTkNUKSkKKwl7CisJCVN0 YXRpc3RpY0V4dEluZm8gKmluZm8gPSBtYWtlTm9kZShTdGF0aXN0aWNFeHRJbmZvKTsKKwor CQlpbmZvLT5zdGF0T2lkID0gc3RhdE9pZDsKKwkJaW5mby0+aW5oZXJpdCA9IGRhdGFGb3Jt LT5zdHhkaW5oZXJpdDsKKwkJaW5mby0+cmVsID0gcmVsOworCQlpbmZvLT5raW5kID0gU1RB VFNfRVhUX05ESVNUSU5DVDsKKwkJaW5mby0+a2V5cyA9IGJtc19jb3B5KGtleXMpOworCQlp bmZvLT5leHBycyA9IGV4cHJzOworCisJCSpzdGFpbmZvcyA9IGxhcHBlbmQoKnN0YWluZm9z LCBpbmZvKTsKKwl9CisKKwlpZiAoc3RhdGV4dF9pc19raW5kX2J1aWx0KGR0dXAsIFNUQVRT X0VYVF9ERVBFTkRFTkNJRVMpKQorCXsKKwkJU3RhdGlzdGljRXh0SW5mbyAqaW5mbyA9IG1h a2VOb2RlKFN0YXRpc3RpY0V4dEluZm8pOworCisJCWluZm8tPnN0YXRPaWQgPSBzdGF0T2lk OworCQlpbmZvLT5pbmhlcml0ID0gZGF0YUZvcm0tPnN0eGRpbmhlcml0OworCQlpbmZvLT5y ZWwgPSByZWw7CisJCWluZm8tPmtpbmQgPSBTVEFUU19FWFRfREVQRU5ERU5DSUVTOworCQlp bmZvLT5rZXlzID0gYm1zX2NvcHkoa2V5cyk7CisJCWluZm8tPmV4cHJzID0gZXhwcnM7CisK KwkJKnN0YWluZm9zID0gbGFwcGVuZCgqc3RhaW5mb3MsIGluZm8pOworCX0KKworCWlmIChz dGF0ZXh0X2lzX2tpbmRfYnVpbHQoZHR1cCwgU1RBVFNfRVhUX01DVikpCisJeworCQlTdGF0 aXN0aWNFeHRJbmZvICppbmZvID0gbWFrZU5vZGUoU3RhdGlzdGljRXh0SW5mbyk7CisKKwkJ aW5mby0+c3RhdE9pZCA9IHN0YXRPaWQ7CisJCWluZm8tPmluaGVyaXQgPSBkYXRhRm9ybS0+ c3R4ZGluaGVyaXQ7CisJCWluZm8tPnJlbCA9IHJlbDsKKwkJaW5mby0+a2luZCA9IFNUQVRT X0VYVF9NQ1Y7CisJCWluZm8tPmtleXMgPSBibXNfY29weShrZXlzKTsKKwkJaW5mby0+ZXhw cnMgPSBleHByczsKKworCQkqc3RhaW5mb3MgPSBsYXBwZW5kKCpzdGFpbmZvcywgaW5mbyk7 CisJfQorCisJaWYgKHN0YXRleHRfaXNfa2luZF9idWlsdChkdHVwLCBTVEFUU19FWFRfRVhQ UkVTU0lPTlMpKQorCXsKKwkJU3RhdGlzdGljRXh0SW5mbyAqaW5mbyA9IG1ha2VOb2RlKFN0 YXRpc3RpY0V4dEluZm8pOworCisJCWluZm8tPnN0YXRPaWQgPSBzdGF0T2lkOworCQlpbmZv LT5pbmhlcml0ID0gZGF0YUZvcm0tPnN0eGRpbmhlcml0OworCQlpbmZvLT5yZWwgPSByZWw7 CisJCWluZm8tPmtpbmQgPSBTVEFUU19FWFRfRVhQUkVTU0lPTlM7CisJCWluZm8tPmtleXMg PSBibXNfY29weShrZXlzKTsKKwkJaW5mby0+ZXhwcnMgPSBleHByczsKKworCQkqc3RhaW5m b3MgPSBsYXBwZW5kKCpzdGFpbmZvcywgaW5mbyk7CisJfQorCisJUmVsZWFzZVN5c0NhY2hl KGR0dXApOworfQorCiAvKgogICogZ2V0X3JlbGF0aW9uX3N0YXRpc3RpY3MKICAqCQlSZXRy aWV2ZSBleHRlbmRlZCBzdGF0aXN0aWNzIGRlZmluZWQgb24gdGhlIHRhYmxlLgpAQCAtMTI5 OSw3ICsxMzgxLDYgQEAgZ2V0X3JlbGF0aW9uX3N0YXRpc3RpY3MoUmVsT3B0SW5mbyAqcmVs LCBSZWxhdGlvbiByZWxhdGlvbikKIAkJT2lkCQkJc3RhdE9pZCA9IGxmaXJzdF9vaWQobCk7 CiAJCUZvcm1fcGdfc3RhdGlzdGljX2V4dCBzdGFGb3JtOwogCQlIZWFwVHVwbGUJaHR1cDsK LQkJSGVhcFR1cGxlCWR0dXA7CiAJCUJpdG1hcHNldCAgKmtleXMgPSBOVUxMOwogCQlMaXN0 CSAgICpleHBycyA9IE5JTDsKIAkJaW50CQkJaTsKQEAgLTEzMDksMTAgKzEzOTAsNiBAQCBn ZXRfcmVsYXRpb25fc3RhdGlzdGljcyhSZWxPcHRJbmZvICpyZWwsIFJlbGF0aW9uIHJlbGF0 aW9uKQogCQkJZWxvZyhFUlJPUiwgImNhY2hlIGxvb2t1cCBmYWlsZWQgZm9yIHN0YXRpc3Rp Y3Mgb2JqZWN0ICV1Iiwgc3RhdE9pZCk7CiAJCXN0YUZvcm0gPSAoRm9ybV9wZ19zdGF0aXN0 aWNfZXh0KSBHRVRTVFJVQ1QoaHR1cCk7CiAKLQkJZHR1cCA9IFNlYXJjaFN5c0NhY2hlMShT VEFURVhUREFUQVNUWE9JRCwgT2JqZWN0SWRHZXREYXR1bShzdGF0T2lkKSk7Ci0JCWlmICgh SGVhcFR1cGxlSXNWYWxpZChkdHVwKSkKLQkJCWVsb2coRVJST1IsICJjYWNoZSBsb29rdXAg ZmFpbGVkIGZvciBzdGF0aXN0aWNzIG9iamVjdCAldSIsIHN0YXRPaWQpOwotCiAJCS8qCiAJ CSAqIEZpcnN0LCBidWlsZCB0aGUgYXJyYXkgb2YgY29sdW1ucyBjb3ZlcmVkLiAgVGhpcyBp cyB1bHRpbWF0ZWx5CiAJCSAqIHdhc3RlZCBpZiBubyBzdGF0cyB3aXRoaW4gdGhlIG9iamVj dCBoYXZlIGFjdHVhbGx5IGJlZW4gYnVpbHQsIGJ1dApAQCAtMTMyNCw2ICsxNDAxLDExIEBA IGdldF9yZWxhdGlvbl9zdGF0aXN0aWNzKFJlbE9wdEluZm8gKnJlbCwgUmVsYXRpb24gcmVs YXRpb24pCiAJCS8qCiAJCSAqIFByZXByb2Nlc3MgZXhwcmVzc2lvbnMgKGlmIGFueSkuIFdl IHJlYWQgdGhlIGV4cHJlc3Npb25zLCBydW4gdGhlbQogCQkgKiB0aHJvdWdoIGV2YWxfY29u c3RfZXhwcmVzc2lvbnMsIGFuZCBmaXggdGhlIHZhcm5vcy4KKwkJICoKKwkJICogWFhYIFdl IGRvbid0IGtub3cgeWV0IGlmIHRoZXJlIGFyZSBhbnkgZGF0YSBmb3IgdGhpcyBzdGF0cyBv YmplY3QsCisJCSAqIHdpdGggZWl0aGVyIHN0eGRpbmhlcml0IHZhbHVlLiBCdXQgaXQncyBy ZWFzb25hYmxlIHRvIGFzc3VtZSB0aGVyZQorCQkgKiBpcyBhdCBsZWFzdCBvbmUgb2YgdGhv c2UsIHBvc3NpYmx5IGJvdGguIFNvIGl0J3MgYmV0dGVyIHRvIHByb2Nlc3MKKwkJICoga2V5 cyBhbmQgZXhwcmVzc2lvbnMgaGVyZS4KIAkJICovCiAJCXsKIAkJCWJvb2wJCWlzbnVsbDsK QEAgLTEzNjQsNjEgKzE0NDYsMTQgQEAgZ2V0X3JlbGF0aW9uX3N0YXRpc3RpY3MoUmVsT3B0 SW5mbyAqcmVsLCBSZWxhdGlvbiByZWxhdGlvbikKIAkJCX0KIAkJfQogCi0JCS8qIGFkZCBv bmUgU3RhdGlzdGljRXh0SW5mbyBmb3IgZWFjaCBraW5kIGJ1aWx0ICovCi0JCWlmIChzdGF0 ZXh0X2lzX2tpbmRfYnVpbHQoZHR1cCwgU1RBVFNfRVhUX05ESVNUSU5DVCkpCi0JCXsKLQkJ CVN0YXRpc3RpY0V4dEluZm8gKmluZm8gPSBtYWtlTm9kZShTdGF0aXN0aWNFeHRJbmZvKTsK LQotCQkJaW5mby0+c3RhdE9pZCA9IHN0YXRPaWQ7Ci0JCQlpbmZvLT5yZWwgPSByZWw7Ci0J CQlpbmZvLT5raW5kID0gU1RBVFNfRVhUX05ESVNUSU5DVDsKLQkJCWluZm8tPmtleXMgPSBi bXNfY29weShrZXlzKTsKLQkJCWluZm8tPmV4cHJzID0gZXhwcnM7Ci0KLQkJCXN0YWluZm9z ID0gbGFwcGVuZChzdGFpbmZvcywgaW5mbyk7Ci0JCX0KLQotCQlpZiAoc3RhdGV4dF9pc19r aW5kX2J1aWx0KGR0dXAsIFNUQVRTX0VYVF9ERVBFTkRFTkNJRVMpKQotCQl7Ci0JCQlTdGF0 aXN0aWNFeHRJbmZvICppbmZvID0gbWFrZU5vZGUoU3RhdGlzdGljRXh0SW5mbyk7Ci0KLQkJ CWluZm8tPnN0YXRPaWQgPSBzdGF0T2lkOwotCQkJaW5mby0+cmVsID0gcmVsOwotCQkJaW5m by0+a2luZCA9IFNUQVRTX0VYVF9ERVBFTkRFTkNJRVM7Ci0JCQlpbmZvLT5rZXlzID0gYm1z X2NvcHkoa2V5cyk7Ci0JCQlpbmZvLT5leHBycyA9IGV4cHJzOwotCi0JCQlzdGFpbmZvcyA9 IGxhcHBlbmQoc3RhaW5mb3MsIGluZm8pOwotCQl9Ci0KLQkJaWYgKHN0YXRleHRfaXNfa2lu ZF9idWlsdChkdHVwLCBTVEFUU19FWFRfTUNWKSkKLQkJewotCQkJU3RhdGlzdGljRXh0SW5m byAqaW5mbyA9IG1ha2VOb2RlKFN0YXRpc3RpY0V4dEluZm8pOwotCi0JCQlpbmZvLT5zdGF0 T2lkID0gc3RhdE9pZDsKLQkJCWluZm8tPnJlbCA9IHJlbDsKLQkJCWluZm8tPmtpbmQgPSBT VEFUU19FWFRfTUNWOwotCQkJaW5mby0+a2V5cyA9IGJtc19jb3B5KGtleXMpOwotCQkJaW5m by0+ZXhwcnMgPSBleHByczsKLQotCQkJc3RhaW5mb3MgPSBsYXBwZW5kKHN0YWluZm9zLCBp bmZvKTsKLQkJfQotCi0JCWlmIChzdGF0ZXh0X2lzX2tpbmRfYnVpbHQoZHR1cCwgU1RBVFNf RVhUX0VYUFJFU1NJT05TKSkKLQkJewotCQkJU3RhdGlzdGljRXh0SW5mbyAqaW5mbyA9IG1h a2VOb2RlKFN0YXRpc3RpY0V4dEluZm8pOworCQkvKiBleHRyYWN0IHN0YXRpc3RpY3MgZm9y IHBvc3NpYmxlIHZhbHVlcyBvZiBzdHhkaW5oZXJpdCBmbGFnICovCiAKLQkJCWluZm8tPnN0 YXRPaWQgPSBzdGF0T2lkOwotCQkJaW5mby0+cmVsID0gcmVsOwotCQkJaW5mby0+a2luZCA9 IFNUQVRTX0VYVF9FWFBSRVNTSU9OUzsKLQkJCWluZm8tPmtleXMgPSBibXNfY29weShrZXlz KTsKLQkJCWluZm8tPmV4cHJzID0gZXhwcnM7CisJCWdldF9yZWxhdGlvbl9zdGF0aXN0aWNz X3dvcmtlcigmc3RhaW5mb3MsIHJlbCwgc3RhdE9pZCwgdHJ1ZSwga2V5cywgZXhwcnMpOwog Ci0JCQlzdGFpbmZvcyA9IGxhcHBlbmQoc3RhaW5mb3MsIGluZm8pOwotCQl9CisJCWdldF9y ZWxhdGlvbl9zdGF0aXN0aWNzX3dvcmtlcigmc3RhaW5mb3MsIHJlbCwgc3RhdE9pZCwgZmFs c2UsIGtleXMsIGV4cHJzKTsKIAogCQlSZWxlYXNlU3lzQ2FjaGUoaHR1cCk7Ci0JCVJlbGVh c2VTeXNDYWNoZShkdHVwKTsKKwogCQlibXNfZnJlZShrZXlzKTsKIAl9CiAKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL3N0YXRpc3RpY3MvZGVwZW5kZW5jaWVzLmMgYi9zcmMvYmFja2Vu ZC9zdGF0aXN0aWNzL2RlcGVuZGVuY2llcy5jCmluZGV4IGJiYzI5YjY3MTE3Li4zNDMyNmQ1 NTYxOSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RhdGlzdGljcy9kZXBlbmRlbmNpZXMu YworKysgYi9zcmMvYmFja2VuZC9zdGF0aXN0aWNzL2RlcGVuZGVuY2llcy5jCkBAIC02MTks MTQgKzYxOSwxNiBAQCBkZXBlbmRlbmN5X2lzX2Z1bGx5X21hdGNoZWQoTVZEZXBlbmRlbmN5 ICpkZXBlbmRlbmN5LCBCaXRtYXBzZXQgKmF0dG51bXMpCiAgKgkJTG9hZCB0aGUgZnVuY3Rp b25hbCBkZXBlbmRlbmNpZXMgZm9yIHRoZSBpbmRpY2F0ZWQgcGdfc3RhdGlzdGljX2V4dCB0 dXBsZQogICovCiBNVkRlcGVuZGVuY2llcyAqCi1zdGF0ZXh0X2RlcGVuZGVuY2llc19sb2Fk KE9pZCBtdm9pZCkKK3N0YXRleHRfZGVwZW5kZW5jaWVzX2xvYWQoT2lkIG12b2lkLCBib29s IGluaCkKIHsKIAlNVkRlcGVuZGVuY2llcyAqcmVzdWx0OwogCWJvb2wJCWlzbnVsbDsKIAlE YXR1bQkJZGVwczsKIAlIZWFwVHVwbGUJaHR1cDsKIAotCWh0dXAgPSBTZWFyY2hTeXNDYWNo ZTEoU1RBVEVYVERBVEFTVFhPSUQsIE9iamVjdElkR2V0RGF0dW0obXZvaWQpKTsKKwlodHVw ID0gU2VhcmNoU3lzQ2FjaGUyKFNUQVRFWFREQVRBU1RYT0lELAorCQkJCQkJICAgT2JqZWN0 SWRHZXREYXR1bShtdm9pZCksCisJCQkJCQkgICBCb29sR2V0RGF0dW0oaW5oKSk7CiAJaWYg KCFIZWFwVHVwbGVJc1ZhbGlkKGh0dXApKQogCQllbG9nKEVSUk9SLCAiY2FjaGUgbG9va3Vw IGZhaWxlZCBmb3Igc3RhdGlzdGljcyBvYmplY3QgJXUiLCBtdm9pZCk7CiAKQEAgLTE0MTcs MTYgKzE0MTksNiBAQCBkZXBlbmRlbmNpZXNfY2xhdXNlbGlzdF9zZWxlY3Rpdml0eShQbGFu bmVySW5mbyAqcm9vdCwKIAlOb2RlCSAgKip1bmlxdWVfZXhwcnM7CiAJaW50CQkJdW5pcXVl X2V4cHJzX2NudDsKIAotCS8qCi0JICogV2hlbiBkZWFsaW5nIHdpdGggcmVndWxhciBpbmhl cml0YW5jZSB0cmVlcywgaWdub3JlIGV4dGVuZGVkIHN0YXRzCi0JICogKHdoaWNoIHdlcmUg YnVpbHQgd2l0aG91dCBkYXRhIGZyb20gY2hpbGQgcmVscywgYW5kIHRodXMgZG8gbm90Ci0J ICogcmVwcmVzZW50IHRoZW0pLiBGb3IgcGFydGl0aW9uZWQgdGFibGVzIGRhdGEgdGhlcmUn cyBubyBkYXRhIGluIHRoZQotCSAqIG5vbi1sZWFmIHJlbGF0aW9ucywgc28gd2UgYnVpbGQg c3RhdHMgb25seSBmb3IgdGhlIGluaGVyaXRhbmNlIHRyZWUuCi0JICogU28gZm9yIHBhcnRp dGlvbmVkIHRhYmxlcyB3ZSBkbyBjb25zaWRlciBleHRlbmRlZCBzdGF0cy4KLQkgKi8KLQlp ZiAocnRlLT5pbmggJiYgcnRlLT5yZWxraW5kICE9IFJFTEtJTkRfUEFSVElUSU9ORURfVEFC TEUpCi0JCXJldHVybiAxLjA7Ci0KIAkvKiBjaGVjayBpZiB0aGVyZSdzIGFueSBzdGF0cyB0 aGF0IG1pZ2h0IGJlIHVzZWZ1bCBmb3IgdXMuICovCiAJaWYgKCFoYXNfc3RhdHNfb2Zfa2lu ZChyZWwtPnN0YXRsaXN0LCBTVEFUU19FWFRfREVQRU5ERU5DSUVTKSkKIAkJcmV0dXJuIDEu MDsKQEAgLTE2MTAsNiArMTYwMiwxMCBAQCBkZXBlbmRlbmNpZXNfY2xhdXNlbGlzdF9zZWxl Y3Rpdml0eShQbGFubmVySW5mbyAqcm9vdCwKIAkJaWYgKHN0YXQtPmtpbmQgIT0gU1RBVFNf RVhUX0RFUEVOREVOQ0lFUykKIAkJCWNvbnRpbnVlOwogCisJCS8qIHNraXAgc3RhdGlzdGlj cyB3aXRoIG1pc21hdGNoaW5nIHN0eGRpbmhlcml0IHZhbHVlICovCisJCWlmIChzdGF0LT5p bmhlcml0ICE9IHJ0ZS0+aW5oKQorCQkJY29udGludWU7CisKIAkJLyoKIAkJICogQ291bnQg bWF0Y2hpbmcgYXR0cmlidXRlcyAtIHdlIGhhdmUgdG8gdW5kbyB0aGUgYXR0bnVtIG9mZnNl dHMuIFRoZQogCQkgKiBpbnB1dCBhdHRyaWJ1dGUgbnVtYmVycyBhcmUgbm90IG9mZnNldCAo ZXhwcmVzc2lvbnMgYXJlIG5vdApAQCAtMTY1Niw3ICsxNjUyLDcgQEAgZGVwZW5kZW5jaWVz X2NsYXVzZWxpc3Rfc2VsZWN0aXZpdHkoUGxhbm5lckluZm8gKnJvb3QsCiAJCWlmIChubWF0 Y2hlZCArIG5leHBycyA8IDIpCiAJCQljb250aW51ZTsKIAotCQlkZXBzID0gc3RhdGV4dF9k ZXBlbmRlbmNpZXNfbG9hZChzdGF0LT5zdGF0T2lkKTsKKwkJZGVwcyA9IHN0YXRleHRfZGVw ZW5kZW5jaWVzX2xvYWQoc3RhdC0+c3RhdE9pZCwgcnRlLT5pbmgpOwogCiAJCS8qCiAJCSAq IFRoZSBleHByZXNzaW9ucyBtYXkgYmUgcmVwcmVzZW50ZWQgYnkgZGlmZmVyZW50IGF0dG51 bXMgaW4gdGhlCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdGF0aXN0aWNzL2V4dGVuZGVk X3N0YXRzLmMgYi9zcmMvYmFja2VuZC9zdGF0aXN0aWNzL2V4dGVuZGVkX3N0YXRzLmMKaW5k ZXggNTc2MjYyMTY3M2IuLjg3ZmU4MmVkMTE0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9z dGF0aXN0aWNzL2V4dGVuZGVkX3N0YXRzLmMKKysrIGIvc3JjL2JhY2tlbmQvc3RhdGlzdGlj cy9leHRlbmRlZF9zdGF0cy5jCkBAIC0yNSw2ICsyNSw3IEBACiAjaW5jbHVkZSAiY2F0YWxv Zy9wZ19zdGF0aXN0aWNfZXh0LmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19zdGF0aXN0aWNf ZXh0X2RhdGEuaCIKICNpbmNsdWRlICJleGVjdXRvci9leGVjdXRvci5oIgorI2luY2x1ZGUg ImNvbW1hbmRzL2RlZnJlbS5oIgogI2luY2x1ZGUgImNvbW1hbmRzL3Byb2dyZXNzLmgiCiAj aW5jbHVkZSAibWlzY2FkbWluLmgiCiAjaW5jbHVkZSAibm9kZXMvbm9kZUZ1bmNzLmgiCkBA IC03OCw3ICs3OSw3IEBAIHR5cGVkZWYgc3RydWN0IFN0YXRFeHRFbnRyeQogc3RhdGljIExp c3QgKmZldGNoX3N0YXRlbnRyaWVzX2Zvcl9yZWxhdGlvbihSZWxhdGlvbiBwZ19zdGF0ZXh0 LCBPaWQgcmVsaWQpOwogc3RhdGljIFZhY0F0dHJTdGF0cyAqKmxvb2t1cF92YXJfYXR0cl9z dGF0cyhSZWxhdGlvbiByZWwsIEJpdG1hcHNldCAqYXR0cnMsIExpc3QgKmV4cHJzLAogCQkJ CQkJCQkJCQlpbnQgbnZhY2F0dHMsIFZhY0F0dHJTdGF0cyAqKnZhY2F0dHMpOwotc3RhdGlj IHZvaWQgc3RhdGV4dF9zdG9yZShPaWQgc3RhdE9pZCwKK3N0YXRpYyB2b2lkIHN0YXRleHRf c3RvcmUoT2lkIHN0YXRPaWQsIGJvb2wgaW5oLAogCQkJCQkJICBNVk5EaXN0aW5jdCAqbmRp c3RpbmN0LCBNVkRlcGVuZGVuY2llcyAqZGVwZW5kZW5jaWVzLAogCQkJCQkJICBNQ1ZMaXN0 ICptY3YsIERhdHVtIGV4cHJzLCBWYWNBdHRyU3RhdHMgKipzdGF0cyk7CiBzdGF0aWMgaW50 CXN0YXRleHRfY29tcHV0ZV9zdGF0dGFyZ2V0KGludCBzdGF0dGFyZ2V0LApAQCAtMTExLDcg KzExMiw3IEBAIHN0YXRpYyBTdGF0c0J1aWxkRGF0YSAqbWFrZV9idWlsZF9kYXRhKFJlbGF0 aW9uIG9uZXJlbCwgU3RhdEV4dEVudHJ5ICpzdGF0LAogICogcmVxdWVzdGVkIHN0YXRzLCBh bmQgc2VyaWFsaXplcyB0aGVtIGJhY2sgaW50byB0aGUgY2F0YWxvZy4KICAqLwogdm9pZAot QnVpbGRSZWxhdGlvbkV4dFN0YXRpc3RpY3MoUmVsYXRpb24gb25lcmVsLCBkb3VibGUgdG90 YWxyb3dzLAorQnVpbGRSZWxhdGlvbkV4dFN0YXRpc3RpY3MoUmVsYXRpb24gb25lcmVsLCBi b29sIGluaCwgZG91YmxlIHRvdGFscm93cywKIAkJCQkJCSAgIGludCBudW1yb3dzLCBIZWFw VHVwbGUgKnJvd3MsCiAJCQkJCQkgICBpbnQgbmF0dHMsIFZhY0F0dHJTdGF0cyAqKnZhY2F0 dHJzdGF0cykKIHsKQEAgLTIzMSw3ICsyMzIsOCBAQCBCdWlsZFJlbGF0aW9uRXh0U3RhdGlz dGljcyhSZWxhdGlvbiBvbmVyZWwsIGRvdWJsZSB0b3RhbHJvd3MsCiAJCX0KIAogCQkvKiBz dG9yZSB0aGUgc3RhdGlzdGljcyBpbiB0aGUgY2F0YWxvZyAqLwotCQlzdGF0ZXh0X3N0b3Jl KHN0YXQtPnN0YXRPaWQsIG5kaXN0aW5jdCwgZGVwZW5kZW5jaWVzLCBtY3YsIGV4cHJzdGF0 cywgc3RhdHMpOworCQlzdGF0ZXh0X3N0b3JlKHN0YXQtPnN0YXRPaWQsIGluaCwKKwkJCQkJ ICBuZGlzdGluY3QsIGRlcGVuZGVuY2llcywgbWN2LCBleHByc3RhdHMsIHN0YXRzKTsKIAog CQkvKiBmb3IgcmVwb3J0aW5nIHByb2dyZXNzICovCiAJCXBnc3RhdF9wcm9ncmVzc191cGRh dGVfcGFyYW0oUFJPR1JFU1NfQU5BTFlaRV9FWFRfU1RBVFNfQ09NUFVURUQsCkBAIC03ODIs MjMgKzc4NCwyNyBAQCBsb29rdXBfdmFyX2F0dHJfc3RhdHMoUmVsYXRpb24gcmVsLCBCaXRt YXBzZXQgKmF0dHJzLCBMaXN0ICpleHBycywKICAqCXR1cGxlLgogICovCiBzdGF0aWMgdm9p ZAotc3RhdGV4dF9zdG9yZShPaWQgc3RhdE9pZCwKK3N0YXRleHRfc3RvcmUoT2lkIHN0YXRP aWQsIGJvb2wgaW5oLAogCQkJICBNVk5EaXN0aW5jdCAqbmRpc3RpbmN0LCBNVkRlcGVuZGVu Y2llcyAqZGVwZW5kZW5jaWVzLAogCQkJICBNQ1ZMaXN0ICptY3YsIERhdHVtIGV4cHJzLCBW YWNBdHRyU3RhdHMgKipzdGF0cykKIHsKIAlSZWxhdGlvbglwZ19zdGV4dGRhdGE7Ci0JSGVh cFR1cGxlCXN0dXAsCi0JCQkJb2xkdHVwOworCUhlYXBUdXBsZQlzdHVwOwogCURhdHVtCQl2 YWx1ZXNbTmF0dHNfcGdfc3RhdGlzdGljX2V4dF9kYXRhXTsKIAlib29sCQludWxsc1tOYXR0 c19wZ19zdGF0aXN0aWNfZXh0X2RhdGFdOwotCWJvb2wJCXJlcGxhY2VzW05hdHRzX3BnX3N0 YXRpc3RpY19leHRfZGF0YV07CiAKIAlwZ19zdGV4dGRhdGEgPSB0YWJsZV9vcGVuKFN0YXRp c3RpY0V4dERhdGFSZWxhdGlvbklkLCBSb3dFeGNsdXNpdmVMb2NrKTsKIAogCW1lbXNldChu dWxscywgdHJ1ZSwgc2l6ZW9mKG51bGxzKSk7Ci0JbWVtc2V0KHJlcGxhY2VzLCBmYWxzZSwg c2l6ZW9mKHJlcGxhY2VzKSk7CiAJbWVtc2V0KHZhbHVlcywgMCwgc2l6ZW9mKHZhbHVlcykp OwogCisJLyogYmFzaWMgaW5mbyAqLworCXZhbHVlc1tBbnVtX3BnX3N0YXRpc3RpY19leHRf ZGF0YV9zdHhvaWQgLSAxXSA9IE9iamVjdElkR2V0RGF0dW0oc3RhdE9pZCk7CisJbnVsbHNb QW51bV9wZ19zdGF0aXN0aWNfZXh0X2RhdGFfc3R4b2lkIC0gMV0gPSBmYWxzZTsKKworCXZh bHVlc1tBbnVtX3BnX3N0YXRpc3RpY19leHRfZGF0YV9zdHhkaW5oZXJpdCAtIDFdID0gQm9v bEdldERhdHVtKGluaCk7CisJbnVsbHNbQW51bV9wZ19zdGF0aXN0aWNfZXh0X2RhdGFfc3R4 ZGluaGVyaXQgLSAxXSA9IGZhbHNlOworCiAJLyoKIAkgKiBDb25zdHJ1Y3QgYSBuZXcgcGdf c3RhdGlzdGljX2V4dF9kYXRhIHR1cGxlLCByZXBsYWNpbmcgdGhlIGNhbGN1bGF0ZWQKIAkg KiBzdGF0cy4KQEAgLTgzMSwyNSArODM3LDE1IEBAIHN0YXRleHRfc3RvcmUoT2lkIHN0YXRP aWQsCiAJCXZhbHVlc1tBbnVtX3BnX3N0YXRpc3RpY19leHRfZGF0YV9zdHhkZXhwciAtIDFd ID0gZXhwcnM7CiAJfQogCi0JLyogYWx3YXlzIHJlcGxhY2UgdGhlIHZhbHVlIChlaXRoZXIg YnkgYnl0ZWEgb3IgTlVMTCkgKi8KLQlyZXBsYWNlc1tBbnVtX3BnX3N0YXRpc3RpY19leHRf ZGF0YV9zdHhkbmRpc3RpbmN0IC0gMV0gPSB0cnVlOwotCXJlcGxhY2VzW0FudW1fcGdfc3Rh dGlzdGljX2V4dF9kYXRhX3N0eGRkZXBlbmRlbmNpZXMgLSAxXSA9IHRydWU7Ci0JcmVwbGFj ZXNbQW51bV9wZ19zdGF0aXN0aWNfZXh0X2RhdGFfc3R4ZG1jdiAtIDFdID0gdHJ1ZTsKLQly ZXBsYWNlc1tBbnVtX3BnX3N0YXRpc3RpY19leHRfZGF0YV9zdHhkZXhwciAtIDFdID0gdHJ1 ZTsKLQotCS8qIHRoZXJlIHNob3VsZCBhbHJlYWR5IGJlIGEgcGdfc3RhdGlzdGljX2V4dF9k YXRhIHR1cGxlICovCi0Jb2xkdHVwID0gU2VhcmNoU3lzQ2FjaGUxKFNUQVRFWFREQVRBU1RY T0lELCBPYmplY3RJZEdldERhdHVtKHN0YXRPaWQpKTsKLQlpZiAoIUhlYXBUdXBsZUlzVmFs aWQob2xkdHVwKSkKLQkJZWxvZyhFUlJPUiwgImNhY2hlIGxvb2t1cCBmYWlsZWQgZm9yIHN0 YXRpc3RpY3Mgb2JqZWN0ICV1Iiwgc3RhdE9pZCk7Ci0KLQkvKiByZXBsYWNlIGl0ICovCi0J c3R1cCA9IGhlYXBfbW9kaWZ5X3R1cGxlKG9sZHR1cCwKLQkJCQkJCQkgUmVsYXRpb25HZXRE ZXNjcihwZ19zdGV4dGRhdGEpLAotCQkJCQkJCSB2YWx1ZXMsCi0JCQkJCQkJIG51bGxzLAot CQkJCQkJCSByZXBsYWNlcyk7Ci0JUmVsZWFzZVN5c0NhY2hlKG9sZHR1cCk7Ci0JQ2F0YWxv Z1R1cGxlVXBkYXRlKHBnX3N0ZXh0ZGF0YSwgJnN0dXAtPnRfc2VsZiwgc3R1cCk7CisJLyoK KwkgKiBEZWxldGUgdGhlIG9sZCB0dXBsZSBpZiBpdCBleGlzdHMsIGFuZCBpbnNlcnQgYSBu ZXcgb25lLiBJdCdzIGVhc2llcgorCSAqIHRoYW4gdHJ5aW5nIHRvIHVwZGF0ZSBvciBpbnNl cnQsIGJhc2VkIG9uIHZhcmlvdXMgY29uZGl0aW9ucy4KKwkgKi8KKwlSZW1vdmVTdGF0aXN0 aWNzRGF0YUJ5SWQoc3RhdE9pZCwgaW5oKTsKKworCS8qIGZvcm0gYW5kIGluc2VydCBhIG5l dyB0dXBsZSAqLworCXN0dXAgPSBoZWFwX2Zvcm1fdHVwbGUoUmVsYXRpb25HZXREZXNjcihw Z19zdGV4dGRhdGEpLCB2YWx1ZXMsIG51bGxzKTsKKwlDYXRhbG9nVHVwbGVJbnNlcnQocGdf c3RleHRkYXRhLCBzdHVwKTsKIAogCWhlYXBfZnJlZXR1cGxlKHN0dXApOwogCkBAIC0xMjM1 LDcgKzEyMzEsNyBAQCBzdGF0X2NvdmVyc19leHByZXNzaW9ucyhTdGF0aXN0aWNFeHRJbmZv ICpzdGF0LCBMaXN0ICpleHBycywKICAqIGZ1cnRoZXIgdGllYnJlYWtlcnMgYXJlIG5lZWRl ZC4KICAqLwogU3RhdGlzdGljRXh0SW5mbyAqCi1jaG9vc2VfYmVzdF9zdGF0aXN0aWNzKExp c3QgKnN0YXRzLCBjaGFyIHJlcXVpcmVka2luZCwKK2Nob29zZV9iZXN0X3N0YXRpc3RpY3Mo TGlzdCAqc3RhdHMsIGNoYXIgcmVxdWlyZWRraW5kLCBib29sIGluaCwKIAkJCQkJICAgQml0 bWFwc2V0ICoqY2xhdXNlX2F0dG51bXMsIExpc3QgKipjbGF1c2VfZXhwcnMsCiAJCQkJCSAg IGludCBuY2xhdXNlcykKIHsKQEAgLTEyNTcsNiArMTI1MywxMCBAQCBjaG9vc2VfYmVzdF9z dGF0aXN0aWNzKExpc3QgKnN0YXRzLCBjaGFyIHJlcXVpcmVka2luZCwKIAkJaWYgKGluZm8t PmtpbmQgIT0gcmVxdWlyZWRraW5kKQogCQkJY29udGludWU7CiAKKwkJLyogc2tpcCBzdGF0 aXN0aWNzIHdpdGggbWlzbWF0Y2hpbmcgaW5oZXJpdGFuY2UgZmxhZyAqLworCQlpZiAoaW5m by0+aW5oZXJpdCAhPSBpbmgpCisJCQljb250aW51ZTsKKwogCQkvKgogCQkgKiBDb2xsZWN0 IGF0dHJpYnV0ZXMgYW5kIGV4cHJlc3Npb25zIGluIHJlbWFpbmluZyAodW5lc3RpbWF0ZWQp CiAJCSAqIGNsYXVzZXMgZnVsbHkgY292ZXJlZCBieSB0aGlzIHN0YXRpc3RpYyBvYmplY3Qu CkBAIC0xNjk3LDE2ICsxNjk3LDYgQEAgc3RhdGV4dF9tY3ZfY2xhdXNlbGlzdF9zZWxlY3Rp dml0eShQbGFubmVySW5mbyAqcm9vdCwgTGlzdCAqY2xhdXNlcywgaW50IHZhclJlbGkKIAlT ZWxlY3Rpdml0eSBzZWwgPSAoaXNfb3IpID8gMC4wIDogMS4wOwogCVJhbmdlVGJsRW50cnkg KnJ0ZSA9IHBsYW5uZXJfcnRfZmV0Y2gocmVsLT5yZWxpZCwgcm9vdCk7CiAKLQkvKgotCSAq IFdoZW4gZGVhbGluZyB3aXRoIHJlZ3VsYXIgaW5oZXJpdGFuY2UgdHJlZXMsIGlnbm9yZSBl eHRlbmRlZCBzdGF0cwotCSAqICh3aGljaCB3ZXJlIGJ1aWx0IHdpdGhvdXQgZGF0YSBmcm9t IGNoaWxkIHJlbHMsIGFuZCB0aHVzIGRvIG5vdAotCSAqIHJlcHJlc2VudCB0aGVtKS4gRm9y IHBhcnRpdGlvbmVkIHRhYmxlcyBkYXRhIHRoZXJlJ3Mgbm8gZGF0YSBpbiB0aGUKLQkgKiBu b24tbGVhZiByZWxhdGlvbnMsIHNvIHdlIGJ1aWxkIHN0YXRzIG9ubHkgZm9yIHRoZSBpbmhl cml0YW5jZSB0cmVlLgotCSAqIFNvIGZvciBwYXJ0aXRpb25lZCB0YWJsZXMgd2UgZG8gY29u c2lkZXIgZXh0ZW5kZWQgc3RhdHMuCi0JICovCi0JaWYgKHJ0ZS0+aW5oICYmIHJ0ZS0+cmVs a2luZCAhPSBSRUxLSU5EX1BBUlRJVElPTkVEX1RBQkxFKQotCQlyZXR1cm4gc2VsOwotCiAJ LyogY2hlY2sgaWYgdGhlcmUncyBhbnkgc3RhdHMgdGhhdCBtaWdodCBiZSB1c2VmdWwgZm9y IHVzLiAqLwogCWlmICghaGFzX3N0YXRzX29mX2tpbmQocmVsLT5zdGF0bGlzdCwgU1RBVFNf RVhUX01DVikpCiAJCXJldHVybiBzZWw7CkBAIC0xNzU4LDcgKzE3NDgsNyBAQCBzdGF0ZXh0 X21jdl9jbGF1c2VsaXN0X3NlbGVjdGl2aXR5KFBsYW5uZXJJbmZvICpyb290LCBMaXN0ICpj bGF1c2VzLCBpbnQgdmFyUmVsaQogCQlCaXRtYXBzZXQgICpzaW1wbGVfY2xhdXNlczsKIAog CQkvKiBmaW5kIHRoZSBiZXN0IHN1aXRlZCBzdGF0aXN0aWNzIG9iamVjdCBmb3IgdGhlc2Ug YXR0bnVtcyAqLwotCQlzdGF0ID0gY2hvb3NlX2Jlc3Rfc3RhdGlzdGljcyhyZWwtPnN0YXRs aXN0LCBTVEFUU19FWFRfTUNWLAorCQlzdGF0ID0gY2hvb3NlX2Jlc3Rfc3RhdGlzdGljcyhy ZWwtPnN0YXRsaXN0LCBTVEFUU19FWFRfTUNWLCBydGUtPmluaCwKIAkJCQkJCQkJCSAgbGlz dF9hdHRudW1zLCBsaXN0X2V4cHJzLAogCQkJCQkJCQkJICBsaXN0X2xlbmd0aChjbGF1c2Vz KSk7CiAKQEAgLTE4NDcsNyArMTgzNyw3IEBAIHN0YXRleHRfbWN2X2NsYXVzZWxpc3Rfc2Vs ZWN0aXZpdHkoUGxhbm5lckluZm8gKnJvb3QsIExpc3QgKmNsYXVzZXMsIGludCB2YXJSZWxp CiAJCQlNQ1ZMaXN0ICAgICptY3ZfbGlzdDsKIAogCQkJLyogTG9hZCB0aGUgTUNWIGxpc3Qg c3RvcmVkIGluIHRoZSBzdGF0aXN0aWNzIG9iamVjdCAqLwotCQkJbWN2X2xpc3QgPSBzdGF0 ZXh0X21jdl9sb2FkKHN0YXQtPnN0YXRPaWQpOworCQkJbWN2X2xpc3QgPSBzdGF0ZXh0X21j dl9sb2FkKHN0YXQtPnN0YXRPaWQsIHJ0ZS0+aW5oKTsKIAogCQkJLyoKIAkJCSAqIENvbXB1 dGUgdGhlIHNlbGVjdGl2aXR5IG9mIHRoZSBPUmVkIGxpc3Qgb2YgY2xhdXNlcyBjb3ZlcmVk IGJ5CkBAIC0yNDA4LDcgKzIzOTgsNyBAQCBzZXJpYWxpemVfZXhwcl9zdGF0cyhBbmxFeHBy RGF0YSAqZXhwcmRhdGEsIGludCBuZXhwcnMpCiAgKiBpZGVudGlmaWVkIGJ5IHRoZSBzdXBw bGllZCBpbmRleC4KICAqLwogSGVhcFR1cGxlCi1zdGF0ZXh0X2V4cHJlc3Npb25zX2xvYWQo T2lkIHN0eG9pZCwgaW50IGlkeCkKK3N0YXRleHRfZXhwcmVzc2lvbnNfbG9hZChPaWQgc3R4 b2lkLCBib29sIGluaCwgaW50IGlkeCkKIHsKIAlib29sCQlpc251bGw7CiAJRGF0dW0JCXZh bHVlOwpAQCAtMjQxOCw3ICsyNDA4LDggQEAgc3RhdGV4dF9leHByZXNzaW9uc19sb2FkKE9p ZCBzdHhvaWQsIGludCBpZHgpCiAJSGVhcFR1cGxlRGF0YSB0bXB0dXA7CiAJSGVhcFR1cGxl CXR1cDsKIAotCWh0dXAgPSBTZWFyY2hTeXNDYWNoZTEoU1RBVEVYVERBVEFTVFhPSUQsIE9i amVjdElkR2V0RGF0dW0oc3R4b2lkKSk7CisJaHR1cCA9IFNlYXJjaFN5c0NhY2hlMihTVEFU RVhUREFUQVNUWE9JRCwKKwkJCQkJCSAgIE9iamVjdElkR2V0RGF0dW0oc3R4b2lkKSwgQm9v bEdldERhdHVtKGluaCkpOwogCWlmICghSGVhcFR1cGxlSXNWYWxpZChodHVwKSkKIAkJZWxv ZyhFUlJPUiwgImNhY2hlIGxvb2t1cCBmYWlsZWQgZm9yIHN0YXRpc3RpY3Mgb2JqZWN0ICV1 Iiwgc3R4b2lkKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RhdGlzdGljcy9tY3Yu YyBiL3NyYy9iYWNrZW5kL3N0YXRpc3RpY3MvbWN2LmMKaW5kZXggNjVmYTg3YjFjNzkuLjJm NmRmYzAyZDgwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdGF0aXN0aWNzL21jdi5jCisr KyBiL3NyYy9iYWNrZW5kL3N0YXRpc3RpY3MvbWN2LmMKQEAgLTU1OSwxMiArNTU5LDEzIEBA IGJ1aWxkX2NvbHVtbl9mcmVxdWVuY2llcyhTb3J0SXRlbSAqZ3JvdXBzLCBpbnQgbmdyb3Vw cywKICAqCQlMb2FkIHRoZSBNQ1YgbGlzdCBmb3IgdGhlIGluZGljYXRlZCBwZ19zdGF0aXN0 aWNfZXh0IHR1cGxlLgogICovCiBNQ1ZMaXN0ICoKLXN0YXRleHRfbWN2X2xvYWQoT2lkIG12 b2lkKQorc3RhdGV4dF9tY3ZfbG9hZChPaWQgbXZvaWQsIGJvb2wgaW5oKQogewogCU1DVkxp c3QgICAgKnJlc3VsdDsKIAlib29sCQlpc251bGw7CiAJRGF0dW0JCW1jdmxpc3Q7Ci0JSGVh cFR1cGxlCWh0dXAgPSBTZWFyY2hTeXNDYWNoZTEoU1RBVEVYVERBVEFTVFhPSUQsIE9iamVj dElkR2V0RGF0dW0obXZvaWQpKTsKKwlIZWFwVHVwbGUJaHR1cCA9IFNlYXJjaFN5c0NhY2hl MihTVEFURVhUREFUQVNUWE9JRCwKKwkJCQkJCQkJCSAgIE9iamVjdElkR2V0RGF0dW0obXZv aWQpLCBCb29sR2V0RGF0dW0oaW5oKSk7CiAKIAlpZiAoIUhlYXBUdXBsZUlzVmFsaWQoaHR1 cCkpCiAJCWVsb2coRVJST1IsICJjYWNoZSBsb29rdXAgZmFpbGVkIGZvciBzdGF0aXN0aWNz IG9iamVjdCAldSIsIG12b2lkKTsKQEAgLTIwMzksMTEgKzIwNDAsMTMgQEAgbWN2X2NsYXVz ZWxpc3Rfc2VsZWN0aXZpdHkoUGxhbm5lckluZm8gKnJvb3QsIFN0YXRpc3RpY0V4dEluZm8g KnN0YXQsCiAJTUNWTGlzdCAgICAqbWN2OwogCVNlbGVjdGl2aXR5IHMgPSAwLjA7CiAKKwlS YW5nZVRibEVudHJ5ICpydGUgPSByb290LT5zaW1wbGVfcnRlX2FycmF5W3JlbC0+cmVsaWRd OworCiAJLyogbWF0Y2gvbWlzbWF0Y2ggYml0bWFwIGZvciBlYWNoIE1DViBpdGVtICovCiAJ Ym9vbAkgICAqbWF0Y2hlcyA9IE5VTEw7CiAKIAkvKiBsb2FkIHRoZSBNQ1YgbGlzdCBzdG9y ZWQgaW4gdGhlIHN0YXRpc3RpY3Mgb2JqZWN0ICovCi0JbWN2ID0gc3RhdGV4dF9tY3ZfbG9h ZChzdGF0LT5zdGF0T2lkKTsKKwltY3YgPSBzdGF0ZXh0X21jdl9sb2FkKHN0YXQtPnN0YXRP aWQsIHJ0ZS0+aW5oKTsKIAogCS8qIGJ1aWxkIGEgbWF0Y2ggYml0bWFwIGZvciB0aGUgY2xh dXNlcyAqLwogCW1hdGNoZXMgPSBtY3ZfZ2V0X21hdGNoX2JpdG1hcChyb290LCBjbGF1c2Vz LCBzdGF0LT5rZXlzLCBzdGF0LT5leHBycywKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0 YXRpc3RpY3MvbXZkaXN0aW5jdC5jIGIvc3JjL2JhY2tlbmQvc3RhdGlzdGljcy9tdmRpc3Rp bmN0LmMKaW5kZXggNTViODMxZDRmNTAuLjZhZGU1ZWZmNzhjIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9zdGF0aXN0aWNzL212ZGlzdGluY3QuYworKysgYi9zcmMvYmFja2VuZC9zdGF0 aXN0aWNzL212ZGlzdGluY3QuYwpAQCAtMTQ2LDE0ICsxNDYsMTUgQEAgc3RhdGV4dF9uZGlz dGluY3RfYnVpbGQoZG91YmxlIHRvdGFscm93cywgU3RhdHNCdWlsZERhdGEgKmRhdGEpCiAg KgkJTG9hZCB0aGUgbmRpc3RpbmN0IHZhbHVlIGZvciB0aGUgaW5kaWNhdGVkIHBnX3N0YXRp c3RpY19leHQgdHVwbGUKICAqLwogTVZORGlzdGluY3QgKgotc3RhdGV4dF9uZGlzdGluY3Rf bG9hZChPaWQgbXZvaWQpCitzdGF0ZXh0X25kaXN0aW5jdF9sb2FkKE9pZCBtdm9pZCwgYm9v bCBpbmgpCiB7CiAJTVZORGlzdGluY3QgKnJlc3VsdDsKIAlib29sCQlpc251bGw7CiAJRGF0 dW0JCW5kaXN0OwogCUhlYXBUdXBsZQlodHVwOwogCi0JaHR1cCA9IFNlYXJjaFN5c0NhY2hl MShTVEFURVhUREFUQVNUWE9JRCwgT2JqZWN0SWRHZXREYXR1bShtdm9pZCkpOworCWh0dXAg PSBTZWFyY2hTeXNDYWNoZTIoU1RBVEVYVERBVEFTVFhPSUQsCisJCQkJCQkgICBPYmplY3RJ ZEdldERhdHVtKG12b2lkKSwgQm9vbEdldERhdHVtKGluaCkpOwogCWlmICghSGVhcFR1cGxl SXNWYWxpZChodHVwKSkKIAkJZWxvZyhFUlJPUiwgImNhY2hlIGxvb2t1cCBmYWlsZWQgZm9y IHN0YXRpc3RpY3Mgb2JqZWN0ICV1IiwgbXZvaWQpOwogCmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC91dGlscy9hZHQvc2VsZnVuY3MuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9zZWxm dW5jcy5jCmluZGV4IDVkNTY3NDhmMGE3Li5iMDBlZTZhM2JlZiAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvdXRpbHMvYWR0L3NlbGZ1bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMv YWR0L3NlbGZ1bmNzLmMKQEAgLTM5MTksMTcgKzM5MTksNiBAQCBlc3RpbWF0ZV9tdWx0aXZh cmlhdGVfbmRpc3RpbmN0KFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZvICpyZWwsCiAJ aWYgKCFyZWwtPnN0YXRsaXN0KQogCQlyZXR1cm4gZmFsc2U7CiAKLQkvKgotCSAqIFdoZW4g ZGVhbGluZyB3aXRoIHJlZ3VsYXIgaW5oZXJpdGFuY2UgdHJlZXMsIGlnbm9yZSBleHRlbmRl ZCBzdGF0cwotCSAqICh3aGljaCB3ZXJlIGJ1aWx0IHdpdGhvdXQgZGF0YSBmcm9tIGNoaWxk IHJlbHMsIGFuZCB0aHVzIGRvIG5vdAotCSAqIHJlcHJlc2VudCB0aGVtKS4gRm9yIHBhcnRp dGlvbmVkIHRhYmxlcyBkYXRhIHRoZXJlJ3Mgbm8gZGF0YSBpbiB0aGUKLQkgKiBub24tbGVh ZiByZWxhdGlvbnMsIHNvIHdlIGJ1aWxkIHN0YXRzIG9ubHkgZm9yIHRoZSBpbmhlcml0YW5j ZSB0cmVlLgotCSAqIFNvIGZvciBwYXJ0aXRpb25lZCB0YWJsZXMgd2UgZG8gY29uc2lkZXIg ZXh0ZW5kZWQgc3RhdHMuCi0JICovCi0JcnRlID0gcGxhbm5lcl9ydF9mZXRjaChyZWwtPnJl bGlkLCByb290KTsKLQlpZiAocnRlLT5pbmggJiYgcnRlLT5yZWxraW5kICE9IFJFTEtJTkRf UEFSVElUSU9ORURfVEFCTEUpCi0JCXJldHVybiBmYWxzZTsKLQogCS8qIGxvb2sgZm9yIHRo ZSBuZGlzdGluY3Qgc3RhdGlzdGljcyBvYmplY3QgbWF0Y2hpbmcgdGhlIG1vc3QgdmFycyAq LwogCW5tYXRjaGVzX3ZhcnMgPSAwOwkJCS8qIHdlIHJlcXVpcmUgYXQgbGVhc3QgdHdvIG1h dGNoZXMgKi8KIAlubWF0Y2hlc19leHBycyA9IDA7CkBAIC00MDE1LDcgKzQwMDQsOCBAQCBl c3RpbWF0ZV9tdWx0aXZhcmlhdGVfbmRpc3RpbmN0KFBsYW5uZXJJbmZvICpyb290LCBSZWxP cHRJbmZvICpyZWwsCiAKIAlBc3NlcnQobm1hdGNoZXNfdmFycyArIG5tYXRjaGVzX2V4cHJz ID4gMSk7CiAKLQlzdGF0cyA9IHN0YXRleHRfbmRpc3RpbmN0X2xvYWQoc3RhdE9pZCk7CisJ cnRlID0gcGxhbm5lcl9ydF9mZXRjaChyZWwtPnJlbGlkLCByb290KTsKKwlzdGF0cyA9IHN0 YXRleHRfbmRpc3RpbmN0X2xvYWQoc3RhdE9pZCwgcnRlLT5pbmgpOwogCiAJLyoKIAkgKiBJ ZiB3ZSBoYXZlIGEgbWF0Y2gsIHNlYXJjaCBpdCBmb3IgdGhlIHNwZWNpZmljIGl0ZW0gdGhh dCBtYXRjaGVzICh0aGVyZQpAQCAtNTI0NSwxNyArNTIzNSw2IEBAIGV4YW1pbmVfdmFyaWFi bGUoUGxhbm5lckluZm8gKnJvb3QsIE5vZGUgKm5vZGUsIGludCB2YXJSZWxpZCwKIAkJCWlm ICh2YXJkYXRhLT5zdGF0c1R1cGxlKQogCQkJCWJyZWFrOwogCi0JCQkvKgotCQkJICogV2hl biBkZWFsaW5nIHdpdGggcmVndWxhciBpbmhlcml0YW5jZSB0cmVlcywgaWdub3JlIGV4dGVu ZGVkCi0JCQkgKiBzdGF0cyAod2hpY2ggd2VyZSBidWlsdCB3aXRob3V0IGRhdGEgZnJvbSBj aGlsZCByZWxzLCBhbmQgdGh1cwotCQkJICogZG8gbm90IHJlcHJlc2VudCB0aGVtKS4gRm9y IHBhcnRpdGlvbmVkIHRhYmxlcyBkYXRhIHRoZXJlJ3Mgbm8KLQkJCSAqIGRhdGEgaW4gdGhl IG5vbi1sZWFmIHJlbGF0aW9ucywgc28gd2UgYnVpbGQgc3RhdHMgb25seSBmb3IgdGhlCi0J CQkgKiBpbmhlcml0YW5jZSB0cmVlLiBTbyBmb3IgcGFydGl0aW9uZWQgdGFibGVzIHdlIGRv IGNvbnNpZGVyCi0JCQkgKiBleHRlbmRlZCBzdGF0cy4KLQkJCSAqLwotCQkJaWYgKHJ0ZS0+ aW5oICYmIHJ0ZS0+cmVsa2luZCAhPSBSRUxLSU5EX1BBUlRJVElPTkVEX1RBQkxFKQotCQkJ CWJyZWFrOwotCiAJCQkvKiBza2lwIHN0YXRzIHdpdGhvdXQgcGVyLWV4cHJlc3Npb24gc3Rh dHMgKi8KIAkJCWlmIChpbmZvLT5raW5kICE9IFNUQVRTX0VYVF9FWFBSRVNTSU9OUykKIAkJ CQljb250aW51ZTsKQEAgLTUyNzQsMjIgKzUyNTMsMTggQEAgZXhhbWluZV92YXJpYWJsZShQ bGFubmVySW5mbyAqcm9vdCwgTm9kZSAqbm9kZSwgaW50IHZhclJlbGlkLAogCQkJCS8qIGZv dW5kIGEgbWF0Y2gsIHNlZSBpZiB3ZSBjYW4gZXh0cmFjdCBwZ19zdGF0aXN0aWMgcm93ICov CiAJCQkJaWYgKGVxdWFsKG5vZGUsIGV4cHIpKQogCQkJCXsKLQkJCQkJSGVhcFR1cGxlCXQg PSBzdGF0ZXh0X2V4cHJlc3Npb25zX2xvYWQoaW5mby0+c3RhdE9pZCwgcG9zKTsKLQotCQkJ CQkvKiBHZXQgc3RhdGlzdGljcyBvYmplY3QncyB0YWJsZSBmb3IgcGVybWlzc2lvbiBjaGVj ayAqLwotCQkJCQlSYW5nZVRibEVudHJ5ICpydGU7CiAJCQkJCU9pZAkJCXVzZXJpZDsKIAot CQkJCQl2YXJkYXRhLT5zdGF0c1R1cGxlID0gdDsKKwkJCQkJQXNzZXJ0KHJ0ZS0+cnRla2lu ZCA9PSBSVEVfUkVMQVRJT04pOwogCiAJCQkJCS8qCiAJCQkJCSAqIFhYWCBOb3Qgc3VyZSBp ZiB3ZSBzaG91bGQgY2FjaGUgdGhlIHR1cGxlIHNvbWV3aGVyZS4KIAkJCQkJICogTm93IHdl IGp1c3QgY3JlYXRlIGEgbmV3IGNvcHkgZXZlcnkgdGltZS4KIAkJCQkJICovCi0JCQkJCXZh cmRhdGEtPmZyZWVmdW5jID0gUmVsZWFzZUR1bW15OworCQkJCQl2YXJkYXRhLT5zdGF0c1R1 cGxlID0KKwkJCQkJCXN0YXRleHRfZXhwcmVzc2lvbnNfbG9hZChpbmZvLT5zdGF0T2lkLCBy dGUtPmluaCwgcG9zKTsKIAotCQkJCQlydGUgPSBwbGFubmVyX3J0X2ZldGNoKG9uZXJlbC0+ cmVsaWQsIHJvb3QpOwotCQkJCQlBc3NlcnQocnRlLT5ydGVraW5kID09IFJURV9SRUxBVElP Tik7CisJCQkJCXZhcmRhdGEtPmZyZWVmdW5jID0gUmVsZWFzZUR1bW15OwogCiAJCQkJCS8q CiAJCQkJCSAqIFVzZSBjaGVja0FzVXNlciBpZiBpdCdzIHNldCwgaW4gY2FzZSB3ZSdyZSBh Y2Nlc3NpbmcKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3N5c2NhY2hl LmMgYi9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9zeXNjYWNoZS5jCmluZGV4IGJlZWViZmU1 OWYxLi5mNGU3ODE5ZjFlMiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUv c3lzY2FjaGUuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9zeXNjYWNoZS5jCkBA IC03NjMsMTEgKzc2MywxMSBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGNhY2hlZGVzYyBjYWNo ZWluZm9bXSA9IHsKIAkJMzIKIAl9LAogCXtTdGF0aXN0aWNFeHREYXRhUmVsYXRpb25JZCwJ LyogU1RBVEVYVERBVEFTVFhPSUQgKi8KLQkJU3RhdGlzdGljRXh0RGF0YVN0eG9pZEluZGV4 SWQsCi0JCTEsCisJCVN0YXRpc3RpY0V4dERhdGFTdHhvaWRJbmhJbmRleElkLAorCQkyLAog CQl7CiAJCQlBbnVtX3BnX3N0YXRpc3RpY19leHRfZGF0YV9zdHhvaWQsCi0JCQkwLAorCQkJ QW51bV9wZ19zdGF0aXN0aWNfZXh0X2RhdGFfc3R4ZGluaGVyaXQsCiAJCQkwLAogCQkJMAog CQl9LApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19zdGF0aXN0aWNfZXh0 X2RhdGEuaCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfc3RhdGlzdGljX2V4dF9kYXRhLmgK aW5kZXggN2M5NGQ3YjdjZDcuLmIwMWU2MjA1OTc0IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVk ZS9jYXRhbG9nL3BnX3N0YXRpc3RpY19leHRfZGF0YS5oCisrKyBiL3NyYy9pbmNsdWRlL2Nh dGFsb2cvcGdfc3RhdGlzdGljX2V4dF9kYXRhLmgKQEAgLTMyLDYgKzMyLDcgQEAgQ0FUQUxP RyhwZ19zdGF0aXN0aWNfZXh0X2RhdGEsMzQyOSxTdGF0aXN0aWNFeHREYXRhUmVsYXRpb25J ZCkKIHsKIAlPaWQJCQlzdHhvaWQgQktJX0xPT0tVUChwZ19zdGF0aXN0aWNfZXh0KTsJLyog c3RhdGlzdGljcyBvYmplY3QKIAkJCQkJCQkJCQkJCQkJICogdGhpcyBkYXRhIGlzIGZvciAq LworCWJvb2wJCXN0eGRpbmhlcml0OwkvKiB0cnVlIGlmIGluaGVyaXRhbmNlIGNoaWxkcmVu IGFyZSBpbmNsdWRlZCAqLwogCiAjaWZkZWYgQ0FUQUxPR19WQVJMRU4JCQkvKiB2YXJpYWJs ZS1sZW5ndGggZmllbGRzIHN0YXJ0IGhlcmUgKi8KIApAQCAtNTMsNiArNTQsNyBAQCB0eXBl ZGVmIEZvcm1EYXRhX3BnX3N0YXRpc3RpY19leHRfZGF0YSAqIEZvcm1fcGdfc3RhdGlzdGlj X2V4dF9kYXRhOwogCiBERUNMQVJFX1RPQVNUKHBnX3N0YXRpc3RpY19leHRfZGF0YSwgMzQz MCwgMzQzMSk7CiAKLURFQ0xBUkVfVU5JUVVFX0lOREVYX1BLRVkocGdfc3RhdGlzdGljX2V4 dF9kYXRhX3N0eG9pZF9pbmRleCwgMzQzMywgU3RhdGlzdGljRXh0RGF0YVN0eG9pZEluZGV4 SWQsIG9uIHBnX3N0YXRpc3RpY19leHRfZGF0YSB1c2luZyBidHJlZShzdHhvaWQgb2lkX29w cykpOworREVDTEFSRV9VTklRVUVfSU5ERVhfUEtFWShwZ19zdGF0aXN0aWNfZXh0X2RhdGFf c3R4b2lkX2luaF9pbmRleCwgMzQzMywgU3RhdGlzdGljRXh0RGF0YVN0eG9pZEluaEluZGV4 SWQsIG9uIHBnX3N0YXRpc3RpY19leHRfZGF0YSB1c2luZyBidHJlZShzdHhvaWQgb2lkX29w cywgc3R4ZGluaGVyaXQgYm9vbF9vcHMpKTsKKwogCiAjZW5kaWYJCQkJCQkJLyogUEdfU1RB VElTVElDX0VYVF9EQVRBX0ggKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NvbW1hbmRz L2RlZnJlbS5oIGIvc3JjL2luY2x1ZGUvY29tbWFuZHMvZGVmcmVtLmgKaW5kZXggMmQzY2Rk ZGFmNDguLjU2ZDJiYjY2MTYxIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jb21tYW5kcy9k ZWZyZW0uaAorKysgYi9zcmMvaW5jbHVkZS9jb21tYW5kcy9kZWZyZW0uaApAQCAtODMsNiAr ODMsNyBAQCBleHRlcm4gT2JqZWN0QWRkcmVzcyBBbHRlck9wZXJhdG9yKEFsdGVyT3BlcmF0 b3JTdG10ICpzdG10KTsKIGV4dGVybiBPYmplY3RBZGRyZXNzIENyZWF0ZVN0YXRpc3RpY3Mo Q3JlYXRlU3RhdHNTdG10ICpzdG10KTsKIGV4dGVybiBPYmplY3RBZGRyZXNzIEFsdGVyU3Rh dGlzdGljcyhBbHRlclN0YXRzU3RtdCAqc3RtdCk7CiBleHRlcm4gdm9pZCBSZW1vdmVTdGF0 aXN0aWNzQnlJZChPaWQgc3RhdHNPaWQpOworZXh0ZXJuIHZvaWQgUmVtb3ZlU3RhdGlzdGlj c0RhdGFCeUlkKE9pZCBzdGF0c09pZCwgYm9vbCBpbmgpOwogZXh0ZXJuIE9pZAlTdGF0aXN0 aWNzR2V0UmVsYXRpb24oT2lkIHN0YXRJZCwgYm9vbCBtaXNzaW5nX29rKTsKIAogLyogY29t bWFuZHMvYWdncmVnYXRlY21kcy5jICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rl cy9wYXRobm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL3BhdGhub2Rlcy5oCmluZGV4IDFm MzNmZTEzYzExLi4xZjM4NDViM2ZlYyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMv cGF0aG5vZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGF0aG5vZGVzLmgKQEAgLTkz NCw2ICs5MzQsNyBAQCB0eXBlZGVmIHN0cnVjdCBTdGF0aXN0aWNFeHRJbmZvCiAJTm9kZVRh ZwkJdHlwZTsKIAogCU9pZAkJCXN0YXRPaWQ7CQkvKiBPSUQgb2YgdGhlIHN0YXRpc3RpY3Mg cm93ICovCisJYm9vbAkJaW5oZXJpdDsJCS8qIGluY2x1ZGVzIGNoaWxkIHJlbGF0aW9ucyAq LwogCVJlbE9wdEluZm8gKnJlbDsJCQkvKiBiYWNrLWxpbmsgdG8gc3RhdGlzdGljJ3MgdGFi bGUgKi8KIAljaGFyCQlraW5kOwkJCS8qIHN0YXRpc3RpY3Mga2luZCBvZiB0aGlzIGVudHJ5 ICovCiAJQml0bWFwc2V0ICAqa2V5czsJCQkvKiBhdHRudW1zIG9mIHRoZSBjb2x1bW5zIGNv dmVyZWQgKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3N0YXRpc3RpY3Mvc3RhdGlzdGlj cy5oIGIvc3JjL2luY2x1ZGUvc3RhdGlzdGljcy9zdGF0aXN0aWNzLmgKaW5kZXggNGEzNjc2 Mjc4ZGUuLmJiN2VmMTI0MGUwIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9zdGF0aXN0aWNz L3N0YXRpc3RpY3MuaAorKysgYi9zcmMvaW5jbHVkZS9zdGF0aXN0aWNzL3N0YXRpc3RpY3Mu aApAQCAtOTQsMTEgKzk0LDExIEBAIHR5cGVkZWYgc3RydWN0IE1DVkxpc3QKIAlNQ1ZJdGVt CQlpdGVtc1tGTEVYSUJMRV9BUlJBWV9NRU1CRVJdOwkvKiBhcnJheSBvZiBNQ1YgaXRlbXMg Ki8KIH0gTUNWTGlzdDsKIAotZXh0ZXJuIE1WTkRpc3RpbmN0ICpzdGF0ZXh0X25kaXN0aW5j dF9sb2FkKE9pZCBtdm9pZCk7Ci1leHRlcm4gTVZEZXBlbmRlbmNpZXMgKnN0YXRleHRfZGVw ZW5kZW5jaWVzX2xvYWQoT2lkIG12b2lkKTsKLWV4dGVybiBNQ1ZMaXN0ICpzdGF0ZXh0X21j dl9sb2FkKE9pZCBtdm9pZCk7CitleHRlcm4gTVZORGlzdGluY3QgKnN0YXRleHRfbmRpc3Rp bmN0X2xvYWQoT2lkIG12b2lkLCBib29sIGluaCk7CitleHRlcm4gTVZEZXBlbmRlbmNpZXMg KnN0YXRleHRfZGVwZW5kZW5jaWVzX2xvYWQoT2lkIG12b2lkLCBib29sIGluaCk7CitleHRl cm4gTUNWTGlzdCAqc3RhdGV4dF9tY3ZfbG9hZChPaWQgbXZvaWQsIGJvb2wgaW5oKTsKIAot ZXh0ZXJuIHZvaWQgQnVpbGRSZWxhdGlvbkV4dFN0YXRpc3RpY3MoUmVsYXRpb24gb25lcmVs LCBkb3VibGUgdG90YWxyb3dzLAorZXh0ZXJuIHZvaWQgQnVpbGRSZWxhdGlvbkV4dFN0YXRp c3RpY3MoUmVsYXRpb24gb25lcmVsLCBib29sIGluaCwgZG91YmxlIHRvdGFscm93cywKIAkJ CQkJCQkJCSAgIGludCBudW1yb3dzLCBIZWFwVHVwbGUgKnJvd3MsCiAJCQkJCQkJCQkgICBp bnQgbmF0dHMsIFZhY0F0dHJTdGF0cyAqKnZhY2F0dHJzdGF0cyk7CiBleHRlcm4gaW50CUNv bXB1dGVFeHRTdGF0aXN0aWNzUm93cyhSZWxhdGlvbiBvbmVyZWwsCkBAIC0xMjEsOSArMTIx LDEwIEBAIGV4dGVybiBTZWxlY3Rpdml0eSBzdGF0ZXh0X2NsYXVzZWxpc3Rfc2VsZWN0aXZp dHkoUGxhbm5lckluZm8gKnJvb3QsCiAJCQkJCQkJCQkJCQkgIGJvb2wgaXNfb3IpOwogZXh0 ZXJuIGJvb2wgaGFzX3N0YXRzX29mX2tpbmQoTGlzdCAqc3RhdHMsIGNoYXIgcmVxdWlyZWRr aW5kKTsKIGV4dGVybiBTdGF0aXN0aWNFeHRJbmZvICpjaG9vc2VfYmVzdF9zdGF0aXN0aWNz KExpc3QgKnN0YXRzLCBjaGFyIHJlcXVpcmVka2luZCwKKwkJCQkJCQkJCQkJCWJvb2wgaW5o LAogCQkJCQkJCQkJCQkJQml0bWFwc2V0ICoqY2xhdXNlX2F0dG51bXMsCiAJCQkJCQkJCQkJ CQlMaXN0ICoqY2xhdXNlX2V4cHJzLAogCQkJCQkJCQkJCQkJaW50IG5jbGF1c2VzKTsKLWV4 dGVybiBIZWFwVHVwbGUgc3RhdGV4dF9leHByZXNzaW9uc19sb2FkKE9pZCBzdHhvaWQsIGlu dCBpZHgpOworZXh0ZXJuIEhlYXBUdXBsZSBzdGF0ZXh0X2V4cHJlc3Npb25zX2xvYWQoT2lk IHN0eG9pZCwgYm9vbCBpbmgsIGludCBpZHgpOwogCiAjZW5kaWYJCQkJCQkJLyogU1RBVElT VElDU19IICovCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3J1bGVz Lm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnVsZXMub3V0CmluZGV4IGI1OGIw NjJiMTBkLi5kNjUyZjdiNWZiNCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBl Y3RlZC9ydWxlcy5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ydWxlcy5v dXQKQEAgLTI0NDMsNiArMjQ0Myw3IEBAIHBnX3N0YXRzX2V4dHwgU0VMRUNUIGNuLm5zcG5h bWUgQVMgc2NoZW1hbmFtZSwKICAgICAgICAgICAgICBKT0lOIHBnX2F0dHJpYnV0ZSBhIE9O ICgoKGEuYXR0cmVsaWQgPSBzLnN0eHJlbGlkKSBBTkQgKGEuYXR0bnVtID0gay5rKSkpKSkg QVMgYXR0bmFtZXMsCiAgICAgcGdfZ2V0X3N0YXRpc3RpY3NvYmpkZWZfZXhwcmVzc2lvbnMo cy5vaWQpIEFTIGV4cHJzLAogICAgIHMuc3R4a2luZCBBUyBraW5kcywKKyAgICBzZC5zdHhk aW5oZXJpdCBBUyBpbmhlcml0ZWQsCiAgICAgc2Quc3R4ZG5kaXN0aW5jdCBBUyBuX2Rpc3Rp bmN0LAogICAgIHNkLnN0eGRkZXBlbmRlbmNpZXMgQVMgZGVwZW5kZW5jaWVzLAogICAgIG0u bW9zdF9jb21tb25fdmFscywKQEAgLTI0NjksNiArMjQ3MCw3IEBAIHBnX3N0YXRzX2V4dF9l eHByc3wgU0VMRUNUIGNuLm5zcG5hbWUgQVMgc2NoZW1hbmFtZSwKICAgICBzLnN0eG5hbWUg QVMgc3RhdGlzdGljc19uYW1lLAogICAgIHBnX2dldF91c2VyYnlpZChzLnN0eG93bmVyKSBB UyBzdGF0aXN0aWNzX293bmVyLAogICAgIHN0YXQuZXhwciwKKyAgICBzZC5zdHhkaW5oZXJp dCBBUyBpbmhlcml0ZWQsCiAgICAgKHN0YXQuYSkuc3RhbnVsbGZyYWMgQVMgbnVsbF9mcmFj LAogICAgIChzdGF0LmEpLnN0YXdpZHRoIEFTIGF2Z193aWR0aCwKICAgICAoc3RhdC5hKS5z dGFkaXN0aW5jdCBBUyBuX2Rpc3RpbmN0LApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVz cy9leHBlY3RlZC9zdGF0c19leHQub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9z dGF0c19leHQub3V0CmluZGV4IGZkMGNjNTRlYTExLi4wNDIzMTZhZWVkOCAxMDA2NDQKLS0t IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zdGF0c19leHQub3V0CisrKyBiL3NyYy90 ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc3RhdHNfZXh0Lm91dApAQCAtMTQwLDEzICsxNDAsMTIg QEAgU3RhdGlzdGljcyBvYmplY3RzOgogICAgICJwdWJsaWMuYWIxX2FfYl9zdGF0cyIgT04g YSwgYiBGUk9NIGFiMTsgU1RBVElTVElDUyAwCiAKIEFOQUxZWkUgYWIxOwotU0VMRUNUIHN0 eG5hbWUsIHN0eGRuZGlzdGluY3QsIHN0eGRkZXBlbmRlbmNpZXMsIHN0eGRtY3YKLSAgRlJP TSBwZ19zdGF0aXN0aWNfZXh0IHMsIHBnX3N0YXRpc3RpY19leHRfZGF0YSBkCi0gV0hFUkUg cy5zdHhuYW1lID0gJ2FiMV9hX2Jfc3RhdHMnCi0gICBBTkQgZC5zdHhvaWQgPSBzLm9pZDsK LSAgICBzdHhuYW1lICAgIHwgc3R4ZG5kaXN0aW5jdCB8IHN0eGRkZXBlbmRlbmNpZXMgfCBz dHhkbWN2IAotLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tCi0gYWIxX2FfYl9zdGF0cyB8ICAgICAgICAgICAgICAgfCAgICAg ICAgICAgICAgICAgIHwgCitTRUxFQ1Qgc3R4bmFtZSwgc3R4ZG5kaXN0aW5jdCwgc3R4ZGRl cGVuZGVuY2llcywgc3R4ZG1jdiwgc3R4ZGluaGVyaXQKKyAgRlJPTSBwZ19zdGF0aXN0aWNf ZXh0IHMgTEVGVCBKT0lOIHBnX3N0YXRpc3RpY19leHRfZGF0YSBkIE9OIChkLnN0eG9pZCA9 IHMub2lkKQorIFdIRVJFIHMuc3R4bmFtZSA9ICdhYjFfYV9iX3N0YXRzJzsKKyAgICBzdHhu YW1lICAgIHwgc3R4ZG5kaXN0aW5jdCB8IHN0eGRkZXBlbmRlbmNpZXMgfCBzdHhkbWN2IHwg c3R4ZGluaGVyaXQgCistLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLQorIGFiMV9hX2Jfc3RhdHMgfCAg ICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfCAKICgxIHJvdykK IAogQUxURVIgU1RBVElTVElDUyBhYjFfYV9iX3N0YXRzIFNFVCBTVEFUSVNUSUNTIC0xOwpA QCAtMjAwLDEyICsxOTksMTEgQEAgU0VMRUNUICogRlJPTSBjaGVja19lc3RpbWF0ZWRfcm93 cygnU0VMRUNUIGEsIGIgRlJPTSBzdHhkaW5oKiBXSEVSRSBhID0gMCBBTkQgYgogCiBDUkVB VEUgU1RBVElTVElDUyBzdHhkaW5oIE9OIGEsIGIgRlJPTSBzdHhkaW5oOwogVkFDVVVNIEFO QUxZWkUgc3R4ZGluaCwgc3R4ZGluaDEsIHN0eGRpbmgyOwotLS0gU2luY2UgdGhlIHN0YXRz IG9iamVjdCBkb2VzIG5vdCBpbmNsdWRlIGluaGVyaXRlZCBzdGF0cywgaXQgc2hvdWxkIG5v dAotLS0gYWZmZWN0IHRoZSBlc3RpbWF0ZXMKKy0tIFNlZSBpZiB0aGUgZXh0ZW5kZWQgc3Rh dHMgYWZmZWN0IHRoZSBlc3RpbWF0ZXMKIFNFTEVDVCAqIEZST00gY2hlY2tfZXN0aW1hdGVk X3Jvd3MoJ1NFTEVDVCBhLCBiIEZST00gc3R4ZGluaCogR1JPVVAgQlkgMSwgMicpOwogIGVz dGltYXRlZCB8IGFjdHVhbCAKIC0tLS0tLS0tLS0tKy0tLS0tLS0tCi0gICAgICAgNDAwIHwg ICAgMTUwCisgICAgICAgMTUwIHwgICAgMTUwCiAoMSByb3cpCiAKIC0tIERlcGVuZGVuY2ll cyBhcmUgYXBwbGllZCBhdCBpbmRpdmlkdWFsIHJlbGF0aW9ucyAod2l0aGluIGFwcGVuZCks IHNvCkBAIC0yMTYsNiArMjE0LDE5IEBAIFNFTEVDVCAqIEZST00gY2hlY2tfZXN0aW1hdGVk X3Jvd3MoJ1NFTEVDVCBhLCBiIEZST00gc3R4ZGluaCogV0hFUkUgYSA9IDAgQU5EIGIKICAg ICAgICAgMjIgfCAgICAgNDAKICgxIHJvdykKIAorLS0gRW5zdXJlIGNvcnJlY3QgKG5vbi1p bmhlcml0ZWQpIHN0YXRzIGFyZSBhcHBsaWVkIHRvIGluaGVyaXRlZCBxdWVyeQorU0VMRUNU ICogRlJPTSBjaGVja19lc3RpbWF0ZWRfcm93cygnU0VMRUNUIGEsIGIgRlJPTSBPTkxZIHN0 eGRpbmggR1JPVVAgQlkgMSwgMicpOworIGVzdGltYXRlZCB8IGFjdHVhbCAKKy0tLS0tLS0t LS0tKy0tLS0tLS0tCisgICAgICAgMTAwIHwgICAgMTAwCisoMSByb3cpCisKK1NFTEVDVCAq IEZST00gY2hlY2tfZXN0aW1hdGVkX3Jvd3MoJ1NFTEVDVCBhLCBiIEZST00gT05MWSBzdHhk aW5oIFdIRVJFIGEgPSAwIEFORCBiID0gMCcpOworIGVzdGltYXRlZCB8IGFjdHVhbCAKKy0t LS0tLS0tLS0tKy0tLS0tLS0tCisgICAgICAgIDIwIHwgICAgIDIwCisoMSByb3cpCisKIERS T1AgVEFCTEUgc3R4ZGluaCwgc3R4ZGluaDEsIHN0eGRpbmgyOwogLS0gRW5zdXJlIGluaGVy aXRlZCBzdGF0cyBBUkUgYXBwbGllZCB0byBpbmhlcml0ZWQgcXVlcnkgaW4gcGFydGl0aW9u ZWQgdGFibGUKIENSRUFURSBUQUJMRSBzdHhkaW5wKGkgaW50LCBhIGludCwgYiBpbnQpIFBB UlRJVElPTiBCWSBSQU5HRSAoaSk7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3Nx bC9zdGF0c19leHQuc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvc3RhdHNfZXh0LnNxbApp bmRleCBkMmM1OWIwYThhZC4uNmI5NTRjOWU1MDAgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3Jl Z3Jlc3Mvc3FsL3N0YXRzX2V4dC5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvc3Rh dHNfZXh0LnNxbApAQCAtOTEsMTAgKzkxLDkgQEAgQUxURVIgVEFCTEUgYWIxIEFMVEVSIGEg U0VUIFNUQVRJU1RJQ1MgLTE7CiBBTFRFUiBTVEFUSVNUSUNTIGFiMV9hX2Jfc3RhdHMgU0VU IFNUQVRJU1RJQ1MgMDsKIFxkIGFiMQogQU5BTFlaRSBhYjE7Ci1TRUxFQ1Qgc3R4bmFtZSwg c3R4ZG5kaXN0aW5jdCwgc3R4ZGRlcGVuZGVuY2llcywgc3R4ZG1jdgotICBGUk9NIHBnX3N0 YXRpc3RpY19leHQgcywgcGdfc3RhdGlzdGljX2V4dF9kYXRhIGQKLSBXSEVSRSBzLnN0eG5h bWUgPSAnYWIxX2FfYl9zdGF0cycKLSAgIEFORCBkLnN0eG9pZCA9IHMub2lkOworU0VMRUNU IHN0eG5hbWUsIHN0eGRuZGlzdGluY3QsIHN0eGRkZXBlbmRlbmNpZXMsIHN0eGRtY3YsIHN0 eGRpbmhlcml0CisgIEZST00gcGdfc3RhdGlzdGljX2V4dCBzIExFRlQgSk9JTiBwZ19zdGF0 aXN0aWNfZXh0X2RhdGEgZCBPTiAoZC5zdHhvaWQgPSBzLm9pZCkKKyBXSEVSRSBzLnN0eG5h bWUgPSAnYWIxX2FfYl9zdGF0cyc7CiBBTFRFUiBTVEFUSVNUSUNTIGFiMV9hX2Jfc3RhdHMg U0VUIFNUQVRJU1RJQ1MgLTE7CiBcZCsgYWIxCiAtLSBwYXJ0aWFsIGFuYWx5emUgZG9lc24n dCBidWlsZCBzdGF0cyBlaXRoZXIKQEAgLTEyNiwxMiArMTI1LDE0IEBAIFNFTEVDVCAqIEZS T00gY2hlY2tfZXN0aW1hdGVkX3Jvd3MoJ1NFTEVDVCBhLCBiIEZST00gc3R4ZGluaCogR1JP VVAgQlkgMSwgMicpOwogU0VMRUNUICogRlJPTSBjaGVja19lc3RpbWF0ZWRfcm93cygnU0VM RUNUIGEsIGIgRlJPTSBzdHhkaW5oKiBXSEVSRSBhID0gMCBBTkQgYiA9IDAnKTsKIENSRUFU RSBTVEFUSVNUSUNTIHN0eGRpbmggT04gYSwgYiBGUk9NIHN0eGRpbmg7CiBWQUNVVU0gQU5B TFlaRSBzdHhkaW5oLCBzdHhkaW5oMSwgc3R4ZGluaDI7Ci0tLSBTaW5jZSB0aGUgc3RhdHMg b2JqZWN0IGRvZXMgbm90IGluY2x1ZGUgaW5oZXJpdGVkIHN0YXRzLCBpdCBzaG91bGQgbm90 Ci0tLSBhZmZlY3QgdGhlIGVzdGltYXRlcworLS0gU2VlIGlmIHRoZSBleHRlbmRlZCBzdGF0 cyBhZmZlY3QgdGhlIGVzdGltYXRlcwogU0VMRUNUICogRlJPTSBjaGVja19lc3RpbWF0ZWRf cm93cygnU0VMRUNUIGEsIGIgRlJPTSBzdHhkaW5oKiBHUk9VUCBCWSAxLCAyJyk7CiAtLSBE ZXBlbmRlbmNpZXMgYXJlIGFwcGxpZWQgYXQgaW5kaXZpZHVhbCByZWxhdGlvbnMgKHdpdGhp biBhcHBlbmQpLCBzbwogLS0gdGhpcyBlc3RpbWF0ZSBjaGFuZ2VzIGEgYml0IGJlY2F1c2Ug d2UgaW1wcm92ZSBlc3RpbWF0ZXMgZm9yIHRoZSBwYXJlbnQKIFNFTEVDVCAqIEZST00gY2hl Y2tfZXN0aW1hdGVkX3Jvd3MoJ1NFTEVDVCBhLCBiIEZST00gc3R4ZGluaCogV0hFUkUgYSA9 IDAgQU5EIGIgPSAwJyk7CistLSBFbnN1cmUgY29ycmVjdCAobm9uLWluaGVyaXRlZCkgc3Rh dHMgYXJlIGFwcGxpZWQgdG8gaW5oZXJpdGVkIHF1ZXJ5CitTRUxFQ1QgKiBGUk9NIGNoZWNr X2VzdGltYXRlZF9yb3dzKCdTRUxFQ1QgYSwgYiBGUk9NIE9OTFkgc3R4ZGluaCBHUk9VUCBC WSAxLCAyJyk7CitTRUxFQ1QgKiBGUk9NIGNoZWNrX2VzdGltYXRlZF9yb3dzKCdTRUxFQ1Qg YSwgYiBGUk9NIE9OTFkgc3R4ZGluaCBXSEVSRSBhID0gMCBBTkQgYiA9IDAnKTsKIERST1Ag VEFCTEUgc3R4ZGluaCwgc3R4ZGluaDEsIHN0eGRpbmgyOwogCiAtLSBFbnN1cmUgaW5oZXJp dGVkIHN0YXRzIEFSRSBhcHBsaWVkIHRvIGluaGVyaXRlZCBxdWVyeSBpbiBwYXJ0aXRpb25l ZCB0YWJsZQotLSAKMi4zMS4xCgo= --------------krEjryGqqIp57JesRDbyk4Se Content-Type: text/x-patch; charset=UTF-8; name="0002-Refactor-parent-ACL-check-20220115.patch" Content-Disposition: attachment; filename="0002-Refactor-parent-ACL-check-20220115.patch" Content-Transfer-Encoding: base64 RnJvbSA5NWZjMDVmZjc4MjJlNTVjNTcwYzhmZDYyODJkZDNkNjQ1OWJiNTk0IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBUb21hcyBWb25kcmEgPHRvbWFzQDJuZHF1YWRyYW50 LmNvbT4KRGF0ZTogU3VuLCAxMiBEZWMgMjAyMSAwMjoyODo0MSArMDEwMApTdWJqZWN0OiBb UEFUQ0ggMi8yXSBSZWZhY3RvciBwYXJlbnQgQUNMIGNoZWNrCgpzZWxmdW5jcy5jIGlzIDhr IGxpbmVzIGxvbmcsIGFuZCB0aGlzIG1ha2VzIGl0IDMwIExPQyBzaG9ydGVyLgotLS0KIHNy Yy9iYWNrZW5kL3V0aWxzL2FkdC9zZWxmdW5jcy5jIHwgMTQwICsrKysrKysrKysrKy0tLS0t LS0tLS0tLS0tLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCA1MiBpbnNlcnRpb25zKCspLCA4OCBk ZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvc2VsZnVu Y3MuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9zZWxmdW5jcy5jCmluZGV4IGIwMGVlNmEz YmVmLi5iMWNlYjAxNzc1ZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3Nl bGZ1bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3NlbGZ1bmNzLmMKQEAgLTE4 Nyw2ICsxODcsOCBAQCBzdGF0aWMgY2hhciAqY29udmVydF9zdHJpbmdfZGF0dW0oRGF0dW0g dmFsdWUsIE9pZCB0eXBpZCwgT2lkIGNvbGxpZCwKIAkJCQkJCQkJICBib29sICpmYWlsdXJl KTsKIHN0YXRpYyBkb3VibGUgY29udmVydF90aW1ldmFsdWVfdG9fc2NhbGFyKERhdHVtIHZh bHVlLCBPaWQgdHlwaWQsCiAJCQkJCQkJCQkJICBib29sICpmYWlsdXJlKTsKK3N0YXRpYyB2 b2lkIHJlY2hlY2tfcGFyZW50X2FjbChQbGFubmVySW5mbyAqcm9vdCwgVmFyaWFibGVTdGF0 RGF0YSAqdmFyZGF0YSwKKwkJCQkJCQkJT2lkIHJlbGlkKTsKIHN0YXRpYyB2b2lkIGV4YW1p bmVfc2ltcGxlX3ZhcmlhYmxlKFBsYW5uZXJJbmZvICpyb290LCBWYXIgKnZhciwKIAkJCQkJ CQkJCVZhcmlhYmxlU3RhdERhdGEgKnZhcmRhdGEpOwogc3RhdGljIGJvb2wgZ2V0X3Zhcmlh YmxlX3JhbmdlKFBsYW5uZXJJbmZvICpyb290LCBWYXJpYWJsZVN0YXREYXRhICp2YXJkYXRh LApAQCAtNTE1Myw1MSArNTE1NSw3IEBAIGV4YW1pbmVfdmFyaWFibGUoUGxhbm5lckluZm8g KnJvb3QsIE5vZGUgKm5vZGUsIGludCB2YXJSZWxpZCwKIAkJCQkJCQkJCShwZ19jbGFzc19h Y2xjaGVjayhydGUtPnJlbGlkLCB1c2VyaWQsCiAJCQkJCQkJCQkJCQkJICAgQUNMX1NFTEVD VCkgPT0gQUNMQ0hFQ0tfT0spOwogCi0JCQkJCQkJCS8qCi0JCQkJCQkJCSAqIElmIHRoZSB1 c2VyIGRvZXNuJ3QgaGF2ZSBwZXJtaXNzaW9ucyB0bwotCQkJCQkJCQkgKiBhY2Nlc3MgYW4g aW5oZXJpdGFuY2UgY2hpbGQgcmVsYXRpb24sIGNoZWNrCi0JCQkJCQkJCSAqIHRoZSBwZXJt aXNzaW9ucyBvZiB0aGUgdGFibGUgYWN0dWFsbHkKLQkJCQkJCQkJICogbWVudGlvbmVkIGlu IHRoZSBxdWVyeSwgc2luY2UgbW9zdCBsaWtlbHkKLQkJCQkJCQkJICogdGhlIHVzZXIgZG9l cyBoYXZlIHRoYXQgcGVybWlzc2lvbi4gIE5vdGUKLQkJCQkJCQkJICogdGhhdCB3aG9sZS10 YWJsZSBzZWxlY3QgcHJpdmlsZWdlIG9uIHRoZQotCQkJCQkJCQkgKiBwYXJlbnQgZG9lc24n dCBxdWl0ZSBndWFyYW50ZWUgdGhhdCB0aGUKLQkJCQkJCQkJICogdXNlciBjb3VsZCByZWFk IGFsbCBjb2x1bW5zIG9mIHRoZSBjaGlsZC4KLQkJCQkJCQkJICogQnV0IGluIHByYWN0aWNl IGl0J3MgdW5saWtlbHkgdGhhdCBhbnkKLQkJCQkJCQkJICogaW50ZXJlc3Rpbmcgc2VjdXJp dHkgdmlvbGF0aW9uIGNvdWxkIHJlc3VsdAotCQkJCQkJCQkgKiBmcm9tIGFsbG93aW5nIGFj Y2VzcyB0byB0aGUgZXhwcmVzc2lvbgotCQkJCQkJCQkgKiBpbmRleCdzIHN0YXRzLCBzbyB3 ZSBhbGxvdyBpdCBhbnl3YXkuICBTZWUKLQkJCQkJCQkJICogc2ltaWxhciBjb2RlIGluIGV4 YW1pbmVfc2ltcGxlX3ZhcmlhYmxlKCkKLQkJCQkJCQkJICogZm9yIGFkZGl0aW9uYWwgY29t bWVudHMuCi0JCQkJCQkJCSAqLwotCQkJCQkJCQlpZiAoIXZhcmRhdGEtPmFjbF9vayAmJgot CQkJCQkJCQkJcm9vdC0+YXBwZW5kX3JlbF9hcnJheSAhPSBOVUxMKQotCQkJCQkJCQl7Ci0J CQkJCQkJCQlBcHBlbmRSZWxJbmZvICphcHBpbmZvOwotCQkJCQkJCQkJSW5kZXgJCXZhcm5v ID0gaW5kZXgtPnJlbC0+cmVsaWQ7Ci0KLQkJCQkJCQkJCWFwcGluZm8gPSByb290LT5hcHBl bmRfcmVsX2FycmF5W3Zhcm5vXTsKLQkJCQkJCQkJCXdoaWxlIChhcHBpbmZvICYmCi0JCQkJ CQkJCQkJICAgcGxhbm5lcl9ydF9mZXRjaChhcHBpbmZvLT5wYXJlbnRfcmVsaWQsCi0JCQkJ CQkJCQkJCQkJCQlyb290KS0+cnRla2luZCA9PSBSVEVfUkVMQVRJT04pCi0JCQkJCQkJCQl7 Ci0JCQkJCQkJCQkJdmFybm8gPSBhcHBpbmZvLT5wYXJlbnRfcmVsaWQ7Ci0JCQkJCQkJCQkJ YXBwaW5mbyA9IHJvb3QtPmFwcGVuZF9yZWxfYXJyYXlbdmFybm9dOwotCQkJCQkJCQkJfQot CQkJCQkJCQkJaWYgKHZhcm5vICE9IGluZGV4LT5yZWwtPnJlbGlkKQotCQkJCQkJCQkJewot CQkJCQkJCQkJCS8qIFJlcGVhdCBhY2Nlc3MgY2hlY2sgb24gdGhpcyByZWwgKi8KLQkJCQkJ CQkJCQlydGUgPSBwbGFubmVyX3J0X2ZldGNoKHZhcm5vLCByb290KTsKLQkJCQkJCQkJCQlB c3NlcnQocnRlLT5ydGVraW5kID09IFJURV9SRUxBVElPTik7Ci0KLQkJCQkJCQkJCQl1c2Vy aWQgPSBydGUtPmNoZWNrQXNVc2VyID8gcnRlLT5jaGVja0FzVXNlciA6IEdldFVzZXJJZCgp OwotCi0JCQkJCQkJCQkJdmFyZGF0YS0+YWNsX29rID0KLQkJCQkJCQkJCQkJcnRlLT5zZWN1 cml0eVF1YWxzID09IE5JTCAmJgotCQkJCQkJCQkJCQkocGdfY2xhc3NfYWNsY2hlY2socnRl LT5yZWxpZCwKLQkJCQkJCQkJCQkJCQkJCSAgIHVzZXJpZCwKLQkJCQkJCQkJCQkJCQkJCSAg IEFDTF9TRUxFQ1QpID09IEFDTENIRUNLX09LKTsKLQkJCQkJCQkJCX0KLQkJCQkJCQkJfQor CQkJCQkJCQlyZWNoZWNrX3BhcmVudF9hY2wocm9vdCwgdmFyZGF0YSwgaW5kZXgtPnJlbC0+ cmVsaWQpOwogCQkJCQkJCX0KIAkJCQkJCQllbHNlCiAJCQkJCQkJewpAQCAtNTI4NSw0OSAr NTI0Myw3IEBAIGV4YW1pbmVfdmFyaWFibGUoUGxhbm5lckluZm8gKnJvb3QsIE5vZGUgKm5v ZGUsIGludCB2YXJSZWxpZCwKIAkJCQkJCShwZ19jbGFzc19hY2xjaGVjayhydGUtPnJlbGlk LCB1c2VyaWQsCiAJCQkJCQkJCQkJICAgQUNMX1NFTEVDVCkgPT0gQUNMQ0hFQ0tfT0spOwog Ci0JCQkJCS8qCi0JCQkJCSAqIElmIHRoZSB1c2VyIGRvZXNuJ3QgaGF2ZSBwZXJtaXNzaW9u cyB0byBhY2Nlc3MgYW4KLQkJCQkJICogaW5oZXJpdGFuY2UgY2hpbGQgcmVsYXRpb24sIGNo ZWNrIHRoZSBwZXJtaXNzaW9ucyBvZgotCQkJCQkgKiB0aGUgdGFibGUgYWN0dWFsbHkgbWVu dGlvbmVkIGluIHRoZSBxdWVyeSwgc2luY2UgbW9zdAotCQkJCQkgKiBsaWtlbHkgdGhlIHVz ZXIgZG9lcyBoYXZlIHRoYXQgcGVybWlzc2lvbi4gIE5vdGUgdGhhdAotCQkJCQkgKiB3aG9s ZS10YWJsZSBzZWxlY3QgcHJpdmlsZWdlIG9uIHRoZSBwYXJlbnQgZG9lc24ndAotCQkJCQkg KiBxdWl0ZSBndWFyYW50ZWUgdGhhdCB0aGUgdXNlciBjb3VsZCByZWFkIGFsbCBjb2x1bW5z IG9mCi0JCQkJCSAqIHRoZSBjaGlsZC4gQnV0IGluIHByYWN0aWNlIGl0J3MgdW5saWtlbHkg dGhhdCBhbnkKLQkJCQkJICogaW50ZXJlc3Rpbmcgc2VjdXJpdHkgdmlvbGF0aW9uIGNvdWxk IHJlc3VsdCBmcm9tCi0JCQkJCSAqIGFsbG93aW5nIGFjY2VzcyB0byB0aGUgZXhwcmVzc2lv biBzdGF0cywgc28gd2UgYWxsb3cgaXQKLQkJCQkJICogYW55d2F5LiAgU2VlIHNpbWlsYXIg Y29kZSBpbiBleGFtaW5lX3NpbXBsZV92YXJpYWJsZSgpCi0JCQkJCSAqIGZvciBhZGRpdGlv bmFsIGNvbW1lbnRzLgotCQkJCQkgKi8KLQkJCQkJaWYgKCF2YXJkYXRhLT5hY2xfb2sgJiYK LQkJCQkJCXJvb3QtPmFwcGVuZF9yZWxfYXJyYXkgIT0gTlVMTCkKLQkJCQkJewotCQkJCQkJ QXBwZW5kUmVsSW5mbyAqYXBwaW5mbzsKLQkJCQkJCUluZGV4CQl2YXJubyA9IG9uZXJlbC0+ cmVsaWQ7Ci0KLQkJCQkJCWFwcGluZm8gPSByb290LT5hcHBlbmRfcmVsX2FycmF5W3Zhcm5v XTsKLQkJCQkJCXdoaWxlIChhcHBpbmZvICYmCi0JCQkJCQkJICAgcGxhbm5lcl9ydF9mZXRj aChhcHBpbmZvLT5wYXJlbnRfcmVsaWQsCi0JCQkJCQkJCQkJCQlyb290KS0+cnRla2luZCA9 PSBSVEVfUkVMQVRJT04pCi0JCQkJCQl7Ci0JCQkJCQkJdmFybm8gPSBhcHBpbmZvLT5wYXJl bnRfcmVsaWQ7Ci0JCQkJCQkJYXBwaW5mbyA9IHJvb3QtPmFwcGVuZF9yZWxfYXJyYXlbdmFy bm9dOwotCQkJCQkJfQotCQkJCQkJaWYgKHZhcm5vICE9IG9uZXJlbC0+cmVsaWQpCi0JCQkJ CQl7Ci0JCQkJCQkJLyogUmVwZWF0IGFjY2VzcyBjaGVjayBvbiB0aGlzIHJlbCAqLwotCQkJ CQkJCXJ0ZSA9IHBsYW5uZXJfcnRfZmV0Y2godmFybm8sIHJvb3QpOwotCQkJCQkJCUFzc2Vy dChydGUtPnJ0ZWtpbmQgPT0gUlRFX1JFTEFUSU9OKTsKLQotCQkJCQkJCXVzZXJpZCA9IHJ0 ZS0+Y2hlY2tBc1VzZXIgPyBydGUtPmNoZWNrQXNVc2VyIDogR2V0VXNlcklkKCk7Ci0KLQkJ CQkJCQl2YXJkYXRhLT5hY2xfb2sgPQotCQkJCQkJCQlydGUtPnNlY3VyaXR5UXVhbHMgPT0g TklMICYmCi0JCQkJCQkJCShwZ19jbGFzc19hY2xjaGVjayhydGUtPnJlbGlkLAotCQkJCQkJ CQkJCQkJICAgdXNlcmlkLAotCQkJCQkJCQkJCQkJICAgQUNMX1NFTEVDVCkgPT0gQUNMQ0hF Q0tfT0spOwotCQkJCQkJfQotCQkJCQl9Ci0KKwkJCQkJcmVjaGVja19wYXJlbnRfYWNsKHJv b3QsIHZhcmRhdGEsIG9uZXJlbC0+cmVsaWQpOwogCQkJCQlicmVhazsKIAkJCQl9CiAKQEAg LTUzMzcsNiArNTI1Myw1NCBAQCBleGFtaW5lX3ZhcmlhYmxlKFBsYW5uZXJJbmZvICpyb290 LCBOb2RlICpub2RlLCBpbnQgdmFyUmVsaWQsCiAJfQogfQogCisvKgorICogSWYgdGhlIHVz ZXIgZG9lc24ndCBoYXZlIHBlcm1pc3Npb25zIHRvIGFjY2VzcyBhbiBpbmhlcml0YW5jZSBj aGlsZAorICogcmVsYXRpb24sIGNoZWNrIHRoZSBwZXJtaXNzaW9ucyBvZiB0aGUgdGFibGUg YWN0dWFsbHkgbWVudGlvbmVkIGluIHRoZQorICogcXVlcnksIHNpbmNlIG1vc3QgbGlrZWx5 IHRoZSB1c2VyIGRvZXMgaGF2ZSB0aGF0IHBlcm1pc3Npb24uICBOb3RlIHRoYXQKKyAqIHdo b2xlLXRhYmxlIHNlbGVjdCBwcml2aWxlZ2Ugb24gdGhlIHBhcmVudCBkb2Vzbid0IHF1aXRl IGd1YXJhbnRlZSB0aGF0IHRoZQorICogdXNlciBjb3VsZCByZWFkIGFsbCBjb2x1bW5zIG9m IHRoZSBjaGlsZC4gIEJ1dCBpbiBwcmFjdGljZSBpdCdzIHVubGlrZWx5CisgKiB0aGF0IGFu eSBpbnRlcmVzdGluZyBzZWN1cml0eSB2aW9sYXRpb24gY291bGQgcmVzdWx0IGZyb20gYWxs b3dpbmcgYWNjZXNzIHRvCisgKiB0aGUgZXhwcmVzc2lvbiBzdGF0cywgc28gd2UgYWxsb3cg aXQgYW55d2F5LiAgU2VlIHNpbWlsYXIgY29kZSBpbgorICogZXhhbWluZV9zaW1wbGVfdmFy aWFibGUoKSBmb3IgYWRkaXRpb25hbCBjb21tZW50cy4KKyAqLworc3RhdGljIHZvaWQKK3Jl Y2hlY2tfcGFyZW50X2FjbChQbGFubmVySW5mbyAqcm9vdCwgVmFyaWFibGVTdGF0RGF0YSAq dmFyZGF0YSwgT2lkIHJlbGlkKQoreworCVJhbmdlVGJsRW50cnkJKnJ0ZTsKKwlPaWQJCXVz ZXJpZDsKKworCWlmICghdmFyZGF0YS0+YWNsX29rICYmCisJCXJvb3QtPmFwcGVuZF9yZWxf YXJyYXkgIT0gTlVMTCkKKwl7CisJCUFwcGVuZFJlbEluZm8gKmFwcGluZm87CisJCUluZGV4 CQl2YXJubyA9IHJlbGlkOworCisJCWFwcGluZm8gPSByb290LT5hcHBlbmRfcmVsX2FycmF5 W3Zhcm5vXTsKKwkJd2hpbGUgKGFwcGluZm8gJiYKKwkJCSAgIHBsYW5uZXJfcnRfZmV0Y2go YXBwaW5mby0+cGFyZW50X3JlbGlkLAorCQkJCQkJCQlyb290KS0+cnRla2luZCA9PSBSVEVf UkVMQVRJT04pCisJCXsKKwkJCXZhcm5vID0gYXBwaW5mby0+cGFyZW50X3JlbGlkOworCQkJ YXBwaW5mbyA9IHJvb3QtPmFwcGVuZF9yZWxfYXJyYXlbdmFybm9dOworCQl9CisKKwkJaWYg KHZhcm5vICE9IHJlbGlkKQorCQl7CisJCQkvKiBSZXBlYXQgYWNjZXNzIGNoZWNrIG9uIHRo aXMgcmVsICovCisJCQlydGUgPSBwbGFubmVyX3J0X2ZldGNoKHZhcm5vLCByb290KTsKKwkJ CUFzc2VydChydGUtPnJ0ZWtpbmQgPT0gUlRFX1JFTEFUSU9OKTsKKworCQkJdXNlcmlkID0g cnRlLT5jaGVja0FzVXNlciA/IHJ0ZS0+Y2hlY2tBc1VzZXIgOiBHZXRVc2VySWQoKTsKKwor CQkJdmFyZGF0YS0+YWNsX29rID0KKwkJCQlydGUtPnNlY3VyaXR5UXVhbHMgPT0gTklMICYm CisJCQkJKHBnX2NsYXNzX2FjbGNoZWNrKHJ0ZS0+cmVsaWQsCisJCQkJCQkJCSAgIHVzZXJp ZCwKKwkJCQkJCQkJICAgQUNMX1NFTEVDVCkgPT0gQUNMQ0hFQ0tfT0spOworCQl9CisJfQor fQorCiAvKgogICogZXhhbWluZV9zaW1wbGVfdmFyaWFibGUKICAqCQlIYW5kbGUgYSBzaW1w bGUgVmFyIGZvciBleGFtaW5lX3ZhcmlhYmxlCi0tIAoyLjMxLjEKCg== --------------krEjryGqqIp57JesRDbyk4Se--