Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1sSEca-005VJf-37 for pgsql-hackers@arkaria.postgresql.org; Fri, 12 Jul 2024 11:39:29 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1sSEcY-007b8B-8y for pgsql-hackers@arkaria.postgresql.org; Fri, 12 Jul 2024 11:39:26 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1sSEcX-007b83-95 for pgsql-hackers@lists.postgresql.org; Fri, 12 Jul 2024 11:39:25 +0000 Received: from mail.postgrespro.ru ([93.174.131.139]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1sSEcO-001h6Q-UQ for pgsql-hackers@postgresql.org; Fri, 12 Jul 2024 11:39:23 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=postgrespro.ru; s=mx2023; t=1720784353; bh=xQfcNc7BohDL6nPYWfL3Krtpb3k/sUl7cuPDz65Bt5I=; h=Date:From:To:Cc:Subject:In-Reply-To:References:User-Agent: Message-ID:From; b=d9lXIXUpcUBpCdNzV25Hqsv0aF1LLOfvwYD6JWfndCVKpUvaNWL3EmL3sQTqR7Y5j uMJOrYARZs9NadkLrxsQVSRsYgaJNT3IzX/w63JW7oWSJLyiSl7tozJAYZ0OTBfrS1 wqAr//LBYAjwr2sD7pt4SOTwmdkG+fK2uuXEwaxJmvoL6cy4yA2WGI3zv0/B4lpb5S PjgClfgVqwtl1mcUbhGpK51BUsK/WG2ZPBovAfap+OwPmJyU3WLRZi66O5OAVaGITQ 3s7VymONHRnbgrNRpay+BnvyA2vCcqlmxNpUIDaEedkAdPdZ4vlaRfIdnoSSEmwOLg rZf4Djy68mFow== Received: from mail.postgrespro.ru (unknown [192.168.2.28]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (Client did not present a certificate) (Authenticated sender: a.pyhalov@postgrespro.ru) by mail.postgrespro.ru (Postfix/587) with ESMTPSA id 246015FFDE; Fri, 12 Jul 2024 14:39:13 +0300 (MSK) MIME-Version: 1.0 Date: Fri, 12 Jul 2024 14:39:13 +0300 From: Alexander Pyhalov To: Pgsql Hackers Cc: Ashutosh Bapat Subject: Partition-wise join with whole row vars In-Reply-To: References: <5AD5B1E0.8020404@lab.ntt.co.jp> <5AD5C5A1.1070509@lab.ntt.co.jp> <5ADF12D1.1030406@lab.ntt.co.jp> <5AE1C0D3.5060009@lab.ntt.co.jp> <5AE84FBF.3040905@lab.ntt.co.jp> <5AF2E09F.9060208@lab.ntt.co.jp> <5AF440C2.3040805@lab.ntt.co.jp> <5AF59415.10309@lab.ntt.co.jp> User-Agent: Roundcube Webmail/1.6.7 Message-ID: <2253e9091b300d868d524c0943fa8796@postgrespro.ru> X-Sender: a.pyhalov@postgrespro.ru Content-Type: multipart/mixed; boundary="=_1b73054158934e47c139853525d00f6f" X-KSMG-AntiPhishing: NotDetected, bases: 2024/07/12 10:49:00 X-KSMG-AntiSpam-Interceptor-Info: not scanned X-KSMG-AntiSpam-Status: not scanned, disabled by settings X-KSMG-AntiVirus: Kaspersky Secure Mail Gateway, version 2.1.0.7854, bases: 2024/07/12 11:06:00 #25969622 X-KSMG-AntiVirus-Status: NotDetected, skipped X-KSMG-LinksScanning: not scanned, disabled by settings X-KSMG-Message-Action: skipped X-KSMG-Rule-ID: 1 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --=_1b73054158934e47c139853525d00f6f Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset=US-ASCII; format=flowed Hello. I was looking at enabling partition-wise join with whole row vars. My main motivation was to enable push down DML with partition-wise join in postgres_fdw. The work is based on the earlier patches of Ashutosh Bapat [1]. Partition-wise joins are disabled when whole row vars from relations, participating in join, are required to be selected. Using whole row vars is not frequent by itself, but happens when FDW is used in DML or SELECT FOR UPDATE/ FOR SHARE queries. I'd like to remove this restriction, because this will make it possible to do direct modify operations DML joins in postgres_fdw. Currently there's an issue in PostgreSQL that when we want to get whole row var of child table, we should translate the record type of child table to the record type of the parent table. So, there appear additional ConvertRowtyeExpressions to cast types and different places in planner (and in postgres_fdw) now should know about this. Here's the series of patches, originally proposed by Ashutosh Bapat, rebased and updated to work with current master. What was done: 1) Reverting changes, that forbid PWJ when whole row vars are required. This also restores logic in setrefs.c, necessary to deal with ConvertRowtyeExpressions. 2) Applying modified patch from the original series to handle ConvertRowtypeExprs in pull_vars_clause(). Unlike original patch, default pull_var_clause_walker() behavior is unchanged. However, when PVC_INCLUDE_CONVERTROWTYPES flag is specified, converted whole row references are returned as is and are not recursed to. This is done in such a way to avoid modifying all function consumers. 3) Modified one of the original patches to handle ConvertRowtypeExpr in find_computable_ec_member(). 4) The next patch modifies logic to search for ConvertRowtypeExpr in search_indexed_tlist_for_non_var() - at least for rowid vars varnullingrels can be omitted, so we avoid looking at them when comparing different ConvertRowtypeExprs. It seems to be working as expected, but I'm not deadly sure about this. Perhaps, we also should consider context->nrm_match? 5) The next patch is the original one - pulling ConvertRowtypeExpr in build_tlist_to_deparse() and deparsing ConvertRowtypeExpr(). 6) The rest is fix for postgres_fdw to correctly deparse DML. The first tricky part here is that in UPDATE SET clause arbitrary relations can appear, and currently there's no API to handle this. So I've modified get_translated_update_targetlist() to do proper adjustments. The second is work with returning lists - we should set tableoids for the returned values. This is done by modifying returning filters to save this information and later to set it in returned tuples. What this gives us - is the posibility of partition-wise joins for foreign DML, like following: EXPLAIN (COSTS OFF, VERBOSE) DELETE FROM fprt1 USING fprt2 WHERE fprt1.a = fprt2.b AND fprt2.a % 30 = 29; QUERY PLAN ---------------------------------------------------------------------------------------------------------------------------------- Delete on public.fprt1 Foreign Delete on public.ftprt1_p1 fprt1_1 Foreign Delete on public.ftprt1_p2 fprt1_2 -> Append -> Foreign Delete Remote SQL: DELETE FROM public.fprt1_p1 r3 USING public.fprt2_p1 r5 WHERE ((r3.a = r5.b)) AND (((r5.a % 30) = 29)) -> Foreign Delete Remote SQL: DELETE FROM public.fprt1_p2 r4 USING public.fprt2_p2 r6 WHERE ((r4.a = r6.b)) AND (((r6.a % 30) = 29)) [1] https://www.postgresql.org/message-id/CAFjFpRc8ZoDm0%2Bzhx%2BMckwGyEqkOzWcpVqbvjaxwdGarZSNrmA%40mail.gmail.com -- Best regards, Alexander Pyhalov, Postgres Professional --=_1b73054158934e47c139853525d00f6f Content-Transfer-Encoding: base64 Content-Type: text/x-diff; name=0006-postgres_fdw-fix-partition-wise-DML.patch Content-Disposition: attachment; filename=0006-postgres_fdw-fix-partition-wise-DML.patch; size=23141 RnJvbSBlOTY5NWM5NjhkMjcwNWIwYzg5ODZkZmJiM2ZkMjQwOWUyMmFjYjYzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGV4YW5kZXIgUHloYWxvdiA8YS5weWhhbG92QHBvc3RncmVz cHJvLnJ1PgpEYXRlOiBXZWQsIDI3IERlYyAyMDIzIDE3OjMxOjIzICswMzAwClN1YmplY3Q6IFtQ QVRDSCA2LzZdIHBvc3RncmVzX2ZkdzogZml4IHBhcnRpdGlvbi13aXNlIERNTAoKLS0tCiBjb250 cmliL3Bvc3RncmVzX2Zkdy9kZXBhcnNlLmMgICAgICAgICAgICAgICAgfCAgMTIgKy0KIC4uLi9w b3N0Z3Jlc19mZHcvZXhwZWN0ZWQvcG9zdGdyZXNfZmR3Lm91dCAgICB8IDE2MCArKysrKysrKysr KysrKysrKysKIGNvbnRyaWIvcG9zdGdyZXNfZmR3L3Bvc3RncmVzX2Zkdy5jICAgICAgICAgICB8 ICA5OCArKysrKysrKysrLQogY29udHJpYi9wb3N0Z3Jlc19mZHcvc3FsL3Bvc3RncmVzX2Zkdy5z cWwgICAgIHwgIDM4ICsrKysrCiBzcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9hcHBlbmRpbmZv LmMgICAgICAgfCAgMzIgKysrLQogc3JjL2luY2x1ZGUvb3B0aW1pemVyL2FwcGVuZGluZm8uaCAg ICAgICAgICAgIHwgICAxICsKIDYgZmlsZXMgY2hhbmdlZCwgMzIzIGluc2VydGlvbnMoKyksIDE4 IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2NvbnRyaWIvcG9zdGdyZXNfZmR3L2RlcGFyc2Uu YyBiL2NvbnRyaWIvcG9zdGdyZXNfZmR3L2RlcGFyc2UuYwppbmRleCBmODc5ZmYzMTAwZi4uZDRj NjU3ZmE0ZDUgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvcG9zdGdyZXNfZmR3L2RlcGFyc2UuYworKysg Yi9jb250cmliL3Bvc3RncmVzX2Zkdy9kZXBhcnNlLmMKQEAgLTIzMDksNyArMjMwOSw3IEBAIGRl cGFyc2VEaXJlY3RVcGRhdGVTcWwoU3RyaW5nSW5mbyBidWYsIFBsYW5uZXJJbmZvICpyb290LAog CiAJYXBwZW5kU3RyaW5nSW5mb1N0cmluZyhidWYsICJVUERBVEUgIik7CiAJZGVwYXJzZVJlbGF0 aW9uKGJ1ZiwgcmVsKTsKLQlpZiAoZm9yZWlnbnJlbC0+cmVsb3B0a2luZCA9PSBSRUxPUFRfSk9J TlJFTCkKKwlpZiAoSVNfSk9JTl9SRUwoZm9yZWlnbnJlbCkpCiAJCWFwcGVuZFN0cmluZ0luZm8o YnVmLCAiICVzJWQiLCBSRUxfQUxJQVNfUFJFRklYLCBydGluZGV4KTsKIAlhcHBlbmRTdHJpbmdJ bmZvU3RyaW5nKGJ1ZiwgIiBTRVQgIik7CiAKQEAgLTIzMzYsNyArMjMzNiw3IEBAIGRlcGFyc2VE aXJlY3RVcGRhdGVTcWwoU3RyaW5nSW5mbyBidWYsIFBsYW5uZXJJbmZvICpyb290LAogCiAJcmVz ZXRfdHJhbnNtaXNzaW9uX21vZGVzKG5lc3RsZXZlbCk7CiAKLQlpZiAoZm9yZWlnbnJlbC0+cmVs b3B0a2luZCA9PSBSRUxPUFRfSk9JTlJFTCkKKwlpZiAoSVNfSk9JTl9SRUwoZm9yZWlnbnJlbCkp CiAJewogCQlMaXN0CSAgICppZ25vcmVfY29uZHMgPSBOSUw7CiAKQEAgLTIzNTIsNyArMjM1Miw3 IEBAIGRlcGFyc2VEaXJlY3RVcGRhdGVTcWwoU3RyaW5nSW5mbyBidWYsIFBsYW5uZXJJbmZvICpy b290LAogCWlmIChhZGRpdGlvbmFsX2NvbmRzICE9IE5JTCkKIAkJbGlzdF9mcmVlX2RlZXAoYWRk aXRpb25hbF9jb25kcyk7CiAKLQlpZiAoZm9yZWlnbnJlbC0+cmVsb3B0a2luZCA9PSBSRUxPUFRf Sk9JTlJFTCkKKwlpZiAoSVNfSk9JTl9SRUwoZm9yZWlnbnJlbCkpCiAJCWRlcGFyc2VFeHBsaWNp dFRhcmdldExpc3QocmV0dXJuaW5nTGlzdCwgdHJ1ZSwgcmV0cmlldmVkX2F0dHJzLAogCQkJCQkJ CQkgICZjb250ZXh0KTsKIAllbHNlCkBAIC0yNDE3LDEwICsyNDE3LDEwIEBAIGRlcGFyc2VEaXJl Y3REZWxldGVTcWwoU3RyaW5nSW5mbyBidWYsIFBsYW5uZXJJbmZvICpyb290LAogCiAJYXBwZW5k U3RyaW5nSW5mb1N0cmluZyhidWYsICJERUxFVEUgRlJPTSAiKTsKIAlkZXBhcnNlUmVsYXRpb24o YnVmLCByZWwpOwotCWlmIChmb3JlaWducmVsLT5yZWxvcHRraW5kID09IFJFTE9QVF9KT0lOUkVM KQorCWlmIChJU19KT0lOX1JFTChmb3JlaWducmVsKSkKIAkJYXBwZW5kU3RyaW5nSW5mbyhidWYs ICIgJXMlZCIsIFJFTF9BTElBU19QUkVGSVgsIHJ0aW5kZXgpOwogCi0JaWYgKGZvcmVpZ25yZWwt PnJlbG9wdGtpbmQgPT0gUkVMT1BUX0pPSU5SRUwpCisJaWYgKElTX0pPSU5fUkVMKGZvcmVpZ25y ZWwpKQogCXsKIAkJTGlzdAkgICAqaWdub3JlX2NvbmRzID0gTklMOwogCkBAIC0yNDM1LDcgKzI0 MzUsNyBAQCBkZXBhcnNlRGlyZWN0RGVsZXRlU3FsKFN0cmluZ0luZm8gYnVmLCBQbGFubmVySW5m byAqcm9vdCwKIAlpZiAoYWRkaXRpb25hbF9jb25kcyAhPSBOSUwpCiAJCWxpc3RfZnJlZV9kZWVw KGFkZGl0aW9uYWxfY29uZHMpOwogCi0JaWYgKGZvcmVpZ25yZWwtPnJlbG9wdGtpbmQgPT0gUkVM T1BUX0pPSU5SRUwpCisJaWYgKElTX0pPSU5fUkVMKGZvcmVpZ25yZWwpKQogCQlkZXBhcnNlRXhw bGljaXRUYXJnZXRMaXN0KHJldHVybmluZ0xpc3QsIHRydWUsIHJldHJpZXZlZF9hdHRycywKIAkJ CQkJCQkJICAmY29udGV4dCk7CiAJZWxzZQpkaWZmIC0tZ2l0IGEvY29udHJpYi9wb3N0Z3Jlc19m ZHcvZXhwZWN0ZWQvcG9zdGdyZXNfZmR3Lm91dCBiL2NvbnRyaWIvcG9zdGdyZXNfZmR3L2V4cGVj dGVkL3Bvc3RncmVzX2Zkdy5vdXQKaW5kZXggMmViMjE1MDVmYjAuLjkxOGZjZTVlOGRmIDEwMDY0 NAotLS0gYS9jb250cmliL3Bvc3RncmVzX2Zkdy9leHBlY3RlZC9wb3N0Z3Jlc19mZHcub3V0Cisr KyBiL2NvbnRyaWIvcG9zdGdyZXNfZmR3L2V4cGVjdGVkL3Bvc3RncmVzX2Zkdy5vdXQKQEAgLTEw MTM2LDYgKzEwMTM2LDE2NiBAQCBTRUxFQ1QgdDEuYSwgdDIuYiBGUk9NIGZwcnQxIHQxIElOTkVS IEpPSU4gZnBydDIgdDIgT04gKHQxLmEgPSB0Mi5iKSBXSEVSRSB0MS5hCiAoNCByb3dzKQogCiBy ZXNldCBlbmFibGVfc29ydDsKKy0tIHRlc3QgcGFydGl0aW9uLXdpc2UgRE1MCitFWFBMQUlOIChD T1NUUyBPRkYsIFZFUkJPU0UpCitVUERBVEUgZnBydDEgU0VUIGI9ZnBydDEuYisxIEZST00gZnBy dDIgV0hFUkUgZnBydDEuYSA9IGZwcnQyLmIgQU5EIGZwcnQyLmEgJSAyNSA9IDA7CisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgVXBk YXRlIG9uIHB1YmxpYy5mcHJ0MQorICAgRm9yZWlnbiBVcGRhdGUgb24gcHVibGljLmZ0cHJ0MV9w MSBmcHJ0MV8xCisgICBGb3JlaWduIFVwZGF0ZSBvbiBwdWJsaWMuZnRwcnQxX3AyIGZwcnQxXzIK KyAgIC0+ICBBcHBlbmQKKyAgICAgICAgIC0+ICBGb3JlaWduIFVwZGF0ZQorICAgICAgICAgICAg ICAgUmVtb3RlIFNRTDogVVBEQVRFIHB1YmxpYy5mcHJ0MV9wMSByMyBTRVQgYiA9IChyMy5iICsg MSkgRlJPTSBwdWJsaWMuZnBydDJfcDEgcjUgV0hFUkUgKChyMy5hID0gcjUuYikpIEFORCAoKChy NS5hICUgMjUpID0gMCkpCisgICAgICAgICAtPiAgRm9yZWlnbiBVcGRhdGUKKyAgICAgICAgICAg ICAgIFJlbW90ZSBTUUw6IFVQREFURSBwdWJsaWMuZnBydDFfcDIgcjQgU0VUIGIgPSAocjQuYiAr IDEpIEZST00gcHVibGljLmZwcnQyX3AyIHI2IFdIRVJFICgocjQuYSA9IHI2LmIpKSBBTkQgKCgo cjYuYSAlIDI1KSA9IDApKQorKDggcm93cykKKworVVBEQVRFIGZwcnQxIFNFVCBiPWZwcnQxLmIr MSBGUk9NIGZwcnQyIFdIRVJFIGZwcnQxLmEgPSBmcHJ0Mi5iIEFORCBmcHJ0Mi5hICUgMjUgPSAw OworRVhQTEFJTiAoQ09TVFMgT0ZGLCBWRVJCT1NFKQorVVBEQVRFIGZwcnQxIFNFVCBiPShmcHJ0 MS5hK2ZwcnQyLmIpLzIgRlJPTSBmcHJ0MiBXSEVSRSBmcHJ0MS5hID0gZnBydDIuYiBBTkQgZnBy dDIuYSAlIDI1ID0gMDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBVcGRhdGUgb24gcHVibGljLmZw cnQxCisgICBGb3JlaWduIFVwZGF0ZSBvbiBwdWJsaWMuZnRwcnQxX3AxIGZwcnQxXzEKKyAgIEZv cmVpZ24gVXBkYXRlIG9uIHB1YmxpYy5mdHBydDFfcDIgZnBydDFfMgorICAgLT4gIEFwcGVuZAor ICAgICAgICAgLT4gIEZvcmVpZ24gVXBkYXRlCisgICAgICAgICAgICAgICBSZW1vdGUgU1FMOiBV UERBVEUgcHVibGljLmZwcnQxX3AxIHIzIFNFVCBiID0gKChyMy5hICsgcjUuYikgLyAyKSBGUk9N IHB1YmxpYy5mcHJ0Ml9wMSByNSBXSEVSRSAoKHIzLmEgPSByNS5iKSkgQU5EICgoKHI1LmEgJSAy NSkgPSAwKSkKKyAgICAgICAgIC0+ICBGb3JlaWduIFVwZGF0ZQorICAgICAgICAgICAgICAgUmVt b3RlIFNRTDogVVBEQVRFIHB1YmxpYy5mcHJ0MV9wMiByNCBTRVQgYiA9ICgocjQuYSArIHI2LmIp IC8gMikgRlJPTSBwdWJsaWMuZnBydDJfcDIgcjYgV0hFUkUgKChyNC5hID0gcjYuYikpIEFORCAo KChyNi5hICUgMjUpID0gMCkpCisoOCByb3dzKQorCitVUERBVEUgZnBydDEgU0VUIGI9KGZwcnQx LmErZnBydDIuYikvMiBGUk9NIGZwcnQyIFdIRVJFIGZwcnQxLmEgPSBmcHJ0Mi5iIEFORCBmcHJ0 Mi5hICUgMjUgPSAwOworLS0gcmV0dXJuaW5nIHdob2xlIHJvdyByZWZlcmVuY2VzCitFWFBMQUlO IChDT1NUUyBPRkYpCitVUERBVEUgZnBydDEgU0VUIGI9ZnBydDEuYisxIEZST00gZnBydDIgV0hF UkUgZnBydDEuYSA9IGZwcnQyLmIgQU5EIGZwcnQyLmEgJSAyNSA9IDAgUkVUVVJOSU5HIGZwcnQx LCBmcHJ0MjsKKyAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgIAorLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgVXBkYXRlIG9uIGZwcnQxCisgICBG b3JlaWduIFVwZGF0ZSBvbiBmdHBydDFfcDEgZnBydDFfMQorICAgRm9yZWlnbiBVcGRhdGUgb24g ZnRwcnQxX3AyIGZwcnQxXzIKKyAgIC0+ICBBcHBlbmQKKyAgICAgICAgIC0+ICBGb3JlaWduIFVw ZGF0ZQorICAgICAgICAgLT4gIEZvcmVpZ24gVXBkYXRlCisoNiByb3dzKQorCitVUERBVEUgZnBy dDEgU0VUIGI9ZnBydDEuYisxIEZST00gZnBydDIgV0hFUkUgZnBydDEuYSA9IGZwcnQyLmIgQU5E IGZwcnQyLmEgJSAyNSA9IDAgUkVUVVJOSU5HIGZwcnQxLCBmcHJ0MjsKKyAgICAgZnBydDEgICAg ICB8ICAgICBmcHJ0MiAgICAgIAorLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tCisg KDAsMSwwMDAwKSAgICAgfCAoMCwwLDAwMDApCisgKDE1MCwxNTEsMDAwMykgfCAoMTUwLDE1MCww MDAzKQorICgyNTAsMjUxLDAwMDUpIHwgKDI1MCwyNTAsMDAwNSkKKyAoNDAwLDQwMSwwMDA4KSB8 ICg0MDAsNDAwLDAwMDgpCisoNCByb3dzKQorCistLSB0YWJsZW9pZHMgYXJlIHJldHVybmVkIGNv cnJlY3RseQorRVhQTEFJTiAoQ09TVFMgT0ZGKQorVVBEQVRFIGZwcnQxIHQxIFNFVCBiID0gdDEu YiArIDEgRlJPTSBmcHJ0MiB0MiBXSEVSRSB0MS5hID0gdDIuYiBBTkQgdDEuYSAlIDI1ID0gMCAg UkVUVVJOSU5HIHQyLnRhYmxlb2lkOjpyZWdjbGFzczsKKyAgICAgICAgICAgICBRVUVSWSBQTEFO ICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgVXBk YXRlIG9uIGZwcnQxIHQxCisgICBGb3JlaWduIFVwZGF0ZSBvbiBmdHBydDFfcDEgdDFfMQorICAg Rm9yZWlnbiBVcGRhdGUgb24gZnRwcnQxX3AyIHQxXzIKKyAgIC0+ICBBcHBlbmQKKyAgICAgICAg IC0+ICBGb3JlaWduIFVwZGF0ZQorICAgICAgICAgLT4gIEZvcmVpZ24gVXBkYXRlCisoNiByb3dz KQorCitVUERBVEUgZnBydDEgdDEgU0VUIGIgPSB0MS5iICsgMSBGUk9NIGZwcnQyIHQyIFdIRVJF IHQxLmEgPSB0Mi5iIEFORCB0MS5hICUgMjUgPSAwICBSRVRVUk5JTkcgdDIudGFibGVvaWQ6OnJl Z2NsYXNzOworIHRhYmxlb2lkICAKKy0tLS0tLS0tLS0tCisgZnRwcnQyX3AxCisgZnRwcnQyX3Ax CisgZnRwcnQyX3AyCisgZnRwcnQyX3AyCisoNCByb3dzKQorCistLSBqb2luIG9mIHNldmVyYWwg dGFibGVzCitFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpCitVUERBVEUgZnBydDEgdDEgU0VU IGIgPSB0MS5iICsgMSBGUk9NIGZwcnQyIHQyLCBmcHJ0MSB0MyBXSEVSRSB0MS5hID0gdDIuYiBB TkQgdDIuYiA9IHQzLmEgQU5EIHQxLmEgJSAyNSA9IDAgIFJFVFVSTklORyAqOworICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKyBVcGRhdGUgb24gcHVibGljLmZwcnQxIHQxCisgICBPdXRwdXQ6IHQx XzEuYSwgdDFfMS5iLCB0MV8xLmMsIHQyLmEsIHQyLmIsIHQyLmMsIHQzLmEsIHQzLmIsIHQzLmMK KyAgIEZvcmVpZ24gVXBkYXRlIG9uIHB1YmxpYy5mdHBydDFfcDEgdDFfMQorICAgRm9yZWlnbiBV cGRhdGUgb24gcHVibGljLmZ0cHJ0MV9wMiB0MV8yCisgICAtPiAgQXBwZW5kCisgICAgICAgICAt PiAgRm9yZWlnbiBVcGRhdGUKKyAgICAgICAgICAgICAgIFJlbW90ZSBTUUw6IFVQREFURSBwdWJs aWMuZnBydDFfcDEgcjQgU0VUIGIgPSAocjQuYiArIDEpIEZST00gKHB1YmxpYy5mcHJ0Ml9wMSBy NiBJTk5FUiBKT0lOIHB1YmxpYy5mcHJ0MV9wMSByOCBPTiAoVFJVRSkpIFdIRVJFICgocjQuYSA9 IHI4LmEpKSBBTkQgKChyNC5hID0gcjYuYikpIEFORCAoKChyNC5hICUgMjUpID0gMCkpIFJFVFVS TklORyByNC5hLCByNC5iLCByNC5jLCByNi5hLCByNi5iLCByNi5jLCByOC5hLCByOC5iLCByOC5j CisgICAgICAgICAtPiAgRm9yZWlnbiBVcGRhdGUKKyAgICAgICAgICAgICAgIFJlbW90ZSBTUUw6 IFVQREFURSBwdWJsaWMuZnBydDFfcDIgcjUgU0VUIGIgPSAocjUuYiArIDEpIEZST00gKHB1Ymxp Yy5mcHJ0Ml9wMiByNyBJTk5FUiBKT0lOIHB1YmxpYy5mcHJ0MV9wMiByOSBPTiAoVFJVRSkpIFdI RVJFICgocjUuYSA9IHI5LmEpKSBBTkQgKChyNS5hID0gcjcuYikpIEFORCAoKChyNS5hICUgMjUp ID0gMCkpIFJFVFVSTklORyByNS5hLCByNS5iLCByNS5jLCByNy5hLCByNy5iLCByNy5jLCByOS5h LCByOS5iLCByOS5jCisoOSByb3dzKQorCitVUERBVEUgZnBydDEgdDEgU0VUIGIgPSB0MS5iICsg MSBGUk9NIGZwcnQyIHQyLCBmcHJ0MSB0MyBXSEVSRSB0MS5hID0gdDIuYiBBTkQgdDIuYiA9IHQz LmEgQU5EIHQxLmEgJSAyNSA9IDAgIFJFVFVSTklORyAqOworICBhICB8ICBiICB8ICBjICAgfCAg YSAgfCAgYiAgfCAgYyAgIHwgIGEgIHwgIGIgIHwgIGMgICAKKy0tLS0tKy0tLS0tKy0tLS0tLSst LS0tLSstLS0tLSstLS0tLS0rLS0tLS0rLS0tLS0rLS0tLS0tCisgICAwIHwgICAzIHwgMDAwMCB8 ICAgMCB8ICAgMCB8IDAwMDAgfCAgIDAgfCAgIDIgfCAwMDAwCisgMTUwIHwgMTUzIHwgMDAwMyB8 IDE1MCB8IDE1MCB8IDAwMDMgfCAxNTAgfCAxNTIgfCAwMDAzCisgMjUwIHwgMjUzIHwgMDAwNSB8 IDI1MCB8IDI1MCB8IDAwMDUgfCAyNTAgfCAyNTIgfCAwMDA1CisgNDAwIHwgNDAzIHwgMDAwOCB8 IDQwMCB8IDQwMCB8IDAwMDggfCA0MDAgfCA0MDIgfCAwMDA4CisoNCByb3dzKQorCistLSBsZWZ0 IGpvaW4KK0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikKK1VQREFURSBmcHJ0MSB0MSBTRVQg YiA9IHQxLmIgKyAxIEZST00gZnBydDIgdDIgTEVGVCBKT0lOIGZwcnQxIHQzIE9OICh0Mi5iID0g dDMuYSkgV0hFUkUgdDEuYSA9IHQyLmIgQU5EIHQxLmEgJSAyNSA9IDAgIFJFVFVSTklORyAqOwor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorIFVwZGF0ZSBvbiBwdWJsaWMuZnBydDEgdDEKKyAgIE91dHB1dDogdDFf MS5hLCB0MV8xLmIsIHQxXzEuYywgdDIuYSwgdDIuYiwgdDIuYywgdDMuYSwgdDMuYiwgdDMuYwor ICAgRm9yZWlnbiBVcGRhdGUgb24gcHVibGljLmZ0cHJ0MV9wMSB0MV8xCisgICBGb3JlaWduIFVw ZGF0ZSBvbiBwdWJsaWMuZnRwcnQxX3AyIHQxXzIKKyAgIC0+ICBBcHBlbmQKKyAgICAgICAgIC0+ ICBGb3JlaWduIFVwZGF0ZQorICAgICAgICAgICAgICAgUmVtb3RlIFNRTDogVVBEQVRFIHB1Ymxp Yy5mcHJ0MV9wMSByNSBTRVQgYiA9IChyNS5iICsgMSkgRlJPTSAocHVibGljLmZwcnQyX3AxIHI3 IExFRlQgSk9JTiBwdWJsaWMuZnBydDFfcDEgcjkgT04gKCgocjcuYiA9IHI5LmEpKSkpIFdIRVJF ICgocjUuYSA9IHI3LmIpKSBBTkQgKCgocjUuYSAlIDI1KSA9IDApKSBSRVRVUk5JTkcgcjUuYSwg cjUuYiwgcjUuYywgcjcuYSwgcjcuYiwgcjcuYywgcjkuYSwgcjkuYiwgcjkuYworICAgICAgICAg LT4gIEZvcmVpZ24gVXBkYXRlCisgICAgICAgICAgICAgICBSZW1vdGUgU1FMOiBVUERBVEUgcHVi bGljLmZwcnQxX3AyIHI2IFNFVCBiID0gKHI2LmIgKyAxKSBGUk9NIChwdWJsaWMuZnBydDJfcDIg cjggTEVGVCBKT0lOIHB1YmxpYy5mcHJ0MV9wMiByMTAgT04gKCgocjguYiA9IHIxMC5hKSkpKSBX SEVSRSAoKHI2LmEgPSByOC5iKSkgQU5EICgoKHI2LmEgJSAyNSkgPSAwKSkgUkVUVVJOSU5HIHI2 LmEsIHI2LmIsIHI2LmMsIHI4LmEsIHI4LmIsIHI4LmMsIHIxMC5hLCByMTAuYiwgcjEwLmMKKyg5 IHJvd3MpCisKK1VQREFURSBmcHJ0MSB0MSBTRVQgYiA9IHQxLmIgKyAxIEZST00gZnBydDIgdDIg TEVGVCBKT0lOIGZwcnQxIHQzIE9OICh0Mi5iID0gdDMuYSkgV0hFUkUgdDEuYSA9IHQyLmIgQU5E IHQxLmEgJSAyNSA9IDAgIFJFVFVSTklORyAqOworICBhICB8ICBiICB8ICBjICAgfCAgYSAgfCAg YiAgfCAgYyAgIHwgIGEgIHwgIGIgIHwgIGMgICAKKy0tLS0tKy0tLS0tKy0tLS0tLSstLS0tLSst LS0tLSstLS0tLS0rLS0tLS0rLS0tLS0rLS0tLS0tCisgICAwIHwgICA0IHwgMDAwMCB8ICAgMCB8 ICAgMCB8IDAwMDAgfCAgIDAgfCAgIDMgfCAwMDAwCisgMTUwIHwgMTU0IHwgMDAwMyB8IDE1MCB8 IDE1MCB8IDAwMDMgfCAxNTAgfCAxNTMgfCAwMDAzCisgMjUwIHwgMjU0IHwgMDAwNSB8IDI1MCB8 IDI1MCB8IDAwMDUgfCAyNTAgfCAyNTMgfCAwMDA1CisgNDAwIHwgNDA0IHwgMDAwOCB8IDQwMCB8 IDQwMCB8IDAwMDggfCA0MDAgfCA0MDMgfCAwMDA4CisoNCByb3dzKQorCistLSBkZWxldGUKK0VY UExBSU4gKENPU1RTIE9GRikKK0RFTEVURSBGUk9NIGZwcnQxIFVTSU5HIGZwcnQyIFdIRVJFIGZw cnQxLmEgPSBmcHJ0Mi5iIEFORCBmcHJ0Mi5hICUgMzAgPSAyOTsKKyAgICAgICAgICAgICAgUVVF UlkgUExBTiAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCisgRGVsZXRlIG9uIGZwcnQxCisgICBGb3JlaWduIERlbGV0ZSBvbiBmdHBydDFfcDEg ZnBydDFfMQorICAgRm9yZWlnbiBEZWxldGUgb24gZnRwcnQxX3AyIGZwcnQxXzIKKyAgIC0+ICBB cHBlbmQKKyAgICAgICAgIC0+ICBGb3JlaWduIERlbGV0ZQorICAgICAgICAgLT4gIEZvcmVpZ24g RGVsZXRlCisoNiByb3dzKQorCitERUxFVEUgRlJPTSBmcHJ0MSBVU0lORyBmcHJ0MiBXSEVSRSBm cHJ0MS5hID0gZnBydDIuYiBBTkQgZnBydDIuYSAlIDMwID0gMjk7CitFWFBMQUlOIChDT1NUUyBP RkYpCitERUxFVEUgRlJPTSBmcHJ0MSBVU0lORyBmcHJ0MiBXSEVSRSBmcHJ0MS5hID0gZnBydDIu YiBBTkQgZnBydDIuYSAlIDI1ID0gMCBSRVRVUk5JTkcgKjsKKyAgICAgICAgICAgICAgUVVFUlkg UExBTiAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCisgRGVsZXRlIG9uIGZwcnQxCisgICBGb3JlaWduIERlbGV0ZSBvbiBmdHBydDFfcDEgZnBy dDFfMQorICAgRm9yZWlnbiBEZWxldGUgb24gZnRwcnQxX3AyIGZwcnQxXzIKKyAgIC0+ICBBcHBl bmQKKyAgICAgICAgIC0+ICBGb3JlaWduIERlbGV0ZQorICAgICAgICAgLT4gIEZvcmVpZ24gRGVs ZXRlCisoNiByb3dzKQorCitERUxFVEUgRlJPTSBmcHJ0MSBVU0lORyBmcHJ0MiBXSEVSRSBmcHJ0 MS5hID0gZnBydDIuYiBBTkQgZnBydDIuYSAlIDI1ID0gMCBSRVRVUk5JTkcgKjsKKyAgYSAgfCAg YiAgfCAgYyAgIHwgIGEgIHwgIGIgIHwgIGMgICAKKy0tLS0tKy0tLS0tKy0tLS0tLSstLS0tLSst LS0tLSstLS0tLS0KKyAgIDAgfCAgIDQgfCAwMDAwIHwgICAwIHwgICAwIHwgMDAwMAorIDE1MCB8 IDE1NCB8IDAwMDMgfCAxNTAgfCAxNTAgfCAwMDAzCisgMjUwIHwgMjU0IHwgMDAwNSB8IDI1MCB8 IDI1MCB8IDAwMDUKKyA0MDAgfCA0MDQgfCAwMDA4IHwgNDAwIHwgNDAwIHwgMDAwOAorKDQgcm93 cykKKwogUkVTRVQgZW5hYmxlX3BhcnRpdGlvbndpc2Vfam9pbjsKIC0tID09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC0t IHRlc3QgcGFydGl0aW9ud2lzZSBhZ2dyZWdhdGVzCmRpZmYgLS1naXQgYS9jb250cmliL3Bvc3Rn cmVzX2Zkdy9wb3N0Z3Jlc19mZHcuYyBiL2NvbnRyaWIvcG9zdGdyZXNfZmR3L3Bvc3RncmVzX2Zk dy5jCmluZGV4IDkwYmYzNWZkOTBjLi44Y2FhM2FiYWY0OCAxMDA2NDQKLS0tIGEvY29udHJpYi9w b3N0Z3Jlc19mZHcvcG9zdGdyZXNfZmR3LmMKKysrIGIvY29udHJpYi9wb3N0Z3Jlc19mZHcvcG9z dGdyZXNfZmR3LmMKQEAgLTI0NSw2ICsyNDUsOSBAQCB0eXBlZGVmIHN0cnVjdCBQZ0Zkd0RpcmVj dE1vZGlmeVN0YXRlCiAJQXR0ck51bWJlcglvaWRBdHRubzsJCS8qIGF0dG51bSBvZiBpbnB1dCBv aWQgY29sdW1uICovCiAJYm9vbAkJaGFzU3lzdGVtQ29sczsJLyogYXJlIHRoZXJlIHN5c3RlbSBj b2x1bW5zIG9mIHJlc3VsdFJlbD8gKi8KIAorCUxpc3QJICAgKnRpZEF0dG5vczsJCS8qIGF0dG5v cyBvZiBvdXRwdXQgdGlkIGNvbHVtbnMgKi8KKwlMaXN0CSAgICp0aWRWYXJub3M7CQkvKiB2YXJu b3Mgb2Ygb3V0cHV0IHRpZCBjb2x1bW5zICovCisKIAkvKiB3b3JraW5nIG1lbW9yeSBjb250ZXh0 ICovCiAJTWVtb3J5Q29udGV4dCB0ZW1wX2N4dDsJCS8qIGNvbnRleHQgZm9yIHBlci10dXBsZSB0 ZW1wb3JhcnkgZGF0YSAqLwogfSBQZ0Zkd0RpcmVjdE1vZGlmeVN0YXRlOwpAQCAtMjQ2NSw2ICsy NDY4LDcgQEAgcG9zdGdyZXNQbGFuRGlyZWN0TW9kaWZ5KFBsYW5uZXJJbmZvICpyb290LAogCUxp c3QJICAgKnBhcmFtc19saXN0ID0gTklMOwogCUxpc3QJICAgKnJldHVybmluZ0xpc3QgPSBOSUw7 CiAJTGlzdAkgICAqcmV0cmlldmVkX2F0dHJzID0gTklMOworCVJlbGlkcwkJY2hpbGRfcmVsaWRz ID0gTlVMTDsKIAogCS8qCiAJICogRGVjaWRlIHdoZXRoZXIgaXQgaXMgc2FmZSB0byBtb2RpZnkg YSBmb3JlaWduIHRhYmxlIGRpcmVjdGx5LgpAQCAtMjQ5Niw2ICsyNTAwLDEyIEBAIHBvc3RncmVz UGxhbkRpcmVjdE1vZGlmeShQbGFubmVySW5mbyAqcm9vdCwKIAkJZm9yZWlnbnJlbCA9IGZpbmRf am9pbl9yZWwocm9vdCwgZnNjYW4tPmZzX3JlbGlkcyk7CiAJCS8qIFdlIHNob3VsZCBoYXZlIGEg cmVsIGZvciB0aGlzIGZvcmVpZ24gam9pbi4gKi8KIAkJQXNzZXJ0KGZvcmVpZ25yZWwpOworCisJ CS8qCisJCSAqIElmIGl0J3MgYSBjaGlsZCBqb2lucmVsLCByZWNvcmQgcmVsaWRzIHRvIHRyYW5z bGF0ZS4KKwkJICovCisJCWlmIChJU19PVEhFUl9SRUwoZm9yZWlnbnJlbCkpCisJCQljaGlsZF9y ZWxpZHMgPSBmb3JlaWducmVsLT5yZWxpZHM7CiAJfQogCWVsc2UKIAkJZm9yZWlnbnJlbCA9IHJv b3QtPnNpbXBsZV9yZWxfYXJyYXlbcmVzdWx0UmVsYXRpb25dOwpAQCAtMjUxNSw3ICsyNTI1LDcg QEAgcG9zdGdyZXNQbGFuRGlyZWN0TW9kaWZ5KFBsYW5uZXJJbmZvICpyb290LAogCQkgKiBUaGUg ZXhwcmVzc2lvbnMgb2YgY29uY2VybiBhcmUgdGhlIGZpcnN0IE4gY29sdW1ucyBvZiB0aGUgcHJv Y2Vzc2VkCiAJCSAqIHRhcmdldGxpc3QsIHdoZXJlIE4gaXMgdGhlIGxlbmd0aCBvZiB0aGUgcmVs J3MgdXBkYXRlX2NvbG5vcy4KIAkJICovCi0JCWdldF90cmFuc2xhdGVkX3VwZGF0ZV90YXJnZXRs aXN0KHJvb3QsIHJlc3VsdFJlbGF0aW9uLAorCQlnZXRfdHJhbnNsYXRlZF91cGRhdGVfdGFyZ2V0 bGlzdChyb290LCByZXN1bHRSZWxhdGlvbiwgY2hpbGRfcmVsaWRzLAogCQkJCQkJCQkJCSAmcHJv Y2Vzc2VkX3RsaXN0LCAmdGFyZ2V0QXR0cnMpOwogCQlmb3Jib3RoKGxjLCBwcm9jZXNzZWRfdGxp c3QsIGxjMiwgdGFyZ2V0QXR0cnMpCiAJCXsKQEAgLTI1NjgsOCArMjU3OCwxNyBAQCBwb3N0Z3Jl c1BsYW5EaXJlY3RNb2RpZnkoUGxhbm5lckluZm8gKnJvb3QsCiAJCSAqIG5vZGUgYmVsb3cuCiAJ CSAqLwogCQlpZiAoZnNjYW4tPnNjYW4uc2NhbnJlbGlkID09IDApCisJCXsKKwkJCWlmIChmb3Jl aWducmVsLT5yZWxvcHRraW5kID09IFJFTE9QVF9PVEhFUl9KT0lOUkVMKQorCQkJeworCQkJCXJl dHVybmluZ0xpc3QgPSAoTGlzdCAqKSBhZGp1c3RfYXBwZW5kcmVsX2F0dHJzX211bHRpbGV2ZWwo cm9vdCwKKwkJCQkJCQkJCQkJCQkJCQkJCSAgIChOb2RlICopIHJldHVybmluZ0xpc3QsCisJCQkJ CQkJCQkJCQkJCQkJCQkgICBmb3JlaWducmVsLAorCQkJCQkJCQkJCQkJCQkJCQkJICAgZm9yZWln bnJlbC0+dG9wX3BhcmVudCk7CisJCQl9CiAJCQlyZXR1cm5pbmdMaXN0ID0gYnVpbGRfcmVtb3Rl X3JldHVybmluZyhyZXN1bHRSZWxhdGlvbiwgcmVsLAogCQkJCQkJCQkJCQkJICAgcmV0dXJuaW5n TGlzdCk7CisJCX0KIAl9CiAKIAkvKgpAQCAtMzI0NCw3ICszMjYzLDcgQEAgZXN0aW1hdGVfcGF0 aF9jb3N0X3NpemUoUGxhbm5lckluZm8gKnJvb3QsCiAJCQkJLyogU2hvdWxkbid0IGdldCBoZXJl IHVubGVzcyB3ZSBoYXZlIExJTUlUICovCiAJCQkJQXNzZXJ0KGZwZXh0cmEtPmhhc19saW1pdCk7 CiAJCQkJQXNzZXJ0KGZvcmVpZ25yZWwtPnJlbG9wdGtpbmQgPT0gUkVMT1BUX0JBU0VSRUwgfHwK LQkJCQkJICAgZm9yZWlnbnJlbC0+cmVsb3B0a2luZCA9PSBSRUxPUFRfSk9JTlJFTCk7CisJCQkJ CSAgIElTX0pPSU5fUkVMKGZvcmVpZ25yZWwpKTsKIAkJCQlzdGFydHVwX2Nvc3QgKz0gZm9yZWln bnJlbC0+cmVsdGFyZ2V0LT5jb3N0LnN0YXJ0dXA7CiAJCQkJcnVuX2Nvc3QgKz0gZm9yZWlnbnJl bC0+cmVsdGFyZ2V0LT5jb3N0LnBlcl90dXBsZSAqIHJvd3M7CiAJCQl9CkBAIC00NDMyLDcgKzQ0 NTEsNyBAQCBidWlsZF9yZW1vdGVfcmV0dXJuaW5nKEluZGV4IHJ0aW5kZXgsIFJlbGF0aW9uIHJl bCwgTGlzdCAqcmV0dXJuaW5nTGlzdCkKIAogCUFzc2VydChyZXR1cm5pbmdMaXN0KTsKIAotCXZh cnMgPSBwdWxsX3Zhcl9jbGF1c2UoKE5vZGUgKikgcmV0dXJuaW5nTGlzdCwgUFZDX0lOQ0xVREVf UExBQ0VIT0xERVJTKTsKKwl2YXJzID0gcHVsbF92YXJfY2xhdXNlKChOb2RlICopIHJldHVybmlu Z0xpc3QsIFBWQ19JTkNMVURFX1BMQUNFSE9MREVSUyB8IFBWQ19JTkNMVURFX0NPTlZFUlRST1dU WVBFUyk7CiAKIAkvKgogCSAqIElmIHRoZXJlJ3MgYSB3aG9sZS1yb3cgcmVmZXJlbmNlIHRvIHRo ZSB0YXJnZXQgcmVsYXRpb24sIHRoZW4gd2UnbGwKQEAgLTQ0NDIsNiArNDQ2MSw5IEBAIGJ1aWxk X3JlbW90ZV9yZXR1cm5pbmcoSW5kZXggcnRpbmRleCwgUmVsYXRpb24gcmVsLCBMaXN0ICpyZXR1 cm5pbmdMaXN0KQogCXsKIAkJVmFyCQkgICAqdmFyID0gKFZhciAqKSBsZmlyc3QobGMpOwogCisJ CXdoaWxlIChJc0EodmFyLCBDb252ZXJ0Um93dHlwZUV4cHIpKQorCQkJdmFyID0gKFZhciAqKSAo KChDb252ZXJ0Um93dHlwZUV4cHIgKikgdmFyKS0+YXJnKTsKKwogCQlpZiAoSXNBKHZhciwgVmFy KSAmJgogCQkJdmFyLT52YXJubyA9PSBydGluZGV4ICYmCiAJCQl2YXItPnZhcmF0dG5vID09IElu dmFsaWRBdHRyTnVtYmVyKQpAQCAtNDQ5Niw2ICs0NTE4LDI5IEBAIGJ1aWxkX3JlbW90ZV9yZXR1 cm5pbmcoSW5kZXggcnRpbmRleCwgUmVsYXRpb24gcmVsLCBMaXN0ICpyZXR1cm5pbmdMaXN0KQog CQkJdmFyLT52YXJhdHRubyAhPSBTZWxmSXRlbVBvaW50ZXJBdHRyaWJ1dGVOdW1iZXIpCiAJCQlj b250aW51ZTsJCQkvKiBkb24ndCBuZWVkIGl0ICovCiAKKwkJLyoKKwkJICogQWxzbyBubyBuZWVk IGluIHdob2xlLXJvdyByZWZlcmVuY2VzIHRvIHRoZSB0YXJnZXQgcmVsYXRpb24gdW5kZXIKKwkJ ICogQ29udmVydFJvd3R5cGVFeHByCisJCSAqLworCQlpZiAoSXNBKHZhciwgQ29udmVydFJvd3R5 cGVFeHByKSkKKwkJeworCQkJQ29udmVydFJvd3R5cGVFeHByICpjcmUgPSAoQ29udmVydFJvd3R5 cGVFeHByICopIHZhcjsKKwkJCVZhcgkJICAgKmNyZV92YXI7CisKKwkJCXdoaWxlIChJc0EoY3Jl LT5hcmcsIENvbnZlcnRSb3d0eXBlRXhwcikpCisJCQkJY3JlID0gKENvbnZlcnRSb3d0eXBlRXhw ciAqKSBjcmUtPmFyZzsKKworCisJCQljcmVfdmFyID0gKFZhciAqKSBjcmUtPmFyZzsKKworCQkJ aWYgKElzQShjcmVfdmFyLCBWYXIpICYmCisJCQkJY3JlX3Zhci0+dmFybm8gPT0gcnRpbmRleCkK KwkJCXsKKwkJCQlBc3NlcnQoY3JlX3Zhci0+dmFyYXR0bm8gPT0gSW52YWxpZEF0dHJOdW1iZXIp OworCQkJCWNvbnRpbnVlOworCQkJfQorCQl9CisKIAkJaWYgKHRsaXN0X21lbWJlcigoRXhwciAq KSB2YXIsIHRsaXN0KSkKIAkJCWNvbnRpbnVlOwkJCS8qIGFscmVhZHkgZ290IGl0ICovCiAKQEAg LTQ3MDEsMTUgKzQ3NDYsMjYgQEAgaW5pdF9yZXR1cm5pbmdfZmlsdGVyKFBnRmR3RGlyZWN0TW9k aWZ5U3RhdGUgKmRtc3RhdGUsCiAJCXBhbGxvYzAocmVzdWx0VHVwVHlwZS0+bmF0dHMgKiBzaXpl b2YoQXR0ck51bWJlcikpOwogCiAJZG1zdGF0ZS0+Y3RpZEF0dG5vID0gZG1zdGF0ZS0+b2lkQXR0 bm8gPSAwOworCWRtc3RhdGUtPnRpZEF0dG5vcyA9IGRtc3RhdGUtPnRpZFZhcm5vcyA9IE5JTDsK IAogCWkgPSAxOwogCWRtc3RhdGUtPmhhc1N5c3RlbUNvbHMgPSBmYWxzZTsKIAlmb3JlYWNoKGxj LCBmZHdfc2Nhbl90bGlzdCkKIAl7CiAJCVRhcmdldEVudHJ5ICp0bGUgPSAoVGFyZ2V0RW50cnkg KikgbGZpcnN0KGxjKTsKLQkJVmFyCQkgICAqdmFyID0gKFZhciAqKSB0bGUtPmV4cHI7CisJCUV4 cHIJICAgKmV4cHI7CisJCVZhcgkJICAgKnZhcjsKKworCQlleHByID0gdGxlLT5leHByOworCisJ CXdoaWxlIChJc0EoZXhwciwgQ29udmVydFJvd3R5cGVFeHByKSkKKwkJeworCQkJQ29udmVydFJv d3R5cGVFeHByICpjcmUgPSBjYXN0Tm9kZShDb252ZXJ0Um93dHlwZUV4cHIsIGV4cHIpOwogCi0J CUFzc2VydChJc0EodmFyLCBWYXIpKTsKKwkJCWV4cHIgPSBjcmUtPmFyZzsKKwkJfQorCisJCXZh ciA9IGNhc3ROb2RlKFZhciwgZXhwcik7CiAKIAkJLyoKIAkJICogSWYgdGhlIFZhciBpcyBhIGNv bHVtbiBvZiB0aGUgdGFyZ2V0IHJlbGF0aW9uIHRvIGJlIHJldHJpZXZlZCBmcm9tCkBAIC00NzM4 LDEwICs0Nzk0LDE1IEBAIGluaXRfcmV0dXJuaW5nX2ZpbHRlcihQZ0Zkd0RpcmVjdE1vZGlmeVN0 YXRlICpkbXN0YXRlLAogCQkJCSAqIHJlbGF0aW9uIGVpdGhlci4KIAkJCQkgKi8KIAkJCQlBc3Nl cnQoYXR0cm5vID4gMCk7Ci0KIAkJCQlkbXN0YXRlLT5hdHRub01hcFthdHRybm8gLSAxXSA9IGk7 CiAJCQl9CiAJCX0KKwkJLyogUmVjb3JkIHRhYmxlb2lkIGF0dHJpYnV0ZXMgYW5kIGNvcnJlc3Bv bmRpbmcgdmFybm9zICovCisJCWlmICh2YXItPnZhcmF0dG5vID09IFRhYmxlT2lkQXR0cmlidXRl TnVtYmVyKQorCQl7CisJCQlkbXN0YXRlLT50aWRBdHRub3MgPSBsYXBwZW5kX2ludChkbXN0YXRl LT50aWRBdHRub3MsIGkpOworCQkJZG1zdGF0ZS0+dGlkVmFybm9zID0gbGFwcGVuZF9pbnQoZG1z dGF0ZS0+dGlkVmFybm9zLCB2YXItPnZhcm5vKTsKKwkJfQogCQlpKys7CiAJfQogfQpAQCAtNDc2 Miw2ICs0ODIzLDggQEAgYXBwbHlfcmV0dXJuaW5nX2ZpbHRlcihQZ0Zkd0RpcmVjdE1vZGlmeVN0 YXRlICpkbXN0YXRlLAogCURhdHVtCSAgICpvbGRfdmFsdWVzOwogCWJvb2wJICAgKm9sZF9pc251 bGw7CiAJaW50CQkJaTsKKwlMaXN0Q2VsbCAgICpsYzEsCisJCQkgICAqbGMyOwogCiAJLyoKIAkg KiBVc2UgdGhlIHJldHVybiB0dXBsZSBzbG90IGFzIGEgcGxhY2UgdG8gc3RvcmUgdGhlIHJlc3Vs dCB0dXBsZS4KQEAgLTQ4MDEsNiArNDg2NCwyOSBAQCBhcHBseV9yZXR1cm5pbmdfZmlsdGVyKFBn RmR3RGlyZWN0TW9kaWZ5U3RhdGUgKmRtc3RhdGUsCiAJCX0KIAl9CiAKKwkvKgorCSAqIFNldCB0 YWJsZW9pZCBhdHRyaWJ1dGVzCisJICovCisJZm9yYm90aChsYzEsIGRtc3RhdGUtPnRpZEF0dG5v cywgbGMyLCBkbXN0YXRlLT50aWRWYXJub3MpCisJeworCQlBdHRyTnVtYmVyCWF0dG5vOworCQlJ bmRleAkJdmFybm87CisJCVJhbmdlVGJsRW50cnkgKnJ0ZTsKKworCQlhdHRubyA9IGxmaXJzdF9p bnQobGMxKTsKKwkJdmFybm8gPSBsZmlyc3RfaW50KGxjMik7CisKKwkJcnRlID0gbGlzdF9udGgo ZXN0YXRlLT5lc19yYW5nZV90YWJsZSwgdmFybm8gLSAxKTsKKwkJQXNzZXJ0KHJ0ZS0+cnRla2lu ZCA9PSBSVEVfUkVMQVRJT04pOworCQlBc3NlcnQocnRlLT5yZWxraW5kID09IFJFTEtJTkRfRk9S RUlHTl9UQUJMRSk7CisKKwkJLyogQXR0cmlidXRlcyBudW1iZXJpbmcgaW4gaW5pdF9yZXR1cm5p bmdfZmlsdGVyKCkgc3RhcnRzIHdpdGggMSAqLworCQlBc3NlcnQoYXR0bm8gPj0gMSk7CisKKwkJ c2xvdC0+dHRzX3ZhbHVlc1thdHRubyAtIDFdID0gT2JqZWN0SWRHZXREYXR1bShydGUtPnJlbGlk KTsKKwkJc2xvdC0+dHRzX2lzbnVsbFthdHRubyAtIDFdID0gZmFsc2U7CisJfQorCiAJLyoKIAkg KiBCdWlsZCB0aGUgdmlydHVhbCB0dXBsZS4KIAkgKi8KZGlmZiAtLWdpdCBhL2NvbnRyaWIvcG9z dGdyZXNfZmR3L3NxbC9wb3N0Z3Jlc19mZHcuc3FsIGIvY29udHJpYi9wb3N0Z3Jlc19mZHcvc3Fs L3Bvc3RncmVzX2Zkdy5zcWwKaW5kZXggMzZhZDg1ZDRhZjguLjNjNzE5YWFhZjhmIDEwMDY0NAot LS0gYS9jb250cmliL3Bvc3RncmVzX2Zkdy9zcWwvcG9zdGdyZXNfZmR3LnNxbAorKysgYi9jb250 cmliL3Bvc3RncmVzX2Zkdy9zcWwvcG9zdGdyZXNfZmR3LnNxbApAQCAtMzE1Niw2ICszMTU2LDQ0 IEBAIFNFTEVDVCB0MS5hLCB0Mi5iIEZST00gZnBydDEgdDEgSU5ORVIgSk9JTiBmcHJ0MiB0MiBP TiAodDEuYSA9IHQyLmIpIFdIRVJFIHQxLmEKIFNFTEVDVCB0MS5hLCB0Mi5iIEZST00gZnBydDEg dDEgSU5ORVIgSk9JTiBmcHJ0MiB0MiBPTiAodDEuYSA9IHQyLmIpIFdIRVJFIHQxLmEgJSAyNSA9 IDAgT1JERVIgQlkgdDIuYSBGT1IgVVBEQVRFIE9GIHQxOwogcmVzZXQgZW5hYmxlX3NvcnQ7CiAK Ky0tIHRlc3QgcGFydGl0aW9uLXdpc2UgRE1MCitFWFBMQUlOIChDT1NUUyBPRkYsIFZFUkJPU0Up CitVUERBVEUgZnBydDEgU0VUIGI9ZnBydDEuYisxIEZST00gZnBydDIgV0hFUkUgZnBydDEuYSA9 IGZwcnQyLmIgQU5EIGZwcnQyLmEgJSAyNSA9IDA7CitVUERBVEUgZnBydDEgU0VUIGI9ZnBydDEu YisxIEZST00gZnBydDIgV0hFUkUgZnBydDEuYSA9IGZwcnQyLmIgQU5EIGZwcnQyLmEgJSAyNSA9 IDA7CisKK0VYUExBSU4gKENPU1RTIE9GRiwgVkVSQk9TRSkKK1VQREFURSBmcHJ0MSBTRVQgYj0o ZnBydDEuYStmcHJ0Mi5iKS8yIEZST00gZnBydDIgV0hFUkUgZnBydDEuYSA9IGZwcnQyLmIgQU5E IGZwcnQyLmEgJSAyNSA9IDA7CitVUERBVEUgZnBydDEgU0VUIGI9KGZwcnQxLmErZnBydDIuYikv MiBGUk9NIGZwcnQyIFdIRVJFIGZwcnQxLmEgPSBmcHJ0Mi5iIEFORCBmcHJ0Mi5hICUgMjUgPSAw OworCistLSByZXR1cm5pbmcgd2hvbGUgcm93IHJlZmVyZW5jZXMKK0VYUExBSU4gKENPU1RTIE9G RikKK1VQREFURSBmcHJ0MSBTRVQgYj1mcHJ0MS5iKzEgRlJPTSBmcHJ0MiBXSEVSRSBmcHJ0MS5h ID0gZnBydDIuYiBBTkQgZnBydDIuYSAlIDI1ID0gMCBSRVRVUk5JTkcgZnBydDEsIGZwcnQyOwor VVBEQVRFIGZwcnQxIFNFVCBiPWZwcnQxLmIrMSBGUk9NIGZwcnQyIFdIRVJFIGZwcnQxLmEgPSBm cHJ0Mi5iIEFORCBmcHJ0Mi5hICUgMjUgPSAwIFJFVFVSTklORyBmcHJ0MSwgZnBydDI7CisKKy0t IHRhYmxlb2lkcyBhcmUgcmV0dXJuZWQgY29ycmVjdGx5CitFWFBMQUlOIChDT1NUUyBPRkYpCitV UERBVEUgZnBydDEgdDEgU0VUIGIgPSB0MS5iICsgMSBGUk9NIGZwcnQyIHQyIFdIRVJFIHQxLmEg PSB0Mi5iIEFORCB0MS5hICUgMjUgPSAwICBSRVRVUk5JTkcgdDIudGFibGVvaWQ6OnJlZ2NsYXNz OworVVBEQVRFIGZwcnQxIHQxIFNFVCBiID0gdDEuYiArIDEgRlJPTSBmcHJ0MiB0MiBXSEVSRSB0 MS5hID0gdDIuYiBBTkQgdDEuYSAlIDI1ID0gMCAgUkVUVVJOSU5HIHQyLnRhYmxlb2lkOjpyZWdj bGFzczsKKworLS0gam9pbiBvZiBzZXZlcmFsIHRhYmxlcworRVhQTEFJTiAoVkVSQk9TRSwgQ09T VFMgT0ZGKQorVVBEQVRFIGZwcnQxIHQxIFNFVCBiID0gdDEuYiArIDEgRlJPTSBmcHJ0MiB0Miwg ZnBydDEgdDMgV0hFUkUgdDEuYSA9IHQyLmIgQU5EIHQyLmIgPSB0My5hIEFORCB0MS5hICUgMjUg PSAwICBSRVRVUk5JTkcgKjsKK1VQREFURSBmcHJ0MSB0MSBTRVQgYiA9IHQxLmIgKyAxIEZST00g ZnBydDIgdDIsIGZwcnQxIHQzIFdIRVJFIHQxLmEgPSB0Mi5iIEFORCB0Mi5iID0gdDMuYSBBTkQg dDEuYSAlIDI1ID0gMCAgUkVUVVJOSU5HICo7CisKKy0tIGxlZnQgam9pbgorRVhQTEFJTiAoVkVS Qk9TRSwgQ09TVFMgT0ZGKQorVVBEQVRFIGZwcnQxIHQxIFNFVCBiID0gdDEuYiArIDEgRlJPTSBm cHJ0MiB0MiBMRUZUIEpPSU4gZnBydDEgdDMgT04gKHQyLmIgPSB0My5hKSBXSEVSRSB0MS5hID0g dDIuYiBBTkQgdDEuYSAlIDI1ID0gMCAgUkVUVVJOSU5HICo7CitVUERBVEUgZnBydDEgdDEgU0VU IGIgPSB0MS5iICsgMSBGUk9NIGZwcnQyIHQyIExFRlQgSk9JTiBmcHJ0MSB0MyBPTiAodDIuYiA9 IHQzLmEpIFdIRVJFIHQxLmEgPSB0Mi5iIEFORCB0MS5hICUgMjUgPSAwICBSRVRVUk5JTkcgKjsK KworLS0gZGVsZXRlCitFWFBMQUlOIChDT1NUUyBPRkYpCitERUxFVEUgRlJPTSBmcHJ0MSBVU0lO RyBmcHJ0MiBXSEVSRSBmcHJ0MS5hID0gZnBydDIuYiBBTkQgZnBydDIuYSAlIDMwID0gMjk7CitE RUxFVEUgRlJPTSBmcHJ0MSBVU0lORyBmcHJ0MiBXSEVSRSBmcHJ0MS5hID0gZnBydDIuYiBBTkQg ZnBydDIuYSAlIDMwID0gMjk7CisKK0VYUExBSU4gKENPU1RTIE9GRikKK0RFTEVURSBGUk9NIGZw cnQxIFVTSU5HIGZwcnQyIFdIRVJFIGZwcnQxLmEgPSBmcHJ0Mi5iIEFORCBmcHJ0Mi5hICUgMjUg PSAwIFJFVFVSTklORyAqOworREVMRVRFIEZST00gZnBydDEgVVNJTkcgZnBydDIgV0hFUkUgZnBy dDEuYSA9IGZwcnQyLmIgQU5EIGZwcnQyLmEgJSAyNSA9IDAgUkVUVVJOSU5HICo7CisKIFJFU0VU IGVuYWJsZV9wYXJ0aXRpb253aXNlX2pvaW47CiAKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv b3B0aW1pemVyL3V0aWwvYXBwZW5kaW5mby5jIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwv YXBwZW5kaW5mby5jCmluZGV4IDQ5ODk3MjI2MzcxLi4yOWJlOGFmNmNjOCAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvYXBwZW5kaW5mby5jCisrKyBiL3NyYy9iYWNrZW5k L29wdGltaXplci91dGlsL2FwcGVuZGluZm8uYwpAQCAtNjkxLDcgKzY5MSw3IEBAIGFkanVzdF9p bmhlcml0ZWRfYXR0bnVtc19tdWx0aWxldmVsKFBsYW5uZXJJbmZvICpyb290LCBMaXN0ICphdHRu dW1zLAogICogcmVsaWVkIG9uIGZvciB0aGlzIHB1cnBvc2UuKQogICovCiB2b2lkCi1nZXRfdHJh bnNsYXRlZF91cGRhdGVfdGFyZ2V0bGlzdChQbGFubmVySW5mbyAqcm9vdCwgSW5kZXggcmVsaWQs CitnZXRfdHJhbnNsYXRlZF91cGRhdGVfdGFyZ2V0bGlzdChQbGFubmVySW5mbyAqcm9vdCwgSW5k ZXggcmVsaWQsIFJlbGlkcyBjaGlsZF9qb2lucmVsX3JlbGlkcywKIAkJCQkJCQkJIExpc3QgKipw cm9jZXNzZWRfdGxpc3QsIExpc3QgKip1cGRhdGVfY29sbm9zKQogewogCS8qIFRoaXMgaXMgcHJl dHR5IG1lYW5pbmdsZXNzIGZvciBjb21tYW5kcyBvdGhlciB0aGFuIFVQREFURS4gKi8KQEAgLTcw OSwxMSArNzA5LDMxIEBAIGdldF90cmFuc2xhdGVkX3VwZGF0ZV90YXJnZXRsaXN0KFBsYW5uZXJJ bmZvICpyb290LCBJbmRleCByZWxpZCwKIAllbHNlCiAJewogCQlBc3NlcnQoYm1zX2lzX21lbWJl cihyZWxpZCwgcm9vdC0+YWxsX3Jlc3VsdF9yZWxpZHMpKTsKLQkJKnByb2Nlc3NlZF90bGlzdCA9 IChMaXN0ICopCi0JCQlhZGp1c3RfYXBwZW5kcmVsX2F0dHJzX211bHRpbGV2ZWwocm9vdCwKLQkJ CQkJCQkJCQkJICAoTm9kZSAqKSByb290LT5wcm9jZXNzZWRfdGxpc3QsCi0JCQkJCQkJCQkJCSAg ZmluZF9iYXNlX3JlbChyb290LCByZWxpZCksCi0JCQkJCQkJCQkJCSAgZmluZF9iYXNlX3JlbChy b290LCByb290LT5wYXJzZS0+cmVzdWx0UmVsYXRpb24pKTsKKworCQkvKgorCQkgKiBVUERBVEUg dGFyZ2V0bGlzdCBjb3JyZXNwb25kcyB0byBTRVQgY2xhdXNlIGFuZCBzbyBjYW4gY29udGFpbgor CQkgKiBhcmJpdHJhcnkgZXhwcmVzc2lvbnMsIGluY2x1ZGluZyB0aG9zZSB3aGljaCBjb250YWlu IHJlZmVyZW5jZXMgbm90CisJCSAqIG9ubHkgdG8gcmVzdWx0IHJlbGF0aW9uLCBidXQgYWxzbyB0 byBvdGhlciB2YXJzLiBTbyBpbiBjYXNlIG9mIGpvaW4KKwkJICogd2Ugc2hvdWxkIGFsc28gdHJh bnNsYXRlIHRoZXNlIHZhcnMgdG8gdGhlaXIgcGFyZW50cy4KKwkJICovCisJCWlmIChibXNfaXNf ZW1wdHkoY2hpbGRfam9pbnJlbF9yZWxpZHMpKQorCQl7CisJCQkqcHJvY2Vzc2VkX3RsaXN0ID0g KExpc3QgKikKKwkJCQlhZGp1c3RfYXBwZW5kcmVsX2F0dHJzX211bHRpbGV2ZWwocm9vdCwKKwkJ CQkJCQkJCQkJCSAgKE5vZGUgKikgcm9vdC0+cHJvY2Vzc2VkX3RsaXN0LAorCQkJCQkJCQkJCQkJ ICBmaW5kX2Jhc2VfcmVsKHJvb3QsIHJlbGlkKSwKKwkJCQkJCQkJCQkJCSAgZmluZF9iYXNlX3Jl bChyb290LCByb290LT5wYXJzZS0+cmVzdWx0UmVsYXRpb24pKTsKKwkJfQorCQllbHNlCisJCXsK KwkJCVJlbE9wdEluZm8gKmNoaWxkX2pvaW5yZWwgPSBmaW5kX2pvaW5fcmVsKHJvb3QsIGNoaWxk X2pvaW5yZWxfcmVsaWRzKTsKKworCQkJKnByb2Nlc3NlZF90bGlzdCA9IChMaXN0ICopCisJCQkJ YWRqdXN0X2FwcGVuZHJlbF9hdHRyc19tdWx0aWxldmVsKHJvb3QsCisJCQkJCQkJCQkJCQkgIChO b2RlICopIHJvb3QtPnByb2Nlc3NlZF90bGlzdCwKKwkJCQkJCQkJCQkJCSAgY2hpbGRfam9pbnJl bCwKKwkJCQkJCQkJCQkJCSAgY2hpbGRfam9pbnJlbC0+dG9wX3BhcmVudCk7CisJCX0KIAkJaWYg KHVwZGF0ZV9jb2xub3MpCiAJCQkqdXBkYXRlX2NvbG5vcyA9CiAJCQkJYWRqdXN0X2luaGVyaXRl ZF9hdHRudW1zX211bHRpbGV2ZWwocm9vdCwgcm9vdC0+dXBkYXRlX2NvbG5vcywKZGlmZiAtLWdp dCBhL3NyYy9pbmNsdWRlL29wdGltaXplci9hcHBlbmRpbmZvLmggYi9zcmMvaW5jbHVkZS9vcHRp bWl6ZXIvYXBwZW5kaW5mby5oCmluZGV4IGNjMTJjOWM3NDNkLi40ZjczYmI5N2E1MCAxMDA2NDQK LS0tIGEvc3JjL2luY2x1ZGUvb3B0aW1pemVyL2FwcGVuZGluZm8uaAorKysgYi9zcmMvaW5jbHVk ZS9vcHRpbWl6ZXIvYXBwZW5kaW5mby5oCkBAIC0zNiw2ICszNiw3IEBAIGV4dGVybiBMaXN0ICph ZGp1c3RfaW5oZXJpdGVkX2F0dG51bXNfbXVsdGlsZXZlbChQbGFubmVySW5mbyAqcm9vdCwKIAkJ CQkJCQkJCQkJCSBJbmRleCBjaGlsZF9yZWxpZCwKIAkJCQkJCQkJCQkJCSBJbmRleCB0b3BfcGFy ZW50X3JlbGlkKTsKIGV4dGVybiB2b2lkIGdldF90cmFuc2xhdGVkX3VwZGF0ZV90YXJnZXRsaXN0 KFBsYW5uZXJJbmZvICpyb290LCBJbmRleCByZWxpZCwKKwkJCQkJCQkJCQkJIFJlbGlkcyBjaGls ZF9qb2lucmVsX3JlbGlkcywKIAkJCQkJCQkJCQkJIExpc3QgKipwcm9jZXNzZWRfdGxpc3QsCiAJ CQkJCQkJCQkJCSBMaXN0ICoqdXBkYXRlX2NvbG5vcyk7CiBleHRlcm4gQXBwZW5kUmVsSW5mbyAq KmZpbmRfYXBwaW5mb3NfYnlfcmVsaWRzKFBsYW5uZXJJbmZvICpyb290LAotLSAKMi4zNC4xCgo= --=_1b73054158934e47c139853525d00f6f Content-Transfer-Encoding: base64 Content-Type: text/x-diff; name=0005-postgres_fdw-child-join-with-ConvertRowtypeExprs-cau.patch Content-Disposition: attachment; filename=0005-postgres_fdw-child-join-with-ConvertRowtypeExprs-cau.patch; size=26259 RnJvbSBkYmRiMDM0NzU4MDQyMmVmNzgyYzIyZWE0NWRmZGE3YTVkM2M2OGE0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBc2h1dG9zaCBCYXBhdCA8YXNodXRvc2guYmFwYXRAZW50ZXJw cmlzZWRiLmNvbT4KRGF0ZTogVHVlLCAyNiBEZWMgMjAyMyAxMToxMzoxNiArMDMwMApTdWJqZWN0 OiBbUEFUQ0ggNS82XSBwb3N0Z3Jlc19mZHc6IGNoaWxkLWpvaW4gd2l0aCBDb252ZXJ0Um93dHlw ZUV4cHJzIGNhdXNlcwogZXhwcmVzc2lvbiByZWZlcmVuY2UgZXJyb3JzLgoKV2hvbGUgcm93IHJl ZmVyZW5jZSBvZiB0aGUgcGFyZW50IGlzIHRyYW5zbGF0ZWQgaW50bwpDb252ZXJ0Um93dHlwZUV4 cHIgd2l0aCB3aG9sZSByb3cgb2YgY2hpbGQgYXMgYW4gYXJndW1lbnQuIFdoZW4KcGFydGl0aW9u LXdpc2Ugam9pbiBpcyB1c2VkLCB0YXJnZXRsaXN0IG9mIGEgY2hpbGQtam9pbiBjb250YWlucwpD b252ZXJ0Um93dHlwZUV4cHIvcyB3aGVuIHRoZSBwYXJlbnQtam9pbidzIHRhcmdldGxpc3QgaGFz IHdob2xlLXJvdwpyZWZlcmVuY2UvcyBvZiBqb2luaW5nIHBhcnRpdGlvbmVkIHRhYmxlcy4KClRo ZSB0YXJnZXRsaXN0IHRvIGJlIGRlcGFyc2VkIGZvciBhIGNoaWxkLWpvaW4gaXMgYnVpbHQgdXNp bmcKYnVpbGRfdGxpc3RfdG9fZGVwYXJzZSgpLiBUaGUgc2FtZSB0YXJnZXRsaXN0IGlzIHRoZW4g c2F2ZWQgYXMKZmR3X3NjYW5fdGxpc3QgaW4gRm9yZWlnblNjYW5QbGFuLiBidWlsZF90bGlzdF90 b19kZXBhcnNlKCkgcHVsbHMgb25seQpWYXIgbm9kZXMgZnJvbSB0aGUgam9pbidzIHRhcmdldGxp c3QuICBTbyBpdCBwdWxscyBWYXIgcmVwcmVuc2VudGluZyBhCndob2xlLXJvdyByZWZlcmVuY2Ug b2YgYSBjaGlsZCBmcm9tIGEgQ29udmVydFJvd3R5cGVFeHByLiBUaHVzIHRoZQpjaGlsZC1qb2lu J3MgcHJvamVjdGVkIHRhcmdldCBsaXN0IGNvbnRhaW5zIENvbnZlcnRSb3d0eXBlRXhwciBidXQg dGhlClNFTEVDVCBjbGF1c2UgYW5kIGZkd19zY2FuX3RsaXN0IGNvbnRhaW5zIGEgd2hvbGUtcm93 IHJlZmVyZW5jZS4KClRoaXMgY2F1c2VzIHR3byBwcm9ibGVtczoKMS4gIFdoZW4gYSByZWxhdGlv biAocGFydGljaXBhdGluZyBpbiB0aGUgY2hpbGQtam9pbiBiZWluZyBwdXNoZWQKZG93bikgaXMg ZGVwYXJzZWQgYXMgYSBzdWJxdWVyeSwgc3VicXVlcnkncyB0YXJnZXRsaXN0IChhbmQgU0VMRUNU CmNsYXVzZSkgY29udGFpbnMgZXhwcmVzc2lvbnMgZnJvbSBmb3JlaWducmVsLT5yZWx0YXJnZXQt PmV4cHJzLiBBIFZhcgpmcm9tIHN1Y2ggYSByZWxhdGlvbiBpcyBkZXBhcnNlZCBhcyBjb2x1bW4g cmVmZXJlbmNlIG9mIHN1YnF1ZXJ5IHVzaW5nCmdldF9yZWxhdGlvbl9jb2x1bW5fYWxpYXNfaWRz KCkuICBUaGF0IGZ1bmN0aW9uIHVzZXMgZm9yZWlnbnJlbCdzCnRhcmdldGxpc3QgdG8gbG9jYXRl IGdpdmVuIG5vZGUgdG8gYmUgZGVwYXJzZWQuICBJZiB0aGUgam9pbmluZwpyZWxhdGlvbiBjb3Jy ZXNwb25kaW5nIHRvIENvbnZlcnRSb3d0eXBlRXhwciBpcyBkZXBhcnNlZCBhcyBhCnN1YnF1ZXJ5 LCB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCB3aXRoIHdob2xlLXJvdyByZWZlcmVuY2Ugbm9kZSAo VmFyCm5vZGUgd2l0aCB2YXJhdHRubyA9IDApLiAgVGhlIHJlbGF0aW9uJ3MgZm9yZWlnbnJlbC0+ cmVsdGFyZ2V0LT5leHBycwpkb2Vzbid0IGNvbnRhaW4gaXRzIHdob2xlLXJvdyByZWZlcmVuY2Ug ZGlyZWN0bHkgYnV0IGhhcyBpdCBlbWJlZGRlZAppbiBDb252ZXJ0Um93dHlwZUV4cHIuIFNvLCB0 aGUgZnVuY3Rpb24gZG9lc24ndCBmaW5kIHRoZSBnaXZlbiBub2RlCmFuZCB0aHJvd3MgZXJyb3Iu CgoyLiBXaGVuIHRoZXJlIGlzIHBvc3NpYmlsaXR5IG9mIEV2YWxQbGFuUXVhbCBiZWluZyBjYWxs ZWQsIHdlCmNvbnN0cnVjdCBsb2NhbCBqb2luIHBsYW4gbWF0Y2hpbmcgdGhlIHB1c2hlZCBkb3du IGZvcmVpZ24gam9pbi4gSW4KcG9zdGdyZXNHZXRGb3JlaWduUGxhbigpIGFmdGVyIHdlIGhhdmUg YnVpbHQgdGhlIGxvY2FsIGpvaW4gcGxhbiwgdGhlCnRvcG1vc3QgcGxhbiBub2RlJ3MgdGFyZ2V0 bGlzdCBpcyBjaGFuZ2VkIHRvIGZkd19zY2FuX3RsaXN0IHRvIG1hdGNoCnRoZSBvdXRwdXQgb2Yg dGhlIEZvcmVpZ25TY2FuIG5vZGUuIEFzIGV4cGxhaW5lZCBhYm92ZSwgdGhpcwpmZHdfc2Nhbl90 bGlzdCBjb250YWlucyBhIGJhcmUgcmVmZXJlbmNlIHRvIHRoZSB3aG9sZS1yb3cgcmVmZXJlbmNl IGZyb20gYQpjaGlsZCByZWxhdGlvbiBpZiB0aGUgY2hpbGQtam9pbidzIHRhcmdldGxpc3QgY29u dGFpbnMgYQpDb252ZXJ0Um93dHlwZUV4cHIuIFdoZW4gY2hhbmdpbmcgdGhlIHRvcG1vc3QgcGxh biBub2RlJ3MgdGFyZ2V0bGlzdCwKd2UgZG8gbm90IG1vZGlmeSB0aGUgdGFyZ2V0bGlzdHMgb2Yg aXRzIGxlZnQgYW5kIHJpZ2h0IHRyZWUgbm9kZXMuIFRoZQpsZWZ0L3JpZ2h0IHBsYW4gaW52b2x2 aW5nIGNvcnJlc3BvbmRpbmcgY2hpbGQgcmVsYXRpb24gd2lsbCBoYXZlCkNvbnZlcnRSb3d0eXBl RXhwciBleHByZXNzaW9uIGluIGl0cyB0YXJnZXRsaXN0LCBidXQgbm90IHdob2xlLXJvdwpyZWZl cmVuY2UgZGlyZWN0bHkuIFdoZW4gdGhlIHRvcG1vc3QgbG9jYWwgam9pbiBwbGFuIG5vZGUncyB0 YXJnZXRsaXN0CmlzIHByb2Nlc3NlZCBieSBzZXRfcGxhbl9yZWYoKSwgaXQgdGhyb3dzIGVycm9y ICJ2YXJpYWJsZSBub3QgZm91bmQgaW4Kc3VicGxhbiB0YXJnZXQgbGlzdHMiIHNpbmNlIGl0IGRv ZXNuJ3QgZmluZCBiYXJlIHdob2xlLXJvdyByZWZlcmVuY2UKb2YgdGhlIGNoaWxkIHJlbGF0aW9u IGluIHN1YnBsYW4ncyB0YXJnZXRsaXN0cy4KClNvbHV0aW9uClRoaXMgcmVxdWlyZXMgdHdvIHBh cnRzCmEuIEluIGJ1aWxkX3RsaXN0X3RvX2RlcGFyc2UoKSwgaW5zdGVhZCBvZiBwdWxsaW5nIFZh ciBub2RlIGZyb20KQ29udmVydFJvd3R5cGVFeHByLCB3ZSBwdWxsIHdob2xlIENvbnZlcnRSb3d0 eXBlRXhwciBhbmQgaW5jbHVkZSBpdCBpbgp0aGUgdGFyZ2V0bGlzdCBiZWluZyBkZXBhcnNlZCB3 aGljaCBpcyBhbHNvIHVzZWQgdG8gc2V0CmZkd19zY2FuX3RsaXN0LgoKYi4gZGVwYXJzZSBDb252 ZXJ0Um93dHlwZUV4cHIuICBGb3IgdGhpcyB3ZSBuZWVkIHRvIGdldCB0aGUgY29udmVyc2lvbgpt YXAgYmV0d2VlbiB0aGUgcGFyZW50IGFuZCBjaGlsZC4gV2UgdGhlbiBkZXBhcnNlIENvbnZlcnRS b3d0eXBlRXhwcgphcyBhIFJPVygpIHdpdGggdGhlIGF0dHJpYnV0ZXMgb2YgY2hpbGQgcmVhcnJh bmdlZCBwZXIgdGhlIGNvbnZlcnNpb24KbWFwLiBBIG11bHRpLWxldmVsIHBhcnRpdGlvbmVkIHRh YmxlIHdpbGwgaGF2ZSBuZXN0ZWQKQ29udmVydFJvd3R5cGVFeHByLiBUbyBkZXBhcnNlIHN1Y2gg ZXhwcmVzc2lvbnMsIHdlIG5lZWQgdG8gZmluZCB0aGUKY29udmVyc2lvbiBtYXAgYmV0d2VlbiB0 aGUgdG9wbW9zdCBwYXJlbnQgYW5kIHRoZSBjaGlsZCwgYnkgaWdub3JpbmcKYW55IGludGVybWVk aWF0ZSBwYXJlbnRzLgoKVGhlIHBhdGNoIGlzIHRha2VuIGZyb20gaHR0cHM6Ly93d3cucG9zdGdy ZXNxbC5vcmcvbWVzc2FnZS1pZC9DQUZqRnBSYzhab0RtMCUyQnpoeCUyQk1ja3dHeUVxa096V2Nw VnFidmpheHdkR2FyWlNOcm1BJTQwbWFpbC5nbWFpbC5jb20KLS0tCiBjb250cmliL3Bvc3RncmVz X2Zkdy9kZXBhcnNlLmMgICAgICAgICAgICAgICAgfCAxNzQgKysrKysrKysrKysrKysrLS0tCiAu Li4vcG9zdGdyZXNfZmR3L2V4cGVjdGVkL3Bvc3RncmVzX2Zkdy5vdXQgICAgfCAgOTIgKysrKysr LS0tCiBjb250cmliL3Bvc3RncmVzX2Zkdy9wb3N0Z3Jlc19mZHcuYyAgICAgICAgICAgfCAgMjAg Ky0KIGNvbnRyaWIvcG9zdGdyZXNfZmR3L3NxbC9wb3N0Z3Jlc19mZHcuc3FsICAgICB8ICAxNiAr LQogNCBmaWxlcyBjaGFuZ2VkLCAyNTIgaW5zZXJ0aW9ucygrKSwgNTAgZGVsZXRpb25zKC0pCgpk aWZmIC0tZ2l0IGEvY29udHJpYi9wb3N0Z3Jlc19mZHcvZGVwYXJzZS5jIGIvY29udHJpYi9wb3N0 Z3Jlc19mZHcvZGVwYXJzZS5jCmluZGV4IGZiNTkwYzg3ZTY3Li5mODc5ZmYzMTAwZiAxMDA2NDQK LS0tIGEvY29udHJpYi9wb3N0Z3Jlc19mZHcvZGVwYXJzZS5jCisrKyBiL2NvbnRyaWIvcG9zdGdy ZXNfZmR3L2RlcGFyc2UuYwpAQCAtMTY2LDYgKzE2Niw4IEBAIHN0YXRpYyB2b2lkIGRlcGFyc2VC b29sRXhwcihCb29sRXhwciAqbm9kZSwgZGVwYXJzZV9leHByX2N4dCAqY29udGV4dCk7CiBzdGF0 aWMgdm9pZCBkZXBhcnNlTnVsbFRlc3QoTnVsbFRlc3QgKm5vZGUsIGRlcGFyc2VfZXhwcl9jeHQg KmNvbnRleHQpOwogc3RhdGljIHZvaWQgZGVwYXJzZUNhc2VFeHByKENhc2VFeHByICpub2RlLCBk ZXBhcnNlX2V4cHJfY3h0ICpjb250ZXh0KTsKIHN0YXRpYyB2b2lkIGRlcGFyc2VBcnJheUV4cHIo QXJyYXlFeHByICpub2RlLCBkZXBhcnNlX2V4cHJfY3h0ICpjb250ZXh0KTsKK3N0YXRpYyB2b2lk IGRlcGFyc2VDb252ZXJ0Um93dHlwZUV4cHIoQ29udmVydFJvd3R5cGVFeHByICpjcmUsCisJCQkJ CQkJCQkgIGRlcGFyc2VfZXhwcl9jeHQgKmNvbnRleHQpOwogc3RhdGljIHZvaWQgcHJpbnRSZW1v dGVQYXJhbShpbnQgcGFyYW1pbmRleCwgT2lkIHBhcmFtdHlwZSwgaW50MzIgcGFyYW10eXBtb2Qs CiAJCQkJCQkJIGRlcGFyc2VfZXhwcl9jeHQgKmNvbnRleHQpOwogc3RhdGljIHZvaWQgcHJpbnRS ZW1vdGVQbGFjZWhvbGRlcihPaWQgcGFyYW10eXBlLCBpbnQzMiBwYXJhbXR5cG1vZCwKQEAgLTIw Miw5ICsyMDQsOSBAQCBzdGF0aWMgTm9kZSAqZGVwYXJzZVNvcnRHcm91cENsYXVzZShJbmRleCBy ZWYsIExpc3QgKnRsaXN0LCBib29sIGZvcmNlX2NvbG5vLAogLyoKICAqIEhlbHBlciBmdW5jdGlv bnMKICAqLwotc3RhdGljIGJvb2wgaXNfc3VicXVlcnlfdmFyKFZhciAqbm9kZSwgUmVsT3B0SW5m byAqZm9yZWlnbnJlbCwKK3N0YXRpYyBib29sIGlzX3N1YnF1ZXJ5X3ZhcihOb2RlICpub2RlLCBJ bmRleCB2YXJubywgaW50IHZhcmF0dG5vLCBSZWxPcHRJbmZvICpmb3JlaWducmVsLAogCQkJCQkJ CWludCAqcmVsbm8sIGludCAqY29sbm8pOwotc3RhdGljIHZvaWQgZ2V0X3JlbGF0aW9uX2NvbHVt bl9hbGlhc19pZHMoVmFyICpub2RlLCBSZWxPcHRJbmZvICpmb3JlaWducmVsLAorc3RhdGljIHZv aWQgZ2V0X3JlbGF0aW9uX2NvbHVtbl9hbGlhc19pZHMoTm9kZSAqbm9kZSwgSW5kZXggdmFybm8s IGludCB2YXJhdHRubywgUmVsT3B0SW5mbyAqZm9yZWlnbnJlbCwKIAkJCQkJCQkJCQkgIGludCAq cmVsbm8sIGludCAqY29sbm8pOwogCiAKQEAgLTExODgsMTggKzExOTAsMjUgQEAgYnVpbGRfdGxp c3RfdG9fZGVwYXJzZShSZWxPcHRJbmZvICpmb3JlaWducmVsKQogCiAJLyoKIAkgKiBXZSByZXF1 aXJlIGNvbHVtbnMgc3BlY2lmaWVkIGluIGZvcmVpZ25yZWwtPnJlbHRhcmdldC0+ZXhwcnMgYW5k IHRob3NlCi0JICogcmVxdWlyZWQgZm9yIGV2YWx1YXRpbmcgdGhlIGxvY2FsIGNvbmRpdGlvbnMu CisJICogcmVxdWlyZWQgZm9yIGV2YWx1YXRpbmcgdGhlIGxvY2FsIGNvbmRpdGlvbnMuICBDaGls ZCByZWxhdGlvbidzCisJICogdGFyZ2V0bGlzdCBvciBsb2NhbCBjb25kaXRpb25zIG1heSBoYXZl IENvbnZlcnRSb3d0eXBlRXhwciB3aGVuIHBhcmVudAorCSAqIHdob2xlLXJvdyBWYXJzIHdlcmUg dHJhbnNsYXRlZC4gV2UgbmVlZCB0byBpbmNsdWRlIHRob3NlIGluIHRhcmdldGxpc3QKKwkgKiB0 byBiZSBwdXNoZWQgZG93biB0byBtYXRjaCB0aGUgdGFyZ2V0bGlzdHMgcHJvZHVjZWQgZm9yIHRo ZSBqb2luaW5nCisJICogcmVsYXRpb25zIChpbiBjYXNlIHdlIGFyZSB1c2luZyBzdWJxdWVyaWVz IGluIHRoZSBkZXBhcnNlZCBxdWVyeSkgYW5kCisJICogYWxzbyB0byBtYXRjaCB0aGUgdGFyZ2V0 bGlzdCBvZiBvdXRlciBwbGFuIGlmIGZvcmVpZ24gc2NhbiBoYXMgb25lLgogCSAqLwogCXRsaXN0 ID0gYWRkX3RvX2ZsYXRfdGxpc3QodGxpc3QsCiAJCQkJCQkJICBwdWxsX3Zhcl9jbGF1c2UoKE5v ZGUgKikgZm9yZWlnbnJlbC0+cmVsdGFyZ2V0LT5leHBycywKLQkJCQkJCQkJCQkJICBQVkNfUkVD VVJTRV9QTEFDRUhPTERFUlMpKTsKKwkJCQkJCQkJCQkJICBQVkNfUkVDVVJTRV9QTEFDRUhPTERF UlMgfAorCQkJCQkJCQkJCQkgIFBWQ19JTkNMVURFX0NPTlZFUlRST1dUWVBFUykpOwogCWZvcmVh Y2gobGMsIGZwaW5mby0+bG9jYWxfY29uZHMpCiAJewogCQlSZXN0cmljdEluZm8gKnJpbmZvID0g bGZpcnN0X25vZGUoUmVzdHJpY3RJbmZvLCBsYyk7CiAKIAkJdGxpc3QgPSBhZGRfdG9fZmxhdF90 bGlzdCh0bGlzdCwKIAkJCQkJCQkJICBwdWxsX3Zhcl9jbGF1c2UoKE5vZGUgKikgcmluZm8tPmNs YXVzZSwKLQkJCQkJCQkJCQkJCSAgUFZDX1JFQ1VSU0VfUExBQ0VIT0xERVJTKSk7CisJCQkJCQkJ CQkJCQkgIFBWQ19SRUNVUlNFX1BMQUNFSE9MREVSUyB8CisJCQkJCQkJCQkJCQkgIFBWQ19JTkNM VURFX0NPTlZFUlRST1dUWVBFUykpOwogCX0KIAogCXJldHVybiB0bGlzdDsKQEAgLTI5MzAsNiAr MjkzOSwxMCBAQCBkZXBhcnNlRXhwcihFeHByICpub2RlLCBkZXBhcnNlX2V4cHJfY3h0ICpjb250 ZXh0KQogCQljYXNlIFRfQWdncmVmOgogCQkJZGVwYXJzZUFnZ3JlZigoQWdncmVmICopIG5vZGUs IGNvbnRleHQpOwogCQkJYnJlYWs7CisJCWNhc2UgVF9Db252ZXJ0Um93dHlwZUV4cHI6CisJCQlk ZXBhcnNlQ29udmVydFJvd3R5cGVFeHByKGNhc3ROb2RlKENvbnZlcnRSb3d0eXBlRXhwciwgbm9k ZSksCisJCQkJCQkJCQkgIGNvbnRleHQpOworCQkJYnJlYWs7CiAJCWRlZmF1bHQ6CiAJCQllbG9n KEVSUk9SLCAidW5zdXBwb3J0ZWQgZXhwcmVzc2lvbiB0eXBlIGZvciBkZXBhcnNlOiAlZCIsCiAJ CQkJIChpbnQpIG5vZGVUYWcobm9kZSkpOwpAQCAtMjk2MCw3ICsyOTczLDggQEAgZGVwYXJzZVZh cihWYXIgKm5vZGUsIGRlcGFyc2VfZXhwcl9jeHQgKmNvbnRleHQpCiAJICogc3VicXVlcnksIHVz ZSB0aGUgcmVsYXRpb24gYW5kIGNvbHVtbiBhbGlhcyB0byB0aGUgVmFyIHByb3ZpZGVkIGJ5IHRo ZQogCSAqIHN1YnF1ZXJ5LCBpbnN0ZWFkIG9mIHRoZSByZW1vdGUgbmFtZS4KIAkgKi8KLQlpZiAo aXNfc3VicXVlcnlfdmFyKG5vZGUsIGNvbnRleHQtPnNjYW5yZWwsICZyZWxubywgJmNvbG5vKSkK KwlpZiAoaXNfc3VicXVlcnlfdmFyKChOb2RlICopIG5vZGUsIG5vZGUtPnZhcm5vLCBub2RlLT52 YXJhdHRubywgY29udGV4dC0+c2NhbnJlbCwgJnJlbG5vLAorCQkJCQkJJmNvbG5vKSkKIAl7CiAJ CWFwcGVuZFN0cmluZ0luZm8oY29udGV4dC0+YnVmLCAiJXMlZC4lcyVkIiwKIAkJCQkJCSBTVUJR VUVSWV9SRUxfQUxJQVNfUFJFRklYLCByZWxubywKQEAgLTM3NDIsNiArMzc1NiwxMTUgQEAgZGVw YXJzZUFnZ3JlZihBZ2dyZWYgKm5vZGUsIGRlcGFyc2VfZXhwcl9jeHQgKmNvbnRleHQpCiAJYXBw ZW5kU3RyaW5nSW5mb0NoYXIoYnVmLCAnKScpOwogfQogCisvKgorICogRGVwYXJzZSBhIENvbnZl cnRSb3d0eXBlRXhwciBub2RlLgorICoKKyAqIFRoZSBmdW5jdGlvbiBoYW5kbGVzIENvbnZlcnRS b3d0eXBlRXhwciBub2RlcyBjb25zdHJ1Y3RlZCB0byBjb252ZXJ0IGEgY2hpbGQKKyAqIHR1cGxl IHRvIHBhcmVudCB0dXBsZS4gVGhlIGZ1bmN0aW9uIGRlcGFyc2VzIGEgQ29udmVydFJvd3R5cGVF eHByIGFzIGEgUk9XCisgKiBleHByZXNzaW9uIGNoaWxkIGNvbHVtbiByZWZyZW5jZXMgYXJyYW5n ZWQgYWNjb3JkaW5nIHRvIHRoZSB0dXBsZSBjb252ZXJzaW9uCisgKiBtYXAgZm9yIGNvbnZlcnRp bmcgY2hpbGQgdHVwbGUgdG8gdGhhdCBvZiB0aGUgcGFyZW50LiBUaGUgUk9XIGV4cHJlc3Npb24g aXMKKyAqIGRlY29yYXRlZCB3aXRoIENBU0Ugc2ltaWxhciB0byBkZXBhcnNlQ29sdW1uUmVmKCkg dG8gdGFrZSBjYXJlIG9mCisgKiBDb252ZXJ0Um93dHlwZUV4cHIgbm9kZXMgb24gbnVsbGFibGUg c2lkZSBvZiB0aGUgam9pbi4KKyAqLworc3RhdGljIHZvaWQKK2RlcGFyc2VDb252ZXJ0Um93dHlw ZUV4cHIoQ29udmVydFJvd3R5cGVFeHByICpjcmUsCisJCQkJCQkgIGRlcGFyc2VfZXhwcl9jeHQg KmNvbnRleHQpCit7CisJQ29udmVydFJvd3R5cGVFeHByICpleHByID0gY3JlOworCVZhcgkJICAg KmNoaWxkX3ZhcjsKKwlUdXBsZURlc2MJcGFyZW50X2Rlc2M7CisJVHVwbGVEZXNjCWNoaWxkX2Rl c2M7CisJVHVwbGVDb252ZXJzaW9uTWFwICpjb252X21hcDsKKwlBdHRyTWFwICAgICphdHRyTWFw OworCWludAkJCWNudDsKKwlib29sCQlxdWFsaWZ5X2NvbCA9IChibXNfbnVtX21lbWJlcnMoY29u dGV4dC0+c2NhbnJlbC0+cmVsaWRzKSA+IDEpOworCVN0cmluZ0luZm8JYnVmID0gY29udGV4dC0+ YnVmOworCVBsYW5uZXJJbmZvICpyb290ID0gY29udGV4dC0+cm9vdDsKKwlpbnQJCQlyZWxubzsK KwlpbnQJCQljb2xubzsKKwlib29sCQlmaXJzdF9jb2w7CisKKwkvKgorCSAqIE11bHRpLWxldmVs IHBhcnRpdGlvbmVkIGhpZXJhcmNoaWVzIHByb2R1Y2UgbmVzdGVkIENvbnZlcnRSb3d0eXBlRXhw cnMsCisJICogd2hlcmUgdGhlIHRvcCBDb252ZXJ0Um93dHlwZUV4cHIgZ2l2ZXMgdGhlIHBhcmVu dCByZWxhdGlvbiBhbmQgdGhlIGxlYWYKKwkgKiBWYXIgbm9kZSBnaXZlcyB0aGUgY2hpbGQgcmVs YXRpb24uICBGZXRjaCB0aGUgbGVhZiBWYXIgbm9kZQorCSAqIGNvcnJlc3BvbmRpbmcgdG8gdGhl IGxvd2VzdCBjaGlsZC4KKwkgKi8KKwl3aGlsZSAoSXNBKGV4cHItPmFyZywgQ29udmVydFJvd3R5 cGVFeHByKSkKKwkJZXhwciA9IGNhc3ROb2RlKENvbnZlcnRSb3d0eXBlRXhwciwgZXhwci0+YXJn KTsKKwljaGlsZF92YXIgPSBjYXN0Tm9kZShWYXIsIGV4cHItPmFyZyk7CisJQXNzZXJ0KGNoaWxk X3Zhci0+dmFyYXR0bm8gPT0gMCk7CisKKwkvKgorCSAqIElmIHRoZSBjaGlsZCBWYXIgYmVsb25n cyB0byB0aGUgZm9yZWlnbiByZWxhdGlvbiB0aGF0IGlzIGRlcGFyc2VkIGFzIGEKKwkgKiBzdWJx dWVyeSwgdXNlIHRoZSByZWxhdGlvbiBhbmQgY29sdW1uIGFsaWFzIHRvIHRoZSBjaGlsZCBWYXIg cHJvdmlkZWQKKwkgKiBieSB0aGUgc3VicXVlcnksIGluc3RlYWQgb2YgdGhlIHJlbW90ZSBuYW1l LgorCSAqLworCWlmIChpc19zdWJxdWVyeV92YXIoKE5vZGUgKikgY3JlLCBjaGlsZF92YXItPnZh cm5vLCBjaGlsZF92YXItPnZhcmF0dG5vLCBjb250ZXh0LT5zY2FucmVsLAorCQkJCQkJJnJlbG5v LCAmY29sbm8pKQorCXsKKwkJYXBwZW5kU3RyaW5nSW5mbyhjb250ZXh0LT5idWYsICIlcyVkLiVz JWQiLAorCQkJCQkJIFNVQlFVRVJZX1JFTF9BTElBU19QUkVGSVgsIHJlbG5vLAorCQkJCQkJIFNV QlFVRVJZX0NPTF9BTElBU19QUkVGSVgsIGNvbG5vKTsKKwkJcmV0dXJuOworCX0KKworCS8qIENv bnN0cnVjdCB0aGUgY29udmVyc2lvbiBtYXAuICovCisJcGFyZW50X2Rlc2MgPSBsb29rdXBfcm93 dHlwZV90dXBkZXNjKGNyZS0+cmVzdWx0dHlwZSwgLTEpOworCWNoaWxkX2Rlc2MgPSBsb29rdXBf cm93dHlwZV90dXBkZXNjKGNoaWxkX3Zhci0+dmFydHlwZSwKKwkJCQkJCQkJCQljaGlsZF92YXIt PnZhcnR5cG1vZCk7CisJY29udl9tYXAgPSBjb252ZXJ0X3R1cGxlc19ieV9uYW1lKGNoaWxkX2Rl c2MsIHBhcmVudF9kZXNjKTsKKworCVJlbGVhc2VUdXBsZURlc2MocGFyZW50X2Rlc2MpOworCVJl bGVhc2VUdXBsZURlc2MoY2hpbGRfZGVzYyk7CisKKwkvKiBJZiBubyBjb252ZXJzaW9uIGlzIG5l ZWRlZCwgZGVwYXJzZSB0aGUgY2hpbGQgVmFyIGFzIGlzLiAqLworCWlmIChjb252X21hcCA9PSBO VUxMKQorCXsKKwkJZGVwYXJzZVZhcihjaGlsZF92YXIsIGNvbnRleHQpOworCQlyZXR1cm47CisJ fQorCisJYXR0ck1hcCA9IGNvbnZfbWFwLT5hdHRyTWFwOworCisJLyoKKwkgKiBJbiBjYXNlIHRo ZSB3aG9sZS1yb3cgcmVmZXJlbmNlIGlzIHVuZGVyIGFuIG91dGVyIGpvaW4gdGhlbiBpdCBoYXMg dG8KKwkgKiBnbyBOVUxMIHdoZW5ldmVyIHRoZSByZXN0IG9mIHRoZSByb3cgZ29lcyBOVUxMLiBE ZXBhcnNpbmcgYSBqb2luIHF1ZXJ5CisJICogd291bGQgYWx3YXlzIGludm9sdmUgbXVsdGlwbGUg cmVsYXRpb25zLCB0aHVzIHF1YWxpZnlfY29sIHdvdWxkIGJlCisJICogdHJ1ZS4KKwkgKi8KKwlp ZiAocXVhbGlmeV9jb2wpCisJeworCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKGJ1ZiwgIkNBU0Ug V0hFTiAoIik7CisJCUFERF9SRUxfUVVBTElGSUVSKGJ1ZiwgY2hpbGRfdmFyLT52YXJubyk7CisJ CWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoYnVmLCAiKik6OnRleHQgSVMgTk9UIE5VTEwgVEhFTiAi KTsKKwl9CisKKwkvKiBDb25zdHJ1Y3QgUk9XIGV4cHJlc3Npb24gYWNjb3JkaW5nIHRvIHRoZSBj b252ZXJzaW9uIG1hcC4gKi8KKwlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKGJ1ZiwgIlJPVygiKTsK KwlmaXJzdF9jb2wgPSB0cnVlOworCWZvciAoY250ID0gMDsgY250IDwgcGFyZW50X2Rlc2MtPm5h dHRzOyBjbnQrKykKKwl7CisJCS8qIElnbm9yZSBkcm9wcGVkIGNvbHVtbnMuICovCisJCWlmIChh dHRyTWFwLT5hdHRudW1zW2NudF0gPT0gMCkKKwkJCWNvbnRpbnVlOworCisJCWlmICghZmlyc3Rf Y29sKQorCQkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZyhidWYsICIsICIpOworCQlkZXBhcnNlQ29s dW1uUmVmKGJ1ZiwgY2hpbGRfdmFyLT52YXJubywgYXR0ck1hcC0+YXR0bnVtc1tjbnRdLAorCQkJ CQkJIHBsYW5uZXJfcnRfZmV0Y2goY2hpbGRfdmFyLT52YXJubywgcm9vdCksCisJCQkJCQkgcXVh bGlmeV9jb2wpOworCQlmaXJzdF9jb2wgPSBmYWxzZTsKKwl9CisJYXBwZW5kU3RyaW5nSW5mb0No YXIoYnVmLCAnKScpOworCisJLyogQ29tcGxldGUgdGhlIENBU0UgV0hFTiBzdGF0ZW1lbnQgc3Rh cnRlZCBhYm92ZS4gKi8KKwlpZiAocXVhbGlmeV9jb2wpCisJCWFwcGVuZFN0cmluZ0luZm9TdHJp bmcoYnVmLCAiIEVORCIpOworCisJZnJlZV9jb252ZXJzaW9uX21hcChjb252X21hcCk7Cit9CisK IC8qCiAgKiBBcHBlbmQgT1JERVIgQlkgd2l0aGluIGFnZ3JlZ2F0ZSBmdW5jdGlvbi4KICAqLwpA QCAtNDEwNCwxMiArNDIyNywxOCBAQCBkZXBhcnNlU29ydEdyb3VwQ2xhdXNlKEluZGV4IHJlZiwg TGlzdCAqdGxpc3QsIGJvb2wgZm9yY2VfY29sbm8sCiAKIAogLyoKLSAqIFJldHVybnMgdHJ1ZSBp ZiBnaXZlbiBWYXIgaXMgZGVwYXJzZWQgYXMgYSBzdWJxdWVyeSBvdXRwdXQgY29sdW1uLCBpbgor ICogUmV0dXJucyB0cnVlIGlmIGdpdmVuIE5vZGUgaXMgZGVwYXJzZWQgYXMgYSBzdWJxdWVyeSBv dXRwdXQgY29sdW1uLCBpbgogICogd2hpY2ggY2FzZSwgKnJlbG5vIGFuZCAqY29sbm8gYXJlIHNl dCB0byB0aGUgSURzIGZvciB0aGUgcmVsYXRpb24gYW5kCi0gKiBjb2x1bW4gYWxpYXMgdG8gdGhl IFZhciBwcm92aWRlZCBieSB0aGUgc3VicXVlcnkuCisgKiBjb2x1bW4gYWxpYXMgdG8gdGhlIE5v ZGUgcHJvdmlkZWQgYnkgdGhlIHN1YnF1ZXJ5LgorICoKKyAqIFdlIGRvIG5vdCBhbGxvdyByZWxh dGlvbnMgd2l0aCBQbGFjZUhvbGRlclZhcnMgdG8gYmUgcHVzaGVkIGRvd24uIFdlIGNhbGwKKyAq IHRoaXMgZnVuY3Rpb24gb25seSBmb3Igc2ltcGxlIG9yIGpvaW4gcmVsYXRpb25zLCB3aG9zZSB0 YXJnZXRsaXN0cyBjYW4KKyAqIGNvbnRhaW4gb25seSBWYXIgYW5kIENvbnZlcnRSb3d0eXBlRXhw ciAoaW4gY2FzZSBvZiBjaGlsZC1qb2lucykgbm9kZXMKKyAqIChhcGFydCBmcm9tIFBIVnMpLiBT byBzdXBwb3J0IG9ubHkgVmFyIGFuZCBDb252ZXJ0Um93dHlwZUV4cHIgbm9kZXMuCiAgKi8KIHN0 YXRpYyBib29sCi1pc19zdWJxdWVyeV92YXIoVmFyICpub2RlLCBSZWxPcHRJbmZvICpmb3JlaWdu cmVsLCBpbnQgKnJlbG5vLCBpbnQgKmNvbG5vKQoraXNfc3VicXVlcnlfdmFyKE5vZGUgKm5vZGUs IEluZGV4IHZhcm5vLCBpbnQgdmFyYXR0bm8sIFJlbE9wdEluZm8gKmZvcmVpZ25yZWwsCisJCQkJ aW50ICpyZWxubywgaW50ICpjb2xubykKIHsKIAlQZ0Zkd1JlbGF0aW9uSW5mbyAqZnBpbmZvID0g KFBnRmR3UmVsYXRpb25JbmZvICopIGZvcmVpZ25yZWwtPmZkd19wcml2YXRlOwogCVJlbE9wdElu Zm8gKm91dGVycmVsID0gZnBpbmZvLT5vdXRlcnJlbDsKQEAgLTQxMTgsNiArNDI0Nyw4IEBAIGlz X3N1YnF1ZXJ5X3ZhcihWYXIgKm5vZGUsIFJlbE9wdEluZm8gKmZvcmVpZ25yZWwsIGludCAqcmVs bm8sIGludCAqY29sbm8pCiAJLyogU2hvdWxkIG9ubHkgYmUgY2FsbGVkIGluIHRoZXNlIGNhc2Vz LiAqLwogCUFzc2VydChJU19TSU1QTEVfUkVMKGZvcmVpZ25yZWwpIHx8IElTX0pPSU5fUkVMKGZv cmVpZ25yZWwpKTsKIAorCUFzc2VydChJc0Eobm9kZSwgQ29udmVydFJvd3R5cGVFeHByKSB8fCBJ c0Eobm9kZSwgVmFyKSk7CisKIAkvKgogCSAqIElmIHRoZSBnaXZlbiByZWxhdGlvbiBpc24ndCBh IGpvaW4gcmVsYXRpb24sIGl0IGRvZXNuJ3QgaGF2ZSBhbnkgbG93ZXIKIAkgKiBzdWJxdWVyaWVz LCBzbyB0aGUgVmFyIGlzbid0IGEgc3VicXVlcnkgb3V0cHV0IGNvbHVtbi4KQEAgLTQxMjksMTAg KzQyNjAsMTAgQEAgaXNfc3VicXVlcnlfdmFyKFZhciAqbm9kZSwgUmVsT3B0SW5mbyAqZm9yZWln bnJlbCwgaW50ICpyZWxubywgaW50ICpjb2xubykKIAkgKiBJZiB0aGUgVmFyIGRvZXNuJ3QgYmVs b25nIHRvIGFueSBsb3dlciBzdWJxdWVyaWVzLCBpdCBpc24ndCBhIHN1YnF1ZXJ5CiAJICogb3V0 cHV0IGNvbHVtbi4KIAkgKi8KLQlpZiAoIWJtc19pc19tZW1iZXIobm9kZS0+dmFybm8sIGZwaW5m by0+bG93ZXJfc3VicXVlcnlfcmVscykpCisJaWYgKCFibXNfaXNfbWVtYmVyKHZhcm5vLCBmcGlu Zm8tPmxvd2VyX3N1YnF1ZXJ5X3JlbHMpKQogCQlyZXR1cm4gZmFsc2U7CiAKLQlpZiAoYm1zX2lz X21lbWJlcihub2RlLT52YXJubywgb3V0ZXJyZWwtPnJlbGlkcykpCisJaWYgKGJtc19pc19tZW1i ZXIodmFybm8sIG91dGVycmVsLT5yZWxpZHMpKQogCXsKIAkJLyoKIAkJICogSWYgb3V0ZXIgcmVs YXRpb24gaXMgZGVwYXJzZWQgYXMgYSBzdWJxdWVyeSwgdGhlIFZhciBpcyBhbiBvdXRwdXQKQEAg LTQxNDAsMTYgKzQyNzEsMTYgQEAgaXNfc3VicXVlcnlfdmFyKFZhciAqbm9kZSwgUmVsT3B0SW5m byAqZm9yZWlnbnJlbCwgaW50ICpyZWxubywgaW50ICpjb2xubykKIAkJICovCiAJCWlmIChmcGlu Zm8tPm1ha2Vfb3V0ZXJyZWxfc3VicXVlcnkpCiAJCXsKLQkJCWdldF9yZWxhdGlvbl9jb2x1bW5f YWxpYXNfaWRzKG5vZGUsIG91dGVycmVsLCByZWxubywgY29sbm8pOworCQkJZ2V0X3JlbGF0aW9u X2NvbHVtbl9hbGlhc19pZHMobm9kZSwgdmFybm8sIHZhcmF0dG5vLCBvdXRlcnJlbCwgcmVsbm8s IGNvbG5vKTsKIAkJCXJldHVybiB0cnVlOwogCQl9CiAKIAkJLyogT3RoZXJ3aXNlLCByZWN1cnNl IGludG8gdGhlIG91dGVyIHJlbGF0aW9uLiAqLwotCQlyZXR1cm4gaXNfc3VicXVlcnlfdmFyKG5v ZGUsIG91dGVycmVsLCByZWxubywgY29sbm8pOworCQlyZXR1cm4gaXNfc3VicXVlcnlfdmFyKG5v ZGUsIHZhcm5vLCB2YXJhdHRubywgb3V0ZXJyZWwsIHJlbG5vLCBjb2xubyk7CiAJfQogCWVsc2UK IAl7Ci0JCUFzc2VydChibXNfaXNfbWVtYmVyKG5vZGUtPnZhcm5vLCBpbm5lcnJlbC0+cmVsaWRz KSk7CisJCUFzc2VydChibXNfaXNfbWVtYmVyKHZhcm5vLCBpbm5lcnJlbC0+cmVsaWRzKSk7CiAK IAkJLyoKIAkJICogSWYgaW5uZXIgcmVsYXRpb24gaXMgZGVwYXJzZWQgYXMgYSBzdWJxdWVyeSwg dGhlIFZhciBpcyBhbiBvdXRwdXQKQEAgLTQxNTcsMTIgKzQyODgsMTIgQEAgaXNfc3VicXVlcnlf dmFyKFZhciAqbm9kZSwgUmVsT3B0SW5mbyAqZm9yZWlnbnJlbCwgaW50ICpyZWxubywgaW50ICpj b2xubykKIAkJICovCiAJCWlmIChmcGluZm8tPm1ha2VfaW5uZXJyZWxfc3VicXVlcnkpCiAJCXsK LQkJCWdldF9yZWxhdGlvbl9jb2x1bW5fYWxpYXNfaWRzKG5vZGUsIGlubmVycmVsLCByZWxubywg Y29sbm8pOworCQkJZ2V0X3JlbGF0aW9uX2NvbHVtbl9hbGlhc19pZHMobm9kZSwgdmFybm8sIHZh cmF0dG5vLCBpbm5lcnJlbCwgcmVsbm8sIGNvbG5vKTsKIAkJCXJldHVybiB0cnVlOwogCQl9CiAK IAkJLyogT3RoZXJ3aXNlLCByZWN1cnNlIGludG8gdGhlIGlubmVyIHJlbGF0aW9uLiAqLwotCQly ZXR1cm4gaXNfc3VicXVlcnlfdmFyKG5vZGUsIGlubmVycmVsLCByZWxubywgY29sbm8pOworCQly ZXR1cm4gaXNfc3VicXVlcnlfdmFyKG5vZGUsIHZhcm5vLCB2YXJhdHRubywgaW5uZXJyZWwsIHJl bG5vLCBjb2xubyk7CiAJfQogfQogCkBAIC00MTcxLDcgKzQzMDIsNyBAQCBpc19zdWJxdWVyeV92 YXIoVmFyICpub2RlLCBSZWxPcHRJbmZvICpmb3JlaWducmVsLCBpbnQgKnJlbG5vLCBpbnQgKmNv bG5vKQogICogZ2l2ZW4gcmVsYXRpb24sIHdoaWNoIGFyZSByZXR1cm5lZCBpbnRvICpyZWxubyBh bmQgKmNvbG5vLgogICovCiBzdGF0aWMgdm9pZAotZ2V0X3JlbGF0aW9uX2NvbHVtbl9hbGlhc19p ZHMoVmFyICpub2RlLCBSZWxPcHRJbmZvICpmb3JlaWducmVsLAorZ2V0X3JlbGF0aW9uX2NvbHVt bl9hbGlhc19pZHMoTm9kZSAqbm9kZSwgSW5kZXggdmFybm8sIGludCB2YXJhdHRubywgUmVsT3B0 SW5mbyAqZm9yZWlnbnJlbCwKIAkJCQkJCQkgIGludCAqcmVsbm8sIGludCAqY29sbm8pCiB7CiAJ UGdGZHdSZWxhdGlvbkluZm8gKmZwaW5mbyA9IChQZ0Zkd1JlbGF0aW9uSW5mbyAqKSBmb3JlaWdu cmVsLT5mZHdfcHJpdmF0ZTsKQEAgLTQxOTEsMTEgKzQzMjIsMTIgQEAgZ2V0X3JlbGF0aW9uX2Nv bHVtbl9hbGlhc19pZHMoVmFyICpub2RlLCBSZWxPcHRJbmZvICpmb3JlaWducmVsLAogCQkgKiBN YXRjaCByZWx0YXJnZXQgZW50cmllcyBvbmx5IG9uIHZhcm5vL3ZhcmF0dG5vLiAgSWRlYWxseSB0 aGVyZQogCQkgKiB3b3VsZCBiZSBzb21lIGNyb3NzLWNoZWNrIG9uIHZhcm51bGxpbmdyZWxzLCBi dXQgaXQncyB1bmNsZWFyIHdoYXQKIAkJICogdG8gZG8gZXhhY3RseTsgd2UgZG9uJ3QgaGF2ZSBl bm91Z2ggY29udGV4dCB0byBrbm93IHdoYXQgdGhhdCB2YWx1ZQotCQkgKiBzaG91bGQgYmUuCisJ CSAqIHNob3VsZCBiZS4gIEFsc28gbWF0Y2ggcG9zaWJsZSBjb252ZXJ0ZWQgd2hvbGUtcm93IHJl ZmVyZW5jZXMuCiAJCSAqLwotCQlpZiAoSXNBKHRsdmFyLCBWYXIpICYmCi0JCQl0bHZhci0+dmFy bm8gPT0gbm9kZS0+dmFybm8gJiYKLQkJCXRsdmFyLT52YXJhdHRubyA9PSBub2RlLT52YXJhdHRu bykKKwkJaWYgKChJc0EodGx2YXIsIFZhcikgJiYKKwkJCSB0bHZhci0+dmFybm8gPT0gdmFybm8g JiYKKwkJCSB0bHZhci0+dmFyYXR0bm8gPT0gdmFyYXR0bm8pCisJCQl8fCBpc19lcXVhbF9jb252 ZXJ0ZWRfd2hvbGVfcm93X3JlZmVyZW5jZXMoKE5vZGUgKikgdGx2YXIsIG5vZGUpKQogCQl7CiAJ CQkqY29sbm8gPSBpOwogCQkJcmV0dXJuOwpkaWZmIC0tZ2l0IGEvY29udHJpYi9wb3N0Z3Jlc19m ZHcvZXhwZWN0ZWQvcG9zdGdyZXNfZmR3Lm91dCBiL2NvbnRyaWIvcG9zdGdyZXNfZmR3L2V4cGVj dGVkL3Bvc3RncmVzX2Zkdy5vdXQKaW5kZXggMWYyMjMwOTE5NDkuLjJlYjIxNTA1ZmIwIDEwMDY0 NAotLS0gYS9jb250cmliL3Bvc3RncmVzX2Zkdy9leHBlY3RlZC9wb3N0Z3Jlc19mZHcub3V0Cisr KyBiL2NvbnRyaWIvcG9zdGdyZXNfZmR3L2V4cGVjdGVkL3Bvc3RncmVzX2Zkdy5vdXQKQEAgLTk5 MDMsNiArOTkwMywxMSBAQCBBTFRFUiBUQUJMRSBmcHJ0MV9wMSBTRVQgKGF1dG92YWN1dW1fZW5h YmxlZCA9ICdmYWxzZScpOwogQUxURVIgVEFCTEUgZnBydDFfcDIgU0VUIChhdXRvdmFjdXVtX2Vu YWJsZWQgPSAnZmFsc2UnKTsKIElOU0VSVCBJTlRPIGZwcnQxX3AxIFNFTEVDVCBpLCBpLCB0b19j aGFyKGkvNTAsICdGTTAwMDAnKSBGUk9NIGdlbmVyYXRlX3NlcmllcygwLCAyNDksIDIpIGk7CiBJ TlNFUlQgSU5UTyBmcHJ0MV9wMiBTRUxFQ1QgaSwgaSwgdG9fY2hhcihpLzUwLCAnRk0wMDAwJykg RlJPTSBnZW5lcmF0ZV9zZXJpZXMoMjUwLCA0OTksIDIpIGk7CistLSBBZGQgYW5kIGRyb3AgY29s dW1uIGZyb20gdGhlIHBhcmVudCBwYXJ0aXRpb24gc28gdGhhdCB0aGUgbnVtYmVyIG9mCistLSBh dHRyaWJ1dGVzIGluIHR1cGxlIGRlc2NyaXB0b3JzIG9mIHBhcmVudCBhbmQgY2hpbGQgZG8gbm90 IG1hdGNoIGV4YWN0bHkuCistLSBVc2VkIGZvciB0ZXN0aW5nIENvbnZlcnRSb3d0eXBlRXhwci4K K0FMVEVSIFRBQkxFIGZwcnQxIERST1AgQ09MVU1OIGM7CitBTFRFUiBUQUJMRSBmcHJ0MSBBREQg Q09MVU1OIGMgdmFyY2hhcjsKIENSRUFURSBGT1JFSUdOIFRBQkxFIGZ0cHJ0MV9wMSBQQVJUSVRJ T04gT0YgZnBydDEgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMjUwKQogCVNFUlZFUiBsb29wYmFj ayBPUFRJT05TICh0YWJsZV9uYW1lICdmcHJ0MV9wMScsIHVzZV9yZW1vdGVfZXN0aW1hdGUgJ3Ry dWUnKTsKIENSRUFURSBGT1JFSUdOIFRBQkxFIGZ0cHJ0MV9wMiBQQVJUSVRJT04gT0YgZnBydDEg Rk9SIFZBTFVFUyBGUk9NICgyNTApIFRPICg1MDApCkBAIC05OTY5LDIzICs5OTc0LDE5IEBAIFNF TEVDVCB0MS5hLHQyLmIsdDIuYyBGUk9NIGZwcnQxIHQxIExFRlQgSk9JTiAoU0VMRUNUICogRlJP TSBmcHJ0MiBXSEVSRSBhIDwgMTApCiAgOCB8ICAgfCAKICg1IHJvd3MpCiAKLS0tIHdpdGggd2hv bGUtcm93IHJlZmVyZW5jZTsgcGFydGl0aW9ud2lzZSBqb2luIGRvZXMgbm90IGFwcGx5CistLSB3 aXRoIHdob2xlLXJvdyByZWZlcmVuY2UKIEVYUExBSU4gKENPU1RTIE9GRikKIFNFTEVDVCB0MS53 ciwgdDIud3IgRlJPTSAoU0VMRUNUIHQxIHdyLCBhIEZST00gZnBydDEgdDEgV0hFUkUgdDEuYSAl IDI1ID0gMCkgdDEgRlVMTCBKT0lOIChTRUxFQ1QgdDIgd3IsIGIgRlJPTSBmcHJ0MiB0MiBXSEVS RSB0Mi5iICUgMjUgPSAwKSB0MiBPTiAodDEuYSA9IHQyLmIpIE9SREVSIEJZIDEsMjsKLSAgICAg ICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgCi0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIFNvcnQKICAgIFNvcnQgS2V5OiAoKHQxLiopOjpm cHJ0MSksICgodDIuKik6OmZwcnQyKQotICAgLT4gIEhhc2ggRnVsbCBKb2luCi0gICAgICAgICBI YXNoIENvbmQ6ICh0MS5hID0gdDIuYikKLSAgICAgICAgIC0+ICBBcHBlbmQKLSAgICAgICAgICAg ICAgIC0+ICBGb3JlaWduIFNjYW4gb24gZnRwcnQxX3AxIHQxXzEKLSAgICAgICAgICAgICAgIC0+ ICBGb3JlaWduIFNjYW4gb24gZnRwcnQxX3AyIHQxXzIKLSAgICAgICAgIC0+ICBIYXNoCi0gICAg ICAgICAgICAgICAtPiAgQXBwZW5kCi0gICAgICAgICAgICAgICAgICAgICAtPiAgRm9yZWlnbiBT Y2FuIG9uIGZ0cHJ0Ml9wMSB0Ml8xCi0gICAgICAgICAgICAgICAgICAgICAtPiAgRm9yZWlnbiBT Y2FuIG9uIGZ0cHJ0Ml9wMiB0Ml8yCi0oMTEgcm93cykKKyAgIC0+ICBBcHBlbmQKKyAgICAgICAg IC0+ICBGb3JlaWduIFNjYW4KKyAgICAgICAgICAgICAgIFJlbGF0aW9uczogKGZ0cHJ0MV9wMSB0 MV8xKSBGVUxMIEpPSU4gKGZ0cHJ0Ml9wMSB0Ml8xKQorICAgICAgICAgLT4gIEZvcmVpZ24gU2Nh bgorICAgICAgICAgICAgICAgUmVsYXRpb25zOiAoZnRwcnQxX3AyIHQxXzIpIEZVTEwgSk9JTiAo ZnRwcnQyX3AyIHQyXzIpCisoNyByb3dzKQogCiBTRUxFQ1QgdDEud3IsIHQyLndyIEZST00gKFNF TEVDVCB0MSB3ciwgYSBGUk9NIGZwcnQxIHQxIFdIRVJFIHQxLmEgJSAyNSA9IDApIHQxIEZVTEwg Sk9JTiAoU0VMRUNUIHQyIHdyLCBiIEZST00gZnBydDIgdDIgV0hFUkUgdDIuYiAlIDI1ID0gMCkg dDIgT04gKHQxLmEgPSB0Mi5iKSBPUkRFUiBCWSAxLDI7CiAgICAgICAgd3IgICAgICAgfCAgICAg ICB3ciAgICAgICAKQEAgLTEwMDY4LDIyICsxMDA2OSwyNiBAQCBTRUxFQ1QgdDEuYSwgdDEucGh2 LCB0Mi5iLCB0Mi5waHYgRlJPTSAoU0VMRUNUICd0MV9waHYnIHBodiwgKiBGUk9NIGZwcnQxIFdI RVJFCiAgICAgIHwgICAgICAgIHwgNDc1IHwgdDJfcGh2CiAoMTQgcm93cykKIAotLS0gdGVzdCBG T1IgVVBEQVRFOyBwYXJ0aXRpb253aXNlIGpvaW4gZG9lcyBub3QgYXBwbHkKKy0tIHRlc3QgRk9S IFVQREFURQogRVhQTEFJTiAoQ09TVFMgT0ZGKQogU0VMRUNUIHQxLmEsIHQyLmIgRlJPTSBmcHJ0 MSB0MSBJTk5FUiBKT0lOIGZwcnQyIHQyIE9OICh0MS5hID0gdDIuYikgV0hFUkUgdDEuYSAlIDI1 ID0gMCBPUkRFUiBCWSAxLDIgRk9SIFVQREFURSBPRiB0MTsKLSAgICAgICAgICAgICAgICAgICAg ICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgCi0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgTG9ja1Jvd3MKLSAgIC0+ICBOZXN0ZWQgTG9vcAot ICAgICAgICAgSm9pbiBGaWx0ZXI6ICh0MS5hID0gdDIuYikKKyAgIC0+ICBTb3J0CisgICAgICAg ICBTb3J0IEtleTogdDEuYQogICAgICAgICAgLT4gIEFwcGVuZAotICAgICAgICAgICAgICAgLT4g IEZvcmVpZ24gU2NhbiBvbiBmdHBydDFfcDEgdDFfMQotICAgICAgICAgICAgICAgLT4gIEZvcmVp Z24gU2NhbiBvbiBmdHBydDFfcDIgdDFfMgotICAgICAgICAgLT4gIE1hdGVyaWFsaXplCi0gICAg ICAgICAgICAgICAtPiAgQXBwZW5kCi0gICAgICAgICAgICAgICAgICAgICAtPiAgRm9yZWlnbiBT Y2FuIG9uIGZ0cHJ0Ml9wMSB0Ml8xCi0gICAgICAgICAgICAgICAgICAgICAtPiAgRm9yZWlnbiBT Y2FuIG9uIGZ0cHJ0Ml9wMiB0Ml8yCi0oMTAgcm93cykKKyAgICAgICAgICAgICAgIC0+ICBGb3Jl aWduIFNjYW4KKyAgICAgICAgICAgICAgICAgICAgIFJlbGF0aW9uczogKGZ0cHJ0MV9wMSB0MV8x KSBJTk5FUiBKT0lOIChmdHBydDJfcDEgdDJfMSkKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBO ZXN0ZWQgTG9vcAorICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIEZvcmVpZ24gU2NhbiBv biBmdHBydDFfcDEgdDFfMQorICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIEZvcmVpZ24g U2NhbiBvbiBmdHBydDJfcDEgdDJfMQorICAgICAgICAgICAgICAgLT4gIEZvcmVpZ24gU2Nhbgor ICAgICAgICAgICAgICAgICAgICAgUmVsYXRpb25zOiAoZnRwcnQxX3AyIHQxXzIpIElOTkVSIEpP SU4gKGZ0cHJ0Ml9wMiB0Ml8yKQorICAgICAgICAgICAgICAgICAgICAgLT4gIE5lc3RlZCBMb29w CisgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgRm9yZWlnbiBTY2FuIG9uIGZ0cHJ0MV9w MiB0MV8yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgRm9yZWlnbiBTY2FuIG9uIGZ0 cHJ0Ml9wMiB0Ml8yCisoMTQgcm93cykKIAogU0VMRUNUIHQxLmEsIHQyLmIgRlJPTSBmcHJ0MSB0 MSBJTk5FUiBKT0lOIGZwcnQyIHQyIE9OICh0MS5hID0gdDIuYikgV0hFUkUgdDEuYSAlIDI1ID0g MCBPUkRFUiBCWSAxLDIgRk9SIFVQREFURSBPRiB0MTsKICAgYSAgfCAgYiAgCkBAIC0xMDA5NCw2 ICsxMDA5OSw0MyBAQCBTRUxFQ1QgdDEuYSwgdDIuYiBGUk9NIGZwcnQxIHQxIElOTkVSIEpPSU4g ZnBydDIgdDIgT04gKHQxLmEgPSB0Mi5iKSBXSEVSRSB0MS5hCiAgNDAwIHwgNDAwCiAoNCByb3dz KQogCistLSB0ZXN0IHNvcnQgcGF0aHMgYW5kIHdob2xlLXJvdyByZWZlcmVuY2VzCitzZXQgZW5h YmxlX3NvcnQgdG8gb2ZmOworRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIHQxLmEsIHQyLmIg RlJPTSBmcHJ0MSB0MSBJTk5FUiBKT0lOIGZwcnQyIHQyIE9OICh0MS5hID0gdDIuYikgV0hFUkUg dDEuYSAlIDI1ID0gMCBPUkRFUiBCWSB0Mi5hIEZPUiBVUERBVEUgT0YgdDE7CisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBMb2NrUm93cworICAgLT4gIE1lcmdlIEFwcGVuZAorICAg ICAgICAgU29ydCBLZXk6IHQyLmEKKyAgICAgICAgIC0+ICBGb3JlaWduIFNjYW4KKyAgICAgICAg ICAgICAgIFJlbGF0aW9uczogKGZ0cHJ0MV9wMSB0MV8xKSBJTk5FUiBKT0lOIChmdHBydDJfcDEg dDJfMSkKKyAgICAgICAgICAgICAgIC0+ICBSZXN1bHQKKyAgICAgICAgICAgICAgICAgICAgIC0+ ICBTb3J0CisgICAgICAgICAgICAgICAgICAgICAgICAgICBTb3J0IEtleTogdDJfMS5hCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAtPiAgTmVzdGVkIExvb3AKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIC0+ICBGb3JlaWduIFNjYW4gb24gZnRwcnQxX3AxIHQxXzEKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBGb3JlaWduIFNjYW4gb24gZnRwcnQyX3Ax IHQyXzEKKyAgICAgICAgIC0+ICBGb3JlaWduIFNjYW4KKyAgICAgICAgICAgICAgIFJlbGF0aW9u czogKGZ0cHJ0MV9wMiB0MV8yKSBJTk5FUiBKT0lOIChmdHBydDJfcDIgdDJfMikKKyAgICAgICAg ICAgICAgIC0+ICBSZXN1bHQKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBTb3J0CisgICAgICAg ICAgICAgICAgICAgICAgICAgICBTb3J0IEtleTogdDJfMi5hCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAtPiAgTmVzdGVkIExvb3AKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IC0+ICBGb3JlaWduIFNjYW4gb24gZnRwcnQxX3AyIHQxXzIKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIC0+ICBGb3JlaWduIFNjYW4gb24gZnRwcnQyX3AyIHQyXzIKKygxOSByb3dz KQorCitTRUxFQ1QgdDEuYSwgdDIuYiBGUk9NIGZwcnQxIHQxIElOTkVSIEpPSU4gZnBydDIgdDIg T04gKHQxLmEgPSB0Mi5iKSBXSEVSRSB0MS5hICUgMjUgPSAwIE9SREVSIEJZIHQyLmEgRk9SIFVQ REFURSBPRiB0MTsKKyAgYSAgfCAgYiAgCistLS0tLSstLS0tLQorICAgMCB8ICAgMAorIDE1MCB8 IDE1MAorIDI1MCB8IDI1MAorIDQwMCB8IDQwMAorKDQgcm93cykKKworcmVzZXQgZW5hYmxlX3Nv cnQ7CiBSRVNFVCBlbmFibGVfcGFydGl0aW9ud2lzZV9qb2luOwogLS0gPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogLS0g dGVzdCBwYXJ0aXRpb253aXNlIGFnZ3JlZ2F0ZXMKZGlmZiAtLWdpdCBhL2NvbnRyaWIvcG9zdGdy ZXNfZmR3L3Bvc3RncmVzX2Zkdy5jIGIvY29udHJpYi9wb3N0Z3Jlc19mZHcvcG9zdGdyZXNfZmR3 LmMKaW5kZXggMGJiOWE1YWU4ZjYuLjkwYmYzNWZkOTBjIDEwMDY0NAotLS0gYS9jb250cmliL3Bv c3RncmVzX2Zkdy9wb3N0Z3Jlc19mZHcuYworKysgYi9jb250cmliL3Bvc3RncmVzX2Zkdy9wb3N0 Z3Jlc19mZHcuYwpAQCAtMTQ2OSw2ICsxNDY5LDIyIEBAIGdldF90dXBkZXNjX2Zvcl9qb2luX3Nj YW5fdHVwbGVzKEZvcmVpZ25TY2FuU3RhdGUgKm5vZGUpCiAJCSAqLwogCQl2YXIgPSAoVmFyICop IGxpc3RfbnRoX25vZGUoVGFyZ2V0RW50cnksIGZzcGxhbi0+ZmR3X3NjYW5fdGxpc3QsCiAJCQkJ CQkJCQlpKS0+ZXhwcjsKKworCQkvKgorCQkgKiBUT0RPOiBEbyB3ZSByZWFsbHkgbmVlZCB0aGlz PyBUYXJnZXQgbGlzdCBjYW4gY29udGFpbiBub3Qgb25seQorCQkgKiBWYXJzLCBidXQgQ29udmVy dFJvd3R5cGVFeHByIHdpbGwgY2VydGFpbmx5IGNvbnRyaWJ1dGUgdG8KKwkJICogc3Muc3NfU2Nh blR1cGxlU2xvdC0+dHRzX3R1cGxlRGVzY3JpcHRvciBhdHRyaWJ1dGUgdHlwZSBpbgorCQkgKiBF eGVjVHlwZUZyb21UTCgpIChjYWxsZWQgZnJvbSBFeGVjSW5pdEZvcmVpZ25TY2FuKCkpIGluIHRo ZSBzYW1lCisJCSAqIHdheS4KKwkJICovCisJCWlmIChJc0EodmFyLCBDb252ZXJ0Um93dHlwZUV4 cHIpKQorCQl7CisJCQlDb252ZXJ0Um93dHlwZUV4cHIgKmNvbnZleHByID0gY2FzdE5vZGUoQ29u dmVydFJvd3R5cGVFeHByLCB2YXIpOworCisJCQlhdHQtPmF0dHR5cGlkID0gY29udmV4cHItPnJl c3VsdHR5cGU7CisJCQljb250aW51ZTsKKwkJfQorCiAJCWlmICghSXNBKHZhciwgVmFyKSB8fCB2 YXItPnZhcmF0dG5vICE9IDApCiAJCQljb250aW51ZTsKIAkJcnRlID0gbGlzdF9udGgoZXN0YXRl LT5lc19yYW5nZV90YWJsZSwgdmFyLT52YXJubyAtIDEpOwpAQCAtNjA5Niw3ICs2MTEyLDcgQEAg YWRkX3BhdGhzX3dpdGhfcGF0aGtleXNfZm9yX3JlbChQbGFubmVySW5mbyAqcm9vdCwgUmVsT3B0 SW5mbyAqcmVsLAogCQkvKiBJbmNsdWRlIGNvbHVtbnMgcmVxdWlyZWQgZm9yIGV2YWx1YXRpbmcg UEhWcyBpbiB0aGUgdGxpc3QuICovCiAJCWFkZF9uZXdfY29sdW1uc190b19wYXRodGFyZ2V0KHRh cmdldCwKIAkJCQkJCQkJCSAgcHVsbF92YXJfY2xhdXNlKChOb2RlICopIHRhcmdldC0+ZXhwcnMs Ci0JCQkJCQkJCQkJCQkJICBQVkNfUkVDVVJTRV9QTEFDRUhPTERFUlMpKTsKKwkJCQkJCQkJCQkJ CQkgIFBWQ19SRUNVUlNFX1BMQUNFSE9MREVSUyB8IFBWQ19JTkNMVURFX0NPTlZFUlRST1dUWVBF UykpOwogCiAJCS8qIEluY2x1ZGUgY29sdW1ucyByZXF1aXJlZCBmb3IgZXZhbHVhdGluZyB0aGUg bG9jYWwgY29uZGl0aW9ucy4gKi8KIAkJZm9yZWFjaChsYywgZnBpbmZvLT5sb2NhbF9jb25kcykK QEAgLTYxMDUsNyArNjEyMSw3IEBAIGFkZF9wYXRoc193aXRoX3BhdGhrZXlzX2Zvcl9yZWwoUGxh bm5lckluZm8gKnJvb3QsIFJlbE9wdEluZm8gKnJlbCwKIAogCQkJYWRkX25ld19jb2x1bW5zX3Rv X3BhdGh0YXJnZXQodGFyZ2V0LAogCQkJCQkJCQkJCSAgcHVsbF92YXJfY2xhdXNlKChOb2RlICop IHJpbmZvLT5jbGF1c2UsCi0JCQkJCQkJCQkJCQkJCSAgUFZDX1JFQ1VSU0VfUExBQ0VIT0xERVJT KSk7CisJCQkJCQkJCQkJCQkJCSAgUFZDX1JFQ1VSU0VfUExBQ0VIT0xERVJTIHwgUFZDX0lOQ0xV REVfQ09OVkVSVFJPV1RZUEVTKSk7CiAJCX0KIAogCQkvKgpkaWZmIC0tZ2l0IGEvY29udHJpYi9w b3N0Z3Jlc19mZHcvc3FsL3Bvc3RncmVzX2Zkdy5zcWwgYi9jb250cmliL3Bvc3RncmVzX2Zkdy9z cWwvcG9zdGdyZXNfZmR3LnNxbAppbmRleCBiNTdmOGNmZGE2OC4uMzZhZDg1ZDRhZjggMTAwNjQ0 Ci0tLSBhL2NvbnRyaWIvcG9zdGdyZXNfZmR3L3NxbC9wb3N0Z3Jlc19mZHcuc3FsCisrKyBiL2Nv bnRyaWIvcG9zdGdyZXNfZmR3L3NxbC9wb3N0Z3Jlc19mZHcuc3FsCkBAIC0zMDkwLDYgKzMwOTAs MTEgQEAgQUxURVIgVEFCTEUgZnBydDFfcDEgU0VUIChhdXRvdmFjdXVtX2VuYWJsZWQgPSAnZmFs c2UnKTsKIEFMVEVSIFRBQkxFIGZwcnQxX3AyIFNFVCAoYXV0b3ZhY3V1bV9lbmFibGVkID0gJ2Zh bHNlJyk7CiBJTlNFUlQgSU5UTyBmcHJ0MV9wMSBTRUxFQ1QgaSwgaSwgdG9fY2hhcihpLzUwLCAn Rk0wMDAwJykgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMCwgMjQ5LCAyKSBpOwogSU5TRVJUIElOVE8g ZnBydDFfcDIgU0VMRUNUIGksIGksIHRvX2NoYXIoaS81MCwgJ0ZNMDAwMCcpIEZST00gZ2VuZXJh dGVfc2VyaWVzKDI1MCwgNDk5LCAyKSBpOworLS0gQWRkIGFuZCBkcm9wIGNvbHVtbiBmcm9tIHRo ZSBwYXJlbnQgcGFydGl0aW9uIHNvIHRoYXQgdGhlIG51bWJlciBvZgorLS0gYXR0cmlidXRlcyBp biB0dXBsZSBkZXNjcmlwdG9ycyBvZiBwYXJlbnQgYW5kIGNoaWxkIGRvIG5vdCBtYXRjaCBleGFj dGx5LgorLS0gVXNlZCBmb3IgdGVzdGluZyBDb252ZXJ0Um93dHlwZUV4cHIuCitBTFRFUiBUQUJM RSBmcHJ0MSBEUk9QIENPTFVNTiBjOworQUxURVIgVEFCTEUgZnBydDEgQUREIENPTFVNTiBjIHZh cmNoYXI7CiBDUkVBVEUgRk9SRUlHTiBUQUJMRSBmdHBydDFfcDEgUEFSVElUSU9OIE9GIGZwcnQx IEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDI1MCkKIAlTRVJWRVIgbG9vcGJhY2sgT1BUSU9OUyAo dGFibGVfbmFtZSAnZnBydDFfcDEnLCB1c2VfcmVtb3RlX2VzdGltYXRlICd0cnVlJyk7CiBDUkVB VEUgRk9SRUlHTiBUQUJMRSBmdHBydDFfcDIgUEFSVElUSU9OIE9GIGZwcnQxIEZPUiBWQUxVRVMg RlJPTSAoMjUwKSBUTyAoNTAwKQpAQCAtMzEyNCw3ICszMTI5LDcgQEAgRVhQTEFJTiAoVkVSQk9T RSwgQ09TVFMgT0ZGKQogU0VMRUNUIHQxLmEsdDIuYix0Mi5jIEZST00gZnBydDEgdDEgTEVGVCBK T0lOIChTRUxFQ1QgKiBGUk9NIGZwcnQyIFdIRVJFIGEgPCAxMCkgdDIgT04gKHQxLmEgPSB0Mi5i IGFuZCB0MS5iID0gdDIuYSkgV0hFUkUgdDEuYSA8IDEwIE9SREVSIEJZIDEsMiwzOwogU0VMRUNU IHQxLmEsdDIuYix0Mi5jIEZST00gZnBydDEgdDEgTEVGVCBKT0lOIChTRUxFQ1QgKiBGUk9NIGZw cnQyIFdIRVJFIGEgPCAxMCkgdDIgT04gKHQxLmEgPSB0Mi5iIGFuZCB0MS5iID0gdDIuYSkgV0hF UkUgdDEuYSA8IDEwIE9SREVSIEJZIDEsMiwzOwogCi0tLSB3aXRoIHdob2xlLXJvdyByZWZlcmVu Y2U7IHBhcnRpdGlvbndpc2Ugam9pbiBkb2VzIG5vdCBhcHBseQorLS0gd2l0aCB3aG9sZS1yb3cg cmVmZXJlbmNlCiBFWFBMQUlOIChDT1NUUyBPRkYpCiBTRUxFQ1QgdDEud3IsIHQyLndyIEZST00g KFNFTEVDVCB0MSB3ciwgYSBGUk9NIGZwcnQxIHQxIFdIRVJFIHQxLmEgJSAyNSA9IDApIHQxIEZV TEwgSk9JTiAoU0VMRUNUIHQyIHdyLCBiIEZST00gZnBydDIgdDIgV0hFUkUgdDIuYiAlIDI1ID0g MCkgdDIgT04gKHQxLmEgPSB0Mi5iKSBPUkRFUiBCWSAxLDI7CiBTRUxFQ1QgdDEud3IsIHQyLndy IEZST00gKFNFTEVDVCB0MSB3ciwgYSBGUk9NIGZwcnQxIHQxIFdIRVJFIHQxLmEgJSAyNSA9IDAp IHQxIEZVTEwgSk9JTiAoU0VMRUNUIHQyIHdyLCBiIEZST00gZnBydDIgdDIgV0hFUkUgdDIuYiAl IDI1ID0gMCkgdDIgT04gKHQxLmEgPSB0Mi5iKSBPUkRFUiBCWSAxLDI7CkBAIC0zMTM5LDExICsz MTQ0LDE4IEBAIEVYUExBSU4gKENPU1RTIE9GRikKIFNFTEVDVCB0MS5hLCB0MS5waHYsIHQyLmIs IHQyLnBodiBGUk9NIChTRUxFQ1QgJ3QxX3BodicgcGh2LCAqIEZST00gZnBydDEgV0hFUkUgYSAl IDI1ID0gMCkgdDEgRlVMTCBKT0lOIChTRUxFQ1QgJ3QyX3BodicgcGh2LCAqIEZST00gZnBydDIg V0hFUkUgYiAlIDI1ID0gMCkgdDIgT04gKHQxLmEgPSB0Mi5iKSBPUkRFUiBCWSB0MS5hLCB0Mi5i OwogU0VMRUNUIHQxLmEsIHQxLnBodiwgdDIuYiwgdDIucGh2IEZST00gKFNFTEVDVCAndDFfcGh2 JyBwaHYsICogRlJPTSBmcHJ0MSBXSEVSRSBhICUgMjUgPSAwKSB0MSBGVUxMIEpPSU4gKFNFTEVD VCAndDJfcGh2JyBwaHYsICogRlJPTSBmcHJ0MiBXSEVSRSBiICUgMjUgPSAwKSB0MiBPTiAodDEu YSA9IHQyLmIpIE9SREVSIEJZIHQxLmEsIHQyLmI7CiAKLS0tIHRlc3QgRk9SIFVQREFURTsgcGFy dGl0aW9ud2lzZSBqb2luIGRvZXMgbm90IGFwcGx5CistLSB0ZXN0IEZPUiBVUERBVEUKIEVYUExB SU4gKENPU1RTIE9GRikKIFNFTEVDVCB0MS5hLCB0Mi5iIEZST00gZnBydDEgdDEgSU5ORVIgSk9J TiBmcHJ0MiB0MiBPTiAodDEuYSA9IHQyLmIpIFdIRVJFIHQxLmEgJSAyNSA9IDAgT1JERVIgQlkg MSwyIEZPUiBVUERBVEUgT0YgdDE7CiBTRUxFQ1QgdDEuYSwgdDIuYiBGUk9NIGZwcnQxIHQxIElO TkVSIEpPSU4gZnBydDIgdDIgT04gKHQxLmEgPSB0Mi5iKSBXSEVSRSB0MS5hICUgMjUgPSAwIE9S REVSIEJZIDEsMiBGT1IgVVBEQVRFIE9GIHQxOwogCistLSB0ZXN0IHNvcnQgcGF0aHMgYW5kIHdo b2xlLXJvdyByZWZlcmVuY2VzCitzZXQgZW5hYmxlX3NvcnQgdG8gb2ZmOworRVhQTEFJTiAoQ09T VFMgT0ZGKQorU0VMRUNUIHQxLmEsIHQyLmIgRlJPTSBmcHJ0MSB0MSBJTk5FUiBKT0lOIGZwcnQy IHQyIE9OICh0MS5hID0gdDIuYikgV0hFUkUgdDEuYSAlIDI1ID0gMCBPUkRFUiBCWSB0Mi5hIEZP UiBVUERBVEUgT0YgdDE7CitTRUxFQ1QgdDEuYSwgdDIuYiBGUk9NIGZwcnQxIHQxIElOTkVSIEpP SU4gZnBydDIgdDIgT04gKHQxLmEgPSB0Mi5iKSBXSEVSRSB0MS5hICUgMjUgPSAwIE9SREVSIEJZ IHQyLmEgRk9SIFVQREFURSBPRiB0MTsKK3Jlc2V0IGVuYWJsZV9zb3J0OworCiBSRVNFVCBlbmFi bGVfcGFydGl0aW9ud2lzZV9qb2luOwogCiAKLS0gCjIuMzQuMQoK --=_1b73054158934e47c139853525d00f6f Content-Transfer-Encoding: base64 Content-Type: text/x-diff; name=0004-Compare-converted-whole-row-vars-in-search_indexed_t.patch Content-Disposition: attachment; filename=0004-Compare-converted-whole-row-vars-in-search_indexed_t.patch; size=13827 RnJvbSBhNzc4NTUxMDNjYzQwYjRmNWQxNjY5MDA2Yzg2MzNmZGE1M2MzN2RiIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGV4YW5kZXIgUHloYWxvdiA8YS5weWhhbG92QHBvc3RncmVz cHJvLnJ1PgpEYXRlOiBUdWUsIDI2IERlYyAyMDIzIDEwOjA3OjEzICswMzAwClN1YmplY3Q6IFtQ QVRDSCA0LzZdIENvbXBhcmUgY29udmVydGVkIHdob2xlIHJvdyB2YXJzIGluCiBzZWFyY2hfaW5k ZXhlZF90bGlzdF9mb3Jfbm9uX3ZhcigpIGNvcnJlY3RseSBhbmQgZml4IHRlc3QgcmVzdWx0cwoK LS0tCiBzcmMvYmFja2VuZC9ub2Rlcy9ub2RlRnVuY3MuYyAgICAgICAgICAgICAgICAgfCA0OSAr KysrKysrKysrKysrCiBzcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9zZXRyZWZzLmMgICAgICAg ICAgfCAgMiArLQogc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvdGxpc3QuYyAgICAgICAgICAg IHwgMjMgKysrKysrCiBzcmMvaW5jbHVkZS9ub2Rlcy9ub2RlRnVuY3MuaCAgICAgICAgICAgICAg ICAgfCAgMSArCiBzcmMvaW5jbHVkZS9vcHRpbWl6ZXIvdGxpc3QuaCAgICAgICAgICAgICAgICAg fCAgMSArCiAuLi4vcmVncmVzcy9leHBlY3RlZC9wYXJ0aXRpb25fYWdncmVnYXRlLm91dCAgfCAz OSArKysrKystLS0tCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BhcnRpdGlvbl9qb2luLm91 dCAgfCA3MiArKysrKysrKysrKy0tLS0tLS0tCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9wYXJ0aXRp b25fYWdncmVnYXRlLnNxbCAgfCAgMiArLQogc3JjL3Rlc3QvcmVncmVzcy9zcWwvcGFydGl0aW9u X2pvaW4uc3FsICAgICAgIHwgIDMgKy0KIDkgZmlsZXMgY2hhbmdlZCwgMTQ0IGluc2VydGlvbnMo KyksIDQ4IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL25vZGVzL25vZGVG dW5jcy5jIGIvc3JjL2JhY2tlbmQvbm9kZXMvbm9kZUZ1bmNzLmMKaW5kZXggNGNlMDIzMGFhZDUu LjQxZTJhY2FmMWJmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9ub2Rlcy9ub2RlRnVuY3MuYwor KysgYi9zcmMvYmFja2VuZC9ub2Rlcy9ub2RlRnVuY3MuYwpAQCAtNDgyNSwzICs0ODI1LDUyIEBA IGlzX2NvbnZlcnRlZF93aG9sZV9yb3dfcmVmZXJlbmNlKE5vZGUgKm5vZGUpCiAKIAlyZXR1cm4g ZmFsc2U7CiB9CisKKy8qCisgKiBpc19lcXVhbF9jb252ZXJ0ZWRfd2hvbGVfcm93X3JlZmVyZW5j ZXMKKyAqCQlEZXRlcm1pbmUgaWYgYm90aCBub2RlcyBhcmUgZXF1aXZhbGVudCBDb252ZXJ0Um93 dHlwZUV4cHJzCisgKgkJb3ZlciB0aGUgc2FtZSB2YXIuCisgKgkJSXQgZGlmZmVycyBmcm9tIGVx dWFsKCksIGJlY2F1c2Ugd2UgaWdub3JlIHZhcm51bGxpbmdyZWxzLgorICovCitib29sCitpc19l cXVhbF9jb252ZXJ0ZWRfd2hvbGVfcm93X3JlZmVyZW5jZXMoTm9kZSAqbm9kZTEsIE5vZGUgKm5v ZGUyKQoreworCUNvbnZlcnRSb3d0eXBlRXhwciAqY29udmV4cHIxOworCUNvbnZlcnRSb3d0eXBl RXhwciAqY29udmV4cHIyOworCisJaWYgKCFub2RlMSB8fCAhSXNBKG5vZGUxLCBDb252ZXJ0Um93 dHlwZUV4cHIpKQorCQlyZXR1cm4gZmFsc2U7CisKKwlpZiAoIW5vZGUyIHx8ICFJc0Eobm9kZTIs IENvbnZlcnRSb3d0eXBlRXhwcikpCisJCXJldHVybiBmYWxzZTsKKworCWNvbnZleHByMSA9IGNh c3ROb2RlKENvbnZlcnRSb3d0eXBlRXhwciwgbm9kZTEpOworCWNvbnZleHByMiA9IGNhc3ROb2Rl KENvbnZlcnRSb3d0eXBlRXhwciwgbm9kZTIpOworCisJd2hpbGUgKGNvbnZleHByMS0+Y29udmVy dGZvcm1hdCA9PSBDT0VSQ0VfSU1QTElDSVRfQ0FTVCAmJgorCQkgY29udmV4cHIyLT5jb252ZXJ0 Zm9ybWF0ID09IENPRVJDRV9JTVBMSUNJVF9DQVNUICYmCisJCSBjb252ZXhwcjEtPnJlc3VsdHR5 cGUgPT0gY29udmV4cHIyLT5yZXN1bHR0eXBlICYmCisJCSBJc0EoY29udmV4cHIxLT5hcmcsIENv bnZlcnRSb3d0eXBlRXhwcikgJiYKKwkJIElzQShjb252ZXhwcjItPmFyZywgQ29udmVydFJvd3R5 cGVFeHByKSkKKwl7CisJCWNvbnZleHByMSA9IGNhc3ROb2RlKENvbnZlcnRSb3d0eXBlRXhwciwg Y29udmV4cHIxLT5hcmcpOworCQljb252ZXhwcjIgPSBjYXN0Tm9kZShDb252ZXJ0Um93dHlwZUV4 cHIsIGNvbnZleHByMi0+YXJnKTsKKwl9CisKKwlpZiAoSXNBKGNvbnZleHByMS0+YXJnLCBWYXIp ICYmIElzQShjb252ZXhwcjItPmFyZywgVmFyKSkKKwl7CisJCVZhcgkJKnZhcjEgPSBjYXN0Tm9k ZShWYXIsIGNvbnZleHByMS0+YXJnKTsKKwkJVmFyCQkqdmFyMiA9IGNhc3ROb2RlKFZhciwgY29u dmV4cHIyLT5hcmcpOworCisJCWlmICgodmFyMS0+dmFybm8gPT0gdmFyMi0+dmFybm8pICYmCisJ CQkodmFyMS0+dmFyYXR0bm8gPT0gdmFyMi0+dmFyYXR0bm8pICYmCisJCQkodmFyMS0+dmFybGV2 ZWxzdXAgPT0gdmFyMi0+dmFybGV2ZWxzdXApICYmCisJCQkodmFyMS0+dmFydHlwZSA9PSB2YXIy LT52YXJ0eXBlKSkKKwkJeworCQkJLyogVE9ETzogQ2FuIHdlIHN0YXRlIHRoYXQgYm90aCB2YXJh dHRub3MgaXMgMD8gKi8KKwkJCXJldHVybiB0cnVlOworCQl9CisJfQorCisJcmV0dXJuIGZhbHNl OworfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vc2V0cmVmcy5jIGIv c3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vc2V0cmVmcy5jCmluZGV4IDA5MzE0ZmFjNjcyLi44 MmU4ODcyYjRhOSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vc2V0cmVm cy5jCisrKyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3NldHJlZnMuYwpAQCAtMjkyNCw3 ICsyOTI0LDcgQEAgc2VhcmNoX2luZGV4ZWRfdGxpc3RfZm9yX25vbl92YXIoRXhwciAqbm9kZSwK IAlpZiAoSXNBKG5vZGUsIENvbnN0KSkKIAkJcmV0dXJuIE5VTEw7CiAKLQl0bGUgPSB0bGlzdF9t ZW1iZXIobm9kZSwgaXRsaXN0LT50bGlzdCk7CisJdGxlID0gdGxpc3RfbWVtYmVyX21hdGNoX2Nv bnZlcnRlZF93aG9sZV9yb3cobm9kZSwgaXRsaXN0LT50bGlzdCk7CiAJaWYgKHRsZSkKIAl7CiAJ CS8qIEZvdW5kIGEgbWF0Y2hpbmcgc3VicGxhbiBvdXRwdXQgZXhwcmVzc2lvbiAqLwpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvdGxpc3QuYyBiL3NyYy9iYWNrZW5kL29w dGltaXplci91dGlsL3RsaXN0LmMKaW5kZXggN2VmN2YzNGQ4YjUuLmYzMTU3ZjBmNjQ5IDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC90bGlzdC5jCisrKyBiL3NyYy9iYWNr ZW5kL29wdGltaXplci91dGlsL3RsaXN0LmMKQEAgLTExOSw2ICsxMTksMjkgQEAgdGxpc3RfbWVt YmVyX21hdGNoX3ZhcihWYXIgKnZhciwgTGlzdCAqdGFyZ2V0bGlzdCkKIAlyZXR1cm4gTlVMTDsK IH0KIAorLyoKKyAqIHRsaXN0X21lbWJlcl9tYXRjaF9jb252ZXJ0ZWRfd2hvbGVfcm93CisgKiAJ dGxpc3RfbWVtYmVyKCkgdmFyaWFudCwgd2hpY2ggY29tcGFyZXMgd2hvbGUgdmFyIHJlZmVyZW5j ZXMKKyAqIAliYXNlZCBvbiB0aGVpciB2YXJuby92YXJhdHRubworICovCitUYXJnZXRFbnRyeSAq Cit0bGlzdF9tZW1iZXJfbWF0Y2hfY29udmVydGVkX3dob2xlX3JvdyhFeHByICpub2RlLCBMaXN0 ICp0YXJnZXRsaXN0KQoreworCUxpc3RDZWxsICAgKnRlbXA7CisKKwlmb3JlYWNoKHRlbXAsIHRh cmdldGxpc3QpCisJeworCQlUYXJnZXRFbnRyeSAqdGxlbnRyeSA9IChUYXJnZXRFbnRyeSAqKSBs Zmlyc3QodGVtcCk7CisKKwkJaWYgKGVxdWFsKG5vZGUsIHRsZW50cnktPmV4cHIpKQorCQkJcmV0 dXJuIHRsZW50cnk7CisKKwkJaWYgKGlzX2VxdWFsX2NvbnZlcnRlZF93aG9sZV9yb3dfcmVmZXJl bmNlcygoTm9kZSAqKW5vZGUsIChOb2RlICopdGxlbnRyeS0+ZXhwcikpCisJCQlyZXR1cm4gdGxl bnRyeTsKKwl9CisJcmV0dXJuIE5VTEw7Cit9CisKIC8qCiAgKiBhZGRfdG9fZmxhdF90bGlzdAog ICoJCUFkZCBtb3JlIGl0ZW1zIHRvIGEgZmxhdHRlbmVkIHRsaXN0IChpZiB0aGV5J3JlIG5vdCBh bHJlYWR5IGluIGl0KQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMvbm9kZUZ1bmNzLmgg Yi9zcmMvaW5jbHVkZS9ub2Rlcy9ub2RlRnVuY3MuaAppbmRleCA4ZDMwZDZjYmFjNS4uY2RhM2Zm ZjMxNWQgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL25vZGVGdW5jcy5oCisrKyBiL3Ny Yy9pbmNsdWRlL25vZGVzL25vZGVGdW5jcy5oCkBAIC0yMjAsNCArMjIwLDUgQEAgZXh0ZXJuIGJv b2wgcGxhbnN0YXRlX3RyZWVfd2Fsa2VyX2ltcGwoc3RydWN0IFBsYW5TdGF0ZSAqcGxhbnN0YXRl LAogCQkJCQkJCQkJICAgdm9pZCAqY29udGV4dCk7CiAKIGV4dGVybiBib29sIGlzX2NvbnZlcnRl ZF93aG9sZV9yb3dfcmVmZXJlbmNlKE5vZGUgKm5vZGUpOworZXh0ZXJuIGJvb2wgaXNfZXF1YWxf Y29udmVydGVkX3dob2xlX3Jvd19yZWZlcmVuY2VzKE5vZGUgKm5vZGUxLCBOb2RlICpub2RlMik7 CiAjZW5kaWYJCQkJCQkJLyogTk9ERUZVTkNTX0ggKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRl L29wdGltaXplci90bGlzdC5oIGIvc3JjL2luY2x1ZGUvb3B0aW1pemVyL3RsaXN0LmgKaW5kZXgg MTVmOGY0YTRiMDAuLjlhYjZhZGMwMWI4IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9vcHRpbWl6 ZXIvdGxpc3QuaAorKysgYi9zcmMvaW5jbHVkZS9vcHRpbWl6ZXIvdGxpc3QuaApAQCAtMTgsNiAr MTgsNyBAQAogCiAKIGV4dGVybiBUYXJnZXRFbnRyeSAqdGxpc3RfbWVtYmVyKEV4cHIgKm5vZGUs IExpc3QgKnRhcmdldGxpc3QpOworZXh0ZXJuIFRhcmdldEVudHJ5ICp0bGlzdF9tZW1iZXJfbWF0 Y2hfY29udmVydGVkX3dob2xlX3JvdyhFeHByICpub2RlLCBMaXN0ICp0YXJnZXRsaXN0KTsKIAog ZXh0ZXJuIExpc3QgKmFkZF90b19mbGF0X3RsaXN0KExpc3QgKnRsaXN0LCBMaXN0ICpleHBycyk7 CiAKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcGFydGl0aW9uX2FnZ3Jl Z2F0ZS5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BhcnRpdGlvbl9hZ2dyZWdhdGUu b3V0CmluZGV4IDVmMmMwY2Y1Nzg2Li5iYTkyNDVlNDAxMSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3Qv cmVncmVzcy9leHBlY3RlZC9wYXJ0aXRpb25fYWdncmVnYXRlLm91dAorKysgYi9zcmMvdGVzdC9y ZWdyZXNzL2V4cGVjdGVkL3BhcnRpdGlvbl9hZ2dyZWdhdGUub3V0CkBAIC00NTMsMjcgKzQ1Mywz NiBAQCBTRUxFQ1QgdDEueCwgc3VtKHQxLnkpLCBjb3VudCgqKSBGUk9NIHBhZ2dfdGFiMSB0MSwg cGFnZ190YWIyIHQyIFdIRVJFIHQxLnggPSB0MgogIDI0IHwgIDkwMCB8ICAgMTAwCiAoNSByb3dz KQogCi0tLSBDaGVjayB3aXRoIHdob2xlLXJvdyByZWZlcmVuY2U7IHBhcnRpdGlvbndpc2UgYWdn cmVnYXRpb24gZG9lcyBub3QgYXBwbHkKKy0tIENoZWNrIHdpdGggd2hvbGUtcm93IHJlZmVyZW5j ZQogRVhQTEFJTiAoQ09TVFMgT0ZGKQogU0VMRUNUIHQxLngsIHN1bSh0MS55KSwgY291bnQodDEp IEZST00gcGFnZ190YWIxIHQxLCBwYWdnX3RhYjIgdDIgV0hFUkUgdDEueCA9IHQyLnkgR1JPVVAg QlkgdDEueCBPUkRFUiBCWSAxLCAyLCAzOwogICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZ IFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgIAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIFNvcnQKICAgIFNvcnQgS2V5 OiB0MS54LCAoc3VtKHQxLnkpKSwgKGNvdW50KCgodDEuKik6OnBhZ2dfdGFiMSkpKQotICAgLT4g IEhhc2hBZ2dyZWdhdGUKLSAgICAgICAgIEdyb3VwIEtleTogdDEueAotICAgICAgICAgLT4gIEhh c2ggSm9pbgotICAgICAgICAgICAgICAgSGFzaCBDb25kOiAodDEueCA9IHQyLnkpCi0gICAgICAg ICAgICAgICAtPiAgQXBwZW5kCi0gICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24g cGFnZ190YWIxX3AxIHQxXzEKLSAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBw YWdnX3RhYjFfcDIgdDFfMgotICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHBh Z2dfdGFiMV9wMyB0MV8zCi0gICAgICAgICAgICAgICAtPiAgSGFzaAotICAgICAgICAgICAgICAg ICAgICAgLT4gIEFwcGVuZAotICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2Fu IG9uIHBhZ2dfdGFiMl9wMSB0Ml8xCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgU2Vx IFNjYW4gb24gcGFnZ190YWIyX3AyIHQyXzIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ ICBTZXEgU2NhbiBvbiBwYWdnX3RhYjJfcDMgdDJfMwotKDE1IHJvd3MpCisgICAtPiAgQXBwZW5k CisgICAgICAgICAtPiAgSGFzaEFnZ3JlZ2F0ZQorICAgICAgICAgICAgICAgR3JvdXAgS2V5OiB0 MS54CisgICAgICAgICAgICAgICAtPiAgSGFzaCBKb2luCisgICAgICAgICAgICAgICAgICAgICBI YXNoIENvbmQ6ICh0MS54ID0gdDIueSkKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2Nh biBvbiBwYWdnX3RhYjFfcDEgdDEKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBIYXNoCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcGFnZ190YWIyX3AxIHQyCisg ICAgICAgICAtPiAgSGFzaEFnZ3JlZ2F0ZQorICAgICAgICAgICAgICAgR3JvdXAgS2V5OiB0MV8x LngKKyAgICAgICAgICAgICAgIC0+ICBIYXNoIEpvaW4KKyAgICAgICAgICAgICAgICAgICAgIEhh c2ggQ29uZDogKHQxXzEueCA9IHQyXzEueSkKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEg U2NhbiBvbiBwYWdnX3RhYjFfcDIgdDFfMQorICAgICAgICAgICAgICAgICAgICAgLT4gIEhhc2gK KyAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwYWdnX3RhYjJfcDIg dDJfMQorICAgICAgICAgLT4gIEhhc2hBZ2dyZWdhdGUKKyAgICAgICAgICAgICAgIEdyb3VwIEtl eTogdDFfMi54CisgICAgICAgICAgICAgICAtPiAgSGFzaCBKb2luCisgICAgICAgICAgICAgICAg ICAgICBIYXNoIENvbmQ6ICh0Ml8yLnkgPSB0MV8yLngpCisgICAgICAgICAgICAgICAgICAgICAt PiAgU2VxIFNjYW4gb24gcGFnZ190YWIyX3AzIHQyXzIKKyAgICAgICAgICAgICAgICAgICAgIC0+ ICBIYXNoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcGFnZ190 YWIxX3AzIHQxXzIKKygyNCByb3dzKQogCiBTRUxFQ1QgdDEueCwgc3VtKHQxLnkpLCBjb3VudCh0 MSkgRlJPTSBwYWdnX3RhYjEgdDEsIHBhZ2dfdGFiMiB0MiBXSEVSRSB0MS54ID0gdDIueSBHUk9V UCBCWSB0MS54IE9SREVSIEJZIDEsIDIsIDM7CiAgeCAgfCBzdW0gIHwgY291bnQgCmRpZmYgLS1n aXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BhcnRpdGlvbl9qb2luLm91dCBiL3NyYy90 ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcGFydGl0aW9uX2pvaW4ub3V0CmluZGV4IDUzNTkxYTRmMmQ1 Li5jNDUwMDI5MDY5NCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wYXJ0 aXRpb25fam9pbi5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wYXJ0aXRpb25f am9pbi5vdXQKQEAgLTEwOCwyOCArMTA4LDMzIEBAIFNFTEVDVCBDT1VOVCgqKSBGUk9NIHBydDEg dDEKICAgIDMwMAogKDEgcm93KQogCi0tLSBsZWZ0IG91dGVyIGpvaW4sIHdpdGggd2hvbGUtcm93 IHJlZmVyZW5jZTsgcGFydGl0aW9ud2lzZSBqb2luIGRvZXMgbm90IGFwcGx5CistLSBsZWZ0IG91 dGVyIGpvaW4sIHdpdGggd2hvbGUtcm93IHJlZmVyZW5jZQogRVhQTEFJTiAoQ09TVFMgT0ZGKQog U0VMRUNUIHQxLCB0MiBGUk9NIHBydDEgdDEgTEVGVCBKT0lOIHBydDIgdDIgT04gdDEuYSA9IHQy LmIgV0hFUkUgdDEuYiA9IDAgT1JERVIgQlkgdDEuYSwgdDIuYjsKICAgICAgICAgICAgICAgICAg ICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIFNvcnQKICAgIFNvcnQgS2V5OiB0MS5hLCB0 Mi5iCi0gICAtPiAgSGFzaCBSaWdodCBKb2luCi0gICAgICAgICBIYXNoIENvbmQ6ICh0Mi5iID0g dDEuYSkKLSAgICAgICAgIC0+ICBBcHBlbmQKKyAgIC0+ICBBcHBlbmQKKyAgICAgICAgIC0+ICBI YXNoIFJpZ2h0IEpvaW4KKyAgICAgICAgICAgICAgIEhhc2ggQ29uZDogKHQyXzEuYiA9IHQxXzEu YSkKICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwcnQyX3AxIHQyXzEKLSAgICAgICAg ICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwcnQyX3AyIHQyXzIKLSAgICAgICAgICAgICAgIC0+ICBT ZXEgU2NhbiBvbiBwcnQyX3AzIHQyXzMKLSAgICAgICAgIC0+ICBIYXNoCi0gICAgICAgICAgICAg ICAtPiAgQXBwZW5kCisgICAgICAgICAgICAgICAtPiAgSGFzaAogICAgICAgICAgICAgICAgICAg ICAgLT4gIFNlcSBTY2FuIG9uIHBydDFfcDEgdDFfMQogICAgICAgICAgICAgICAgICAgICAgICAg ICAgRmlsdGVyOiAoYiA9IDApCisgICAgICAgICAtPiAgSGFzaCBSaWdodCBKb2luCisgICAgICAg ICAgICAgICBIYXNoIENvbmQ6ICh0Ml8yLmIgPSB0MV8yLmEpCisgICAgICAgICAgICAgICAtPiAg U2VxIFNjYW4gb24gcHJ0Ml9wMiB0Ml8yCisgICAgICAgICAgICAgICAtPiAgSGFzaAogICAgICAg ICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHBydDFfcDIgdDFfMgogICAgICAgICAgICAg ICAgICAgICAgICAgICAgRmlsdGVyOiAoYiA9IDApCisgICAgICAgICAtPiAgSGFzaCBSaWdodCBK b2luCisgICAgICAgICAgICAgICBIYXNoIENvbmQ6ICh0Ml8zLmIgPSB0MV8zLmEpCisgICAgICAg ICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHJ0Ml9wMyB0Ml8zCisgICAgICAgICAgICAgICAtPiAg SGFzaAogICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHBydDFfcDMgdDFfMwog ICAgICAgICAgICAgICAgICAgICAgICAgICAgRmlsdGVyOiAoYiA9IDApCi0oMTYgcm93cykKKygy MSByb3dzKQogCiBTRUxFQ1QgdDEsIHQyIEZST00gcHJ0MSB0MSBMRUZUIEpPSU4gcHJ0MiB0MiBP TiB0MS5hID0gdDIuYiBXSEVSRSB0MS5iID0gMCBPUkRFUiBCWSB0MS5hLCB0Mi5iOwogICAgICAg dDEgICAgICB8ICAgICAgdDIgICAgICAKQEAgLTEzNDcsMjggKzEzNTIsMzcgQEAgU0VMRUNUIHQx LmEsIHQyLmIgRlJPTSAoU0VMRUNUICogRlJPTSBwcnQxIFdIRVJFIGEgPCA0NTApIHQxIExFRlQg Sk9JTiAoU0VMRUNUICoKICg5IHJvd3MpCiAKIC0tIG1lcmdlIGpvaW4gd2hlbiBleHByZXNzaW9u IHdpdGggd2hvbGUtcm93IHJlZmVyZW5jZSBuZWVkcyB0byBiZSBzb3J0ZWQ7Ci0tLSBwYXJ0aXRp b253aXNlIGpvaW4gZG9lcyBub3QgYXBwbHkKIEVYUExBSU4gKENPU1RTIE9GRikKIFNFTEVDVCB0 MS5hLCB0Mi5iIEZST00gcHJ0MSB0MSwgcHJ0MiB0MiBXSEVSRSB0MTo6dGV4dCA9IHQyOjp0ZXh0 IEFORCB0MS5hID0gdDIuYiBPUkRFUiBCWSB0MS5hOwotICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gTWVyZ2UgSm9pbgot ICAgTWVyZ2UgQ29uZDogKCh0MS5hID0gdDIuYikgQU5EICgoKCgodDEuKik6OnBydDEpKTo6dGV4 dCkgPSAoKCgodDIuKik6OnBydDIpKTo6dGV4dCkpKQotICAgLT4gIFNvcnQKLSAgICAgICAgIFNv cnQgS2V5OiB0MS5hLCAoKCgodDEuKik6OnBydDEpKTo6dGV4dCkKLSAgICAgICAgIC0+ICBSZXN1 bHQKLSAgICAgICAgICAgICAgIC0+ICBBcHBlbmQKLSAgICAgICAgICAgICAgICAgICAgIC0+ICBT ZXEgU2NhbiBvbiBwcnQxX3AxIHQxXzEKLSAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2Nh biBvbiBwcnQxX3AyIHQxXzIKLSAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBw cnQxX3AzIHQxXzMKLSAgIC0+ICBTb3J0Ci0gICAgICAgICBTb3J0IEtleTogdDIuYiwgKCgoKHQy LiopOjpwcnQyKSk6OnRleHQpCi0gICAgICAgICAtPiAgUmVzdWx0Ci0gICAgICAgICAgICAgICAt PiAgQXBwZW5kCi0gICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHJ0Ml9wMSB0 Ml8xCi0gICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHJ0Ml9wMiB0Ml8yCi0g ICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHJ0Ml9wMyB0Ml8zCi0oMTYgcm93 cykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorIE1lcmdlIEFwcGVuZAorICAgU29ydCBLZXk6IHQxLmEKKyAgIC0+ICBNZXJnZSBKb2luCisg ICAgICAgICBNZXJnZSBDb25kOiAoKHQxXzEuYSA9IHQyXzEuYikgQU5EICgoKHQxXzEuKik6OnRl eHQpID0gKCh0Ml8xLiopOjp0ZXh0KSkpCisgICAgICAgICAtPiAgU29ydAorICAgICAgICAgICAg ICAgU29ydCBLZXk6IHQxXzEuYSwgKCh0MV8xLiopOjp0ZXh0KQorICAgICAgICAgICAgICAgLT4g IFNlcSBTY2FuIG9uIHBydDFfcDEgdDFfMQorICAgICAgICAgLT4gIFNvcnQKKyAgICAgICAgICAg ICAgIFNvcnQgS2V5OiB0Ml8xLmIsICgodDJfMS4qKTo6dGV4dCkKKyAgICAgICAgICAgICAgIC0+ ICBTZXEgU2NhbiBvbiBwcnQyX3AxIHQyXzEKKyAgIC0+ICBNZXJnZSBKb2luCisgICAgICAgICBN ZXJnZSBDb25kOiAoKHQxXzIuYSA9IHQyXzIuYikgQU5EICgoKHQxXzIuKik6OnRleHQpID0gKCh0 Ml8yLiopOjp0ZXh0KSkpCisgICAgICAgICAtPiAgU29ydAorICAgICAgICAgICAgICAgU29ydCBL ZXk6IHQxXzIuYSwgKCh0MV8yLiopOjp0ZXh0KQorICAgICAgICAgICAgICAgLT4gIFNlcSBTY2Fu IG9uIHBydDFfcDIgdDFfMgorICAgICAgICAgLT4gIFNvcnQKKyAgICAgICAgICAgICAgIFNvcnQg S2V5OiB0Ml8yLmIsICgodDJfMi4qKTo6dGV4dCkKKyAgICAgICAgICAgICAgIC0+ICBTZXEgU2Nh biBvbiBwcnQyX3AyIHQyXzIKKyAgIC0+ICBNZXJnZSBKb2luCisgICAgICAgICBNZXJnZSBDb25k OiAoKHQxXzMuYSA9IHQyXzMuYikgQU5EICgoKHQxXzMuKik6OnRleHQpID0gKCh0Ml8zLiopOjp0 ZXh0KSkpCisgICAgICAgICAtPiAgU29ydAorICAgICAgICAgICAgICAgU29ydCBLZXk6IHQxXzMu YSwgKCh0MV8zLiopOjp0ZXh0KQorICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHBydDFf cDMgdDFfMworICAgICAgICAgLT4gIFNvcnQKKyAgICAgICAgICAgICAgIFNvcnQgS2V5OiB0Ml8z LmIsICgodDJfMy4qKTo6dGV4dCkKKyAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwcnQy X3AzIHQyXzMKKygyNiByb3dzKQogCiBTRUxFQ1QgdDEuYSwgdDIuYiBGUk9NIHBydDEgdDEsIHBy dDIgdDIgV0hFUkUgdDE6OnRleHQgPSB0Mjo6dGV4dCBBTkQgdDEuYSA9IHQyLmIgT1JERVIgQlkg dDEuYTsKICBhICB8IGIgIApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcGFydGl0 aW9uX2FnZ3JlZ2F0ZS5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9wYXJ0aXRpb25fYWdncmVn YXRlLnNxbAppbmRleCBhYjA3MGZlZTI0NC4uYTc2MzIyOGU2YzAgMTAwNjQ0Ci0tLSBhL3NyYy90 ZXN0L3JlZ3Jlc3Mvc3FsL3BhcnRpdGlvbl9hZ2dyZWdhdGUuc3FsCisrKyBiL3NyYy90ZXN0L3Jl Z3Jlc3Mvc3FsL3BhcnRpdGlvbl9hZ2dyZWdhdGUuc3FsCkBAIC0xMTYsNyArMTE2LDcgQEAgRVhQ TEFJTiAoQ09TVFMgT0ZGKQogU0VMRUNUIHQxLngsIHN1bSh0MS55KSwgY291bnQoKikgRlJPTSBw YWdnX3RhYjEgdDEsIHBhZ2dfdGFiMiB0MiBXSEVSRSB0MS54ID0gdDIueSBHUk9VUCBCWSB0MS54 IE9SREVSIEJZIDEsIDIsIDM7CiBTRUxFQ1QgdDEueCwgc3VtKHQxLnkpLCBjb3VudCgqKSBGUk9N IHBhZ2dfdGFiMSB0MSwgcGFnZ190YWIyIHQyIFdIRVJFIHQxLnggPSB0Mi55IEdST1VQIEJZIHQx LnggT1JERVIgQlkgMSwgMiwgMzsKIAotLS0gQ2hlY2sgd2l0aCB3aG9sZS1yb3cgcmVmZXJlbmNl OyBwYXJ0aXRpb253aXNlIGFnZ3JlZ2F0aW9uIGRvZXMgbm90IGFwcGx5CistLSBDaGVjayB3aXRo IHdob2xlLXJvdyByZWZlcmVuY2UKIEVYUExBSU4gKENPU1RTIE9GRikKIFNFTEVDVCB0MS54LCBz dW0odDEueSksIGNvdW50KHQxKSBGUk9NIHBhZ2dfdGFiMSB0MSwgcGFnZ190YWIyIHQyIFdIRVJF IHQxLnggPSB0Mi55IEdST1VQIEJZIHQxLnggT1JERVIgQlkgMSwgMiwgMzsKIFNFTEVDVCB0MS54 LCBzdW0odDEueSksIGNvdW50KHQxKSBGUk9NIHBhZ2dfdGFiMSB0MSwgcGFnZ190YWIyIHQyIFdI RVJFIHQxLnggPSB0Mi55IEdST1VQIEJZIHQxLnggT1JERVIgQlkgMSwgMiwgMzsKZGlmZiAtLWdp dCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3BhcnRpdGlvbl9qb2luLnNxbCBiL3NyYy90ZXN0L3Jl Z3Jlc3Mvc3FsL3BhcnRpdGlvbl9qb2luLnNxbAppbmRleCAxMjhjZTgzNzZlNi4uODcxMzVkYzg0 ZDggMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3BhcnRpdGlvbl9qb2luLnNxbAor KysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9wYXJ0aXRpb25fam9pbi5zcWwKQEAgLTQzLDcgKzQz LDcgQEAgU0VMRUNUIENPVU5UKCopIEZST00gcHJ0MSB0MQogICBMRUZUIEpPSU4gcHJ0MSB0MiBP TiB0MS5hID0gdDIuYQogICBMRUZUIEpPSU4gcHJ0MSB0MyBPTiB0Mi5hID0gdDMuYTsKIAotLS0g bGVmdCBvdXRlciBqb2luLCB3aXRoIHdob2xlLXJvdyByZWZlcmVuY2U7IHBhcnRpdGlvbndpc2Ug am9pbiBkb2VzIG5vdCBhcHBseQorLS0gbGVmdCBvdXRlciBqb2luLCB3aXRoIHdob2xlLXJvdyBy ZWZlcmVuY2UKIEVYUExBSU4gKENPU1RTIE9GRikKIFNFTEVDVCB0MSwgdDIgRlJPTSBwcnQxIHQx IExFRlQgSk9JTiBwcnQyIHQyIE9OIHQxLmEgPSB0Mi5iIFdIRVJFIHQxLmIgPSAwIE9SREVSIEJZ IHQxLmEsIHQyLmI7CiBTRUxFQ1QgdDEsIHQyIEZST00gcHJ0MSB0MSBMRUZUIEpPSU4gcHJ0MiB0 MiBPTiB0MS5hID0gdDIuYiBXSEVSRSB0MS5iID0gMCBPUkRFUiBCWSB0MS5hLCB0Mi5iOwpAQCAt MjI5LDcgKzIyOSw2IEBAIFNFTEVDVCB0MS5hLCB0Mi5iIEZST00gKFNFTEVDVCAqIEZST00gcHJ0 MSBXSEVSRSBhIDwgNDUwKSB0MSBMRUZUIEpPSU4gKFNFTEVDVCAqCiBTRUxFQ1QgdDEuYSwgdDIu YiBGUk9NIChTRUxFQ1QgKiBGUk9NIHBydDEgV0hFUkUgYSA8IDQ1MCkgdDEgTEVGVCBKT0lOIChT RUxFQ1QgKiBGUk9NIHBydDIgV0hFUkUgYiA+IDI1MCkgdDIgT04gdDEuYSA9IHQyLmIgV0hFUkUg dDEuYiA9IDAgT1JERVIgQlkgdDEuYSwgdDIuYjsKIAogLS0gbWVyZ2Ugam9pbiB3aGVuIGV4cHJl c3Npb24gd2l0aCB3aG9sZS1yb3cgcmVmZXJlbmNlIG5lZWRzIHRvIGJlIHNvcnRlZDsKLS0tIHBh cnRpdGlvbndpc2Ugam9pbiBkb2VzIG5vdCBhcHBseQogRVhQTEFJTiAoQ09TVFMgT0ZGKQogU0VM RUNUIHQxLmEsIHQyLmIgRlJPTSBwcnQxIHQxLCBwcnQyIHQyIFdIRVJFIHQxOjp0ZXh0ID0gdDI6 OnRleHQgQU5EIHQxLmEgPSB0Mi5iIE9SREVSIEJZIHQxLmE7CiBTRUxFQ1QgdDEuYSwgdDIuYiBG Uk9NIHBydDEgdDEsIHBydDIgdDIgV0hFUkUgdDE6OnRleHQgPSB0Mjo6dGV4dCBBTkQgdDEuYSA9 IHQyLmIgT1JERVIgQlkgdDEuYTsKLS0gCjIuMzQuMQoK --=_1b73054158934e47c139853525d00f6f Content-Transfer-Encoding: base64 Content-Type: text/x-diff; name=0003-Handle-child-relation-s-ConvertRowtypeExpr-in-find_c.patch Content-Disposition: attachment; filename=0003-Handle-child-relation-s-ConvertRowtypeExpr-in-find_c.patch; size=992 RnJvbSA1ZWZiNzhhM2Q4NzE3MTU0YzIxNmNkYzg2YjA2ZmVmZTg4MGQxMzA5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBc2h1dG9zaCBCYXBhdCA8YXNodXRvc2guYmFwYXRAZW50ZXJw cmlzZWRiLmNvbT4KRGF0ZTogTW9uLCAyNSBEZWMgMjAyMyAxNzo0MDoyMCArMDMwMApTdWJqZWN0 OiBbUEFUQ0ggMy82XSBIYW5kbGUgY2hpbGQgcmVsYXRpb24ncyBDb252ZXJ0Um93dHlwZUV4cHIg aW4KIGZpbmRfY29tcHV0YWJsZV9lY19tZW1iZXIoKQoKLS0tCiBzcmMvYmFja2VuZC9vcHRpbWl6 ZXIvcGF0aC9lcXVpdmNsYXNzLmMgfCAzICsrLQogMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9u cygrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL29wdGltaXplci9w YXRoL2VxdWl2Y2xhc3MuYyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wYXRoL2VxdWl2Y2xhc3Mu YwppbmRleCA1MWQ4MDYzMjZlYi4uYjE4NjM3MjY4MTYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L29wdGltaXplci9wYXRoL2VxdWl2Y2xhc3MuYworKysgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIv cGF0aC9lcXVpdmNsYXNzLmMKQEAgLTg1Niw3ICs4NTYsOCBAQCBmaW5kX2NvbXB1dGFibGVfZWNf bWVtYmVyKFBsYW5uZXJJbmZvICpyb290LAogCQlleHBydmFycyA9IHB1bGxfdmFyX2NsYXVzZSgo Tm9kZSAqKSBlbS0+ZW1fZXhwciwKIAkJCQkJCQkJICAgUFZDX0lOQ0xVREVfQUdHUkVHQVRFUyB8 CiAJCQkJCQkJCSAgIFBWQ19JTkNMVURFX1dJTkRPV0ZVTkNTIHwKLQkJCQkJCQkJICAgUFZDX0lO Q0xVREVfUExBQ0VIT0xERVJTKTsKKwkJCQkJCQkJICAgUFZDX0lOQ0xVREVfUExBQ0VIT0xERVJT IHwKKwkJCQkJCQkJICAgUFZDX0lOQ0xVREVfQ09OVkVSVFJPV1RZUEVTKTsKIAkJZm9yZWFjaChs YzIsIGV4cHJ2YXJzKQogCQl7CiAJCQlpZiAoIWlzX2V4cHJsaXN0X21lbWJlcihsZmlyc3QobGMy KSwgZXhwcnMpKQotLSAKMi4zNC4xCgo= --=_1b73054158934e47c139853525d00f6f Content-Transfer-Encoding: base64 Content-Type: text/x-diff; name=0002-Handle-ConvertRowtypeExprs-in-pull_vars_clause.patch Content-Disposition: attachment; filename=0002-Handle-ConvertRowtypeExprs-in-pull_vars_clause.patch; size=6392 RnJvbSAyMDU3MzdiYjk3ZDA5N2QxYWMwYTZiN2MyMjBjN2UwMjM0YTUwNTgyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBc2h1dG9zaCBCYXBhdCA8YXNodXRvc2guYmFwYXRAZW50ZXJw cmlzZWRiLmNvbT4KRGF0ZTogTW9uLCAyNSBEZWMgMjAyMyAxNjowODoxNSArMDMwMApTdWJqZWN0 OiBbUEFUQ0ggMi82XSBIYW5kbGUgQ29udmVydFJvd3R5cGVFeHBycyBpbiBwdWxsX3ZhcnNfY2xh dXNlKCkuCgpUaGlzIGlzIGEgcHJlcGFyYXRvcnkgcGF0Y2ggdG8gZml4IHRoZSB1bnJlc29sdmVk IENvbnZlcnRSb3d0eXBlRXhwcgpyZWZlcmVuY2VzIGluIHRoZSB0YXJnZXRsaXN0cy4gVGhlIHBh dGNoIGFsbG93cyBwdWxsX3ZhcnNfY2xhdXNlKCkgdG8KcmV0dXJuIENvbnZlcnRSb3d0eXBlRXhw cnMgd2l0aG91dCByZWN1cnNpbmcgaW50byB0aG9zZS4gQmVjYXVzZSBvZgp0aGUgcmVjZW50IHdv cmsgdG8gc3VwcG9ydCBpbmRleGVzIGFuZCB0cmlnZ2VycyBvbiBwYXJ0aXRpb25lZCB0YWJsZSwK ZXZlcnkgY2FsbGVyIG9mIHB1bGxfdmFyX2NsYXVzZSgpIGNhbiBlbmNvdW50ZXIgYSBDb252ZXJ0 Um93dHlwZQplbWJlZGRpbmcgYSB3aG9sZS1yb3cgcmVmZXJlbmNlLiBDdXJyZW50IGJlaGF2aW9y IGlzIHVuY2hhbmdlZC4KQ2FsbGVycyB3aGljaCBkb24ndCBuZWVkIHRvIHJlY3Vyc2UgdG8gQ29u dmVydFJvd3R5cGVFeHBycwpzaG91bGQgZXhwbGljaXRseSBwYXNzIFBWQ19JTkNMVURFX0NPTlZF UlRST1dUWVBFUy4KClRoZSBwYXRjaCBpcyB0YWtlbiBmcm9tIGh0dHBzOi8vd3d3LnBvc3RncmVz cWwub3JnL21lc3NhZ2UtaWQvQ0FGakZwUmM4Wm9EbTAlMkJ6aHglMkJNY2t3R3lFcWtPeldjcFZx YnZqYXh3ZEdhclpTTnJtQSU0MG1haWwuZ21haWwuY29tCi0tLQogc3JjL2JhY2tlbmQvbm9kZXMv bm9kZUZ1bmNzLmMgICAgICAgIHwgMzIgKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogc3Jj L2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vc2V0cmVmcy5jIHwgMzIgLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQogc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvdmFyLmMgICAgIHwgMTggKysr KysrKysrKysrKysrKwogc3JjL2luY2x1ZGUvbm9kZXMvbm9kZUZ1bmNzLmggICAgICAgIHwgIDEg Kwogc3JjL2luY2x1ZGUvb3B0aW1pemVyL29wdGltaXplci5oICAgIHwgIDIgKysKIDUgZmlsZXMg Y2hhbmdlZCwgNTMgaW5zZXJ0aW9ucygrKSwgMzIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvbm9kZXMvbm9kZUZ1bmNzLmMgYi9zcmMvYmFja2VuZC9ub2Rlcy9ub2RlRnVu Y3MuYwppbmRleCBkMmUyYWY0ZjgxMS4uNGNlMDIzMGFhZDUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL25vZGVzL25vZGVGdW5jcy5jCisrKyBiL3NyYy9iYWNrZW5kL25vZGVzL25vZGVGdW5jcy5j CkBAIC00NzkzLDMgKzQ3OTMsMzUgQEAgcGxhbnN0YXRlX3dhbGtfbWVtYmVycyhQbGFuU3RhdGUg KipwbGFuc3RhdGVzLCBpbnQgbnBsYW5zLAogCiAJcmV0dXJuIGZhbHNlOwogfQorCisvKgorICog aXNfY29udmVydGVkX3dob2xlX3Jvd19yZWZlcmVuY2UKKyAqCQlJZiB0aGUgZ2l2ZW4gbm9kZSBp cyBhIENvbnZlcnRSb3d0eXBlRXhwciBlbmNhcHN1bGF0aW5nIGEgd2hvbGUtcm93CisgKgkJcmVm ZXJlbmNlIGFzIGltcGxpY2l0IGNhc3QgKGkuZSBhIHBhcmVudCdzIHdob2xlIHJvdyByZWZlcmVu Y2UKKyAqCQl0cmFuc2xhdGVkIGJ5IGFkanVzdF9hcHBlbmRyZWxfYXR0cnMoKSksIHJldHVybiB0 cnVlLiBPdGhlcndpc2UgcmV0dXJuCisgKgkJZmFsc2UuCisgKi8KK2Jvb2wKK2lzX2NvbnZlcnRl ZF93aG9sZV9yb3dfcmVmZXJlbmNlKE5vZGUgKm5vZGUpCit7CisJQ29udmVydFJvd3R5cGVFeHBy ICpjb252ZXhwcjsKKworCWlmICghbm9kZSB8fCAhSXNBKG5vZGUsIENvbnZlcnRSb3d0eXBlRXhw cikpCisJCXJldHVybiBmYWxzZTsKKworCS8qIFRyYXZlcnNlIG5lc3RlZCBDb252ZXJ0Um93dHlw ZUV4cHIncy4gKi8KKwljb252ZXhwciA9IGNhc3ROb2RlKENvbnZlcnRSb3d0eXBlRXhwciwgbm9k ZSk7CisJd2hpbGUgKGNvbnZleHByLT5jb252ZXJ0Zm9ybWF0ID09IENPRVJDRV9JTVBMSUNJVF9D QVNUICYmCisJCSAgIElzQShjb252ZXhwci0+YXJnLCBDb252ZXJ0Um93dHlwZUV4cHIpKQorCQlj b252ZXhwciA9IGNhc3ROb2RlKENvbnZlcnRSb3d0eXBlRXhwciwgY29udmV4cHItPmFyZyk7CisK KwlpZiAoSXNBKGNvbnZleHByLT5hcmcsIFZhcikpCisJeworCQlWYXIJCSAgICp2YXIgPSBjYXN0 Tm9kZShWYXIsIGNvbnZleHByLT5hcmcpOworCisJCWlmICh2YXItPnZhcmF0dG5vID09IDApCisJ CQlyZXR1cm4gdHJ1ZTsKKwl9CisKKwlyZXR1cm4gZmFsc2U7Cit9CmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9zZXRyZWZzLmMgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIv cGxhbi9zZXRyZWZzLmMKaW5kZXggNzA2NjQzYjFiODguLjA5MzE0ZmFjNjcyIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9zZXRyZWZzLmMKKysrIGIvc3JjL2JhY2tlbmQv b3B0aW1pemVyL3BsYW4vc2V0cmVmcy5jCkBAIC0yMTMsOCArMjEzLDYgQEAgc3RhdGljIExpc3Qg KnNldF93aW5kb3dhZ2dfcnVuY29uZGl0aW9uX3JlZmVyZW5jZXMoUGxhbm5lckluZm8gKnJvb3Qs CiAJCQkJCQkJCQkJCQkgICBMaXN0ICpydW5jb25kaXRpb24sCiAJCQkJCQkJCQkJCQkgICBQbGFu ICpwbGFuKTsKIAotc3RhdGljIGJvb2wgaXNfY29udmVydGVkX3dob2xlX3Jvd19yZWZlcmVuY2Uo Tm9kZSAqbm9kZSk7Ci0KIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICoKICAqCQlTVUJQTEFOIFJF RkVSRU5DRVMKQEAgLTM2NTIsMzMgKzM2NTAsMyBAQCBleHRyYWN0X3F1ZXJ5X2RlcGVuZGVuY2ll c193YWxrZXIoTm9kZSAqbm9kZSwgUGxhbm5lckluZm8gKmNvbnRleHQpCiAJcmV0dXJuIGV4cHJl c3Npb25fdHJlZV93YWxrZXIobm9kZSwgZXh0cmFjdF9xdWVyeV9kZXBlbmRlbmNpZXNfd2Fsa2Vy LAogCQkJCQkJCQkgICh2b2lkICopIGNvbnRleHQpOwogfQotCi0vKgotICogaXNfY29udmVydGVk X3dob2xlX3Jvd19yZWZlcmVuY2UKLSAqICAgICAgICAgICAgIElmIHRoZSBnaXZlbiBub2RlIGlz IGEgQ29udmVydFJvd3R5cGVFeHByIGVuY2Fwc3VsYXRpbmcgYSB3aG9sZS1yb3cKLSAqICAgICAg ICAgICAgIHJlZmVyZW5jZSBhcyBpbXBsaWNpdCBjYXN0LCByZXR1cm4gdHJ1ZS4gT3RoZXJ3aXNl IHJldHVybiBmYWxzZS4KLSAqLwotc3RhdGljIGJvb2wKLWlzX2NvbnZlcnRlZF93aG9sZV9yb3df cmVmZXJlbmNlKE5vZGUgKm5vZGUpCi17Ci0JQ29udmVydFJvd3R5cGVFeHByICpjb252ZXhwcjsK LQotCWlmICghbm9kZSB8fCAhSXNBKG5vZGUsIENvbnZlcnRSb3d0eXBlRXhwcikpCi0JCXJldHVy biBmYWxzZTsKLQotCS8qIFRyYXZlcnNlIG5lc3RlZCBDb252ZXJ0Um93dHlwZUV4cHIncy4gKi8K LQljb252ZXhwciA9IGNhc3ROb2RlKENvbnZlcnRSb3d0eXBlRXhwciwgbm9kZSk7Ci0Jd2hpbGUg KGNvbnZleHByLT5jb252ZXJ0Zm9ybWF0ID09IENPRVJDRV9JTVBMSUNJVF9DQVNUICYmCi0JCUlz QShjb252ZXhwci0+YXJnLCBDb252ZXJ0Um93dHlwZUV4cHIpKQotCQljb252ZXhwciA9IGNhc3RO b2RlKENvbnZlcnRSb3d0eXBlRXhwciwgY29udmV4cHItPmFyZyk7Ci0KLQlpZiAoSXNBKGNvbnZl eHByLT5hcmcsIFZhcikpCi0JewotCQlWYXIgICAgICAgICAgICAgICAgKnZhciA9IGNhc3ROb2Rl KFZhciwgY29udmV4cHItPmFyZyk7Ci0KLQkJaWYgKHZhci0+dmFyYXR0bm8gPT0gMCkKLQkJCXJl dHVybiB0cnVlOwotCX0KLQotCXJldHVybiBmYWxzZTsKLX0KZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL29wdGltaXplci91dGlsL3Zhci5jIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvdmFy LmMKaW5kZXggODQ0ZmMzMDk3OGIuLmRmZTg2OWMzNjc0IDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9vcHRpbWl6ZXIvdXRpbC92YXIuYworKysgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC92 YXIuYwpAQCAtNTg5LDYgKzU4OSwxMSBAQCBsb2NhdGVfdmFyX29mX2xldmVsX3dhbGtlcihOb2Rl ICpub2RlLAogICoJICBWYXJzIHdpdGhpbiBhIFBIVidzIGV4cHJlc3Npb24gYXJlIGluY2x1ZGVk IGluIHRoZSByZXN1bHQgb25seQogICoJICB3aGVuIFBWQ19SRUNVUlNFX1BMQUNFSE9MREVSUyBp cyBzcGVjaWZpZWQuCiAgKgorICoJICBDb252ZXJ0Um93dHlwZUV4cHJzIGVuY2Fwc3VsYXRpbmcg d2hvbGUgcm93IHJlZmVyZW5jZXMgYXJlIGhhbmRsZWQKKyAqCSAgYWNjb3JkaW5nIHRvIHRoZXNl IGJpdHMgaW4gJ2ZsYWdzJzoKKyAqCSAgCVBWQ19JTkNMVURFX0NPTlZFUlRST1dUWVBFUyBpbmNs dWRlIENvbnZlcnRSb3d0eXBlRXhwcnMgaW4gb3V0cHV0IGxpc3QKKyAqCSAgCWJ5IGRlZmF1bHQg LSByZWN1cnNlIGludG8gQ29udmVydFJvd3R5cGVFeHBycyBhcmd1bWVudHMKKyAqCiAgKgkgIEdy b3VwaW5nRnVuY3MgYXJlIHRyZWF0ZWQgZXhhY3RseSBsaWtlIEFnZ3JlZnMsIGFuZCBzbyBkbyBu b3QgbmVlZAogICoJICB0aGVpciBvd24gZmxhZyBiaXRzLgogICoKQEAgLTcwMiw2ICs3MDcsMTkg QEAgcHVsbF92YXJfY2xhdXNlX3dhbGtlcihOb2RlICpub2RlLCBwdWxsX3Zhcl9jbGF1c2VfY29u dGV4dCAqY29udGV4dCkKIAkJZWxzZQogCQkJZWxvZyhFUlJPUiwgIlBsYWNlSG9sZGVyVmFyIGZv dW5kIHdoZXJlIG5vdCBleHBlY3RlZCIpOwogCX0KKwllbHNlIGlmIChpc19jb252ZXJ0ZWRfd2hv bGVfcm93X3JlZmVyZW5jZShub2RlKSkKKwl7CisJCWlmIChjb250ZXh0LT5mbGFncyAmIFBWQ19J TkNMVURFX0NPTlZFUlRST1dUWVBFUykKKwkJeworCQkJY29udGV4dC0+dmFybGlzdCA9IGxhcHBl bmQoY29udGV4dC0+dmFybGlzdCwgbm9kZSk7CisJCQkvKiB3ZSBkbyBOT1QgZGVzY2VuZCBpbnRv IHRoZSBjb250YWluZWQgZXhwcmVzc2lvbiAqLworCQkJcmV0dXJuIGZhbHNlOworCQl9CisJCWVs c2UKKwkJeworCQkJLyogZmFsbCB0aHJvdWdoIHRvIHJlY3Vyc2UgaW50byB0aGUgQ29udmVydFJv d3R5cGUncyBhcmd1bWVudC4gKi8KKwkJfQorCX0KIAlyZXR1cm4gZXhwcmVzc2lvbl90cmVlX3dh bGtlcihub2RlLCBwdWxsX3Zhcl9jbGF1c2Vfd2Fsa2VyLAogCQkJCQkJCQkgICh2b2lkICopIGNv bnRleHQpOwogfQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMvbm9kZUZ1bmNzLmggYi9z cmMvaW5jbHVkZS9ub2Rlcy9ub2RlRnVuY3MuaAppbmRleCBlYWJhNTliZWQ4My4uOGQzMGQ2Y2Jh YzUgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL25vZGVGdW5jcy5oCisrKyBiL3NyYy9p bmNsdWRlL25vZGVzL25vZGVGdW5jcy5oCkBAIC0yMTksNCArMjE5LDUgQEAgZXh0ZXJuIGJvb2wg cGxhbnN0YXRlX3RyZWVfd2Fsa2VyX2ltcGwoc3RydWN0IFBsYW5TdGF0ZSAqcGxhbnN0YXRlLAog CQkJCQkJCQkJICAgcGxhbnN0YXRlX3RyZWVfd2Fsa2VyX2NhbGxiYWNrIHdhbGtlciwKIAkJCQkJ CQkJCSAgIHZvaWQgKmNvbnRleHQpOwogCitleHRlcm4gYm9vbCBpc19jb252ZXJ0ZWRfd2hvbGVf cm93X3JlZmVyZW5jZShOb2RlICpub2RlKTsKICNlbmRpZgkJCQkJCQkvKiBOT0RFRlVOQ1NfSCAq LwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvb3B0aW1pemVyL29wdGltaXplci5oIGIvc3JjL2lu Y2x1ZGUvb3B0aW1pemVyL29wdGltaXplci5oCmluZGV4IDdiNjNjNWNmNzE4Li40MzgxMTI0ZjZl OCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvb3B0aW1pemVyL29wdGltaXplci5oCisrKyBiL3Ny Yy9pbmNsdWRlL29wdGltaXplci9vcHRpbWl6ZXIuaApAQCAtMTkxLDYgKzE5MSw4IEBAIGV4dGVy biBTb3J0R3JvdXBDbGF1c2UgKmdldF9zb3J0Z3JvdXByZWZfY2xhdXNlX25vZXJyKEluZGV4IHNv cnRyZWYsCiAJCQkJCQkJCQkJCSAqIG91dHB1dCBsaXN0ICovCiAjZGVmaW5lIFBWQ19SRUNVUlNF X1BMQUNFSE9MREVSUwkweDAwMjAJLyogcmVjdXJzZSBpbnRvIFBsYWNlSG9sZGVyVmFyCiAJCQkJ CQkJCQkJCSAqIGFyZ3VtZW50cyAqLworI2RlZmluZSBQVkNfSU5DTFVERV9DT05WRVJUUk9XVFlQ RVMJMHgwMDQwICAgICAvKiBpbmNsdWRlIENvbnZlcnRSb3d0eXBlRXhwcnMgaW4KKwkJCQkJCQkq IG91dHB1dCBsaXN0ICovCiAKIGV4dGVybiBCaXRtYXBzZXQgKnB1bGxfdmFybm9zKFBsYW5uZXJJ bmZvICpyb290LCBOb2RlICpub2RlKTsKIGV4dGVybiBCaXRtYXBzZXQgKnB1bGxfdmFybm9zX29m X2xldmVsKFBsYW5uZXJJbmZvICpyb290LCBOb2RlICpub2RlLCBpbnQgbGV2ZWxzdXApOwotLSAK Mi4zNC4xCgo= --=_1b73054158934e47c139853525d00f6f Content-Transfer-Encoding: base64 Content-Type: text/x-diff; name=0001-Allow-partition-wise-join-when-reltarget-contains-wh.patch Content-Disposition: attachment; filename=0001-Allow-partition-wise-join-when-reltarget-contains-wh.patch; size=6451 RnJvbSAyZGMxNzVlNzM1NWMxNGJkZmZmMDY5MWVjNzg5YzM4M2RhOWM2ZjQzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGV4YW5kZXIgUHloYWxvdiA8YS5weWhhbG92QHBvc3RncmVz cHJvLnJ1PgpEYXRlOiBNb24sIDI1IERlYyAyMDIzIDE1OjUxOjI4ICswMzAwClN1YmplY3Q6IFtQ QVRDSCAxLzZdIEFsbG93IHBhcnRpdGlvbi13aXNlIGpvaW4gd2hlbiByZWx0YXJnZXQgY29udGFp bnMgd2hvbGUKIHJvdyB2YXJzCgpUaGlzIHBhcnRpYWxseSByZXZlcnQgN2NmZGM3NzAyM2FkNTA3 MzE3MjNlODVjMjE1YTQxMjc0MzZlZDA5YywKcmVzdG9yaW5nIHNldHJlZnMgbG9naWMgdG8gaGFu ZGxlIGNvbnZlcnRlZCB3aG9sZSByb3cgcmVmZXJlbmNlLgotLS0KIHNyYy9iYWNrZW5kL29wdGlt aXplci9wYXRoL2FsbHBhdGhzLmMgfCAgMyArLQogc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4v c2V0cmVmcy5jICB8IDUxICsrKysrKysrKysrKysrKysrKysrKysrKy0tLQogMiBmaWxlcyBjaGFu Z2VkLCA0OCBpbnNlcnRpb25zKCspLCA2IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL29wdGltaXplci9wYXRoL2FsbHBhdGhzLmMgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIv cGF0aC9hbGxwYXRocy5jCmluZGV4IDQ4OTVjZWU5OTQ0Li4xYzY5ZjcyZGI1NiAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BhdGgvYWxscGF0aHMuYworKysgYi9zcmMvYmFja2Vu ZC9vcHRpbWl6ZXIvcGF0aC9hbGxwYXRocy5jCkBAIC05NjQsOCArOTY0LDcgQEAgc2V0X2FwcGVu ZF9yZWxfc2l6ZShQbGFubmVySW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAqcmVsLAogCSAqLwogCWlm IChlbmFibGVfcGFydGl0aW9ud2lzZV9qb2luICYmCiAJCXJlbC0+cmVsb3B0a2luZCA9PSBSRUxP UFRfQkFTRVJFTCAmJgotCQlydGUtPnJlbGtpbmQgPT0gUkVMS0lORF9QQVJUSVRJT05FRF9UQUJM RSAmJgotCQlibXNfaXNfZW1wdHkocmVsLT5hdHRyX25lZWRlZFtJbnZhbGlkQXR0ck51bWJlciAt IHJlbC0+bWluX2F0dHJdKSkKKwkJcnRlLT5yZWxraW5kID09IFJFTEtJTkRfUEFSVElUSU9ORURf VEFCTEUpCiAJCXJlbC0+Y29uc2lkZXJfcGFydGl0aW9ud2lzZV9qb2luID0gdHJ1ZTsKIAogCS8q CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9zZXRyZWZzLmMgYi9zcmMv YmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9zZXRyZWZzLmMKaW5kZXggN2FlZDg0NTg0YzYuLjcwNjY0 M2IxYjg4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9zZXRyZWZzLmMK KysrIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vc2V0cmVmcy5jCkBAIC01MSw2ICs1MSw5 IEBAIHR5cGVkZWYgc3RydWN0CiAJaW50CQkJbnVtX3ZhcnM7CQkvKiBudW1iZXIgb2YgcGxhaW4g VmFyIHRsaXN0IGVudHJpZXMgKi8KIAlib29sCQloYXNfcGhfdmFyczsJLyogYXJlIHRoZXJlIFBs YWNlSG9sZGVyVmFyIGVudHJpZXM/ICovCiAJYm9vbAkJaGFzX25vbl92YXJzOwkvKiBhcmUgdGhl cmUgb3RoZXIgZW50cmllcz8gKi8KKwlib29sCQloYXNfY29udl93aG9sZV9yb3dzOwkvKiBhcmUg dGhlcmUgQ29udmVydFJvd3R5cGVFeHByCisJCQkJCQkJCSogZW50cmllcyBlbmNhcHN1bGF0aW5n IGEgd2hvbGUtcm93CisJCQkJCQkJCSogVmFyPyAqLwogCXRsaXN0X3ZpbmZvIHZhcnNbRkxFWElC TEVfQVJSQVlfTUVNQkVSXTsJLyogaGFzIG51bV92YXJzIGVudHJpZXMgKi8KIH0gaW5kZXhlZF90 bGlzdDsKIApAQCAtMjEwLDYgKzIxMyw3IEBAIHN0YXRpYyBMaXN0ICpzZXRfd2luZG93YWdnX3J1 bmNvbmRpdGlvbl9yZWZlcmVuY2VzKFBsYW5uZXJJbmZvICpyb290LAogCQkJCQkJCQkJCQkJICAg TGlzdCAqcnVuY29uZGl0aW9uLAogCQkJCQkJCQkJCQkJICAgUGxhbiAqcGxhbik7CiAKK3N0YXRp YyBib29sIGlzX2NvbnZlcnRlZF93aG9sZV9yb3dfcmVmZXJlbmNlKE5vZGUgKm5vZGUpOwogCiAv KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioKICAqCkBAIC0yNjg3LDYgKzI2OTEsNyBAQCBidWlsZF90bGlz dF9pbmRleChMaXN0ICp0bGlzdCkKIAlpdGxpc3QtPnRsaXN0ID0gdGxpc3Q7CiAJaXRsaXN0LT5o YXNfcGhfdmFycyA9IGZhbHNlOwogCWl0bGlzdC0+aGFzX25vbl92YXJzID0gZmFsc2U7CisJaXRs aXN0LT5oYXNfY29udl93aG9sZV9yb3dzID0gZmFsc2U7CiAKIAkvKiBGaW5kIHRoZSBWYXJzIGFu ZCBmaWxsIGluIHRoZSBpbmRleCBhcnJheSAqLwogCXZpbmZvID0gaXRsaXN0LT52YXJzOwpAQCAt MjcwNiw2ICsyNzExLDggQEAgYnVpbGRfdGxpc3RfaW5kZXgoTGlzdCAqdGxpc3QpCiAJCX0KIAkJ ZWxzZSBpZiAodGxlLT5leHByICYmIElzQSh0bGUtPmV4cHIsIFBsYWNlSG9sZGVyVmFyKSkKIAkJ CWl0bGlzdC0+aGFzX3BoX3ZhcnMgPSB0cnVlOworCQllbHNlIGlmIChpc19jb252ZXJ0ZWRfd2hv bGVfcm93X3JlZmVyZW5jZSgoTm9kZSAqKSB0bGUtPmV4cHIpKQorCQkJaXRsaXN0LT5oYXNfY29u dl93aG9sZV9yb3dzID0gdHJ1ZTsKIAkJZWxzZQogCQkJaXRsaXN0LT5oYXNfbm9uX3ZhcnMgPSB0 cnVlOwogCX0KQEAgLTI3MjEsNyArMjcyOCwxMCBAQCBidWlsZF90bGlzdF9pbmRleChMaXN0ICp0 bGlzdCkKICAqIFRoaXMgaXMgbGlrZSBidWlsZF90bGlzdF9pbmRleCwgYnV0IHdlIG9ubHkgaW5k ZXggdGxpc3QgZW50cmllcyB0aGF0CiAgKiBhcmUgVmFycyBiZWxvbmdpbmcgdG8gc29tZSByZWwg b3RoZXIgdGhhbiB0aGUgb25lIHNwZWNpZmllZC4gIFdlIHdpbGwgc2V0CiAgKiBoYXNfcGhfdmFy cyAoYWxsb3dpbmcgUGxhY2VIb2xkZXJWYXJzIHRvIGJlIG1hdGNoZWQpLCBidXQgbm90IGhhc19u b25fdmFycwotICogKHNvIG5vdGhpbmcgb3RoZXIgdGhhbiBWYXJzIGFuZCBQbGFjZUhvbGRlclZh cnMgY2FuIGJlIG1hdGNoZWQpLgorICogKHNvIG5vdGhpbmcgb3RoZXIgdGhhbiBWYXJzIGFuZCBQ bGFjZUhvbGRlclZhcnMgY2FuIGJlIG1hdGNoZWQpLiAgSW4gY2FzZSBvZgorICogRE1MLCB3aGVy ZSB0aGlzIGZ1bmN0aW9uIHdpbGwgYmUgdXNlZCwgcmV0dXJuaW5nIGxpc3RzIGZyb20gY2hpbGQg cmVsYXRpb25zCisgKiB3aWxsIGJlIGFwcGVuZGVkIHNpbWlsYXIgdG8gYSBzaW1wbGUgYXBwZW5k IHJlbGF0aW9uLiBUaGF0IGRvZXMgbm90IHJlcXVpcmUKKyAqIGZpeGluZyBDb252ZXJ0Um93dHlw ZUV4cHIgcmVmZXJlbmNlcy4gU28sIHRob3NlIGFyZSBub3QgY29uc2lkZXJlZCBoZXJlLgogICov CiBzdGF0aWMgaW5kZXhlZF90bGlzdCAqCiBidWlsZF90bGlzdF9pbmRleF9vdGhlcl92YXJzKExp c3QgKnRsaXN0LCBpbnQgaWdub3JlX3JlbCkKQEAgLTI3MzgsNiArMjc0OCw3IEBAIGJ1aWxkX3Rs aXN0X2luZGV4X290aGVyX3ZhcnMoTGlzdCAqdGxpc3QsIGludCBpZ25vcmVfcmVsKQogCWl0bGlz dC0+dGxpc3QgPSB0bGlzdDsKIAlpdGxpc3QtPmhhc19waF92YXJzID0gZmFsc2U7CiAJaXRsaXN0 LT5oYXNfbm9uX3ZhcnMgPSBmYWxzZTsKKwlpdGxpc3QtPmhhc19jb252X3dob2xlX3Jvd3MgPSBm YWxzZTsKIAogCS8qIEZpbmQgdGhlIGRlc2lyZWQgVmFycyBhbmQgZmlsbCBpbiB0aGUgaW5kZXgg YXJyYXkgKi8KIAl2aW5mbyA9IGl0bGlzdC0+dmFyczsKQEAgLTMwNDMsNiArMzA1NCw3IEBAIHN0 YXRpYyBOb2RlICoKIGZpeF9qb2luX2V4cHJfbXV0YXRvcihOb2RlICpub2RlLCBmaXhfam9pbl9l eHByX2NvbnRleHQgKmNvbnRleHQpCiB7CiAJVmFyCQkgICAqbmV3dmFyOworCWJvb2wgICAgICAg ICAgICBjb252ZXJ0ZWRfd2hvbGVfcm93OwogCiAJaWYgKG5vZGUgPT0gTlVMTCkKIAkJcmV0dXJu IE5VTEw7CkBAIC0zMTE2LDcgKzMxMjgsOCBAQCBmaXhfam9pbl9leHByX211dGF0b3IoTm9kZSAq bm9kZSwgZml4X2pvaW5fZXhwcl9jb250ZXh0ICpjb250ZXh0KQogCQlyZXR1cm4gZml4X2pvaW5f ZXhwcl9tdXRhdG9yKChOb2RlICopIHBodi0+cGhleHByLCBjb250ZXh0KTsKIAl9CiAJLyogVHJ5 IG1hdGNoaW5nIG1vcmUgY29tcGxleCBleHByZXNzaW9ucyB0b28sIGlmIHRsaXN0cyBoYXZlIGFu eSAqLwotCWlmIChjb250ZXh0LT5vdXRlcl9pdGxpc3QgJiYgY29udGV4dC0+b3V0ZXJfaXRsaXN0 LT5oYXNfbm9uX3ZhcnMpCisJY29udmVydGVkX3dob2xlX3JvdyA9IGlzX2NvbnZlcnRlZF93aG9s ZV9yb3dfcmVmZXJlbmNlKG5vZGUpOworCWlmIChjb250ZXh0LT5vdXRlcl9pdGxpc3QgJiYgKGNv bnRleHQtPm91dGVyX2l0bGlzdC0+aGFzX25vbl92YXJzIHx8IChjb250ZXh0LT5vdXRlcl9pdGxp c3QtPmhhc19jb252X3dob2xlX3Jvd3MgJiYgY29udmVydGVkX3dob2xlX3JvdykpKQogCXsKIAkJ bmV3dmFyID0gc2VhcmNoX2luZGV4ZWRfdGxpc3RfZm9yX25vbl92YXIoKEV4cHIgKikgbm9kZSwK IAkJCQkJCQkJCQkJCSAgY29udGV4dC0+b3V0ZXJfaXRsaXN0LApAQCAtMzEyNCw3ICszMTM3LDcg QEAgZml4X2pvaW5fZXhwcl9tdXRhdG9yKE5vZGUgKm5vZGUsIGZpeF9qb2luX2V4cHJfY29udGV4 dCAqY29udGV4dCkKIAkJaWYgKG5ld3ZhcikKIAkJCXJldHVybiAoTm9kZSAqKSBuZXd2YXI7CiAJ fQotCWlmIChjb250ZXh0LT5pbm5lcl9pdGxpc3QgJiYgY29udGV4dC0+aW5uZXJfaXRsaXN0LT5o YXNfbm9uX3ZhcnMpCisJaWYgKGNvbnRleHQtPmlubmVyX2l0bGlzdCAmJiAoY29udGV4dC0+aW5u ZXJfaXRsaXN0LT5oYXNfbm9uX3ZhcnMgfHwgKGNvbnRleHQtPmlubmVyX2l0bGlzdC0+aGFzX2Nv bnZfd2hvbGVfcm93cyAmJiBjb252ZXJ0ZWRfd2hvbGVfcm93KSkpCiAJewogCQluZXd2YXIgPSBz ZWFyY2hfaW5kZXhlZF90bGlzdF9mb3Jfbm9uX3ZhcigoRXhwciAqKSBub2RlLAogCQkJCQkJCQkJ CQkJICBjb250ZXh0LT5pbm5lcl9pdGxpc3QsCkBAIC0zMjM3LDcgKzMyNTAsNyBAQCBmaXhfdXBw ZXJfZXhwcl9tdXRhdG9yKE5vZGUgKm5vZGUsIGZpeF91cHBlcl9leHByX2NvbnRleHQgKmNvbnRl eHQpCiAJCXJldHVybiBmaXhfdXBwZXJfZXhwcl9tdXRhdG9yKChOb2RlICopIHBodi0+cGhleHBy LCBjb250ZXh0KTsKIAl9CiAJLyogVHJ5IG1hdGNoaW5nIG1vcmUgY29tcGxleCBleHByZXNzaW9u cyB0b28sIGlmIHRsaXN0IGhhcyBhbnkgKi8KLQlpZiAoY29udGV4dC0+c3VicGxhbl9pdGxpc3Qt Pmhhc19ub25fdmFycykKKwlpZiAoY29udGV4dC0+c3VicGxhbl9pdGxpc3QtPmhhc19ub25fdmFy cyB8fCAoY29udGV4dC0+c3VicGxhbl9pdGxpc3QtPmhhc19jb252X3dob2xlX3Jvd3MgJiYgaXNf Y29udmVydGVkX3dob2xlX3Jvd19yZWZlcmVuY2Uobm9kZSkpKQogCXsKIAkJbmV3dmFyID0gc2Vh cmNoX2luZGV4ZWRfdGxpc3RfZm9yX25vbl92YXIoKEV4cHIgKikgbm9kZSwKIAkJCQkJCQkJCQkJ CSAgY29udGV4dC0+c3VicGxhbl9pdGxpc3QsCkBAIC0zNjM5LDMgKzM2NTIsMzMgQEAgZXh0cmFj dF9xdWVyeV9kZXBlbmRlbmNpZXNfd2Fsa2VyKE5vZGUgKm5vZGUsIFBsYW5uZXJJbmZvICpjb250 ZXh0KQogCXJldHVybiBleHByZXNzaW9uX3RyZWVfd2Fsa2VyKG5vZGUsIGV4dHJhY3RfcXVlcnlf ZGVwZW5kZW5jaWVzX3dhbGtlciwKIAkJCQkJCQkJICAodm9pZCAqKSBjb250ZXh0KTsKIH0KKwor LyoKKyAqIGlzX2NvbnZlcnRlZF93aG9sZV9yb3dfcmVmZXJlbmNlCisgKiAgICAgICAgICAgICBJ ZiB0aGUgZ2l2ZW4gbm9kZSBpcyBhIENvbnZlcnRSb3d0eXBlRXhwciBlbmNhcHN1bGF0aW5nIGEg d2hvbGUtcm93CisgKiAgICAgICAgICAgICByZWZlcmVuY2UgYXMgaW1wbGljaXQgY2FzdCwgcmV0 dXJuIHRydWUuIE90aGVyd2lzZSByZXR1cm4gZmFsc2UuCisgKi8KK3N0YXRpYyBib29sCitpc19j b252ZXJ0ZWRfd2hvbGVfcm93X3JlZmVyZW5jZShOb2RlICpub2RlKQoreworCUNvbnZlcnRSb3d0 eXBlRXhwciAqY29udmV4cHI7CisKKwlpZiAoIW5vZGUgfHwgIUlzQShub2RlLCBDb252ZXJ0Um93 dHlwZUV4cHIpKQorCQlyZXR1cm4gZmFsc2U7CisKKwkvKiBUcmF2ZXJzZSBuZXN0ZWQgQ29udmVy dFJvd3R5cGVFeHByJ3MuICovCisJY29udmV4cHIgPSBjYXN0Tm9kZShDb252ZXJ0Um93dHlwZUV4 cHIsIG5vZGUpOworCXdoaWxlIChjb252ZXhwci0+Y29udmVydGZvcm1hdCA9PSBDT0VSQ0VfSU1Q TElDSVRfQ0FTVCAmJgorCQlJc0EoY29udmV4cHItPmFyZywgQ29udmVydFJvd3R5cGVFeHByKSkK KwkJY29udmV4cHIgPSBjYXN0Tm9kZShDb252ZXJ0Um93dHlwZUV4cHIsIGNvbnZleHByLT5hcmcp OworCisJaWYgKElzQShjb252ZXhwci0+YXJnLCBWYXIpKQorCXsKKwkJVmFyICAgICAgICAgICAg ICAgICp2YXIgPSBjYXN0Tm9kZShWYXIsIGNvbnZleHByLT5hcmcpOworCisJCWlmICh2YXItPnZh cmF0dG5vID09IDApCisJCQlyZXR1cm4gdHJ1ZTsKKwl9CisKKwlyZXR1cm4gZmFsc2U7Cit9Ci0t IAoyLjM0LjEKCg== --=_1b73054158934e47c139853525d00f6f--