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 1uWqIu-002BfJ-HX for pgsql-hackers@arkaria.postgresql.org; Wed, 02 Jul 2025 05:46:44 +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 1uWqIs-00AYFU-IP for pgsql-hackers@arkaria.postgresql.org; Wed, 02 Jul 2025 05:46:43 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1uWqIs-00AYFB-0C for pgsql-hackers@lists.postgresql.org; Wed, 02 Jul 2025 05:46:42 +0000 Received: from oss.nttdata.com ([49.212.34.109]) by makus.postgresql.org with smtp (Exim 4.96) (envelope-from ) id 1uWqIp-0055Xs-0R for pgsql-hackers@postgresql.org; Wed, 02 Jul 2025 05:46:41 +0000 Received: from oss.nttdata.com (localhost [127.0.0.1]) by oss.nttdata.com (Postfix) with ESMTPA id DE578619B7; Wed, 2 Jul 2025 14:46:34 +0900 (JST) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.11 at oss.nttdata.com MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=_0a3fd02917c5f926559b06ab2c72d95c" Date: Wed, 02 Jul 2025 14:46:34 +0900 From: torikoshia To: Masahiko Sawada Cc: Nathan Bossart , Yugo Nagata , Pgsql Hackers , rmt@lists.postgresql.org Subject: Re: Improve tab completion for COPY In-Reply-To: References: <079e7a2c801f252ae8d522b772790ed7@oss.nttdata.com> <20250507222318.421a6b6bfc311f4cdf07ebc0@sraoss.co.jp> <20250508085335.77b8c480e96f032b87c2d8c3@sraoss.co.jp> <0988d0a8c87c37ec8cb8d3643d9dc35a@oss.nttdata.com> <20250603175801.d1fc50eefb178e5ca7312fd1@sraoss.co.jp> <20250610115954.fac87b39e5dfb91e32071b10@sraoss.co.jp> User-Agent: Roundcube Webmail/1.4.11 Message-ID: X-Sender: torikoshia@oss.nttdata.com Content-Transfer-Encoding: 7bit List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --=_0a3fd02917c5f926559b06ab2c72d95c Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: quoted-printable On 2025-07-01 14:20, Masahiko Sawada wrote: > On Thu, Jun 12, 2025 at 3:47=E2=80=AFAM Masahiko Sawada =20 > wrote: >>=20 >> On Tue, Jun 10, 2025 at 1:33=E2=80=AFPM Nathan Bossart=20 >> wrote: >> > >> > On Tue, Jun 10, 2025 at 12:37:48PM -0700, Masahiko Sawada wrote: >> > >> > (1) adds tab completion support for the REJECT_LIMIT option, wh= ich was >> > >> > introduced in v18 >> > >> > (2) splits the tab completion logic between COPY FROM and COPY = TO to >> > >> > reflect their different options. >> > > >> > > [...] >> > > >> > > Given REJECT_LIMIT is a new v18 feature, it seems to me that (1) i= s an >> > > oversight of this feature, but I also agree that it's not a bug an= d >> > > doesn't block the release. >> > > >> > > How does the RMT feel about the change (1)? Nathan, would you be = OK with that? >> > >> > 0001 sure seems like an oversight in commit 4ac2a9b to me. In any c= ase, I >> > argued that we should fix tab completion for unlogged partitioned ta= bles in >> > v18 [0], and this seems pretty similar. >> > >> > >> > TBH I'd even say that 0002 is fixing a bug and could be back-patched= . I've >> > added rmt@ here in case Tomas or Heikki feel differently. >>=20 >> Thank you for your confirmation. I've just pushed the change (1) and >> am waiting for more comments on the change (2). >>=20 >=20 > Thinking of the 0002 patch, I'm also inclined to agree that this fixes > a bogus tab completion behavior for COPY command and can be > back-patched to v14. In v14, c273d9d8ce reworked the tab completion > for COPY command and supports the completion for the options of FORMAT > within a WITH clause so we cannot back-patch it to v13. Agreed. > Torikoshi-san, could you please prepare the patch for other branches > too if you agree with this direction? Sure! Attached patches. --=20 Regards, -- Atsushi Torikoshi Seconded from NTT DATA Japan Corporation to SRA OSS K.K. --=_0a3fd02917c5f926559b06ab2c72d95c Content-Transfer-Encoding: base64 Content-Type: text/x-diff; name=v3-0002-Improve-tab-completion-for-COPY-options_v16.patch Content-Disposition: attachment; filename=v3-0002-Improve-tab-completion-for-COPY-options_v16.patch; size=2499 RnJvbSBlNTBmN2YwNTdiZjQxZTVjZDRkZjI2YTIxYWJjYjE3YzM0NjAxZTFjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBdHN1c2hpIFRvcmlrb3NoaSA8dG9yaWtvc2hpYS50ZWNoQGdt YWlsLmNvbT4KRGF0ZTogV2VkLCAyIEp1bCAyMDI1IDExOjUxOjMyICswOTAwClN1YmplY3Q6IFtQ QVRDSCB2MyAyLzJdIEltcHJvdmUgdGFiIGNvbXBsZXRpb24gZm9yIENPUFkgb3B0aW9ucwoKQ3Vy cmVudGx5LCBDT1BZIEZST00gYW5kIFRPIHNoYXJlIHRoZSBzYW1lIHRhYiBjb21wbGV0aW9uIHJ1 bGVzLApldmVuIHRob3VnaCBzb21lIG9wdGlvbnMgYXJlIG9ubHkgdmFsaWQgZm9yIG9uZSBvciB0 aGUgb3RoZXIuCgpUaGlzIHBhdGNoIHNlcGFyYXRlcyB0aGUgdGFiIGNvbXBsZXRpb24gcnVsZXMg Zm9yIENPUFkgRlJPTSBhbmQKQ09QWSBUTyB0byBwcm92aWRlIG1vcmUgYWNjdXJhdGUgc3VnZ2Vz dGlvbnMuCi0tLQogc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5jIHwgMjQgKysrKysrKysrKysr KysrKysrKy0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgMTkgaW5zZXJ0aW9ucygrKSwgNSBkZWxldGlv bnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmMgYi9zcmMvYmlu L3BzcWwvdGFiLWNvbXBsZXRlLmMKaW5kZXggYTFhYTk0NmIzMDAuLjIzZDg5ZDA3MjBmIDEwMDY0 NAotLS0gYS9zcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmMKKysrIGIvc3JjL2Jpbi9wc3FsL3Rh Yi1jb21wbGV0ZS5jCkBAIC0xMTY0LDYgKzExNjQsMTggQEAgQWx0ZXJfcHJvY2VkdXJlX29wdGlv bnMsICJDT1NUIiwgIklNTVVUQUJMRSIsICJMRUFLUFJPT0YiLCAiTk9UIExFQUtQUk9PRiIsIFwK IEFsdGVyX3JvdXRpbmVfb3B0aW9ucywgIkNBTExFRCBPTiBOVUxMIElOUFVUIiwgIlJFVFVSTlMg TlVMTCBPTiBOVUxMIElOUFVUIiwgXAogIlNUUklDVCIsICJTVVBQT1JUIgogCisvKiBDT1BZIG9w dGlvbnMgc2hhcmVkIGJldHdlZW4gRlJPTSBhbmQgVE8gKi8KKyNkZWZpbmUgQ29weV9jb21tb25f b3B0aW9ucyBcCisiREVMSU1JVEVSIiwgIkVOQ09ESU5HIiwgIkVTQ0FQRSIsICJGT1JNQVQiLCAi SEVBREVSIiwgIk5VTEwiLCAiUVVPVEUiCisKKy8qIENPUFkgRlJPTSBvcHRpb25zICovCisjZGVm aW5lIENvcHlfZnJvbV9vcHRpb25zIFwKK0NvcHlfY29tbW9uX29wdGlvbnMsICJERUZBVUxUIiwg IkZPUkNFX05PVF9OVUxMIiwgIkZPUkNFX05VTEwiLCAiRlJFRVpFIgorCisvKiBDT1BZIFRPIG9w dGlvbnMgKi8KKyNkZWZpbmUgQ29weV90b19vcHRpb25zIFwKK0NvcHlfY29tbW9uX29wdGlvbnMs ICJGT1JDRV9RVU9URSIKKwogLyoKICAqIFRoZXNlIG9iamVjdCB0eXBlcyB3ZXJlIGludHJvZHVj ZWQgbGF0ZXIgdGhhbiBvdXIgc3VwcG9ydCBjdXRvZmYgb2YKICAqIHNlcnZlciB2ZXJzaW9uIDku Mi4gIFdlIHVzZSB0aGUgVmVyc2lvbmVkUXVlcnkgaW5mcmFzdHJ1Y3R1cmUgc28gdGhhdApAQCAt Mjg1NCwxMSArMjg2NiwxMyBAQCBwc3FsX2NvbXBsZXRpb24oY29uc3QgY2hhciAqdGV4dCwgaW50 IHN0YXJ0LCBpbnQgZW5kKQogCWVsc2UgaWYgKE1hdGNoZXMoIkNPUFl8XFxjb3B5IiwgTWF0Y2hB bnksICJGUk9NIiwgTWF0Y2hBbnkpKQogCQlDT01QTEVURV9XSVRIKCJXSVRIICgiLCAiV0hFUkUi KTsKIAotCS8qIENvbXBsZXRlIENPUFkgPHN0aD4gRlJPTXxUTyBmaWxlbmFtZSBXSVRIICggKi8K LQllbHNlIGlmIChNYXRjaGVzKCJDT1BZfFxcY29weSIsIE1hdGNoQW55LCAiRlJPTXxUTyIsIE1h dGNoQW55LCAiV0lUSCIsICIoIikpCi0JCUNPTVBMRVRFX1dJVEgoIkZPUk1BVCIsICJGUkVFWkUi LCAiREVMSU1JVEVSIiwgIk5VTEwiLAotCQkJCQkgICJIRUFERVIiLCAiUVVPVEUiLCAiRVNDQVBF IiwgIkZPUkNFX1FVT1RFIiwKLQkJCQkJICAiRk9SQ0VfTk9UX05VTEwiLCAiRk9SQ0VfTlVMTCIs ICJFTkNPRElORyIsICJERUZBVUxUIik7CisJLyogQ29tcGxldGUgQ09QWSA8c3RoPiBGUk9NIGZp bGVuYW1lIFdJVEggKCAqLworCWVsc2UgaWYgKE1hdGNoZXMoIkNPUFl8XFxjb3B5IiwgTWF0Y2hB bnksICJGUk9NIiwgTWF0Y2hBbnksICJXSVRIIiwgIigiKSkKKwkJQ09NUExFVEVfV0lUSChDb3B5 X2Zyb21fb3B0aW9ucyk7CisKKwkvKiBDb21wbGV0ZSBDT1BZIDxzdGg+IFRPIGZpbGVuYW1lIFdJ VEggKCAqLworCWVsc2UgaWYgKE1hdGNoZXMoIkNPUFl8XFxjb3B5IiwgTWF0Y2hBbnksICJUTyIs IE1hdGNoQW55LCAiV0lUSCIsICIoIikpCisJCUNPTVBMRVRFX1dJVEgoQ29weV90b19vcHRpb25z KTsKIAogCS8qIENvbXBsZXRlIENPUFkgPHN0aD4gRlJPTXxUTyBmaWxlbmFtZSBXSVRIIChGT1JN QVQgKi8KIAllbHNlIGlmIChNYXRjaGVzKCJDT1BZfFxcY29weSIsIE1hdGNoQW55LCAiRlJPTXxU TyIsIE1hdGNoQW55LCAiV0lUSCIsICIoIiwgIkZPUk1BVCIpKQoKYmFzZS1jb21taXQ6IDc3OWYy NGMwYjdiZTVkNjY1MDRhMzBjNmQxNWFiMDQzMGJkZjU5ZTIKLS0gCjIuNDMuMAoK --=_0a3fd02917c5f926559b06ab2c72d95c Content-Transfer-Encoding: base64 Content-Type: text/x-diff; name=v3-0002-Improve-tab-completion-for-COPY-options_v17.patch Content-Disposition: attachment; filename=v3-0002-Improve-tab-completion-for-COPY-options_v17.patch; size=3259 RnJvbSAzZTM1NzEzMTQ3YjBmYjA5ZTI2MmE1MTRhYmMwNjQ4MmY3MTYyMmMyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBdHN1c2hpIFRvcmlrb3NoaSA8dG9yaWtvc2hpYUBvc3MubnR0 ZGF0YS5jb20+CkRhdGU6IFdlZCwgMiBKdWwgMjAyNSAxMzowMzo0OSArMDkwMApTdWJqZWN0OiBb UEFUQ0ggdjMgMi8yXSBJbXByb3ZlIHRhYiBjb21wbGV0aW9uIGZvciBDT1BZIG9wdGlvbnMKCkN1 cnJlbnRseSwgQ09QWSBGUk9NIGFuZCBUTyBzaGFyZSB0aGUgc2FtZSB0YWIgY29tcGxldGlvbiBy dWxlcywKZXZlbiB0aG91Z2ggc29tZSBvcHRpb25zIGFyZSBvbmx5IHZhbGlkIGZvciBvbmUgb3Ig dGhlIG90aGVyLgoKVGhpcyBwYXRjaCBzZXBhcmF0ZXMgdGhlIHRhYiBjb21wbGV0aW9uIHJ1bGVz IGZvciBDT1BZIEZST00gYW5kCkNPUFkgVE8gdG8gcHJvdmlkZSBtb3JlIGFjY3VyYXRlIHN1Z2dl c3Rpb25zLgotLS0KIHNyYy9iaW4vcHNxbC90YWItY29tcGxldGUuYyB8IDMwICsrKysrKysrKysr KysrKysrKysrKystLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDIyIGluc2VydGlvbnMoKyksIDgg ZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5jIGIv c3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5jCmluZGV4IDFiZDAxZmY4NjVmLi5jMWZhZWQ1M2Ew MSAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5jCisrKyBiL3NyYy9iaW4v cHNxbC90YWItY29tcGxldGUuYwpAQCAtMTE2OSw2ICsxMTY5LDE5IEBAIEFsdGVyX3Byb2NlZHVy ZV9vcHRpb25zLCAiQ09TVCIsICJJTU1VVEFCTEUiLCAiTEVBS1BST09GIiwgIk5PVCBMRUFLUFJP T0YiLCBcCiBBbHRlcl9yb3V0aW5lX29wdGlvbnMsICJDQUxMRUQgT04gTlVMTCBJTlBVVCIsICJS RVRVUk5TIE5VTEwgT04gTlVMTCBJTlBVVCIsIFwKICJTVFJJQ1QiLCAiU1VQUE9SVCIKIAorLyog Q09QWSBvcHRpb25zIHNoYXJlZCBiZXR3ZWVuIEZST00gYW5kIFRPICovCisjZGVmaW5lIENvcHlf Y29tbW9uX29wdGlvbnMgXAorIkRFTElNSVRFUiIsICJFTkNPRElORyIsICJFU0NBUEUiLCAiRk9S TUFUIiwgIkhFQURFUiIsICJOVUxMIiwgIlFVT1RFIgorCisvKiBDT1BZIEZST00gb3B0aW9ucyAq LworI2RlZmluZSBDb3B5X2Zyb21fb3B0aW9ucyBcCitDb3B5X2NvbW1vbl9vcHRpb25zLCAiREVG QVVMVCIsICJGT1JDRV9OT1RfTlVMTCIsICJGT1JDRV9OVUxMIiwgIkZSRUVaRSIsIFwKKyJMT0df VkVSQk9TSVRZIiwgIk9OX0VSUk9SIiwgIlJFSkVDVF9MSU1JVCIKKworLyogQ09QWSBUTyBvcHRp b25zICovCisjZGVmaW5lIENvcHlfdG9fb3B0aW9ucyBcCitDb3B5X2NvbW1vbl9vcHRpb25zLCAi Rk9SQ0VfUVVPVEUiCisKIC8qCiAgKiBUaGVzZSBvYmplY3QgdHlwZXMgd2VyZSBpbnRyb2R1Y2Vk IGxhdGVyIHRoYW4gb3VyIHN1cHBvcnQgY3V0b2ZmIG9mCiAgKiBzZXJ2ZXIgdmVyc2lvbiA5LjIu ICBXZSB1c2UgdGhlIFZlcnNpb25lZFF1ZXJ5IGluZnJhc3RydWN0dXJlIHNvIHRoYXQKQEAgLTI4 OTksMjMgKzI5MTIsMjQgQEAgcHNxbF9jb21wbGV0aW9uKGNvbnN0IGNoYXIgKnRleHQsIGludCBz dGFydCwgaW50IGVuZCkKIAllbHNlIGlmIChNYXRjaGVzKCJDT1BZfFxcY29weSIsIE1hdGNoQW55 LCAiRlJPTSIsIE1hdGNoQW55KSkKIAkJQ09NUExFVEVfV0lUSCgiV0lUSCAoIiwgIldIRVJFIik7 CiAKLQkvKiBDb21wbGV0ZSBDT1BZIDxzdGg+IEZST018VE8gZmlsZW5hbWUgV0lUSCAoICovCi0J ZWxzZSBpZiAoTWF0Y2hlcygiQ09QWXxcXGNvcHkiLCBNYXRjaEFueSwgIkZST018VE8iLCBNYXRj aEFueSwgIldJVEgiLCAiKCIpKQotCQlDT01QTEVURV9XSVRIKCJGT1JNQVQiLCAiRlJFRVpFIiwg IkRFTElNSVRFUiIsICJOVUxMIiwKLQkJCQkJICAiSEVBREVSIiwgIlFVT1RFIiwgIkVTQ0FQRSIs ICJGT1JDRV9RVU9URSIsCi0JCQkJCSAgIkZPUkNFX05PVF9OVUxMIiwgIkZPUkNFX05VTEwiLCAi RU5DT0RJTkciLCAiREVGQVVMVCIsCi0JCQkJCSAgIk9OX0VSUk9SIiwgIkxPR19WRVJCT1NJVFki KTsKKwkvKiBDb21wbGV0ZSBDT1BZIDxzdGg+IEZST00gZmlsZW5hbWUgV0lUSCAoICovCisJZWxz ZSBpZiAoTWF0Y2hlcygiQ09QWXxcXGNvcHkiLCBNYXRjaEFueSwgIkZST00iLCBNYXRjaEFueSwg IldJVEgiLCAiKCIpKQorCQlDT01QTEVURV9XSVRIKENvcHlfZnJvbV9vcHRpb25zKTsKKworCS8q IENvbXBsZXRlIENPUFkgPHN0aD4gVE8gZmlsZW5hbWUgV0lUSCAoICovCisJZWxzZSBpZiAoTWF0 Y2hlcygiQ09QWXxcXGNvcHkiLCBNYXRjaEFueSwgIlRPIiwgTWF0Y2hBbnksICJXSVRIIiwgIigi KSkKKwkJQ09NUExFVEVfV0lUSChDb3B5X3RvX29wdGlvbnMpOwogCiAJLyogQ29tcGxldGUgQ09Q WSA8c3RoPiBGUk9NfFRPIGZpbGVuYW1lIFdJVEggKEZPUk1BVCAqLwogCWVsc2UgaWYgKE1hdGNo ZXMoIkNPUFl8XFxjb3B5IiwgTWF0Y2hBbnksICJGUk9NfFRPIiwgTWF0Y2hBbnksICJXSVRIIiwg IigiLCAiRk9STUFUIikpCiAJCUNPTVBMRVRFX1dJVEgoImJpbmFyeSIsICJjc3YiLCAidGV4dCIp OwogCiAJLyogQ29tcGxldGUgQ09QWSA8c3RoPiBGUk9NIGZpbGVuYW1lIFdJVEggKE9OX0VSUk9S ICovCi0JZWxzZSBpZiAoTWF0Y2hlcygiQ09QWXxcXGNvcHkiLCBNYXRjaEFueSwgIkZST018VE8i LCBNYXRjaEFueSwgIldJVEgiLCAiKCIsICJPTl9FUlJPUiIpKQorCWVsc2UgaWYgKE1hdGNoZXMo IkNPUFl8XFxjb3B5IiwgTWF0Y2hBbnksICJGUk9NIiwgTWF0Y2hBbnksICJXSVRIIiwgIigiLCAi T05fRVJST1IiKSkKIAkJQ09NUExFVEVfV0lUSCgic3RvcCIsICJpZ25vcmUiKTsKIAogCS8qIENv bXBsZXRlIENPUFkgPHN0aD4gRlJPTSBmaWxlbmFtZSBXSVRIIChMT0dfVkVSQk9TSVRZICovCi0J ZWxzZSBpZiAoTWF0Y2hlcygiQ09QWXxcXGNvcHkiLCBNYXRjaEFueSwgIkZST018VE8iLCBNYXRj aEFueSwgIldJVEgiLCAiKCIsICJMT0dfVkVSQk9TSVRZIikpCisJZWxzZSBpZiAoTWF0Y2hlcygi Q09QWXxcXGNvcHkiLCBNYXRjaEFueSwgIkZST00iLCBNYXRjaEFueSwgIldJVEgiLCAiKCIsICJM T0dfVkVSQk9TSVRZIikpCiAJCUNPTVBMRVRFX1dJVEgoImRlZmF1bHQiLCAidmVyYm9zZSIpOwog CiAJLyogQ29tcGxldGUgQ09QWSA8c3RoPiBGUk9NIDxzdGg+IFdJVEggKDxvcHRpb25zPikgKi8K CmJhc2UtY29tbWl0OiBjNmQwZWYxNjBlOTQ4YjQzMjIyMDIwZTYxOTk5NzdjODg5Njk1MzdiCi0t IAoyLjQzLjAKCg== --=_0a3fd02917c5f926559b06ab2c72d95c Content-Transfer-Encoding: base64 Content-Type: text/x-diff; name=v3-0002-Improve-tab-completion-for-COPY-options_v15.patch Content-Disposition: attachment; filename=v3-0002-Improve-tab-completion-for-COPY-options_v15.patch; size=2485 RnJvbSA1NjVjMWQwZmE5YmZiOTU5MGQ0YmEzODY2OTBiZGE1YTZlYWFlNWU1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBdHN1c2hpIFRvcmlrb3NoaSA8dG9yaWtvc2hpYUBvc3MubnR0 ZGF0YS5jb20+CkRhdGU6IFdlZCwgMiBKdWwgMjAyNSAxNDoxMzozNyArMDkwMApTdWJqZWN0OiBb UEFUQ0ggdjMgMi8yXSBJbXByb3ZlIHRhYiBjb21wbGV0aW9uIGZvciBDT1BZIG9wdGlvbnMKCkN1 cnJlbnRseSwgQ09QWSBGUk9NIGFuZCBUTyBzaGFyZSB0aGUgc2FtZSB0YWIgY29tcGxldGlvbiBy dWxlcywKZXZlbiB0aG91Z2ggc29tZSBvcHRpb25zIGFyZSBvbmx5IHZhbGlkIGZvciBvbmUgb3Ig dGhlIG90aGVyLgoKVGhpcyBwYXRjaCBzZXBhcmF0ZXMgdGhlIHRhYiBjb21wbGV0aW9uIHJ1bGVz IGZvciBDT1BZIEZST00gYW5kCkNPUFkgVE8gdG8gcHJvdmlkZSBtb3JlIGFjY3VyYXRlIHN1Z2dl c3Rpb25zLgotLS0KIHNyYy9iaW4vcHNxbC90YWItY29tcGxldGUuYyB8IDI0ICsrKysrKysrKysr KysrKysrKystLS0tLQogMSBmaWxlIGNoYW5nZWQsIDE5IGluc2VydGlvbnMoKyksIDUgZGVsZXRp b25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5jIGIvc3JjL2Jp bi9wc3FsL3RhYi1jb21wbGV0ZS5jCmluZGV4IGY2ZTcwMTFjMjFkLi5hN2FjNDMzNjQyOCAxMDA2 NDQKLS0tIGEvc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5jCisrKyBiL3NyYy9iaW4vcHNxbC90 YWItY29tcGxldGUuYwpAQCAtMTE0Myw2ICsxMTQzLDE4IEBAIHN0YXRpYyBjb25zdCBTY2hlbWFR dWVyeSBRdWVyeV9mb3JfdHJpZ2dlcl9vZl90YWJsZSA9IHsKICIgIEZST00gcGdfY2F0YWxvZy5w Z190aW1lem9uZV9uYW1lcygpICJcCiAiIFdIRVJFIHBnX2NhdGFsb2cucXVvdGVfbGl0ZXJhbChw Z19jYXRhbG9nLmxvd2VyKG5hbWUpKSBMSUtFIHBnX2NhdGFsb2cubG93ZXIoJyVzJykiCiAKKy8q IENPUFkgb3B0aW9ucyBzaGFyZWQgYmV0d2VlbiBGUk9NIGFuZCBUTyAqLworI2RlZmluZSBDb3B5 X2NvbW1vbl9vcHRpb25zIFwKKyJERUxJTUlURVIiLCAiRU5DT0RJTkciLCAiRVNDQVBFIiwgIkZP Uk1BVCIsICJIRUFERVIiLCAiTlVMTCIsICJRVU9URSIKKworLyogQ09QWSBGUk9NIG9wdGlvbnMg Ki8KKyNkZWZpbmUgQ29weV9mcm9tX29wdGlvbnMgXAorQ29weV9jb21tb25fb3B0aW9ucywgIkZP UkNFX05PVF9OVUxMIiwgIkZPUkNFX05VTEwiLCAiRlJFRVpFIgorCisvKiBDT1BZIFRPIG9wdGlv bnMgKi8KKyNkZWZpbmUgQ29weV90b19vcHRpb25zIFwKK0NvcHlfY29tbW9uX29wdGlvbnMsICJG T1JDRV9RVU9URSIKKwogLyoKICAqIFRoZXNlIG9iamVjdCB0eXBlcyB3ZXJlIGludHJvZHVjZWQg bGF0ZXIgdGhhbiBvdXIgc3VwcG9ydCBjdXRvZmYgb2YKICAqIHNlcnZlciB2ZXJzaW9uIDkuMi4g IFdlIHVzZSB0aGUgVmVyc2lvbmVkUXVlcnkgaW5mcmFzdHJ1Y3R1cmUgc28gdGhhdApAQCAtMjcz OCwxMSArMjc1MCwxMyBAQCBwc3FsX2NvbXBsZXRpb24oY29uc3QgY2hhciAqdGV4dCwgaW50IHN0 YXJ0LCBpbnQgZW5kKQogCWVsc2UgaWYgKE1hdGNoZXMoIkNPUFl8XFxjb3B5IiwgTWF0Y2hBbnks ICJGUk9NIiwgTWF0Y2hBbnkpKQogCQlDT01QTEVURV9XSVRIKCJXSVRIICgiLCAiV0hFUkUiKTsK IAotCS8qIENvbXBsZXRlIENPUFkgPHN0aD4gRlJPTXxUTyBmaWxlbmFtZSBXSVRIICggKi8KLQll bHNlIGlmIChNYXRjaGVzKCJDT1BZfFxcY29weSIsIE1hdGNoQW55LCAiRlJPTXxUTyIsIE1hdGNo QW55LCAiV0lUSCIsICIoIikpCi0JCUNPTVBMRVRFX1dJVEgoIkZPUk1BVCIsICJGUkVFWkUiLCAi REVMSU1JVEVSIiwgIk5VTEwiLAotCQkJCQkgICJIRUFERVIiLCAiUVVPVEUiLCAiRVNDQVBFIiwg IkZPUkNFX1FVT1RFIiwKLQkJCQkJICAiRk9SQ0VfTk9UX05VTEwiLCAiRk9SQ0VfTlVMTCIsICJF TkNPRElORyIpOworCS8qIENvbXBsZXRlIENPUFkgPHN0aD4gRlJPTSBmaWxlbmFtZSBXSVRIICgg Ki8KKwllbHNlIGlmIChNYXRjaGVzKCJDT1BZfFxcY29weSIsIE1hdGNoQW55LCAiRlJPTSIsIE1h dGNoQW55LCAiV0lUSCIsICIoIikpCisJCUNPTVBMRVRFX1dJVEgoQ29weV9mcm9tX29wdGlvbnMp OworCisJLyogQ29tcGxldGUgQ09QWSA8c3RoPiBUTyBmaWxlbmFtZSBXSVRIICggKi8KKwllbHNl IGlmIChNYXRjaGVzKCJDT1BZfFxcY29weSIsIE1hdGNoQW55LCAiVE8iLCBNYXRjaEFueSwgIldJ VEgiLCAiKCIpKQorCQlDT01QTEVURV9XSVRIKENvcHlfdG9fb3B0aW9ucyk7CiAKIAkvKiBDb21w bGV0ZSBDT1BZIDxzdGg+IEZST018VE8gZmlsZW5hbWUgV0lUSCAoRk9STUFUICovCiAJZWxzZSBp ZiAoTWF0Y2hlcygiQ09QWXxcXGNvcHkiLCBNYXRjaEFueSwgIkZST018VE8iLCBNYXRjaEFueSwg IldJVEgiLCAiKCIsICJGT1JNQVQiKSkKCmJhc2UtY29tbWl0OiAzN2IxZmNlODU4NjcyYmNkMDM1 MGMyNGE5YzVlNDY4OWRlM2E2Y2I3Ci0tIAoyLjQzLjAKCg== --=_0a3fd02917c5f926559b06ab2c72d95c Content-Transfer-Encoding: base64 Content-Type: text/x-diff; name=v3-0002-Improve-tab-completion-for-COPY-options_v14.patch Content-Disposition: attachment; filename=v3-0002-Improve-tab-completion-for-COPY-options_v14.patch; size=2453 RnJvbSA0MzhmZTI2NTAxODFjZTM0ZTY2OTY4YjQ2NjdkZmY3YmE5MDY2M2NiIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBdHN1c2hpIFRvcmlrb3NoaSA8dG9yaWtvc2hpYUBvc3MubnR0 ZGF0YS5jb20+CkRhdGU6IFdlZCwgMiBKdWwgMjAyNSAxNDoyNjozMiArMDkwMApTdWJqZWN0OiBb UEFUQ0ggdjMgMi8yXSBJbXByb3ZlIHRhYiBjb21wbGV0aW9uIGZvciBDT1BZIG9wdGlvbnMKCkN1 cnJlbnRseSwgQ09QWSBGUk9NIGFuZCBUTyBzaGFyZSB0aGUgc2FtZSB0YWIgY29tcGxldGlvbiBy dWxlcywKZXZlbiB0aG91Z2ggc29tZSBvcHRpb25zIGFyZSBvbmx5IHZhbGlkIGZvciBvbmUgb3Ig dGhlIG90aGVyLgoKVGhpcyBwYXRjaCBzZXBhcmF0ZXMgdGhlIHRhYiBjb21wbGV0aW9uIHJ1bGVz IGZvciBDT1BZIEZST00gYW5kCkNPUFkgVE8gdG8gcHJvdmlkZSBtb3JlIGFjY3VyYXRlIHN1Z2dl c3Rpb25zLgotLS0KIHNyYy9iaW4vcHNxbC90YWItY29tcGxldGUuYyB8IDI0ICsrKysrKysrKysr KysrKysrKystLS0tLQogMSBmaWxlIGNoYW5nZWQsIDE5IGluc2VydGlvbnMoKyksIDUgZGVsZXRp b25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5jIGIvc3JjL2Jp bi9wc3FsL3RhYi1jb21wbGV0ZS5jCmluZGV4IDViOTA5ZDZmM2EwLi43ZTM2Y2IxMTk3MyAxMDA2 NDQKLS0tIGEvc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5jCisrKyBiL3NyYy9iaW4vcHNxbC90 YWItY29tcGxldGUuYwpAQCAtMTAyMiw2ICsxMDIyLDE4IEBAIHN0YXRpYyBjb25zdCBTY2hlbWFR dWVyeSBRdWVyeV9mb3JfbGlzdF9vZl9jb2xsYXRpb25zID0gewogIiAgIEZST00gcGdfY2F0YWxv Zy5wZ19jdXJzb3JzICJcCiAiICBXSEVSRSBzdWJzdHJpbmcocGdfY2F0YWxvZy5xdW90ZV9pZGVu dChuYW1lKSwxLCVkKT0nJXMnIgogCisvKiBDT1BZIG9wdGlvbnMgc2hhcmVkIGJldHdlZW4gRlJP TSBhbmQgVE8gKi8KKyNkZWZpbmUgQ29weV9jb21tb25fb3B0aW9ucyBcCisiREVMSU1JVEVSIiwg IkVOQ09ESU5HIiwgIkVTQ0FQRSIsICJGT1JNQVQiLCAiSEVBREVSIiwgIk5VTEwiLCAiUVVPVEUi CisKKy8qIENPUFkgRlJPTSBvcHRpb25zICovCisjZGVmaW5lIENvcHlfZnJvbV9vcHRpb25zIFwK K0NvcHlfY29tbW9uX29wdGlvbnMsICJGT1JDRV9OT1RfTlVMTCIsICJGT1JDRV9OVUxMIiwgIkZS RUVaRSIKKworLyogQ09QWSBUTyBvcHRpb25zICovCisjZGVmaW5lIENvcHlfdG9fb3B0aW9ucyBc CitDb3B5X2NvbW1vbl9vcHRpb25zLCAiRk9SQ0VfUVVPVEUiCisKIC8qCiAgKiBUaGVzZSBvYmpl Y3QgdHlwZXMgd2VyZSBpbnRyb2R1Y2VkIGxhdGVyIHRoYW4gb3VyIHN1cHBvcnQgY3V0b2ZmIG9m CiAgKiBzZXJ2ZXIgdmVyc2lvbiA3LjQuICBXZSB1c2UgdGhlIFZlcnNpb25lZFF1ZXJ5IGluZnJh c3RydWN0dXJlIHNvIHRoYXQKQEAgLTI0NDcsMTEgKzI0NTksMTMgQEAgcHNxbF9jb21wbGV0aW9u KGNvbnN0IGNoYXIgKnRleHQsIGludCBzdGFydCwgaW50IGVuZCkKIAllbHNlIGlmIChNYXRjaGVz KCJDT1BZfFxcY29weSIsIE1hdGNoQW55LCAiRlJPTSIsIE1hdGNoQW55KSkKIAkJQ09NUExFVEVf V0lUSCgiV0lUSCAoIiwgIldIRVJFIik7CiAKLQkvKiBDb21wbGV0ZSBDT1BZIDxzdGg+IEZST018 VE8gZmlsZW5hbWUgV0lUSCAoICovCi0JZWxzZSBpZiAoTWF0Y2hlcygiQ09QWXxcXGNvcHkiLCBN YXRjaEFueSwgIkZST018VE8iLCBNYXRjaEFueSwgIldJVEgiLCAiKCIpKQotCQlDT01QTEVURV9X SVRIKCJGT1JNQVQiLCAiRlJFRVpFIiwgIkRFTElNSVRFUiIsICJOVUxMIiwKLQkJCQkJICAiSEVB REVSIiwgIlFVT1RFIiwgIkVTQ0FQRSIsICJGT1JDRV9RVU9URSIsCi0JCQkJCSAgIkZPUkNFX05P VF9OVUxMIiwgIkZPUkNFX05VTEwiLCAiRU5DT0RJTkciKTsKKwkvKiBDb21wbGV0ZSBDT1BZIDxz dGg+IEZST00gZmlsZW5hbWUgV0lUSCAoICovCisJZWxzZSBpZiAoTWF0Y2hlcygiQ09QWXxcXGNv cHkiLCBNYXRjaEFueSwgIkZST00iLCBNYXRjaEFueSwgIldJVEgiLCAiKCIpKQorCQlDT01QTEVU RV9XSVRIKENvcHlfZnJvbV9vcHRpb25zKTsKKworCS8qIENvbXBsZXRlIENPUFkgPHN0aD4gVE8g ZmlsZW5hbWUgV0lUSCAoICovCisJZWxzZSBpZiAoTWF0Y2hlcygiQ09QWXxcXGNvcHkiLCBNYXRj aEFueSwgIlRPIiwgTWF0Y2hBbnksICJXSVRIIiwgIigiKSkKKwkJQ09NUExFVEVfV0lUSChDb3B5 X3RvX29wdGlvbnMpOwogCiAJLyogQ29tcGxldGUgQ09QWSA8c3RoPiBGUk9NfFRPIGZpbGVuYW1l IFdJVEggKEZPUk1BVCAqLwogCWVsc2UgaWYgKE1hdGNoZXMoIkNPUFl8XFxjb3B5IiwgTWF0Y2hB bnksICJGUk9NfFRPIiwgTWF0Y2hBbnksICJXSVRIIiwgIigiLCAiRk9STUFUIikpCgpiYXNlLWNv bW1pdDogZTM1YTAxNzRhOWQyOWM0ZGFjMGYyZjZmNzJlZTgwNGU4M2UzMTgyNQotLSAKMi40My4w Cgo= --=_0a3fd02917c5f926559b06ab2c72d95c Content-Transfer-Encoding: base64 Content-Type: text/x-diff; name=v3-0002-Improve-tab-completion-for-COPY-options_v18.patch Content-Disposition: attachment; filename=v3-0002-Improve-tab-completion-for-COPY-options_v18.patch; size=3284 RnJvbSAzMDUwMTM4NmNkNjYwZTkyODEwYTQxNzAwOWM4NzlkYTMyMjVkMDg1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBdHN1c2hpIFRvcmlrb3NoaSA8dG9yaWtvc2hpYUBvc3MubnR0 ZGF0YS5jb20+CkRhdGU6IFdlZCwgMiBKdWwgMjAyNSAxMTozOToxNSArMDkwMApTdWJqZWN0OiBb UEFUQ0ggdjMgMi8yXSBJbXByb3ZlIHRhYiBjb21wbGV0aW9uIGZvciBDT1BZIG9wdGlvbnMKCkN1 cnJlbnRseSwgQ09QWSBGUk9NIGFuZCBUTyBzaGFyZSB0aGUgc2FtZSB0YWIgY29tcGxldGlvbiBy dWxlcywKZXZlbiB0aG91Z2ggc29tZSBvcHRpb25zIGFyZSBvbmx5IHZhbGlkIGZvciBvbmUgb3Ig dGhlIG90aGVyLgoKVGhpcyBwYXRjaCBzZXBhcmF0ZXMgdGhlIHRhYiBjb21wbGV0aW9uIHJ1bGVz IGZvciBDT1BZIEZST00gYW5kCkNPUFkgVE8gdG8gcHJvdmlkZSBtb3JlIGFjY3VyYXRlIHN1Z2dl c3Rpb25zLgoKLS0tCiBzcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmluLmMgfCAzMCArKysrKysr KysrKysrKysrKysrKysrLS0tLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCAyMiBpbnNlcnRpb25zKCsp LCA4IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcHNxbC90YWItY29tcGxldGUu aW4uYyBiL3NyYy9iaW4vcHNxbC90YWItY29tcGxldGUuaW4uYwppbmRleCA5MDhlZWY5N2M2ZS4u ZjI3MzRmOGYyNzMgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcHNxbC90YWItY29tcGxldGUuaW4uYwor KysgYi9zcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmluLmMKQEAgLTExOTAsNiArMTE5MCwxOSBA QCBBbHRlcl9wcm9jZWR1cmVfb3B0aW9ucywgIkNPU1QiLCAiSU1NVVRBQkxFIiwgIkxFQUtQUk9P RiIsICJOT1QgTEVBS1BST09GIiwgXAogQWx0ZXJfcm91dGluZV9vcHRpb25zLCAiQ0FMTEVEIE9O IE5VTEwgSU5QVVQiLCAiUkVUVVJOUyBOVUxMIE9OIE5VTEwgSU5QVVQiLCBcCiAiU1RSSUNUIiwg IlNVUFBPUlQiCiAKKy8qIENPUFkgb3B0aW9ucyBzaGFyZWQgYmV0d2VlbiBGUk9NIGFuZCBUTyAq LworI2RlZmluZSBDb3B5X2NvbW1vbl9vcHRpb25zIFwKKyJERUxJTUlURVIiLCAiRU5DT0RJTkci LCAiRVNDQVBFIiwgIkZPUk1BVCIsICJIRUFERVIiLCAiTlVMTCIsICJRVU9URSIKKworLyogQ09Q WSBGUk9NIG9wdGlvbnMgKi8KKyNkZWZpbmUgQ29weV9mcm9tX29wdGlvbnMgXAorQ29weV9jb21t b25fb3B0aW9ucywgIkRFRkFVTFQiLCAiRk9SQ0VfTk9UX05VTEwiLCAiRk9SQ0VfTlVMTCIsICJG UkVFWkUiLCBcCisiTE9HX1ZFUkJPU0lUWSIsICJPTl9FUlJPUiIsICJSRUpFQ1RfTElNSVQiCisK Ky8qIENPUFkgVE8gb3B0aW9ucyAqLworI2RlZmluZSBDb3B5X3RvX29wdGlvbnMgXAorQ29weV9j b21tb25fb3B0aW9ucywgIkZPUkNFX1FVT1RFIgorCiAvKgogICogVGhlc2Ugb2JqZWN0IHR5cGVz IHdlcmUgaW50cm9kdWNlZCBsYXRlciB0aGFuIG91ciBzdXBwb3J0IGN1dG9mZiBvZgogICogc2Vy dmVyIHZlcnNpb24gOS4yLiAgV2UgdXNlIHRoZSBWZXJzaW9uZWRRdWVyeSBpbmZyYXN0cnVjdHVy ZSBzbyB0aGF0CkBAIC0zMjg0LDIzICszMjk3LDI0IEBAIG1hdGNoX3ByZXZpb3VzX3dvcmRzKGlu dCBwYXR0ZXJuX2lkLAogCWVsc2UgaWYgKE1hdGNoZXMoIkNPUFl8XFxjb3B5IiwgTWF0Y2hBbnks ICJGUk9NIiwgTWF0Y2hBbnkpKQogCQlDT01QTEVURV9XSVRIKCJXSVRIICgiLCAiV0hFUkUiKTsK IAotCS8qIENvbXBsZXRlIENPUFkgPHN0aD4gRlJPTXxUTyBmaWxlbmFtZSBXSVRIICggKi8KLQll bHNlIGlmIChNYXRjaGVzKCJDT1BZfFxcY29weSIsIE1hdGNoQW55LCAiRlJPTXxUTyIsIE1hdGNo QW55LCAiV0lUSCIsICIoIikpCi0JCUNPTVBMRVRFX1dJVEgoIkZPUk1BVCIsICJGUkVFWkUiLCAi REVMSU1JVEVSIiwgIk5VTEwiLAotCQkJCQkgICJIRUFERVIiLCAiUVVPVEUiLCAiRVNDQVBFIiwg IkZPUkNFX1FVT1RFIiwKLQkJCQkJICAiRk9SQ0VfTk9UX05VTEwiLCAiRk9SQ0VfTlVMTCIsICJF TkNPRElORyIsICJERUZBVUxUIiwKLQkJCQkJICAiT05fRVJST1IiLCAiTE9HX1ZFUkJPU0lUWSIs ICJSRUpFQ1RfTElNSVQiKTsKKwkvKiBDb21wbGV0ZSBDT1BZIDxzdGg+IEZST00gZmlsZW5hbWUg V0lUSCAoICovCisJZWxzZSBpZiAoTWF0Y2hlcygiQ09QWXxcXGNvcHkiLCBNYXRjaEFueSwgIkZS T00iLCBNYXRjaEFueSwgIldJVEgiLCAiKCIpKQorCQlDT01QTEVURV9XSVRIKENvcHlfZnJvbV9v cHRpb25zKTsKKworCS8qIENvbXBsZXRlIENPUFkgPHN0aD4gVE8gZmlsZW5hbWUgV0lUSCAoICov CisJZWxzZSBpZiAoTWF0Y2hlcygiQ09QWXxcXGNvcHkiLCBNYXRjaEFueSwgIlRPIiwgTWF0Y2hB bnksICJXSVRIIiwgIigiKSkKKwkJQ09NUExFVEVfV0lUSChDb3B5X3RvX29wdGlvbnMpOwogCiAJ LyogQ29tcGxldGUgQ09QWSA8c3RoPiBGUk9NfFRPIGZpbGVuYW1lIFdJVEggKEZPUk1BVCAqLwog CWVsc2UgaWYgKE1hdGNoZXMoIkNPUFl8XFxjb3B5IiwgTWF0Y2hBbnksICJGUk9NfFRPIiwgTWF0 Y2hBbnksICJXSVRIIiwgIigiLCAiRk9STUFUIikpCiAJCUNPTVBMRVRFX1dJVEgoImJpbmFyeSIs ICJjc3YiLCAidGV4dCIpOwogCiAJLyogQ29tcGxldGUgQ09QWSA8c3RoPiBGUk9NIGZpbGVuYW1l IFdJVEggKE9OX0VSUk9SICovCi0JZWxzZSBpZiAoTWF0Y2hlcygiQ09QWXxcXGNvcHkiLCBNYXRj aEFueSwgIkZST018VE8iLCBNYXRjaEFueSwgIldJVEgiLCAiKCIsICJPTl9FUlJPUiIpKQorCWVs c2UgaWYgKE1hdGNoZXMoIkNPUFl8XFxjb3B5IiwgTWF0Y2hBbnksICJGUk9NIiwgTWF0Y2hBbnks ICJXSVRIIiwgIigiLCAiT05fRVJST1IiKSkKIAkJQ09NUExFVEVfV0lUSCgic3RvcCIsICJpZ25v cmUiKTsKIAogCS8qIENvbXBsZXRlIENPUFkgPHN0aD4gRlJPTSBmaWxlbmFtZSBXSVRIIChMT0df VkVSQk9TSVRZICovCi0JZWxzZSBpZiAoTWF0Y2hlcygiQ09QWXxcXGNvcHkiLCBNYXRjaEFueSwg IkZST018VE8iLCBNYXRjaEFueSwgIldJVEgiLCAiKCIsICJMT0dfVkVSQk9TSVRZIikpCisJZWxz ZSBpZiAoTWF0Y2hlcygiQ09QWXxcXGNvcHkiLCBNYXRjaEFueSwgIkZST00iLCBNYXRjaEFueSwg IldJVEgiLCAiKCIsICJMT0dfVkVSQk9TSVRZIikpCiAJCUNPTVBMRVRFX1dJVEgoInNpbGVudCIs ICJkZWZhdWx0IiwgInZlcmJvc2UiKTsKIAogCS8qIENvbXBsZXRlIENPUFkgPHN0aD4gRlJPTSA8 c3RoPiBXSVRIICg8b3B0aW9ucz4pICovCgpiYXNlLWNvbW1pdDogYjg5N2E1ODU1NmQ4YzI5MzY2 YWU5ODBkNjViZjVlOTBkYWY3MDk4ZQotLSAKMi40My4wCgo= --=_0a3fd02917c5f926559b06ab2c72d95c--