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 1w9OTR-001Op3-1z for pgsql-hackers@arkaria.postgresql.org; Sun, 05 Apr 2026 14:29:14 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1w9OTP-003Bh8-38 for pgsql-hackers@arkaria.postgresql.org; Sun, 05 Apr 2026 14:29:12 +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 1w9OTP-003Bgz-16 for pgsql-hackers@lists.postgresql.org; Sun, 05 Apr 2026 14:29:12 +0000 Received: from lahtoruutu.iki.fi ([2a0b:5c81:1c1::37]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.98.2) (envelope-from ) id 1w9OTM-00000000guL-1Afa for pgsql-hackers@postgresql.org; Sun, 05 Apr 2026 14:29:10 +0000 Received: from [10.0.2.15] (unknown [130.41.208.1]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange x25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) (Authenticated sender: hlinnaka) by lahtoruutu.iki.fi (Postfix) with ESMTPSA id 4fpZZt23Flz49Pxf; Sun, 05 Apr 2026 17:28:54 +0300 (EEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=iki.fi; s=lahtoruutu; t=1775399334; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type; bh=kjPq7cqLi0S7jqe2Lzq6Ss0FSL0bQ+Ud+d/3is21IBI=; b=e0cAKwMDDRL1kmBp33bo2CHE8I/hFCFS7bNgz0LSf9gMxcOC+oqmPQOyC0Eh/anfkS75J8 SGegAu3Lvx5V6T/25VfE9qcQYgRukXYaV4IZEfeGwomHv7RDQN8Prw7QLQKfe+cge4xjre 1X2/hE0Pmu89xOXPORhEQfYj8sOD1/6JcoVPPgN1jOx0z9mw5FGhqlSUERQ13m3m5D3Wok T/UCNHaWs18rIBpccdZu46U8tuR3ntSgTsR6os1ZiMwc1FD3/+JjOlelXIwu5NjwwhMYx/ eTu6Aw2PKlnc3lHxkwlpbGGNkYT544ERnXuwtHDpElb/+X75cDn4hzEIZu2ftg== ARC-Seal: i=1; a=rsa-sha256; d=iki.fi; s=lahtoruutu; cv=none; t=1775399334; b=Cp436OdIhk5f+DdSuf9J1lUdlOGIXd/yygP6kUZZlR7vdS4C1A6g1AUqheG1V6wvbcc6QF i53wrG2pQCBDGeRVxlmQiFFU0tATxmN5WuIU0Na/JFhGXZP5ZDKVvinN9X1BhQTkWEsFn+ XDpS+MU91d/GjDRUruyVn/n+J5ZGWU8WKvQexpQPDULsOx0j9K6sk9Dr3Kjo7a9kdcaMKa RBzMlJ1cvIXmI52MWpDyopaBMZAdDesbKF4krY7GlQWml8w+78QLHRcTlv6Z9QRFuLOge4 XXMtoAcUzdw9O/OMZ8fsjR7nUCj6LJZ49pU4OxqLjIx7lxrIK2F97qQixcxKvw== ARC-Authentication-Results: i=1; ORIGINATING; auth=pass smtp.auth=hlinnaka smtp.mailfrom=hlinnaka@iki.fi ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=iki.fi; s=lahtoruutu; t=1775399334; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type; bh=kjPq7cqLi0S7jqe2Lzq6Ss0FSL0bQ+Ud+d/3is21IBI=; b=cLJs3qvW3yvmURv7g8OCh4NSm13t9msuzIjhMRjuo6MhohpCYIApLfDNE8/uIt/yDoxe88 NZxFSwS2Yb4R98WvTx7zl+/4wNbuERh4l3KHOoDvaJPLJjKgT9JDBlJYA1Gu1outqZ9J07 tOCEm+/r9fcPj/5q4SxpVzev0p9PhD+Mnr1y5AIiOkjPj9m1CNhWfXpV75q5CF4vNUY2NL PZy9VwLYRwsvPRHkD2Ig3HL0lIYg2PedFkA68XQguzEliA2Hc5BnRoHM6QI4KEkkjs21yJ qzFMYyP+sIKBTsR4LdNLCt6eVy/iXL79ZvEGKxuznrBU9XqC5crjsFzWdFA6tg== Content-Type: multipart/mixed; boundary="------------RTxBAvGejHiD1fX6JjUkgfRy" Message-ID: <463a28db-0c0b-4af6-bac6-3891828bbbfe@iki.fi> Date: Sun, 5 Apr 2026 17:28:53 +0300 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Content-Language: en-US From: Heikki Linnakangas To: Matthias van de Meent , Nathan Bossart , Sami Imseih Subject: Duplicate RequestNamedLWLocktranche() names and test_lwlock_tranches improvements Cc: "pgsql-hackers@postgresql.org" 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. --------------RTxBAvGejHiD1fX6JjUkgfRy Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Starting new thread for this thing that Matthias noticed in my work-in-progress patch at https://www.postgresql.org/message-id/CAEze2WjgCROMMXY0+j8FFdm3iFcr7By-+6Mwiz=PgGSEydiW3A@mail.gmail.com. On 05/04/2026 02:17, Matthias van de Meent wrote: > 0006: I don't think it is a great idea to make the LwLock machinery > the first to get allocation requests: > It has the RequestNamedLWLockTranche infrastructure, which can only > register new requests while process_shmem_requests_in_progress, and > making it request its memory ahead of everything else is likely to > cause an undersized tranche to be allocated. You could make sure that > this isn't an issue by maintaining a flag in lwlock.c that's set when > the shmem request is made (and reset on shmem exit), which must be > false when RequestNamedLWLockTranche() is called, and if not then it > should throw an error. Good catch, RequestNamedLWLocktranche() was quite broken with the patch. I'm surprised it didn't cause test failures. We even have unit tests for that at src/test/modules/test_lwlock_tranches. Looking at src/test/modules/test_lwlock_tranches, I realized that we don't currently check that the tranche name registered with RequestNamedLWLocktranche() is unique. If two extensions registered a tranche with same name, we'd allocate two separate tranches for them, but GetNamedLWLockTranche() would always return the first one. Attached patches add a uniqueness check, and improves test_lwlock_tranches so that it actually uses the requested LWLocks. And I couldn't resist doing some more refactoring of the test while I was at it; IMO it's more readable now. Barring objections, I will commit these shortly. - Heikki --------------RTxBAvGejHiD1fX6JjUkgfRy Content-Type: text/x-patch; charset=UTF-8; name="v1-0001-Improve-test_lwlock_tranches.patch" Content-Disposition: attachment; filename="v1-0001-Improve-test_lwlock_tranches.patch" Content-Transfer-Encoding: base64 RnJvbSAzZGRmODdlNTIwZjc0MDU1YTY0MWM3M2RhNzRiYWE0YjA1YjE3NThmIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBIZWlra2kgTGlubmFrYW5nYXMgPGhlaWtraS5saW5u YWthbmdhc0Bpa2kuZmk+CkRhdGU6IFN1biwgNSBBcHIgMjAyNiAxNzoyODowNCArMDMwMApT dWJqZWN0OiBbUEFUQ0ggdjEgMS8yXSBJbXByb3ZlIHRlc3RfbHdsb2NrX3RyYW5jaGVzCgpX aGlsZSB3b3JraW5nIG9uIHJlZmFjdG9yaW5nIGhvdyBzaG1lbSBpcyBhbGxvY2F0ZWQsIEkg bWFkZSBhIG1pc3Rha2UKd2hlcmUgdGhlIG1haW4gTFdMb2NrIGFycmF5IGRpZCBub3QgcmVz ZXJ2ZSBzcGFjZSBmb3IgdGhlIExXTG9ja3MKYWxsb2NhdGVkIHdpdGggUmVxdWVzdE5hbWVk TFdMb2NrVHJhbmNoZSgpLCBhbmQgdGhlIHRlc3Qgc3RpbGwKcGFzc2VkLiBNYXR0aGlhcyBz cG90dGVkIHRoYXQgYmVmb3JlIGl0IGdvdCBjb21taXR0ZWQsIGJ1dCBpbiBvcmRlciB0bwpj YXRjaCBzdWNoIG1pc3Rha2VzIGluIHRoZSBmdXR1cmUsIGFkZCBjaGVja3MgaW4gdGVzdF9s d2xvY2tfdHJhbmNoZXMKdGhhdCB0aGUgbG9ja3MgYWxsb2NhdGVkIHdpdGggUmVxdWVzdE5h bWVkTFdMb2NrVHJhbmNoZSgpIGNhbiBiZQphY3F1aXJlZCBhbmQgcmVsZWFzZWQuCgpBbm90 aGVyIGNoYW5nZSBpcyB0byBzdG9wIHJlcXVlc3RpbmcgbXVsdGlwbGUgdHJhbmNoZXMgd2l0 aCB0aGUgc2FtZQpuYW1lIHdpdGggUmVxdWVzdE5hbWVkTFdMb2NrVHJhbmNoZSgpLiBBcyBz b29uIGFzIEkgc3RhcnRlZCB0byB0ZXN0CnVzaW5nIHRoZSBsb2NrcyBJIHJlYWxpemVkIHRo YXQncyBib2d1cywgYW5kIHRoZSBuZXh0IGNvbW1pdCB3aWxsCmZvcmJpZCBpdC4gS2VlcCB0 ZXN0IGNvdmVyYWdlIGZvciBkdXBsaWNhdGVzIHJlcXVlc3RlZCB3aXRoCkxXTG9ja05ld1Ry YW5jaGVJZCgpIGZvciBub3csIGJ1dCBtYWtlIGl0IG1vcmUgY2xlYXIgdGhhdCB0aGF0J3Mg d2hhdAp0aGUgdGVzdCBkb2VzLgoKRGlzY3Vzc2lvbjogaHR0cHM6Ly93d3cucG9zdGdyZXNx bC5vcmcvbWVzc2FnZS1pZC9DQUV6ZTJXamdDUk9NTVhZMCtqOEZGZG0zaUZjcjdCeS0rNk13 aXo9UGdHU0V5ZGlXM0FAbWFpbC5nbWFpbC5jb20KLS0tCiAuLi4vZXhwZWN0ZWQvdGVzdF9s d2xvY2tfdHJhbmNoZXMub3V0ICAgICAgICAgfCA2MSArKysrKysrKysrLS0tCiAuLi4vc3Fs L3Rlc3RfbHdsb2NrX3RyYW5jaGVzLnNxbCAgICAgICAgICAgICAgfCA0NCArKysrKysrLS0K IC4uLi90ZXN0X2x3bG9ja190cmFuY2hlcy0tMS4wLnNxbCAgICAgICAgICAgICB8ICA3ICst CiAuLi4vdGVzdF9sd2xvY2tfdHJhbmNoZXMuYyAgICAgICAgICAgICAgICAgICAgfCA5MCAr KysrKysrKysrKy0tLS0tLS0tCiA0IGZpbGVzIGNoYW5nZWQsIDE0NiBpbnNlcnRpb25zKCsp LCA1NiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL3Rlc3Rf bHdsb2NrX3RyYW5jaGVzL2V4cGVjdGVkL3Rlc3RfbHdsb2NrX3RyYW5jaGVzLm91dCBiL3Ny Yy90ZXN0L21vZHVsZXMvdGVzdF9sd2xvY2tfdHJhbmNoZXMvZXhwZWN0ZWQvdGVzdF9sd2xv Y2tfdHJhbmNoZXMub3V0CmluZGV4IDY4OGEyMGJjYTVkLi5mYzI1ZTQyYzQ5NyAxMDA2NDQK LS0tIGEvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2x3bG9ja190cmFuY2hlcy9leHBlY3RlZC90 ZXN0X2x3bG9ja190cmFuY2hlcy5vdXQKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2x3 bG9ja190cmFuY2hlcy9leHBlY3RlZC90ZXN0X2x3bG9ja190cmFuY2hlcy5vdXQKQEAgLTEs MjUgKzEsNjAgQEAKIENSRUFURSBFWFRFTlNJT04gdGVzdF9sd2xvY2tfdHJhbmNoZXM7Ci1T RUxFQ1QgdGVzdF9sd2xvY2tfdHJhbmNoZXMoKTsKLSB0ZXN0X2x3bG9ja190cmFuY2hlcyAK Ky0tIFRlc3QgbG9jayB0cmFuY2hlcyBjcmVhdGVkIHdpdGggUmVxdWVzdE5hbWVkTFdMb2Nr VHJhbmNoZSgpCitTRUxFQ1QgdGVzdF9zdGFydHVwX2x3bG9ja3MoKTsKKyB0ZXN0X3N0YXJ0 dXBfbHdsb2NrcyAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAKICgxIHJvdykKIAotU0VM RUNUIHRlc3RfbHdsb2NrX3RyYW5jaGVfY3JlYXRpb24oTlVMTCk7CistLSBUZXN0IGNyZWF0 aW5nIG5ldyBsb2NrIHRyYW5jaGVzIHdpdGggTFdMb2NrTmV3VHJhbmNoZUlkKCkKK0NSRUFU RSBURU1QIFRBQkxFIHRlc3RfdHJhbmNoZXModHJhbmNoZV9uYW1lIHRleHQsIHRyYW5jaGVf aWQgaW50KTsKK0lOU0VSVCBJTlRPIHRlc3RfdHJhbmNoZXMgVkFMVUVTCisgICAgKCd0ZXN0 X3RyYW5jaGVfYScsIHRlc3RfbHdsb2NrX3RyYW5jaGVfY3JlYXRlKCd0ZXN0X3RyYW5jaGVf YScpKSwKKyAgICAoJ3Rlc3RfdHJhbmNoZV9iJywgdGVzdF9sd2xvY2tfdHJhbmNoZV9jcmVh dGUoJ3Rlc3RfdHJhbmNoZV9iJykpOworLS0gWW91IGNhbiBjcmVhdGUgbXVsdGlwbGUgdHJh bmNoZXMgd2l0aCB0aGUgc2FtZSBuYW1lLiBJdCdzIGNvbmZ1c2luZywgc28KKy0tIG5vdCBy ZWNvbW1lbmRlZCwgYnV0IHRlc3QgaXQuCitJTlNFUlQgSU5UTyB0ZXN0X3RyYW5jaGVzIFZB TFVFUworICAgICgndGVzdF90cmFuY2hlX2R1cGxpY2F0ZScsIHRlc3RfbHdsb2NrX3RyYW5j aGVfY3JlYXRlKCd0ZXN0X3RyYW5jaGVfZHVwbGljYXRlJykpLAorICAgICgndGVzdF90cmFu Y2hlX2R1cGxpY2F0ZScsIHRlc3RfbHdsb2NrX3RyYW5jaGVfY3JlYXRlKCd0ZXN0X3RyYW5j aGVfZHVwbGljYXRlJykpOworLS0gQ2hlY2sgdGhhdCBhbGwgdHJhbmNoZXMgd2VyZSBhc3Np Z25lZCBkaWZmZXJlbnQgdHJhbmNoZSBJRHMsIGluY2x1ZGluZworLS0gdGhlIG9uZXMgd2l0 aCBkdXBsaWNhdGUgbmFtZXMKK3NlbGVjdCBjb3VudChkaXN0aW5jdCB0cmFuY2hlX2lkKSBm cm9tICB0ZXN0X3RyYW5jaGVzOworIGNvdW50IAorLS0tLS0tLQorICAgICA0CisoMSByb3cp CisKKy0tIFRlc3QgR2V0TFdMb2NrSWRlbnRpZmllcigpIG9uIHRyYW5jaGVzIGNyZWF0ZWQg d2l0aCBMV0xvY2tOZXdUcmFuY2hlSWQoKQorc2VsZWN0IHRyYW5jaGVfbmFtZSwgdGVzdF9s d2xvY2tfZ2V0X2x3bG9ja19pZGVudGlmaWVyKHRyYW5jaGVfaWQpIGFzIGxvb2t1cF9yZXN1 bHQKK2Zyb20gdGVzdF90cmFuY2hlczsKKyAgICAgIHRyYW5jaGVfbmFtZSAgICAgIHwgICAg IGxvb2t1cF9yZXN1bHQgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KKyB0ZXN0X3RyYW5jaGVfYSAgICAgICAgIHwgdGVzdF90cmFu Y2hlX2EKKyB0ZXN0X3RyYW5jaGVfYiAgICAgICAgIHwgdGVzdF90cmFuY2hlX2IKKyB0ZXN0 X3RyYW5jaGVfZHVwbGljYXRlIHwgdGVzdF90cmFuY2hlX2R1cGxpY2F0ZQorIHRlc3RfdHJh bmNoZV9kdXBsaWNhdGUgfCB0ZXN0X3RyYW5jaGVfZHVwbGljYXRlCisoNCByb3dzKQorCist LSBuZWdhdGl2ZSB0ZXN0cworU0VMRUNUIHRlc3RfbHdsb2NrX3RyYW5jaGVfY3JlYXRlKE5V TEwpOwogRVJST1I6ICB0cmFuY2hlIG5hbWUgY2Fubm90IGJlIE5VTEwKLVNFTEVDVCB0ZXN0 X2x3bG9ja190cmFuY2hlX2NyZWF0aW9uKHJlcGVhdCgnYScsIDY0KSk7CitTRUxFQ1QgdGVz dF9sd2xvY2tfdHJhbmNoZV9jcmVhdGUocmVwZWF0KCdhJywgNjQpKTsKIEVSUk9SOiAgdHJh bmNoZSBuYW1lIHRvbyBsb25nCiBERVRBSUw6ICBMV0xvY2sgdHJhbmNoZSBuYW1lcyBtdXN0 IGJlIG5vIGxvbmdlciB0aGFuIDYzIGJ5dGVzLgotU0VMRUNUIHRlc3RfbHdsb2NrX3RyYW5j aGVfY3JlYXRpb24oJ3Rlc3QnKTsKLUVSUk9SOiAgbWF4aW11bSBudW1iZXIgb2YgdHJhbmNo ZXMgYWxyZWFkeSByZWdpc3RlcmVkCi1ERVRBSUw6ICBObyBtb3JlIHRoYW4gMjU2IHRyYW5j aGVzIG1heSBiZSByZWdpc3RlcmVkLgotU0VMRUNUIHRlc3RfbHdsb2NrX3RyYW5jaGVfbG9v a3VwKCd0ZXN0X2x3bG9ja190cmFuY2hlc19zdGFydHVwJyk7Ci0gdGVzdF9sd2xvY2tfdHJh bmNoZV9sb29rdXAgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gCi0oMSByb3cp Ci0KIFNFTEVDVCB0ZXN0X2x3bG9ja190cmFuY2hlX2xvb2t1cCgnYm9ndXMnKTsKIEVSUk9S OiAgcmVxdWVzdGVkIHRyYW5jaGUgaXMgbm90IHJlZ2lzdGVyZWQKK1NFTEVDVCB0ZXN0X2x3 bG9ja190cmFuY2hlX2xvb2t1cCgndGVzdF90cmFuY2hlX2EnKTsKK0VSUk9SOiAgcmVxdWVz dGVkIHRyYW5jaGUgd2FzIG5vdCByZWdpc3RlcmVkIHdpdGggUmVxdWVzdE5hbWVkTFdMb2Nr VHJhbmNoZSgpCiBTRUxFQ1QgdGVzdF9sd2xvY2tfaW5pdGlhbGl6ZSg2NTUzNSk7CiBFUlJP UjogIHRyYW5jaGUgNjU1MzUgaXMgbm90IHJlZ2lzdGVyZWQKKy0tIFRlc3Qgd2hhdCBoYXBw ZW5zIHdoZW4geW91IHVzZSB1cCBhbGwgdGhlIHNsb3RzLgorLS0KKy0tIE1BWF9VU0VSX0RF RklORURfVFJBTkNIRVMgaXMgMjU2LiBUd28gbG9ja3Mgd2VyZSBjcmVhdGVkIHdpdGgKKy0t IFJlcXVlc3ROYW1lZExXTG9ja1RyYW5jaGUoKSB3aGVuIHRoZSBsaWJyYXJ5IHdhcyBsb2Fk ZWQsIGFuZCB3ZSBjcmVhdGVkCistLSBmb3VyIG1vcmUuCitpbnNlcnQgaW50byB0ZXN0X3Ry YW5jaGVzCisgICAgc2VsZWN0ICd0ZXN0X3RyYW5jaGVfY29uc3VtZV9hbGwnLCB0ZXN0X2x3 bG9ja190cmFuY2hlX2NyZWF0ZSgndGVzdF90cmFuY2hlX2NvbnN1bWVfYWxsJykKKyAgICBm cm9tIGdlbmVyYXRlX3NlcmllcygxLCAyNTYgLSAyIC0gNCk7CitzZWxlY3QgdGVzdF9sd2xv Y2tfdHJhbmNoZV9jcmVhdGUoJ291dC1vZi10cmFuY2hlcycpOworRVJST1I6ICBtYXhpbXVt IG51bWJlciBvZiB0cmFuY2hlcyBhbHJlYWR5IHJlZ2lzdGVyZWQKK0RFVEFJTDogIE5vIG1v cmUgdGhhbiAyNTYgdHJhbmNoZXMgbWF5IGJlIHJlZ2lzdGVyZWQuCmRpZmYgLS1naXQgYS9z cmMvdGVzdC9tb2R1bGVzL3Rlc3RfbHdsb2NrX3RyYW5jaGVzL3NxbC90ZXN0X2x3bG9ja190 cmFuY2hlcy5zcWwgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfbHdsb2NrX3RyYW5jaGVzL3Nx bC90ZXN0X2x3bG9ja190cmFuY2hlcy5zcWwKaW5kZXggNGQwODViOGYyNWIuLjZmNWZiY2Mz ZjIzIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfbHdsb2NrX3RyYW5jaGVz L3NxbC90ZXN0X2x3bG9ja190cmFuY2hlcy5zcWwKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy90 ZXN0X2x3bG9ja190cmFuY2hlcy9zcWwvdGVzdF9sd2xvY2tfdHJhbmNoZXMuc3FsCkBAIC0x LDggKzEsNDIgQEAKIENSRUFURSBFWFRFTlNJT04gdGVzdF9sd2xvY2tfdHJhbmNoZXM7Ci1T RUxFQ1QgdGVzdF9sd2xvY2tfdHJhbmNoZXMoKTsKLVNFTEVDVCB0ZXN0X2x3bG9ja190cmFu Y2hlX2NyZWF0aW9uKE5VTEwpOwotU0VMRUNUIHRlc3RfbHdsb2NrX3RyYW5jaGVfY3JlYXRp b24ocmVwZWF0KCdhJywgNjQpKTsKLVNFTEVDVCB0ZXN0X2x3bG9ja190cmFuY2hlX2NyZWF0 aW9uKCd0ZXN0Jyk7Ci1TRUxFQ1QgdGVzdF9sd2xvY2tfdHJhbmNoZV9sb29rdXAoJ3Rlc3Rf bHdsb2NrX3RyYW5jaGVzX3N0YXJ0dXAnKTsKKworLS0gVGVzdCBsb2NrIHRyYW5jaGVzIGNy ZWF0ZWQgd2l0aCBSZXF1ZXN0TmFtZWRMV0xvY2tUcmFuY2hlKCkKK1NFTEVDVCB0ZXN0X3N0 YXJ0dXBfbHdsb2NrcygpOworCistLSBUZXN0IGNyZWF0aW5nIG5ldyBsb2NrIHRyYW5jaGVz IHdpdGggTFdMb2NrTmV3VHJhbmNoZUlkKCkKK0NSRUFURSBURU1QIFRBQkxFIHRlc3RfdHJh bmNoZXModHJhbmNoZV9uYW1lIHRleHQsIHRyYW5jaGVfaWQgaW50KTsKK0lOU0VSVCBJTlRP IHRlc3RfdHJhbmNoZXMgVkFMVUVTCisgICAgKCd0ZXN0X3RyYW5jaGVfYScsIHRlc3RfbHds b2NrX3RyYW5jaGVfY3JlYXRlKCd0ZXN0X3RyYW5jaGVfYScpKSwKKyAgICAoJ3Rlc3RfdHJh bmNoZV9iJywgdGVzdF9sd2xvY2tfdHJhbmNoZV9jcmVhdGUoJ3Rlc3RfdHJhbmNoZV9iJykp OworCistLSBZb3UgY2FuIGNyZWF0ZSBtdWx0aXBsZSB0cmFuY2hlcyB3aXRoIHRoZSBzYW1l IG5hbWUuIEl0J3MgY29uZnVzaW5nLCBzbworLS0gbm90IHJlY29tbWVuZGVkLCBidXQgdGVz dCBpdC4KK0lOU0VSVCBJTlRPIHRlc3RfdHJhbmNoZXMgVkFMVUVTCisgICAgKCd0ZXN0X3Ry YW5jaGVfZHVwbGljYXRlJywgdGVzdF9sd2xvY2tfdHJhbmNoZV9jcmVhdGUoJ3Rlc3RfdHJh bmNoZV9kdXBsaWNhdGUnKSksCisgICAgKCd0ZXN0X3RyYW5jaGVfZHVwbGljYXRlJywgdGVz dF9sd2xvY2tfdHJhbmNoZV9jcmVhdGUoJ3Rlc3RfdHJhbmNoZV9kdXBsaWNhdGUnKSk7CisK Ky0tIENoZWNrIHRoYXQgYWxsIHRyYW5jaGVzIHdlcmUgYXNzaWduZWQgZGlmZmVyZW50IHRy YW5jaGUgSURzLCBpbmNsdWRpbmcKKy0tIHRoZSBvbmVzIHdpdGggZHVwbGljYXRlIG5hbWVz CitzZWxlY3QgY291bnQoZGlzdGluY3QgdHJhbmNoZV9pZCkgZnJvbSAgdGVzdF90cmFuY2hl czsKKworLS0gVGVzdCBHZXRMV0xvY2tJZGVudGlmaWVyKCkgb24gdHJhbmNoZXMgY3JlYXRl ZCB3aXRoIExXTG9ja05ld1RyYW5jaGVJZCgpCitzZWxlY3QgdHJhbmNoZV9uYW1lLCB0ZXN0 X2x3bG9ja19nZXRfbHdsb2NrX2lkZW50aWZpZXIodHJhbmNoZV9pZCkgYXMgbG9va3VwX3Jl c3VsdAorZnJvbSB0ZXN0X3RyYW5jaGVzOworCistLSBuZWdhdGl2ZSB0ZXN0cworU0VMRUNU IHRlc3RfbHdsb2NrX3RyYW5jaGVfY3JlYXRlKE5VTEwpOworU0VMRUNUIHRlc3RfbHdsb2Nr X3RyYW5jaGVfY3JlYXRlKHJlcGVhdCgnYScsIDY0KSk7CiBTRUxFQ1QgdGVzdF9sd2xvY2tf dHJhbmNoZV9sb29rdXAoJ2JvZ3VzJyk7CitTRUxFQ1QgdGVzdF9sd2xvY2tfdHJhbmNoZV9s b29rdXAoJ3Rlc3RfdHJhbmNoZV9hJyk7CiBTRUxFQ1QgdGVzdF9sd2xvY2tfaW5pdGlhbGl6 ZSg2NTUzNSk7CisKKy0tIFRlc3Qgd2hhdCBoYXBwZW5zIHdoZW4geW91IHVzZSB1cCBhbGwg dGhlIHNsb3RzLgorLS0KKy0tIE1BWF9VU0VSX0RFRklORURfVFJBTkNIRVMgaXMgMjU2LiBU d28gbG9ja3Mgd2VyZSBjcmVhdGVkIHdpdGgKKy0tIFJlcXVlc3ROYW1lZExXTG9ja1RyYW5j aGUoKSB3aGVuIHRoZSBsaWJyYXJ5IHdhcyBsb2FkZWQsIGFuZCB3ZSBjcmVhdGVkCistLSBm b3VyIG1vcmUuCitpbnNlcnQgaW50byB0ZXN0X3RyYW5jaGVzCisgICAgc2VsZWN0ICd0ZXN0 X3RyYW5jaGVfY29uc3VtZV9hbGwnLCB0ZXN0X2x3bG9ja190cmFuY2hlX2NyZWF0ZSgndGVz dF90cmFuY2hlX2NvbnN1bWVfYWxsJykKKyAgICBmcm9tIGdlbmVyYXRlX3NlcmllcygxLCAy NTYgLSAyIC0gNCk7CisKK3NlbGVjdCB0ZXN0X2x3bG9ja190cmFuY2hlX2NyZWF0ZSgnb3V0 LW9mLXRyYW5jaGVzJyk7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfbHds b2NrX3RyYW5jaGVzL3Rlc3RfbHdsb2NrX3RyYW5jaGVzLS0xLjAuc3FsIGIvc3JjL3Rlc3Qv bW9kdWxlcy90ZXN0X2x3bG9ja190cmFuY2hlcy90ZXN0X2x3bG9ja190cmFuY2hlcy0tMS4w LnNxbAppbmRleCAzNDgyMTk4MTUyMS4uOTExMTU4MGRiNDggMTAwNjQ0Ci0tLSBhL3NyYy90 ZXN0L21vZHVsZXMvdGVzdF9sd2xvY2tfdHJhbmNoZXMvdGVzdF9sd2xvY2tfdHJhbmNoZXMt LTEuMC5zcWwKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2x3bG9ja190cmFuY2hlcy90 ZXN0X2x3bG9ja190cmFuY2hlcy0tMS4wLnNxbApAQCAtMywxNCArMywxNyBAQAogLS0gY29t cGxhaW4gaWYgc2NyaXB0IGlzIHNvdXJjZWQgaW4gcHNxbCwgcmF0aGVyIHRoYW4gdmlhIENS RUFURSBFWFRFTlNJT04KIFxlY2hvIFVzZSAiQ1JFQVRFIEVYVEVOU0lPTiB0ZXN0X2x3bG9j a190cmFuY2hlcyIgdG8gbG9hZCB0aGlzIGZpbGUuIFxxdWl0CiAKLUNSRUFURSBGVU5DVElP TiB0ZXN0X2x3bG9ja190cmFuY2hlcygpIFJFVFVSTlMgVk9JRAorQ1JFQVRFIEZVTkNUSU9O IHRlc3Rfc3RhcnR1cF9sd2xvY2tzKCkgUkVUVVJOUyBWT0lECiAJQVMgJ01PRFVMRV9QQVRI TkFNRScgTEFOR1VBR0UgQzsKIAotQ1JFQVRFIEZVTkNUSU9OIHRlc3RfbHdsb2NrX3RyYW5j aGVfY3JlYXRpb24odHJhbmNoZV9uYW1lIFRFWFQpIFJFVFVSTlMgVk9JRAorQ1JFQVRFIEZV TkNUSU9OIHRlc3RfbHdsb2NrX3RyYW5jaGVfY3JlYXRlKHRyYW5jaGVfbmFtZSBURVhUKSBS RVRVUk5TIElOVAogCUFTICdNT0RVTEVfUEFUSE5BTUUnIExBTkdVQUdFIEM7CiAKIENSRUFU RSBGVU5DVElPTiB0ZXN0X2x3bG9ja190cmFuY2hlX2xvb2t1cCh0cmFuY2hlX25hbWUgVEVY VCkgUkVUVVJOUyBWT0lECiAJQVMgJ01PRFVMRV9QQVRITkFNRScgTEFOR1VBR0UgQzsKIAor Q1JFQVRFIEZVTkNUSU9OIHRlc3RfbHdsb2NrX2dldF9sd2xvY2tfaWRlbnRpZmllcihldmVu dF9pZCBJTlQpIFJFVFVSTlMgVEVYVAorCUFTICdNT0RVTEVfUEFUSE5BTUUnIExBTkdVQUdF IEM7CisKIENSRUFURSBGVU5DVElPTiB0ZXN0X2x3bG9ja19pbml0aWFsaXplKHRyYW5jaGVf aWQgSU5UKSBSRVRVUk5TIFZPSUQKIAlBUyAnTU9EVUxFX1BBVEhOQU1FJyBMQU5HVUFHRSBD OwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2x3bG9ja190cmFuY2hlcy90 ZXN0X2x3bG9ja190cmFuY2hlcy5jIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2x3bG9ja190 cmFuY2hlcy90ZXN0X2x3bG9ja190cmFuY2hlcy5jCmluZGV4IGU1OGJjNDlkNDIwLi45NTg1 NTc4ZjE4ZSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2x3bG9ja190cmFu Y2hlcy90ZXN0X2x3bG9ja190cmFuY2hlcy5jCisrKyBiL3NyYy90ZXN0L21vZHVsZXMvdGVz dF9sd2xvY2tfdHJhbmNoZXMvdGVzdF9sd2xvY2tfdHJhbmNoZXMuYwpAQCAtMjEsMTQgKzIx LDYgQEAKIAogUEdfTU9EVUxFX01BR0lDOwogCi0jZGVmaW5lIFNUQVJUVVBfVFJBTkNIRV9O QU1FICJ0ZXN0X2x3bG9ja190cmFuY2hlc19zdGFydHVwIgotI2RlZmluZSBEWU5BTUlDX1RS QU5DSEVfTkFNRSAidGVzdF9sd2xvY2tfdHJhbmNoZXNfZHluYW1pYyIKLQotI2RlZmluZSBO VU1fU1RBUlRVUF9UUkFOQ0hFUyAoMzIpCi0jZGVmaW5lIE5VTV9EWU5BTUlDX1RSQU5DSEVT ICgyNTYgLSBOVU1fU1RBUlRVUF9UUkFOQ0hFUykKLQotI2RlZmluZSBHRVRfVFJBTkNIRV9O QU1FKGEpIEdldExXTG9ja0lkZW50aWZpZXIoUEdfV0FJVF9MV0xPQ0ssIChhKSkKLQogc3Rh dGljIHNobWVtX3JlcXVlc3RfaG9va190eXBlIHByZXZfc2htZW1fcmVxdWVzdF9ob29rOwog c3RhdGljIHZvaWQgdGVzdF9sd2xvY2tfdHJhbmNoZXNfc2htZW1fcmVxdWVzdCh2b2lkKTsK IApAQCAtNDUsMzYgKzM3LDQ2IEBAIHRlc3RfbHdsb2NrX3RyYW5jaGVzX3NobWVtX3JlcXVl c3Qodm9pZCkKIAlpZiAocHJldl9zaG1lbV9yZXF1ZXN0X2hvb2spCiAJCXByZXZfc2htZW1f cmVxdWVzdF9ob29rKCk7CiAKLQlmb3IgKGludCBpID0gMDsgaSA8IE5VTV9TVEFSVFVQX1RS QU5DSEVTOyBpKyspCi0JCVJlcXVlc3ROYW1lZExXTG9ja1RyYW5jaGUoU1RBUlRVUF9UUkFO Q0hFX05BTUUsIDEpOworCS8qCisJICogUmVxdWVzdCBzb21lIHRyYW5jaGVzIHdpdGggUmVx dWVzdE5hbWVkTFdMb2NrVHJhbmNoZSgpIGZvcgorCSAqIHRlc3Rfc3RhcnR1cF9sd2xvY2tz KCkKKwkgKi8KKwlSZXF1ZXN0TmFtZWRMV0xvY2tUcmFuY2hlKCJ0ZXN0X2x3bG9ja190cmFu Y2hlc19zdGFydHVwIiwgMSk7CisJUmVxdWVzdE5hbWVkTFdMb2NrVHJhbmNoZSgidGVzdF9s d2xvY2tfdHJhbmNoZXNfc3RhcnR1cDEwIiwgMTApOwogfQogCiAvKgotICogQ2hlY2tzIHRo YXQgR2V0TFdMb2NrSWRlbnRpZmllcigpIHJldHVybnMgdGhlIGV4cGVjdGVkIHZhbHVlIGZv ciB0cmFuY2hlcwotICogcmVnaXN0ZXJlZCB2aWEgUmVxdWVzdE5hbWVkTFdMb2NrVHJhbmNo ZSgpIGFuZCBMV0xvY2tOZXdUcmFuY2hlSWQoKS4KKyAqIFRlc3QgbG9ja3MgcmVxdWVzdGVk IHdpdGggUmVxdWVzdE5hbWVkTFdMb2NrVHJhbmNoZQogICovCi1QR19GVU5DVElPTl9JTkZP X1YxKHRlc3RfbHdsb2NrX3RyYW5jaGVzKTsKK1BHX0ZVTkNUSU9OX0lORk9fVjEodGVzdF9z dGFydHVwX2x3bG9ja3MpOwogRGF0dW0KLXRlc3RfbHdsb2NrX3RyYW5jaGVzKFBHX0ZVTkNU SU9OX0FSR1MpCit0ZXN0X3N0YXJ0dXBfbHdsb2NrcyhQR19GVU5DVElPTl9BUkdTKQogewot CWludAkJCWR5bmFtaWNfdHJhbmNoZXNbTlVNX0RZTkFNSUNfVFJBTkNIRVNdOwotCi0JZm9y IChpbnQgaSA9IDA7IGkgPCBOVU1fRFlOQU1JQ19UUkFOQ0hFUzsgaSsrKQotCQlkeW5hbWlj X3RyYW5jaGVzW2ldID0gTFdMb2NrTmV3VHJhbmNoZUlkKERZTkFNSUNfVFJBTkNIRV9OQU1F KTsKLQotCWZvciAoaW50IGkgPSAwOyBpIDwgTlVNX1NUQVJUVVBfVFJBTkNIRVM7IGkrKykK LQl7Ci0JCWlmIChzdHJjbXAoR0VUX1RSQU5DSEVfTkFNRShMV1RSQU5DSEVfRklSU1RfVVNF Ul9ERUZJTkVEICsgaSksCi0JCQkJICAgU1RBUlRVUF9UUkFOQ0hFX05BTUUpICE9IDApCi0J CQllbG9nKEVSUk9SLCAiaW5jb3JyZWN0IHN0YXJ0dXAgbG9jayB0cmFuY2hlIG5hbWUiKTsK LQl9Ci0KLQlmb3IgKGludCBpID0gMDsgaSA8IE5VTV9EWU5BTUlDX1RSQU5DSEVTOyBpKysp Ci0JewotCQlpZiAoc3RyY21wKEdFVF9UUkFOQ0hFX05BTUUoZHluYW1pY190cmFuY2hlc1tp XSksCi0JCQkJICAgRFlOQU1JQ19UUkFOQ0hFX05BTUUpICE9IDApCi0JCQllbG9nKEVSUk9S LCAiaW5jb3JyZWN0IGR5bmFtaWMgbG9jayB0cmFuY2hlIG5hbWUiKTsKLQl9CisJTFdMb2Nr UGFkZGVkICpsd2xvY2tfc3RhcnR1cDsKKwlMV0xvY2tQYWRkZWQgKmx3bG9ja19zdGFydHVw MTA7CisKKwkvKiBDaGVjayB0aGF0IHRoZSBsb2NrcyBjYW4gYmUgdXNlZCAqLworCWx3bG9j a19zdGFydHVwID0gR2V0TmFtZWRMV0xvY2tUcmFuY2hlKCJ0ZXN0X2x3bG9ja190cmFuY2hl c19zdGFydHVwIik7CisJbHdsb2NrX3N0YXJ0dXAxMCA9IEdldE5hbWVkTFdMb2NrVHJhbmNo ZSgidGVzdF9sd2xvY2tfdHJhbmNoZXNfc3RhcnR1cDEwIik7CisKKwlMV0xvY2tBY3F1aXJl KCZsd2xvY2tfc3RhcnR1cC0+bG9jaywgTFdfRVhDTFVTSVZFKTsKKwlmb3IgKGludCBpID0g MDsgaSA8IDEwOyBpKyspCisJCUxXTG9ja0FjcXVpcmUoJmx3bG9ja19zdGFydHVwMTBbaV0u bG9jaywgTFdfRVhDTFVTSVZFKTsKKworCUxXTG9ja1JlbGVhc2UoJmx3bG9ja19zdGFydHVw LT5sb2NrKTsKKwlmb3IgKGludCBpID0gMDsgaSA8IDEwOyBpKyspCisJCUxXTG9ja1JlbGVh c2UoJmx3bG9ja19zdGFydHVwMTBbaV0ubG9jayk7CisKKwkvKgorCSAqIENoZWNrIHRoYXQg R2V0TFdMb2NrSWRlbnRpZmllcigpIHJldHVybnMgdGhlIGV4cGVjdGVkIHZhbHVlIGZvcgor CSAqIHRyYW5jaGVzCisJICovCisJaWYgKHN0cmNtcCgidGVzdF9sd2xvY2tfdHJhbmNoZXNf c3RhcnR1cCIsCisJCQkgICBHZXRMV0xvY2tJZGVudGlmaWVyKFBHX1dBSVRfTFdMT0NLLCBM V1RSQU5DSEVfRklSU1RfVVNFUl9ERUZJTkVEKSkgIT0gMCkKKwkJZWxvZyhFUlJPUiwgImlu Y29ycmVjdCBzdGFydHVwIGxvY2sgdHJhbmNoZSBuYW1lIik7CisJaWYgKHN0cmNtcCgidGVz dF9sd2xvY2tfdHJhbmNoZXNfc3RhcnR1cDEwIiwKKwkJCSAgIEdldExXTG9ja0lkZW50aWZp ZXIoUEdfV0FJVF9MV0xPQ0ssIExXVFJBTkNIRV9GSVJTVF9VU0VSX0RFRklORUQgKyAxKSkg IT0gMCkKKwkJZWxvZyhFUlJPUiwgImluY29ycmVjdCBzdGFydHVwIGxvY2sgdHJhbmNoZSBu YW1lIik7CiAKIAlQR19SRVRVUk5fVk9JRCgpOwogfQpAQCAtODIsMTUgKzg0LDE2IEBAIHRl c3RfbHdsb2NrX3RyYW5jaGVzKFBHX0ZVTkNUSU9OX0FSR1MpCiAvKgogICogV3JhcHBlciBm b3IgTFdMb2NrTmV3VHJhbmNoZUlkKCkuCiAgKi8KLVBHX0ZVTkNUSU9OX0lORk9fVjEodGVz dF9sd2xvY2tfdHJhbmNoZV9jcmVhdGlvbik7CitQR19GVU5DVElPTl9JTkZPX1YxKHRlc3Rf bHdsb2NrX3RyYW5jaGVfY3JlYXRlKTsKIERhdHVtCi10ZXN0X2x3bG9ja190cmFuY2hlX2Ny ZWF0aW9uKFBHX0ZVTkNUSU9OX0FSR1MpCit0ZXN0X2x3bG9ja190cmFuY2hlX2NyZWF0ZShQ R19GVU5DVElPTl9BUkdTKQogewogCWNoYXIJICAgKnRyYW5jaGVfbmFtZSA9IFBHX0FSR0lT TlVMTCgwKSA/IE5VTEwgOiBUZXh0RGF0dW1HZXRDU3RyaW5nKFBHX0dFVEFSR19EQVRVTSgw KSk7CisJaW50CQkJdHJhbmNoZV9pZDsKIAotCSh2b2lkKSBMV0xvY2tOZXdUcmFuY2hlSWQo dHJhbmNoZV9uYW1lKTsKKwl0cmFuY2hlX2lkID0gTFdMb2NrTmV3VHJhbmNoZUlkKHRyYW5j aGVfbmFtZSk7CiAKLQlQR19SRVRVUk5fVk9JRCgpOworCVBHX1JFVFVSTl9JTlQzMih0cmFu Y2hlX2lkKTsKIH0KIAogLyoKQEAgLTEwNyw2ICsxMTAsMjEgQEAgdGVzdF9sd2xvY2tfdHJh bmNoZV9sb29rdXAoUEdfRlVOQ1RJT05fQVJHUykKIAlQR19SRVRVUk5fVk9JRCgpOwogfQog CitQR19GVU5DVElPTl9JTkZPX1YxKHRlc3RfbHdsb2NrX2dldF9sd2xvY2tfaWRlbnRpZmll cik7CitEYXR1bQordGVzdF9sd2xvY2tfZ2V0X2x3bG9ja19pZGVudGlmaWVyKFBHX0ZVTkNU SU9OX0FSR1MpCit7CisJaW50CQkJZXZlbnRJZCA9IFBHX0dFVEFSR19JTlQzMigwKTsKKwlj b25zdCBjaGFyICp0cmFuY2hlX25hbWU7CisKKwl0cmFuY2hlX25hbWUgPSBHZXRMV0xvY2tJ ZGVudGlmaWVyKFBHX1dBSVRfTFdMT0NLLCBldmVudElkKTsKKworCWlmICh0cmFuY2hlX25h bWUpCisJCVBHX1JFVFVSTl9URVhUX1AoY3N0cmluZ190b190ZXh0KHRyYW5jaGVfbmFtZSkp OworCWVsc2UKKwkJUEdfUkVUVVJOX05VTEwoKTsKK30KKwogLyoKICAqIFdyYXBwZXIgZm9y IExXTG9ja0luaXRpYWxpemUoKS4KICAqLwotLSAKMi40Ny4zCgo= --------------RTxBAvGejHiD1fX6JjUkgfRy Content-Type: text/x-patch; charset=UTF-8; name="v1-0002-Check-that-the-tranche-name-is-unique-in-RequestN.patch" Content-Disposition: attachment; filename*0="v1-0002-Check-that-the-tranche-name-is-unique-in-RequestN.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSA3MGQzODlmYWVhZWJlNDBmZWU0MmQ5MTVkNzc2OTI1ZDdiNWU1MDY3IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBIZWlra2kgTGlubmFrYW5nYXMgPGhlaWtraS5saW5u YWthbmdhc0Bpa2kuZmk+CkRhdGU6IFN1biwgNSBBcHIgMjAyNiAxNzoyODowOCArMDMwMApT dWJqZWN0OiBbUEFUQ0ggdjEgMi8yXSBDaGVjayB0aGF0IHRoZSB0cmFuY2hlIG5hbWUgaXMg dW5pcXVlIGluCiBSZXF1ZXN0TmFtZWRMV0xvY2tUcmFuY2hlCgpZb3UgY291bGQgcmVxdWVz dCB0d28gdHJhbmNoZXMgd2l0aCBzYW1lIG5hbWUsIGJ1dCB0aGluZ3Mgd291bGQgZ2V0CmNv bmZ1c2luZyB3aGVuIHlvdSBjYWxsZWQgR2V0TmFtZWRMV0xvY2tUcmFuY2hlKCkgdG8gZ2V0 IHRoZSBMV0xvY2tzCmFsbG9jYXRlZCBmb3IgdGhlbTsgaXQgd291bGQgYWx3YXlzIHJldHVy biB0aGUgZmlyc3QgdHJhbmNoZSB3aXRoIHRoZQpuYW1lLiBUaGF0IGRvZXNuJ3QgbWFrZSBz ZW5zZSwgc28gZm9yYmlkIGR1cGxpY2F0ZXMuCgpXZSBzdGlsbCBhbGxvdyBkdXBsaWNhdGVz IHdpdGggTFdMb2NrTmV3VHJhbmNoZUlkKCkuIFRoYXQgd29ya3MgYmV0dGVyCmFzIHlvdSBk b24ndCB1c2UgdGhlIG5hbWUgdG8gbG9vayB1cCB0aGUgdHJhbmNoZSBJRCBsYXRlci4gSXQn cyBzdGlsbApjb25mdXNpbmcgaW4gd2FpdCBldmVudHMsIGZvciBleGFtcGxlLCBidXQgaXQn cyBub3QgZGFuZ2Vyb3VzIGluIHRoZQpzYW1lIHdheS4KLS0tCiBzcmMvYmFja2VuZC9zdG9y YWdlL2xtZ3IvbHdsb2NrLmMgfCA3ICsrKysrKysKIDEgZmlsZSBjaGFuZ2VkLCA3IGluc2Vy dGlvbnMoKykKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvbHdsb2Nr LmMgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvbHdsb2NrLmMKaW5kZXggNWNiNjk2NDkw ZDYuLjk4MTM4Y2IwOWQxIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3Iv bHdsb2NrLmMKKysrIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL2x3bG9jay5jCkBAIC02 NDksNiArNjQ5LDEzIEBAIFJlcXVlc3ROYW1lZExXTG9ja1RyYW5jaGUoY29uc3QgY2hhciAq dHJhbmNoZV9uYW1lLCBpbnQgbnVtX2x3bG9ja3MpCiAJCQkJIGVycmRldGFpbCgiTm8gbW9y ZSB0aGFuICVkIHRyYW5jaGVzIG1heSBiZSByZWdpc3RlcmVkLiIsCiAJCQkJCQkgICBNQVhf VVNFUl9ERUZJTkVEX1RSQU5DSEVTKSkpOwogCisJLyogQ2hlY2sgdGhhdCB0aGUgbmFtZSBp c24ndCBhbHJlYWR5IGluIHVzZSAqLworCWZvcmVhY2hfcHRyKE5hbWVkTFdMb2NrVHJhbmNo ZVJlcXVlc3QsIGV4aXN0aW5nLCBOYW1lZExXTG9ja1RyYW5jaGVSZXF1ZXN0cykKKwl7CisJ CWlmIChzdHJjbXAoZXhpc3RpbmctPnRyYW5jaGVfbmFtZSwgdHJhbmNoZV9uYW1lKSA9PSAw KQorCQkJZWxvZyhFUlJPUiwgInJlcXVlc3RlZCB0cmFuY2hlIFwiJXNcIiBpcyBhbHJlYWR5 IHJlZ2lzdGVyZWQiLCB0cmFuY2hlX25hbWUpOworCX0KKwogCWlmIChJc1Bvc3RtYXN0ZXJF bnZpcm9ubWVudCkKIAkJb2xkY29udGV4dCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhQb3N0 bWFzdGVyQ29udGV4dCk7CiAJZWxzZQotLSAKMi40Ny4zCgo= --------------RTxBAvGejHiD1fX6JjUkgfRy--