Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1l1Ozx-0005Me-IA for pgadmin-hackers@arkaria.postgresql.org; Mon, 18 Jan 2021 07:30:50 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1l1Ozw-0005TU-1h for pgadmin-hackers@arkaria.postgresql.org; Mon, 18 Jan 2021 07:30:48 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1l1Ozv-0005Qa-67 for pgadmin-hackers@lists.postgresql.org; Mon, 18 Jan 2021 07:30:47 +0000 Received: from mail-lf1-x12d.google.com ([2a00:1450:4864:20::12d]) by makus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92) (envelope-from ) id 1l1Ozq-0004dQ-Qv for pgadmin-hackers@postgresql.org; Mon, 18 Jan 2021 07:30:45 +0000 Received: by mail-lf1-x12d.google.com with SMTP id a12so22638770lfl.6 for ; Sun, 17 Jan 2021 23:30:42 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=enterprisedb-com.20150623.gappssmtp.com; s=20150623; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=33KNwWZbT1ckkzuyLAR3JhLdXh9bdMwLryGFoylGmLA=; b=XZUJ5f4N97WxtM1uETimQnsNEsMgNE8lRwEhdhk05XyejFA2NZLmgLuJsAUa1OgQzA D96WVnXwq2VzO4ihIcUWp6tNu2/05CheFaPXjy1us3KTOflKVEbFqa1j6OCakLuFR7Cj KI1VgyvJLP+C6M0n2cn9uPGsttl06ThytcYcpHiuyqRjZXGkkceRfoRU0wLBnJADNQPB URwg+MQOTG1oxzeuqX5mV8BEj92Oo8ZY7J8nZD/ydQBEoMzwgljN/FxsZnk4e0zV2921 AYmM0WDzPb3oxpWZbonBCmrg1CSYU4dXAT4pgL1kdN0IJPkRTVs6ItEIWoiE0uOxXXx5 WpRA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=33KNwWZbT1ckkzuyLAR3JhLdXh9bdMwLryGFoylGmLA=; b=qNLtzS0kaBMPHmor5tnakiAmU0l56J1Hp+GCY+4jGwEg9iRH4bTcC/5mjBpY+1+ID8 LoOPYvdgWu8Je9BN5hojC3XAb9dmQnq3sMPHIf+Xr4Md1XJUBFC1E6E2iEJHQu1x92Yj zSzAwvwD34JlP6Oepk9Zx8z6v62o9wBoPgepyz8+Z7hCObd845l9/QZjfmzXOfxkfeQZ TpqwQnk+yTtjbCuaVk4ztAiRj6kKFZ1rb+vaehfUEXUXY6uSXHKvL9A0IpnDA/Dpr/X8 F2CotIB5jCQC0meWMI9mlUso2Mz0cHAzGTbOIDKNliTPk4zcsddEMJcfl+RtnI4VKK4m 7MUQ== X-Gm-Message-State: AOAM531jeXbTITDAYtvE5uNIgkVwbL6lKM8fuvM+5IiDPsNlaqCY3E1c LwFmgCWtqIfHmT7Y/ZERdWrNz4aIE1fcO5JAp69LXW1iI6/fJCMu3/u1/3SQQNGVWnxkEIixoeB aCA5UXSEOLzK37tJ4CV2XzXLoQm1QsAN+tEAV7r4BJDZGb9lmPQj8n99nu7Qps1Z+p8M4kop+pj a9sZowOIjV/S3sPNd4FS70jIX5451M/I+GwAKNNLf7BMFGwm4KUBiwr6IUkQ== X-Google-Smtp-Source: ABdhPJy1B7POnUgHC7DUOxFyK+Sl/J+2iGbIi3yC0M9Sk0Ozbe34wltqW+9S9OTElvXf8rzi/rETyh6jHYfL3UesvPY= X-Received: by 2002:ac2:4437:: with SMTP id w23mr10930866lfl.618.1610955039706; Sun, 17 Jan 2021 23:30:39 -0800 (PST) MIME-Version: 1.0 References: In-Reply-To: From: Khushboo Vashi Date: Mon, 18 Jan 2021 13:00:37 +0530 Message-ID: Subject: Re: [pgAdmin4][Patch] - RM 5457 - Kerberos Authentication - Phase 1 To: Dave Page Cc: Akshay Joshi , Aditya Toshniwal , pgadmin-hackers Content-Type: multipart/mixed; boundary="000000000000e47aa205b927b208" X-CLOUD-SEC-AV-Info: enterprisedb,google_mail,monitor X-CLOUD-SEC-AV-Sent: true X-Gm-Spam: 0 X-Gm-Phishy: 0 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Precedence: bulk --000000000000e47aa205b927b208 Content-Type: multipart/alternative; boundary="000000000000e47aa005b927b206" --000000000000e47aa005b927b206 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Hi, Please find the attached updated patch with the below changes: - Dependencies are added into Linux packages in the RPM/DEBs. - Dev packages are added in the setup scripts for Linux. - The required packages are added in the Dockerfile. - Conditional gssapi 1.6.2 dependency is added for Python 3.5 in requirements.txt. - krb5 libs are not bundled with the Desktop packages, so added the gssapi dependency into the try/catch block. - .dockerignore is introduced to ignore unwanted files/folders like node_modules etc., which will make the docker build fast. (By Ashesh Vashi) Thanks, Khushboo On Fri, Jan 15, 2021 at 3:48 PM Dave Page wrote: > And another thought... > > Some of the Jenkins QA jobs setup the virtual environment for running > tests themselves. I believe these might actually be the cause of some of > the failures we saw initially with the commit - I'll review those, and > ensure they won't try to build the gssapi module from source on Windows. > > On Thu, Jan 14, 2021 at 4:34 PM Dave Page wrote: > >> FYI, I did a quick test (and browse of PyPI): >> >> - On Windows, it seems there is a binary wheel available: >> >> (gssapi) C:\Users\dpage>pip install gssapi >> Collecting gssapi >> Downloading gssapi-1.6.12-cp39-cp39-win_amd64.whl (670 kB) >> |=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2= =96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96= =88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88= =E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88| 6= 70 kB 3.3 MB/s >> Collecting decorator >> Downloading decorator-4.4.2-py2.py3-none-any.whl (9.2 kB) >> Installing collected packages: decorator, gssapi >> Successfully installed decorator-4.4.2 gssapi-1.6.12 >> >> - On macOS, the wheel is built by pip, but it doesn't seem to have any >> additional binary dependencies. >> >> This should simplify things a lot - we just need to ensure the build >> scripts use the binary package on Windows, and install the build deps on >> the Linux/Docker environments (and update the package builds with the >> additional dependencies of course). >> >> >> On Thu, Jan 14, 2021 at 4:04 PM Dave Page wrote: >> >>> Hi Khushboo, >>> >>> As you know, this has been rolled back as the buildfarm blew up. I thin= k >>> there are a number of TODOs that need to be addressed, given that the >>> gssapi Python module is dependent on MIT Kerberos: >>> >>> In the patch: >>> >>> - Linux packages will need the additional dependencies to be declared i= n >>> the RPM/DEBs. >>> - The setup scripts for Linux will need to have the -dev packages added >>> as appropriate. >>> - The various READMEs that describe how to build packages will need to >>> be updated. >>> - The Dockerfile will need to be modified to add the required packages. >>> - The Windows build will need to be updated so the installer ships >>> additional required DLLs. >>> - Are there any additional macOS dependencies? If so, they need to be >>> handled. >>> >>> In the buildfarm: >>> >>> - All Linux build VMs need to be updated with the additional >>> dependencies. >>> - On Windows, we need to figure out how to build/ship KfW. It's a pain >>> to build, which we would typically do ourselves to ensure we're >>> consistently using the same buildchain. If we do build it ourselves: >>> - Will the Python package find it during it's build? >>> - We'll need to create a Jenkins job to perform the build. >>> - Is any work required on macOS, or does it ship with everything that's >>> needed? If not, we'll need to build it, and create the Jenkins job. >>> >>> One final thought: on Windows/macOS, can we force a binary installation >>> from PIP (pip install --only-binary=3Dgssapi gssapi)? If so, will that >>> include the required libraries, as psycopg2-binary does? >>> >>> >>> On Thu, Jan 14, 2021 at 8:18 AM Akshay Joshi < >>> akshay.joshi@enterprisedb.com> wrote: >>> >>>> Thanks, patch applied. >>>> >>>> On Thu, Jan 14, 2021 at 1:42 PM Khushboo Vashi < >>>> khushboo.vashi@enterprisedb.com> wrote: >>>> >>>>> Hi, >>>>> >>>>> Please ignore my previous patch, attached the updated one. >>>>> >>>>> Thanks, >>>>> Khushboo >>>>> >>>>> On Thu, Jan 14, 2021 at 12:17 PM Khushboo Vashi < >>>>> khushboo.vashi@enterprisedb.com> wrote: >>>>> >>>>>> Hi, >>>>>> >>>>>> Please find the attached updated patch. >>>>>> >>>>>> Thanks, >>>>>> Khushboo >>>>>> >>>>>> On Thu, Jan 14, 2021 at 12:00 PM Akshay Joshi < >>>>>> akshay.joshi@enterprisedb.com> wrote: >>>>>> >>>>>>> Hi Khushboo >>>>>>> >>>>>>> Seems you have attached the wrong patch. Please send the updated >>>>>>> patch. >>>>>>> >>>>>>> On Wed, Jan 13, 2021 at 2:35 PM Khushboo Vashi < >>>>>>> khushboo.vashi@enterprisedb.com> wrote: >>>>>>> >>>>>>>> Hi, >>>>>>>> >>>>>>>> Please find the attached updated patch. >>>>>>>> >>>>>>>> Thanks, >>>>>>>> Khushboo >>>>>>>> >>>>>>>> On Fri, Jan 1, 2021 at 1:07 PM Aditya Toshniwal < >>>>>>>> aditya.toshniwal@enterprisedb.com> wrote: >>>>>>>> >>>>>>>>> Hi Khushboo, >>>>>>>>> >>>>>>>>> I've just done the code review. Apart from below, the patch looks >>>>>>>>> good to me: >>>>>>>>> >>>>>>>>> 1) Move the auth source constants -ldap, kerberos out of app >>>>>>>>> object. They don't belong there. You can create the constants >>>>>>>>> somewhere else and import them. >>>>>>>>> >>>>>>>>> +app.PGADMIN_LDAP_AUTH_SOURCE =3D 'ldap' >>>>>>>>> >>>>>>>>> +app.PGADMIN_KERBEROS_AUTH_SOURCE =3D 'kerberos' >>>>>>>>> >>>>>>>>> >>>>>>>>> Done >>>>>>>> >>>>>>>>> 2) Are we going to make kerberos default for wsgi ? >>>>>>>>> >>>>>>>>> *--- a/web/pgAdmin4.wsgi* >>>>>>>>> >>>>>>>>> *+++ b/web/pgAdmin4.wsgi* >>>>>>>>> >>>>>>>>> @@ -24,6 +24,10 @@ builtins.SERVER_MODE =3D True >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> import config >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> + >>>>>>>>> >>>>>>>>> +config.AUTHENTICATION_SOURCES =3D ['kerberos'] >>>>>>>>> >>>>>>>>> +config.KERBEROS_AUTO_CREATE_USER =3D True >>>>>>>>> >>>>>>>>> + >>>>>>>>> >>>>>>>>> >>>>>>>>> Removed, it was only for testing. >>>>>>>> >>>>>>>>> 3) Remove the commented code. >>>>>>>>> >>>>>>>>> + # if self.form.data['email'] and >>>>>>>>> self.form.data['password'] and \ >>>>>>>>> >>>>>>>>> + # source.get_source_name() =3D=3D\ >>>>>>>>> >>>>>>>>> + # current_app.PGADMIN_KERBEROS_AUTH_SOURCE: >>>>>>>>> >>>>>>>>> + # continue >>>>>>>>> >>>>>>>>> >>>>>>>>> Removed the comment, it is actually the part of the code. >>>>>>>> >>>>>>>>> 4) KERBEROSAuthentication could be KerberosAuthentication >>>>>>>>> >>>>>>>>> class KERBEROSAuthentication(BaseAuthentication): >>>>>>>>> >>>>>>>>> >>>>>>>>> Done. >>>>>>>> >>>>>>>>> 5) You can use the constants (ldap, kerberos) you had defined whe= n >>>>>>>>> creating a user. >>>>>>>>> >>>>>>>>> + 'auth_source': 'kerberos' >>>>>>>>> >>>>>>>>> >>>>>>>>> Done. >>>>>>>> >>>>>>>>> 6) The below URLs belong to the authenticate module. Currently >>>>>>>>> they are in the browser module. I would also suggest rephrasing t= he URL >>>>>>>>> from /kerberos_login to /login/kerberos. Same for logout. >>>>>>>>> >>>>>>>> Done the rephrasing as well as moved to the authentication module. >>>>>>>> >>>>>>>> >>>>>>>>> Also, even though the method GET works, we should use the POST >>>>>>>>> method for login and DELETE for logout. >>>>>>>>> >>>>>>>> Kerberos_login just redirects the page to the actual login, so no >>>>>>>> need for the POST method. >>>>>>>> I followed the same method for the Logout user we have used for th= e >>>>>>>> normal user. >>>>>>>> >>>>>>>> >>>>>>>>> +@blueprint.route("/kerberos_login", >>>>>>>>> >>>>>>>>> + endpoint=3D"kerberos_login", methods=3D["GET"]) >>>>>>>>> >>>>>>>>> >>>>>>>>> +@blueprint.route("/kerberos_logout", >>>>>>>>> >>>>>>>>> + endpoint=3D"kerberos_logout", methods=3D["GET"]= ) >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>> >>>>>>>>> On Tue, Dec 22, 2020 at 6:07 PM Akshay Joshi < >>>>>>>>> akshay.joshi@enterprisedb.com> wrote: >>>>>>>>> >>>>>>>>>> Hi Aditya >>>>>>>>>> >>>>>>>>>> Can you please do the code review? >>>>>>>>>> >>>>>>>>>> On Tue, Dec 22, 2020 at 3:44 PM Khushboo Vashi < >>>>>>>>>> khushboo.vashi@enterprisedb.com> wrote: >>>>>>>>>> >>>>>>>>>>> Hi, >>>>>>>>>>> >>>>>>>>>>> Please find the attached patch to support Kerberos >>>>>>>>>>> Authentication in pgAdmin RM 5457. >>>>>>>>>>> >>>>>>>>>>> The patch introduces a new pluggable option for Kerberos >>>>>>>>>>> authentication, using SPNEGO to forward kerberos tickets throug= h a browser >>>>>>>>>>> which will bypass the login page entirely if the Kerberos Authe= ntication >>>>>>>>>>> succeeds. >>>>>>>>>>> >>>>>>>>>>> The complete setup of the Kerberos Server + pgAdmin Server + >>>>>>>>>>> Client is documented in a separate file and attached. >>>>>>>>>>> >>>>>>>>>>> This patch also includes the small fix related to logging #5829 >>>>>>>>>>> >>>>>>>>>>> Thanks, >>>>>>>>>>> Khushboo >>>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> -- >>>>>>>>>> *Thanks & Regards* >>>>>>>>>> *Akshay Joshi* >>>>>>>>>> *pgAdmin Hacker | Principal Software Architect* >>>>>>>>>> *EDB Postgres * >>>>>>>>>> >>>>>>>>>> *Mobile: +91 976-788-8246* >>>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> -- >>>>>>>>> Thanks, >>>>>>>>> Aditya Toshniwal >>>>>>>>> pgAdmin hacker | Sr. Software Engineer | *edbpostgres.com* >>>>>>>>> >>>>>>>>> "Don't Complain about Heat, Plant a TREE" >>>>>>>>> >>>>>>>> >>>>>>> >>>>>>> -- >>>>>>> *Thanks & Regards* >>>>>>> *Akshay Joshi* >>>>>>> *pgAdmin Hacker | Principal Software Architect* >>>>>>> *EDB Postgres * >>>>>>> >>>>>>> *Mobile: +91 976-788-8246* >>>>>>> >>>>>> >>>> >>>> -- >>>> *Thanks & Regards* >>>> *Akshay Joshi* >>>> *pgAdmin Hacker | Principal Software Architect* >>>> *EDB Postgres * >>>> >>>> *Mobile: +91 976-788-8246* >>>> >>> >>> >>> -- >>> Dave Page >>> Blog: http://pgsnake.blogspot.com >>> Twitter: @pgsnake >>> >>> EDB: http://www.enterprisedb.com >>> >>> >> >> -- >> Dave Page >> Blog: http://pgsnake.blogspot.com >> Twitter: @pgsnake >> >> EDB: http://www.enterprisedb.com >> >> > > -- > Dave Page > Blog: http://pgsnake.blogspot.com > Twitter: @pgsnake > > EDB: http://www.enterprisedb.com > > --000000000000e47aa005b927b206 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Hi,

Please find the attached updated pa= tch with the below changes:

- Dependencies are add= ed into Linux packages in the RPM/DEBs.
- Dev packages are a= dded in the setup scripts for Linux.
- The required packages are = added in the Dockerfile.
- Conditional gssapi 1.6.2 dependenc= y is added for Python 3.5 in requirements.txt.
- krb5 libs are no= t bundled with the Desktop packages, so added the gssapi dependency into th= e try/catch block.=C2=A0
- .dockerignore is introduced to ig= nore unwanted files/folders like node_modules etc., which will make the doc= ker build fast.=C2=A0(By Ashesh=C2=A0Vashi)
Thanks,
Khushboo

On Fri, Jan 15, 2021 at 3= :48 PM Dave Page <dpage@pgadmin.org= > wrote:
=
And another thought...

Some of the Jenk= ins QA jobs setup the virtual environment for running tests themselves. I b= elieve these might actually be the cause of some of the failures we saw ini= tially with the commit - I'll review those, and ensure they won't t= ry to build the gssapi module from source on Windows.

On Thu, Jan 14, = 2021 at 4:34 PM Dave Page <dpage@pgadmin.org> wrote:
FYI, I did a quick test (and = browse of PyPI):

- On Windows, it seems there is a binar= y wheel available:

(gssapi) C:\Users\dpage>pip = install gssapi
Collecting gssapi
=C2=A0 Downloading gssapi-1.6.12-cp3= 9-cp39-win_amd64.whl (670 kB)
=C2=A0 =C2=A0 =C2=A0|=E2=96=88=E2=96=88=E2= =96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96= =88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88= =E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2= =96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88| 670 kB 3.3 MB/s
Collecting d= ecorator
=C2=A0 Downloading decorator-4.4.2-py2.py3-none-any.whl (9.2 kB= )
Installing collected packages: decorator, gssapi
Successfully insta= lled decorator-4.4.2 gssapi-1.6.12

- On macOS,= the wheel is built by pip, but it doesn't seem to have any additional = binary dependencies.

This should simplify things a= lot - we just need to ensure the build scripts use the binary package on W= indows, and install the build deps on the Linux/Docker environments=C2=A0(a= nd update the package builds with the additional dependencies of course).


On Thu, Jan 14, 2021 at 4:04 PM Dave Page <dpage@pgadmin.org> wrot= e:
Hi Khushboo,

As you know, this has been rolled back = as the buildfarm blew up. I think there are a number of TODOs that need to = be addressed, given that the gssapi Python module is dependent on MIT Kerbe= ros:

In the patch:

- Linu= x packages will need the additional dependencies to be declared in the RPM/= DEBs.
- The setup scripts for Linux will need to have the -dev pa= ckages added as appropriate.
- The various READMEs that describe = how to build packages will need to be updated.
- The Dockerfile w= ill need to be modified to add the required packages.
- The Windo= ws build will need to be updated so the installer ships additional required= DLLs.
- Are there any additional macOS dependencies? If so, they= need to be handled.

In the buildfarm:
<= br>
- All Linux build VMs need to be updated with the additional = dependencies.
- On Windows, we need to figure out how to build/sh= ip KfW. It's a pain to build, which we would typically do ourselves to = ensure we're consistently using the same buildchain. If we do build it = ourselves:
=C2=A0 - Will the Python package find it during it'= ;s build?
=C2=A0 - We'll need to create a Jenkins job to perf= orm the build.
- Is any work required on macOS, or does it ship w= ith everything that's needed? If not, we'll need to build it, and c= reate the Jenkins job.

One final thought: on Windo= ws/macOS, can we force a binary installation from PIP (pip install --only-b= inary=3Dgssapi gssapi)? If so, will that include the required libraries, as= psycopg2-binary=C2=A0does?


On Thu, Jan 14, 2021 at 8:1= 8 AM Akshay Joshi <akshay.joshi@enterprisedb.com> wrote:
Thanks, patch a= pplied.

On Thu, Jan 14, 2021 at 1:42 PM Khushboo Vashi <khushboo.vashi@ente= rprisedb.com> wrote:
Hi,=C2=A0

Please ignore my = previous patch, attached the updated one.

Thanks,<= /div>
Khushboo

On Thu, Jan 14, 2021 at 12:17 PM Khushboo Vashi <= ;khush= boo.vashi@enterprisedb.com> wrote:
Hi,

Please find the attached updated patch.

Thanks,<= /div>
Khushboo

On Thu, Jan 14, 2021 at 12:00 PM Akshay Joshi <akshay.joshi@en= terprisedb.com> wrote:
Hi=C2=A0Khushboo

Seems yo= u have attached the wrong patch. Please send the updated patch.
=
On Wed= , Jan 13, 2021 at 2:35 PM Khushboo Vashi <khushboo.vashi@enterprisedb.com&= gt; wrote:
Hi,

Please find the attache= d updated patch.

Thanks,
Khushboo
<= /div>
O= n Fri, Jan 1, 2021 at 1:07 PM Aditya Toshniwal <aditya.toshniwal@enterprised= b.com> wrote:
Hi Khus= hboo,

I've just done the code review. A= part from below, the patch looks good to me:

1) Move the auth source constants -ldap, kerberos out of app object. They= don't belong there. You can create the constants somewhere=C2=A0else a= nd import them.

+app.PGADMIN_LDAP_AUTH_SOURCE =3D 'ldap'

+app.PGADMIN_KERBEROS_AUTH_SOURCE =3D 'kerberos'


Done=C2= =A0

2) A= re we going to make kerberos default for wsgi ?

--- a/web/pgAdmin4.wsgi

+++ b/web/pgAdmin4.wsgi

@@ -24,6 +24,10 @@<= /span> builtins.= SERVER_MODE =3D True

=C2=A0

=C2=A0import config

=C2=A0

+

+config.AUTHENTICATION_SOURCES =3D ['kerberos']

+config.KERBEROS_AUTO_C= REATE_USER =3D True

+


Removed, it was only for testing.=C2=A0

3) Remove the commented code.

+=C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 # if self.form.data['email'] and self.form= .data['password'] and \

+=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 # =C2=A0 =C2=A0 =C2=A0 =C2=A0 source.get_source_name() =3D=3D\=

+=C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 # =C2=A0 =C2=A0 =C2=A0 =C2=A0 = current_app.PGADMIN_KERBEROS_AUTH_SOURCE:

+=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 # =C2=A0 =C2=A0 continue


=
Removed the comment, it is actually the part = of the code.=C2=A0
<= div dir=3D"ltr">

class KERBEROSAuthentication(BaseAuthentication):


Done.=C2=A0
=

5) You can use the = constants (ldap, kerberos) you had defined when creating a user.

+=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 'auth_source': 'kerberos'


Done.=C2=A0=

6) The below URL= s belong to the authenticate module. Currently they are in the browser modu= le. I would also suggest rephrasing the URL from /kerberos_login to /login/= kerberos. Same for logout.
Done the re= phrasing as well as moved to the authentication module.
=C2=A0
= Also, even though the method GET works, = we should use the POST method for login and DELETE for logout.
=
Kerberos_login just redirects the page to the actua= l login, so no need for the POST method.
I followed the same meth= od for the Logout user we have used for the normal user.
=C2=A0

+@blueprint.route("/ke= rberos_login",

+ =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 endpoint=3D"kerberos_login", methods=3D["G= ET"])


+@blueprint.route("/kerberos_logout",

<= p style=3D"font-family:Menlo;margin:0px;font-variant-numeric:normal;font-va= riant-east-asian:normal;font-stretch:normal;font-size:16px;line-height:norm= al;color:rgb(57,192,38)">

+ =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 endpoint=3D"kerberos_logout", methods=3D["= GET"])



=C2=A0
On Tue, = Dec 22, 2020 at 6:07 PM Akshay Joshi <akshay.joshi@enterprisedb.com> wrot= e:
Hi Aditya

Can you please do the code review?



--


--
Thanks,
Aditya Toshniwal=
pgAdmin hacker=C2=A0| Sr. Software Engineer | edbpostgres.com
&quo= t;Don't Complain about Heat, Plant a TREE"


--
Thank= s & Regards
Akshay Joshi
pgAdmin Hacker | Principal Softw= are Architect
EDB Po= stgres
Mobile: +91 976-788-8246



--
Thank= s & Regards
Akshay Joshi
pgAdmin Hacker | Principal Softw= are Architect
EDB Po= stgres
Mobile: +91 976-788-8246



--


--


--
--000000000000e47aa005b927b206-- --000000000000e47aa205b927b208 Content-Type: application/octet-stream; name="RM_5457_v3.patch" Content-Disposition: attachment; filename="RM_5457_v3.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_kk28iqjz0 ZGlmZiAtLWdpdCBhLy5kb2NrZXJpZ25vcmUgYi8uZG9ja2VyaWdub3JlCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAwMC4uNGMzZDhiMGFiCi0tLSAvZGV2L251bGwKKysrIGIvLmRv Y2tlcmlnbm9yZQpAQCAtMCwwICsxLDYgQEAKKy5naXQKK3dlYi9ub2RlX21vZHVsZXMKK3dlYi8q LmxvZword2ViL3JlZ3Jlc3Npb24KK3dlYi8qKi90ZXN0cy8KKy5EU19TdG9yZQpkaWZmIC0tZ2l0 IGEvRG9ja2VyZmlsZSBiL0RvY2tlcmZpbGUKaW5kZXggNjYzMmU4OGFjLi5mZTkyZjhkOTMgMTAw NjQ0Ci0tLSBhL0RvY2tlcmZpbGUKKysrIGIvRG9ja2VyZmlsZQpAQCAtMTU3LDExICsxNTcsMTUg QEAgUlVOIGFwayBhZGQgLS1uby1jYWNoZSAtLXZpcnR1YWwgXAogICAgICAgICBidWlsZC1iYXNl IFwKICAgICAgICAgcG9zdGdyZXNxbC1kZXYgXAogICAgICAgICBsaWJmZmktZGV2IFwKKyAgICAg ICAga3JiNS1kZXYgXAorICAgICAgICBlMmZzcHJvZ3MtZGV2IFwKKyAgICAgICAga3JiNS1zZXJ2 ZXItbGRhcCBcCiAgICAgICAgIGxpbnV4LWhlYWRlcnMgJiYgXAogICAgIGFwayBhZGQgXAogICAg ICAgICBwb3N0Zml4IFwKICAgICAgICAgcG9zdGdyZXNxbC1jbGllbnQgXAogICAgICAgICBwb3N0 Z3Jlc3FsLWxpYnMgXAorICAgICAgICBrcmI1LWxpYnMgXAogICAgICAgICBzaGFkb3cgXAogICAg ICAgICBzdWRvIFwKICAgICAgICAgbGliY2FwICYmIFwKZGlmZiAtLWdpdCBhL3BrZy9kZWJpYW4v YnVpbGQuc2ggYi9wa2cvZGViaWFuL2J1aWxkLnNoCmluZGV4IDZlNDcxOGIwZi4uODEwZTljODY4 IDEwMDc1NQotLS0gYS9wa2cvZGViaWFuL2J1aWxkLnNoCisrKyBiL3BrZy9kZWJpYW4vYnVpbGQu c2gKQEAgLTc2LDcgKzc2LDcgQEAgY2F0IDw8IEVPRiA+ICIke1dFQlJPT1R9L0RFQklBTi9jb250 cm9sIgogUGFja2FnZTogJHtBUFBfTkFNRX0td2ViCiBWZXJzaW9uOiAke0FQUF9MT05HX1ZFUlNJ T059CiBBcmNoaXRlY3R1cmU6IGFsbAotRGVwZW5kczogJHtBUFBfTkFNRX0tc2VydmVyLCBhcGFj aGUyLCBsaWJhcGFjaGUyLW1vZC13c2dpLXB5MworRGVwZW5kczogJHtBUFBfTkFNRX0tc2VydmVy LCBhcGFjaGUyLCBsaWJhcGFjaGUyLW1vZC13c2dpLXB5MywgbGliZ3NzYXBpLWtyYjUtMgogTWFp bnRhaW5lcjogcGdBZG1pbiBEZXZlbG9wbWVudCBUZWFtIDxwZ2FkbWluLWhhY2tlcnNAcG9zdGdy ZXNxbC5vcmc+CiBEZXNjcmlwdGlvbjogVGhlIHdlYiBpbnRlcmZhY2UgZm9yIHBnQWRtaW4sIGhv c3RlZCB1bmRlciBBcGFjaGUgSFRUUEQuIHBnQWRtaW4gaXMgdGhlIG1vc3QgcG9wdWxhciBhbmQg ZmVhdHVyZSByaWNoIE9wZW4gU291cmNlIGFkbWluaXN0cmF0aW9uIGFuZCBkZXZlbG9wbWVudCBw bGF0Zm9ybSBmb3IgUG9zdGdyZVNRTCwgdGhlIG1vc3QgYWR2YW5jZWQgT3BlbiBTb3VyY2UgZGF0 YWJhc2UgaW4gdGhlIHdvcmxkLgogRU9GCmRpZmYgLS1naXQgYS9wa2cvZGViaWFuL3NldHVwLnNo IGIvcGtnL2RlYmlhbi9zZXR1cC5zaAppbmRleCA4MzkxMzJlYTIuLjg5ZGRiNzc5MiAxMDA3NTUK LS0tIGEvcGtnL2RlYmlhbi9zZXR1cC5zaAorKysgYi9wa2cvZGViaWFuL3NldHVwLnNoCkBAIC0z MCw1ICszMCw1IEBAIGFwdCB1cGRhdGUKIAogIyBJbnN0YWxsIHByZS1yZXFzCiBlY2hvICJJbnN0 YWxsaW5nIGJ1aWxkIHByZS1yZXF1aXNpdGVzLi4uIgotYXB0IGluc3RhbGwgLXkgYnVpbGQtZXNz ZW50aWFsIHB5dGhvbjMtZGV2IHB5dGhvbjMtdmVudiBweXRob24zLXNwaGlueCBweXRob24zLXdo ZWVsIGxpYnBxLWRldiBsaWJmZmktZGV2IHF0YmFzZTUtZGV2IHF0NS1xbWFrZSBub2RlanMgeWFy bgorYXB0IGluc3RhbGwgLXkgYnVpbGQtZXNzZW50aWFsIHB5dGhvbjMtZGV2IHB5dGhvbjMtdmVu diBweXRob24zLXNwaGlueCBweXRob24zLXdoZWVsIGxpYnBxLWRldiBsaWJmZmktZGV2IHF0YmFz ZTUtZGV2IHF0NS1xbWFrZSBub2RlanMgeWFybiBsaWJrcmI1LWRldgogCmRpZmYgLS1naXQgYS9w a2cvcmVkaGF0L2J1aWxkLnNoIGIvcGtnL3JlZGhhdC9idWlsZC5zaAppbmRleCBkNTAxOTQ2YTMu LjQ4YmU2ZTU0OSAxMDA3NTUKLS0tIGEvcGtnL3JlZGhhdC9idWlsZC5zaAorKysgYi9wa2cvcmVk aGF0L2J1aWxkLnNoCkBAIC0xMzEsOSArMTMxLDkgQEAgU3VtbWFyeToJVGhlIHdlYiBpbnRlcmZh Y2UgZm9yIHBnQWRtaW4sIGhvc3RlZCB1bmRlciBBcGFjaGUgSFRUUEQuCiBMaWNlbnNlOglQb3N0 Z3JlU1FMCiBVUkw6CQlodHRwczovL3d3dy5wZ2FkbWluLm9yZy8KICVpZiAwJXs/cmhlbH0gJiYg MCV7P3JoZWx9ID09IDcKLVJlcXVpcmVzOgkke0FQUF9OQU1FfS1zZXJ2ZXIsIGh0dHBkLCBwZ2Fk bWluNC1weXRob24zLW1vZF93c2dpCitSZXF1aXJlczoJJHtBUFBfTkFNRX0tc2VydmVyLCBodHRw ZCwgcGdhZG1pbjQtcHl0aG9uMy1tb2Rfd3NnaSwga3JiNS1saWJzCiAlZWxzZQotUmVxdWlyZXM6 CSR7QVBQX05BTUV9LXNlcnZlciwgaHR0cGQsIHB5dGhvbjMtbW9kX3dzZ2kKK1JlcXVpcmVzOgkk e0FQUF9OQU1FfS1zZXJ2ZXIsIGh0dHBkLCBweXRob24zLW1vZF93c2dpLCBrcmI1LWxpYnMKICVl bmRpZgogCiAlZGVzY3JpcHRpb24KZGlmZiAtLWdpdCBhL3BrZy9yZWRoYXQvc2V0dXAuc2ggYi9w a2cvcmVkaGF0L3NldHVwLnNoCmluZGV4IDVhZDY1OTQ5OC4uZmZkM2Y2NTQ2IDEwMDc1NQotLS0g YS9wa2cvcmVkaGF0L3NldHVwLnNoCisrKyBiL3BrZy9yZWRoYXQvc2V0dXAuc2gKQEAgLTM1LDEw ICszNSwxMCBAQCBlY2hvICJJbnN0YWxsaW5nIGJ1aWxkIHByZS1yZXF1aXNpdGVzLi4uIgogeXVt IGdyb3VwaW5zdGFsbCAteSAiRGV2ZWxvcG1lbnQgVG9vbHMiCiAKIGlmIFsgJHtPU19WRVJTSU9O fSA9PSA3IF07IHRoZW4KLSAgICB5dW0gaW5zdGFsbCAteSBleHBlY3QgZmFrZXJvb3QgaHR0cGQt ZGV2ZWwgcXQ1LXF0YmFzZS1kZXZlbCBwb3N0Z3Jlc3FsMTItZGV2ZWwgcHl0aG9uMy1kZXZlbCBu b2RlanMgeWFybiBycG0tYnVpbGQgcnBtLXNpZ24geXVtLXV0aWxzCisgICAgeXVtIGluc3RhbGwg LXkgZXhwZWN0IGZha2Vyb290IGh0dHBkLWRldmVsIHF0NS1xdGJhc2UtZGV2ZWwgcG9zdGdyZXNx bDEyLWRldmVsIHB5dGhvbjMtZGV2ZWwgbm9kZWpzIHlhcm4gcnBtLWJ1aWxkIHJwbS1zaWduIHl1 bS11dGlscyBrcmI1LWRldmVsCiAgICAgcGlwMyBpbnN0YWxsIHNwaGlueAogZWxzZQotICAgIHl1 bSBpbnN0YWxsIC15IGV4cGVjdCBmYWtlcm9vdCBxdDUtcXRiYXNlLWRldmVsIHBvc3RncmVzcWwx Mi1kZXZlbCBweXRob24zLWRldmVsIHB5dGhvbjMtc3BoaW54IG5vZGVqcyB5YXJuIHJwbS1idWls ZCBycG0tc2lnbiB5dW0tdXRpbHMKKyAgICB5dW0gaW5zdGFsbCAteSBleHBlY3QgZmFrZXJvb3Qg cXQ1LXF0YmFzZS1kZXZlbCBwb3N0Z3Jlc3FsMTItZGV2ZWwgcHl0aG9uMy1kZXZlbCBweXRob24z LXNwaGlueCBub2RlanMgeWFybiBycG0tYnVpbGQgcnBtLXNpZ24geXVtLXV0aWxzIGtyYjUtZGV2 ZWwKIGZpCiAKICMgU2V0dXAgUlBNIG1hY3JvcyBmb3Igc2lnbmluZwpkaWZmIC0tZ2l0IGEvcmVx dWlyZW1lbnRzLnR4dCBiL3JlcXVpcmVtZW50cy50eHQKaW5kZXggZjM5MWMwOGRmLi5kNThlMWVi ZmQgMTAwNjQ0Ci0tLSBhL3JlcXVpcmVtZW50cy50eHQKKysrIGIvcmVxdWlyZW1lbnRzLnR4dApA QCAtNDMsMyArNDMsNiBAQCBjcnlwdG9ncmFwaHk8PTMuMDsKIHNzaHR1bm5lbD49MC4xLjUKIGxk YXAzPj0yLjUuMQogRmxhc2stQmFiZWxFeD49MC45LjQKK2dzc2FwaT49MS42LjExOyBweXRob25f dmVyc2lvbiA+PSAnMy42JworZ3NzYXBpPT0xLjYuMjsgcHl0aG9uX3ZlcnNpb24gPD0gJzMuNScK KwpkaWZmIC0tZ2l0IGEvd2ViL2NvbmZpZy5weSBiL3dlYi9jb25maWcucHkKaW5kZXggMmIzMTRm ZTY5Li5kMDJhOTEzODAgMTAwNjQ0Ci0tLSBhL3dlYi9jb25maWcucHkKKysrIGIvd2ViL2NvbmZp Zy5weQpAQCAtNTM1LDcgKzUzNSw3IEBAIEVOSEFOQ0VEX0NPT0tJRV9QUk9URUNUSU9OID0gVHJ1 ZQogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMKIAogIyBEZWZhdWx0IHNldHRpbmcgaXMgaW50ZXJuYWwKLSMg RXh0ZXJuYWwgU3VwcG9ydGVkIFNvdXJjZXM6IGxkYXAKKyMgRXh0ZXJuYWwgU3VwcG9ydGVkIFNv dXJjZXM6IGxkYXAsIGtlcmJlcm9zCiAjIE11bHRpcGxlIGF1dGhlbnRpY2F0aW9uIGNhbiBiZSBh Y2hpZXZlZCBieSBzZXR0aW5nIHRoaXMgcGFyYW1ldGVyIHRvCiAjIFsnbGRhcCcsICdpbnRlcm5h bCddLiBwZ0FkbWluIHdpbGwgYXV0aGVudGljYXRlIHRoZSB1c2VyIHdpdGggbGRhcCBmaXJzdCwK ICMgaW4gY2FzZSBvZiBmYWlsdXJlIGludGVybmFsIGF1dGhlbnRpY2F0aW9uIHdpbGwgYmUgZG9u ZS4KQEAgLTYxOCw2ICs2MTgsMjYgQEAgTERBUF9DQV9DRVJUX0ZJTEUgPSAnJwogTERBUF9DRVJU X0ZJTEUgPSAnJwogTERBUF9LRVlfRklMRSA9ICcnCiAKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMg S2VyYmVyb3MgQ29uZmlndXJhdGlvbgorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworS1JCX0FQUF9IT1NU X05BTUUgPSBERUZBVUxUX1NFUlZFUgorCisjIElmIHRoZSBkZWZhdWx0X2tleXRhYl9uYW1lIGlz IG5vdCBzZXQgaW4ga3JiNS5jb25mIG9yCisjIHRoZSBLUkJfS1ROQU1FIGVudmlyb25tZW50IHZh cmlhYmxlIGlzIG5vdCBzZXQgdGhlbiwgZXhwbGljaXRseSBzZXQKKyMgdGhlIEtleXRhYiBmaWxl CisKK0tSQl9LVE5BTUUgPSAnPEtSQjVfS0VZVEFCX0ZJTEU+JworCisjIEFmdGVyIGtlcmJlcm9z IGF1dGhlbnRpY2F0aW9uLCB1c2VyIHdpbGwgYmUgYWRkZWQgaW50byB0aGUgU1FMaXRlIGRhdGFi YXNlCisjIGF1dG9tYXRpY2FsbHksIGlmIHNldCB0byBUcnVlLgorIyBTZXQgaXQgdG8gRmFsc2Us IGlmIHVzZXIgc2hvdWxkIG5vdCBiZSBhZGRlZCBhdXRvbWF0aWNhbGx5LAorIyBpbiB0aGlzIGNh c2UgQWRtaW4gaGFzIHRvIGFkZCB0aGUgdXNlciBtYW51YWxseSBpbiB0aGUgU1FMaXRlIGRhdGFi YXNlLgorCitLUkJfQVVUT19DUkVBVEVfVVNFUiA9IFRydWUKKwogIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMK ICMgTG9jYWwgY29uZmlnIHNldHRpbmdzCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwpkaWZmIC0tZ2l0IGEv d2ViL3BnQWRtaW40LnB5IGIvd2ViL3BnQWRtaW40LnB5CmluZGV4IGZmOWMwMGY1MC4uMTRhZmU3 ZGMxIDEwMDY0NAotLS0gYS93ZWIvcGdBZG1pbjQucHkKKysrIGIvd2ViL3BnQWRtaW40LnB5CkBA IC0zNSw2ICszNSw5IEBAIGVsc2U6CiBpbXBvcnQgY29uZmlnCiBmcm9tIHBnYWRtaW4gaW1wb3J0 IGNyZWF0ZV9hcHAKIGZyb20gcGdhZG1pbi51dGlscyBpbXBvcnQgdV9lbmNvZGUsIGZzX2VuY29k aW5nLCBmaWxlX3F1b3RlCitmcm9tIHBnYWRtaW4udXRpbHMuY29uc3RhbnRzIGltcG9ydCBJTlRF Uk5BTCwgTERBUCxcCisgICAgS0VSQkVST1MsIFNVUFBPUlRFRF9BVVRIX1NPVVJDRVMKKwogIyBH ZXQgdGhlIGNvbmZpZyBkYXRhYmFzZSBzY2hlbWEgdmVyc2lvbi4gV2Ugc3RvcmUgdGhpcyBpbiBw Z2FkbWluLm1vZGVsCiAjIGFzIGl0IHR1cm5zIG91dCB0aGF0IHB1dHRpbmcgaXQgaW4gdGhlIGNv bmZpZyBmaWxlcyBpc24ndCBhIGdyZWF0IGlkZWEKIGZyb20gcGdhZG1pbi5tb2RlbCBpbXBvcnQg U0NIRU1BX1ZFUlNJT04KQEAgLTk2LDE1ICs5OSwxMSBAQCBpZiBjb25maWcuU0VSVkVSX01PREU6 CiAgICAgYXBwLndzZ2lfYXBwID0gUmV2ZXJzZVByb3hpZWQoYXBwLndzZ2lfYXBwKQogCiAjIEF1 dGhlbnRpY2F0aW9uIHNvdXJjZXMKLWFwcC5QR0FETUlOX0RFRkFVTFRfQVVUSF9TT1VSQ0UgPSAn aW50ZXJuYWwnCi1hcHAuUEdBRE1JTl9TVVBQT1JURURfQVVUSF9TT1VSQ0UgPSBbJ2ludGVybmFs JywgJ2xkYXAnXQorCiBpZiBsZW4oY29uZmlnLkFVVEhFTlRJQ0FUSU9OX1NPVVJDRVMpID4gMDoK ICAgICBhcHAuUEdBRE1JTl9FWFRFUk5BTF9BVVRIX1NPVVJDRSA9IGNvbmZpZy5BVVRIRU5USUNB VElPTl9TT1VSQ0VTWzBdCiBlbHNlOgotICAgIGFwcC5QR0FETUlOX0VYVEVSTkFMX0FVVEhfU09V UkNFID0gYXBwLlBHQURNSU5fREVGQVVMVF9BVVRIX1NPVVJDRQotCi1hcHAubG9nZ2VyLmRlYnVn KAotICAgICJBdXRoZW50aWNhdGlvbiBTb3VyY2U6ICVzIiAlIGFwcC5QR0FETUlOX0RFRkFVTFRf QVVUSF9TT1VSQ0UpCisgICAgYXBwLlBHQURNSU5fRVhURVJOQUxfQVVUSF9TT1VSQ0UgPSBJTlRF Uk5BTAogCiAjIFN0YXJ0IHRoZSB3ZWIgc2VydmVyLiBUaGUgcG9ydCBudW1iZXIgc2hvdWxkIGhh dmUgYWxyZWFkeSBiZWVuIHNldCBieSB0aGUKICMgcnVudGltZSBpZiB3ZSdyZSBydW5uaW5nIGlu IGRlc2t0b3AgbW9kZSwgb3RoZXJ3aXNlIHdlJ2xsIGp1c3QgdXNlIHRoZQpkaWZmIC0tZ2l0IGEv d2ViL3BnYWRtaW4vX19pbml0X18ucHkgYi93ZWIvcGdhZG1pbi9fX2luaXRfXy5weQppbmRleCBk YWUwYjhjZDIuLmE3MzMzNTM3MSAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vX19pbml0X18ucHkK KysrIGIvd2ViL3BnYWRtaW4vX19pbml0X18ucHkKQEAgLTQzLDYgKzQzLDcgQEAgZnJvbSBwZ2Fk bWluLnV0aWxzLmFqYXggaW1wb3J0IGludGVybmFsX3NlcnZlcl9lcnJvciwgbWFrZV9qc29uX3Jl c3BvbnNlCiBmcm9tIHBnYWRtaW4udXRpbHMuY3NyZiBpbXBvcnQgcGdDU1JGUHJvdGVjdAogZnJv bSBwZ2FkbWluIGltcG9ydCBhdXRoZW50aWNhdGUKIGZyb20gcGdhZG1pbi51dGlscy5zZWN1cml0 eV9oZWFkZXJzIGltcG9ydCBTZWN1cml0eUhlYWRlcnMKK2Zyb20gcGdhZG1pbi51dGlscy5jb25z dGFudHMgaW1wb3J0IEtFUkJFUk9TCiAKICMgRXhwbGljaXRseSBzZXQgdGhlIG1pbWUtdHlwZXMg c28gdGhhdCBhIGNvcnJ1cHRlZCB3aW5kb3dzIHJlZ2lzdHJ5IHdpbGwgbm90CiAjIGFmZmVjdCBw Z0FkbWluIDQgdG8gYmUgbG9hZCBwcm9wZXJseS4gVGhpcyB3aWxsIGF2b2lkIHRoZSBpc3N1ZXMg dGhhdCBtYXkKQEAgLTY3NCw2ICs2NzUsNyBAQCBkZWYgY3JlYXRlX2FwcChhcHBfbmFtZT1Ob25l KToKIAogICAgICAgICAjIENoZWNrIHRoZSBhdXRoIGtleSBpcyB2YWxpZCwgaWYgaXQncyBzZXQs IGFuZCB3ZSdyZSBub3QgaW4gc2VydmVyCiAgICAgICAgICMgbW9kZSwgYW5kIGl0J3Mgbm90IGEg aGVscCBmaWxlIHJlcXVlc3QuCisKICAgICAgICAgaWYgbm90IGNvbmZpZy5TRVJWRVJfTU9ERSBh bmQgYXBwLlBHQURNSU5fSU5UX0tFWSAhPSAnJyBhbmQgKCgKICAgICAgICAgICAgICdrZXknIG5v dCBpbiByZXF1ZXN0LmFyZ3Mgb3IKICAgICAgICAgICAgIHJlcXVlc3QuYXJnc1sna2V5J10gIT0g YXBwLlBHQURNSU5fSU5UX0tFWSkgYW5kCkBAIC02OTUsMTEgKzY5NywxOSBAQCBkZWYgY3JlYXRl X2FwcChhcHBfbmFtZT1Ob25lKToKICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAg YWJvcnQoNDAxKQogICAgICAgICAgICAgbG9naW5fdXNlcih1c2VyKQorICAgICAgICBlbGlmIGNv bmZpZy5TRVJWRVJfTU9ERSBhbmRcCisgICAgICAgICAgICAgICAgYXBwLlBHQURNSU5fRVhURVJO QUxfQVVUSF9TT1VSQ0UgPT1cCisgICAgICAgICAgICAgICAgS0VSQkVST1MgYW5kIFwKKyAgICAg ICAgICAgICAgICBub3QgY3VycmVudF91c2VyLmlzX2F1dGhlbnRpY2F0ZWQgYW5kIFwKKyAgICAg ICAgICAgICAgICByZXF1ZXN0LmVuZHBvaW50IGluICgncmVkaXJlY3RzLmluZGV4JywgJ3NlY3Vy aXR5LmxvZ2luJyk6CisgICAgICAgICAgICByZXR1cm4gYXV0aGVudGljYXRlLmxvZ2luKCkKIAog ICAgICAgICAjIGlmIHRoZSBzZXJ2ZXIgaXMgcmVzdGFydGVkIHRoZSBpbiBtZW1vcnkga2V5IHdp bGwgYmUgbG9zdAogICAgICAgICAjIGJ1dCB0aGUgdXNlciBzZXNzaW9uIG1heSBzdGlsbCBiZSBh Y3RpdmUuIExvZ291dCB0aGUgdXNlcgogICAgICAgICAjIHRvIGdldCB0aGUga2V5IGFnYWluIHdo ZW4gbG9naW4KICAgICAgICAgaWYgY29uZmlnLlNFUlZFUl9NT0RFIGFuZCBjdXJyZW50X3VzZXIu aXNfYXV0aGVudGljYXRlZCBhbmQgXAorICAgICAgICAgICAgICAgIGFwcC5QR0FETUlOX0VYVEVS TkFMX0FVVEhfU09VUkNFICE9IFwKKyAgICAgICAgICAgICAgICBLRVJCRVJPUyBhbmQgXAogICAg ICAgICAgICAgICAgIGN1cnJlbnRfYXBwLmtleU1hbmFnZXIuZ2V0KCkgaXMgTm9uZSBhbmQgXAog ICAgICAgICAgICAgICAgIHJlcXVlc3QuZW5kcG9pbnQgbm90IGluICgnc2VjdXJpdHkubG9naW4n LCAnc2VjdXJpdHkubG9nb3V0Jyk6CiAgICAgICAgICAgICBsb2dvdXRfdXNlcigpCmRpZmYgLS1n aXQgYS93ZWIvcGdhZG1pbi9hdXRoZW50aWNhdGUvX19pbml0X18ucHkgYi93ZWIvcGdhZG1pbi9h dXRoZW50aWNhdGUvX19pbml0X18ucHkKaW5kZXggN2VkZTczY2Q4Li4xZmRiNjZjZjcgMTAwNjQ0 Ci0tLSBhL3dlYi9wZ2FkbWluL2F1dGhlbnRpY2F0ZS9fX2luaXRfXy5weQorKysgYi93ZWIvcGdh ZG1pbi9hdXRoZW50aWNhdGUvX19pbml0X18ucHkKQEAgLTExLDE2ICsxMSwyMSBAQAogCiBpbXBv cnQgZmxhc2sKIGltcG9ydCBwaWNrbGUKLWZyb20gZmxhc2sgaW1wb3J0IGN1cnJlbnRfYXBwLCBm bGFzaAorZnJvbSBmbGFzayBpbXBvcnQgY3VycmVudF9hcHAsIGZsYXNoLCBSZXNwb25zZSwgcmVx dWVzdCwgdXJsX2ZvcixcCisgICAgcmVuZGVyX3RlbXBsYXRlCiBmcm9tIGZsYXNrX2JhYmVsZXgg aW1wb3J0IGdldHRleHQKIGZyb20gZmxhc2tfc2VjdXJpdHkgaW1wb3J0IGN1cnJlbnRfdXNlcgog ZnJvbSBmbGFza19zZWN1cml0eS52aWV3cyBpbXBvcnQgX3NlY3VyaXR5LCBfY3R4CiBmcm9tIGZs YXNrX3NlY3VyaXR5LnV0aWxzIGltcG9ydCBjb25maWdfdmFsdWUsIGdldF9wb3N0X2xvZ291dF9y ZWRpcmVjdCwgXAotICAgIGdldF9wb3N0X2xvZ2luX3JlZGlyZWN0CisgICAgZ2V0X3Bvc3RfbG9n aW5fcmVkaXJlY3QsIGxvZ291dF91c2VyCisKIGZyb20gZmxhc2sgaW1wb3J0IHNlc3Npb24KIAog aW1wb3J0IGNvbmZpZwogZnJvbSBwZ2FkbWluLnV0aWxzIGltcG9ydCBQZ0FkbWluTW9kdWxlCitm cm9tIHBnYWRtaW4udXRpbHMuY29uc3RhbnRzIGltcG9ydCBLRVJCRVJPUworZnJvbSBwZ2FkbWlu LnV0aWxzLmNzcmYgaW1wb3J0IHBnQ1NSRlByb3RlY3QKKwogZnJvbSAucmVnaXN0cnkgaW1wb3J0 IEF1dGhTb3VyY2VSZWdpc3RyeQogCiBNT0RVTEVfTkFNRSA9ICdhdXRoZW50aWNhdGUnCkBAIC0y OCwxMiArMzMsMzQgQEAgTU9EVUxFX05BTUUgPSAnYXV0aGVudGljYXRlJwogCiBjbGFzcyBBdXRo ZW50aWNhdGVNb2R1bGUoUGdBZG1pbk1vZHVsZSk6CiAgICAgZGVmIGdldF9leHBvc2VkX3VybF9l bmRwb2ludHMoc2VsZik6Ci0gICAgICAgIHJldHVybiBbJ2F1dGhlbnRpY2F0ZS5sb2dpbiddCisg ICAgICAgIHJldHVybiBbJ2F1dGhlbnRpY2F0ZS5sb2dpbicsCisgICAgICAgICAgICAgICAgJ2F1 dGhlbnRpY2F0ZS5rZXJiZXJvc19sb2dpbicsCisgICAgICAgICAgICAgICAgJ2F1dGhlbnRpY2F0 ZS5rZXJiZXJvc19sb2dvdXQnXQogCiAKIGJsdWVwcmludCA9IEF1dGhlbnRpY2F0ZU1vZHVsZShN T0RVTEVfTkFNRSwgX19uYW1lX18sIHN0YXRpY191cmxfcGF0aD0nJykKIAogCitAYmx1ZXByaW50 LnJvdXRlKCIvbG9naW4va2VyYmVyb3MiLAorICAgICAgICAgICAgICAgICBlbmRwb2ludD0ia2Vy YmVyb3NfbG9naW4iLCBtZXRob2RzPVsiR0VUIl0pCitAcGdDU1JGUHJvdGVjdC5leGVtcHQKK2Rl ZiBrZXJiZXJvc19sb2dpbigpOgorICAgIGxvZ291dF91c2VyKCkKKyAgICByZXR1cm4gUmVzcG9u c2UocmVuZGVyX3RlbXBsYXRlKCJicm93c2VyL2tlcmJlcm9zX2xvZ2luLmh0bWwiLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9naW5fdXJsPXVybF9mb3IoJ3NlY3VyaXR5 LmxvZ2luJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApKQorCisKK0Bi bHVlcHJpbnQucm91dGUoIi9sb2dvdXQva2VyYmVyb3MiLAorICAgICAgICAgICAgICAgICBlbmRw b2ludD0ia2VyYmVyb3NfbG9nb3V0IiwgbWV0aG9kcz1bIkdFVCJdKQorQHBnQ1NSRlByb3RlY3Qu ZXhlbXB0CitkZWYga2VyYmVyb3NfbG9nb3V0KCk6CisgICAgbG9nb3V0X3VzZXIoKQorICAgIHJl dHVybiBSZXNwb25zZShyZW5kZXJfdGVtcGxhdGUoImJyb3dzZXIva2VyYmVyb3NfbG9nb3V0Lmh0 bWwiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9naW5fdXJsPXVybF9m b3IoJ3NlY3VyaXR5LmxvZ2luJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICApKQorCisKIEBibHVlcHJpbnQucm91dGUoJy9sb2dpbicsIGVuZHBvaW50PSdsb2dpbicsIG1l dGhvZHM9WydHRVQnLCAnUE9TVCddKQogZGVmIGxvZ2luKCk6CiAgICAgIiIiCkBAIC01NiwxNSAr ODMsMjQgQEAgZGVmIGxvZ2luKCk6CiAgICAgaWYgc3RhdHVzOgogICAgICAgICAjIExvZ2luIHRo ZSB1c2VyCiAgICAgICAgIHN0YXR1cywgbXNnID0gYXV0aF9vYmoubG9naW4oKQorICAgICAgICBj dXJyZW50X2F1dGhfb2JqID0gYXV0aF9vYmouYXNfZGljdCgpCiAgICAgICAgIGlmIG5vdCBzdGF0 dXM6CisgICAgICAgICAgICBpZiBjdXJyZW50X2F1dGhfb2JqWydjdXJyZW50X3NvdXJjZSddID09 XAorICAgICAgICAgICAgICAgICAgICBLRVJCRVJPUzoKKyAgICAgICAgICAgICAgICByZXR1cm4g Zmxhc2sucmVkaXJlY3QoJ3swfT9uZXh0PXsxfScuZm9ybWF0KHVybF9mb3IoCisgICAgICAgICAg ICAgICAgICAgICdhdXRoZW50aWNhdGUua2VyYmVyb3NfbG9naW4nKSwgdXJsX2ZvcignYnJvd3Nl ci5pbmRleCcpKSkKKwogICAgICAgICAgICAgZmxhc2goZ2V0dGV4dChtc2cpLCAnZGFuZ2VyJykK ICAgICAgICAgICAgIHJldHVybiBmbGFzay5yZWRpcmVjdChnZXRfcG9zdF9sb2dvdXRfcmVkaXJl Y3QoKSkKIAotICAgICAgICBzZXNzaW9uWydfYXV0aF9zb3VyY2VfbWFuYWdlcl9vYmonXSA9IGF1 dGhfb2JqLmFzX2RpY3QoKQorICAgICAgICBzZXNzaW9uWydfYXV0aF9zb3VyY2VfbWFuYWdlcl9v YmonXSA9IGN1cnJlbnRfYXV0aF9vYmoKICAgICAgICAgcmV0dXJuIGZsYXNrLnJlZGlyZWN0KGdl dF9wb3N0X2xvZ2luX3JlZGlyZWN0KCkpCiAKKyAgICBlbGlmIGlzaW5zdGFuY2UobXNnLCBSZXNw b25zZSk6CisgICAgICAgIHJldHVybiBtc2cKICAgICBmbGFzaChnZXR0ZXh0KG1zZyksICdkYW5n ZXInKQotICAgIHJldHVybiBmbGFzay5yZWRpcmVjdChnZXRfcG9zdF9sb2dvdXRfcmVkaXJlY3Qo KSkKKyAgICByZXNwb25zZSA9IGZsYXNrLnJlZGlyZWN0KGdldF9wb3N0X2xvZ291dF9yZWRpcmVj dCgpKQorICAgIHJldHVybiByZXNwb25zZQogCiAKIGNsYXNzIEF1dGhTb3VyY2VNYW5hZ2VyKCk6 CkBAIC03NSw2ICsxMTEsNyBAQCBjbGFzcyBBdXRoU291cmNlTWFuYWdlcigpOgogICAgICAgICBz ZWxmLmF1dGhfc291cmNlcyA9IHNvdXJjZXMKICAgICAgICAgc2VsZi5zb3VyY2UgPSBOb25lCiAg ICAgICAgIHNlbGYuc291cmNlX2ZyaWVuZGx5X25hbWUgPSBOb25lCisgICAgICAgIHNlbGYuY3Vy cmVudF9zb3VyY2UgPSBOb25lCiAKICAgICBkZWYgYXNfZGljdChzZWxmKToKICAgICAgICAgIiIi CkBAIC04NCw5ICsxMjEsMTcgQEAgY2xhc3MgQXV0aFNvdXJjZU1hbmFnZXIoKToKICAgICAgICAg cmVzID0gZGljdCgpCiAgICAgICAgIHJlc1snc291cmNlX2ZyaWVuZGx5X25hbWUnXSA9IHNlbGYu c291cmNlX2ZyaWVuZGx5X25hbWUKICAgICAgICAgcmVzWydhdXRoX3NvdXJjZXMnXSA9IHNlbGYu YXV0aF9zb3VyY2VzCisgICAgICAgIHJlc1snY3VycmVudF9zb3VyY2UnXSA9IHNlbGYuY3VycmVu dF9zb3VyY2UKIAogICAgICAgICByZXR1cm4gcmVzCiAKKyAgICBkZWYgc2V0X2N1cnJlbnRfc291 cmNlKHNlbGYsIHNvdXJjZSk6CisgICAgICAgIHNlbGYuY3VycmVudF9zb3VyY2UgPSBzb3VyY2UK KworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBnZXRfY3VycmVudF9zb3VyY2Uoc2VsZiwgc291cmNl KToKKyAgICAgICAgcmV0dXJuIHNlbGYuY3VycmVudF9zb3VyY2UKKwogICAgIGRlZiBzZXRfc291 cmNlKHNlbGYsIHNvdXJjZSk6CiAgICAgICAgIHNlbGYuc291cmNlID0gc291cmNlCiAKQEAgLTEx NSw5ICsxNjAsMzMgQEAgY2xhc3MgQXV0aFNvdXJjZU1hbmFnZXIoKToKICAgICAgICAgbXNnID0g Tm9uZQogICAgICAgICBmb3Igc3JjIGluIHNlbGYuYXV0aF9zb3VyY2VzOgogICAgICAgICAgICAg c291cmNlID0gZ2V0X2F1dGhfc291cmNlcyhzcmMpCisgICAgICAgICAgICBjdXJyZW50X2FwcC5s b2dnZXIuZGVidWcoCisgICAgICAgICAgICAgICAgIkF1dGhlbnRpY2F0aW9uIGluaXRpYXRlZCB2 aWEgc291cmNlOiAlcyIgJQorICAgICAgICAgICAgICAgIHNvdXJjZS5nZXRfc291cmNlX25hbWUo KSkKKworICAgICAgICAgICAgaWYgc2VsZi5mb3JtLmRhdGFbJ2VtYWlsJ10gYW5kIHNlbGYuZm9y bS5kYXRhWydwYXNzd29yZCddIGFuZCBcCisgICAgICAgICAgICAgICAgICAgIHNvdXJjZS5nZXRf c291cmNlX25hbWUoKSA9PSBLRVJCRVJPUzoKKyAgICAgICAgICAgICAgICBjb250aW51ZQorCiAg ICAgICAgICAgICBzdGF0dXMsIG1zZyA9IHNvdXJjZS5hdXRoZW50aWNhdGUoc2VsZi5mb3JtKQor CisgICAgICAgICAgICAjIFdoZW4gc2VydmVyIHNlbmRzIFVuYXV0aG9yaXplZCBoZWFkZXIgdG8g Z2V0IHRoZSB0aWNrZXQgb3ZlciBIVFRQCisgICAgICAgICAgICAjIE9SIFdoZW4ga2VyYmVyb3Mg YXV0aGVudGljYXRpb24gZmFpbGVkIHdoaWxlIGFjY2Vzc2luZyBwZ2FkbWluLAorICAgICAgICAg ICAgIyB3ZSBuZWVkIHRvIGJyZWFrIHRoZSBsb29wIGFzIG5vIG5lZWQgdG8gYXV0aGVudGljYXRl IGZ1cnRoZXIKKyAgICAgICAgICAgICMgZXZlbiBpZiB0aGUgYXV0aGVudGljYXRpb24gc291cmNl cyBzZXQgdG8gbXVsdGlwbGUKKyAgICAgICAgICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAg ICAgICAgaWYgKGhhc2F0dHIobXNnLCAnc3RhdHVzJykgYW5kCisgICAgICAgICAgICAgICAgICAg IG1zZy5zdGF0dXMgPT0gJzQwMSBVTkFVVEhPUklaRUQnKSBvclwKKyAgICAgICAgICAgICAgICAg ICAgICAgIChzb3VyY2UuZ2V0X3NvdXJjZV9uYW1lKCkgPT0KKyAgICAgICAgICAgICAgICAgICAg ICAgICBLRVJCRVJPUyBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0Lm1ldGhv ZCA9PSAnR0VUJyk6CisgICAgICAgICAgICAgICAgICAgIGJyZWFrCisKICAgICAgICAgICAgIGlm IHN0YXR1czoKICAgICAgICAgICAgICAgICBzZWxmLnNldF9zb3VyY2Uoc291cmNlKQorICAgICAg ICAgICAgICAgIHNlbGYuc2V0X2N1cnJlbnRfc291cmNlKHNvdXJjZS5nZXRfc291cmNlX25hbWUo KSkKKyAgICAgICAgICAgICAgICBpZiBtc2cgaXMgbm90IE5vbmUgYW5kICd1c2VybmFtZScgaW4g bXNnOgorICAgICAgICAgICAgICAgICAgICBzZWxmLmZvcm0uX2ZpZWxkc1snZW1haWwnXS5kYXRh ID0gbXNnWyd1c2VybmFtZSddCiAgICAgICAgICAgICAgICAgcmV0dXJuIHN0YXR1cywgbXNnCiAg ICAgICAgIHJldHVybiBzdGF0dXMsIG1zZwogCkBAIC0xMjUsNiArMTk0LDkgQEAgY2xhc3MgQXV0 aFNvdXJjZU1hbmFnZXIoKToKICAgICAgICAgc3RhdHVzLCBtc2cgPSBzZWxmLnNvdXJjZS5sb2dp bihzZWxmLmZvcm0pCiAgICAgICAgIGlmIHN0YXR1czoKICAgICAgICAgICAgIHNlbGYuc2V0X3Nv dXJjZV9mcmllbmRseV9uYW1lKHNlbGYuc291cmNlLmdldF9mcmllbmRseV9uYW1lKCkpCisgICAg ICAgICAgICBjdXJyZW50X2FwcC5sb2dnZXIuZGVidWcoCisgICAgICAgICAgICAgICAgIkF1dGhl bnRpY2F0aW9uIGFuZCBMb2dpbiBzdWNjZXNzZnVsbHkgZG9uZSB2aWEgc291cmNlIDogJXMiICUK KyAgICAgICAgICAgICAgICBzZWxmLnNvdXJjZS5nZXRfc291cmNlX25hbWUoKSkKICAgICAgICAg cmV0dXJuIHN0YXR1cywgbXNnCiAKIApkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYXV0aGVudGlj YXRlL2ludGVybmFsLnB5IGIvd2ViL3BnYWRtaW4vYXV0aGVudGljYXRlL2ludGVybmFsLnB5Cmlu ZGV4IDgwNGE0ODdjNy4uNDg0YTdmZGNhIDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi9hdXRoZW50 aWNhdGUvaW50ZXJuYWwucHkKKysrIGIvd2ViL3BnYWRtaW4vYXV0aGVudGljYXRlL2ludGVybmFs LnB5CkBAIC0xOCw2ICsxOCw3IEBAIGZyb20gZmxhc2tfYmFiZWxleCBpbXBvcnQgZ2V0dGV4dAog ZnJvbSAucmVnaXN0cnkgaW1wb3J0IEF1dGhTb3VyY2VSZWdpc3RyeQogZnJvbSBwZ2FkbWluLm1v ZGVsIGltcG9ydCBVc2VyCiBmcm9tIHBnYWRtaW4udXRpbHMudmFsaWRhdGlvbl91dGlscyBpbXBv cnQgdmFsaWRhdGVfZW1haWwKK2Zyb20gcGdhZG1pbi51dGlscy5jb25zdGFudHMgaW1wb3J0IElO VEVSTkFMCiAKIAogQHNpeC5hZGRfbWV0YWNsYXNzKEF1dGhTb3VyY2VSZWdpc3RyeSkKQEAgLTMx LDcgKzMyLDExIEBAIGNsYXNzIEJhc2VBdXRoZW50aWNhdGlvbihvYmplY3QpOgogICAgICAgICAn SU5WQUxJRF9FTUFJTCc6IGdldHRleHQoJ0VtYWlsL1VzZXJuYW1lIGlzIG5vdCB2YWxpZCcpCiAg ICAgfQogCi0gICAgQGFic3RyYWN0cHJvcGVydHkKKyAgICBAYWJzdHJhY3RtZXRob2QKKyAgICBk ZWYgZ2V0X3NvdXJjZV9uYW1lKHNlbGYpOgorICAgICAgICBwYXNzCisKKyAgICBAYWJzdHJhY3Rt ZXRob2QKICAgICBkZWYgZ2V0X2ZyaWVuZGx5X25hbWUoc2VsZik6CiAgICAgICAgIHBhc3MKIApA QCAtODIsNiArODcsOSBAQCBjbGFzcyBCYXNlQXV0aGVudGljYXRpb24ob2JqZWN0KToKIAogY2xh c3MgSW50ZXJuYWxBdXRoZW50aWNhdGlvbihCYXNlQXV0aGVudGljYXRpb24pOgogCisgICAgZGVm IGdldF9zb3VyY2VfbmFtZShzZWxmKToKKyAgICAgICAgcmV0dXJuIElOVEVSTkFMCisKICAgICBk ZWYgZ2V0X2ZyaWVuZGx5X25hbWUoc2VsZik6CiAgICAgICAgIHJldHVybiBnZXR0ZXh0KCJpbnRl cm5hbCIpCiAKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2F1dGhlbnRpY2F0ZS9rZXJiZXJvcy5w eSBiL3dlYi9wZ2FkbWluL2F1dGhlbnRpY2F0ZS9rZXJiZXJvcy5weQpuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwMDAuLjAxYmZiMzZmMgotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9w Z2FkbWluL2F1dGhlbnRpY2F0ZS9rZXJiZXJvcy5weQpAQCAtMCwwICsxLDE1MiBAQAorIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMKKyMKKyMgcGdBZG1pbiA0IC0gUG9zdGdyZVNRTCBUb29scworIworIyBDb3B5 cmlnaHQgKEMpIDIwMTMgLSAyMDIwLCBUaGUgcGdBZG1pbiBEZXZlbG9wbWVudCBUZWFtCisjIFRo aXMgc29mdHdhcmUgaXMgcmVsZWFzZWQgdW5kZXIgdGhlIFBvc3RncmVTUUwgTGljZW5jZQorIwor IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMKKworIiIiQSBibHVlcHJpbnQgbW9kdWxlIGltcGxlbWVudGluZyB0 aGUgU3BuZWdvL0tlcmJlcm9zIGF1dGhlbnRpY2F0aW9uLiIiIgorCitpbXBvcnQgYmFzZTY0Citm cm9tIG9zIGltcG9ydCBlbnZpcm9uCisKK2Zyb20gd2Vya3pldWcuZGF0YXN0cnVjdHVyZXMgaW1w b3J0IEhlYWRlcnMKK2Zyb20gZmxhc2tfYmFiZWxleCBpbXBvcnQgZ2V0dGV4dAorZnJvbSBmbGFz ayBpbXBvcnQgRmxhc2ssIHJlcXVlc3QsIFJlc3BvbnNlLCBzZXNzaW9uLFwKKyAgICBjdXJyZW50 X2FwcCwgcmVuZGVyX3RlbXBsYXRlLCBmbGFzaAorCitpbXBvcnQgY29uZmlnCitmcm9tIHBnYWRt aW4ubW9kZWwgaW1wb3J0IFVzZXIsIFNlcnZlckdyb3VwLCBkYiwgUm9sZQorZnJvbSBwZ2FkbWlu LnRvb2xzLnVzZXJfbWFuYWdlbWVudCBpbXBvcnQgY3JlYXRlX3VzZXIKK2Zyb20gcGdhZG1pbi51 dGlscy5jb25zdGFudHMgaW1wb3J0IEtFUkJFUk9TCisKK2Zyb20gZmxhc2tfc2VjdXJpdHkudmll d3MgaW1wb3J0IF9zZWN1cml0eSwgX2NvbW1pdCwgX2N0eAorZnJvbSB3ZXJremV1Zy5kYXRhc3Ry dWN0dXJlcyBpbXBvcnQgTXVsdGlEaWN0CisKK2Zyb20gLmludGVybmFsIGltcG9ydCBCYXNlQXV0 aGVudGljYXRpb24KKwordHJ5OgorICAgIGltcG9ydCBnc3NhcGkKKyAgICBLRVJCRVJPU19BVVRI X0FWQUlMQUJMRSA9IFRydWUKK2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICAjIERvIG5vdCBmYWls IGF0IHRoaXMgdGltZSwgYXMgdGhpcyBjb3VsZCBiZSBhIGRlc2t0b3AgbW9kZS4KKyAgICAjIElu c3RlYWQgdGhyb3cgdGhlIHJ1bnRpbWUgZXJyb3IsIHdoZW4gdGhlIHNlcnZlciBhdHRlbXB0cwor ICAgICMgdG8gdXNlIHRoaXMgYXV0aGVudGljYXRpb24gbWV0aG9kLgorICAgIEtFUkJFUk9TX0FV VEhfQVZBSUxBQkxFID0gRmFsc2UKKworIyBTZXQgdGhlIEtlcmJlcm9zIGNvbmZpZyBmaWxlCitp ZiBjb25maWcuS1JCX0tUTkFNRSBhbmQgY29uZmlnLktSQl9LVE5BTUUgIT0gJzxLUkI1X0tFWVRB Ql9GSUxFPic6CisgICAgZW52aXJvblsnS1JCNV9LVE5BTUUnXSA9IGNvbmZpZy5LUkJfS1ROQU1F CisKKworY2xhc3MgS2VyYmVyb3NBdXRoZW50aWNhdGlvbihCYXNlQXV0aGVudGljYXRpb24pOgor CisgICAgZGVmIGdldF9zb3VyY2VfbmFtZShzZWxmKToKKyAgICAgICAgcmV0dXJuIEtFUkJFUk9T CisKKyAgICBkZWYgZ2V0X2ZyaWVuZGx5X25hbWUoc2VsZik6CisgICAgICAgIHJldHVybiBnZXR0 ZXh0KCJrZXJiZXJvcyIpCisKKyAgICBkZWYgdmFsaWRhdGUoc2VsZiwgZm9ybSk6CisgICAgICAg IHJldHVybiBUcnVlCisKKyAgICBkZWYgYXV0aGVudGljYXRlKHNlbGYsIGZybSk6CisKKyAgICAg ICAgaWYgS0VSQkVST1NfQVVUSF9BVkFJTEFCTEUgaXMgbm90IFRydWU6CisgICAgICAgICAgICBy YWlzZSBSdW50aW1lRXJyb3IoZ2V0dGV4dCgKKyAgICAgICAgICAgICAgICAiS2VyYmVyb3MgYXV0 aGVudGljYXRpb24gY2FuJ3QgYmUgdXNlZCBhcyIKKyAgICAgICAgICAgICAgICAiIEdTU0FQSSBt b2R1bGUgY291bGRuJ3QgYmUgbG9hZGVkLiIKKyAgICAgICAgICAgICkpCisKKyAgICAgICAgcmV0 dmFsID0gW1RydWUsIE5vbmVdCisgICAgICAgIG5lZ290aWF0ZSA9IEZhbHNlCisgICAgICAgIGhl YWRlcnMgPSBIZWFkZXJzKCkKKyAgICAgICAgYXV0aG9yaXphdGlvbiA9IHJlcXVlc3QuaGVhZGVy cy5nZXQoIkF1dGhvcml6YXRpb24iLCBOb25lKQorICAgICAgICBmb3JtX2NsYXNzID0gX3NlY3Vy aXR5LmxvZ2luX2Zvcm0KKworICAgICAgICBpZiByZXF1ZXN0Lmpzb246CisgICAgICAgICAgICBm b3JtID0gZm9ybV9jbGFzcyhNdWx0aURpY3QocmVxdWVzdC5qc29uKSkKKyAgICAgICAgZWxzZToK KyAgICAgICAgICAgIGZvcm0gPSBmb3JtX2NsYXNzKCkKKworICAgICAgICB0cnk6CisgICAgICAg ICAgICBpZiBhdXRob3JpemF0aW9uIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIGF1dGhf aGVhZGVyID0gYXV0aG9yaXphdGlvbi5zcGxpdCgpCisgICAgICAgICAgICAgICAgaWYgYXV0aF9o ZWFkZXJbMF0gPT0gJ05lZ290aWF0ZSc6CisgICAgICAgICAgICAgICAgICAgIHN0YXR1cywgbmVn b3RpYXRlID0gc2VsZi5uZWdvdGlhdGVfc3RhcnQoYXV0aF9oZWFkZXJbMV0pCisKKyAgICAgICAg ICAgICAgICAgICAgaWYgc3RhdHVzOgorICAgICAgICAgICAgICAgICAgICAgICAgIyBTYXZpbmcg dGhlIGZpcnN0IDE1IGNoYXJhY3RlcnMgb2YgdGhlIGtlcmJlcm9zIGtleQorICAgICAgICAgICAg ICAgICAgICAgICAgIyB0byBlbmNyeXB0L2RlY3J5cHQgZGF0YWJhc2UgcGFzc3dvcmQKKyAgICAg ICAgICAgICAgICAgICAgICAgIHNlc3Npb25bJ2tlcmJlcm9zX2tleSddID0gYXV0aF9oZWFkZXJb MV1bMDoxNV0KKyAgICAgICAgICAgICAgICAgICAgICAgICMgQ3JlYXRlIHVzZXIKKyAgICAgICAg ICAgICAgICAgICAgICAgIHJldHZhbCA9IHNlbGYuX19hdXRvX2NyZWF0ZV91c2VyKAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHN0cihuZWdvdGlhdGUuaW5pdGlhdG9yX25hbWUpKQorICAg ICAgICAgICAgICAgICAgICBlbGlmIGlzaW5zdGFuY2UobmVnb3RpYXRlLCBFeGNlcHRpb24pOgor ICAgICAgICAgICAgICAgICAgICAgICAgZmxhc2goZ2V0dGV4dChuZWdvdGlhdGUpLCAnZGFuZ2Vy JykKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHZhbCA9IFtzdGF0dXMsCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgUmVzcG9uc2UocmVuZGVyX3RlbXBsYXRlKAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2VjdXJpdHkvbG9naW5fdXNlci5odG1s IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9naW5fdXNlcl9mb3Jt PWZvcm0pKV0KKyAgICAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAg ICAgIGhlYWRlcnMuYWRkKCdXV1ctQXV0aGVudGljYXRlJywgJ05lZ290aWF0ZSAnICsKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cihiYXNlNjQuYjY0ZW5jb2RlKG5lZ290 aWF0ZSksICd1dGYtOCcpKQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlLCBS ZXNwb25zZSgiU3VjY2VzcyIsIDIwMCwgaGVhZGVycykKKyAgICAgICAgICAgIGVsc2U6CisgICAg ICAgICAgICAgICAgZmxhc2goZ2V0dGV4dCgiS2VyYmVyb3MgYXV0aGVudGljYXRpb24gZmFpbGVk LiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgQ291bGRuJ3QgZmluZCBrZXJiZXJv cyB0aWNrZXQuIiksICdkYW5nZXInKQorICAgICAgICAgICAgICAgIGhlYWRlcnMuYWRkKCdXV1ct QXV0aGVudGljYXRlJywgJ05lZ290aWF0ZScpCisgICAgICAgICAgICAgICAgcmV0dmFsID0gW0Zh bHNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICBSZXNwb25zZShyZW5kZXJfdGVtcGxhdGUo CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2VjdXJpdHkvbG9naW5fdXNlci5odG1s IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ2luX3VzZXJfZm9ybT1mb3JtKSwg NDAxLCBoZWFkZXJzKV0KKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIGlmIG5lZ290aWF0 ZSBpcyBub3QgRmFsc2U6CisgICAgICAgICAgICAgICAgc2VsZi5uZWdvdGlhdGVfZW5kKG5lZ290 aWF0ZSkKKyAgICAgICAgcmV0dXJuIHJldHZhbAorCisgICAgZGVmIG5lZ290aWF0ZV9zdGFydChz ZWxmLCBpbl90b2tlbik6CisgICAgICAgIHN2Y19wcmluYyA9IGdzc2FwaS5OYW1lKCdIVFRQQCVz JyAlIGNvbmZpZy5LUkJfQVBQX0hPU1RfTkFNRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgbmFtZV90eXBlPWdzc2FwaS5OYW1lVHlwZS5ob3N0YmFzZWRfc2VydmljZSkKKyAgICAg ICAgY25hbWUgPSBzdmNfcHJpbmMuY2Fub25pY2FsaXplKGdzc2FwaS5NZWNoVHlwZS5rZXJiZXJv cykKKworICAgICAgICB0cnk6CisgICAgICAgICAgICBzZXJ2ZXJfY3JlZHMgPSBnc3NhcGkuQ3Jl ZGVudGlhbHModXNhZ2U9J2FjY2VwdCcsIG5hbWU9Y25hbWUpCisgICAgICAgICAgICBjb250ZXh0 ID0gZ3NzYXBpLlNlY3VyaXR5Q29udGV4dChjcmVkcz1zZXJ2ZXJfY3JlZHMpCisgICAgICAgICAg ICBvdXRfdG9rZW4gPSBjb250ZXh0LnN0ZXAoYmFzZTY0LmI2NGRlY29kZShpbl90b2tlbikpCisg ICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKKyAgICAgICAgICAgIGN1cnJlbnRfYXBwLmxv Z2dlci5leGNlcHRpb24oZSkKKyAgICAgICAgICAgIHJldHVybiBGYWxzZSwgZQorCisgICAgICAg IGlmIG91dF90b2tlbiBhbmQgbm90IGNvbnRleHQuY29tcGxldGU6CisgICAgICAgICAgICByZXR1 cm4gRmFsc2UsIG91dF90b2tlbgorICAgICAgICBpZiBjb250ZXh0LmNvbXBsZXRlOgorICAgICAg ICAgICAgcmV0dXJuIFRydWUsIGNvbnRleHQKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJl dHVybiBGYWxzZSwgTm9uZQorCisgICAgZGVmIG5lZ290aWF0ZV9lbmQoc2VsZiwgY29udGV4dCk6 CisgICAgICAgICMgRnJlZSBnc3NfY3JlZF9pZF90CisgICAgICAgIGRlbF9jcmVkcyA9IGdldGF0 dHIoY29udGV4dCwgJ2RlbGVnYXRlZF9jcmVkcycsIE5vbmUpCisgICAgICAgIGlmIGRlbF9jcmVk czoKKyAgICAgICAgICAgIGRlbGVnX2NyZWRzID0gY29udGV4dC5kZWxlZ2F0ZWRfY3JlZHMKKyAg ICAgICAgICAgIGRlbChkZWxlZ19jcmVkcykKKworICAgIGRlZiBfX2F1dG9fY3JlYXRlX3VzZXIo c2VsZiwgdXNlcm5hbWUpOgorICAgICAgICAiIiJBZGQgdGhlIGxkYXAgdXNlciB0byB0aGUgaW50 ZXJuYWwgU1FMaXRlIGRhdGFiYXNlLiIiIgorICAgICAgICB1c2VybmFtZSA9IHN0cih1c2VybmFt ZSkKKyAgICAgICAgaWYgY29uZmlnLktSQl9BVVRPX0NSRUFURV9VU0VSOgorICAgICAgICAgICAg dXNlciA9IFVzZXIucXVlcnkuZmlsdGVyX2J5KAorICAgICAgICAgICAgICAgIHVzZXJuYW1lPXVz ZXJuYW1lKS5maXJzdCgpCisgICAgICAgICAgICBpZiB1c2VyIGlzIE5vbmU6CisgICAgICAgICAg ICAgICAgcmV0dXJuIGNyZWF0ZV91c2VyKHsKKyAgICAgICAgICAgICAgICAgICAgJ3VzZXJuYW1l JzogdXNlcm5hbWUsCisgICAgICAgICAgICAgICAgICAgICdlbWFpbCc6IHVzZXJuYW1lLAorICAg ICAgICAgICAgICAgICAgICAncm9sZSc6IDIsCisgICAgICAgICAgICAgICAgICAgICdhY3RpdmUn OiBUcnVlLAorICAgICAgICAgICAgICAgICAgICAnYXV0aF9zb3VyY2UnOiBLRVJCRVJPUworICAg ICAgICAgICAgICAgIH0pCisKKyAgICAgICAgcmV0dXJuIFRydWUsIHsndXNlcm5hbWUnOiB1c2Vy bmFtZX0KZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2F1dGhlbnRpY2F0ZS9sZGFwLnB5IGIvd2Vi L3BnYWRtaW4vYXV0aGVudGljYXRlL2xkYXAucHkKaW5kZXggYTllY2ExMTBmLi4yZjBmNjFiN2Mg MTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL2F1dGhlbnRpY2F0ZS9sZGFwLnB5CisrKyBiL3dlYi9w Z2FkbWluL2F1dGhlbnRpY2F0ZS9sZGFwLnB5CkBAIC0yMyw2ICsyMyw3IEBAIGZyb20gLmludGVy bmFsIGltcG9ydCBCYXNlQXV0aGVudGljYXRpb24KIGZyb20gcGdhZG1pbi5tb2RlbCBpbXBvcnQg VXNlciwgU2VydmVyR3JvdXAsIGRiLCBSb2xlCiBmcm9tIGZsYXNrIGltcG9ydCBjdXJyZW50X2Fw cAogZnJvbSBwZ2FkbWluLnRvb2xzLnVzZXJfbWFuYWdlbWVudCBpbXBvcnQgY3JlYXRlX3VzZXIK K2Zyb20gcGdhZG1pbi51dGlscy5jb25zdGFudHMgaW1wb3J0IExEQVAKIAogCiBFUlJPUl9TRUFS Q0hJTkdfTERBUF9ESVJFQ1RPUlkgPSAiRXJyb3Igc2VhcmNoaW5nIHRoZSBMREFQIGRpcmVjdG9y eToge30iCkBAIC0zMSw2ICszMiw5IEBAIEVSUk9SX1NFQVJDSElOR19MREFQX0RJUkVDVE9SWSA9 ICJFcnJvciBzZWFyY2hpbmcgdGhlIExEQVAgZGlyZWN0b3J5OiB7fSIKIGNsYXNzIExEQVBBdXRo ZW50aWNhdGlvbihCYXNlQXV0aGVudGljYXRpb24pOgogICAgICIiIkxkYXAgQXV0aGVudGljYXRp b24gQ2xhc3MiIiIKIAorICAgIGRlZiBnZXRfc291cmNlX25hbWUoc2VsZik6CisgICAgICAgIHJl dHVybiBMREFQCisKICAgICBkZWYgZ2V0X2ZyaWVuZGx5X25hbWUoc2VsZik6CiAgICAgICAgIHJl dHVybiBnZXR0ZXh0KCJsZGFwIikKIApAQCAtMTUxLDcgKzE1NSw3IEBAIGNsYXNzIExEQVBBdXRo ZW50aWNhdGlvbihCYXNlQXV0aGVudGljYXRpb24pOgogICAgICAgICAgICAgICAgICAgICAnZW1h aWwnOiB1c2VyX2VtYWlsLAogICAgICAgICAgICAgICAgICAgICAncm9sZSc6IDIsCiAgICAgICAg ICAgICAgICAgICAgICdhY3RpdmUnOiBUcnVlLAotICAgICAgICAgICAgICAgICAgICAnYXV0aF9z b3VyY2UnOiAnbGRhcCcKKyAgICAgICAgICAgICAgICAgICAgJ2F1dGhfc291cmNlJzogTERBUAog ICAgICAgICAgICAgICAgIH0pCiAKICAgICAgICAgcmV0dXJuIFRydWUsIE5vbmUKZGlmZiAtLWdp dCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvX19pbml0X18ucHkgYi93ZWIvcGdhZG1pbi9icm93c2Vy L19faW5pdF9fLnB5CmluZGV4IDFiYWUyOGY5Yy4uYzBhZDg2OWExIDEwMDY0NAotLS0gYS93ZWIv cGdhZG1pbi9icm93c2VyL19faW5pdF9fLnB5CisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvX19p bml0X18ucHkKQEAgLTI5LDcgKzI5LDcgQEAgZnJvbSBmbGFza19zZWN1cml0eS5yZWNvdmVyYWJs ZSBpbXBvcnQgcmVzZXRfcGFzc3dvcmRfdG9rZW5fc3RhdHVzLCBcCiAgICAgZ2VuZXJhdGVfcmVz ZXRfcGFzc3dvcmRfdG9rZW4sIHVwZGF0ZV9wYXNzd29yZAogZnJvbSBmbGFza19zZWN1cml0eS5z aWduYWxzIGltcG9ydCByZXNldF9wYXNzd29yZF9pbnN0cnVjdGlvbnNfc2VudAogZnJvbSBmbGFz a19zZWN1cml0eS51dGlscyBpbXBvcnQgY29uZmlnX3ZhbHVlLCBkb19mbGFzaCwgZ2V0X3VybCwg XAotICAgIGdldF9tZXNzYWdlLCBzbGFzaF91cmxfc3VmZml4LCBsb2dpbl91c2VyLCBzZW5kX21h aWwKKyAgICBnZXRfbWVzc2FnZSwgc2xhc2hfdXJsX3N1ZmZpeCwgbG9naW5fdXNlciwgc2VuZF9t YWlsLCBsb2dvdXRfdXNlcgogZnJvbSBmbGFza19zZWN1cml0eS52aWV3cyBpbXBvcnQgX3NlY3Vy aXR5LCBfY29tbWl0LCBfY3R4CiBmcm9tIHdlcmt6ZXVnLmRhdGFzdHJ1Y3R1cmVzIGltcG9ydCBN dWx0aURpY3QKIApAQCAtNDcsNyArNDcsOCBAQCBmcm9tIHBnYWRtaW4udXRpbHMubWFzdGVyX3Bh c3N3b3JkIGltcG9ydCB2YWxpZGF0ZV9tYXN0ZXJfcGFzc3dvcmQsIFwKICAgICBzZXRfbWFzdGVy cGFzc19jaGVja190ZXh0LCBjbGVhbnVwX21hc3Rlcl9wYXNzd29yZCwgZ2V0X2NyeXB0X2tleSwg XAogICAgIHNldF9jcnlwdF9rZXksIHByb2Nlc3NfbWFzdGVycGFzc19kaXNhYmxlZAogZnJvbSBw Z2FkbWluLm1vZGVsIGltcG9ydCBVc2VyCi1mcm9tIHBnYWRtaW4udXRpbHMuY29uc3RhbnRzIGlt cG9ydCBNSU1FVFlQRV9BUFBfSlMsIFBHQURNSU5fTk9ERQorZnJvbSBwZ2FkbWluLnV0aWxzLmNv bnN0YW50cyBpbXBvcnQgTUlNRVRZUEVfQVBQX0pTLCBQR0FETUlOX05PREUsXAorICAgIElOVEVS TkFMLCBLRVJCRVJPUwogCiB0cnk6CiAgICAgZnJvbSBmbGFza19zZWN1cml0eS52aWV3cyBpbXBv cnQgZGVmYXVsdF9yZW5kZXJfanNvbgpAQCAtMjgwLDcgKzI4MSw4IEBAIGNsYXNzIEJyb3dzZXJN b2R1bGUoUGdBZG1pbk1vZHVsZSk6CiAgICAgICAgICAgICAgICAgJ2Jyb3dzZXIuY2hlY2tfbWFz dGVyX3Bhc3N3b3JkJywKICAgICAgICAgICAgICAgICAnYnJvd3Nlci5zZXRfbWFzdGVyX3Bhc3N3 b3JkJywKICAgICAgICAgICAgICAgICAnYnJvd3Nlci5yZXNldF9tYXN0ZXJfcGFzc3dvcmQnLAot ICAgICAgICAgICAgICAgICdicm93c2VyLmxvY2tfbGF5b3V0J10KKyAgICAgICAgICAgICAgICAn YnJvd3Nlci5sb2NrX2xheW91dCcKKyAgICAgICAgICAgICAgICBdCiAKIAogYmx1ZXByaW50ID0g QnJvd3Nlck1vZHVsZShNT0RVTEVfTkFNRSwgX19uYW1lX18pCkBAIC01MzksNiArNTQxLDEyIEBA IGNsYXNzIEJyb3dzZXJQbHVnaW5Nb2R1bGUoUGdBZG1pbk1vZHVsZSk6CiAKIAogZGVmIF9nZXRf bG9nb3V0X3VybCgpOgorICAgIGlmIGNvbmZpZy5TRVJWRVJfTU9ERSBhbmRcCisgICAgICAgICAg ICBzZXNzaW9uWydfYXV0aF9zb3VyY2VfbWFuYWdlcl9vYmonXVsnY3VycmVudF9zb3VyY2UnXSA9 PSBcCisgICAgICAgICAgICBLRVJCRVJPUzoKKyAgICAgICAgcmV0dXJuICd7MH0/bmV4dD17MX0n LmZvcm1hdCh1cmxfZm9yKAorICAgICAgICAgICAgJ2F1dGhlbnRpY2F0ZS5rZXJiZXJvc19sb2dv dXQnKSwgdXJsX2ZvcihCUk9XU0VSX0lOREVYKSkKKwogICAgIHJldHVybiAnezB9P25leHQ9ezF9 Jy5mb3JtYXQoCiAgICAgICAgIHVybF9mb3IoJ3NlY3VyaXR5LmxvZ291dCcpLCB1cmxfZm9yKEJS T1dTRVJfSU5ERVgpKQogCkBAIC02NjQsMTMgKzY3MiwxOCBAQCBkZWYgaW5kZXgoKToKICAgICBh dXRoX29ubHlfaW50ZXJuYWwgPSBGYWxzZQogICAgIGF1dGhfc291cmNlID0gW10KIAorICAgIHNl c3Npb25bJ2FsbG93X3NhdmVfcGFzc3dvcmQnXSA9IFRydWUKKwogICAgIGlmIGNvbmZpZy5TRVJW RVJfTU9ERToKICAgICAgICAgaWYgbGVuKGNvbmZpZy5BVVRIRU5USUNBVElPTl9TT1VSQ0VTKSA9 PSAxXAotICAgICAgICAgICAgICAgIGFuZCAnaW50ZXJuYWwnIGluIGNvbmZpZy5BVVRIRU5USUNB VElPTl9TT1VSQ0VTOgorICAgICAgICAgICAgICAgIGFuZCBJTlRFUk5BTCBpbiBjb25maWcuQVVU SEVOVElDQVRJT05fU09VUkNFUzoKICAgICAgICAgICAgIGF1dGhfb25seV9pbnRlcm5hbCA9IFRy dWUKICAgICAgICAgYXV0aF9zb3VyY2UgPSBzZXNzaW9uWydfYXV0aF9zb3VyY2VfbWFuYWdlcl9v YmonXVsKICAgICAgICAgICAgICdzb3VyY2VfZnJpZW5kbHlfbmFtZSddCiAKKyAgICAgICAgaWYg c2Vzc2lvblsnX2F1dGhfc291cmNlX21hbmFnZXJfb2JqJ11bJ2N1cnJlbnRfc291cmNlJ10gPT0g S0VSQkVST1M6CisgICAgICAgICAgICBzZXNzaW9uWydhbGxvd19zYXZlX3Bhc3N3b3JkJ10gPSBG YWxzZQorCiAgICAgcmVzcG9uc2UgPSBSZXNwb25zZShyZW5kZXJfdGVtcGxhdGUoCiAgICAgICAg IE1PRFVMRV9OQU1FICsgIi9pbmRleC5odG1sIiwKICAgICAgICAgdXNlcm5hbWU9Y3VycmVudF91 c2VyLnVzZXJuYW1lLApAQCAtMTA4Niw3ICsxMDk5LDcgQEAgaWYgaGFzYXR0cihjb25maWcsICdT RUNVUklUWV9SRUNPVkVSQUJMRScpIGFuZCBjb25maWcuU0VDVVJJVFlfUkVDT1ZFUkFCTEU6CiAg ICAgICAgICAgICAjIENoZWNrIHRoZSBBdXRoZW50aWNhdGlvbiBzb3VyY2Ugb2YgdGhlIFVzZXIK ICAgICAgICAgICAgIHVzZXIgPSBVc2VyLnF1ZXJ5LmZpbHRlcl9ieSgKICAgICAgICAgICAgICAg ICBlbWFpbD1mb3JtLmRhdGFbJ2VtYWlsJ10sCi0gICAgICAgICAgICAgICAgYXV0aF9zb3VyY2U9 Y3VycmVudF9hcHAuUEdBRE1JTl9ERUZBVUxUX0FVVEhfU09VUkNFCisgICAgICAgICAgICAgICAg YXV0aF9zb3VyY2U9SU5URVJOQUwKICAgICAgICAgICAgICkuZmlyc3QoKQogCiAgICAgICAgICAg ICBpZiB1c2VyIGlzIE5vbmU6CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZl cl9ncm91cHMvc2VydmVycy9fX2luaXRfXy5weSBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVy X2dyb3Vwcy9zZXJ2ZXJzL19faW5pdF9fLnB5CmluZGV4IGVjYzEyODFhMi4uNWRhZWY4MTIwIDEw MDY0NAotLS0gYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9fX2lu aXRfXy5weQorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9f X2luaXRfXy5weQpAQCAtMTAsNyArMTAsNyBAQAogaW1wb3J0IHNpbXBsZWpzb24gYXMganNvbgog aW1wb3J0IHBnYWRtaW4uYnJvd3Nlci5zZXJ2ZXJfZ3JvdXBzIGFzIHNnCiBmcm9tIGZsYXNrIGlt cG9ydCByZW5kZXJfdGVtcGxhdGUsIHJlcXVlc3QsIG1ha2VfcmVzcG9uc2UsIGpzb25pZnksIFwK LSAgICBjdXJyZW50X2FwcCwgdXJsX2ZvcgorICAgIGN1cnJlbnRfYXBwLCB1cmxfZm9yLCBzZXNz aW9uCiBmcm9tIGZsYXNrX2JhYmVsZXggaW1wb3J0IGdldHRleHQKIGZyb20gZmxhc2tfc2VjdXJp dHkgaW1wb3J0IGN1cnJlbnRfdXNlciwgbG9naW5fcmVxdWlyZWQKIGZyb20gcGdhZG1pbi5icm93 c2VyLnNlcnZlcl9ncm91cHMuc2VydmVycy50eXBlcyBpbXBvcnQgU2VydmVyVHlwZQpAQCAtMTgy Miw3ICsxODIyLDEzIEBAIGNsYXNzIFNlcnZlck5vZGUoUEdDaGlsZE5vZGVWaWV3KToKICAgICAg ICAgICAgICAgICAgICAgXz1nZXR0ZXh0LAogICAgICAgICAgICAgICAgICAgICBzZXJ2aWNlPXNl cnZlci5zZXJ2aWNlLAogICAgICAgICAgICAgICAgICAgICBwcm9tcHRfdHVubmVsX3Bhc3N3b3Jk PXByb21wdF90dW5uZWxfcGFzc3dvcmQsCi0gICAgICAgICAgICAgICAgICAgIHByb21wdF9wYXNz d29yZD1wcm9tcHRfcGFzc3dvcmQKKyAgICAgICAgICAgICAgICAgICAgcHJvbXB0X3Bhc3N3b3Jk PXByb21wdF9wYXNzd29yZCwKKyAgICAgICAgICAgICAgICAgICAgYWxsb3dfc2F2ZV9wYXNzd29y ZD1UcnVlIGlmCisgICAgICAgICAgICAgICAgICAgIGNvbmZpZy5BTExPV19TQVZFX1BBU1NXT1JE IGFuZAorICAgICAgICAgICAgICAgICAgICBzZXNzaW9uWydhbGxvd19zYXZlX3Bhc3N3b3JkJ10g ZWxzZSBGYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgYWxsb3dfc2F2ZV90dW5uZWxfcGFzc3dv cmQ9VHJ1ZSBpZgorICAgICAgICAgICAgICAgICAgICBjb25maWcuQUxMT1dfU0FWRV9UVU5ORUxf UEFTU1dPUkQgYW5kCisgICAgICAgICAgICAgICAgICAgIHNlc3Npb25bJ2FsbG93X3NhdmVfcGFz c3dvcmQnXSBlbHNlIEZhbHNlCiAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgKQogICAg ICAgICBlbHNlOgpAQCAtMTgzNiw2ICsxODQyLDkgQEAgY2xhc3MgU2VydmVyTm9kZShQR0NoaWxk Tm9kZVZpZXcpOgogICAgICAgICAgICAgICAgICAgICBlcnJtc2c9ZXJybXNnLAogICAgICAgICAg ICAgICAgICAgICBzZXJ2aWNlPXNlcnZlci5zZXJ2aWNlLAogICAgICAgICAgICAgICAgICAgICBf PWdldHRleHQsCisgICAgICAgICAgICAgICAgICAgIGFsbG93X3NhdmVfcGFzc3dvcmQ9VHJ1ZSBp ZgorICAgICAgICAgICAgICAgICAgICBjb25maWcuQUxMT1dfU0FWRV9QQVNTV09SRCBhbmQKKyAg ICAgICAgICAgICAgICAgICAgc2Vzc2lvblsnYWxsb3dfc2F2ZV9wYXNzd29yZCddIGVsc2UgRmFs c2UsCiAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgKQogCmRpZmYgLS1naXQgYS93ZWIv cGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy90ZW1wbGF0ZXMvc2VydmVycy9w YXNzd29yZC5odG1sIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMv dGVtcGxhdGVzL3NlcnZlcnMvcGFzc3dvcmQuaHRtbAppbmRleCA5YjJjNDI1ZTMuLjM1ZjRlMmEx NiAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMv dGVtcGxhdGVzL3NlcnZlcnMvcGFzc3dvcmQuaHRtbAorKysgYi93ZWIvcGdhZG1pbi9icm93c2Vy L3NlcnZlcl9ncm91cHMvc2VydmVycy90ZW1wbGF0ZXMvc2VydmVycy9wYXNzd29yZC5odG1sCkBA IC0xOSw3ICsxOSw3IEBACiAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb2wtc20tMTAiPgogICAg ICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImN1c3RvbS1jb250cm9sIGN1c3RvbS1jaGVja2JveCI+ CiAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz0iY3VzdG9tLWNvbnRyb2wtaW5wdXQi IGlkPSJzYXZlX3Bhc3N3b3JkIiBuYW1lPSJzYXZlX3Bhc3N3b3JkIiB0eXBlPSJjaGVja2JveCIK LSAgICAgICAgICAgICAgICAgICAgICAgICAgIHslIGlmIG5vdCBjb25maWcuQUxMT1dfU0FWRV9Q QVNTV09SRCAgJX1kaXNhYmxlZHslIGVuZGlmICV9CisgICAgICAgICAgICAgICAgICAgICAgICAg ICB7JSBpZiBub3QgYWxsb3dfc2F2ZV9wYXNzd29yZCAlfWRpc2FibGVkeyUgZW5kaWYgJX0KICAg ICAgICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9ImN1 c3RvbS1jb250cm9sLWxhYmVsIiBmb3I9InNhdmVfcGFzc3dvcmQiPnt7IF8oJ1NhdmUgUGFzc3dv cmQnKSB9fTwvbGFiZWw+CiAgICAgICAgICAgICAgICAgPC9kaXY+CmRpZmYgLS1naXQgYS93ZWIv cGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy90ZW1wbGF0ZXMvc2VydmVycy90 dW5uZWxfcGFzc3dvcmQuaHRtbCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9z ZXJ2ZXJzL3RlbXBsYXRlcy9zZXJ2ZXJzL3R1bm5lbF9wYXNzd29yZC5odG1sCmluZGV4IDVkZTY0 MmY4NS4uZTM0YTI1N2YyIDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9n cm91cHMvc2VydmVycy90ZW1wbGF0ZXMvc2VydmVycy90dW5uZWxfcGFzc3dvcmQuaHRtbAorKysg Yi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy90ZW1wbGF0ZXMvc2Vy dmVycy90dW5uZWxfcGFzc3dvcmQuaHRtbApAQCAtMTUsNyArMTUsNyBAQAogICAgICAgICAgICAg PGRpdiBjbGFzcz0idy0xMDAiPgogICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImN1c3RvbS1j b250cm9sIGN1c3RvbS1jaGVja2JveCI+CiAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFz cz0iY3VzdG9tLWNvbnRyb2wtaW5wdXQiIGlkPSJzYXZlX3R1bm5lbF9wYXNzd29yZCIgbmFtZT0i c2F2ZV90dW5uZWxfcGFzc3dvcmQiIHR5cGU9ImNoZWNrYm94IgotICAgICAgICAgICAgICAgICAg ICAgICAgICAgeyUgaWYgbm90IGNvbmZpZy5BTExPV19TQVZFX1RVTk5FTF9QQVNTV09SRCAgJX1k aXNhYmxlZHslIGVuZGlmICV9CisgICAgICAgICAgICAgICAgICAgICAgICAgICB7JSBpZiBub3Qg YWxsb3dfc2F2ZV90dW5uZWxfcGFzc3dvcmQgICV9ZGlzYWJsZWR7JSBlbmRpZiAlfQogICAgICAg ICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz0iY3VzdG9t LWNvbnRyb2wtbGFiZWwiIGZvcj0ic2F2ZV90dW5uZWxfcGFzc3dvcmQiIGNsYXNzPSJtbC0xIj57 eyBfKCdTYXZlIFBhc3N3b3JkJykgfX08L2xhYmVsPgogICAgICAgICAgICAgICAgIDwvZGl2PgpA QCAtMzksNyArMzksNyBAQAogICAgICAgICAgICAgPGRpdiBjbGFzcz0idy0xMDAiPgogICAgICAg ICAgICAgICAgIDxkaXYgY2xhc3M9ImN1c3RvbS1jb250cm9sIGN1c3RvbS1jaGVja2JveCI+CiAg ICAgICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz0iY3VzdG9tLWNvbnRyb2wtaW5wdXQiIGlk PSJzYXZlX3Bhc3N3b3JkIiBuYW1lPSJzYXZlX3Bhc3N3b3JkIiB0eXBlPSJjaGVja2JveCIKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgIHslIGlmIG5vdCBjb25maWcuQUxMT1dfU0FWRV9QQVNT V09SRCAgJX1kaXNhYmxlZHslIGVuZGlmICV9CisgICAgICAgICAgICAgICAgICAgICAgICAgICB7 JSBpZiBub3QgYWxsb3dfc2F2ZV9wYXNzd29yZCAgJX1kaXNhYmxlZHslIGVuZGlmICV9CiAgICAg ICAgICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPSJjdXN0 b20tY29udHJvbC1sYWJlbCIgZm9yPSJzYXZlX3Bhc3N3b3JkIiBjbGFzcz0ibWwtMSI+e3sgXygn U2F2ZSBQYXNzd29yZCcpIH19PC9sYWJlbD4KICAgICAgICAgICAgICAgICA8L2Rpdj4KZGlmZiAt LWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvdGVtcGxhdGVzL2Jyb3dzZXIva2VyYmVyb3NfbG9n aW4uaHRtbCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvdGVtcGxhdGVzL2Jyb3dzZXIva2VyYmVyb3Nf bG9naW4uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAuLmMxMTJlMzE5 NgotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvdGVtcGxhdGVzL2Jyb3dz ZXIva2VyYmVyb3NfbG9naW4uaHRtbApAQCAtMCwwICsxLDE2IEBACit7JSBleHRlbmRzICJiYXNl Lmh0bWwiICV9Cit7JSBibG9jayBib2R5ICV9Cis8ZGl2IGNsYXNzPSJjb250YWluZXItZmx1aWQg Y2hhbmdlX3Bhc3MiPgorICAgIDxkaXYgY2xhc3M9InJvdyBhbGlnbi1pdGVtcy1jZW50ZXIgaC0x MDAiPgorICAgICAgICA8ZGl2IGNsYXNzPSJjb2wtbWQtNSI+PC9kaXY+CisgICAgICAgIDxkaXYg Y2xhc3M9ImNvbC1tZC01Ij4KKyAgICAgICAgICAgIDxkaXYgY2xhc3M9InBhbmVsLWhlYWRlciBo NCI+PGkgY2xhc3M9ImFwcC1pY29uIHBnLWljb24tYmx1ZSIgYXJpYS1oaWRkZW49InRydWUiPjwv aT4ge3sgXygnJShhcHBuYW1lKXMnLCBhcHBuYW1lPWNvbmZpZy5BUFBfTkFNRSkgfX08L2Rpdj4K KyAgICAgICAgICAgIDxkaXYgY2xhc3M9InBhbmVsLWJvZHkiPgorICAgICAgICAgICAgICAgIDxk aXYgY2xhc3M9ImQtYmxvY2sgdGV4dC1jb2xvciBwYi0zIGg1Ij57eyBfKCdMb2dpbiBGYWlsZWQu JykgfX08L2Rpdj4KKyAgICAgICAgICAgICAgICA8ZGl2PjxhIGhyZWY9Int7IGxvZ2luX3VybCB9 fSI+Q2xpY2sgaGVyZTwvYT4gdG8gTG9naW4gYWdhaW4uPC9kaXY+CisgICAgICAgICAgICA8L2Rp dj4KKyAgICAgICAgPC9kaXY+CisgICAgICAgIDxkaXYgY2xhc3M9ImNvbC1tZC00Ij48L2Rpdj4K KyAgICA8L2Rpdj4KKzwvZGl2PgoreyUgZW5kYmxvY2sgJX0KZGlmZiAtLWdpdCBhL3dlYi9wZ2Fk bWluL2Jyb3dzZXIvdGVtcGxhdGVzL2Jyb3dzZXIva2VyYmVyb3NfbG9nb3V0Lmh0bWwgYi93ZWIv cGdhZG1pbi9icm93c2VyL3RlbXBsYXRlcy9icm93c2VyL2tlcmJlcm9zX2xvZ291dC5odG1sCm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMC4uNDMwZGM2ZjI1Ci0tLSAvZGV2L251 bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci90ZW1wbGF0ZXMvYnJvd3Nlci9rZXJiZXJvc19s b2dvdXQuaHRtbApAQCAtMCwwICsxLDE2IEBACit7JSBleHRlbmRzICJiYXNlLmh0bWwiICV9Cit7 JSBibG9jayBib2R5ICV9Cis8ZGl2IGNsYXNzPSJjb250YWluZXItZmx1aWQgY2hhbmdlX3Bhc3Mi PgorICAgIDxkaXYgY2xhc3M9InJvdyBhbGlnbi1pdGVtcy1jZW50ZXIgaC0xMDAiPgorICAgICAg ICA8ZGl2IGNsYXNzPSJjb2wtbWQtNSI+PC9kaXY+CisgICAgICAgIDxkaXYgY2xhc3M9ImNvbC1t ZC01Ij4KKyAgICAgICAgICAgIDxkaXYgY2xhc3M9InBhbmVsLWhlYWRlciBoNCI+PGkgY2xhc3M9 ImFwcC1pY29uIHBnLWljb24tYmx1ZSIgYXJpYS1oaWRkZW49InRydWUiPjwvaT4ge3sgXygnJShh cHBuYW1lKXMnLCBhcHBuYW1lPWNvbmZpZy5BUFBfTkFNRSkgfX08L2Rpdj4KKyAgICAgICAgICAg IDxkaXYgY2xhc3M9InBhbmVsLWJvZHkiPgorICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImQt YmxvY2sgdGV4dC1jb2xvciBwYi0zIGg1Ij57eyBfKCdMb2dnZWQgb3V0IHN1Y2Nlc3NmdWxseS4n KSB9fTwvZGl2PgorICAgICAgICAgICAgICAgIDxkaXY+PGEgaHJlZj0ie3sgbG9naW5fdXJsIH19 Ij5DbGljayBoZXJlPC9hPiB0byBMb2dpbiBhZ2Fpbi48L2Rpdj4KKyAgICAgICAgICAgIDwvZGl2 PgorICAgICAgICA8L2Rpdj4KKyAgICAgICAgPGRpdiBjbGFzcz0iY29sLW1kLTQiPjwvZGl2Pgor ICAgIDwvZGl2PgorPC9kaXY+Cit7JSBlbmRibG9jayAlfQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRt aW4vYnJvd3Nlci90ZXN0cy90ZXN0X2tlcmJlcm9zX3dpdGhfbW9ja2luZy5weSBiL3dlYi9wZ2Fk bWluL2Jyb3dzZXIvdGVzdHMvdGVzdF9rZXJiZXJvc193aXRoX21vY2tpbmcucHkKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwLi5mODdjZTU1MjEKLS0tIC9kZXYvbnVsbAorKysg Yi93ZWIvcGdhZG1pbi9icm93c2VyL3Rlc3RzL3Rlc3Rfa2VyYmVyb3Nfd2l0aF9tb2NraW5nLnB5 CkBAIC0wLDAgKzEsMTA0IEBACisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIworIyBwZ0FkbWluIDQgLSBQ b3N0Z3JlU1FMIFRvb2xzCisjCisjIENvcHlyaWdodCAoQykgMjAxMyAtIDIwMjAsIFRoZSBwZ0Fk bWluIERldmVsb3BtZW50IFRlYW0KKyMgVGhpcyBzb2Z0d2FyZSBpcyByZWxlYXNlZCB1bmRlciB0 aGUgUG9zdGdyZVNRTCBMaWNlbmNlCisjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCitpbXBvcnQgY29u ZmlnIGFzIGFwcF9jb25maWcKK2Zyb20gcGdhZG1pbi51dGlscy5yb3V0ZSBpbXBvcnQgQmFzZVRl c3RHZW5lcmF0b3IKK2Zyb20gcmVncmVzc2lvbi5weXRob25fdGVzdF91dGlscyBpbXBvcnQgdGVz dF91dGlscyBhcyB1dGlscworZnJvbSBwZ2FkbWluLmF1dGhlbnRpY2F0ZS5yZWdpc3RyeSBpbXBv cnQgQXV0aFNvdXJjZVJlZ2lzdHJ5Citmcm9tIHVuaXR0ZXN0Lm1vY2sgaW1wb3J0IHBhdGNoLCBN YWdpY01vY2sKKworCitjbGFzcyBLZXJiZXJvc0xvZ2luTW9ja1Rlc3RDYXNlKEJhc2VUZXN0R2Vu ZXJhdG9yKToKKyAgICAiIiIKKyAgICBUaGlzIGNsYXNzIGNoZWNrcyBTcG5lZ28vS2VyYmVyb3Mg bG9naW4gZnVuY3Rpb25hbGl0eSBieSBtb2NraW5nCisgICAgSFRUUCBuZWdvdGlhdGUgYXV0aGVu dGljYXRpb24uCisgICAgIiIiCisKKyAgICBzY2VuYXJpb3MgPSBbCisgICAgICAgICgnU3BuZWdv L0tlcmJlcm9zIEF1dGhlbnRpY2F0aW9uOiBUZXN0IFVuYXV0aG9yaXplZCcsIGRpY3QoCisgICAg ICAgICAgICBhdXRoX3NvdXJjZT1bJ2tlcmJlcm9zJ10sCisgICAgICAgICAgICBhdXRvX2NyZWF0 ZV91c2VyPVRydWUsCisgICAgICAgICAgICBmbGFnPTEKKyAgICAgICAgKSksCisgICAgICAgICgn U3BuZWdvL0tlcmJlcm9zIEF1dGhlbnRpY2F0aW9uOiBUZXN0IEF1dGhvcml6ZWQnLCBkaWN0KAor ICAgICAgICAgICAgYXV0aF9zb3VyY2U9WydrZXJiZXJvcyddLAorICAgICAgICAgICAgYXV0b19j cmVhdGVfdXNlcj1UcnVlLAorICAgICAgICAgICAgZmxhZz0yCisgICAgICAgICkpCisgICAgXQor CisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHNldFVwQ2xhc3MoY2xzKToKKyAgICAgICAgIiIi CisgICAgICAgIFdlIG5lZWQgdG8gbG9nb3V0IHRoZSB0ZXN0IGNsaWVudCBhcyB3ZSBhcmUgdGVz dGluZworICAgICAgICBzcG5lZ28va2VyYmVyb3MgbG9naW4gc2NlbmFyaW9zLgorICAgICAgICAi IiIKKyAgICAgICAgY2xzLnRlc3Rlci5sb2dvdXQoKQorCisgICAgZGVmIHNldFVwKHNlbGYpOgor ICAgICAgICBhcHBfY29uZmlnLkFVVEhFTlRJQ0FUSU9OX1NPVVJDRVMgPSBzZWxmLmF1dGhfc291 cmNlCisgICAgICAgIHNlbGYuYXBwLlBHQURNSU5fRVhURVJOQUxfQVVUSF9TT1VSQ0UgPSAna2Vy YmVyb3MnCisKKyAgICBkZWYgcnVuVGVzdChzZWxmKToKKyAgICAgICAgIiIiVGhpcyBmdW5jdGlv biBjaGVja3Mgc3BuZWdvL2tlcmJlcm9zIGxvZ2luIGZ1bmN0aW9uYWxpdHkuIiIiCisgICAgICAg IGlmIHNlbGYuZmxhZyA9PSAxOgorICAgICAgICAgICAgc2VsZi50ZXN0X3VuYXV0aG9yaXplZCgp CisgICAgICAgIGVsaWYgc2VsZi5mbGFnID09IDI6CisgICAgICAgICAgICBpZiBhcHBfY29uZmln LlNFUlZFUl9NT0RFIGlzIEZhbHNlOgorICAgICAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoCisg ICAgICAgICAgICAgICAgICAgICJDYW4gbm90IHJ1biBLZXJiZXJvcyBBdXRoZW50aWNhdGlvbiBp biB0aGUgRGVza3RvcCBtb2RlLiIKKyAgICAgICAgICAgICAgICApCisKKyAgICAgICAgICAgIHNl bGYudGVzdF9hdXRob3JpemVkKCkKKworICAgIGRlZiB0ZXN0X3VuYXV0aG9yaXplZChzZWxmKToK KyAgICAgICAgIiIiCisgICAgICAgIEVuc3VyZSB0aGF0IHdoZW4gY2xpZW50IHNlbmRzIHRoZSBm aXJzdCByZXF1ZXN0LAorICAgICAgICB0aGUgTmVnb3RpYXRlIHJlcXVlc3QgaXMgc2VudC4KKyAg ICAgICAgIiIiCisgICAgICAgIHJlcyA9IHNlbGYudGVzdGVyLmxvZ2luKE5vbmUsIE5vbmUsIFRy dWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzLnN0YXR1c19jb2RlLCA0MDEpCisgICAg ICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzLmhlYWRlcnMuZ2V0KCd3d3ctYXV0aGVudGljYXRlJyks ICdOZWdvdGlhdGUnKQorCisgICAgZGVmIHRlc3RfYXV0aG9yaXplZChzZWxmKToKKyAgICAgICAg IiIiCisgICAgICAgIEVuc3VyZSB0aGF0IHdoZW4gdGhlIGNsaWVudCBzZW5kcyBhbiBjb3JyZWN0 IGF1dGhvcml6YXRpb24gdG9rZW4sCisgICAgICAgIHRoZXkgcmVjZWl2ZSBhIDIwMCBPSyByZXNw b25zZSBhbmQgdGhlIHVzZXIgcHJpbmNpcGFsIGlzIGV4dHJhY3RlZCBhbmQKKyAgICAgICAgcGFz c2VkIG9uIHRvIHRoZSByb3V0ZWQgbWV0aG9kLgorICAgICAgICAiIiIKKworICAgICAgICBjbGFz cyBkZWxDcmFkczoKKyAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmKToKKyAgICAgICAgICAg ICAgICBzZWxmLmluaXRpYXRvcl9uYW1lID0gJ3VzZXJAUEdBRE1JTi5PUkcnCisgICAgICAgIGRl bF9jcmFkcyA9IGRlbENyYWRzKCkKKworICAgICAgICBBdXRoU291cmNlUmVnaXN0cnkucmVnaXN0 cnlbJ2tlcmJlcm9zJ10ubmVnb3RpYXRlX3N0YXJ0ID0gTWFnaWNNb2NrKAorICAgICAgICAgICAg cmV0dXJuX3ZhbHVlPVtUcnVlLCBkZWxfY3JhZHNdKQorICAgICAgICByZXMgPSBzZWxmLnRlc3Rl ci5sb2dpbihOb25lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOb25lLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUcnVlLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBoZWFkZXJzPXsnQXV0aG9yaXphdGlvbic6ICdOZWdvdGlhdGUgQ1RPS0VOJ30K KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQorICAgICAgICBzZWxmLmFzc2VydEVx dWFsKHJlcy5zdGF0dXNfY29kZSwgMjAwKQorICAgICAgICByZXNwZGF0YSA9ICdHcmF2YXRhciBp bWFnZSBmb3IgJXMnICUgZGVsX2NyYWRzLmluaXRpYXRvcl9uYW1lCisgICAgICAgIHNlbGYuYXNz ZXJ0VHJ1ZShyZXNwZGF0YSBpbiByZXMuZGF0YS5kZWNvZGUoJ3V0ZjgnKSkKKworICAgIGRlZiB0 ZWFyRG93bihzZWxmKToKKyAgICAgICAgc2VsZi5hcHAuUEdBRE1JTl9FWFRFUk5BTF9BVVRIX1NP VVJDRSA9ICdsZGFwJworICAgICAgICBzZWxmLnRlc3Rlci5sb2dvdXQoKQorCisgICAgQGNsYXNz bWV0aG9kCisgICAgZGVmIHRlYXJEb3duQ2xhc3MoY2xzKToKKyAgICAgICAgIiIiCisgICAgICAg IFdlIG5lZWQgdG8gYWdhaW4gbG9naW4gdGhlIHRlc3QgY2xpZW50IGFzIHNvb24gYXMgdGVzdCBz Y2VuYXJpb3MKKyAgICAgICAgZmluaXNoZXMuCisgICAgICAgICIiIgorICAgICAgICBjbHMudGVz dGVyLmxvZ291dCgpCisgICAgICAgIGFwcF9jb25maWcuQVVUSEVOVElDQVRJT05fU09VUkNFUyA9 IFsnaW50ZXJuYWwnXQorICAgICAgICB1dGlscy5sb2dpbl90ZXN0ZXJfYWNjb3VudChjbHMudGVz dGVyKQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vdG9vbHMvZGF0YWdyaWQvX19pbml0X18ucHkg Yi93ZWIvcGdhZG1pbi90b29scy9kYXRhZ3JpZC9fX2luaXRfXy5weQppbmRleCAyNDA1YTQ5OGQu LjA1ZWQ5OThjNiAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vdG9vbHMvZGF0YWdyaWQvX19pbml0 X18ucHkKKysrIGIvd2ViL3BnYWRtaW4vdG9vbHMvZGF0YWdyaWQvX19pbml0X18ucHkKQEAgLTI1 LDcgKzI1LDcgQEAgZnJvbSBwZ2FkbWluLnV0aWxzIGltcG9ydCBQZ0FkbWluTW9kdWxlCiBmcm9t IHBnYWRtaW4udXRpbHMuYWpheCBpbXBvcnQgbWFrZV9qc29uX3Jlc3BvbnNlLCBiYWRfcmVxdWVz dCwgXAogICAgIGludGVybmFsX3NlcnZlcl9lcnJvciwgdW5hdXRob3JpemVkCiAKLWZyb20gY29u ZmlnIGltcG9ydCBQR19ERUZBVUxUX0RSSVZFUgorZnJvbSBjb25maWcgaW1wb3J0IFBHX0RFRkFV TFRfRFJJVkVSLCBBTExPV19TQVZFX1BBU1NXT1JECiBmcm9tIHBnYWRtaW4ubW9kZWwgaW1wb3J0 IFNlcnZlciwgVXNlcgogZnJvbSBwZ2FkbWluLnV0aWxzLmRyaXZlciBpbXBvcnQgZ2V0X2RyaXZl cgogZnJvbSBwZ2FkbWluLnV0aWxzLmV4Y2VwdGlvbiBpbXBvcnQgQ29ubmVjdGlvbkxvc3QsIFNT SFR1bm5lbENvbm5lY3Rpb25Mb3N0CkBAIC00MDIsNiArNDAyLDkgQEAgZGVmIF9pbml0X3F1ZXJ5 X3Rvb2wodHJhbnNfaWQsIGNvbm5lY3QsIHNnaWQsIHNpZCwgZGlkLCAqKmt3YXJncyk6CiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgdXNlcm5hbWU9dXNlciwKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBlcnJtc2c9bXNnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIF89Z2V0 dGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGxvd19zYXZlX3Bhc3N3b3JkPVRy dWUgaWYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBBTExPV19TQVZFX1BBU1NXT1JEIGFu ZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlc3Npb25bJ2FsbG93X3NhdmVfcGFzc3dv cmQnXSBlbHNlIEZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAg ICAgICAgICApLCAnJywgJycKICAgICAgICAgICAgICAgICBlbHNlOgpkaWZmIC0tZ2l0IGEvd2Vi L3BnYWRtaW4vdG9vbHMvdXNlcl9tYW5hZ2VtZW50L19faW5pdF9fLnB5IGIvd2ViL3BnYWRtaW4v dG9vbHMvdXNlcl9tYW5hZ2VtZW50L19faW5pdF9fLnB5CmluZGV4IDg2NDExMzBjNC4uY2UyODBh M2QyIDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi90b29scy91c2VyX21hbmFnZW1lbnQvX19pbml0 X18ucHkKKysrIGIvd2ViL3BnYWRtaW4vdG9vbHMvdXNlcl9tYW5hZ2VtZW50L19faW5pdF9fLnB5 CkBAIC0xMyw3ICsxMyw3IEBAIGltcG9ydCBzaW1wbGVqc29uIGFzIGpzb24KIGltcG9ydCByZQog CiBmcm9tIGZsYXNrIGltcG9ydCByZW5kZXJfdGVtcGxhdGUsIHJlcXVlc3QsIFwKLSAgICB1cmxf Zm9yLCBSZXNwb25zZSwgYWJvcnQsIGN1cnJlbnRfYXBwCisgICAgdXJsX2ZvciwgUmVzcG9uc2Us IGFib3J0LCBjdXJyZW50X2FwcCwgc2Vzc2lvbgogZnJvbSBmbGFza19iYWJlbGV4IGltcG9ydCBn ZXR0ZXh0IGFzIF8KIGZyb20gZmxhc2tfc2VjdXJpdHkgaW1wb3J0IGxvZ2luX3JlcXVpcmVkLCBy b2xlc19yZXF1aXJlZCwgY3VycmVudF91c2VyCiBmcm9tIGZsYXNrX3NlY3VyaXR5LnV0aWxzIGlt cG9ydCBlbmNyeXB0X3Bhc3N3b3JkCkBAIC0yNCw3ICsyNCw4IEBAIGZyb20gcGdhZG1pbi51dGls cyBpbXBvcnQgUGdBZG1pbk1vZHVsZQogZnJvbSBwZ2FkbWluLnV0aWxzLmFqYXggaW1wb3J0IG1h a2VfcmVzcG9uc2UgYXMgYWpheF9yZXNwb25zZSwgXAogICAgIG1ha2VfanNvbl9yZXNwb25zZSwg YmFkX3JlcXVlc3QsIGludGVybmFsX3NlcnZlcl9lcnJvciwgZm9yYmlkZGVuCiBmcm9tIHBnYWRt aW4udXRpbHMuY3NyZiBpbXBvcnQgcGdDU1JGUHJvdGVjdAotZnJvbSBwZ2FkbWluLnV0aWxzLmNv bnN0YW50cyBpbXBvcnQgTUlNRVRZUEVfQVBQX0pTCitmcm9tIHBnYWRtaW4udXRpbHMuY29uc3Rh bnRzIGltcG9ydCBNSU1FVFlQRV9BUFBfSlMsIElOVEVSTkFMLFwKKyAgICBTVVBQT1JURURfQVVU SF9TT1VSQ0VTLCBLRVJCRVJPUwogZnJvbSBwZ2FkbWluLnV0aWxzLnZhbGlkYXRpb25fdXRpbHMg aW1wb3J0IHZhbGlkYXRlX2VtYWlsCiBmcm9tIHBnYWRtaW4ubW9kZWwgaW1wb3J0IGRiLCBSb2xl LCBVc2VyLCBVc2VyUHJlZmVyZW5jZSwgU2VydmVyLCBcCiAgICAgU2VydmVyR3JvdXAsIFByb2Nl c3MsIFNldHRpbmcKQEAgLTE2NywxMSArMTY4LDEzIEBAIGRlZiBjdXJyZW50X3VzZXJfaW5mbygp OgogICAgICAgICAgICAgICAgIGNvbmZpZy5TRVJWRVJfTU9ERSBpcyBUcnVlCiAgICAgICAgICAg ICAgICAgZWxzZSAncG9zdGdyZXMnCiAgICAgICAgICAgICApLAotICAgICAgICAgICAgYWxsb3df c2F2ZV9wYXNzd29yZD0ndHJ1ZScgaWYgY29uZmlnLkFMTE9XX1NBVkVfUEFTU1dPUkQKKyAgICAg ICAgICAgIGFsbG93X3NhdmVfcGFzc3dvcmQ9J3RydWUnIGlmCisgICAgICAgICAgICBjb25maWcu QUxMT1dfU0FWRV9QQVNTV09SRCBhbmQgc2Vzc2lvblsnYWxsb3dfc2F2ZV9wYXNzd29yZCddCiAg ICAgICAgICAgICBlbHNlICdmYWxzZScsCi0gICAgICAgICAgICBhbGxvd19zYXZlX3R1bm5lbF9w YXNzd29yZD0ndHJ1ZScKLSAgICAgICAgICAgIGlmIGNvbmZpZy5BTExPV19TQVZFX1RVTk5FTF9Q QVNTV09SRCBlbHNlICdmYWxzZScsCi0gICAgICAgICAgICBhdXRoX3NvdXJjZXM9Y29uZmlnLkFV VEhFTlRJQ0FUSU9OX1NPVVJDRVMsCisgICAgICAgICAgICBhbGxvd19zYXZlX3R1bm5lbF9wYXNz d29yZD0ndHJ1ZScgaWYKKyAgICAgICAgICAgIGNvbmZpZy5BTExPV19TQVZFX1RVTk5FTF9QQVNT V09SRCBhbmQgc2Vzc2lvblsKKyAgICAgICAgICAgICAgICAnYWxsb3dfc2F2ZV9wYXNzd29yZCdd IGVsc2UgJ2ZhbHNlJywKKyAgICAgICAgICAgIGF1dGhfc291cmNlcz1jb25maWcuQVVUSEVOVElD QVRJT05fU09VUkNFUwogICAgICAgICApLAogICAgICAgICBzdGF0dXM9MjAwLAogICAgICAgICBt aW1ldHlwZT1NSU1FVFlQRV9BUFBfSlMKQEAgLTI1NCwxMCArMjU3LDEwIEBAIGRlZiBfY3JlYXRl X25ld191c2VyKG5ld19kYXRhKToKICAgICA6cmV0dXJuOiBSZXR1cm4gbmV3IGNyZWF0ZWQgdXNl ci4KICAgICAiIiIKICAgICBhdXRoX3NvdXJjZSA9IG5ld19kYXRhWydhdXRoX3NvdXJjZSddIGlm ICdhdXRoX3NvdXJjZScgaW4gbmV3X2RhdGEgXAotICAgICAgICBlbHNlIGN1cnJlbnRfYXBwLlBH QURNSU5fREVGQVVMVF9BVVRIX1NPVVJDRQorICAgICAgICBlbHNlIElOVEVSTkFMCiAgICAgdXNl cm5hbWUgPSBuZXdfZGF0YVsndXNlcm5hbWUnXSBpZiBcCiAgICAgICAgICd1c2VybmFtZScgaW4g bmV3X2RhdGEgYW5kIGF1dGhfc291cmNlICE9IFwKLSAgICAgICAgY3VycmVudF9hcHAuUEdBRE1J Tl9ERUZBVUxUX0FVVEhfU09VUkNFIGVsc2UgbmV3X2RhdGFbJ2VtYWlsJ10KKyAgICAgICAgSU5U RVJOQUwgZWxzZSBuZXdfZGF0YVsnZW1haWwnXQogICAgIGVtYWlsID0gbmV3X2RhdGFbJ2VtYWls J10gaWYgJ2VtYWlsJyBpbiBuZXdfZGF0YSBlbHNlIE5vbmUKICAgICBwYXNzd29yZCA9IG5ld19k YXRhWydwYXNzd29yZCddIGlmICdwYXNzd29yZCcgaW4gbmV3X2RhdGEgZWxzZSBOb25lCiAKQEAg LTI3OSw3ICsyODIsNyBAQCBkZWYgX2NyZWF0ZV9uZXdfdXNlcihuZXdfZGF0YSk6CiAKIGRlZiBj cmVhdGVfdXNlcihkYXRhKToKICAgICBpZiAnYXV0aF9zb3VyY2UnIGluIGRhdGEgYW5kIGRhdGFb J2F1dGhfc291cmNlJ10gIT0gXAotICAgICAgICAgICAgY3VycmVudF9hcHAuUEdBRE1JTl9ERUZB VUxUX0FVVEhfU09VUkNFOgorICAgICAgICAgICAgSU5URVJOQUw6CiAgICAgICAgIHJlcV9wYXJh bXMgPSAoJ3VzZXJuYW1lJywgJ3JvbGUnLCAnYWN0aXZlJywgJ2F1dGhfc291cmNlJykKICAgICBl bHNlOgogICAgICAgICByZXFfcGFyYW1zID0gKCdlbWFpbCcsICdyb2xlJywgJ2FjdGl2ZScsICdu ZXdQYXNzd29yZCcsCkBAIC0zODAsNyArMzgzLDcgQEAgZGVmIHVwZGF0ZSh1aWQpOgogICAgICkK IAogICAgICMgVXNlcm5hbWUgYW5kIGVtYWlsIGNhbiBub3QgYmUgY2hhbmdlZCBmb3IgaW50ZXJu YWwgdXNlcnMKLSAgICBpZiB1c3IuYXV0aF9zb3VyY2UgPT0gY3VycmVudF9hcHAuUEdBRE1JTl9E RUZBVUxUX0FVVEhfU09VUkNFOgorICAgIGlmIHVzci5hdXRoX3NvdXJjZSA9PSBJTlRFUk5BTDoK ICAgICAgICAgbm9uX2VkaXRhYmxlX3BhcmFtcyA9ICgndXNlcm5hbWUnLCAnZW1haWwnKQogCiAg ICAgICAgIGZvciBmIGluIG5vbl9lZGl0YWJsZV9wYXJhbXM6CkBAIC00NjMsNyArNDY2LDcgQEAg ZGVmIHJvbGUocmlkKToKICkKIGRlZiBhdXRoX3NvdXJjZXMoKToKICAgICBzb3VyY2VzID0gW10K LSAgICBmb3Igc291cmNlIGluIGN1cnJlbnRfYXBwLlBHQURNSU5fU1VQUE9SVEVEX0FVVEhfU09V UkNFOgorICAgIGZvciBzb3VyY2UgaW4gU1VQUE9SVEVEX0FVVEhfU09VUkNFUzoKICAgICAgICAg c291cmNlcy5hcHBlbmQoeydsYWJlbCc6IHNvdXJjZSwgJ3ZhbHVlJzogc291cmNlfSkKIAogICAg IHJldHVybiBhamF4X3Jlc3BvbnNlKApkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vdXRpbHMvY29u c3RhbnRzLnB5IGIvd2ViL3BnYWRtaW4vdXRpbHMvY29uc3RhbnRzLnB5CmluZGV4IDBhMjI2MWYw NS4uNWZkOTQyMzA0IDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi91dGlscy9jb25zdGFudHMucHkK KysrIGIvd2ViL3BnYWRtaW4vdXRpbHMvY29uc3RhbnRzLnB5CkBAIC00NywzICs0NywxMiBAQCBF UlJPUl9GRVRDSElOR19ST0xFX0lORk9STUFUSU9OID0gZ2V0dGV4dCgKICAgICAnRXJyb3IgZmV0 Y2hpbmcgcm9sZSBpbmZvcm1hdGlvbiBmcm9tIHRoZSBkYXRhYmFzZSBzZXJ2ZXIuJykKIAogRVJS T1JfRkVUQ0hJTkdfREFUQSA9IGdldHRleHQoJ1VuYWJsZSB0byBmZXRjaCBkYXRhLicpCisKKyMg QXV0aGVudGljYXRpb24gU291cmNlcworSU5URVJOQUwgPSAnaW50ZXJuYWwnCitMREFQID0gJ2xk YXAnCitLRVJCRVJPUyA9ICdrZXJiZXJvcycKKworU1VQUE9SVEVEX0FVVEhfU09VUkNFUyA9IFtJ TlRFUk5BTCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgTERBUCwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgS0VSQkVST1NdCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi91dGlscy9tYXN0 ZXJfcGFzc3dvcmQucHkgYi93ZWIvcGdhZG1pbi91dGlscy9tYXN0ZXJfcGFzc3dvcmQucHkKaW5k ZXggNzU5YmYzNmUwLi42MjllZWM5NDEgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL3V0aWxzL21h c3Rlcl9wYXNzd29yZC5weQorKysgYi93ZWIvcGdhZG1pbi91dGlscy9tYXN0ZXJfcGFzc3dvcmQu cHkKQEAgLTEsOCArMSw5IEBACiBpbXBvcnQgY29uZmlnCi1mcm9tIGZsYXNrIGltcG9ydCBjdXJy ZW50X2FwcAorZnJvbSBmbGFzayBpbXBvcnQgY3VycmVudF9hcHAsIHNlc3Npb24KIGZyb20gZmxh c2tfbG9naW4gaW1wb3J0IGN1cnJlbnRfdXNlcgogZnJvbSBwZ2FkbWluLm1vZGVsIGltcG9ydCBk YiwgVXNlciwgU2VydmVyCiBmcm9tIHBnYWRtaW4udXRpbHMuY3J5cHRvIGltcG9ydCBlbmNyeXB0 LCBkZWNyeXB0Citmcm9tIHBnYWRtaW4udXRpbHMuY29uc3RhbnRzIGltcG9ydCBLRVJCRVJPUwog CiAKIE1BU1RFUlBBU1NfQ0hFQ0tfVEVYVCA9ICdpZGVhcyBhcmUgYnVsbGV0cHJvb2YnCkBAIC0z Miw2ICszMywxMSBAQCBkZWYgZ2V0X2NyeXB0X2tleSgpOgogICAgIGVsaWYgY29uZmlnLk1BU1RF Ul9QQVNTV09SRF9SRVFVSVJFRCBcCiAgICAgICAgICAgICBhbmQgbm90IGNvbmZpZy5TRVJWRVJf TU9ERSBhbmQgZW5jX2tleSBpcyBOb25lOgogICAgICAgICByZXR1cm4gRmFsc2UsIE5vbmUKKyAg ICBlbGlmIGNvbmZpZy5TRVJWRVJfTU9ERSBhbmQgXAorICAgICAgICAgICAgc2Vzc2lvblsnX2F1 dGhfc291cmNlX21hbmFnZXJfb2JqJ11bJ3NvdXJjZV9mcmllbmRseV9uYW1lJ11cCisgICAgICAg ICAgICA9PSBLRVJCRVJPUzoKKyAgICAgICAgcmV0dXJuIFRydWUsIHNlc3Npb25bJ2tlcmJlcm9z X2tleSddIGlmICdrZXJiZXJvc19rZXknIGluIHNlc3Npb24gXAorICAgICAgICAgICAgZWxzZSBO b25lCiAgICAgZWxzZToKICAgICAgICAgcmV0dXJuIFRydWUsIGVuY19rZXkKIApkaWZmIC0tZ2l0 IGEvd2ViL3JlZ3Jlc3Npb24vcHl0aG9uX3Rlc3RfdXRpbHMvY3NyZl90ZXN0X2NsaWVudC5weSBi L3dlYi9yZWdyZXNzaW9uL3B5dGhvbl90ZXN0X3V0aWxzL2NzcmZfdGVzdF9jbGllbnQucHkKaW5k ZXggMTFkMmNmY2E1Li5jYTQxMjBlMTggMTAwNjQ0Ci0tLSBhL3dlYi9yZWdyZXNzaW9uL3B5dGhv bl90ZXN0X3V0aWxzL2NzcmZfdGVzdF9jbGllbnQucHkKKysrIGIvd2ViL3JlZ3Jlc3Npb24vcHl0 aG9uX3Rlc3RfdXRpbHMvY3NyZl90ZXN0X2NsaWVudC5weQpAQCAtMTAxLDcgKzEwMSw4IEBAIGNs YXNzIFRlc3RDbGllbnQodGVzdGluZy5GbGFza0NsaWVudCk6CiAKICAgICAgICAgICAgIHJldHVy biBjc3JmX3Rva2VuCiAKLSAgICBkZWYgbG9naW4oc2VsZiwgZW1haWwsIHBhc3N3b3JkLCBfZm9s bG93X3JlZGlyZWN0cz1GYWxzZSk6CisgICAgZGVmIGxvZ2luKHNlbGYsIGVtYWlsLCBwYXNzd29y ZCwgX2ZvbGxvd19yZWRpcmVjdHM9RmFsc2UsCisgICAgICAgICAgICAgIGhlYWRlcnM9Tm9uZSk6 CiAgICAgICAgIGlmIGNvbmZpZy5TRVJWRVJfTU9ERSBpcyBUcnVlOgogICAgICAgICAgICAgcmVz ID0gc2VsZi5nZXQoJy9sb2dpbicsIGZvbGxvd19yZWRpcmVjdHM9VHJ1ZSkKICAgICAgICAgICAg IGNzcmZfdG9rZW4gPSBzZWxmLmZldGNoX2NzcmYocmVzKQpAQCAtMTEzLDcgKzExNCw4IEBAIGNs YXNzIFRlc3RDbGllbnQodGVzdGluZy5GbGFza0NsaWVudCk6CiAgICAgICAgICAgICAgICAgZW1h aWw9ZW1haWwsIHBhc3N3b3JkPXBhc3N3b3JkLAogICAgICAgICAgICAgICAgIGNzcmZfdG9rZW49 Y3NyZl90b2tlbiwKICAgICAgICAgICAgICksCi0gICAgICAgICAgICBmb2xsb3dfcmVkaXJlY3Rz PV9mb2xsb3dfcmVkaXJlY3RzCisgICAgICAgICAgICBmb2xsb3dfcmVkaXJlY3RzPV9mb2xsb3df cmVkaXJlY3RzLAorICAgICAgICAgICAgaGVhZGVycz1oZWFkZXJzCiAgICAgICAgICkKICAgICAg ICAgc2VsZi5jc3JmX3Rva2VuID0gY3NyZl90b2tlbgogCmRpZmYgLS1naXQgYS93ZWIvcmVncmVz c2lvbi9ydW50ZXN0cy5weSBiL3dlYi9yZWdyZXNzaW9uL3J1bnRlc3RzLnB5CmluZGV4IDMzMjhl ZDNmNi4uOWI3OTRlNDFmIDEwMDY0NAotLS0gYS93ZWIvcmVncmVzc2lvbi9ydW50ZXN0cy5weQor KysgYi93ZWIvcmVncmVzc2lvbi9ydW50ZXN0cy5weQpAQCAtMTE3LDkgKzExNyw5IEBAIGlmIGNv bmZpZy5TRVJWRVJfTU9ERSBpcyBUcnVlOgogYXBwLmNvbmZpZ1snV1RGX0NTUkZfRU5BQkxFRCdd ID0gVHJ1ZQogCiAjIEF1dGhlbnRpY2F0aW9uIHNvdXJjZXMKLWFwcC5QR0FETUlOX0RFRkFVTFRf QVVUSF9TT1VSQ0UgPSAnaW50ZXJuYWwnCiBhcHAuUEdBRE1JTl9FWFRFUk5BTF9BVVRIX1NPVVJD RSA9ICdsZGFwJwogCisKIGFwcC50ZXN0X2NsaWVudF9jbGFzcyA9IFRlc3RDbGllbnQKIHRlc3Rf Y2xpZW50ID0gYXBwLnRlc3RfY2xpZW50KCkKIHRlc3RfY2xpZW50LnNldEFwcChhcHApCg== --000000000000e47aa205b927b208--