Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1w84fk-000BeS-38 for pgsql-hackers@arkaria.postgresql.org; Wed, 01 Apr 2026 23:08:29 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1w84fj-002qRG-2E for pgsql-hackers@arkaria.postgresql.org; Wed, 01 Apr 2026 23:08:28 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1w84fj-002qR8-0P for pgsql-hackers@lists.postgresql.org; Wed, 01 Apr 2026 23:08:27 +0000 Received: from mail-oo1-xc31.google.com ([2607:f8b0:4864:20::c31]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1w84fg-000000005YO-3kig for pgsql-hackers@postgresql.org; Wed, 01 Apr 2026 23:08:26 +0000 Received: by mail-oo1-xc31.google.com with SMTP id 006d021491bc7-67bb3fe55a5so104502eaf.2 for ; Wed, 01 Apr 2026 16:08:24 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1775084904; cv=none; d=google.com; s=arc-20240605; b=Kji6FL3u7wv1hxEseHMrLfsSJt7P+djMttcDdnnM5qkZSD3ukr/QGo9zYxshvxuf4d 1rb7z+lfi26DM3RdjZ62aCAIg/JGFAgkgn4CCFU5ggwK/LB33XqDFd2gZFEdwfoQFbHp 8PVhfX/biHjAmcJpK5Gqx3qp+3k5JY8O9ovQ5nGwsv/ZchgdHRVR/o5jSilDX7CTJ+3+ vjWpPHzacALKk2HucRFnt7AlmqwNV+7J+w9BJecGIPd48x/zlCRK9/wOEghp2HMHMp4X S9A7V20TYdY03RUmBKrOIPQizeh70+vXyNsQ6+/fWLduaUbHUzV5qlZsGBk8jA3ThXBU 6E2w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=gyAACd3qGi5xSn4YPQFle1YdO3UeKq+seNxgbx07f+c=; fh=VGa3R0oa0FRPcN78guNd6FDHXGrtR/KPANZSzaQ3HZw=; b=lPvrOnWmS2vZuzt/ZICcoJZcYT87Aicg8b6ODJw7tkxWxZLxFXB28orOwhWG9d11UL tS3qAg7qwjmYbvdgnJuB3Rzc6zOeJtY814e5XEMH6R82363UBgZbTlbzkgx/O6/MFFfu pc9puUUfr0iYDWNz1wOkDz0bEAQKM3k/ugjcGsXZtJXoq1dFwcufO0ybTzdIZr83AJoR 45K1K1vml7u4SGMbGv2WkuNYkN4AWvszPEiwFkUa3DR1TsLRGtiKOFlzxWx2AeMGI6Cr w5y94ztjSw/OGz5p0rmltSGH8NVIIj+QLHS0J051/DzdHg+CCYlJrY3k0U2mPo5Oqnin ehTQ==; darn=postgresql.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1775084904; x=1775689704; darn=postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=gyAACd3qGi5xSn4YPQFle1YdO3UeKq+seNxgbx07f+c=; b=o1FHR3ehBTm1jS7JuQbeFS2JjBVShgxR4bTcyVakevG6B/d9uHCG5iGMqwahwQKVJJ CCJDGxQ1tXQSfD0w1VAQqsdyVrMDEtKNhDAsGdEKbwHS8NLyeZZa3wVrA0hN8QAcONg3 aamSCoivPvYk8oROrh27yi1hmSGAD94Ve/FMdUm6p8xsAe8Hw3Li3xCZiwaPv1uWq4KF uG/Q0a0By4IwmvwLDRyQ4FtuKqFTN0BCrb5kuuxZQIUgZetP90IUzSztoqHxqHF7oo29 8aiqPXjTqHEA8GW1X1eyuHqjAEW7nNqcHUSXE5yb5XcYdiB0AmeeNhVLJyroZkYyokad zk0A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1775084904; x=1775689704; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=gyAACd3qGi5xSn4YPQFle1YdO3UeKq+seNxgbx07f+c=; b=FXG/jG9MSyz05CJoqJS3sTMcfnX5yu/+VUP9FWUFpDFyV2+QsC9u/uwuauLEl97mVo Ybc3vFCDRBwhT4ZPzNPrWfgvX9YCKEUUZmP6oNKL8yIQkJXAXeIicPSqnFQP7fJjewWm ivrHgsC685eav6p1ufkMRY42D5/UhZ+wtASdlyKbX4Dfvzu2uTflwQY0KKnI4V2CE24+ Hd4ycOfrcTI52dZEwExnhDLzgolgcB5njcF8pQSlHRelHB5SrCWibLm7iHTLvoqlsbQ5 D2MkhKZ4k03rqwD3w0+H3J23bRSLZQlhauMV2xqVXmZVHtmHDhfT90jp4dUP6p/S8UCn WNKQ== X-Gm-Message-State: AOJu0YxhXuAI4KdOCPcHXln/1JP0Ra4cdukna5ucyqq1q0eufcaZ2YfP gAVieJ3bMnKwryl7AP4lfOxF+PAZWpzbIajOOXJyslC7G+usBsAPcTLFAnJWaT1zXx19nekDSNY 3Gzw4D4oJD22Pbd+YcODcrTWBJyEO4XhPF1Vf X-Gm-Gg: ATEYQzyCfnH/Yiu+BJW4cCnecfVlivUhTg7iNHfHSGQpu6AxAtqG04wSDmryR0cQtqn 6aRR0Bmlqux+T+YAvyVkDbMtaAiiELNhwIEGdljRj/OFg/3eQ7Z8B89wqZCw6vPgOVz1hsx2m/z sMuWfpFvuyD+TgOCeyEDF9teAg2E+ABVcJrnFcgm0YLh1q4MxwXGi21hGVb/8wUhZzsuFes0r6F EHQ+dfC6IwxhDMGBs2fXR9AFtGRla37g96yC23ozVacmgKMiQg3+3ZwVNWOi9mENdGm0O0+UoPz nlbD82WyTJGh6T+/Y6W8XXbQFd4N1zy6Xv79TEj0n8N1td0/h38V0Xie2uPEQ1zDoAue X-Received: by 2002:a05:6820:f024:b0:67e:430b:eb88 with SMTP id 006d021491bc7-680a65bc04amr683402eaf.29.1775084904292; Wed, 01 Apr 2026 16:08:24 -0700 (PDT) MIME-Version: 1.0 References: <9FF1E1E8-D9EE-43C5-ADFA-7AE94BA57159@yandex-team.ru> <3e670a40754bb687d163f21d82af96f059f3d472.camel@cybertec.at> In-Reply-To: <3e670a40754bb687d163f21d82af96f059f3d472.camel@cybertec.at> From: Andrew Jackson Date: Wed, 1 Apr 2026 18:07:47 -0500 X-Gm-Features: AQROBzCAeqjoQCA58P-Oog2OcVJixA-BwI5ojok27lNfyKDpDiDI7cmMQNHHqJI Message-ID: Subject: Re: Add ldapservice connection parameter To: Laurenz Albe Cc: pgsql-hackers , Roman Khapov , niushiji@gmail.com Content-Type: multipart/mixed; boundary="0000000000002ac1c1064e6e29b3" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000002ac1c1064e6e29b3 Content-Type: text/plain; charset="UTF-8" Attached is an updated patch. > I think there should be more tests for failure. This is fixed. I have added a new suite of tests that cover various (but not exhaustive) failure scenarios within ldapServiceLookup. Prior to this patch there were no tests for failure within ldapServiceLookup so I think it's an improvement. I have also added 5 additional tests to validate corner cases around the new ldapserviceurl functionality. > Good, but you should append something to the "errorMessage", like conninfo_add_defaults() does elsewhere. Added an error append in this patch. It has the impact of printing 2 lines of errors on failure though: one from the newly appended message and one from ldapServiceLookup. Not sure if there are other examples of this behavior in libpq. Will look into this more tommorow. > About the tests: there is one test "connection fails with ldapserviceurl specified in pg_service.conf file", but it doesn't look like it is doing what it says. You are correct, this test was incorrect. All of the tests should now have expected_stdout/stderr conditions so they should be a lot more precise now. > The version number of the patches should be before that, like v5-0001-First-patch-version-5.patch Understood. All future patches will be attached in this manner. > I think it is confusing to repurpose an existing parameter like that. Understood. Will stick to the idea of using a new connection parameter. Thanks, Andrew Jackson --0000000000002ac1c1064e6e29b3 Content-Type: text/x-patch; charset="US-ASCII"; name="v6-0001-Add-ldapservice-connection-parameter.patch" Content-Disposition: attachment; filename="v6-0001-Add-ldapservice-connection-parameter.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mngmysrz0 RnJvbSBjMmZiZjk0MjQ1NjFiNWUzZTlkMjBmZGEyNDVjMzIxZjk3YzhmODE4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbmRyZXcgSmFja3NvbiA8YW5kcmV3amFja3Nvbjk0N0BnbWFp bC5jb20+CkRhdGU6IFNhdCwgMjggTWFyIDIwMjYgMjM6Mjk6NDggLTA1MDAKU3ViamVjdDogW1BB VENIXSBBZGQgbGRhcHNlcnZpY2UgY29ubmVjdGlvbiBwYXJhbWV0ZXIKCkN1cnJlbnRseSB0aGVy ZSBleGlzdHMsIG9ubHkgaW4gcGdfc2VydmljZS5jb25mLCB0aGUgYWJpbGl0eSB0byBsb29rCnVw IGNvbm5lY3Rpb24gcGFyYW1ldGVycyBmcm9tIGEgY2VudHJhbGl6ZWQgTERBUCBzZXJ2ZXIuIFRo aXMgcGF0Y2gKZXhwYW5kcyB0aGUgdXNhYmlsaXR5IG9mIHRoaXMgYmUgYWxsb3dpbmcgaXQgdG8g YmUgc3BlY2lmaWVkIGRpcmVjdGx5IGluCmEgY29ubmVjdGlvbiBzdHJpbmcgaW5zdGVhZCBvZiBv bmx5IGluIGEgcGdfc2VydmljZS5jb25mIGZpbGUuCgpUaGlzIGFkZHMgdGhlIFBHTERBUFNFUlZJ Q0UgZW52IHZhciB0aGF0IHByb3ZpZGVzIGFuIGVudnZhciBpbnRlcmZhY2UKdG8gdGhpcyBmdW5j dGlvbmFsaXR5LiBBbHNvIHRoZSBmdW5jdGlvbmFsaXR5IGhhcyBiZWVuIG1vdmVkIHRvCmNvbm5p bmZvX2FkZF9kZWZhdWx0cyBhZnRlciByZXZpZXcuIEFsc28gMiB0ZXN0cyBoYXZlIGJlZW4gYWRk ZWQuIE9uZSB0bwp2YWxpZGF0ZSB0aGUgZW52IHZhciBmdW5jdGlvbmFsaXR5IGFuZCBvbmUgdG8g dmFsaWRhdGUgdGhhdCB0aGlzCnBhcmFtZXRlciBpcyBpZ25vcmVkIHdoZW4gdXNlZCBpbiBwZ19z ZXJ2aWNlLmNvbmYgZmlsZXMuCgotLSB2NSBwYXRjaCBjaGFuZ2VzClRoaXMgcGF0Y2ggY2hhbmdl cyB0aGUgcmVsZXZhbnQgbmFtaW5nIGZyb20gbGRhcHNlcnZpY2UgdG8KbGRhcHNlcnZpY2V1cmwu IEkgYWxzbyBhZGQgYSBjb21tZW50IGFib3ZlIHRoZSBuZXcgbGRhcHNlcnZpY2Vsb29rdXAKY2Fs bCB0aGF0IGV4cGxhaW5zIHRoZSByZWFzb25pbmcgZm9yIGlnbm9yaW5nIGFsbCBub24gemVybyBy ZXR1cm4gY29kZXMuCkFsc28gSSBpbmNyZWFzZSB0aGUgdmFsdWUgb2YgZGlzcHNpemUgZm9yIGxk YXBzZXJ2aWNldXJsIGZyb20gMjAgdG8gNjQuCkl0IGNvdWxkIGJlIHJlYXNvbmFibGUgdG8gaW5j cmVhc2UgaXQgcGFzdCA2NCwgd2FzIG9yaWdpbmFsbHkgdGhpbmtpbmcKYWJvdXQgYnVtcGluZyBp dCB0byAxMDI0IGJ1dCBJIGFtIG5vdCBzdXJlIHdoYXQgdGhlc2UgdmFsdWVzIGFyZSB1c2VkCmZv ciBpbiB0aGUgY29kZWJhc2UgYW5kIHRob3VnaHQgaXQgd2FzIHNhZmVyIHRvIGp1c3QgYnVtcCBp dCB0byB0aGUKY3VycmVudGx5IGV4aXN0aW5nIG1heCBmb3IgYW55IHBhcmFtZXRlci4gTW92ZXMg dGhlIHBsYWNlbWVudCBvZgpsZGFwc2VydmljZXVybCB0byBiZWxvdyB0aGUgR1NTIG9wdGlvbnMg YW5kIGFkZHMgYSBjb21tZW50IGV4cGxhaW5pbmcKdGhhdCB0aGUgcGFyYW1ldGVyIGlzIGV4cG9z ZWQgZXZlbiBpbiBub24gTERBUCBidWlsZHMuIFRoaXMgd2FzIGRvbmUgdG8KcmVmbGVjdCBzaW1p bGFyIGNvbW1lbnRzIGluIEdTUy9TU0wsIHRob3VnaCB0aGlzIGNvbW1lbnQgZG9lcyBub3QgZXhp c3QKZm9yIHRoZSBuZXcgT0FVVEggcGFyYW1ldGVycyBzbyB0aGlzIG1heSBub3QgaGF2ZSBiZWVu IGEgZ29vZCBjaG9pY2UuCkFsc28gQWRkIGZpbGVuYW1lIHRhZ3MgdG8gZmlsZW5hbWUgcmVmZXJl bmNlIGluIGRvY3MKCi0tIHY2IHBhdGNoIGNoYW5nZXMKCi0gVXBkYXRlZCBsaWJwcS5zZ21sIHdp dGggYWRkaXRpb25hbCB2ZXJiaWFnZSBhcm91bmQgY29ybmVyIGNhc2VzCiAgaW50ZXJhY3Rpb25z IGJldHdlZW4gZGlmZmVyZW50IHBhcmFtZXRlciBzZXR0aW5ncywgZXRjCi0gQ2hhbmdlZCBleGlz dGluZyBndWFyZCBpbiBzZXJ2aWNlIGZpbGUgcGFyc2UgZnJvbSAibGRhcCIgdG8gImxkYXA6Igog IHRvIGFjY29tb2RhdGUgbmV3IGNvbm5lY3Rpb24gcGFyYW1ldGVyIHRoYXQgYmVnaW4gd2l0aCAi bGRhcCIKLSBBZGQgZXJyb3IgcmFpc2luZyBmb3IgbGRhcHNlcnZpY2V1cmwgZm91bmQgZHVyaW5n IHBnX3NlcnZpY2UuY29uZgogIHBhcnNlCi0gYWRkIGxpYnBxIGFwcGVuZCBlcnJvciBtZXNzYWdl Ci0gRXhwYW5kZWQgdW5pdCB0ZXN0cwogICAgLSBBZGRlZCA2IG5ldyBMREFQIGVudHJpZXMgZm9y IGRpZmZlcmVudCB0ZXN0IHNjZW5hcmlvcwogICAgLSBFbnN1cmVkIHRoYXQgd2UgYXJlIGFzc2Vy dGluZyBleHBlY3RlZF9zdGRvdXQgZm9yIGV2ZXJ5IHRlc3QKICAgIC0gQWRkZWQgc2V0IG9mIHVu aXQgdGVzdHMgdGhhdCBjb3ZlciBlcnJvciBjb25kaXRpb25zIGluCiAgICAgIGxkYXBTZXJ2aWNl TG9va3VwIHRoYXQgYXJlIGN1cnJlbnRseSBub3QgdGVzdGVkIGluIHBvc3RncmVzCiAgICAgIGNv ZGViYXNlCiAgICAtIEFkZGVkIDUgbmV3IHRlc3RzIHRoYXQgY292ZXIgY29ybmVyIGNhc2VzIG9m IG5ldyBsZGFwc2VydmljZXVybAogICAgICBmdW5jdGlvbmFsaXR5Ci0tLQogZG9jL3NyYy9zZ21s L2xpYnBxLnNnbWwgICAgICAgICAgICAgICAgICAgICAgIHwgIDQzICsrKy0KIHNyYy9pbnRlcmZh Y2VzL2xpYnBxL2ZlLWNvbm5lY3QuYyAgICAgICAgICAgICB8ICA0MyArKystCiBzcmMvaW50ZXJm YWNlcy9saWJwcS9saWJwcS1pbnQuaCAgICAgICAgICAgICAgfCAgIDEgKwogLi4uL3QvMDAzX2xk YXBfY29ubmVjdGlvbl9wYXJhbV9sb29rdXAucGwgICAgIHwgMjI5ICsrKysrKysrKysrKysrKysr KwogNCBmaWxlcyBjaGFuZ2VkLCAzMDkgaW5zZXJ0aW9ucygrKSwgNyBkZWxldGlvbnMoLSkKCmRp ZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvbGlicHEuc2dtbCBiL2RvYy9zcmMvc2dtbC9saWJwcS5z Z21sCmluZGV4IDZkYjgyMzgwOGZjLi4wMTMwODMyMTAyMCAxMDA2NDQKLS0tIGEvZG9jL3NyYy9z Z21sL2xpYnBxLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2xpYnBxLnNnbWwKQEAgLTIzNTAsNiAr MjM1MCwxOSBAQCBwb3N0Z3Jlc3FsOi8vJTJGdmFyJTJGbGliJTJGcG9zdGdyZXNxbC9kYm5hbWUK ICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgIDwvdmFybGlzdGVudHJ5PgoKKyAgICAgPHZhcmxpc3Rl bnRyeSBpZD0ibGlicHEtY29ubmVjdC1sZGFwc2VydmljZXVybCIgeHJlZmxhYmVsPSJsZGFwc2Vy dmljZXVybCI+CisgICAgICA8dGVybT48bGl0ZXJhbD5sZGFwc2VydmljZXVybDwvbGl0ZXJhbD48 L3Rlcm0+CisgICAgICA8bGlzdGl0ZW0+CisgICAgICAgPHBhcmE+CisgICAgICAgIFRoaXMgb3B0 aW9uIHNwZWNpZmllcyBhbiBMREFQIHF1ZXJ5IHRoYXQgY2FuIGJlIHVzZWQgdG8gcmVmZXJlbmNl IGNvbm5lY3Rpb24gcGFyYW1ldGVycworICAgICAgICBzdG9yZWQgb24gYW4gTERBUCBzZXJ2ZXIu IEFueSBjb25uZWN0aW9uIHBhcmFtZXRlciB0aGF0IGlzIGxvb2tlZCB1cCBpbiB0aGlzIHdheSBp cworICAgICAgICBvdmVycmlkZGVuIGJ5IGV4cGxpY2l0bHkgbmFtZWQgY29ubmVjdGlvbiBwYXJh bWV0ZXJzIG9yIGVudmlyb25tZW50IHZhcmlhYmxlcy4gVGhpcworICAgICAgICBvcHRpb24gY2Fu bm90IGJlIHNwZWNpZmllZCBpbiBhIDxmaWxlbmFtZT5wZ19zZXJ2aWNlLmNvbmY8L2ZpbGVuYW1l PiBmaWxlLiBUaGlzCisgICAgICAgIGZ1bmN0aW9uYWxpdHkgaXMgZGVzY3JpYmVkIGluIG1vcmUg ZGV0YWlsIGluIDx4cmVmIGxpbmtlbmQ9ImxpYnBxLWxkYXAiLz4uCisgICAgICAgIDwvcGFyYT4K KyAgICAgIDwvbGlzdGl0ZW0+CisgICAgIDwvdmFybGlzdGVudHJ5PgorCiAgICAgIDx2YXJsaXN0 ZW50cnkgaWQ9ImxpYnBxLWNvbm5lY3QtdGFyZ2V0LXNlc3Npb24tYXR0cnMiIHhyZWZsYWJlbD0i dGFyZ2V0X3Nlc3Npb25fYXR0cnMiPgogICAgICAgPHRlcm0+PGxpdGVyYWw+dGFyZ2V0X3Nlc3Np b25fYXR0cnM8L2xpdGVyYWw+PC90ZXJtPgogICAgICAgPGxpc3RpdGVtPgpAQCAtOTE3MCw2ICs5 MTgzLDE2IEBAIG15RXZlbnRQcm9jKFBHRXZlbnRJZCBldnRJZCwgdm9pZCAqZXZ0SW5mbywgdm9p ZCAqcGFzc1Rocm91Z2gpCiAgICAgIDwvcGFyYT4KICAgICA8L2xpc3RpdGVtPgoKKyAgICA8bGlz dGl0ZW0+CisgICAgIDxwYXJhPgorICAgICAgPGluZGV4dGVybT4KKyAgICAgICA8cHJpbWFyeT48 ZW52YXI+UEdMREFQU0VSVklDRVVSTDwvZW52YXI+PC9wcmltYXJ5PgorICAgICAgPC9pbmRleHRl cm0+CisgICAgICA8ZW52YXI+UEdMREFQU0VSVklDRVVSTDwvZW52YXI+IGJlaGF2ZXMgdGhlIHNh bWUgYXMgdGhlCisgICAgICA8eHJlZiBsaW5rZW5kPSJsaWJwcS1jb25uZWN0LWxkYXBzZXJ2aWNl dXJsIi8+IGNvbm5lY3Rpb24gcGFyYW1ldGVyLgorICAgICA8L3BhcmE+CisgICAgPC9saXN0aXRl bT4KKwogICAgIDxsaXN0aXRlbT4KICAgICAgPHBhcmE+CiAgICAgICA8aW5kZXh0ZXJtPgpAQCAt OTY1OSwxMiArOTY4MiwyMCBAQCB1c2VyPWFkbWluCiAgIDxwYXJhPgogICAgTERBUCBjb25uZWN0 aW9uIHBhcmFtZXRlciBsb29rdXAgdXNlcyB0aGUgY29ubmVjdGlvbiBzZXJ2aWNlIGZpbGUKICAg IDxmaWxlbmFtZT5wZ19zZXJ2aWNlLmNvbmY8L2ZpbGVuYW1lPiAoc2VlIDx4cmVmCi0gICBsaW5r ZW5kPSJsaWJwcS1wZ3NlcnZpY2UiLz4pLiAgQSBsaW5lIGluIGEKLSAgIDxmaWxlbmFtZT5wZ19z ZXJ2aWNlLmNvbmY8L2ZpbGVuYW1lPiBzdGFuemEgdGhhdCBzdGFydHMgd2l0aAotICAgPGxpdGVy YWw+bGRhcDovLzwvbGl0ZXJhbD4gd2lsbCBiZSByZWNvZ25pemVkIGFzIGFuIExEQVAgVVJMIGFu ZCBhbgotICAgTERBUCBxdWVyeSB3aWxsIGJlIHBlcmZvcm1lZC4gVGhlIHJlc3VsdCBtdXN0IGJl IGEgbGlzdCBvZgotICAgPGxpdGVyYWw+a2V5d29yZCA9IHZhbHVlPC9saXRlcmFsPiBwYWlycyB3 aGljaCB3aWxsIGJlIHVzZWQgdG8gc2V0Ci0gICBjb25uZWN0aW9uIG9wdGlvbnMuICBUaGUgVVJM IG11c3QgY29uZm9ybSB0bworICAgbGlua2VuZD0ibGlicHEtcGdzZXJ2aWNlIi8+KSBvciB0aGUK KyAgIDx4cmVmIGxpbmtlbmQ9ImxpYnBxLWNvbm5lY3QtbGRhcHNlcnZpY2V1cmwiLz4gY29ubmVj dGlvbiBwYXJhbWV0ZXIuCisgICBBIGxpbmUgaW4gYSA8ZmlsZW5hbWU+cGdfc2VydmljZS5jb25m PC9maWxlbmFtZT4gc3RhbnphIHRoYXQgc3RhcnRzIHdpdGgKKyAgIDxsaXRlcmFsPmxkYXA6Ly88 L2xpdGVyYWw+IG9yIGFuIGV4cGxpY2l0bHkgcHJvdmlkZWQKKyAgIDx4cmVmIGxpbmtlbmQ9Imxp YnBxLWNvbm5lY3QtbGRhcHNlcnZpY2V1cmwiLz4gY29ubmVjdGlvbiBwYXJhbWV0ZXIKKyAgIHdp bGwgYmUgcmVjb2duaXplZCBhcyBhbiBMREFQIFVSTCBhbmQgYW4gTERBUCBxdWVyeSB3aWxsIGJl IHBlcmZvcm1lZC4KKyAgIFBsZWFzZSBub3RlIHRoYXQgaWYgYm90aCBtZXRob2RzIGFyZSB1c2Vk IHRoZSBpbiBjb25qdW5jdGlvbiBhbnkgcGFyYW1ldGVyCisgICBmb3VuZCB2aWEgPHhyZWYgbGlu a2VuZD0ibGlicHEtY29ubmVjdC1sZGFwc2VydmljZXVybCIvPiB3aWxsIHRha2UgcHJlY2VkZW5j ZQorICAgb3ZlciByZXN1bHRzIGZvdW5kIGluIHRoZSBsb29rdXAgZnJvbSB0aGUgTERBUCBVUkwg c3BlY2lmaWVkIGluCisgICA8ZmlsZW5hbWU+cGdfc2VydmljZS5jb25mPC9maWxlbmFtZT4uIEFs c28gcGxlYXNlIG5vdGUgdGhhdCBhbnkKKyAgIDx4cmVmIGxpbmtlbmQ9ImxpYnBxLWNvbm5lY3Qt bGRhcHNlcnZpY2V1cmwiLz4gdmFsdWUKKyAgIHRoYXQgaXMgZm91bmQgZHVyaW5nIGFuIExEQVAg bG9va3VwIHdpbGwgYmUgaWdub3JlZC4gVGhlIHJlc3VsdCBvZiBhbiBMREFQIGxvb2t1cAorICAg bXVzdCBiZSBhIGxpc3Qgb2YgPGxpdGVyYWw+a2V5d29yZCA9IHZhbHVlPC9saXRlcmFsPiBwYWly cyB3aGljaCB3aWxsIGJlIHVzZWQgdG8KKyAgIHNldCBjb25uZWN0aW9uIG9wdGlvbnMuIFRoZSBV UkwgbXVzdCBjb25mb3JtIHRvCiAgICA8dWxpbmsgdXJsPSJodHRwczovL2RhdGF0cmFja2VyLmll dGYub3JnL2RvYy9odG1sL3JmYzE5NTkiPlJGQyAxOTU5PC91bGluaz4KICAgIGFuZCBiZSBvZiB0 aGUgZm9ybQogPHN5bm9wc2lzPgpkaWZmIC0tZ2l0IGEvc3JjL2ludGVyZmFjZXMvbGlicHEvZmUt Y29ubmVjdC5jIGIvc3JjL2ludGVyZmFjZXMvbGlicHEvZmUtY29ubmVjdC5jCmluZGV4IGRiOWI0 YzhlZGJmLi45NWZhMmY4ZmRjNSAxMDA2NDQKLS0tIGEvc3JjL2ludGVyZmFjZXMvbGlicHEvZmUt Y29ubmVjdC5jCisrKyBiL3NyYy9pbnRlcmZhY2VzL2xpYnBxL2ZlLWNvbm5lY3QuYwpAQCAtMzc2 LDYgKzM3NiwxNSBAQCBzdGF0aWMgY29uc3QgaW50ZXJuYWxQUWNvbm5pbmZvT3B0aW9uIFBRY29u bmluZm9PcHRpb25zW10gPSB7CiAJCSJHU1MtZGVsZWdhdGlvbiIsICIiLCAxLAogCW9mZnNldG9m KHN0cnVjdCBwZ19jb25uLCBnc3NkZWxlZ2F0aW9uKX0sCgorCS8qCisJICogQXMgd2l0aCBTU0wg YW5kIEdTUyBvcHRpb25zLCBsZGFwc2VydmljZXVybCBpcyBleHBvc2VkIGV2ZW4gaW4gYnVpbGRz CisJICogdGhhdCBkbyBub3QgaGF2ZSBzdXBwb3J0CisJICovCisJeyJsZGFwc2VydmljZXVybCIs ICJQR0xEQVBTRVJWSUNFVVJMIiwgTlVMTCwgTlVMTCwKKwkJIkRhdGFiYXNlLUxEQVAtU2Vydmlj ZSIsICIiLCA2NCwKKwlvZmZzZXRvZihzdHJ1Y3QgcGdfY29ubiwgcGdsZGFwc2VydmljZXVybCl9 LAorCisKIAl7InJlcGxpY2F0aW9uIiwgTlVMTCwgTlVMTCwgTlVMTCwKIAkJIlJlcGxpY2F0aW9u IiwgIkQiLCA1LAogCW9mZnNldG9mKHN0cnVjdCBwZ19jb25uLCByZXBsaWNhdGlvbil9LApAQCAt NjEzNCw3ICs2MTQzLDEwIEBAIHBhcnNlU2VydmljZUZpbGUoY29uc3QgY2hhciAqc2VydmljZUZp bGUsCiAJCQkJYm9vbAkJZm91bmRfa2V5d29yZDsKCiAjaWZkZWYgVVNFX0xEQVAKLQkJCQlpZiAo c3RybmNtcChsaW5lLCAibGRhcCIsIDQpID09IDApCisJCQkJLyoKKwkJCQkgKiBJcyB0aGlzIGEg cG90ZW50aWFsIGxkYXB1cmwgb3IgYSBsZGFwc2VydmljZXVybCBwYXJhbWV0ZXI/CisJCQkJICov CisJCQkJaWYgKHN0cm5jbXAobGluZSwgImxkYXA6IiwgNSkgPT0gMCkKIAkJCQl7CiAJCQkJCWlu dAkJCXJjID0gbGRhcFNlcnZpY2VMb29rdXAobGluZSwgb3B0aW9ucywgZXJyb3JNZXNzYWdlKTsK CkBAIC02MTc2LDYgKzYxODgsMTYgQEAgcGFyc2VTZXJ2aWNlRmlsZShjb25zdCBjaGFyICpzZXJ2 aWNlRmlsZSwKIAkJCQkJZ290byBleGl0OwogCQkJCX0KCisJCQkJaWYgKHN0cmNtcChrZXksICJs ZGFwc2VydmljZXVybCIpID09IDApCisJCQkJeworCQkJCQlsaWJwcV9hcHBlbmRfZXJyb3IoZXJy b3JNZXNzYWdlLAorCQkJCQkJCQkJICAgImxkYXBzZXJ2aWNldXJsIHBhcmFtZXRlcnMgYXJlIG5v dCBzdXBwb3J0ZWQgaW4gc2VydmljZSBmaWxlIFwiJXNcIiwgbGluZSAlZCIsCisJCQkJCQkJCQkg ICBzZXJ2aWNlRmlsZSwKKwkJCQkJCQkJCSAgIGxpbmVucik7CisJCQkJCXJlc3VsdCA9IDM7CisJ CQkJCWdvdG8gZXhpdDsKKwkJCQl9CisKIAkJCQlpZiAoc3RyY21wKGtleSwgInNlcnZpY2VmaWxl IikgPT0gMCkKIAkJCQl7CiAJCQkJCWxpYnBxX2FwcGVuZF9lcnJvcihlcnJvck1lc3NhZ2UsCkBA IC02NzI2LDYgKzY3NDgsMjUgQEAgY29ubmluZm9fYWRkX2RlZmF1bHRzKFBRY29ubmluZm9PcHRp b24gKm9wdGlvbnMsIFBRRXhwQnVmZmVyIGVycm9yTWVzc2FnZSkKIAlQUWNvbm5pbmZvT3B0aW9u ICpzc2xtb2RlX2RlZmF1bHQgPSBOVUxMLAogCQkJICAgKnNzbHJvb3RjZXJ0ID0gTlVMTDsKIAlj aGFyCSAgICp0bXA7CisjaWZkZWYgVVNFX0xEQVAKKwljb25zdCBjaGFyICpsZGFwc2VydmljZXVy bCA9IGNvbm5pbmZvX2dldHZhbChvcHRpb25zLCAibGRhcHNlcnZpY2V1cmwiKTsKKworCWlmIChs ZGFwc2VydmljZXVybCA9PSBOVUxMKQorCQlsZGFwc2VydmljZXVybCA9IGdldGVudigiUEdMREFQ U0VSVklDRVVSTCIpOworCisJaWYgKGxkYXBzZXJ2aWNldXJsICE9IE5VTEwpCisJeworCisJCS8q CisJCSAqIGxkYXBTZXJ2aWNlTG9va3VwIGhhcyA0IHBvdGVudGlhbCByZXR1cm4gdmFsdWVzLiBX ZSBvbmx5IGNhcmUgaGVyZQorCQkgKiBpZiBpdCBzdWNjZWVkZWQsIGlmIGl0IGZhaWxlZCB3ZSBk b250IGNhcmUgd2h5LCByZXR1cm4gZmFpbHVyZS4KKwkJICovCisJCWlmIChsZGFwU2VydmljZUxv b2t1cChsZGFwc2VydmljZXVybCwgb3B0aW9ucywgZXJyb3JNZXNzYWdlKSAhPSAwKXsKKwkJCWxp YnBxX2FwcGVuZF9lcnJvcihlcnJvck1lc3NhZ2UsICJsZGFwc2VydmljZXVybCBsb29rdXAgZmFp bGVkIik7CisJCQlyZXR1cm4gZmFsc2U7CisJCX0KKwl9CisjZW5kaWYKCiAJLyoKIAkgKiBJZiB0 aGVyZSdzIGEgc2VydmljZSBzcGVjLCB1c2UgaXQgdG8gb2J0YWluIGFueSBub3QtZXhwbGljaXRs eS1naXZlbgpkaWZmIC0tZ2l0IGEvc3JjL2ludGVyZmFjZXMvbGlicHEvbGlicHEtaW50LmggYi9z cmMvaW50ZXJmYWNlcy9saWJwcS9saWJwcS1pbnQuaAppbmRleCBiZDdlYjU5ZjVmOC4uZjhiMTA2 MzVkNDEgMTAwNjQ0Ci0tLSBhL3NyYy9pbnRlcmZhY2VzL2xpYnBxL2xpYnBxLWludC5oCisrKyBi L3NyYy9pbnRlcmZhY2VzL2xpYnBxL2xpYnBxLWludC5oCkBAIC0zOTIsNiArMzkyLDcgQEAgc3Ry dWN0IHBnX2Nvbm4KIAljaGFyCSAgICpwZ3NlcnZpY2U7CQkvKiBQb3N0Z3JlcyBzZXJ2aWNlLCBp ZiBhbnkgKi8KIAljaGFyCSAgICpwZ3NlcnZpY2VmaWxlOwkvKiBwYXRoIHRvIGEgc2VydmljZSBm aWxlIGNvbnRhaW5pbmcKIAkJCQkJCQkJICogc2VydmljZShzKSAqLworCWNoYXIJICAgKnBnbGRh cHNlcnZpY2V1cmw7CS8qIFBvc3RncmVzIExEQVAgc2VydmljZSBVUkwsIGlmIGFueSAqLwogCWNo YXIJICAgKnBndXNlcjsJCQkvKiBQb3N0Z3JlcyB1c2VybmFtZSBhbmQgcGFzc3dvcmQsIGlmIGFu eSAqLwogCWNoYXIJICAgKnBncGFzczsKIAljaGFyCSAgICpwZ3Bhc3NmaWxlOwkJLyogcGF0aCB0 byBhIGZpbGUgY29udGFpbmluZyBwYXNzd29yZChzKSAqLwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qv bGRhcC90LzAwM19sZGFwX2Nvbm5lY3Rpb25fcGFyYW1fbG9va3VwLnBsIGIvc3JjL3Rlc3QvbGRh cC90LzAwM19sZGFwX2Nvbm5lY3Rpb25fcGFyYW1fbG9va3VwLnBsCmluZGV4IDM1OWZjN2E5OThh Li5hOTQ2OWZlMDExZiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvbGRhcC90LzAwM19sZGFwX2Nvbm5l Y3Rpb25fcGFyYW1fbG9va3VwLnBsCisrKyBiL3NyYy90ZXN0L2xkYXAvdC8wMDNfbGRhcF9jb25u ZWN0aW9uX3BhcmFtX2xvb2t1cC5wbApAQCAtNTYsNiArNTYsODUgQEAgY2hhbmdldHlwZTphZGQK IG9iamVjdGNsYXNzOnRvcAogb2JqZWN0Y2xhc3M6ZGV2aWNlCiBjbjpteWRhdGFiYXNlCitkZXNj cmlwdGlvbjphcHBsaWNhdGlvbl9uYW1lPWFwcGxpY2F0aW9uX25hbWVfZnJvbV9sZGFwCitkZXNj cmlwdGlvbjpob3N0PX0gLiAkbm9kZS0+aG9zdCAuIHFxeworZGVzY3JpcHRpb246cG9ydD19IC4g JG5vZGUtPnBvcnQgLiBxcXsKK30pOworCisjIFZhbGlkIGxkYXAgcmVjb3JkIHdpdGggZ2VxbyBh bmQgYXBwbGljYXRpb25fbmFtZSBzZXQKKyMgdG8gdGVzdCBob3cgcGFyYW1ldGVycyBhcmUgc2V0 L292ZXJyaWRkZW4KK2FwcGVuZF90b19maWxlKAorCSRsZGlmX3ZhbGlkLCBxcXsKK3ZlcnNpb246 MQorZG46Y249bXlkYXRhYmFzZWdlcW9vZmYsZGM9ZXhhbXBsZSxkYz1uZXQKK2NoYW5nZXR5cGU6 YWRkCitvYmplY3RjbGFzczp0b3AKK29iamVjdGNsYXNzOmRldmljZQorY246bXlkYXRhYmFzZWdl cW9vZmYKK2Rlc2NyaXB0aW9uOmFwcGxpY2F0aW9uX25hbWU9YXBwbGljYXRpb25fbmFtZV9mcm9t X2RhdGFiYXNlMgorZGVzY3JpcHRpb246b3B0aW9ucz0tLWdlcW89b2ZmCit9KTsKKworIyBJbnZh bGlkIExEQVAgcmVjb3JkIHdpdGggbm8gZW50cmllcworYXBwZW5kX3RvX2ZpbGUoCisJJGxkaWZf dmFsaWQsIHFxewordmVyc2lvbjoxCitkbjpjbj1ub2VudHJpZXMsZGM9ZXhhbXBsZSxkYz1uZXQK K2NoYW5nZXR5cGU6YWRkCitvYmplY3RjbGFzczp0b3AKK29iamVjdGNsYXNzOmRldmljZQorY246 bm9lbnRyaWVzCit9KTsKKworIyBJbnZhbGlkIExEQVAgcmVjb3JkIHdpdGggbWlzc2luZyA9IGFm dGVyIGFwcGxpY2F0aW9uX25hbWUKK2FwcGVuZF90b19maWxlKAorCSRsZGlmX3ZhbGlkLCBxcXsK K3ZlcnNpb246MQorZG46Y249bWlzc2luZ2VxdWFsLGRjPWV4YW1wbGUsZGM9bmV0CitjaGFuZ2V0 eXBlOmFkZAorb2JqZWN0Y2xhc3M6dG9wCitvYmplY3RjbGFzczpkZXZpY2UKK2NuOm1pc3Npbmdl cXVhbAorZGVzY3JpcHRpb246YXBwbGljYXRpb25fbmFtZQorfSk7CisKKyMgSW52YWxpZCBMREFQ IHJlY29yZCB3aXRoIG5vbiBleGlzdGVudCBwYXJhbWV0ZXIKK2FwcGVuZF90b19maWxlKAorCSRs ZGlmX3ZhbGlkLCBxcXsKK3ZlcnNpb246MQorZG46Y249aW52YWxpZGNvbm5vcHRpb25zZXJ2aWNl LGRjPWV4YW1wbGUsZGM9bmV0CitjaGFuZ2V0eXBlOmFkZAorb2JqZWN0Y2xhc3M6dG9wCitvYmpl Y3RjbGFzczpkZXZpY2UKK2NuOmludmFsaWRjb25ub3B0aW9uc2VydmljZQorZGVzY3JpcHRpb246 aW52YWxpZGNvbm5vcHRpb249MQorfSk7CisKKyMgSW52YWxpZCBMREFQIHJlY29yZCB3aXRoIG1p c3NpbmcgPSBpbiBvcHRpb25zIHBhcmFtZXRlcgorYXBwZW5kX3RvX2ZpbGUoCisJJGxkaWZfdmFs aWQsIHFxewordmVyc2lvbjoxCitkbjpjbj1wZ29wdGlvbm1pc3NpbmdlcXVhbHMsZGM9ZXhhbXBs ZSxkYz1uZXQKK2NoYW5nZXR5cGU6YWRkCitvYmplY3RjbGFzczp0b3AKK29iamVjdGNsYXNzOmRl dmljZQorY246cGdvcHRpb25taXNzaW5nZXF1YWxzCitkZXNjcmlwdGlvbjpvcHRpb25zPS0tZ2Vx byBvZmYKK2Rlc2NyaXB0aW9uOmhvc3Q9fSAuICRub2RlLT5ob3N0IC4gcXF7CitkZXNjcmlwdGlv bjpwb3J0PX0gLiAkbm9kZS0+cG9ydCAuIHFxeworfSk7CisKKyMgVmFsaWQgTERBUCByZWNvcmQg d2hpY2ggaGFzIGxkYXBzZXJ2aWNldXJsIHBhcmFtZXRlcgorYXBwZW5kX3RvX2ZpbGUoCisJJGxk aWZfdmFsaWQsIHFxewordmVyc2lvbjoxCitkbjpjbj1sZGFwdXJsaW5sZGFwdXJsLGRjPWV4YW1w bGUsZGM9bmV0CitjaGFuZ2V0eXBlOmFkZAorb2JqZWN0Y2xhc3M6dG9wCitvYmplY3RjbGFzczpk ZXZpY2UKK2NuOmxkYXB1cmxpbmxkYXB1cmwKK2Rlc2NyaXB0aW9uOmxkYXBzZXJ2aWNldXJsPWxk YXA6Ly9sb2NhbGhvc3Q6MTIzNC9kYz1leGFtcGxlLGRjPW5ldD9kZXNjcmlwdGlvbj9vbmU/KGNu PW15ZGF0YWJhc2VnZXFvb2ZmKQorZGVzY3JpcHRpb246YXBwbGljYXRpb25fbmFtZT1hcHBsaWNh dGlvbl9uYW1lX2Zyb21fbGRhcHVybGlubGRhcHVybAogZGVzY3JpcHRpb246aG9zdD19IC4gJG5v ZGUtPmhvc3QgLiBxcXsKIGRlc2NyaXB0aW9uOnBvcnQ9fSAuICRub2RlLT5wb3J0IC4gcXF7CiB9 KTsKQEAgLTgwLDYgKzE1OSwxNiBAQCBhcHBlbmRfdG9fZmlsZSgKIAkkc3J2ZmlsZV92YWxpZCwg cXF7CiBbbXlfc3J2XQogbGRhcDovL2xvY2FsaG9zdDokbGRhcF9wb3J0L2RjPWV4YW1wbGUsZGM9 bmV0P2Rlc2NyaXB0aW9uP29uZT8oY249bXlkYXRhYmFzZSkKKworW215X3Nydl9nZXFvX29mZl0K K2xkYXA6Ly9sb2NhbGhvc3Q6JGxkYXBfcG9ydC9kYz1leGFtcGxlLGRjPW5ldD9kZXNjcmlwdGlv bj9vbmU/KGNuPW15ZGF0YWJhc2VnZXFvb2ZmKQorCitbbGRhcHNlcnZpY2V1cmxfaW5fcGdfc2Vy dmljZV90ZXN0XQorbGRhcHNlcnZpY2V1cmw9bGRhcDovL2xvY2FsaG9zdDokbGRhcF9wb3J0L2Rj PWV4YW1wbGUsZGM9bmV0P2Rlc2NyaXB0aW9uP29uZT8oY249bXlkYXRhYmFzZSkKKworW3BnX3Nl cnZpY2VfYXBwbGljYXRpb25fbmFtZV0KK2FwcGxpY2F0aW9uX25hbWU9cGdfc2VydmljZQorb3B0 aW9ucz0tLWdlcW89b2ZmCiB9KTsKCiAjIEZpbGUgZGVmaW5lZCB3aXRoIG5vIGNvbnRlbnRzLCB1 c2VkIGFzIGRlZmF1bHQgdmFsdWUgZm9yCkBAIC0xOTYsMTAgKzI4NSwxNTAgQEAgbG9jYWwgJEVO VntQR1NFUlZJQ0VGSUxFfSA9ICIkc3J2ZmlsZV9lbXB0eSI7CiAJCWV4cGVjdGVkX3N0ZG91dCA9 PgogCQkgIHFyL2RlZmluaXRpb24gb2Ygc2VydmljZSAidW5kZWZpbmVkLXNlcnZpY2UiIG5vdCBm b3VuZC8pOwoKKwlkZWxldGUgJEVOVntQR1NFUlZJQ0V9OworCisJdW5saW5rKCRzcnZmaWxlX2Rl ZmF1bHQpOworfQorCisjIFRlc3QgbGRhcHNlcnZpY2V1cmwgY29ubmVjdGlvbiBwYXJhbWV0ZXIK K3sKKwkjIENyZWF0ZSBjb3B5IG9mIHZhbGlkIGZpbGUKKwlteSAkc3J2ZmlsZV9kZWZhdWx0ID0g IiR0ZC9wZ19zZXJ2aWNlLmNvbmYiOworCWNvcHkoJHNydmZpbGVfdmFsaWQsICRzcnZmaWxlX2Rl ZmF1bHQpOworCisJJGR1bW15X25vZGUtPmNvbm5lY3Rfb2soCisJCSJsZGFwc2VydmljZXVybD1s ZGFwOi8vbG9jYWxob3N0OiRsZGFwX3BvcnQvZGM9ZXhhbXBsZSxkYz1uZXQ/ZGVzY3JpcHRpb24/ b25lPyhjbj1teWRhdGFiYXNlKSIsCisJCSdjb25uZWN0aW9uIHdpdGggY29ycmVjdCAibGRhcHNl cnZpY2V1cmwiJywKKwkJc3FsID0+ICJTRUxFQ1QgJ2Nvbm5lY3QyXzQnLCBjdXJyZW50X3NldHRp bmcoJ2FwcGxpY2F0aW9uX25hbWUnKSIsCisJCWV4cGVjdGVkX3N0ZG91dCA9PiBxci9jb25uZWN0 Ml80XHxhcHBsaWNhdGlvbl9uYW1lX2Zyb21fbGRhcC8pOworCisJJGR1bW15X25vZGUtPmNvbm5l Y3Rfb2soCisJCSJwb3N0Z3JlczovLz9sZGFwc2VydmljZXVybD1sZGFwJTNBJTJGJTJGbG9jYWxo b3N0JTNBJGxkYXBfcG9ydCUyRmRjJTNEZXhhbXBsZSUyQ2RjJTNEbmV0JTNGZGVzY3JpcHRpb24l M0ZvbmUlM0YlMjhjbiUzRG15ZGF0YWJhc2UlMjkiLAorCQknY29ubmVjdGlvbiB3aXRoIGNvcnJl Y3QgImxkYXBzZXJ2aWNldXJsIiBpbiB1cmkgZm9ybWF0JywKKwkJc3FsID0+ICJTRUxFQ1QgJ2Nv bm5lY3QyXzUnLCBjdXJyZW50X3NldHRpbmcoJ2FwcGxpY2F0aW9uX25hbWUnKSIsCisJCWV4cGVj dGVkX3N0ZG91dCA9PiBxci9jb25uZWN0Ml81XHxhcHBsaWNhdGlvbl9uYW1lX2Zyb21fbGRhcC8p OworCisJbG9jYWwgJEVOVntQR0xEQVBTRVJWSUNFVVJMfSA9ICJsZGFwOi8vbG9jYWxob3N0OiRs ZGFwX3BvcnQvZGM9ZXhhbXBsZSxkYz1uZXQ/ZGVzY3JpcHRpb24/b25lPyhjbj1teWRhdGFiYXNl KSI7CisKKwkkZHVtbXlfbm9kZS0+Y29ubmVjdF9vaygKKwkJIiIsCisJCSdjb25uZWN0aW9uIHdp dGggY29ycmVjdCAibGRhcHNlcnZpY2V1cmwiIHByb3ZpZGVkIGJ5IGVudiB2YXInLAorCQlzcWwg PT4gIlNFTEVDVCAnY29ubmVjdDJfNicsIGN1cnJlbnRfc2V0dGluZygnYXBwbGljYXRpb25fbmFt ZScpIiwKKwkJZXhwZWN0ZWRfc3Rkb3V0ID0+IHFyL2Nvbm5lY3QyXzZcfGFwcGxpY2F0aW9uX25h bWVfZnJvbV9sZGFwLyk7CisKKwkkZHVtbXlfbm9kZS0+Y29ubmVjdF9mYWlscygKKwkJJ2xkYXBz ZXJ2aWNldXJsPWxkYXA6Ly9sb2NhbGhvc3Q6aW52YWxpZHBvcnQvZGM9ZXhhbXBsZSxkYz1uZXQ/ ZGVzY3JpcHRpb24/b25lPyhjbj1teWRhdGFiYXNlKScsCisJCSdjb25uZWN0aW9uIGZhaWxzIHdp dGggYmVjYXVzZSB2YWxpZCBQR0xEQVBTRVJWSUNFVVJMIGVudiB2YXIgb3ZlcnJpZGRlbiBieSBl eHBsaWNpdCBwYXJhbWV0ZXIgd2l0aCBiYWQgcG9ydCcsCisJCWV4cGVjdGVkX3N0ZGVyciA9PiBx ci9pbnZhbGlkIExEQVAgVVJMIC4qOiBpbnZhbGlkIHBvcnQgbnVtYmVyLyk7CisKKwlkZWxldGUg JEVOVntQR0xEQVBTRVJWSUNFVVJMfTsKKworCSRkdW1teV9ub2RlLT5jb25uZWN0X29rKAorCQki bGRhcHNlcnZpY2V1cmw9bGRhcDovL2xvY2FsaG9zdDokbGRhcF9wb3J0L2RjPWV4YW1wbGUsZGM9 bmV0P2Rlc2NyaXB0aW9uP29uZT8oY249bXlkYXRhYmFzZSkgYXBwbGljYXRpb25fbmFtZT1leHBs aWNpdF9wYXJhbWV0ZXIiLAorCQknY29ubmVjdGlvbiB3aXRoIGNvcnJlY3QgImxkYXBzZXJ2aWNl IiBidXQgd2l0aCBhcHBsaWNhdGlvbl9uYW1lIG92ZXJyaWRkZW4gYnkgZXhwbGljaXQgY29ubmVj dGlvbiBwYXJhbWV0ZXInLAorCQlzcWwgPT4gIlNFTEVDVCAnY29ubmVjdDJfNycsIGN1cnJlbnRf c2V0dGluZygnYXBwbGljYXRpb25fbmFtZScpIiwKKwkJZXhwZWN0ZWRfc3Rkb3V0ID0+IHFyL2Nv bm5lY3QyXzdcfGV4cGxpY2l0X3BhcmFtZXRlci8pOworCisJJGR1bW15X25vZGUtPmNvbm5lY3Rf b2soCisJCSJsZGFwc2VydmljZXVybD1sZGFwOi8vbG9jYWxob3N0OiRsZGFwX3BvcnQvZGM9ZXhh bXBsZSxkYz1uZXQ/ZGVzY3JpcHRpb24/b25lPyhjbj1teWRhdGFiYXNlKSBzZXJ2aWNlPXBnX3Nl cnZpY2VfYXBwbGljYXRpb25fbmFtZSIsCisJCSdjb25uZWN0aW9uIHdpdGggY29ycmVjdCAibGRh cHNlcnZpY2UiIHN0cmluZywgc2VydmljZSBmaWxlIGFwcGxpY2F0aW9uX25hbWUgb3ZlcnJpZGRl biBieSBsZGFwLCBnZXFvIG9mZiBzZXQgYnkgc2VydmljZSBmaWxlJywKKwkJc3FsID0+ICJTRUxF Q1QgJ2Nvbm5lY3QyXzgnLCBjdXJyZW50X3NldHRpbmcoJ2FwcGxpY2F0aW9uX25hbWUnKSwgY3Vy cmVudF9zZXR0aW5nKCdnZXFvJyk7IiwKKwkJZXhwZWN0ZWRfc3Rkb3V0ID0+IHFyL2Nvbm5lY3Qy XzhcfGFwcGxpY2F0aW9uX25hbWVfZnJvbV9sZGFwXHxvZmYvKTsKKworCSMgdGVzdCB0aGF0IGdl cW8gZ3JhYmJlZCBmcm9tIHNlcnZpY2UgZmlsZSBzZXJ2aWNlIG15X3Nydl9nZXFvX29mZiB2aWEg TERBUCBsb29rdXAKKwkjIGNvbmZsaWN0aW5nIGFwcGxpY2F0aW9uIG5hbWVzIHByZXNlbnQgaW4g Ym90aCBMREFQIHNlcnZpY2VzIHF1ZXJpZWQgKGxkYXBzZXJ2aWNldXJsIGFuZCBzZXJ2aWNlIGZp bGUpCisJIyBhcHBsaWNhdGlvbiBuYW1lIGZyb20gc2VydmljZSBmaWxlIGlzIGlnbm9yZWQgYmVj YXVzZSBpdCBoYXMgYWxyZWFkeSBiZWVuIHNldCBieSBsZGFwc2VydmljZXVybCBsb29rdXAKKwkk ZHVtbXlfbm9kZS0+Y29ubmVjdF9vaygKKwkJImxkYXBzZXJ2aWNldXJsPWxkYXA6Ly9sb2NhbGhv c3Q6JGxkYXBfcG9ydC9kYz1leGFtcGxlLGRjPW5ldD9kZXNjcmlwdGlvbj9vbmU/KGNuPW15ZGF0 YWJhc2UpIHNlcnZpY2U9bXlfc3J2X2dlcW9fb2ZmIiwKKwkJJ2Nvbm5lY3Rpb24gd2l0aCAyIExE QVAgbG9va3VwcyAocGdfc2VydmljZS5jb25mIGFuZCBsZGFwc2VydmljZXVybCknLAorCQlzcWwg PT4gIlNFTEVDVCAnY29ubmVjdDJfOScsIGN1cnJlbnRfc2V0dGluZygnYXBwbGljYXRpb25fbmFt ZScpLCBjdXJyZW50X3NldHRpbmcoJ2dlcW8nKTsiLAorCQlleHBlY3RlZF9zdGRvdXQgPT4gcXIv Y29ubmVjdDJfOVx8YXBwbGljYXRpb25fbmFtZV9mcm9tX2xkYXBcfG9mZi8pOworCisJJGR1bW15 X25vZGUtPmNvbm5lY3RfZmFpbHMoCisJCSdzZXJ2aWNlPWxkYXBzZXJ2aWNldXJsX2luX3BnX3Nl cnZpY2VfdGVzdCcsCisJCSdjb25uZWN0aW9uIGZhaWxzIHdpdGggbGRhcHNlcnZpY2V1cmwgc3Bl Y2lmaWVkIGluIHBnX3NlcnZpY2UuY29uZiBmaWxlJywKKwkJZXhwZWN0ZWRfc3RkZXJyID0+IHFy L2xkYXBzZXJ2aWNldXJsIHBhcmFtZXRlcnMgYXJlIG5vdCBzdXBwb3J0ZWQgaW4gc2VydmljZSBm aWxlIC4qLCBsaW5lIC4qLyApOworCisJJGR1bW15X25vZGUtPmNvbm5lY3Rfb2soCisJCSJsZGFw c2VydmljZXVybD1sZGFwOi8vbG9jYWxob3N0OiRsZGFwX3BvcnQvZGM9ZXhhbXBsZSxkYz1uZXQ/ ZGVzY3JpcHRpb24/b25lPyhjbj1sZGFwdXJsaW5sZGFwdXJsKSIsCisJCSdsZGFwc2VydmljZXVy bCB0aGF0IHBvaW50cyB0byBhbm90aGVyIGxkYXBzZXJ2aWNldXJsIHdpbGwgYmUgaWdub3JlZCcs CisJCXNxbCA9PiAiU0VMRUNUICdjb25uZWN0Ml8xMCcsIGN1cnJlbnRfc2V0dGluZygnYXBwbGlj YXRpb25fbmFtZScpLCBjdXJyZW50X3NldHRpbmcoJ2dlcW8nKTsiLAorCQlleHBlY3RlZF9zdGRv dXQ9PiBxci9jb25uZWN0Ml8xMFx8YXBwbGljYXRpb25fbmFtZV9mcm9tX2xkYXB1cmxpbmxkYXB1 cmxcfG9uLyk7CisKIAkjIFJlbW92ZSBkZWZhdWx0IHBnX3NlcnZpY2UuY29uZi4KIAl1bmxpbmso JHNydmZpbGVfZGVmYXVsdCk7CiB9CgorIyBuZWdhdGl2ZSB0ZXN0cyBmb3IgbG9naWMgaW5zaWRl IGxkYXBTZXJ2aWNlTG9va3VwCit7CisKKwkkZHVtbXlfbm9kZS0+Y29ubmVjdF9mYWlscygKKwkJ ImxkYXBzZXJ2aWNldXJsPWh0dHA6Ly9sb2NhbGhvc3Q6JGxkYXBfcG9ydC9kYz1leGFtcGxlLGRj PW5ldD9kZXNjcmlwdGlvbj9vbmU/KGNuPW15ZGF0YWJhc2UpIiwKKwkJJ2xkYXBzZXJ2aWNldXJs IHRoYXQgZG9lc250IGJlZ2luIHdpdGggbGRhcDovLyBmYWlscycsCisJCWV4cGVjdGVkX3N0ZGVy ciA9PiBxci9pbnZhbGlkIExEQVAgVVJMIC4qOiBzY2hlbWUgbXVzdCBiZSBsZGFwOlwvXC8vKTsK KworCSRkdW1teV9ub2RlLT5jb25uZWN0X2ZhaWxzKAorCQkibGRhcHNlcnZpY2V1cmw9bGRhcDov L2xvY2FsaG9zdDokbGRhcF9wb3J0LyIsCisJCSdsZGFwc2VydmljZXVybCB0aGF0IGRvZXMgbm90 IHNwZWNpZnkgZGlzdGluZ3Vpc2hlZCBuYW1lJywKKwkJZXhwZWN0ZWRfc3RkZXJyID0+IHFyL2lu dmFsaWQgTERBUCBVUkwgLio6IG1pc3NpbmcgZGlzdGluZ3Vpc2hlZCBuYW1lLyk7CisKKwkkZHVt bXlfbm9kZS0+Y29ubmVjdF9mYWlscygKKwkJImxkYXBzZXJ2aWNldXJsPWxkYXA6Ly9sb2NhbGhv c3Q6JGxkYXBfcG9ydC9kYz1leGFtcGxlLGRjPW5ldD8iLAorCQknbGRhcHNlcnZpY2V1cmwgdGhh dCBkb2VzIG5vdCBzcGVjaWZ5IGF0dHJpYnV0ZScsCisJCWV4cGVjdGVkX3N0ZGVyciA9PiBxci9p bnZhbGlkIExEQVAgVVJMIC4qOiBtdXN0IGhhdmUgZXhhY3RseSBvbmUgYXR0cmlidXRlLyk7CisK KwkkZHVtbXlfbm9kZS0+Y29ubmVjdF9mYWlscygKKwkJImxkYXBzZXJ2aWNldXJsPWxkYXA6Ly9s b2NhbGhvc3Q6JGxkYXBfcG9ydC9kYz1leGFtcGxlLGRjPW5ldD9kZXNjcmlwdGlvbiIsCisJCSds ZGFwc2VydmljZXVybCB0aGF0IGRvZXMgbm90IHByb3ZpZGUgc2NvcGUnLAorCQlleHBlY3RlZF9z dGRlcnIgPT4gcXIvaW52YWxpZCBMREFQIFVSTCAuKjogbXVzdCBoYXZlIHNlYXJjaCBzY29wZSBc KGJhc2VcL29uZVwvc3ViXCkvKTsKKworCSRkdW1teV9ub2RlLT5jb25uZWN0X2ZhaWxzKAorCQki bGRhcHNlcnZpY2V1cmw9bGRhcDovL2xvY2FsaG9zdDokbGRhcF9wb3J0L2RjPWV4YW1wbGUsZGM9 bmV0P2Rlc2NyaXB0aW9uP29uZSIsCisJCSdsZGFwc2VydmljZXVybCB0aGF0IGRvZXMgbm90IHNw ZWNpZnkgZmlsdGVyJywKKwkJZXhwZWN0ZWRfc3RkZXJyID0+IHFyL2ludmFsaWQgTERBUCBVUkwg Lio6IG5vIGZpbHRlci8pOworCisJJGR1bW15X25vZGUtPmNvbm5lY3RfZmFpbHMoCisJCSJsZGFw c2VydmljZXVybD1sZGFwOi8vbG9jYWxob3N0OmludmFsaWRwb3J0bnVtYmVyL2RjPWV4YW1wbGUs ZGM9bmV0P2Rlc2NyaXB0aW9uP29uZT8oY249bXlkYXRhYmFzZSkiLAorCQknbGRhcHNlcnZpY2V1 cmwgY29udGFpbnMgaW52YWxpZCBwb3J0IG51bWJlcicsCisJCWV4cGVjdGVkX3N0ZGVyciA9PiBx ci9pbnZhbGlkIExEQVAgVVJMIC4qOiBpbnZhbGlkIHBvcnQgbnVtYmVyLyk7CisKKwkkZHVtbXlf bm9kZS0+Y29ubmVjdF9mYWlscygKKwkJImxkYXBzZXJ2aWNldXJsPWxkYXA6Ly9sb2NhbGhvc3Q6 JGxkYXBfcG9ydC9kYz1leGFtcGxlLGRjPW5ldD9kZXNjcmlwdGlvbixkbj9vbmU/KGNuPW15ZGF0 YWJhc2UpIiwKKwkJJ2xkYXBzZXJ2aWNldXJsIHRoYXQgY29udGFpbnMgMiBhdHRyaWJ1dGVzJywK KwkJZXhwZWN0ZWRfc3RkZXJyID0+IHFyL2ludmFsaWQgTERBUCBVUkwgLio6IG11c3QgaGF2ZSBl eGFjdGx5IG9uZSBhdHRyaWJ1dGUvKTsKKworCSRkdW1teV9ub2RlLT5jb25uZWN0X2ZhaWxzKAor CQkibGRhcHNlcnZpY2V1cmw9bGRhcDovL2xvY2FsaG9zdDokbGRhcF9wb3J0L2RjPWV4YW1wbGUs ZGM9bmV0P2Rlc2NyaXB0aW9uP2ludmFsaWRzY29wZT8oY249bXlkYXRhYmFzZSkiLAorCQknbGRh cHNlcnZpY2V1cmwgdGhhdCBkb2VzIG5vdCBwcm92aWRlIHZhbGlkIHNjb3BlJywKKwkJZXhwZWN0 ZWRfc3RkZXJyID0+IHFyL2ludmFsaWQgTERBUCBVUkwgLio6IG11c3QgaGF2ZSBzZWFyY2ggc2Nv cGUgXChiYXNlXC9vbmVcL3N1YlwpLyk7CisKKwkkZHVtbXlfbm9kZS0+Y29ubmVjdF9mYWlscygK KwkJImxkYXBzZXJ2aWNldXJsPWxkYXA6Ly9sb2NhbGhvc3Q6JGxkYXBfcG9ydC9kYz1leGFtcGxl LGRjPW5ldD9kZXNjcmlwdGlvbj9zdWI/KGNuPSopIiwKKwkJJ2xkYXBzZXJ2aWNldXJsIHRoYXQg Y29udGFpbnMgbW9yZSB0aGFuIG9uZSBlbnRyeScsCisJCWV4cGVjdGVkX3N0ZGVyciA9PiBxci9t b3JlIHRoYW4gb25lIGVudHJ5IGZvdW5kIG9uIExEQVAgbG9va3VwLyk7CisKKwkkZHVtbXlfbm9k ZS0+Y29ubmVjdF9mYWlscygKKwkJImxkYXBzZXJ2aWNldXJsPWxkYXA6Ly9sb2NhbGhvc3Q6JGxk YXBfcG9ydC9kYz1leGFtcGxlLGRjPW5ldD9kZXNjcmlwdGlvbj9vbmU/KGNuPWRvZXNub3RleGlz dCkiLAorCQknbGRhcHNlcnZpY2V1cmwgd2l0aCBubyBsZGFwIGVudHJ5JywKKwkJZXhwZWN0ZWRf c3RkZXJyID0+IHFyL25vIGVudHJ5IGZvdW5kIG9uIExEQVAgbG9va3VwLyk7CisKKwkkZHVtbXlf bm9kZS0+Y29ubmVjdF9mYWlscygKKwkJImxkYXBzZXJ2aWNldXJsPWxkYXA6Ly9sb2NhbGhvc3Q6 JGxkYXBfcG9ydC9kYz1leGFtcGxlLGRjPW5ldD9kZXNjcmlwdGlvbj9vbmU/KGNuPW5vZW50cmll cykiLAorCQknbGRhcHNlcnZpY2V1cmwgdGhhdCBoYXMgbm8gY29ubmVjdGlvbiBhdHRyaWJ1dGVz JywKKwkJZXhwZWN0ZWRfc3RkZXJyID0+IHFyL2F0dHJpYnV0ZSBoYXMgbm8gdmFsdWVzIG9uIExE QVAgbG9va3VwLyk7CisKKwkkZHVtbXlfbm9kZS0+Y29ubmVjdF9mYWlscygKKwkJImxkYXBzZXJ2 aWNldXJsPWxkYXA6Ly9sb2NhbGhvc3Q6JGxkYXBfcG9ydC9kYz1leGFtcGxlLGRjPW5ldD9kZXNj cmlwdGlvbj9vbmU/KGNuPW1pc3NpbmdlcXVhbCkiLAorCQknbGRhcHNlcnZpY2VzdXJsIHRoYXQg aGFzIG1pc3NpbmcgZXF1YWwgc2lnbicsCisJCWV4cGVjdGVkX3N0ZGVyciA9PiBxci9taXNzaW5n IFwiXD1cIiBhZnRlciBcImFwcGxpY2F0aW9uX25hbWVcblwiIGluIGNvbm5lY3Rpb24gaW5mbyBz dHJpbmcvKTsKKworCSRkdW1teV9ub2RlLT5jb25uZWN0X2ZhaWxzKAorCQkibGRhcHNlcnZpY2V1 cmw9bGRhcDovL2xvY2FsaG9zdDokbGRhcF9wb3J0L2RjPWV4YW1wbGUsZGM9bmV0P2Rlc2NyaXB0 aW9uP29uZT8oY249aW52YWxpZGNvbm5vcHRpb25zZXJ2aWNlKSIsCisJCSdsZGFwc2VydmljZXVy bCB0aGF0IGNvbnRhaW5zIG5vbmV4aXN0ZW50IGNvbm5lY3Rpb24gb3B0aW9uJywKKwkJZXhwZWN0 ZWRfc3RkZXJyID0+IHFyL2ludmFsaWQgY29ubmVjdGlvbiBvcHRpb24gXCJpbnZhbGlkY29ubm9w dGlvblwiLyk7CisKK30KKwogJG5vZGUtPnRlYXJkb3duX25vZGU7CgogZG9uZV90ZXN0aW5nKCk7 Ci0tCjIuNTEuMgoK --0000000000002ac1c1064e6e29b3--