Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1uJw4l-009h4y-4F for pgsql-hackers@arkaria.postgresql.org; Tue, 27 May 2025 15:18:47 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1uJw4j-0091A8-Ic for pgsql-hackers@arkaria.postgresql.org; Tue, 27 May 2025 15:18:45 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1uJw4j-00919K-25 for pgsql-hackers@lists.postgresql.org; Tue, 27 May 2025 15:18:45 +0000 Received: from mail-qk1-x72b.google.com ([2607:f8b0:4864:20::72b]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1uJw4f-000OBy-1j for pgsql-hackers@lists.postgresql.org; Tue, 27 May 2025 15:18:44 +0000 Received: by mail-qk1-x72b.google.com with SMTP id af79cd13be357-7c55d853b54so37250785a.0 for ; Tue, 27 May 2025 08:18:41 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1748359120; x=1748963920; darn=lists.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=rLz12YI2JAJfqIEpexM8qA2rXsNlQYUk3WbpM4LdHbQ=; b=jwDIKfJ6473NO5gIlh28bQ6P77243uEC0+HcvfrYhQZB+snmRVMbMz4HrXtWClnEP3 b8gZlgdzEyP0ABZZHVsG/4cljzcbtPiFhoUCQ6tFLUwi1g2NEWNKMlZUO8dv4MIhu9y8 s/AmQukfMxizrvakPozpyq1ZLl60qaPP/1Xmbc+/t2JjwHuVymH8B+pDkYfqUnkuYnHW OajirI9OdQaiBRdUVMxAqlzI6qKQ/ZVH6qyEZVHq3fofhs6Z9VZ4EOcGNfjBLLwPTDC6 +YsD7b2/InBJHnAdPe8WY3rdcR7NjSSLT9bSFk2pmd1dv17A9klggFUgIdNg9Rz/NlGl MSxQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1748359120; x=1748963920; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=rLz12YI2JAJfqIEpexM8qA2rXsNlQYUk3WbpM4LdHbQ=; b=EKMaeIbk+m8o+HyzevMKAKFV3PtWVvOVhPCbwNWwWt9La0PxXDG1IztYKaXTxj0lnj oEfYm4IX9Vuul821gv212Fa9kAOdUAKHHJAz0WDKiwTGwVWhLkMTs4HyKgmkX8Vbc57A qnq3LUSQMybLk3Q6GnipooZS1LOqrTPVdcduOvW1LuYOz551ne+CXYdBIy/Els3oQuY+ FdD+lZw9NlYp6+4GzeTpi7u1giDErx5PWSSAOGhjeThbOXQEFqy+7ZPVWvTX9awPh5D0 tvzGNdziAdcdNHTKFUbMk6DLz9d9AyFkOSoVzne0uk4iyXTfR+ROk04pCcdIbsssRLmK aLWw== X-Forwarded-Encrypted: i=1; AJvYcCUPaE8v3NeYubqeS7cOgBhj1XaSo+i2kwh05IB4vz39817y/yQl/LumWjMgBI72SMCFpiO0/FeTMmIF/lEk@lists.postgresql.org X-Gm-Message-State: AOJu0Yx9dh1rp/rvLI4GY71ehql5AfWKM+RZVrQZ6mRYBeHC1MwmoP15 JHJbJ1WNHXlHTDSGf+U5zcSaNGkGws7eVMNNA4/q5663D3y4PIquhRTNVKXhRY+ctLKpUK4dJjW dvxTSihkNBVmOOPRdiZKVSG4ceroZzaI= X-Gm-Gg: ASbGncvX1qeTO7HplM/DQnsjSgIw6D9ML7VJXG14fZI+ExHCTM08jG25YLcp7LoT8hK NtOwfroT+yrB01JCop5ycfmXDdwOsourIUmb4s1hcSuaBo/uZvYYFODAW4i3ZN1N89lapk2gtAL wB1r/TGyNnBig+GeIMziSRnboPPL9Wn7HE1g== X-Google-Smtp-Source: AGHT+IGUCRp3Su6UlO1HvMjiJV1T41Tb0HiHFMYBPgFzMB2vssRFBvMDpQ5/CUBvLM8Z8lZlhrfDkOFFRKqndFH9a6M= X-Received: by 2002:ac8:7d83:0:b0:472:1812:23da with SMTP id d75a77b69052e-49f47630c37mr78254171cf.11.1748359119845; Tue, 27 May 2025 08:18:39 -0700 (PDT) MIME-Version: 1.0 References: <4535f3aa-3220-4760-b1f5-2bc91f248e03@iki.fi> <2bc58592-9d74-4af0-bdd1-1a88e8683f7c@iki.fi> <36531c0e-292c-409d-bbc7-a252cf6e910a@iki.fi> In-Reply-To: From: Maxim Orlov Date: Tue, 27 May 2025 18:18:26 +0300 X-Gm-Features: AX0GCFubiq-KN1kpyt0Fy2bBPuBHL_xxiGXWqCqHBzk3wmwe_v_nV2--TBIq_h0 Message-ID: Subject: Re: POC: make mxidoff 64 bits To: Ashutosh Bapat Cc: wenhui qiu , Heikki Linnakangas , Alexander Korotkov , Postgres hackers Content-Type: multipart/mixed; boundary="0000000000004764a606361f94b1" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000004764a606361f94b1 Content-Type: multipart/alternative; boundary="0000000000004764a406361f94af" --0000000000004764a406361f94af Content-Type: text/plain; charset="UTF-8" On Tue, 29 Apr 2025 at 15:01, Ashutosh Bapat wrote: > > I notice that transam/README does not mention multixact except one place > in section "Transaction Emulation during Recovery". I expected it to > document how pg_multixact/members and pg_multixact/offset are used and what > is their layout. It's not the responsibility of this patchset to document > it, but it will be good if we add a section about multixacts in > transam/README. It will make reviews easier. > Yeah, I agree, this is a big overlook, I think. Anyone who tries to understand how pg_multixact works has to deal with the code. Certainly, we need to address this issue. But for now, here is a new rebase @ 70a13c528b6e382a381f. The only change is that following commits 15a79c7 and a0ed19e, we must also switch to PRIu64 format. -- Best regards, Maxim Orlov. --0000000000004764a406361f94af Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable


On Tue, 29 Apr = 2025 at 15:01, Ashutosh Bapat <ashutosh.bapat.oss@gmail.com> wrote:

I notice that transam/README does = not mention multixact except one place in section "Transaction Emulati= on during Recovery". I expected it to document how pg_multixact/member= s and pg_multixact/offset are used and what is their layout. It's not t= he responsibility of this patchset to document it, but it will be good if w= e add a section about multixacts in transam/README. It will make reviews ea= sier.

Yeah, I agree= , this is a big overlook, I think. Anyone who tries to understand how pg_mu= ltixact works has to deal with the code.=C2=A0
Certainly, we need= to address this issue.

But for now, here is a new rebase @ 70a13c52= 8b6e382a381f.=C2=A0
The only change is that following commits 15a= 79c7 and a0ed19e, we must also switch to PRIu64 format.

--
Best regards,
Maxim Or= lov.
--0000000000004764a406361f94af-- --0000000000004764a606361f94b1 Content-Type: text/plain; charset="US-ASCII"; name="v15-0005-TEST-initdb-option-to-initialize-cluster-with-no.patch.txt" Content-Disposition: attachment; filename="v15-0005-TEST-initdb-option-to-initialize-cluster-with-no.patch.txt" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mb6nsi134 RnJvbSBjZDJhZjk4YmVmOTNiMThkM2Y2NGFmZWQ3MjM5ZjJhMTg5NThhODc4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXhpbSBPcmxvdiA8bS5vcmxvdkBwb3N0Z3Jlc3Byby5ydT4K RGF0ZTogV2VkLCA0IE1heSAyMDIyIDE1OjUzOjM2ICswMzAwClN1YmplY3Q6IFtQQVRDSCB2MTUg NS83XSBURVNUOiBpbml0ZGIgb3B0aW9uIHRvIGluaXRpYWxpemUgY2x1c3RlciB3aXRoCiBub24t c3RhbmRhcmQgeGlkL214aWQvbXhvZmYKClRvIGRhdGUgdGVzdGluZyBkYXRhYmFzZSBjbHVzdGVy IHdyYXBhcnVuZCB3YXMgbm90IGVhc3kgYXMgaW5pdGRiIGhhcyBhbHdheXMKaW5pdGVkIGl0IHdp dGggZGVmYXVsdCB4aWQvbXhpZC9teG9mZi4gVGhlIG9wdGlvbiB0byBzcGVjaWZ5IGFueSB2YWxp ZAp4aWQvbXhpZC9teG9mZiBhdCBjbHVzdGVyIHN0YXJ0dXAgd2lsbCBtYWtlIHRoZXNlIHRoaW5n cyBlYXNpZXIuCgpBdXRob3I6IE1heGltIE9ybG92IDxvcmxvdm1nQGdtYWlsLmNvbT4KQXV0aG9y OiBQYXZlbCBCb3Jpc292IDxwYXNoa2luLmVsZmVAZ21haWwuY29tPgpBdXRob3I6IFN2ZXRsYW5h IERlcmV2eWFua28gPHMuZGVyZXZ5YW5rb0Bwb3N0Z3Jlc3Byby5ydT4KRGlzY3Vzc2lvbjogaHR0 cHM6Ly93d3cucG9zdGdyZXNxbC5vcmcvbWVzc2FnZS1pZC9mbGF0L0NBQ0clM0RlemFhNHZxWWpK MTZ5b3hncnBhLSUzRGdYbmYwVnYzRXk5YmpHclJSRk4yWXlXRlElNDBtYWlsLmdtYWlsLmNvbQot LS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL2Nsb2cuYyAgICAgIHwgIDIxICsrKysrCiBz cmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS9tdWx0aXhhY3QuYyB8ICA1MyArKysrKysrKysrKysK IHNyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3N1YnRyYW5zLmMgIHwgICA4ICstCiBzcmMvYmFj a2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9nLmMgICAgICB8ICAxNSArKy0tCiBzcmMvYmFja2VuZC9i b290c3RyYXAvYm9vdHN0cmFwLmMgICAgICB8ICA1MCArKysrKysrKysrKy0KIHNyYy9iYWNrZW5k L21haW4vbWFpbi5jICAgICAgICAgICAgICAgIHwgICA2ICsrCiBzcmMvYmFja2VuZC9wb3N0bWFz dGVyL3Bvc3RtYXN0ZXIuYyAgICB8ICAxNCArKystCiBzcmMvYmFja2VuZC90Y29wL3Bvc3RncmVz LmMgICAgICAgICAgICB8ICA1MyArKysrKysrKysrKy0KIHNyYy9iaW4vaW5pdGRiL2luaXRkYi5j ICAgICAgICAgICAgICAgIHwgMTA3ICsrKysrKysrKysrKysrKysrKysrKysrKy0KIHNyYy9iaW4v aW5pdGRiL3QvMDAxX2luaXRkYi5wbCAgICAgICAgIHwgIDYwICsrKysrKysrKysrKysrCiBzcmMv aW5jbHVkZS9hY2Nlc3MveGxvZy5oICAgICAgICAgICAgICB8ICAgMyArCiBzcmMvaW5jbHVkZS9j LmggICAgICAgICAgICAgICAgICAgICAgICB8ICAgNCArCiBzcmMvaW5jbHVkZS9jYXRhbG9nL3Bn X2NsYXNzLmggICAgICAgICB8ICAgMiArLQogMTMgZmlsZXMgY2hhbmdlZCwgMzgyIGluc2VydGlv bnMoKyksIDE0IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90 cmFuc2FtL2Nsb2cuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL2Nsb2cuYwppbmRleCA0 OGYxMGJlYzkxLi5lYjhhOTc5MWFiIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJh bnNhbS9jbG9nLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vY2xvZy5jCkBAIC04 MzQsNiArODM0LDcgQEAgQm9vdFN0cmFwQ0xPRyh2b2lkKQogewogCWludAkJCXNsb3RubzsKIAlM V0xvY2sJICAgKmxvY2sgPSBTaW1wbGVMcnVHZXRCYW5rTG9jayhYYWN0Q3RsLCAwKTsKKwlpbnQ2 NAkJcGFnZW5vOwogCiAJTFdMb2NrQWNxdWlyZShsb2NrLCBMV19FWENMVVNJVkUpOwogCkBAIC04 NDQsNiArODQ1LDI2IEBAIEJvb3RTdHJhcENMT0codm9pZCkKIAlTaW1wbGVMcnVXcml0ZVBhZ2Uo WGFjdEN0bCwgc2xvdG5vKTsKIAlBc3NlcnQoIVhhY3RDdGwtPnNoYXJlZC0+cGFnZV9kaXJ0eVtz bG90bm9dKTsKIAorCXBhZ2VubyA9IFRyYW5zYWN0aW9uSWRUb1BhZ2UoWGlkRnJvbUZ1bGxUcmFu c2FjdGlvbklkKFRyYW5zYW1WYXJpYWJsZXMtPm5leHRYaWQpKTsKKwlpZiAocGFnZW5vICE9IDAp CisJeworCQlMV0xvY2sgKm5leHRsb2NrID0gU2ltcGxlTHJ1R2V0QmFua0xvY2soWGFjdEN0bCwg cGFnZW5vKTsKKworCQlpZiAobmV4dGxvY2sgIT0gbG9jaykKKwkJeworCQkJTFdMb2NrUmVsZWFz ZShsb2NrKTsKKwkJCUxXTG9ja0FjcXVpcmUobmV4dGxvY2ssIExXX0VYQ0xVU0lWRSk7CisJCQls b2NrID0gbmV4dGxvY2s7CisJCX0KKworCQkvKiBDcmVhdGUgYW5kIHplcm8gdGhlIGZpcnN0IHBh Z2Ugb2YgdGhlIGNvbW1pdCBsb2cgKi8KKwkJc2xvdG5vID0gWmVyb0NMT0dQYWdlKHBhZ2Vubywg ZmFsc2UpOworCisJCS8qIE1ha2Ugc3VyZSBpdCdzIHdyaXR0ZW4gb3V0ICovCisJCVNpbXBsZUxy dVdyaXRlUGFnZShYYWN0Q3RsLCBzbG90bm8pOworCQlBc3NlcnQoIVhhY3RDdGwtPnNoYXJlZC0+ cGFnZV9kaXJ0eVtzbG90bm9dKTsKKwl9CisKIAlMV0xvY2tSZWxlYXNlKGxvY2spOwogfQogCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS9tdWx0aXhhY3QuYyBiL3NyYy9i YWNrZW5kL2FjY2Vzcy90cmFuc2FtL211bHRpeGFjdC5jCmluZGV4IDA1OWE3MmYxMDYuLjllMjQx OThhMWUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL211bHRpeGFjdC5j CisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL211bHRpeGFjdC5jCkBAIC0xOTU1LDYg KzE5NTUsNyBAQCBCb290U3RyYXBNdWx0aVhhY3Qodm9pZCkKIHsKIAlpbnQJCQlzbG90bm87CiAJ TFdMb2NrCSAgICpsb2NrOworCWludDY0CQlwYWdlbm87CiAKIAlsb2NrID0gU2ltcGxlTHJ1R2V0 QmFua0xvY2soTXVsdGlYYWN0T2Zmc2V0Q3RsLCAwKTsKIAlMV0xvY2tBY3F1aXJlKGxvY2ssIExX X0VYQ0xVU0lWRSk7CkBAIC0xOTY2LDYgKzE5NjcsMjYgQEAgQm9vdFN0cmFwTXVsdGlYYWN0KHZv aWQpCiAJU2ltcGxlTHJ1V3JpdGVQYWdlKE11bHRpWGFjdE9mZnNldEN0bCwgc2xvdG5vKTsKIAlB c3NlcnQoIU11bHRpWGFjdE9mZnNldEN0bC0+c2hhcmVkLT5wYWdlX2RpcnR5W3Nsb3Rub10pOwog CisJcGFnZW5vID0gTXVsdGlYYWN0SWRUb09mZnNldFBhZ2UoTXVsdGlYYWN0U3RhdGUtPm5leHRN WGFjdCk7CisJaWYgKHBhZ2VubyAhPSAwKQorCXsKKwkJTFdMb2NrICpuZXh0bG9jayA9IFNpbXBs ZUxydUdldEJhbmtMb2NrKE11bHRpWGFjdE9mZnNldEN0bCwgcGFnZW5vKTsKKworCQlpZiAobmV4 dGxvY2sgIT0gbG9jaykKKwkJeworCQkJTFdMb2NrUmVsZWFzZShsb2NrKTsKKwkJCUxXTG9ja0Fj cXVpcmUobmV4dGxvY2ssIExXX0VYQ0xVU0lWRSk7CisJCQlsb2NrID0gbmV4dGxvY2s7CisJCX0K KworCQkvKiBDcmVhdGUgYW5kIHplcm8gdGhlIGZpcnN0IHBhZ2Ugb2YgdGhlIG9mZnNldHMgbG9n ICovCisJCXNsb3RubyA9IFplcm9NdWx0aVhhY3RPZmZzZXRQYWdlKHBhZ2VubywgZmFsc2UpOwor CisJCS8qIE1ha2Ugc3VyZSBpdCdzIHdyaXR0ZW4gb3V0ICovCisJCVNpbXBsZUxydVdyaXRlUGFn ZShNdWx0aVhhY3RPZmZzZXRDdGwsIHNsb3Rubyk7CisJCUFzc2VydCghTXVsdGlYYWN0T2Zmc2V0 Q3RsLT5zaGFyZWQtPnBhZ2VfZGlydHlbc2xvdG5vXSk7CisJfQorCiAJTFdMb2NrUmVsZWFzZShs b2NrKTsKIAogCWxvY2sgPSBTaW1wbGVMcnVHZXRCYW5rTG9jayhNdWx0aVhhY3RNZW1iZXJDdGws IDApOwpAQCAtMTk3OCw3ICsxOTk5LDM5IEBAIEJvb3RTdHJhcE11bHRpWGFjdCh2b2lkKQogCVNp bXBsZUxydVdyaXRlUGFnZShNdWx0aVhhY3RNZW1iZXJDdGwsIHNsb3Rubyk7CiAJQXNzZXJ0KCFN dWx0aVhhY3RNZW1iZXJDdGwtPnNoYXJlZC0+cGFnZV9kaXJ0eVtzbG90bm9dKTsKIAorCXBhZ2Vu byA9IE1YT2Zmc2V0VG9NZW1iZXJQYWdlKE11bHRpWGFjdFN0YXRlLT5uZXh0T2Zmc2V0KTsKKwlp ZiAocGFnZW5vICE9IDApCisJeworCQlMV0xvY2sgKm5leHRsb2NrID0gU2ltcGxlTHJ1R2V0QmFu a0xvY2soTXVsdGlYYWN0TWVtYmVyQ3RsLCBwYWdlbm8pOworCisJCWlmIChuZXh0bG9jayAhPSBs b2NrKQorCQl7CisJCQlMV0xvY2tSZWxlYXNlKGxvY2spOworCQkJTFdMb2NrQWNxdWlyZShuZXh0 bG9jaywgTFdfRVhDTFVTSVZFKTsKKwkJCWxvY2sgPSBuZXh0bG9jazsKKwkJfQorCisJCS8qIENy ZWF0ZSBhbmQgemVybyB0aGUgZmlyc3QgcGFnZSBvZiB0aGUgbWVtYmVycyBsb2cgKi8KKwkJc2xv dG5vID0gWmVyb011bHRpWGFjdE1lbWJlclBhZ2UocGFnZW5vLCBmYWxzZSk7CisKKwkJLyogTWFr ZSBzdXJlIGl0J3Mgd3JpdHRlbiBvdXQgKi8KKwkJU2ltcGxlTHJ1V3JpdGVQYWdlKE11bHRpWGFj dE1lbWJlckN0bCwgc2xvdG5vKTsKKwkJQXNzZXJ0KCFNdWx0aVhhY3RNZW1iZXJDdGwtPnNoYXJl ZC0+cGFnZV9kaXJ0eVtzbG90bm9dKTsKKwl9CisKIAlMV0xvY2tSZWxlYXNlKGxvY2spOworCisJ LyoKKwkgKiBJZiB3ZSdyZSBzdGFydGluZyBub3QgZnJvbSB6ZXJvIG9mZnNldCwgaW5pdGlsaXpl IGR1bW15IG11bHRpeGFjdCB0bworCSAqIGV2YWRlIHRvbyBsb25nIGxvb3AgaW4gUGVyZm9ybU1l bWJlcnNUcnVuY2F0aW9uKCkuCisJICovCisJaWYgKE11bHRpWGFjdFN0YXRlLT5uZXh0T2Zmc2V0 ID4gMCAmJiBNdWx0aVhhY3RTdGF0ZS0+bmV4dE1YYWN0ID4gMCkKKwl7CisJCVJlY29yZE5ld011 bHRpWGFjdChGaXJzdE11bHRpWGFjdElkLAorCQkJCQkJICAgTXVsdGlYYWN0U3RhdGUtPm5leHRP ZmZzZXQsIDAsIE5VTEwpOworCQlSZWNvcmROZXdNdWx0aVhhY3QoTXVsdGlYYWN0U3RhdGUtPm5l eHRNWGFjdCwKKwkJCQkJCSAgIE11bHRpWGFjdFN0YXRlLT5uZXh0T2Zmc2V0LCAwLCBOVUxMKTsK Kwl9CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS9zdWJ0 cmFucy5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vc3VidHJhbnMuYwppbmRleCAxNTE1 MzYxOGZhLi4yMTg2NzVmYTYwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNh bS9zdWJ0cmFucy5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3N1YnRyYW5zLmMK QEAgLTI3MCwxMiArMjcwLDE2IEBAIHZvaWQKIEJvb3RTdHJhcFNVQlRSQU5TKHZvaWQpCiB7CiAJ aW50CQkJc2xvdG5vOwotCUxXTG9jawkgICAqbG9jayA9IFNpbXBsZUxydUdldEJhbmtMb2NrKFN1 YlRyYW5zQ3RsLCAwKTsKKwlMV0xvY2sJICAgKmxvY2s7CisJaW50NjQJCXBhZ2VubzsKKworCXBh Z2VubyA9IFRyYW5zYWN0aW9uSWRUb1BhZ2UoWGlkRnJvbUZ1bGxUcmFuc2FjdGlvbklkKFRyYW5z YW1WYXJpYWJsZXMtPm5leHRYaWQpKTsKKwlsb2NrID0gU2ltcGxlTHJ1R2V0QmFua0xvY2soU3Vi VHJhbnNDdGwsIHBhZ2Vubyk7CiAKIAlMV0xvY2tBY3F1aXJlKGxvY2ssIExXX0VYQ0xVU0lWRSk7 CiAKIAkvKiBDcmVhdGUgYW5kIHplcm8gdGhlIGZpcnN0IHBhZ2Ugb2YgdGhlIHN1YnRyYW5zIGxv ZyAqLwotCXNsb3RubyA9IFplcm9TVUJUUkFOU1BhZ2UoMCk7CisJc2xvdG5vID0gWmVyb1NVQlRS QU5TUGFnZShwYWdlbm8pOwogCiAJLyogTWFrZSBzdXJlIGl0J3Mgd3JpdHRlbiBvdXQgKi8KIAlT aW1wbGVMcnVXcml0ZVBhZ2UoU3ViVHJhbnNDdGwsIHNsb3Rubyk7CmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9nLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNh bS94bG9nLmMKaW5kZXggMTkxNDg1OWIyZS4uMDk5NTRmZDVmOCAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZy5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFu c2FtL3hsb2cuYwpAQCAtMTM2LDYgKzEzNiwxMCBAQCBpbnQJCQltYXhfc2xvdF93YWxfa2VlcF9z aXplX21iID0gLTE7CiBpbnQJCQl3YWxfZGVjb2RlX2J1ZmZlcl9zaXplID0gNTEyICogMTAyNDsK IGJvb2wJCXRyYWNrX3dhbF9pb190aW1pbmcgPSBmYWxzZTsKIAorVHJhbnNhY3Rpb25JZAkJc3Rh cnRfeGlkID0gRmlyc3ROb3JtYWxUcmFuc2FjdGlvbklkOworTXVsdGlYYWN0SWQJCQlzdGFydF9t eGlkID0gRmlyc3RNdWx0aVhhY3RJZDsKK011bHRpWGFjdE9mZnNldAkJc3RhcnRfbXhvZmYgPSAw OworCiAjaWZkZWYgV0FMX0RFQlVHCiBib29sCQlYTE9HX0RFQlVHID0gZmFsc2U7CiAjZW5kaWYK QEAgLTUyNjUsMTMgKzUyNjksMTQgQEAgQm9vdFN0cmFwWExPRyh1aW50MzIgZGF0YV9jaGVja3N1 bV92ZXJzaW9uKQogCWNoZWNrUG9pbnQuZnVsbFBhZ2VXcml0ZXMgPSBmdWxsUGFnZVdyaXRlczsK IAljaGVja1BvaW50LndhbF9sZXZlbCA9IHdhbF9sZXZlbDsKIAljaGVja1BvaW50Lm5leHRYaWQg PQotCQlGdWxsVHJhbnNhY3Rpb25JZEZyb21FcG9jaEFuZFhpZCgwLCBGaXJzdE5vcm1hbFRyYW5z YWN0aW9uSWQpOworCQlGdWxsVHJhbnNhY3Rpb25JZEZyb21FcG9jaEFuZFhpZCgwLCBNYXgoRmly c3ROb3JtYWxUcmFuc2FjdGlvbklkLAorCQkJCQkJCQkJCQkJc3RhcnRfeGlkKSk7CiAJY2hlY2tQ b2ludC5uZXh0T2lkID0gRmlyc3RHZW5ia2lPYmplY3RJZDsKLQljaGVja1BvaW50Lm5leHRNdWx0 aSA9IEZpcnN0TXVsdGlYYWN0SWQ7Ci0JY2hlY2tQb2ludC5uZXh0TXVsdGlPZmZzZXQgPSAwOwot CWNoZWNrUG9pbnQub2xkZXN0WGlkID0gRmlyc3ROb3JtYWxUcmFuc2FjdGlvbklkOworCWNoZWNr UG9pbnQubmV4dE11bHRpID0gTWF4KEZpcnN0TXVsdGlYYWN0SWQsIHN0YXJ0X214aWQpOworCWNo ZWNrUG9pbnQubmV4dE11bHRpT2Zmc2V0ID0gc3RhcnRfbXhvZmY7CisJY2hlY2tQb2ludC5vbGRl c3RYaWQgPSBYaWRGcm9tRnVsbFRyYW5zYWN0aW9uSWQoY2hlY2tQb2ludC5uZXh0WGlkKTsKIAlj aGVja1BvaW50Lm9sZGVzdFhpZERCID0gVGVtcGxhdGUxRGJPaWQ7Ci0JY2hlY2tQb2ludC5vbGRl c3RNdWx0aSA9IEZpcnN0TXVsdGlYYWN0SWQ7CisJY2hlY2tQb2ludC5vbGRlc3RNdWx0aSA9IGNo ZWNrUG9pbnQubmV4dE11bHRpOwogCWNoZWNrUG9pbnQub2xkZXN0TXVsdGlEQiA9IFRlbXBsYXRl MURiT2lkOwogCWNoZWNrUG9pbnQub2xkZXN0Q29tbWl0VHNYaWQgPSBJbnZhbGlkVHJhbnNhY3Rp b25JZDsKIAljaGVja1BvaW50Lm5ld2VzdENvbW1pdFRzWGlkID0gSW52YWxpZFRyYW5zYWN0aW9u SWQ7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9ib290c3RyYXAvYm9vdHN0cmFwLmMgYi9zcmMv YmFja2VuZC9ib290c3RyYXAvYm9vdHN0cmFwLmMKaW5kZXggNmRiODY0ODkyZC4uNDU4ZGMzZWIy OSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYm9vdHN0cmFwL2Jvb3RzdHJhcC5jCisrKyBiL3Ny Yy9iYWNrZW5kL2Jvb3RzdHJhcC9ib290c3RyYXAuYwpAQCAtMjE4LDcgKzIxOCw3IEBAIEJvb3Rz dHJhcE1vZGVNYWluKGludCBhcmdjLCBjaGFyICphcmd2W10sIGJvb2wgY2hlY2tfb25seSkKIAlh cmd2Kys7CiAJYXJnYy0tOwogCi0Jd2hpbGUgKChmbGFnID0gZ2V0b3B0KGFyZ2MsIGFyZ3YsICJC OmM6ZDpEOkZrcjpYOi06IikpICE9IC0xKQorCXdoaWxlICgoZmxhZyA9IGdldG9wdChhcmdjLCBh cmd2LCAiQjpjOmQ6RDpGa206bzpyOlg6eDotOiIpKSAhPSAtMSkKIAl7CiAJCXN3aXRjaCAoZmxh ZykKIAkJewpAQCAtMjg2LDEyICsyODYsNjAgQEAgQm9vdHN0cmFwTW9kZU1haW4oaW50IGFyZ2Ms IGNoYXIgKmFyZ3ZbXSwgYm9vbCBjaGVja19vbmx5KQogCQkJY2FzZSAnayc6CiAJCQkJYm9vdHN0 cmFwX2RhdGFfY2hlY2tzdW1fdmVyc2lvbiA9IFBHX0RBVEFfQ0hFQ0tTVU1fVkVSU0lPTjsKIAkJ CQlicmVhazsKKwkJCWNhc2UgJ20nOgorCQkJCXsKKwkJCQkJY2hhcgkgICAqZW5kcHRyOworCisJ CQkJCWVycm5vID0gMDsKKwkJCQkJc3RhcnRfbXhpZCA9IHN0cnRvdTY0KG9wdGFyZywgJmVuZHB0 ciwgMCk7CisKKwkJCQkJaWYgKGVuZHB0ciA9PSBvcHRhcmcgfHwgKmVuZHB0ciAhPSAnXDAnIHx8 IGVycm5vICE9IDAgfHwKKwkJCQkJCSFTdGFydE11bHRpWGFjdElkSXNWYWxpZChzdGFydF9teGlk KSkKKwkJCQkJeworCQkJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCQkJKGVycmNvZGUoRVJSQ09E RV9TWU5UQVhfRVJST1IpLAorCQkJCQkJCQkgZXJybXNnKCJpbnZhbGlkIGluaXRpYWwgZGF0YWJh c2UgY2x1c3RlciBtdWx0aXhhY3QgaWQiKSkpOworCQkJCQl9CisJCQkJfQorCQkJCWJyZWFrOwor CQkJY2FzZSAnbyc6CisJCQkJeworCQkJCQljaGFyCSAgICplbmRwdHI7CisKKwkJCQkJZXJybm8g PSAwOworCQkJCQlzdGFydF9teG9mZiA9IHN0cnRvdTY0KG9wdGFyZywgJmVuZHB0ciwgMCk7CisK KwkJCQkJaWYgKGVuZHB0ciA9PSBvcHRhcmcgfHwgKmVuZHB0ciAhPSAnXDAnIHx8IGVycm5vICE9 IDAgfHwKKwkJCQkJCSFTdGFydE11bHRpWGFjdE9mZnNldElzVmFsaWQoc3RhcnRfbXhvZmYpKQor CQkJCQl7CisJCQkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJCQkoZXJyY29kZShFUlJDT0RFX1NZ TlRBWF9FUlJPUiksCisJCQkJCQkJCSBlcnJtc2coImludmFsaWQgaW5pdGlhbCBkYXRhYmFzZSBj bHVzdGVyIG11bHRpeGFjdCBvZmZzZXQiKSkpOworCQkJCQl9CisJCQkJfQorCQkJCWJyZWFrOwog CQkJY2FzZSAncic6CiAJCQkJc3RybGNweShPdXRwdXRGaWxlTmFtZSwgb3B0YXJnLCBNQVhQR1BB VEgpOwogCQkJCWJyZWFrOwogCQkJY2FzZSAnWCc6CiAJCQkJU2V0Q29uZmlnT3B0aW9uKCJ3YWxf c2VnbWVudF9zaXplIiwgb3B0YXJnLCBQR0NfSU5URVJOQUwsIFBHQ19TX0RZTkFNSUNfREVGQVVM VCk7CiAJCQkJYnJlYWs7CisJCQljYXNlICd4JzoKKwkJCQl7CisJCQkJCWNoYXIJICAgKmVuZHB0 cjsKKworCQkJCQllcnJubyA9IDA7CisJCQkJCXN0YXJ0X3hpZCA9IHN0cnRvdTY0KG9wdGFyZywg JmVuZHB0ciwgMCk7CisKKwkJCQkJaWYgKGVuZHB0ciA9PSBvcHRhcmcgfHwgKmVuZHB0ciAhPSAn XDAnIHx8IGVycm5vICE9IDAgfHwKKwkJCQkJCSFTdGFydFRyYW5zYWN0aW9uSWRJc1ZhbGlkKHN0 YXJ0X3hpZCkpCisJCQkJCXsKKwkJCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkJCShlcnJjb2Rl KEVSUkNPREVfU1lOVEFYX0VSUk9SKSwKKwkJCQkJCQkJIGVycm1zZygiaW52YWxpZCBpbml0aWFs IGRhdGFiYXNlIGNsdXN0ZXIgeGlkIHZhbHVlIikpKTsKKwkJCQkJfQorCQkJCX0KKwkJCQlicmVh azsKIAkJCWRlZmF1bHQ6CiAJCQkJd3JpdGVfc3RkZXJyKCJUcnkgXCIlcyAtLWhlbHBcIiBmb3Ig bW9yZSBpbmZvcm1hdGlvbi5cbiIsCiAJCQkJCQkJIHByb2duYW1lKTsKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL21haW4vbWFpbi5jIGIvc3JjL2JhY2tlbmQvbWFpbi9tYWluLmMKaW5kZXggN2Q2 M2NmOTRhNi4uMGEwZWUxNjIyMCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvbWFpbi9tYWluLmMK KysrIGIvc3JjL2JhY2tlbmQvbWFpbi9tYWluLmMKQEAgLTQyMywxMiArNDIzLDE4IEBAIGhlbHAo Y29uc3QgY2hhciAqcHJvZ25hbWUpCiAJcHJpbnRmKF8oIiAgLUUgICAgICAgICAgICAgICAgIGVj aG8gc3RhdGVtZW50IGJlZm9yZSBleGVjdXRpb25cbiIpKTsKIAlwcmludGYoXygiICAtaiAgICAg ICAgICAgICAgICAgZG8gbm90IHVzZSBuZXdsaW5lIGFzIGludGVyYWN0aXZlIHF1ZXJ5IGRlbGlt aXRlclxuIikpOwogCXByaW50ZihfKCIgIC1yIEZJTEVOQU1FICAgICAgICBzZW5kIHN0ZG91dCBh bmQgc3RkZXJyIHRvIGdpdmVuIGZpbGVcbiIpKTsKKwlwcmludGYoXygiICAtbSBTVEFSVF9NWElE ICAgICAgc2V0IGluaXRpYWwgZGF0YWJhc2UgY2x1c3RlciBtdWx0aXhhY3QgaWRcbiIpKTsKKwlw cmludGYoXygiICAtbyBTVEFSVF9NWE9GRiAgICAgc2V0IGluaXRpYWwgZGF0YWJhc2UgY2x1c3Rl ciBtdWx0aXhhY3Qgb2Zmc2V0XG4iKSk7CisJcHJpbnRmKF8oIiAgLXggU1RBUlRfWElEICAgICAg IHNldCBpbml0aWFsIGRhdGFiYXNlIGNsdXN0ZXIgeGlkXG4iKSk7CiAKIAlwcmludGYoXygiXG5P cHRpb25zIGZvciBib290c3RyYXBwaW5nIG1vZGU6XG4iKSk7CiAJcHJpbnRmKF8oIiAgLS1ib290 ICAgICAgICAgICAgIHNlbGVjdHMgYm9vdHN0cmFwcGluZyBtb2RlIChtdXN0IGJlIGZpcnN0IGFy Z3VtZW50KVxuIikpOwogCXByaW50ZihfKCIgIC0tY2hlY2sgICAgICAgICAgICBzZWxlY3RzIGNo ZWNrIG1vZGUgKG11c3QgYmUgZmlyc3QgYXJndW1lbnQpXG4iKSk7CiAJcHJpbnRmKF8oIiAgREJO QU1FICAgICAgICAgICAgIGRhdGFiYXNlIG5hbWUgKG1hbmRhdG9yeSBhcmd1bWVudCBpbiBib290 c3RyYXBwaW5nIG1vZGUpXG4iKSk7CiAJcHJpbnRmKF8oIiAgLXIgRklMRU5BTUUgICAgICAgIHNl bmQgc3Rkb3V0IGFuZCBzdGRlcnIgdG8gZ2l2ZW4gZmlsZVxuIikpOworCXByaW50ZihfKCIgIC1t IFNUQVJUX01YSUQgICAgICBzZXQgaW5pdGlhbCBkYXRhYmFzZSBjbHVzdGVyIG11bHRpeGFjdCBp ZFxuIikpOworCXByaW50ZihfKCIgIC1vIFNUQVJUX01YT0ZGICAgICBzZXQgaW5pdGlhbCBkYXRh YmFzZSBjbHVzdGVyIG11bHRpeGFjdCBvZmZzZXRcbiIpKTsKKwlwcmludGYoXygiICAteCBTVEFS VF9YSUQgICAgICAgc2V0IGluaXRpYWwgZGF0YWJhc2UgY2x1c3RlciB4aWRcbiIpKTsKIAogCXBy aW50ZihfKCJcblBsZWFzZSByZWFkIHRoZSBkb2N1bWVudGF0aW9uIGZvciB0aGUgY29tcGxldGUg bGlzdCBvZiBydW4tdGltZVxuIgogCQkJICJjb25maWd1cmF0aW9uIHNldHRpbmdzIGFuZCBob3cg dG8gc2V0IHRoZW0gb24gdGhlIGNvbW1hbmQgbGluZSBvciBpblxuIgpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvcG9zdG1hc3Rlci9wb3N0bWFzdGVyLmMgYi9zcmMvYmFja2VuZC9wb3N0bWFzdGVy L3Bvc3RtYXN0ZXIuYwppbmRleCA0OTBmN2NlMzY2Li5iNDE5MTVkZWVkIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9wb3N0bWFzdGVyL3Bvc3RtYXN0ZXIuYworKysgYi9zcmMvYmFja2VuZC9wb3N0 bWFzdGVyL3Bvc3RtYXN0ZXIuYwpAQCAtNTk1LDcgKzU5NSw3IEBAIFBvc3RtYXN0ZXJNYWluKGlu dCBhcmdjLCBjaGFyICphcmd2W10pCiAJICogdGNvcC9wb3N0Z3Jlcy5jICh0aGUgb3B0aW9uIHNl dHMgc2hvdWxkIG5vdCBjb25mbGljdCkgYW5kIHdpdGggdGhlCiAJICogY29tbW9uIGhlbHAoKSBm dW5jdGlvbiBpbiBtYWluL21haW4uYy4KIAkgKi8KLQl3aGlsZSAoKG9wdCA9IGdldG9wdChhcmdj LCBhcmd2LCAiQjpiQzpjOkQ6ZDpFZUZmOmg6aWprOmxOOk9QcDpyOlM6c1R0Olc6LToiKSkgIT0g LTEpCisJd2hpbGUgKChvcHQgPSBnZXRvcHQoYXJnYywgYXJndiwgIkI6YkM6YzpEOmQ6RWVGZjpo OmlqazpsbTpOOk9vOlBwOnI6UzpzVHQ6Vzp4Oi06IikpICE9IC0xKQogCXsKIAkJc3dpdGNoIChv cHQpCiAJCXsKQEAgLTcwNSwxMCArNzA1LDE4IEBAIFBvc3RtYXN0ZXJNYWluKGludCBhcmdjLCBj aGFyICphcmd2W10pCiAJCQkJU2V0Q29uZmlnT3B0aW9uKCJtYXhfY29ubmVjdGlvbnMiLCBvcHRh cmcsIFBHQ19QT1NUTUFTVEVSLCBQR0NfU19BUkdWKTsKIAkJCQlicmVhazsKIAorCQkJY2FzZSAn bSc6CisJCQkJLyogb25seSB1c2VkIGJ5IHNpbmdsZS11c2VyIGJhY2tlbmQgKi8KKwkJCQlicmVh azsKKwogCQkJY2FzZSAnTyc6CiAJCQkJU2V0Q29uZmlnT3B0aW9uKCJhbGxvd19zeXN0ZW1fdGFi bGVfbW9kcyIsICJ0cnVlIiwgUEdDX1BPU1RNQVNURVIsIFBHQ19TX0FSR1YpOwogCQkJCWJyZWFr OwogCisJCQljYXNlICdvJzoKKwkJCQkvKiBvbmx5IHVzZWQgYnkgc2luZ2xlLXVzZXIgYmFja2Vu ZCAqLworCQkJCWJyZWFrOworCiAJCQljYXNlICdQJzoKIAkJCQlTZXRDb25maWdPcHRpb24oImln bm9yZV9zeXN0ZW1faW5kZXhlcyIsICJ0cnVlIiwgUEdDX1BPU1RNQVNURVIsIFBHQ19TX0FSR1Yp OwogCQkJCWJyZWFrOwpAQCAtNzU5LDYgKzc2NywxMCBAQCBQb3N0bWFzdGVyTWFpbihpbnQgYXJn YywgY2hhciAqYXJndltdKQogCQkJCVNldENvbmZpZ09wdGlvbigicG9zdF9hdXRoX2RlbGF5Iiwg b3B0YXJnLCBQR0NfUE9TVE1BU1RFUiwgUEdDX1NfQVJHVik7CiAJCQkJYnJlYWs7CiAKKwkJCWNh c2UgJ3gnOgorCQkJCS8qIG9ubHkgdXNlZCBieSBzaW5nbGUtdXNlciBiYWNrZW5kICovCisJCQkJ YnJlYWs7CisKIAkJCWRlZmF1bHQ6CiAJCQkJd3JpdGVfc3RkZXJyKCJUcnkgXCIlcyAtLWhlbHBc IiBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbiIsCiAJCQkJCQkJIHByb2duYW1lKTsKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL3Rjb3AvcG9zdGdyZXMuYyBiL3NyYy9iYWNrZW5kL3Rjb3AvcG9zdGdy ZXMuYwppbmRleCAzNzc4NGI3ODE2Li4wN2UxYzNkM2Y0IDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC90Y29wL3Bvc3RncmVzLmMKKysrIGIvc3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5jCkBAIC0z ODI5LDcgKzM4MjksNyBAQCBwcm9jZXNzX3Bvc3RncmVzX3N3aXRjaGVzKGludCBhcmdjLCBjaGFy ICphcmd2W10sIEd1Y0NvbnRleHQgY3R4LAogCSAqIHBvc3RtYXN0ZXIvcG9zdG1hc3Rlci5jICh0 aGUgb3B0aW9uIHNldHMgc2hvdWxkIG5vdCBjb25mbGljdCkgYW5kIHdpdGgKIAkgKiB0aGUgY29t bW9uIGhlbHAoKSBmdW5jdGlvbiBpbiBtYWluL21haW4uYy4KIAkgKi8KLQl3aGlsZSAoKGZsYWcg PSBnZXRvcHQoYXJnYywgYXJndiwgIkI6YkM6YzpEOmQ6RWVGZjpoOmlqazpsTjpuT1BwOnI6Uzpz VHQ6djpXOi06IikpICE9IC0xKQorCXdoaWxlICgoZmxhZyA9IGdldG9wdChhcmdjLCBhcmd2LCAi QjpiQzpjOkQ6ZDpFZUZmOmg6aWprOmxtOk46bk9vOlBwOnI6UzpzVHQ6djpXOng6LToiKSkgIT0g LTEpCiAJewogCQlzd2l0Y2ggKGZsYWcpCiAJCXsKQEAgLTM5MzQsNiArMzkzNCwyMyBAQCBwcm9j ZXNzX3Bvc3RncmVzX3N3aXRjaGVzKGludCBhcmdjLCBjaGFyICphcmd2W10sIEd1Y0NvbnRleHQg Y3R4LAogCQkJCVNldENvbmZpZ09wdGlvbigic3NsIiwgInRydWUiLCBjdHgsIGd1Y3NvdXJjZSk7 CiAJCQkJYnJlYWs7CiAKKwkJCWNhc2UgJ20nOgorCQkJCXsKKwkJCQkJY2hhcgkgICAqZW5kcHRy OworCisJCQkJCWVycm5vID0gMDsKKwkJCQkJc3RhcnRfbXhpZCA9IHN0cnRvdTY0KG9wdGFyZywg JmVuZHB0ciwgMCk7CisKKwkJCQkJaWYgKGVuZHB0ciA9PSBvcHRhcmcgfHwgKmVuZHB0ciAhPSAn XDAnIHx8IGVycm5vICE9IDAgfHwKKwkJCQkJCSFTdGFydE11bHRpWGFjdElkSXNWYWxpZChzdGFy dF9teGlkKSkKKwkJCQkJeworCQkJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCQkJKGVycmNvZGUo RVJSQ09ERV9TWU5UQVhfRVJST1IpLAorCQkJCQkJCQkgZXJybXNnKCJpbnZhbGlkIGluaXRpYWwg ZGF0YWJhc2UgY2x1c3RlciBtdWx0aXhhY3QgaWQiKSkpOworCQkJCQl9CisJCQkJfQorCQkJCWJy ZWFrOworCiAJCQljYXNlICdOJzoKIAkJCQlTZXRDb25maWdPcHRpb24oIm1heF9jb25uZWN0aW9u cyIsIG9wdGFyZywgY3R4LCBndWNzb3VyY2UpOwogCQkJCWJyZWFrOwpAQCAtMzk0Niw2ICszOTYz LDIzIEBAIHByb2Nlc3NfcG9zdGdyZXNfc3dpdGNoZXMoaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSwg R3VjQ29udGV4dCBjdHgsCiAJCQkJU2V0Q29uZmlnT3B0aW9uKCJhbGxvd19zeXN0ZW1fdGFibGVf bW9kcyIsICJ0cnVlIiwgY3R4LCBndWNzb3VyY2UpOwogCQkJCWJyZWFrOwogCisJCQljYXNlICdv JzoKKwkJCQl7CisJCQkJCWNoYXIJICAgKmVuZHB0cjsKKworCQkJCQllcnJubyA9IDA7CisJCQkJ CXN0YXJ0X214b2ZmID0gc3RydG91NjQob3B0YXJnLCAmZW5kcHRyLCAwKTsKKworCQkJCQlpZiAo ZW5kcHRyID09IG9wdGFyZyB8fCAqZW5kcHRyICE9ICdcMCcgfHwgZXJybm8gIT0gMCB8fAorCQkJ CQkJIVN0YXJ0TXVsdGlYYWN0T2Zmc2V0SXNWYWxpZChzdGFydF9teG9mZikpCisJCQkJCXsKKwkJ CQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkJCShlcnJjb2RlKEVSUkNPREVfU1lOVEFYX0VSUk9S KSwKKwkJCQkJCQkJIGVycm1zZygiaW52YWxpZCBpbml0aWFsIGRhdGFiYXNlIGNsdXN0ZXIgbXVs dGl4YWN0IG9mZnNldCIpKSk7CisJCQkJCX0KKwkJCQl9CisJCQkJYnJlYWs7CisKIAkJCWNhc2Ug J1AnOgogCQkJCVNldENvbmZpZ09wdGlvbigiaWdub3JlX3N5c3RlbV9pbmRleGVzIiwgInRydWUi LCBjdHgsIGd1Y3NvdXJjZSk7CiAJCQkJYnJlYWs7CkBAIC00MDAwLDYgKzQwMzQsMjMgQEAgcHJv Y2Vzc19wb3N0Z3Jlc19zd2l0Y2hlcyhpbnQgYXJnYywgY2hhciAqYXJndltdLCBHdWNDb250ZXh0 IGN0eCwKIAkJCQlTZXRDb25maWdPcHRpb24oInBvc3RfYXV0aF9kZWxheSIsIG9wdGFyZywgY3R4 LCBndWNzb3VyY2UpOwogCQkJCWJyZWFrOwogCisJCQljYXNlICd4JzoKKwkJCQl7CisJCQkJCWNo YXIJICAgKmVuZHB0cjsKKworCQkJCQllcnJubyA9IDA7CisJCQkJCXN0YXJ0X3hpZCA9IHN0cnRv dTY0KG9wdGFyZywgJmVuZHB0ciwgMCk7CisKKwkJCQkJaWYgKGVuZHB0ciA9PSBvcHRhcmcgfHwg KmVuZHB0ciAhPSAnXDAnIHx8IGVycm5vICE9IDAgfHwKKwkJCQkJCSFTdGFydFRyYW5zYWN0aW9u SWRJc1ZhbGlkKHN0YXJ0X3hpZCkpCisJCQkJCXsKKwkJCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJ CQkJCShlcnJjb2RlKEVSUkNPREVfU1lOVEFYX0VSUk9SKSwKKwkJCQkJCQkJIGVycm1zZygiaW52 YWxpZCBpbml0aWFsIGRhdGFiYXNlIGNsdXN0ZXIgeGlkIikpKTsKKwkJCQkJfQorCQkJCX0KKwkJ CQlicmVhazsKKwogCQkJZGVmYXVsdDoKIAkJCQllcnJzKys7CiAJCQkJYnJlYWs7CmRpZmYgLS1n aXQgYS9zcmMvYmluL2luaXRkYi9pbml0ZGIuYyBiL3NyYy9iaW4vaW5pdGRiL2luaXRkYi5jCmlu ZGV4IDYyYmJkMDhkOWYuLmM2MWIxMmRlOWMgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vaW5pdGRiL2lu aXRkYi5jCisrKyBiL3NyYy9iaW4vaW5pdGRiL2luaXRkYi5jCkBAIC0xNjksNiArMTY5LDkgQEAg c3RhdGljIGNoYXIgKnhsb2dfZGlyID0gTlVMTDsKIHN0YXRpYyBpbnQJd2FsX3NlZ21lbnRfc2l6 ZV9tYiA9IChERUZBVUxUX1hMT0dfU0VHX1NJWkUpIC8gKDEwMjQgKiAxMDI0KTsKIHN0YXRpYyBE YXRhRGlyU3luY01ldGhvZCBzeW5jX21ldGhvZCA9IERBVEFfRElSX1NZTkNfTUVUSE9EX0ZTWU5D Owogc3RhdGljIGJvb2wgc3luY19kYXRhX2ZpbGVzID0gdHJ1ZTsKK3N0YXRpYyBUcmFuc2FjdGlv bklkIHN0YXJ0X3hpZCA9IDA7CitzdGF0aWMgTXVsdGlYYWN0SWQgc3RhcnRfbXhpZCA9IDA7Citz dGF0aWMgTXVsdGlYYWN0T2Zmc2V0IHN0YXJ0X214b2ZmID0gMDsKIAogCiAvKiBpbnRlcm5hbCB2 YXJzICovCkBAIC0xNTg2LDYgKzE1ODksMTEgQEAgYm9vdHN0cmFwX3RlbXBsYXRlMSh2b2lkKQog CWJraV9saW5lcyA9IHJlcGxhY2VfdG9rZW4oYmtpX2xpbmVzLCAiUE9TVEdSRVMiLAogCQkJCQkJ CSAgZXNjYXBlX3F1b3Rlc19ia2kodXNlcm5hbWUpKTsKIAorCS8qIHJlbGZyb3plbnhpZCBtdXN0 IG5vdCBiZSBsZXNzIHRoYW4gRmlyc3ROb3JtYWxUcmFuc2FjdGlvbklkICovCisJc3ByaW50Zihi dWYsICIldSIsIE1heChzdGFydF94aWQsIDMpKTsKKwlia2lfbGluZXMgPSByZXBsYWNlX3Rva2Vu KGJraV9saW5lcywgIlJFQ0VOVFhNSU4iLAorCQkJCQkJCSAgYnVmKTsKKwogCWJraV9saW5lcyA9 IHJlcGxhY2VfdG9rZW4oYmtpX2xpbmVzLCAiRU5DT0RJTkciLAogCQkJCQkJCSAgZW5jb2Rpbmdp ZF90b19zdHJpbmcoZW5jb2RpbmdpZCkpOwogCkBAIC0xNjExLDYgKzE2MTksOSBAQCBib290c3Ry YXBfdGVtcGxhdGUxKHZvaWQpCiAKIAlwcmludGZQUUV4cEJ1ZmZlcigmY21kLCAiXCIlc1wiIC0t Ym9vdCAlcyAlcyIsIGJhY2tlbmRfZXhlYywgYm9vdF9vcHRpb25zLCBleHRyYV9vcHRpb25zKTsK IAlhcHBlbmRQUUV4cEJ1ZmZlcigmY21kLCAiIC1YICVkIiwgd2FsX3NlZ21lbnRfc2l6ZV9tYiAq ICgxMDI0ICogMTAyNCkpOworCWFwcGVuZFBRRXhwQnVmZmVyKCZjbWQsICIgLW0gJXUiLCBzdGFy dF9teGlkKTsKKwlhcHBlbmRQUUV4cEJ1ZmZlcigmY21kLCAiIC1vICUiIFBSSXU2NCwgc3RhcnRf bXhvZmYpOworCWFwcGVuZFBRRXhwQnVmZmVyKCZjbWQsICIgLXggJXUiLCBzdGFydF94aWQpOwog CWlmIChkYXRhX2NoZWNrc3VtcykKIAkJYXBwZW5kUFFFeHBCdWZmZXJTdHIoJmNtZCwgIiAtayIp OwogCWlmIChkZWJ1ZykKQEAgLTI1NTIsMTMgKzI1NjMsMjEgQEAgdXNhZ2UoY29uc3QgY2hhciAq cHJvZ25hbWUpCiAJcHJpbnRmKF8oIiAgLWQsIC0tZGVidWcgICAgICAgICAgICAgICBnZW5lcmF0 ZSBsb3RzIG9mIGRlYnVnZ2luZyBvdXRwdXRcbiIpKTsKIAlwcmludGYoXygiICAgICAgLS1kaXNj YXJkLWNhY2hlcyAgICAgIHNldCBkZWJ1Z19kaXNjYXJkX2NhY2hlcz0xXG4iKSk7CiAJcHJpbnRm KF8oIiAgLUwgRElSRUNUT1JZICAgICAgICAgICAgICB3aGVyZSB0byBmaW5kIHRoZSBpbnB1dCBm aWxlc1xuIikpOworCXByaW50ZihfKCIgIC1tLCAtLW11bHRpeGFjdC1pZD1TVEFSVF9NWElEXG4i CisJCQkgIiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXQgaW5pdGlhbCBkYXRhYmFzZSBj bHVzdGVyIG11bHRpeGFjdCBpZFxuIgorCQkJICIgICAgICAgICAgICAgICAgICAgICAgICAgICAg bWF4IHZhbHVlIGlzIDJeNjItMVxuIikpOwogCXByaW50ZihfKCIgIC1uLCAtLW5vLWNsZWFuICAg ICAgICAgICAgZG8gbm90IGNsZWFuIHVwIGFmdGVyIGVycm9yc1xuIikpOwogCXByaW50ZihfKCIg IC1OLCAtLW5vLXN5bmMgICAgICAgICAgICAgZG8gbm90IHdhaXQgZm9yIGNoYW5nZXMgdG8gYmUg d3JpdHRlbiBzYWZlbHkgdG8gZGlza1xuIikpOwogCXByaW50ZihfKCIgICAgICAtLW5vLXN5bmMt ZGF0YS1maWxlcyAgZG8gbm90IHN5bmMgZmlsZXMgd2l0aGluIGRhdGFiYXNlIGRpcmVjdG9yaWVz XG4iKSk7CiAJcHJpbnRmKF8oIiAgICAgIC0tbm8taW5zdHJ1Y3Rpb25zICAgICBkbyBub3QgcHJp bnQgaW5zdHJ1Y3Rpb25zIGZvciBuZXh0IHN0ZXBzXG4iKSk7CisJcHJpbnRmKF8oIiAgLW8sIC0t bXVsdGl4YWN0LW9mZnNldD1TVEFSVF9NWE9GRlxuIgorCQkJICIgICAgICAgICAgICAgICAgICAg ICAgICAgICAgc2V0IGluaXRpYWwgZGF0YWJhc2UgY2x1c3RlciBtdWx0aXhhY3Qgb2Zmc2V0XG4i CisJCQkgIiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXggdmFsdWUgaXMgMl42Mi0xXG4i KSk7CiAJcHJpbnRmKF8oIiAgLXMsIC0tc2hvdyAgICAgICAgICAgICAgICBzaG93IGludGVybmFs IHNldHRpbmdzLCB0aGVuIGV4aXRcbiIpKTsKIAlwcmludGYoXygiICAgICAgLS1zeW5jLW1ldGhv ZD1NRVRIT0QgIHNldCBtZXRob2QgZm9yIHN5bmNpbmcgZmlsZXMgdG8gZGlza1xuIikpOwogCXBy aW50ZihfKCIgIC1TLCAtLXN5bmMtb25seSAgICAgICAgICAgb25seSBzeW5jIGRhdGFiYXNlIGZp bGVzIHRvIGRpc2ssIHRoZW4gZXhpdFxuIikpOworCXByaW50ZihfKCIgIC14LCAtLXhpZD1TVEFS VF9YSUQgICAgICAgc2V0IGluaXRpYWwgZGF0YWJhc2UgY2x1c3RlciB4aWRcbiIKKwkJCSAiICAg ICAgICAgICAgICAgICAgICAgICAgICAgIG1heCB2YWx1ZSBpcyAyXjYyLTFcbiIpKTsKIAlwcmlu dGYoXygiXG5PdGhlciBvcHRpb25zOlxuIikpOwogCXByaW50ZihfKCIgIC1WLCAtLXZlcnNpb24g ICAgICAgICAgICAgb3V0cHV0IHZlcnNpb24gaW5mb3JtYXRpb24sIHRoZW4gZXhpdFxuIikpOwog CXByaW50ZihfKCIgIC0/LCAtLWhlbHAgICAgICAgICAgICAgICAgc2hvdyB0aGlzIGhlbHAsIHRo ZW4gZXhpdFxuIikpOwpAQCAtMzA5Myw2ICszMTEyLDE4IEBAIGluaXRpYWxpemVfZGF0YV9kaXJl Y3Rvcnkodm9pZCkKIAkvKiBOb3cgY3JlYXRlIGFsbCB0aGUgdGV4dCBjb25maWcgZmlsZXMgKi8K IAlzZXR1cF9jb25maWcoKTsKIAorCWlmIChzdGFydF9teGlkICE9IDApCisJCXByaW50ZihfKCJz ZWxlY3RpbmcgaW5pdGlhbCBtdWx0aXhhY3QgaWQgLi4uICV1XG4iKSwKKwkJCQkgc3RhcnRfbXhp ZCk7CisKKwlpZiAoc3RhcnRfbXhvZmYgIT0gMCkKKwkJcHJpbnRmKF8oInNlbGVjdGluZyBpbml0 aWFsIG11bHRpeGFjdCBvZmZzZXQgLi4uICUiIFBSSXU2NCAiXG4iKSwKKwkJCQkgc3RhcnRfbXhv ZmYpOworCisJaWYgKHN0YXJ0X3hpZCAhPSAwKQorCQlwcmludGYoXygic2VsZWN0aW5nIGluaXRp YWwgeGlkIC4uLiAldVxuIiksCisJCQkJIHN0YXJ0X3hpZCk7CisKIAkvKiBCb290c3RyYXAgdGVt cGxhdGUxICovCiAJYm9vdHN0cmFwX3RlbXBsYXRlMSgpOwogCkBAIC0zMTA5LDggKzMxNDAsMTIg QEAgaW5pdGlhbGl6ZV9kYXRhX2RpcmVjdG9yeSh2b2lkKQogCWZmbHVzaChzdGRvdXQpOwogCiAJ aW5pdFBRRXhwQnVmZmVyKCZjbWQpOwotCXByaW50ZlBRRXhwQnVmZmVyKCZjbWQsICJcIiVzXCIg JXMgJXMgdGVtcGxhdGUxID4lcyIsCi0JCQkJCSAgYmFja2VuZF9leGVjLCBiYWNrZW5kX29wdGlv bnMsIGV4dHJhX29wdGlvbnMsIERFVk5VTEwpOworCXByaW50ZlBRRXhwQnVmZmVyKCZjbWQsICJc IiVzXCIgJXMgJXMiLAorCQkJCQkgIGJhY2tlbmRfZXhlYywgYmFja2VuZF9vcHRpb25zLCBleHRy YV9vcHRpb25zKTsKKwlhcHBlbmRQUUV4cEJ1ZmZlcigmY21kLCAiIC1tICV1Iiwgc3RhcnRfbXhp ZCk7CisJYXBwZW5kUFFFeHBCdWZmZXIoJmNtZCwgIiAtbyAlIiBQUkl1NjQsIHN0YXJ0X214b2Zm KTsKKwlhcHBlbmRQUUV4cEJ1ZmZlcigmY21kLCAiIC14ICV1Iiwgc3RhcnRfeGlkKTsKKwlhcHBl bmRQUUV4cEJ1ZmZlcigmY21kLCAiIHRlbXBsYXRlMSA+JXMiLCBERVZOVUxMKTsKIAogCVBHX0NN RF9PUEVOKGNtZC5kYXRhKTsKIApAQCAtMzE5OCw2ICszMjMzLDkgQEAgbWFpbihpbnQgYXJnYywg Y2hhciAqYXJndltdKQogCQl7InN5bmMtbWV0aG9kIiwgcmVxdWlyZWRfYXJndW1lbnQsIE5VTEws IDE5fSwKIAkJeyJuby1kYXRhLWNoZWNrc3VtcyIsIG5vX2FyZ3VtZW50LCBOVUxMLCAyMH0sCiAJ CXsibm8tc3luYy1kYXRhLWZpbGVzIiwgbm9fYXJndW1lbnQsIE5VTEwsIDIxfSwKKwkJeyJ4aWQi LCByZXF1aXJlZF9hcmd1bWVudCwgTlVMTCwgJ3gnfSwKKwkJeyJtdWx0aXhhY3QtaWQiLCByZXF1 aXJlZF9hcmd1bWVudCwgTlVMTCwgJ20nfSwKKwkJeyJtdWx0aXhhY3Qtb2Zmc2V0IiwgcmVxdWly ZWRfYXJndW1lbnQsIE5VTEwsICdvJ30sCiAJCXtOVUxMLCAwLCBOVUxMLCAwfQogCX07CiAKQEAg LTMyMzksNyArMzI3Nyw3IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIAogCS8qIHBy b2Nlc3MgY29tbWFuZC1saW5lIG9wdGlvbnMgKi8KIAotCXdoaWxlICgoYyA9IGdldG9wdF9sb25n KGFyZ2MsIGFyZ3YsICJBOmM6ZEQ6RTpna0w6bk5zU1Q6VTpXWDoiLAorCXdoaWxlICgoYyA9IGdl dG9wdF9sb25nKGFyZ2MsIGFyZ3YsICJBOmM6ZEQ6RTpna0w6bTpuTm86c1NUOlU6V3g6WDoiLAog CQkJCQkJCWxvbmdfb3B0aW9ucywgJm9wdGlvbl9pbmRleCkpICE9IC0xKQogCXsKIAkJc3dpdGNo IChjKQpAQCAtMzI5Nyw2ICszMzM1LDMwIEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkK IAkJCQlkZWJ1ZyA9IHRydWU7CiAJCQkJcHJpbnRmKF8oIlJ1bm5pbmcgaW4gZGVidWcgbW9kZS5c biIpKTsKIAkJCQlicmVhazsKKwkJCWNhc2UgJ20nOgorCQkJCXsKKwkJCQkJY2hhcgkgICAqZW5k cHRyOworCisJCQkJCWVycm5vID0gMDsKKwkJCQkJc3RhcnRfbXhpZCA9IHN0cnRvdTY0KG9wdGFy ZywgJmVuZHB0ciwgMCk7CisKKwkJCQkJaWYgKGVuZHB0ciA9PSBvcHRhcmcgfHwgKmVuZHB0ciAh PSAnXDAnIHx8IGVycm5vICE9IDAgfHwKKwkJCQkJCSFTdGFydE11bHRpWGFjdElkSXNWYWxpZChz dGFydF9teGlkKSkKKwkJCQkJeworCQkJCQkJcGdfbG9nX2Vycm9yKCJpbnZhbGlkIGluaXRpYWwg ZGF0YWJhc2UgY2x1c3RlciBtdWx0aXhhY3QgaWQiKTsKKwkJCQkJCWV4aXQoMSk7CisJCQkJCX0K KwkJCQkJZWxzZSBpZiAoc3RhcnRfbXhpZCA8IDEpIC8qIEZpcnN0TXVsdGlYYWN0SWQgKi8KKwkJ CQkJeworCQkJCQkJLyoKKwkJCQkJCSAqIFdlIGF2b2lkIG14aWQgdG8gYmUgc2lsZW50bHkgc2V0 IHRvCisJCQkJCQkgKiBGaXJzdE11bHRpWGFjdElkLCB0aG91Z2ggaXQgZG9lcyBub3QgaGFybS4K KwkJCQkJCSAqLworCQkJCQkJcGdfbG9nX2Vycm9yKCJtdWx0aXhhY3QgaWQgc2hvdWxkIGJlIGdy ZWF0ZXIgdGhhbiAwIik7CisJCQkJCQlleGl0KDEpOworCQkJCQl9CisJCQkJfQorCQkJCWJyZWFr OwogCQkJY2FzZSAnbic6CiAJCQkJbm9jbGVhbiA9IHRydWU7CiAJCQkJcHJpbnRmKF8oIlJ1bm5p bmcgaW4gbm8tY2xlYW4gbW9kZS4gIE1pc3Rha2VzIHdpbGwgbm90IGJlIGNsZWFuZWQgdXAuXG4i KSk7CkBAIC0zMzA0LDYgKzMzNjYsMjEgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQog CQkJY2FzZSAnTic6CiAJCQkJZG9fc3luYyA9IGZhbHNlOwogCQkJCWJyZWFrOworCQkJY2FzZSAn byc6CisJCQkJeworCQkJCQljaGFyCSAgICplbmRwdHI7CisKKwkJCQkJZXJybm8gPSAwOworCQkJ CQlzdGFydF9teG9mZiA9IHN0cnRvdTY0KG9wdGFyZywgJmVuZHB0ciwgMCk7CisKKwkJCQkJaWYg KGVuZHB0ciA9PSBvcHRhcmcgfHwgKmVuZHB0ciAhPSAnXDAnIHx8IGVycm5vICE9IDAgfHwKKwkJ CQkJCSFTdGFydE11bHRpWGFjdE9mZnNldElzVmFsaWQoc3RhcnRfbXhvZmYpKQorCQkJCQl7CisJ CQkJCQlwZ19sb2dfZXJyb3IoImludmFsaWQgaW5pdGlhbCBkYXRhYmFzZSBjbHVzdGVyIG11bHRp eGFjdCBvZmZzZXQiKTsKKwkJCQkJCWV4aXQoMSk7CisJCQkJCX0KKwkJCQl9CisJCQkJYnJlYWs7 CiAJCQljYXNlICdTJzoKIAkJCQlzeW5jX29ubHkgPSB0cnVlOwogCQkJCWJyZWFrOwpAQCAtMzM5 NSw2ICszNDcyLDMwIEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIAkJCWNhc2UgMjE6 CiAJCQkJc3luY19kYXRhX2ZpbGVzID0gZmFsc2U7CiAJCQkJYnJlYWs7CisJCQljYXNlICd4JzoK KwkJCQl7CisJCQkJCWNoYXIJICAgKmVuZHB0cjsKKworCQkJCQllcnJubyA9IDA7CisJCQkJCXN0 YXJ0X3hpZCA9IHN0cnRvdTY0KG9wdGFyZywgJmVuZHB0ciwgMCk7CisKKwkJCQkJaWYgKGVuZHB0 ciA9PSBvcHRhcmcgfHwgKmVuZHB0ciAhPSAnXDAnIHx8IGVycm5vICE9IDAgfHwKKwkJCQkJCSFT dGFydFRyYW5zYWN0aW9uSWRJc1ZhbGlkKHN0YXJ0X3hpZCkpCisJCQkJCXsKKwkJCQkJCXBnX2xv Z19lcnJvcigiaW52YWxpZCB2YWx1ZSBmb3IgaW5pdGlhbCBkYXRhYmFzZSBjbHVzdGVyIHhpZCIp OworCQkJCQkJZXhpdCgxKTsKKwkJCQkJfQorCQkJCQllbHNlIGlmIChzdGFydF94aWQgPCAzKSAv KiBGaXJzdE5vcm1hbFRyYW5zYWN0aW9uSWQgKi8KKwkJCQkJeworCQkJCQkJLyoKKwkJCQkJCSAq IFdlIGF2b2lkIHhpZCB0byBiZSBzaWxlbnRseSBzZXQgdG8KKwkJCQkJCSAqIEZpcnN0Tm9ybWFs VHJhbnNhY3Rpb25JZCwgdGhvdWdoIGl0IGRvZXMgbm90IGhhcm0uCisJCQkJCQkgKi8KKwkJCQkJ CXBnX2xvZ19lcnJvcigieGlkIHNob3VsZCBiZSBncmVhdGVyIHRoYW4gMiIpOworCQkJCQkJZXhp dCgxKTsKKwkJCQkJfQorCQkJCX0KKwkJCQlicmVhazsKIAkJCWRlZmF1bHQ6CiAJCQkJLyogZ2V0 b3B0X2xvbmcgYWxyZWFkeSBlbWl0dGVkIGEgY29tcGxhaW50ICovCiAJCQkJcGdfbG9nX2Vycm9y X2hpbnQoIlRyeSBcIiVzIC0taGVscFwiIGZvciBtb3JlIGluZm9ybWF0aW9uLiIsIHByb2duYW1l KTsKZGlmZiAtLWdpdCBhL3NyYy9iaW4vaW5pdGRiL3QvMDAxX2luaXRkYi5wbCBiL3NyYy9iaW4v aW5pdGRiL3QvMDAxX2luaXRkYi5wbAppbmRleCAxNWRkMTBjZTQwLi42NjhkMGYxMDhkIDEwMDY0 NAotLS0gYS9zcmMvYmluL2luaXRkYi90LzAwMV9pbml0ZGIucGwKKysrIGIvc3JjL2Jpbi9pbml0 ZGIvdC8wMDFfaW5pdGRiLnBsCkBAIC0zMzAsNCArMzMwLDY0IEBAIGNvbW1hbmRfZmFpbHMoCiAJ WyAncGdfY2hlY2tzdW1zJywgJy0tcGdkYXRhJyA9PiAkZGF0YWRpcl9ub2NoZWNrc3VtcyBdLAog CSJwZ19jaGVja3N1bXMgZmFpbHMgd2l0aCBkYXRhIGNoZWNrc3VtIGRpc2FibGVkIik7CiAKKyMg U2V0IG5vbi1zdGFuZGFyZCBpbml0aWFsIG14aWQvbXhvZmYveGlkLgorY29tbWFuZF9mYWlsc19s aWtlKAorCVsgJ2luaXRkYicsICctbScsICdzZXZlbicsICRkYXRhZGlyIF0sCisJcXIvaW5pdGRi OiBlcnJvcjogaW52YWxpZCBpbml0aWFsIGRhdGFiYXNlIGNsdXN0ZXIgbXVsdGl4YWN0IGlkLywK KwknZmFpbHMgZm9yIGludmFsaWQgaW5pdGlhbCBkYXRhYmFzZSBjbHVzdGVyIG11bHRpeGFjdCBp ZCcpOworY29tbWFuZF9mYWlsc19saWtlKAorCVsgJ2luaXRkYicsICctbycsICdzZXZlbicsICRk YXRhZGlyIF0sCisJcXIvaW5pdGRiOiBlcnJvcjogaW52YWxpZCBpbml0aWFsIGRhdGFiYXNlIGNs dXN0ZXIgbXVsdGl4YWN0IG9mZnNldC8sCisJJ2ZhaWxzIGZvciBpbnZhbGlkIGluaXRpYWwgZGF0 YWJhc2UgY2x1c3RlciBtdWx0aXhhY3Qgb2Zmc2V0Jyk7Citjb21tYW5kX2ZhaWxzX2xpa2UoCisJ WyAnaW5pdGRiJywgJy14JywgJ3NldmVuJywgJGRhdGFkaXIgXSwKKwlxci9pbml0ZGI6IGVycm9y OiBpbnZhbGlkIHZhbHVlIGZvciBpbml0aWFsIGRhdGFiYXNlIGNsdXN0ZXIgeGlkLywKKwknZmFp bHMgZm9yIGludmFsaWQgaW5pdGlhbCBkYXRhYmFzZSBjbHVzdGVyIHhpZCcpOworCitjb21tYW5k X2NoZWNrc19hbGwoCisJWyAnaW5pdGRiJywgJy1tJywgJzY1NTM1JywgIiR0ZW1wZGlyL2RhdGEt bTY1NTM1IiBdLAorCTAsCisJW3FyL3NlbGVjdGluZyBpbml0aWFsIG11bHRpeGFjdCBpZCAuLi4g NjU1MzUvXSwKKwlbXSwKKwknc2VsZWN0aW5nIGluaXRpYWwgbXVsdGl4YWN0IGlkJyk7Citjb21t YW5kX2NoZWNrc19hbGwoCisJWyAnaW5pdGRiJywgJy1vJywgJzY1NTM1JywgIiR0ZW1wZGlyL2Rh dGEtbzY1NTM1IiBdLAorCTAsCisJW3FyL3NlbGVjdGluZyBpbml0aWFsIG11bHRpeGFjdCBvZmZz ZXQgLi4uIDY1NTM1L10sCisJW10sCisJJ3NlbGVjdGluZyBpbml0aWFsIG11bHRpeGFjdCBvZmZz ZXQnKTsKK2NvbW1hbmRfY2hlY2tzX2FsbCgKKwlbICdpbml0ZGInLCAnLXgnLCAnNjU1MzUnLCAi JHRlbXBkaXIvZGF0YS14NjU1MzUiIF0sCisJMCwKKwlbcXIvc2VsZWN0aW5nIGluaXRpYWwgeGlk IC4uLiA2NTUzNS9dLAorCVtdLAorCSdzZWxlY3RpbmcgaW5pdGlhbCB4aWQnKTsKKworIyBTZXR1 cCBuZXcgY2x1c3RlciB3aXRoIGdpdmVuIG14aWQvbXhvZmYveGlkLgorbXkgJG5vZGU7CitteSAk cmVzdWx0OworCiskbm9kZSA9IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXItPm5ldygndGVzdC1t eGlkJyk7Ciskbm9kZS0+aW5pdChleHRyYSA9PiBbJy1tJywgJzE2Nzc3MjE1J10pOyAjIDB4RkZG RkZGCiskbm9kZS0+c3RhcnQ7CiskcmVzdWx0ID0gJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMn LCAiU0VMRUNUIG5leHRfbXVsdGl4YWN0X2lkIEZST00gcGdfY29udHJvbF9jaGVja3BvaW50KCk7 Iik7CitvaygkcmVzdWx0ID49IDE2Nzc3MjE1LCAnc2V0dXAgY2x1c3RlciB3aXRoIGdpdmVuIG14 aWQnKTsKKyRub2RlLT5zdG9wOworCiskbm9kZSA9IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXIt Pm5ldygndGVzdC1teG9mZicpOworJG5vZGUtPmluaXQoZXh0cmEgPT4gWyctbycsICcxNjc3NzIx NSddKTsgIyAweEZGRkZGRgorJG5vZGUtPnN0YXJ0OworJHJlc3VsdCA9ICRub2RlLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBuZXh0X211bHRpX29mZnNldCBGUk9NIHBnX2NvbnRyb2xf Y2hlY2twb2ludCgpOyIpOworb2soJHJlc3VsdCA+PSAxNjc3NzIxNSwgJ3NldHVwIGNsdXN0ZXIg d2l0aCBnaXZlbiBteG9mZicpOworJG5vZGUtPnN0b3A7CisKKyRub2RlID0gUG9zdGdyZVNRTDo6 VGVzdDo6Q2x1c3Rlci0+bmV3KCd0ZXN0LXhpZCcpOworJG5vZGUtPmluaXQoZXh0cmEgPT4gWyct eCcsICcxNjc3NzIxNSddKTsgIyAweEZGRkZGRgorJG5vZGUtPnN0YXJ0OworJHJlc3VsdCA9ICRu b2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCB0eGlkX2N1cnJlbnQoKTsiKTsKK29r KCRyZXN1bHQgPj0gMTY3NzcyMTUsICdzZXR1cCBjbHVzdGVyIHdpdGggZ2l2ZW4geGlkIC0gY2hl Y2sgMScpOworJHJlc3VsdCA9ICRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBv bGRlc3RfeGlkIEZST00gcGdfY29udHJvbF9jaGVja3BvaW50KCk7Iik7CitvaygkcmVzdWx0ID49 IDE2Nzc3MjE1LCAnc2V0dXAgY2x1c3RlciB3aXRoIGdpdmVuIHhpZCAtIGNoZWNrIDInKTsKKyRu b2RlLT5zdG9wOworCiBkb25lX3Rlc3RpbmcoKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2Fj Y2Vzcy94bG9nLmggYi9zcmMvaW5jbHVkZS9hY2Nlc3MveGxvZy5oCmluZGV4IGQzMTMwOTljMDIu LjIzYjhkZDAzNzUgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy94bG9nLmgKKysrIGIv c3JjL2luY2x1ZGUvYWNjZXNzL3hsb2cuaApAQCAtOTQsNiArOTQsOSBAQCB0eXBlZGVmIGVudW0g UmVjb3ZlcnlTdGF0ZQogfSBSZWNvdmVyeVN0YXRlOwogCiBleHRlcm4gUEdETExJTVBPUlQgaW50 IHdhbF9sZXZlbDsKK2V4dGVybiBQR0RMTElNUE9SVCBUcmFuc2FjdGlvbklkIHN0YXJ0X3hpZDsK K2V4dGVybiBQR0RMTElNUE9SVCBNdWx0aVhhY3RJZCBzdGFydF9teGlkOworZXh0ZXJuIFBHRExM SU1QT1JUIE11bHRpWGFjdE9mZnNldCBzdGFydF9teG9mZjsKIAogLyogSXMgV0FMIGFyY2hpdmlu ZyBlbmFibGVkIChhbHdheXMgb3Igb25seSB3aGlsZSBzZXJ2ZXIgaXMgcnVubmluZyBub3JtYWxs eSk/ICovCiAjZGVmaW5lIFhMb2dBcmNoaXZpbmdBY3RpdmUoKSBcCmRpZmYgLS1naXQgYS9zcmMv aW5jbHVkZS9jLmggYi9zcmMvaW5jbHVkZS9jLmgKaW5kZXggNDViYTRjNTIzZi4uMjcwY2M3MWY3 YyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvYy5oCisrKyBiL3NyYy9pbmNsdWRlL2MuaApAQCAt NjM2LDYgKzYzNiwxMCBAQCB0eXBlZGVmIHVpbnQ2NCBNdWx0aVhhY3RPZmZzZXQ7CiAKIHR5cGVk ZWYgdWludDMyIENvbW1hbmRJZDsKIAorI2RlZmluZSBTdGFydFRyYW5zYWN0aW9uSWRJc1ZhbGlk KHhpZCkJCQkoKHhpZCkgPD0gMHhGRkZGRkZGRikKKyNkZWZpbmUgU3RhcnRNdWx0aVhhY3RJZElz VmFsaWQobXhpZCkJCQkoKG14aWQpIDw9IDB4RkZGRkZGRkYpCisjZGVmaW5lIFN0YXJ0TXVsdGlY YWN0T2Zmc2V0SXNWYWxpZChvZmZzZXQpCQkoKG9mZnNldCkgPD0gMHhGRkZGRkZGRikKKwogI2Rl ZmluZSBGaXJzdENvbW1hbmRJZAkoKENvbW1hbmRJZCkgMCkKICNkZWZpbmUgSW52YWxpZENvbW1h bmRJZAkofihDb21tYW5kSWQpMCkKIApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9w Z19jbGFzcy5oIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19jbGFzcy5oCmluZGV4IDA3ZDE4MmRh NzkuLjA2ZTk5Njk4NjIgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfY2xhc3Mu aAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2NsYXNzLmgKQEAgLTEyNiw3ICsxMjYsNyBA QCBDQVRBTE9HKHBnX2NsYXNzLDEyNTksUmVsYXRpb25SZWxhdGlvbklkKSBCS0lfQk9PVFNUUkFQ IEJLSV9ST1dUWVBFX09JRCg4MyxSZWxhdAogCU9pZAkJCXJlbHJld3JpdGUgQktJX0RFRkFVTFQo MCkgQktJX0xPT0tVUF9PUFQocGdfY2xhc3MpOwogCiAJLyogYWxsIFhpZHMgPCB0aGlzIGFyZSBm cm96ZW4gaW4gdGhpcyByZWwgKi8KLQlUcmFuc2FjdGlvbklkIHJlbGZyb3plbnhpZCBCS0lfREVG QVVMVCgzKTsJLyogRmlyc3ROb3JtYWxUcmFuc2FjdGlvbklkICovCisJVHJhbnNhY3Rpb25JZCBy ZWxmcm96ZW54aWQgQktJX0RFRkFVTFQoUkVDRU5UWE1JTik7CS8qIEZpcnN0Tm9ybWFsVHJhbnNh Y3Rpb25JZCAqLwogCiAJLyogYWxsIG11bHRpeGFjdHMgaW4gdGhpcyByZWwgYXJlID49IHRoaXM7 IGl0IGlzIHJlYWxseSBhIE11bHRpWGFjdElkICovCiAJVHJhbnNhY3Rpb25JZCByZWxtaW5teGlk IEJLSV9ERUZBVUxUKDEpOwkvKiBGaXJzdE11bHRpWGFjdElkICovCi0tIAoyLjQzLjAKCg== --0000000000004764a606361f94b1 Content-Type: application/octet-stream; name="v15-0003-Make-pg_upgrade-convert-multixact-offsets.patch" Content-Disposition: attachment; filename="v15-0003-Make-pg_upgrade-convert-multixact-offsets.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mb6nsi0v2 RnJvbSBiZGU0NGJmNGYyYmMyNjVkZDFjNGM0NjM4M2Y1Y2U3MjlmMzdkNDZkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXhpbSBPcmxvdiA8bS5vcmxvdkBwb3N0Z3Jlc3Byby5ydT4K RGF0ZTogVHVlLCAxMyBBdWcgMjAyNCAxNDo0NDo1MCArMDMwMApTdWJqZWN0OiBbUEFUQ0ggdjE1 IDMvN10gTWFrZSBwZ191cGdyYWRlIGNvbnZlcnQgbXVsdGl4YWN0IG9mZnNldHMuCgpBdXRob3I6 IE1heGltIE9ybG92IDxvcmxvdm1nQGdtYWlsLmNvbT4KQXV0aG9yOiBZdXJhIFNva29sb3YgPHku c29rb2xvdkBwb3N0Z3Jlc3Byby5ydT4KLS0tCiBzcmMvYmluL3BnX3VwZ3JhZGUvTWFrZWZpbGUg ICAgIHwgICAxICsKIHNyYy9iaW4vcGdfdXBncmFkZS9tZXNvbi5idWlsZCAgfCAgIDEgKwogc3Jj L2Jpbi9wZ191cGdyYWRlL3BnX3VwZ3JhZGUuYyB8ICA0MCArKy0KIHNyYy9iaW4vcGdfdXBncmFk ZS9wZ191cGdyYWRlLmggfCAgMTQgKy0KIHNyYy9iaW4vcGdfdXBncmFkZS9zZWdyZXNpemUuYyAg fCA1MjcgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIDUgZmlsZXMgY2hhbmdlZCwg NTc5IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3Jj L2Jpbi9wZ191cGdyYWRlL3NlZ3Jlc2l6ZS5jCgpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ191cGdy YWRlL01ha2VmaWxlIGIvc3JjL2Jpbi9wZ191cGdyYWRlL01ha2VmaWxlCmluZGV4IGY4M2QyYjVk MzAuLjcwOTA4ZDYzYTMgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfdXBncmFkZS9NYWtlZmlsZQor KysgYi9zcmMvYmluL3BnX3VwZ3JhZGUvTWFrZWZpbGUKQEAgLTIxLDYgKzIxLDcgQEAgT0JKUyA9 IFwKIAlpbmZvLm8gXAogCW9wdGlvbi5vIFwKIAlwYXJhbGxlbC5vIFwKKwlzZWdyZXNpemUubyBc CiAJcGdfdXBncmFkZS5vIFwKIAlyZWxmaWxlbnVtYmVyLm8gXAogCXNlcnZlci5vIFwKZGlmZiAt LWdpdCBhL3NyYy9iaW4vcGdfdXBncmFkZS9tZXNvbi5idWlsZCBiL3NyYy9iaW4vcGdfdXBncmFk ZS9tZXNvbi5idWlsZAppbmRleCBhYzk5MmYwZDE0Li5hOGIxZDc3YzJkIDEwMDY0NAotLS0gYS9z cmMvYmluL3BnX3VwZ3JhZGUvbWVzb24uYnVpbGQKKysrIGIvc3JjL2Jpbi9wZ191cGdyYWRlL21l c29uLmJ1aWxkCkBAIC0xMCw2ICsxMCw3IEBAIHBnX3VwZ3JhZGVfc291cmNlcyA9IGZpbGVzKAog ICAnaW5mby5jJywKICAgJ29wdGlvbi5jJywKICAgJ3BhcmFsbGVsLmMnLAorICAnc2VncmVzaXpl LmMnLAogICAncGdfdXBncmFkZS5jJywKICAgJ3JlbGZpbGVudW1iZXIuYycsCiAgICdzZXJ2ZXIu YycsCmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX3VwZ3JhZGUvcGdfdXBncmFkZS5jIGIvc3JjL2Jp bi9wZ191cGdyYWRlL3BnX3VwZ3JhZGUuYwppbmRleCA1MzZlNDlkMjYxLi43ZmFlMTczMDE2IDEw MDY0NAotLS0gYS9zcmMvYmluL3BnX3VwZ3JhZGUvcGdfdXBncmFkZS5jCisrKyBiL3NyYy9iaW4v cGdfdXBncmFkZS9wZ191cGdyYWRlLmMKQEAgLTc5Myw4ICs3OTMsNDIgQEAgY29weV94YWN0X3hs b2dfeGlkKHZvaWQpCiAJaWYgKG9sZF9jbHVzdGVyLmNvbnRyb2xkYXRhLmNhdF92ZXIgPj0gTVVM VElYQUNUX0ZPUk1BVENIQU5HRV9DQVRfVkVSICYmCiAJCW5ld19jbHVzdGVyLmNvbnRyb2xkYXRh LmNhdF92ZXIgPj0gTVVMVElYQUNUX0ZPUk1BVENIQU5HRV9DQVRfVkVSKQogCXsKLQkJY29weV9z dWJkaXJfZmlsZXMoInBnX211bHRpeGFjdC9vZmZzZXRzIiwgInBnX211bHRpeGFjdC9vZmZzZXRz Iik7Ci0JCWNvcHlfc3ViZGlyX2ZpbGVzKCJwZ19tdWx0aXhhY3QvbWVtYmVycyIsICJwZ19tdWx0 aXhhY3QvbWVtYmVycyIpOworCQkvKgorCQkgKiBJZiB0aGUgb2xkIHNlcnZlciBpcyBiZWZvcmUg dGhlIE1VTFRJWEFDVE9GRlNFVF9GT1JNQVRDSEFOR0VfQ0FUX1ZFUgorCQkgKiBpdCBtdXN0IGhh dmUgMzItYml0IG11bHRpeGlkIG9mZnNldHMsIHRodXMgaXQgc2hvdWxkIGJlIGNvbnZlcnRlZC4K KwkJICovCisJCWlmIChvbGRfY2x1c3Rlci5jb250cm9sZGF0YS5jYXRfdmVyIDwgTVVMVElYQUNU T0ZGU0VUX0ZPUk1BVENIQU5HRV9DQVRfVkVSICYmCisJCQluZXdfY2x1c3Rlci5jb250cm9sZGF0 YS5jYXRfdmVyID49IE1VTFRJWEFDVE9GRlNFVF9GT1JNQVRDSEFOR0VfQ0FUX1ZFUikKKwkJewor CQkJTXVsdGlYYWN0T2Zmc2V0CQlvbGRlc3Rfb2Zmc2V0LAorCQkJCQkJCQluZXh0X29mZnNldDsK KworCQkJcmVtb3ZlX25ld19zdWJkaXIoInBnX211bHRpeGFjdC9vZmZzZXRzIiwgZmFsc2UpOwor CQkJcHJlcF9zdGF0dXMoIkNvbnZlcnRpbmcgcGdfbXVsdGl4YWN0L29mZnNldHMgdG8gNjQtYml0 Iik7CisJCQlvbGRlc3Rfb2Zmc2V0ID0gY29udmVydF9tdWx0aXhhY3Rfb2Zmc2V0cygpOworCQkJ Y2hlY2tfb2soKTsKKworCQkJcmVtb3ZlX25ld19zdWJkaXIoInBnX211bHRpeGFjdC9tZW1iZXJz IiwgZmFsc2UpOworCQkJcHJlcF9zdGF0dXMoIkNvbnZlcnRpbmcgcGdfbXVsdGl4YWN0L21lbWJl cnMiKTsKKwkJCWNvbnZlcnRfbXVsdGl4YWN0X21lbWJlcnMob2xkZXN0X29mZnNldCk7CisJCQlj aGVja19vaygpOworCisJCQluZXh0X29mZnNldCA9IG9sZF9jbHVzdGVyLmNvbnRyb2xkYXRhLmNo a3BudF9ueHRteG9mZjsKKwkJCWlmIChvbGRlc3Rfb2Zmc2V0KQorCQkJeworCQkJCWlmIChuZXh0 X29mZnNldCA8IG9sZGVzdF9vZmZzZXQpCisJCQkJCW5leHRfb2Zmc2V0ICs9ICgoTXVsdGlYYWN0 T2Zmc2V0KSAxIDw8IDMyKSAtIDE7CisKKwkJCQluZXh0X29mZnNldCAtPSBvbGRlc3Rfb2Zmc2V0 IC0gMTsKKworCQkJCW9sZF9jbHVzdGVyLmNvbnRyb2xkYXRhLmNoa3BudF9ueHRteG9mZiA9IG5l eHRfb2Zmc2V0OworCQkJfQorCQl9CisJCWVsc2UKKwkJeworCQkJY29weV9zdWJkaXJfZmlsZXMo InBnX211bHRpeGFjdC9vZmZzZXRzIiwgInBnX211bHRpeGFjdC9vZmZzZXRzIik7CisJCQljb3B5 X3N1YmRpcl9maWxlcygicGdfbXVsdGl4YWN0L21lbWJlcnMiLCAicGdfbXVsdGl4YWN0L21lbWJl cnMiKTsKKwkJfQogCiAJCXByZXBfc3RhdHVzKCJTZXR0aW5nIG5leHQgbXVsdGl4YWN0IElEIGFu ZCBvZmZzZXQgZm9yIG5ldyBjbHVzdGVyIik7CiAKQEAgLTgwMyw3ICs4MzcsNyBAQCBjb3B5X3hh Y3RfeGxvZ194aWQodm9pZCkKIAkJICogY291bnRlcnMgaGVyZSBhbmQgdGhlIG9sZGVzdCBtdWx0 aSBwcmVzZW50IG9uIHN5c3RlbS4KIAkJICovCiAJCWV4ZWNfcHJvZyhVVElMSVRZX0xPR19GSUxF LCBOVUxMLCB0cnVlLCB0cnVlLAotCQkJCSAgIlwiJXMvcGdfcmVzZXR3YWxcIiAtTyAldSAtbSAl dSwldSBcIiVzXCIiLAorCQkJCSAgIlwiJXMvcGdfcmVzZXR3YWxcIiAtTyAlIiBQUkl1NjQgIiAt bSAldSwldSBcIiVzXCIiLAogCQkJCSAgbmV3X2NsdXN0ZXIuYmluZGlyLAogCQkJCSAgb2xkX2Ns dXN0ZXIuY29udHJvbGRhdGEuY2hrcG50X254dG14b2ZmLAogCQkJCSAgb2xkX2NsdXN0ZXIuY29u dHJvbGRhdGEuY2hrcG50X254dG11bHRpLApkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ191cGdyYWRl L3BnX3VwZ3JhZGUuaCBiL3NyYy9iaW4vcGdfdXBncmFkZS9wZ191cGdyYWRlLmgKaW5kZXggNjlj OTY1YmI3ZC4uMmQ0ZjFkMzllNSAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ191cGdyYWRlL3BnX3Vw Z3JhZGUuaAorKysgYi9zcmMvYmluL3BnX3VwZ3JhZGUvcGdfdXBncmFkZS5oCkBAIC0xMTQsNiAr MTE0LDEzIEBAIGV4dGVybiBjaGFyICpvdXRwdXRfZmlsZXNbXTsKICAqLwogI2RlZmluZSBNVUxU SVhBQ1RfRk9STUFUQ0hBTkdFX0NBVF9WRVIgMjAxMzAxMjMxCiAKKy8qCisgKiBTd2ljdGggZnJv bSAzMi1iaXQgdG8gNjQtYml0IGZvciBtdWx0aXhpZCBvZmZzZXRzLgorICoKKyAqIFhYWDogc2hv dWxkIGJlIGNoYW5nZWQgdG8gdGhlIGFjdHVhbCBDQVRBTE9HX1ZFUlNJT05fTk8gb24gY29tbWl0 LgorICovCisjZGVmaW5lIE1VTFRJWEFDVE9GRlNFVF9GT1JNQVRDSEFOR0VfQ0FUX1ZFUiAyMDI0 MDkwNDEKKwogLyoKICAqIGxhcmdlIG9iamVjdCBjaHVuayBzaXplIGFkZGVkIHRvIHBnX2NvbnRy b2xkYXRhLAogICogY29tbWl0IDVmOTNjMzc4MDVlNzQ4NTQ4ODQ4MDkxNmI0NTg1ZTA5OGQzY2M4 ODMKQEAgLTIzNSw3ICsyNDIsNyBAQCB0eXBlZGVmIHN0cnVjdAogCXVpbnQzMgkJY2hrcG50X254 dGVwb2NoOwogCXVpbnQzMgkJY2hrcG50X254dG9pZDsKIAl1aW50MzIJCWNoa3BudF9ueHRtdWx0 aTsKLQl1aW50MzIJCWNoa3BudF9ueHRteG9mZjsKKwl1aW50NjQJCWNoa3BudF9ueHRteG9mZjsK IAl1aW50MzIJCWNoa3BudF9vbGRzdE11bHRpOwogCXVpbnQzMgkJY2hrcG50X29sZHN0eGlkOwog CXVpbnQzMgkJYWxpZ247CkBAIC01MjYsMyArNTMzLDggQEAgdHlwZWRlZiBzdHJ1Y3QKIAlGSUxF CSAgICpmaWxlOwogCWNoYXIJCXBhdGhbTUFYUEdQQVRIXTsKIH0gVXBncmFkZVRhc2tSZXBvcnQ7 CisKKy8qIHNlZ3Jlc2l6ZS5jICovCisKK011bHRpWGFjdE9mZnNldAkJY29udmVydF9tdWx0aXhh Y3Rfb2Zmc2V0cyh2b2lkKTsKK3ZvaWQJCQkJY29udmVydF9tdWx0aXhhY3RfbWVtYmVycyhNdWx0 aVhhY3RPZmZzZXQgb2xkZXN0X29mZnNldCk7CmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX3VwZ3Jh ZGUvc2VncmVzaXplLmMgYi9zcmMvYmluL3BnX3VwZ3JhZGUvc2VncmVzaXplLmMKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uN2Y4MGQwNjUyYQotLS0gL2Rldi9udWxsCisr KyBiL3NyYy9iaW4vcGdfdXBncmFkZS9zZWdyZXNpemUuYwpAQCAtMCwwICsxLDUyNyBAQAorLyoK KyAqCXNlZ3Jlc2l6ZS5jCisgKgorICoJU0xSVSBzZWdtZW50IHJlc2l6ZSB1dGlsaXR5CisgKgor ICoJQ29weXJpZ2h0IChjKSAyMDI0LCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91 cAorICoJc3JjL2Jpbi9wZ191cGdyYWRlL3NlZ3Jlc2l6ZS5jCisgKi8KKworI2luY2x1ZGUgInBv c3RncmVzX2ZlLmgiCisKKyNpbmNsdWRlICJwZ191cGdyYWRlLmgiCisjaW5jbHVkZSAiYWNjZXNz L211bHRpeGFjdC5oIgorCisvKiBTZWUgc2xydS5oICovCisjZGVmaW5lIFNMUlVfUEFHRVNfUEVS X1NFR01FTlQJCTMyCisKKy8qCisgKiBTb21lIGtpbmQgb2YgaXRlcmF0b3IgYXNzb2NpYXRlZCB3 aXRoIGEgcGFydGljdWxhciBTTFJVIHNlZ21lbnQuICBUaGUgaWRlYSBpcworICogdG8gc3BlY2lm eSB0aGUgc2VnbWVudCBhbmQgcGFnZSBudW1iZXIgYW5kIHRoZW4gbW92ZSB0aHJvdWdoIHRoZSBw YWdlcy4KKyAqLwordHlwZWRlZiBzdHJ1Y3QgU2xydVNlZ1N0YXRlCit7CisJY2hhcgkgICAqZGly OworCWNoYXIJICAgKmZuOworCUZJTEUJICAgKmZpbGU7CisJaW50NjQJCXNlZ25vOworCXVpbnQ2 NAkJcGFnZW5vOworCWJvb2wJCWxlYWRpbmdfZ2FwOworfSBTbHJ1U2VnU3RhdGU7CisKKy8qCisg KiBNaXJyb3JzIHRoZSBTbHJ1RmlsZU5hbWUgZnJvbSBzbHJ1LmMKKyAqLworc3RhdGljIGlubGlu ZSBjaGFyICoKK1NscnVGaWxlTmFtZShTbHJ1U2VnU3RhdGUgKnN0YXRlKQoreworCUFzc2VydChz dGF0ZS0+c2Vnbm8gPj0gMCAmJiBzdGF0ZS0+c2Vnbm8gPD0gSU5UNjRDT05TVCgweEZGRkZGRikp OworCXJldHVybiBwc3ByaW50ZigiJXMvJTA0WCIsIHN0YXRlLT5kaXIsICh1bnNpZ25lZCBpbnQp IHN0YXRlLT5zZWdubyk7Cit9CisKKy8qCisgKiBDcmVhdGUgbmV3IFNMUlUgc2VnbWVudCBmaWxl LgorICovCitzdGF0aWMgdm9pZAorY3JlYXRlX3NlZ21lbnQoU2xydVNlZ1N0YXRlICpzdGF0ZSkK K3sKKwlBc3NlcnQoc3RhdGUtPmZuID09IE5VTEwpOworCUFzc2VydChzdGF0ZS0+ZmlsZSA9PSBO VUxMKTsKKworCXN0YXRlLT5mbiA9IFNscnVGaWxlTmFtZShzdGF0ZSk7CisJc3RhdGUtPmZpbGUg PSBmb3BlbihzdGF0ZS0+Zm4sICJ3YiIpOworCWlmICghc3RhdGUtPmZpbGUpCisJCXBnX2ZhdGFs KCJjb3VsZCBub3QgY3JlYXRlIGZpbGUgXCIlc1wiOiAlbSIsIHN0YXRlLT5mbik7Cit9CisKKy8q CisgKiBPcGVuIGV4aXN0aW5nIFNMUlUgc2VnbWVudCBmaWxlLgorICovCitzdGF0aWMgdm9pZAor b3Blbl9zZWdtZW50KFNscnVTZWdTdGF0ZSAqc3RhdGUpCit7CisJQXNzZXJ0KHN0YXRlLT5mbiA9 PSBOVUxMKTsKKwlBc3NlcnQoc3RhdGUtPmZpbGUgPT0gTlVMTCk7CisKKwlzdGF0ZS0+Zm4gPSBT bHJ1RmlsZU5hbWUoc3RhdGUpOworCXN0YXRlLT5maWxlID0gZm9wZW4oc3RhdGUtPmZuLCAicmIi KTsKKwlpZiAoIXN0YXRlLT5maWxlKQorCQlwZ19mYXRhbCgiY291bGQgbm90IG9wZW4gZmlsZSBc IiVzXCI6ICVtIiwgc3RhdGUtPmZuKTsKK30KKworLyoKKyAqIENsb3NlIFNMUlUgc2VnbWVudCBm aWxlLgorICovCitzdGF0aWMgdm9pZAorY2xvc2Vfc2VnbWVudChTbHJ1U2VnU3RhdGUgKnN0YXRl KQoreworCWlmIChzdGF0ZS0+ZmlsZSkKKwl7CisJCWZjbG9zZShzdGF0ZS0+ZmlsZSk7CisJCXN0 YXRlLT5maWxlID0gTlVMTDsKKwl9CisKKwlpZiAoc3RhdGUtPmZuKQorCXsKKwkJcGZyZWUoc3Rh dGUtPmZuKTsKKwkJc3RhdGUtPmZuID0gTlVMTDsKKwl9Cit9CisKKy8qCisgKiBSZWFkIG5leHQg cGFnZSBmcm9tIHRoZSBvbGQgMzItYml0IG9mZnNldCBzZWdtZW50IGZpbGUuCisgKi8KK3N0YXRp YyBpbnQKK3JlYWRfb2xkX3NlZ21lbnRfcGFnZShTbHJ1U2VnU3RhdGUgKnN0YXRlLCB2b2lkICpi dWYsIGJvb2wgKmVtcHR5KQoreworCWludAkJbGVuOworCisJLyogT3BlbiBuZXh0IHNlZ21lbnQg ZmlsZSwgaWYgbmVlZGVkLiAqLworCWlmICghc3RhdGUtPmZuKQorCXsKKwkJaWYgKCFzdGF0ZS0+ c2Vnbm8pCisJCQlzdGF0ZS0+bGVhZGluZ19nYXAgPSB0cnVlOworCisJCW9wZW5fc2VnbWVudChz dGF0ZSk7CisKKwkJLyogU2V0IHBvc2l0aW9uIHRvIHRoZSBuZWVkZWQgcGFnZS4gKi8KKwkJaWYg KHN0YXRlLT5wYWdlbm8gPiAwICYmCisJCQlmc2VlayhzdGF0ZS0+ZmlsZSwgc3RhdGUtPnBhZ2Vu byAqIEJMQ0tTWiwgU0VFS19TRVQpKQorCQl7CisJCQljbG9zZV9zZWdtZW50KHN0YXRlKTsKKwkJ fQorCX0KKworCWlmIChzdGF0ZS0+ZmlsZSkKKwl7CisJCS8qIFNlZ21lbnQgZmlsZSBkbyBleGlz dHMsIHJlYWQgcGFnZSBmcm9tIGl0LiAqLworCQlzdGF0ZS0+bGVhZGluZ19nYXAgPSBmYWxzZTsK KworCQlsZW4gPSBmcmVhZChidWYsIHNpemVvZihjaGFyKSwgQkxDS1NaLCBzdGF0ZS0+ZmlsZSk7 CisKKwkJLyogQXJlIHdlIGRvbmUgb3Igd2FzIHRoZXJlIGFuIGVycm9yPyAqLworCQlpZiAobGVu IDw9IDApCisJCXsKKwkJCWlmIChmZXJyb3Ioc3RhdGUtPmZpbGUpKQorCQkJCXBnX2ZhdGFsKCJl cnJvciByZWFkaW5nIGZpbGUgXCIlc1wiOiAlbSIsIHN0YXRlLT5mbik7CisKKwkJCWlmIChmZW9m KHN0YXRlLT5maWxlKSkKKwkJCXsKKwkJCQkqZW1wdHkgPSB0cnVlOworCQkJCWxlbiA9IC0xOwor CisJCQkJY2xvc2Vfc2VnbWVudChzdGF0ZSk7CisJCQl9CisJCX0KKwkJZWxzZQorCQkJKmVtcHR5 ID0gZmFsc2U7CisJfQorCWVsc2UgaWYgKCFzdGF0ZS0+bGVhZGluZ19nYXApCisJeworCQkvKiBX ZSByZWFjaGVkIHRoZSBsYXN0IHNlZ21lbnQuICovCisJCWxlbiA9IC0xOworCQkqZW1wdHkgPSB0 cnVlOworCX0KKwllbHNlCisJeworCQkvKiBTa2lwIGZldyBmaXJzdCBzZWdtZW50cyBpZiB0aGV5 IHdlcmUgZnJvemVuIGFuZCByZW1vdmVkLiAqLworCQlsZW4gPSBCTENLU1o7CisJCSplbXB0eSA9 IHRydWU7CisJfQorCisJaWYgKCsrc3RhdGUtPnBhZ2VubyA+PSBTTFJVX1BBR0VTX1BFUl9TRUdN RU5UKQorCXsKKwkJLyogU3RhcnQgYSBuZXcgc2VnbWVudC4gKi8KKwkJc3RhdGUtPnNlZ25vKys7 CisJCXN0YXRlLT5wYWdlbm8gPSAwOworCisJCWNsb3NlX3NlZ21lbnQoc3RhdGUpOworCX0KKwor CXJldHVybiBsZW47Cit9CisKKy8qCisgKiBXcml0ZSBuZXh0IHBhZ2UgdG8gdGhlIG5ldyA2NC1i aXQgb2Zmc2V0IHNlZ21lbnQgZmlsZS4KKyAqLworc3RhdGljIHZvaWQKK3dyaXRlX25ld19zZWdt ZW50X3BhZ2UoU2xydVNlZ1N0YXRlICpzdGF0ZSwgdm9pZCAqYnVmKQoreworCS8qCisJICogQ3Jl YXRlIGEgbmV3IHNlZ21lbnQgZmlsZSBpZiB3ZSBzdGlsbCBkaWRuJ3QuICBDcmVhdGlvbiBpcwor CSAqIHBvc3Rwb25lZCB1bnRpbCB0aGUgZmlyc3Qgbm9uLWVtcHR5IHBhZ2UgaXMgZm91bmQuICBU aGlzIGhlbHBzCisJICogbm90IHRvIGNyZWF0ZSBjb21wbGV0ZWx5IGVtcHR5IHNlZ21lbnRzLgor CSAqLworCWlmICghc3RhdGUtPmZpbGUpCisJeworCQljcmVhdGVfc2VnbWVudChzdGF0ZSk7CisK KwkJLyogV3JpdGUgemVyb2VzIHRvIHRoZSBwcmV2aW91c2x5IHNraXBwZWQgcHJlZml4LiAqLwor CQlpZiAoc3RhdGUtPnBhZ2VubyA+IDApCisJCXsKKwkJCWNoYXIJCXplcm9idWZbQkxDS1NaXSA9 IHswfTsKKworCQkJZm9yIChpbnQ2NCBpID0gMDsgaSA8IHN0YXRlLT5wYWdlbm87IGkrKykKKwkJ CXsKKwkJCQlpZiAoZndyaXRlKHplcm9idWYsIHNpemVvZihjaGFyKSwgQkxDS1NaLCBzdGF0ZS0+ ZmlsZSkgIT0gQkxDS1NaKQorCQkJCQlwZ19mYXRhbCgiY291bGQgbm90IHdyaXRlIGZpbGUgXCIl c1wiOiAlbSIsIHN0YXRlLT5mbik7CisJCQl9CisJCX0KKwl9CisKKwkvKiBXcml0ZSBwYWdlIHRv IHRoZSBuZXcgc2VnbWVudCAoaWYgaXQgd2FzIGNyZWF0ZWQpLiAqLworCWlmIChzdGF0ZS0+Zmls ZSkKKwl7CisJCWlmIChmd3JpdGUoYnVmLCBzaXplb2YoY2hhciksIEJMQ0tTWiwgc3RhdGUtPmZp bGUpICE9IEJMQ0tTWikKKwkJCXBnX2ZhdGFsKCJjb3VsZCBub3Qgd3JpdGUgZmlsZSBcIiVzXCI6 ICVtIiwgc3RhdGUtPmZuKTsKKwl9CisKKwkvKgorCSAqIERpZCB3ZSByZWFjaCB0aGUgbWF4aW11 bSBwYWdlIG51bWJlcj8gIFRoZW4gY2xvc2Ugc2VnbWVudCBmaWxlCisJICogYW5kIGNyZWF0ZSBh IG5ldyBvbmUgb24gdGhlIG5leHQgaXRlcmF0aW9uLgorCSAqLworCWlmICgrK3N0YXRlLT5wYWdl bm8gPj0gU0xSVV9QQUdFU19QRVJfU0VHTUVOVCkKKwl7CisJCS8qIFN0YXJ0IGEgbmV3IHNlZ21l bnQuICovCisJCXN0YXRlLT5zZWdubysrOworCQlzdGF0ZS0+cGFnZW5vID0gMDsKKworCQljbG9z ZV9zZWdtZW50KHN0YXRlKTsKKwl9Cit9CisKK3R5cGVkZWYgdWludDMyIE11bHRpWGFjdE9mZnNl dE9sZDsKKworI2RlZmluZSBNYXhNdWx0aVhhY3RPZmZzZXRPbGQJKChNdWx0aVhhY3RPZmZzZXRP bGQpIDB4RkZGRkZGRkYpCisKKyNkZWZpbmUgTVVMVElYQUNUX09GRlNFVFNfUEVSX1BBR0VfT0xE IChCTENLU1ogLyBzaXplb2YoTXVsdGlYYWN0T2Zmc2V0T2xkKSkKKyNkZWZpbmUgTVVMVElYQUNU X09GRlNFVFNfUEVSX1BBR0VfTkVXIChCTENLU1ogLyBzaXplb2YoTXVsdGlYYWN0T2Zmc2V0KSkK KworLyoKKyAqIENvbnZlcnQgcGdfbXVsdGl4YWN0L29mZnNldHMgc2VnbWVudHMgYW5kIHJldHVy biBvbGRlc3QgbXVsdGkgb2Zmc2V0LgorICovCitNdWx0aVhhY3RPZmZzZXQKK2NvbnZlcnRfbXVs dGl4YWN0X29mZnNldHModm9pZCkKK3sKKwlTbHJ1U2VnU3RhdGUJCW9sZHNlZyA9IHswfSwKKwkJ CQkJCW5ld3NlZyA9IHswfTsKKwlNdWx0aVhhY3RPZmZzZXRPbGQJb2xkYnVmW01VTFRJWEFDVF9P RkZTRVRTX1BFUl9QQUdFX09MRF0gPSB7MH07CisJTXVsdGlYYWN0T2Zmc2V0CQluZXdidWZbTVVM VElYQUNUX09GRlNFVFNfUEVSX1BBR0VfTkVXXSA9IHswfSwKKwkJCQkJCW9sZGVzdF9vZmZzZXQg PSAwOworCXVpbnQ2NAkJCQlvbGRlc3RfbXVsdGkgPSBvbGRfY2x1c3Rlci5jb250cm9sZGF0YS5j aGtwbnRfb2xkc3RNdWx0aSwKKwkJCQkJCW5leHRfbXVsdGkgPSBvbGRfY2x1c3Rlci5jb250cm9s ZGF0YS5jaGtwbnRfbnh0bXVsdGksCisJCQkJCQltdWx0aSwKKwkJCQkJCW9sZF9lbnRyeSwKKwkJ CQkJCW5ld19lbnRyeTsKKwlib29sCQkJCW9sZGVzdF9vZmZzZXRfa25vd24gPSBmYWxzZTsKKwor CW9sZHNlZy5kaXIgPSBwc3ByaW50ZigiJXMvcGdfbXVsdGl4YWN0L29mZnNldHMiLCBvbGRfY2x1 c3Rlci5wZ2RhdGEpOworCW5ld3NlZy5kaXIgPSBwc3ByaW50ZigiJXMvcGdfbXVsdGl4YWN0L29m ZnNldHMiLCBuZXdfY2x1c3Rlci5wZ2RhdGEpOworCisJb2xkX2VudHJ5ID0gb2xkZXN0X211bHRp ICUgTVVMVElYQUNUX09GRlNFVFNfUEVSX1BBR0VfT0xEOworCW9sZHNlZy5wYWdlbm8gPSBvbGRl c3RfbXVsdGkgLyBNVUxUSVhBQ1RfT0ZGU0VUU19QRVJfUEFHRV9PTEQ7CisJb2xkc2VnLnNlZ25v ID0gb2xkc2VnLnBhZ2VubyAvIFNMUlVfUEFHRVNfUEVSX1NFR01FTlQ7CisJb2xkc2VnLnBhZ2Vu byAlPSBTTFJVX1BBR0VTX1BFUl9TRUdNRU5UOworCisJbmV3X2VudHJ5ID0gb2xkZXN0X211bHRp ICUgTVVMVElYQUNUX09GRlNFVFNfUEVSX1BBR0VfTkVXOworCW5ld3NlZy5wYWdlbm8gPSBvbGRl c3RfbXVsdGkgLyBNVUxUSVhBQ1RfT0ZGU0VUU19QRVJfUEFHRV9ORVc7CisJbmV3c2VnLnNlZ25v ID0gbmV3c2VnLnBhZ2VubyAvIFNMUlVfUEFHRVNfUEVSX1NFR01FTlQ7CisJbmV3c2VnLnBhZ2Vu byAlPSBTTFJVX1BBR0VTX1BFUl9TRUdNRU5UOworCisJaWYgKG5leHRfbXVsdGkgPCBvbGRlc3Rf bXVsdGkpCisJCW5leHRfbXVsdGkgKz0gKHVpbnQ2NCkgMSA8PCAzMjsJLyogd3JhcGFyb3VuZCAq LworCisJLyogQ29weSBtdWx0aSBvZmZzZXRzIHJlYWRpbmcgb25seSBuZWVkZWQgc2VnbWVudCBw YWdlcyAqLworCWZvciAobXVsdGkgPSBvbGRlc3RfbXVsdGk7IG11bHRpIDwgbmV4dF9tdWx0aTsg b2xkX2VudHJ5ID0gMCkKKwl7CisJCWludAkJb2xkbGVuOworCQlib29sCWVtcHR5OworCisJCS8q IEhhbmRsZSBwb3NzaWJsZSBzZWdtZW50IHdyYXBhcm91bmQgKi8KKyNkZWZpbmUgT0xEX09GRlNF VF9TRUdOT19NQVgJXAorCShNYXhNdWx0aVhhY3RJZCAvIE1VTFRJWEFDVF9PRkZTRVRTX1BFUl9Q QUdFX09MRCAvIFNMUlVfUEFHRVNfUEVSX1NFR01FTlQpCisJCWlmIChvbGRzZWcuc2Vnbm8gPiBP TERfT0ZGU0VUX1NFR05PX01BWCkKKwkJeworCQkJb2xkc2VnLnNlZ25vID0gMDsKKwkJCW9sZHNl Zy5wYWdlbm8gPSAwOworCQl9CisKKwkJb2xkbGVuID0gcmVhZF9vbGRfc2VnbWVudF9wYWdlKCZv bGRzZWcsIG9sZGJ1ZiwgJmVtcHR5KTsKKwkJaWYgKGVtcHR5IHx8IG9sZGxlbiAhPSBCTENLU1op CisJCQlwZ19mYXRhbCgiY2Fubm90IHJlYWQgcGFnZSAlIiBQUkl1NjQgIiBmcm9tIGZpbGUgXCIl c1wiOiAlbSIsCisJCQkJCSBvbGRzZWcucGFnZW5vLCBvbGRzZWcuZm4pOworCisJCS8qIFNhdmUg b2xkZXN0IG11bHRpIG9mZnNldCAqLworCQlpZiAoIW9sZGVzdF9vZmZzZXRfa25vd24pCisJCXsK KwkJCW9sZGVzdF9vZmZzZXQgPSBvbGRidWZbb2xkX2VudHJ5XTsKKwkJCW9sZGVzdF9vZmZzZXRf a25vd24gPSB0cnVlOworCQl9CisKKwkJLyogU2tpcCB3cmFwcGVkLWFyb3VuZCBpbnZhbGlkIE11 bHRpWGFjdElkcyAqLworCQlpZiAobXVsdGkgPT0gKHVpbnQ2NCkgMSA8PCAzMikKKwkJeworCQkJ QXNzZXJ0KG9sZHNlZy5zZWdubyA9PSAwKTsKKwkJCUFzc2VydChvbGRzZWcucGFnZW5vID09IDEp OworCQkJQXNzZXJ0KG9sZF9lbnRyeSA9PSAwKTsKKwkJCUFzc2VydChuZXdfZW50cnkgPT0gMCk7 CisKKwkJCW11bHRpICs9IEZpcnN0TXVsdGlYYWN0SWQ7CisJCQlvbGRfZW50cnkgPSBGaXJzdE11 bHRpWGFjdElkOworCQkJbmV3X2VudHJ5ID0gRmlyc3RNdWx0aVhhY3RJZDsKKwkJfQorCisJCS8q IENvcHkgZW50cmllcyB0byB0aGUgbmV3IHBhZ2UgKi8KKwkJZm9yICg7IG11bHRpIDwgbmV4dF9t dWx0aSAmJiBvbGRfZW50cnkgPCBNVUxUSVhBQ1RfT0ZGU0VUU19QRVJfUEFHRV9PTEQ7CisJCQkg bXVsdGkrKywgb2xkX2VudHJ5KyspCisJCXsKKwkJCU11bHRpWGFjdE9mZnNldCBvZmZzZXQgPSBv bGRidWZbb2xkX2VudHJ5XTsKKworCQkJLyogSGFuZGxlIHBvc3NpYmxlIG9mZnNldCB3cmFwYXJv dW5kICgxIGJlY29tZXMgMl4zMikgKi8KKwkJCWlmIChvZmZzZXQgPCBvbGRlc3Rfb2Zmc2V0KQor CQkJCW9mZnNldCArPSAoKHVpbnQ2NCkgMSA8PCAzMikgLSAxOworCisJCQkvKiBTdWJ0cmFjdCBv bGRlc3Rfb2Zmc2V0LCBzbyBuZXcgb2Zmc2V0cyB3aWxsIHN0YXJ0IGZyb20gMSAqLworCQkJbmV3 YnVmW25ld19lbnRyeSsrXSA9IG9mZnNldCAtIG9sZGVzdF9vZmZzZXQgKyAxOworCisJCQlpZiAo bmV3X2VudHJ5ID49IE1VTFRJWEFDVF9PRkZTRVRTX1BFUl9QQUdFX05FVykKKwkJCXsKKwkJCQkv KiBIYW5kbGUgcG9zc2libGUgc2VnbWVudCB3cmFwYXJvdW5kICovCisjZGVmaW5lIE5FV19PRkZT RVRfU0VHTk9fTUFYCVwKKwkoTWF4TXVsdGlYYWN0SWQgLyBNVUxUSVhBQ1RfT0ZGU0VUU19QRVJf UEFHRV9ORVcgLyBTTFJVX1BBR0VTX1BFUl9TRUdNRU5UKQorCQkJCWlmIChuZXdzZWcuc2Vnbm8g PiBORVdfT0ZGU0VUX1NFR05PX01BWCkKKwkJCQl7CisJCQkJCW5ld3NlZy5zZWdubyA9IDA7CisJ CQkJCW5ld3NlZy5wYWdlbm8gPSAwOworCQkJCX0KKworCQkJCS8qIFdyaXRlIG5ldyBwYWdlICov CisJCQkJd3JpdGVfbmV3X3NlZ21lbnRfcGFnZSgmbmV3c2VnLCBuZXdidWYpOworCQkJCW5ld19l bnRyeSA9IDA7CisJCQl9CisJCX0KKwl9CisKKwkvKiBXcml0ZSB0aGUgbGFzdCBpbmNvbXBsZXRl IHBhZ2UgKi8KKwlpZiAobmV3X2VudHJ5ID4gMCB8fCBvbGRlc3RfbXVsdGkgPT0gbmV4dF9tdWx0 aSkKKwl7CisJCW1lbXNldCgmbmV3YnVmW25ld19lbnRyeV0sIDAsCisJCQkgICBzaXplb2YobmV3 YnVmWzBdKSAqIChNVUxUSVhBQ1RfT0ZGU0VUU19QRVJfUEFHRV9ORVcgLSBuZXdfZW50cnkpKTsK KwkJd3JpdGVfbmV3X3NlZ21lbnRfcGFnZSgmbmV3c2VnLCBuZXdidWYpOworCX0KKworCS8qIFVz ZSBuZXh0X29mZnNldCBhcyBvbGRlc3Rfb2Zmc2V0LCBpZiBvbGRlc3RfbXVsdGkgPT0gbmV4dF9t dWx0aSAqLworCWlmICghb2xkZXN0X29mZnNldF9rbm93bikKKwl7CisJCUFzc2VydChvbGRlc3Rf bXVsdGkgPT0gbmV4dF9tdWx0aSk7CisJCW9sZGVzdF9vZmZzZXQgPSAoTXVsdGlYYWN0T2Zmc2V0 KSBvbGRfY2x1c3Rlci5jb250cm9sZGF0YS5jaGtwbnRfbnh0bXhvZmY7CisJfQorCisJLyogUmVs ZWFzZSByZXNvdXJjZXMgKi8KKwljbG9zZV9zZWdtZW50KCZvbGRzZWcpOworCWNsb3NlX3NlZ21l bnQoJm5ld3NlZyk7CisKKwlwZnJlZShvbGRzZWcuZGlyKTsKKwlwZnJlZShuZXdzZWcuZGlyKTsK KworCXJldHVybiBvbGRlc3Rfb2Zmc2V0OworfQorCisjZGVmaW5lIE1YQUNUX01FTUJFUlNfRkxB R19CWVRFUwkJCTEKKworI2RlZmluZSBNVUxUSVhBQ1RfTUVNQkVSU19QRVJfR1JPVVAJCQk0Cisj ZGVmaW5lIE1VTFRJWEFDVF9NRU1CRVJHUk9VUF9TSVpFCQkJXAorCShNVUxUSVhBQ1RfTUVNQkVS U19QRVJfR1JPVVAgKiAoc2l6ZW9mKFRyYW5zYWN0aW9uSWQpICsgTVhBQ1RfTUVNQkVSU19GTEFH X0JZVEVTKSkKKyNkZWZpbmUgTVVMVElYQUNUX01FTUJFUkdST1VQU19QRVJfUEFHRQkJXAorCShC TENLU1ogLyBNVUxUSVhBQ1RfTUVNQkVSR1JPVVBfU0laRSkKKworI2RlZmluZSBNVUxUSVhBQ1Rf TUVNQkVSU19QRVJfUEFHRQkJCQlcCisJKE1VTFRJWEFDVF9NRU1CRVJTX1BFUl9HUk9VUCAqIE1V TFRJWEFDVF9NRU1CRVJHUk9VUFNfUEVSX1BBR0UpCisjZGVmaW5lIE1VTFRJWEFDVF9NRU1CRVJf RkxBR19CWVRFU19QRVJfR1JPVVAJXAorCShNWEFDVF9NRU1CRVJTX0ZMQUdfQllURVMgKiBNVUxU SVhBQ1RfTUVNQkVSU19QRVJfR1JPVVApCisKK3R5cGVkZWYgc3RydWN0IE11bHRpWGFjdE1lbWJl cnNDdHgKK3sKKwlTbHJ1U2VnU3RhdGUJc2VnOworCWNoYXIJCQlidWZbQkxDS1NaXTsKKwlpbnQJ CQkJZ3JvdXA7CisJaW50CQkJCW1lbWJlcjsKKwljaGFyCQkgICAqZmxhZzsKKwlUcmFuc2FjdGlv bklkICAqeGlkOworfSBNdWx0aVhhY3RNZW1iZXJzQ3R4OworCitzdGF0aWMgdm9pZAorTXVsdGlY YWN0TWVtYmVyc0N0eEluaXQoTXVsdGlYYWN0TWVtYmVyc0N0eCAqY3R4KQoreworCWN0eC0+c2Vn LmRpciA9IHBzcHJpbnRmKCIlcy9wZ19tdWx0aXhhY3QvbWVtYmVycyIsIG5ld19jbHVzdGVyLnBn ZGF0YSk7CisKKwljdHgtPmdyb3VwID0gMDsKKwljdHgtPm1lbWJlciA9IDE7CQkvKiBza2lwIGlu dmFsaWQgemVybyBvZmZzZXQgKi8KKworCWN0eC0+ZmxhZyA9IChjaGFyICopIGN0eC0+YnVmICsg Y3R4LT5ncm91cCAqIE1VTFRJWEFDVF9NRU1CRVJHUk9VUF9TSVpFOworCWN0eC0+eGlkID0gKFRy YW5zYWN0aW9uSWQgKikoY3R4LT5mbGFnICsgTVhBQ1RfTUVNQkVSU19GTEFHX0JZVEVTICogTVVM VElYQUNUX01FTUJFUlNfUEVSX0dST1VQKTsKKworCWN0eC0+ZmxhZyArPSBjdHgtPm1lbWJlcjsK KwljdHgtPnhpZCArPSBjdHgtPm1lbWJlcjsKK30KKworc3RhdGljIHZvaWQKK011bHRpWGFjdE1l bWJlcnNDdHhBZGQoTXVsdGlYYWN0TWVtYmVyc0N0eCAqY3R4LCBjaGFyIGZsYWcsIFRyYW5zYWN0 aW9uSWQgeGlkKQoreworCS8qIENvcHkgbWVtYmVyJ3MgeGlkIGFuZCBmbGFncyB0byB0aGUgbmV3 IHBhZ2UgKi8KKwkqY3R4LT5mbGFnKysgPSBmbGFnOworCSpjdHgtPnhpZCsrID0geGlkOworCisJ aWYgKCsrY3R4LT5tZW1iZXIgPCBNVUxUSVhBQ1RfTUVNQkVSU19QRVJfR1JPVVApCisJCXJldHVy bjsKKworCS8qIFN0YXJ0IG5leHQgbWVtYmVyIGdyb3VwICovCisJY3R4LT5tZW1iZXIgPSAwOwor CisJaWYgKCsrY3R4LT5ncm91cCA+PSBNVUxUSVhBQ1RfTUVNQkVSR1JPVVBTX1BFUl9QQUdFKQor CXsKKwkJLyogV3JpdGUgY3VycmVudCBwYWdlIGFuZCBzdGFydCBuZXcgKi8KKwkJd3JpdGVfbmV3 X3NlZ21lbnRfcGFnZSgmY3R4LT5zZWcsIGN0eC0+YnVmKTsKKworCQljdHgtPmdyb3VwID0gMDsK KwkJbWVtc2V0KGN0eC0+YnVmLCAwLCBCTENLU1opOworCX0KKworCWN0eC0+ZmxhZyA9IChjaGFy ICopIGN0eC0+YnVmICsgY3R4LT5ncm91cCAqIE1VTFRJWEFDVF9NRU1CRVJHUk9VUF9TSVpFOwor CWN0eC0+eGlkID0gKFRyYW5zYWN0aW9uSWQgKikoY3R4LT5mbGFnICsgTVhBQ1RfTUVNQkVSU19G TEFHX0JZVEVTICogTVVMVElYQUNUX01FTUJFUlNfUEVSX0dST1VQKTsKK30KKworc3RhdGljIHZv aWQKK011bHRpWGFjdE1lbWJlcnNDdHhGaW5pdChNdWx0aVhhY3RNZW1iZXJzQ3R4ICpjdHgpCit7 CisJaWYgKGN0eC0+ZmxhZyA+IChjaGFyICopIGN0eC0+YnVmKQorCQl3cml0ZV9uZXdfc2VnbWVu dF9wYWdlKCZjdHgtPnNlZywgY3R4LT5idWYpOworCisJY2xvc2Vfc2VnbWVudCgmY3R4LT5zZWcp OworCisJcGZyZWUoY3R4LT5zZWcuZGlyKTsKK30KKworLyoKKyAqIENvbnZlcnQgcGdfbXVsdGl4 YWN0L21lbWJlcnMgc2VnbWVudHMsIG9mZnNldHMgd2lsbCBzdGFydCBmcm9tIDEuCisgKgorICov Cit2b2lkCitjb252ZXJ0X211bHRpeGFjdF9tZW1iZXJzKE11bHRpWGFjdE9mZnNldCBvbGRlc3Rf b2Zmc2V0KQoreworCU11bHRpWGFjdE9mZnNldAkJCW5leHRfb2Zmc2V0LAorCQkJCQkJCW9mZnNl dDsKKwlTbHJ1U2VnU3RhdGUJCQlvbGRzZWcgPSB7MH07CisJY2hhcgkJCQkJb2xkYnVmW0JMQ0tT Wl0gPSB7MH07CisJaW50CQkJCQkJb2xkaWR4OworCU11bHRpWGFjdE1lbWJlcnNDdHgJCW5ld2N0 eCA9IHswfTsKKworCW9sZHNlZy5kaXIgPSBwc3ByaW50ZigiJXMvcGdfbXVsdGl4YWN0L21lbWJl cnMiLCBvbGRfY2x1c3Rlci5wZ2RhdGEpOworCisJbmV4dF9vZmZzZXQgPSAoTXVsdGlYYWN0T2Zm c2V0KSBvbGRfY2x1c3Rlci5jb250cm9sZGF0YS5jaGtwbnRfbnh0bXhvZmY7CisJaWYgKG5leHRf b2Zmc2V0IDwgb2xkZXN0X29mZnNldCkKKwkJbmV4dF9vZmZzZXQgKz0gKCh1aW50NjQpIDEgPDwg MzIpIC0gMTsKKworCS8qIEluaXRpYWxpemUgdGhlIG9sZCBzdGFydGluZyBwb3NpdGlvbiAqLwor CW9sZHNlZy5wYWdlbm8gPSBvbGRlc3Rfb2Zmc2V0IC8gTVVMVElYQUNUX01FTUJFUlNfUEVSX1BB R0U7CisJb2xkc2VnLnNlZ25vID0gb2xkc2VnLnBhZ2VubyAvIFNMUlVfUEFHRVNfUEVSX1NFR01F TlQ7CisJb2xkc2VnLnBhZ2VubyAlPSBTTFJVX1BBR0VTX1BFUl9TRUdNRU5UOworCisJLyogSW5p dGlhbGl6ZSBuZXcgc3RhcnRpbmcgcG9zaXRpb24gKi8KKwlNdWx0aVhhY3RNZW1iZXJzQ3R4SW5p dCgmbmV3Y3R4KTsKKworCS8qIEl0ZXJhdGUgdGhyb3VnaCB0aGUgb3JpZ2luYWwgZGlyZWN0b3J5 ICovCisJb2xkaWR4ID0gb2xkZXN0X29mZnNldCAlIE1VTFRJWEFDVF9NRU1CRVJTX1BFUl9QQUdF OworCWZvciAob2Zmc2V0ID0gb2xkZXN0X29mZnNldDsgb2Zmc2V0IDwgbmV4dF9vZmZzZXQ7KQor CXsKKwkJYm9vbAllbXB0eTsKKwkJaW50CQlvbGRsZW47CisJCWludAkJbmdyb3VwczsKKwkJaW50 CQlvbGRncm91cDsKKwkJaW50CQlvbGRtZW1iZXI7CisKKwkJb2xkbGVuID0gcmVhZF9vbGRfc2Vn bWVudF9wYWdlKCZvbGRzZWcsIG9sZGJ1ZiwgJmVtcHR5KTsKKwkJaWYgKGVtcHR5IHx8IG9sZGxl biAhPSBCTENLU1opCisJCQlwZ19mYXRhbCgiY2Fubm90IHJlYWQgcGFnZSAlIiBQUkl1NjQgIiBm cm9tIGZpbGUgXCIlc1wiOiAlbSIsCisJCQkJCSBvbGRzZWcucGFnZW5vLCBvbGRzZWcuZm4pOwor CisJCS8qIEl0ZXJhdGUgdGhyb3VnaCB0aGUgb2xkIG1lbWJlciBncm91cHMgKi8KKwkJbmdyb3Vw cyA9IG9sZGxlbiAvIE1VTFRJWEFDVF9NRU1CRVJHUk9VUF9TSVpFOworCQlvbGRtZW1iZXIgPSBv bGRpZHggJSBNVUxUSVhBQ1RfTUVNQkVSU19QRVJfR1JPVVA7CisJCW9sZGdyb3VwID0gb2xkaWR4 IC8gTVVMVElYQUNUX01FTUJFUlNfUEVSX0dST1VQOworCQl3aGlsZSAob2xkZ3JvdXAgPCBuZ3Jv dXBzICYmIG9mZnNldCA8IG5leHRfb2Zmc2V0KQorCQl7CisJCQljaGFyCQkgICAqb2xkZmxhZzsK KwkJCVRyYW5zYWN0aW9uSWQgICpvbGR4aWQ7CisJCQlpbnQJCQkJaTsKKworCQkJb2xkZmxhZyA9 IChjaGFyICopIG9sZGJ1ZiArIG9sZGdyb3VwICogTVVMVElYQUNUX01FTUJFUkdST1VQX1NJWkU7 CisJCQlvbGR4aWQgPSAoVHJhbnNhY3Rpb25JZCAqKShvbGRmbGFnICsgTVVMVElYQUNUX01FTUJF Ul9GTEFHX0JZVEVTX1BFUl9HUk9VUCk7CisKKwkJCW9sZHhpZCArPSBvbGRtZW1iZXI7CisJCQlv bGRmbGFnICs9IG9sZG1lbWJlcjsKKworCQkJLyogSXRlcmF0ZSB0aHJvdWdoIHRoZSBvbGQgbWVt YmVycyAqLworCQkJZm9yIChpID0gb2xkbWVtYmVyOworCQkJCSBpIDwgTVVMVElYQUNUX01FTUJF UlNfUEVSX0dST1VQICYmIG9mZnNldCA8IG5leHRfb2Zmc2V0OworCQkJCSBpKyspCisJCQl7CisJ CQkJTXVsdGlYYWN0TWVtYmVyc0N0eEFkZCgmbmV3Y3R4LCAqb2xkZmxhZysrLCAqb2xkeGlkKysp OworCisJCQkJaWYgKCsrb2Zmc2V0ID09ICh1aW50NjQpIDEgPDwgMzIpCisJCQkJeworCQkJCQlB c3NlcnQoaSA9PSBNYXhNdWx0aVhhY3RPZmZzZXRPbGQgJSBNVUxUSVhBQ1RfTUVNQkVSU19QRVJf R1JPVVApOworCQkJCQlnb3RvIHdyYXBhcm91bmQ7CisJCQkJfQorCQkJfQorCisJCQlvbGRncm91 cCsrOworCQkJb2xkbWVtYmVyID0gMDsKKwkJfQorCisJCW9sZGlkeCA9IDA7CisKKwkJY29udGlu dWU7CisKK3dyYXBhcm91bmQ6CisjZGVmaW5lIFNFR05PX01BWAlNYXhNdWx0aVhhY3RPZmZzZXRP bGQgLyBNVUxUSVhBQ1RfTUVNQkVSU19QRVJfUEFHRSAvIFNMUlVfUEFHRVNfUEVSX1NFR01FTlQK KyNkZWZpbmUgUEFHRU5PX01BWAlNYXhNdWx0aVhhY3RPZmZzZXRPbGQgLyBNVUxUSVhBQ1RfTUVN QkVSU19QRVJfUEFHRSAlIFNMUlVfUEFHRVNfUEVSX1NFR01FTlQKKwkJQXNzZXJ0KChvbGRzZWcu c2Vnbm8gPT0gU0VHTk9fTUFYICYmIG9sZHNlZy5wYWdlbm8gPT0gUEFHRU5PX01BWCArIDEpIHx8 CisJCQkgICAob2xkc2VnLnNlZ25vID09IFNFR05PX01BWCArIDEgJiYgb2xkc2VnLnBhZ2VubyA9 PSAwKSk7CisKKwkJLyogU3dpdGNoIHRvIHNlZ21lbnQgMDAwMCAqLworCQljbG9zZV9zZWdtZW50 KCZvbGRzZWcpOworCQlvbGRzZWcuc2Vnbm8gPSAwOworCQlvbGRzZWcucGFnZW5vID0gMDsKKwor CQkvKiBza2lwIGludmFsaWQgemVybyBtdWx0aSBvZmZzZXQgKi8KKwkJb2xkaWR4ID0gMTsKKwl9 CisKKwlNdWx0aVhhY3RNZW1iZXJzQ3R4RmluaXQoJm5ld2N0eCk7CisKKwkvKiBSZWxlYXNlIHJl c291cmNlcyAqLworCWNsb3NlX3NlZ21lbnQoJm9sZHNlZyk7CisKKwlwZnJlZShvbGRzZWcuZGly KTsKK30KLS0gCjIuNDMuMAoK --0000000000004764a606361f94b1 Content-Type: application/octet-stream; name="v15-0004-Get-rid-of-MultiXactMemberFreezeThreshold-call.patch" Content-Disposition: attachment; filename="v15-0004-Get-rid-of-MultiXactMemberFreezeThreshold-call.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mb6nsi0y3 RnJvbSBjZmJjZjU3NWVkZTFlYjFjNTU5NTBmZTY0Y2JlYjEyMTZiNWViMWVmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXhpbSBPcmxvdiA8b3Jsb3ZtZ0BnbWFpbC5jb20+CkRhdGU6 IFdlZCwgMjMgT2N0IDIwMjQgMTg6MjM6MzkgKzAzMDAKU3ViamVjdDogW1BBVENIIHYxNSA0Lzdd IEdldCByaWQgb2YgTXVsdGlYYWN0TWVtYmVyRnJlZXplVGhyZXNob2xkIGNhbGwuCgpTaW5jZSBN YXhNdWx0aVhhY3RPZmZzZXQgYXJlIFVJTlQ2NF9NQVggbm93LCBNVUxUSVhBQ1RfTUVNQkVSX1NB RkVfVEhSRVNIT0xEIGFuZApNVUxUSVhBQ1RfTUVNQkVSX0RBTkdFUl9USFJFU0hPTEQgdmFsdWVz IGFyZSBub3QgbWVhbmluZ2Z1bCBhbnkgbW9yZS4gVGh1cywKTXVsdGlYYWN0TWVtYmVyRnJlZXpl VGhyZXNob2xkIGlzIG5vdCBuZWVkZWQgdG9vLgoKSW5zdGVhZCwgc3dpdGNoIHRvIE1VTFRJWEFD VF9NRU1CRVJfQVVUT1ZBQ19USFJFU0hPTEQgKGVxIDJeMzIpIG1lbWJlcnMKdGhyZXNob2xkLiBJ dCBpcyB1c2VkIHRvIGRldGVybWluZSBpZiB3ZSBuZWVkIHRvIGZvcmNlIGF1dG92YWN1dW0gb3Ig bm90LgoKQXV0aG9yOiBNYXhpbSBPcmxvdiA8b3Jsb3ZtZ0BnbWFpbC5jb20+Ci0tLQogc3JjL2Jh Y2tlbmQvYWNjZXNzL3RyYW5zYW0vbXVsdGl4YWN0LmMgfCAxMTcgKysrLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvdmFjdXVtLmMgICAgICAgICAgfCAgIDIgKy0K IHNyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvYXV0b3ZhY3V1bS5jICAgIHwgICA0ICstCiBzcmMvaW5j bHVkZS9hY2Nlc3MvbXVsdGl4YWN0LmggICAgICAgICB8ICAgMSAtCiA0IGZpbGVzIGNoYW5nZWQs IDE1IGluc2VydGlvbnMoKyksIDEwOSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9hY2Nlc3MvdHJhbnNhbS9tdWx0aXhhY3QuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFu c2FtL211bHRpeGFjdC5jCmluZGV4IDk4ZWExNjkwYjUuLjA1OWE3MmYxMDYgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL211bHRpeGFjdC5jCisrKyBiL3NyYy9iYWNrZW5k L2FjY2Vzcy90cmFuc2FtL211bHRpeGFjdC5jCkBAIC0yMDQsMTAgKzIwNCwxNCBAQCBNWE9mZnNl dFRvTWVtYmVyT2Zmc2V0KE11bHRpWGFjdE9mZnNldCBvZmZzZXQpCiAJCW1lbWJlcl9pbl9ncm91 cCAqIHNpemVvZihUcmFuc2FjdGlvbklkKTsKIH0KIAotLyogTXVsdGl4YWN0IG1lbWJlcnMgd3Jh cGFyb3VuZCB0aHJlc2hvbGRzLiAqLwotI2RlZmluZSBNVUxUSVhBQ1RfTUVNQkVSX1NBRkVfVEhS RVNIT0xECQkoTWF4TXVsdGlYYWN0T2Zmc2V0IC8gMikKLSNkZWZpbmUgTVVMVElYQUNUX01FTUJF Ul9EQU5HRVJfVEhSRVNIT0xECVwKLQkoTWF4TXVsdGlYYWN0T2Zmc2V0IC0gTWF4TXVsdGlYYWN0 T2Zmc2V0IC8gNCkKKy8qCisgKiBNdWx0aXhhY3QgbWVtYmVycyB3YXJuaW5nIHRocmVzaG9sZC4K KyAqCisgKiBJZiBkaWZmZXJlbmNlIGJldHR3ZWVuIG5leHRPZmZzZXQgYW5kIG9sZGVzdE9mZnNl dCBleGNlZWQgdGhpcyB2YWx1ZSwgd2UKKyAqIHRyaWdnZXIgYXV0b3ZhY3V1bWluIG9yZGVyIHRv IHJlbGVhc2UgdGhlIGRpc2sgc3BhY2UsIHJlZHVjZSB0YWJsZSBibG9hdCBpZgorICogcG9zc2li bGUuCisgKi8KKyNkZWZpbmUgTVVMVElYQUNUX01FTUJFUl9BVVRPVkFDX1RIUkVTSE9MRAkJVUlO VDY0Q09OU1QoMHhGRkZGRkZGRikKIAogc3RhdGljIGlubGluZSBNdWx0aVhhY3RJZAogUHJldmlv dXNNdWx0aVhhY3RJZChNdWx0aVhhY3RJZCBtdWx0aSkKQEAgLTI2MTUsMTUgKzI2MTksMTMgQEAg R2V0T2xkZXN0TXVsdGlYYWN0SWQodm9pZCkKIH0KIAogLyoKLSAqIERldGVybWluZSBob3cgYWdn cmVzc2l2ZWx5IHdlIG5lZWQgdG8gdmFjdXVtIGluIG9yZGVyIHRvIHByZXZlbnQgbWVtYmVyCi0g KiB3cmFwYXJvdW5kLgorICogRGV0ZXJtaW5lIGlmIHdlIG5lZWQgdG8gdmFjdXVtIGZvciBtZW1i ZXIgb3Igbm90LgogICoKICAqIFRvIGRvIHNvIGRldGVybWluZSB3aGF0J3MgdGhlIG9sZGVzdCBt ZW1iZXIgb2Zmc2V0IGFuZCBpbnN0YWxsIHRoZSBsaW1pdAogICogaW5mbyBpbiBNdWx0aVhhY3RT dGF0ZSwgd2hlcmUgaXQgY2FuIGJlIHVzZWQgdG8gcHJldmVudCBvdmVycnVuIG9mIG9sZCBkYXRh CiAgKiBpbiB0aGUgbWVtYmVycyBTTFJVIGFyZWEuCiAgKgotICogVGhlIHJldHVybiB2YWx1ZSBp cyB0cnVlIGlmIGVtZXJnZW5jeSBhdXRvdmFjdXVtIGlzIHJlcXVpcmVkIGFuZCBmYWxzZQotICog b3RoZXJ3aXNlLgorICogVGhlIHJldHVybiB2YWx1ZSBpcyB0cnVlIGlmIGF1dG92YWN1dW0gaXMg cmVxdWlyZWQgYW5kIGZhbHNlIG90aGVyd2lzZS4KICAqLwogc3RhdGljIGJvb2wKIFNldE9mZnNl dFZhY3V1bUxpbWl0KGJvb2wgaXNfc3RhcnR1cCkKQEAgLTI3MTEsMTAgKzI3MTMsMTAgQEAgU2V0 T2Zmc2V0VmFjdXVtTGltaXQoYm9vbCBpc19zdGFydHVwKQogCUxXTG9ja1JlbGVhc2UoTXVsdGlY YWN0R2VuTG9jayk7CiAKIAkvKgotCSAqIERvIHdlIG5lZWQgYW4gZW1lcmdlbmN5IGF1dG92YWN1 dW0/CUlmIHdlJ3JlIG5vdCBzdXJlLCBhc3N1bWUgeWVzLgorCSAqIERvIHdlIG5lZWQgYXV0b3Zh Y3V1bT8JSWYgd2UncmUgbm90IHN1cmUsIGFzc3VtZSB5ZXMuCiAJICovCiAJcmV0dXJuICFvbGRl c3RPZmZzZXRLbm93biB8fAotCQkobmV4dE9mZnNldCAtIG9sZGVzdE9mZnNldCA+IE1VTFRJWEFD VF9NRU1CRVJfU0FGRV9USFJFU0hPTEQpOworCQkobmV4dE9mZnNldCAtIG9sZGVzdE9mZnNldCA+ IE1VTFRJWEFDVF9NRU1CRVJfQVVUT1ZBQ19USFJFU0hPTEQpOwogfQogCiAvKgpAQCAtMjc2MCwx MDEgKzI3NjIsNiBAQCBmaW5kX211bHRpeGFjdF9zdGFydChNdWx0aVhhY3RJZCBtdWx0aSwgTXVs dGlYYWN0T2Zmc2V0ICpyZXN1bHQpCiAJcmV0dXJuIHRydWU7CiB9CiAKLS8qCi0gKiBEZXRlcm1p bmUgaG93IG1hbnkgbXVsdGl4YWN0cywgYW5kIGhvdyBtYW55IG11bHRpeGFjdCBtZW1iZXJzLCBj dXJyZW50bHkKLSAqIGV4aXN0LiAgUmV0dXJuIGZhbHNlIGlmIHVuYWJsZSB0byBkZXRlcm1pbmUu Ci0gKi8KLXN0YXRpYyBib29sCi1SZWFkTXVsdGlYYWN0Q291bnRzKHVpbnQzMiAqbXVsdGl4YWN0 cywgTXVsdGlYYWN0T2Zmc2V0ICptZW1iZXJzKQotewotCU11bHRpWGFjdE9mZnNldCBuZXh0T2Zm c2V0OwotCU11bHRpWGFjdE9mZnNldCBvbGRlc3RPZmZzZXQ7Ci0JTXVsdGlYYWN0SWQgb2xkZXN0 TXVsdGlYYWN0SWQ7Ci0JTXVsdGlYYWN0SWQgbmV4dE11bHRpWGFjdElkOwotCWJvb2wJCW9sZGVz dE9mZnNldEtub3duOwotCi0JTFdMb2NrQWNxdWlyZShNdWx0aVhhY3RHZW5Mb2NrLCBMV19TSEFS RUQpOwotCW5leHRPZmZzZXQgPSBNdWx0aVhhY3RTdGF0ZS0+bmV4dE9mZnNldDsKLQlvbGRlc3RN dWx0aVhhY3RJZCA9IE11bHRpWGFjdFN0YXRlLT5vbGRlc3RNdWx0aVhhY3RJZDsKLQluZXh0TXVs dGlYYWN0SWQgPSBNdWx0aVhhY3RTdGF0ZS0+bmV4dE1YYWN0OwotCW9sZGVzdE9mZnNldCA9IE11 bHRpWGFjdFN0YXRlLT5vbGRlc3RPZmZzZXQ7Ci0Jb2xkZXN0T2Zmc2V0S25vd24gPSBNdWx0aVhh Y3RTdGF0ZS0+b2xkZXN0T2Zmc2V0S25vd247Ci0JTFdMb2NrUmVsZWFzZShNdWx0aVhhY3RHZW5M b2NrKTsKLQotCWlmICghb2xkZXN0T2Zmc2V0S25vd24pCi0JCXJldHVybiBmYWxzZTsKLQotCSpt ZW1iZXJzID0gbmV4dE9mZnNldCAtIG9sZGVzdE9mZnNldDsKLQkqbXVsdGl4YWN0cyA9IG5leHRN dWx0aVhhY3RJZCAtIG9sZGVzdE11bHRpWGFjdElkOwotCXJldHVybiB0cnVlOwotfQotCi0vKgot ICogTXVsdGl4YWN0IG1lbWJlcnMgY2FuIGJlIHJlbW92ZWQgb25jZSB0aGUgbXVsdGl4YWN0cyB0 aGF0IHJlZmVyIHRvIHRoZW0KLSAqIGFyZSBvbGRlciB0aGFuIGV2ZXJ5IGRhdG1pbm14aWQuICBh dXRvdmFjdXVtX211bHRpeGFjdF9mcmVlemVfbWF4X2FnZSBhbmQKLSAqIHZhY3V1bV9tdWx0aXhh Y3RfZnJlZXplX3RhYmxlX2FnZSB3b3JrIHRvZ2V0aGVyIHRvIG1ha2Ugc3VyZSB3ZSBuZXZlciBo YXZlCi0gKiB0b28gbWFueSBtdWx0aXhhY3RzOyB3ZSBob3BlIHRoYXQsIGF0IGxlYXN0IHVuZGVy IG5vcm1hbCBjaXJjdW1zdGFuY2VzLAotICogdGhpcyB3aWxsIGFsc28gYmUgc3VmZmljaWVudCB0 byBrZWVwIHVzIGZyb20gdXNpbmcgdG9vIG1hbnkgb2Zmc2V0cy4KLSAqIEhvd2V2ZXIsIGlmIHRo ZSBhdmVyYWdlIG11bHRpeGFjdCBoYXMgbWFueSBtZW1iZXJzLCB3ZSBtaWdodCBleGhhdXN0IHRo ZQotICogbWVtYmVycyBzcGFjZSB3aGlsZSBzdGlsbCB1c2luZyBmZXcgZW5vdWdoIG1lbWJlcnMg dGhhdCB0aGVzZSBsaW1pdHMgZmFpbAotICogdG8gdHJpZ2dlciByZWxtaW5teGlkIGFkdmFuY2Vt ZW50IGJ5IFZBQ1VVTS4gIEF0IHRoYXQgcG9pbnQsIHdlJ2QgaGF2ZSBubwotICogY2hvaWNlIGJ1 dCB0byBzdGFydCBmYWlsaW5nIG11bHRpeGFjdC1jcmVhdGluZyBvcGVyYXRpb25zIHdpdGggYW4g ZXJyb3IuCi0gKgotICogVG8gcHJldmVudCB0aGF0LCBpZiBtb3JlIHRoYW4gYSB0aHJlc2hvbGQg cG9ydGlvbiBvZiB0aGUgbWVtYmVycyBzcGFjZSBpcwotICogdXNlZCwgd2UgZWZmZWN0aXZlbHkg cmVkdWNlIGF1dG92YWN1dW1fbXVsdGl4YWN0X2ZyZWV6ZV9tYXhfYWdlIGFuZAotICogdG8gYSB2 YWx1ZSBqdXN0IGxlc3MgdGhhbiB0aGUgbnVtYmVyIG9mIG11bHRpeGFjdHMgaW4gdXNlLiAgV2Ug aG9wZSB0aGF0Ci0gKiB0aGlzIHdpbGwgcXVpY2tseSB0cmlnZ2VyIGF1dG92YWN1dW1pbmcgb24g dGhlIHRhYmxlIG9yIHRhYmxlcyB3aXRoIHRoZQotICogb2xkZXN0IHJlbG1pbm14aWQsIHRodXMg YWxsb3dpbmcgZGF0bWlubXhpZCB2YWx1ZXMgdG8gYWR2YW5jZSBhbmQgcmVtb3ZpbmcKLSAqIHNv bWUgbWVtYmVycy4KLSAqCi0gKiBBcyB0aGUgZnJhY3Rpb24gb2YgdGhlIG1lbWJlciBzcGFjZSBj dXJyZW50bHkgaW4gdXNlIGdyb3dzLCB3ZSBiZWNvbWUKLSAqIG1vcmUgYWdncmVzc2l2ZSBpbiBj bGFtcGluZyB0aGlzIHZhbHVlLiAgVGhhdCBub3Qgb25seSBjYXVzZXMgYXV0b3ZhY3V1bQotICog dG8gcmFtcCB1cCwgYnV0IGFsc28gbWFrZXMgYW55IG1hbnVhbCB2YWN1dW1zIHRoZSB1c2VyIGlz c3VlcyBtb3JlCi0gKiBhZ2dyZXNzaXZlLiAgVGhpcyBoYXBwZW5zIGJlY2F1c2UgdmFjdXVtX2dl dF9jdXRvZmZzKCkgd2lsbCBjbGFtcCB0aGUKLSAqIGZyZWV6ZSB0YWJsZSBhbmQgdGhlIG1pbmlt dW0gZnJlZXplIGFnZSBjdXRvZmZzIGJhc2VkIG9uIHRoZSBlZmZlY3RpdmUKLSAqIGF1dG92YWN1 dW1fbXVsdGl4YWN0X2ZyZWV6ZV9tYXhfYWdlIHRoaXMgZnVuY3Rpb24gcmV0dXJucy4gIEluIHRo ZSB3b3JzdAotICogY2FzZSwgd2UnbGwgY2xhaW0gdGhlIGZyZWV6ZV9tYXhfYWdlIHRvIHplcm8s IGFuZCBldmVyeSB2YWN1dW0gb2YgYW55Ci0gKiB0YWJsZSB3aWxsIGZyZWV6ZSBldmVyeSBtdWx0 aXhhY3QuCi0gKi8KLWludAotTXVsdGlYYWN0TWVtYmVyRnJlZXplVGhyZXNob2xkKHZvaWQpCi17 Ci0JTXVsdGlYYWN0T2Zmc2V0IG1lbWJlcnM7Ci0JdWludDMyCQltdWx0aXhhY3RzOwotCXVpbnQz MgkJdmljdGltX211bHRpeGFjdHM7Ci0JZG91YmxlCQlmcmFjdGlvbjsKLQlpbnQJCQlyZXN1bHQ7 Ci0KLQkvKiBJZiB3ZSBjYW4ndCBkZXRlcm1pbmUgbWVtYmVyIHNwYWNlIHV0aWxpemF0aW9uLCBh c3N1bWUgdGhlIHdvcnN0LiAqLwotCWlmICghUmVhZE11bHRpWGFjdENvdW50cygmbXVsdGl4YWN0 cywgJm1lbWJlcnMpKQotCQlyZXR1cm4gMDsKLQotCS8qIElmIG1lbWJlciBzcGFjZSB1dGlsaXph dGlvbiBpcyBsb3csIG5vIHNwZWNpYWwgYWN0aW9uIGlzIHJlcXVpcmVkLiAqLwotCWlmIChtZW1i ZXJzIDw9IE1VTFRJWEFDVF9NRU1CRVJfU0FGRV9USFJFU0hPTEQpCi0JCXJldHVybiBhdXRvdmFj dXVtX211bHRpeGFjdF9mcmVlemVfbWF4X2FnZTsKLQotCS8qCi0JICogQ29tcHV0ZSBhIHRhcmdl dCBmb3IgcmVsbWlubXhpZCBhZHZhbmNlbWVudC4gIFRoZSBudW1iZXIgb2YgbXVsdGl4YWN0cwot CSAqIHdlIHRyeSB0byBlbGltaW5hdGUgZnJvbSB0aGUgc3lzdGVtIGlzIGJhc2VkIG9uIGhvdyBm YXIgd2UgYXJlIHBhc3QKLQkgKiBNVUxUSVhBQ1RfTUVNQkVSX1NBRkVfVEhSRVNIT0xELgotCSAq LwotCWZyYWN0aW9uID0gKGRvdWJsZSkgKG1lbWJlcnMgLSBNVUxUSVhBQ1RfTUVNQkVSX1NBRkVf VEhSRVNIT0xEKTsKLQlmcmFjdGlvbiAvPSAoZG91YmxlKSAoTVVMVElYQUNUX01FTUJFUl9EQU5H RVJfVEhSRVNIT0xEIC0gTVVMVElYQUNUX01FTUJFUl9TQUZFX1RIUkVTSE9MRCk7Ci0KLQl2aWN0 aW1fbXVsdGl4YWN0cyA9IG11bHRpeGFjdHMgKiBmcmFjdGlvbjsKLQotCS8qIGZyYWN0aW9uIGNv dWxkIGJlID4gMS4wLCBidXQgbG93ZXN0IHBvc3NpYmxlIGZyZWV6ZSBhZ2UgaXMgemVybyAqLwot CWlmICh2aWN0aW1fbXVsdGl4YWN0cyA+IG11bHRpeGFjdHMpCi0JCXJldHVybiAwOwotCXJlc3Vs dCA9IG11bHRpeGFjdHMgLSB2aWN0aW1fbXVsdGl4YWN0czsKLQotCS8qCi0JICogQ2xhbXAgdG8g YXV0b3ZhY3V1bV9tdWx0aXhhY3RfZnJlZXplX21heF9hZ2UsIHNvIHRoYXQgd2UgbmV2ZXIgbWFr ZQotCSAqIGF1dG92YWN1dW0gbGVzcyBhZ2dyZXNzaXZlIHRoYW4gaXQgd291bGQgb3RoZXJ3aXNl IGJlLgotCSAqLwotCXJldHVybiBNaW4ocmVzdWx0LCBhdXRvdmFjdXVtX211bHRpeGFjdF9mcmVl emVfbWF4X2FnZSk7Ci19Ci0KIHR5cGVkZWYgc3RydWN0IG14dHJ1bmNpbmZvCiB7CiAJaW50NjQJ CWVhcmxpZXN0RXhpc3RpbmdQYWdlOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMv dmFjdXVtLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy92YWN1dW0uYwppbmRleCAzM2EzM2JmNmIx Li4wZmNmYzA4YTQ0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy92YWN1dW0uYwor KysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy92YWN1dW0uYwpAQCAtMTE1NCw3ICsxMTU0LDcgQEAg dmFjdXVtX2dldF9jdXRvZmZzKFJlbGF0aW9uIHJlbCwgY29uc3QgVmFjdXVtUGFyYW1zICpwYXJh bXMsCiAJICogbm9ybWFsbHkgYXV0b3ZhY3V1bV9tdWx0aXhhY3RfZnJlZXplX21heF9hZ2UsIGJ1 dCBtYXkgYmUgbGVzcyBpZiB3ZSBhcmUKIAkgKiBzaG9ydCBvZiBtdWx0aXhhY3QgbWVtYmVyIHNw YWNlLgogCSAqLwotCWVmZmVjdGl2ZV9tdWx0aXhhY3RfZnJlZXplX21heF9hZ2UgPSBNdWx0aVhh Y3RNZW1iZXJGcmVlemVUaHJlc2hvbGQoKTsKKwllZmZlY3RpdmVfbXVsdGl4YWN0X2ZyZWV6ZV9t YXhfYWdlID0gYXV0b3ZhY3V1bV9tdWx0aXhhY3RfZnJlZXplX21heF9hZ2U7CiAKIAkvKgogCSAq IEFsbW9zdCByZWFkeSB0byBzZXQgZnJlZXplIG91dHB1dCBwYXJhbWV0ZXJzOyBjaGVjayBpZiBP bGRlc3RYbWluIG9yCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2F1dG92YWN1 dW0uYyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvYXV0b3ZhY3V1bS5jCmluZGV4IDRkNGExYTMx OTcuLjI5YWEyM2MxYTQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvYXV0b3Zh Y3V1bS5jCisrKyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvYXV0b3ZhY3V1bS5jCkBAIC0xMTQx LDcgKzExNDEsNyBAQCBkb19zdGFydF93b3JrZXIodm9pZCkKIAogCS8qIEFsc28gZGV0ZXJtaW5l IHRoZSBvbGRlc3QgZGF0bWlubXhpZCB3ZSB3aWxsIGNvbnNpZGVyLiAqLwogCXJlY2VudE11bHRp ID0gUmVhZE5leHRNdWx0aVhhY3RJZCgpOwotCW11bHRpRm9yY2VMaW1pdCA9IHJlY2VudE11bHRp IC0gTXVsdGlYYWN0TWVtYmVyRnJlZXplVGhyZXNob2xkKCk7CisJbXVsdGlGb3JjZUxpbWl0ID0g cmVjZW50TXVsdGkgLSBhdXRvdmFjdXVtX211bHRpeGFjdF9mcmVlemVfbWF4X2FnZTsKIAlpZiAo bXVsdGlGb3JjZUxpbWl0IDwgRmlyc3RNdWx0aVhhY3RJZCkKIAkJbXVsdGlGb3JjZUxpbWl0IC09 IEZpcnN0TXVsdGlYYWN0SWQ7CiAKQEAgLTE5MjksNyArMTkyOSw3IEBAIGRvX2F1dG92YWN1dW0o dm9pZCkKIAkgKiBub3JtYWxseSBhdXRvdmFjdXVtX211bHRpeGFjdF9mcmVlemVfbWF4X2FnZSwg YnV0IG1heSBiZSBsZXNzIGlmIHdlIGFyZQogCSAqIHNob3J0IG9mIG11bHRpeGFjdCBtZW1iZXIg c3BhY2UuCiAJICovCi0JZWZmZWN0aXZlX211bHRpeGFjdF9mcmVlemVfbWF4X2FnZSA9IE11bHRp WGFjdE1lbWJlckZyZWV6ZVRocmVzaG9sZCgpOworCWVmZmVjdGl2ZV9tdWx0aXhhY3RfZnJlZXpl X21heF9hZ2UgPSBhdXRvdmFjdXVtX211bHRpeGFjdF9mcmVlemVfbWF4X2FnZTsKIAogCS8qCiAJ ICogRmluZCB0aGUgcGdfZGF0YWJhc2UgZW50cnkgYW5kIHNlbGVjdCB0aGUgZGVmYXVsdCBmcmVl emUgYWdlcy4gV2UgdXNlCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MvbXVsdGl4YWN0 LmggYi9zcmMvaW5jbHVkZS9hY2Nlc3MvbXVsdGl4YWN0LmgKaW5kZXggYjE1MTA1MzJlZS4uNWVl NjMyZGZlNiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNzL211bHRpeGFjdC5oCisrKyBi L3NyYy9pbmNsdWRlL2FjY2Vzcy9tdWx0aXhhY3QuaApAQCAtMTQzLDcgKzE0Myw2IEBAIGV4dGVy biB2b2lkIE11bHRpWGFjdFNldE5leHRNWGFjdChNdWx0aVhhY3RJZCBuZXh0TXVsdGksCiBleHRl cm4gdm9pZCBNdWx0aVhhY3RBZHZhbmNlTmV4dE1YYWN0KE11bHRpWGFjdElkIG1pbk11bHRpLAog CQkJCQkJCQkJICBNdWx0aVhhY3RPZmZzZXQgbWluTXVsdGlPZmZzZXQpOwogZXh0ZXJuIHZvaWQg TXVsdGlYYWN0QWR2YW5jZU9sZGVzdChNdWx0aVhhY3RJZCBvbGRlc3RNdWx0aSwgT2lkIG9sZGVz dE11bHRpREIpOwotZXh0ZXJuIGludAlNdWx0aVhhY3RNZW1iZXJGcmVlemVUaHJlc2hvbGQodm9p ZCk7CiAKIGV4dGVybiB2b2lkIG11bHRpeGFjdF90d29waGFzZV9yZWNvdmVyKFRyYW5zYWN0aW9u SWQgeGlkLCB1aW50MTYgaW5mbywKIAkJCQkJCQkJCSAgIHZvaWQgKnJlY2RhdGEsIHVpbnQzMiBs ZW4pOwotLSAKMi40My4wCgo= --0000000000004764a606361f94b1 Content-Type: application/octet-stream; name="v15-0002-Use-64-bit-multixact-offsets.patch" Content-Disposition: attachment; filename="v15-0002-Use-64-bit-multixact-offsets.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mb6nsi0q1 RnJvbSA0ZWM0NjM5ZmUzNjM3MjUzZjgyYTc5NTc2YTg5YTJmZTNiZDQ4YTQ4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXhpbSBPcmxvdiA8bS5vcmxvdkBwb3N0Z3Jlc3Byby5ydT4K RGF0ZTogV2VkLCA2IE1hciAyMDI0IDExOjExOjMzICswMzAwClN1YmplY3Q6IFtQQVRDSCB2MTUg Mi83XSBVc2UgNjQtYml0IG11bHRpeGFjdCBvZmZzZXRzLgoKQXV0aG9yOiBNYXhpbSBPcmxvdiA8 b3Jsb3ZtZ0BnbWFpbC5jb20+Ci0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vbXVsdGl4 YWN0LmMgfCAxNzAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogc3JjL2Jpbi9wZ19yZXNldHdh bC9wZ19yZXNldHdhbC5jICAgICAgfCAgIDIgKy0KIHNyYy9iaW4vcGdfcmVzZXR3YWwvdC8wMDFf YmFzaWMucGwgICAgIHwgICAyICstCiBzcmMvaW5jbHVkZS9hY2Nlc3MvbXVsdGl4YWN0LmggICAg ICAgICB8ICAgMiArLQogc3JjL2luY2x1ZGUvYy5oICAgICAgICAgICAgICAgICAgICAgICAgfCAg IDIgKy0KIDUgZmlsZXMgY2hhbmdlZCwgMTAgaW5zZXJ0aW9ucygrKSwgMTY4IGRlbGV0aW9ucygt KQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL211bHRpeGFjdC5jIGIv c3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vbXVsdGl4YWN0LmMKaW5kZXggZDRiNzBjMWMxZi4u OThlYTE2OTBiNSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vbXVsdGl4 YWN0LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vbXVsdGl4YWN0LmMKQEAgLTk2 LDE0ICs5Niw2IEBACiAvKgogICogRGVmaW5lcyBmb3IgTXVsdGlYYWN0T2Zmc2V0IHBhZ2Ugc2l6 ZXMuICBBIHBhZ2UgaXMgdGhlIHNhbWUgQkxDS1NaIGFzIGlzCiAgKiB1c2VkIGV2ZXJ5d2hlcmUg ZWxzZSBpbiBQb3N0Z3Jlcy4KLSAqCi0gKiBOb3RlOiBiZWNhdXNlIE11bHRpWGFjdE9mZnNldHMg YXJlIDMyIGJpdHMgYW5kIHdyYXAgYXJvdW5kIGF0IDB4RkZGRkZGRkYsCi0gKiBNdWx0aVhhY3Qg cGFnZSBudW1iZXJpbmcgYWxzbyB3cmFwcyBhcm91bmQgYXQKLSAqIDB4RkZGRkZGRkYvTVVMVElY QUNUX09GRlNFVFNfUEVSX1BBR0UsIGFuZCBzZWdtZW50IG51bWJlcmluZyBhdAotICogMHhGRkZG RkZGRi9NVUxUSVhBQ1RfT0ZGU0VUU19QRVJfUEFHRS9TTFJVX1BBR0VTX1BFUl9TRUdNRU5ULiAg V2UgbmVlZAotICogdGFrZSBubyBleHBsaWNpdCBub3RpY2Ugb2YgdGhhdCBmYWN0IGluIHRoaXMg bW9kdWxlLCBleGNlcHQgd2hlbiBjb21wYXJpbmcKLSAqIHNlZ21lbnQgYW5kIHBhZ2UgbnVtYmVy cyBpbiBUcnVuY2F0ZU11bHRpWGFjdCAoc2VlCi0gKiBNdWx0aVhhY3RPZmZzZXRQYWdlUHJlY2Vk ZXMpLgogICovCiAKIC8qIFdlIG5lZWQgZm91ciBieXRlcyBwZXIgb2Zmc2V0ICovCkBAIC0yNzIs OSArMjY0LDYgQEAgdHlwZWRlZiBzdHJ1Y3QgTXVsdGlYYWN0U3RhdGVEYXRhCiAJTXVsdGlYYWN0 SWQgbXVsdGlTdG9wTGltaXQ7CiAJTXVsdGlYYWN0SWQgbXVsdGlXcmFwTGltaXQ7CiAKLQkvKiBz dXBwb3J0IGZvciBtZW1iZXJzIGFudGktd3JhcGFyb3VuZCBtZWFzdXJlcyAqLwotCU11bHRpWGFj dE9mZnNldCBvZmZzZXRTdG9wTGltaXQ7CS8qIGtub3duIGlmIG9sZGVzdE9mZnNldEtub3duICov Ci0KIAkvKgogCSAqIFRoaXMgaXMgdXNlZCB0byBzbGVlcCB1bnRpbCBhIG11bHRpeGFjdCBvZmZz ZXQgaXMgd3JpdHRlbiB3aGVuIHdlIHdhbnQKIAkgKiB0byBjcmVhdGUgdGhlIG5leHQgb25lLgpA QCAtNDA5LDggKzM5OCw2IEBAIHN0YXRpYyBib29sIE11bHRpWGFjdE9mZnNldFByZWNlZGVzKE11 bHRpWGFjdE9mZnNldCBvZmZzZXQxLAogCQkJCQkJCQkJTXVsdGlYYWN0T2Zmc2V0IG9mZnNldDIp Owogc3RhdGljIHZvaWQgRXh0ZW5kTXVsdGlYYWN0T2Zmc2V0KE11bHRpWGFjdElkIG11bHRpKTsK IHN0YXRpYyB2b2lkIEV4dGVuZE11bHRpWGFjdE1lbWJlcihNdWx0aVhhY3RPZmZzZXQgb2Zmc2V0 LCBpbnQgbm1lbWJlcnMpOwotc3RhdGljIGJvb2wgTXVsdGlYYWN0T2Zmc2V0V291bGRXcmFwKE11 bHRpWGFjdE9mZnNldCBib3VuZGFyeSwKLQkJCQkJCQkJCSBNdWx0aVhhY3RPZmZzZXQgc3RhcnQs IHVpbnQzMiBkaXN0YW5jZSk7CiBzdGF0aWMgYm9vbCBTZXRPZmZzZXRWYWN1dW1MaW1pdChib29s IGlzX3N0YXJ0dXApOwogc3RhdGljIGJvb2wgZmluZF9tdWx0aXhhY3Rfc3RhcnQoTXVsdGlYYWN0 SWQgbXVsdGksIE11bHRpWGFjdE9mZnNldCAqcmVzdWx0KTsKIHN0YXRpYyB2b2lkIFdyaXRlTVpl cm9QYWdlWGxvZ1JlYyhpbnQ2NCBwYWdlbm8sIHVpbnQ4IGluZm8pOwpAQCAtMTE2NCw3OCArMTE1 MSw2IEBAIEdldE5ld011bHRpWGFjdElkKGludCBubWVtYmVycywgTXVsdGlYYWN0T2Zmc2V0ICpv ZmZzZXQpCiAJZWxzZQogCQkqb2Zmc2V0ID0gbmV4dE9mZnNldDsKIAotCS8qLS0tLS0tLS0tLQot CSAqIFByb3RlY3QgYWdhaW5zdCBvdmVycnVuIG9mIHRoZSBtZW1iZXJzIHNwYWNlIGFzIHdlbGws IHdpdGggdGhlCi0JICogZm9sbG93aW5nIHJ1bGVzOgotCSAqCi0JICogSWYgd2UncmUgcGFzdCBv ZmZzZXRTdG9wTGltaXQsIHJlZnVzZSB0byBnZW5lcmF0ZSBtb3JlIG11bHRpcy4KLQkgKiBJZiB3 ZSdyZSBjbG9zZSB0byBvZmZzZXRTdG9wTGltaXQsIGVtaXQgYSB3YXJuaW5nLgotCSAqCi0JICog QXJiaXRyYXJpbHksIHdlIHN0YXJ0IGVtaXR0aW5nIHdhcm5pbmdzIHdoZW4gd2UncmUgMjAgc2Vn bWVudHMgb3IgbGVzcwotCSAqIGZyb20gb2Zmc2V0U3RvcExpbWl0LgotCSAqCi0JICogTm90ZSB3 ZSBoYXZlbid0IHVwZGF0ZWQgdGhlIHNoYXJlZCBzdGF0ZSB5ZXQsIHNvIGlmIHdlIGZhaWwgYXQg dGhpcwotCSAqIHBvaW50LCB0aGUgbXVsdGl4YWN0IElEIHdlIGdyYWJiZWQgY2FuIHN0aWxsIGJl IHVzZWQgYnkgdGhlIG5leHQgZ3V5LgotCSAqCi0JICogTm90ZSB0aGF0IHRoZXJlIGlzIG5vIHBv aW50IGluIGZvcmNpbmcgYXV0b3ZhY3V1bSBydW5zIGhlcmU6IHRoZQotCSAqIG11bHRpeGFjdCBm cmVlemUgc2V0dGluZ3Mgd291bGQgaGF2ZSB0byBiZSByZWR1Y2VkIGZvciB0aGF0IHRvIGhhdmUg YW55Ci0JICogZWZmZWN0LgotCSAqLS0tLS0tLS0tLQotCSAqLwotI2RlZmluZSBPRkZTRVRfV0FS Tl9TRUdNRU5UUwkyMAotCWlmIChNdWx0aVhhY3RTdGF0ZS0+b2xkZXN0T2Zmc2V0S25vd24gJiYK LQkJTXVsdGlYYWN0T2Zmc2V0V291bGRXcmFwKE11bHRpWGFjdFN0YXRlLT5vZmZzZXRTdG9wTGlt aXQsIG5leHRPZmZzZXQsCi0JCQkJCQkJCSBubWVtYmVycykpCi0JewotCQkvKiBzZWUgY29tbWVu dCBpbiB0aGUgY29ycmVzcG9uZGluZyBvZmZzZXRzIHdyYXBhcm91bmQgY2FzZSAqLwotCQlTZW5k UG9zdG1hc3RlclNpZ25hbChQTVNJR05BTF9TVEFSVF9BVVRPVkFDX0xBVU5DSEVSKTsKLQotCQll cmVwb3J0KEVSUk9SLAotCQkJCShlcnJjb2RlKEVSUkNPREVfUFJPR1JBTV9MSU1JVF9FWENFRURF RCksCi0JCQkJIGVycm1zZygibXVsdGl4YWN0IFwibWVtYmVyc1wiIGxpbWl0IGV4Y2VlZGVkIiks Ci0JCQkJIGVycmRldGFpbF9wbHVyYWwoIlRoaXMgY29tbWFuZCB3b3VsZCBjcmVhdGUgYSBtdWx0 aXhhY3Qgd2l0aCAldSBtZW1iZXJzLCBidXQgdGhlIHJlbWFpbmluZyBzcGFjZSBpcyBvbmx5IGVu b3VnaCBmb3IgJXUgbWVtYmVyLiIsCi0JCQkJCQkJCSAgIlRoaXMgY29tbWFuZCB3b3VsZCBjcmVh dGUgYSBtdWx0aXhhY3Qgd2l0aCAldSBtZW1iZXJzLCBidXQgdGhlIHJlbWFpbmluZyBzcGFjZSBp cyBvbmx5IGVub3VnaCBmb3IgJXUgbWVtYmVycy4iLAotCQkJCQkJCQkgIE11bHRpWGFjdFN0YXRl LT5vZmZzZXRTdG9wTGltaXQgLSBuZXh0T2Zmc2V0IC0gMSwKLQkJCQkJCQkJICBubWVtYmVycywK LQkJCQkJCQkJICBNdWx0aVhhY3RTdGF0ZS0+b2Zmc2V0U3RvcExpbWl0IC0gbmV4dE9mZnNldCAt IDEpLAotCQkJCSBlcnJoaW50KCJFeGVjdXRlIGEgZGF0YWJhc2Utd2lkZSBWQUNVVU0gaW4gZGF0 YWJhc2Ugd2l0aCBPSUQgJXUgd2l0aCByZWR1Y2VkIFwidmFjdXVtX211bHRpeGFjdF9mcmVlemVf bWluX2FnZVwiIGFuZCBcInZhY3V1bV9tdWx0aXhhY3RfZnJlZXplX3RhYmxlX2FnZVwiIHNldHRp bmdzLiIsCi0JCQkJCQkgTXVsdGlYYWN0U3RhdGUtPm9sZGVzdE11bHRpWGFjdERCKSkpOwotCX0K LQotCS8qCi0JICogQ2hlY2sgd2hldGhlciB3ZSBzaG91bGQga2ljayBhdXRvdmFjdXVtIGludG8g YWN0aW9uLCB0byBwcmV2ZW50IG1lbWJlcnMKLQkgKiB3cmFwYXJvdW5kLiBOQiB3ZSB1c2UgYSBt dWNoIGxhcmdlciB3aW5kb3cgdG8gdHJpZ2dlciBhdXRvdmFjdXVtIHRoYW4KLQkgKiBqdXN0IHRo ZSB3YXJuaW5nIGxpbWl0LiBUaGUgd2FybmluZyBpcyBqdXN0IGEgbWVhc3VyZSBvZiBsYXN0IHJl c29ydCAtCi0JICogdGhpcyBpcyBpbiBsaW5lIHdpdGggR2V0TmV3VHJhbnNhY3Rpb25JZCdzIGJl aGF2aW91ci4KLQkgKi8KLQlpZiAoIU11bHRpWGFjdFN0YXRlLT5vbGRlc3RPZmZzZXRLbm93biB8 fAotCQkoTXVsdGlYYWN0U3RhdGUtPm5leHRPZmZzZXQgLSBNdWx0aVhhY3RTdGF0ZS0+b2xkZXN0 T2Zmc2V0Ci0JCSA+IE1VTFRJWEFDVF9NRU1CRVJfU0FGRV9USFJFU0hPTEQpKQotCXsKLQkJLyoK LQkJICogVG8gYXZvaWQgc3dhbXBpbmcgdGhlIHBvc3RtYXN0ZXIgd2l0aCBzaWduYWxzLCB3ZSBp c3N1ZSB0aGUgYXV0b3ZhYwotCQkgKiByZXF1ZXN0IG9ubHkgd2hlbiBjcm9zc2luZyBhIHNlZ21l bnQgYm91bmRhcnkuIFdpdGggZGVmYXVsdAotCQkgKiBjb21waWxhdGlvbiBzZXR0aW5ncyB0aGF0 J3Mgcm91Z2hseSBhZnRlciA1MGsgbWVtYmVycy4gIFRoaXMgc3RpbGwKLQkJICogZ2l2ZXMgcGxl bnR5IG9mIGNoYW5jZXMgYmVmb3JlIHdlIGdldCBpbnRvIHJlYWwgdHJvdWJsZS4KLQkJICovCi0J CWlmICgoTVhPZmZzZXRUb01lbWJlclBhZ2UobmV4dE9mZnNldCkgLyBTTFJVX1BBR0VTX1BFUl9T RUdNRU5UKSAhPQotCQkJKE1YT2Zmc2V0VG9NZW1iZXJQYWdlKG5leHRPZmZzZXQgKyBubWVtYmVy cykgLyBTTFJVX1BBR0VTX1BFUl9TRUdNRU5UKSkKLQkJCVNlbmRQb3N0bWFzdGVyU2lnbmFsKFBN U0lHTkFMX1NUQVJUX0FVVE9WQUNfTEFVTkNIRVIpOwotCX0KLQotCWlmIChNdWx0aVhhY3RTdGF0 ZS0+b2xkZXN0T2Zmc2V0S25vd24gJiYKLQkJTXVsdGlYYWN0T2Zmc2V0V291bGRXcmFwKE11bHRp WGFjdFN0YXRlLT5vZmZzZXRTdG9wTGltaXQsCi0JCQkJCQkJCSBuZXh0T2Zmc2V0LAotCQkJCQkJ CQkgbm1lbWJlcnMgKyBNVUxUSVhBQ1RfTUVNQkVSU19QRVJfUEFHRSAqIFNMUlVfUEFHRVNfUEVS X1NFR01FTlQgKiBPRkZTRVRfV0FSTl9TRUdNRU5UUykpCi0JCWVyZXBvcnQoV0FSTklORywKLQkJ CQkoZXJyY29kZShFUlJDT0RFX1BST0dSQU1fTElNSVRfRVhDRUVERUQpLAotCQkJCSBlcnJtc2df cGx1cmFsKCJkYXRhYmFzZSB3aXRoIE9JRCAldSBtdXN0IGJlIHZhY3V1bWVkIGJlZm9yZSAlZCBt b3JlIG11bHRpeGFjdCBtZW1iZXIgaXMgdXNlZCIsCi0JCQkJCQkJICAgImRhdGFiYXNlIHdpdGgg T0lEICV1IG11c3QgYmUgdmFjdXVtZWQgYmVmb3JlICVkIG1vcmUgbXVsdGl4YWN0IG1lbWJlcnMg YXJlIHVzZWQiLAotCQkJCQkJCSAgIE11bHRpWGFjdFN0YXRlLT5vZmZzZXRTdG9wTGltaXQgLSBu ZXh0T2Zmc2V0ICsgbm1lbWJlcnMsCi0JCQkJCQkJICAgTXVsdGlYYWN0U3RhdGUtPm9sZGVzdE11 bHRpWGFjdERCLAotCQkJCQkJCSAgIE11bHRpWGFjdFN0YXRlLT5vZmZzZXRTdG9wTGltaXQgLSBu ZXh0T2Zmc2V0ICsgbm1lbWJlcnMpLAotCQkJCSBlcnJoaW50KCJFeGVjdXRlIGEgZGF0YWJhc2Ut d2lkZSBWQUNVVU0gaW4gdGhhdCBkYXRhYmFzZSB3aXRoIHJlZHVjZWQgXCJ2YWN1dW1fbXVsdGl4 YWN0X2ZyZWV6ZV9taW5fYWdlXCIgYW5kIFwidmFjdXVtX211bHRpeGFjdF9mcmVlemVfdGFibGVf YWdlXCIgc2V0dGluZ3MuIikpKTsKLQogCUV4dGVuZE11bHRpWGFjdE1lbWJlcihuZXh0T2Zmc2V0 LCBubWVtYmVycyk7CiAKIAkvKgpAQCAtMjcyMCw4ICsyNjM1LDYgQEAgU2V0T2Zmc2V0VmFjdXVt TGltaXQoYm9vbCBpc19zdGFydHVwKQogCU11bHRpWGFjdE9mZnNldCBuZXh0T2Zmc2V0OwogCWJv b2wJCW9sZGVzdE9mZnNldEtub3duID0gZmFsc2U7CiAJYm9vbAkJcHJldk9sZGVzdE9mZnNldEtu b3duOwotCU11bHRpWGFjdE9mZnNldCBvZmZzZXRTdG9wTGltaXQgPSAwOwotCU11bHRpWGFjdE9m ZnNldCBwcmV2T2Zmc2V0U3RvcExpbWl0OwogCiAJLyoKIAkgKiBOQjogSGF2ZSB0byBwcmV2ZW50 IGNvbmN1cnJlbnQgdHJ1bmNhdGlvbiwgd2UgbWlnaHQgb3RoZXJ3aXNlIHRyeSB0bwpAQCAtMjcz Niw3ICsyNjQ5LDYgQEAgU2V0T2Zmc2V0VmFjdXVtTGltaXQoYm9vbCBpc19zdGFydHVwKQogCW5l eHRPZmZzZXQgPSBNdWx0aVhhY3RTdGF0ZS0+bmV4dE9mZnNldDsKIAlwcmV2T2xkZXN0T2Zmc2V0 S25vd24gPSBNdWx0aVhhY3RTdGF0ZS0+b2xkZXN0T2Zmc2V0S25vd247CiAJcHJldk9sZGVzdE9m ZnNldCA9IE11bHRpWGFjdFN0YXRlLT5vbGRlc3RPZmZzZXQ7Ci0JcHJldk9mZnNldFN0b3BMaW1p dCA9IE11bHRpWGFjdFN0YXRlLT5vZmZzZXRTdG9wTGltaXQ7CiAJQXNzZXJ0KE11bHRpWGFjdFN0 YXRlLT5maW5pc2hlZFN0YXJ0dXApOwogCUxXTG9ja1JlbGVhc2UoTXVsdGlYYWN0R2VuTG9jayk7 CiAKQEAgLTI3NjcsMTEgKzI2NzksNyBAQCBTZXRPZmZzZXRWYWN1dW1MaW1pdChib29sIGlzX3N0 YXJ0dXApCiAJCW9sZGVzdE9mZnNldEtub3duID0KIAkJCWZpbmRfbXVsdGl4YWN0X3N0YXJ0KG9s ZGVzdE11bHRpWGFjdElkLCAmb2xkZXN0T2Zmc2V0KTsKIAotCQlpZiAob2xkZXN0T2Zmc2V0S25v d24pCi0JCQllcmVwb3J0KERFQlVHMSwKLQkJCQkJKGVycm1zZ19pbnRlcm5hbCgib2xkZXN0IE11 bHRpWGFjdElkIG1lbWJlciBpcyBhdCBvZmZzZXQgJXUiLAotCQkJCQkJCQkJIG9sZGVzdE9mZnNl dCkpKTsKLQkJZWxzZQorCQlpZiAoIW9sZGVzdE9mZnNldEtub3duKQogCQkJZXJlcG9ydChMT0cs CiAJCQkJCShlcnJtc2coIk11bHRpWGFjdCBtZW1iZXIgd3JhcGFyb3VuZCBwcm90ZWN0aW9ucyBh cmUgZGlzYWJsZWQgYmVjYXVzZSBvbGRlc3QgY2hlY2twb2ludGVkIE11bHRpWGFjdCAldSBkb2Vz IG5vdCBleGlzdCBvbiBkaXNrIiwKIAkJCQkJCQlvbGRlc3RNdWx0aVhhY3RJZCkpKTsKQEAgLTI3 ODQsMjQgKzI2OTIsNyBAQCBTZXRPZmZzZXRWYWN1dW1MaW1pdChib29sIGlzX3N0YXJ0dXApCiAJ ICogb3ZlcnJ1biBvZiBvbGQgZGF0YSBpbiB0aGUgbWVtYmVycyBTTFJVIGFyZWEuIFdlIGNhbiBv bmx5IGRvIHNvIGlmIHRoZQogCSAqIG9sZGVzdCBvZmZzZXQgaXMga25vd24gdGhvdWdoLgogCSAq LwotCWlmIChvbGRlc3RPZmZzZXRLbm93bikKLQl7Ci0JCS8qIG1vdmUgYmFjayB0byBzdGFydCBv ZiB0aGUgY29ycmVzcG9uZGluZyBzZWdtZW50ICovCi0JCW9mZnNldFN0b3BMaW1pdCA9IG9sZGVz dE9mZnNldCAtIChvbGRlc3RPZmZzZXQgJQotCQkJCQkJCQkJCSAgKE1VTFRJWEFDVF9NRU1CRVJT X1BFUl9QQUdFICogU0xSVV9QQUdFU19QRVJfU0VHTUVOVCkpOwotCi0JCS8qIGFsd2F5cyBsZWF2 ZSBvbmUgc2VnbWVudCBiZWZvcmUgdGhlIHdyYXBhcm91bmQgcG9pbnQgKi8KLQkJb2Zmc2V0U3Rv cExpbWl0IC09IChNVUxUSVhBQ1RfTUVNQkVSU19QRVJfUEFHRSAqIFNMUlVfUEFHRVNfUEVSX1NF R01FTlQpOwotCi0JCWlmICghcHJldk9sZGVzdE9mZnNldEtub3duICYmICFpc19zdGFydHVwKQot CQkJZXJlcG9ydChMT0csCi0JCQkJCShlcnJtc2coIk11bHRpWGFjdCBtZW1iZXIgd3JhcGFyb3Vu ZCBwcm90ZWN0aW9ucyBhcmUgbm93IGVuYWJsZWQiKSkpOwotCi0JCWVyZXBvcnQoREVCVUcxLAot CQkJCShlcnJtc2dfaW50ZXJuYWwoIk11bHRpWGFjdCBtZW1iZXIgc3RvcCBsaW1pdCBpcyBub3cg JXUgYmFzZWQgb24gTXVsdGlYYWN0ICV1IiwKLQkJCQkJCQkJIG9mZnNldFN0b3BMaW1pdCwgb2xk ZXN0TXVsdGlYYWN0SWQpKSk7Ci0JfQotCWVsc2UgaWYgKHByZXZPbGRlc3RPZmZzZXRLbm93bikK KwlpZiAocHJldk9sZGVzdE9mZnNldEtub3duKQogCXsKIAkJLyoKIAkJICogSWYgd2UgZmFpbGVk IHRvIGdldCB0aGUgb2xkZXN0IG9mZnNldCB0aGlzIHRpbWUsIGJ1dCB3ZSBoYXZlIGEKQEAgLTI4 MTEsMTQgKzI3MDIsMTIgQEAgU2V0T2Zmc2V0VmFjdXVtTGltaXQoYm9vbCBpc19zdGFydHVwKQog CQkgKi8KIAkJb2xkZXN0T2Zmc2V0ID0gcHJldk9sZGVzdE9mZnNldDsKIAkJb2xkZXN0T2Zmc2V0 S25vd24gPSB0cnVlOwotCQlvZmZzZXRTdG9wTGltaXQgPSBwcmV2T2Zmc2V0U3RvcExpbWl0Owog CX0KIAogCS8qIEluc3RhbGwgdGhlIGNvbXB1dGVkIHZhbHVlcyAqLwogCUxXTG9ja0FjcXVpcmUo TXVsdGlYYWN0R2VuTG9jaywgTFdfRVhDTFVTSVZFKTsKIAlNdWx0aVhhY3RTdGF0ZS0+b2xkZXN0 T2Zmc2V0ID0gb2xkZXN0T2Zmc2V0OwogCU11bHRpWGFjdFN0YXRlLT5vbGRlc3RPZmZzZXRLbm93 biA9IG9sZGVzdE9mZnNldEtub3duOwotCU11bHRpWGFjdFN0YXRlLT5vZmZzZXRTdG9wTGltaXQg PSBvZmZzZXRTdG9wTGltaXQ7CiAJTFdMb2NrUmVsZWFzZShNdWx0aVhhY3RHZW5Mb2NrKTsKIAog CS8qCkBAIC0yODI4LDU0ICsyNzE3LDYgQEAgU2V0T2Zmc2V0VmFjdXVtTGltaXQoYm9vbCBpc19z dGFydHVwKQogCQkobmV4dE9mZnNldCAtIG9sZGVzdE9mZnNldCA+IE1VTFRJWEFDVF9NRU1CRVJf U0FGRV9USFJFU0hPTEQpOwogfQogCi0vKgotICogUmV0dXJuIHdoZXRoZXIgYWRkaW5nICJkaXN0 YW5jZSIgdG8gInN0YXJ0IiB3b3VsZCBtb3ZlIHBhc3QgImJvdW5kYXJ5Ii4KLSAqCi0gKiBXZSB1 c2UgdGhpcyB0byBkZXRlcm1pbmUgd2hldGhlciB0aGUgYWRkaXRpb24gaXMgIndyYXBwaW5nIGFy b3VuZCIgdGhlCi0gKiBib3VuZGFyeSBwb2ludCwgaGVuY2UgdGhlIG5hbWUuICBUaGUgcmVhc29u IHdlIGRvbid0IHdhbnQgdG8gdXNlIHRoZSByZWd1bGFyCi0gKiAyXjMxLW1vZHVsbyBhcml0aG1l dGljIGhlcmUgaXMgdGhhdCB3ZSB3YW50IHRvIGJlIGFibGUgdG8gdXNlIHRoZSB3aG9sZSBvZgot ICogdGhlIDJeMzItMSBzcGFjZSBoZXJlLCBhbGxvd2luZyBmb3IgbW9yZSBtdWx0aXhhY3RzIHRo YW4gd291bGQgZml0Ci0gKiBvdGhlcndpc2UuCi0gKi8KLXN0YXRpYyBib29sCi1NdWx0aVhhY3RP ZmZzZXRXb3VsZFdyYXAoTXVsdGlYYWN0T2Zmc2V0IGJvdW5kYXJ5LCBNdWx0aVhhY3RPZmZzZXQg c3RhcnQsCi0JCQkJCQkgdWludDMyIGRpc3RhbmNlKQotewotCU11bHRpWGFjdE9mZnNldCBmaW5p c2g7Ci0KLQkvKgotCSAqIE5vdGUgdGhhdCBvZmZzZXQgbnVtYmVyIDAgaXMgbm90IHVzZWQgKHNl ZSBHZXRNdWx0aVhhY3RJZE1lbWJlcnMpLCBzbwotCSAqIGlmIHRoZSBhZGRpdGlvbiB3cmFwcyBh cm91bmQgdGhlIFVJTlRfTUFYIGJvdW5kYXJ5LCBza2lwIHRoYXQgdmFsdWUuCi0JICovCi0JZmlu aXNoID0gc3RhcnQgKyBkaXN0YW5jZTsKLQlpZiAoZmluaXNoIDwgc3RhcnQpCi0JCWZpbmlzaCsr OwotCi0JLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCSAqIFdoZW4gdGhlIGJvdW5kYXJ5IGlzIG51bWVyaWNh bGx5IGdyZWF0ZXIgdGhhbiB0aGUgc3RhcnRpbmcgcG9pbnQsIGFueQotCSAqIHZhbHVlIG51bWVy aWNhbGx5IGJldHdlZW4gdGhlIHR3byBpcyBub3Qgd3JhcHBlZDoKLQkgKgotCSAqCTwtLS0tUy0t LS1CLS0tLT4KLQkgKglbLS0tKQkJCSA9IEYgd3JhcHBlZCBwYXN0IEIgKGFuZCBVSU5UX01BWCkK LQkgKgkJIFstLS0pCQkgPSBGIG5vdCB3cmFwcGVkCi0JICoJCQkgIFstLS0tXSA9IEYgd3JhcHBl ZCBwYXN0IEIKLQkgKgotCSAqIFdoZW4gdGhlIGJvdW5kYXJ5IGlzIG51bWVyaWNhbGx5IGxlc3Mg dGhhbiB0aGUgc3RhcnRpbmcgcG9pbnQgKGkuZS4gdGhlCi0JICogVUlOVF9NQVggd3JhcGFyb3Vu ZCBvY2N1cnMgc29tZXdoZXJlIGluIGJldHdlZW4pIHRoZW4gYWxsIHZhbHVlcyBpbgotCSAqIGJl dHdlZW4gYXJlIHdyYXBwZWQ6Ci0JICoKLQkgKgk8LS0tLUItLS0tUy0tLS0+Ci0JICoJWy0tLSkJ CQkgPSBGIG5vdCB3cmFwcGVkIHBhc3QgQiAoYnV0IHdyYXBwZWQgcGFzdCBVSU5UX01BWCkKLQkg KgkJIFstLS0pCQkgPSBGIHdyYXBwZWQgcGFzdCBCIChhbmQgVUlOVF9NQVgpCi0JICoJCQkgIFst LS0tXSA9IEYgbm90IHdyYXBwZWQKLQkgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0JICovCi0JaWYgKHN0YXJ0 IDwgYm91bmRhcnkpCi0JCXJldHVybiBmaW5pc2ggPj0gYm91bmRhcnkgfHwgZmluaXNoIDwgc3Rh cnQ7Ci0JZWxzZQotCQlyZXR1cm4gZmluaXNoID49IGJvdW5kYXJ5ICYmIGZpbmlzaCA8IHN0YXJ0 OwotfQotCiAvKgogICogRmluZCB0aGUgc3RhcnRpbmcgb2Zmc2V0IG9mIHRoZSBnaXZlbiBNdWx0 aVhhY3RJZC4KICAqCkBAIC0yOTk3LDggKzI4MzgsOSBAQCBNdWx0aVhhY3RNZW1iZXJGcmVlemVU aHJlc2hvbGQodm9pZCkKIAkgKiB3ZSB0cnkgdG8gZWxpbWluYXRlIGZyb20gdGhlIHN5c3RlbSBp cyBiYXNlZCBvbiBob3cgZmFyIHdlIGFyZSBwYXN0CiAJICogTVVMVElYQUNUX01FTUJFUl9TQUZF X1RIUkVTSE9MRC4KIAkgKi8KLQlmcmFjdGlvbiA9IChkb3VibGUpIChtZW1iZXJzIC0gTVVMVElY QUNUX01FTUJFUl9TQUZFX1RIUkVTSE9MRCkgLwotCQkoTVVMVElYQUNUX01FTUJFUl9EQU5HRVJf VEhSRVNIT0xEIC0gTVVMVElYQUNUX01FTUJFUl9TQUZFX1RIUkVTSE9MRCk7CisJZnJhY3Rpb24g PSAoZG91YmxlKSAobWVtYmVycyAtIE1VTFRJWEFDVF9NRU1CRVJfU0FGRV9USFJFU0hPTEQpOwor CWZyYWN0aW9uIC89IChkb3VibGUpIChNVUxUSVhBQ1RfTUVNQkVSX0RBTkdFUl9USFJFU0hPTEQg LSBNVUxUSVhBQ1RfTUVNQkVSX1NBRkVfVEhSRVNIT0xEKTsKKwogCXZpY3RpbV9tdWx0aXhhY3Rz ID0gbXVsdGl4YWN0cyAqIGZyYWN0aW9uOwogCiAJLyogZnJhY3Rpb24gY291bGQgYmUgPiAxLjAs IGJ1dCBsb3dlc3QgcG9zc2libGUgZnJlZXplIGFnZSBpcyB6ZXJvICovCkBAIC0zMzQzLDcgKzMx ODUsNyBAQCBNdWx0aVhhY3RJZFByZWNlZGVzT3JFcXVhbHMoTXVsdGlYYWN0SWQgbXVsdGkxLCBN dWx0aVhhY3RJZCBtdWx0aTIpCiBzdGF0aWMgYm9vbAogTXVsdGlYYWN0T2Zmc2V0UHJlY2VkZXMo TXVsdGlYYWN0T2Zmc2V0IG9mZnNldDEsIE11bHRpWGFjdE9mZnNldCBvZmZzZXQyKQogewotCWlu dDMyCQlkaWZmID0gKGludDMyKSAob2Zmc2V0MSAtIG9mZnNldDIpOworCWludDY0CQlkaWZmID0g KGludDY0KSAob2Zmc2V0MSAtIG9mZnNldDIpOwogCiAJcmV0dXJuIChkaWZmIDwgMCk7CiB9CmRp ZmYgLS1naXQgYS9zcmMvYmluL3BnX3Jlc2V0d2FsL3BnX3Jlc2V0d2FsLmMgYi9zcmMvYmluL3Bn X3Jlc2V0d2FsL3BnX3Jlc2V0d2FsLmMKaW5kZXggZGYyZDhmMzdjZi4uOTI1MjE2MDI4MCAxMDA2 NDQKLS0tIGEvc3JjL2Jpbi9wZ19yZXNldHdhbC9wZ19yZXNldHdhbC5jCisrKyBiL3NyYy9iaW4v cGdfcmVzZXR3YWwvcGdfcmVzZXR3YWwuYwpAQCAtMjY2LDcgKzI2Niw3IEBAIG1haW4oaW50IGFy Z2MsIGNoYXIgKmFyZ3ZbXSkKIAogCQkJY2FzZSAnTyc6CiAJCQkJZXJybm8gPSAwOwotCQkJCXNl dF9teG9mZiA9IHN0cnRvdWwob3B0YXJnLCAmZW5kcHRyLCAwKTsKKwkJCQlzZXRfbXhvZmYgPSBz dHJ0b3U2NChvcHRhcmcsICZlbmRwdHIsIDApOwogCQkJCWlmIChlbmRwdHIgPT0gb3B0YXJnIHx8 ICplbmRwdHIgIT0gJ1wwJyB8fCBlcnJubyAhPSAwKQogCQkJCXsKIAkJCQkJcGdfbG9nX2Vycm9y KCJpbnZhbGlkIGFyZ3VtZW50IGZvciBvcHRpb24gJXMiLCAiLU8iKTsKZGlmZiAtLWdpdCBhL3Ny Yy9iaW4vcGdfcmVzZXR3YWwvdC8wMDFfYmFzaWMucGwgYi9zcmMvYmluL3BnX3Jlc2V0d2FsL3Qv MDAxX2Jhc2ljLnBsCmluZGV4IGQ2YmJiZDBjZWQuLmNjODllMDc2NGEgMTAwNjQ0Ci0tLSBhL3Ny Yy9iaW4vcGdfcmVzZXR3YWwvdC8wMDFfYmFzaWMucGwKKysrIGIvc3JjL2Jpbi9wZ19yZXNldHdh bC90LzAwMV9iYXNpYy5wbApAQCAtMjEzLDcgKzIxMyw3IEBAIHB1c2ggQGNtZCwKICAgc3ByaW50 ZigiJWQsJWQiLCBoZXgoJGZpbGVzWzBdKSA9PSAwID8gMyA6IGhleCgkZmlsZXNbMF0pLCBoZXgo JGZpbGVzWy0xXSkpOwogCiBAZmlsZXMgPSBnZXRfc2xydV9maWxlcygncGdfbXVsdGl4YWN0L29m ZnNldHMnKTsKLSRtdWx0ID0gMzIgKiAkYmxja3N6IC8gNDsKKyRtdWx0ID0gMzIgKiAkYmxja3N6 IC8gODsKICMgLS1tdWx0aXhhY3QtaWRzIGFyZ3VtZW50IGlzICJuZXcsb2xkIgogcHVzaCBAY21k LAogICAnLS1tdWx0aXhhY3QtaWRzJyA9PiBzcHJpbnRmKCIlZCwlZCIsCmRpZmYgLS1naXQgYS9z cmMvaW5jbHVkZS9hY2Nlc3MvbXVsdGl4YWN0LmggYi9zcmMvaW5jbHVkZS9hY2Nlc3MvbXVsdGl4 YWN0LmgKaW5kZXggNGU2YjBlZWMyZi4uYjE1MTA1MzJlZSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1 ZGUvYWNjZXNzL211bHRpeGFjdC5oCisrKyBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9tdWx0aXhhY3Qu aApAQCAtMjcsNyArMjcsNyBAQAogCiAjZGVmaW5lIE11bHRpWGFjdElkSXNWYWxpZChtdWx0aSkg KChtdWx0aSkgIT0gSW52YWxpZE11bHRpWGFjdElkKQogCi0jZGVmaW5lIE1heE11bHRpWGFjdE9m ZnNldAkoKE11bHRpWGFjdE9mZnNldCkgMHhGRkZGRkZGRikKKyNkZWZpbmUgTWF4TXVsdGlYYWN0 T2Zmc2V0CVVJTlQ2NENPTlNUKDB4RkZGRkZGRkZGRkZGRkZGRikKIAogLyoKICAqIFBvc3NpYmxl IG11bHRpeGFjdCBsb2NrIG1vZGVzICgic3RhdHVzIikuICBUaGUgZmlyc3QgZm91ciBtb2RlcyBh cmUgZm9yCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jLmggYi9zcmMvaW5jbHVkZS9jLmgKaW5k ZXggOGNkYzE2YTBmNC4uNDViYTRjNTIzZiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvYy5oCisr KyBiL3NyYy9pbmNsdWRlL2MuaApAQCAtNjMyLDcgKzYzMiw3IEBAIHR5cGVkZWYgdWludDMyIFN1 YlRyYW5zYWN0aW9uSWQ7CiAvKiBNdWx0aVhhY3RJZCBtdXN0IGJlIGVxdWl2YWxlbnQgdG8gVHJh bnNhY3Rpb25JZCwgdG8gZml0IGluIHRfeG1heCAqLwogdHlwZWRlZiBUcmFuc2FjdGlvbklkIE11 bHRpWGFjdElkOwogCi10eXBlZGVmIHVpbnQzMiBNdWx0aVhhY3RPZmZzZXQ7Cit0eXBlZGVmIHVp bnQ2NCBNdWx0aVhhY3RPZmZzZXQ7CiAKIHR5cGVkZWYgdWludDMyIENvbW1hbmRJZDsKIAotLSAK Mi40My4wCgo= --0000000000004764a606361f94b1 Content-Type: application/octet-stream; name="v15-0001-Use-64-bit-format-output-for-multixact-offsets.patch" Content-Disposition: attachment; filename="v15-0001-Use-64-bit-format-output-for-multixact-offsets.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mb6nsi040 RnJvbSAzNzU0ZWYzNjE1MjYwZmVhNzQ2OTEwMjEyN2NiNDFhYTg3NzJiYzA4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXhpbSBPcmxvdiA8b3Jsb3ZtZ0BnbWFpbC5jb20+CkRhdGU6 IFdlZCwgNyBBdWcgMjAyNCAxNjozNToyMiArMDMwMApTdWJqZWN0OiBbUEFUQ0ggdjE1IDEvN10g VXNlIDY0LWJpdCBmb3JtYXQgb3V0cHV0IGZvciBtdWx0aXhhY3Qgb2Zmc2V0cwoKQXV0aG9yOiBN YXhpbSBPcmxvdiA8b3Jsb3ZtZ0BnbWFpbC5jb20+Ci0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL3Jt Z3JkZXNjL214YWN0ZGVzYy5jICAgfCAgNCArKy0tCiBzcmMvYmFja2VuZC9hY2Nlc3Mvcm1ncmRl c2MveGxvZ2Rlc2MuYyAgICB8ICAyICstCiBzcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS9tdWx0 aXhhY3QuYyAgICB8IDEzICsrKysrKystLS0tLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2Ft L3hsb2dyZWNvdmVyeS5jIHwgIDIgKy0KIHNyYy9iaW4vcGdfY29udHJvbGRhdGEvcGdfY29udHJv bGRhdGEuYyAgIHwgIDIgKy0KIHNyYy9iaW4vcGdfcmVzZXR3YWwvcGdfcmVzZXR3YWwuYyAgICAg ICAgIHwgIDQgKystLQogNiBmaWxlcyBjaGFuZ2VkLCAxNCBpbnNlcnRpb25zKCspLCAxMyBkZWxl dGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3Mvcm1ncmRlc2MvbXhhY3Rk ZXNjLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3Mvcm1ncmRlc2MvbXhhY3RkZXNjLmMKaW5kZXggM2Nh MDU4MmRiMy4uMDUyZGQwYTRjZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL3JtZ3Jk ZXNjL214YWN0ZGVzYy5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9ybWdyZGVzYy9teGFjdGRl c2MuYwpAQCAtNjUsNyArNjUsNyBAQCBtdWx0aXhhY3RfZGVzYyhTdHJpbmdJbmZvIGJ1ZiwgWExv Z1JlYWRlclN0YXRlICpyZWNvcmQpCiAJCXhsX211bHRpeGFjdF9jcmVhdGUgKnhscmVjID0gKHhs X211bHRpeGFjdF9jcmVhdGUgKikgcmVjOwogCQlpbnQJCQlpOwogCi0JCWFwcGVuZFN0cmluZ0lu Zm8oYnVmLCAiJXUgb2Zmc2V0ICV1IG5tZW1iZXJzICVkOiAiLCB4bHJlYy0+bWlkLAorCQlhcHBl bmRTdHJpbmdJbmZvKGJ1ZiwgIiV1IG9mZnNldCAlIiBQUkl1NjQgIiBubWVtYmVycyAlZDogIiwg eGxyZWMtPm1pZCwKIAkJCQkJCSB4bHJlYy0+bW9mZiwgeGxyZWMtPm5tZW1iZXJzKTsKIAkJZm9y IChpID0gMDsgaSA8IHhscmVjLT5ubWVtYmVyczsgaSsrKQogCQkJb3V0X21lbWJlcihidWYsICZ4 bHJlYy0+bWVtYmVyc1tpXSk7CkBAIC03NCw3ICs3NCw3IEBAIG11bHRpeGFjdF9kZXNjKFN0cmlu Z0luZm8gYnVmLCBYTG9nUmVhZGVyU3RhdGUgKnJlY29yZCkKIAl7CiAJCXhsX211bHRpeGFjdF90 cnVuY2F0ZSAqeGxyZWMgPSAoeGxfbXVsdGl4YWN0X3RydW5jYXRlICopIHJlYzsKIAotCQlhcHBl bmRTdHJpbmdJbmZvKGJ1ZiwgIm9mZnNldHMgWyV1LCAldSksIG1lbWJlcnMgWyV1LCAldSkiLAor CQlhcHBlbmRTdHJpbmdJbmZvKGJ1ZiwgIm9mZnNldHMgWyV1LCAldSksIG1lbWJlcnMgWyUiIFBS SXU2NCAiLCAlIiBQUkl1NjQgIikiLAogCQkJCQkJIHhscmVjLT5zdGFydFRydW5jT2ZmLCB4bHJl Yy0+ZW5kVHJ1bmNPZmYsCiAJCQkJCQkgeGxyZWMtPnN0YXJ0VHJ1bmNNZW1iLCB4bHJlYy0+ZW5k VHJ1bmNNZW1iKTsKIAl9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3Mvcm1ncmRlc2Mv eGxvZ2Rlc2MuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9ybWdyZGVzYy94bG9nZGVzYy5jCmluZGV4 IDU4MDQwZjI4NjUuLjNjNDJhYTNlMzkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9y bWdyZGVzYy94bG9nZGVzYy5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9ybWdyZGVzYy94bG9n ZGVzYy5jCkBAIC02Niw3ICs2Niw3IEBAIHhsb2dfZGVzYyhTdHJpbmdJbmZvIGJ1ZiwgWExvZ1Jl YWRlclN0YXRlICpyZWNvcmQpCiAJCUNoZWNrUG9pbnQgKmNoZWNrcG9pbnQgPSAoQ2hlY2tQb2lu dCAqKSByZWM7CiAKIAkJYXBwZW5kU3RyaW5nSW5mbyhidWYsICJyZWRvICVYLyVYOyAiCi0JCQkJ CQkgInRsaSAldTsgcHJldiB0bGkgJXU7IGZwdyAlczsgd2FsX2xldmVsICVzOyB4aWQgJXU6JXU7 IG9pZCAldTsgbXVsdGkgJXU7IG9mZnNldCAldTsgIgorCQkJCQkJICJ0bGkgJXU7IHByZXYgdGxp ICV1OyBmcHcgJXM7IHdhbF9sZXZlbCAlczsgeGlkICV1OiV1OyBvaWQgJXU7IG11bHRpICV1OyBv ZmZzZXQgJSIgUFJJdTY0ICI7ICIKIAkJCQkJCSAib2xkZXN0IHhpZCAldSBpbiBEQiAldTsgb2xk ZXN0IG11bHRpICV1IGluIERCICV1OyAiCiAJCQkJCQkgIm9sZGVzdC9uZXdlc3QgY29tbWl0IHRp bWVzdGFtcCB4aWQ6ICV1LyV1OyAiCiAJCQkJCQkgIm9sZGVzdCBydW5uaW5nIHhpZCAldTsgJXMi LApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vbXVsdGl4YWN0LmMgYi9z cmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS9tdWx0aXhhY3QuYwppbmRleCAzYzA2YWM0NTUzLi5k NGI3MGMxYzFmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS9tdWx0aXhh Y3QuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS9tdWx0aXhhY3QuYwpAQCAtMTI2 NCw3ICsxMjY0LDggQEAgR2V0TmV3TXVsdGlYYWN0SWQoaW50IG5tZW1iZXJzLCBNdWx0aVhhY3RP ZmZzZXQgKm9mZnNldCkKIAogCUxXTG9ja1JlbGVhc2UoTXVsdGlYYWN0R2VuTG9jayk7CiAKLQlk ZWJ1Z19lbG9nNChERUJVRzIsICJHZXROZXc6IHJldHVybmluZyAldSBvZmZzZXQgJXUiLCByZXN1 bHQsICpvZmZzZXQpOworCWRlYnVnX2Vsb2c0KERFQlVHMiwgIkdldE5ldzogcmV0dXJuaW5nICV1 IG9mZnNldCAlIiBQUkl1NjQsIHJlc3VsdCwKKwkJCQkqb2Zmc2V0KTsKIAlyZXR1cm4gcmVzdWx0 OwogfQogCkBAIC0yMjkzLDcgKzIyOTQsNyBAQCBNdWx0aVhhY3RHZXRDaGVja3B0TXVsdGkoYm9v bCBpc19zaHV0ZG93biwKIAlMV0xvY2tSZWxlYXNlKE11bHRpWGFjdEdlbkxvY2spOwogCiAJZGVi dWdfZWxvZzYoREVCVUcyLAotCQkJCSJNdWx0aVhhY3Q6IGNoZWNrcG9pbnQgaXMgbmV4dE11bHRp ICV1LCBuZXh0T2Zmc2V0ICV1LCBvbGRlc3RNdWx0aSAldSBpbiBEQiAldSIsCisJCQkJIk11bHRp WGFjdDogY2hlY2twb2ludCBpcyBuZXh0TXVsdGkgJXUsIG5leHRPZmZzZXQgJSIgUFJJdTY0ICIs IG9sZGVzdE11bHRpICV1IGluIERCICV1IiwKIAkJCQkqbmV4dE11bHRpLCAqbmV4dE11bHRpT2Zm c2V0LCAqb2xkZXN0TXVsdGksICpvbGRlc3RNdWx0aURCKTsKIH0KIApAQCAtMjMyOCw3ICsyMzI5 LDcgQEAgdm9pZAogTXVsdGlYYWN0U2V0TmV4dE1YYWN0KE11bHRpWGFjdElkIG5leHRNdWx0aSwK IAkJCQkJICBNdWx0aVhhY3RPZmZzZXQgbmV4dE11bHRpT2Zmc2V0KQogewotCWRlYnVnX2Vsb2c0 KERFQlVHMiwgIk11bHRpWGFjdDogc2V0dGluZyBuZXh0IG11bHRpIHRvICV1IG9mZnNldCAldSIs CisJZGVidWdfZWxvZzQoREVCVUcyLCAiTXVsdGlYYWN0OiBzZXR0aW5nIG5leHQgbXVsdGkgdG8g JXUgb2Zmc2V0ICUiIFBSSXU2NCwKIAkJCQluZXh0TXVsdGksIG5leHRNdWx0aU9mZnNldCk7CiAJ TFdMb2NrQWNxdWlyZShNdWx0aVhhY3RHZW5Mb2NrLCBMV19FWENMVVNJVkUpOwogCU11bHRpWGFj dFN0YXRlLT5uZXh0TVhhY3QgPSBuZXh0TXVsdGk7CkBAIC0yNTE5LDcgKzI1MjAsNyBAQCBNdWx0 aVhhY3RBZHZhbmNlTmV4dE1YYWN0KE11bHRpWGFjdElkIG1pbk11bHRpLAogCX0KIAlpZiAoTXVs dGlYYWN0T2Zmc2V0UHJlY2VkZXMoTXVsdGlYYWN0U3RhdGUtPm5leHRPZmZzZXQsIG1pbk11bHRp T2Zmc2V0KSkKIAl7Ci0JCWRlYnVnX2Vsb2czKERFQlVHMiwgIk11bHRpWGFjdDogc2V0dGluZyBu ZXh0IG9mZnNldCB0byAldSIsCisJCWRlYnVnX2Vsb2czKERFQlVHMiwgIk11bHRpWGFjdDogc2V0 dGluZyBuZXh0IG9mZnNldCB0byAlIiBQUklVNjQsCiAJCQkJCW1pbk11bHRpT2Zmc2V0KTsKIAkJ TXVsdGlYYWN0U3RhdGUtPm5leHRPZmZzZXQgPSBtaW5NdWx0aU9mZnNldDsKIAl9CkBAIC0zMjEx LDcgKzMyMTIsNyBAQCBUcnVuY2F0ZU11bHRpWGFjdChNdWx0aVhhY3RJZCBuZXdPbGRlc3RNdWx0 aSwgT2lkIG5ld09sZGVzdE11bHRpREIpCiAKIAllbG9nKERFQlVHMSwgInBlcmZvcm1pbmcgbXVs dGl4YWN0IHRydW5jYXRpb246ICIKIAkJICJvZmZzZXRzIFsldSwgJXUpLCBvZmZzZXRzIHNlZ21l bnRzIFslIiBQUkl4NjQgIiwgJSIgUFJJeDY0ICIpLCAiCi0JCSAibWVtYmVycyBbJXUsICV1KSwg bWVtYmVycyBzZWdtZW50cyBbJSIgUFJJeDY0ICIsICUiIFBSSXg2NCAiKSIsCisJCSAibWVtYmVy cyBbJSIgUFJJdTY0ICIsICUiIFBSSXU2NCAiKSwgbWVtYmVycyBzZWdtZW50cyBbJSIgUFJJeDY0 ICIsICUiIFBSSXg2NCAiKSIsCiAJCSBvbGRlc3RNdWx0aSwgbmV3T2xkZXN0TXVsdGksCiAJCSBN dWx0aVhhY3RJZFRvT2Zmc2V0U2VnbWVudChvbGRlc3RNdWx0aSksCiAJCSBNdWx0aVhhY3RJZFRv T2Zmc2V0U2VnbWVudChuZXdPbGRlc3RNdWx0aSksCkBAIC0zNDcxLDcgKzM0NzIsNyBAQCBtdWx0 aXhhY3RfcmVkbyhYTG9nUmVhZGVyU3RhdGUgKnJlY29yZCkKIAogCQllbG9nKERFQlVHMSwgInJl cGxheWluZyBtdWx0aXhhY3QgdHJ1bmNhdGlvbjogIgogCQkJICJvZmZzZXRzIFsldSwgJXUpLCBv ZmZzZXRzIHNlZ21lbnRzIFslIiBQUkl4NjQgIiwgJSIgUFJJeDY0ICIpLCAiCi0JCQkgIm1lbWJl cnMgWyV1LCAldSksIG1lbWJlcnMgc2VnbWVudHMgWyUiIFBSSXg2NCAiLCAlIiBQUkl4NjQgIiki LAorCQkJICJtZW1iZXJzIFslIiBQUkl1NjQgIiwgJSIgUFJJdTY0ICIpLCBtZW1iZXJzIHNlZ21l bnRzIFslIiBQUkl4NjQgIiwgJSIgUFJJeDY0ICIpIiwKIAkJCSB4bHJlYy5zdGFydFRydW5jT2Zm LCB4bHJlYy5lbmRUcnVuY09mZiwKIAkJCSBNdWx0aVhhY3RJZFRvT2Zmc2V0U2VnbWVudCh4bHJl Yy5zdGFydFRydW5jT2ZmKSwKIAkJCSBNdWx0aVhhY3RJZFRvT2Zmc2V0U2VnbWVudCh4bHJlYy5l bmRUcnVuY09mZiksCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9n cmVjb3ZlcnkuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2dyZWNvdmVyeS5jCmlu ZGV4IDZjZTk3OWYyZDguLjI3YjYwNTkyOTEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vz cy90cmFuc2FtL3hsb2dyZWNvdmVyeS5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2Ft L3hsb2dyZWNvdmVyeS5jCkBAIC04ODQsNyArODg0LDcgQEAgSW5pdFdhbFJlY292ZXJ5KENvbnRy b2xGaWxlRGF0YSAqQ29udHJvbEZpbGUsIGJvb2wgKndhc1NodXRkb3duX3B0ciwKIAkJCQkJCQkg VTY0RnJvbUZ1bGxUcmFuc2FjdGlvbklkKGNoZWNrUG9pbnQubmV4dFhpZCksCiAJCQkJCQkJIGNo ZWNrUG9pbnQubmV4dE9pZCkpKTsKIAllcmVwb3J0KERFQlVHMSwKLQkJCShlcnJtc2dfaW50ZXJu YWwoIm5leHQgTXVsdGlYYWN0SWQ6ICV1OyBuZXh0IE11bHRpWGFjdE9mZnNldDogJXUiLAorCQkJ KGVycm1zZ19pbnRlcm5hbCgibmV4dCBNdWx0aVhhY3RJZDogJXU7IG5leHQgTXVsdGlYYWN0T2Zm c2V0OiAlIiBQUkl1NjQsCiAJCQkJCQkJIGNoZWNrUG9pbnQubmV4dE11bHRpLCBjaGVja1BvaW50 Lm5leHRNdWx0aU9mZnNldCkpKTsKIAllcmVwb3J0KERFQlVHMSwKIAkJCShlcnJtc2dfaW50ZXJu YWwoIm9sZGVzdCB1bmZyb3plbiB0cmFuc2FjdGlvbiBJRDogJXUsIGluIGRhdGFiYXNlICV1IiwK ZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfY29udHJvbGRhdGEvcGdfY29udHJvbGRhdGEuYyBiL3Ny Yy9iaW4vcGdfY29udHJvbGRhdGEvcGdfY29udHJvbGRhdGEuYwppbmRleCA3YmI4MDFiYjg4Li5i MTk1ODA2Njk5IDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX2NvbnRyb2xkYXRhL3BnX2NvbnRyb2xk YXRhLmMKKysrIGIvc3JjL2Jpbi9wZ19jb250cm9sZGF0YS9wZ19jb250cm9sZGF0YS5jCkBAIC0y NjQsNyArMjY0LDcgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogCQkgICBDb250cm9s RmlsZS0+Y2hlY2tQb2ludENvcHkubmV4dE9pZCk7CiAJcHJpbnRmKF8oIkxhdGVzdCBjaGVja3Bv aW50J3MgTmV4dE11bHRpWGFjdElkOiAgJXVcbiIpLAogCQkgICBDb250cm9sRmlsZS0+Y2hlY2tQ b2ludENvcHkubmV4dE11bHRpKTsKLQlwcmludGYoXygiTGF0ZXN0IGNoZWNrcG9pbnQncyBOZXh0 TXVsdGlPZmZzZXQ6ICAldVxuIiksCisJcHJpbnRmKF8oIkxhdGVzdCBjaGVja3BvaW50J3MgTmV4 dE11bHRpT2Zmc2V0OiAgJSIgUFJJdTY0ICJcbiIpLAogCQkgICBDb250cm9sRmlsZS0+Y2hlY2tQ b2ludENvcHkubmV4dE11bHRpT2Zmc2V0KTsKIAlwcmludGYoXygiTGF0ZXN0IGNoZWNrcG9pbnQn cyBvbGRlc3RYSUQ6ICAgICAgICAldVxuIiksCiAJCSAgIENvbnRyb2xGaWxlLT5jaGVja1BvaW50 Q29weS5vbGRlc3RYaWQpOwpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19yZXNldHdhbC9wZ19yZXNl dHdhbC5jIGIvc3JjL2Jpbi9wZ19yZXNldHdhbC9wZ19yZXNldHdhbC5jCmluZGV4IGU4NzZmMzVm MzguLmRmMmQ4ZjM3Y2YgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfcmVzZXR3YWwvcGdfcmVzZXR3 YWwuYworKysgYi9zcmMvYmluL3BnX3Jlc2V0d2FsL3BnX3Jlc2V0d2FsLmMKQEAgLTc1OSw3ICs3 NTksNyBAQCBQcmludENvbnRyb2xWYWx1ZXMoYm9vbCBndWVzc2VkKQogCQkgICBDb250cm9sRmls ZS5jaGVja1BvaW50Q29weS5uZXh0T2lkKTsKIAlwcmludGYoXygiTGF0ZXN0IGNoZWNrcG9pbnQn cyBOZXh0TXVsdGlYYWN0SWQ6ICAldVxuIiksCiAJCSAgIENvbnRyb2xGaWxlLmNoZWNrUG9pbnRD b3B5Lm5leHRNdWx0aSk7Ci0JcHJpbnRmKF8oIkxhdGVzdCBjaGVja3BvaW50J3MgTmV4dE11bHRp T2Zmc2V0OiAgJXVcbiIpLAorCXByaW50ZihfKCJMYXRlc3QgY2hlY2twb2ludCdzIE5leHRNdWx0 aU9mZnNldDogICUiIFBSSXU2NCAiXG4iKSwKIAkJICAgQ29udHJvbEZpbGUuY2hlY2tQb2ludENv cHkubmV4dE11bHRpT2Zmc2V0KTsKIAlwcmludGYoXygiTGF0ZXN0IGNoZWNrcG9pbnQncyBvbGRl c3RYSUQ6ICAgICAgICAldVxuIiksCiAJCSAgIENvbnRyb2xGaWxlLmNoZWNrUG9pbnRDb3B5Lm9s ZGVzdFhpZCk7CkBAIC04MzMsNyArODMzLDcgQEAgUHJpbnROZXdDb250cm9sVmFsdWVzKHZvaWQp CiAKIAlpZiAoc2V0X214b2ZmICE9IC0xKQogCXsKLQkJcHJpbnRmKF8oIk5leHRNdWx0aU9mZnNl dDogICAgICAgICAgICAgICAgICAgICAgJXVcbiIpLAorCQlwcmludGYoXygiTmV4dE11bHRpT2Zm c2V0OiAgICAgICAgICAgICAgICAgICAgICAlIiBQUkl1NjQgIlxuIiksCiAJCQkgICBDb250cm9s RmlsZS5jaGVja1BvaW50Q29weS5uZXh0TXVsdGlPZmZzZXQpOwogCX0KIAotLSAKMi40My4wCgo= --0000000000004764a606361f94b1 Content-Type: text/plain; charset="US-ASCII"; name="v15-0007-TEST-bump-catver.patch.txt" Content-Disposition: attachment; filename="v15-0007-TEST-bump-catver.patch.txt" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mb6nsi1b6 RnJvbSAyNjM5NTNlNzhkNzgwNTFkMjVlMzEwNjE2Zjk2NmFlNWJlYTY5YjMzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXhpbSBPcmxvdiA8b3Jsb3ZtZ0BnbWFpbC5jb20+CkRhdGU6 IFdlZCwgMTMgTm92IDIwMjQgMTY6MzQ6MzQgKzAzMDAKU3ViamVjdDogW1BBVENIIHYxNSA3Lzdd IFRFU1Q6IGJ1bXAgY2F0dmVyCgotLS0KIHNyYy9iaW4vcGdfdXBncmFkZS9wZ191cGdyYWRlLmgg IHwgMiArLQogc3JjL2luY2x1ZGUvY2F0YWxvZy9jYXR2ZXJzaW9uLmggfCAyICstCiAyIGZpbGVz IGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9z cmMvYmluL3BnX3VwZ3JhZGUvcGdfdXBncmFkZS5oIGIvc3JjL2Jpbi9wZ191cGdyYWRlL3BnX3Vw Z3JhZGUuaAppbmRleCBlOWM1ZDMxNzdmLi5hOGUwODcxNmYwIDEwMDY0NAotLS0gYS9zcmMvYmlu L3BnX3VwZ3JhZGUvcGdfdXBncmFkZS5oCisrKyBiL3NyYy9iaW4vcGdfdXBncmFkZS9wZ191cGdy YWRlLmgKQEAgLTExOSw3ICsxMTksNyBAQCBleHRlcm4gY2hhciAqb3V0cHV0X2ZpbGVzW107CiAg KgogICogWFhYOiBzaG91bGQgYmUgY2hhbmdlZCB0byB0aGUgYWN0dWFsIENBVEFMT0dfVkVSU0lP Tl9OTyBvbiBjb21taXQuCiAgKi8KLSNkZWZpbmUgTVVMVElYQUNUT0ZGU0VUX0ZPUk1BVENIQU5H RV9DQVRfVkVSIDIwMjUwNDA5MgorI2RlZmluZSBNVUxUSVhBQ1RPRkZTRVRfRk9STUFUQ0hBTkdF X0NBVF9WRVIgMjAyNTA1MDcyCiAKIC8qCiAgKiBsYXJnZSBvYmplY3QgY2h1bmsgc2l6ZSBhZGRl ZCB0byBwZ19jb250cm9sZGF0YSwKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvY2F0 dmVyc2lvbi5oIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9jYXR2ZXJzaW9uLmgKaW5kZXggODI5ODhk MjQ0My4uZTU1MmI4NDkxZiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9jYXR2ZXJz aW9uLmgKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9jYXR2ZXJzaW9uLmgKQEAgLTU3LDYgKzU3 LDYgQEAKICAqLwogCiAvKgkJCQkJCQl5eXl5bW1kZE4gKi8KLSNkZWZpbmUgQ0FUQUxPR19WRVJT SU9OX05PCTIwMjUwNTA3MQorI2RlZmluZSBDQVRBTE9HX1ZFUlNJT05fTk8JMjAyNTA1MDcyCiAK ICNlbmRpZgotLSAKMi40My4wCgo= --0000000000004764a606361f94b1 Content-Type: text/plain; charset="US-ASCII"; name="v15-0006-TEST-add-src-bin-pg_upgrade-t-006_offset.pl.patch.txt" Content-Disposition: attachment; filename="v15-0006-TEST-add-src-bin-pg_upgrade-t-006_offset.pl.patch.txt" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mb6nsi175 RnJvbSA4YTJhZDI5NDkxM2IwY2VkOTZkZGU1YmRhNGU0NTFkOThhMDY0MGNiIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXhpbSBPcmxvdiA8b3Jsb3ZtZ0BnbWFpbC5jb20+CkRhdGU6 IFR1ZSwgMTkgTm92IDIwMjQgMTc6MDg6MTAgKzAzMDAKU3ViamVjdDogW1BBVENIIHYxNSA2Lzdd IFRFU1Q6IGFkZCBzcmMvYmluL3BnX3VwZ3JhZGUvdC8wMDZfb2Zmc2V0LnBsCgotLS0KIHNyYy9i aW4vcGdfdXBncmFkZS9wZ191cGdyYWRlLmggICAgfCAgIDIgKy0KIHNyYy9iaW4vcGdfdXBncmFk ZS90LzAwNl9vZmZzZXQucGwgfCA1NjIgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIDIg ZmlsZXMgY2hhbmdlZCwgNTYzIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKIGNyZWF0ZSBt b2RlIDEwMDY0NCBzcmMvYmluL3BnX3VwZ3JhZGUvdC8wMDZfb2Zmc2V0LnBsCgpkaWZmIC0tZ2l0 IGEvc3JjL2Jpbi9wZ191cGdyYWRlL3BnX3VwZ3JhZGUuaCBiL3NyYy9iaW4vcGdfdXBncmFkZS9w Z191cGdyYWRlLmgKaW5kZXggMmQ0ZjFkMzllNS4uZTljNWQzMTc3ZiAxMDA2NDQKLS0tIGEvc3Jj L2Jpbi9wZ191cGdyYWRlL3BnX3VwZ3JhZGUuaAorKysgYi9zcmMvYmluL3BnX3VwZ3JhZGUvcGdf dXBncmFkZS5oCkBAIC0xMTksNyArMTE5LDcgQEAgZXh0ZXJuIGNoYXIgKm91dHB1dF9maWxlc1td OwogICoKICAqIFhYWDogc2hvdWxkIGJlIGNoYW5nZWQgdG8gdGhlIGFjdHVhbCBDQVRBTE9HX1ZF UlNJT05fTk8gb24gY29tbWl0LgogICovCi0jZGVmaW5lIE1VTFRJWEFDVE9GRlNFVF9GT1JNQVRD SEFOR0VfQ0FUX1ZFUiAyMDI0MDkwNDEKKyNkZWZpbmUgTVVMVElYQUNUT0ZGU0VUX0ZPUk1BVENI QU5HRV9DQVRfVkVSIDIwMjUwNDA5MgogCiAvKgogICogbGFyZ2Ugb2JqZWN0IGNodW5rIHNpemUg YWRkZWQgdG8gcGdfY29udHJvbGRhdGEsCmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX3VwZ3JhZGUv dC8wMDZfb2Zmc2V0LnBsIGIvc3JjL2Jpbi9wZ191cGdyYWRlL3QvMDA2X29mZnNldC5wbApuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi5mNWRjNzMzYTMwCi0tLSAvZGV2L251 bGwKKysrIGIvc3JjL2Jpbi9wZ191cGdyYWRlL3QvMDA2X29mZnNldC5wbApAQCAtMCwwICsxLDU2 MiBAQAorIyBDb3B5cmlnaHQgKGMpIDIwMjQsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50 IEdyb3VwCisKK3VzZSBzdHJpY3Q7Cit1c2Ugd2FybmluZ3MgRkFUQUwgPT4gJ2FsbCc7CisKK3Vz ZSBGaWxlOjpGaW5kIHF3KGZpbmQpOworCit1c2UgUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3RlcjsK K3VzZSBQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczsKK3VzZSBUZXN0OjpNb3JlOworCisjIFRoaXMg cGFpciBvZiBjYWxscyB3aWxsIGNyZWF0ZSBzaWduaWZpY2FudGx5IG1vcmUgbWVtYmVyIHNlZ21l bnRzIHRoYW4gb2Zmc2V0CisjIHNlZ21lbnRzLgorc3ViIHByZXAKK3sKKwlteSAkbm9kZSA9IHNo aWZ0OworCW15ICR0YmwgPSBzaGlmdDsKKworCSRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywK KwkJIkNSRUFURSBUQUJMRSAke3RibH0gKEkgSU5UIFBSSU1BUlkgS0VZLCBOX1VQREFURUQgSU5U KSAiIC4KKwkJIiAgICAgICBXSVRIIChBVVRPVkFDVVVNX0VOQUJMRUQ9RkFMU0UpOyIgLgorCQki SU5TRVJUIElOVE8gJHt0Ymx9IFNFTEVDVCBHLCAwIEZST00gR0VORVJBVEVfU0VSSUVTKDEsIDUw KSBHOyIpOworfQorCitzdWIgZmlsbAoreworCW15ICRub2RlID0gc2hpZnQ7CisJbXkgJHRibCA9 IHNoaWZ0OworCisJbXkgJG5jbGllbnRzID0gNTA7CisJbXkgJHVwZGF0ZV9ldmVyeSA9IDkwOwor CW15IEBjb25uZWN0aW9ucyA9ICgpOworCisJZm9yICgwLi4kbmNsaWVudHMpCisJeworCQlteSAk Y29ubiA9ICRub2RlLT5iYWNrZ3JvdW5kX3BzcWwoJ3Bvc3RncmVzJyk7CisJCSRjb25uLT5xdWVy eV9zYWZlKCJCRUdJTiIpOworCisJCXB1c2goQGNvbm5lY3Rpb25zLCAkY29ubik7CisJfQorCisJ Zm9yIChteSAkaSA9IDA7ICRpIDwgMjAwMDA7ICRpKyspCisJeworCQlteSAkY29ubiA9ICRjb25u ZWN0aW9uc1skaSAlICRuY2xpZW50c107CisKKwkJJGNvbm4tPnF1ZXJ5X3NhZmUoIkNPTU1JVDsi KTsKKwkJJGNvbm4tPnF1ZXJ5X3NhZmUoIkJFR0lOIik7CisKKwkJaWYgKCRpICUgJHVwZGF0ZV9l dmVyeSA9PSAwKQorCQl7CisJCQkkY29ubi0+cXVlcnlfc2FmZSgKKwkJCQkiVVBEQVRFICR7dGJs fSBTRVQgIiAuCisJCQkJIk5fVVBEQVRFRCA9IE5fVVBEQVRFRCArIDEgIiAuCisJCQkJIldIRVJF IEkgPSAke2l9ICUgNTAiKTsKKwkJfQorCQllbHNlCisJCXsKKwkJCSRjb25uLT5xdWVyeV9zYWZl KAorCQkJCSJTRUxFQ1QgKiBGUk9NICR7dGJsfSBGT1IgS0VZIFNIQVJFIik7CisJCX0KKwl9CisK Kwlmb3IgbXkgJGNvbm4gKEBjb25uZWN0aW9ucykKKwl7CisJCSRjb25uLT5xdWl0KCk7CisJfQor fQorCisjIFRoaXMgcGFpciBvZiBjYWxscyB3aWxsIGNyZWF0ZSBtb3JlIG9yIGxlc3MgdGhlIHNh bWUgYW1vdW50IG9mIG1lbWJzZXJzIGFuZAorIyBvZmZzZXRzIHNlZ21lbnRzLgorc3ViIHByZXAy Cit7CisJbXkgJG5vZGUgPSBzaGlmdDsKKwlteSAkdGJsID0gc2hpZnQ7CisKKwkkbm9kZS0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJDUkVBVEUgVEFCTEUgJHt0Ymx9KEJBUiBJTlQgUFJJTUFS WSBLRVksIEJBWiBJTlQpOyAiIC4KKwkJIkNSRUFURSBPUiBSRVBMQUNFIFBST0NFRFVSRSBNWElE RklMTEVSKE5fU1RFUFMgSU5UIERFRkFVTFQgMTAwMCkgIiAuCisJCSJMQU5HVUFHRSBQTFBHU1FM ICIgLgorCQkiQVMgXCRcJCAiIC4KKwkJIkJFR0lOICIgLgorCQkiCUZPUiBJIElOIDEuLk5fU1RF UFMgTE9PUCAiIC4KKwkJIgkJVVBEQVRFICR7dGJsfSBTRVQgQkFaID0gUkFORE9NKDEsIDEwMDAp ICIgLgorCQkiCQlXSEVSRSBCQVIgSU4gKFNFTEVDVCBCQVIgRlJPTSAke3RibH0gIiAuCisJCSIJ CQkJCQlUQUJMRVNBTVBMRSBCRVJOT1VMTEkoODApKTsgIiAuCisJCSIJCUNPTU1JVDsgIiAuCisJ CSIJRU5EIExPT1A7ICIgLgorCQkiRU5EOyBcJFwkOyAiIC4KKwkJIklOU0VSVCBJTlRPICR7dGJs fSAoQkFSLCBCQVopICIgLgorCQkiU0VMRUNUIElELCBJRCBGUk9NIEdFTkVSQVRFX1NFUklFUygx LCAxMDI0KSBJRDsiKTsKK30KKworc3ViIGZpbGwyCit7CisJbXkgJG5vZGUgPSBzaGlmdDsKKwlt eSAkdGJsID0gc2hpZnQ7CisJbXkgJHNjYWxlID0gc2hpZnQgLy8gMTsKKworCSRub2RlLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywKKwkJIkJFR0lOOyAiIC4KKwkJIlNFTEVDVCAqIEZST00gJHt0Ymx9 IEZPUiBLRVkgU0hBUkU7ICIgLgorCQkiUFJFUEFSRSBUUkFOU0FDVElPTiAnQSc7ICIgLgorCQki Q0FMTCBNWElERklMTEVSKCgzNjUgKiAke3NjYWxlfSk6OmludCk7ICIgLgorCQkiQ09NTUlUIFBS RVBBUkVEICdBJzsiKTsKK30KKworCisjIGdlbmVyYXRlIGFyb3VuZCAyIG9mZnNldCBzZWdtZW50 cyBhbmQgNTUgbWVtYmVyIHNlZ21lbnRzCitzdWIgbXhpZF9nZW4xCit7CisJbXkgJG5vZGUgPSBz aGlmdDsKKwlteSAkdGJsID0gc2hpZnQ7CisKKwlwcmVwKCRub2RlLCAkdGJsKTsKKwlmaWxsKCRu b2RlLCAkdGJsKTsKKworCSRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgcShDSEVDS1BPSU5U KSk7Cit9CisKKyMgZ2VuZXJhdGUgYXJvdW5kIDEwIG9mZnNldCBzZWdtZW50cyBhbmQgMTIgbWVt YmVyIHNlZ21lbnRzCitzdWIgbXhpZF9nZW4yCit7CisJbXkgJG5vZGUgPSBzaGlmdDsKKwlteSAk dGJsID0gc2hpZnQ7CisJbXkgJHNjYWxlID0gc2hpZnQgLy8gMTsKKworCXByZXAyKCRub2RlLCAk dGJsKTsKKwlmaWxsMigkbm9kZSwgJHRibCwgJHNjYWxlKTsKKworCSRub2RlLT5zYWZlX3BzcWwo J3Bvc3RncmVzJywgcShDSEVDS1BPSU5UKSk7Cit9CisKKyMgRmV0Y2ggbGF0ZXN0IG11bHRpeGFj dCBjaGVja3BvaW50IHZhbHVlcy4KK3N1YiBtdWx0aV9ib3VuZHMKK3sKKwlteSAoJG5vZGUpID0g QF87CisJbXkgJHBhdGggPSAkbm9kZS0+Y29uZmlnX2RhdGEoJy0tYmluZGlyJyk7CisJbXkgKCRz dGRvdXQsICRzdGRlcnIpID0gcnVuX2NvbW1hbmQoWworCQkJCQkJCQkJJHBhdGggLiAnL3BnX2Nv bnRyb2xkYXRhJywKKwkJCQkJCQkJCSRub2RlLT5kYXRhX2RpcgorCQkJCQkJCQldKTsKKwlteSBA Y29udHJvbF9kYXRhID0gc3BsaXQoIlxuIiwgJHN0ZG91dCk7CisJbXkgJG5leHQgPSB1bmRlZjsK KwlteSAkb2xkZXN0ID0gdW5kZWY7CisJbXkgJG5leHRfb2Zmc2V0ID0gdW5kZWY7CisKKwlmb3Jl YWNoIChAY29udHJvbF9kYXRhKQorCXsKKwkJaWYgKCRfID1+IC9eTGF0ZXN0IGNoZWNrcG9pbnQn cyBOZXh0TXVsdGlYYWN0SWQ6XHMqKC4qKSQvbWcpCisJCXsKKwkJCSRuZXh0ID0gJDE7CisJCQlw cmludCAiPj4+IEAgbm9kZSAiLiAkbm9kZS0+bmFtZSAuICIsICIgLiAkXyAuICJcbiI7CisJCX0K KworCQlpZiAoJF8gPX4gL15MYXRlc3QgY2hlY2twb2ludCdzIG9sZGVzdE11bHRpWGlkOlxzKigu KikkL21nKQorCQl7CisJCQkkb2xkZXN0ID0gJDE7CisJCQlwcmludCAiPj4+IEAgbm9kZSAiLiAk bm9kZS0+bmFtZSAuICIsICIgLiAkXyAuICJcbiI7CisJCX0KKworCQlpZiAoJF8gPX4gL15MYXRl c3QgY2hlY2twb2ludCdzIE5leHRNdWx0aU9mZnNldDpccyooLiopJC9tZykKKwkJeworCQkJJG5l eHRfb2Zmc2V0ID0gJDE7CisJCQlwcmludCAiPj4+IEAgbm9kZSAiLiAkbm9kZS0+bmFtZSAuICIs ICIgLiAkXyAuICJcbiI7CisJCX0KKworCQlpZiAoZGVmaW5lZCgkb2xkZXN0KSAmJiBkZWZpbmVk KCRuZXh0KSAmJiBkZWZpbmVkKCRuZXh0X29mZnNldCkpCisJCXsKKwkJCWxhc3Q7CisJCX0KKwl9 CisKKwlkaWUgIkxhdGVzdCBjaGVja3BvaW50J3MgTmV4dE11bHRpWGFjdElkIG5vdCBmb3VuZCBp biBjb250cm9sIGZpbGUhXG4iCisJdW5sZXNzIGRlZmluZWQoJG5leHQpOworCisJZGllICJMYXRl c3QgY2hlY2twb2ludCdzIG9sZGVzdE11bHRpWGlkIG5vdCBmb3VuZCBpbiBjb250cm9sIGZpbGUh XG4iCisJdW5sZXNzIGRlZmluZWQoJG9sZGVzdCk7CisKKwlkaWUgIkxhdGVzdCBjaGVja3BvaW50 J3MgTmV4dE11bHRpT2Zmc2V0IG5vdCBmb3VuZCBpbiBjb250cm9sIGZpbGUhXG4iCisJdW5sZXNz IGRlZmluZWQoJG5leHRfb2Zmc2V0KTsKKworCXJldHVybiAoJG9sZGVzdCwgJG5leHQsICRuZXh0 X29mZnNldCk7Cit9CisKKyMgQ3JlYXRlIG5vZGUgZnJvbSBleGlzdGluZyBiaW5zLgorc3ViIGNy ZWF0ZV9uZXdfbm9kZQoreworCW15ICgkbmFtZSwgJXBhcmFtcykgPSBAXzsKKworCWNyZWF0ZV9u b2RlKDAsIEBfKTsKK30KKworIyBDcmVhdGUgbm9kZSBmcm9tIEVOViBvbGRpbnN0YWxsCitzdWIg Y3JlYXRlX29sZF9ub2RlCit7CisJbXkgKCRuYW1lLCAlcGFyYW1zKSA9IEBfOworCisJaWYgKCFk ZWZpbmVkKCRFTlZ7b2xkaW5zdGFsbH0pKQorCXsKKwkJZGllICJvbGRpbnN0YWxsIGlzIG5vdCBk ZWZpbmVkIjsKKwl9CisKKwljcmVhdGVfbm9kZSgxLCBAXyk7Cit9CisKK3N1YiBjcmVhdGVfbm9k ZQoreworCW15ICgkaW5zdGFsbF9wYXRoX2Zyb21fZW52LCAkbmFtZSwgJXBhcmFtcykgPSBAXzsK KwlteSAkc2NhbGUgPSBkZWZpbmVkICRwYXJhbXN7c2NhbGV9ID8gJHBhcmFtc3tzY2FsZX0gOiAx OworCW15ICRtdWx0aSA9IGRlZmluZWQgJHBhcmFtc3ttdWx0aX0gPyAkcGFyYW1ze211bHRpfSA6 IHVuZGVmOworCW15ICRvZmZzZXQgPSBkZWZpbmVkICRwYXJhbXN7b2Zmc2V0fSA/ICRwYXJhbXN7 b2Zmc2V0fSA6IHVuZGVmOworCisJbXkgJG5vZGUgPQorCQkkaW5zdGFsbF9wYXRoX2Zyb21fZW52 ID8KKwkJCVBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXItPm5ldygkbmFtZSwKKwkJCQkJaW5zdGFs bF9wYXRoID0+ICRFTlZ7b2xkaW5zdGFsbH0pIDoKKwkJCVBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0 ZXItPm5ldygkbmFtZSk7CisKKwkkbm9kZS0+aW5pdChmb3JjZV9pbml0ZGIgPT4gMSwKKwkJZXh0 cmEgPT4gWworCQkJJG11bHRpID8gKCctbScsICRtdWx0aSkgOiAoKSwKKwkJCSRvZmZzZXQgPyAo Jy1vJywgJG9mZnNldCkgOiAoKSwKKwkJXSk7CisKKwkjIEZpeHVwIE1PWCBwYXRjaCBxdWlyawor CWlmICgkbXVsdGkpCisJeworCQl1bmxpbmsgJG5vZGUtPmRhdGFfZGlyIC4gJy9wZ19tdWx0aXhh Y3Qvb2Zmc2V0cy8wMDAwJzsKKwl9CisJaWYgKCRvZmZzZXQpCisJeworCQl1bmxpbmsgJG5vZGUt PmRhdGFfZGlyIC4gJy9wZ19tdWx0aXhhY3QvbWVtYmVycy8wMDAwJzsKKwl9CisKKwkkbm9kZS0+ YXBwZW5kX2NvbmYoJ2ZzeW5jJywgJ29mZicpOworCSRub2RlLT5hcHBlbmRfY29uZigncG9zdGdy ZXNxbC5jb25mJywgJ21heF9wcmVwYXJlZF90cmFuc2FjdGlvbnMgPSAyJyk7CisKKwkkbm9kZS0+ c3RhcnQoKTsKKwlteGlkX2dlbjIoJG5vZGUsICdGT08nLCAkc2NhbGUpOworCW14aWRfZ2VuMSgk bm9kZSwgJ0JBUicsICRzY2FsZSk7CisJJG5vZGUtPnJlc3RhcnQoKTsKKwkkbm9kZS0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsIHEoU0VMRUNUICogRlJPTSBGT08pKTsJCSMganVzdCBpbiBjYXNlLi4u CisJJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCBxKFNFTEVDVCAqIEZST00gQkFSKSk7CisJ JG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCBxKENIRUNLUE9JTlQpKTsKKwkkbm9kZS0+c3Rv cCgpOworCisJcmV0dXJuICRub2RlOworfQorCitzdWIgZG9fdXBncmFkZQoreworCW15ICgkb2xk bm9kZSwgJG5ld25vZGUpID0gQF87CisKKwljb21tYW5kX29rKAorCQlbCisJCQkncGdfdXBncmFk ZScsICctLW5vLXN5bmMnLAorCQkJJy1kJywgJG9sZG5vZGUtPmRhdGFfZGlyLAorCQkJJy1EJywg JG5ld25vZGUtPmRhdGFfZGlyLAorCQkJJy1iJywgJG9sZG5vZGUtPmNvbmZpZ19kYXRhKCctLWJp bmRpcicpLAorCQkJJy1CJywgJG5ld25vZGUtPmNvbmZpZ19kYXRhKCctLWJpbmRpcicpLAorCQkJ Jy1zJywgJG5ld25vZGUtPmhvc3QsCisJCQknLXAnLCAkb2xkbm9kZS0+cG9ydCwKKwkJCSctUCcs ICRuZXdub2RlLT5wb3J0LAorCQkJJy0tY2hlY2snCisJCV0sCisJCSdydW4gb2YgcGdfdXBncmFk ZScpOworCisJY29tbWFuZF9vaygKKwkJWworCQkJJ3BnX3VwZ3JhZGUnLCAnLS1uby1zeW5jJywK KwkJCSctZCcsICRvbGRub2RlLT5kYXRhX2RpciwKKwkJCSctRCcsICRuZXdub2RlLT5kYXRhX2Rp ciwKKwkJCSctYicsICRvbGRub2RlLT5jb25maWdfZGF0YSgnLS1iaW5kaXInKSwKKwkJCSctQics ICRuZXdub2RlLT5jb25maWdfZGF0YSgnLS1iaW5kaXInKSwKKwkJCSctcycsICRuZXdub2RlLT5o b3N0LAorCQkJJy1wJywgJG9sZG5vZGUtPnBvcnQsCisJCQknLVAnLCAkbmV3bm9kZS0+cG9ydCwK KwkJCSctLWNvcHknCisJCV0sCisJCSdydW4gb2YgcGdfdXBncmFkZScpOworCisJJG9sZG5vZGUt PnN0YXJ0KCk7CisJJG5ld25vZGUtPnN0YXJ0KCk7CisKKwlteSAkb2xkZm9vID0gJG9sZG5vZGUt PnNhZmVfcHNxbCgncG9zdGdyZXMnLCBxKFNFTEVDVCAqIEZST00gRk9PKSk7CisJbXkgJG5ld2Zv byA9ICRuZXdub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgcShTRUxFQ1QgKiBGUk9NIEZPTykp OworCWlzKCRvbGRmb28sICRuZXdmb28sICJzZWxlY3QgZm9vIGVxIik7CisKKwlteSAkb2xkYmFy ID0gJG9sZG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCBxKFNFTEVDVCAqIEZST00gQkFSKSk7 CisJbXkgJG5ld2JhciA9ICRuZXdub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgcShTRUxFQ1Qg KiBGUk9NIEJBUikpOworCWlzKCRvbGRiYXIsICRuZXdiYXIsICJzZWxlY3QgYmFyIGVxIik7CisK Kwkkb2xkbm9kZS0+c3RvcCgpOworCSRuZXdub2RlLT5zdG9wKCk7CisKKwltdWx0aV9ib3VuZHMo JG9sZG5vZGUpOworCW11bHRpX2JvdW5kcygkbmV3bm9kZSk7Cit9CisKK215IEBURVNUUyA9ICgK KwkjIHRlc3RzIHdpdGhvdXQgRU5WIG9sZGluc3RhbGwKKwkjMCwgMSwgMiwgMywgNCwgNSwgNiwK KwkjIHRlc3RzIHdpdGggInJlYWwiIHBnX3VwZ3JhZGUKKwkjMTAwLCAxMDEsIDEwMiwgMTAzLCAx MDQsIDEwNSwgMTA2LAorCSMgc2VsZiB1cGdyYWRlCisJMTAwMCwKKyk7CisKKyMgPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KKyMgQmFzaWMgc2FuaXR5IHRlc3RzIG9uIGEgTkVXIGJpbgorIyA9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQorCisjIHN0YXJ0cyBmcm9tIHRoZSB6ZXJvCitTS0lQOgoreworCW15ICRU RVNUX05PID0gMDsKKwlza2lwICJkbyBub3QgdGVzdCBjYXNlICRURVNUX05PIiwgMQorCQl1bmxl c3MgKCBncmVwKCAvXiRURVNUX05PJC8sIEBURVNUUyApICk7CisKKwlteSAkbm9kZSA9IGNyZWF0 ZV9uZXdfbm9kZSgnc2ltcGxlX21vJywKKwkJCQkJCXNjYWxlID0+IDEpOworCW11bHRpX2JvdW5k cygkbm9kZSk7CisJb2soMSwgIlRFU1QgJFRFU1RfTk8gUEFTU0VEIik7Cit9CisKKyMgbXVsdGkg c3RhcnRzIGZyb20gdGhlIHZhbHVlCitTS0lQOgoreworCW15ICRURVNUX05PID0gMTsKKwlza2lw ICJkbyBub3QgdGVzdCBjYXNlICRURVNUX05PIiwgMQorCQl1bmxlc3MgKCBncmVwKCAvXiRURVNU X05PJC8sIEBURVNUUyApICk7CisKKwlteSAkbm9kZSA9IGNyZWF0ZV9uZXdfbm9kZSgnc2ltcGxl X01vJywKKwkJCQkJCXNjYWxlID0+IDEuMTUsCisJCQkJCQltdWx0aSA9PiAnMHgxMjM0MDAnKTsK KwltdWx0aV9ib3VuZHMoJG5vZGUpOworCW9rKDEsICJURVNUICRURVNUX05PIFBBU1NFRCIpOwor fQorCisjIG9mZnNldHMgc3RhcnRzIGZyb20gdGhlIHZhbHVlCitTS0lQOgoreworCW15ICRURVNU X05PID0gMjsKKwlza2lwICJkbyBub3QgdGVzdCBjYXNlICRURVNUX05PIiwgMQorCQl1bmxlc3Mg KCBncmVwKCAvXiRURVNUX05PJC8sIEBURVNUUyApICk7CisKKwlteSAkbm9kZSA9IGNyZWF0ZV9u ZXdfbm9kZSgnc2ltcGxlX21PJywKKwkJCQkJCXNjYWxlID0+IDEuMTUsCisJCQkJCQlvZmZzZXQg PT4gJzB4NDMyMTAwJyk7CisJbXVsdGlfYm91bmRzKCRub2RlKTsKKwlvaygxLCAiVEVTVCAkVEVT VF9OTyBQQVNTRUQiKTsKK30KKworIyBtdWx0aSBhbmQgb2Zmc2V0cyBzdGFydHMgZnJvbSB0aGUg dmFsdWUKK1NLSVA6Cit7CisJbXkgJFRFU1RfTk8gPSAzOworCXNraXAgImRvIG5vdCB0ZXN0IGNh c2UgJFRFU1RfTk8iLCAxCisJCXVubGVzcyAoIGdyZXAoIC9eJFRFU1RfTk8kLywgQFRFU1RTICkg KTsKKworCW15ICRub2RlID0gY3JlYXRlX25ld19ub2RlKCdzaW1wbGVfTU8nLAorCQkJCQkJc2Nh bGUgPT4gMS4xNSwKKwkJCQkJCW11bHRpID0+ICcweERFQUQwMCcsIG9mZnNldCA9PiAnMHhCRUVG MDAnKTsKKwltdWx0aV9ib3VuZHMoJG5vZGUpOworCW9rKDEsICJURVNUICRURVNUX05PIFBBU1NF RCIpOworfQorCisjIG11bHRpIHN0YXJ0cyBmcm9tIHRoZSB2YWx1ZSwgbXVsdGkgd3JhcAorU0tJ UDoKK3sKKwlteSAkVEVTVF9OTyA9IDQ7CisJc2tpcCAiZG8gbm90IHRlc3QgY2FzZSAkVEVTVF9O TyIsIDEKKwkJdW5sZXNzICggZ3JlcCggL14kVEVTVF9OTyQvLCBAVEVTVFMgKSApOworCisJbXkg JG5vZGUgPSBjcmVhdGVfbmV3X25vZGUoJ3NpbXBsZV9Nb193cmFwJywKKwkJCQkJCXNjYWxlID0+ IDEuMTUsCisJCQkJCQltdWx0aSA9PiAnMHhGRkZGNzAwMCcpOworCW11bHRpX2JvdW5kcygkbm9k ZSk7CisJb2soMSwgIlRFU1QgJFRFU1RfTk8gUEFTU0VEIik7Cit9CisKKyMgb2Zmc2V0cyBzdGFy dHMgZnJvbSB0aGUgdmFsdWUsIG9mZnNldHMgd3JhcAorU0tJUDoKK3sKKwlteSAkVEVTVF9OTyA9 IDU7CisJc2tpcCAiZG8gbm90IHRlc3QgY2FzZSAkVEVTVF9OTyIsIDEKKwkJdW5sZXNzICggZ3Jl cCggL14kVEVTVF9OTyQvLCBAVEVTVFMgKSApOworCisJbXkgJG5vZGUgPSBjcmVhdGVfbmV3X25v ZGUoJ3NpbXBsZV9tT193cmFwJywKKwkJCQkJCXNjYWxlID0+IDEuMTUsCisJCQkJCQlvZmZzZXQg PT4gJzB4RkZGRkZDMDAnKTsKKwltdWx0aV9ib3VuZHMoJG5vZGUpOworCW9rKDEsICJURVNUICRU RVNUX05PIFBBU1NFRCIpOworfQorCisjIG11bHRpIHN0YXJ0cyBmcm9tIHRoZSB2YWx1ZSwgb2Zm c2V0cyBzdGFydHMgZnJvbSB0aGUgdmFsdWUsCisjIG11bHRpIHdyYXAsIG9mZnNldHMgd3JhcAor U0tJUDoKK3sKKwlteSAkVEVTVF9OTyA9IDY7CisJc2tpcCAiZG8gbm90IHRlc3QgY2FzZSAkVEVT VF9OTyIsIDEKKwkJdW5sZXNzICggZ3JlcCggL14kVEVTVF9OTyQvLCBAVEVTVFMgKSApOworCisJ bXkgJG5vZGUgPSBjcmVhdGVfbmV3X25vZGUoJ3NpbXBsZV9NT193cmFwJywKKwkJCQkJCXNjYWxl ID0+IDEuMTUsCisJCQkJCQltdWx0aSA9PiAnMHhGRkZGNzAwMCcsIG9mZnNldCA9PiAnMHhGRkZG RkMwMCcpOworCW11bHRpX2JvdW5kcygkbm9kZSk7CisJb2soMSwgIlRFU1QgJFRFU1RfTk8gUEFT U0VEIik7Cit9CisKKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyMgcGdfdXBnYXJkZSB0ZXN0cwor IyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQorCisjIHN0YXJ0cyBmcm9tIHRoZSB6ZXJvCitTS0lQOgor eworCW15ICRURVNUX05PID0gMTAwOworCXNraXAgImRvIG5vdCB0ZXN0IGNhc2UgJFRFU1RfTk8i LCAxCisJCXVubGVzcyAoIGdyZXAoIC9eJFRFU1RfTk8kLywgQFRFU1RTICkgKTsKKworCW15ICRk Ym5hbWUgPSAnbW8nOworCW15ICRvbGRub2RlID0gY3JlYXRlX29sZF9ub2RlKCJvbGRfJGRibmFt ZSIsCisJCQkJCQlzY2FsZSA9PiAxKTsKKwlteSAkbmV3bm9kZSA9IFBvc3RncmVTUUw6OlRlc3Q6 OkNsdXN0ZXItPm5ldygibmV3XyRkYm5hbWUiKTsKKwkkbmV3bm9kZS0+aW5pdCgpOworCisJZG9f dXBncmFkZSgkb2xkbm9kZSwgJG5ld25vZGUpOworCW9rKDEsICJURVNUICRURVNUX05PIFBBU1NF RCIpOworfQorCisjIG11bHRpIHN0YXJ0cyBmcm9tIHRoZSB2YWx1ZQorU0tJUDoKK3sKKwlteSAk VEVTVF9OTyA9IDEwMTsKKwlza2lwICJkbyBub3QgdGVzdCBjYXNlICRURVNUX05PIiwgMQorCQl1 bmxlc3MgKCBncmVwKCAvXiRURVNUX05PJC8sIEBURVNUUyApICk7CisKKwlteSAkZGJuYW1lID0g J01vJzsKKwlteSAkb2xkbm9kZSA9IGNyZWF0ZV9vbGRfbm9kZSgib2xkXyRkYm5hbWUiLAorCQkJ CQkJc2NhbGUgPT4gMS4yLAorCQkJCQkJbXVsdGkgPT4gJzB4MTIzNDAwJyk7CisJbXkgJG5ld25v ZGUgPSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyLT5uZXcoIm5ld18kZGJuYW1lIik7CisJJG5l d25vZGUtPmluaXQoKTsKKworCWRvX3VwZ3JhZGUoJG9sZG5vZGUsICRuZXdub2RlKTsKKwlvaygx LCAiVEVTVCAkVEVTVF9OTyBQQVNTRUQiKTsKK30KKworIyBvZmZzZXRzIHN0YXJ0cyBmcm9tIHRo ZSB2YWx1ZQorU0tJUDoKK3sKKwlteSAkVEVTVF9OTyA9IDEwMjsKKwlza2lwICJkbyBub3QgdGVz dCBjYXNlICRURVNUX05PIiwgMQorCQl1bmxlc3MgKCBncmVwKCAvXiRURVNUX05PJC8sIEBURVNU UyApICk7CisKKwlteSAkZGJuYW1lID0gJ21PJzsKKwlteSAkb2xkbm9kZSA9IGNyZWF0ZV9vbGRf bm9kZSgib2xkXyRkYm5hbWUiLAorCQkJCQkJc2NhbGUgPT4gMS4yLAorCQkJCQkJb2Zmc2V0ID0+ ICcweDQzMjEwMCcpOworCW15ICRuZXdub2RlID0gUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rlci0+ bmV3KCJuZXdfJGRibmFtZSIpOworCSRuZXdub2RlLT5pbml0KCk7CisKKwlkb191cGdyYWRlKCRv bGRub2RlLCAkbmV3bm9kZSk7CisJb2soMSwgIlRFU1QgJFRFU1RfTk8gUEFTU0VEIik7Cit9CisK KyMgbXVsdGkgYW5kIG9mZnNldHMgc3RhcnRzIGZyb20gdGhlIHZhbHVlCitTS0lQOgoreworCW15 ICRURVNUX05PID0gMTAzOworCXNraXAgImRvIG5vdCB0ZXN0IGNhc2UgJFRFU1RfTk8iLCAxCisJ CXVubGVzcyAoIGdyZXAoIC9eJFRFU1RfTk8kLywgQFRFU1RTICkgKTsKKworCW15ICRkYm5hbWUg PSAnTU8nOworCW15ICRvbGRub2RlID0gY3JlYXRlX29sZF9ub2RlKCJvbGRfJGRibmFtZSIsCisJ CQkJCQlzY2FsZSA9PiAxLjIsCisJCQkJCQltdWx0aSA9PiAnMHhERUFEMDAnLCBvZmZzZXQgPT4g JzB4QkVFRjAwJyk7CisJbXkgJG5ld25vZGUgPSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyLT5u ZXcoIm5ld18kZGJuYW1lIik7CisJJG5ld25vZGUtPmluaXQoKTsKKworCWRvX3VwZ3JhZGUoJG9s ZG5vZGUsICRuZXdub2RlKTsKKwlvaygxLCAiVEVTVCAkVEVTVF9OTyBQQVNTRUQiKTsKK30KKwor IyBtdWx0aSBzdGFydHMgZnJvbSB0aGUgdmFsdWUsIG11bHRpIHdyYXAKK1NLSVA6Cit7CisJbXkg JFRFU1RfTk8gPSAxMDQ7CisJc2tpcCAiZG8gbm90IHRlc3QgY2FzZSAkVEVTVF9OTyIsIDEKKwkJ dW5sZXNzICggZ3JlcCggL14kVEVTVF9OTyQvLCBAVEVTVFMgKSApOworCisJbXkgJGRibmFtZSA9 ICdNb193cmFwJzsKKwlteSAkb2xkbm9kZSA9IGNyZWF0ZV9vbGRfbm9kZSgib2xkXyRkYm5hbWUi LAorCQkJCQkJc2NhbGUgPT4gMS4yLAorCQkJCQkJbXVsdGkgPT4gJzB4RkZGRjcwMDAnKTsKKwlt eSAkbmV3bm9kZSA9IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXItPm5ldygibmV3XyRkYm5hbWUi KTsKKwkkbmV3bm9kZS0+aW5pdCgpOworCisJZG9fdXBncmFkZSgkb2xkbm9kZSwgJG5ld25vZGUp OworCW9rKDEsICJURVNUICRURVNUX05PIFBBU1NFRCIpOworfQorCisjIG9mZnNldHMgc3RhcnRz IGZyb20gdGhlIHZhbHVlLCBvZmZzZXRzIHdyYXAKK1NLSVA6Cit7CisJbXkgJFRFU1RfTk8gPSAx MDU7CisJc2tpcCAiZG8gbm90IHRlc3QgY2FzZSAkVEVTVF9OTyIsIDEKKwkJdW5sZXNzICggZ3Jl cCggL14kVEVTVF9OTyQvLCBAVEVTVFMgKSApOworCisJbXkgJGRibmFtZSA9ICdtT193cmFwJzsK KwlteSAkb2xkbm9kZSA9IGNyZWF0ZV9vbGRfbm9kZSgib2xkXyRkYm5hbWUiLAorCQkJCQkJc2Nh bGUgPT4gMS4yLAorCQkJCQkJb2Zmc2V0ID0+ICcweEZGRkZGQzAwJyk7CisJbXkgJG5ld25vZGUg PSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyLT5uZXcoIm5ld18kZGJuYW1lIik7CisJJG5ld25v ZGUtPmluaXQoKTsKKworCWRvX3VwZ3JhZGUoJG9sZG5vZGUsICRuZXdub2RlKTsKKwlvaygxLCAi VEVTVCAkVEVTVF9OTyBQQVNTRUQiKTsKK30KKworIyBtdWx0aSBzdGFydHMgZnJvbSB0aGUgdmFs dWUsIG9mZnNldHMgc3RhcnRzIGZyb20gdGhlIHZhbHVlLAorIyBtdWx0aSB3cmFwLCBvZmZzZXRz IHdyYXAKK1NLSVA6Cit7CisJbXkgJFRFU1RfTk8gPSAxMDY7CisJc2tpcCAiZG8gbm90IHRlc3Qg Y2FzZSAkVEVTVF9OTyIsIDEKKwkJdW5sZXNzICggZ3JlcCggL14kVEVTVF9OTyQvLCBAVEVTVFMg KSApOworCisJbXkgJGRibmFtZSA9ICdNT193cmFwJzsKKwlteSAkb2xkbm9kZSA9IGNyZWF0ZV9v bGRfbm9kZSgib2xkXyRkYm5hbWUiLAorCQkJCQkJc2NhbGUgPT4gMS4yLAorCQkJCQkJbXVsdGkg PT4gJzB4RkZGRjcwMDAnLCBvZmZzZXQgPT4gJzB4RkZGRkZDMDAnKTsKKwlteSAkbmV3bm9kZSA9 IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXItPm5ldygibmV3XyRkYm5hbWUiKTsKKwkkbmV3bm9k ZS0+aW5pdCgpOworCisJZG9fdXBncmFkZSgkb2xkbm9kZSwgJG5ld25vZGUpOworCW9rKDEsICJU RVNUICRURVNUX05PIFBBU1NFRCIpOworfQorCisjID09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisjIFNl bGYgdXBncmFkZQorIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisjIHN0YXJ0cyBmcm9tIHRoZSB6 ZXJvCitTS0lQOgoreworCW15ICRURVNUX05PID0gMTAwMDsKKwlza2lwICJkbyBub3QgdGVzdCBj YXNlICRURVNUX05PIiwgMQorCQl1bmxlc3MgKCBncmVwKCAvXiRURVNUX05PJC8sIEBURVNUUyAp ICk7CisKKwlteSAkZGJuYW1lID0gJ3NlbGZfdXBncmFkZSc7CisJbXkgJG9sZG5vZGUgPSBjcmVh dGVfbmV3X25vZGUoIm9sZF8kZGJuYW1lIiwKKwkJCQkJCXNjYWxlID0+IDEpOworCW15ICRuZXdu b2RlID0gUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rlci0+bmV3KCJuZXdfJGRibmFtZSIpOworCSRu ZXdub2RlLT5pbml0KCk7CisKKwlkb191cGdyYWRlKCRvbGRub2RlLCAkbmV3bm9kZSk7CisJb2so MSwgIlRFU1QgJFRFU1RfTk8gUEFTU0VEIik7Cit9CisKK2RvbmVfdGVzdGluZygpOwotLSAKMi40 My4wCgo= --0000000000004764a606361f94b1--