Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1oclXc-0000C3-H6 for pgsql-hackers@arkaria.postgresql.org; Mon, 26 Sep 2022 10:40:48 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1oclXa-0007Fo-Ob for pgsql-hackers@arkaria.postgresql.org; Mon, 26 Sep 2022 10:40:46 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1oclXa-0007FZ-4D for pgsql-hackers@lists.postgresql.org; Mon, 26 Sep 2022 10:40:46 +0000 Received: from mail-wr1-x42b.google.com ([2a00:1450:4864:20::42b]) by makus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92) (envelope-from ) id 1oclXS-0007J9-KR for pgsql-hackers@lists.postgresql.org; Mon, 26 Sep 2022 10:40:45 +0000 Received: by mail-wr1-x42b.google.com with SMTP id t14so9517203wrx.8 for ; Mon, 26 Sep 2022 03:40:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=in-reply-to:from:references:cc:to:content-language:subject :user-agent:mime-version:date:message-id:from:to:cc:subject:date; bh=21bN/PsRMiw/dCwaAvLKS5mezCL5yZ0qSYP9iToi7WU=; b=jKVGa3Jr4HstP4jumsl0a7CpOR/+6KisNIhw7m1GAvgi/PvMTQHZCv5bnmcPfRC9FL 10ok2hXxp1psLEIzyzQHe5C1xsQed6F1fAKzXMIky22inBJKnXrnMzbr2B67UaHYod/y oIJ+QFuh/xCKrptQrubKjRSNS8ha9f48O6uX+gR4VSyrwC4ONR9BCPdYmsfzr4ArdAxD cHE/iII87p1pE/TgkA82apgKAN8yTIvE8/qtIQ810brRuwPXdjdnvoaRKmbUb/sfW5w3 jjg5yit1F0JS7/od7vuPLvv9IASCcMgdky20W7M1d0V+I+WrZR8GuRJO8TUfh1yNzHfn l3qg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=in-reply-to:from:references:cc:to:content-language:subject :user-agent:mime-version:date:message-id:x-gm-message-state:from:to :cc:subject:date; bh=21bN/PsRMiw/dCwaAvLKS5mezCL5yZ0qSYP9iToi7WU=; b=tgX/1+WJWThoGuKPfCAH1xfU1YQbBkd0W4CjSMhMwUe4FtWysLPZ+Ct2SXkC6DPJEy OHxUxfnK9ihD5JyuBQxAmdAqqhfdnyefvskXePfpedx2frDBkpNNJh38Yj7gKtToH60z YUvKw3mUc6QSju7xlTAJ9QIJIDgc/5g6a9py000jldq6Wx5PA4s6cBzB23+t3VHjKoaa m62g14YSYsI3zzr8PP9GiO6a30r4Lzh6oY1j6WT0OqzWA+3GoCIlLYvMxfDDVW6YLwYa 0S5uGxbTxMsjup4JDe4HYU3e41l3WUtTDVhT+BbIgARt893s/efSQTtbe04wBn/ZzNei dgxA== X-Gm-Message-State: ACrzQf38k7tvAlMj3Auib0nNpOQmHc1D01FzPveUEcCCB4+xoVJwASPF vt4/jUGD52SVuLdRPLeJge8= X-Google-Smtp-Source: AMsMyM7YeYXw48onEx+uRSWD31Sj5cAdfwBgGf7fl2zmgcn0FxLlzwDLWOg+Plk8dq+AKC0wfMEbcw== X-Received: by 2002:a5d:5942:0:b0:225:7425:4e39 with SMTP id e2-20020a5d5942000000b0022574254e39mr12506677wri.566.1664188836296; Mon, 26 Sep 2022 03:40:36 -0700 (PDT) Received: from [192.168.8.246] ([54.239.6.185]) by smtp.gmail.com with ESMTPSA id x13-20020adff0cd000000b002205cbc1c74sm13754328wro.101.2022.09.26.03.40.34 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Mon, 26 Sep 2022 03:40:35 -0700 (PDT) Content-Type: multipart/mixed; boundary="------------NFisVsJPDgUEzjnlhabnk50J" Message-ID: <4086e6f0-d954-4ceb-cfa0-88b622b1d1bc@gmail.com> Date: Mon, 26 Sep 2022 12:40:34 +0200 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:102.0) Gecko/20100101 Thunderbird/102.3.0 Subject: Re: Query Jumbling for CALL and SET utility statements Content-Language: en-US To: Fujii Masao , Julien Rouhaud Cc: Michael Paquier , Jeremy Schneider , PostgreSQL Hackers , Pavel Stehule , Andres Freund , "Imseih (AWS), Sami" References: <46ca04f9-1e37-c862-9a28-c5dffaee412f@amazon.com> <20220831190604.l2luuhj3xkau7dvk@awork3.anarazel.de> <09c04aba-7f12-e524-20f7-3f92c1479fdf@amazon.com> <9aee54f2-5cc1-5b64-1f73-6961932e7bd2@amazon.com> <20220908065012.l3bd2np7wj52cxco@jrouhaud> <20220908112919.2ytxpkitiw6lt2u6@jrouhaud> <37d32e91-4a08-afaf-a3a8-fd0578e4db50@oss.nttdata.com> <706ee610-4297-453b-f6f2-1e79161414f6@gmail.com> <6d0d8a57-0e9c-7fcb-5072-aae544dafa5c@gmail.com> <9b2133f6-7bf6-07c4-e896-7a8d9a629d56@oss.nttdata.com> From: "Drouvot, Bertrand" In-Reply-To: <9b2133f6-7bf6-07c4-e896-7a8d9a629d56@oss.nttdata.com> List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk This is a multi-part message in MIME format. --------------NFisVsJPDgUEzjnlhabnk50J Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit Hi, On 9/21/22 6:07 PM, Fujii Masao wrote: > > > On 2022/09/19 15:29, Drouvot, Bertrand wrote: >> Please find attached v6 taking care of the remarks mentioned above. > > Thanks for updating the patch! > > +SET pg_stat_statements.track_utility = TRUE; > + > +-- PL/pgSQL procedure and pg_stat_statements.track = all > +-- we drop and recreate the procedures to avoid any caching funnies > +SET pg_stat_statements.track_utility = FALSE; > > Could you tell me why track_utility is enabled just before it's disabled? Thanks for looking at the new version! No real reason, I removed those useless SET in the new V7 attached. > > Could you tell me what actually happens if we don't drop and > recreate the procedures? I'd like to know what "any caching funnies" are. Without the drop/recreate the procedure body does not appear normalized (while the CALL itself is) when switching from track = top to track = all. I copy-pasted this comment from the already existing "function" section in the pg_stat_statements.sql file. This comment has been introduced for the function section in commit 83f2061dd0. Note that the behavior would be the same for the function case (function body does not appear normalized without the drop/recreate). > > +SELECT pg_stat_statements_reset(); > +CALL MINUS_TWO(3); > +CALL MINUS_TWO(7); > +CALL SUM_TWO(3, 8); > +CALL SUM_TWO(7, 5); > + > +SELECT query, calls, rows FROM pg_stat_statements ORDER BY query > COLLATE "C"; > > This test set for the procedures is executed with the following > four conditions, respectively. Do we really need all of these tests? > > track = top, track_utility = true > track = top, track_utility = false > track = all, track_utility = true > track = all, track_utility = false Oh right, the track_utility = false cases have been added when we decided up-thread to force track CALL. But now that's probably not needed to test with track_utility = true. So I'm just keeping track_utility = off with track = top or all in the new V7 attached (like this is the case for the "function" section). > > +begin; > +prepare transaction 'tx1'; > +insert into test_tx values (1); > +commit prepared 'tx1'; > > The test set of 2PC commands is also executed with track_utility = on > and off, respectively. But why do we need to run that test when > track_utility = off? That's useless, thanks for pointing out. Removed in V7 attached. > > -    if (query->utilityStmt) > +    if (query->utilityStmt && !jstate) >      { >          if (pgss_track_utility && > !PGSS_HANDLED_UTILITY(query->utilityStmt)) > > "pgss_track_utility" should be > "pgss_track_utility || FORCE_TRACK_UTILITY(parsetree)" theoretically? Good catch! That's not needed (in practice) with the current code but that is "theoretically" needed indeed, let's add it in V7 attached (that's safer should the code change later on). Regards, -- Bertrand Drouvot PostgreSQL Contributors Team RDS Open Source Databases Amazon Web Services: https://aws.amazon.com --------------NFisVsJPDgUEzjnlhabnk50J Content-Type: text/plain; charset=UTF-8; name="v7-0001-JumbleQuery-on-Call-and-Set.patch" Content-Disposition: attachment; filename="v7-0001-JumbleQuery-on-Call-and-Set.patch" Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL2NvbnRyaWIvcGdfc3RhdF9zdGF0ZW1lbnRzL2V4cGVjdGVkL3BnX3N0 YXRfc3RhdGVtZW50cy5vdXQgYi9jb250cmliL3BnX3N0YXRfc3RhdGVtZW50cy9leHBlY3Rl ZC9wZ19zdGF0X3N0YXRlbWVudHMub3V0CmluZGV4IGZmMDE2NmZiOWQuLmY1ZmMyZjFmMzgg MTAwNjQ0Ci0tLSBhL2NvbnRyaWIvcGdfc3RhdF9zdGF0ZW1lbnRzL2V4cGVjdGVkL3BnX3N0 YXRfc3RhdGVtZW50cy5vdXQKKysrIGIvY29udHJpYi9wZ19zdGF0X3N0YXRlbWVudHMvZXhw ZWN0ZWQvcGdfc3RhdF9zdGF0ZW1lbnRzLm91dApAQCAtMjcyLDcgKzI3Miw3IEBAIEZST00g cGdfc3RhdF9zdGF0ZW1lbnRzIE9SREVSIEJZIHF1ZXJ5IENPTExBVEUgIkMiOwogIHdhbF9y ZWNvcmRzID4gJDIgYXMgd2FsX3JlY29yZHNfZ2VuZXJhdGVkLCAgICAgICAgICAgICAgICt8 ICAgICAgIHwgICAgICB8ICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAg ICAgICAgfCAKICB3YWxfcmVjb3JkcyA+PSByb3dzIGFzIHdhbF9yZWNvcmRzX2dlX3Jvd3Mg ICAgICAgICAgICAgICArfCAgICAgICB8ICAgICAgfCAgICAgICAgICAgICAgICAgICAgIHwg ICAgICAgICAgICAgICAgICAgICAgIHwgCiAgRlJPTSBwZ19zdGF0X3N0YXRlbWVudHMgT1JE RVIgQlkgcXVlcnkgQ09MTEFURSAiQyIgICAgICAgIHwgICAgICAgfCAgICAgIHwgICAgICAg ICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8IAotIFNFVCBwZ19zdGF0 X3N0YXRlbWVudHMudHJhY2tfdXRpbGl0eSA9IEZBTFNFICAgICAgICAgICAgICB8ICAgICAx IHwgICAgMCB8IGYgICAgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgICAgICAgICAg fCB0CisgU0VUIHBnX3N0YXRfc3RhdGVtZW50cy50cmFja191dGlsaXR5ID0gJDEgICAgICAg ICAgICAgICAgIHwgICAgIDEgfCAgICAwIHwgZiAgICAgICAgICAgICAgICAgICB8IGYgICAg ICAgICAgICAgICAgICAgICB8IHQKICBVUERBVEUgcGdzc190ZXN0IFNFVCBiID0gJDEgV0hF UkUgYSA+ICQyICAgICAgICAgICAgICAgICAgfCAgICAgMSB8ICAgIDMgfCB0ICAgICAgICAg ICAgICAgICAgIHwgdCAgICAgICAgICAgICAgICAgICAgIHwgdAogKDcgcm93cykKIApAQCAt NDIzLDYgKzQyMywxMTEgQEAgU0VMRUNUIHF1ZXJ5LCBjYWxscywgcm93cyBGUk9NIHBnX3N0 YXRfc3RhdGVtZW50cyBPUkRFUiBCWSBxdWVyeSBDT0xMQVRFICJDIjsKICBTRUxFQ1QgcXVl cnksIGNhbGxzLCByb3dzIEZST00gcGdfc3RhdF9zdGF0ZW1lbnRzIE9SREVSIEJZIHF1ZXJ5 IENPTExBVEUgIkMiIHwgICAgIDAgfCAgICAwCiAoNiByb3dzKQogCistLSBQTC9wZ1NRTCBw cm9jZWR1cmUgYW5kIHBnX3N0YXRfc3RhdGVtZW50cy50cmFjayA9IHRvcAorQ1JFQVRFIFBS T0NFRFVSRSBNSU5VU19UV08oaSBJTlRFR0VSKSBBUyAkJAorREVDTEFSRQorICByIElOVEVH RVI7CitCRUdJTgorICBTRUxFQ1QgKGkgLSAxIC0gMS4wKTo6SU5URUdFUiBJTlRPIHI7CitF TkQ7ICQkIExBTkdVQUdFIHBscGdzcWw7CitDUkVBVEUgUFJPQ0VEVVJFIFNVTV9UV08oaSBJ TlRFR0VSLCBqIElOVEVHRVIpIEFTICQkCitERUNMQVJFCisgIHIgSU5URUdFUjsKK0JFR0lO CisgIFNFTEVDVCAoaiArIGopOjpJTlRFR0VSIElOVE8gcjsKK0VORDsgJCQgTEFOR1VBR0Ug cGxwZ3NxbDsKK1NFVCBwZ19zdGF0X3N0YXRlbWVudHMudHJhY2sgPSAndG9wJzsKK1NFVCBw Z19zdGF0X3N0YXRlbWVudHMudHJhY2tfdXRpbGl0eSA9IEZBTFNFOworU0VMRUNUIHBnX3N0 YXRfc3RhdGVtZW50c19yZXNldCgpOworIHBnX3N0YXRfc3RhdGVtZW50c19yZXNldCAKKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK0NBTEwgTUlOVVNfVFdP KDMpOworQ0FMTCBNSU5VU19UV08oNyk7CitDQUxMIFNVTV9UV08oMywgOCk7CitDQUxMIFNV TV9UV08oNywgNSk7CitTRUxFQ1QgcXVlcnksIGNhbGxzLCByb3dzIEZST00gcGdfc3RhdF9z dGF0ZW1lbnRzIE9SREVSIEJZIHF1ZXJ5IENPTExBVEUgIkMiOworICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgcXVlcnkgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgfCBjYWxscyB8IHJvd3MgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLSstLS0tLS0KKyBDQUxMIE1JTlVTX1RXTygkMSkgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIDIgfCAgICAwCisg Q0FMTCBTVU1fVFdPKCQxLCAkMikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAyIHwgICAgMAorIFNFTEVDVCBwZ19zdGF0 X3N0YXRlbWVudHNfcmVzZXQoKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgfCAgICAgMSB8ICAgIDEKKyBTRUxFQ1QgcXVlcnksIGNhbGxzLCByb3dzIEZS T00gcGdfc3RhdF9zdGF0ZW1lbnRzIE9SREVSIEJZIHF1ZXJ5IENPTExBVEUgIkMiIHwgICAg IDAgfCAgICAwCisoNCByb3dzKQorCistLQorLS0gcGdfc3RhdF9zdGF0ZW1lbnRzLnRyYWNr ID0gYWxsCistLQorU0VUIHBnX3N0YXRfc3RhdGVtZW50cy50cmFjayA9ICdhbGwnOworU0VM RUNUIHBnX3N0YXRfc3RhdGVtZW50c19yZXNldCgpOworIHBnX3N0YXRfc3RhdGVtZW50c19y ZXNldCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKKy0tIFBM L3BnU1FMIHByb2NlZHVyZSBhbmQgcGdfc3RhdF9zdGF0ZW1lbnRzLnRyYWNrID0gYWxsCist LSB3ZSBkcm9wIGFuZCByZWNyZWF0ZSB0aGUgcHJvY2VkdXJlcyB0byBhdm9pZCBhbnkgY2Fj aGluZyBmdW5uaWVzCitEUk9QIFBST0NFRFVSRSBNSU5VU19UV08oSU5URUdFUik7CitEUk9Q IFBST0NFRFVSRSBTVU1fVFdPKElOVEVHRVIsIElOVEVHRVIpOworQ1JFQVRFIFBST0NFRFVS RSBNSU5VU19UV08oaSBJTlRFR0VSKSBBUyAkJAorREVDTEFSRQorICByIElOVEVHRVI7CitC RUdJTgorICBTRUxFQ1QgKGkgLSAxIC0gMS4wKTo6SU5URUdFUiBJTlRPIHI7CitFTkQ7ICQk IExBTkdVQUdFIHBscGdzcWw7CitDUkVBVEUgUFJPQ0VEVVJFIFNVTV9UV08oaSBJTlRFR0VS LCBqIElOVEVHRVIpIEFTICQkCitERUNMQVJFCisgIHIgSU5URUdFUjsKK0JFR0lOCisgIFNF TEVDVCAoaiArIGopOjpJTlRFR0VSIElOVE8gcjsKK0VORDsgJCQgTEFOR1VBR0UgcGxwZ3Nx bDsKK0NBTEwgTUlOVVNfVFdPKDMpOworQ0FMTCBNSU5VU19UV08oNyk7CitDQUxMIFNVTV9U V08oMywgOCk7CitDQUxMIFNVTV9UV08oNywgNSk7CitTRUxFQ1QgcXVlcnksIGNhbGxzLCBy b3dzIEZST00gcGdfc3RhdF9zdGF0ZW1lbnRzIE9SREVSIEJZIHF1ZXJ5IENPTExBVEUgIkMi OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcXVlcnkgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBjYWxscyB8IHJvd3MgCistLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLSstLS0tLS0KKyBDQUxMIE1JTlVTX1RXTygkMSkgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHwgICAgIDIgfCAgICAwCisgQ0FMTCBTVU1fVFdPKCQxLCAkMikgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAyIHwgICAg MAorIFNFTEVDVCAoaSAtICQyIC0gJDMpOjpJTlRFR0VSICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgMiB8ICAgIDIKKyBTRUxFQ1QgKGog KyBqKTo6SU5URUdFUiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHwgICAgIDIgfCAgICAyCisgU0VMRUNUIHBnX3N0YXRfc3RhdGVtZW50 c19yZXNldCgpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8 ICAgICAxIHwgICAgMQorIFNFTEVDVCBxdWVyeSwgY2FsbHMsIHJvd3MgRlJPTSBwZ19zdGF0 X3N0YXRlbWVudHMgT1JERVIgQlkgcXVlcnkgQ09MTEFURSAiQyIgfCAgICAgMCB8ICAgIDAK Kyg2IHJvd3MpCisKK1NFVCBwZ19zdGF0X3N0YXRlbWVudHMudHJhY2tfdXRpbGl0eSA9IFRS VUU7CistLSBTRVQKK1NFTEVDVCBwZ19zdGF0X3N0YXRlbWVudHNfcmVzZXQoKTsKKyBwZ19z dGF0X3N0YXRlbWVudHNfcmVzZXQgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAor KDEgcm93KQorCitzZXQgZW5hYmxlX3NlcXNjYW49ZmFsc2U7CitzZXQgZW5hYmxlX3NlcXNj YW49dHJ1ZTsKK3NldCBzZXFfcGFnZV9jb3N0PTIuMDsKK3NldCBzZXFfcGFnZV9jb3N0PTEu MDsKK3NldCBlbmFibGVfc2Vxc2NhbiB0byBkZWZhdWx0Oworc2V0IHNlcV9wYWdlX2Nvc3Qg dG8gZGVmYXVsdDsKK3Jlc2V0IHNlcV9wYWdlX2Nvc3Q7CityZXNldCBlbmFibGVfc2Vxc2Nh bjsKK1NFTEVDVCBxdWVyeSwgY2FsbHMsIHJvd3MgRlJPTSBwZ19zdGF0X3N0YXRlbWVudHMg T1JERVIgQlkgcXVlcnkgQ09MTEFURSAiQyI7CisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBxdWVyeSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8 IGNhbGxzIHwgcm93cyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKy0tLS0t LQorIFNFTEVDVCBwZ19zdGF0X3N0YXRlbWVudHNfcmVzZXQoKSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgMSB8ICAgIDEKKyBTRUxFQ1QgcXVl cnksIGNhbGxzLCByb3dzIEZST00gcGdfc3RhdF9zdGF0ZW1lbnRzIE9SREVSIEJZIHF1ZXJ5 IENPTExBVEUgIkMiIHwgICAgIDAgfCAgICAwCisgcmVzZXQgZW5hYmxlX3NlcXNjYW4gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8 ICAgICAxIHwgICAgMAorIHJlc2V0IHNlcV9wYWdlX2Nvc3QgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgMSB8ICAgIDAK KyBzZXQgZW5hYmxlX3NlcXNjYW4gdG8gZGVmYXVsdCAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIDEgfCAgICAwCisgc2V0IGVuYWJsZV9z ZXFzY2FuPSQxICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB8ICAgICAyIHwgICAgMAorIHNldCBzZXFfcGFnZV9jb3N0IHRvIGRlZmF1 bHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAg ICAgMSB8ICAgIDAKKyBzZXQgc2VxX3BhZ2VfY29zdD0kMSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIDIgfCAgICAwCiso OCByb3dzKQorCitTRVQgcGdfc3RhdF9zdGF0ZW1lbnRzLnRyYWNrX3V0aWxpdHkgPSBGQUxT RTsKIC0tCiAtLSBxdWVyaWVzIHdpdGggbG9ja2luZyBjbGF1c2VzCiAtLQpAQCAtNTUzLDEx ICs2NTgsNDkgQEAgU0VMRUNUIHF1ZXJ5LCBjYWxscywgcm93cyBGUk9NIHBnX3N0YXRfc3Rh dGVtZW50cyBPUkRFUiBCWSBxdWVyeSBDT0xMQVRFICJDIjsKICBTRUxFQ1QgcXVlcnksIGNh bGxzLCByb3dzIEZST00gcGdfc3RhdF9zdGF0ZW1lbnRzIE9SREVSIEJZIHF1ZXJ5IENPTExB VEUgIkMiIHwgICAgIDAgfCAgICAwCiAoOSByb3dzKQogCistLSAyUEMKK1NFTEVDVCBwZ19z dGF0X3N0YXRlbWVudHNfcmVzZXQoKTsKKyBwZ19zdGF0X3N0YXRlbWVudHNfcmVzZXQgCist LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitjcmVhdGUgdGFibGUg dGVzdF90eCAoYSBpbnQpOworYmVnaW47CitwcmVwYXJlIHRyYW5zYWN0aW9uICd0eDEnOwor aW5zZXJ0IGludG8gdGVzdF90eCB2YWx1ZXMgKDEpOworY29tbWl0IHByZXBhcmVkICd0eDEn OworYmVnaW47CitwcmVwYXJlIHRyYW5zYWN0aW9uICd0eDInOworaW5zZXJ0IGludG8gdGVz dF90eCB2YWx1ZXMgKDIpOworY29tbWl0IHByZXBhcmVkICd0eDInOworYmVnaW47CitwcmVw YXJlIHRyYW5zYWN0aW9uICd0eDMnOworaW5zZXJ0IGludG8gdGVzdF90eCB2YWx1ZXMgKDMp Oworcm9sbGJhY2sgcHJlcGFyZWQgJ3R4Myc7CitiZWdpbjsKK3ByZXBhcmUgdHJhbnNhY3Rp b24gJ3R4NCc7CitpbnNlcnQgaW50byB0ZXN0X3R4IHZhbHVlcyAoNCk7Cityb2xsYmFjayBw cmVwYXJlZCAndHg0JzsKK1NFTEVDVCBxdWVyeSwgY2FsbHMsIHJvd3MgRlJPTSBwZ19zdGF0 X3N0YXRlbWVudHMgT1JERVIgQlkgcXVlcnkgQ09MTEFURSAiQyI7CisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBxdWVyeSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB8IGNhbGxzIHwgcm93cyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tKy0tLS0tLQorIFNFTEVDVCBwZ19zdGF0X3N0YXRlbWVudHNfcmVzZXQoKSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgMSB8ICAgIDEK KyBTRUxFQ1QgcXVlcnksIGNhbGxzLCByb3dzIEZST00gcGdfc3RhdF9zdGF0ZW1lbnRzIE9S REVSIEJZIHF1ZXJ5IENPTExBVEUgIkMiIHwgICAgIDAgfCAgICAwCisgYmVnaW4gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB8ICAgICA0IHwgICAgMAorIGNvbW1pdCBwcmVwYXJlZCAkMSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAg ICAgMiB8ICAgIDAKKyBjcmVhdGUgdGFibGUgdGVzdF90eCAoYSBpbnQpICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIDEgfCAgICAwCisg aW5zZXJ0IGludG8gdGVzdF90eCB2YWx1ZXMgKCQxKSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB8ICAgICA0IHwgICAgNAorIHByZXBhcmUgdHJhbnNh Y3Rpb24gJDEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgfCAgICAgNCB8ICAgIDAKKyByb2xsYmFjayBwcmVwYXJlZCAkMSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAg IDIgfCAgICAwCisoOCByb3dzKQorCiAtLQogLS0gVHJhY2sgdGhlIHRvdGFsIG51bWJlciBv ZiByb3dzIHJldHJpZXZlZCBvciBhZmZlY3RlZCBieSB0aGUgdXRpbGl0eQogLS0gY29tbWFu ZHMgb2YgQ09QWSwgRkVUQ0gsIENSRUFURSBUQUJMRSBBUywgQ1JFQVRFIE1BVEVSSUFMSVpF RCBWSUVXLAogLS0gUkVGUkVTSCBNQVRFUklBTElaRUQgVklFVyBhbmQgU0VMRUNUIElOVE8K IC0tCitTRVQgcGdfc3RhdF9zdGF0ZW1lbnRzLnRyYWNrX3V0aWxpdHkgPSBUUlVFOwogU0VM RUNUIHBnX3N0YXRfc3RhdGVtZW50c19yZXNldCgpOwogIHBnX3N0YXRfc3RhdGVtZW50c19y ZXNldCAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9jb250cmli L3BnX3N0YXRfc3RhdGVtZW50cy9wZ19zdGF0X3N0YXRlbWVudHMuYyBiL2NvbnRyaWIvcGdf c3RhdF9zdGF0ZW1lbnRzL3BnX3N0YXRfc3RhdGVtZW50cy5jCmluZGV4IGJhODY4ZjBkZTku Ljg5MjlmMGQzMTAgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvcGdfc3RhdF9zdGF0ZW1lbnRzL3Bn X3N0YXRfc3RhdGVtZW50cy5jCisrKyBiL2NvbnRyaWIvcGdfc3RhdF9zdGF0ZW1lbnRzL3Bn X3N0YXRfc3RhdGVtZW50cy5jCkBAIC0xMDYsNiArMTA2LDExIEBAIHN0YXRpYyBjb25zdCB1 aW50MzIgUEdTU19QR19NQUpPUl9WRVJTSU9OID0gUEdfVkVSU0lPTl9OVU0gLyAxMDA7CiAj ZGVmaW5lIFBHU1NfSEFORExFRF9VVElMSVRZKG4pCQkoIUlzQShuLCBFeGVjdXRlU3RtdCkg JiYgXAogCQkJCQkJCQkJIUlzQShuLCBQcmVwYXJlU3RtdCkgJiYgXAogCQkJCQkJCQkJIUlz QShuLCBEZWFsbG9jYXRlU3RtdCkpCisvKgorICogRm9yY2UgdHJhY2sgdGhvc2UgdXRpbGl0 eSBzdGF0ZW1lbnRzCisgKiB3aGF0ZXZlciB0aGUgdmFsdWUgb2YgcGdzc190cmFja191dGls aXR5IGlzLgorICovCisjZGVmaW5lIEZPUkNFX1RSQUNLX1VUSUxJVFkobikJKElzQShuLCBD YWxsU3RtdCkpCiAKIC8qCiAgKiBFeHRlbnNpb24gdmVyc2lvbiBudW1iZXIsIGZvciBzdXBw b3J0aW5nIG9sZGVyIGV4dGVuc2lvbiB2ZXJzaW9ucycgb2JqZWN0cwpAQCAtODMyLDkgKzgz NywxMCBAQCBwZ3NzX3Bvc3RfcGFyc2VfYW5hbHl6ZShQYXJzZVN0YXRlICpwc3RhdGUsIFF1 ZXJ5ICpxdWVyeSwgSnVtYmxlU3RhdGUgKmpzdGF0ZSkKIAkgKiBpbmhlcml0IGZyb20gdGhl IHVuZGVybHlpbmcgc3RhdGVtZW50J3Mgb25lIChleGNlcHQgREVBTExPQ0FURSB3aGljaCBp cwogCSAqIGVudGlyZWx5IHVudHJhY2tlZCkuCiAJICovCi0JaWYgKHF1ZXJ5LT51dGlsaXR5 U3RtdCkKKwlpZiAocXVlcnktPnV0aWxpdHlTdG10ICYmICFqc3RhdGUpCiAJewotCQlpZiAo cGdzc190cmFja191dGlsaXR5ICYmICFQR1NTX0hBTkRMRURfVVRJTElUWShxdWVyeS0+dXRp bGl0eVN0bXQpKQorCQlpZiAoKHBnc3NfdHJhY2tfdXRpbGl0eSB8fCBGT1JDRV9UUkFDS19V VElMSVRZKHF1ZXJ5LT51dGlsaXR5U3RtdCkpICYmCisJCQkhUEdTU19IQU5ETEVEX1VUSUxJ VFkocXVlcnktPnV0aWxpdHlTdG10KSkKIAkJCXF1ZXJ5LT5xdWVyeUlkID0gVUlOVDY0Q09O U1QoMCk7CiAJCXJldHVybjsKIAl9CkBAIC0xMDk3LDcgKzExMDMsOCBAQCBwZ3NzX1Byb2Nl c3NVdGlsaXR5KFBsYW5uZWRTdG10ICpwc3RtdCwgY29uc3QgY2hhciAqcXVlcnlTdHJpbmcs CiAJICogdGhhdCB1c2VyIGNvbmZpZ3VyZWQgYW5vdGhlciBleHRlbnNpb24gdG8gaGFuZGxl IHV0aWxpdHkgc3RhdGVtZW50cwogCSAqIG9ubHkuCiAJICovCi0JaWYgKHBnc3NfZW5hYmxl ZChleGVjX25lc3RlZF9sZXZlbCkgJiYgcGdzc190cmFja191dGlsaXR5KQorCWlmIChwZ3Nz X2VuYWJsZWQoZXhlY19uZXN0ZWRfbGV2ZWwpICYmCisJCShwZ3NzX3RyYWNrX3V0aWxpdHkg fHwgRk9SQ0VfVFJBQ0tfVVRJTElUWShwYXJzZXRyZWUpKSkKIAkJcHN0bXQtPnF1ZXJ5SWQg PSBVSU5UNjRDT05TVCgwKTsKIAogCS8qCkBAIC0xMTE0LDcgKzExMjEsOCBAQCBwZ3NzX1By b2Nlc3NVdGlsaXR5KFBsYW5uZWRTdG10ICpwc3RtdCwgY29uc3QgY2hhciAqcXVlcnlTdHJp bmcsCiAJICoKIAkgKiBMaWtld2lzZSwgd2UgZG9uJ3QgdHJhY2sgZXhlY3V0aW9uIG9mIERF QUxMT0NBVEUuCiAJICovCi0JaWYgKHBnc3NfdHJhY2tfdXRpbGl0eSAmJiBwZ3NzX2VuYWJs ZWQoZXhlY19uZXN0ZWRfbGV2ZWwpICYmCisJaWYgKChwZ3NzX3RyYWNrX3V0aWxpdHkgfHwg Rk9SQ0VfVFJBQ0tfVVRJTElUWShwYXJzZXRyZWUpKSAmJgorCQlwZ3NzX2VuYWJsZWQoZXhl Y19uZXN0ZWRfbGV2ZWwpICYmCiAJCVBHU1NfSEFORExFRF9VVElMSVRZKHBhcnNldHJlZSkp CiAJewogCQlpbnN0cl90aW1lCXN0YXJ0OwpkaWZmIC0tZ2l0IGEvY29udHJpYi9wZ19zdGF0 X3N0YXRlbWVudHMvc3FsL3BnX3N0YXRfc3RhdGVtZW50cy5zcWwgYi9jb250cmliL3BnX3N0 YXRfc3RhdGVtZW50cy9zcWwvcGdfc3RhdF9zdGF0ZW1lbnRzLnNxbAppbmRleCBhMDFmMTgz NzI3Li44OTczMTM4ZmEwIDEwMDY0NAotLS0gYS9jb250cmliL3BnX3N0YXRfc3RhdGVtZW50 cy9zcWwvcGdfc3RhdF9zdGF0ZW1lbnRzLnNxbAorKysgYi9jb250cmliL3BnX3N0YXRfc3Rh dGVtZW50cy9zcWwvcGdfc3RhdF9zdGF0ZW1lbnRzLnNxbApAQCAtMjAxLDYgKzIwMSw4MSBA QCBTRUxFQ1QgUExVU19PTkUoMSk7CiAKIFNFTEVDVCBxdWVyeSwgY2FsbHMsIHJvd3MgRlJP TSBwZ19zdGF0X3N0YXRlbWVudHMgT1JERVIgQlkgcXVlcnkgQ09MTEFURSAiQyI7CiAKKy0t IFBML3BnU1FMIHByb2NlZHVyZSBhbmQgcGdfc3RhdF9zdGF0ZW1lbnRzLnRyYWNrID0gdG9w CitDUkVBVEUgUFJPQ0VEVVJFIE1JTlVTX1RXTyhpIElOVEVHRVIpIEFTICQkCitERUNMQVJF CisgIHIgSU5URUdFUjsKK0JFR0lOCisgIFNFTEVDVCAoaSAtIDEgLSAxLjApOjpJTlRFR0VS IElOVE8gcjsKK0VORDsgJCQgTEFOR1VBR0UgcGxwZ3NxbDsKKworQ1JFQVRFIFBST0NFRFVS RSBTVU1fVFdPKGkgSU5URUdFUiwgaiBJTlRFR0VSKSBBUyAkJAorREVDTEFSRQorICByIElO VEVHRVI7CitCRUdJTgorICBTRUxFQ1QgKGogKyBqKTo6SU5URUdFUiBJTlRPIHI7CitFTkQ7 ICQkIExBTkdVQUdFIHBscGdzcWw7CisKK1NFVCBwZ19zdGF0X3N0YXRlbWVudHMudHJhY2sg PSAndG9wJzsKK1NFVCBwZ19zdGF0X3N0YXRlbWVudHMudHJhY2tfdXRpbGl0eSA9IEZBTFNF OworU0VMRUNUIHBnX3N0YXRfc3RhdGVtZW50c19yZXNldCgpOworQ0FMTCBNSU5VU19UV08o Myk7CitDQUxMIE1JTlVTX1RXTyg3KTsKK0NBTEwgU1VNX1RXTygzLCA4KTsKK0NBTEwgU1VN X1RXTyg3LCA1KTsKKworU0VMRUNUIHF1ZXJ5LCBjYWxscywgcm93cyBGUk9NIHBnX3N0YXRf c3RhdGVtZW50cyBPUkRFUiBCWSBxdWVyeSBDT0xMQVRFICJDIjsKKworLS0KKy0tIHBnX3N0 YXRfc3RhdGVtZW50cy50cmFjayA9IGFsbAorLS0KK1NFVCBwZ19zdGF0X3N0YXRlbWVudHMu dHJhY2sgPSAnYWxsJzsKK1NFTEVDVCBwZ19zdGF0X3N0YXRlbWVudHNfcmVzZXQoKTsKKwor LS0gUEwvcGdTUUwgcHJvY2VkdXJlIGFuZCBwZ19zdGF0X3N0YXRlbWVudHMudHJhY2sgPSBh bGwKKy0tIHdlIGRyb3AgYW5kIHJlY3JlYXRlIHRoZSBwcm9jZWR1cmVzIHRvIGF2b2lkIGFu eSBjYWNoaW5nIGZ1bm5pZXMKKworRFJPUCBQUk9DRURVUkUgTUlOVVNfVFdPKElOVEVHRVIp OworRFJPUCBQUk9DRURVUkUgU1VNX1RXTyhJTlRFR0VSLCBJTlRFR0VSKTsKKworQ1JFQVRF IFBST0NFRFVSRSBNSU5VU19UV08oaSBJTlRFR0VSKSBBUyAkJAorREVDTEFSRQorICByIElO VEVHRVI7CitCRUdJTgorICBTRUxFQ1QgKGkgLSAxIC0gMS4wKTo6SU5URUdFUiBJTlRPIHI7 CitFTkQ7ICQkIExBTkdVQUdFIHBscGdzcWw7CisKK0NSRUFURSBQUk9DRURVUkUgU1VNX1RX TyhpIElOVEVHRVIsIGogSU5URUdFUikgQVMgJCQKK0RFQ0xBUkUKKyAgciBJTlRFR0VSOwor QkVHSU4KKyAgU0VMRUNUIChqICsgaik6OklOVEVHRVIgSU5UTyByOworRU5EOyAkJCBMQU5H VUFHRSBwbHBnc3FsOworCitDQUxMIE1JTlVTX1RXTygzKTsKK0NBTEwgTUlOVVNfVFdPKDcp OworQ0FMTCBTVU1fVFdPKDMsIDgpOworQ0FMTCBTVU1fVFdPKDcsIDUpOworCitTRUxFQ1Qg cXVlcnksIGNhbGxzLCByb3dzIEZST00gcGdfc3RhdF9zdGF0ZW1lbnRzIE9SREVSIEJZIHF1 ZXJ5IENPTExBVEUgIkMiOworCitTRVQgcGdfc3RhdF9zdGF0ZW1lbnRzLnRyYWNrX3V0aWxp dHkgPSBUUlVFOworCistLSBTRVQKK1NFTEVDVCBwZ19zdGF0X3N0YXRlbWVudHNfcmVzZXQo KTsKK3NldCBlbmFibGVfc2Vxc2Nhbj1mYWxzZTsKK3NldCBlbmFibGVfc2Vxc2Nhbj10cnVl Oworc2V0IHNlcV9wYWdlX2Nvc3Q9Mi4wOworc2V0IHNlcV9wYWdlX2Nvc3Q9MS4wOworc2V0 IGVuYWJsZV9zZXFzY2FuIHRvIGRlZmF1bHQ7CitzZXQgc2VxX3BhZ2VfY29zdCB0byBkZWZh dWx0OworcmVzZXQgc2VxX3BhZ2VfY29zdDsKK3Jlc2V0IGVuYWJsZV9zZXFzY2FuOworCitT RUxFQ1QgcXVlcnksIGNhbGxzLCByb3dzIEZST00gcGdfc3RhdF9zdGF0ZW1lbnRzIE9SREVS IEJZIHF1ZXJ5IENPTExBVEUgIkMiOworCitTRVQgcGdfc3RhdF9zdGF0ZW1lbnRzLnRyYWNr X3V0aWxpdHkgPSBGQUxTRTsKKwogLS0KIC0tIHF1ZXJpZXMgd2l0aCBsb2NraW5nIGNsYXVz ZXMKIC0tCkBAIC0yNTAsMTEgKzMyNSwzOCBAQCBEUk9QIEZVTkNUSU9OIFBMVVNfVFdPKElO VEVHRVIpOwogCiBTRUxFQ1QgcXVlcnksIGNhbGxzLCByb3dzIEZST00gcGdfc3RhdF9zdGF0 ZW1lbnRzIE9SREVSIEJZIHF1ZXJ5IENPTExBVEUgIkMiOwogCistLSAyUEMKK1NFTEVDVCBw Z19zdGF0X3N0YXRlbWVudHNfcmVzZXQoKTsKKworY3JlYXRlIHRhYmxlIHRlc3RfdHggKGEg aW50KTsKK2JlZ2luOworcHJlcGFyZSB0cmFuc2FjdGlvbiAndHgxJzsKK2luc2VydCBpbnRv IHRlc3RfdHggdmFsdWVzICgxKTsKK2NvbW1pdCBwcmVwYXJlZCAndHgxJzsKKworYmVnaW47 CitwcmVwYXJlIHRyYW5zYWN0aW9uICd0eDInOworaW5zZXJ0IGludG8gdGVzdF90eCB2YWx1 ZXMgKDIpOworY29tbWl0IHByZXBhcmVkICd0eDInOworCitiZWdpbjsKK3ByZXBhcmUgdHJh bnNhY3Rpb24gJ3R4Myc7CitpbnNlcnQgaW50byB0ZXN0X3R4IHZhbHVlcyAoMyk7Cityb2xs YmFjayBwcmVwYXJlZCAndHgzJzsKKworYmVnaW47CitwcmVwYXJlIHRyYW5zYWN0aW9uICd0 eDQnOworaW5zZXJ0IGludG8gdGVzdF90eCB2YWx1ZXMgKDQpOworcm9sbGJhY2sgcHJlcGFy ZWQgJ3R4NCc7CisKK1NFTEVDVCBxdWVyeSwgY2FsbHMsIHJvd3MgRlJPTSBwZ19zdGF0X3N0 YXRlbWVudHMgT1JERVIgQlkgcXVlcnkgQ09MTEFURSAiQyI7CisKIC0tCiAtLSBUcmFjayB0 aGUgdG90YWwgbnVtYmVyIG9mIHJvd3MgcmV0cmlldmVkIG9yIGFmZmVjdGVkIGJ5IHRoZSB1 dGlsaXR5CiAtLSBjb21tYW5kcyBvZiBDT1BZLCBGRVRDSCwgQ1JFQVRFIFRBQkxFIEFTLCBD UkVBVEUgTUFURVJJQUxJWkVEIFZJRVcsCiAtLSBSRUZSRVNIIE1BVEVSSUFMSVpFRCBWSUVX IGFuZCBTRUxFQ1QgSU5UTwogLS0KK1NFVCBwZ19zdGF0X3N0YXRlbWVudHMudHJhY2tfdXRp bGl0eSA9IFRSVUU7CiBTRUxFQ1QgcGdfc3RhdF9zdGF0ZW1lbnRzX3Jlc2V0KCk7CiAKIENS RUFURSBUQUJMRSBwZ3NzX2N0YXMgQVMgU0VMRUNUIGEsICdjdGFzJyBiIEZST00gZ2VuZXJh dGVfc2VyaWVzKDEsIDEwKSBhOwpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3Bnc3RhdHN0 YXRlbWVudHMuc2dtbCBiL2RvYy9zcmMvc2dtbC9wZ3N0YXRzdGF0ZW1lbnRzLnNnbWwKaW5k ZXggZWNmNmNkNmJmMy4uZDE4ZjM2MzJlOSAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3Bn c3RhdHN0YXRlbWVudHMuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcGdzdGF0c3RhdGVtZW50 cy5zZ21sCkBAIC00ODcsMTMgKzQ4NywxNSBAQAogCiAgIDxwYXJhPgogICAgUGxhbm5hYmxl IHF1ZXJpZXMgKHRoYXQgaXMsIDxjb21tYW5kPlNFTEVDVDwvY29tbWFuZD4sIDxjb21tYW5k PklOU0VSVDwvY29tbWFuZD4sCi0gICA8Y29tbWFuZD5VUERBVEU8L2NvbW1hbmQ+LCBhbmQg PGNvbW1hbmQ+REVMRVRFPC9jb21tYW5kPikgYXJlIGNvbWJpbmVkIGludG8gYSBzaW5nbGUK LSAgIDxzdHJ1Y3RuYW1lPnBnX3N0YXRfc3RhdGVtZW50czwvc3RydWN0bmFtZT4gZW50cnkg d2hlbmV2ZXIgdGhleSBoYXZlIGlkZW50aWNhbCBxdWVyeQotICAgc3RydWN0dXJlcyBhY2Nv cmRpbmcgdG8gYW4gaW50ZXJuYWwgaGFzaCBjYWxjdWxhdGlvbi4gIFR5cGljYWxseSwgdHdv Ci0gICBxdWVyaWVzIHdpbGwgYmUgY29uc2lkZXJlZCB0aGUgc2FtZSBmb3IgdGhpcyBwdXJw b3NlIGlmIHRoZXkgYXJlCi0gICBzZW1hbnRpY2FsbHkgZXF1aXZhbGVudCBleGNlcHQgZm9y IHRoZSB2YWx1ZXMgb2YgbGl0ZXJhbCBjb25zdGFudHMKLSAgIGFwcGVhcmluZyBpbiB0aGUg cXVlcnkuICBVdGlsaXR5IGNvbW1hbmRzICh0aGF0IGlzLCBhbGwgb3RoZXIgY29tbWFuZHMp Ci0gICBhcmUgY29tcGFyZWQgc3RyaWN0bHkgb24gdGhlIGJhc2lzIG9mIHRoZWlyIHRleHR1 YWwgcXVlcnkgc3RyaW5ncywgaG93ZXZlci4KKyAgIDxjb21tYW5kPlVQREFURTwvY29tbWFu ZD4sIGFuZCA8Y29tbWFuZD5ERUxFVEU8L2NvbW1hbmQ+KSBhcyB3ZWxsIGFzCisgICA8Y29t bWFuZD5DQUxMPC9jb21tYW5kPiwgPGNvbW1hbmQ+U0VUPC9jb21tYW5kPiwgPGNvbW1hbmQ+ UFJFUEFSRSBUUkFOU0FDVElPTjwvY29tbWFuZD4sCisgICA8Y29tbWFuZD5DT01NSVQgUFJF UEFSRUQ8L2NvbW1hbmQ+IGFuZCA8Y29tbWFuZD5ST0xMQkFDSyBQUkVQQVJFRDwvY29tbWFu ZD4KKyAgIGFyZSBjb21iaW5lZCBpbnRvIGEgc2luZ2xlIDxzdHJ1Y3RuYW1lPnBnX3N0YXRf c3RhdGVtZW50czwvc3RydWN0bmFtZT4gZW50cnkKKyAgIHdoZW5ldmVyIHRoZXkgaGF2ZSBp ZGVudGljYWwgcXVlcnkgc3RydWN0dXJlcyBhY2NvcmRpbmcgdG8gYW4gaW50ZXJuYWwgaGFz aCBjYWxjdWxhdGlvbi4KKyAgIFR5cGljYWxseSwgdHdvIHF1ZXJpZXMgd2lsbCBiZSBjb25z aWRlcmVkIHRoZSBzYW1lIGZvciB0aGlzIHB1cnBvc2UgaWYgdGhleSBhcmUKKyAgIHNlbWFu dGljYWxseSBlcXVpdmFsZW50IGV4Y2VwdCBmb3IgdGhlIHZhbHVlcyBvZiBsaXRlcmFsIGNv bnN0YW50cyBhcHBlYXJpbmcKKyAgIGluIHRoZSBjb21tYW5kLiBBbGwgb3RoZXIgY29tbWFu ZHMgYXJlIGNvbXBhcmVkIHN0cmljdGx5IG9uIHRoZSBiYXNpcworICAgb2YgdGhlaXIgdGV4 dHVhbCBxdWVyeSBzdHJpbmdzLCBob3dldmVyLgogICA8L3BhcmE+CiAKICAgPG5vdGU+CkBA IC03ODEsOSArNzgzLDkgQEAKICAgICA8bGlzdGl0ZW0+CiAgICAgIDxwYXJhPgogICAgICAg PHZhcm5hbWU+cGdfc3RhdF9zdGF0ZW1lbnRzLnRyYWNrX3V0aWxpdHk8L3Zhcm5hbWU+IGNv bnRyb2xzIHdoZXRoZXIKLSAgICAgIHV0aWxpdHkgY29tbWFuZHMgYXJlIHRyYWNrZWQgYnkg dGhlIG1vZHVsZS4gIFV0aWxpdHkgY29tbWFuZHMgYXJlCisgICAgICB1dGlsaXR5IGNvbW1h bmRzIGFyZSB0cmFja2VkIGJ5IHRoZSBtb2R1bGUuIFRyYWNrZWQgdXRpbGl0eSBjb21tYW5k cyBhcmUKICAgICAgIGFsbCB0aG9zZSBvdGhlciB0aGFuIDxjb21tYW5kPlNFTEVDVDwvY29t bWFuZD4sIDxjb21tYW5kPklOU0VSVDwvY29tbWFuZD4sCi0gICAgICA8Y29tbWFuZD5VUERB VEU8L2NvbW1hbmQ+IGFuZCA8Y29tbWFuZD5ERUxFVEU8L2NvbW1hbmQ+LgorICAgICAgPGNv bW1hbmQ+VVBEQVRFPC9jb21tYW5kPiwgPGNvbW1hbmQ+REVMRVRFPC9jb21tYW5kPiBhbmQg PGNvbW1hbmQ+Q0FMTDwvY29tbWFuZD4uCiAgICAgICBUaGUgZGVmYXVsdCB2YWx1ZSBpcyA8 bGl0ZXJhbD5vbjwvbGl0ZXJhbD4uCiAgICAgICBPbmx5IHN1cGVydXNlcnMgY2FuIGNoYW5n ZSB0aGlzIHNldHRpbmcuCiAgICAgIDwvcGFyYT4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L3BhcnNlci9ncmFtLnkgYi9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55CmluZGV4IDBkOGQy OTI4NTAuLjk0OTE5NGM3YzYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFt LnkKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueQpAQCAtMTA4OTAsNiArMTA4OTAs NyBAQCBUcmFuc2FjdGlvblN0bXQ6CiAKIAkJCQkJbi0+a2luZCA9IFRSQU5TX1NUTVRfUFJF UEFSRTsKIAkJCQkJbi0+Z2lkID0gJDM7CisJCQkJCW4tPmdpZF9sb2NhdGlvbiA9IEAzOwog CQkJCQkkJCA9IChOb2RlICopIG47CiAJCQkJfQogCQkJfCBDT01NSVQgUFJFUEFSRUQgU2Nv bnN0CkBAIC0xMDg5OCw2ICsxMDg5OSw3IEBAIFRyYW5zYWN0aW9uU3RtdDoKIAogCQkJCQlu LT5raW5kID0gVFJBTlNfU1RNVF9DT01NSVRfUFJFUEFSRUQ7CiAJCQkJCW4tPmdpZCA9ICQz OworCQkJCQluLT5naWRfbG9jYXRpb24gPSBAMzsKIAkJCQkJJCQgPSAoTm9kZSAqKSBuOwog CQkJCX0KIAkJCXwgUk9MTEJBQ0sgUFJFUEFSRUQgU2NvbnN0CkBAIC0xMDkwNiw2ICsxMDkw OCw3IEBAIFRyYW5zYWN0aW9uU3RtdDoKIAogCQkJCQluLT5raW5kID0gVFJBTlNfU1RNVF9S T0xMQkFDS19QUkVQQVJFRDsKIAkJCQkJbi0+Z2lkID0gJDM7CisJCQkJCW4tPmdpZF9sb2Nh dGlvbiA9IEAzOwogCQkJCQkkJCA9IChOb2RlICopIG47CiAJCQkJfQogCQk7CmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC91dGlscy9taXNjL3F1ZXJ5anVtYmxlLmMgYi9zcmMvYmFja2Vu ZC91dGlscy9taXNjL3F1ZXJ5anVtYmxlLmMKaW5kZXggNmU3NWFjZGEyNy4uZGZjZWY3YTQx NCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9xdWVyeWp1bWJsZS5jCisr KyBiL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvcXVlcnlqdW1ibGUuYwpAQCAtMTA1LDcgKzEw NSw3IEBAIEp1bWJsZVF1ZXJ5KFF1ZXJ5ICpxdWVyeSwgY29uc3QgY2hhciAqcXVlcnl0ZXh0 KQogCiAJQXNzZXJ0KElzUXVlcnlJZEVuYWJsZWQoKSk7CiAKLQlpZiAocXVlcnktPnV0aWxp dHlTdG10KQorCWlmIChxdWVyeS0+dXRpbGl0eVN0bXQgJiYgIUlzSnVtYmxlVXRpbGl0eUFs bG93ZWQocXVlcnktPnV0aWxpdHlTdG10KSkKIAl7CiAJCXF1ZXJ5LT5xdWVyeUlkID0gY29t cHV0ZV91dGlsaXR5X3F1ZXJ5X2lkKHF1ZXJ5dGV4dCwKIAkJCQkJCQkJCQkJCSAgcXVlcnkt PnN0bXRfbG9jYXRpb24sCkBAIC0yNDEsMTAgKzI0MSwxMSBAQCBzdGF0aWMgdm9pZAogSnVt YmxlUXVlcnlJbnRlcm5hbChKdW1ibGVTdGF0ZSAqanN0YXRlLCBRdWVyeSAqcXVlcnkpCiB7 CiAJQXNzZXJ0KElzQShxdWVyeSwgUXVlcnkpKTsKLQlBc3NlcnQocXVlcnktPnV0aWxpdHlT dG10ID09IE5VTEwpOworCUFzc2VydChxdWVyeS0+dXRpbGl0eVN0bXQgPT0gTlVMTCB8fCBJ c0p1bWJsZVV0aWxpdHlBbGxvd2VkKHF1ZXJ5LT51dGlsaXR5U3RtdCkpOwogCiAJQVBQX0pV TUIocXVlcnktPmNvbW1hbmRUeXBlKTsKIAkvKiByZXN1bHRSZWxhdGlvbiBpcyB1c3VhbGx5 IHByZWRpY3RhYmxlIGZyb20gY29tbWFuZFR5cGUgKi8KKwlKdW1ibGVFeHByKGpzdGF0ZSwg KE5vZGUgKikgcXVlcnktPnV0aWxpdHlTdG10KTsKIAlKdW1ibGVFeHByKGpzdGF0ZSwgKE5v ZGUgKikgcXVlcnktPmN0ZUxpc3QpOwogCUp1bWJsZVJhbmdlVGFibGUoanN0YXRlLCBxdWVy eS0+cnRhYmxlKTsKIAlKdW1ibGVFeHByKGpzdGF0ZSwgKE5vZGUgKikgcXVlcnktPmpvaW50 cmVlKTsKQEAgLTM4NCw2ICszODUsNDcgQEAgSnVtYmxlRXhwcihKdW1ibGVTdGF0ZSAqanN0 YXRlLCBOb2RlICpub2RlKQogCQkJCUFQUF9KVU1CKHZhci0+dmFybGV2ZWxzdXApOwogCQkJ fQogCQkJYnJlYWs7CisJCWNhc2UgVF9DYWxsU3RtdDoKKwkJCXsKKwkJCQlDYWxsU3RtdCAg ICpzdG10ID0gKENhbGxTdG10ICopIG5vZGU7CisJCQkJRnVuY0V4cHIgICAqZXhwciA9IHN0 bXQtPmZ1bmNleHByOworCisJCQkJQVBQX0pVTUIoZXhwci0+ZnVuY2lkKTsKKwkJCQlKdW1i bGVFeHByKGpzdGF0ZSwgKE5vZGUgKikgZXhwci0+YXJncyk7CisJCQl9CisJCQlicmVhazsK KwkJY2FzZSBUX1ZhcmlhYmxlU2V0U3RtdDoKKwkJCXsKKwkJCQlWYXJpYWJsZVNldFN0bXQg KnN0bXQgPSAoVmFyaWFibGVTZXRTdG10ICopIG5vZGU7CisKKwkJCQkvKiBzdG10LT5uYW1l IGlzIE5VTEwgZm9yIFJFU0VUIEFMTCAqLworCQkJCWlmIChzdG10LT5uYW1lKQorCQkJCXsK KwkJCQkJQVBQX0pVTUIoc3RtdC0+a2luZCk7CisJCQkJCUFQUF9KVU1CX1NUUklORyhzdG10 LT5uYW1lKTsKKwkJCQkJSnVtYmxlRXhwcihqc3RhdGUsIChOb2RlICopIHN0bXQtPmFyZ3Mp OworCQkJCX0KKwkJCX0KKwkJCWJyZWFrOworCQljYXNlIFRfQV9Db25zdDoKKwkJCXsKKwkJ CQlpbnQJCQlsb2MgPSAoKGNvbnN0IEFfQ29uc3QgKikgbm9kZSktPmxvY2F0aW9uOworCisJ CQkJUmVjb3JkQ29uc3RMb2NhdGlvbihqc3RhdGUsIGxvYyk7CisJCQl9CisJCQlicmVhazsK KwkJY2FzZSBUX1RyYW5zYWN0aW9uU3RtdDoKKwkJCXsKKwkJCQlUcmFuc2FjdGlvblN0bXQg KnN0bXQgPSAoVHJhbnNhY3Rpb25TdG10ICopIG5vZGU7CisKKwkJCQlBc3NlcnQoc3RtdC0+ a2luZCA9PSBUUkFOU19TVE1UX1BSRVBBUkUgfHwKKwkJCQkJICAgc3RtdC0+a2luZCA9PSBU UkFOU19TVE1UX0NPTU1JVF9QUkVQQVJFRCB8fAorCQkJCQkgICBzdG10LT5raW5kID09IFRS QU5TX1NUTVRfUk9MTEJBQ0tfUFJFUEFSRUQpOworCisJCQkJQVBQX0pVTUIoc3RtdC0+a2lu ZCk7CisJCQkJUmVjb3JkQ29uc3RMb2NhdGlvbihqc3RhdGUsIHN0bXQtPmdpZF9sb2NhdGlv bik7CisJCQl9CisJCQlicmVhazsKIAkJY2FzZSBUX0NvbnN0OgogCQkJewogCQkJCUNvbnN0 CSAgICpjID0gKENvbnN0ICopIG5vZGU7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rl cy9wYXJzZW5vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgKaW5kZXgg YWVhZDJhZmQ2ZS4uZjU5NDU3ZGNkNiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMv cGFyc2Vub2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaApAQCAt MzI4MSw2ICszMjgxLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgVHJhbnNhY3Rpb25TdG10CiAJY2hh cgkgICAqc2F2ZXBvaW50X25hbWU7IC8qIGZvciBzYXZlcG9pbnQgY29tbWFuZHMgKi8KIAlj aGFyCSAgICpnaWQ7CQkJLyogZm9yIHR3by1waGFzZS1jb21taXQgcmVsYXRlZCBjb21tYW5k cyAqLwogCWJvb2wJCWNoYWluOwkJCS8qIEFORCBDSEFJTiBvcHRpb24gKi8KKwlpbnQJCQln aWRfbG9jYXRpb247CS8qIGdpZCBsb2NhdGlvbiAqLwogfSBUcmFuc2FjdGlvblN0bXQ7CiAK IC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0 aWxzL3F1ZXJ5anVtYmxlLmggYi9zcmMvaW5jbHVkZS91dGlscy9xdWVyeWp1bWJsZS5oCmlu ZGV4IDNjMmQ5YmVhYjIuLmRmYmIwNjBmNTUgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3V0 aWxzL3F1ZXJ5anVtYmxlLmgKKysrIGIvc3JjL2luY2x1ZGUvdXRpbHMvcXVlcnlqdW1ibGUu aApAQCAtODUsNCArODUsMjQgQEAgSXNRdWVyeUlkRW5hYmxlZCh2b2lkKQogCXJldHVybiBx dWVyeV9pZF9lbmFibGVkOwogfQogCisvKgorICogSnVtYmxlIHRob3NlIHV0aWxpdHkgc3Rh dGVtZW50cworICovCitzdGF0aWMgaW5saW5lIGJvb2wKK0lzSnVtYmxlVXRpbGl0eUFsbG93 ZWQoTm9kZSAqbikKK3sKKwlpZiAoSXNBKG4sIENhbGxTdG10KSB8fCBJc0EobiwgVmFyaWFi bGVTZXRTdG10KSkKKwkJcmV0dXJuIHRydWU7CisJZWxzZSBpZiAoSXNBKG4sIFRyYW5zYWN0 aW9uU3RtdCkpCisJeworCQlUcmFuc2FjdGlvblN0bXQgKnN0bXQgPSAoVHJhbnNhY3Rpb25T dG10ICopIG47CisKKwkJcmV0dXJuIChzdG10LT5raW5kID09IFRSQU5TX1NUTVRfUFJFUEFS RSB8fAorCQkJCXN0bXQtPmtpbmQgPT0gVFJBTlNfU1RNVF9DT01NSVRfUFJFUEFSRUQgfHwK KwkJCQlzdG10LT5raW5kID09IFRSQU5TX1NUTVRfUk9MTEJBQ0tfUFJFUEFSRUQpOworCX0K KwllbHNlCisJCXJldHVybiBmYWxzZTsKK30KKwogI2VuZGlmCQkJCQkJCS8qIFFVRVJZSlVN QkxFX0ggKi8K --------------NFisVsJPDgUEzjnlhabnk50J--