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.96) (envelope-from ) id 1wKtij-001O3s-2X for pgsql-hackers@arkaria.postgresql.org; Thu, 07 May 2026 08:04:34 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wKtii-002asa-1o for pgsql-hackers@arkaria.postgresql.org; Thu, 07 May 2026 08:04:32 +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.96) (envelope-from ) id 1wKtih-002asR-2t for pgsql-hackers@lists.postgresql.org; Thu, 07 May 2026 08:04:32 +0000 Received: from mail-oo1-xc34.google.com ([2607:f8b0:4864:20::c34]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1wKtif-00000000bzU-1Ty5 for pgsql-hackers@postgresql.org; Thu, 07 May 2026 08:04:30 +0000 Received: by mail-oo1-xc34.google.com with SMTP id 006d021491bc7-697bcc9d769so323055eaf.0 for ; Thu, 07 May 2026 01:04:29 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1778141069; cv=none; d=google.com; s=arc-20240605; b=QM19ydcRL9akbmxazH1xxHc95COW5wFZjqsPVwxfAud80w1yyKFoF05gePNZXctaY6 t8X1IaL6Zll2J4K/EvcJWFZsu+Xr0AIZYa3Z3WogkKTikKoULjxCk91001L3hbxfL5O3 il7ycQJJ1ZW9+REKwsRAgqR4i766khifvZSImpgN9SlHMDm7d3qKe5F2eOW1KCFbd6vO xuZaJy2jIAYuCerhfnScoKR1FzVS6QZ+ve6wUs61V8xkZyoHiMJ4Lk9nvORlHclcpsP6 Y0yaUErWizt4OMgtIsJPJ2bsPQ4qA/IT3tQ+WztX6PVGy8b8sMAwKYZmzVkzRsuyvmTs HW/w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=Op6CY3irH0QZ7m7TRT7GQZjUqjGD+ijHNW+euH4Xq5E=; fh=gewKhkbSQJdj50SyFpEAdzd+5bgFa9lOlmlFGk0BJxA=; b=UfWLfQNfHmDy6ImTCD7gCQR+EzrBkVdfyu40Q/IGSQiotatwtyHjbV/BvcZKEbpNhu QsELUtJdBNsN9AwXpylceJZcqA4/dAovPA+PDZzA+Nbrhdj56GyRDTtBgagBfNyGTIZw MRk24US8vavljz8ZIwOZgoeowgbvVApBDfZ33zGGxa68feI0BEGuGZjqXjQmDyDQze8D DHWEMcPZJbFJIAY2IKUfycDld15yeGEJnE6972tHbyG/qJVv3NUv8A8d8ECPyh7nC9Xn Jdl/ChzOOISXEomRecW/SADoaUoQI47nNbrgBRPX5sJF4fX62QNkd698GO53lwmuU9e2 jFpw==; darn=postgresql.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1778141069; x=1778745869; darn=postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=Op6CY3irH0QZ7m7TRT7GQZjUqjGD+ijHNW+euH4Xq5E=; b=V5UlPXHrQd/Ue3BS1bjo+2ilU1Yhsfkd9uUc++t5OK1xKr9m+NgCjRluK116tpWV+e VT2o1NGW6dvbgZkxEB+sNcZ8iw80rZxNo3FeFL6CH0vmOPYH4ZeG/7z77ypHNROGaoGA vNGxsJmON9vPVr0TzVAMBPgI9QC6p0EBDJuChPJx8lwb1622Q4ttZwSpijY1ewD/KxDs OD+p+YjpmjJfb9gZRgyw1d3f+BXIyCm1M/VLajLHDqtjN5fcFFYcPlENjO/jQmKBgjrm o51JRw0GxGbsfUTBUGF2mkryF9CaSjVFlIpo8TXnxHxkgsHJd6LKK9BodemOR5yIOw4i j5Xw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778141069; x=1778745869; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=Op6CY3irH0QZ7m7TRT7GQZjUqjGD+ijHNW+euH4Xq5E=; b=jb5v46YrAgYzUeJmUFzCzHGB8LXrD42hYQDcxD+2KEvPt7yftOE9sF6Sm9wQ0L6aCa /r51kVJKbxH3+Tkr3OOfE2Fnb3rcljXdSHbGKWw6hVF4w3nnwrhxhEqPZgXWXicvfZ04 PGzOvekoZ5EDphLikvV21wgwl/NJ3k6imGf/JX8eB3A9tFdrS43IZQKGUQcEfi/JKkll WnpctQa6RufqKGGfQH/D2cxkHeLRrUsPU0U3r8Vp8owdFdYpVsUc56QDHjG8TtBGrWD9 v4Ae04uicEVrK1uurOU9oi/WY4RsKctSP1SGKMokc7UKzc6GNiPZx8Iq2/hYcPqx5ldq XFNw== X-Forwarded-Encrypted: i=1; AFNElJ9DNlm3hrw8t/GOXDQYwU5/3FAd0t8ZQqSOe0N2cq2r7dQMS1D/zSc+kQV7fUaDSUpj5PB57XVqKxfD3GiO@postgresql.org X-Gm-Message-State: AOJu0YwMubuwoc7QRRLFXQymFKfq3COXWdG8KCYBuMbpTBIy4N1EZpGx a49IHZCdqA7aJnjpQCg/ahr5xHa/xUXBKwXsNK3brkiIn+7mgn4eaytebAJKw+NwLXzcIzkQRZ1 gW40c5gNeFxAAI/nzqhrKg5pMSaeIKZI= X-Gm-Gg: AeBDies3Z/azuAMIRXEyieRxBHfvTCWqFf4nGJ8wSXhc4ApV4+HuTQ8A3qsRogvqaqC b1EFY2cZVtfHYcZcEae32PeTYJgPaU2sBn/uLoNVKAbpgJJpZ7UG80Q6QPUqgppyvDCKVqN3t+Q HZtBl9K30KOu/gNQYW/G1/wWa6sqdlpaerPCIyR2650rEoKrwvP2HzT8QAVJ9lz6U+2WVlKzZXV woPIxBFthgRXtjJ9t2Bpu0/o9GUKfasvFBbHGJVW28xFjHrMOm42HBZe/nG2DSglb+uAN0uKHXS 6xlinBtggOKcrf5tzDZf1ZfGFH86WqTQQhPCChcnXxvUm2ZCaXozlqG4CNwGpJ08VI615sqWs+E cMXT8vczgK6w30F/k7C5ewdXtnfV2 X-Received: by 2002:a4a:ee11:0:b0:684:2b28:f9a6 with SMTP id 006d021491bc7-69998d7211dmr3956520eaf.58.1778141069185; Thu, 07 May 2026 01:04:29 -0700 (PDT) MIME-Version: 1.0 References: <402bbc8d-728b-4467-8024-31c2bc101ead@uni-muenster.de> <239d181d-1415-49ee-ad57-b307f1a7ba66@uni-muenster.de> <0e666e40-d003-4c92-95cf-1a33a647401f@uni-muenster.de> In-Reply-To: From: Alexander Korotkov Date: Thu, 7 May 2026 11:04:16 +0300 X-Gm-Features: AVHnY4JFDwunCp9SBYjxstT_iGteDfwkG5dgeBFT_wGv1PHjxyt5Kuz2xMDFgj4 Message-ID: Subject: Re: Fix bug with accessing to temporary tables of other sessions To: Daniil Davydov <3danissimo@gmail.com> Cc: Jim Jones , Michael Paquier , Soumya S Murali , Tom Lane , Stepan Neretin , PostgreSQL Hackers , Mohamed Ali , Nazneen Jafri , Shawn McCoy Content-Type: multipart/mixed; boundary="000000000000cab9b1065135bae6" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000cab9b1065135bae6 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Mon, May 4, 2026 at 12:31=E2=80=AFPM Daniil Davydov <3danissimo@gmail.co= m> wrote: > > On Sun, May 3, 2026 at 7:49=E2=80=AFPM Jim Jones wrote: > > > > On 03/05/2026 10:53, Daniil Davydov wrote: > > > Please, see the attached patch that ensures that cross-session LOCK T= ABLE works > > > properly. > > > > I guess you should either add it to the 0001 sent by Alexander, or > > create a 0003. Right now the cfbot is complaining, as > > 013_temp_obj_multisession.pl still does not exist :) > > > > OK, I'll attach this patch as a third one, just for review purposes. Afte= r > agreement on its content, it should be included into the 0001 and 0002 pa= tches. Thank you. I've integrated your check into 0001, and added an explicit check that the table gets removed once the lock by other session is removed. Let me do a quick summary: * Our buffer manager is not capable for reading temp tables of other sessi= ons. * This was covered by explicit checks, but broken since b7b0f3f27241 introduced alternative code path for reading tables. * This doesn't apply to DROP TABLE. DROP TABLE is a conscious exclusion and the only operation we can do correctly for other session' temp tables. There is an explicit exclusion in the code to skip the attempt to cleanup buffers of other session' temp tables. * This patchset consists of tests (0001) for various operations with other session's temp tables including buggy behavior, and the fix (0002) including changes for tests. Thus, I don't see the reason why this shouldn't be committed and backpatched to PG17 (first release containing b7b0f3f27241). Opinions? Michael? ------ Regards, Alexander Korotkov Supabase --000000000000cab9b1065135bae6 Content-Type: application/octet-stream; name="v22-0002-Prevent-access-to-other-sessions-temp-tables.patch" Content-Disposition: attachment; filename="v22-0002-Prevent-access-to-other-sessions-temp-tables.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mov6r1611 RnJvbSA5OTBjN2E4MjZlZGEyODY1ZjJlNmMyYzA4MWE1MDJjYjA0ZGJhOTczIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGV4YW5kZXIgS29yb3Rrb3YgPGFrb3JvdGtvdkBwb3N0Z3Jl c3FsLm9yZz4KRGF0ZTogU2F0LCAyIE1heSAyMDI2IDE1OjIzOjQyICswMzAwClN1YmplY3Q6IFtQ QVRDSCB2MjIgMi8yXSBQcmV2ZW50IGFjY2VzcyB0byBvdGhlciBzZXNzaW9ucycgdGVtcCB0YWJs ZXMKCkNvbW1pdCBiN2IwZjNmMjcyNCAoIlVzZSBzdHJlYW1pbmcgSS9PIGluIHNlcXVlbnRpYWwg c2NhbnMiKSByb3V0ZWQKc2VxdWVudGlhbCBzY2FucyB0aHJvdWdoIHJlYWRfc3RyZWFtX25leHRf YnVmZmVyKCksIGJ5cGFzc2luZyB0aGUKUkVMQVRJT05fSVNfT1RIRVJfVEVNUCgpIGNoZWNrIGlu IFJlYWRCdWZmZXJFeHRlbmRlZCgpLiAgQXMgYSByZXN1bHQsCmEgc3VwZXJ1c2VyIGNhbiBhdHRl bXB0IHRvIHJlYWQgb3IgbW9kaWZ5IHRlbXAgdGFibGVzIG9mIG90aGVyCnNlc3Npb25zIHRocm91 Z2ggdGhlIHJlYWQtc3RyZWFtIHBhdGguICBXaGVuIG5vIGluZGV4IGlzIHByZXNlbnQgc28KdGhl IHBsYW5uZXIgY2Fubm90IHBpY2sgYW4gaW5kZXggc2NhbiwgU0VMRUNUL1VQREFURS9ERUxFVEUv TUVSR0UKc2lsZW50bHkgc2VlIG5vIHJvd3MgLyByZXBvcnQgemVybyBhZmZlY3RlZCByb3dzLCBh bmQgQ09QWSBwcm9kdWNlcwphbiBlbXB0eSBvdXRwdXQgLS0gYmVjYXVzZSB0aGUgYnVmZmVyIG1h bmFnZXIgaGFzIG5vIHZpc2liaWxpdHkgaW50bwp0aGUgb3duaW5nIHNlc3Npb24ncyBsb2NhbCBi dWZmZXJzIGFuZCBzaWxlbnRseSByZXR1cm5zIG5vdGhpbmcuCklOU0VSVCBhbmQgYW55IHBhdGgg dGhhdCBnb2VzIHRocm91Z2ggbmJ0cmVlIChpLmUuIGFuIGluZGV4IHNjYW4pCnN0aWxsIGVycm9y IG91dCB2aWEgdGhlIGV4aXN0aW5nIGNoZWNrIGluIFJlYWRCdWZmZXJFeHRlbmRlZCgpLCB3aGlj aAppcyByZWFjaGVkIGZyb20gaGlvLmMgYW5kIG5idHJlZSByZXNwZWN0aXZlbHksIGJ1dCB0aGlz IGlzIGluY2lkZW50YWwuCgpGaXggYnkgZW5mb3JjaW5nIFJFTEFUSU9OX0lTX09USEVSX1RFTVAo KSBhdCB0aHJlZSBhZGRpdGlvbmFsCmJ1ZmZlci1tYW5hZ2VyIGVudHJ5IHBvaW50czoKCi0gcmVh ZF9zdHJlYW1fYmVnaW5faW1wbCgpIHJlamVjdHMgdGhlIHJlYWQgYXQgc3RyZWFtIHNldHVwIHRp bWUsCiAgY292ZXJpbmcgc2VxdWVudGlhbCBhbmQgYml0bWFwIHNjYW5zIHRoYXQgZ28gdGhyb3Vn aCB0aGUKICByZWFkLXN0cmVhbSBwYXRoLgotIFJlYWRCdWZmZXJfY29tbW9uKCkgYmVjb21lcyB0 aGUgY2Fub25pY2FsIHBsYWNlIGZvciB0aGUgY2hlY2ssCiAgY29uc29saWRhdGluZyB0aGUgZXhp c3Rpbmcgb25lIHByZXZpb3VzbHkga2VwdCBpbgogIFJlYWRCdWZmZXJFeHRlbmRlZCgpLiAgQWxs IFJlYWRCdWZmZXJFeHRlbmRlZCgpIGNhbGxlcnMgZ28gdGhyb3VnaAogIFJlYWRCdWZmZXJfY29t bW9uKCksIHNvIHRoZSBjb25zb2xpZGF0aW9uIGlzIGJlaGF2aW91ci1wcmVzZXJ2aW5nLgotIFN0 YXJ0UmVhZEJ1ZmZlcnNJbXBsKCkgY2F0Y2hlcyBkaXJlY3QgY2FsbGVycyBvZiBTdGFydFJlYWRC dWZmZXJzKCkKICB0aGF0IGJ5cGFzcyBib3RoIG9mIHRoZSBhYm92ZS4gIFRoaXMgaXMgY3VycmVu dGx5IGRlZmVuc2UtaW4tZGVwdGgKICBidXQgZG9jdW1lbnRzIHRoZSBjb250cmFjdCBmb3IgZnV0 dXJlIGNvZGUuCgpUaGUgY29tcGFuaW9uIHRlc3QgaW4gc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X21p c2Mgd2FzIGFkZGVkIGluIHRoZQpwcmVjZWRpbmcgY29tbWl0OyB0aGlzIGNvbW1pdCB1cGRhdGVz IHRoZSBhc3NlcnRpb25zIGZvciBTRUxFQ1QsClVQREFURSwgREVMRVRFLCBNRVJHRSBhbmQgQ09Q WSAod2hpY2ggcHJldmlvdXNseSBkb2N1bWVudGVkIHRoZQpidWcgYXMgc2lsZW50IHN1Y2Nlc3Mp IHRvIGV4cGVjdCB0aGUgbmV3IGVycm9yLgoKQXV0aG9yOiBKaW0gSm9uZXMgPGppbS5qb25lc0B1 bmktbXVlbnN0ZXIuZGU+CkF1dGhvcjogRGFuaWlsIERhdnlkb3YgPDNkYW5pc3NpbW9AZ21haWwu Y29tPgpDby1hdXRob3JlZC1ieTogQWxleGFuZGVyIEtvcm90a292IDxhZWtvcm90a292QGdtYWls LmNvbT4KUmV2aWV3ZWQtYnk6IE1pY2hhZWwgUGFxdWllciA8bWljaGFlbEBwYXF1aWVyLnh5ej4K UmV2aWV3ZWQtYnk6IFNvdW15YSBTIE11cmFsaSA8c291bXlhbXVyYWxpLndvcmtAZ21haWwuY29t PgpSZXZpZXdlZC1ieTogVG9tIExhbmUgPHRnbEBzc3MucGdoLnBhLnVzPgpEaXNjdXNzaW9uOiBo dHRwczovL3Bvc3Rnci5lcy9tL0NBSkRpWGdoZEZjWjglM0RuaDRHNjl0ZTdpUnIzUTB1RnlYeGIz WmRHMDlfR1ROWlh3SDBnJTQwbWFpbC5nbWFpbC5jb20KQmFja3BhdGNoLXRocm91Z2g6IDE3Ci0t LQogc3JjL2JhY2tlbmQvc3RvcmFnZS9haW8vcmVhZF9zdHJlYW0uYyAgICAgICAgIHwgMTAgKysr KysrCiBzcmMvYmFja2VuZC9zdG9yYWdlL2J1ZmZlci9idWZtZ3IuYyAgICAgICAgICAgfCAzMyAr KysrKysrKysrKystLS0tLS0tCiAuLi4vdGVzdF9taXNjL3QvMDEzX3RlbXBfb2JqX211bHRpc2Vz c2lvbi5wbCAgfCAyNyArKysrKysrLS0tLS0tLS0KIDMgZmlsZXMgY2hhbmdlZCwgNDIgaW5zZXJ0 aW9ucygrKSwgMjggZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFn ZS9haW8vcmVhZF9zdHJlYW0uYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvYWlvL3JlYWRfc3RyZWFt LmMKaW5kZXggMjM3NGI0Y2Q1MDcuLmEzMTg1MzllNTZjIDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9zdG9yYWdlL2Fpby9yZWFkX3N0cmVhbS5jCisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvYWlv L3JlYWRfc3RyZWFtLmMKQEAgLTc3Niw2ICs3NzYsMTYgQEAgcmVhZF9zdHJlYW1fYmVnaW5faW1w bChpbnQgZmxhZ3MsCiAJdWludDMyCQltYXhfcG9zc2libGVfYnVmZmVyX2xpbWl0OwogCU9pZAkJ CXRhYmxlc3BhY2VfaWQ7CiAKKwkvKgorCSAqIFJlamVjdCBhdHRlbXB0cyB0byByZWFkIG5vbi1s b2NhbCB0ZW1wb3JhcnkgcmVsYXRpb25zOyB3ZSB3b3VsZCBiZQorCSAqIGxpa2VseSB0byBnZXQg d3JvbmcgZGF0YSBzaW5jZSB3ZSBoYXZlIG5vIHZpc2liaWxpdHkgaW50byB0aGUgb3duaW5nCisJ ICogc2Vzc2lvbidzIGxvY2FsIGJ1ZmZlcnMuCisJICovCisJaWYgKHJlbCAmJiBSRUxBVElPTl9J U19PVEhFUl9URU1QKHJlbCkpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09E RV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAorCQkJCSBlcnJtc2coImNhbm5vdCBhY2Nlc3MgdGVt cG9yYXJ5IHRhYmxlcyBvZiBvdGhlciBzZXNzaW9ucyIpKSk7CisKIAkvKgogCSAqIERlY2lkZSBo b3cgbWFueSBJL09zIHdlIHdpbGwgYWxsb3cgdG8gcnVuIGF0IHRoZSBzYW1lIHRpbWUuICBUaGlz CiAJICogbnVtYmVyIGFsc28gYWZmZWN0cyBob3cgZmFyIHdlIGxvb2sgYWhlYWQgZm9yIG9wcG9y dHVuaXRpZXMgdG8gc3RhcnQKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvYnVmZmVy L2J1Zm1nci5jIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9idWZmZXIvYnVmbWdyLmMKaW5kZXggMTg3 OGVmYjRhYTkuLmNjMzk4ZGIxMjRkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2J1 ZmZlci9idWZtZ3IuYworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2J1ZmZlci9idWZtZ3IuYwpA QCAtNzkxLDcgKzc5MSw3IEBAIFByZWZldGNoQnVmZmVyKFJlbGF0aW9uIHJlbG4sIEZvcmtOdW1i ZXIgZm9ya051bSwgQmxvY2tOdW1iZXIgYmxvY2tOdW0pCiAKIAlpZiAoUmVsYXRpb25Vc2VzTG9j YWxCdWZmZXJzKHJlbG4pKQogCXsKLQkJLyogc2VlIGNvbW1lbnRzIGluIFJlYWRCdWZmZXJFeHRl bmRlZCAqLworCQkvKiBzZWUgY29tbWVudHMgaW4gUmVhZEJ1ZmZlcl9jb21tb24gKi8KIAkJaWYg KFJFTEFUSU9OX0lTX09USEVSX1RFTVAocmVsbikpCiAJCQllcmVwb3J0KEVSUk9SLAogCQkJCQko ZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCkBAIC05MjgsMTkgKzkyOCwx MCBAQCBSZWFkQnVmZmVyRXh0ZW5kZWQoUmVsYXRpb24gcmVsbiwgRm9ya051bWJlciBmb3JrTnVt LCBCbG9ja051bWJlciBibG9ja051bSwKIHsKIAlCdWZmZXIJCWJ1ZjsKIAotCS8qCi0JICogUmVq ZWN0IGF0dGVtcHRzIHRvIHJlYWQgbm9uLWxvY2FsIHRlbXBvcmFyeSByZWxhdGlvbnM7IHdlIHdv dWxkIGJlCi0JICogbGlrZWx5IHRvIGdldCB3cm9uZyBkYXRhIHNpbmNlIHdlIGhhdmUgbm8gdmlz aWJpbGl0eSBpbnRvIHRoZSBvd25pbmcKLQkgKiBzZXNzaW9uJ3MgbG9jYWwgYnVmZmVycy4KLQkg Ki8KLQlpZiAoUkVMQVRJT05fSVNfT1RIRVJfVEVNUChyZWxuKSkKLQkJZXJlcG9ydChFUlJPUiwK LQkJCQkoZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCi0JCQkJIGVycm1z ZygiY2Fubm90IGFjY2VzcyB0ZW1wb3JhcnkgdGFibGVzIG9mIG90aGVyIHNlc3Npb25zIikpKTsK LQogCS8qCiAJICogUmVhZCB0aGUgYnVmZmVyLCBhbmQgdXBkYXRlIHBnc3RhdCBjb3VudGVycyB0 byByZWZsZWN0IGEgY2FjaGUgaGl0IG9yCi0JICogbWlzcy4KKwkgKiBtaXNzLiAgVGhlIG90aGVy LXNlc3Npb24gdGVtcC1yZWxhdGlvbiBjaGVjayBpcyBlbmZvcmNlZCBieQorCSAqIFJlYWRCdWZm ZXJfY29tbW9uKCkuCiAJICovCiAJYnVmID0gUmVhZEJ1ZmZlcl9jb21tb24ocmVsbiwgUmVsYXRp b25HZXRTbWdyKHJlbG4pLCAwLAogCQkJCQkJCWZvcmtOdW0sIGJsb2NrTnVtLCBtb2RlLCBzdHJh dGVneSk7CkBAIC0xMjkyLDYgKzEyODMsMTggQEAgUmVhZEJ1ZmZlcl9jb21tb24oUmVsYXRpb24g cmVsLCBTTWdyUmVsYXRpb24gc21nciwgY2hhciBzbWdyX3BlcnNpc3RlbmNlLAogCWludAkJCWZs YWdzOwogCWNoYXIJCXBlcnNpc3RlbmNlOwogCisJLyoKKwkgKiBSZWplY3QgYXR0ZW1wdHMgdG8g cmVhZCBub24tbG9jYWwgdGVtcG9yYXJ5IHJlbGF0aW9uczsgd2Ugd291bGQgYmUKKwkgKiBsaWtl bHkgdG8gZ2V0IHdyb25nIGRhdGEgc2luY2Ugd2UgaGF2ZSBubyB2aXNpYmlsaXR5IGludG8gdGhl IG93bmluZworCSAqIHNlc3Npb24ncyBsb2NhbCBidWZmZXJzLiAgVGhpcyBpcyB0aGUgY2Fub25p Y2FsIHBsYWNlIGZvciB0aGUgY2hlY2ssCisJICogY292ZXJpbmcgdGhlIFJlYWRCdWZmZXJFeHRl bmRlZCgpIGVudHJ5IHBvaW50IGFuZCBhbnkgb3RoZXIgY2FsbGVyIHRoYXQKKwkgKiBzdXBwbGll cyBhIFJlbGF0aW9uLgorCSAqLworCWlmIChyZWwgJiYgUkVMQVRJT05fSVNfT1RIRVJfVEVNUChy ZWwpKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1Rf U1VQUE9SVEVEKSwKKwkJCQkgZXJybXNnKCJjYW5ub3QgYWNjZXNzIHRlbXBvcmFyeSB0YWJsZXMg b2Ygb3RoZXIgc2Vzc2lvbnMiKSkpOworCiAJLyoKIAkgKiBCYWNrd2FyZCBjb21wYXRpYmlsaXR5 IHBhdGgsIG1vc3QgY29kZSBzaG91bGQgdXNlIEV4dGVuZEJ1ZmZlcmVkUmVsKCkKIAkgKiBpbnN0 ZWFkLCBhcyBhY3F1aXJpbmcgdGhlIGV4dGVuc2lvbiBsb2NrIGluc2lkZSBFeHRlbmRCdWZmZXJl ZFJlbCgpCkBAIC0xMzgyLDYgKzEzODUsMTIgQEAgU3RhcnRSZWFkQnVmZmVyc0ltcGwoUmVhZEJ1 ZmZlcnNPcGVyYXRpb24gKm9wZXJhdGlvbiwKIAlBc3NlcnQoKm5ibG9ja3MgPiAwKTsKIAlBc3Nl cnQoKm5ibG9ja3MgPD0gTUFYX0lPX0NPTUJJTkVfTElNSVQpOwogCisJLyogc2VlIGNvbW1lbnRz IGluIFJlYWRCdWZmZXJfY29tbW9uICovCisJaWYgKG9wZXJhdGlvbi0+cmVsICYmIFJFTEFUSU9O X0lTX09USEVSX1RFTVAob3BlcmF0aW9uLT5yZWwpKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShl cnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKKwkJCQkgZXJybXNnKCJjYW5u b3QgYWNjZXNzIHRlbXBvcmFyeSB0YWJsZXMgb2Ygb3RoZXIgc2Vzc2lvbnMiKSkpOworCiAJaWYg KG9wZXJhdGlvbi0+cGVyc2lzdGVuY2UgPT0gUkVMUEVSU0lTVEVOQ0VfVEVNUCkKIAl7CiAJCWlv X2NvbnRleHQgPSBJT0NPTlRFWFRfTk9STUFMOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxl cy90ZXN0X21pc2MvdC8wMTNfdGVtcF9vYmpfbXVsdGlzZXNzaW9uLnBsIGIvc3JjL3Rlc3QvbW9k dWxlcy90ZXN0X21pc2MvdC8wMTNfdGVtcF9vYmpfbXVsdGlzZXNzaW9uLnBsCmluZGV4IGJmY2Jh NDJhY2QwLi41ZjNjYzdkMmZjNSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X21p c2MvdC8wMTNfdGVtcF9vYmpfbXVsdGlzZXNzaW9uLnBsCisrKyBiL3NyYy90ZXN0L21vZHVsZXMv dGVzdF9taXNjL3QvMDEzX3RlbXBfb2JqX211bHRpc2Vzc2lvbi5wbApAQCAtNTUsMjUgKzU1LDIw IEBAIG15ICgkc3Rkb3V0LCAkc3RkZXJyKTsKICMgRE1MIGFuZCBTRUxFQ1QgaGF2ZSB0byByZWFk IHRoZSB0YWJsZSdzIGRhdGEgYW5kIHRoZXJlZm9yZSBnbyB0aHJvdWdoCiAjIHRoZSBidWZmZXIg bWFuYWdlci4gIFdpdGggbm8gaW5kZXggb24gdGhlIHRhYmxlLCB0aGUgcGxhbm5lciBjYW5ub3QK ICMgdXNlIGluZGV4IGFjY2Vzcywgc28gU0VMRUNUL1VQREFURS9ERUxFVEUvTUVSR0UvQ09QWSBh bGwgcnVuIHRocm91Z2gKLSMgdGhlIHJlYWQtc3RyZWFtIHBhdGguCi0jCi0jIFhYWDogaW4gY3Vy cmVudCBjb2RlLCB0aGUgcmVhZC1zdHJlYW0gcGF0aCBieXBhc3NlcyB0aGUKLSMgUkVMQVRJT05f SVNfT1RIRVJfVEVNUCgpIGNoZWNrLCBzbyB0aGVzZSBjb21tYW5kcyBzaWxlbnRseSBzZWUgbm8K LSMgcm93cyAvIHJlcG9ydCB6ZXJvIGFmZmVjdGVkIHJvd3MgLS0gdGhlIHZpc2libGUgc3ltcHRv bSBvZiB0aGUgYnVnCi0jIHRoaXMgdGVzdCBzdWl0ZSBkb2N1bWVudHMuICBBIGZvbGxvdy11cCBw YXRjaCB3aWxsIHJvdXRlIHRoZSBjaGVjawotIyB0aHJvdWdoIHJlYWRfc3RyZWFtX2JlZ2luX2lt cGwoKSBhbmQgdGhlc2UgYXNzZXJ0aW9ucyB3aWxsIGJlCi0jIHVwZGF0ZWQgdG8gZXhwZWN0ICJj YW5ub3QgYWNjZXNzIHRlbXBvcmFyeSB0YWJsZXMgb2Ygb3RoZXIgc2Vzc2lvbnMiLgorIyB0aGUg cmVhZC1zdHJlYW0gcGF0aCBhbmQgYXJlIGNhdWdodCBieSByZWFkX3N0cmVhbV9iZWdpbl9pbXBs KCkuCiAKICRub2RlLT5wc3FsKAogCSdwb3N0Z3JlcycsCiAJIlNFTEVDVCB2YWwgRlJPTSAkdGVt cHNjaGVtYS5mb287IiwKLQlzdGRvdXQgPT4gXCRzdGRvdXQsCiAJc3RkZXJyID0+IFwkc3RkZXJy KTsKLWlzKCRzdGRlcnIsICcnLCAnU0VMRUNUIChjdXJyZW50bHkgbm8gZXJyb3IgLS0gYnVnIHRv IGJlIGZpeGVkKScpOworbGlrZSgKKwkkc3RkZXJyLAorCXFyL2Nhbm5vdCBhY2Nlc3MgdGVtcG9y YXJ5IHRhYmxlcyBvZiBvdGhlciBzZXNzaW9ucy8sCisJJ1NFTEVDVCAoc2Vxc2NhbiB2aWEgcmVh ZF9zdHJlYW0pJyk7CiAKICMgSU5TRVJUIGdvZXMgdGhyb3VnaCBoaW8uYyB3aGljaCBjYWxscyBS ZWFkQnVmZmVyRXh0ZW5kZWQoKSB0byBmaW5kIGEKLSMgcGFnZSB3aXRoIGZyZWUgc3BhY2U7IHRo YXQgaGl0cyB0aGUgZXhpc3RpbmcgY2hlY2sgYmVmb3JlIGFueSBkYXRhIGlzCi0jIHdyaXR0ZW4u ICBUaGlzIGNhc2UgY3VycmVudGx5IGVycm9ycyBhcyBleHBlY3RlZC4KKyMgcGFnZSB3aXRoIGZy ZWUgc3BhY2U7IHRoYXQgaGl0cyB0aGUgZXhpc3RpbmcgY2hlY2sgYmVmb3JlIGFueSBkYXRhCisj IGlzIHdyaXR0ZW4uCiAkbm9kZS0+cHNxbCgKIAkncG9zdGdyZXMnLAogCSJJTlNFUlQgSU5UTyAk dGVtcHNjaGVtYS5mb28gVkFMVUVTICg3Myk7IiwKQEAgLTg3LDIxICs4MiwyMSBAQCAkbm9kZS0+ cHNxbCgKIAkncG9zdGdyZXMnLAogCSJVUERBVEUgJHRlbXBzY2hlbWEuZm9vIFNFVCB2YWwgPSBO VUxMOyIsCiAJc3RkZXJyID0+IFwkc3RkZXJyKTsKLWlzKCRzdGRlcnIsICcnLCAnVVBEQVRFIChj dXJyZW50bHkgbm8gZXJyb3IgLS0gYnVnIHRvIGJlIGZpeGVkKScpOworbGlrZSgkc3RkZXJyLCBx ci9jYW5ub3QgYWNjZXNzIHRlbXBvcmFyeSB0YWJsZXMgb2Ygb3RoZXIgc2Vzc2lvbnMvLCAnVVBE QVRFJyk7CiAKICRub2RlLT5wc3FsKCdwb3N0Z3JlcycsICJERUxFVEUgRlJPTSAkdGVtcHNjaGVt YS5mb287Iiwgc3RkZXJyID0+IFwkc3RkZXJyKTsKLWlzKCRzdGRlcnIsICcnLCAnREVMRVRFIChj dXJyZW50bHkgbm8gZXJyb3IgLS0gYnVnIHRvIGJlIGZpeGVkKScpOworbGlrZSgkc3RkZXJyLCBx ci9jYW5ub3QgYWNjZXNzIHRlbXBvcmFyeSB0YWJsZXMgb2Ygb3RoZXIgc2Vzc2lvbnMvLCAnREVM RVRFJyk7CiAKICRub2RlLT5wc3FsKAogCSdwb3N0Z3JlcycsCiAJIk1FUkdFIElOVE8gJHRlbXBz Y2hlbWEuZm9vIFVTSU5HIChWQUxVRVMgKDQyKSkgQVMgcyh2YWwpICIKIAkgIC4gIk9OIGZvby52 YWwgPSBzLnZhbCBXSEVOIE1BVENIRUQgVEhFTiBERUxFVEU7IiwKIAlzdGRlcnIgPT4gXCRzdGRl cnIpOwotaXMoJHN0ZGVyciwgJycsICdNRVJHRSAoY3VycmVudGx5IG5vIGVycm9yIC0tIGJ1ZyB0 byBiZSBmaXhlZCknKTsKK2xpa2UoJHN0ZGVyciwgcXIvY2Fubm90IGFjY2VzcyB0ZW1wb3Jhcnkg dGFibGVzIG9mIG90aGVyIHNlc3Npb25zLywgJ01FUkdFJyk7CiAKICRub2RlLT5wc3FsKCdwb3N0 Z3JlcycsICJDT1BZICR0ZW1wc2NoZW1hLmZvbyBUTyBTVERPVVQ7IiwKIAlzdGRlcnIgPT4gXCRz dGRlcnIpOwotaXMoJHN0ZGVyciwgJycsICdDT1BZIChjdXJyZW50bHkgbm8gZXJyb3IgLS0gYnVn IHRvIGJlIGZpeGVkKScpOworbGlrZSgkc3RkZXJyLCBxci9jYW5ub3QgYWNjZXNzIHRlbXBvcmFy eSB0YWJsZXMgb2Ygb3RoZXIgc2Vzc2lvbnMvLCAnQ09QWScpOwogCiAjIERETCBhbmQgbWFpbnRl bmFuY2UgY29tbWFuZHMgaGF2ZSB0aGVpciBvd24gY29tbWFuZC1zcGVjaWZpYyBjaGVja3MKICMg KG9sZGVyIHRoYW4gdGhlIGJ1ZmZlci1tYW5hZ2VyIGNoZWNrIGFib3ZlKSwgc28gdGhleSBmYWls IHdpdGgKLS0gCjIuMzkuNSAoQXBwbGUgR2l0LTE1NCkKCg== --000000000000cab9b1065135bae6 Content-Type: application/octet-stream; name="v22-0001-Add-tests-for-cross-session-temp-table-access.patch" Content-Disposition: attachment; filename="v22-0001-Add-tests-for-cross-session-temp-table-access.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mov6r15p0 RnJvbSA3N2FlMTRiYTMxMzk2ZTI1Yjc0MTdiOTM1N2VkYjc5ODI2MTEwMzVkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGV4YW5kZXIgS29yb3Rrb3YgPGFrb3JvdGtvdkBwb3N0Z3Jl c3FsLm9yZz4KRGF0ZTogU2F0LCAyIE1heSAyMDI2IDE1OjIyOjI2ICswMzAwClN1YmplY3Q6IFtQ QVRDSCB2MjIgMS8yXSBBZGQgdGVzdHMgZm9yIGNyb3NzLXNlc3Npb24gdGVtcCB0YWJsZSBhY2Nl c3MKCkFkZCBhIFRBUCB0ZXN0IGluIHNyYy90ZXN0L21vZHVsZXMvdGVzdF9taXNjIHRoYXQgZG9j dW1lbnRzIHdoYXQKaGFwcGVucyB3aGVuIG9uZSBzZXNzaW9uIGF0dGVtcHRzIHRvIHJlYWQgb3Ig bW9kaWZ5IGFub3RoZXIgc2Vzc2lvbidzCnRlbXBvcmFyeSB0YWJsZS4gIFRoaXMgY29tbWl0IG9u bHkgYWRkcyB0ZXN0czsgaXQgZG9lcyBub3QgY2hhbmdlCmJhY2tlbmQgYmVoYXZpb3VyLCBzbyB0 aGUgYXNzZXJ0aW9ucyByZWZsZWN0IGN1cnJlbnQgYmVoYXZpb3VyOgoKLSBTRUxFQ1QsIFVQREFU RSwgREVMRVRFLCBNRVJHRSwgQ09QWSBvbiBhIHRhYmxlIHdpdGhvdXQgYW4gaW5kZXgKICBzaWxl bnRseSBzdWNjZWVkIHdpdGggbm8gZXJyb3IgYW5kIHplcm8gcm93cyAvIHplcm8gYWZmZWN0ZWQg cm93cy4KICBUaGVzZSBjb21tYW5kcyBydW4gdGhyb3VnaCB0aGUgcmVhZC1zdHJlYW0gcGF0aCwg d2hpY2ggY3VycmVudGx5CiAgYnlwYXNzZXMgdGhlIFJFTEFUSU9OX0lTX09USEVSX1RFTVAoKSBj aGVjay4gIFRoaXMgaXMgdGhlCiAgdW5kZXJseWluZyBidWcgdG8gYmUgZml4ZWQgaW4gYSBmb2xs b3ctdXAuCi0gSU5TRVJUIGVycm9ycyB3aXRoICJjYW5ub3QgYWNjZXNzIHRlbXBvcmFyeSB0YWJs ZXMgb2Ygb3RoZXIKICBzZXNzaW9ucyIgYmVjYXVzZSBoaW8uYyBjYWxscyBSZWFkQnVmZmVyRXh0 ZW5kZWQoKSB0byBmaW5kIGEgcGFnZQogIHdpdGggZnJlZSBzcGFjZSBhbmQgaXMgY2F1Z2h0IGJ5 IHRoZSBleGlzdGluZyBjaGVjayB0aGVyZS4KLSBJbmRleCBzY2FuIGVycm9ycyB2aWEgdGhlIHNh bWUgZXhpc3RpbmcgY2hlY2ssIHJlYWNoZWQgdGhyb3VnaAogIG5idHJlZSAtPiBSZWFkQnVmZmVy IC0+IFJlYWRCdWZmZXJFeHRlbmRlZC4KLSBUUlVOQ0FURSAvIEFMVEVSIFRBQkxFIC8gQUxURVIg SU5ERVggLyBDTFVTVEVSIGZhaWwgd2l0aCB0aGVpcgogIGNvbW1hbmQtc3BlY2lmaWMgZXJyb3Ig bWVzc2FnZXMuCi0gVkFDVVVNIGlzIHNpbGVudGx5IHNraXBwZWQgdG8gYXZvaWQgbm9pc2UgZHVy aW5nIGRhdGFiYXNlLXdpZGUKICBWQUNVVU0gKHZhY3V1bV9yZWwoKSByZXR1cm5zIHdpdGhvdXQg d2FybmluZykuCi0gRFJPUCBUQUJMRSBpcyBpbnRlbnRpb25hbGx5IGFsbG93ZWQ6IERST1AgZG9l cyBub3QgdG91Y2ggdGhlCiAgdGFibGUncyBjb250ZW50cywgYW5kIGF1dG92YWN1dW0gcmVsaWVz IG9uIHRoaXMgdG8gY2xlYW4gdXAKICB0ZW1wIHJlbGF0aW9ucyBvcnBoYW5lZCBieSBhIGNyYXNo ZWQgYmFja2VuZC4KLSBBTFRFUiBGVU5DVElPTiAvIERST1AgRlVOQ1RJT04gb24gYW4gb3duZXIt Y3JlYXRlZCBmdW5jdGlvbiBvdmVyCiAgaXRzIG93biB0ZW1wIHJvdyB0eXBlIHdvcmsgYXMgY2F0 YWxvZyBvcGVyYXRpb25zIC0tIHRoZXkgZG9uJ3QKICByZWFkIHRoZSB1bmRlcmx5aW5nIGRhdGEu Ci0gQ1JFQVRFIEZVTkNUSU9OIGZyb20gYSBzZXBhcmF0ZSBzZXNzaW9uLCB1c2luZyBhbm90aGVy IHNlc3Npb24ncwogIHRlbXAgcm93IHR5cGUgYXMgYW4gYXJndW1lbnQsIGlzIGFsbG93ZWQgYnV0 IGVtaXRzIGEgTk9USUNFOiB0aGUKICBmdW5jdGlvbiBpcyBtb3ZlZCBpbnRvIHRoZSBjcmVhdG9y J3MgcGdfdGVtcCBuYW1lc3BhY2Ugd2l0aCBhbgogIGF1dG8tZGVwZW5kZW5jeSBvbiB0aGUgYm9y cm93ZWQgdHlwZSwgc28gaXQgZGlzYXBwZWFycyB0b2dldGhlcgogIHdpdGggdGhlIHNlc3Npb24g dGhhdCBjcmVhdGVkIGl0LgotIEEgYmFyZSBEUk9QIFRBQkxFIG9uIGEgdGVtcCB0YWJsZSB0aGF0 IGhhcyBhIGNyb3NzLXNlc3Npb24KICBkZXBlbmRlbnQgZnVuY3Rpb24gZmFpbHMgd2l0aCBhIGNh dGFsb2ctbGV2ZWwgZGVwZW5kZW5jeSBlcnJvci4KLSBMT0NLIFRBQkxFIGluIEFDQ0VTUyBTSEFS RSBtb2RlIG9uIGFub3RoZXIgc2Vzc2lvbidzIHRlbXAgdGFibGUKICBzdWNjZWVkcyBhbmQgcHJv cGVybHkgYmxvY2tzIHRoZSBvd25lcidzIHNlc3Npb24tZXhpdCBjbGVhbnVwCiAgKHdoaWNoIGFj cXVpcmVzIEFjY2Vzc0V4Y2x1c2l2ZUxvY2sgdmlhIGZpbmREZXBlbmRlbnRPYmplY3RzKS4KICBU aGlzIGV4ZXJjaXNlcyB0aGUgc2FtZSBMb2NrUmVsYXRpb25PaWQgcGF0aCB1c2VkIGJ5IGF1dG92 YWN1dW0KICB3aGVuIGNsZWFuaW5nIHVwIG9ycGhhbmVkIHRlbXAgcmVsYXRpb25zLgotIFdoZW4g dGhlIG93bmVyIHNlc3Npb24gZW5kcywgdGhlIG5vcm1hbCBzZXNzaW9uLWV4aXQgY2xlYW51cAog IGNhc2NhZGVzIHRocm91Z2ggREVQRU5ERU5DWV9OT1JNQUwgYW5kIHJlbW92ZXMgYm90aCB0aGUg dGVtcAogIG9iamVjdHMgYW5kIGFueSBjcm9zcy1zZXNzaW9uIGZ1bmN0aW9ucyB0aGF0IGRlcGVu ZGVkIG9uIHRoZW0uCgpBbHNvIGRvY3VtZW50IHRoZSBjb250cmFjdCBmb3IgUkVMQVRJT05fSVNf T1RIRVJfVEVNUCgpIHNvIHRoYXQKZnV0dXJlIGJ1ZmZlci1hY2Nlc3MgZW50cnkgcG9pbnRzIGVu Zm9yY2UgdGhlIHNhbWUgcnVsZS4KCkF1dGhvcjogSmltIEpvbmVzIDxqaW0uam9uZXNAdW5pLW11 ZW5zdGVyLmRlPgpBdXRob3I6IERhbmlpbCBEYXZ5ZG92IDwzZGFuaXNzaW1vQGdtYWlsLmNvbT4K Q28tYXV0aG9yZWQtYnk6IEFsZXhhbmRlciBLb3JvdGtvdiA8YWVrb3JvdGtvdkBnbWFpbC5jb20+ ClJldmlld2VkLWJ5OiBNaWNoYWVsIFBhcXVpZXIgPG1pY2hhZWxAcGFxdWllci54eXo+ClJldmll d2VkLWJ5OiBTb3VteWEgUyBNdXJhbGkgPHNvdW15YW11cmFsaS53b3JrQGdtYWlsLmNvbT4KUmV2 aWV3ZWQtYnk6IFRvbSBMYW5lIDx0Z2xAc3NzLnBnaC5wYS51cz4KRGlzY3Vzc2lvbjogaHR0cHM6 Ly9wb3N0Z3IuZXMvbS9DQUpEaVhnaGRGY1o4JTNEbmg0RzY5dGU3aVJyM1EwdUZ5WHhiM1pkRzA5 X0dUTlpYd0gwZyU0MG1haWwuZ21haWwuY29tCi0tLQogc3JjL2luY2x1ZGUvdXRpbHMvcmVsLmgg ICAgICAgICAgICAgICAgICAgICAgIHwgICA5ICsKIHNyYy90ZXN0L21vZHVsZXMvdGVzdF9taXNj L21lc29uLmJ1aWxkICAgICAgICB8ICAgMSArCiAuLi4vdGVzdF9taXNjL3QvMDEzX3RlbXBfb2Jq X211bHRpc2Vzc2lvbi5wbCAgfCAyNjcgKysrKysrKysrKysrKysrKysrCiAzIGZpbGVzIGNoYW5n ZWQsIDI3NyBpbnNlcnRpb25zKCspCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvbW9kdWxl cy90ZXN0X21pc2MvdC8wMTNfdGVtcF9vYmpfbXVsdGlzZXNzaW9uLnBsCgpkaWZmIC0tZ2l0IGEv c3JjL2luY2x1ZGUvdXRpbHMvcmVsLmggYi9zcmMvaW5jbHVkZS91dGlscy9yZWwuaAppbmRleCBj ZDFlOTJmMjMwMi4uYWQ1MGU0M2I4MDEgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3V0aWxzL3Jl bC5oCisrKyBiL3NyYy9pbmNsdWRlL3V0aWxzL3JlbC5oCkBAIC02NjQsNiArNjY0LDE1IEBAIFJl bGF0aW9uQ2xvc2VTbWdyKFJlbGF0aW9uIHJlbGF0aW9uKQogICogUkVMQVRJT05fSVNfT1RIRVJf VEVNUAogICoJCVRlc3QgZm9yIGEgdGVtcG9yYXJ5IHJlbGF0aW9uIHRoYXQgYmVsb25ncyB0byBz b21lIG90aGVyIHNlc3Npb24uCiAgKgorICogQW55IGNvZGUgcGF0aCB0aGF0IHJlYWRzIGEgcmVs YXRpb24ncyBkYXRhIG11c3QgcmVqZWN0IHN1Y2ggcmVsYXRpb25zOgorICogdGhlIG93bmluZyBz ZXNzaW9uIGtlZXBzIHRoZSBkYXRhIGluIGl0cyBwcml2YXRlIGxvY2FsIGJ1ZmZlciBwb29sLAor ICogd2hpY2ggd2UgY2Fubm90IGluc3BlY3QuICBFeGlzdGluZyBidWZmZXItbWFuYWdlciBlbnRy eSBwb2ludHMKKyAqIChSZWFkQnVmZmVyRXh0ZW5kZWQoKSwgUmVhZEJ1ZmZlcl9jb21tb24oKSwg U3RhcnRSZWFkQnVmZmVyc0ltcGwoKSwKKyAqIHJlYWRfc3RyZWFtX2JlZ2luX2ltcGwoKSwgUHJl ZmV0Y2hCdWZmZXIoKSkgYWxyZWFkeSBlbmZvcmNlIHRoaXM7IGFueQorICogbmV3IGJ1ZmZlci1h Y2Nlc3MgZW50cnkgcG9pbnQgbXVzdCBkbyB0aGUgc2FtZS4gIENvbW1hbmQtbGV2ZWwgY29kZQor ICogKFRSVU5DQVRFLCBBTFRFUiBUQUJMRSwgVkFDVVVNLCBDTFVTVEVSLCBSRUlOREVYLCAuLi4p IGFkZGl0aW9uYWxseQorICogdXNlcyB0aGlzIG1hY3JvIGZvciBjb21tYW5kLXNwZWNpZmljIGVy cm9yIG1lc3NhZ2VzLgorICoKICAqIEJld2FyZSBvZiBtdWx0aXBsZSBldmFsIG9mIGFyZ3VtZW50 CiAgKi8KICNkZWZpbmUgUkVMQVRJT05fSVNfT1RIRVJfVEVNUChyZWxhdGlvbikgXApkaWZmIC0t Z2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X21pc2MvbWVzb24uYnVpbGQgYi9zcmMvdGVzdC9t b2R1bGVzL3Rlc3RfbWlzYy9tZXNvbi5idWlsZAppbmRleCAzNTZkODQ1NGIzOS4uOTY5ZTkwYjM5 NmQgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9taXNjL21lc29uLmJ1aWxkCisr KyBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9taXNjL21lc29uLmJ1aWxkCkBAIC0yMSw2ICsyMSw3 IEBAIHRlc3RzICs9IHsKICAgICAgICd0LzAxMF9pbmRleF9jb25jdXJyZW50bHlfdXBzZXJ0LnBs JywKICAgICAgICd0LzAxMV9sb2NrX3N0YXRzLnBsJywKICAgICAgICd0LzAxMl9kZGx1dGlscy5w bCcsCisgICAgICAndC8wMTNfdGVtcF9vYmpfbXVsdGlzZXNzaW9uLnBsJywKICAgICBdLAogICAg ICMgVGhlIGluamVjdGlvbiBwb2ludHMgYXJlIGNsdXN0ZXItd2lkZSwgc28gZGlzYWJsZSBpbnN0 YWxsY2hlY2sKICAgICAncnVubmluZ2NoZWNrJzogZmFsc2UsCmRpZmYgLS1naXQgYS9zcmMvdGVz dC9tb2R1bGVzL3Rlc3RfbWlzYy90LzAxM190ZW1wX29ial9tdWx0aXNlc3Npb24ucGwgYi9zcmMv dGVzdC9tb2R1bGVzL3Rlc3RfbWlzYy90LzAxM190ZW1wX29ial9tdWx0aXNlc3Npb24ucGwKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmJmY2JhNDJhY2QwCi0tLSAvZGV2 L251bGwKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X21pc2MvdC8wMTNfdGVtcF9vYmpfbXVs dGlzZXNzaW9uLnBsCkBAIC0wLDAgKzEsMjY3IEBACisjIENvcHlyaWdodCAoYykgMjAyNiwgUG9z dGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKworIyBUZXN0cyB0aGF0IG9uZSBzZXNz aW9uIGNhbm5vdCByZWFkIG9yIG1vZGlmeSBkYXRhIGluIGFub3RoZXIgc2Vzc2lvbidzCisjIHRl bXBvcmFyeSB0YWJsZS4gIEVhY2ggc2Vzc2lvbiBrZWVwcyBpdHMgdGVtcCBkYXRhIGluIGl0cyBv d24gbG9jYWwKKyMgYnVmZmVyIHBvb2wsIGFuZCBhIGRpZmZlcmVudCBiYWNrZW5kIGhhcyBubyB2 aXNpYmlsaXR5IGludG8gdGhvc2UKKyMgYnVmZmVycywgc28gYW55IGNvbW1hbmQgdGhhdCBuZWVk cyB0byBsb29rIGF0IHRoZSBkYXRhIG11c3QgYmUKKyMgcmVqZWN0ZWQuCisjCisjIERST1AgVEFC TEUgaXMgaW50ZW50aW9uYWxseSBhbGxvd2VkOiBpdCBkb2VzIG5vdCB0b3VjaCB0aGUgdGFibGUn cworIyBjb250ZW50cywgYW5kIGF1dG92YWN1dW0gcmVsaWVzIG9uIHRoaXMgdG8gY2xlYW4gdXAg b3JwaGFuZWQgdGVtcAorIyByZWxhdGlvbnMgbGVmdCBiZWhpbmQgYnkgYSBjcmFzaGVkIGJhY2tl bmQuCisjCisjIEEgcmVncmVzc2lvbiBjYXVnaHQgaGVyZSB0eXBpY2FsbHkgbWVhbnMgYSBuZXcg YnVmZmVyLWFjY2VzcyBlbnRyeQorIyBwb2ludCBieXBhc3NlcyB0aGUgUkVMQVRJT05fSVNfT1RI RVJfVEVNUCgpIGNoZWNrLiAgU2VlCisjIFJlYWRCdWZmZXJfY29tbW9uKCksIFN0YXJ0UmVhZEJ1 ZmZlcnNJbXBsKCksIGFuZCByZWFkX3N0cmVhbV9iZWdpbl9pbXBsKCkKKyMgZm9yIHRoZSBleGlz dGluZyBjaGVja3MuICBXaGVuIGFkZGluZyBhIG5ldyBjb21tYW5kIG9yIGJ1ZmZlci1hY2Nlc3MK KyMgcGF0aCwgYWxzbyBhZGQgYSBjb3JyZXNwb25kaW5nIGNhc2UgYmVsb3cuCisKK3VzZSBzdHJp Y3Q7Cit1c2Ugd2FybmluZ3M7Cit1c2UgUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3RlcjsKK3VzZSBQ b3N0Z3JlU1FMOjpUZXN0OjpVdGlsczsKK3VzZSBQb3N0Z3JlU1FMOjpUZXN0OjpCYWNrZ3JvdW5k UHNxbDsKK3VzZSBUZXN0OjpNb3JlOworCitteSAkbm9kZSA9IFBvc3RncmVTUUw6OlRlc3Q6OkNs dXN0ZXItPm5ldygndGVtcF9sb2NrJyk7Ciskbm9kZS0+aW5pdDsKKyRub2RlLT5zdGFydDsKKwor IyBPd25lciBzZXNzaW9uLiAgQ3JlYXRlZCB2aWEgYmFja2dyb3VuZF9wc3FsIHNvIGl0IHN0YXlz IGFsaXZlIHdoaWxlCisjIHRoZSBzZWNvbmQgc2Vzc2lvbiBwcm9iZXMgaXRzIHRlbXAgb2JqZWN0 cy4KK215ICRwc3FsMSA9ICRub2RlLT5iYWNrZ3JvdW5kX3BzcWwoJ3Bvc3RncmVzJyk7CisKKyMg SW5pdGlhbGx5IGNyZWF0ZSB0aGUgdGFibGUgd2l0aG91dCBhbiBpbmRleCwgc28gcmVhZCBwYXRo cyBnbyBzdHJhaWdodAorIyB0aHJvdWdoIHRoZSByZWFkLXN0cmVhbSAvIGJ1ZmZlci1tYW5hZ2Vy IGVudHJ5IHBvaW50cyB3aXRob3V0IGJlaW5nCisjIG1hc2tlZCBieSBhbiBpbmRleCBzY2FuIHRo YXQgd291bGQgaGl0IFJlYWRCdWZmZXJfY29tbW9uIGZyb20gbmJ0cmVlLgorJHBzcWwxLT5xdWVy eV9zYWZlKHEoQ1JFQVRFIFRFTVAgVEFCTEUgZm9vIEFTIFNFTEVDVCA0MiBBUyB2YWw7KSk7CisK KyMgUmVzb2x2ZSB0aGUgb3duZXIncyB0ZW1wIHNjaGVtYSBzbyB0aGUgcHJvYmluZyBzZXNzaW9u IGNhbiByZWZlciB0bworIyB0aGUgdGFibGUgYnkgYSBmdWxseS1xdWFsaWZpZWQgbmFtZS4KK215 ICR0ZW1wc2NoZW1hID0gJG5vZGUtPnNhZmVfcHNxbCgKKwkncG9zdGdyZXMnLAorCXF7CisgICAg ICBTRUxFQ1Qgbi5uc3BuYW1lCisgICAgICBGUk9NIHBnX2NsYXNzIGMKKyAgICAgIEpPSU4gcGdf bmFtZXNwYWNlIG4gT04gbi5vaWQgPSBjLnJlbG5hbWVzcGFjZQorICAgICAgV0hFUkUgcmVsbmFt ZSA9ICdmb28nIEFORCByZWxwZXJzaXN0ZW5jZSA9ICd0JzsKKyAgICB9CispOworY2hvbXAgJHRl bXBzY2hlbWE7CitvaygkdGVtcHNjaGVtYSA9fiAvXnBnX3RlbXBfXGQrJC8sICJnb3QgdGVtcCBz Y2hlbWE6ICR0ZW1wc2NoZW1hIik7CisKK215ICgkc3Rkb3V0LCAkc3RkZXJyKTsKKworIyBETUwg YW5kIFNFTEVDVCBoYXZlIHRvIHJlYWQgdGhlIHRhYmxlJ3MgZGF0YSBhbmQgdGhlcmVmb3JlIGdv IHRocm91Z2gKKyMgdGhlIGJ1ZmZlciBtYW5hZ2VyLiAgV2l0aCBubyBpbmRleCBvbiB0aGUgdGFi bGUsIHRoZSBwbGFubmVyIGNhbm5vdAorIyB1c2UgaW5kZXggYWNjZXNzLCBzbyBTRUxFQ1QvVVBE QVRFL0RFTEVURS9NRVJHRS9DT1BZIGFsbCBydW4gdGhyb3VnaAorIyB0aGUgcmVhZC1zdHJlYW0g cGF0aC4KKyMKKyMgWFhYOiBpbiBjdXJyZW50IGNvZGUsIHRoZSByZWFkLXN0cmVhbSBwYXRoIGJ5 cGFzc2VzIHRoZQorIyBSRUxBVElPTl9JU19PVEhFUl9URU1QKCkgY2hlY2ssIHNvIHRoZXNlIGNv bW1hbmRzIHNpbGVudGx5IHNlZSBubworIyByb3dzIC8gcmVwb3J0IHplcm8gYWZmZWN0ZWQgcm93 cyAtLSB0aGUgdmlzaWJsZSBzeW1wdG9tIG9mIHRoZSBidWcKKyMgdGhpcyB0ZXN0IHN1aXRlIGRv Y3VtZW50cy4gIEEgZm9sbG93LXVwIHBhdGNoIHdpbGwgcm91dGUgdGhlIGNoZWNrCisjIHRocm91 Z2ggcmVhZF9zdHJlYW1fYmVnaW5faW1wbCgpIGFuZCB0aGVzZSBhc3NlcnRpb25zIHdpbGwgYmUK KyMgdXBkYXRlZCB0byBleHBlY3QgImNhbm5vdCBhY2Nlc3MgdGVtcG9yYXJ5IHRhYmxlcyBvZiBv dGhlciBzZXNzaW9ucyIuCisKKyRub2RlLT5wc3FsKAorCSdwb3N0Z3JlcycsCisJIlNFTEVDVCB2 YWwgRlJPTSAkdGVtcHNjaGVtYS5mb287IiwKKwlzdGRvdXQgPT4gXCRzdGRvdXQsCisJc3RkZXJy ID0+IFwkc3RkZXJyKTsKK2lzKCRzdGRlcnIsICcnLCAnU0VMRUNUIChjdXJyZW50bHkgbm8gZXJy b3IgLS0gYnVnIHRvIGJlIGZpeGVkKScpOworCisjIElOU0VSVCBnb2VzIHRocm91Z2ggaGlvLmMg d2hpY2ggY2FsbHMgUmVhZEJ1ZmZlckV4dGVuZGVkKCkgdG8gZmluZCBhCisjIHBhZ2Ugd2l0aCBm cmVlIHNwYWNlOyB0aGF0IGhpdHMgdGhlIGV4aXN0aW5nIGNoZWNrIGJlZm9yZSBhbnkgZGF0YSBp cworIyB3cml0dGVuLiAgVGhpcyBjYXNlIGN1cnJlbnRseSBlcnJvcnMgYXMgZXhwZWN0ZWQuCisk bm9kZS0+cHNxbCgKKwkncG9zdGdyZXMnLAorCSJJTlNFUlQgSU5UTyAkdGVtcHNjaGVtYS5mb28g VkFMVUVTICg3Myk7IiwKKwlzdGRlcnIgPT4gXCRzdGRlcnIpOworbGlrZSgKKwkkc3RkZXJyLAor CXFyL2Nhbm5vdCBhY2Nlc3MgdGVtcG9yYXJ5IHRhYmxlcyBvZiBvdGhlciBzZXNzaW9ucy8sCisJ J0lOU0VSVCAoY2F1Z2h0IHZpYSBoaW8uYyknKTsKKworJG5vZGUtPnBzcWwoCisJJ3Bvc3RncmVz JywKKwkiVVBEQVRFICR0ZW1wc2NoZW1hLmZvbyBTRVQgdmFsID0gTlVMTDsiLAorCXN0ZGVyciA9 PiBcJHN0ZGVycik7Citpcygkc3RkZXJyLCAnJywgJ1VQREFURSAoY3VycmVudGx5IG5vIGVycm9y IC0tIGJ1ZyB0byBiZSBmaXhlZCknKTsKKworJG5vZGUtPnBzcWwoJ3Bvc3RncmVzJywgIkRFTEVU RSBGUk9NICR0ZW1wc2NoZW1hLmZvbzsiLCBzdGRlcnIgPT4gXCRzdGRlcnIpOworaXMoJHN0ZGVy ciwgJycsICdERUxFVEUgKGN1cnJlbnRseSBubyBlcnJvciAtLSBidWcgdG8gYmUgZml4ZWQpJyk7 CisKKyRub2RlLT5wc3FsKAorCSdwb3N0Z3JlcycsCisJIk1FUkdFIElOVE8gJHRlbXBzY2hlbWEu Zm9vIFVTSU5HIChWQUxVRVMgKDQyKSkgQVMgcyh2YWwpICIKKwkgIC4gIk9OIGZvby52YWwgPSBz LnZhbCBXSEVOIE1BVENIRUQgVEhFTiBERUxFVEU7IiwKKwlzdGRlcnIgPT4gXCRzdGRlcnIpOwor aXMoJHN0ZGVyciwgJycsICdNRVJHRSAoY3VycmVudGx5IG5vIGVycm9yIC0tIGJ1ZyB0byBiZSBm aXhlZCknKTsKKworJG5vZGUtPnBzcWwoJ3Bvc3RncmVzJywgIkNPUFkgJHRlbXBzY2hlbWEuZm9v IFRPIFNURE9VVDsiLAorCXN0ZGVyciA9PiBcJHN0ZGVycik7Citpcygkc3RkZXJyLCAnJywgJ0NP UFkgKGN1cnJlbnRseSBubyBlcnJvciAtLSBidWcgdG8gYmUgZml4ZWQpJyk7CisKKyMgRERMIGFu ZCBtYWludGVuYW5jZSBjb21tYW5kcyBoYXZlIHRoZWlyIG93biBjb21tYW5kLXNwZWNpZmljIGNo ZWNrcworIyAob2xkZXIgdGhhbiB0aGUgYnVmZmVyLW1hbmFnZXIgY2hlY2sgYWJvdmUpLCBzbyB0 aGV5IGZhaWwgd2l0aAorIyBjb21tYW5kLXNwZWNpZmljIGVycm9yIG1lc3NhZ2VzLiAgVmVyaWZ5 aW5nIHRoZW0gaGVyZSBkb2N1bWVudHMgdGhlCisjIGV4cGVjdGVkIGJlaGF2aW91ciBhbmQgZ3Vh cmRzIGFnYWluc3QgYWNjaWRlbnRhbCByZW1vdmFsIG9mIHRob3NlCisjIGNoZWNrcy4KKworJG5v ZGUtPnBzcWwoJ3Bvc3RncmVzJywgIlRSVU5DQVRFIFRBQkxFICR0ZW1wc2NoZW1hLmZvbzsiLAor CXN0ZGVyciA9PiBcJHN0ZGVycik7CitsaWtlKCRzdGRlcnIsIHFyL2Nhbm5vdCB0cnVuY2F0ZSB0 ZW1wb3JhcnkgdGFibGVzIG9mIG90aGVyIHNlc3Npb25zLywKKwknVFJVTkNBVEUnKTsKKworJG5v ZGUtPnBzcWwoCisJJ3Bvc3RncmVzJywKKwkiQUxURVIgVEFCTEUgJHRlbXBzY2hlbWEuZm9vIEFM VEVSIENPTFVNTiB2YWwgVFlQRSBiaWdpbnQ7IiwKKwlzdGRlcnIgPT4gXCRzdGRlcnIpOworbGlr ZSgkc3RkZXJyLCBxci9jYW5ub3QgYWx0ZXIgdGVtcG9yYXJ5IHRhYmxlcyBvZiBvdGhlciBzZXNz aW9ucy8sCisJJ0FMVEVSIFRBQkxFJyk7CisKKyMgVkFDVVVNIHNpbGVudGx5IHNraXBzIG90aGVy IHNlc3Npb25zJyB0ZW1wIHRhYmxlcyAodmFjdXVtX3JlbCgpIHJldHVybnMKKyMgd2l0aG91dCB3 YXJuaW5nIHRvIGF2b2lkIG5vaXNlIGR1cmluZyBkYXRhYmFzZS13aWRlIFZBQ1VVTSkuICBWZXJp ZnkKKyMgdGhhdCBubyBlcnJvciBpcyByZXBvcnRlZCwgYW5kIHRoYXQgbm8gYnVmZmVyLWFjY2Vz cyBwYXRoIGlzIGhpdC4KKyRub2RlLT5wc3FsKCdwb3N0Z3JlcycsICJWQUNVVU0gJHRlbXBzY2hl bWEuZm9vOyIsIHN0ZGVyciA9PiBcJHN0ZGVycik7Citpcygkc3RkZXJyLCAnJywgJ1ZBQ1VVTSBp cyBzaWxlbnRseSBza2lwcGVkJyk7CisKKyRub2RlLT5wc3FsKCdwb3N0Z3JlcycsICJDTFVTVEVS ICR0ZW1wc2NoZW1hLmZvbzsiLCBzdGRlcnIgPT4gXCRzdGRlcnIpOworbGlrZSgkc3RkZXJyLAor CXFyL2Nhbm5vdCBleGVjdXRlIENMVVNURVIgb24gdGVtcG9yYXJ5IHRhYmxlcyBvZiBvdGhlciBz ZXNzaW9ucy8sCisJJ0NMVVNURVInKTsKKworIyBOb3cgY3JlYXRlIGFuIGluZGV4IHRvIGV4ZXJj aXNlIHRoZSBpbmRleC1zY2FuIHBhdGguICBuYnRyZWUgY2FsbHMKKyMgUmVhZEJ1ZmZlciAod2hp Y2ggaXMgUmVhZEJ1ZmZlckV4dGVuZGVkIC0+IFJlYWRCdWZmZXJfY29tbW9uKSwgc28KKyMgdGhp cyBleGVyY2lzZXMgYSBkaWZmZXJlbnQgY2hhaW4gb2YgYnVmZmVyLW1hbmFnZXIgZW50cnkgcG9p bnRzLgorJHBzcWwxLT5xdWVyeV9zYWZlKHEoQ1JFQVRFIElOREVYIE9OIGZvbyh2YWwpOykpOwor Ciskbm9kZS0+cHNxbCgKKwkncG9zdGdyZXMnLAorCSJTRVQgZW5hYmxlX3NlcXNjYW4gPSBvZmY7 IFNFTEVDVCB2YWwgRlJPTSAkdGVtcHNjaGVtYS5mb28gV0hFUkUgdmFsID0gNDI7IiwKKwlzdGRl cnIgPT4gXCRzdGRlcnIpOworbGlrZSgKKwkkc3RkZXJyLAorCXFyL2Nhbm5vdCBhY2Nlc3MgdGVt cG9yYXJ5IHRhYmxlcyBvZiBvdGhlciBzZXNzaW9ucy8sCisJJ2luZGV4IHNjYW4gKFJlYWRCdWZm ZXJfY29tbW9uIHZpYSBuYnRyZWUpJyk7CisKKyMgQUxURVIgSU5ERVggZ29lcyB0aHJvdWdoIHRo ZSBzYW1lIENoZWNrQWx0ZXJUYWJsZUlzU2FmZSgpIHBhdGggYXMKKyMgQUxURVIgVEFCTEUsIHNv IGl0IHByb2R1Y2VzIHRoZSBzYW1lIGVycm9yLgorJG5vZGUtPnBzcWwoCisJJ3Bvc3RncmVzJywK KwkiQUxURVIgSU5ERVggJHRlbXBzY2hlbWEuZm9vX3ZhbF9pZHggU0VUIChmaWxsZmFjdG9yID0g NTApOyIsCisJc3RkZXJyID0+IFwkc3RkZXJyKTsKK2xpa2UoJHN0ZGVyciwgcXIvY2Fubm90IGFs dGVyIHRlbXBvcmFyeSB0YWJsZXMgb2Ygb3RoZXIgc2Vzc2lvbnMvLAorCSdBTFRFUiBJTkRFWCcp OworCisjIEEgZnVuY3Rpb24gY3JlYXRlZCBieSB0aGUgb3duZXIgaW4gaXRzIG93biBwZ190ZW1w IHVzaW5nIGl0cyBvd24KKyMgcm93IHR5cGUgY2FuIGJlIG9ic2VydmVkIHZpYSB0aGUgY2F0YWxv ZyBieSBhIHNlcGFyYXRlIHNlc3Npb24uCisjIEFMVEVSIEZVTkNUSU9OIGFuZCBEUk9QIEZVTkNU SU9OIG9uIGl0IG11c3Qgd29yayBhcyBjYXRhbG9nCisjIG9wZXJhdGlvbnMgLS0gdGhleSBkb24n dCByZWFkIHRoZSB1bmRlcmx5aW5nIHRhYmxlIC0tIHdoaWNoCisjIGRvY3VtZW50cyB0aGUgYm91 bmRhcnkgYmV0d2VlbiBjYXRhbG9nIGFuZCBkYXRhIGFjY2VzcyBmb3IgdGVtcAorIyBvYmplY3Rz LgorJHBzcWwxLT5xdWVyeV9zYWZlKAorCQlxW0NSRUFURSBGVU5DVElPTiBwZ190ZW1wLmZvb19p ZChyIGZvbykgUkVUVVJOUyBpbnQgTEFOR1VBR0UgU1FMIF0KKwkgIC4gcVtBUyAnU0VMRUNUIHIu dmFsJztdKTsKKworJG5vZGUtPnBzcWwoCisJJ3Bvc3RncmVzJywKKwkiQUxURVIgRlVOQ1RJT04g JHRlbXBzY2hlbWEuZm9vX2lkKCR0ZW1wc2NoZW1hLmZvbykgIgorCSAgLiAiU0VUIHNlYXJjaF9w YXRoID0gcGdfY2F0YWxvZzsiLAorCXN0ZGVyciA9PiBcJHN0ZGVycik7Citpcygkc3RkZXJyLCAn JywgJ0FMVEVSIEZVTkNUSU9OIG9uIGZ1bmN0aW9uIG92ZXIgb3RoZXIgc2Vzc2lvblwncyByb3cg dHlwZScpOworCiskbm9kZS0+cHNxbCgKKwkncG9zdGdyZXMnLAorCSJEUk9QIEZVTkNUSU9OICR0 ZW1wc2NoZW1hLmZvb19pZCgkdGVtcHNjaGVtYS5mb28pOyIsCisJc3RkZXJyID0+IFwkc3RkZXJy KTsKK2lzKCRzdGRlcnIsICcnLCAnRFJPUCBGVU5DVElPTiBvbiBmdW5jdGlvbiBvdmVyIG90aGVy IHNlc3Npb25cJ3Mgcm93IHR5cGUnKTsKKworIyBEUk9QIFRBQkxFIG9uIGFub3RoZXIgc2Vzc2lv bidzIHRlbXAgdGFibGUgaXMgaW50ZW50aW9uYWxseSBwZXJtaXR0ZWQuCisjIERST1AgZG9lc24n dCB0b3VjaCB0aGUgdGFibGUncyBjb250ZW50cywgYW5kIGF1dG92YWN1dW0gcmVsaWVzIG9uIHRo aXMKKyMgdG8gcmVtb3ZlIHRlbXAgcmVsYXRpb25zIG9ycGhhbmVkIGJ5IGEgY3Jhc2hlZCBiYWNr ZW5kLiAgVmVyaWZ5IHRoYXQKKyMgdGhlIGJhcmUgRFJPUCBzdWNjZWVkcyB3aXRob3V0IGVycm9y LgorJG5vZGUtPnBzcWwoJ3Bvc3RncmVzJywgIkRST1AgVEFCTEUgJHRlbXBzY2hlbWEuZm9vOyIs IHN0ZGVyciA9PiBcJHN0ZGVycik7Citpcygkc3RkZXJyLCAnJywgJ0RST1AgVEFCTEUgaXMgYWxs b3dlZCcpOworCisjIENyb3NzLXNlc3Npb24gQ1JFQVRFIEZVTkNUSU9OIHNjZW5hcmlvLiAgVGhl IG93bmVyIGNyZWF0ZXMgYSBmcmVzaAorIyB0ZW1wIHRhYmxlIGZvbzIgaW4gaXRzIHBnX3RlbXAg bmFtZXNwYWNlLCBhbmQgYSBzZXBhcmF0ZSBzZXNzaW9uCisjIHRoZW4gY3JlYXRlcyBhIGZ1bmN0 aW9uIHdob3NlIGFyZ3VtZW50IHR5cGUgaXMgdGhhdCByb3cgdHlwZS4KKyMgUG9zdGdyZVNRTCBh bGxvd3MgdGhpcyBhbmQgZW1pdHMgYSBOT1RJQ0U6IHRoZSBmdW5jdGlvbiBpcyBtb3ZlZAorIyBp bnRvIHRoZSBjcmVhdG9yJ3MgcGdfdGVtcCBuYW1lc3BhY2Ugd2l0aCBhbiBhdXRvLWRlcGVuZGVu Y3kgb24KKyMgdGhlIGJvcnJvd2VkIHR5cGUsIHNvIGl0IGRpc2FwcGVhcnMgdG9nZXRoZXIgd2l0 aCB0aGUgc2Vzc2lvbiB0aGF0CisjIGNyZWF0ZWQgaXQuCiskcHNxbDEtPnF1ZXJ5X3NhZmUocShD UkVBVEUgVEVNUCBUQUJMRSBmb28yIEFTIFNFTEVDVCA0MiBBUyB2YWw7KSk7CisKKyRub2RlLT5w c3FsKAorCSdwb3N0Z3JlcycsCisJIkNSRUFURSBGVU5DVElPTiBwdWJsaWMuY3Jvc3Nfc2Vzc2lv bl9mdW5jKHIgJHRlbXBzY2hlbWEuZm9vMikgIgorCSAgLiAiUkVUVVJOUyBpbnQgTEFOR1VBR0Ug U1FMIEFTICdTRUxFQ1QgMSc7IiwKKwlzdGRlcnIgPT4gXCRzdGRlcnIpOworbGlrZSgKKwkkc3Rk ZXJyLAorCXFyL2Z1bmN0aW9uICJjcm9zc19zZXNzaW9uX2Z1bmMiIHdpbGwgYmUgZWZmZWN0aXZl bHkgdGVtcG9yYXJ5LywKKwknQ1JFQVRFIEZVTkNUSU9OIHVzaW5nIG90aGVyIHNlc3Npb25cJ3Mg cm93IHR5cGUgaXMgZWZmZWN0aXZlbHkgdGVtcG9yYXJ5JworKTsKKworIyBBIGJhcmUgRFJPUCBU QUJMRSBvbiBmb28yIG5vdyBmYWlscyBiZWNhdXNlIGNyb3NzX3Nlc3Npb25fZnVuYworIyBkZXBl bmRzIG9uIGl0cyByb3cgdHlwZS4gIFRoaXMgaXMgbm9ybWFsIFNRTCBkZXBlbmRlbmN5IGJlaGF2 aW91cgorIyBhbmQgZG9jdW1lbnRzIHRoYXQgRFJPUCBpdHNlbGYgaXMgbm90IGJsb2NrZWQgYnkg YnVmZmVyLW1hbmFnZXIKKyMgY2hlY2tzIC0tIHdlIGdldCBhIGNhdGFsb2ctbGV2ZWwgZXJyb3Ig aW5zdGVhZC4KKyRub2RlLT5wc3FsKCdwb3N0Z3JlcycsICJEUk9QIFRBQkxFICR0ZW1wc2NoZW1h LmZvbzI7Iiwgc3RkZXJyID0+IFwkc3RkZXJyKTsKK2xpa2UoCisJJHN0ZGVyciwKKwlxci9jYW5u b3QgZHJvcCB0YWJsZSAuKlwuZm9vMiBiZWNhdXNlIG90aGVyIG9iamVjdHMgZGVwZW5kIG9uIGl0 LywKKwknRFJPUCBUQUJMRSBibG9ja2VkIGJ5IGNyb3NzLXNlc3Npb24gZGVwZW5kZW5jeScpOwor CitteSAkZm9vMl9vaWQgPSAkbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIlNFTEVDVCBv aWQgRlJPTSBwZ19jbGFzcyBXSEVSRSByZWxuYW1lPSdmb28yJzsiKTsKKworIyBDcm9zcy1zZXNz aW9uIExPQ0sgVEFCTEUgc2NlbmFyaW8uICBFbnN1cmUgdGhhdCBMb2NrUmVsYXRpb25PaWQgaXMg d29ya2luZworIyBwcm9wZXJseSBmb3Igb3RoZXIgdGVtcCB0YWJsZXMgc2luY2UgdGhpcyBtZWNo YW5pc20gaXMgYWxzbyB1c2VkIGJ5CisjIGF1dG92YWN1dW0gZHVyaW5nIG9ycGhhbmVkIHRhYmxl cyBjbGVhbnVwLgorbXkgJHBzcWwyID0gJG5vZGUtPmJhY2tncm91bmRfcHNxbCgncG9zdGdyZXMn KTsKKyRwc3FsMi0+cXVlcnlfc2FmZSgKKwlxcXsKKwlCRUdJTjsKKwlMT0NLIFRBQkxFICR0ZW1w c2NoZW1hLmZvbzIgSU4gQUNDRVNTIFNIQVJFIE1PREU7Cit9KTsKKworIyBXaGVuIHRoZSBvd25l ciBzZXNzaW9uIGVuZHMsIGl0cyB0ZW1wIG9iamVjdHMgYXJlIGRyb3BwZWQgdmlhIHRoZQorIyBu b3JtYWwgc2Vzc2lvbi1leGl0IGNsZWFudXAsIHdoaWNoIGNhc2NhZGVzIHRocm91Z2gKKyMgREVQ RU5ERU5DWV9OT1JNQUwgYW5kIGFsc28gcmVtb3ZlcyB0aGUgY3Jvc3Mtc2Vzc2lvbiBmdW5jdGlv biB0aGF0CisjIGRlcGVuZGVkIG9uIHRoZSB0ZW1wIHJvdyB0eXBlLiAgVGhpcyBpcyB0aGUgc2Ft ZSBtZWNoYW5pc20KKyMgYXV0b3ZhY3V1bSByZWxpZXMgb24gdG8gY2xlYW4gdXAgdGVtcCByZWxh dGlvbnMgbGVmdCBiZWhpbmQgYnkgYQorIyBjcmFzaGVkIGJhY2tlbmQuCisjIEFjY2VzcyBzaGFy ZSBsb2NrIG9uIHRoZSBmb28yIHdpbGwgYmxvY2sgc2Vzc2lvbi1leGl0IGNsZWFudXAsIGJlY2F1 c2UgYW4KKyMgb3duZXIgd2lsbCB0cnkgdG8gYWNxdWlyZSBkZWxldGlvbiBsb2NrIGFsbCBpdHMg dGVtcCBvYmplY3RzIHZpYQorIyBmaW5kRGVwZW5kZW50T2JqZWN0cy4KK215ICRsb2dfb2Zmc2V0 ID0gLXMgJG5vZGUtPmxvZ2ZpbGU7CiskcHNxbDEtPnF1aXQ7CisKKyMgQ2hlY2sgd2hldGhlciBz ZXNzaW9uLWV4aXQgY2xlYW51cCBpcyBibG9ja2VkLgorJG5vZGUtPndhaXRfZm9yX2xvZyhxci93 YWl0aW5nIGZvciBBY2Nlc3NFeGNsdXNpdmVMb2NrIG9uIHJlbGF0aW9uICRmb28yX29pZC8sCisJ JGxvZ19vZmZzZXQpOworCisjIFJlbGVhc2UgbG9jayBvbiBmb28yIGFuZCBhbGxvdyBzZXNzaW9u LWV4aXQgY2xlYW51cCB0byBmaW5pc2guCiskcHNxbDItPnF1ZXJ5X3NhZmUocShDT01NSVQ7KSk7 CiskcHNxbDItPnF1aXQ7CisKKyMgQWZ0ZXIgcmVsZWFzaW5nIHRoZSBsb2NrLCB0aGUgb3duZXIg Y2FuIGZpbmFsbHkgYWNxdWlyZQorIyBBY2Nlc3NFeGNsdXNpdmVMb2NrIG9uIGZvbzIgYW5kIGZp bmlzaCBzZXNzaW9uLWV4aXQgY2xlYW51cC4gIFZlcmlmeQorIyBkaXJlY3RseSB0aGF0IGJvdGgg Zm9vMiAodGhlIGxvY2tlZCB0ZW1wIHRhYmxlKSBhbmQgY3Jvc3Nfc2Vzc2lvbl9mdW5jCisjICh3 aGljaCBkZXBlbmRlZCBvbiBpdHMgcm93IHR5cGUpIGhhdmUgYmVlbiBkcm9wcGVkLiAgQm90aCBi ZWluZyBnb25lCisjIGNvbmZpcm1zIHRoZSBvd25lcidzIGNsZWFudXAgZ290IHBhc3QgdGhlIGJs b2NrZWQgZmluZERlcGVuZGVudE9iamVjdHMoKQorIyBjYWxsIGFuZCBjb21wbGV0ZWQgbm9ybWFs bHkuCiskbm9kZS0+cG9sbF9xdWVyeV91bnRpbCgncG9zdGdyZXMnLAorCSJTRUxFQ1QgTk9UIEVY SVNUUyAoU0VMRUNUIDEgRlJPTSBwZ19jbGFzcyBXSEVSRSBvaWQgPSAkZm9vMl9vaWQpIikKKyAg b3IgZGllICJmb28yIHdhcyBub3QgY2xlYW5lZCB1cCBhZnRlciBvd25lciBzZXNzaW9uIGV4aXQi OworCitpcyggJG5vZGUtPnNhZmVfcHNxbCgKKwkJJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3Vu dCgqKSBGUk9NIHBnX3Byb2MgV0hFUkUgcHJvbmFtZSA9ICdjcm9zc19zZXNzaW9uX2Z1bmMnIiks CisJJzAnLAorCSdjcm9zc19zZXNzaW9uX2Z1bmMgY2xlYW5lZCB1cCBieSBjYXNjYWRlIGZyb20g Zm9vMicpOworCitkb25lX3Rlc3RpbmcoKTsKLS0gCjIuMzkuNSAoQXBwbGUgR2l0LTE1NCkKCg== --000000000000cab9b1065135bae6--