Received: from malur.postgresql.org ([2a02:16a8:dc51::56]) by arkaria.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.89) (envelope-from ) id 1fEipw-0003RK-AB for pgadmin-hackers@arkaria.postgresql.org; Fri, 04 May 2018 22:05:56 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.89) (envelope-from ) id 1fEipv-00079V-Cj for pgadmin-hackers@arkaria.postgresql.org; Fri, 04 May 2018 22:05:55 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.89) (envelope-from ) id 1fEio7-000616-HF for pgadmin-hackers@lists.postgresql.org; Fri, 04 May 2018 22:04:04 +0000 Received: from mx0b-00296801.pphosted.com ([148.163.153.148]) by magus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.89) (envelope-from ) id 1fEinx-0005gz-DF for pgadmin-hackers@postgresql.org; Fri, 04 May 2018 22:04:02 +0000 Received: from pps.filterd (m0114585.ppops.net [127.0.0.1]) by mx0b-00296801.pphosted.com (8.16.0.22/8.16.0.22) with SMTP id w44M1FDQ028568 for ; Fri, 4 May 2018 22:03:49 GMT Received: from mail-io0-f200.google.com (mail-io0-f200.google.com [209.85.223.200]) by mx0b-00296801.pphosted.com with ESMTP id 2hqpbesxgq-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NOT) for ; Fri, 04 May 2018 22:03:45 +0000 Received: by mail-io0-f200.google.com with SMTP id l4-v6so13772944iog.9 for ; Fri, 04 May 2018 15:03:45 -0700 (PDT) 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=zLxiReEIhRXb3848etgSzGptHLFaEWT2aoHQt074Ebo=; b=poS2ItGYG2p10AMl9lof9EjBp99FExy61xyGEc4qr4fhvX7DJNHOJTtCN0DxOcGjhm HFZ9D72vOiKMI16DiHORcRaWJgULi3+L81ehYRt6SmCsPD6Zg88h1QyNa+YNbvJxyTRq pWNZMt/DKNAlklY03xykW9UQC39Q8vxdIs3EP4i6CoDsazjkI6jZG0uXNEdpiI9g8qUT FqvhmVR7fH8BrTy02dKAp7UizAU9hBPDACH+9AiMios3F80G+WghYcakBNtA36D/zN6O F2ne8tsmHphifISdfEt7Q6KSR720DgXdLVqp0L4afvpOJ6gAB9fC8IFmZKI3YOXCYWA6 obFw== X-Gm-Message-State: ALQs6tDGO5U9ch7CFuZKa5EZPM5KxI0Fc//hgkJpq81yBea/5zquHeDi t8nWnKpcv3ynUTLeGZUooHF/3xPIyXI4AFfkQzngNM9a2f6IqCCxVvrS6+LjxhgaOcWTKe9BwFV Sm+y6LfVX424mA2tELJuf4z2uZis8qj1wLY+AHx9xUCu/N4lUkOAKfxES8XKo9qkLOyNm X-Received: by 2002:a24:a342:: with SMTP id p63-v6mr29793156ite.146.1525471424128; Fri, 04 May 2018 15:03:44 -0700 (PDT) X-Google-Smtp-Source: AB8JxZqL63jcAw4duoR1JRTbr9lThccq+ZSRUey3ELeg74kX67ahBEflzIWvw4/cBcEGce393bbOV0wGo/24bx51xJE= X-Received: by 2002:a24:a342:: with SMTP id p63-v6mr29793133ite.146.1525471423715; Fri, 04 May 2018 15:03:43 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Joao De Almeida Pereira Date: Fri, 04 May 2018 22:03:08 +0000 Message-ID: Subject: Re: [pgadmin4][patch] Initial patch to decouple from ACI Tree To: Dave Page Cc: Ashesh Vashi , Anthony Emengo , Khushboo Vashi , Murtuza Zabuawala , pgadmin-hackers Content-Type: multipart/mixed; boundary="00000000000053c199056b687e7b" X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:,, definitions=2018-05-04_08:,, signatures=0 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 priorityscore=1501 malwarescore=0 suspectscore=5 phishscore=0 bulkscore=0 spamscore=0 clxscore=1015 lowpriorityscore=0 mlxscore=0 impostorscore=0 mlxlogscore=999 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.0.1-1711220000 definitions=main-1805040198 X-Proofpoint-Quarantined: 1 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Precedence: bulk --00000000000053c199056b687e7b Content-Type: multipart/related; boundary="00000000000053c198056b687e7a" --00000000000053c198056b687e7a Content-Type: multipart/alternative; boundary="00000000000053c197056b687e79" --00000000000053c197056b687e79 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable And now the patches...... On Fri, May 4, 2018 at 6:01 PM Joao De Almeida Pereira < jdealmeidapereira@pivotal.io> wrote: > Hi Hackers, > > *Be prepared this is going to be a big email.* > Objectives of this patch: > > 1. Start the work to split ACI from pgAdmin code > 2. Add more tests around the front end components > 3. Start the discussion on application architecture > > 1. Start the work to split ACI from pgAdmin code Why > > This journey started on our first attempt to store state of the current > tree, so that when a user accessed again pgAdmin > there would be no need to reopen all the nodes and make the flow better. > Another problem users brought to us was related > to the UI behavior when the number of objects was too big. > > In order to do implement this features we would have to play around with > aciTree or some functions from our code that > called and leveraged the aciTree functionalities. To do this we needed to > have some confidence that our changes would > implement correctly the new feature and it would not break the current > functionality. > The process that we used was first extract the functions that interacted > with the tree, wrap them with > tests and then refactor them in some way. While doing this work we > realized that the tree started spreading roots > throughout the majority of the application. > How > > Options: > > 1. Rewrite the front end > 2. One bang replace ACI Tree without change on the application > 3. Create an abstraction layer between ACI Tree and the application > > 1. Rewrite the front end > Pros Const > Achieve decoupling by recreating the frontend Cost is too high > Do not rely on deprecated or unmaintained libraries Turn around is too > long > One shot change 2. One bang replace ACI Tree > Pros Const > Achieve decoupling by recreating the frontend Cost is too high > Does not achieve the decoupling unless we change the application > Need to create an adaptor > No garantee of success > One shot change 3. Create an abstraction layer between ACI Tree and the > application > Pros Const > Achieve decoupling of the application and the tree 90% of the time on > Code archaeology > Lower cost > Ability to change or keep ACI Tree, decision TBD > Can be done in a iterative way > > We decided that options 3 looked more attractive specially because we > could do it in a iterative way. > > The next image depicts the current state of the interactions between the > application and the ACI and the place we want > to be in. > > [image: Screen Shot 2018-05-04 at 4.06.17 PM.png] > > for retrieving of data from the ACI Tree that then is used in different > ways. > > Because we are doing this in a iterative process we need to keep the > current tree working and create our adaptor next > to it. In order to do that we created a new property on PGBrowser class > called treeMenu and when ACI Tree receives > the node information we also populate the new Tree with all the needed > information. > > This approach allow us not to worry, for now, with data retrieval, URL > system and other issues that should be addressed > in the future when the adaptor is done. > > This first patch tries to deal with the low hanging fruit, functions that > are triggered by events from ACI Tree. > Cases like registering to events and triggering events need to be handled > in the future as well. > 2. Add more tests around the front end components Why > > Go Fast Forever: https://builttoadapt.io/why-tdd-489fdcdda05e > I think this is a very good summary of why do we need tests in our > applications. > 3. Start the discussion on application architecture > > Why should we care about location of files inside a our application? > > Why is this way better the another? > > These are 2 good questions that have very lengthy answers. Trying to more > or less summarize the answers we care about > the location of the files, because we want our application to communicate > intent and there are always pros and cons > on all the decisions that we make. > > At this point the application structure follows our menu, this approach > eventually make is easier to follow the code > but at the same time if the menu changes down the line, will we change th= e > structure of our folders? > > The proposal that we do with the last diff of this patch is to change to = a > structure that slices vertically the > application. This way we can understand intent behind the code and more > easily find what we are looking for. > > In the current structure if you want to see the tables code you need to g= o > to > pgAdmin/browser/server_groups/servers/databases/schemas/tables/ this is a > huge path to remember and to get to. What > do we win with this? If we open pgAdmin we know which nodes to click in > order to get to tables. But for development > every time that you are looking for a specific functionality you need to > run the application, navigate the menu so that > you know where you can find the code. This doesn=E2=80=99t sound very app= ealing. > > What if our structure would look like this: > > - web > - tables > - controller > - get_nodes.py > - get_sql.py > - __init__.py > - frontend > - component > - ddl_component.js > - services > - table-service.js > - schemas > - servers > - .... > > This would saves us time because all the information that we need is what > are we working on and everything is right there. > Menu driven structure Intent Driven Structure > *Pros:* *Pros:* > Already in place Explicitly shows features > Self contained features Self contained features > Support for drop in features Support for drop in features > *Cons:* *Cons:* > Follows the menu, and it could change Need to change current code > Hard to find features Some additional plumbing might be needed > Drop in features need to be placed in a specific location according to th= e > menu location > > What are your thought about this architecture? > > Around minute 7 of this video > Uncle Bob shows an > application written > in rails to talk about architecture. It is a long KeyNote if you are > curious I would advise you to see the full video. > His approach to architecture of the application is pretty interesting. > ------------------------------ > Patches 0001 Change the order of the shims on the shim file > > Simple change that orders the shims inside the shim file > 0002 New tree implementation > > This is the first version of our Tree implementation. At this point is a > very simple tree without no abstractions and > with code that eventually is not very performant, but this is only the > first iteration and we are trying to follow the > Last Responsible Moment Principle > > . > > What can you find in this patch: > > - Creation of PGBrowser.treeMenu > - Initial version of the Tree Adaptor > web/pgadmin/static/js/tree/tree.js > - TreeFake test double > that can replace the Tree for testing purposes > - Tests. As an interesting asside because Fake=E2=80=99s need to behav= e like > the real object you will noticed that there are > tests for this type of double and they the same as of the real object. > > 0003 Extract, Test and Refactor Methods > > This is the patch that contains the change that we talked a in the > objectives. It touches in a subset of the places > where itemData function is called. To have a sense of progress the > following image depicts, on the left all places > where this functions can be found in the code and on the right the places > where it still remains after this patch. > > But this patch is not only related to the ACI Tree, it also creates some > abstractions from code that we found repeated. > Some examples of this are the dialogs for Backup and Restore, where the > majority of the logic was common, so we created > in web/pgadmin/static/js/alertify/ 3 different objects: > A Factory DialogFactory that is responsible for creating new Dialog and > these dialogs will use the DialogWrapper. > > This is also a good example of the Last Responsible Moment Principle > > , > in Dialog there are still some functions that are used in a Recover and > Backup scenario. When we have more examples > we will be able to, if we want, to extract that into another function. > > While doing some code refactoring we found out that the Right Click Menu > as some checks that can be centralized. Examples > of these are checks for Enable/Disable of an option of the display of the > Create/Edit/Drop option in some menus. > Check web/pgadmin/static/js/menu/ for more information. This simplified > code like: > > canCreate: function(itemData, item, data) { > - //If check is false then , we will allow create menu > - if (data && data.check =3D=3D false) > - return true; > - > - var t =3D pgBrowser.tree, i =3D item, d =3D itemData; > - // To iterate over tree to check parent node > - while (i) { > - // If it is schema then allow user to create domain > - if (_.indexOf(['schema'], d._type) > -1) > - return true; > - > - if ('coll-domain' =3D=3D d._type) { > - //Check if we are not child of catalog > - var prev_i =3D t.hasParent(i) ? t.parent(i) : null, > - prev_d =3D prev_i ? t.itemData(prev_i) : null; > - if( prev_d._type =3D=3D 'catalog') { > - return false; > - } else { > - return true; > - } > - } > - i =3D t.hasParent(i) ? t.parent(i) : null; > - d =3D i ? t.itemData(i) : null; > - } > - // by default we do not want to allow create menu > - return true; > + return canCreate.canCreate(pgBrowser, 'coll-domain', item, data)= ; > } > > This refactor was made in a couple of places throughout the code. > > Another refactor that had to be done was the creation of the functions > getTreeNodeHierarchyFromElement and > getTreeNodeHierarchyFromIdentifier that replace the old > getTreeNodeHierarchy. This implementation was done > because for the time being we have 2 different types of trees and calls t= o > them. > > The rest of the changes resulted from our process of refactoring that we > are following: > > 1. Find a location where itemData is used > 2. Extract that into a function outside of the current code > 3. Wrap it with tests > 4. When we have enough confidence on the tests, we refactor the > function to use the new Tree > 5. We refactor the function to become more readable > 6. Start over > > 0004 Architecture > > The proposed structure is our vision for the application, this is not the > state we will be in when this patch lands. > For now the only change we are doing is move the javascript into > static/js/FEATURE_NAME. This is a first step in the > direction that we would like to see the product heading. > > Even if we decide to keep using the same architecture the move of > Javascript to a centralized place will > not break any plugability as webpack can retrieve all the Javascript from > any place in the code. > > Have a nice weekend > Joao > =E2=80=8B > > --00000000000053c197056b687e79 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
And now the patches......


On Fri, May 4, 2018 at 6:01 PM Joao De = Almeida Pereira <jdealme= idapereira@pivotal.io> wrote:

Hi Hackers,

Be prepared this is goi= ng to be a big email.

Objectives of this patch:

  1. Start the work to split ACI from pgAdmin cod= e
  2. Add more tests around the front end componen= ts
  3. Start the discussion on application architec= ture

1. Start the work to split ACI from pgAdmin code

Why

This journey started on our fir= st attempt to store state of the current tree, so that when a user accessed= again pgAdmin
there would be no need to reopen all the nodes and make t= he flow better. Another problem users brought to us was related
to the U= I behavior when the number of objects was too big.

In order to do implement this f= eatures we would have to play around with aciTree or some functions from ou= r code that
called and leveraged the aciTree functionalities. To do this= we needed to have some confidence that our changes would
implement corr= ectly the new feature and it would not break the current functionality.
= The process that we used was first extract the functions that interacted wi= th the tree, wrap them with
tests and then refactor them in some way. Wh= ile doing this work we realized that the tree started spreading roots
th= roughout the majority of the application.

How

Options:

  1. Rewrite the front end
  2. One bang replace ACI Tree without change on = the application
  3. Create an abstraction layer between ACI Tree= and the application
1. Rewrite the front= end
Pros Const
Achieve decoupling by recreating the fron= tend Cost is too high
Do not rely on deprecated or unmaintained= libraries Turn around is too long
One shot change
2. One bang repl= ace ACI Tree
Pros Const
Achieve decoupling by recreating the fron= tend Cost is too high
Does not achieve the decoupling unless we= change the application
Need to create an adaptor
No garantee of success
One shot change
3. Create an abstraction layer between ACI Tree and = the application
Pros Const
Achieve decoupling of the application and= the tree 90% of the time on Code archaeology
Lower cost
Ability to change or keep ACI Tree, decis= ion TBD
Can be done in a iterative way

We decided that options 3 looke= d more attractive specially because we could do it in a iterative way.

The next image depicts the curr= ent state of the interactions between the application and the ACI and the p= lace we want
to be in.

for retrieving of data from the= ACI Tree that then is used in different ways.

Because we are doing this in a = iterative process we need to keep the current tree working and create our a= daptor next
to it. In order to do that we created a new property on PGBrowser class called treeMenu= and when ACI Tree receives
the node information we also populate the ne= w Tree with all the needed information.

This approach allow us not to w= orry, for now, with data retrieval, URL system and other issues that should= be addressed
in the future when the adaptor is done.

This first patch tries to deal = with the low hanging fruit, functions that are triggered by events from ACI= Tree.
Cases like registering to events and triggering events need to be= handled in the future as well.

2. Add more tests around the front end components

Why

Go Fast Forever: https://builtt= oadapt.io/why-tdd-489fdcdda05e
I think this is a very good summary o= f why do we need tests in our applications.

3. Start the discussion on application architecture

Why should we care about locati= on of files inside a our application?

Why is this way better the anot= her?

These are 2 good questions that= have very lengthy answers. Trying to more or less summarize the answers we= care about
the location of the files, because we want our application t= o communicate intent and there are always pros and cons
on all the decis= ions that we make.

At this point the application s= tructure follows our menu, this approach eventually make is easier to follo= w the code
but at the same time if the menu changes down the line, will = we change the structure of our folders?

The proposal that we do with th= e last diff of this patch is to change to a structure that slices verticall= y the
application. This way we can understand intent behind the code and= more easily find what we are looking for.

In the current structure if you= want to see the tables code you need to go to
pgAdmin/= browser/server_groups/servers/databases/schemas/tables/ this is a hu= ge path to remember and to get to. What
do we win with this? If we open = pgAdmin we know which nodes to click in order to get to tables. But for dev= elopment
every time that you are looking for a specific functionality yo= u need to run the application, navigate the menu so that
you know where = you can find the code. This doesn=E2=80=99t sound very appealing.

What if our structure would loo= k like this:

 - web
   - tables
     - controller
       - get_nodes.py
       - get_sql.py
       - __init__.py
     - frontend
        - component
            - ddl_component.js
        - services
            - table-service.js
   - schemas
   - servers
   - ....

This would saves u= s time because all the information that we need is what are we working on a= nd everything is right there.

Menu dri= ven structure Intent D= riven Structure
Pros: Pros:
Already in place Explicitly shows features
Self contained features Self contained features
Support for drop in features Support for drop in features
Cons: Cons:
Follows the menu, and it could change Need to change current code
Hard to find features Some additional plumbing might be needed
Drop in features need to be placed in a specific location a= ccording to the menu location

What are your thought about thi= s architecture?

Around minute 7 of this video<= /a> Uncle Bob shows an application written
in rails to talk about archit= ecture. It is a long KeyNote if you are curious I would advise you to see t= he full video.
His approach to architecture of the application is pretty= interesting.


Patches

0001 Change the order of the shims on the shim file

Simple change that orders the s= hims inside the shim file

0002 New tree= implementation

This is the first version of ou= r Tree implementation. At this point is a very simple tree without no abstr= actions and
with code that eventually is not very performant, but this i= s only the first iteration and we are trying to follow the
Last Responsible Moment Pri= nciple.

What can you find in this patch= :

  • Creation of PGBrowser.treeM= enu
  • Initial version of the Tree Adaptor web/pgadmin/static/js/tree/tree.js
  • TreeFake test double that can replace = the Tree for testing purposes
  • Tests. As an interesting asside because Fake= =E2=80=99s need to behave like the real object you will noticed that there = are
    tests for this type of double and they the same as of the real objec= t.

000= 3 Extract, Test and Refactor Methods

This is the patch that contains= the change that we talked a in the objectives. It touches in a subset of t= he places
where itemData function is called. To = have a sense of progress the following image depicts, on the left all place= s
where this functions can be found in the code and on the right the pla= ces where it still remains after this patch.

But this patch is not only rela= ted to the ACI Tree, it also creates some abstractions from code that we fo= und repeated.
Some examples of this are the dialogs for Backup and Resto= re, where the majority of the logic was common, so we created
in web/pgadmin/static/js/alertify/ 3 different objects:
A = Factory DialogFactory that is responsible for creat= ing new Dialog and these dialogs will use the DialogWrapper.

This is also a good example of = the Last Respo= nsible Moment Principle,
in Dialog there are= still some functions that are used in a Recover and Backup scenario. When = we have more examples
we will be able to, if we want, to extract that in= to another function.

While doing some code refactori= ng we found out that the Right Click Menu as some checks that can be centra= lized. Examples
of these are checks for Enable/Disable of an option of t= he display of the Create/Edit/Drop option in some menus.
Check web/pgadmin/static/js/menu/ for more information. This simpl= ified code like:

      canCreate: fun=
ction(itemData, item, data) {
-        //If check is false then , we will allow create menu
-        if (data && data.check =3D=3D false)
-          return true;
-
-        var t =3D pgBrowser.tree, i =3D item, d =3D itemData;
-        // To iterate over tree to check parent node
-        while (i) {
-          // If it is schema then allow user to create domain
-          if (_.indexOf(['schema'], d._type) > -1)
-            return true;
-
-          if ('coll-domain' =3D=3D d._type) {
-            //Check if we are not child of catalog
-            var prev_i =3D t.hasParent(i) ? t.parent(i) : null,
-              prev_d =3D prev_i ? t.itemData(prev_i) : null;
-            if( prev_d._type =3D=3D 'catalog') {
-              return false;
-            } else {
-              return true;
-            }
-          }
-          i =3D t.hasParent(i) ? t.parent(i) : null;
-          d =3D i ? t.itemData(i) : null;
-        }
-        // by default we do not want to allow create menu
-        return true;
+        return canCreate.canCreate(pgBrowser, 'coll-domain', item,=
 data);
      }

This refactor was = made in a couple of places throughout the code.

Another refactor that had to be= done was the creation of the functions getTreeNodeHierarc= hyFromElement and
getTreeNodeHierarchyFromIdenti= fier that replace the old getTreeNodeHierarchy. This implementation was done
because for the time being we have 2 di= fferent types of trees and calls to them.

The rest of the changes resulte= d from our process of refactoring that we are following:

  1. Find a location where itemD= ata is used
  2. Extract that into a function outside of the = current code
  3. Wrap it with tests
  4. When we have enough confidence on the tests,= we refactor the function to use the new Tree
  5. We refactor the function to become more read= able
  6. Start over

0004 Architecture

The proposed structure is our v= ision for the application, this is not the state we will be in when this pa= tch lands.
For now the only change we are doing is move the javascript i= nto static/js/FEATURE_NAME. This is a first step in= the
direction that we would like to see the product heading.

Even if we decide to keep using= the same architecture the move of Javascript to a centralized place willnot break any plugability as webpack can retrieve all the Javascript from= any place in the code.

Have a nice weekend
Joao

=E2=80=8B

--00000000000053c197056b687e79-- --00000000000053c198056b687e7a Content-Type: image/png; name="Screen Shot 2018-05-04 at 4.06.17 PM.png" Content-Disposition: inline; filename="Screen Shot 2018-05-04 at 4.06.17 PM.png" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: ii_jgsi60kn0 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 E02Tk1+r0GYfAdD2flqXSw2H6vd65MyIZuatkM254F/sH8L/BuHvqv32AAAACXBIWXMAABYlAAAW JQFJUiTwAAABnmlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPHg6eG1wbWV0YSB4bWxuczp4PSJh ZG9iZTpuczptZXRhLyIgeDp4bXB0az0iWE1QIENvcmUgNS40LjAiPgogICA8cmRmOlJERiB4bWxu czpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgogICAg ICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczpleGlmPSJo dHRwOi8vbnMuYWRvYmUuY29tL2V4aWYvMS4wLyI+CiAgICAgICAgIDxleGlmOlBpeGVsWERpbWVu c2lvbj4xMjg0PC9leGlmOlBpeGVsWERpbWVuc2lvbj4KICAgICAgICAgPGV4aWY6UGl4ZWxZRGlt ZW5zaW9uPjc2ODwvZXhpZjpQaXhlbFlEaW1lbnNpb24+CiAgICAgIDwvcmRmOkRlc2NyaXB0aW9u PgogICA8L3JkZjpSREY+CjwveDp4bXBtZXRhPgo2e0g7AAAAHGlET1QAAAACAAAAAAAAAYAAAAAo AAABgAAAAYAAALAgQlVMKgAAQABJREFUeAHsnQmwLUWR9/uBwEMQBGcUUEHcUVEH11CURQjFJZRB CZwRF4QxwgVDR0BmQEDcEEXDDUN9grKJAjooirIIIorjggoiKIKi4xNcQEDlfSjnq39DnqzTp6q7 KrvOvX3u/XfEeye7KjOr6tfVVd15q7tXjNxW9dz+3//7f7WHddddt6enO82H7g+1/NWvflVttdVW y6K9pY8H+fXvNux//RiSH/mlEuD4l0oqrEd+YS6pqeSXSiqsR35hLqmp5JdKKqxHfmEuqankl0oq rEd+YS6pqeSXSiqsR35hLqmpC8lvBQOCqYdlUo8BhUkeuXvkl0tsUp/8Jnnk7pFfLrFJffKb5JG7 R365xCb1yW+SR+4e+eUSm9Qnv0keuXvkl0tsUp/8Jnnk7pFfLrFJffKb5JG7R365xCb1yW+SR+5e jB8Dgrkk79KPAbW4Kx0BHro/MCI/S09RG/JTFhaJ/CzU1Ib8lIVFIj8LNbUhP2VhkcjPQk1tyE9Z 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 VYH8WvF0ZpJfJ6JWBfJrxdOZuVT4XXLJJeMABIIJbf/OOOOMKS6HuQ+MtNlInh+kkIBZLLjRlY9A FQJX4hu/sspN0hAIQ5BENgmYxMqUfNj7AcETTzxxohz/gxbiu/kr9ZcgFObzroCgBFb9wJH4laCk +EO6BASlvbHfT33qU+KmDhiGysE7CJtf05VAo/jN4YkAV/MrueNKOCHUHuQjmCbl4bdZB6Sdfvrp vqtgwM1X8MvCexSxIdi95ZZbTpSF/uk/uuzXIyZj1SgexcZ7KuWdf6Ir/V2Cf/5xRUBTVtaKfvP3 vve970TgU/pnSv+VsoVD6etJ+F0q458wavslvzY63Xnk182oTYP82uh055FfN6M2DfJro9Odt5D8 GBDsPh5BDV7QBLEkJ5JfMqqgIvkFsSQnkl8yqqAi+QWxJCcuJX4IaLz5zW+eCJD4AYrdd9+9Xh0X goNVTW94wxumbBFgwscoJHDnP2L5+c9/vtZHUCS04q4rH/VAuUcfffRUuag33p2H1Y3+9vOf/7zW DX0VF3r+akk8LoqLOGy//e1vJ1ZB+kG5WiHwn9RfAkbwdcUVV0TLx8o9ed+fH8AT14cffnhtK/6Q 7gcEJd8/ZpBRD3/zVwj678hD/fCewFI8ERB8/OMfX9c5tT1ST2HXbAsCYeeff76ojX8POOCAuhw8 zhvasNIPvuQ9iqJz1FFH1elSjgTR0A8kaCp5+N1jjz3qlahYGSjpCA4jyAh+/mPVyBd/Uj95bFvK xypcHE/x5f++9KUvnQgGwian/15++eVSTP2L+uFfyW0pjX9dXMivi1B7Pvm18+nKJb8uQu355NfO pyuX/LoItecvJL8VqIq7mOi1uff91PbrrrtuLz9iPHR/qOevfvWraquttpIq9/odentL14/8enWX 2pj9rx9D8iO/VAIc/9JIuZVilQuIVG6lVG2wYsWKygXtqk033bTeb7s+uPHGG6sbbrgBf6Cs3Gqy yq1wai201PmLct2jvBWO8UYbbVRtscUW1WabbdZadldms7+4VWAV2KBtd7/73auVK1d2uZjIb/qb yDTuHHvssZVb/Va5AGd11VVXVe7dc5ULglbu4rOu44Mf/OBq/fXXT/Lu1w884QdpsLfw9P0lVaCh 5AKXlVsRV/fDddZZp9pkk00qt6KvWm+99Rqa9l30P/RrF1iu1l577WrjjTeecOYCuJULVlcov8nA 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 /isP+78g7v+Nc/9JIIGfrsD+L4jff//99AtYfX85+3472CN9/n75K8PTB6UNEkjgzQRW3e/3F/BI 97/Vn0f5zb8FOn9zhvndx6+BoHTtQEq4z7X88jsq0Beao1KX1+V32eXoo/kdlbq8Lr/LLkcfze+o 1OV1+V12OfpofkelLq/L77LL0UfzOyp1eV1+l12OPprfUanL6/K77HL00d+lXwPBoz+Vb9Y10PoG 5MZf5ncj2DfL8/sG5MZf5ncj2DfL8/sG5MZf5ncj2DfL8/sG5MZf5ncj2DfL8/sG5MZf5ncj2DfL 8/sG5MZf5ncj2DfL8/sG5MZf5ncj2DfL8/sG5MZfjvwaCN4I+WX5CPTL87f8c/UE+Oz77Tb53XJC Xq7N76XJLY/kd4vWy7X5vTS55ZH8btF6uTa/lya3PJLfLVov1+b30uSWR/K7Revl2vxemtzySH63 aL1cm99Lk1seye8WrZdr83tpcssjI78GgrcoPls7An225HA8+wBv9fXtMPkdPh4XF+Z3keXwg/kd prq4ML+LLIcfzO8w1cWF+V1kOfxgfoepLi7M7yLL4QfzO0x1cWF+F1kOP5jfYaqLC/O7yHL4wfwO U11cmN9FlsMPjvwaCB4m/HrhCPTrVcd+tXrgdvb9dpX8jp2N0ar8RjLHHs/vmNNoVX4jmWOP53fM abQqv5HMscfzO+Y0WpXfSObY4/kdcxqtym8kc+zx/I45jVblN5I59nh+x5xGq/IbyRx7fOTXQPCY 34tVI9AXCw88cPYB3urr20nyO3AwrizJ7wrOgafyO4B0ZUl+V3AOPJXfAaQrS/K7gnPgqfwOIF1Z kt8VnANP5XcA6cqS/K7gHHgqvwNIV5bkdwXnwFP5HUC6siS/KzgHnhr5NRA8gHdpyQj00trXHls9 cDv7frtHfq+diuvP53fd57Vn83tN6Prz+V33ee3Z/F4Tuv58ftd9Xns2v9eErj+f33Wf157N7zWh 68/nd93ntWfze03o+vP5Xfd57dn8XhO6/nx+131ee3bk10DwNbnB8yPQwfKrD599gLf6+naM/K4e iVefzO9VoqsL8rvK8+qT+b1KdHVBfld5Xn0yv1eJri7I7yrPq0/m9yrR1QX5XeV59cn8XiW6uiC/ qzyvPpnfq0RXF+R3lefVJ/N7lejqgpFfA8GrbOMnR6DjxviZ1QO3s++3S+Q3Pg9HnsnviNJ4TX5j myPP5HdEabwmv7HNkWfyO6I0XpPf2ObIM/kdURqvyW9sc+SZ/I4ojdfkN7Y58kx+R5TGa/Ib2xx5 Jr8jSuM1I78GgmOzq8+MQK+WBk+efYC3+vp2hvwGh+Hgw/kdhBosy28Ac/Dh/A5CDZblN4A5+HB+ B6EGy/IbwBx8OL+DUINl+Q1gDj6c30GowbL8BjAHH87vINRgWX4DmIMP53cQarBs5NdAcAD22sMj 0Nd6l55fPXA7+367QX6XTsLxx/I7bnVpZX6XVI4/lt9xq0sr87ukcvyx/I5bXVqZ3yWV44/ld9zq 0sr8Lqkcfyy/41aXVuZ3SeX4Y/kdt7q0Mr9LKscfy++41aWVI78Ggpe0Djw2Aj1QfbHk7AO81de3 A+T34hjc9EB+N3G9WJzfC5KbHsjvJq4Xi/N7QXLTA/ndxPVicX4vSG56IL+buF4szu8FyU0P5HcT 14vF+b0guemB/G7ierE4vxckNz2Q301cLxaP/BoIvqA69sAI9Fj761WrB25n329/9fl9fQZu/VV+ t4p9vT6/rz1u/VV+t4p9vT6/rz1u/VV+t4p9vT6/rz1u/VV+t4p9vT6/rz1u/VV+t4p9vT6/rz1u /VV+t4p9vT6/rz1u/VV+t4p9vX7k10Dwa6fDvxqBHt7g2cKzD/BWX9/+0vN7dgBEzE+gPavk9wxD xPwE2rNKfs8wRMxPoD2r5PcMQ8T8BNqzSn7PMETMT6A9q+T3DEPE/ATas0p+zzBEzE+gPauM/BoI PkO6JY5Ab9njy9rVA7ez77e/7vy+/PTdP/Nzbl9a+X2RcP/Mz7l9aeX3RcL9Mz/n9qWV3xcJ98/8 nNuXVn5fJNw/83NuX1r5fZFw/8zPuX1p5fdFwv0zP+f2pTXyayD4RejGf45Ab9zm0/KzD/BWX9/+ ovMzJ4VOfliYlJ9Ro5MfFiblZ9To5IeFSfkZNTr5YWFSfkaNTn5YmJSfUaOTHxYm5WfU6OSHhUkj vwaCRnPrjEDNdqsHbmffbzfKz5wUOvlhYVJ+Ro1OfliYlJ9Ro5MfFiblZ9To5IeFSfkZNTr5YWFS fkaNTn5YmJSfUaOTHxYmjfzeffz48Qez4aN3Pnz48PT+/ftHZ9CvPz9N96mYX35zAnPtzl9+cwJz 7c5ffnMCc+3OX35zAnPtzl9+cwJz7c5ffnMCc+3O3338GghK1w6khPtcyy+/OYG5ducvvzmBuXbn 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 1Ojkh4VJ+Rk1OvlhYVJ+Ro1OfliYlJ9Ro5MfFiblZ9To5IeFSSO/BoJGc+uMQM12Zx/grb6+3Sg/ c1Lo5IeFSfkZNTr5YWFSfkaNTn5YmJSfUaOTHxYm5WfU6OSHhUn5GTU6+WFhUn5GjU5+WJg08msg aDS3zgjUbLd64Hb2/Xaj/MxJoZMfFiblZ9To5IeFSfkZNTr5YWFSfkaNTn5YmJSfUaOTHxYm5WfU 6OSHhUn5GTU6+WFh0sivgaDR3DojULPd2Qd4q69vN8rPnBQ6+WFhUn5GjU5+WJiUn1Gjkx8WJuVn 1Ojkh4VJ+Rk1OvlhYVJ+Ro1OfliYlJ9Ro5MfFiaN/BoIGs2tMwI1260euJ19v90oP3NS6OSHhUn5 GTU6+WFhUn5GjU5+WJiUn1Gjkx8WJuVn1Ojkh4VJ+Rk1OvlhYVJ+Ro1OfliYNPJrIGg0t84I1Gx3 9gHe6uvbjfIzJ4VOfliYlJ9Ro5MfFiblZ9To5IeFSfkZNTr5YWFSfkaNTn5YmJSfUaOTHxYm5WfU 6OSHhUkjvwaCRnPrjEDNdqsHbmffbzfKz5wUOvlhYVJ+Ro1OfliYlJ9Ro5MfFiblZ9To5IeFSfkZ NTr5YWFSfkaNTn5YmJSfUaOTHxYmjfwaCBrNrTMCNdudfYC3+vp2o/zMSaGTHxYm5WfU6OSHhUn5 GTU6+WFhUn5GjU5+WJiUn1Gjkx8WJuVn1Ojkh4VJ+Rk1OvlhYdLIr4Gg0dw6I1Cz3eqB29n3243y MyeFTn5YmJSfUaOTHxYm5WfU6OSHhUn5GTU6+WFhUn5GjU5+WJiUn1Gjkx8WJuVn1Ojkh4VJI78G gkZz64xAzXZnH+Ctvr7dKD9zUujkh4VJ+Rk1OvlhYVJ+Ro1OfliYlJ9Ro5MfFiblZ9To5IeFSfkZ NTr5YWFSfkaNTn5YmDTyayBoNLfOCNRst3rgdvb9dqP8zEmhkx8WJuVn1Ojkh4VJ+Rk1OvlhYVJ+ Ro1OfliYlJ9Ro5MfFiblZ9To5IeFSfkZNTr5YWHSyK+BoNHcOiNQs93ZB3irr283ys+cFDr5YWFS fkaNTn5YmJSfUaOTHxYm5WfU6OSHhUn5GTU6+WFhUn5GjU5+WJiUn1Gjkx8WJo38Gggaza0zAjXb rR64nX2/3Sg/c1Lo5IeFSfkZNTr5YWFSfkaNTn5YmJSfUaOTHxYm5WfU6OSHhUn5GTU6+WFhUn5G jU5+WJg08msgaDS3zgjUbHf2Ad7q69uN8jMnhU5+WJiUn1Gjkx8WJuVn1Ojkh4VJ+Rk1OvlhYVJ+ Ro1OfliYlJ9Ro5MfFiblZ9To5IeFSSO/BoJGc+uMQM12qwduZ99vN8rPnBQ6+WFhUn5GjU5+WJiU n1Gjkx8WJuVn1Ojkh4VJ+Rk1OvlhYVJ+Ro1OfliYlJ9Ro5MfFiaN/BoIGs2tMwI12519gLf6+naj /MxJoZMfFiblZ9To5IeFSfkZNTr5YWFSfkaNTn5YmJSfUaOTHxYm5WfU6OSHhUn5GTU6+WFh0sjv 3cePH38wGz5658OHD0/v379/dAb9+vPTdJ+K+eU3JzDX7vzlNycw1+785TcnMNfu/OU3JzDX7vzl Nycw1+785TcnMNfu/N3Hr4GgdO1ASrjPtfzymxOYa3f+8psTmGt3/vKbE5hrd/7ymxOYa3f+8psT mGt3/vKbE5hrd/7ymxOYa4/OX39lWLqO/sil2W71X8k9+367UX7mpNDJDwuT8jNqdPLDwqT8jBqd /LAwKT+jRic/LEzKz6jRyQ8Lk/IzanTyw8Kk/IwanfywMGnk10DQaG6dEajZ7uwDvNXXtxvlZ04K nfywMCk/o0YnPyxMys+o0ckPC5PyM2p08sPCpPyMGp38sDApP6NGJz8sTMrPqNHJDwuTRn4NBI3m 1hmBmu1WD9zOvt9ulJ85KXTyw8Kk/IwanfywMCk/o0YnPyxMys+o0ckPC5PyM2p08sPCpPyMGp38 sDApP6NGJz8sTBr5NRA0mltnBGq2O/sAb/X17Ub5mZNCJz8sTMrPqNHJDwuT8jNqdPLDwqT8jBqd /LAwKT+jRic/LEzKz6jRyQ8Lk/IzanTyw8KkkV8DQaO5dUagZrvVA7ez77cb5WdOCp38sDApP6NG Jz8sTMrPqNHJDwuT8jNqdPLDwqT8jBqd/LAwKT+jRic/LEzKz6jRyQ8Lk0Z+DQSN5tYZgZrtzj7A W319u1F+5qTQyQ8Lk/IzanTyw8Kk/IwanfywMCk/o0YnPyxMys+o0ckPC5PyM2p08sPCpPyMGp38 sDBp5NdA0GhunRGo2W71wO3s++1G+ZmTQic/LEzKz6jRyQ8Lk/IzanTyw8Kk/IwanfywMCk/o0Yn PyxMys+o0ckPC5PyM2p08sPCpJFfA0GjuXVGoGa7sw/wVl/fbpSfOSl08sPCpPyMGp38sDApP6NG Jz8sTMrPqNHJDwuT8jNqdPLDwqT8jBqd/LAwKT+jRic/LEwa+TUQNJpbZwRqtls9cDv7frtRfuak 0MkPC5PyM2p08sPCpPyMGp38sDApP6NGJz8sTMrPqNHJDwuT8jNqdPLDwqT8jBqd/LAwaeTXQNBo bp0RqNnu7AO81de3G+VnTgqd/LAwKT+jRic/LEzKz6jRyQ8Lk/IzanTyw8Kk/IwanfywMCk/o0Yn PyxMys+o0ckPC5NGfg0EjebWGYGa7VYP3M6+326UnzkpdPLDwqT8jBqd/LAwKT+jRic/LEzKz6jR yQ8Lk/IzanTyw8Kk/IwanfywMCk/o0YnPyxMGvk1EDSaW2cEarY7+wBv9fXtRvmZk0InPyxMys+o 0ckPC5PyM2p08sPCpPyMGp38sDApP6NGJz8sTMrPqNHJDwuT8jNqdPLDwqSRXwNBo7l1RqBmu9UD t7PvtxvlZ04KnfywMCk/o0YnPyxMys+o0ckPC5PyM2p08sPCpPyMGp38sDApP6NGJz8sTMrPqNHJ DwuTRn4NBI3m1hmBmu3OPsBbfX27UX7mpNDJDwuT8jNqdPLDwqT8jBqd/LAwKT+jRic/LEzKz6jR yQ8Lk/IzanTyw8Kk/IwanfywMGnk10DQaG6dEajZbvXA7ez77Ub5mZNCJz8sTMrPqNHJDwuT8jNq dPLDwqT8jBqd/LAwKT+jRic/LEzKz6jRyQ8Lk/IzanTyw8KkkV8DQaO5dUagZruzD/BWX99ulJ85 KXTyw8Kk/IwanfywMCk/o0YnPyxMys+o0ckPC5PyM2p08sPCpPyMGp38sDApP6NGJz8sTBr5NRA0 mltnBGq2Wz1wO/t+u1F+5qTQyQ8Lk/IzanTyw8Kk/IwanfywMCk/o0YnPyxMys+o0ckPC5PyM2p0 8sPCpPyMGp38sDBp5NdA0GhunRGo2e7sA7zV17cb5WdOCp38sDApP6NGJz8sTMrPqNHJDwuT8jNq dPLDwqT8jBqd/LAwKT+jRic/LEzKz6jRyQ8Lk0Z+7z5+/PiD2fDROx8+fHh6//79ozPo15+fpvtU zC+/OYG5ducvvzmBuXbnL785gbl25y+/OYG5ducvvzmBuXbnL785gbl25+8+fg0EpWsHUsJ9ruWX 35zAXLvzl9+cwFy785ffnMBcu/OX35zAXLvzl9+cwFy785ffnMBcu/OX35zAXHt0/vorw9J19Ecu zXar/0ru2ffbjfIzJ4VOfliYlJ9Ro5MfFiblZ9To5IeFSfkZNTr5YWFSfkaNTn5YmJSfUaOTHxYm 5WfU6OSHhUkjvwaCRnPrjEDNdmcf4K2+vt0oP3NS6OSHhUn5GTU6+WFhUn5GjU5+WJiUn1Gjkx8W JuVn1Ojkh4VJ+Rk1OvlhYVJ+Ro1OfliYNPJrIGg0t84I1Gy3euB29v12o/zMSaGTHxYm5WfU6OSH hUn5GTU6+WFhUn5GjU5+WJiUn1Gjkx8WJuVn1Ojkh4VJ+Rk1OvlhYdLIr4Gg0dw6I1Cz3dkHeKuv bzfKz5wUOvlhYVJ+Ro1OfliYlJ9Ro5MfFiblZ9To5IeFSfkZNTr5YWFSfkaNTn5YmJSfUaOTHxYm jfwaCBrNrTMCNdutHridfb/dKD9zUujkh4VJ+Rk1OvlhYVJ+Ro1OfliYlJ9Ro5MfFiblZ9To5IeF SfkZNTr5YWFSfkaNTn5YmDTyayBoNLfOCNRsd/YB3urr243yMyeFTn5YmJSfUaOTHxYm5WfU6OSH hUn5GTU6+WFhUn5GjU5+WJiUn1Gjkx8WJuVn1Ojkh4VJI78GgkZz64xAzXarB25n3283ys+cFDr5 YWFSfkaNTn5YmJSfUaOTHxYm5WfU6OSHhUn5GTU6+WFhUn5GjU5+WJiUn1Gjkx8WJo38Gggaza0z AjXbnX2At/r6dqP8zEmhkx8WJuVn1Ojkh4VJ+Rk1OvlhYVJ+Ro1OfliYlJ9Ro5MfFiblZ9To5IeF SfkZNTr5YWHSyK+BoNHcOiNQs93qgdvZ99uN8jMnhU5+WJiUn1Gjkx8WJuVn1Ojkh4VJ+Rk1Ovlh YVJ+Ro1OfliYlJ9Ro5MfFiblZ9To5IeFSSO/BoJGc+uMQM12Zx/grb6+3Sg/c1Lo5IeFSfkZNTr5 YWFSfkaNTn5YmJSfUaOTHxYm5WfU6OSHhUn5GTU6+WFhUn5GjU5+WJg08msgaDS3zgjUbLd64Hb2 /Xaj/MxJoZMfFiblZ9To5IeFSfkZNTr5YWFSfkaNTn5YmJSfUaOTHxYm5WfU6OSHhUn5GTU6+WFh 0sivgaDR3DojULPd2Qd4q69vN8rPnBQ6+WFhUn5GjU5+WJiUn1Gjkx8WJuVn1Ojkh4VJ+Rk1Ovlh YVJ+Ro1OfliYlJ9Ro5MfFiaN/BoIGs2tMwI1260euJ19v90oP3NS6OSHhUn5GTU6+WFhUn5GjU5+ WJiUn1Gjkx8WJuVn1Ojkh4VJ+Rk1OvlhYVJ+Ro1OfliYNPJrIGg0t84I1Gx39gHe6uvbjfIzJ4VO fliYlJ9Ro5MfFiblZ9To5IeFSfkZNTr5YWFSfkaNTn5YmJSfUaOTHxYm5WfU6OSHhUkjvwaCRnPr jEDNdqsHbmffbzfKz5wUOvlhYVJ+Ro1OfliYlJ9Ro5MfFiblZ9To5IeFSfkZNTr5YWFSfkaNTn5Y mJSfUaOTHxYmjfwaCBrNrTMCNdudfYC3+vp2o/zMSaGTHxYm5WfU6OSHhUn5GTU6+WFhUn5GjU5+ WJiUn1Gjkx8WJuVn1Ojkh4VJ+Rk1OvlhYdLIr4Gg0dw6I1Cz3eqB29n3243yMyeFTn5YmJSfUaOT HxYm5WfU6OSHhUn5GTU6+WFhUn5GjU5+WJiUn1Gjkx8WJuVn1Ojkh4VJI78GgkZz64xAzXZnH+Ct vr7dKD9zUujkh4VJ+Rk1OvlhYVJ+Ro1OfliYlJ9Ro5MfFiblZ9To5IeFSfkZNTr5YWFSfkaNTn5Y mDTyayBoNLfOCNRst3rgdvb9dqP8zEmhkx8WJuVn1Ojkh4VJ+Rk1OvlhYVJ+Ro1OfliYlJ9Ro5Mf FiblZ9To5IeFSfkZNTr5YWHSyO/dd99994PZsE4CCSSQQAIJJJBAAgkkkEACCSSQQAIJ/PQE+hOC 8mc2mrCa7c7+J/pWX99ulJ85KXTyw8Kk/IwanfywMCk/o0YnPyxMys+o0ckPC5PyM2p08sPCpPyM Gp38sDApP6NGJz8sTBr5NRA0mltnBGq2Wz1wO/t+u1F+5qTQyQ8Lk/IzanTyw8Kk/IwanfywMCk/ o0YnPyxMys+o0ckPC5PyM2p08sPCpPyMGp38sDBp5NdA0GhunRGo2e7sA7zV17cb5WdOCp38sDAp P6NGJz8sTMrPqNHJDwuT8jNqdPLDwqT8jBqd/LAwKT+jRic/LEzKz6jRyQ8Lk0Z+DQSN5tYZgZrt Vg/czr7fbpSfOSl08sPCpPyMGp38sDApP6NGJz8sTMrPqNHJDwuT8jNqdPLDwqT8jBqd/LAwKT+j Ric/LEwa+TUQNJpbZwRqtjv7AG/19e1G+ZmTQic/LEzKz6jRyQ8Lk/IzanTyw8Kk/IwanfywMCk/ o0YnPyxMys+o0ckPC5PyM2p08sPCpJHf/wMAAP//sV4RJwAAQABJREFU7N0H1CxFmT7wIkpSSSpX UUBXBQVZc/7rMbGuad01sKt4DOC6mBOwmDGLsgqCrsoRMyigGNYAgiiuCbMiKklEr4qKgKh3Redf T0v109Nf10zP03W5fZlnzoHv/brrra7+dc18zUv39AaT+AoDX//3f/9X9bDpppsO7Olv6WPvD6P8 yU9+Enbaaael2N/Sx8N+w6eN598wQ/vZr6+AP//6SnW3s1+3S9+l9usr1d3Oft0ufZfar69Udzv7 dbv0XWq/vlLd7ezX7dJ3qf36SnW3s1+3S9+lV6ffBi4I9j0s0+1cUJj2WPQ3+y0qNt3eftMei/5m v0XFptvbb9pj0d/st6jYdHv7TXss+pv9FhWbbm+/aY9Ff7PfomLT7e037bHob/ZbVGy6vf2mPRb9 zX6Lik23t9+0x6K/5fxcEFxU8qr2OVClu9IV4LH3ByP7KTOFOfajhRLZT1Fjjv1ooUT2U9SYYz9a KJH9FDXm2I8WSmQ/RY059qOFEtlPUWOO/WihRPZT1JhjP1ooUc7PBUFFM+bkQJXuxl7AKz0+GNlP mSnMsR8tlMh+ihpz7EcLJbKfosYc+9FCieynqDHHfrRQIvspasyxHy2UyH6KGnPsRwslsp+ixhz7 0UKJcn4uCCqaMScHqnRXuuA29v5gZD9lpjDHfrRQIvspasyxHy2UyH6KGnPsRwslsp+ixhz70UKJ 7KeoMcd+tFAi+ylqzLEfLZTIfooac+xHCyXK+bkgqGjGnByo0t3YC3ilxwcj+ykzhTn2o4US2U9R Y479aKFE9lPUmGM/WiiR/RQ15tiPFkpkP0WNOfajhRLZT1Fjjv1ooUT2U9SYYz9aKFHOzwVBRTPm 5ECV7koX3MbeH4zsp8wU5tiPFkpkP0WNOfajhRLZT1Fjjv1ooUT2U9SYYz9aKJH9FDXm2I8WSmQ/ RY059qOFEtlPUWOO/WihRDk/FwQVzZiTA1W6G3sBr/T4YGQ/ZaYwx360UCL7KWrMsR8tlMh+ihpz 7EcLJbKfosYc+9FCieynqDHHfrRQIvspasyxHy2UyH6KGnPsRwslyvm5IKhoxpwcqNJd6YLb2PuD kf2UmcIc+9FCieynqDHHfrRQIvspasyxHy2UyH6KGnPsRwslsp+ixhz70UKJ7KeoMcd+tFAi+ylq zLEfLZQo5+eCoKIZc3KgSndjL+CVHh+M7KfMFObYjxZKZD9FjTn2o4US2U9RY479aKFE9lPUmGM/ WiiR/RQ15tiPFkpkP0WNOfajhRLZT1Fjjv1ooUQ5PxcEFc2YkwNVuitdcBt7fzCynzJTmGM/WiiR /RQ15tiPFkpkP0WNOfajhRLZT1Fjjv1ooUT2U9SYYz9aKJH9FDXm2I8WSmQ/RY059qOFEuX8XBBU NGNODlTpbuwFvNLjg5H9lJnCHPvRQonsp6gxx360UCL7KWrMsR8tlMh+ihpz7EcLJbKfosYc+9FC ieynqDHHfrRQIvspasyxHy2UKOfngqCiGXNyoEp3pQtuY+8PRvZTZgpz7EcLJbKfosYc+9FCieyn qDHHfrRQIvspasyxHy2UyH6KGnPsRwslsp+ixhz70UKJ7KeoMcd+tFCinN8Ga9asmSgdLnvO6tWr w6pVq5adQd5/+8l0VaL97DdMYFi255/9hgkMy/b8s98wgWHZnn/2GyYwLNvzz37DBIZle/7Zb5jA sGzPv7Xj54Kg6OoJKcJdlWY/+w0TGJbt+We/YQLDsj3/7DdMYFi255/9hgkMy/b8s98wgWHZnn/2 GyYwLNvzz37DBIZl5+afbxkWXXOXXCrdjf0W39Ljg5H9lJnCHPvRQonsp6gxx360UCL7KWrMsR8t lMh+ihpz7EcLJbKfosYc+9FCieynqDHHfrRQIvspasyxHy2UKOfngqCiGXNyoEp3pQtuY+8PRvZT Zgpz7EcLJbKfosYc+9FCieynqDHHfrRQIvspasyxHy2UyH6KGnPsRwslsp+ixhz70UKJ7KeoMcd+ tFCinJ8LgopmzMmBKt2NvYBXenwwsp8yU5hjP1ookf0UNebYjxZKZD9FjTn2o4US2U9RY479aKFE 9lPUmGM/WiiR/RQ15tiPFkpkP0WNOfajhRLl/FwQVDRjTg5U6a50wW3s/cHIfspMYY79aKFE9lPU mGM/WiiR/RQ15tiPFkpkP0WNOfajhRLZT1Fjjv1ooUT2U9SYYz9aKJH9FDXm2I8WSpTzc0FQ0Yw5 OVClu7EX8EqPD0b2U2YKc+xHCyWyn6LGHPvRQonsp6gxx360UCL7KWrMsR8tlMh+ihpz7EcLJbKf osYc+9FCieynqDHHfrRQopyfC4KKZszJgSrdlS64jb0/GNlPmSnMsR8tlMh+ihpz7EcLJbKfosYc +9FCieynqDHHfrRQIvspasyxHy2UyH6KGnPsRwslsp+ixhz70UKJcn4uCCqaMScHqnQ39gJe6fHB yH7KTGGO/WihRPZT1JhjP1ookf0UNebYjxZKZD9FjTn2o4US2U9RY479aKFE9lPUmGM/WiiR/RQ1 5tiPFkqU83NBUNGMOTlQpbvSBbex9wcj+ykzhTn2o4US2U9RY479aKFE9lPUmGM/WiiR/RQ15tiP FkpkP0WNOfajhRLZT1Fjjv1ooUT2U9SYYz9aKFHOzwVBRTPm5ECV7sZewCs9PhjZT5kpzLEfLZTI fooac+xHCyWyn6LGHPvRQonsp6gxx360UCL7KWrMsR8tlMh+ihpz7EcLJbKfosYc+9FCiXJ+Lggq mjEnB6p0V7rgNvb+YGQ/ZaYwx360UCL7KWrMsR8tlMh+ihpz7EcLJbKfosYc+9FCieynqDHHfrRQ IvspasyxHy2UyH6KGnPsRwslyvm5IKhoxpwcqNLd2At4pccHI/spM4U59qOFEtlPUWOO/WihRPZT 1JhjP1ookf0UNebYjxZKZD9FjTn2o4US2U9RY479aKFE9lPUmGM/WihRzs8FQUUz5uRAle5KF9zG 3h+M7KfMFObYjxZKZD9FjTn2o4US2U9RY479aKFE9lPUmGM/WiiR/RQ15tiPFkpkP0WNOfajhRLZ T1Fjjv1ooUQ5PxcEFc2YkwNVuht7Aa/0+GBkP2WmMMd+tFAi+ylqzLEfLZTIfooac+xHCyWyn6LG HPvRQonsp6gxx360UCL7KWrMsR8tlMh+ihpz7EcLJcr5uSCoaMacHKjSXemC29j7g5H9lJnCHPvR Qonsp6gxx360UCL7KWrMsR8tlMh+ihpz7EcLJbKfosYc+9FCieynqDHHfrRQIvspasyxHy2UKOfn gqCiGXNyoEp3Yy/glR4fjOynzBTm2I8WSmQ/RY059qOFEtlPUWOO/WihRPZT1JhjP1ookf0UNebY jxZKZD9FjTn2o4US2U9RY479aKFEOT8XBBXNmJMDVborXXAbe38wsp8yU5hjP1ookf0UNebYjxZK ZD9FjTn2o4US2U9RY479aKFE9lPUmGM/WiiR/RQ15tiPFkpkP0WNOfajhRLl/FwQVDRjTg5U6W7s BbzS44OR/ZSZwhz70UKJ7KeoMcd+tFAi+ylqzLEfLZTIfooac+xHCyWyn6LGHPvRQonsp6gxx360 UCL7KWrMsR8tlCjn54KgohlzcqBKd6ULbmPvD0b2U2YKc+xHCyWyn6LGHPvRQonsp6gxx360UCL7 KWrMsR8tlMh+ihpz7EcLJbKfosYc+9FCieynqDHHfrRQopzfBmvWrJkoHS57zurVq8OqVauWnUHe f/vJdFWi/ew3TGBYtuef/YYJDMv2/LPfMIFh2Z5/9hsmMCzb889+wwSGZXv+2W+YwLBsz7+14+eC oOjqCSnCXZVmP/sNExiW7flnv2ECw7I9/+w3TGBYtuef/YYJDMv2/LPfMIFh2Z5/9hsmMCzb889+ wwSGZefmn28ZFl1zl1wq3Y39Ft/S44OR/ZSZwhz70UKJ7KeoMcd+tFAi+ylqzLEfLZTIfooac+xH CyWyn6LGHPvRQonsp6gxx360UCL7KWrMsR8tlCjn54KgohlzcqBKd6ULbmPvD0b2U2YKc+xHCyWy n6LGHPvRQonsp6gxx360UCL7KWrMsR8tlMh+ihpz7EcLJbKfosYc+9FCieynqDHHfrRQopyfC4KK ZszJgSrdjb2AV3p8MLKfMlOYYz9aKJH9FDXm2I8WSmQ/RY059qOFEtlPUWOO/WihRPZT1JhjP1oo kf0UNebYjxZKZD9FjTn2o4US5fxcEFQ0Y04OVOmudMFt7P3ByH7KTGGO/WihRPZT1JhjP1ookf0U NebYjxZKZD9FjTn2o4US2U9RY479aKFE9lPUmGM/WiiR/RQ15tiPFkqU83NBUNGMOTlQpbuxF/BK jw9G9lNmCnPsRwslsp+ixhz70UKJ7KeoMcd+tFAi+ylqzLEfLZTIfooac+xHCyWyn6LGHPvRQons p6gxx360UKKcnwuCimbMyYEq3ZUuuI29PxjZT5kpzLEfLZTIfooac+xHCyWyn6LGHPvRQonsp6gx x360UCL7KWrMsR8tlMh+ihpz7EcLJbKfosYc+9FCiXJ+LggqmjEnB6p0N/YCXunxwch+ykxhjv1o oUT2U9SYYz9aKJH9FDXm2I8WSmQ/RY059qOFEtlPUWOO/WihRPZT1JhjP1ookf0UNebYjxZKlPNz QVDRjDk5UKW70gW3sfcHI/spM4U59qOFEtlPUWOO/WihRPZT1JhjP1ookf0UNebYjxZKZD9FjTn2 o4US2U9RY479aKFE9lPUmGM/WihRzs8FQUUz5uRAle7GXsArPT4Y2U+ZKcyxHy2UyH6KGnPsRwsl sp+ixhz70UKJ7KeoMcd+tFAi+ylqzLEfLZTIfooac+xHCyWyn6LGHPvRQolyfi4IKpoxJweqdFe6 4Db2/mBkP2WmMMd+tFAi+ylqzLEfLZTIfooac+xHCyWyn6LGHPvRQonsp6gxx360UCL7KWrMsR8t lMh+ihpz7EcLJcr5uSCoaMacHKjS3dgLeKXHByP7KTOFOfajhRLZT1Fjjv1ooUT2U9SYYz9aKJH9 FDXm2I8WSmQ/RY059qOFEtlPUWOO/WihRPZT1JhjP1ooUc7PBUFFM+bkQJXuShfcxt4fjOynzBTm 2I8WSmQ/RY059qOFEtlPUWOO/WihRPZT1JhjP1ookf0UNebYjxZKZD9FjTn2o4US2U9RY479aKFE OT8XBBXNmJMDVbobewGv9PhgZD9lpjDHfrRQIvspasyxHy2UyH6KGnPsRwslsp+ixhz70UKJ7Keo Mcd+tFAi+ylqzLEfLZTIfooac+xHCyXK+bkgqGjGnByo0l3pgtvY+4OR/ZSZwhz70UKJ7KeoMcd+ tFAi+ylqzLEfLZTIfooac+xHCyWyn6LGHPvRQonsp6gxx360UCL7KWrMsR8tlCjn54KgohlzcqBK d2Mv4JUeH4zsp8wU5tiPFkpkP0WNOfajhRLZT1Fjjv1ooUT2U9SYYz9aKJH9FDXm2I8WSmQ/RY05 9qOFEtlPUWOO/WihRDk/FwQVzZiTA1W6K11wG3t/MLKfMlOYYz9aKJH9FDXm2I8WSmQ/RY059qOF EtlPUWOO/WihRPZT1JhjP1ookf0UNebYjxZKZD9FjTn2o4US5fxcEFQ0Y04OVOlu7AW80uODkf2U mcIc+9FCieynqDHHfrRQIvspasyxHy2UyH6KGnPsRwslsp+ixhz70UKJ7KeoMcd+tFAi+ylqzLEf LZQo5+eCoKIZc3KgSnelC25j7w9G9lNmCnPsRwslsp+ixhz70UKJ7KeoMcd+tFAi+ylqzLEfLZTI fooac+xHCyWyn6LGHPvRQonsp6gxx360UKKc3wZr1qyZKB0ue87q1avDqlWrlp1B3n/7yXRVov3s N0xgWLbnn/2GCQzL9vyz3zCBYdmef/YbJjAs2/PPfsMEhmV7/tlvmMCwbM+/tePngqDo6gkpwl2V Zj/7DRMYlu35Z79hAsOyPf/sN0xgWLbnn/2GCQzL9vyz3zCBYdmef/YbJjAs2/PPfsMEhmXn5p9v GRZdc5dcKt2N/Rbf0uODkf2UmcIc+9FCieynqDHHfrRQIvspasyxHy2UyH6KGnPsRwslsp+ixhz7 0UKJ7KeoMcd+tFAi+ylqzLEfLZQo5+eCoKIZc3KgSnelC25j7w9G9lNmCnPsRwslsp+ixhz70UKJ 7KeoMcd+tFAi+ylqzLEfLZTIfooac+xHCyWyn6LGHPvRQonsp6gxx360UKKcnwuCimbMyYEq3Y29 gFd6fDCynzJTmGM/WiiR/RQ15tiPFkpkP0WNOfajhRLZT1Fjjv1ooUT2U9SYYz9aKJH9FDXm2I8W SmQ/RY059qOFEuX8XBBUNGNODlTprnTBbez9wch+ykxhjv1ooUT2U9SYYz9aKJH9FDXm2I8WSmQ/ RY059qOFEtlPUWOO/WihRPZT1JhjP1ookf0UNebYjxZKlPNzQVDRjDk5UKW7sRfwSo8PRvZTZgpz 7EcLJbKfosYc+9FCieynqDHHfrRQIvspasyxHy2UyH6KGnPsRwslsp+ixhz70UKJ7KeoMcd+tFCi nJ8LgopmzMmBKt2VLriNvT8Y2U+ZKcyxHy2UyH6KGnPsRwslsp+ixhz70UKJ7KeoMcd+tFAi+ylq zLEfLZTIfooac+xHCyWyn6LGHPvRQolyfi4IKpoxJweqdDf2Al7p8cHIfspMYY79aKFE9lPUmGM/ WiiR/RQ15tiPFkpkP0WNOfajhRLZT1Fjjv1ooUT2U9SYYz9aKJH9FDXm2I8WSpTzc0FQ0Yw5OVCl u9IFt7H3ByP7KTOFOfajhRLZT1Fjjv1ooUT2U9SYYz9aKJH9FDXm2I8WSmQ/RY059qOFEtlPUWOO /WihRPZT1JhjP1ooUc7PBUFFM+bkQJXuxl7AKz0+GNlPmSnMsR8tlMh+ihpz7EcLJbKfosYc+9FC ieynqDHHfrRQIvspasyxHy2UyH6KGnPsRwslsp+ixhz70UKJcn4uCCqaMScHqnRXuuA29v5gZD9l pjDHfrRQIvspasyxHy2UyH6KGnPsRwslsp+ixhz70UKJ7KeoMcd+tFAi+ylqzLEfLZTIfooac+xH CyXK+bkgqGjGnByo0t3YC3ilxwcj+ykzhTn2o4US2U9RY479aKFE9lPUmGM/WiiR/RQ15tiPFkpk P0WNOfajhRLZT1Fjjv1ooUT2U9SYYz9aKFHOzwVBRTPm5ECV7koX3MbeH4zsp8wU5tiPFkpkP0WN OfajhRLZT1Fjjv1ooUT2U9SYYz9aKJH9FDXm2I8WSmQ/RY059qOFEtlPUWOO/WihRDk/FwQVzZiT A1W6G3sBr/T4YGQ/ZaYwx360UCL7KWrMsR8tlMh+ihpz7EcLJbKfosYc+9FCieynqDHHfrRQIvsp asyxHy2UyH6KGnPsRwslyvm5IKhoxpwcqNJd6YLb2PuDkf2UmcIc+9FCieynqDHHfrRQIvspasyx Hy2UyH6KGnPsRwslsp+ixhz70UKJ7KeoMcd+tFAi+ylqzLEfLZQo5+eCoKIZc3KgSndjL+CVHh+M 7KfMFObYjxZKZD9FjTn2o4US2U9RY479aKFE9lPUmGM/WiiR/RQ15tiPFkpkP0WNOfajhRLZT1Fj jv1ooUQ5PxcEFc2YkwNVuitdcBt7fzCynzJTmGM/WiiR/RQ15tiPFkpkP0WNOfajhRLZT1Fjjv1o oUT2U9SYYz9aKJH9FDXm2I8WSmQ/RY059qOFEuX8XBBUNGNODlTpbuwFvNLjg5H9lJnCHPvRQons p6gxx360UCL7KWrMsR8tlMh+ihpz7EcLJbKfosYc+9FCieynqDHHfrRQIvspasyxHy2UKOfngqCi GXNyoEp3pQtuY+8PRvZTZgpz7EcLJbKfosYc+9FCieynqDHHfrRQIvspasyxHy2UyH6KGnPsRwsl sp+ixhz70UKJ7KeoMcd+tFCinJ8LgopmzMmBKt2NvYBXenwwsp8yU5hjP1ookf0UNebYjxZKZD9F jTn2o4US2U9RY479aKFE9lPUmGM/WiiR/RQ15tiPFkpkP0WNOfajhRLl/Da44IILJkqHzrGABSxg AQtYwAIWsIAFLGABC1jAAhawgAXWPwFfISges1yFVemu9BV4Y+8PRvZTZgpz7EcLJbKfosYc+9FC ieynqDHHfrRQIvspasyxHy2UyH6KGnPsRwslsp+ixhz70UKJ7KeoMcd+tFCinJ8LgopmzMmBKt2N vYBXenwwsp8yU5hjP1ookf0UNebYjxZKZD9FjTn2o4US2U9RY479aKFE9lPUmGM/WiiR/RQ15tiP FkpkP0WNOfajhRLl/FwQVDRjTg5U6a50wW3s/cHIfspMYY79aKFE9lPUmGM/WiiR/RQ15tiPFkpk P0WNOfajhRLZT1Fjjv1ooUT2U9SYYz9aKJH9FDXm2I8WSpTzc0FQ0Yw5OVClu7EX8EqPD0b2U2YK c+xHCyWyn6LGHPvRQonsp6gxx360UCL7KWrMsR8tlMh+ihpz7EcLJbKfosYc+9FCieynqDHHfrRQ opyfC4KKZszJgSrdlS64jb0/GNlPmSnMsR8tlMh+ihpz7EcLJbKfosYc+9FCieynqDHHfrRQIvsp asyxHy2UyH6KGnPsRwslsp+ixhz70UKJcn4uCCqaMScHqnQ39gJe6fHByH7KTGGO/WihRPZT1Jhj P1ookf0UNebYjxZKZD9FjTn2o4US2U9RY479aKFE9lPUmGM/WiiR/RQ15tiPFkqU83NBUNGMOTlQ pbvSBbex9wcj+ykzhTn2o4US2U9RY479aKFE9lPUmGM/WiiR/RQ15tiPFkpkP0WNOfajhRLZT1Fj jv1ooUT2U9SYYz9aKFHOzwVBRTPm5ECV7sZewCs9PhjZT5kpzLEfLZTIfooac+xHCyWyn6LGHPvR Qonsp6gxx360UCL7KWrMsR8tlMh+ihpz7EcLJbKfosYc+9FCiXJ+LggqmjEnB6p0V7rgNvb+YGQ/ ZaYwx360UCL7KWrMsR8tlMh+ihpz7EcLJbKfosYc+9FCieynqDHHfrRQIvspasyxHy2UyH6KGnPs Rwslyvm5IKhoxpwcqNLd2At4pccHI/spM4U59qOFEtlPUWOO/WihRPZT1JhjP1ookf0UNebYjxZK ZD9FjTn2o4US2U9RY479aKFE9lPUmGM/WihRzs8FQUUz5uRAle5KF9zG3h+M7KfMFObYjxZKZD9F jTn2o4US2U9RY479aKFE9lPUmGM/WiiR/RQ15tiPFkpkP0WNOfajhRLZT1Fjjv1ooUQ5PxcEFc2Y kwNVuht7Aa/0+GBkP2WmMMd+tFAi+ylqzLEfLZRobfodddRR4Rvf+Ea49rWv3Tm0K664Imy//fbh IQ95SLjrXe861eaiiy4KBx98cPjrX/8aXvOa14Qdd9xxar3yi/9+KGrMsR8tlMh+ihpz7EcLJbKf osYc+9FCieynqDHHfrRQIvspasy5Ov1cEKT7QtHa/A+6hQbS0bj0BCrdH4Zsv44Dt8Ai+y2A1dHU fh0oCyyy3wJYHU3Xpt9Tn/rUgKJgn9eDHvSg8L73vS9c97rXrZqfffbZYbfddqvir33ta+EOd7hD n25mtvHfj5k8c1euS7/JZBLe8573hMsuuyzc+c53Dne84x1XjLdrfJhHp5xySthss83CPvvsE651 rWutyMst6Oov17bP8tL9YZvt9+81eX+vDr8+xzHXpvT4xt5f1/zL2fRZPvb9LT0++/WZFbPbtD// Zreevbb08R17f9Cw3+w5MW+t/eYJzV6f83NBcLZbdm0ONJswY8XYP8BKjw8U9psxIXqssl8PpBlN 7DcDp8cq+/VAmtFkbfo94xnPCEcccUR1heATnvCEsOGGG06N5Mtf/nLAP+n1pCc9Kbz97W8PG2yw Qfjxj38cbnGLW1SrXBBMQov9LP33snR/2Ju+8w9Xk97mNrcJ5513XjjssMPCs5/97BUYXeNDkfmx j31suP71rx9QLNtmm21W5OUWdPWXa9tneen+sM223zV5f68Ovz7HMdem9PjG3l/X/MvZ9Fk+9v0t PT779ZkVs9u0P/9mt569tvTxHXt/0LDf7Dkxb6395gnNXp/zc0Fwtlt2bQ40mzBjxdg/wEqPDxT2 mzEheqyyXw+kGU3sNwOnxyr79UCa0WRt+qWC4N577x3e//73V4W+9lBwS/Htb3/7evEPf/jDqhDo gmBNIgel/16W7g871nf+/elPf6quDPzOd75TFY333XffFS5d4zv++OPDIx/5yKUpCF6T97fr+K6Y BAsu6Dv/+nRbenxj7w8m9uszM/Jt7Je36bPGfn2U8m3sl7fps8Z+fZTybXJ+LgjmzWauyYHOTMqs HPsJSOnxgcF+mcnQc7H9ekJlmtkvA9Nzsf16QmWarU2/VBDEdwR++MMfDhtttFHnKFAsfMxjHlOt S1cDzisI4m/B+eefH373u9+FK6+8MmyxxRZhl112CVtvvXXnNrAQOfhuQlxlhivFfvvb34Zdd901 3PjGN87m/PGPfww/+tGPwqabblp9n+F2220Xdthhh7r9PL8//OEPAbe74rXlllvWeQjQN74jES+s a/59Q/znP/+5XlcFjX+hcIq+MS7k7rTTTisKrs3+GqnVdrAOV2K2x/SXv/ylHhdMN9544zoV48WV eptvvvmKPDT66U9/Gn7+859XxwPjgmvTKnWEbaPAhza//OUvw6pVq+pjuckmm1T7Auf0wpjQ7p73 vGd17F796leHZz3rWdXYmuNr7y/mBa443X///auCIK5GvcENblDNldQ3fuI25G9+85vV/ETOda5z nbDHHnvUxw3jXOR1+eWXh5/97GeVE/JwbPBqj69a2PgX5tkFF1wQsO+XXnppdcs8bGa9mvOv7/5i HCisYr9xKzXm561vfevaZdH9zY1v3v7m8nLLS/eH7TT9ctvtu7z0+Mben/36zox8O8+/vE2fNfbr o5RvY7+8TZ819uujlG+T9YsnJYNfa9asmeCfUq+x94f9jCeQpXa3srOfzjn2+VJ6fJ5/+lxJmX7/ Jgntp/00t5S1Nv2e/vSnoxI2iQXBSSzqpE2u+Pn617++aoe2sSBYrY/FkRXLsCIW0CbHHHNMvQ45 zX+wzVgkXLGNWMiaxO80nGqb8uIVZJOLL754RU4sYna232uvvSbnnHNO1X6WH/b57ne/e9VHvP15 Egt89Tbif+xP4i2w1br40JXJ6tWrp/7+vvOd76zWxVtdJ7FwWefFQs7kVre61Ypxod3nPve5uh2C 3Of9q171qnq7F1544VTOgQceWPf92c9+dmrdV7/61XpdOk5o8IUvfKFzTPCFVbxVd6qfeFtr1c+j HvWoSSwGTzD2dCzSz4MOOmgSC1xVXppHaV36+eY3v3mq3+b+4vikds2fbc93v/vd2Xaf+cxnFj6f 7Jqbd7nLXSbxyr16P7/3ve9NjTsWUSf3v//9O8cRi+qTWBycat/8Jc2/vvv7la98pR5H0wVxvL1/ Eou+ze4Hxc3jMaijq5JL94duk98Yx1d6f0v3Z7/hs8bzb5ih/ezXV8Cff32luttdnX74v5SDX6UH PPb+AOYPxGHTxn726ytQ+vMA2/X866vf3c5+3S59l65Nv1TIQUEwFXe6xnX00UfXxZB4FVfVJFcQ /NCHPlS3RREDRbXb3e52U8uwvWbxDQWVVHxLRZB2UQ2Fu2bOK1/5yqk+U176iSLeWWedNff9G69m q/pBIQqFn/SKV9NN9Y/iW/p8QdEzPgCjWo+iWbJDgSptP/fzhBNOSJuo+6sXXBWgcJjym0U/FCnj wzrqdTBovv77v/+7WtcsqjWPE/qECwpgqX/8RHsUPNOrfQybbZtxvLqvSknzqLkO8ayCYLzCdGoM Kbc59he96EVTbVC8bI/9rW99axr2zJ84Zu3+0jbbP5vF1PY44Ydj3syJT9ieKgo3B5Lev+1+Un5z fz/+8Y9P9Yv3RHyYz9Syxz/+8fV8a25HidN8VnK7ckr3h20kv67tLbqs9PjG3p/9Fp0hK9t7/q00 WWSJ/RbRWtnWfitNFlliv0W0VrbN+W2AP37xJMavBQXiiXZ1y82CaW5+lYD9hk0F+9lvmMCwbM+/ 8fo95znPCUceeWTAE4RjoWrFLa0YeSxOhViIqXYiFi/Cl770pRALICFe8VTdxogV//u//1t9z2A8 Rwj3uc99wplnnlndAvrJT34y7L777lUu5sG///u/h09/+tPVOtwSmR4g8YY3vCEcfPDBVbvHPe5x Abecbr/99iFeFRgwxg9+8IPVulgcC/e4xz1CvOIt3O9+96uW3ehGNwof/ehHq+1g+295y1tCvIqu Wnfzm988YAyzbjnG/tz73veu2mNszfihD31otRz/OuSQQ+p+L7nkknDXu961uo02Fkurh2Lgltmb 3OQmdftPfOITVV+4Zfbkk08OD37wg6t1saAUvv/971e3xtaNW8Gvf/3rcNvb3jb86le/mtoubnO9 6U1vWre+293uVvWNbcRTufCv//qv1a3fsWhUOeAhMS94wQtCvMKzyomFvoDbw3ErMm5nftOb3hRe +tKXVutgeqc73amKTzzxxKqv6pf4r8MPPzw8+tGPDltttVV1LPAAGrwwb/CdeLgVFmPGscdt4i9/ +ctDLBIG3F7cvGW4Smr8C7clxysAq7aYW5hr17ve9apbgpvHBccYhje72c2q7NNPPz084AEPqGJ4 4nbiWccYDc8444xw3/vet8rBrevHHXdcuOUtb1mN+z//8z/rOYYGaT7DFHMf28ML8xS3N8MVt/Pi tmg8JAQv9JEsqwVX/av5+Tdrf5vHHKmYP2mOx5Py8E//9E/hBz/4QdXrxz72sXr/r9rMNfZH0+8a u5NrccfsNwzXfvYbJjAs2/PPfsMEhmXn5p8LgqJrDlTsbunS7DfskNvPfsMEhmV7/o3XLxUEMcKu pwyj8ICiVHo1i2JdBUF8fx0eQIKi0Hve854Qr6RKqdXPc889N8Qr/6YKgs1CCAo1KO7gO/DSC+tR EMLrta99bXjmM58ZHvjAB4bTTjut6gftUTxsvtDuxS9+cbUIRSYU73KvZnGvuX8oar3iFa+o05rF NxQ84xWL1bp4e2lA4TFeDRee+9znVstS4bJOjgGW/eM//mO16Nhjjw0Pf/jDm6un4mZxDwVQFCpR WMPPZpESRTSMBd+719yP9773vdWDOtApvvsRRTs8Ifqoo46a2g4KVPGKu6rQlIpgaNAsCMISha/0 wtie/OQnV4U8mKDgiu+5Q18Y63e/+92qGPnEJz4xpcz8mbaFfUlFYmwDDxrB/EPBD/u48847T/Xz +c9/PsTbeKtlKGw+5SlPmVrf/AXfA4m5mPr71re+VRW1UxsUNHFsUuEvWeD7MrFPeKGwmuZUM2+/ /farHsjTHH9aj5/tz7+u/UW7t73tbVVhFDG+zzPNFfyOF4rBKGjivYVCLIq7ue/8/FvGNePfbb9r xl5dfXthv2HW9rPfMIFh2Z5/9hsmMCw7O//iSdrg19gvsS89PoDlLrlUMEuPb+z92U+ZJdM5nn/T Hov+Zr9Fxabb22/aY9Hf1qZf7lbPeAoxdZsifkfb5i27zVtRm7dY4rbb+GCQ6rsE074iD98b+LrX va7qNxZP6lssm/3EQtmK74RL30l46KGHTr74xS9OmrfyHnbYYWkTUz9j0aQe/7xbStE/bsPEPsaH YlT72Lw1N926jDHj+/zwNzMW1qr2+N5BtG22Rx9d38eINqmv5z//+dV4Z/39jQXV2iqelFXtX/KS l1TLcNtqOkbpluL0/YFYFx/KUnvg+w1hFq8IrJfhFmd8Z2PzFtXmMUy3DGOfv/3tb9d5KUjfMdg8 jvhuu3Tbd/tW4ZTXtb/NbaXvYkRfyeppT3taSp/6Cc/4YJHKYd4t783+cnPmlFNOqU2TRRobrDFP u164BTwdi5TXbNd+/6Y+m3ZoH688rPqJV4BOHatmX+k7Ntu5zTaLxF3HY5H8dtvS/aH/tl97m4v8 Xnp8Y+/PfovMju62nn/dLn2X2q+vVHc7+3W79F1qv75S3e1yfv4OwW6vuUtzoHMTOxqM/QSk9PhA YL+OibDAIvstgNXR1H4dKAssst8CWB1N16ZfKgiiiPSyl71sEq+Qm/rnhS984SReKTeJV1StGFmz kNcuhKAg9Y53vGMSr9pa8Z1vKJ40CxonnXTSVEEFf0NmvZrbRV/4Prf2P83vmcM+zXs1izTx1t/q +/TSOOPVaXVxKl6hN4lXwk0e9rCHVWOOV4xVXf/+97+v2yAPD0Fpj6n5XXCpgDXr72VzP+PVcFWR MX1/YLwqr7LFttL3CL7xjW+sxhSv2psq3GKAKLTF264n8YrQSby6svZGfvqneQyTB8aMh2G0X2l9 8ziWLAg2H8ARbwdvb776HYVczC+MH9ZdRdiU2Cwi54qVzW0mCxRu0T8Kv82CauoXP/E9lV2GqU37 /TvP7oADDkipK36+613vqrbVdF/RaIEFs+bfAt3UTUv3h47bfvXGhKD0+Mben/2ESdJK8fxrgSz4 q/0WBGs1t18LZMFf7bcgWKt5zs8FwRZU319zoH3zm+3GfgJSenzYd/s1Z8Disf0WN2tm2K+psXhs v8XNmhlr0y8VBPfee++pK/qa28/FzYJVKqCgbfOJxKlQ0v7ZLGikAgnaxFs1V1wh2N5+c7vtfrt+ 71MQbF5RiCvt4q2jVeElPcgEBSf0jeJovIW6fgosCnV4NYthXWNoL0tXEc76e4k+UwEQV7Vhu+gH xVsULdNTjtNVjfH7+6r1uAqz+erzoBP02zyG6Zhgv5tXG6Z+0/rmcWwa5IpuXfvb1VfzGHcVo9M4 0hVzKLDOKgg2+2vuZ+oHP3H1aTpOqU26ag/vj1z/8/puv3+79hd26YrI9KCW5thS/IEPfKAaY9M9 rVN+dh0PpZ+UU7o/9Nv2S9tSfpYe39j7s58yS6ZzPP+mPRb9zX6Lik23t9+0x6K/2W9Rsen2OT8X BKedev+WA+3dQaPh2E9ASo8Pu26/xgQQQvsJaI0U+zUwhNB+AlojZW36pYJgumKtsdm5YVchJH5f X11UQXHlNa95zSQ+HGKCJ6ziCquU0yxopNtP0R5PMMbfkK5Xul059YH28SEPk/ighck3vvGNqX/i 99hVy7Gu65bXdv/oG8U/9HnEEUfURc10BWAqvj3iEY+Y4CpBtGvuQ7MYhqsD40NDqqsqm+OK349X jwlXrOE17+9lukUYhbn4kIlqu6lIGb87sR7HV77ylQluNcW4UFRNL9xqjGXpH9x+i1uMcVXbb37z mwmubEy3+aYiGHJT0QrzYl0UBHHc0phT0TXtU/qJKwTj9yNW7ebN3+acSbdYp37Sz2ZRGBboP37v YtV/Krqmts2fOMZprE3D1Kb9/k22zfnTvMIUczr36nqKdK5tn+Xz5l+fPpptSveHvtt+ze0tGpce 39j7s9+iM2Rle8+/lSaLLLHfIlor29pvpckiS+y3iNbKtjk/FwRXWvVakgPtldxqNPYTkNLjw+7b rzUJFvzVfguCtZrbrwWy4K/2WxCs1Xxt+jULgrkroFrDqX9tFllSISQVsHAVG4pi7Ve6PbhZDGkW VOLDFFYUBJvfz4erp5rbzV2Jhu/Hw5Vx+Cc+9KM9jM7f48Mz6sJOKvDge+XwQjEvLUs/m1eNNQs6 s65WQzEKBUV8FyFe8/5eNq9aS9tNRcpLL720LgKmdfHhK5P4EJaqb/wrFRGxHleXtV/tIlhan4pW 66og2Ny3tL9pbOlnfAJ1faUmCp0o4OVezeOTbrFut8Ut1ckxzedUCMZ8xndjdr1w9WbKw9xsv9rv 32TbfA9g7Ol7LFPBt90P3p/3ute9qm3N+p7Bdt6s3+fNv1m5XetK94dttP26ttt3Wenxjb0/+/Wd Gfl2nn95mz5r7NdHKd/GfnmbPmvs10cp3ybn54Jg3mzmmhzozKTMyrGfgJQeHxjsl5kMPRfbrydU ppn9MjA9F9uvJ1Sm2dr0K1kQbF5RhWIHijDNFwoa++yzT1XQ2HHHHSco+uDVvIotPtG1ethFMy89 LCMVtZpX46EwctlllzWbVzEeJJKKNPi+vT6v5naQi31IRaBmQSn12y6wJUus7yqGNvuPT5SthjTv 7yW++w/jSNvEz3SFW7OIlNbjijZ8x2F6Na++xBWF7Re+5zHlNm/NTUUrtSCYu+21a3/TtppzolkE xv7jdun26+ijj67HPu8YN+cM+kMxsfmCc7rCEh6pIHjyySfX2+h6GEkzD98zmK5ibfbdfv927S/a p2I6tt91VWSzcJ4rkja32yfuOh598nJtSveH7bT9ctvus7z0+Mben/36zIrZbTz/ZvvMW2u/eUKz 19tvts+8tfabJzR7fc7PBcHZbtm1OdBswowVYz8BKT0+UNhvxoToscp+PZBmNLHfDJweq+zXA2lG k7Xpl4pYs65qyw2teaVeKqA0r5Y67rjj6gIJ2uKKulR8ws/mrbwHHnhgvQ7fC5eKheg3FcRwlVa6 si5duYV+8OALfKceXiiGodiWtoNbPbseitG1T82r0pDfvFKrWexMfZ977rlT3TSvIsSYUcBJLxTx Uh7WpacGz/t72S76NXPRd7Pgh/5PPPHEqSssm1cYwji5wgu3c6cx4SeeapxeqWilFgRxizOKqc3i JPru2t+0LYwBV0/iadR4NZejWNd8H2A/09h32WWX7AM/qo6u+lfTCv3hytHLL798gkJt+v6+1Gea z81CItahgJqupEWRsvmAlnaBOG27OW4sa+5Xc3+b7yfM9TPOOCN1UV2hmt4HGMcPf/jDet2QoOt4 jKk/jKXtN6bx2W/I0ej+PBjSY+njgbF4/g05IvYbpmc/+/UXuDo//1wQ7H9cplr6D8oUx8K/2G9h sqkE+01xLPyL/RYmm0qw3xTHwr+sTb9mQfDKK69caGzNAkYqoDS/+y0VV2b9xFNT8cKVVu2iTDuv edUZCk3Np/aibfouvJSHogrG2NcPxbf0EAn00b61tHlLae5qMHz/W9p+15iw7IQTTqid+5zANQtZ 7e+ya3pjf1GkRJ/p1XVlY3N87TjdBp2KVosUBNvFS/TdvqW7a3+b+4AcFL4wH3C1XXqac3uczd9P O+20tLszf6K/xz72sVPHp9lPM07zGR2iMNdc1xWjANp1dSDy2/Mvt79oe+SRR87d1pve9CY0LfLq Oh5DOi7dH8bS9hvT+Ervb+n+7Ddktvwt1/NvmKH97NdXwJ9/faW6212dfi4Idh+DuUv9gTiXaGYD +83kmbvSfnOJZjaw30yeuSvtN5doZoO16ff85z+/KkCkQtDMgbRW4kEhqTjSvEX21FNPrZen9fh5 0EEHVVd/NYtueCJxeuHW3yc84QkrclEg+vjHP56a1T9RgDn00ENXtMe28HTedGXgIn7pOw7RR/u2 zWYBdNaDH/A9iM39TjH2AzbNV58TuOb3/LW327yCDcU7fHci+my+kN9VbP2Xf/mXyUUXXVRdGZjG iIIjCsNpHzAvuh4qkpzat2y3i2d9CoIo7u633361WSoIYh9mHWPcYozboNv729z3doyi5fHHH19f dZr2G3PzC1/4QrUc22/fooyrP5u3FKc8/MR3T84qprfn36z9xXg/+tGP1hbN7SD+yEc+stD+tve/ /Xuf+dfOmfV76f6wrbbfrO3PW1d6fGPvz37zZsT89Z5/841mtbDfLJ356+w332hWC/vN0pm/Lue3 AVLjScmgV/xumCp/0003HdRPSh57fxjnT37yk7DTTjulIQ/6Ofb9LT0++w2aLlWy598wQ/vZr6+A P//+JhULVSHe1hjifzCHLbbYItz4xjcOW2+9dc0Yb/0NG220Udhuu+3CZpttVi+H3y9+8YsQb22t lsWr3kIs/ISNN964btMOLrnkkhCLfwG5m2++ebjhDW8Ydthhh7rZunj/Yv9jATHEK/TCJptsEmKR qToH2GCDDepxISg9X2b1F58sHOItstV42kbxFuYQi2Vhq622Cte97nWnxrioH8aA/d5www2r/prH btb4cMzj7bgB54YYR/MVv/MvYPyYM7DF8d19991DLBhWzfqeT6J/9IFXLEDjf3JXcwb5sQAc4kM7 qmN19tlnh2222aZql/6FXCyPxcKA44jcPfbYI2y//fapSefPnN+s/Y1P5A6xyF45olPM6z333LMe e9/97RxQY+Gs49Fo1jss3R82nPPrPahGw9LjG3t/9mscfDH0/BPhrkqzn/36CpT+PMV2Pf/66ne3 y/m5INjtNXdpDnRuYkeD0m+YsfcHAvt1TIQFFtlvAayOpvbrQFlgkf0WwOpoar8OlAUW2W8BrI6m 1xS/Aw44IMQrSkO8CjLEKzWniswo7sUnFYejjjoq3PzmNw/x+y2rIlwHx8KLril+fXa89Pkktmm/ PvL5NvbL2/RZY78+Svk29svb9Fljvz5K+Tb2y9v0WZPzc0Gwj15HmxxoR9O5i0qfcI29P4DYb+60 mNnAfjN55q6031yimQ3sN5Nn7kr7zSWa2cB+M3nmrrym+B1yyCEhPsm32t/48Juw7777BlyBGr+v MMQnFgcUDPF6xSteEV7wghdUcYl/XVP8+liUPp/ENu3XRz7fxn55mz5r7NdHKd/GfnmbPmvs10cp 38Z+eZs+a3J+Lgj20etokwPtaDp3UekTrrH3BxD7zZ0WMxvYbybP3JX2m0s0s4H9ZvLMXWm/uUQz G9hvJs/cldcUv/h9idWt67N2OD6xOJx55plh2223ndVsoXXXFL8+O136fBLbtF8f+Xwb++Vt+qyx Xx+lfBv75W36rLFfH6V8G/vlbfqsyfm5INhHr6NNDrSj6dxFpU+4xt4fQOw3d1rMbGC/mTxzV9pv LtHMBvabyTN3pf3mEs1sYL+ZPHNXXpP84gNWAq4UPOaYY1bs94EHHhie9axnVcXAUt/Rh41ck/xW oLUWlD6ftF8LWPjV809Aa6TYr4EhhPYT0Bop9mtgCKH9BLRGSs7PBcEG0iJhDnSRPlLb0idcY+8P +22/dPS1n/bT3FKW/ZKE9tN+mlvKsl+S0H7aT3NLWddEPzxQBA8qwXcHoviHh77g4Talz4dgeE30 S3Oj/dN+bZHFfrffYl7t1vZriyz2u/0W82q3tl9bZLHf7beYV7v11enngmBbv+fvPiHsCZVpZr8M TM/F9usJlWlmvwxMz8X26wmVaWa/DEzPxfbrCZVpZr8MTM/F9usJlWlmvwxMz8X26wmVaWa/DEzP xfbrCZVpZr8MTM/F9usJlWmW83NBMAM2b3EOdF5e1/rSFeCx9wcD+3XNhP7L7Nffqqul/bpU+i+z X3+rrpb261Lpv8x+/a26WtqvS6X/Mvv1t+pqab8ulf7L7Nffqqul/bpU+i+zX3+rrpb261Lpv8x+ /a26Wub8XBDs0uqxLAfaI3VFk7EX8EqPDwD2WzENFlpgv4W4VjS23wqShRbYbyGuFY3tt4JkoQX2 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 8fv/LUz6Nrha+o0AAAAASUVORK5CYII= --00000000000053c198056b687e7a-- --00000000000053c199056b687e7b Content-Type: application/octet-stream; name="0001-Change-the-order-of-the-shims-on-the-shim-file.patch" Content-Disposition: attachment; filename="0001-Change-the-order-of-the-shims-on-the-shim-file.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_jgsi9o6p0 ZGlmZiAtLWdpdCBhL3dlYi93ZWJwYWNrLnNoaW0uanMgYi93ZWIvd2VicGFjay5zaGltLmpzCmlu ZGV4IDFiNjQ0MmE2Li40ODdkNzNjYiAxMDA2NDQKLS0tIGEvd2ViL3dlYnBhY2suc2hpbS5qcwor KysgYi93ZWIvd2VicGFjay5zaGltLmpzCkBAIC0xMjksNiArMTI5LDcgQEAgdmFyIHdlYnBhY2tT aGltQ29uZmlnID0gewogICAgICdzb3VyY2VzL2dldHRleHQnOiBwYXRoLmpvaW4oX19kaXJuYW1l LCAnLi9wZ2FkbWluL3N0YXRpYy9qcy9nZXR0ZXh0JyksCiAgICAgJ3NvdXJjZXMvdXRpbHMnOiBw YXRoLmpvaW4oX19kaXJuYW1lLCAnLi9wZ2FkbWluL3N0YXRpYy9qcy91dGlscycpLAogICAgICdi YWJlbC1wb2x5ZmlsbCc6IHBhdGguam9pbihfX2Rpcm5hbWUsICcuL25vZGVfbW9kdWxlcy9iYWJl bC1wb2x5ZmlsbC9kaXN0L3BvbHlmaWxsJyksCisgICAgJ3Rvb2xzJzogcGF0aC5qb2luKF9fZGly bmFtZSwgJy4vcGdhZG1pbi90b29scy8nKSwKIAogICAgIC8vIFZlbmRvciBKUwogICAgICdqcXVl cnknOiBwYXRoLmpvaW4oX19kaXJuYW1lLCAnLi9ub2RlX21vZHVsZXMvanF1ZXJ5L2Rpc3QvanF1 ZXJ5JyksCkBAIC0xNjgsMTA1ICsxNjksMTA1IEBAIHZhciB3ZWJwYWNrU2hpbUNvbmZpZyA9IHsK ICAgICAncGdhZG1pbi5iYWNrZm9ybSc6IHBhdGguam9pbihfX2Rpcm5hbWUsICcuL3BnYWRtaW4v c3RhdGljL2pzL2JhY2tmb3JtLnBnYWRtaW4nKSwKICAgICAncGdhZG1pbi5iYWNrZ3JpZCc6IHBh dGguam9pbihfX2Rpcm5hbWUsICcuL3BnYWRtaW4vc3RhdGljL2pzL2JhY2tncmlkLnBnYWRtaW4n KSwKIAotICAgICdwZ2FkbWluLmJyb3dzZXIucGFuZWwnOiBwYXRoLmpvaW4oX19kaXJuYW1lLCAn Li9wZ2FkbWluL2Jyb3dzZXIvc3RhdGljL2pzL3BhbmVsJyksCi0gICAgJ3BnYWRtaW4ubm9kZS5s YW5ndWFnZSc6IHBhdGguam9pbihfX2Rpcm5hbWUsICcuL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJf Z3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL2xhbmd1YWdlcy9zdGF0aWMvanMvbGFuZ3VhZ2UnKSwK LSAgICAncGdhZG1pbi5ub2RlLm12aWV3JzogcGF0aC5qb2luKF9fZGlybmFtZSwgJy4vcGdhZG1p bi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy92aWV3cy9z dGF0aWMvanMvbXZpZXcnKSwKLSAgICAncGdhZG1pbi50b29scy5tYWludGVuYW5jZSc6IHBhdGgu am9pbihfX2Rpcm5hbWUsICcuL3BnYWRtaW4vdG9vbHMvbWFpbnRlbmFuY2Uvc3RhdGljL2pzL21h aW50ZW5hbmNlJyksCi0gICAgJ3BnYWRtaW4ubm9kZS5wZ2Ffam9ic3RlcCc6IHBhdGguam9pbihf X2Rpcm5hbWUsICcuL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvcGdhZ2Vu dC9zdGVwcy9zdGF0aWMvanMvcGdhX2pvYnN0ZXAnKSwKLSAgICAncGdhZG1pbi5zcWxlZGl0b3In OiBwYXRoLmpvaW4oX19kaXJuYW1lLCAnLi9wZ2FkbWluL3Rvb2xzL3NxbGVkaXRvci9zdGF0aWMv anMvc3FsZWRpdG9yJyksCi0gICAgJ3BnYWRtaW4ubm9kZS5mb3JlaWduX3NlcnZlcic6IHBhdGgu am9pbihfX2Rpcm5hbWUsICcuL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMv ZGF0YWJhc2VzL2ZvcmVpZ25fZGF0YV93cmFwcGVycy9mb3JlaWduX3NlcnZlcnMvc3RhdGljL2pz L2ZvcmVpZ25fc2VydmVyJyksCi0gICAgJ3BnYWRtaW4ubm9kZS5kb21haW4nOiBwYXRoLmpvaW4o X19kaXJuYW1lLCAnLi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFi YXNlcy9zY2hlbWFzL2RvbWFpbnMvc3RhdGljL2pzL2RvbWFpbicpLAotICAgICdwZ2FkbWluLnRv b2xzLnVzZXJfbWFuYWdlbWVudCc6IHBhdGguam9pbihfX2Rpcm5hbWUsICcuL3BnYWRtaW4vdG9v bHMvdXNlcl9tYW5hZ2VtZW50L3N0YXRpYy9qcy91c2VyX21hbmFnZW1lbnQnKSwKKyAgICAncGdh ZG1pbi5hYm91dCc6IHBhdGguam9pbihfX2Rpcm5hbWUsICcuL3BnYWRtaW4vYWJvdXQvc3RhdGlj L2pzL2Fib3V0JyksCiAgICAgJ3BnYWRtaW4uYnJvd3Nlcic6IHBhdGguam9pbihfX2Rpcm5hbWUs ICcuL3BnYWRtaW4vYnJvd3Nlci9zdGF0aWMvanMvYnJvd3NlcicpLAorICAgICdwZ2FkbWluLmJy b3dzZXIuYmdwcm9jZXNzJzogcGF0aC5qb2luKF9fZGlybmFtZSwgJy4vcGdhZG1pbi9taXNjL2Jn cHJvY2Vzcy9zdGF0aWMvanMvYmdwcm9jZXNzJyksCisgICAgJ3BnYWRtaW4uYnJvd3Nlci5jb2xs ZWN0aW9uJzogcGF0aC5qb2luKF9fZGlybmFtZSwgJy4vcGdhZG1pbi9icm93c2VyL3N0YXRpYy9q cy9jb2xsZWN0aW9uJyksCisgICAgJ3BnYWRtaW4uYnJvd3Nlci5kYXRhbW9kZWwnOiBwYXRoLmpv aW4oX19kaXJuYW1lLCAnLi9wZ2FkbWluL2Jyb3dzZXIvc3RhdGljL2pzL2RhdGFtb2RlbCcpLAor ICAgICdwZ2FkbWluLmJyb3dzZXIuZW5kcG9pbnRzJzogJy9icm93c2VyL2pzL2VuZHBvaW50cycs CisgICAgJ3BnYWRtaW4uYnJvd3Nlci5lcnJvcic6IHBhdGguam9pbihfX2Rpcm5hbWUsICcuL3Bn YWRtaW4vYnJvd3Nlci9zdGF0aWMvanMvZXJyb3InKSwKKyAgICAncGdhZG1pbi5icm93c2VyLmZy YW1lJzogcGF0aC5qb2luKF9fZGlybmFtZSwgJy4vcGdhZG1pbi9icm93c2VyL3N0YXRpYy9qcy9m cmFtZScpLAorICAgICdwZ2FkbWluLmJyb3dzZXIua2V5Ym9hcmQnOiBwYXRoLmpvaW4oX19kaXJu YW1lLCAnLi9wZ2FkbWluL2Jyb3dzZXIvc3RhdGljL2pzL2tleWJvYXJkJyksCisgICAgJ3BnYWRt aW4uYnJvd3Nlci5tZW51JzogcGF0aC5qb2luKF9fZGlybmFtZSwgJy4vcGdhZG1pbi9icm93c2Vy L3N0YXRpYy9qcy9tZW51JyksCisgICAgJ3BnYWRtaW4uYnJvd3Nlci5tZXNzYWdlcyc6ICcvYnJv d3Nlci9qcy9tZXNzYWdlcycsCisgICAgJ3BnYWRtaW4uYnJvd3Nlci5ub2RlJzogcGF0aC5qb2lu KF9fZGlybmFtZSwgJy4vcGdhZG1pbi9icm93c2VyL3N0YXRpYy9qcy9ub2RlJyksCisgICAgJ3Bn YWRtaW4uYnJvd3Nlci5ub2RlLnVpJzogcGF0aC5qb2luKF9fZGlybmFtZSwgJy4vcGdhZG1pbi9i cm93c2VyL3N0YXRpYy9qcy9ub2RlLnVpJyksCisgICAgJ3BnYWRtaW4uYnJvd3Nlci5vYmplY3Rf ZGVwZW5kcyc6IHBhdGguam9pbihfX2Rpcm5hbWUsICcuL3BnYWRtaW4vbWlzYy9kZXBlbmRzL3N0 YXRpYy9qcy9kZXBlbmRzJyksCisgICAgJ3BnYWRtaW4uYnJvd3Nlci5vYmplY3Rfc3FsJzogcGF0 aC5qb2luKF9fZGlybmFtZSwgJy4vcGdhZG1pbi9taXNjL3NxbC9zdGF0aWMvanMvc3FsJyksCiAg ICAgJ3BnYWRtaW4uYnJvd3Nlci5vYmplY3Rfc3RhdGlzdGljcyc6IHBhdGguam9pbihfX2Rpcm5h bWUsICcuL3BnYWRtaW4vbWlzYy9zdGF0aXN0aWNzL3N0YXRpYy9qcy9zdGF0aXN0aWNzJyksCi0g ICAgJ3BnYWRtaW4ubm9kZS5jb25zdHJhaW50cyc6IHBhdGguam9pbihfX2Rpcm5hbWUsICcuL3Bn YWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFi bGVzL2NvbnN0cmFpbnRzL3N0YXRpYy9qcy9jb25zdHJhaW50cycpLAorICAgICdwZ2FkbWluLmJy b3dzZXIucGFuZWwnOiBwYXRoLmpvaW4oX19kaXJuYW1lLCAnLi9wZ2FkbWluL2Jyb3dzZXIvc3Rh dGljL2pzL3BhbmVsJyksCisgICAgJ3BnYWRtaW4uYnJvd3Nlci5zZXJ2ZXIucHJpdmlsZWdlJzog cGF0aC5qb2luKF9fZGlybmFtZSwgJy4vcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2Vy dmVycy9zdGF0aWMvanMvcHJpdmlsZWdlJyksCisgICAgJ3BnYWRtaW4uYnJvd3Nlci5zZXJ2ZXIu dmFyaWFibGUnOiBwYXRoLmpvaW4oX19kaXJuYW1lLCAnLi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVy X2dyb3Vwcy9zZXJ2ZXJzL3N0YXRpYy9qcy92YXJpYWJsZScpLAogICAgICdwZ2FkbWluLmJyb3dz ZXIudGFibGUucGFydGl0aW9uLnV0aWxzJzogcGF0aC5qb2luKF9fZGlybmFtZSwgJy4vcGdhZG1p bi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMv c3RhdGljL2pzL3BhcnRpdGlvbi51dGlscycpLAorICAgICdwZ2FkbWluLmJyb3dzZXIudXRpbHMn OiAnL2Jyb3dzZXIvanMvdXRpbHMnLAorICAgICdwZ2FkbWluLmJyb3dzZXIud2l6YXJkJzogcGF0 aC5qb2luKF9fZGlybmFtZSwgJy4vcGdhZG1pbi9icm93c2VyL3N0YXRpYy9qcy93aXphcmQnKSwK KyAgICAncGdhZG1pbi5kYXNoYm9hcmQnOiBwYXRoLmpvaW4oX19kaXJuYW1lLCAnLi9wZ2FkbWlu L2Rhc2hib2FyZC9zdGF0aWMvanMvZGFzaGJvYXJkJyksCisgICAgJ3BnYWRtaW4uZGF0YWdyaWQn OiBwYXRoLmpvaW4oX19kaXJuYW1lLCAnLi9wZ2FkbWluL3Rvb2xzL2RhdGFncmlkL3N0YXRpYy9q cy9kYXRhZ3JpZCcpLAorICAgICdwZ2FkbWluLmZpbGVfbWFuYWdlcic6IHBhdGguam9pbihfX2Rp cm5hbWUsICcuL3BnYWRtaW4vbWlzYy9maWxlX21hbmFnZXIvc3RhdGljL2pzL2ZpbGVfbWFuYWdl cicpLAorICAgICdwZ2FkbWluLmZpbGVfdXRpbGl0eSc6IHBhdGguam9pbihfX2Rpcm5hbWUsICcu L3BnYWRtaW4vbWlzYy9maWxlX21hbmFnZXIvc3RhdGljL2pzL3V0aWxpdHknKSwKKyAgICAncGdh ZG1pbi5taXNjLmV4cGxhaW4nOiBwYXRoLmpvaW4oX19kaXJuYW1lLCAnLi9wZ2FkbWluL21pc2Mv c3RhdGljL2V4cGxhaW4vanMvZXhwbGFpbicpLAorICAgICdwZ2FkbWluLm5vZGUuY2FzdCc6IHBh dGguam9pbihfX2Rpcm5hbWUsICcuL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZl cnMvZGF0YWJhc2VzL2Nhc3RzL3N0YXRpYy9qcy9jYXN0JyksCiAgICAgJ3BnYWRtaW4ubm9kZS5j YXRhbG9nJzogcGF0aC5qb2luKF9fZGlybmFtZSwgJy4vcGdhZG1pbi9icm93c2VyL3NlcnZlcl9n cm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9zdGF0aWMvanMvY2F0YWxvZycpLAotICAg ICdwZ2FkbWluLm5vZGUucm9sZSc6IHBhdGguam9pbihfX2Rpcm5hbWUsICcuL3BnYWRtaW4vYnJv d3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvcm9sZXMvc3RhdGljL2pzL3JvbGUnKSwKKyAgICAn cGdhZG1pbi5ub2RlLmNhdGFsb2dfb2JqZWN0JzogcGF0aC5qb2luKF9fZGlybmFtZSwgJy4vcGdh ZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9jYXRh bG9nX29iamVjdHMvc3RhdGljL2pzL2NhdGFsb2dfb2JqZWN0JyksCisgICAgJ3BnYWRtaW4ubm9k ZS5jYXRhbG9nX29iamVjdF9jb2x1bW4nOiBwYXRoLmpvaW4oX19kaXJuYW1lLCAnLi9wZ2FkbWlu L2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2NhdGFsb2df b2JqZWN0cy9jb2x1bW5zL3N0YXRpYy9qcy9jYXRhbG9nX29iamVjdF9jb2x1bW4nKSwKICAgICAn cGdhZG1pbi5ub2RlLmNoZWNrX2NvbnN0cmFpbnQnOiBwYXRoLmpvaW4oX19kaXJuYW1lLCAnLi9w Z2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3Rh Ymxlcy9jb25zdHJhaW50cy9jaGVja19jb25zdHJhaW50L3N0YXRpYy9qcy9jaGVja19jb25zdHJh aW50JyksCi0gICAgJ3BnYWRtaW4ubm9kZS51c2VyX21hcHBpbmcnOiBwYXRoLmpvaW4oX19kaXJu YW1lLCAnLi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9m b3JlaWduX2RhdGFfd3JhcHBlcnMvZm9yZWlnbl9zZXJ2ZXJzL3VzZXJfbWFwcGluZy9zdGF0aWMv anMvdXNlcl9tYXBwaW5nJyksCi0gICAgJ3BnYWRtaW4uYnJvd3Nlci5tZXNzYWdlcyc6ICcvYnJv d3Nlci9qcy9tZXNzYWdlcycsCiAgICAgJ3BnYWRtaW4ubm9kZS5jb2xsYXRpb24nOiBwYXRoLmpv aW4oX19kaXJuYW1lLCAnLi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2Rh dGFiYXNlcy9zY2hlbWFzL2NvbGxhdGlvbnMvc3RhdGljL2pzL2NvbGxhdGlvbicpLAotICAgICdw Z2FkbWluLmJyb3dzZXIuZW5kcG9pbnRzJzogJy9icm93c2VyL2pzL2VuZHBvaW50cycsCi0gICAg J3BnYWRtaW4ubm9kZS50YWJsZSc6IHBhdGguam9pbihfX2Rpcm5hbWUsICcuL3BnYWRtaW4vYnJv d3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3N0YXRp Yy9qcy90YWJsZScpLAotICAgICdwZ2FkbWluLm5vZGUudGFibGVzcGFjZSc6IHBhdGguam9pbihf X2Rpcm5hbWUsICcuL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvdGFibGVz cGFjZXMvc3RhdGljL2pzL3RhYmxlc3BhY2UnKSwKLSAgICAncGdhZG1pbi5ub2RlLnNlcnZlcic6 IHBhdGguam9pbihfX2Rpcm5hbWUsICcuL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3Nl cnZlcnMvc3RhdGljL2pzL3NlcnZlcicpLAotICAgICdwZ2FkbWluLm5vZGUucGFja2FnZSc6IHBh dGguam9pbihfX2Rpcm5hbWUsICcuL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZl cnMvZGF0YWJhc2VzL3NjaGVtYXMvcGFja2FnZXMvc3RhdGljL2pzL3BhY2thZ2UnKSwKLSAgICAn cGdhZG1pbi5icm93c2VyLm1lbnUnOiBwYXRoLmpvaW4oX19kaXJuYW1lLCAnLi9wZ2FkbWluL2Jy b3dzZXIvc3RhdGljL2pzL21lbnUnKSwKLSAgICAncGdhZG1pbi5icm93c2VyLm5vZGUudWknOiBw YXRoLmpvaW4oX19kaXJuYW1lLCAnLi9wZ2FkbWluL2Jyb3dzZXIvc3RhdGljL2pzL25vZGUudWkn KSwKLSAgICAncGdhZG1pbi5ub2RlLnJ1bGUnOiBwYXRoLmpvaW4oX19kaXJuYW1lLCAnLi9wZ2Fk bWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxl cy9ydWxlcy9zdGF0aWMvanMvcnVsZScpLAotICAgICdwZ2FkbWluLm5vZGUuc2VydmVyX2dyb3Vw JzogcGF0aC5qb2luKF9fZGlybmFtZSwgJy4vcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMv c3RhdGljL2pzL3NlcnZlcl9ncm91cCcpLAotICAgICdwZ2FkbWluLnRvb2xzLmJhY2t1cCc6IHBh dGguam9pbihfX2Rpcm5hbWUsICcuL3BnYWRtaW4vdG9vbHMvYmFja3VwL3N0YXRpYy9qcy9iYWNr dXAnKSwKLSAgICAncGdhZG1pbi5ub2RlLmZ0c19jb25maWd1cmF0aW9uJzogcGF0aC5qb2luKF9f ZGlybmFtZSwgJy4vcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFz ZXMvc2NoZW1hcy9mdHNfY29uZmlndXJhdGlvbnMvc3RhdGljL2pzL2Z0c19jb25maWd1cmF0aW9u JyksCisgICAgJ3BnYWRtaW4ubm9kZS5jb2x1bW4nOiBwYXRoLmpvaW4oX19kaXJuYW1lLCAnLi9w Z2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3Rh Ymxlcy9jb2x1bW4vc3RhdGljL2pzL2NvbHVtbicpLAorICAgICdwZ2FkbWluLm5vZGUuY29uc3Ry YWludHMnOiBwYXRoLmpvaW4oX19kaXJuYW1lLCAnLi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dy b3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy9jb25zdHJhaW50cy9zdGF0aWMv anMvY29uc3RyYWludHMnKSwKKyAgICAncGdhZG1pbi5ub2RlLmRhdGFiYXNlJzogcGF0aC5qb2lu KF9fZGlybmFtZSwgJy4vcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRh YmFzZXMvc3RhdGljL2pzL2RhdGFiYXNlJyksCisgICAgJ3BnYWRtaW4ubm9kZS5kb21haW4nOiBw YXRoLmpvaW4oX19kaXJuYW1lLCAnLi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2 ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2RvbWFpbnMvc3RhdGljL2pzL2RvbWFpbicpLAorICAgICdw Z2FkbWluLm5vZGUuZG9tYWluX2NvbnN0cmFpbnRzJzogcGF0aC5qb2luKF9fZGlybmFtZSwgJy4v cGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9k b21haW5zL2RvbWFpbl9jb25zdHJhaW50cy9zdGF0aWMvanMvZG9tYWluX2NvbnN0cmFpbnRzJyks CiAgICAgJ3BnYWRtaW4ubm9kZS5ldmVudF90cmlnZ2VyJzogcGF0aC5qb2luKF9fZGlybmFtZSwg Jy4vcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvZXZlbnRf dHJpZ2dlcnMvc3RhdGljL2pzL2V2ZW50X3RyaWdnZXInKSwKLSAgICAncGdhZG1pbi5icm93c2Vy LmJncHJvY2Vzcyc6IHBhdGguam9pbihfX2Rpcm5hbWUsICcuL3BnYWRtaW4vbWlzYy9iZ3Byb2Nl c3Mvc3RhdGljL2pzL2JncHJvY2VzcycpLAotICAgICdwZ2FkbWluLm5vZGUucGdhX2pvYic6IHBh dGguam9pbihfX2Rpcm5hbWUsICcuL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZl cnMvcGdhZ2VudC9zdGF0aWMvanMvcGdhX2pvYicpLAotICAgICdwZ2FkbWluLm5vZGUuZnVuY3Rp b24nOiBwYXRoLmpvaW4oX19kaXJuYW1lLCAnLi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vw cy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2Z1bmN0aW9ucy9zdGF0aWMvanMvZnVuY3Rpb24n KSwKLSAgICAncGdhZG1pbi5maWxlX3V0aWxpdHknOiBwYXRoLmpvaW4oX19kaXJuYW1lLCAnLi9w Z2FkbWluL21pc2MvZmlsZV9tYW5hZ2VyL3N0YXRpYy9qcy91dGlsaXR5JyksCi0gICAgJ3BnYWRt aW4uYnJvd3Nlci5vYmplY3RfZGVwZW5kcyc6IHBhdGguam9pbihfX2Rpcm5hbWUsICcuL3BnYWRt aW4vbWlzYy9kZXBlbmRzL3N0YXRpYy9qcy9kZXBlbmRzJyksCiAgICAgJ3BnYWRtaW4ubm9kZS5l ZGJmdW5jJzogcGF0aC5qb2luKF9fZGlybmFtZSwgJy4vcGdhZG1pbi9icm93c2VyL3NlcnZlcl9n cm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9wYWNrYWdlcy9lZGJmdW5jcy9zdGF0aWMv anMvZWRiZnVuYycpLAotICAgICdwZ2FkbWluLm5vZGUuc2VxdWVuY2UnOiBwYXRoLmpvaW4oX19k aXJuYW1lLCAnLi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNl cy9zY2hlbWFzL3NlcXVlbmNlcy9zdGF0aWMvanMvc2VxdWVuY2UnKSwKICAgICAncGdhZG1pbi5u b2RlLmVkYnByb2MnOiBwYXRoLmpvaW4oX19kaXJuYW1lLCAnLi9wZ2FkbWluL2Jyb3dzZXIvc2Vy dmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3BhY2thZ2VzL2VkYmZ1bmNzL3N0 YXRpYy9qcy9lZGJwcm9jJyksCi0gICAgJ3BnYWRtaW4uYnJvd3Nlci5vYmplY3Rfc3FsJzogcGF0 aC5qb2luKF9fZGlybmFtZSwgJy4vcGdhZG1pbi9taXNjL3NxbC9zdGF0aWMvanMvc3FsJyksCi0g ICAgJ3BnYWRtaW4ucHJlZmVyZW5jZXMnOiBwYXRoLmpvaW4oX19kaXJuYW1lLCAnLi9wZ2FkbWlu L3ByZWZlcmVuY2VzL3N0YXRpYy9qcy9wcmVmZXJlbmNlcycpLAotICAgICdwZ2FkbWluLm5vZGUu ZG9tYWluX2NvbnN0cmFpbnRzJzogcGF0aC5qb2luKF9fZGlybmFtZSwgJy4vcGdhZG1pbi9icm93 c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9kb21haW5zL2RvbWFp bl9jb25zdHJhaW50cy9zdGF0aWMvanMvZG9tYWluX2NvbnN0cmFpbnRzJyksCi0gICAgJ3NsaWNr LnBnYWRtaW4uZm9ybWF0dGVycyc6IHBhdGguam9pbihfX2Rpcm5hbWUsICcuL3BnYWRtaW4vdG9v bHMvLi4vc3RhdGljL2pzL3NsaWNrZ3JpZC9mb3JtYXR0ZXJzJyksCi0gICAgJ3BnYWRtaW4ubm9k ZS5jYXRhbG9nX29iamVjdCc6IHBhdGguam9pbihfX2Rpcm5hbWUsICcuL3BnYWRtaW4vYnJvd3Nl ci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvY2F0YWxvZ19vYmplY3Rz L3N0YXRpYy9qcy9jYXRhbG9nX29iamVjdCcpLAotICAgICdwZ2FkbWluLmRhc2hib2FyZCc6IHBh dGguam9pbihfX2Rpcm5hbWUsICcuL3BnYWRtaW4vZGFzaGJvYXJkL3N0YXRpYy9qcy9kYXNoYm9h cmQnKSwKLSAgICAncGdhZG1pbi5ub2RlLmZvcmVpZ25fZGF0YV93cmFwcGVyJzogcGF0aC5qb2lu KF9fZGlybmFtZSwgJy4vcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRh YmFzZXMvZm9yZWlnbl9kYXRhX3dyYXBwZXJzL3N0YXRpYy9qcy9mb3JlaWduX2RhdGFfd3JhcHBl cicpLAorICAgICdwZ2FkbWluLm5vZGUuZWRidmFyJzogcGF0aC5qb2luKF9fZGlybmFtZSwgJy4v cGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9w YWNrYWdlcy9lZGJ2YXJzL3N0YXRpYy9qcy9lZGJ2YXInKSwKKyAgICAncGdhZG1pbi5ub2RlLmV4 Y2x1c2lvbl9jb25zdHJhaW50JzogcGF0aC5qb2luKF9fZGlybmFtZSwgJy4vcGdhZG1pbi9icm93 c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvY29uc3Ry YWludHMvZXhjbHVzaW9uX2NvbnN0cmFpbnQvc3RhdGljL2pzL2V4Y2x1c2lvbl9jb25zdHJhaW50 JyksCisgICAgJ3BnYWRtaW4ubm9kZS5leHRlbnNpb24nOiBwYXRoLmpvaW4oX19kaXJuYW1lLCAn Li9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9leHRlbnNp b25zL3N0YXRpYy9qcy9leHRlbnNpb24nKSwKICAgICAncGdhZG1pbi5ub2RlLmV4dGVybmFsX3Rh YmxlJzogcGF0aC5qb2luKF9fZGlybmFtZSwgJy4vcGdhZG1pbi9zdGF0aWMvanMvYnJvd3Nlci9z ZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL2V4dGVybmFsX3RhYmxlcy9pbmRleCcpLAot ICAgICdwZ2FkbWluLm5vZGUuZXh0ZXJuYWxfdGFibGVzJzogcGF0aC5qb2luKF9fZGlybmFtZSwg Jy4vcGdhZG1pbi9zdGF0aWMvanMvYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJh c2VzL2V4dGVybmFsX3RhYmxlcy9pbmRleCcpLAorICAgICdwZ2FkbWluLm5vZGUuZm9yZWlnbl9k YXRhX3dyYXBwZXInOiBwYXRoLmpvaW4oX19kaXJuYW1lLCAnLi9wZ2FkbWluL2Jyb3dzZXIvc2Vy dmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9mb3JlaWduX2RhdGFfd3JhcHBlcnMvc3RhdGlj L2pzL2ZvcmVpZ25fZGF0YV93cmFwcGVyJyksCiAgICAgJ3BnYWRtaW4ubm9kZS5mb3JlaWduX2tl eSc6IHBhdGguam9pbihfX2Rpcm5hbWUsICcuL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBz L3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL2NvbnN0cmFpbnRzL2ZvcmVpZ25fa2V5 L3N0YXRpYy9qcy9mb3JlaWduX2tleScpLAotICAgICdwZ2FkbWluLmJyb3dzZXIuc2VydmVyLnZh cmlhYmxlJzogcGF0aC5qb2luKF9fZGlybmFtZSwgJy4vcGdhZG1pbi9icm93c2VyL3NlcnZlcl9n cm91cHMvc2VydmVycy9zdGF0aWMvanMvdmFyaWFibGUnKSwKLSAgICAncGdhZG1pbi50b29scy5n cmFudF93aXphcmQnOiBwYXRoLmpvaW4oX19kaXJuYW1lLCAnLi9wZ2FkbWluL3Rvb2xzL2dyYW50 X3dpemFyZC9zdGF0aWMvanMvZ3JhbnRfd2l6YXJkJyksCi0gICAgJ3BnYWRtaW4uYnJvd3Nlci5k YXRhbW9kZWwnOiBwYXRoLmpvaW4oX19kaXJuYW1lLCAnLi9wZ2FkbWluL2Jyb3dzZXIvc3RhdGlj L2pzL2RhdGFtb2RlbCcpLAotICAgICdwZ2FkbWluLnRvb2xzLnJlc3RvcmUnOiBwYXRoLmpvaW4o X19kaXJuYW1lLCAnLi9wZ2FkbWluL3Rvb2xzL3Jlc3RvcmUvc3RhdGljL2pzL3Jlc3RvcmUnKSwK KyAgICAncGdhZG1pbi5ub2RlLmZvcmVpZ25fc2VydmVyJzogcGF0aC5qb2luKF9fZGlybmFtZSwg Jy4vcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvZm9yZWln bl9kYXRhX3dyYXBwZXJzL2ZvcmVpZ25fc2VydmVycy9zdGF0aWMvanMvZm9yZWlnbl9zZXJ2ZXIn KSwKKyAgICAncGdhZG1pbi5ub2RlLmZvcmVpZ25fdGFibGUnOiBwYXRoLmpvaW4oX19kaXJuYW1l LCAnLi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hl bWFzL2ZvcmVpZ25fdGFibGVzL3N0YXRpYy9qcy9mb3JlaWduX3RhYmxlJyksCisgICAgJ3BnYWRt aW4ubm9kZS5mdHNfY29uZmlndXJhdGlvbic6IHBhdGguam9pbihfX2Rpcm5hbWUsICcuL3BnYWRt aW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZnRzX2Nv bmZpZ3VyYXRpb25zL3N0YXRpYy9qcy9mdHNfY29uZmlndXJhdGlvbicpLAorICAgICdwZ2FkbWlu Lm5vZGUuZnRzX2RpY3Rpb25hcnknOiBwYXRoLmpvaW4oX19kaXJuYW1lLCAnLi9wZ2FkbWluL2Jy b3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2Z0c19kaWN0aW9u YXJpZXMvc3RhdGljL2pzL2Z0c19kaWN0aW9uYXJ5JyksCisgICAgJ3BnYWRtaW4ubm9kZS5mdHNf cGFyc2VyJzogcGF0aC5qb2luKF9fZGlybmFtZSwgJy4vcGdhZG1pbi9icm93c2VyL3NlcnZlcl9n cm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9mdHNfcGFyc2VyL3N0YXRpYy9qcy9mdHNf cGFyc2VyJyksCisgICAgJ3BnYWRtaW4ubm9kZS5mdHNfdGVtcGxhdGUnOiBwYXRoLmpvaW4oX19k aXJuYW1lLCAnLi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNl cy9zY2hlbWFzL2Z0c190ZW1wbGF0ZXMvc3RhdGljL2pzL2Z0c190ZW1wbGF0ZScpLAorICAgICdw Z2FkbWluLm5vZGUuZnVuY3Rpb24nOiBwYXRoLmpvaW4oX19kaXJuYW1lLCAnLi9wZ2FkbWluL2Jy b3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2Z1bmN0aW9ucy9z dGF0aWMvanMvZnVuY3Rpb24nKSwKKyAgICAncGdhZG1pbi5ub2RlLmluZGV4JzogcGF0aC5qb2lu KF9fZGlybmFtZSwgJy4vcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRh YmFzZXMvc2NoZW1hcy90YWJsZXMvaW5kZXhlcy9zdGF0aWMvanMvaW5kZXgnKSwKKyAgICAncGdh ZG1pbi5ub2RlLmxhbmd1YWdlJzogcGF0aC5qb2luKF9fZGlybmFtZSwgJy4vcGdhZG1pbi9icm93 c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvbGFuZ3VhZ2VzL3N0YXRpYy9qcy9s YW5ndWFnZScpLAorICAgICdwZ2FkbWluLm5vZGUubXZpZXcnOiBwYXRoLmpvaW4oX19kaXJuYW1l LCAnLi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hl bWFzL3ZpZXdzL3N0YXRpYy9qcy9tdmlldycpLAorICAgICdwZ2FkbWluLm5vZGUucGFja2FnZSc6 IHBhdGguam9pbihfX2Rpcm5hbWUsICcuL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3Nl cnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvcGFja2FnZXMvc3RhdGljL2pzL3BhY2thZ2UnKSwKKyAg ICAncGdhZG1pbi5ub2RlLnBhcnRpdGlvbic6IHBhdGguam9pbihfX2Rpcm5hbWUsICcuL3BnYWRt aW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVz L3BhcnRpdGlvbnMvc3RhdGljL2pzL3BhcnRpdGlvbicpLAorICAgICdwZ2FkbWluLm5vZGUucGdh X2pvYic6IHBhdGguam9pbihfX2Rpcm5hbWUsICcuL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3Jv dXBzL3NlcnZlcnMvcGdhZ2VudC9zdGF0aWMvanMvcGdhX2pvYicpLAorICAgICdwZ2FkbWluLm5v ZGUucGdhX2pvYnN0ZXAnOiBwYXRoLmpvaW4oX19kaXJuYW1lLCAnLi9wZ2FkbWluL2Jyb3dzZXIv c2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL3BnYWdlbnQvc3RlcHMvc3RhdGljL2pzL3BnYV9qb2JzdGVw JyksCisgICAgJ3BnYWRtaW4ubm9kZS5wZ2Ffc2NoZWR1bGUnOiBwYXRoLmpvaW4oX19kaXJuYW1l LCAnLi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL3BnYWdlbnQvc2NoZWR1 bGVzL3N0YXRpYy9qcy9wZ2Ffc2NoZWR1bGUnKSwKKyAgICAncGdhZG1pbi5ub2RlLnByaW1hcnlf a2V5JzogcGF0aC5qb2luKF9fZGlybmFtZSwgJy4vcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91 cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvY29uc3RyYWludHMvaW5kZXhfY29u c3RyYWludC9zdGF0aWMvanMvcHJpbWFyeV9rZXknKSwKICAgICAncGdhZG1pbi5ub2RlLnByb2Nl ZHVyZSc6IHBhdGguam9pbihfX2Rpcm5hbWUsICcuL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3Jv dXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZnVuY3Rpb25zL3N0YXRpYy9qcy9wcm9jZWR1 cmUnKSwKLSAgICAncGdhZG1pbi5icm93c2VyLnNlcnZlci5wcml2aWxlZ2UnOiBwYXRoLmpvaW4o X19kaXJuYW1lLCAnLi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL3N0YXRp Yy9qcy9wcml2aWxlZ2UnKSwKICAgICAncGdhZG1pbi5ub2RlLnJlc291cmNlX2dyb3VwJzogcGF0 aC5qb2luKF9fZGlybmFtZSwgJy4vcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVy cy9yZXNvdXJjZV9ncm91cHMvc3RhdGljL2pzL3Jlc291cmNlX2dyb3VwJyksCi0gICAgJ3BnYWRt aW4ubm9kZS5leGNsdXNpb25fY29uc3RyYWludCc6IHBhdGguam9pbihfX2Rpcm5hbWUsICcuL3Bn YWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFi bGVzL2NvbnN0cmFpbnRzL2V4Y2x1c2lvbl9jb25zdHJhaW50L3N0YXRpYy9qcy9leGNsdXNpb25f Y29uc3RyYWludCcpLAotICAgICdwZ2FkbWluLm5vZGUucHJpbWFyeV9rZXknOiBwYXRoLmpvaW4o X19kaXJuYW1lLCAnLi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFi YXNlcy9zY2hlbWFzL3RhYmxlcy9jb25zdHJhaW50cy9pbmRleF9jb25zdHJhaW50L3N0YXRpYy9q cy9wcmltYXJ5X2tleScpLAotICAgICdwZ2FkbWluLnRvb2xzLmRlYnVnZ2VyLmRpcmVjdCc6IHBh dGguam9pbihfX2Rpcm5hbWUsICcuL3BnYWRtaW4vdG9vbHMvZGVidWdnZXIvc3RhdGljL2pzL2Rp cmVjdCcpLAotICAgICdwZ2FkbWluLnNldHRpbmdzJzogcGF0aC5qb2luKF9fZGlybmFtZSwgJy4v cGdhZG1pbi9zZXR0aW5ncy9zdGF0aWMvanMvc2V0dGluZ3MnKSwKKyAgICAncGdhZG1pbi5ub2Rl LnJvbGUnOiBwYXRoLmpvaW4oX19kaXJuYW1lLCAnLi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dy b3Vwcy9zZXJ2ZXJzL3JvbGVzL3N0YXRpYy9qcy9yb2xlJyksCisgICAgJ3BnYWRtaW4ubm9kZS5y dWxlJzogcGF0aC5qb2luKF9fZGlybmFtZSwgJy4vcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91 cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvcnVsZXMvc3RhdGljL2pzL3J1bGUn KSwKICAgICAncGdhZG1pbi5ub2RlLnNjaGVtYSc6IHBhdGguam9pbihfX2Rpcm5hbWUsICcuL3Bn YWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvc3Rh dGljL2pzL3NjaGVtYScpLAotICAgICdwZ2FkbWluLmJyb3dzZXIuZXJyb3InOiBwYXRoLmpvaW4o X19kaXJuYW1lLCAnLi9wZ2FkbWluL2Jyb3dzZXIvc3RhdGljL2pzL2Vycm9yJyksCi0gICAgJ3Bn YWRtaW4udG9vbHMuaW1wb3J0X2V4cG9ydCc6IHBhdGguam9pbihfX2Rpcm5hbWUsICcuL3BnYWRt aW4vdG9vbHMvaW1wb3J0X2V4cG9ydC9zdGF0aWMvanMvaW1wb3J0X2V4cG9ydCcpLAotICAgICdw Z2FkbWluLm5vZGUudmlldyc6IHBhdGguam9pbihfX2Rpcm5hbWUsICcuL3BnYWRtaW4vYnJvd3Nl ci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdmlld3Mvc3RhdGljL2pz L3ZpZXcnKSwKLSAgICAncGdhZG1pbi50b29scy5kZWJ1Z2dlci51aSc6IHBhdGguam9pbihfX2Rp cm5hbWUsICcuL3BnYWRtaW4vdG9vbHMvZGVidWdnZXIvc3RhdGljL2pzL2RlYnVnZ2VyX3VpJyks Ci0gICAgJ3BnYWRtaW4udG9vbHMuZGVidWdnZXIudXRpbHMnOiBwYXRoLmpvaW4oX19kaXJuYW1l LCAnLi9wZ2FkbWluL3Rvb2xzL2RlYnVnZ2VyL3N0YXRpYy9qcy9kZWJ1Z2dlcl91dGlscycpLAot ICAgICdwZ2FkbWluLm5vZGUucGdhX3NjaGVkdWxlJzogcGF0aC5qb2luKF9fZGlybmFtZSwgJy4v cGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9wZ2FnZW50L3NjaGVkdWxlcy9z dGF0aWMvanMvcGdhX3NjaGVkdWxlJyksCi0gICAgJ3BnYWRtaW4ubm9kZS5jYXRhbG9nX29iamVj dF9jb2x1bW4nOiBwYXRoLmpvaW4oX19kaXJuYW1lLCAnLi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVy X2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2NhdGFsb2dfb2JqZWN0cy9jb2x1bW5z L3N0YXRpYy9qcy9jYXRhbG9nX29iamVjdF9jb2x1bW4nKSwKLSAgICAncGdhZG1pbi5icm93c2Vy LmNvbGxlY3Rpb24nOiBwYXRoLmpvaW4oX19kaXJuYW1lLCAnLi9wZ2FkbWluL2Jyb3dzZXIvc3Rh dGljL2pzL2NvbGxlY3Rpb24nKSwKLSAgICAncGdhZG1pbi5icm93c2VyLm5vZGUnOiBwYXRoLmpv aW4oX19kaXJuYW1lLCAnLi9wZ2FkbWluL2Jyb3dzZXIvc3RhdGljL2pzL25vZGUnKSwKLSAgICAn cGdhZG1pbi5taXNjLmV4cGxhaW4nOiBwYXRoLmpvaW4oX19kaXJuYW1lLCAnLi9wZ2FkbWluL21p c2Mvc3RhdGljL2V4cGxhaW4vanMvZXhwbGFpbicpLAorICAgICdwZ2FkbWluLm5vZGUuc2NoZW1h LmRpcic6IHBhdGguam9pbihfX2Rpcm5hbWUsICcuL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3Jv dXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvc3RhdGljL2pzLycpLAorICAgICdwZ2FkbWlu Lm5vZGUuc2VxdWVuY2UnOiBwYXRoLmpvaW4oX19kaXJuYW1lLCAnLi9wZ2FkbWluL2Jyb3dzZXIv c2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3NlcXVlbmNlcy9zdGF0aWMv anMvc2VxdWVuY2UnKSwKKyAgICAncGdhZG1pbi5ub2RlLnNlcnZlcic6IHBhdGguam9pbihfX2Rp cm5hbWUsICcuL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvc3RhdGljL2pz L3NlcnZlcicpLAorICAgICdwZ2FkbWluLm5vZGUuc2VydmVyX2dyb3VwJzogcGF0aC5qb2luKF9f ZGlybmFtZSwgJy4vcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc3RhdGljL2pzL3NlcnZl cl9ncm91cCcpLAogICAgICdwZ2FkbWluLm5vZGUuc3lub255bSc6IHBhdGguam9pbihfX2Rpcm5h bWUsICcuL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3Nj aGVtYXMvc3lub255bXMvc3RhdGljL2pzL3N5bm9ueW0nKSwKLSAgICAncGdhZG1pbi5ub2RlLmV4 dGVuc2lvbic6IHBhdGguam9pbihfX2Rpcm5hbWUsICcuL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJf Z3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL2V4dGVuc2lvbnMvc3RhdGljL2pzL2V4dGVuc2lvbicp LAotICAgICdwZ2FkbWluLm5vZGUudW5pcXVlX2NvbnN0cmFpbnQnOiBwYXRoLmpvaW4oX19kaXJu YW1lLCAnLi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9z Y2hlbWFzL3RhYmxlcy9jb25zdHJhaW50cy9pbmRleF9jb25zdHJhaW50L3N0YXRpYy9qcy91bmlx dWVfY29uc3RyYWludCcpLAotICAgICdwZ2FkbWluLm5vZGUuZGF0YWJhc2UnOiBwYXRoLmpvaW4o X19kaXJuYW1lLCAnLi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFi YXNlcy9zdGF0aWMvanMvZGF0YWJhc2UnKSwKLSAgICAncGdhZG1pbi5ub2RlLmVkYnZhcic6IHBh dGguam9pbihfX2Rpcm5hbWUsICcuL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZl cnMvZGF0YWJhc2VzL3NjaGVtYXMvcGFja2FnZXMvZWRidmFycy9zdGF0aWMvanMvZWRidmFyJyks CisgICAgJ3BnYWRtaW4ubm9kZS50YWJsZSc6IHBhdGguam9pbihfX2Rpcm5hbWUsICcuL3BnYWRt aW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVz L3N0YXRpYy9qcy90YWJsZScpLAorICAgICdwZ2FkbWluLm5vZGUudGFibGVzcGFjZSc6IHBhdGgu am9pbihfX2Rpcm5hbWUsICcuL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMv dGFibGVzcGFjZXMvc3RhdGljL2pzL3RhYmxlc3BhY2UnKSwKICAgICAncGdhZG1pbi5ub2RlLnRy aWdnZXInOiBwYXRoLmpvaW4oX19kaXJuYW1lLCAnLi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dy b3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy90cmlnZ2Vycy9zdGF0aWMvanMv dHJpZ2dlcicpLAotICAgICdwZ2FkbWluLmJyb3dzZXIud2l6YXJkJzogcGF0aC5qb2luKF9fZGly bmFtZSwgJy4vcGdhZG1pbi9icm93c2VyL3N0YXRpYy9qcy93aXphcmQnKSwKLSAgICAncGdhZG1p bi5zZXJ2ZXIuc3VwcG9ydGVkX3NlcnZlcnMnOiAnL2Jyb3dzZXIvc2VydmVyL3N1cHBvcnRlZF9z ZXJ2ZXJzJywKLSAgICAncGdhZG1pbi5ub2RlLnBhcnRpdGlvbic6IHBhdGguam9pbihfX2Rpcm5h bWUsICcuL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3Nj aGVtYXMvdGFibGVzL3BhcnRpdGlvbnMvc3RhdGljL2pzL3BhcnRpdGlvbicpLAotICAgICdwZ2Fk bWluLm5vZGUuZnRzX3RlbXBsYXRlJzogcGF0aC5qb2luKF9fZGlybmFtZSwgJy4vcGdhZG1pbi9i cm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9mdHNfdGVtcGxh dGVzL3N0YXRpYy9qcy9mdHNfdGVtcGxhdGUnKSwKLSAgICAncGdhZG1pbi5ub2RlLmNhc3QnOiBw YXRoLmpvaW4oX19kaXJuYW1lLCAnLi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2 ZXJzL2RhdGFiYXNlcy9jYXN0cy9zdGF0aWMvanMvY2FzdCcpLAotICAgICdwZ2FkbWluLnRvb2xz LmRlYnVnZ2VyLmNvbnRyb2xsZXInOiBwYXRoLmpvaW4oX19kaXJuYW1lLCAnLi9wZ2FkbWluL3Rv b2xzL2RlYnVnZ2VyL3N0YXRpYy9qcy9kZWJ1Z2dlcicpLAotICAgICdwZ2FkbWluLm5vZGUuZnRz X3BhcnNlcic6IHBhdGguam9pbihfX2Rpcm5hbWUsICcuL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJf Z3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZnRzX3BhcnNlci9zdGF0aWMvanMvZnRz X3BhcnNlcicpLAotICAgICdwZ2FkbWluLmJyb3dzZXIudXRpbHMnOiAnL2Jyb3dzZXIvanMvdXRp bHMnLAotICAgICdwZ2FkbWluLmFib3V0JzogcGF0aC5qb2luKF9fZGlybmFtZSwgJy4vcGdhZG1p bi9hYm91dC9zdGF0aWMvanMvYWJvdXQnKSwKLSAgICAnc2xpY2sucGdhZG1pbi5lZGl0b3JzJzog cGF0aC5qb2luKF9fZGlybmFtZSwgJy4vcGdhZG1pbi90b29scy8uLi9zdGF0aWMvanMvc2xpY2tn cmlkL2VkaXRvcnMnKSwKLSAgICAncGdhZG1pbi5ub2RlLmNvbHVtbic6IHBhdGguam9pbihfX2Rp cm5hbWUsICcuL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2Vz L3NjaGVtYXMvdGFibGVzL2NvbHVtbi9zdGF0aWMvanMvY29sdW1uJyksCi0gICAgJ3BnYWRtaW4u bm9kZS5mb3JlaWduX3RhYmxlJzogcGF0aC5qb2luKF9fZGlybmFtZSwgJy4vcGdhZG1pbi9icm93 c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9mb3JlaWduX3RhYmxl cy9zdGF0aWMvanMvZm9yZWlnbl90YWJsZScpLAotICAgICdwZ2FkbWluLm5vZGUuZnRzX2RpY3Rp b25hcnknOiBwYXRoLmpvaW4oX19kaXJuYW1lLCAnLi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dy b3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2Z0c19kaWN0aW9uYXJpZXMvc3RhdGljL2pz L2Z0c19kaWN0aW9uYXJ5JyksCi0gICAgJ3BnYWRtaW4uZGF0YWdyaWQnOiBwYXRoLmpvaW4oX19k aXJuYW1lLCAnLi9wZ2FkbWluL3Rvb2xzL2RhdGFncmlkL3N0YXRpYy9qcy9kYXRhZ3JpZCcpLAog ICAgICdwZ2FkbWluLm5vZGUudHJpZ2dlcl9mdW5jdGlvbic6IHBhdGguam9pbihfX2Rpcm5hbWUs ICcuL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVt YXMvZnVuY3Rpb25zL3N0YXRpYy9qcy90cmlnZ2VyX2Z1bmN0aW9uJyksCi0gICAgJ3BnYWRtaW4u dXNlcl9tYW5hZ2VtZW50LmN1cnJlbnRfdXNlcic6ICcvdXNlcl9tYW5hZ2VtZW50L2N1cnJlbnRf dXNlcicsCi0gICAgJ3BnYWRtaW4ubm9kZS5pbmRleCc6IHBhdGguam9pbihfX2Rpcm5hbWUsICcu L3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMv dGFibGVzL2luZGV4ZXMvc3RhdGljL2pzL2luZGV4JyksCi0gICAgJ3BnYWRtaW4uYnJvd3Nlci5m cmFtZSc6IHBhdGguam9pbihfX2Rpcm5hbWUsICcuL3BnYWRtaW4vYnJvd3Nlci9zdGF0aWMvanMv ZnJhbWUnKSwKICAgICAncGdhZG1pbi5ub2RlLnR5cGUnOiBwYXRoLmpvaW4oX19kaXJuYW1lLCAn Li9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFz L3R5cGVzL3N0YXRpYy9qcy90eXBlJyksCi0gICAgJ3BnYWRtaW4uZmlsZV9tYW5hZ2VyJzogcGF0 aC5qb2luKF9fZGlybmFtZSwgJy4vcGdhZG1pbi9taXNjL2ZpbGVfbWFuYWdlci9zdGF0aWMvanMv ZmlsZV9tYW5hZ2VyJyksCi0gICAgJ3BnYWRtaW4uYnJvd3Nlci5rZXlib2FyZCc6IHBhdGguam9p bihfX2Rpcm5hbWUsICcuL3BnYWRtaW4vYnJvd3Nlci9zdGF0aWMvanMva2V5Ym9hcmQnKSwKKyAg ICAncGdhZG1pbi5ub2RlLnVuaXF1ZV9jb25zdHJhaW50JzogcGF0aC5qb2luKF9fZGlybmFtZSwg Jy4vcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1h cy90YWJsZXMvY29uc3RyYWludHMvaW5kZXhfY29uc3RyYWludC9zdGF0aWMvanMvdW5pcXVlX2Nv bnN0cmFpbnQnKSwKKyAgICAncGdhZG1pbi5ub2RlLnVzZXJfbWFwcGluZyc6IHBhdGguam9pbihf X2Rpcm5hbWUsICcuL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJh c2VzL2ZvcmVpZ25fZGF0YV93cmFwcGVycy9mb3JlaWduX3NlcnZlcnMvdXNlcl9tYXBwaW5nL3N0 YXRpYy9qcy91c2VyX21hcHBpbmcnKSwKKyAgICAncGdhZG1pbi5ub2RlLnZpZXcnOiBwYXRoLmpv aW4oX19kaXJuYW1lLCAnLi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2Rh dGFiYXNlcy9zY2hlbWFzL3ZpZXdzL3N0YXRpYy9qcy92aWV3JyksCisgICAgJ3BnYWRtaW4ucHJl ZmVyZW5jZXMnOiBwYXRoLmpvaW4oX19kaXJuYW1lLCAnLi9wZ2FkbWluL3ByZWZlcmVuY2VzL3N0 YXRpYy9qcy9wcmVmZXJlbmNlcycpLAorICAgICdwZ2FkbWluLnNldHRpbmdzJzogcGF0aC5qb2lu KF9fZGlybmFtZSwgJy4vcGdhZG1pbi9zZXR0aW5ncy9zdGF0aWMvanMvc2V0dGluZ3MnKSwKKyAg ICAncGdhZG1pbi5zZXJ2ZXIuc3VwcG9ydGVkX3NlcnZlcnMnOiAnL2Jyb3dzZXIvc2VydmVyL3N1 cHBvcnRlZF9zZXJ2ZXJzJywKKyAgICAncGdhZG1pbi5zcWxlZGl0b3InOiBwYXRoLmpvaW4oX19k aXJuYW1lLCAnLi9wZ2FkbWluL3Rvb2xzL3NxbGVkaXRvci9zdGF0aWMvanMvc3FsZWRpdG9yJyks CiAgICAgJ3BnYWRtaW4udGFibGVzLmpzJzogcGF0aC5qb2luKF9fZGlybmFtZSwgJy4vcGdhZG1p bi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMv c3RhdGljL2pzLycpLAorICAgICdwZ2FkbWluLnRvb2xzLmJhY2t1cCc6IHBhdGguam9pbihfX2Rp cm5hbWUsICcuL3BnYWRtaW4vdG9vbHMvYmFja3VwL3N0YXRpYy9qcy9iYWNrdXAnKSwKKyAgICAn cGdhZG1pbi50b29scy5kZWJ1Z2dlci5jb250cm9sbGVyJzogcGF0aC5qb2luKF9fZGlybmFtZSwg Jy4vcGdhZG1pbi90b29scy9kZWJ1Z2dlci9zdGF0aWMvanMvZGVidWdnZXInKSwKKyAgICAncGdh ZG1pbi50b29scy5kZWJ1Z2dlci5kaXJlY3QnOiBwYXRoLmpvaW4oX19kaXJuYW1lLCAnLi9wZ2Fk bWluL3Rvb2xzL2RlYnVnZ2VyL3N0YXRpYy9qcy9kaXJlY3QnKSwKKyAgICAncGdhZG1pbi50b29s cy5kZWJ1Z2dlci51aSc6IHBhdGguam9pbihfX2Rpcm5hbWUsICcuL3BnYWRtaW4vdG9vbHMvZGVi dWdnZXIvc3RhdGljL2pzL2RlYnVnZ2VyX3VpJyksCisgICAgJ3BnYWRtaW4udG9vbHMuZGVidWdn ZXIudXRpbHMnOiBwYXRoLmpvaW4oX19kaXJuYW1lLCAnLi9wZ2FkbWluL3Rvb2xzL2RlYnVnZ2Vy L3N0YXRpYy9qcy9kZWJ1Z2dlcl91dGlscycpLAorICAgICdwZ2FkbWluLnRvb2xzLmdyYW50X3dp emFyZCc6IHBhdGguam9pbihfX2Rpcm5hbWUsICcuL3BnYWRtaW4vdG9vbHMvZ3JhbnRfd2l6YXJk L3N0YXRpYy9qcy9ncmFudF93aXphcmQnKSwKKyAgICAncGdhZG1pbi50b29scy5pbXBvcnRfZXhw b3J0JzogcGF0aC5qb2luKF9fZGlybmFtZSwgJy4vcGdhZG1pbi90b29scy9pbXBvcnRfZXhwb3J0 L3N0YXRpYy9qcy9pbXBvcnRfZXhwb3J0JyksCisgICAgJ3BnYWRtaW4udG9vbHMubWFpbnRlbmFu Y2UnOiBwYXRoLmpvaW4oX19kaXJuYW1lLCAnLi9wZ2FkbWluL3Rvb2xzL21haW50ZW5hbmNlL3N0 YXRpYy9qcy9tYWludGVuYW5jZScpLAorICAgICdwZ2FkbWluLnRvb2xzLnJlc3RvcmUnOiBwYXRo LmpvaW4oX19kaXJuYW1lLCAnLi9wZ2FkbWluL3Rvb2xzL3Jlc3RvcmUvc3RhdGljL2pzL3Jlc3Rv cmUnKSwKKyAgICAncGdhZG1pbi50b29scy51c2VyX21hbmFnZW1lbnQnOiBwYXRoLmpvaW4oX19k aXJuYW1lLCAnLi9wZ2FkbWluL3Rvb2xzL3VzZXJfbWFuYWdlbWVudC9zdGF0aWMvanMvdXNlcl9t YW5hZ2VtZW50JyksCisgICAgJ3BnYWRtaW4udXNlcl9tYW5hZ2VtZW50LmN1cnJlbnRfdXNlcic6 ICcvdXNlcl9tYW5hZ2VtZW50L2N1cnJlbnRfdXNlcicsCisgICAgJ3NsaWNrLnBnYWRtaW4uZWRp dG9ycyc6IHBhdGguam9pbihfX2Rpcm5hbWUsICcuL3BnYWRtaW4vdG9vbHMvLi4vc3RhdGljL2pz L3NsaWNrZ3JpZC9lZGl0b3JzJyksCisgICAgJ3NsaWNrLnBnYWRtaW4uZm9ybWF0dGVycyc6IHBh dGguam9pbihfX2Rpcm5hbWUsICcuL3BnYWRtaW4vdG9vbHMvLi4vc3RhdGljL2pzL3NsaWNrZ3Jp ZC9mb3JtYXR0ZXJzJyksCiAgIH0sCiAgIGV4dGVybmFsczogWwogICAgICdwZ2FkbWluLnVzZXJf bWFuYWdlbWVudC5jdXJyZW50X3VzZXInLAotLSAKMi4xNi4yCgo= --00000000000053c199056b687e7b Content-Type: application/octet-stream; name="0002-New-tree-implementation.patch" Content-Disposition: attachment; filename="0002-New-tree-implementation.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_jgsi9o6y1 ZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc3RhdGljL2pzL2Jyb3dzZXIuanMgYi93 ZWIvcGdhZG1pbi9icm93c2VyL3N0YXRpYy9qcy9icm93c2VyLmpzCmluZGV4IDg5N2QyNzA4Li5m YzY4MDg5ZiAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zdGF0aWMvanMvYnJvd3Nl ci5qcworKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3N0YXRpYy9qcy9icm93c2VyLmpzCkBAIC0x LDQgKzEsNSBAQAogZGVmaW5lKCdwZ2FkbWluLmJyb3dzZXInLCBbCisgICdzb3VyY2VzL3RyZWUv dHJlZScsCiAgICdzb3VyY2VzL2dldHRleHQnLCAnc291cmNlcy91cmxfZm9yJywgJ3JlcXVpcmUn LCAnanF1ZXJ5JywgJ3VuZGVyc2NvcmUnLCAndW5kZXJzY29yZS5zdHJpbmcnLAogICAnYm9vdHN0 cmFwJywgJ3NvdXJjZXMvcGdhZG1pbicsICdwZ2FkbWluLmFsZXJ0aWZ5anMnLCAnYnVuZGxlZF9j b2RlbWlycm9yJywKICAgJ3NvdXJjZXMvY2hlY2tfbm9kZV92aXNpYmlsaXR5JywgJ3NvdXJjZXMv bW9kaWZ5X2FuaW1hdGlvbicsICdwZ2FkbWluLmJyb3dzZXIudXRpbHMnLCAnd2Nkb2NrZXInLApA QCAtMTAsNiArMTEsNyBAQCBkZWZpbmUoJ3BnYWRtaW4uYnJvd3NlcicsIFsKICAgJ3NvdXJjZXMv Y29kZW1pcnJvci9hZGRvbi9mb2xkL3BnYWRtaW4tc3FsZm9sZGNvZGUnLAogICAncGdhZG1pbi5i cm93c2VyLmtleWJvYXJkJywKIF0sIGZ1bmN0aW9uKAorICB0cmVlLAogICBnZXR0ZXh0LCB1cmxf Zm9yLCByZXF1aXJlLCAkLCBfLCBTLCBCb290c3RyYXAsIHBnQWRtaW4sIEFsZXJ0aWZ5LAogICBj b2RlbWlycm9yLCBjaGVja05vZGVWaXNpYmlsaXR5LCBtb2RpZnlBbmltYXRpb24KICkgewpAQCAt ODYsNiArODgsNyBAQCBkZWZpbmUoJ3BnYWRtaW4uYnJvd3NlcicsIFsKICAgICAgIH0pOwogCiAg ICAgICBiLnRyZWUgPSAkKCcjdHJlZScpLmFjaVRyZWUoJ2FwaScpOworICAgICAgYi50cmVlTWVu dS5yZWdpc3RlcigkKCcjdHJlZScpKTsKICAgICB9OwogCiAgIC8vIEV4dGVuZCB0aGUgYnJvd3Nl ciBjbGFzcyBhdHRyaWJ1dGVzCkBAIC0xMDAsNiArMTAzLDcgQEAgZGVmaW5lKCdwZ2FkbWluLmJy b3dzZXInLCBbCiAgICAgZWRpdG9yOm51bGwsCiAgICAgLy8gTGVmdCBoYW5kIGJyb3dzZXIgdHJl ZQogICAgIHRyZWU6bnVsbCwKKyAgICB0cmVlTWVudTogbmV3IHRyZWUuVHJlZSgpLAogICAgIC8v IGxpc3Qgb2Ygc2NyaXB0IHRvIGJlIGxvYWRlZCwgd2hlbiBhIGNlcnRhaW4gdHlwZSBvZiBub2Rl IGlzIGxvYWRlZAogICAgIC8vIEl0IHdpbGwgYmUgdXNlZCB0byByZWdpc3RlciBleHRlbnNpb25z LCB0b29scywgY2hpbGQgbm9kZSBzY3JpcHRzLAogICAgIC8vIGV0Yy4KZGlmZiAtLWdpdCBhL3dl Yi9wZ2FkbWluL3N0YXRpYy9qcy90cmVlL3RyZWUuanMgYi93ZWIvcGdhZG1pbi9zdGF0aWMvanMv dHJlZS90cmVlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwLi45NzRlZThk ZQotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL3N0YXRpYy9qcy90cmVlL3RyZWUuanMK QEAgLTAsMCArMSwyMTQgQEAKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisvLworLy8gcGdBZG1pbiA0IC0g UG9zdGdyZVNRTCBUb29scworLy8KKy8vIENvcHlyaWdodCAoQykgMjAxMyAtIDIwMTgsIFRoZSBw Z0FkbWluIERldmVsb3BtZW50IFRlYW0KKy8vIFRoaXMgc29mdHdhcmUgaXMgcmVsZWFzZWQgdW5k ZXIgdGhlIFBvc3RncmVTUUwgTGljZW5jZQorLy8KKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisKK2V4cG9y dCBjbGFzcyBUcmVlTm9kZSB7CisgIGNvbnN0cnVjdG9yKGlkLCBkYXRhLCBkb21Ob2RlLCBwYXJl bnQpIHsKKyAgICB0aGlzLmlkID0gaWQ7CisgICAgdGhpcy5kYXRhID0gZGF0YTsKKyAgICB0aGlz LnNldFBhcmVudChwYXJlbnQpOworICAgIHRoaXMuY2hpbGRyZW4gPSBbXTsKKyAgICB0aGlzLmRv bU5vZGUgPSBkb21Ob2RlOworICB9CisKKyAgaGFzUGFyZW50KCkgeworICAgIHJldHVybiB0aGlz LnBhcmVudE5vZGUgIT09IG51bGwgJiYgdGhpcy5wYXJlbnROb2RlICE9PSB1bmRlZmluZWQ7Cisg IH0KKworICBwYXJlbnQoKSB7CisgICAgcmV0dXJuIHRoaXMucGFyZW50Tm9kZTsKKyAgfQorCisg IHNldFBhcmVudChwYXJlbnQpIHsKKyAgICB0aGlzLnBhcmVudE5vZGUgPSBwYXJlbnQ7CisgICAg dGhpcy5wYXRoID0gdGhpcy5pZDsKKyAgICBpZiAocGFyZW50ICE9PSBudWxsICYmIHBhcmVudCAh PT0gdW5kZWZpbmVkICYmIHBhcmVudC5wYXRoICE9PSB1bmRlZmluZWQpIHsKKyAgICAgIHRoaXMu cGF0aCA9IHBhcmVudC5wYXRoICsgJy4nICsgdGhpcy5pZDsKKyAgICB9CisgIH0KKworICBnZXRE YXRhKCkgeworICAgIGlmICh0aGlzLmRhdGEgPT09IHVuZGVmaW5lZCkgeworICAgICAgcmV0dXJu IHVuZGVmaW5lZDsKKyAgICB9IGVsc2UgaWYgKHRoaXMuZGF0YSA9PT0gbnVsbCkgeworICAgICAg cmV0dXJuIG51bGw7CisgICAgfQorICAgIHJldHVybiBPYmplY3QuYXNzaWduKHt9LCB0aGlzLmRh dGEpOworICB9CisKKyAgZ2V0SHRtbElkZW50aWZpZXIoKSB7CisgICAgcmV0dXJuIHRoaXMuZG9t Tm9kZTsKKyAgfQorCisgIHJlbG9hZCh0cmVlKSB7CisgICAgdGhpcy51bmxvYWQodHJlZSk7Cisg ICAgdHJlZS5hY2lUcmVlQXBpLnNldElub2RlKHRoaXMuZG9tTm9kZSk7CisgICAgdHJlZS5hY2lU cmVlQXBpLmRlc2VsZWN0KHRoaXMuZG9tTm9kZSk7CisgICAgc2V0VGltZW91dCgoKSA9PiB7Cisg ICAgICB0cmVlLnNlbGVjdE5vZGUodGhpcy5kb21Ob2RlKTsKKyAgICB9LCAwKTsKKyAgfQorCisg IHVubG9hZCh0cmVlKSB7CisgICAgdGhpcy5jaGlsZHJlbiA9IFtdOworICAgIHRyZWUuYWNpVHJl ZUFwaS51bmxvYWQodGhpcy5kb21Ob2RlKTsKKyAgfQorCisgIGFueVBhcmVudChjb25kaXRpb24p IHsKKyAgICBsZXQgbm9kZSA9IHRoaXM7CisKKyAgICB3aGlsZSAobm9kZS5oYXNQYXJlbnQoKSkg eworICAgICAgbm9kZSA9IG5vZGUucGFyZW50KCk7CisgICAgICBpZiAoY29uZGl0aW9uKG5vZGUp KSB7CisgICAgICAgIHJldHVybiB0cnVlOworICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBm YWxzZTsKKyAgfQorCisgIC8qKgorICAgKiBHaXZlbiBhIGNvbmRpdGlvbiByZXR1cm5zIHRydWUg aWYgdGhlIGN1cnJlbnQgbm9kZQorICAgKiBvciBhbnkgb2YgdGhlIHBhcmVudCBub2RlcyBjb25k aXRpb24gcmVzdWx0IGlzIHRydWUKKyAgICovCisgIGFueUZhbWlseU1lbWJlcihjb25kaXRpb24p IHsKKyAgICBpZihjb25kaXRpb24odGhpcykpIHsKKyAgICAgIHJldHVybiB0cnVlOworICAgIH0K KworICAgIHJldHVybiB0aGlzLmFueVBhcmVudChjb25kaXRpb24pOworICB9Cit9CisKK2V4cG9y dCBjbGFzcyBUcmVlIHsKKyAgY29uc3RydWN0b3IoKSB7CisgICAgdGhpcy5yb290Tm9kZSA9IG5l dyBUcmVlTm9kZSh1bmRlZmluZWQsIHt9KTsKKyAgICB0aGlzLmFjaVRyZWVBcGkgPSB1bmRlZmlu ZWQ7CisgIH0KKworICBhZGROZXdOb2RlKGlkLCBkYXRhLCBkb21Ob2RlLCBwYXJlbnRQYXRoKSB7 CisgICAgY29uc3QgcGFyZW50ID0gdGhpcy5maW5kTm9kZShwYXJlbnRQYXRoKTsKKyAgICByZXR1 cm4gdGhpcy5jcmVhdGVPclVwZGF0ZU5vZGUoaWQsIGRhdGEsIHBhcmVudCwgZG9tTm9kZSk7Cisg IH0KKworICBmaW5kTm9kZShwYXRoKSB7CisgICAgaWYgKHBhdGggPT09IG51bGwgfHwgcGF0aCA9 PT0gdW5kZWZpbmVkIHx8IHBhdGgubGVuZ3RoID09PSAwKSB7CisgICAgICByZXR1cm4gdGhpcy5y b290Tm9kZTsKKyAgICB9CisgICAgcmV0dXJuIGZpbmRJblRyZWUodGhpcy5yb290Tm9kZSwgcGF0 aC5qb2luKCcuJykpOworICB9CisKKyAgZmluZE5vZGVCeURvbUVsZW1lbnQoZG9tRWxlbWVudCkg eworICAgIGNvbnN0IHBhdGggPSB0aGlzLnRyYW5zbGF0ZVRyZWVOb2RlSWRGcm9tQUNJVHJlZShk b21FbGVtZW50KTsKKyAgICBpZighcGF0aCB8fCAhcGF0aFswXSkgeworICAgICAgcmV0dXJuIHVu ZGVmaW5lZDsKKyAgICB9CisKKyAgICByZXR1cm4gdGhpcy5maW5kTm9kZShwYXRoKTsKKyAgfQor CisgIHNlbGVjdGVkKCkgeworICAgIHJldHVybiB0aGlzLmFjaVRyZWVBcGkuc2VsZWN0ZWQoKTsK KyAgfQorCisgIHNlbGVjdE5vZGUoYWNpVHJlZUlkZW50aWZpZXIpIHsKKyAgICB0aGlzLmFjaVRy ZWVBcGkuc2VsZWN0KGFjaVRyZWVJZGVudGlmaWVyKTsKKyAgfQorCisgIGNyZWF0ZU9yVXBkYXRl Tm9kZShpZCwgZGF0YSwgcGFyZW50LCBkb21Ob2RlKSB7CisgICAgbGV0IG9sZE5vZGVQYXRoID0g W2lkXTsKKyAgICBpZihwYXJlbnQgIT09IG51bGwgJiYgcGFyZW50ICE9PSB1bmRlZmluZWQpIHsK KyAgICAgIG9sZE5vZGVQYXRoID0gW3BhcmVudC5wYXRoLCBpZF07CisgICAgfQorICAgIGNvbnN0 IG9sZE5vZGUgPSB0aGlzLmZpbmROb2RlKG9sZE5vZGVQYXRoKTsKKyAgICBpZiAob2xkTm9kZSAh PT0gbnVsbCkgeworICAgICAgb2xkTm9kZS5kYXRhID0gT2JqZWN0LmFzc2lnbih7fSwgZGF0YSk7 CisgICAgICByZXR1cm4gb2xkTm9kZTsKKyAgICB9CisKKyAgICBjb25zdCBub2RlID0gbmV3IFRy ZWVOb2RlKGlkLCBkYXRhLCBkb21Ob2RlLCBwYXJlbnQpOworICAgIGlmIChwYXJlbnQgPT09IHRo aXMucm9vdE5vZGUpIHsKKyAgICAgIG5vZGUucGFyZW50Tm9kZSA9IG51bGw7CisgICAgfQorICAg IHBhcmVudC5jaGlsZHJlbi5wdXNoKG5vZGUpOworICAgIHJldHVybiBub2RlOworICB9CisKKyAg LyoqCisgICAqIEdpdmVuIHRoZSBKUXVlcnkgb2JqZWN0IHRoYXQgY29udGFpbnMgdGhlIEFDSSBU cmVlCisgICAqIHRoaXMgbWV0aG9kIGlzIHJlc3BvbnNpYmxlIGZvciByZWdpc3RlcmluZyB0aGlz IHRyZWUgY2xhc3MKKyAgICogdG8gbGlzdGVuIHRvIGFsbCB0aGUgZXZlbnRzIHRoYXQgaGFwcGVu IGluIHRoZSBBQ0kgVHJlZS4KKyAgICoKKyAgICogQXQgdGhpcyBwb2ludCBpbiB0aW1lIHRoZSBv bmx5IGV2ZW50IHRoYXQgd2UgY2FyZSBhYm91dCBpcworICAgKiB0aGUgYWRkaXRpb24gb2YgYSBu ZXcgbm9kZS4KKyAgICogVGhlIGZ1bmN0aW9uIHdpbGwgY3JlYXRlIGEgbmV3IHRyZWUgbm9kZSB0 byBzdG9yZSB0aGUgaW5mb3JtYXRpb24KKyAgICogdGhhdCBleGlzdCBpbiB0aGUgQUNJIGZvciBp dC4KKyAgICovCisgIHJlZ2lzdGVyKCR0cmVlSlF1ZXJ5KSB7CisgICAgJHRyZWVKUXVlcnkub24o J2FjaXRyZWUnLCBmdW5jdGlvbiAoZXZlbnQsIGFwaSwgaXRlbSwgZXZlbnROYW1lKSB7CisgICAg ICBpZiAoYXBpLmlzSXRlbShpdGVtKSkgeworICAgICAgICBpZiAoZXZlbnROYW1lID09PSAnYWRk ZWQnKSB7CisgICAgICAgICAgY29uc3QgaWQgPSBhcGkuZ2V0SWQoaXRlbSk7CisgICAgICAgICAg Y29uc3QgZGF0YSA9IGFwaS5pdGVtRGF0YShpdGVtKTsKKyAgICAgICAgICBjb25zdCBwYXJlbnRJ ZCA9IHRoaXMudHJhbnNsYXRlVHJlZU5vZGVJZEZyb21BQ0lUcmVlKGFwaS5wYXJlbnQoaXRlbSkp OworICAgICAgICAgIHRoaXMuYWRkTmV3Tm9kZShpZCwgZGF0YSwgaXRlbSwgcGFyZW50SWQpOwor ICAgICAgICB9CisgICAgICB9CisgICAgfS5iaW5kKHRoaXMpKTsKKyAgICB0aGlzLmFjaVRyZWVB cGkgPSAkdHJlZUpRdWVyeS5hY2lUcmVlKCdhcGknKTsKKyAgfQorCisgIC8qKgorICAgKiBBcyB0 aGUgbmFtZSBoaW50cyB0aGlzIGZ1bmN0aW9ucyB3b3JrcyBhcyBhIGxheWVyIGluIGJldHdlZW4g QUNJIGFuZAorICAgKiB0aGUgYWRhcHRvci4gR2l2ZW4gYSBBQ0lUcmVlIEpRdWVyeSBub2RlIGZp bmQgdGhlIGxvY2F0aW9uIG9mIGl0IGluIHRoZQorICAgKiBUcmVlIGFuZCB0aGVuIHJldHVybnMg YW5kIGFycmF5IHdpdGggdGhlIHBhdGggdG8gdG8gdGhlIFRyZWUgTm9kZSBpbgorICAgKiBxdWVz dGlvbgorICAgKgorICAgKiBUaGlzIGlzIG5vdCBvcHRpbWl6ZWQgYW5kIHdpbGwgYWx3YXlzIGdv IHRocm91Z2ggdGhlIGZ1bGwgdHJlZQorICAgKi8KKyAgdHJhbnNsYXRlVHJlZU5vZGVJZEZyb21B Q0lUcmVlKGFjaVRyZWVOb2RlKSB7CisgICAgbGV0IGN1cnJlbnRUcmVlTm9kZSA9IGFjaVRyZWVO b2RlOworICAgIGxldCBwYXRoID0gW107CisgICAgd2hpbGUgKGN1cnJlbnRUcmVlTm9kZSAhPT0g bnVsbCAmJiBjdXJyZW50VHJlZU5vZGUgIT09IHVuZGVmaW5lZCAmJiBjdXJyZW50VHJlZU5vZGUu bGVuZ3RoID4gMCkgeworICAgICAgcGF0aC51bnNoaWZ0KHRoaXMuYWNpVHJlZUFwaS5nZXRJZChj dXJyZW50VHJlZU5vZGUpKTsKKyAgICAgIGlmICh0aGlzLmFjaVRyZWVBcGkuaGFzUGFyZW50KGN1 cnJlbnRUcmVlTm9kZSkpIHsKKyAgICAgICAgY3VycmVudFRyZWVOb2RlID0gdGhpcy5hY2lUcmVl QXBpLnBhcmVudChjdXJyZW50VHJlZU5vZGUpOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgYnJl YWs7CisgICAgICB9CisgICAgfQorICAgIHJldHVybiBwYXRoOworICB9Cit9CisKK2V4cG9ydCBs ZXQgdHJlZSA9IG5ldyBUcmVlKCk7CisKKy8qKgorICogR2l2ZW4gYW4gaW5pdGlhbCBub2RlIGFu ZCBhIHBhdGgsIGl0IHdpbGwgbmF2aWdhdGUgdGhyb3VnaAorICogdGhlIG5ldyB0cmVlIHRvIGZp bmQgdGhlIG5vZGUgdGhhdCBtYXRjaGVzIHRoZSBwYXRoCisgKi8KK2Z1bmN0aW9uIGZpbmRJblRy ZWUocm9vdE5vZGUsIHBhdGgpIHsKKyAgaWYgKHBhdGggPT09IG51bGwpIHsKKyAgICByZXR1cm4g cm9vdE5vZGU7CisgIH0KKworICByZXR1cm4gKGZ1bmN0aW9uIGZpbmRJbk5vZGUoY3VycmVudE5v ZGUpIHsKKyAgICBmb3IgKGxldCBpID0gMCwgbGVuZ3RoID0gY3VycmVudE5vZGUuY2hpbGRyZW4u bGVuZ3RoOyBpIDwgbGVuZ3RoOyBpKyspIHsKKyAgICAgIGNvbnN0IGNhbGN1bGF0ZWROb2RlID0g ZmluZEluTm9kZShjdXJyZW50Tm9kZS5jaGlsZHJlbltpXSk7CisgICAgICBpZiAoY2FsY3VsYXRl ZE5vZGUgIT09IG51bGwpIHsKKyAgICAgICAgcmV0dXJuIGNhbGN1bGF0ZWROb2RlOworICAgICAg fQorICAgIH0KKworICAgIGlmIChjdXJyZW50Tm9kZS5wYXRoID09PSBwYXRoKSB7CisgICAgICBy ZXR1cm4gY3VycmVudE5vZGU7CisgICAgfSBlbHNlIHsKKyAgICAgIHJldHVybiBudWxsOworICAg IH0KKyAgfSkocm9vdE5vZGUpOworfQpkaWZmIC0tZ2l0IGEvd2ViL3JlZ3Jlc3Npb24vamF2YXNj cmlwdC90cmVlL3RyZWVfZmFrZS5qcyBiL3dlYi9yZWdyZXNzaW9uL2phdmFzY3JpcHQvdHJlZS90 cmVlX2Zha2UuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAuLmIyODVhNDVm Ci0tLSAvZGV2L251bGwKKysrIGIvd2ViL3JlZ3Jlc3Npb24vamF2YXNjcmlwdC90cmVlL3RyZWVf ZmFrZS5qcwpAQCAtMCwwICsxLDY5IEBACisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisvLworLy8gcGdBZG1pbiA0IC0gUG9zdGdy ZVNRTCBUb29scworLy8KKy8vIENvcHlyaWdodCAoQykgMjAxMyAtIDIwMTgsIFRoZSBwZ0FkbWlu IERldmVsb3BtZW50IFRlYW0KKy8vIFRoaXMgc29mdHdhcmUgaXMgcmVsZWFzZWQgdW5kZXIgdGhl IFBvc3RncmVTUUwgTGljZW5jZQorLy8KKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisKK2ltcG9ydCB7VHJlZX0gZnJvbSAnLi4v Li4vLi4vcGdhZG1pbi9zdGF0aWMvanMvdHJlZS90cmVlJzsKKworZXhwb3J0IGNsYXNzIFRyZWVG YWtlIGV4dGVuZHMgVHJlZSB7CisgIGNvbnN0cnVjdG9yKCkgeworICAgIHN1cGVyKCk7CisgICAg dGhpcy5hY2lUcmVlVG9PdXJUcmVlVHJhbnNsYXRvciA9IHt9OworICAgIHRoaXMuYWNpVHJlZUFw aSA9IGphc21pbmUuY3JlYXRlU3B5T2JqKAorICAgICAgWydBQ0lUcmVlQXBpJ10sIFsnc2V0SW5v ZGUnLCAndW5sb2FkJywgJ2Rlc2VsZWN0JywgJ3NlbGVjdCddKTsKKyAgfQorCisgIGFkZE5ld05v ZGUoaWQsIGRhdGEsIGRvbU5vZGUsIHBhdGgpIHsKKyAgICB0aGlzLmFjaVRyZWVUb091clRyZWVU cmFuc2xhdG9yW2lkXSA9IFtpZF07CisgICAgaWYgKHBhdGggIT09IG51bGwgJiYgcGF0aCAhPT0g dW5kZWZpbmVkKSB7CisgICAgICB0aGlzLmFjaVRyZWVUb091clRyZWVUcmFuc2xhdG9yW2lkXSA9 IHBhdGguY29uY2F0KGlkKTsKKyAgICB9CisgICAgcmV0dXJuIHN1cGVyLmFkZE5ld05vZGUoaWQs IGRhdGEsIGRvbU5vZGUsIHBhdGgpOworICB9CisKKyAgYWRkQ2hpbGQocGFyZW50LCBjaGlsZCkg eworICAgIGNoaWxkLnNldFBhcmVudChwYXJlbnQpOworICAgIHRoaXMuYWNpVHJlZVRvT3VyVHJl ZVRyYW5zbGF0b3JbY2hpbGQuaWRdID0gdGhpcy5hY2lUcmVlVG9PdXJUcmVlVHJhbnNsYXRvcltw YXJlbnQuaWRdLmNvbmNhdChjaGlsZC5pZCk7CisgICAgcGFyZW50LmNoaWxkcmVuLnB1c2goY2hp bGQpOworICB9CisKKyAgaGFzUGFyZW50KGFjaVRyZWVOb2RlKSB7CisgICAgcmV0dXJuIHRoaXMu dHJhbnNsYXRlVHJlZU5vZGVJZEZyb21BQ0lUcmVlKGFjaVRyZWVOb2RlKS5sZW5ndGggPiAxOwor ICB9CisKKyAgcGFyZW50KGFjaVRyZWVOb2RlKSB7CisgICAgaWYgKHRoaXMuaGFzUGFyZW50KGFj aVRyZWVOb2RlKSkgeworICAgICAgbGV0IHBhdGggPSB0aGlzLnRyYW5zbGF0ZVRyZWVOb2RlSWRG cm9tQUNJVHJlZShhY2lUcmVlTm9kZSk7CisgICAgICByZXR1cm4gW3tpZDogdGhpcy5maW5kTm9k ZShwYXRoKS5wYXJlbnQoKS5pZH1dOworICAgIH0KKworICAgIHJldHVybiBudWxsOworICB9CisK KyAgdHJhbnNsYXRlVHJlZU5vZGVJZEZyb21BQ0lUcmVlKGFjaVRyZWVOb2RlKSB7CisgICAgaWYo YWNpVHJlZU5vZGUgPT09IHVuZGVmaW5lZCB8fCBhY2lUcmVlTm9kZVswXSA9PT0gdW5kZWZpbmVk KSB7CisgICAgICByZXR1cm4gbnVsbDsKKyAgICB9CisgICAgcmV0dXJuIHRoaXMuYWNpVHJlZVRv T3VyVHJlZVRyYW5zbGF0b3JbYWNpVHJlZU5vZGVbMF0uaWRdOworICB9CisKKyAgaXRlbURhdGEo YWNpVHJlZU5vZGUpIHsKKyAgICBsZXQgbm9kZSA9IHRoaXMuZmluZE5vZGVCeURvbUVsZW1lbnQo YWNpVHJlZU5vZGUpOworICAgIGlmIChub2RlID09PSB1bmRlZmluZWQgfHwgbm9kZSA9PT0gbnVs bCkgeworICAgICAgcmV0dXJuIHVuZGVmaW5lZDsKKyAgICB9CisgICAgcmV0dXJuIG5vZGUuZ2V0 RGF0YSgpOworICB9CisKKyAgc2VsZWN0ZWQoKSB7CisgICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWRO b2RlOworICB9CisKKyAgc2VsZWN0Tm9kZShzZWxlY3RlZE5vZGUpIHsKKyAgICB0aGlzLnNlbGVj dGVkTm9kZSA9IHNlbGVjdGVkTm9kZTsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvd2ViL3JlZ3Jlc3Np b24vamF2YXNjcmlwdC90cmVlL3RyZWVfc3BlYy5qcyBiL3dlYi9yZWdyZXNzaW9uL2phdmFzY3Jp cHQvdHJlZS90cmVlX3NwZWMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAu LjE2NGNlYjViCi0tLSAvZGV2L251bGwKKysrIGIvd2ViL3JlZ3Jlc3Npb24vamF2YXNjcmlwdC90 cmVlL3RyZWVfc3BlYy5qcwpAQCAtMCwwICsxLDQyMSBAQAorLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKy8v CisvLyBwZ0FkbWluIDQgLSBQb3N0Z3JlU1FMIFRvb2xzCisvLworLy8gQ29weXJpZ2h0IChDKSAy MDEzIC0gMjAxOCwgVGhlIHBnQWRtaW4gRGV2ZWxvcG1lbnQgVGVhbQorLy8gVGhpcyBzb2Z0d2Fy ZSBpcyByZWxlYXNlZCB1bmRlciB0aGUgUG9zdGdyZVNRTCBMaWNlbmNlCisvLworLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8KKworaW1wb3J0IHtUcmVlLCBUcmVlTm9kZX0gZnJvbSAnLi4vLi4vLi4vcGdhZG1p bi9zdGF0aWMvanMvdHJlZS90cmVlJzsKK2ltcG9ydCB7VHJlZUZha2V9IGZyb20gJy4vdHJlZV9m YWtlJzsKKworY29uc3QgY29udGV4dCA9IGRlc2NyaWJlOworCitjb25zdCB0cmVlVGVzdHMgPSAo dHJlZUNsYXNzLCBzZXREZWZhdWx0Q2FsbEJhY2spID0+IHsKKyAgbGV0IHRyZWU7CisgIGJlZm9y ZUVhY2goKCkgPT4geworICAgIHRyZWUgPSBuZXcgdHJlZUNsYXNzKCk7CisgIH0pOworCisgIGRl c2NyaWJlKCcjYWRkTmV3Tm9kZScsICgpID0+IHsKKyAgICBkZXNjcmliZSgnd2hlbiBhZGQgYSBu ZXcgcm9vdCBlbGVtZW50JywgKCkgPT4geworICAgICAgY29udGV4dCgndXNpbmcgW10gYXMgdGhl IHBhcmVudCcsICgpID0+IHsKKyAgICAgICAgYmVmb3JlRWFjaCgoKSA9PiB7CisgICAgICAgICAg dHJlZS5hZGROZXdOb2RlKCdzb21lIG5ldyBub2RlJywge2RhdGE6ICdpbnRlcmVzdGluZyd9LCB1 bmRlZmluZWQsIFtdKTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgaXQoJ2NhbiBiZSByZXRyaWV2 ZWQnLCAoKSA9PiB7CisgICAgICAgICAgY29uc3Qgbm9kZSA9IHRyZWUuZmluZE5vZGUoWydzb21l IG5ldyBub2RlJ10pOworICAgICAgICAgIGV4cGVjdChub2RlLmRhdGEpLnRvRXF1YWwoe2RhdGE6 ICdpbnRlcmVzdGluZyd9KTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgaXQoJ3JldHVybiBmYWxz ZSBmb3IgI2hhc1BhcmVudCgpJywgKCkgPT4geworICAgICAgICAgIGNvbnN0IG5vZGUgPSB0cmVl LmZpbmROb2RlKFsnc29tZSBuZXcgbm9kZSddKTsKKyAgICAgICAgICBleHBlY3Qobm9kZS5oYXNQ YXJlbnQoKSkudG9CZShmYWxzZSk7CisgICAgICAgIH0pOworCisgICAgICAgIGl0KCdyZXR1cm4g bnVsbCBmb3IgI3BhcmVudCgpJywgKCkgPT4geworICAgICAgICAgIGNvbnN0IG5vZGUgPSB0cmVl LmZpbmROb2RlKFsnc29tZSBuZXcgbm9kZSddKTsKKyAgICAgICAgICBleHBlY3Qobm9kZS5wYXJl bnQoKSkudG9CZU51bGwoKTsKKyAgICAgICAgfSk7CisgICAgICB9KTsKKworICAgICAgY29udGV4 dCgndXNpbmcgbnVsbCBhcyB0aGUgcGFyZW50JywgKCkgPT4geworICAgICAgICBiZWZvcmVFYWNo KCgpID0+IHsKKyAgICAgICAgICB0cmVlLmFkZE5ld05vZGUoJ3NvbWUgbmV3IG5vZGUnLCB7ZGF0 YTogJ2ludGVyZXN0aW5nJ30sIHVuZGVmaW5lZCwgbnVsbCk7CisgICAgICAgIH0pOworCisgICAg ICAgIGl0KCdjYW4gYmUgcmV0cmlldmVkJywgKCkgPT4geworICAgICAgICAgIGNvbnN0IG5vZGUg PSB0cmVlLmZpbmROb2RlKFsnc29tZSBuZXcgbm9kZSddKTsKKyAgICAgICAgICBleHBlY3Qobm9k ZS5kYXRhKS50b0VxdWFsKHtkYXRhOiAnaW50ZXJlc3RpbmcnfSk7CisgICAgICAgIH0pOworCisg ICAgICAgIGl0KCdyZXR1cm4gZmFsc2UgZm9yICNoYXNQYXJlbnQoKScsICgpID0+IHsKKyAgICAg ICAgICBjb25zdCBub2RlID0gdHJlZS5maW5kTm9kZShbJ3NvbWUgbmV3IG5vZGUnXSk7CisgICAg ICAgICAgZXhwZWN0KG5vZGUuaGFzUGFyZW50KCkpLnRvQmUoZmFsc2UpOworICAgICAgICB9KTsK KworICAgICAgICBpdCgncmV0dXJuIG51bGwgZm9yICNwYXJlbnQoKScsICgpID0+IHsKKyAgICAg ICAgICBjb25zdCBub2RlID0gdHJlZS5maW5kTm9kZShbJ3NvbWUgbmV3IG5vZGUnXSk7CisgICAg ICAgICAgZXhwZWN0KG5vZGUucGFyZW50KCkpLnRvQmVOdWxsKCk7CisgICAgICAgIH0pOworICAg ICAgfSk7CisKKyAgICAgIGNvbnRleHQoJ3VzaW5nIHVuZGVmaW5lZCBhcyB0aGUgcGFyZW50Jywg KCkgPT4geworICAgICAgICBiZWZvcmVFYWNoKCgpID0+IHsKKyAgICAgICAgICB0cmVlLmFkZE5l d05vZGUoJ3NvbWUgbmV3IG5vZGUnLCB7ZGF0YTogJ2ludGVyZXN0aW5nJ30pOworICAgICAgICB9 KTsKKworICAgICAgICBpdCgnY2FuIGJlIHJldHJpZXZlZCcsICgpID0+IHsKKyAgICAgICAgICBj b25zdCBub2RlID0gdHJlZS5maW5kTm9kZShbJ3NvbWUgbmV3IG5vZGUnXSk7CisgICAgICAgICAg ZXhwZWN0KG5vZGUuZGF0YSkudG9FcXVhbCh7ZGF0YTogJ2ludGVyZXN0aW5nJ30pOworICAgICAg ICB9KTsKKworICAgICAgICBpdCgncmV0dXJuIGZhbHNlIGZvciAjaGFzUGFyZW50KCknLCAoKSA9 PiB7CisgICAgICAgICAgY29uc3Qgbm9kZSA9IHRyZWUuZmluZE5vZGUoWydzb21lIG5ldyBub2Rl J10pOworICAgICAgICAgIGV4cGVjdChub2RlLmhhc1BhcmVudCgpKS50b0JlKGZhbHNlKTsKKyAg ICAgICAgfSk7CisKKyAgICAgICAgaXQoJ3JldHVybiBudWxsIGZvciAjcGFyZW50KCknLCAoKSA9 PiB7CisgICAgICAgICAgY29uc3Qgbm9kZSA9IHRyZWUuZmluZE5vZGUoWydzb21lIG5ldyBub2Rl J10pOworICAgICAgICAgIGV4cGVjdChub2RlLnBhcmVudCgpKS50b0JlTnVsbCgpOworICAgICAg ICB9KTsKKyAgICAgIH0pOworICAgIH0pOworCisgICAgZGVzY3JpYmUoJ3doZW4gYWRkIGEgbmV3 IGVsZW1lbnQgYXMgYSBjaGlsZCcsICgpID0+IHsKKyAgICAgIGxldCBwYXJlbnROb2RlOworICAg ICAgYmVmb3JlRWFjaCgoKSA9PiB7CisgICAgICAgIHBhcmVudE5vZGUgPSB0cmVlLmFkZE5ld05v ZGUoJ3BhcmVudCBub2RlJywge2RhdGE6ICdwYXJlbnQgZGF0YSd9LCB1bmRlZmluZWQsIFtdKTsK KyAgICAgICAgdHJlZS5hZGROZXdOb2RlKCdzb21lIG5ldyBub2RlJywge2RhdGE6ICdpbnRlcmVz dGluZyd9LCB1bmRlZmluZWQsIFsncGFyZW50JyArCisgICAgICAgICcgbm9kZSddKTsKKyAgICAg IH0pOworCisgICAgICBpdCgnY2FuIGJlIHJldHJpZXZlZCcsICgpID0+IHsKKyAgICAgICAgY29u c3Qgbm9kZSA9IHRyZWUuZmluZE5vZGUoWydwYXJlbnQgbm9kZScsICdzb21lIG5ldyBub2RlJ10p OworICAgICAgICBleHBlY3Qobm9kZS5kYXRhKS50b0VxdWFsKHtkYXRhOiAnaW50ZXJlc3Rpbmcn fSk7CisgICAgICB9KTsKKworICAgICAgaXQoJ3JldHVybiB0cnVlIGZvciAjaGFzUGFyZW50KCkn LCAoKSA9PiB7CisgICAgICAgIGNvbnN0IG5vZGUgPSB0cmVlLmZpbmROb2RlKFsncGFyZW50IG5v ZGUnLCAnc29tZSBuZXcgbm9kZSddKTsKKyAgICAgICAgZXhwZWN0KG5vZGUuaGFzUGFyZW50KCkp LnRvQmUodHJ1ZSk7CisgICAgICB9KTsKKworICAgICAgaXQoJ3JldHVybiAicGFyZW50IG5vZGUi IG9iamVjdCBmb3IgI3BhcmVudCgpJywgKCkgPT4geworICAgICAgICBjb25zdCBub2RlID0gdHJl ZS5maW5kTm9kZShbJ3BhcmVudCBub2RlJywgJ3NvbWUgbmV3IG5vZGUnXSk7CisgICAgICAgIGV4 cGVjdChub2RlLnBhcmVudCgpKS50b0VxdWFsKHBhcmVudE5vZGUpOworICAgICAgfSk7CisgICAg fSk7CisKKyAgICBkZXNjcmliZSgnd2hlbiBhZGQgYW4gZWxlbWVudCB0aGF0IGFscmVhZHkgZXhp c3RzIHVuZGVyIGEgcGFyZW50JywgKCkgPT4geworICAgICAgYmVmb3JlRWFjaCgoKSA9PiB7Cisg ICAgICAgIHRyZWUuYWRkTmV3Tm9kZSgncGFyZW50IG5vZGUnLCB7ZGF0YTogJ3BhcmVudCBkYXRh J30sIHVuZGVmaW5lZCwgW10pOworICAgICAgICB0cmVlLmFkZE5ld05vZGUoJ3NvbWUgbmV3IG5v ZGUnLCB7ZGF0YTogJ2ludGVyZXN0aW5nJ30sIHVuZGVmaW5lZCwgWydwYXJlbnQnICsKKyAgICAg ICAgJyBub2RlJ10pOworICAgICAgfSk7CisKKyAgICAgIGl0KCdkb2VzIG5vdCBhZGQgYSBuZXcg Y2hpbGQnLCAoKSA9PiB7CisgICAgICAgIHRyZWUuYWRkTmV3Tm9kZSgnc29tZSBuZXcgbm9kZScs IHtkYXRhOiAnaW50ZXJlc3RpbmcgMSd9LCB1bmRlZmluZWQsIFsncGFyZW50JyArCisgICAgICAg ICcgbm9kZSddKTsKKyAgICAgICAgY29uc3QgcGFyZW50Tm9kZSA9IHRyZWUuZmluZE5vZGUoWydw YXJlbnQgbm9kZSddKTsKKyAgICAgICAgZXhwZWN0KHBhcmVudE5vZGUuY2hpbGRyZW4ubGVuZ3Ro KS50b0JlKDEpOworICAgICAgfSk7CisKKyAgICAgIGl0KCd1cGRhdGVzIHRoZSBleGlzdGluZyBu b2RlIGRhdGEnLCAoKSA9PiB7CisgICAgICAgIHRyZWUuYWRkTmV3Tm9kZSgnc29tZSBuZXcgbm9k ZScsIHtkYXRhOiAnaW50ZXJlc3RpbmcgMSd9LCB1bmRlZmluZWQsIFsncGFyZW50JyArCisgICAg ICAgICcgbm9kZSddKTsKKyAgICAgICAgY29uc3Qgbm9kZSA9IHRyZWUuZmluZE5vZGUoWydwYXJl bnQgbm9kZScsICdzb21lIG5ldyBub2RlJ10pOworICAgICAgICBleHBlY3Qobm9kZS5kYXRhKS50 b0VxdWFsKHtkYXRhOiAnaW50ZXJlc3RpbmcgMSd9KTsKKyAgICAgIH0pOworICAgIH0pOworICB9 KTsKKworICBkZXNjcmliZSgnI3RyYW5zbGF0ZVRyZWVOb2RlSWRGcm9tQUNJVHJlZScsICgpID0+ IHsKKyAgICBsZXQgYWNpVHJlZUFwaTsKKyAgICBiZWZvcmVFYWNoKCgpID0+IHsKKyAgICAgIGFj aVRyZWVBcGkgPSBqYXNtaW5lLmNyZWF0ZVNweU9iaignQUNJVHJlZUFwaScsIFsKKyAgICAgICAg J2hhc1BhcmVudCcsCisgICAgICAgICdwYXJlbnQnLAorICAgICAgICAnZ2V0SWQnLAorICAgICAg XSk7CisKKyAgICAgIGFjaVRyZWVBcGkuZ2V0SWQuYW5kLmNhbGxGYWtlKChub2RlKSA9PiB7Cisg ICAgICAgIHJldHVybiBub2RlWzBdLmlkOworICAgICAgfSk7CisgICAgICB0cmVlLmFjaVRyZWVB cGkgPSBhY2lUcmVlQXBpOworICAgIH0pOworCisgICAgZGVzY3JpYmUoJ1doZW4gdHJlZSBhcyBh IHNpbmdsZSBsZXZlbCcsICgpID0+IHsKKyAgICAgIGJlZm9yZUVhY2goKCkgPT4geworICAgICAg ICBhY2lUcmVlQXBpLmhhc1BhcmVudC5hbmQucmV0dXJuVmFsdWUoZmFsc2UpOworICAgICAgfSk7 CisKKyAgICAgIGl0KCdyZXR1cm5zIGFuIGFycmF5IHdpdGggdGhlIElEIG9mIHRoZSBmaXJzdCBs ZXZlbCcsICgpID0+IHsKKyAgICAgICAgbGV0IG5vZGUgPSBbeworICAgICAgICAgIGlkOiAnc29t ZSBpZCcsCisgICAgICAgIH1dOworICAgICAgICB0cmVlLmFkZE5ld05vZGUoJ3NvbWUgaWQnLCB7 fSwgdW5kZWZpbmVkLCBbXSk7CisKKyAgICAgICAgZXhwZWN0KHRyZWUudHJhbnNsYXRlVHJlZU5v ZGVJZEZyb21BQ0lUcmVlKG5vZGUpKS50b0VxdWFsKFsnc29tZSBpZCddKTsKKyAgICAgIH0pOwor ICAgIH0pOworCisgICAgZGVzY3JpYmUoJ1doZW4gdHJlZSBhcyBhIDIgbGV2ZWxzJywgKCkgPT4g eworICAgICAgZGVzY3JpYmUoJ1doZW4gd2UgdHJ5IHRvIHJldHJpZXZlIHRoZSBub2RlIGluIHRo ZSBzZWNvbmQgbGV2ZWwnLCAoKSA9PiB7CisgICAgICAgIGl0KCdyZXR1cm5zIGFuIGFycmF5IHdp dGggdGhlIElEIG9mIHRoZSBmaXJzdCBsZXZlbCBhbmQgc2Vjb25kIGxldmVsJywgKCkgPT4gewor ICAgICAgICAgIGFjaVRyZWVBcGkuaGFzUGFyZW50LmFuZC5yZXR1cm5WYWx1ZXModHJ1ZSwgZmFs c2UpOworICAgICAgICAgIGFjaVRyZWVBcGkucGFyZW50LmFuZC5yZXR1cm5WYWx1ZShbeworICAg ICAgICAgICAgaWQ6ICdwYXJlbnQgaWQnLAorICAgICAgICAgIH1dKTsKKyAgICAgICAgICBsZXQg bm9kZSA9IFt7CisgICAgICAgICAgICBpZDogJ3NvbWUgaWQnLAorICAgICAgICAgIH1dOworCisg ICAgICAgICAgdHJlZS5hZGROZXdOb2RlKCdwYXJlbnQgaWQnLCB7fSwgdW5kZWZpbmVkLCBbXSk7 CisgICAgICAgICAgdHJlZS5hZGROZXdOb2RlKCdzb21lIGlkJywge30sIHVuZGVmaW5lZCwgWydw YXJlbnQgaWQnXSk7CisKKyAgICAgICAgICBleHBlY3QodHJlZS50cmFuc2xhdGVUcmVlTm9kZUlk RnJvbUFDSVRyZWUobm9kZSkpCisgICAgICAgICAgICAudG9FcXVhbChbJ3BhcmVudCBpZCcsICdz b21lIGlkJ10pOworICAgICAgICB9KTsKKyAgICAgIH0pOworICAgIH0pOworICB9KTsKKworICBk ZXNjcmliZSgnI3NlbGVjdGVkJywgKCkgPT4geworICAgIGNvbnRleHQoJ2Egbm9kZSBpbiB0aGUg dHJlZSBpcyBzZWxlY3RlZCcsICgpID0+IHsKKyAgICAgIGl0KCdyZXR1cm5zIHRoYXQgbm9kZSBv YmplY3QnLCAoKSA9PiB7CisgICAgICAgIGxldCBzZWxlY3RlZE5vZGUgPSBuZXcgVHJlZU5vZGUo J2JhbW0nLCB7fSwgW10pOworICAgICAgICBzZXREZWZhdWx0Q2FsbEJhY2sodHJlZSwgc2VsZWN0 ZWROb2RlKTsKKyAgICAgICAgZXhwZWN0KHRyZWUuc2VsZWN0ZWQoKSkudG9FcXVhbChzZWxlY3Rl ZE5vZGUpOworICAgICAgfSk7CisgICAgfSk7CisgIH0pOworCisgIGRlc2NyaWJlKCcjZmluZE5v ZGVCeVRyZWVFbGVtZW50JywgKCkgPT4geworICAgIGNvbnRleHQoJ3JldHJpZXZlIGRhdGEgZnJv bSBub2RlIG5vdCBmb3VuZCcsICgpID0+IHsKKyAgICAgIGl0KCdyZXR1cm4gdW5kZWZpbmVkJywg KCkgPT4geworICAgICAgICBsZXQgYWNpVHJlZUFwaSA9IGphc21pbmUuY3JlYXRlU3B5T2JqKCdB Q0lUcmVlQXBpJywgWworICAgICAgICAgICdoYXNQYXJlbnQnLAorICAgICAgICAgICdwYXJlbnQn LAorICAgICAgICAgICdnZXRJZCcsCisgICAgICAgIF0pOworCisgICAgICAgIGFjaVRyZWVBcGku Z2V0SWQuYW5kLmNhbGxGYWtlKChub2RlKSA9PiB7CisgICAgICAgICAgcmV0dXJuIG5vZGVbMF0u aWQ7CisgICAgICAgIH0pOworICAgICAgICB0cmVlLmFjaVRyZWVBcGkgPSBhY2lUcmVlQXBpOwor ICAgICAgICBleHBlY3QodHJlZS5maW5kTm9kZUJ5RG9tRWxlbWVudChbJzxsaT5zb21ldGhpbmc8 L2xpPiddKSkudG9CZVVuZGVmaW5lZCgpOworICAgICAgfSk7CisgICAgfSk7CisgIH0pOworfTsK KworZGVzY3JpYmUoJ3RyZWUgdGVzdHMnLCAoKSA9PiB7CisgIGRlc2NyaWJlKCdUcmVlTm9kZScs ICgpID0+IHsKKyAgICBkZXNjcmliZSgnI2hhc1BhcmVudCcsICgpID0+IHsKKyAgICAgIGNvbnRl eHQoJ3BhcmVudCBpcyBudWxsJywgKCkgPT4geworICAgICAgICBpdCgncmV0dXJucyBmYWxzZScs ICgpID0+IHsKKyAgICAgICAgICBsZXQgdHJlZU5vZGUgPSBuZXcgVHJlZU5vZGUoJzEyMycsIHt9 LCBbXSwgbnVsbCk7CisgICAgICAgICAgZXhwZWN0KHRyZWVOb2RlLmhhc1BhcmVudCgpKS50b0Jl KGZhbHNlKTsKKyAgICAgICAgfSk7CisgICAgICB9KTsKKyAgICAgIGNvbnRleHQoJ3BhcmVudCBp cyB1bmRlZmluZWQnLCAoKSA9PiB7CisgICAgICAgIGl0KCdyZXR1cm5zIGZhbHNlJywgKCkgPT4g eworICAgICAgICAgIGxldCB0cmVlTm9kZSA9IG5ldyBUcmVlTm9kZSgnMTIzJywge30sIFtdLCB1 bmRlZmluZWQpOworICAgICAgICAgIGV4cGVjdCh0cmVlTm9kZS5oYXNQYXJlbnQoKSkudG9CZShm YWxzZSk7CisgICAgICAgIH0pOworICAgICAgfSk7CisgICAgICBjb250ZXh0KCdwYXJlbnQgZXhp c3RzJywgKCkgPT4geworICAgICAgICBpdCgncmV0dXJucyB0cnVlJywgKCkgPT4geworICAgICAg ICAgIGxldCBwYXJlbnROb2RlID0gbmV3IFRyZWVOb2RlKCc0NTYnLCB7fSwgW10pOworICAgICAg ICAgIGxldCB0cmVlTm9kZSA9IG5ldyBUcmVlTm9kZSgnMTIzJywge30sIFtdLCBwYXJlbnROb2Rl KTsKKyAgICAgICAgICBleHBlY3QodHJlZU5vZGUuaGFzUGFyZW50KCkpLnRvQmUodHJ1ZSk7Cisg ICAgICAgIH0pOworICAgICAgfSk7CisgICAgfSk7CisKKyAgICBkZXNjcmliZSgnI3JlbG9hZCcs ICgpID0+IHsKKyAgICAgIGxldCB0cmVlOworICAgICAgbGV0IGxldmVsMjsKKyAgICAgIGJlZm9y ZUVhY2goKCkgPT4geworICAgICAgICB0cmVlID0gbmV3IFRyZWVGYWtlKCk7CisgICAgICAgIHRy ZWUuYWRkTmV3Tm9kZSgnbGV2ZWwxJywge2RhdGE6ICdpbnRlcmVzdGluZyd9LCBbe2lkOiAnbGV2 ZWwxJ31dLCBbXSk7CisgICAgICAgIGxldmVsMiA9IHRyZWUuYWRkTmV3Tm9kZSgnbGV2ZWwyJywg e2RhdGE6ICdkYXRhJ30sIFt7aWQ6ICdsZXZlbDInfV0sIFsnbGV2ZWwxJ10pOworICAgICAgICB0 cmVlLmFkZE5ld05vZGUoJ2xldmVsMycsIHtkYXRhOiAnbW9yZSBkYXRhJ30sIFt7aWQ6ICdsZXZl bDMnfV0sIFsnbGV2ZWwxJywgJ2xldmVsMiddKTsKKworICAgICAgICB0cmVlLmFjaVRyZWVBcGkg PSBqYXNtaW5lLmNyZWF0ZVNweU9iaigKKyAgICAgICAgICAnQUNJVHJlZUFwaScsIFsnc2V0SW5v ZGUnLCAndW5sb2FkJywgJ2Rlc2VsZWN0JywgJ3NlbGVjdCddKTsKKyAgICAgIH0pOworCisgICAg ICBpdCgncmVsb2FkcyB0aGUgbm9kZSBhbmQgaXRzIGNoaWxkcmVuJywgKCkgPT4geworICAgICAg ICBsZXZlbDIucmVsb2FkKHRyZWUpOworICAgICAgICBleHBlY3QodHJlZS5maW5kTm9kZUJ5RG9t RWxlbWVudChbe2lkOiAnbGV2ZWwyJ31dKSkudG9FcXVhbChsZXZlbDIpOworICAgICAgfSk7CisK KyAgICAgIGl0KCdkb2VzIG5vdCByZWxvYWQgdGhlIGNoaWxkcmVuIG9mIG5vZGUnLCAoKSA9PiB7 CisgICAgICAgIGxldmVsMi5yZWxvYWQodHJlZSk7CisgICAgICAgIGV4cGVjdCh0cmVlLmZpbmRO b2RlQnlEb21FbGVtZW50KFt7aWQ6ICdsZXZlbDMnfV0pKS50b0JlTnVsbCgpOworICAgICAgfSk7 CisKKyAgICAgIGl0KCdzZWxlY3QgdGhlIG5vZGUnLCAoZG9uZSkgPT4geworICAgICAgICBsZXZl bDIucmVsb2FkKHRyZWUpOworICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHsKKyAgICAgICAgICBl eHBlY3QodHJlZS5zZWxlY3RlZCgpKS50b0VxdWFsKFt7aWQ6ICdsZXZlbDInfV0pOworICAgICAg ICAgIGRvbmUoKTsKKyAgICAgICAgfSwgMjApOworICAgICAgfSk7CisKKyAgICAgIGRlc2NyaWJl KCdBQ0lUcmVlIHNwZWNpZmljJywgKCkgPT4geworICAgICAgICBpdCgnc2V0cyB0aGUgY3VycmVu dCBub2RlIGFzIGEgSW5vZGUsIGNoYW5naW5nIHRoZSBJY29uIGJhY2sgdG8gKycsICgpID0+IHsK KyAgICAgICAgICBsZXZlbDIucmVsb2FkKHRyZWUpOworICAgICAgICAgIGV4cGVjdCh0cmVlLmFj aVRyZWVBcGkuc2V0SW5vZGUpLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKFt7aWQ6ICdsZXZlbDInfV0p OworICAgICAgICB9KTsKKworICAgICAgICBpdCgnZGVzZWxlY3QgdGhlIG5vZGUgYW5kIHNlbGVj dHMgaXQgYWdhaW4gdG8gdHJpZ2dlciBBQ0kgdHJlZScgKworICAgICAgICAgICcgZXZlbnRzJywg KGRvbmUpID0+IHsKKyAgICAgICAgICBsZXZlbDIucmVsb2FkKHRyZWUpOworICAgICAgICAgIHNl dFRpbWVvdXQoKCkgPT4geworICAgICAgICAgICAgZXhwZWN0KHRyZWUuYWNpVHJlZUFwaS5kZXNl bGVjdCkudG9IYXZlQmVlbkNhbGxlZFdpdGgoW3tpZDogJ2xldmVsMid9XSk7CisgICAgICAgICAg ICBkb25lKCk7CisgICAgICAgICAgfSwgMjApOworICAgICAgICB9KTsKKyAgICAgIH0pOworICAg IH0pOworCisgICAgZGVzY3JpYmUoJyN1bmxvYWQnLCAoKSA9PiB7CisgICAgICBsZXQgdHJlZTsK KyAgICAgIGxldCBsZXZlbDI7CisgICAgICBiZWZvcmVFYWNoKCgpID0+IHsKKyAgICAgICAgdHJl ZSA9IG5ldyBUcmVlRmFrZSgpOworICAgICAgICB0cmVlLmFkZE5ld05vZGUoJ2xldmVsMScsIHtk YXRhOiAnaW50ZXJlc3RpbmcnfSwgWyc8bGk+bGV2ZWwxPC9saT4nXSwgW10pOworICAgICAgICBs ZXZlbDIgPSB0cmVlLmFkZE5ld05vZGUoJ2xldmVsMicsIHtkYXRhOiAnZGF0YSd9LCBbJzxsaT5s ZXZlbDI8L2xpPiddLCBbJ2xldmVsMSddKTsKKyAgICAgICAgdHJlZS5hZGROZXdOb2RlKCdsZXZl bDMnLCB7ZGF0YTogJ21vcmUgZGF0YSd9LCBbJzxsaT5sZXZlbDM8L2xpPiddLCBbJ2xldmVsMScs ICdsZXZlbDInXSk7CisgICAgICAgIHRyZWUuYWNpVHJlZUFwaSA9IGphc21pbmUuY3JlYXRlU3B5 T2JqKCdBQ0lUcmVlQXBpJywgWyd1bmxvYWQnXSk7CisgICAgICB9KTsKKworICAgICAgaXQoJ3Vu bG9hZHMgdGhlIGNoaWxkcmVuIG9mIHRoZSBjdXJyZW50IG5vZGUnLCAoKSA9PiB7CisgICAgICAg IGxldmVsMi51bmxvYWQodHJlZSk7CisgICAgICAgIGV4cGVjdCh0cmVlLmZpbmROb2RlQnlEb21F bGVtZW50KFt7aWQ6ICdsZXZlbDInfV0pKS50b0VxdWFsKGxldmVsMik7CisgICAgICAgIGV4cGVj dCh0cmVlLmZpbmROb2RlQnlEb21FbGVtZW50KFt7aWQ6ICdsZXZlbDMnfV0pKS50b0JlTnVsbCgp OworICAgICAgfSk7CisKKyAgICAgIGl0KCdjYWxscyB1bmxvYWQgb24gdGhlIEFDSSBUcmVlJywg KCkgPT4geworICAgICAgICBsZXZlbDIudW5sb2FkKHRyZWUpOworICAgICAgICBleHBlY3QodHJl ZS5hY2lUcmVlQXBpLnVubG9hZCkudG9IYXZlQmVlbkNhbGxlZFdpdGgoWyc8bGk+bGV2ZWwyPC9s aT4nXSk7CisgICAgICB9KTsKKyAgICB9KTsKKyAgfSk7CisKKyAgZGVzY3JpYmUoJ1RyZWUnLCAo KSA9PiB7CisgICAgZnVuY3Rpb24gcmVhbFRyZWVTZWxlY3ROb2RlKHRyZWUsIHNlbGVjdGVkTm9k ZSkgeworICAgICAgbGV0IGFjaVRyZWVBcGkgPSBqYXNtaW5lLmNyZWF0ZVNweU9iaignQUNJVHJl ZUFwaScsIFsKKyAgICAgICAgJ3NlbGVjdGVkJywKKyAgICAgIF0pOworICAgICAgdHJlZS5hY2lU cmVlQXBpID0gYWNpVHJlZUFwaTsKKyAgICAgIGFjaVRyZWVBcGkuc2VsZWN0ZWQuYW5kLnJldHVy blZhbHVlKHNlbGVjdGVkTm9kZSk7CisgICAgfQorCisgICAgdHJlZVRlc3RzKFRyZWUsIHJlYWxU cmVlU2VsZWN0Tm9kZSk7CisgIH0pOworCisgIGRlc2NyaWJlKCdUcmVlRmFrZScsICgpID0+IHsK KyAgICBmdW5jdGlvbiBmYWtlVHJlZVNlbGVjdE5vZGUodHJlZSwgc2VsZWN0ZWROb2RlKSB7Cisg ICAgICB0cmVlLnNlbGVjdE5vZGUoc2VsZWN0ZWROb2RlKTsKKyAgICB9CisKKyAgICB0cmVlVGVz dHMoVHJlZUZha2UsIGZha2VUcmVlU2VsZWN0Tm9kZSk7CisKKyAgICBkZXNjcmliZSgnI2hhc1Bh cmVudCcsICgpID0+IHsKKyAgICAgIGNvbnRleHQoJ3RyZWUgY29udGFpbnMgbXVsdGlwbGUgbGV2 ZWxzJywgKCkgPT4geworICAgICAgICBsZXQgdHJlZTsKKyAgICAgICAgYmVmb3JlRWFjaCgoKSA9 PiB7CisgICAgICAgICAgdHJlZSA9IG5ldyBUcmVlRmFrZSgpOworICAgICAgICAgIHRyZWUuYWRk TmV3Tm9kZSgnbGV2ZWwxJywge2RhdGE6ICdpbnRlcmVzdGluZyd9LCB1bmRlZmluZWQsIFtdKTsK KyAgICAgICAgICB0cmVlLmFkZE5ld05vZGUoJ2xldmVsMicsIHtkYXRhOiAnaW50ZXJlc3Rpbmcn fSwgdW5kZWZpbmVkLCBbJ2xldmVsMSddKTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgY29udGV4 dCgnbm9kZSBpcyBhdCB0aGUgZmlyc3QgbGV2ZWwnLCAoKSA9PiB7CisgICAgICAgICAgaXQoJ3Jl dHVybnMgZmFsc2UnLCAoKSA9PiB7CisgICAgICAgICAgICBleHBlY3QodHJlZS5oYXNQYXJlbnQo W3tpZDogJ2xldmVsMSd9XSkpLnRvQmUoZmFsc2UpOworICAgICAgICAgIH0pOworICAgICAgICB9 KTsKKworICAgICAgICBjb250ZXh0KCdub2RlIGlzIGF0IHRoZSBzZWNvbmQgbGV2ZWwnLCAoKSA9 PiB7CisgICAgICAgICAgaXQoJ3JldHVybnMgdHJ1ZScsICgpID0+IHsKKyAgICAgICAgICAgIGV4 cGVjdCh0cmVlLmhhc1BhcmVudChbe2lkOiAnbGV2ZWwyJ31dKSkudG9CZSh0cnVlKTsKKyAgICAg ICAgICB9KTsKKyAgICAgICAgfSk7CisgICAgICB9KTsKKyAgICB9KTsKKworICAgIGRlc2NyaWJl KCcjcGFyZW50JywgKCkgPT4geworICAgICAgbGV0IHRyZWU7CisgICAgICBiZWZvcmVFYWNoKCgp ID0+IHsKKyAgICAgICAgdHJlZSA9IG5ldyBUcmVlRmFrZSgpOworICAgICAgICB0cmVlLmFkZE5l d05vZGUoJ2xldmVsMScsIHtkYXRhOiAnaW50ZXJlc3RpbmcnfSwgdW5kZWZpbmVkLCBbXSk7Cisg ICAgICAgIHRyZWUuYWRkTmV3Tm9kZSgnbGV2ZWwyJywge2RhdGE6ICdpbnRlcmVzdGluZyd9LCB1 bmRlZmluZWQsIFsnbGV2ZWwxJ10pOworICAgICAgfSk7CisKKyAgICAgIGNvbnRleHQoJ25vZGUg aXMgdGhlIHJvb3QnLCAoKSA9PiB7CisgICAgICAgIGl0KCdyZXR1cm5zIG51bGwnLCAoKSA9PiB7 CisgICAgICAgICAgZXhwZWN0KHRyZWUucGFyZW50KFt7aWQ6ICdsZXZlbDEnfV0pKS50b0JlTnVs bCgpOworICAgICAgICB9KTsKKyAgICAgIH0pOworCisgICAgICBjb250ZXh0KCdub2RlIGlzIG5v dCByb290JywgKCkgPT4geworICAgICAgICBpdCgncmV0dXJucyByb290IGVsZW1lbnQnLCAoKSA9 PiB7CisgICAgICAgICAgZXhwZWN0KHRyZWUucGFyZW50KFt7aWQ6ICdsZXZlbDInfV0pKS50b0Vx dWFsKFt7aWQ6ICdsZXZlbDEnfV0pOworICAgICAgICB9KTsKKyAgICAgIH0pOworICAgIH0pOwor CisgICAgZGVzY3JpYmUoJyNpdGVtRGF0YScsICgpID0+IHsKKyAgICAgIGxldCB0cmVlOworICAg ICAgYmVmb3JlRWFjaCgoKSA9PiB7CisgICAgICAgIHRyZWUgPSBuZXcgVHJlZUZha2UoKTsKKyAg ICAgICAgdHJlZS5hZGROZXdOb2RlKCdsZXZlbDEnLCB7ZGF0YTogJ2ludGVyZXN0aW5nJ30sIHVu ZGVmaW5lZCwgW10pOworICAgICAgICB0cmVlLmFkZE5ld05vZGUoJ2xldmVsMicsIHtkYXRhOiAn ZXhwZWN0ZWQgZGF0YSd9LCB1bmRlZmluZWQsIFsnbGV2ZWwxJ10pOworICAgICAgfSk7CisKKyAg ICAgIGNvbnRleHQoJ3JldHJpZXZlIGRhdGEgZnJvbSB0aGUgbm9kZScsICgpID0+IHsKKyAgICAg ICAgaXQoJ3JldHVybiB0aGUgbm9kZSBkYXRhJywgKCkgPT4geworICAgICAgICAgIGV4cGVjdCh0 cmVlLml0ZW1EYXRhKFt7aWQ6ICdsZXZlbDInfV0pKS50b0VxdWFsKHsKKyAgICAgICAgICAgIGRh dGE6ICdleHBlY3RlZCcgKworICAgICAgICAgICAgJyBkYXRhJywKKyAgICAgICAgICB9KTsKKyAg ICAgICAgfSk7CisgICAgICB9KTsKKworICAgICAgY29udGV4dCgncmV0cmlldmUgZGF0YSBmcm9t IG5vZGUgbm90IGZvdW5kJywgKCkgPT4geworICAgICAgICBpdCgncmV0dXJuIHVuZGVmaW5lZCcs ICgpID0+IHsKKyAgICAgICAgICBleHBlY3QodHJlZS5pdGVtRGF0YShbe2lkOiAnYmFtbSd9XSkp LnRvQmVVbmRlZmluZWQoKTsKKyAgICAgICAgfSk7CisgICAgICB9KTsKKyAgICB9KTsKKworICAg IGRlc2NyaWJlKCcjYWRkQ2hpbGQnLCAoKSA9PiB7CisgICAgICBsZXQgcm9vdCwgY2hpbGQ7Cisg ICAgICBiZWZvcmVFYWNoKCgpID0+IHsKKyAgICAgICAgbGV0IHRyZWUgPSBuZXcgVHJlZUZha2Uo KTsKKyAgICAgICAgcm9vdCA9IHRyZWUuYWRkTmV3Tm9kZSgncm9vdCcsIHt9LCBbe2lkOiAncm9v dCd9XSk7CisgICAgICAgIGNoaWxkID0gbmV3IFRyZWVOb2RlKCdub2RlLjEnLCB7fSwgW3tpZDog J25vZGUuMSd9XSk7CisgICAgICAgIHRyZWUuYWRkQ2hpbGQocm9vdCwgY2hpbGQpOworICAgICAg fSk7CisKKyAgICAgIGl0KCdhZGRzIGEgbmV3IGNoaWxkIHRvIGEgbm9kZScsICgpID0+IHsKKyAg ICAgICAgZXhwZWN0KHJvb3QuY2hpbGRyZW4pLnRvRXF1YWwoW2NoaWxkXSk7CisgICAgICB9KTsK KworICAgICAgaXQoJ2NoYW5nZXMgdGhlIHBhcmVudCBvZiB0aGUgY2hpbGQgbm9kZScsICgpID0+ IHsKKyAgICAgICAgZXhwZWN0KHJvb3QuY2hpbGRyZW5bMF0ucGFyZW50Tm9kZSkudG9FcXVhbChy b290KTsKKyAgICAgICAgZXhwZWN0KGNoaWxkLnBhcmVudE5vZGUpLnRvRXF1YWwocm9vdCk7Cisg ICAgICB9KTsKKworICAgICAgaXQoJ2NoYW5nZXMgdGhlIHBhdGggb2YgdGhlIGNoaWxkJywgKCkg PT4geworICAgICAgICBleHBlY3QoY2hpbGQucGF0aCkudG9FcXVhbCgncm9vdC5ub2RlLjEnKTsK KyAgICAgIH0pOworICAgIH0pOworICB9KTsKK30pOworCi0tIAoyLjE2LjIKCg== --00000000000053c199056b687e7b Content-Type: application/octet-stream; name="0004-Architectural-change.patch" Content-Disposition: attachment; filename="0004-Architectural-change.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_jgsi9o733 ZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2Rh dGFiYXNlcy9zY2hlbWFzL3N0YXRpYy9qcy9zY2hlbWEuanMgYi93ZWIvcGdhZG1pbi9icm93c2Vy L3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9zdGF0aWMvanMvc2NoZW1h LmpzCmluZGV4IGEwOTYxMGFkLi42ZDAwMzU3OCAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vYnJv d3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvc3RhdGljL2pzL3Nj aGVtYS5qcworKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9k YXRhYmFzZXMvc2NoZW1hcy9zdGF0aWMvanMvc2NoZW1hLmpzCkBAIC0xLDcgKzEsNyBAQAogZGVm aW5lKCdwZ2FkbWluLm5vZGUuc2NoZW1hJywgWwogICAnc291cmNlcy9nZXR0ZXh0JywgJ3NvdXJj ZXMvdXJsX2ZvcicsICdqcXVlcnknLCAndW5kZXJzY29yZScsCiAgICdzb3VyY2VzL3BnYWRtaW4n LCAncGdhZG1pbi5icm93c2VyJywgJ3BnYWRtaW4uYmFja2Zvcm0nLCAncGdhZG1pbi5iYWNrZ3Jp ZCcsCi0gICdwZ2FkbWluLm5vZGUuc2NoZW1hLmRpci9jYW5fZHJvcF9jaGlsZCcsCisgICdzb3Vy Y2VzL3NjaGVtYS9jYW5fZHJvcF9jaGlsZCcsCiAgICdwZ2FkbWluLmJyb3dzZXIuY29sbGVjdGlv bicsICdwZ2FkbWluLmJyb3dzZXIuc2VydmVyLnByaXZpbGVnZScsCiBdLCBmdW5jdGlvbihnZXR0 ZXh0LCB1cmxfZm9yLCAkLCBfLCBwZ0FkbWluLCBwZ0Jyb3dzZXIsIEJhY2tmb3JtLCBCYWNrZ3Jp ZCwKIGNhbkRyb3BDaGlsZCkgewpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2 ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3N0YXRpYy9qcy90YWJs ZS5qcyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNl cy9zY2hlbWFzL3RhYmxlcy9zdGF0aWMvanMvdGFibGUuanMKaW5kZXggMDhiYjQ3YjcuLjgxMmQ4 OGM0IDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVy cy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvc3RhdGljL2pzL3RhYmxlLmpzCisrKyBiL3dlYi9w Z2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3Rh Ymxlcy9zdGF0aWMvanMvdGFibGUuanMKQEAgLTEsOSArMSw5IEBACiBkZWZpbmUoJ3BnYWRtaW4u bm9kZS50YWJsZScsIFsKLSAgJ3BnYWRtaW4udGFibGVzLmpzL2VuYWJsZV9kaXNhYmxlX3RyaWdn ZXJzJywKKyAgJ3NvdXJjZXMvdGFibGUvZW5hYmxlX2Rpc2FibGVfdHJpZ2dlcnMnLAogICAnc291 cmNlcy9nZXR0ZXh0JywgJ3NvdXJjZXMvdXJsX2ZvcicsICdqcXVlcnknLCAndW5kZXJzY29yZScs CiAgICd1bmRlcnNjb3JlLnN0cmluZycsICdzb3VyY2VzL3BnYWRtaW4nLCAncGdhZG1pbi5icm93 c2VyJywKICAgJ3BnYWRtaW4uYWxlcnRpZnlqcycsICdwZ2FkbWluLmJhY2tmb3JtJywgJ3BnYWRt aW4uYmFja2dyaWQnLAotICAncGdhZG1pbi50YWJsZXMuanMvc2hvd19hZHZhbmNlZF90YWInLAor ICAnc291cmNlcy90YWJsZS9zaG93X2FkdmFuY2VkX3RhYicsCiAgICdzb3VyY2VzL21lbnUvY2Fu X2NyZWF0ZScsCiAKICAgJ3BnYWRtaW4uYnJvd3Nlci5jb2xsZWN0aW9uJywgJ3BnYWRtaW4ubm9k ZS5jb2x1bW4nLApkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vc3RhdGljL2pzL2FsZXJ0aWZ5L2Rp YWxvZ19mYWN0b3J5LmpzIGIvd2ViL3BnYWRtaW4vc3RhdGljL2pzL2FsZXJ0aWZ5L2RpYWxvZ19m YWN0b3J5LmpzCmluZGV4IDUwMDE0MGI4Li44MDZmODY4NyAxMDA2NDQKLS0tIGEvd2ViL3BnYWRt aW4vc3RhdGljL2pzL2FsZXJ0aWZ5L2RpYWxvZ19mYWN0b3J5LmpzCisrKyBiL3dlYi9wZ2FkbWlu L3N0YXRpYy9qcy9hbGVydGlmeS9kaWFsb2dfZmFjdG9yeS5qcwpAQCAtNyw4ICs3LDggQEAKIC8v CiAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLwogCi1pbXBvcnQgKiBhcyBCYWNrdXBEaWFsb2cgZnJvbSAnLi4vLi4vLi4vdG9vbHMv YmFja3VwL3N0YXRpYy9qcy9iYWNrdXBfZGlhbG9nX3dyYXBwZXInOwotaW1wb3J0IHtSZXN0b3Jl RGlhbG9nV3JhcHBlcn0gZnJvbSAnLi4vLi4vLi4vdG9vbHMvcmVzdG9yZS9zdGF0aWMvanMvcmVz dG9yZV9kaWFsb2dfd3JhcHBlcic7CitpbXBvcnQgKiBhcyBCYWNrdXBEaWFsb2cgZnJvbSAnLi4v YmFja3VwL2JhY2t1cF9kaWFsb2dfd3JhcHBlcic7CitpbXBvcnQge1Jlc3RvcmVEaWFsb2dXcmFw cGVyfSBmcm9tICcuLi9yZXN0b3JlL3Jlc3RvcmVfZGlhbG9nX3dyYXBwZXInOwogCiBleHBvcnQg Y2xhc3MgRGlhbG9nRmFjdG9yeSB7CiAgIGNvbnN0cnVjdG9yKHBnQnJvd3NlciwgJCwKZGlmZiAt LWdpdCBhL3dlYi9wZ2FkbWluL3Rvb2xzL2JhY2t1cC9zdGF0aWMvanMvYmFja3VwX2RpYWxvZy5q cyBiL3dlYi9wZ2FkbWluL3N0YXRpYy9qcy9iYWNrdXAvYmFja3VwX2RpYWxvZy5qcwpzaW1pbGFy aXR5IGluZGV4IDkwJQpyZW5hbWUgZnJvbSB3ZWIvcGdhZG1pbi90b29scy9iYWNrdXAvc3RhdGlj L2pzL2JhY2t1cF9kaWFsb2cuanMKcmVuYW1lIHRvIHdlYi9wZ2FkbWluL3N0YXRpYy9qcy9iYWNr dXAvYmFja3VwX2RpYWxvZy5qcwppbmRleCBlNjAzZmNmOS4uYWE0NDYxZjUgMTAwNjQ0Ci0tLSBh L3dlYi9wZ2FkbWluL3Rvb2xzL2JhY2t1cC9zdGF0aWMvanMvYmFja3VwX2RpYWxvZy5qcworKysg Yi93ZWIvcGdhZG1pbi9zdGF0aWMvanMvYmFja3VwL2JhY2t1cF9kaWFsb2cuanMKQEAgLTcsOSAr Nyw5IEBACiAvLwogLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8KIAotaW1wb3J0IGdldHRleHQgZnJvbSAnLi4vLi4vLi4vLi4vc3Rh dGljL2pzL2dldHRleHQnOwotaW1wb3J0IEJhY2tmb3JtIGZyb20gJy4uLy4uLy4uLy4uL3N0YXRp Yy9qcy9iYWNrZm9ybS5wZ2FkbWluJzsKLWltcG9ydCB7RGlhbG9nfSBmcm9tICcuLi8uLi8uLi8u Li9zdGF0aWMvanMvYWxlcnRpZnkvZGlhbG9nJzsKK2ltcG9ydCBnZXR0ZXh0IGZyb20gJy4uL2dl dHRleHQnOworaW1wb3J0IEJhY2tmb3JtIGZyb20gJy4uL2JhY2tmb3JtLnBnYWRtaW4nOworaW1w b3J0IHtEaWFsb2d9IGZyb20gJy4uL2FsZXJ0aWZ5L2RpYWxvZyc7CiAKIGV4cG9ydCBjbGFzcyBC YWNrdXBEaWFsb2cgZXh0ZW5kcyBEaWFsb2cgewogICBjb25zdHJ1Y3RvcihwZ0Jyb3dzZXIsICQs IGFsZXJ0aWZ5LCBCYWNrdXBNb2RlbCwgYmFja2Zvcm0gPSBCYWNrZm9ybSkgewpkaWZmIC0tZ2l0 IGEvd2ViL3BnYWRtaW4vdG9vbHMvYmFja3VwL3N0YXRpYy9qcy9iYWNrdXBfZGlhbG9nX3dyYXBw ZXIuanMgYi93ZWIvcGdhZG1pbi9zdGF0aWMvanMvYmFja3VwL2JhY2t1cF9kaWFsb2dfd3JhcHBl ci5qcwpzaW1pbGFyaXR5IGluZGV4IDk2JQpyZW5hbWUgZnJvbSB3ZWIvcGdhZG1pbi90b29scy9i YWNrdXAvc3RhdGljL2pzL2JhY2t1cF9kaWFsb2dfd3JhcHBlci5qcwpyZW5hbWUgdG8gd2ViL3Bn YWRtaW4vc3RhdGljL2pzL2JhY2t1cC9iYWNrdXBfZGlhbG9nX3dyYXBwZXIuanMKaW5kZXggMmNl YmUzZDEuLjdiNjI1MGY3IDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi90b29scy9iYWNrdXAvc3Rh dGljL2pzL2JhY2t1cF9kaWFsb2dfd3JhcHBlci5qcworKysgYi93ZWIvcGdhZG1pbi9zdGF0aWMv anMvYmFja3VwL2JhY2t1cF9kaWFsb2dfd3JhcHBlci5qcwpAQCAtNywxMiArNywxMiBAQAogLy8K IC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vCiAKLWltcG9ydCB7Z2V0VHJlZU5vZGVIaWVyYXJjaHlGcm9tRWxlbWVudH0gZnJvbSAn Li4vLi4vLi4vLi4vc3RhdGljL2pzL3RyZWUvcGdhZG1pbl90cmVlX25vZGUnOworaW1wb3J0IHtn ZXRUcmVlTm9kZUhpZXJhcmNoeUZyb21FbGVtZW50fSBmcm9tICcuLi90cmVlL3BnYWRtaW5fdHJl ZV9ub2RlJzsKIGltcG9ydCBheGlvcyBmcm9tICdheGlvcy9pbmRleCc7Ci1pbXBvcnQgZ2V0dGV4 dCBmcm9tICcuLi8uLi8uLi8uLi9zdGF0aWMvanMvZ2V0dGV4dCc7Ci1pbXBvcnQgdXJsX2ZvciBm cm9tICcuLi8uLi8uLi8uLi9zdGF0aWMvanMvdXJsX2Zvcic7CitpbXBvcnQgZ2V0dGV4dCBmcm9t ICcuLi9nZXR0ZXh0JzsKK2ltcG9ydCB1cmxfZm9yIGZyb20gJy4uL3VybF9mb3InOwogaW1wb3J0 IF8gZnJvbSAndW5kZXJzY29yZSc7Ci1pbXBvcnQge0RpYWxvZ1dyYXBwZXJ9IGZyb20gJy4uLy4u Ly4uLy4uL3N0YXRpYy9qcy9hbGVydGlmeS9kaWFsb2dfd3JhcHBlcic7CitpbXBvcnQge0RpYWxv Z1dyYXBwZXJ9IGZyb20gJy4uL2FsZXJ0aWZ5L2RpYWxvZ193cmFwcGVyJzsKIAogZXhwb3J0IGNs YXNzIEJhY2t1cERpYWxvZ1dyYXBwZXIgZXh0ZW5kcyBEaWFsb2dXcmFwcGVyIHsKICAgY29uc3Ry dWN0b3IoZGlhbG9nQ29udGFpbmVyU2VsZWN0b3IsIGRpYWxvZ1RpdGxlLCB0eXBlT2ZEaWFsb2cs CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi90b29scy9iYWNrdXAvc3RhdGljL2pzL21lbnVfdXRp bHMuanMgYi93ZWIvcGdhZG1pbi9zdGF0aWMvanMvYmFja3VwL21lbnVfdXRpbHMuanMKc2ltaWxh cml0eSBpbmRleCA4OSUKcmVuYW1lIGZyb20gd2ViL3BnYWRtaW4vdG9vbHMvYmFja3VwL3N0YXRp Yy9qcy9tZW51X3V0aWxzLmpzCnJlbmFtZSB0byB3ZWIvcGdhZG1pbi9zdGF0aWMvanMvYmFja3Vw L21lbnVfdXRpbHMuanMKaW5kZXggZmRmNDAwYWYuLmQzYzFiMTQzIDEwMDY0NAotLS0gYS93ZWIv cGdhZG1pbi90b29scy9iYWNrdXAvc3RhdGljL2pzL21lbnVfdXRpbHMuanMKKysrIGIvd2ViL3Bn YWRtaW4vc3RhdGljL2pzL2JhY2t1cC9tZW51X3V0aWxzLmpzCkBAIC03LDcgKzcsNyBAQAogLy8K IC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vCiAKLWltcG9ydCB7aXNQcm92aWRlZERhdGFWYWxpZH0gZnJvbSAnLi4vLi4vLi4vLi4v c3RhdGljL2pzL21lbnUvbWVudV9lbmFibGVkJzsKK2ltcG9ydCB7aXNQcm92aWRlZERhdGFWYWxp ZH0gZnJvbSAnLi4vbWVudS9tZW51X2VuYWJsZWQnOwogCiBleHBvcnQgY29uc3QgYmFja3VwU3Vw cG9ydGVkTm9kZXMgPSBbCiAgICdkYXRhYmFzZScsICdzY2hlbWEnLCAndGFibGUnLCAncGFydGl0 aW9uJywKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3Rvb2xzL2RhdGFncmlkL3N0YXRpYy9qcy9n ZXRfcGFuZWxfdGl0bGUuanMgYi93ZWIvcGdhZG1pbi9zdGF0aWMvanMvZGF0YWdyaWQvZ2V0X3Bh bmVsX3RpdGxlLmpzCnNpbWlsYXJpdHkgaW5kZXggOTAlCnJlbmFtZSBmcm9tIHdlYi9wZ2FkbWlu L3Rvb2xzL2RhdGFncmlkL3N0YXRpYy9qcy9nZXRfcGFuZWxfdGl0bGUuanMKcmVuYW1lIHRvIHdl Yi9wZ2FkbWluL3N0YXRpYy9qcy9kYXRhZ3JpZC9nZXRfcGFuZWxfdGl0bGUuanMKaW5kZXggNjRi M2EzZDIuLmY1YTU2NjRkIDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi90b29scy9kYXRhZ3JpZC9z dGF0aWMvanMvZ2V0X3BhbmVsX3RpdGxlLmpzCisrKyBiL3dlYi9wZ2FkbWluL3N0YXRpYy9qcy9k YXRhZ3JpZC9nZXRfcGFuZWxfdGl0bGUuanMKQEAgLTcsNyArNyw3IEBACiAvLwogLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KIAot aW1wb3J0IHtnZXRUcmVlTm9kZUhpZXJhcmNoeUZyb21JZGVudGlmaWVyfSBmcm9tICcuLi8uLi8u Li8uLi9zdGF0aWMvanMvdHJlZS9wZ2FkbWluX3RyZWVfbm9kZSc7CitpbXBvcnQge2dldFRyZWVO b2RlSGllcmFyY2h5RnJvbUlkZW50aWZpZXJ9IGZyb20gJy4uL3RyZWUvcGdhZG1pbl90cmVlX25v ZGUnOwogCiBmdW5jdGlvbiBnZXREYXRhYmFzZUxhYmVsKHBhcmVudERhdGEpIHsKICAgcmV0dXJu IHBhcmVudERhdGEuZGF0YWJhc2UgPyBwYXJlbnREYXRhLmRhdGFiYXNlLmxhYmVsCmRpZmYgLS1n aXQgYS93ZWIvcGdhZG1pbi90b29scy9kYXRhZ3JpZC9zdGF0aWMvanMvc2hvd19kYXRhLmpzIGIv d2ViL3BnYWRtaW4vc3RhdGljL2pzL2RhdGFncmlkL3Nob3dfZGF0YS5qcwpzaW1pbGFyaXR5IGlu ZGV4IDkyJQpyZW5hbWUgZnJvbSB3ZWIvcGdhZG1pbi90b29scy9kYXRhZ3JpZC9zdGF0aWMvanMv c2hvd19kYXRhLmpzCnJlbmFtZSB0byB3ZWIvcGdhZG1pbi9zdGF0aWMvanMvZGF0YWdyaWQvc2hv d19kYXRhLmpzCmluZGV4IDM3M2M5N2NkLi5iNmQ3YzUyYiAxMDA2NDQKLS0tIGEvd2ViL3BnYWRt aW4vdG9vbHMvZGF0YWdyaWQvc3RhdGljL2pzL3Nob3dfZGF0YS5qcworKysgYi93ZWIvcGdhZG1p bi9zdGF0aWMvanMvZGF0YWdyaWQvc2hvd19kYXRhLmpzCkBAIC02LDkgKzYsOSBAQAogLy8gVGhp cyBzb2Z0d2FyZSBpcyByZWxlYXNlZCB1bmRlciB0aGUgUG9zdGdyZVNRTCBMaWNlbmNlCiAvLwog Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8KLWltcG9ydCBnZXR0ZXh0IGZyb20gJy4uLy4uLy4uLy4uL3N0YXRpYy9qcy9nZXR0ZXh0 JzsKLWltcG9ydCB1cmxfZm9yIGZyb20gJy4uLy4uLy4uLy4uL3N0YXRpYy9qcy91cmxfZm9yJzsK LWltcG9ydCB7Z2V0VHJlZU5vZGVIaWVyYXJjaHlGcm9tSWRlbnRpZmllcn0gZnJvbSAnLi4vLi4v Li4vLi4vc3RhdGljL2pzL3RyZWUvcGdhZG1pbl90cmVlX25vZGUnOworaW1wb3J0IGdldHRleHQg ZnJvbSAnLi4vZ2V0dGV4dCc7CitpbXBvcnQgdXJsX2ZvciBmcm9tICcuLi91cmxfZm9yJzsKK2lt cG9ydCB7Z2V0VHJlZU5vZGVIaWVyYXJjaHlGcm9tSWRlbnRpZmllcn0gZnJvbSAnLi4vdHJlZS9w Z2FkbWluX3RyZWVfbm9kZSc7CiAKIGV4cG9ydCBmdW5jdGlvbiBzaG93RGF0YUdyaWQoCiAgIGRh dGFncmlkLApkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vdG9vbHMvZGF0YWdyaWQvc3RhdGljL2pz L3Nob3dfcXVlcnlfdG9vbC5qcyBiL3dlYi9wZ2FkbWluL3N0YXRpYy9qcy9kYXRhZ3JpZC9zaG93 X3F1ZXJ5X3Rvb2wuanMKc2ltaWxhcml0eSBpbmRleCA4OCUKcmVuYW1lIGZyb20gd2ViL3BnYWRt aW4vdG9vbHMvZGF0YWdyaWQvc3RhdGljL2pzL3Nob3dfcXVlcnlfdG9vbC5qcwpyZW5hbWUgdG8g d2ViL3BnYWRtaW4vc3RhdGljL2pzL2RhdGFncmlkL3Nob3dfcXVlcnlfdG9vbC5qcwppbmRleCAw ZWIxMmI4Yi4uYTFiNDg3NGMgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL3Rvb2xzL2RhdGFncmlk L3N0YXRpYy9qcy9zaG93X3F1ZXJ5X3Rvb2wuanMKKysrIGIvd2ViL3BnYWRtaW4vc3RhdGljL2pz L2RhdGFncmlkL3Nob3dfcXVlcnlfdG9vbC5qcwpAQCAtNyw5ICs3LDkgQEAKIC8vCiAvLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwog Ci1pbXBvcnQgZ2V0dGV4dCBmcm9tICcuLi8uLi8uLi8uLi9zdGF0aWMvanMvZ2V0dGV4dCc7Ci1p bXBvcnQgdXJsX2ZvciBmcm9tICcuLi8uLi8uLi8uLi9zdGF0aWMvanMvdXJsX2Zvcic7Ci1pbXBv cnQge2dldFRyZWVOb2RlSGllcmFyY2h5RnJvbUlkZW50aWZpZXJ9IGZyb20gJy4uLy4uLy4uLy4u L3N0YXRpYy9qcy90cmVlL3BnYWRtaW5fdHJlZV9ub2RlJzsKK2ltcG9ydCBnZXR0ZXh0IGZyb20g Jy4uL2dldHRleHQnOworaW1wb3J0IHVybF9mb3IgZnJvbSAnLi4vdXJsX2Zvcic7CitpbXBvcnQg e2dldFRyZWVOb2RlSGllcmFyY2h5RnJvbUlkZW50aWZpZXJ9IGZyb20gJy4uL3RyZWUvcGdhZG1p bl90cmVlX25vZGUnOwogCiBmdW5jdGlvbiBoYXNEYXRhYmFzZUluZm9ybWF0aW9uKHBhcmVudERh dGEpIHsKICAgcmV0dXJuIHBhcmVudERhdGEuZGF0YWJhc2U7CmRpZmYgLS1naXQgYS93ZWIvcGdh ZG1pbi90b29scy9ncmFudF93aXphcmQvc3RhdGljL2pzL21lbnVfdXRpbHMuanMgYi93ZWIvcGdh ZG1pbi9zdGF0aWMvanMvZ3JhbnQvd2l6YXJkL21lbnVfdXRpbHMuanMKc2ltaWxhcml0eSBpbmRl eCAxMDAlCnJlbmFtZSBmcm9tIHdlYi9wZ2FkbWluL3Rvb2xzL2dyYW50X3dpemFyZC9zdGF0aWMv anMvbWVudV91dGlscy5qcwpyZW5hbWUgdG8gd2ViL3BnYWRtaW4vc3RhdGljL2pzL2dyYW50L3dp emFyZC9tZW51X3V0aWxzLmpzCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi90b29scy9tYWludGVu YW5jZS9zdGF0aWMvanMvbWVudV91dGlscy5qcyBiL3dlYi9wZ2FkbWluL3N0YXRpYy9qcy9tYWlu dGVuYW5jZS9tZW51X3V0aWxzLmpzCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSB3 ZWIvcGdhZG1pbi90b29scy9tYWludGVuYW5jZS9zdGF0aWMvanMvbWVudV91dGlscy5qcwpyZW5h bWUgdG8gd2ViL3BnYWRtaW4vc3RhdGljL2pzL21haW50ZW5hbmNlL21lbnVfdXRpbHMuanMKZGlm ZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3Rvb2xzL3Jlc3RvcmUvc3RhdGljL2pzL21lbnVfdXRpbHMu anMgYi93ZWIvcGdhZG1pbi9zdGF0aWMvanMvcmVzdG9yZS9tZW51X3V0aWxzLmpzCnNpbWlsYXJp dHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSB3ZWIvcGdhZG1pbi90b29scy9yZXN0b3JlL3N0YXRp Yy9qcy9tZW51X3V0aWxzLmpzCnJlbmFtZSB0byB3ZWIvcGdhZG1pbi9zdGF0aWMvanMvcmVzdG9y ZS9tZW51X3V0aWxzLmpzCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi90b29scy9yZXN0b3JlL3N0 YXRpYy9qcy9yZXN0b3JlX2RpYWxvZy5qcyBiL3dlYi9wZ2FkbWluL3N0YXRpYy9qcy9yZXN0b3Jl L3Jlc3RvcmVfZGlhbG9nLmpzCnNpbWlsYXJpdHkgaW5kZXggODglCnJlbmFtZSBmcm9tIHdlYi9w Z2FkbWluL3Rvb2xzL3Jlc3RvcmUvc3RhdGljL2pzL3Jlc3RvcmVfZGlhbG9nLmpzCnJlbmFtZSB0 byB3ZWIvcGdhZG1pbi9zdGF0aWMvanMvcmVzdG9yZS9yZXN0b3JlX2RpYWxvZy5qcwppbmRleCA2 NmZlYTNiYS4uMjM3Yjg0MTIgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL3Rvb2xzL3Jlc3RvcmUv c3RhdGljL2pzL3Jlc3RvcmVfZGlhbG9nLmpzCisrKyBiL3dlYi9wZ2FkbWluL3N0YXRpYy9qcy9y ZXN0b3JlL3Jlc3RvcmVfZGlhbG9nLmpzCkBAIC03LDEwICs3LDEwIEBACiAvLwogLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KIAot aW1wb3J0IGdldHRleHQgZnJvbSAnLi4vLi4vLi4vLi4vc3RhdGljL2pzL2dldHRleHQnOworaW1w b3J0IGdldHRleHQgZnJvbSAnLi4vZ2V0dGV4dCc7CiBpbXBvcnQge3NwcmludGZ9IGZyb20gJ3Nw cmludGYtanMnOwotaW1wb3J0IEJhY2tmb3JtIGZyb20gJy4uLy4uLy4uLy4uL3N0YXRpYy9qcy9i YWNrZm9ybS5wZ2FkbWluJzsKLWltcG9ydCB7RGlhbG9nfSBmcm9tICcuLi8uLi8uLi8uLi9zdGF0 aWMvanMvYWxlcnRpZnkvZGlhbG9nJzsKK2ltcG9ydCBCYWNrZm9ybSBmcm9tICcuLi9iYWNrZm9y bS5wZ2FkbWluJzsKK2ltcG9ydCB7RGlhbG9nfSBmcm9tICcuLi9hbGVydGlmeS9kaWFsb2cnOwog CiBleHBvcnQgY2xhc3MgUmVzdG9yZURpYWxvZyBleHRlbmRzIERpYWxvZyB7CiAgIGNvbnN0cnVj dG9yKHBnQnJvd3NlciwgJCwgYWxlcnRpZnksIFJlc3RvcmVNb2RlbCwgYmFja2Zvcm0gPSBCYWNr Zm9ybSkgewpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vdG9vbHMvcmVzdG9yZS9zdGF0aWMvanMv cmVzdG9yZV9kaWFsb2dfd3JhcHBlci5qcyBiL3dlYi9wZ2FkbWluL3N0YXRpYy9qcy9yZXN0b3Jl L3Jlc3RvcmVfZGlhbG9nX3dyYXBwZXIuanMKc2ltaWxhcml0eSBpbmRleCA5NiUKcmVuYW1lIGZy b20gd2ViL3BnYWRtaW4vdG9vbHMvcmVzdG9yZS9zdGF0aWMvanMvcmVzdG9yZV9kaWFsb2dfd3Jh cHBlci5qcwpyZW5hbWUgdG8gd2ViL3BnYWRtaW4vc3RhdGljL2pzL3Jlc3RvcmUvcmVzdG9yZV9k aWFsb2dfd3JhcHBlci5qcwppbmRleCA4NDVkYTdhMy4uMTNkNzgxZmIgMTAwNjQ0Ci0tLSBhL3dl Yi9wZ2FkbWluL3Rvb2xzL3Jlc3RvcmUvc3RhdGljL2pzL3Jlc3RvcmVfZGlhbG9nX3dyYXBwZXIu anMKKysrIGIvd2ViL3BnYWRtaW4vc3RhdGljL2pzL3Jlc3RvcmUvcmVzdG9yZV9kaWFsb2dfd3Jh cHBlci5qcwpAQCAtMSw5ICsxLDkgQEAKLWltcG9ydCB7Z2V0VHJlZU5vZGVIaWVyYXJjaHlGcm9t RWxlbWVudH0gZnJvbSAnLi4vLi4vLi4vLi4vc3RhdGljL2pzL3RyZWUvcGdhZG1pbl90cmVlX25v ZGUnOworaW1wb3J0IHtnZXRUcmVlTm9kZUhpZXJhcmNoeUZyb21FbGVtZW50fSBmcm9tICcuLi90 cmVlL3BnYWRtaW5fdHJlZV9ub2RlJzsKIGltcG9ydCBheGlvcyBmcm9tICdheGlvcy9pbmRleCc7 CiBpbXBvcnQgXyBmcm9tICd1bmRlcnNjb3JlJzsKLWltcG9ydCBnZXR0ZXh0IGZyb20gJy4uLy4u Ly4uLy4uL3N0YXRpYy9qcy9nZXR0ZXh0JzsKLWltcG9ydCB1cmxfZm9yIGZyb20gJy4uLy4uLy4u Ly4uL3N0YXRpYy9qcy91cmxfZm9yJzsKLWltcG9ydCB7RGlhbG9nV3JhcHBlcn0gZnJvbSAnLi4v Li4vLi4vLi4vc3RhdGljL2pzL2FsZXJ0aWZ5L2RpYWxvZ193cmFwcGVyJzsKK2ltcG9ydCBnZXR0 ZXh0IGZyb20gJy4uL2dldHRleHQnOworaW1wb3J0IHVybF9mb3IgZnJvbSAnLi4vdXJsX2Zvcic7 CitpbXBvcnQge0RpYWxvZ1dyYXBwZXJ9IGZyb20gJy4uL2FsZXJ0aWZ5L2RpYWxvZ193cmFwcGVy JzsKIAogZXhwb3J0IGNsYXNzIFJlc3RvcmVEaWFsb2dXcmFwcGVyIGV4dGVuZHMgRGlhbG9nV3Jh cHBlciB7CiAgIGNvbnN0cnVjdG9yKGRpYWxvZ0NvbnRhaW5lclNlbGVjdG9yLCBkaWFsb2dUaXRs ZSwgdHlwZU9mRGlhbG9nLApkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJf Z3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvc3RhdGljL2pzL2Nhbl9kcm9wX2NoaWxk LmpzIGIvd2ViL3BnYWRtaW4vc3RhdGljL2pzL3NjaGVtYS9jYW5fZHJvcF9jaGlsZC5qcwpzaW1p bGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJf Z3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvc3RhdGljL2pzL2Nhbl9kcm9wX2NoaWxk LmpzCnJlbmFtZSB0byB3ZWIvcGdhZG1pbi9zdGF0aWMvanMvc2NoZW1hL2Nhbl9kcm9wX2NoaWxk LmpzCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVy cy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvc3RhdGljL2pzL2VuYWJsZV9kaXNhYmxlX3RyaWdn ZXJzLmpzIGIvd2ViL3BnYWRtaW4vc3RhdGljL2pzL3RhYmxlL2VuYWJsZV9kaXNhYmxlX3RyaWdn ZXJzLmpzCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSB3ZWIvcGdhZG1pbi9icm93 c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvc3RhdGlj L2pzL2VuYWJsZV9kaXNhYmxlX3RyaWdnZXJzLmpzCnJlbmFtZSB0byB3ZWIvcGdhZG1pbi9zdGF0 aWMvanMvdGFibGUvZW5hYmxlX2Rpc2FibGVfdHJpZ2dlcnMuanMKZGlmZiAtLWdpdCBhL3dlYi9w Z2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3Rh Ymxlcy9zdGF0aWMvanMvc2hvd19hZHZhbmNlZF90YWIuanMgYi93ZWIvcGdhZG1pbi9zdGF0aWMv anMvdGFibGUvc2hvd19hZHZhbmNlZF90YWIuanMKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFt ZSBmcm9tIHdlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNl cy9zY2hlbWFzL3RhYmxlcy9zdGF0aWMvanMvc2hvd19hZHZhbmNlZF90YWIuanMKcmVuYW1lIHRv IHdlYi9wZ2FkbWluL3N0YXRpYy9qcy90YWJsZS9zaG93X2FkdmFuY2VkX3RhYi5qcwpkaWZmIC0t Z2l0IGEvd2ViL3BnYWRtaW4vdG9vbHMvYmFja3VwL3N0YXRpYy9qcy9iYWNrdXAuanMgYi93ZWIv cGdhZG1pbi90b29scy9iYWNrdXAvc3RhdGljL2pzL2JhY2t1cC5qcwppbmRleCBkNzRlZDZkZC4u YjIwYjdlNmMgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL3Rvb2xzL2JhY2t1cC9zdGF0aWMvanMv YmFja3VwLmpzCisrKyBiL3dlYi9wZ2FkbWluL3Rvb2xzL2JhY2t1cC9zdGF0aWMvanMvYmFja3Vw LmpzCkBAIC0zLDggKzMsOCBAQCBkZWZpbmUoWwogICAnc291cmNlcy9nZXR0ZXh0JywgJ3NvdXJj ZXMvdXJsX2ZvcicsICdqcXVlcnknLCAndW5kZXJzY29yZScsCiAgICd1bmRlcnNjb3JlLnN0cmlu ZycsICdwZ2FkbWluLmFsZXJ0aWZ5anMnLCAnYmFja2JvbmUnLCAncGdhZG1pbi5iYWNrZ3JpZCcs CiAgICdwZ2FkbWluLmJhY2tmb3JtJywgJ3BnYWRtaW4uYnJvd3NlcicsICdzb3VyY2VzL3V0aWxz JywKLSAgJ3Rvb2xzL2JhY2t1cC9zdGF0aWMvanMvbWVudV91dGlscycsCi0gICd0b29scy9iYWNr dXAvc3RhdGljL2pzL2JhY2t1cF9kaWFsb2cnLAorICAnc291cmNlcy9iYWNrdXAvbWVudV91dGls cycsCisgICdzb3VyY2VzL2JhY2t1cC9iYWNrdXBfZGlhbG9nJywKICAgJ3NvdXJjZXMvbWVudS9t ZW51X2VuYWJsZWQnLAogXSwgZnVuY3Rpb24oCiAgIGdldHRleHQsIHVybF9mb3IsICQsIF8sIFMs IGFsZXJ0aWZ5LCBCYWNrYm9uZSwgQmFja2dyaWQsIEJhY2tmb3JtLCBwZ0Jyb3dzZXIsCmRpZmYg LS1naXQgYS93ZWIvcGdhZG1pbi90b29scy9kYXRhZ3JpZC9zdGF0aWMvanMvZGF0YWdyaWQuanMg Yi93ZWIvcGdhZG1pbi90b29scy9kYXRhZ3JpZC9zdGF0aWMvanMvZGF0YWdyaWQuanMKaW5kZXgg NTIwYTljZTUuLjY3NmYxOTAxIDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi90b29scy9kYXRhZ3Jp ZC9zdGF0aWMvanMvZGF0YWdyaWQuanMKKysrIGIvd2ViL3BnYWRtaW4vdG9vbHMvZGF0YWdyaWQv c3RhdGljL2pzL2RhdGFncmlkLmpzCkBAIC0yLDkgKzIsOSBAQCBkZWZpbmUoJ3BnYWRtaW4uZGF0 YWdyaWQnLCBbCiAgICdzb3VyY2VzL2dldHRleHQnLCAnc291cmNlcy91cmxfZm9yJywgJ2pxdWVy eScsICd1bmRlcnNjb3JlJywKICAgJ3BnYWRtaW4uYWxlcnRpZnlqcycsICdzb3VyY2VzL3BnYWRt aW4nLCAnYnVuZGxlZF9jb2RlbWlycm9yJywKICAgJ3NvdXJjZXMvc3FsZWRpdG9yX3V0aWxzJywg J2JhY2tib25lJywKLSAgJ3Rvb2xzL2RhdGFncmlkL3N0YXRpYy9qcy9zaG93X2RhdGEnLAotICAn dG9vbHMvZGF0YWdyaWQvc3RhdGljL2pzL2dldF9wYW5lbF90aXRsZScsCi0gICd0b29scy9kYXRh Z3JpZC9zdGF0aWMvanMvc2hvd19xdWVyeV90b29sJywKKyAgJ3NvdXJjZXMvZGF0YWdyaWQvc2hv d19kYXRhJywKKyAgJ3NvdXJjZXMvZGF0YWdyaWQvZ2V0X3BhbmVsX3RpdGxlJywKKyAgJ3NvdXJj ZXMvZGF0YWdyaWQvc2hvd19xdWVyeV90b29sJywKICAgJ3djZG9ja2VyJywKIF0sIGZ1bmN0aW9u KAogICBnZXR0ZXh0LCB1cmxfZm9yLCAkLCBfLCBhbGVydGlmeSwgcGdBZG1pbiwgY29kZW1pcnJv ciwgc3FsRWRpdG9yVXRpbHMsCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi90b29scy9ncmFudF93 aXphcmQvc3RhdGljL2pzL2dyYW50X3dpemFyZC5qcyBiL3dlYi9wZ2FkbWluL3Rvb2xzL2dyYW50 X3dpemFyZC9zdGF0aWMvanMvZ3JhbnRfd2l6YXJkLmpzCmluZGV4IGNmMjM0ZjFkLi41NmViMzc4 YSAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vdG9vbHMvZ3JhbnRfd2l6YXJkL3N0YXRpYy9qcy9n cmFudF93aXphcmQuanMKKysrIGIvd2ViL3BnYWRtaW4vdG9vbHMvZ3JhbnRfd2l6YXJkL3N0YXRp Yy9qcy9ncmFudF93aXphcmQuanMKQEAgLTMsNyArMyw3IEBAIGRlZmluZShbCiAgICdzb3VyY2Vz L2dldHRleHQnLCAnc291cmNlcy91cmxfZm9yJywgJ2pxdWVyeScsICd1bmRlcnNjb3JlJywgJ2Jh Y2tib25lJywKICAgJ3BnYWRtaW4uYWxlcnRpZnlqcycsICdwZ2FkbWluLmJhY2tncmlkJywgJ3Bn YWRtaW4uYmFja2Zvcm0nLAogICAncGdhZG1pbi5icm93c2VyJywgJ3BnYWRtaW4uYnJvd3Nlci5u b2RlJywKLSAgJ3Rvb2xzL2dyYW50X3dpemFyZC9zdGF0aWMvanMvbWVudV91dGlscycsCisgICdz b3VyY2VzL2dyYW50L3dpemFyZC9tZW51X3V0aWxzJywKICAgJ3NvdXJjZXMvbWVudS9tZW51X2Vu YWJsZWQnLAogCiAgICdiYWNrZ3JpZC5zZWxlY3QuYWxsJywKZGlmZiAtLWdpdCBhL3dlYi9wZ2Fk bWluL3Rvb2xzL21haW50ZW5hbmNlL3N0YXRpYy9qcy9tYWludGVuYW5jZS5qcyBiL3dlYi9wZ2Fk bWluL3Rvb2xzL21haW50ZW5hbmNlL3N0YXRpYy9qcy9tYWludGVuYW5jZS5qcwppbmRleCBmMzJj ZTVjNC4uYzk5NzZkNTMgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL3Rvb2xzL21haW50ZW5hbmNl L3N0YXRpYy9qcy9tYWludGVuYW5jZS5qcworKysgYi93ZWIvcGdhZG1pbi90b29scy9tYWludGVu YW5jZS9zdGF0aWMvanMvbWFpbnRlbmFuY2UuanMKQEAgLTIsNyArMiw3IEBAIGRlZmluZShbCiAg ICdzb3VyY2VzL2dldHRleHQnLCAnc291cmNlcy91cmxfZm9yJywgJ2pxdWVyeScsICd1bmRlcnNj b3JlJywKICAgJ3VuZGVyc2NvcmUuc3RyaW5nJywgJ3BnYWRtaW4uYWxlcnRpZnlqcycsICdzb3Vy Y2VzL3BnYWRtaW4nLCAncGdhZG1pbi5icm93c2VyJywgJ2JhY2tib25lJywKICAgJ2JhY2tncmlk JywgJ2JhY2tmb3JtJywgJ3NvdXJjZXMvdXRpbHMnLAotICAndG9vbHMvbWFpbnRlbmFuY2Uvc3Rh dGljL2pzL21lbnVfdXRpbHMnLAorICAnc291cmNlcy9tYWludGVuYW5jZS9tZW51X3V0aWxzJywK ICAgJ3NvdXJjZXMvbWVudS9tZW51X2VuYWJsZWQnLAogICAncGdhZG1pbi5iYWNrZm9ybScsICdw Z2FkbWluLmJhY2tncmlkJywKICAgJ3BnYWRtaW4uYnJvd3Nlci5ub2RlLnVpJywKZGlmZiAtLWdp dCBhL3dlYi9wZ2FkbWluL3Rvb2xzL3Jlc3RvcmUvc3RhdGljL2pzL3Jlc3RvcmUuanMgYi93ZWIv cGdhZG1pbi90b29scy9yZXN0b3JlL3N0YXRpYy9qcy9yZXN0b3JlLmpzCmluZGV4IGVhYTdhMTVl Li5iNWQ2OTEzYSAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vdG9vbHMvcmVzdG9yZS9zdGF0aWMv anMvcmVzdG9yZS5qcworKysgYi93ZWIvcGdhZG1pbi90b29scy9yZXN0b3JlL3N0YXRpYy9qcy9y ZXN0b3JlLmpzCkBAIC0yLDkgKzIsOSBAQCBkZWZpbmUoJ3Rvb2xzLnJlc3RvcmUnLCBbCiAgICdz b3VyY2VzL2dldHRleHQnLCAnc291cmNlcy91cmxfZm9yJywgJ2pxdWVyeScsICd1bmRlcnNjb3Jl JywgJ2JhY2tib25lJywKICAgJ3VuZGVyc2NvcmUuc3RyaW5nJywgJ3BnYWRtaW4uYWxlcnRpZnlq cycsICdwZ2FkbWluLmJyb3dzZXInLAogICAncGdhZG1pbi5iYWNrZ3JpZCcsICdwZ2FkbWluLmJh Y2tmb3JtJywgJ3NvdXJjZXMvdXRpbHMnLAotICAndG9vbHMvcmVzdG9yZS9zdGF0aWMvanMvbWVu dV91dGlscycsCisgICdzb3VyY2VzL3Jlc3RvcmUvbWVudV91dGlscycsCiAgICdzb3VyY2VzL21l bnUvbWVudV9lbmFibGVkJywKLSAgJ3Rvb2xzL3Jlc3RvcmUvc3RhdGljL2pzL3Jlc3RvcmVfZGlh bG9nJywKKyAgJ3NvdXJjZXMvcmVzdG9yZS9yZXN0b3JlX2RpYWxvZycsCiBdLCBmdW5jdGlvbigK ICAgZ2V0dGV4dCwgdXJsX2ZvciwgJCwgXywgQmFja2JvbmUsIFMsIGFsZXJ0aWZ5LCBwZ0Jyb3dz ZXIsIEJhY2tncmlkLCBCYWNrZm9ybSwKIGNvbW1vblV0aWxzLCBtZW51VXRpbHMsIG1lbnVFbmFi bGVkLCByZXN0b3JlRGlhbG9nCmRpZmYgLS1naXQgYS93ZWIvcmVncmVzc2lvbi9qYXZhc2NyaXB0 L2JhY2t1cC9iYWNrdXBfZGlhbG9nX3NwZWMuanMgYi93ZWIvcmVncmVzc2lvbi9qYXZhc2NyaXB0 L2JhY2t1cC9iYWNrdXBfZGlhbG9nX3NwZWMuanMKaW5kZXggODVlNWU2MGIuLmMyZGE2MWM0IDEw MDY0NAotLS0gYS93ZWIvcmVncmVzc2lvbi9qYXZhc2NyaXB0L2JhY2t1cC9iYWNrdXBfZGlhbG9n X3NwZWMuanMKKysrIGIvd2ViL3JlZ3Jlc3Npb24vamF2YXNjcmlwdC9iYWNrdXAvYmFja3VwX2Rp YWxvZ19zcGVjLmpzCkBAIC02LDcgKzYsNyBAQAogLy8gVGhpcyBzb2Z0d2FyZSBpcyByZWxlYXNl ZCB1bmRlciB0aGUgUG9zdGdyZVNRTCBMaWNlbmNlCiAvLwogLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLWltcG9ydCB7QmFja3Vw RGlhbG9nfSBmcm9tICcuLi8uLi8uLi9wZ2FkbWluL3Rvb2xzL2JhY2t1cC9zdGF0aWMvanMvYmFj a3VwX2RpYWxvZyc7CitpbXBvcnQge0JhY2t1cERpYWxvZ30gZnJvbSAnLi4vLi4vLi4vcGdhZG1p bi9zdGF0aWMvanMvYmFja3VwL2JhY2t1cF9kaWFsb2cnOwogaW1wb3J0IHtUcmVlRmFrZX0gZnJv bSAnLi4vdHJlZS90cmVlX2Zha2UnOwogaW1wb3J0IHtUcmVlTm9kZX0gZnJvbSAnLi4vLi4vLi4v cGdhZG1pbi9zdGF0aWMvanMvdHJlZS90cmVlJzsKIApkaWZmIC0tZ2l0IGEvd2ViL3JlZ3Jlc3Np b24vamF2YXNjcmlwdC9iYWNrdXAvYmFja3VwX2RpYWxvZ193cmFwcGVyX3NwZWMuanMgYi93ZWIv cmVncmVzc2lvbi9qYXZhc2NyaXB0L2JhY2t1cC9iYWNrdXBfZGlhbG9nX3dyYXBwZXJfc3BlYy5q cwppbmRleCA1ODcwNTMxOC4uNzNlNDUzZTUgMTAwNjQ0Ci0tLSBhL3dlYi9yZWdyZXNzaW9uL2ph dmFzY3JpcHQvYmFja3VwL2JhY2t1cF9kaWFsb2dfd3JhcHBlcl9zcGVjLmpzCisrKyBiL3dlYi9y ZWdyZXNzaW9uL2phdmFzY3JpcHQvYmFja3VwL2JhY2t1cF9kaWFsb2dfd3JhcHBlcl9zcGVjLmpz CkBAIC0xLDUgKzEsNSBAQAogaW1wb3J0IHtUcmVlRmFrZX0gZnJvbSAnLi4vdHJlZS90cmVlX2Zh a2UnOwotaW1wb3J0IHtCYWNrdXBEaWFsb2dXcmFwcGVyfSBmcm9tICcuLi8uLi8uLi9wZ2FkbWlu L3Rvb2xzL2JhY2t1cC9zdGF0aWMvanMvYmFja3VwX2RpYWxvZ193cmFwcGVyJzsKK2ltcG9ydCB7 QmFja3VwRGlhbG9nV3JhcHBlcn0gZnJvbSAnLi4vLi4vLi4vcGdhZG1pbi9zdGF0aWMvanMvYmFj a3VwL2JhY2t1cF9kaWFsb2dfd3JhcHBlcic7CiBpbXBvcnQgYXhpb3MgZnJvbSAnYXhpb3MvaW5k ZXgnOwogaW1wb3J0IE1vY2tBZGFwdGVyIGZyb20gJ2F4aW9zLW1vY2stYWRhcHRlcic7CiBpbXBv cnQge0Zha2VNb2RlbH0gZnJvbSAnLi4vZmFrZV9tb2RlbCc7CmRpZmYgLS1naXQgYS93ZWIvcmVn cmVzc2lvbi9qYXZhc2NyaXB0L2JhY2t1cC9nbG9iYWxfc2VydmVyX2JhY2t1cF9kaWFsb2dfc3Bl Yy5qcyBiL3dlYi9yZWdyZXNzaW9uL2phdmFzY3JpcHQvYmFja3VwL2dsb2JhbF9zZXJ2ZXJfYmFj a3VwX2RpYWxvZ19zcGVjLmpzCmluZGV4IDg2ZGY2NzJlLi42N2NjYTlkYiAxMDA2NDQKLS0tIGEv d2ViL3JlZ3Jlc3Npb24vamF2YXNjcmlwdC9iYWNrdXAvZ2xvYmFsX3NlcnZlcl9iYWNrdXBfZGlh bG9nX3NwZWMuanMKKysrIGIvd2ViL3JlZ3Jlc3Npb24vamF2YXNjcmlwdC9iYWNrdXAvZ2xvYmFs X3NlcnZlcl9iYWNrdXBfZGlhbG9nX3NwZWMuanMKQEAgLTYsNyArNiw3IEBACiAvLyBUaGlzIHNv ZnR3YXJlIGlzIHJlbGVhc2VkIHVuZGVyIHRoZSBQb3N0Z3JlU1FMIExpY2VuY2UKIC8vCiAvLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v LwotaW1wb3J0IHtCYWNrdXBEaWFsb2d9IGZyb20gJy4uLy4uLy4uL3BnYWRtaW4vdG9vbHMvYmFj a3VwL3N0YXRpYy9qcy9iYWNrdXBfZGlhbG9nJzsKK2ltcG9ydCB7QmFja3VwRGlhbG9nfSBmcm9t ICcuLi8uLi8uLi9wZ2FkbWluL3N0YXRpYy9qcy9iYWNrdXAvYmFja3VwX2RpYWxvZyc7CiBpbXBv cnQge1RyZWVGYWtlfSBmcm9tICcuLi90cmVlL3RyZWVfZmFrZSc7CiAKIGNvbnN0IGNvbnRleHQg PSBkZXNjcmliZTsKZGlmZiAtLWdpdCBhL3dlYi9yZWdyZXNzaW9uL2phdmFzY3JpcHQvYmFja3Vw L21lbnVfdXRpbHNfc3BlYy5qcyBiL3dlYi9yZWdyZXNzaW9uL2phdmFzY3JpcHQvYmFja3VwL21l bnVfdXRpbHNfc3BlYy5qcwppbmRleCA5NDM1ZDY5OS4uZWNmOGFiY2QgMTAwNjQ0Ci0tLSBhL3dl Yi9yZWdyZXNzaW9uL2phdmFzY3JpcHQvYmFja3VwL21lbnVfdXRpbHNfc3BlYy5qcworKysgYi93 ZWIvcmVncmVzc2lvbi9qYXZhc2NyaXB0L2JhY2t1cC9tZW51X3V0aWxzX3NwZWMuanMKQEAgLTgs NyArOCw3IEBACiAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLwogCiAKLWltcG9ydCB7bWVudUVuYWJsZWRTZXJ2ZXJ9IGZyb20gJy4u Ly4uLy4uL3BnYWRtaW4vdG9vbHMvYmFja3VwL3N0YXRpYy9qcy9tZW51X3V0aWxzJzsKK2ltcG9y dCB7bWVudUVuYWJsZWRTZXJ2ZXJ9IGZyb20gJy4uLy4uLy4uL3BnYWRtaW4vc3RhdGljL2pzL2Jh Y2t1cC9tZW51X3V0aWxzJzsKIAogY29uc3QgY29udGV4dCA9IGRlc2NyaWJlOwogCmRpZmYgLS1n aXQgYS93ZWIvcmVncmVzc2lvbi9qYXZhc2NyaXB0L2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2 ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy9zaG93X2FkdmFuY2VkX3RhYl9zcGVjLmpzIGIv d2ViL3JlZ3Jlc3Npb24vamF2YXNjcmlwdC9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9k YXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvc2hvd19hZHZhbmNlZF90YWJfc3BlYy5qcwppbmRleCBm OTU1OWE0MS4uNGIzODExYWEgMTAwNjQ0Ci0tLSBhL3dlYi9yZWdyZXNzaW9uL2phdmFzY3JpcHQv YnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3No b3dfYWR2YW5jZWRfdGFiX3NwZWMuanMKKysrIGIvd2ViL3JlZ3Jlc3Npb24vamF2YXNjcmlwdC9i cm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvc2hv d19hZHZhbmNlZF90YWJfc3BlYy5qcwpAQCAtNyw3ICs3LDcgQEAKIC8vCiAvLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwogCi1pbXBv cnQge3Nob3dfYWR2YW5jZWRfdGFifSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wZ2Fk bWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxl cy9zdGF0aWMvanMvc2hvd19hZHZhbmNlZF90YWInOworaW1wb3J0IHtzaG93X2FkdmFuY2VkX3Rh Yn0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGdhZG1pbi9zdGF0aWMvanMvdGFibGUv c2hvd19hZHZhbmNlZF90YWInOwogCiBkZXNjcmliZSgnI3Nob3dfYWR2YW5jZWRfdGFiJywgKCkg PT4gewogICBsZXQgdGFibGVNb2RlbDsKZGlmZiAtLWdpdCBhL3dlYi9yZWdyZXNzaW9uL2phdmFz Y3JpcHQvZGF0YWdyaWQvZ2V0X3BhbmVsX3RpdGxlX3NwZWMuanMgYi93ZWIvcmVncmVzc2lvbi9q YXZhc2NyaXB0L2RhdGFncmlkL2dldF9wYW5lbF90aXRsZV9zcGVjLmpzCmluZGV4IDhhMzQ0YTg0 Li4yNTk0ZWM5NiAxMDA2NDQKLS0tIGEvd2ViL3JlZ3Jlc3Npb24vamF2YXNjcmlwdC9kYXRhZ3Jp ZC9nZXRfcGFuZWxfdGl0bGVfc3BlYy5qcworKysgYi93ZWIvcmVncmVzc2lvbi9qYXZhc2NyaXB0 L2RhdGFncmlkL2dldF9wYW5lbF90aXRsZV9zcGVjLmpzCkBAIC03LDcgKzcsNyBAQAogLy8KIC8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vCiAKLWltcG9ydCB7Z2V0UGFuZWxUaXRsZX0gZnJvbSAnLi4vLi4vLi4vcGdhZG1pbi90b29s cy9kYXRhZ3JpZC9zdGF0aWMvanMvZ2V0X3BhbmVsX3RpdGxlJzsKK2ltcG9ydCB7Z2V0UGFuZWxU aXRsZX0gZnJvbSAnLi4vLi4vLi4vcGdhZG1pbi9zdGF0aWMvanMvZGF0YWdyaWQvZ2V0X3BhbmVs X3RpdGxlJzsKIGltcG9ydCB7VHJlZUZha2V9IGZyb20gJy4uL3RyZWUvdHJlZV9mYWtlJzsKIGlt cG9ydCB7VHJlZU5vZGV9IGZyb20gJy4uLy4uLy4uL3BnYWRtaW4vc3RhdGljL2pzL3RyZWUvdHJl ZSc7CiAKZGlmZiAtLWdpdCBhL3dlYi9yZWdyZXNzaW9uL2phdmFzY3JpcHQvZGF0YWdyaWQvc2hv d19kYXRhX3NwZWMuanMgYi93ZWIvcmVncmVzc2lvbi9qYXZhc2NyaXB0L2RhdGFncmlkL3Nob3df ZGF0YV9zcGVjLmpzCmluZGV4IDgwZDI1ZWIzLi4zZTRmZWVjOSAxMDA2NDQKLS0tIGEvd2ViL3Jl Z3Jlc3Npb24vamF2YXNjcmlwdC9kYXRhZ3JpZC9zaG93X2RhdGFfc3BlYy5qcworKysgYi93ZWIv cmVncmVzc2lvbi9qYXZhc2NyaXB0L2RhdGFncmlkL3Nob3dfZGF0YV9zcGVjLmpzCkBAIC03LDcg KzcsNyBAQAogLy8KIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vCiAKLWltcG9ydCB7c2hvd0RhdGFHcmlkfSBmcm9tICcuLi8uLi8u Li9wZ2FkbWluL3Rvb2xzL2RhdGFncmlkL3N0YXRpYy9qcy9zaG93X2RhdGEnOworaW1wb3J0IHtz aG93RGF0YUdyaWR9IGZyb20gJy4uLy4uLy4uL3BnYWRtaW4vc3RhdGljL2pzL2RhdGFncmlkL3No b3dfZGF0YSc7CiBpbXBvcnQge1RyZWVGYWtlfSBmcm9tICcuLi90cmVlL3RyZWVfZmFrZSc7CiBp bXBvcnQge1RyZWVOb2RlfSBmcm9tICcuLi8uLi8uLi9wZ2FkbWluL3N0YXRpYy9qcy90cmVlL3Ry ZWUnOwogCmRpZmYgLS1naXQgYS93ZWIvcmVncmVzc2lvbi9qYXZhc2NyaXB0L2RhdGFncmlkL3No b3dfcXVlcnlfdG9vbF9zcGVjLmpzIGIvd2ViL3JlZ3Jlc3Npb24vamF2YXNjcmlwdC9kYXRhZ3Jp ZC9zaG93X3F1ZXJ5X3Rvb2xfc3BlYy5qcwppbmRleCA2NmJkMzdjZS4uZTU4MTEyYzAgMTAwNjQ0 Ci0tLSBhL3dlYi9yZWdyZXNzaW9uL2phdmFzY3JpcHQvZGF0YWdyaWQvc2hvd19xdWVyeV90b29s X3NwZWMuanMKKysrIGIvd2ViL3JlZ3Jlc3Npb24vamF2YXNjcmlwdC9kYXRhZ3JpZC9zaG93X3F1 ZXJ5X3Rvb2xfc3BlYy5qcwpAQCAtOCw3ICs4LDcgQEAKIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCiAKIGltcG9ydCB7VHJlZUZh a2V9IGZyb20gJy4uL3RyZWUvdHJlZV9mYWtlJzsKLWltcG9ydCB7c2hvd1F1ZXJ5VG9vbH0gZnJv bSAnLi4vLi4vLi4vcGdhZG1pbi90b29scy9kYXRhZ3JpZC9zdGF0aWMvanMvc2hvd19xdWVyeV90 b29sJzsKK2ltcG9ydCB7c2hvd1F1ZXJ5VG9vbH0gZnJvbSAnLi4vLi4vLi4vcGdhZG1pbi9zdGF0 aWMvanMvZGF0YWdyaWQvc2hvd19xdWVyeV90b29sJzsKIGltcG9ydCB7VHJlZU5vZGV9IGZyb20g Jy4uLy4uLy4uL3BnYWRtaW4vc3RhdGljL2pzL3RyZWUvdHJlZSc7CiAKIGNvbnN0IGNvbnRleHQg PSBkZXNjcmliZTsKZGlmZiAtLWdpdCBhL3dlYi9yZWdyZXNzaW9uL2phdmFzY3JpcHQvcmVzdG9y ZS9yZXN0b3JlX2RpYWxvZ19zcGVjLmpzIGIvd2ViL3JlZ3Jlc3Npb24vamF2YXNjcmlwdC9yZXN0 b3JlL3Jlc3RvcmVfZGlhbG9nX3NwZWMuanMKaW5kZXggYzEzMzVlZWIuLjQ4ZWY1OTYxIDEwMDY0 NAotLS0gYS93ZWIvcmVncmVzc2lvbi9qYXZhc2NyaXB0L3Jlc3RvcmUvcmVzdG9yZV9kaWFsb2df c3BlYy5qcworKysgYi93ZWIvcmVncmVzc2lvbi9qYXZhc2NyaXB0L3Jlc3RvcmUvcmVzdG9yZV9k aWFsb2dfc3BlYy5qcwpAQCAtOSw3ICs5LDcgQEAKIGltcG9ydCB7VHJlZUZha2V9IGZyb20gJy4u L3RyZWUvdHJlZV9mYWtlJzsKIGltcG9ydCB7CiAgIFJlc3RvcmVEaWFsb2csCi19IGZyb20gJy4u Ly4uLy4uL3BnYWRtaW4vdG9vbHMvcmVzdG9yZS9zdGF0aWMvanMvcmVzdG9yZV9kaWFsb2cnOwor fSBmcm9tICcuLi8uLi8uLi9wZ2FkbWluL3N0YXRpYy9qcy9yZXN0b3JlL3Jlc3RvcmVfZGlhbG9n JzsKIGltcG9ydCB7VHJlZU5vZGV9IGZyb20gJy4uLy4uLy4uL3BnYWRtaW4vc3RhdGljL2pzL3Ry ZWUvdHJlZSc7CiAKIGNvbnN0IGNvbnRleHQgPSBkZXNjcmliZTsKZGlmZiAtLWdpdCBhL3dlYi9y ZWdyZXNzaW9uL2phdmFzY3JpcHQvcmVzdG9yZS9yZXN0b3JlX2RpYWxvZ193cmFwcGVyX3NwZWMu anMgYi93ZWIvcmVncmVzc2lvbi9qYXZhc2NyaXB0L3Jlc3RvcmUvcmVzdG9yZV9kaWFsb2dfd3Jh cHBlcl9zcGVjLmpzCmluZGV4IGMyYTMxZDU1Li44NGRlOGU2MiAxMDA2NDQKLS0tIGEvd2ViL3Jl Z3Jlc3Npb24vamF2YXNjcmlwdC9yZXN0b3JlL3Jlc3RvcmVfZGlhbG9nX3dyYXBwZXJfc3BlYy5q cworKysgYi93ZWIvcmVncmVzc2lvbi9qYXZhc2NyaXB0L3Jlc3RvcmUvcmVzdG9yZV9kaWFsb2df d3JhcHBlcl9zcGVjLmpzCkBAIC03LDcgKzcsNyBAQAogLy8KIC8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCiBpbXBvcnQge1RyZWVG YWtlfSBmcm9tICcuLi90cmVlL3RyZWVfZmFrZSc7Ci1pbXBvcnQge1Jlc3RvcmVEaWFsb2dXcmFw cGVyfSBmcm9tICcuLi8uLi8uLi9wZ2FkbWluL3Rvb2xzL3Jlc3RvcmUvc3RhdGljL2pzL3Jlc3Rv cmVfZGlhbG9nX3dyYXBwZXInOworaW1wb3J0IHtSZXN0b3JlRGlhbG9nV3JhcHBlcn0gZnJvbSAn Li4vLi4vLi4vcGdhZG1pbi9zdGF0aWMvanMvcmVzdG9yZS9yZXN0b3JlX2RpYWxvZ193cmFwcGVy JzsKIGltcG9ydCBNb2NrQWRhcHRlciBmcm9tICdheGlvcy1tb2NrLWFkYXB0ZXInOwogaW1wb3J0 IGF4aW9zIGZyb20gJ2F4aW9zL2luZGV4JzsKIGltcG9ydCB7RmFrZU1vZGVsfSBmcm9tICcuLi9m YWtlX21vZGVsJzsKZGlmZiAtLWdpdCBhL3dlYi9yZWdyZXNzaW9uL2phdmFzY3JpcHQvc2NoZW1h L2Nhbl9kcm9wX2NoaWxkX3NwZWMuanMgYi93ZWIvcmVncmVzc2lvbi9qYXZhc2NyaXB0L3NjaGVt YS9jYW5fZHJvcF9jaGlsZF9zcGVjLmpzCmluZGV4IDQ0MDNiMjc0Li4zODhkZmZiYyAxMDA2NDQK LS0tIGEvd2ViL3JlZ3Jlc3Npb24vamF2YXNjcmlwdC9zY2hlbWEvY2FuX2Ryb3BfY2hpbGRfc3Bl Yy5qcworKysgYi93ZWIvcmVncmVzc2lvbi9qYXZhc2NyaXB0L3NjaGVtYS9jYW5fZHJvcF9jaGls ZF9zcGVjLmpzCkBAIC03LDcgKzcsNyBAQAogLy8KIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCiAKLWltcG9ydCB7Y2FuRHJvcENo aWxkfSBmcm9tICcuLi8uLi8uLi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJz L2RhdGFiYXNlcy9zY2hlbWFzL3N0YXRpYy9qcy9jYW5fZHJvcF9jaGlsZCc7CitpbXBvcnQge2Nh bkRyb3BDaGlsZH0gZnJvbSAnLi4vLi4vLi4vcGdhZG1pbi9zdGF0aWMvanMvc2NoZW1hL2Nhbl9k cm9wX2NoaWxkJzsKIGltcG9ydCB7VHJlZUZha2V9IGZyb20gJy4uL3RyZWUvdHJlZV9mYWtlJzsK IAogbGV0IGNvbnRleHQgPSBkZXNjcmliZTsKZGlmZiAtLWdpdCBhL3dlYi9yZWdyZXNzaW9uL2ph dmFzY3JpcHQvdGFibGUvZW5hYmxlX2Rpc2FibGVfdHJpZ2dlcnNfc3BlYy5qcyBiL3dlYi9yZWdy ZXNzaW9uL2phdmFzY3JpcHQvdGFibGUvZW5hYmxlX2Rpc2FibGVfdHJpZ2dlcnNfc3BlYy5qcwpp bmRleCA3YmRkMjg0ZS4uNzY3Yzc4YTQgMTAwNjQ0Ci0tLSBhL3dlYi9yZWdyZXNzaW9uL2phdmFz Y3JpcHQvdGFibGUvZW5hYmxlX2Rpc2FibGVfdHJpZ2dlcnNfc3BlYy5qcworKysgYi93ZWIvcmVn cmVzc2lvbi9qYXZhc2NyaXB0L3RhYmxlL2VuYWJsZV9kaXNhYmxlX3RyaWdnZXJzX3NwZWMuanMK QEAgLTEyLDcgKzEyLDcgQEAgaW1wb3J0IGF4aW9zIGZyb20gJ2F4aW9zL2luZGV4JzsKIGltcG9y dCB7CiAgIGVuYWJsZVRyaWdnZXJzLAogICBkaXNhYmxlVHJpZ2dlcnMsCi19IGZyb20gJy4uLy4u Ly4uL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVt YXMvdGFibGVzL3N0YXRpYy9qcy9lbmFibGVfZGlzYWJsZV90cmlnZ2Vycyc7Cit9IGZyb20gJy4u Ly4uLy4uL3BnYWRtaW4vc3RhdGljL2pzL3RhYmxlL2VuYWJsZV9kaXNhYmxlX3RyaWdnZXJzJzsK IGltcG9ydCB7VHJlZUZha2V9IGZyb20gJy4uL3RyZWUvdHJlZV9mYWtlJzsKIGltcG9ydCB7VHJl ZU5vZGV9IGZyb20gJy4uLy4uLy4uL3BnYWRtaW4vc3RhdGljL2pzL3RyZWUvdHJlZSc7CiAKLS0g CjIuMTYuMgoK --00000000000053c199056b687e7b Content-Type: application/octet-stream; name="0003-Extract-test-and-refactor-methods.patch" Content-Disposition: attachment; filename="0003-Extract-test-and-refactor-methods.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_jgsi9o702 ZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2Rh dGFiYXNlcy9zY2hlbWFzL2NvbGxhdGlvbnMvc3RhdGljL2pzL2NvbGxhdGlvbi5qcyBiL3dlYi9w Z2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2Nv bGxhdGlvbnMvc3RhdGljL2pzL2NvbGxhdGlvbi5qcwppbmRleCA5MDE1ZDhkMi4uNWEzYTRiYzAg MTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2Rh dGFiYXNlcy9zY2hlbWFzL2NvbGxhdGlvbnMvc3RhdGljL2pzL2NvbGxhdGlvbi5qcworKysgYi93 ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1h cy9jb2xsYXRpb25zL3N0YXRpYy9qcy9jb2xsYXRpb24uanMKQEAgLTEsOCArMSw5IEBACiBkZWZp bmUoJ3BnYWRtaW4ubm9kZS5jb2xsYXRpb24nLCBbCiAgICdzb3VyY2VzL2dldHRleHQnLCAnc291 cmNlcy91cmxfZm9yJywgJ2pxdWVyeScsICd1bmRlcnNjb3JlJywKICAgJ3VuZGVyc2NvcmUuc3Ry aW5nJywgJ3NvdXJjZXMvcGdhZG1pbicsICdwZ2FkbWluLmJyb3dzZXInLAorICAnc291cmNlcy9t ZW51L2Nhbl9jcmVhdGUnLAogICAncGdhZG1pbi5icm93c2VyLmNvbGxlY3Rpb24nLAotXSwgZnVu Y3Rpb24oZ2V0dGV4dCwgdXJsX2ZvciwgJCwgXywgUywgcGdBZG1pbiwgcGdCcm93c2VyKSB7Citd LCBmdW5jdGlvbihnZXR0ZXh0LCB1cmxfZm9yLCAkLCBfLCBTLCBwZ0FkbWluLCBwZ0Jyb3dzZXIs IGNhbkNyZWF0ZSkgewogCiAgIGlmICghcGdCcm93c2VyLk5vZGVzWydjb2xsLWNvbGxhdGlvbidd KSB7CiAgICAgcGdBZG1pbi5Ccm93c2VyLk5vZGVzWydjb2xsLWNvbGxhdGlvbiddID0KQEAgLTIy MywzMiArMjI0LDcgQEAgZGVmaW5lKCdwZ2FkbWluLm5vZGUuY29sbGF0aW9uJywgWwogICAgICAg ICB9LAogICAgICAgfSksCiAgICAgICBjYW5DcmVhdGU6IGZ1bmN0aW9uKGl0ZW1EYXRhLCBpdGVt LCBkYXRhKSB7Ci0gICAgICAgICAgLy9JZiBjaGVjayBpcyBmYWxzZSB0aGVuICwgd2Ugd2lsbCBh bGxvdyBjcmVhdGUgbWVudQotICAgICAgICBpZiAoZGF0YSAmJiBkYXRhLmNoZWNrID09IGZhbHNl KQotICAgICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgICAgIHZhciB0ID0gcGdCcm93c2VyLnRy ZWUsIGkgPSBpdGVtLCBkID0gaXRlbURhdGE7Ci0gICAgICAgICAgLy8gVG8gaXRlcmF0ZSBvdmVy IHRyZWUgdG8gY2hlY2sgcGFyZW50IG5vZGUKLSAgICAgICAgd2hpbGUgKGkpIHsKLSAgICAgICAg ICAgIC8vIElmIGl0IGlzIHNjaGVtYSB0aGVuIGFsbG93IHVzZXIgdG8gY3JlYXRlIGNvbGxhdGlv bgotICAgICAgICAgIGlmIChfLmluZGV4T2YoWydzY2hlbWEnXSwgZC5fdHlwZSkgPiAtMSkKLSAg ICAgICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgICAgICAgaWYgKCdjb2xsLWNvbGxhdGlvbicg PT0gZC5fdHlwZSkgewotICAgICAgICAgICAgICAvL0NoZWNrIGlmIHdlIGFyZSBub3QgY2hpbGQg b2YgY2F0YWxvZwotICAgICAgICAgICAgdmFyIHByZXZfaSA9IHQuaGFzUGFyZW50KGkpID8gdC5w YXJlbnQoaSkgOiBudWxsLAotICAgICAgICAgICAgICBwcmV2X2QgPSBwcmV2X2kgPyB0Lml0ZW1E YXRhKHByZXZfaSkgOiBudWxsOwotICAgICAgICAgICAgaWYoIHByZXZfZC5fdHlwZSA9PSAnY2F0 YWxvZycpIHsKLSAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgfSBlbHNl IHsKLSAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAg fQotICAgICAgICAgIGkgPSB0Lmhhc1BhcmVudChpKSA/IHQucGFyZW50KGkpIDogbnVsbDsKLSAg ICAgICAgICBkID0gaSA/IHQuaXRlbURhdGEoaSkgOiBudWxsOwotICAgICAgICB9Ci0gICAgICAg ICAgLy8gYnkgZGVmYXVsdCB3ZSBkbyBub3Qgd2FudCB0byBhbGxvdyBjcmVhdGUgbWVudQotICAg ICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgcmV0dXJuIGNhbkNyZWF0ZS5jYW5DcmVhdGUocGdC cm93c2VyLCAnY29sbC1jb2xsYXRpb24nLCBpdGVtLCBkYXRhKTsKICAgICAgIH0sCiAgICAgfSk7 CiAKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJz L2RhdGFiYXNlcy9zY2hlbWFzL2RvbWFpbnMvc3RhdGljL2pzL2RvbWFpbi5qcyBiL3dlYi9wZ2Fk bWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2RvbWFp bnMvc3RhdGljL2pzL2RvbWFpbi5qcwppbmRleCA0MDNjYTQ3MS4uMWEzOGIwODMgMTAwNjQ0Ci0t LSBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9z Y2hlbWFzL2RvbWFpbnMvc3RhdGljL2pzL2RvbWFpbi5qcworKysgYi93ZWIvcGdhZG1pbi9icm93 c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9kb21haW5zL3N0YXRp Yy9qcy9kb21haW4uanMKQEAgLTIsOSArMiwxMSBAQAogZGVmaW5lKCdwZ2FkbWluLm5vZGUuZG9t YWluJywgWwogICAnc291cmNlcy9nZXR0ZXh0JywgJ3NvdXJjZXMvdXJsX2ZvcicsICdqcXVlcnkn LCAndW5kZXJzY29yZScsICdiYWNrYm9uZScsCiAgICdzb3VyY2VzL3BnYWRtaW4nLCAncGdhZG1p bi5icm93c2VyJywgJ3BnYWRtaW4uYmFja2Zvcm0nLCAncGdhZG1pbi5iYWNrZ3JpZCcsCisgICdz b3VyY2VzL21lbnUvY2FuX2NyZWF0ZScsCiAgICdwZ2FkbWluLmJyb3dzZXIuY29sbGVjdGlvbics CiBdLCBmdW5jdGlvbigKLSAgZ2V0dGV4dCwgdXJsX2ZvciwgJCwgXywgQmFja2JvbmUsIHBnQWRt aW4sIHBnQnJvd3NlciwgQmFja2Zvcm0sIEJhY2tncmlkCisgIGdldHRleHQsIHVybF9mb3IsICQs IF8sIEJhY2tib25lLCBwZ0FkbWluLCBwZ0Jyb3dzZXIsIEJhY2tmb3JtLCBCYWNrZ3JpZCwKKyAg Y2FuQ3JlYXRlCiApIHsKIAogICAvLyBEZWZpbmUgRG9tYWluIENvbGxlY3Rpb24gTm9kZQpAQCAt Mjk3LDMyICsyOTksNyBAQCBkZWZpbmUoJ3BnYWRtaW4ubm9kZS5kb21haW4nLCBbCiAgICAgICAg IH0sCiAgICAgICB9KSwKICAgICAgIGNhbkNyZWF0ZTogZnVuY3Rpb24oaXRlbURhdGEsIGl0ZW0s IGRhdGEpIHsKLSAgICAgICAgLy9JZiBjaGVjayBpcyBmYWxzZSB0aGVuICwgd2Ugd2lsbCBhbGxv dyBjcmVhdGUgbWVudQotICAgICAgICBpZiAoZGF0YSAmJiBkYXRhLmNoZWNrID09IGZhbHNlKQot ICAgICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgICAgIHZhciB0ID0gcGdCcm93c2VyLnRyZWUs IGkgPSBpdGVtLCBkID0gaXRlbURhdGE7Ci0gICAgICAgIC8vIFRvIGl0ZXJhdGUgb3ZlciB0cmVl IHRvIGNoZWNrIHBhcmVudCBub2RlCi0gICAgICAgIHdoaWxlIChpKSB7Ci0gICAgICAgICAgLy8g SWYgaXQgaXMgc2NoZW1hIHRoZW4gYWxsb3cgdXNlciB0byBjcmVhdGUgZG9tYWluCi0gICAgICAg ICAgaWYgKF8uaW5kZXhPZihbJ3NjaGVtYSddLCBkLl90eXBlKSA+IC0xKQotICAgICAgICAgICAg cmV0dXJuIHRydWU7Ci0KLSAgICAgICAgICBpZiAoJ2NvbGwtZG9tYWluJyA9PSBkLl90eXBlKSB7 Ci0gICAgICAgICAgICAvL0NoZWNrIGlmIHdlIGFyZSBub3QgY2hpbGQgb2YgY2F0YWxvZwotICAg ICAgICAgICAgdmFyIHByZXZfaSA9IHQuaGFzUGFyZW50KGkpID8gdC5wYXJlbnQoaSkgOiBudWxs LAotICAgICAgICAgICAgICBwcmV2X2QgPSBwcmV2X2kgPyB0Lml0ZW1EYXRhKHByZXZfaSkgOiBu dWxsOwotICAgICAgICAgICAgaWYoIHByZXZfZC5fdHlwZSA9PSAnY2F0YWxvZycpIHsKLSAgICAg ICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAg ICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgfQotICAgICAgICAgIGkg PSB0Lmhhc1BhcmVudChpKSA/IHQucGFyZW50KGkpIDogbnVsbDsKLSAgICAgICAgICBkID0gaSA/ IHQuaXRlbURhdGEoaSkgOiBudWxsOwotICAgICAgICB9Ci0gICAgICAgIC8vIGJ5IGRlZmF1bHQg d2UgZG8gbm90IHdhbnQgdG8gYWxsb3cgY3JlYXRlIG1lbnUKLSAgICAgICAgcmV0dXJuIHRydWU7 CisgICAgICAgIHJldHVybiBjYW5DcmVhdGUuY2FuQ3JlYXRlKHBnQnJvd3NlciwgJ2NvbGwtZG9t YWluJywgaXRlbSwgZGF0YSk7CiAgICAgICB9LAogICAgICAgaXNEaXNhYmxlZDogZnVuY3Rpb24o bSl7CiAgICAgICAgIGlmICghbS5pc05ldygpKSB7CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9i cm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9mb3JlaWduX3Rh Ymxlcy9zdGF0aWMvanMvZm9yZWlnbl90YWJsZS5qcyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2Vy dmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2ZvcmVpZ25fdGFibGVzL3N0YXRp Yy9qcy9mb3JlaWduX3RhYmxlLmpzCmluZGV4IDE2MGRiODNmLi4wZTgyMDM0MyAxMDA2NDQKLS0t IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3Nj aGVtYXMvZm9yZWlnbl90YWJsZXMvc3RhdGljL2pzL2ZvcmVpZ25fdGFibGUuanMKKysrIGIvd2Vi L3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMv Zm9yZWlnbl90YWJsZXMvc3RhdGljL2pzL2ZvcmVpZ25fdGFibGUuanMKQEAgLTIsOSArMiwxMSBA QAogZGVmaW5lKCdwZ2FkbWluLm5vZGUuZm9yZWlnbl90YWJsZScsIFsKICAgJ3NvdXJjZXMvZ2V0 dGV4dCcsICdzb3VyY2VzL3VybF9mb3InLCAnanF1ZXJ5JywgJ3VuZGVyc2NvcmUnLCAnYmFja2Jv bmUnLAogICAnc291cmNlcy9wZ2FkbWluJywgJ3BnYWRtaW4uYnJvd3NlcicsICdwZ2FkbWluLmJh Y2tmb3JtJywgJ3BnYWRtaW4uYmFja2dyaWQnLAorICAnc291cmNlcy9tZW51L2Nhbl9jcmVhdGUn LAogICAncGdhZG1pbi5icm93c2VyLmNvbGxlY3Rpb24nLAogXSwgZnVuY3Rpb24oCi0gIGdldHRl eHQsIHVybF9mb3IsICQsIF8sIEJhY2tib25lLCBwZ0FkbWluLCBwZ0Jyb3dzZXIsIEJhY2tmb3Jt LCBCYWNrZ3JpZAorICBnZXR0ZXh0LCB1cmxfZm9yLCAkLCBfLCBCYWNrYm9uZSwgcGdBZG1pbiwg cGdCcm93c2VyLCBCYWNrZm9ybSwgQmFja2dyaWQsCisgIGNhbkNyZWF0ZQogKSB7CiAKICAgaWYg KCFwZ0Jyb3dzZXIuTm9kZXNbJ2NvbGwtZm9yZWlnbl90YWJsZSddKSB7CkBAIC02NjAsMzIgKzY2 Miw3IEBAIGRlZmluZSgncGdhZG1pbi5ub2RlLmZvcmVpZ25fdGFibGUnLCBbCiAgICAgICAgIH0s CiAgICAgICB9KSwKICAgICAgIGNhbkNyZWF0ZTogZnVuY3Rpb24oaXRlbURhdGEsIGl0ZW0sIGRh dGEpIHsKLSAgICAgICAgLy9JZiBjaGVjayBpcyBmYWxzZSB0aGVuICwgd2Ugd2lsbCBhbGxvdyBj cmVhdGUgbWVudQotICAgICAgICBpZiAoZGF0YSAmJiBkYXRhLmNoZWNrID09IGZhbHNlKQotICAg ICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgICAgIHZhciB0ID0gcGdCcm93c2VyLnRyZWUsIGkg PSBpdGVtLCBkID0gaXRlbURhdGE7Ci0gICAgICAgIC8vIFRvIGl0ZXJhdGUgb3ZlciB0cmVlIHRv IGNoZWNrIHBhcmVudCBub2RlCi0gICAgICAgIHdoaWxlIChpKSB7Ci0gICAgICAgICAgLy8gSWYg aXQgaXMgc2NoZW1hIHRoZW4gYWxsb3cgdXNlciB0byBjcmVhdGUgZm9yZWlnbiB0YWJsZQotICAg ICAgICAgIGlmIChfLmluZGV4T2YoWydzY2hlbWEnXSwgZC5fdHlwZSkgPiAtMSkKLSAgICAgICAg ICAgIHJldHVybiB0cnVlOwotCi0gICAgICAgICAgaWYgKCdjb2xsLWZvcmVpZ25fdGFibGUnID09 IGQuX3R5cGUpIHsKLSAgICAgICAgICAgIC8vQ2hlY2sgaWYgd2UgYXJlIG5vdCBjaGlsZCBvZiBj YXRhbG9nCi0gICAgICAgICAgICB2YXIgcHJldl9pID0gdC5oYXNQYXJlbnQoaSkgPyB0LnBhcmVu dChpKSA6IG51bGwsCi0gICAgICAgICAgICAgIHByZXZfZCA9IHByZXZfaSA/IHQuaXRlbURhdGEo cHJldl9pKSA6IG51bGw7Ci0gICAgICAgICAgICBpZiggcHJldl9kLl90eXBlID09ICdjYXRhbG9n JykgewotICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICB9IGVsc2Ugewot ICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICB9Ci0g ICAgICAgICAgaSA9IHQuaGFzUGFyZW50KGkpID8gdC5wYXJlbnQoaSkgOiBudWxsOwotICAgICAg ICAgIGQgPSBpID8gdC5pdGVtRGF0YShpKSA6IG51bGw7Ci0gICAgICAgIH0KLSAgICAgICAgLy8g YnkgZGVmYXVsdCB3ZSBkbyBub3Qgd2FudCB0byBhbGxvdyBjcmVhdGUgbWVudQotICAgICAgICBy ZXR1cm4gdHJ1ZTsKKyAgICAgICAgcmV0dXJuIGNhbkNyZWF0ZS5jYW5DcmVhdGUocGdCcm93c2Vy LCAnY29sbC1mb3JlaWduX3RhYmxlJywgaXRlbSwgZGF0YSk7CiAgICAgICB9LAogICAgIH0pOwog CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9k YXRhYmFzZXMvc2NoZW1hcy9mdHNfY29uZmlndXJhdGlvbnMvc3RhdGljL2pzL2Z0c19jb25maWd1 cmF0aW9uLmpzIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0 YWJhc2VzL3NjaGVtYXMvZnRzX2NvbmZpZ3VyYXRpb25zL3N0YXRpYy9qcy9mdHNfY29uZmlndXJh dGlvbi5qcwppbmRleCA4OTgwNjY4MS4uZjJmZTg1YmUgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWlu L2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2Z0c19jb25m aWd1cmF0aW9ucy9zdGF0aWMvanMvZnRzX2NvbmZpZ3VyYXRpb24uanMKKysrIGIvd2ViL3BnYWRt aW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZnRzX2Nv bmZpZ3VyYXRpb25zL3N0YXRpYy9qcy9mdHNfY29uZmlndXJhdGlvbi5qcwpAQCAtMSw5ICsxLDEx IEBACiBkZWZpbmUoJ3BnYWRtaW4ubm9kZS5mdHNfY29uZmlndXJhdGlvbicsIFsKICAgJ3NvdXJj ZXMvZ2V0dGV4dCcsICdzb3VyY2VzL3VybF9mb3InLCAnanF1ZXJ5JywgJ3VuZGVyc2NvcmUnLCAn YmFja2JvbmUnLAogICAnc291cmNlcy9wZ2FkbWluJywgJ3BnYWRtaW4uYnJvd3NlcicsICdwZ2Fk bWluLmJhY2tmb3JtJywgJ3BnYWRtaW4uYmFja2dyaWQnLAorICAnc291cmNlcy9tZW51L2Nhbl9j cmVhdGUnLAogICAncGdhZG1pbi5icm93c2VyLmNvbGxlY3Rpb24nLAogXSwgZnVuY3Rpb24oCi0g IGdldHRleHQsIHVybF9mb3IsICQsIF8sIEJhY2tib25lLCBwZ0FkbWluLCBwZ0Jyb3dzZXIsIEJh Y2tmb3JtLCBCYWNrZ3JpZAorICBnZXR0ZXh0LCB1cmxfZm9yLCAkLCBfLCBCYWNrYm9uZSwgcGdB ZG1pbiwgcGdCcm93c2VyLCBCYWNrZm9ybSwgQmFja2dyaWQsCisgIGNhbkNyZWF0ZQogKSB7CiAK ICAgLy8gTW9kZWwgZm9yIHRva2VucyBjb250cm9sCkBAIC01NzgsMzIgKzU4MCw3IEBAIGRlZmlu ZSgncGdhZG1pbi5ub2RlLmZ0c19jb25maWd1cmF0aW9uJywgWwogICAgICAgICB9LAogICAgICAg fSksCiAgICAgICBjYW5DcmVhdGU6IGZ1bmN0aW9uKGl0ZW1EYXRhLCBpdGVtLCBkYXRhKSB7Ci0g ICAgICAgIC8vSWYgY2hlY2sgaXMgZmFsc2UgdGhlbiAsIHdlIHdpbGwgYWxsb3cgY3JlYXRlIG1l bnUKLSAgICAgICAgaWYgKGRhdGEgJiYgZGF0YS5jaGVjayA9PSBmYWxzZSkKLSAgICAgICAgICBy ZXR1cm4gdHJ1ZTsKLQotICAgICAgICB2YXIgdCA9IHBnQnJvd3Nlci50cmVlLCBpID0gaXRlbSwg ZCA9IGl0ZW1EYXRhOwotICAgICAgICAvLyBUbyBpdGVyYXRlIG92ZXIgdHJlZSB0byBjaGVjayBw YXJlbnQgbm9kZQotICAgICAgICB3aGlsZSAoaSkgewotICAgICAgICAgIC8vIElmIGl0IGlzIHNj aGVtYSB0aGVuIGFsbG93IHVzZXIgdG8gY3JlYXRlIGZ0cyBjb25maWd1cmF0aW9uCi0gICAgICAg ICAgaWYgKF8uaW5kZXhPZihbJ3NjaGVtYSddLCBkLl90eXBlKSA+IC0xKQotICAgICAgICAgICAg cmV0dXJuIHRydWU7Ci0KLSAgICAgICAgICBpZiAoJ2NvbGwtZnRzX2NvbmZpZ3VyYXRpb24nID09 IGQuX3R5cGUpIHsKLSAgICAgICAgICAgIC8vQ2hlY2sgaWYgd2UgYXJlIG5vdCBjaGlsZCBvZiBj YXRhbG9nCi0gICAgICAgICAgICB2YXIgcHJldl9pID0gdC5oYXNQYXJlbnQoaSkgPyB0LnBhcmVu dChpKSA6IG51bGwsCi0gICAgICAgICAgICAgIHByZXZfZCA9IHByZXZfaSA/IHQuaXRlbURhdGEo cHJldl9pKSA6IG51bGw7Ci0gICAgICAgICAgICBpZiggcHJldl9kLl90eXBlID09ICdjYXRhbG9n JykgewotICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICB9IGVsc2Ugewot ICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICB9Ci0g ICAgICAgICAgaSA9IHQuaGFzUGFyZW50KGkpID8gdC5wYXJlbnQoaSkgOiBudWxsOwotICAgICAg ICAgIGQgPSBpID8gdC5pdGVtRGF0YShpKSA6IG51bGw7Ci0gICAgICAgIH0KLSAgICAgICAgLy8g YnkgZGVmYXVsdCB3ZSBkbyBub3Qgd2FudCB0byBhbGxvdyBjcmVhdGUgbWVudQotICAgICAgICBy ZXR1cm4gdHJ1ZTsKKyAgICAgICAgcmV0dXJuIGNhbkNyZWF0ZS5jYW5DcmVhdGUocGdCcm93c2Vy LCAnY29sbC1mdHNfY29uZmlndXJhdGlvbicsIGl0ZW0sIGRhdGEpOwogICAgICAgfSwKICAgICB9 KTsKICAgfQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3Nl cnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZnRzX2RpY3Rpb25hcmllcy9zdGF0aWMvanMvZnRzX2Rp Y3Rpb25hcnkuanMgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9k YXRhYmFzZXMvc2NoZW1hcy9mdHNfZGljdGlvbmFyaWVzL3N0YXRpYy9qcy9mdHNfZGljdGlvbmFy eS5qcwppbmRleCBlZDgzZmViMS4uZjFhMzMwZjcgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL2Jy b3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2Z0c19kaWN0aW9u YXJpZXMvc3RhdGljL2pzL2Z0c19kaWN0aW9uYXJ5LmpzCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dz ZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2Z0c19kaWN0aW9uYXJp ZXMvc3RhdGljL2pzL2Z0c19kaWN0aW9uYXJ5LmpzCkBAIC0xLDggKzEsMTAgQEAKIGRlZmluZSgn cGdhZG1pbi5ub2RlLmZ0c19kaWN0aW9uYXJ5JywgWwogICAnc291cmNlcy9nZXR0ZXh0JywgJ3Nv dXJjZXMvdXJsX2ZvcicsICdqcXVlcnknLCAndW5kZXJzY29yZScsCiAgICd1bmRlcnNjb3JlLnN0 cmluZycsICdzb3VyY2VzL3BnYWRtaW4nLCAncGdhZG1pbi5icm93c2VyJywgJ3BnYWRtaW4uYmFj a2Zvcm0nLAorICAnc291cmNlcy9tZW51L2Nhbl9jcmVhdGUnLAogICAncGdhZG1pbi5icm93c2Vy LmNvbGxlY3Rpb24nLAotXSwgZnVuY3Rpb24oZ2V0dGV4dCwgdXJsX2ZvciwgJCwgXywgUywgcGdB ZG1pbiwgcGdCcm93c2VyLCBCYWNrZm9ybSkgeworXSwgZnVuY3Rpb24oZ2V0dGV4dCwgdXJsX2Zv ciwgJCwgXywgUywgcGdBZG1pbiwgcGdCcm93c2VyLCBCYWNrZm9ybSwKKyAgY2FuQ3JlYXRlKSB7 CiAKICAgLy8gRXh0ZW5kIHRoZSBicm93c2VyJ3Mgbm9kZSBtb2RlbCBjbGFzcyB0byBjcmVhdGUg YSBvcHRpb24vdmFsdWUgcGFpcgogICB2YXIgT3B0aW9uTGFiZWxNb2RlbCA9IHBnQWRtaW4uQnJv d3Nlci5Ob2RlLk1vZGVsLmV4dGVuZCh7CkBAIC0xODcsMzIgKzE4OSw3IEBAIGRlZmluZSgncGdh ZG1pbi5ub2RlLmZ0c19kaWN0aW9uYXJ5JywgWwogICAgICAgICB9LAogICAgICAgfSksCiAgICAg ICBjYW5DcmVhdGU6IGZ1bmN0aW9uKGl0ZW1EYXRhLCBpdGVtLCBkYXRhKSB7Ci0gICAgICAgIC8v SWYgY2hlY2sgaXMgZmFsc2UgdGhlbiAsIHdlIHdpbGwgYWxsb3cgY3JlYXRlIG1lbnUKLSAgICAg ICAgaWYgKGRhdGEgJiYgZGF0YS5jaGVjayA9PSBmYWxzZSkKLSAgICAgICAgICByZXR1cm4gdHJ1 ZTsKLQotICAgICAgICB2YXIgdCA9IHBnQnJvd3Nlci50cmVlLCBpID0gaXRlbSwgZCA9IGl0ZW1E YXRhOwotICAgICAgICAvLyBUbyBpdGVyYXRlIG92ZXIgdHJlZSB0byBjaGVjayBwYXJlbnQgbm9k ZQotICAgICAgICB3aGlsZSAoaSkgewotICAgICAgICAgIC8vIElmIGl0IGlzIHNjaGVtYSB0aGVu IGFsbG93IHVzZXIgdG8gY3JlYXRlIGZ0cyBkaWN0aW9uYXJ5Ci0gICAgICAgICAgaWYgKF8uaW5k ZXhPZihbJ3NjaGVtYSddLCBkLl90eXBlKSA+IC0xKQotICAgICAgICAgICAgcmV0dXJuIHRydWU7 Ci0KLSAgICAgICAgICBpZiAoJ2NvbGwtZnRzX2RpY3Rpb25hcnknID09IGQuX3R5cGUpIHsKLSAg ICAgICAgICAgIC8vQ2hlY2sgaWYgd2UgYXJlIG5vdCBjaGlsZCBvZiBjYXRhbG9nCi0gICAgICAg ICAgICB2YXIgcHJldl9pID0gdC5oYXNQYXJlbnQoaSkgPyB0LnBhcmVudChpKSA6IG51bGwsCi0g ICAgICAgICAgICAgIHByZXZfZCA9IHByZXZfaSA/IHQuaXRlbURhdGEocHJldl9pKSA6IG51bGw7 Ci0gICAgICAgICAgICBpZiggcHJldl9kLl90eXBlID09ICdjYXRhbG9nJykgewotICAgICAgICAg ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICBy ZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICB9Ci0gICAgICAgICAgaSA9IHQu aGFzUGFyZW50KGkpID8gdC5wYXJlbnQoaSkgOiBudWxsOwotICAgICAgICAgIGQgPSBpID8gdC5p dGVtRGF0YShpKSA6IG51bGw7Ci0gICAgICAgIH0KLSAgICAgICAgLy8gYnkgZGVmYXVsdCB3ZSBk byBub3Qgd2FudCB0byBhbGxvdyBjcmVhdGUgbWVudQotICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg ICAgICAgcmV0dXJuIGNhbkNyZWF0ZS5jYW5DcmVhdGUocGdCcm93c2VyLCAnY29sbC1mdHNfZGlj dGlvbmFyeScsIGl0ZW0sIGRhdGEpOwogICAgICAgfSwKICAgICB9KTsKICAgfQpkaWZmIC0tZ2l0 IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3Nj aGVtYXMvZnRzX3BhcnNlci9zdGF0aWMvanMvZnRzX3BhcnNlci5qcyBiL3dlYi9wZ2FkbWluL2Jy b3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2Z0c19wYXJzZXIv c3RhdGljL2pzL2Z0c19wYXJzZXIuanMKaW5kZXggOTJjMDc4NmUuLmRhZWEzNWRlIDEwMDY0NAot LS0gYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMv c2NoZW1hcy9mdHNfcGFyc2VyL3N0YXRpYy9qcy9mdHNfcGFyc2VyLmpzCisrKyBiL3dlYi9wZ2Fk bWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2Z0c19w YXJzZXIvc3RhdGljL2pzL2Z0c19wYXJzZXIuanMKQEAgLTEsNyArMSw5IEBACiBkZWZpbmUoJ3Bn YWRtaW4ubm9kZS5mdHNfcGFyc2VyJywgWwogICAnc291cmNlcy9nZXR0ZXh0JywgJ3NvdXJjZXMv dXJsX2ZvcicsICdqcXVlcnknLCAndW5kZXJzY29yZScsCi0gICdzb3VyY2VzL3BnYWRtaW4nLCAn cGdhZG1pbi5icm93c2VyJywgJ3BnYWRtaW4uYnJvd3Nlci5jb2xsZWN0aW9uJywKLV0sIGZ1bmN0 aW9uKGdldHRleHQsIHVybF9mb3IsICQsIF8sIHBnQWRtaW4sIHBnQnJvd3NlcikgeworICAnc291 cmNlcy9wZ2FkbWluJywgJ3BnYWRtaW4uYnJvd3NlcicsCisgICdzb3VyY2VzL21lbnUvY2FuX2Ny ZWF0ZScsCisgICdwZ2FkbWluLmJyb3dzZXIuY29sbGVjdGlvbicsCitdLCBmdW5jdGlvbihnZXR0 ZXh0LCB1cmxfZm9yLCAkLCBfLCBwZ0FkbWluLCBwZ0Jyb3dzZXIsIGNhbkNyZWF0ZSkgewogCiAg IC8vIEV4dGVuZCB0aGUgY29sbGVjdGlvbiBjbGFzcyBmb3IgZnRzIHBhcnNlcgogICBpZiAoIXBn QnJvd3Nlci5Ob2Rlc1snY29sbC1mdHNfcGFyc2VyJ10pIHsKQEAgLTIwMCwzMiArMjAyLDcgQEAg ZGVmaW5lKCdwZ2FkbWluLm5vZGUuZnRzX3BhcnNlcicsIFsKICAgICAgICAgfSwKICAgICAgIH0p LAogICAgICAgY2FuQ3JlYXRlOiBmdW5jdGlvbihpdGVtRGF0YSwgaXRlbSwgZGF0YSkgewotICAg ICAgICAvL0lmIGNoZWNrIGlzIGZhbHNlIHRoZW4gLCB3ZSB3aWxsIGFsbG93IGNyZWF0ZSBtZW51 Ci0gICAgICAgIGlmIChkYXRhICYmIGRhdGEuY2hlY2sgPT0gZmFsc2UpCi0gICAgICAgICAgcmV0 dXJuIHRydWU7Ci0KLSAgICAgICAgdmFyIHQgPSBwZ0Jyb3dzZXIudHJlZSwgaSA9IGl0ZW0sIGQg PSBpdGVtRGF0YTsKLSAgICAgICAgLy8gVG8gaXRlcmF0ZSBvdmVyIHRyZWUgdG8gY2hlY2sgcGFy ZW50IG5vZGUKLSAgICAgICAgd2hpbGUgKGkpIHsKLSAgICAgICAgICAvLyBJZiBpdCBpcyBzY2hl bWEgdGhlbiBhbGxvdyB1c2VyIHRvIGNyZWF0ZSBmdHMgcGFyc2VyCi0gICAgICAgICAgaWYgKF8u aW5kZXhPZihbJ3NjaGVtYSddLCBkLl90eXBlKSA+IC0xKQotICAgICAgICAgICAgcmV0dXJuIHRy dWU7Ci0KLSAgICAgICAgICBpZiAoJ2NvbGwtZnRzX3BhcnNlcicgPT0gZC5fdHlwZSkgewotICAg ICAgICAgICAgLy9DaGVjayBpZiB3ZSBhcmUgbm90IGNoaWxkIG9mIGNhdGFsb2cKLSAgICAgICAg ICAgIHZhciBwcmV2X2kgPSB0Lmhhc1BhcmVudChpKSA/IHQucGFyZW50KGkpIDogbnVsbCwKLSAg ICAgICAgICAgICAgcHJldl9kID0gcHJldl9pID8gdC5pdGVtRGF0YShwcmV2X2kpIDogbnVsbDsK LSAgICAgICAgICAgIGlmKCBwcmV2X2QuX3R5cGUgPT0gJ2NhdGFsb2cnKSB7Ci0gICAgICAgICAg ICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgIHJl dHVybiB0cnVlOwotICAgICAgICAgICAgfQotICAgICAgICAgIH0KLSAgICAgICAgICBpID0gdC5o YXNQYXJlbnQoaSkgPyB0LnBhcmVudChpKSA6IG51bGw7Ci0gICAgICAgICAgZCA9IGkgPyB0Lml0 ZW1EYXRhKGkpIDogbnVsbDsKLSAgICAgICAgfQotICAgICAgICAvLyBieSBkZWZhdWx0IHdlIGRv IG5vdCB3YW50IHRvIGFsbG93IGNyZWF0ZSBtZW51Ci0gICAgICAgIHJldHVybiB0cnVlOworICAg ICAgICByZXR1cm4gY2FuQ3JlYXRlLmNhbkNyZWF0ZShwZ0Jyb3dzZXIsICdjb2xsLWZ0c19wYXJz ZXInLCBpdGVtLCBkYXRhKTsKICAgICAgIH0sCiAgICAgfSk7CiAgIH0KZGlmZiAtLWdpdCBhL3dl Yi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFz L2Z0c190ZW1wbGF0ZXMvc3RhdGljL2pzL2Z0c190ZW1wbGF0ZS5qcyBiL3dlYi9wZ2FkbWluL2Jy b3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2Z0c190ZW1wbGF0 ZXMvc3RhdGljL2pzL2Z0c190ZW1wbGF0ZS5qcwppbmRleCA2MDZhNTdhNi4uMGMwMDhjODMgMTAw NjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFi YXNlcy9zY2hlbWFzL2Z0c190ZW1wbGF0ZXMvc3RhdGljL2pzL2Z0c190ZW1wbGF0ZS5qcworKysg Yi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2No ZW1hcy9mdHNfdGVtcGxhdGVzL3N0YXRpYy9qcy9mdHNfdGVtcGxhdGUuanMKQEAgLTEsNyArMSw5 IEBACiBkZWZpbmUoJ3BnYWRtaW4ubm9kZS5mdHNfdGVtcGxhdGUnLCBbCiAgICdzb3VyY2VzL2dl dHRleHQnLCAnc291cmNlcy91cmxfZm9yJywgJ2pxdWVyeScsICd1bmRlcnNjb3JlJywKLSAgJ3Nv dXJjZXMvcGdhZG1pbicsICdwZ2FkbWluLmJyb3dzZXInLCAncGdhZG1pbi5icm93c2VyLmNvbGxl Y3Rpb24nLAotXSwgZnVuY3Rpb24oZ2V0dGV4dCwgdXJsX2ZvciwgJCwgXywgcGdBZG1pbiwgcGdC cm93c2VyKSB7CisgICdzb3VyY2VzL3BnYWRtaW4nLCAncGdhZG1pbi5icm93c2VyJywKKyAgJ3Nv dXJjZXMvbWVudS9jYW5fY3JlYXRlJywKKyAgJ3BnYWRtaW4uYnJvd3Nlci5jb2xsZWN0aW9uJywK K10sIGZ1bmN0aW9uKGdldHRleHQsIHVybF9mb3IsICQsIF8sIHBnQWRtaW4sIHBnQnJvd3Nlciwg Y2FuQ3JlYXRlKSB7CiAKICAgLy8gRXh0ZW5kIHRoZSBjb2xsZWN0aW9uIGNsYXNzIGZvciBmdHMg dGVtcGxhdGUKICAgaWYgKCFwZ0Jyb3dzZXIuTm9kZXNbJ2NvbGwtZnRzX3RlbXBsYXRlJ10pIHsK QEAgLTE0MCwzMiArMTQyLDcgQEAgZGVmaW5lKCdwZ2FkbWluLm5vZGUuZnRzX3RlbXBsYXRlJywg WwogICAgICAgICB9LAogICAgICAgfSksCiAgICAgICBjYW5DcmVhdGU6IGZ1bmN0aW9uKGl0ZW1E YXRhLCBpdGVtLCBkYXRhKSB7Ci0gICAgICAgIC8vSWYgY2hlY2sgaXMgZmFsc2UgdGhlbiAsIHdl IHdpbGwgYWxsb3cgY3JlYXRlIG1lbnUKLSAgICAgICAgaWYgKGRhdGEgJiYgZGF0YS5jaGVjayA9 PSBmYWxzZSkKLSAgICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgICAgICB2YXIgdCA9IHBnQnJv d3Nlci50cmVlLCBpID0gaXRlbSwgZCA9IGl0ZW1EYXRhOwotICAgICAgICAvLyBUbyBpdGVyYXRl IG92ZXIgdHJlZSB0byBjaGVjayBwYXJlbnQgbm9kZQotICAgICAgICB3aGlsZSAoaSkgewotICAg ICAgICAgIC8vIElmIGl0IGlzIHNjaGVtYSB0aGVuIGFsbG93IHVzZXIgdG8gY3JlYXRlIGZ0cyBm dHNfdGVtcGxhdGUKLSAgICAgICAgICBpZiAoXy5pbmRleE9mKFsnc2NoZW1hJ10sIGQuX3R5cGUp ID4gLTEpCi0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgICAgICAgIGlmICgnY29sbC1m dHNfdGVtcGxhdGUnID09IGQuX3R5cGUpIHsKLSAgICAgICAgICAgIC8vQ2hlY2sgaWYgd2UgYXJl IG5vdCBjaGlsZCBvZiBjYXRhbG9nCi0gICAgICAgICAgICB2YXIgcHJldl9pID0gdC5oYXNQYXJl bnQoaSkgPyB0LnBhcmVudChpKSA6IG51bGwsCi0gICAgICAgICAgICAgIHByZXZfZCA9IHByZXZf aSA/IHQuaXRlbURhdGEocHJldl9pKSA6IG51bGw7Ci0gICAgICAgICAgICBpZiggcHJldl9kLl90 eXBlID09ICdjYXRhbG9nJykgewotICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAg ICAgICB9IGVsc2UgewotICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgIH0K LSAgICAgICAgICB9Ci0gICAgICAgICAgaSA9IHQuaGFzUGFyZW50KGkpID8gdC5wYXJlbnQoaSkg OiBudWxsOwotICAgICAgICAgIGQgPSBpID8gdC5pdGVtRGF0YShpKSA6IG51bGw7Ci0gICAgICAg IH0KLSAgICAgICAgLy8gYnkgZGVmYXVsdCB3ZSBkbyBub3Qgd2FudCB0byBhbGxvdyBjcmVhdGUg bWVudQotICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgcmV0dXJuIGNhbkNyZWF0ZS5jYW5D cmVhdGUocGdCcm93c2VyLCAnY29sbC1mdHNfdGVtcGxhdGUnLCBpdGVtLCBkYXRhKTsKICAgICAg IH0sCiAgICAgfSk7CiAgIH0KZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVy X2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2Z1bmN0aW9ucy9zdGF0aWMvanMvZnVu Y3Rpb24uanMgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRh YmFzZXMvc2NoZW1hcy9mdW5jdGlvbnMvc3RhdGljL2pzL2Z1bmN0aW9uLmpzCmluZGV4IDZlNDA1 MTY1Li40MDYzNjQ0NiAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3Jv dXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZnVuY3Rpb25zL3N0YXRpYy9qcy9mdW5jdGlv bi5qcworKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRh YmFzZXMvc2NoZW1hcy9mdW5jdGlvbnMvc3RhdGljL2pzL2Z1bmN0aW9uLmpzCkBAIC0yLDggKzIs MTAgQEAKIGRlZmluZSgncGdhZG1pbi5ub2RlLmZ1bmN0aW9uJywgWwogICAnc291cmNlcy9nZXR0 ZXh0JywgJ3NvdXJjZXMvdXJsX2ZvcicsICdqcXVlcnknLCAndW5kZXJzY29yZScsICdiYWNrYm9u ZScsCiAgICdzb3VyY2VzL3BnYWRtaW4nLCAncGdhZG1pbi5icm93c2VyJywgJ3BnYWRtaW4uYmFj a2Zvcm0nLAorICAnc291cmNlcy9tZW51L2Nhbl9jcmVhdGUnLAogICAncGdhZG1pbi5icm93c2Vy LmNvbGxlY3Rpb24nLCAncGdhZG1pbi5icm93c2VyLnNlcnZlci5wcml2aWxlZ2UnLAotXSwgZnVu Y3Rpb24oZ2V0dGV4dCwgdXJsX2ZvciwgJCwgXywgQmFja2JvbmUsIHBnQWRtaW4sIHBnQnJvd3Nl ciwgQmFja2Zvcm0pIHsKK10sIGZ1bmN0aW9uKGdldHRleHQsIHVybF9mb3IsICQsIF8sIEJhY2ti b25lLCBwZ0FkbWluLCBwZ0Jyb3dzZXIsIEJhY2tmb3JtLAorICAgY2FuQ3JlYXRlKSB7CiAKICAg aWYgKCFwZ0Jyb3dzZXIuTm9kZXNbJ2NvbGwtZnVuY3Rpb24nXSkgewogICAgIHBnQnJvd3Nlci5O b2Rlc1snY29sbC1mdW5jdGlvbiddID0KQEAgLTQzOSwzMiArNDQxLDcgQEAgZGVmaW5lKCdwZ2Fk bWluLm5vZGUuZnVuY3Rpb24nLCBbCiAgICAgICAgIH0sCiAgICAgICB9KSwKICAgICAgIGNhbkNy ZWF0ZTogZnVuY3Rpb24oaXRlbURhdGEsIGl0ZW0sIGRhdGEpIHsKLSAgICAgICAgLy9JZiBjaGVj ayBpcyBmYWxzZSB0aGVuICwgd2Ugd2lsbCBhbGxvdyBjcmVhdGUgbWVudQotICAgICAgICBpZiAo ZGF0YSAmJiBkYXRhLmNoZWNrID09IGZhbHNlKQotICAgICAgICAgIHJldHVybiB0cnVlOwotCi0g ICAgICAgIHZhciB0ID0gcGdCcm93c2VyLnRyZWUsIGkgPSBpdGVtLCBkID0gaXRlbURhdGE7Ci0g ICAgICAgIC8vIFRvIGl0ZXJhdGUgb3ZlciB0cmVlIHRvIGNoZWNrIHBhcmVudCBub2RlCi0gICAg ICAgIHdoaWxlIChpKSB7Ci0gICAgICAgICAgLy8gSWYgaXQgaXMgc2NoZW1hIHRoZW4gYWxsb3cg dXNlciB0byBjcmVhdGUgRnVuY3Rpb24KLSAgICAgICAgICBpZiAoXy5pbmRleE9mKFsnc2NoZW1h J10sIGQuX3R5cGUpID4gLTEpCi0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgICAgICAg IGlmICgnY29sbC1mdW5jdGlvbicgPT0gZC5fdHlwZSkgewotICAgICAgICAgICAgLy9DaGVjayBp ZiB3ZSBhcmUgbm90IGNoaWxkIG9mIGNhdGFsb2cKLSAgICAgICAgICAgIHZhciBwcmV2X2kgPSB0 Lmhhc1BhcmVudChpKSA/IHQucGFyZW50KGkpIDogbnVsbCwKLSAgICAgICAgICAgICAgcHJldl9k ID0gcHJldl9pID8gdC5pdGVtRGF0YShwcmV2X2kpIDogbnVsbDsKLSAgICAgICAgICAgIGlmKCBw cmV2X2QuX3R5cGUgPT0gJ2NhdGFsb2cnKSB7Ci0gICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK LSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAg ICAgICAgfQotICAgICAgICAgIH0KLSAgICAgICAgICBpID0gdC5oYXNQYXJlbnQoaSkgPyB0LnBh cmVudChpKSA6IG51bGw7Ci0gICAgICAgICAgZCA9IGkgPyB0Lml0ZW1EYXRhKGkpIDogbnVsbDsK LSAgICAgICAgfQotICAgICAgICAvLyBieSBkZWZhdWx0IHdlIGRvIG5vdCB3YW50IHRvIGFsbG93 IGNyZWF0ZSBtZW51Ci0gICAgICAgIHJldHVybiB0cnVlOworICAgICAgICByZXR1cm4gY2FuQ3Jl YXRlLmNhbkNyZWF0ZShwZ0Jyb3dzZXIsICdjb2xsLWZ1bmN0aW9uJywgaXRlbSwgZGF0YSk7CiAg ICAgICB9LAogICAgIH0pOwogCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZl cl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9mdW5jdGlvbnMvc3RhdGljL2pzL3Ry aWdnZXJfZnVuY3Rpb24uanMgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2Vy dmVycy9kYXRhYmFzZXMvc2NoZW1hcy9mdW5jdGlvbnMvc3RhdGljL2pzL3RyaWdnZXJfZnVuY3Rp b24uanMKaW5kZXggYWViODI3MWIuLjExYjU4N2VkIDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi9i cm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9mdW5jdGlvbnMv c3RhdGljL2pzL3RyaWdnZXJfZnVuY3Rpb24uanMKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9z ZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZnVuY3Rpb25zL3N0YXRpYy9q cy90cmlnZ2VyX2Z1bmN0aW9uLmpzCkBAIC0yLDggKzIsOSBAQAogZGVmaW5lKCdwZ2FkbWluLm5v ZGUudHJpZ2dlcl9mdW5jdGlvbicsIFsKICAgJ3NvdXJjZXMvZ2V0dGV4dCcsICdzb3VyY2VzL3Vy bF9mb3InLCAnanF1ZXJ5JywgJ3VuZGVyc2NvcmUnLAogICAnc291cmNlcy9wZ2FkbWluJywgJ3Bn YWRtaW4uYnJvd3NlcicsICdwZ2FkbWluLmJhY2tmb3JtJywKKyAgJ3NvdXJjZXMvbWVudS9jYW5f Y3JlYXRlJywKICAgJ3BnYWRtaW4uYnJvd3Nlci5jb2xsZWN0aW9uJywgJ3BnYWRtaW4uYnJvd3Nl ci5zZXJ2ZXIucHJpdmlsZWdlJywKLV0sIGZ1bmN0aW9uKGdldHRleHQsIHVybF9mb3IsICQsIF8s IHBnQWRtaW4sIHBnQnJvd3NlciwgQmFja2Zvcm0pIHsKK10sIGZ1bmN0aW9uKGdldHRleHQsIHVy bF9mb3IsICQsIF8sIHBnQWRtaW4sIHBnQnJvd3NlciwgQmFja2Zvcm0sIGNhbkNyZWF0ZSkgewog CiAgIGlmICghcGdCcm93c2VyLk5vZGVzWydjb2xsLXRyaWdnZXJfZnVuY3Rpb24nXSkgewogICAg IHBnQnJvd3Nlci5Ob2Rlc1snY29sbC10cmlnZ2VyX2Z1bmN0aW9uJ10gPQpAQCAtMzU4LDMyICsz NTksNyBAQCBkZWZpbmUoJ3BnYWRtaW4ubm9kZS50cmlnZ2VyX2Z1bmN0aW9uJywgWwogICAgICAg ICB9LAogICAgICAgfSksCiAgICAgICBjYW5DcmVhdGU6IGZ1bmN0aW9uKGl0ZW1EYXRhLCBpdGVt LCBkYXRhKSB7Ci0gICAgICAgIC8vSWYgY2hlY2sgaXMgZmFsc2UgdGhlbiAsIHdlIHdpbGwgYWxs b3cgY3JlYXRlIG1lbnUKLSAgICAgICAgaWYgKGRhdGEgJiYgZGF0YS5jaGVjayA9PSBmYWxzZSkK LSAgICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgICAgICB2YXIgdCA9IHBnQnJvd3Nlci50cmVl LCBpID0gaXRlbSwgZCA9IGl0ZW1EYXRhOwotICAgICAgICAvLyBUbyBpdGVyYXRlIG92ZXIgdHJl ZSB0byBjaGVjayBwYXJlbnQgbm9kZQotICAgICAgICB3aGlsZSAoaSkgewotICAgICAgICAgIC8v IElmIGl0IGlzIHNjaGVtYSB0aGVuIGFsbG93IHVzZXIgdG8gY3JlYXRlIEZ1bmN0aW9uCi0gICAg ICAgICAgaWYgKF8uaW5kZXhPZihbJ3NjaGVtYSddLCBkLl90eXBlKSA+IC0xKQotICAgICAgICAg ICAgcmV0dXJuIHRydWU7Ci0KLSAgICAgICAgICBpZiAoJ2NvbGwtdHJpZ2dlcl9mdW5jdGlvbicg PT0gZC5fdHlwZSkgewotICAgICAgICAgICAgLy9DaGVjayBpZiB3ZSBhcmUgbm90IGNoaWxkIG9m IGNhdGFsb2cKLSAgICAgICAgICAgIHZhciBwcmV2X2kgPSB0Lmhhc1BhcmVudChpKSA/IHQucGFy ZW50KGkpIDogbnVsbCwKLSAgICAgICAgICAgICAgcHJldl9kID0gcHJldl9pID8gdC5pdGVtRGF0 YShwcmV2X2kpIDogbnVsbDsKLSAgICAgICAgICAgIGlmKCBwcmV2X2QuX3R5cGUgPT0gJ2NhdGFs b2cnKSB7Ci0gICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIH0gZWxzZSB7 Ci0gICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgfQotICAgICAgICAgIH0K LSAgICAgICAgICBpID0gdC5oYXNQYXJlbnQoaSkgPyB0LnBhcmVudChpKSA6IG51bGw7Ci0gICAg ICAgICAgZCA9IGkgPyB0Lml0ZW1EYXRhKGkpIDogbnVsbDsKLSAgICAgICAgfQotICAgICAgICAv LyBieSBkZWZhdWx0IHdlIGRvIG5vdCB3YW50IHRvIGFsbG93IGNyZWF0ZSBtZW51Ci0gICAgICAg IHJldHVybiB0cnVlOworICAgICAgICByZXR1cm4gY2FuQ3JlYXRlLmNhbkNyZWF0ZShwZ0Jyb3dz ZXIsICdjb2xsLXRyaWdnZXJfZnVuY3Rpb24nLCBpdGVtLCBkYXRhKTsKICAgICAgIH0sCiAgICAg fSk7CiAKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2 ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3NlcXVlbmNlcy9zdGF0aWMvanMvc2VxdWVuY2UuanMgYi93 ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1h cy9zZXF1ZW5jZXMvc3RhdGljL2pzL3NlcXVlbmNlLmpzCmluZGV4IDU3Yzk1YWNkLi4wYTU5ZWZi MCAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMv ZGF0YWJhc2VzL3NjaGVtYXMvc2VxdWVuY2VzL3N0YXRpYy9qcy9zZXF1ZW5jZS5qcworKysgYi93 ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1h cy9zZXF1ZW5jZXMvc3RhdGljL2pzL3NlcXVlbmNlLmpzCkBAIC0xLDggKzEsMTAgQEAKIGRlZmlu ZSgncGdhZG1pbi5ub2RlLnNlcXVlbmNlJywgWwogICAnc291cmNlcy9nZXR0ZXh0JywgJ3NvdXJj ZXMvdXJsX2ZvcicsICdqcXVlcnknLCAndW5kZXJzY29yZScsCiAgICd1bmRlcnNjb3JlLnN0cmlu ZycsICdzb3VyY2VzL3BnYWRtaW4nLCAncGdhZG1pbi5icm93c2VyJywgJ3BnYWRtaW4uYmFja2Zv cm0nLAorICAnc291cmNlcy9tZW51L2Nhbl9jcmVhdGUnLAogICAncGdhZG1pbi5icm93c2VyLmNv bGxlY3Rpb24nLAotXSwgZnVuY3Rpb24oZ2V0dGV4dCwgdXJsX2ZvciwgJCwgXywgUywgcGdBZG1p biwgcGdCcm93c2VyLCBCYWNrZm9ybSkgeworXSwgZnVuY3Rpb24oZ2V0dGV4dCwgdXJsX2Zvciwg JCwgXywgUywgcGdBZG1pbiwgcGdCcm93c2VyLCBCYWNrZm9ybSwKKyAgIGNhbkNyZWF0ZSkgewog CiAgIC8vIEV4dGVuZCB0aGUgYnJvd3NlcidzIGNvbGxlY3Rpb24gY2xhc3MgZm9yIHNlcXVlbmNl IGNvbGxlY3Rpb24KICAgaWYgKCFwZ0Jyb3dzZXIuTm9kZXNbJ2NvbGwtc2VxdWVuY2UnXSkgewpA QCAtNjEsMzIgKzYzLDcgQEAgZGVmaW5lKCdwZ2FkbWluLm5vZGUuc2VxdWVuY2UnLCBbCiAgICAg ICBjYW5Ecm9wOiBwZ0Jyb3dzZXIuTm9kZXNbJ3NjaGVtYSddLmNhbkNoaWxkRHJvcCwKICAgICAg IGNhbkRyb3BDYXNjYWRlOiBwZ0Jyb3dzZXIuTm9kZXNbJ3NjaGVtYSddLmNhbkNoaWxkRHJvcCwK ICAgICAgIGNhbkNyZWF0ZTogZnVuY3Rpb24oaXRlbURhdGEsIGl0ZW0sIGRhdGEpIHsKLSAgICAg ICAgICAvL0lmIGNoZWNrIGlzIGZhbHNlIHRoZW4gLCB3ZSB3aWxsIGFsbG93IGNyZWF0ZSBtZW51 Ci0gICAgICAgIGlmIChkYXRhICYmIGRhdGEuY2hlY2sgPT0gZmFsc2UpCi0gICAgICAgICAgcmV0 dXJuIHRydWU7Ci0KLSAgICAgICAgdmFyIHQgPSBwZ0Jyb3dzZXIudHJlZSwgaSA9IGl0ZW0sIGQg PSBpdGVtRGF0YTsKLSAgICAgICAgICAvLyBUbyBpdGVyYXRlIG92ZXIgdHJlZSB0byBjaGVjayBw YXJlbnQgbm9kZQotICAgICAgICB3aGlsZSAoaSkgewotICAgICAgICAgICAgLy8gSWYgaXQgaXMg c2NoZW1hIHRoZW4gYWxsb3cgdXNlciB0byBjcmVhdGUgY29sbGF0aW9uCi0gICAgICAgICAgaWYg KF8uaW5kZXhPZihbJ3NjaGVtYSddLCBkLl90eXBlKSA+IC0xKQotICAgICAgICAgICAgcmV0dXJu IHRydWU7Ci0KLSAgICAgICAgICBpZiAoJ2NvbGwtc2VxdWVuY2UnID09IGQuX3R5cGUpIHsKLSAg ICAgICAgICAgICAgLy9DaGVjayBpZiB3ZSBhcmUgbm90IGNoaWxkIG9mIGNhdGFsb2cKLSAgICAg ICAgICAgIHZhciBwcmV2X2kgPSB0Lmhhc1BhcmVudChpKSA/IHQucGFyZW50KGkpIDogbnVsbCwK LSAgICAgICAgICAgICAgcHJldl9kID0gcHJldl9pID8gdC5pdGVtRGF0YShwcmV2X2kpIDogbnVs bDsKLSAgICAgICAgICAgIGlmKCBwcmV2X2QuX3R5cGUgPT0gJ2NhdGFsb2cnKSB7Ci0gICAgICAg ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAg IHJldHVybiB0cnVlOwotICAgICAgICAgICAgfQotICAgICAgICAgIH0KLSAgICAgICAgICBpID0g dC5oYXNQYXJlbnQoaSkgPyB0LnBhcmVudChpKSA6IG51bGw7Ci0gICAgICAgICAgZCA9IGkgPyB0 Lml0ZW1EYXRhKGkpIDogbnVsbDsKLSAgICAgICAgfQotICAgICAgICAgIC8vIGJ5IGRlZmF1bHQg d2Ugd2FudCB0byBhbGxvdyBjcmVhdGUgbWVudQotICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAg ICAgcmV0dXJuIGNhbkNyZWF0ZS5jYW5DcmVhdGUocGdCcm93c2VyLCAnY29sbC1zZXF1ZW5jZScs IGl0ZW0sIGRhdGEpOwogICAgICAgfSwKICAgICAgIC8vIERlZmluZSB0aGUgbW9kZWwgZm9yIHNl cXVlbmNlIG5vZGUuCiAgICAgICBtb2RlbDogcGdCcm93c2VyLk5vZGUuTW9kZWwuZXh0ZW5kKHsK ZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2Rh dGFiYXNlcy9zY2hlbWFzL3N0YXRpYy9qcy9jYW5fZHJvcF9jaGlsZC5qcyBiL3dlYi9wZ2FkbWlu L2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3N0YXRpYy9q cy9jYW5fZHJvcF9jaGlsZC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMC4u ODRlMjViNWMKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9n cm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9zdGF0aWMvanMvY2FuX2Ryb3BfY2hpbGQu anMKQEAgLTAsMCArMSwxOCBAQAorLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworLy8KKy8vIHBnQWRtaW4gNCAtIFBvc3RncmVTUUwg VG9vbHMKKy8vCisvLyBDb3B5cmlnaHQgKEMpIDIwMTMgLSAyMDE4LCBUaGUgcGdBZG1pbiBEZXZl bG9wbWVudCBUZWFtCisvLyBUaGlzIHNvZnR3YXJlIGlzIHJlbGVhc2VkIHVuZGVyIHRoZSBQb3N0 Z3JlU1FMIExpY2VuY2UKKy8vCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworCitleHBvcnQgZnVuY3Rpb24gY2FuRHJvcENoaWxk KHBnQnJvd3NlciwgaXRlbURhdGEsIGl0ZW0pIHsKKyAgbGV0IG5vZGUgPSBwZ0Jyb3dzZXIudHJl ZU1lbnUuZmluZE5vZGVCeURvbUVsZW1lbnQoaXRlbSk7CisKKyAgaWYgKG5vZGUuYW55UGFyZW50 KChwYXJlbnQpID0+IHBhcmVudC5nZXREYXRhKCkuX3R5cGUgPT09ICdjYXRhbG9nJykpIHsKKyAg ICByZXR1cm4gZmFsc2U7CisgIH0KKworICByZXR1cm4gdHJ1ZTsKK30KZGlmZiAtLWdpdCBhL3dl Yi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFz L3N0YXRpYy9qcy9zY2hlbWEuanMgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMv c2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9zdGF0aWMvanMvc2NoZW1hLmpzCmluZGV4IGE3ZmQ0 YzdjLi5hMDk2MTBhZCAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3Jv dXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvc3RhdGljL2pzL3NjaGVtYS5qcworKysgYi93 ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1h cy9zdGF0aWMvanMvc2NoZW1hLmpzCkBAIC0xLDggKzEsMTAgQEAKIGRlZmluZSgncGdhZG1pbi5u b2RlLnNjaGVtYScsIFsKICAgJ3NvdXJjZXMvZ2V0dGV4dCcsICdzb3VyY2VzL3VybF9mb3InLCAn anF1ZXJ5JywgJ3VuZGVyc2NvcmUnLAogICAnc291cmNlcy9wZ2FkbWluJywgJ3BnYWRtaW4uYnJv d3NlcicsICdwZ2FkbWluLmJhY2tmb3JtJywgJ3BnYWRtaW4uYmFja2dyaWQnLAorICAncGdhZG1p bi5ub2RlLnNjaGVtYS5kaXIvY2FuX2Ryb3BfY2hpbGQnLAogICAncGdhZG1pbi5icm93c2VyLmNv bGxlY3Rpb24nLCAncGdhZG1pbi5icm93c2VyLnNlcnZlci5wcml2aWxlZ2UnLAotXSwgZnVuY3Rp b24oZ2V0dGV4dCwgdXJsX2ZvciwgJCwgXywgcGdBZG1pbiwgcGdCcm93c2VyLCBCYWNrZm9ybSwg QmFja2dyaWQpIHsKK10sIGZ1bmN0aW9uKGdldHRleHQsIHVybF9mb3IsICQsIF8sIHBnQWRtaW4s IHBnQnJvd3NlciwgQmFja2Zvcm0sIEJhY2tncmlkLAorY2FuRHJvcENoaWxkKSB7CiAKICAgLy8g VmFjdXVtU2V0dGluZ3MgQ29sbGVjdGlvbiB0byBkaXNwbGF5IGFsbCBzZXR0aW5ncyBwYXJhbWV0 ZXJzIGFzIEdyaWQKICAgQmFja2Zvcm0uVmFjdXVtQ29sbGVjdGlvbkNvbnRyb2wgPQpAQCAtNDI4 LDUxICs0MzAsMTIgQEAgZGVmaW5lKCdwZ2FkbWluLm5vZGUuc2NoZW1hJywgWwogICAgICAgLy8g VGhpcyBmdW5jdGlvbiB3aWxsIGNoZWNrcyB3aGV0aGVyIHdlIGNhbiBhbGxvdyB1c2VyIHRvCiAg ICAgICAvLyBkcm9wIG9iamVjdCBvciBub3QgYmFzZWQgb24gbG9jYXRpb24gd2l0aGluIHNjaGVt YSAmIGNhdGFsb2cKICAgICAgIGNhbkNoaWxkRHJvcDogZnVuY3Rpb24oaXRlbURhdGEsIGl0ZW0p IHsKLSAgICAgICAgdmFyIHQgPSBwZ0Jyb3dzZXIudHJlZSwgaSA9IGl0ZW0sIGQgPSBpdGVtRGF0 YTsKLSAgICAgICAgLy8gVG8gaXRlcmF0ZSBvdmVyIHRyZWUgdG8gY2hlY2sgcGFyZW50IG5vZGUK LSAgICAgICAgd2hpbGUgKGkpIHsKLSAgICAgICAgICAvLyBJZiBpdCBpcyBzY2hlbWEgdGhlbiBh bGxvdyB1c2VyIHRvIGNyZWF0ZSBjb2xsYXRpb24KLSAgICAgICAgICBpZiAoXy5pbmRleE9mKFsn c2NoZW1hJ10sIGQuX3R5cGUpID4gLTEpCi0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAg ICAgICAgICAgLy9DaGVjayBpZiB3ZSBhcmUgbm90IGNoaWxkIG9mIGNhdGFsb2cKLSAgICAgICAg ICB2YXIgcHJldl9pID0gdC5oYXNQYXJlbnQoaSkgPyB0LnBhcmVudChpKSA6IG51bGwsCi0gICAg ICAgICAgICBwcmV2X2QgPSBwcmV2X2kgPyB0Lml0ZW1EYXRhKHByZXZfaSkgOiBudWxsOwotICAg ICAgICAgIGlmKHByZXZfZCAmJiBwcmV2X2QuX3R5cGUgPT0gJ2NhdGFsb2cnKSB7Ci0gICAgICAg ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgfQotICAgICAgICAgIGkgPSB0Lmhhc1BhcmVu dChpKSA/IHQucGFyZW50KGkpIDogbnVsbDsKLSAgICAgICAgICBkID0gaSA/IHQuaXRlbURhdGEo aSkgOiBudWxsOwotICAgICAgICB9Ci0gICAgICAgIC8vIGJ5IGRlZmF1bHQgd2UgZG8gbm90IHdh bnQgdG8gYWxsb3cgY3JlYXRlIG1lbnUKLSAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIHJl dHVybiBjYW5Ecm9wQ2hpbGQuY2FuRHJvcENoaWxkKHBnQnJvd3NlciwgaXRlbURhdGEsIGl0ZW0p OwogICAgICAgfSwKICAgICB9KTsKIAogICAgIHBnQnJvd3Nlci50YWJsZUNoaWxkVHJlZU5vZGVI aWVyYXJjaHkgPSBmdW5jdGlvbihpKSB7Ci0gICAgICB2YXIgaWR4ID0gMCwKLSAgICAgICAgcmVz ID0ge30sCi0gICAgICAgIHQgPSBwZ0Jyb3dzZXIudHJlZTsKLQotICAgICAgZG8gewotICAgICAg ICB2YXIgZCA9IHQuaXRlbURhdGEoaSk7Ci0gICAgICAgIGlmICgKLSAgICAgICAgICBkLl90eXBl IGluIHBnQnJvd3Nlci5Ob2RlcyAmJiBwZ0Jyb3dzZXIuTm9kZXNbZC5fdHlwZV0uaGFzSWQKLSAg ICAgICAgKSB7Ci0gICAgICAgICAgaWYgKGQuX3R5cGUgPT09ICdwYXJ0aXRpb24nIHx8IGQuX3R5 cGUgPT09ICd0YWJsZScpIHsKLSAgICAgICAgICAgIGlmICghKCd0YWJsZScgaW4gcmVzKSkgewot ICAgICAgICAgICAgICByZXNbJ3RhYmxlJ10gPSBfLmV4dGVuZCh7fSwgZCwgeydwcmlvcml0eSc6 IGlkeH0pOwotICAgICAgICAgICAgICBpZHggLT0gMTsKLSAgICAgICAgICAgIH0KLSAgICAgICAg ICB9IGVsc2UgewotICAgICAgICAgICAgcmVzW2QuX3R5cGVdID0gXy5leHRlbmQoe30sIGQsIHsn cHJpb3JpdHknOiBpZHh9KTsKLSAgICAgICAgICAgIGlkeCAtPSAxOwotICAgICAgICAgIH0KLSAg ICAgICAgfQotICAgICAgICBpID0gdC5oYXNQYXJlbnQoaSkgPyB0LnBhcmVudChpKSA6IG51bGw7 Ci0gICAgICB9IHdoaWxlIChpKTsKLQotICAgICAgcmV0dXJuIHJlczsKKyAgICAgIHJldHVybiB0 aGlzLmdldFRyZWVOb2RlSGllcmFyY2h5KGkpOwogICAgIH07CiAgIH0KIApkaWZmIC0tZ2l0IGEv d2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVt YXMvdGFibGVzL2NvbHVtbi9zdGF0aWMvanMvY29sdW1uLmpzIGIvd2ViL3BnYWRtaW4vYnJvd3Nl ci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL2NvbHVtbi9z dGF0aWMvanMvY29sdW1uLmpzCmluZGV4IDcyYjZlYjBjLi4xZmRhY2Y1MiAxMDA2NDQKLS0tIGEv d2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVt YXMvdGFibGVzL2NvbHVtbi9zdGF0aWMvanMvY29sdW1uLmpzCisrKyBiL3dlYi9wZ2FkbWluL2Jy b3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy9jb2x1 bW4vc3RhdGljL2pzL2NvbHVtbi5qcwpAQCAtODgsNyArODgsNiBAQCBkZWZpbmUoJ3BnYWRtaW4u bm9kZS5jb2x1bW4nLCBbCiAKICAgaWYgKCFwZ0Jyb3dzZXIuTm9kZXNbJ2NvbHVtbiddKSB7CiAg ICAgcGdCcm93c2VyLk5vZGVzWydjb2x1bW4nXSA9IHBnQnJvd3Nlci5Ob2RlLmV4dGVuZCh7Ci0g ICAgICBnZXRUcmVlTm9kZUhpZXJhcmNoeTogcGdCcm93c2VyLnRhYmxlQ2hpbGRUcmVlTm9kZUhp ZXJhcmNoeSwKICAgICAgIHBhcmVudF90eXBlOiBbJ3RhYmxlJywgJ3ZpZXcnLCAnbXZpZXcnXSwK ICAgICAgIGNvbGxlY3Rpb25fdHlwZTogWydjb2xsLXRhYmxlJywgJ2NvbGwtdmlldycsICdjb2xs LW12aWV3J10sCiAgICAgICB0eXBlOiAnY29sdW1uJywKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWlu L2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy9j b25zdHJhaW50cy9jaGVja19jb25zdHJhaW50L3N0YXRpYy9qcy9jaGVja19jb25zdHJhaW50Lmpz IGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3Nj aGVtYXMvdGFibGVzL2NvbnN0cmFpbnRzL2NoZWNrX2NvbnN0cmFpbnQvc3RhdGljL2pzL2NoZWNr X2NvbnN0cmFpbnQuanMKaW5kZXggYmY3ZWY1NTYuLmIxY2IyNTE4IDEwMDY0NAotLS0gYS93ZWIv cGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90 YWJsZXMvY29uc3RyYWludHMvY2hlY2tfY29uc3RyYWludC9zdGF0aWMvanMvY2hlY2tfY29uc3Ry YWludC5qcworKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9k YXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvY29uc3RyYWludHMvY2hlY2tfY29uc3RyYWludC9zdGF0 aWMvanMvY2hlY2tfY29uc3RyYWludC5qcwpAQCAtOCw3ICs4LDYgQEAgZGVmaW5lKCdwZ2FkbWlu Lm5vZGUuY2hlY2tfY29uc3RyYWludCcsIFsKICAgLy8gQ2hlY2sgQ29uc3RyYWludCBOb2RlCiAg IGlmICghcGdCcm93c2VyLk5vZGVzWydjaGVja19jb25zdHJhaW50J10pIHsKICAgICBwZ0FkbWlu LkJyb3dzZXIuTm9kZXNbJ2NoZWNrX2NvbnN0cmFpbnQnXSA9IHBnQnJvd3Nlci5Ob2RlLmV4dGVu ZCh7Ci0gICAgICBnZXRUcmVlTm9kZUhpZXJhcmNoeTogcGdCcm93c2VyLnRhYmxlQ2hpbGRUcmVl Tm9kZUhpZXJhcmNoeSwKICAgICAgIHR5cGU6ICdjaGVja19jb25zdHJhaW50JywKICAgICAgIGxh YmVsOiBnZXR0ZXh0KCdDaGVjaycpLAogICAgICAgY29sbGVjdGlvbl90eXBlOiAnY29sbC1jb25z dHJhaW50cycsCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMv c2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvY29uc3RyYWludHMvZXhjbHVzaW9uX2Nv bnN0cmFpbnQvc3RhdGljL2pzL2V4Y2x1c2lvbl9jb25zdHJhaW50LmpzIGIvd2ViL3BnYWRtaW4v YnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL2Nv bnN0cmFpbnRzL2V4Y2x1c2lvbl9jb25zdHJhaW50L3N0YXRpYy9qcy9leGNsdXNpb25fY29uc3Ry YWludC5qcwppbmRleCAwYmJmNjZhMS4uYWRjY2YyZTkgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWlu L2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy9j b25zdHJhaW50cy9leGNsdXNpb25fY29uc3RyYWludC9zdGF0aWMvanMvZXhjbHVzaW9uX2NvbnN0 cmFpbnQuanMKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMv ZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL2NvbnN0cmFpbnRzL2V4Y2x1c2lvbl9jb25zdHJhaW50 L3N0YXRpYy9qcy9leGNsdXNpb25fY29uc3RyYWludC5qcwpAQCAtNjA1LDcgKzYwNSw2IEBAIGRl ZmluZSgncGdhZG1pbi5ub2RlLmV4Y2x1c2lvbl9jb25zdHJhaW50JywgWwogICAvLyBFeHRlbmQg dGhlIGJyb3dzZXIncyBub2RlIGNsYXNzIGZvciBleGNsdXNpb24gY29uc3RyYWludCBub2RlCiAg IGlmICghcGdCcm93c2VyLk5vZGVzWydleGNsdXNpb25fY29uc3RyYWludCddKSB7CiAgICAgcGdB ZG1pbi5Ccm93c2VyLk5vZGVzWydleGNsdXNpb25fY29uc3RyYWludCddID0gcGdCcm93c2VyLk5v ZGUuZXh0ZW5kKHsKLSAgICAgIGdldFRyZWVOb2RlSGllcmFyY2h5OiBwZ0Jyb3dzZXIudGFibGVD aGlsZFRyZWVOb2RlSGllcmFyY2h5LAogICAgICAgdHlwZTogJ2V4Y2x1c2lvbl9jb25zdHJhaW50 JywKICAgICAgIGxhYmVsOiBnZXR0ZXh0KCdFeGNsdXNpb24gY29uc3RyYWludCcpLAogICAgICAg Y29sbGVjdGlvbl90eXBlOiAnY29sbC1jb25zdHJhaW50cycsCmRpZmYgLS1naXQgYS93ZWIvcGdh ZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJs ZXMvY29uc3RyYWludHMvZm9yZWlnbl9rZXkvc3RhdGljL2pzL2ZvcmVpZ25fa2V5LmpzIGIvd2Vi L3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMv dGFibGVzL2NvbnN0cmFpbnRzL2ZvcmVpZ25fa2V5L3N0YXRpYy9qcy9mb3JlaWduX2tleS5qcwpp bmRleCA0OTk3ZDE3NS4uNzg4Y2VjZmMgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIv c2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy9jb25zdHJhaW50 cy9mb3JlaWduX2tleS9zdGF0aWMvanMvZm9yZWlnbl9rZXkuanMKKysrIGIvd2ViL3BnYWRtaW4v YnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL2Nv bnN0cmFpbnRzL2ZvcmVpZ25fa2V5L3N0YXRpYy9qcy9mb3JlaWduX2tleS5qcwpAQCAtNjAzLDcg KzYwMyw2IEBAIGRlZmluZSgncGdhZG1pbi5ub2RlLmZvcmVpZ25fa2V5JywgWwogICAvLyBFeHRl bmQgdGhlIGJyb3dzZXIncyBub2RlIGNsYXNzIGZvciBmb3JlaWduIGtleSBub2RlCiAgIGlmICgh cGdCcm93c2VyLk5vZGVzWydmb3JlaWduX2tleSddKSB7CiAgICAgcGdBZG1pbi5Ccm93c2VyLk5v ZGVzWydmb3JlaWduX2tleSddID0gcGdCcm93c2VyLk5vZGUuZXh0ZW5kKHsKLSAgICAgIGdldFRy ZWVOb2RlSGllcmFyY2h5OiBwZ0Jyb3dzZXIudGFibGVDaGlsZFRyZWVOb2RlSGllcmFyY2h5LAog ICAgICAgdHlwZTogJ2ZvcmVpZ25fa2V5JywKICAgICAgIGxhYmVsOiBnZXR0ZXh0KCdGb3JlaWdu IGtleScpLAogICAgICAgY29sbGVjdGlvbl90eXBlOiAnY29sbC1jb25zdHJhaW50cycsCmRpZmYg LS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFz ZXMvc2NoZW1hcy90YWJsZXMvY29uc3RyYWludHMvaW5kZXhfY29uc3RyYWludC9zdGF0aWMvanMv cHJpbWFyeV9rZXkuanMgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVy cy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvY29uc3RyYWludHMvaW5kZXhfY29uc3RyYWludC9z dGF0aWMvanMvcHJpbWFyeV9rZXkuanMKaW5kZXggZDNhNmNmZjQuLjBhZDBmMDU0IDEwMDY0NAot LS0gYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMv c2NoZW1hcy90YWJsZXMvY29uc3RyYWludHMvaW5kZXhfY29uc3RyYWludC9zdGF0aWMvanMvcHJp bWFyeV9rZXkuanMKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZl cnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL2NvbnN0cmFpbnRzL2luZGV4X2NvbnN0cmFpbnQv c3RhdGljL2pzL3ByaW1hcnlfa2V5LmpzCkBAIC0yMCw3ICsyMCw2IEBAIGRlZmluZSgncGdhZG1p bi5ub2RlLnByaW1hcnlfa2V5JywgWwogICAgICAgcGFyZW50X3R5cGU6IFsndGFibGUnLCdwYXJ0 aXRpb24nXSwKICAgICAgIGNhbkRyb3A6IHRydWUsCiAgICAgICBjYW5Ecm9wQ2FzY2FkZTogdHJ1 ZSwKLSAgICAgIGdldFRyZWVOb2RlSGllcmFyY2h5OiBwZ0Jyb3dzZXIudGFibGVDaGlsZFRyZWVO b2RlSGllcmFyY2h5LAogICAgICAgSW5pdDogZnVuY3Rpb24oKSB7CiAgICAgICAgIC8qIEF2b2lk IG11bHRpcGxlIHJlZ2lzdHJhdGlvbiBvZiBtZW51cyAqLwogICAgICAgICBpZiAodGhpcy5pbml0 aWFsaXplZCkKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9z ZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy9jb25zdHJhaW50cy9pbmRleF9jb25zdHJh aW50L3N0YXRpYy9qcy91bmlxdWVfY29uc3RyYWludC5qcyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIv c2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy9jb25zdHJhaW50 cy9pbmRleF9jb25zdHJhaW50L3N0YXRpYy9qcy91bmlxdWVfY29uc3RyYWludC5qcwppbmRleCA3 NjkxODVkNi4uMThkM2NhMzMgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVy X2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy9jb25zdHJhaW50cy9pbmRl eF9jb25zdHJhaW50L3N0YXRpYy9qcy91bmlxdWVfY29uc3RyYWludC5qcworKysgYi93ZWIvcGdh ZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJs ZXMvY29uc3RyYWludHMvaW5kZXhfY29uc3RyYWludC9zdGF0aWMvanMvdW5pcXVlX2NvbnN0cmFp bnQuanMKQEAgLTIwLDcgKzIwLDYgQEAgZGVmaW5lKCdwZ2FkbWluLm5vZGUudW5pcXVlX2NvbnN0 cmFpbnQnLCBbCiAgICAgICBwYXJlbnRfdHlwZTogWyd0YWJsZScsJ3BhcnRpdGlvbiddLAogICAg ICAgY2FuRHJvcDogdHJ1ZSwKICAgICAgIGNhbkRyb3BDYXNjYWRlOiB0cnVlLAotICAgICAgZ2V0 VHJlZU5vZGVIaWVyYXJjaHk6IHBnQnJvd3Nlci50YWJsZUNoaWxkVHJlZU5vZGVIaWVyYXJjaHks CiAgICAgICBJbml0OiBmdW5jdGlvbigpIHsKICAgICAgICAgLyogQXZvaWQgbXVsdGlwbGUgcmVn aXN0cmF0aW9uIG9mIG1lbnVzICovCiAgICAgICAgIGlmICh0aGlzLmluaXRpYWxpemVkKQpkaWZm IC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJh c2VzL3NjaGVtYXMvdGFibGVzL2NvbnN0cmFpbnRzL3N0YXRpYy9qcy9jb25zdHJhaW50cy5qcyBi L3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hl bWFzL3RhYmxlcy9jb25zdHJhaW50cy9zdGF0aWMvanMvY29uc3RyYWludHMuanMKaW5kZXggY2Iy NDJjZDIuLjljMGUyNGZlIDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9n cm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvY29uc3RyYWludHMvc3RhdGlj L2pzL2NvbnN0cmFpbnRzLmpzCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vw cy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy9jb25zdHJhaW50cy9zdGF0aWMvanMv Y29uc3RyYWludHMuanMKQEAgLTEyLDE0ICsxMiwxMiBAQCBkZWZpbmUoJ3BnYWRtaW4ubm9kZS5j b25zdHJhaW50cycsIFsKICAgICAgICAgbm9kZTogJ2NvbnN0cmFpbnRzJywKICAgICAgICAgbGFi ZWw6IGdldHRleHQoJ0NvbnN0cmFpbnRzJyksCiAgICAgICAgIHR5cGU6ICdjb2xsLWNvbnN0cmFp bnRzJywKLSAgICAgICAgZ2V0VHJlZU5vZGVIaWVyYXJjaHk6IHBnQnJvd3Nlci50YWJsZUNoaWxk VHJlZU5vZGVIaWVyYXJjaHksCiAgICAgICAgIGNvbHVtbnM6IFsnbmFtZScsICdjb21tZW50J10s CiAgICAgICB9KTsKICAgfQogCiAgIGlmICghcGdCcm93c2VyLk5vZGVzWydjb25zdHJhaW50cydd KSB7CiAgICAgcGdBZG1pbi5Ccm93c2VyLk5vZGVzWydjb25zdHJhaW50cyddID0gcGdCcm93c2Vy Lk5vZGUuZXh0ZW5kKHsKLSAgICAgIGdldFRyZWVOb2RlSGllcmFyY2h5OiBwZ0Jyb3dzZXIudGFi bGVDaGlsZFRyZWVOb2RlSGllcmFyY2h5LAogICAgICAgdHlwZTogJ2NvbnN0cmFpbnRzJywKICAg ICAgIGxhYmVsOiBnZXR0ZXh0KCdDb25zdHJhaW50cycpLAogICAgICAgY29sbGVjdGlvbl90eXBl OiAnY29sbC1jb25zdHJhaW50cycsCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3Nl cnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvaW5kZXhlcy9zdGF0 aWMvanMvaW5kZXguanMgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVy cy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvaW5kZXhlcy9zdGF0aWMvanMvaW5kZXguanMKaW5k ZXggZWMyYjRkYTEuLjJiNjg3YzFhIDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi9icm93c2VyL3Nl cnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvaW5kZXhlcy9zdGF0 aWMvanMvaW5kZXguanMKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3Nl cnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL2luZGV4ZXMvc3RhdGljL2pzL2luZGV4Lmpz CkBAIC0xMyw3ICsxMyw2IEBAIGRlZmluZSgncGdhZG1pbi5ub2RlLmluZGV4JywgWwogICAgICAg ICBub2RlOiAnaW5kZXgnLAogICAgICAgICBsYWJlbDogZ2V0dGV4dCgnSW5kZXhlcycpLAogICAg ICAgICB0eXBlOiAnY29sbC1pbmRleCcsCi0gICAgICAgIGdldFRyZWVOb2RlSGllcmFyY2h5OiBw Z0Jyb3dzZXIudGFibGVDaGlsZFRyZWVOb2RlSGllcmFyY2h5LAogICAgICAgICBzcWxBbHRlckhl bHA6ICdzcWwtYWx0ZXJpbmRleC5odG1sJywKICAgICAgICAgc3FsQ3JlYXRlSGVscDogJ3NxbC1j cmVhdGVpbmRleC5odG1sJywKICAgICAgICAgZGlhbG9nSGVscDogdXJsX2ZvcignaGVscC5zdGF0 aWMnLCB7J2ZpbGVuYW1lJzogJ2luZGV4X2RpYWxvZy5odG1sJ30pLApAQCAtMjE1LDcgKzIxNCw2 IEBAIGRlZmluZSgncGdhZG1pbi5ub2RlLmluZGV4JywgWwogCiAgIGlmICghcGdCcm93c2VyLk5v ZGVzWydpbmRleCddKSB7CiAgICAgcGdBZG1pbi5Ccm93c2VyLk5vZGVzWydpbmRleCddID0gcGdC cm93c2VyLk5vZGUuZXh0ZW5kKHsKLSAgICAgIGdldFRyZWVOb2RlSGllcmFyY2h5OiBwZ0Jyb3dz ZXIudGFibGVDaGlsZFRyZWVOb2RlSGllcmFyY2h5LAogICAgICAgcGFyZW50X3R5cGU6IFsndGFi bGUnLCAndmlldycsICdtdmlldycsICdwYXJ0aXRpb24nXSwKICAgICAgIGNvbGxlY3Rpb25fdHlw ZTogWydjb2xsLXRhYmxlJywgJ2NvbGwtdmlldyddLAogICAgICAgc3FsQWx0ZXJIZWxwOiAnc3Fs LWFsdGVyaW5kZXguaHRtbCcsCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZl cl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvcGFydGl0aW9ucy9zdGF0 aWMvanMvcGFydGl0aW9uLmpzIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3Nl cnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3BhcnRpdGlvbnMvc3RhdGljL2pzL3BhcnRp dGlvbi5qcwppbmRleCBmZDUzZjc0My4uMTdhMGU2Y2UgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWlu L2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy9w YXJ0aXRpb25zL3N0YXRpYy9qcy9wYXJ0aXRpb24uanMKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nl ci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3BhcnRpdGlv bnMvc3RhdGljL2pzL3BhcnRpdGlvbi5qcwpAQCAtMSwxMSArMSwxNSBAQAogZGVmaW5lKFsKKyAg J3NvdXJjZXMvdHJlZS9wZ2FkbWluX3RyZWVfbm9kZScsCiAgICdzb3VyY2VzL2dldHRleHQnLCAn c291cmNlcy91cmxfZm9yJywgJ2pxdWVyeScsICd1bmRlcnNjb3JlJywKICAgJ3VuZGVyc2NvcmUu c3RyaW5nJywgJ3NvdXJjZXMvcGdhZG1pbicsICdwZ2FkbWluLmJyb3dzZXInLAogICAncGdhZG1p bi5hbGVydGlmeWpzJywgJ3BnYWRtaW4uYmFja2Zvcm0nLCAncGdhZG1pbi5iYWNrZ3JpZCcsCisg ICdzb3VyY2VzL21lbnUvY2FuX2NyZWF0ZScsCiAgICdwZ2FkbWluLmJyb3dzZXIuY29sbGVjdGlv bicsICdwZ2FkbWluLmJyb3dzZXIudGFibGUucGFydGl0aW9uLnV0aWxzJywKIF0sCiBmdW5jdGlv bigKLSAgZ2V0dGV4dCwgdXJsX2ZvciwgJCwgXywgUywgcGdBZG1pbiwgcGdCcm93c2VyLCBBbGVy dGlmeSwgQmFja2Zvcm0sIEJhY2tncmlkCisgIHBnYWRtaW5UcmVlTm9kZSwKKyAgZ2V0dGV4dCwg dXJsX2ZvciwgJCwgXywgUywgcGdBZG1pbiwgcGdCcm93c2VyLCBBbGVydGlmeSwgQmFja2Zvcm0s IEJhY2tncmlkLAorICBjYW5DcmVhdGUKICkgewogCiAgIGlmICghcGdCcm93c2VyLk5vZGVzWydj b2xsLXBhcnRpdGlvbiddKSB7CkBAIC0xMyw3ICsxNyw2IEBAIGZ1bmN0aW9uKAogICAgICAgcGdB ZG1pbi5Ccm93c2VyLkNvbGxlY3Rpb24uZXh0ZW5kKHsKICAgICAgICAgbm9kZTogJ3BhcnRpdGlv bicsCiAgICAgICAgIGxhYmVsOiBnZXR0ZXh0KCdQYXJ0aXRpb25zJyksCi0gICAgICAgIGdldFRy ZWVOb2RlSGllcmFyY2h5OiBwZ0Jyb3dzZXIudGFibGVDaGlsZFRyZWVOb2RlSGllcmFyY2h5LAog ICAgICAgICB0eXBlOiAnY29sbC1wYXJ0aXRpb24nLAogICAgICAgICBjb2x1bW5zOiBbCiAgICAg ICAgICAgJ25hbWUnLCAnc2NoZW1hJywgJ3BhcnRpdGlvbl92YWx1ZScsICdpc19wYXJ0aXRpb25l ZCcsICdkZXNjcmlwdGlvbicsCkBAIC04MCwzNiArODMsNiBAQCBmdW5jdGlvbigKICAgICAgICAg fSwKICAgICAgICAgXSk7CiAgICAgICB9LAotICAgICAgZ2V0VHJlZU5vZGVIaWVyYXJjaHk6IGZ1 bmN0aW9uKGkpIHsKLSAgICAgICAgdmFyIGlkeCA9IDAsCi0gICAgICAgICAgcmVzID0ge30sCi0g ICAgICAgICAgdCA9IHBnQnJvd3Nlci50cmVlOwotCi0gICAgICAgIGRvIHsKLSAgICAgICAgICB2 YXIgZCA9IHQuaXRlbURhdGEoaSk7Ci0gICAgICAgICAgaWYgKAotICAgICAgICAgICAgZC5fdHlw ZSBpbiBwZ0Jyb3dzZXIuTm9kZXMgJiYgcGdCcm93c2VyLk5vZGVzW2QuX3R5cGVdLmhhc0lkCi0g ICAgICAgICAgKSB7Ci0gICAgICAgICAgICBpZiAoZC5fdHlwZSA9PSAncGFydGl0aW9uJyAmJiAn cGFydGl0aW9uJyBpbiByZXMpIHsKLSAgICAgICAgICAgICAgaWYgKCEoJ3RhYmxlJyBpbiByZXMp KSB7Ci0gICAgICAgICAgICAgICAgcmVzWyd0YWJsZSddID0gXy5leHRlbmQoe30sIGQsIHsncHJp b3JpdHknOiBpZHh9KTsKLSAgICAgICAgICAgICAgICBpZHggLT0gMTsKLSAgICAgICAgICAgICAg fQotICAgICAgICAgICAgfSBlbHNlIGlmIChkLl90eXBlID09ICd0YWJsZScpIHsKLSAgICAgICAg ICAgICAgaWYgKCEoJ3RhYmxlJyBpbiByZXMpKSB7Ci0gICAgICAgICAgICAgICAgcmVzWyd0YWJs ZSddID0gXy5leHRlbmQoe30sIGQsIHsncHJpb3JpdHknOiBpZHh9KTsKLSAgICAgICAgICAgICAg ICBpZHggLT0gMTsKLSAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAg ICAgICAgICAgcmVzW2QuX3R5cGVdID0gXy5leHRlbmQoe30sIGQsIHsncHJpb3JpdHknOiBpZHh9 KTsKLSAgICAgICAgICAgICAgaWR4IC09IDE7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgfQot ICAgICAgICAgIGkgPSB0Lmhhc1BhcmVudChpKSA/IHQucGFyZW50KGkpIDogbnVsbDsKLSAgICAg ICAgfSB3aGlsZSAoaSk7Ci0KLSAgICAgICAgcmV0dXJuIHJlczsKLSAgICAgIH0sCiAgICAgICBn ZW5lcmF0ZV91cmw6IGZ1bmN0aW9uKGl0ZW0sIHR5cGUsIGQsIHdpdGhfaWQsIGluZm8pIHsKICAg ICAgICAgaWYgKF8uaW5kZXhPZihbCiAgICAgICAgICAgJ3N0YXRzJywgJ3N0YXRpc3RpY3MnLCAn ZGVwZW5kZW5jeScsICdkZXBlbmRlbnQnLCAncmVzZXQnLApAQCAtMTIxOSwzMiArMTE5Miw3IEBA IGZ1bmN0aW9uKAogICAgICAgICB9LAogICAgICAgfSksCiAgICAgICBjYW5DcmVhdGU6IGZ1bmN0 aW9uKGl0ZW1EYXRhLCBpdGVtLCBkYXRhKSB7Ci0gICAgICAgICAgLy9JZiBjaGVjayBpcyBmYWxz ZSB0aGVuICwgd2Ugd2lsbCBhbGxvdyBjcmVhdGUgbWVudQotICAgICAgICBpZiAoZGF0YSAmJiBk YXRhLmNoZWNrID09IGZhbHNlKQotICAgICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgICAgIHZh ciB0ID0gcGdCcm93c2VyLnRyZWUsIGkgPSBpdGVtLCBkID0gaXRlbURhdGE7Ci0gICAgICAgICAg Ly8gVG8gaXRlcmF0ZSBvdmVyIHRyZWUgdG8gY2hlY2sgcGFyZW50IG5vZGUKLSAgICAgICAgd2hp bGUgKGkpIHsKLSAgICAgICAgICAgIC8vIElmIGl0IGlzIHNjaGVtYSB0aGVuIGFsbG93IHVzZXIg dG8gY3JlYXRlIHRhYmxlCi0gICAgICAgICAgaWYgKF8uaW5kZXhPZihbJ3NjaGVtYSddLCBkLl90 eXBlKSA+IC0xKQotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICAgICAgICBpZiAoJ2Nv bGwtdGFibGUnID09IGQuX3R5cGUpIHsKLSAgICAgICAgICAgICAgLy9DaGVjayBpZiB3ZSBhcmUg bm90IGNoaWxkIG9mIGNhdGFsb2cKLSAgICAgICAgICAgIHZhciBwcmV2X2kgPSB0Lmhhc1BhcmVu dChpKSA/IHQucGFyZW50KGkpIDogbnVsbDsKLSAgICAgICAgICAgIHZhciBwcmV2X2QgPSBwcmV2 X2kgPyB0Lml0ZW1EYXRhKHByZXZfaSkgOiBudWxsOwotICAgICAgICAgICAgaWYoIHByZXZfZC5f dHlwZSA9PSAnY2F0YWxvZycpIHsKLSAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAg ICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICB9 Ci0gICAgICAgICAgfQotICAgICAgICAgIGkgPSB0Lmhhc1BhcmVudChpKSA/IHQucGFyZW50KGkp IDogbnVsbDsKLSAgICAgICAgICBkID0gaSA/IHQuaXRlbURhdGEoaSkgOiBudWxsOwotICAgICAg ICB9Ci0gICAgICAgICAgLy8gYnkgZGVmYXVsdCB3ZSBkbyBub3Qgd2FudCB0byBhbGxvdyBjcmVh dGUgbWVudQotICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgcmV0dXJuIGNhbkNyZWF0ZS5j YW5DcmVhdGUocGdCcm93c2VyLCAnY29sbC10YWJsZScsIGl0ZW0sIGRhdGEpOwogICAgICAgfSwK ICAgICAgIC8vIENoZWNrIHRvIHdoZXRoZXIgdGFibGUgaGFzIGRpc2FibGUgdHJpZ2dlcihzKQog ICAgICAgY2FuQ3JlYXRlX3dpdGhfdHJpZ2dlcl9lbmFibGU6IGZ1bmN0aW9uKGl0ZW1EYXRhLCBp dGVtLCBkYXRhKSB7CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91 cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvcnVsZXMvc3RhdGljL2pzL3J1bGUu anMgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMv c2NoZW1hcy90YWJsZXMvcnVsZXMvc3RhdGljL2pzL3J1bGUuanMKaW5kZXggM2FmNjE3NTQuLjM1 NDkwOWYzIDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2Vy dmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvcnVsZXMvc3RhdGljL2pzL3J1bGUuanMKKysr IGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3Nj aGVtYXMvdGFibGVzL3J1bGVzL3N0YXRpYy9qcy9ydWxlLmpzCkBAIC0xNiw3ICsxNiw2IEBAIGRl ZmluZSgncGdhZG1pbi5ub2RlLnJ1bGUnLCBbCiAgICAgICAgIG5vZGU6ICdydWxlJywKICAgICAg ICAgbGFiZWw6IGdldHRleHQoJ1J1bGVzJyksCiAgICAgICAgIHR5cGU6ICdjb2xsLXJ1bGUnLAot ICAgICAgICBnZXRUcmVlTm9kZUhpZXJhcmNoeTogcGdCcm93c2VyLnRhYmxlQ2hpbGRUcmVlTm9k ZUhpZXJhcmNoeSwKICAgICAgICAgY29sdW1uczogWyduYW1lJywgJ293bmVyJywgJ2NvbW1lbnQn XSwKICAgICAgIH0pOwogICB9CkBAIC0zNSw3ICszNCw2IEBAIGRlZmluZSgncGdhZG1pbi5ub2Rl LnJ1bGUnLCBbCiAgICAqLwogICBpZiAoIXBnQnJvd3Nlci5Ob2Rlc1sncnVsZSddKSB7CiAgICAg cGdBZG1pbi5Ccm93c2VyLk5vZGVzWydydWxlJ10gPSBwZ0Jyb3dzZXIuTm9kZS5leHRlbmQoewot ICAgICAgZ2V0VHJlZU5vZGVIaWVyYXJjaHk6IHBnQnJvd3Nlci50YWJsZUNoaWxkVHJlZU5vZGVI aWVyYXJjaHksCiAgICAgICBwYXJlbnRfdHlwZTogWyd0YWJsZScsJ3ZpZXcnLCAncGFydGl0aW9u J10sCiAgICAgICB0eXBlOiAncnVsZScsCiAgICAgICBzcWxBbHRlckhlbHA6ICdzcWwtYWx0ZXJy dWxlLmh0bWwnLApkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBz L3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3N0YXRpYy9qcy9lbmFibGVfZGlzYWJs ZV90cmlnZ2Vycy5qcyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJz L2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy9zdGF0aWMvanMvZW5hYmxlX2Rpc2FibGVfdHJpZ2dl cnMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAuLjJkNzkyMDQzCi0tLSAv ZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMv ZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3N0YXRpYy9qcy9lbmFibGVfZGlzYWJsZV90cmlnZ2Vy cy5qcwpAQCAtMCwwICsxLDUyIEBACisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisvLworLy8gcGdBZG1pbiA0IC0gUG9zdGdyZVNR TCBUb29scworLy8KKy8vIENvcHlyaWdodCAoQykgMjAxMyAtIDIwMTgsIFRoZSBwZ0FkbWluIERl dmVsb3BtZW50IFRlYW0KKy8vIFRoaXMgc29mdHdhcmUgaXMgcmVsZWFzZWQgdW5kZXIgdGhlIFBv c3RncmVTUUwgTGljZW5jZQorLy8KKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisKK2ltcG9ydCBheGlvcyBmcm9tICdheGlvcyc7 CisKK2V4cG9ydCBmdW5jdGlvbiBkaXNhYmxlVHJpZ2dlcnModHJlZSwgYWxlcnRpZnksIGdlbmVy YXRlVXJsLCBhcmdzKSB7CisgIHJldHVybiBzZXRUcmlnZ2Vycyh0cmVlLCBhbGVydGlmeSwgZ2Vu ZXJhdGVVcmwsIGFyZ3MsIHtlbmFibGU6ICdmYWxzZScgfSk7Cit9CitleHBvcnQgZnVuY3Rpb24g ZW5hYmxlVHJpZ2dlcnModHJlZSwgYWxlcnRpZnksIGdlbmVyYXRlVXJsLCBhcmdzKSB7CisgIHJl dHVybiBzZXRUcmlnZ2Vycyh0cmVlLCBhbGVydGlmeSwgZ2VuZXJhdGVVcmwsIGFyZ3MsIHtlbmFi bGU6ICd0cnVlJyB9KTsKK30KKworZnVuY3Rpb24gc2V0VHJpZ2dlcnModHJlZSwgYWxlcnRpZnks IGdlbmVyYXRlVXJsLCBhcmdzLCBwYXJhbXMpIHsKKyAgY29uc3QgdHJlZU5vZGUgPSByZXRyaWV2 ZVRyZWVOb2RlKGFyZ3MsIHRyZWUpOworCisgIGlmICghdHJlZU5vZGUgfHwgdHJlZU5vZGUuZ2V0 RGF0YSgpID09PSBudWxsIHx8IHRyZWVOb2RlLmdldERhdGEoKSA9PT0gdW5kZWZpbmVkKQorICAg IHJldHVybiBmYWxzZTsKKworICBheGlvcy5wdXQoCisgICAgZ2VuZXJhdGVVcmwodHJlZU5vZGUu Z2V0SHRtbElkZW50aWZpZXIoKSwgJ3NldF90cmlnZ2VyJywgdHJlZU5vZGUuZ2V0RGF0YSgpLCB0 cnVlKSwKKyAgICBwYXJhbXMKKyAgKQorICAgIC50aGVuKChyZXMpID0+IHsKKyAgICAgIGlmIChy ZXMuZGF0YS5zdWNjZXNzID09PSAxKSB7CisgICAgICAgIGFsZXJ0aWZ5LnN1Y2Nlc3MocmVzLmRh dGEuaW5mbyk7CisgICAgICAgIHRyZWVOb2RlLnJlbG9hZCh0cmVlKTsKKyAgICAgIH0KKyAgICB9 KQorICAgIC5jYXRjaCgoeGhyKSA9PiB7CisgICAgICB0cnkgeworICAgICAgICBjb25zdCBlcnIg PSB4aHIucmVzcG9uc2UuZGF0YTsKKyAgICAgICAgaWYgKGVyci5zdWNjZXNzID09PSAwKSB7Cisg ICAgICAgICAgYWxlcnRpZnkuZXJyb3IoZXJyLmVycm9ybXNnKTsKKyAgICAgICAgfQorICAgICAg fSBjYXRjaCAoZSkgeworICAgICAgICBjb25zb2xlLndhcm4oZS5zdGFjayB8fCBlKTsKKyAgICAg IH0KKyAgICAgIHRyZWVOb2RlLnVubG9hZCh0cmVlKTsKKyAgICB9KTsKK30KKworZnVuY3Rpb24g cmV0cmlldmVUcmVlTm9kZShhcmdzLCB0cmVlKSB7CisgIGNvbnN0IGlucHV0ID0gYXJncyB8fCB7 fTsKKyAgY29uc3QgZG9tRWxlbWVudElkZW50aWZpZXIgPSBpbnB1dC5pdGVtIHx8IHRyZWUuc2Vs ZWN0ZWQoKTsKKyAgcmV0dXJuIHRyZWUuZmluZE5vZGVCeURvbUVsZW1lbnQoZG9tRWxlbWVudElk ZW50aWZpZXIpOworfQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3Jv dXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3N0YXRpYy9qcy90YWJsZS5qcyBi L3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hl bWFzL3RhYmxlcy9zdGF0aWMvanMvdGFibGUuanMKaW5kZXggNjQ3ZDFiZmUuLjA4YmI0N2I3IDEw MDY0NAotLS0gYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRh YmFzZXMvc2NoZW1hcy90YWJsZXMvc3RhdGljL2pzL3RhYmxlLmpzCisrKyBiL3dlYi9wZ2FkbWlu L2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy9z dGF0aWMvanMvdGFibGUuanMKQEAgLTEsMTMgKzEsMTcgQEAKIGRlZmluZSgncGdhZG1pbi5ub2Rl LnRhYmxlJywgWworICAncGdhZG1pbi50YWJsZXMuanMvZW5hYmxlX2Rpc2FibGVfdHJpZ2dlcnMn LAogICAnc291cmNlcy9nZXR0ZXh0JywgJ3NvdXJjZXMvdXJsX2ZvcicsICdqcXVlcnknLCAndW5k ZXJzY29yZScsCiAgICd1bmRlcnNjb3JlLnN0cmluZycsICdzb3VyY2VzL3BnYWRtaW4nLCAncGdh ZG1pbi5icm93c2VyJywKICAgJ3BnYWRtaW4uYWxlcnRpZnlqcycsICdwZ2FkbWluLmJhY2tmb3Jt JywgJ3BnYWRtaW4uYmFja2dyaWQnLAogICAncGdhZG1pbi50YWJsZXMuanMvc2hvd19hZHZhbmNl ZF90YWInLAorICAnc291cmNlcy9tZW51L2Nhbl9jcmVhdGUnLAorCiAgICdwZ2FkbWluLmJyb3dz ZXIuY29sbGVjdGlvbicsICdwZ2FkbWluLm5vZGUuY29sdW1uJywKICAgJ3BnYWRtaW4ubm9kZS5j b25zdHJhaW50cycsICdwZ2FkbWluLmJyb3dzZXIudGFibGUucGFydGl0aW9uLnV0aWxzJywKIF0s IGZ1bmN0aW9uKAorICB0YWJsZUZ1bmN0aW9ucywKICAgZ2V0dGV4dCwgdXJsX2ZvciwgJCwgXywg UywgcGdBZG1pbiwgcGdCcm93c2VyLCBBbGVydGlmeSwgQmFja2Zvcm0sIEJhY2tncmlkLAotICBT aG93QWR2YW5jZWRUYWIKKyAgU2hvd0FkdmFuY2VkVGFiLCBjYW5DcmVhdGUKICkgewogCiAgIGlm ICghcGdCcm93c2VyLk5vZGVzWydjb2xsLXRhYmxlJ10pIHsKQEAgLTI2LDcgKzMwLDYgQEAgZGVm aW5lKCdwZ2FkbWluLm5vZGUudGFibGUnLCBbCiAKICAgaWYgKCFwZ0Jyb3dzZXIuTm9kZXNbJ3Rh YmxlJ10pIHsKICAgICBwZ0Jyb3dzZXIuTm9kZXNbJ3RhYmxlJ10gPSBwZ0Jyb3dzZXIuTm9kZS5l eHRlbmQoewotICAgICAgZ2V0VHJlZU5vZGVIaWVyYXJjaHk6IHBnQnJvd3Nlci50YWJsZUNoaWxk VHJlZU5vZGVIaWVyYXJjaHksCiAgICAgICB0eXBlOiAndGFibGUnLAogICAgICAgbGFiZWw6IGdl dHRleHQoJ1RhYmxlJyksCiAgICAgICBjb2xsZWN0aW9uX3R5cGU6ICdjb2xsLXRhYmxlJywKQEAg LTExOCw1MyArMTIxLDIxIEBAIGRlZmluZSgncGdhZG1pbi5ub2RlLnRhYmxlJywgWwogICAgICAg Y2FsbGJhY2tzOiB7CiAgICAgICAgIC8qIEVuYWJsZSB0cmlnZ2VyKHMpIG9uIHRhYmxlICovCiAg ICAgICAgIGVuYWJsZV90cmlnZ2Vyc19vbl90YWJsZTogZnVuY3Rpb24oYXJncykgewotICAgICAg ICAgIHZhciBwYXJhbXMgPSB7J2VuYWJsZSc6IHRydWUgfTsKLSAgICAgICAgICB0aGlzLmNhbGxi YWNrcy5zZXRfdHJpZ2dlcnMuYXBwbHkodGhpcywgW2FyZ3MsIHBhcmFtc10pOworICAgICAgICAg IHRhYmxlRnVuY3Rpb25zLmVuYWJsZVRyaWdnZXJzKAorICAgICAgICAgICAgcGdCcm93c2VyLnRy ZWVNZW51LAorICAgICAgICAgICAgQWxlcnRpZnksCisgICAgICAgICAgICB0aGlzLmdlbmVyYXRl X3VybC5iaW5kKHRoaXMpLAorICAgICAgICAgICAgYXJncworICAgICAgICAgICk7CiAgICAgICAg IH0sCiAgICAgICAgIC8qIERpc2FibGUgdHJpZ2dlcihzKSBvbiB0YWJsZSAqLwogICAgICAgICBk aXNhYmxlX3RyaWdnZXJzX29uX3RhYmxlOiBmdW5jdGlvbihhcmdzKSB7Ci0gICAgICAgICAgdmFy IHBhcmFtcyA9IHsnZW5hYmxlJzogZmFsc2UgfTsKLSAgICAgICAgICB0aGlzLmNhbGxiYWNrcy5z ZXRfdHJpZ2dlcnMuYXBwbHkodGhpcywgW2FyZ3MsIHBhcmFtc10pOwotICAgICAgICB9LAotICAg ICAgICBzZXRfdHJpZ2dlcnM6IGZ1bmN0aW9uKGFyZ3MsIHBhcmFtcykgewotICAgICAgICAgIC8v IFRoaXMgZnVuY3Rpb24gd2lsbCBzZW5kIHJlcXVlc3QgdG8gZW5hYmxlIG9yCi0gICAgICAgICAg Ly8gZGlzYWJsZSB0cmlnZ2VycyBvbiB0YWJsZSBsZXZlbAotICAgICAgICAgIHZhciBpbnB1dCA9 IGFyZ3MgfHwge30sCi0gICAgICAgICAgICBvYmogPSB0aGlzLAotICAgICAgICAgICAgdCA9IHBn QnJvd3Nlci50cmVlLAotICAgICAgICAgICAgaSA9IGlucHV0Lml0ZW0gfHwgdC5zZWxlY3RlZCgp LAotICAgICAgICAgICAgZCA9IGkgJiYgaS5sZW5ndGggPT0gMSA/IHQuaXRlbURhdGEoaSkgOiB1 bmRlZmluZWQ7Ci0gICAgICAgICAgaWYgKCFkKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwot Ci0gICAgICAgICAgJC5hamF4KHsKLSAgICAgICAgICAgIHVybDogb2JqLmdlbmVyYXRlX3VybChp LCAnc2V0X3RyaWdnZXInICwgZCwgdHJ1ZSksCi0gICAgICAgICAgICB0eXBlOidQVVQnLAotICAg ICAgICAgICAgZGF0YTogcGFyYW1zLAotICAgICAgICAgICAgZGF0YVR5cGU6ICdqc29uJywKLSAg ICAgICAgICAgIHN1Y2Nlc3M6IGZ1bmN0aW9uKHJlcykgewotICAgICAgICAgICAgICBpZiAocmVz LnN1Y2Nlc3MgPT0gMSkgewotICAgICAgICAgICAgICAgIEFsZXJ0aWZ5LnN1Y2Nlc3MocmVzLmlu Zm8pOwotICAgICAgICAgICAgICAgIHQudW5sb2FkKGkpOwotICAgICAgICAgICAgICAgIHQuc2V0 SW5vZGUoaSk7Ci0gICAgICAgICAgICAgICAgdC5kZXNlbGVjdChpKTsKLSAgICAgICAgICAgICAg ICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICAgICAgdC5zZWxlY3QoaSk7 Ci0gICAgICAgICAgICAgICAgfSwgMTApOwotICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9 LAotICAgICAgICAgICAgZXJyb3I6IGZ1bmN0aW9uKHhocikgewotICAgICAgICAgICAgICB0cnkg ewotICAgICAgICAgICAgICAgIHZhciBlcnIgPSAkLnBhcnNlSlNPTih4aHIucmVzcG9uc2VUZXh0 KTsKLSAgICAgICAgICAgICAgICBpZiAoZXJyLnN1Y2Nlc3MgPT0gMCkgewotICAgICAgICAgICAg ICAgICAgQWxlcnRpZnkuZXJyb3IoZXJyLmVycm9ybXNnKTsKLSAgICAgICAgICAgICAgICB9Ci0g ICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHsKLSAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4o ZS5zdGFjayB8fCBlKTsKLSAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICB0LnVubG9hZChp KTsKLSAgICAgICAgICAgIH0sCi0gICAgICAgICAgfSk7CisgICAgICAgICAgdGFibGVGdW5jdGlv bnMuZGlzYWJsZVRyaWdnZXJzKAorICAgICAgICAgICAgcGdCcm93c2VyLnRyZWVNZW51LAorICAg ICAgICAgICAgQWxlcnRpZnksCisgICAgICAgICAgICB0aGlzLmdlbmVyYXRlX3VybC5iaW5kKHRo aXMpLAorICAgICAgICAgICAgYXJncworICAgICAgICAgICk7CiAgICAgICAgIH0sCiAgICAgICAg IC8qIFRydW5jYXRlIHRhYmxlICovCiAgICAgICAgIHRydW5jYXRlX3RhYmxlOiBmdW5jdGlvbihh cmdzKSB7CkBAIC0xMzI5LDMyICsxMzAwLDcgQEAgZGVmaW5lKCdwZ2FkbWluLm5vZGUudGFibGUn LCBbCiAgICAgICAgIH0sCiAgICAgICB9KSwKICAgICAgIGNhbkNyZWF0ZTogZnVuY3Rpb24oaXRl bURhdGEsIGl0ZW0sIGRhdGEpIHsKLSAgICAgICAgLy9JZiBjaGVjayBpcyBmYWxzZSB0aGVuICwg d2Ugd2lsbCBhbGxvdyBjcmVhdGUgbWVudQotICAgICAgICBpZiAoZGF0YSAmJiBkYXRhLmNoZWNr ID09IGZhbHNlKQotICAgICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgICAgIHZhciB0ID0gcGdC cm93c2VyLnRyZWUsIGkgPSBpdGVtLCBkID0gaXRlbURhdGE7Ci0gICAgICAgIC8vIFRvIGl0ZXJh dGUgb3ZlciB0cmVlIHRvIGNoZWNrIHBhcmVudCBub2RlCi0gICAgICAgIHdoaWxlIChpKSB7Ci0g ICAgICAgICAgLy8gSWYgaXQgaXMgc2NoZW1hIHRoZW4gYWxsb3cgdXNlciB0byBjcmVhdGUgdGFi bGUKLSAgICAgICAgICBpZiAoXy5pbmRleE9mKFsnc2NoZW1hJ10sIGQuX3R5cGUpID4gLTEpCi0g ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgICAgICAgIGlmICgnY29sbC10YWJsZScgPT0g ZC5fdHlwZSkgewotICAgICAgICAgICAgLy9DaGVjayBpZiB3ZSBhcmUgbm90IGNoaWxkIG9mIGNh dGFsb2cKLSAgICAgICAgICAgIHZhciBwcmV2X2kgPSB0Lmhhc1BhcmVudChpKSA/IHQucGFyZW50 KGkpIDogbnVsbCwKLSAgICAgICAgICAgICAgcHJldl9kID0gcHJldl9pID8gdC5pdGVtRGF0YShw cmV2X2kpIDogbnVsbDsKLSAgICAgICAgICAgIGlmKCBwcmV2X2QuX3R5cGUgPT0gJ2NhdGFsb2cn KSB7Ci0gICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0g ICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgfQotICAgICAgICAgIH0KLSAg ICAgICAgICBpID0gdC5oYXNQYXJlbnQoaSkgPyB0LnBhcmVudChpKSA6IG51bGw7Ci0gICAgICAg ICAgZCA9IGkgPyB0Lml0ZW1EYXRhKGkpIDogbnVsbDsKLSAgICAgICAgfQotICAgICAgICAvLyBi eSBkZWZhdWx0IHdlIGRvIG5vdCB3YW50IHRvIGFsbG93IGNyZWF0ZSBtZW51Ci0gICAgICAgIHJl dHVybiB0cnVlOworICAgICAgICByZXR1cm4gY2FuQ3JlYXRlLmNhbkNyZWF0ZShwZ0Jyb3dzZXIs ICdjb2xsLXRhYmxlJywgaXRlbSwgZGF0YSk7CiAgICAgICB9LAogICAgICAgLy8gQ2hlY2sgdG8g d2hldGhlciB0YWJsZSBoYXMgZGlzYWJsZSB0cmlnZ2VyKHMpCiAgICAgICBjYW5DcmVhdGVfd2l0 aF90cmlnZ2VyX2VuYWJsZTogZnVuY3Rpb24oaXRlbURhdGEsIGl0ZW0sIGRhdGEpIHsKZGlmZiAt LWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNl cy9zY2hlbWFzL3RhYmxlcy90cmlnZ2Vycy9zdGF0aWMvanMvdHJpZ2dlci5qcyBiL3dlYi9wZ2Fk bWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxl cy90cmlnZ2Vycy9zdGF0aWMvanMvdHJpZ2dlci5qcwppbmRleCBmYmU3NjU5ZS4uOWExY2UyZTAg MTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2Rh dGFiYXNlcy9zY2hlbWFzL3RhYmxlcy90cmlnZ2Vycy9zdGF0aWMvanMvdHJpZ2dlci5qcworKysg Yi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2No ZW1hcy90YWJsZXMvdHJpZ2dlcnMvc3RhdGljL2pzL3RyaWdnZXIuanMKQEAgLTI5LDE0ICsyOSwx MiBAQCBkZWZpbmUoJ3BnYWRtaW4ubm9kZS50cmlnZ2VyJywgWwogICAgICAgICBub2RlOiAndHJp Z2dlcicsCiAgICAgICAgIGxhYmVsOiBnZXR0ZXh0KCdUcmlnZ2VycycpLAogICAgICAgICB0eXBl OiAnY29sbC10cmlnZ2VyJywKLSAgICAgICAgZ2V0VHJlZU5vZGVIaWVyYXJjaHk6IHBnQnJvd3Nl ci50YWJsZUNoaWxkVHJlZU5vZGVIaWVyYXJjaHksCiAgICAgICAgIGNvbHVtbnM6IFsnbmFtZScs ICdkZXNjcmlwdGlvbiddLAogICAgICAgfSk7CiAgIH0KIAogICBpZiAoIXBnQnJvd3Nlci5Ob2Rl c1sndHJpZ2dlciddKSB7CiAgICAgcGdBZG1pbi5Ccm93c2VyLk5vZGVzWyd0cmlnZ2VyJ10gPSBw Z0Jyb3dzZXIuTm9kZS5leHRlbmQoewotICAgICAgZ2V0VHJlZU5vZGVIaWVyYXJjaHk6IHBnQnJv d3Nlci50YWJsZUNoaWxkVHJlZU5vZGVIaWVyYXJjaHksCiAgICAgICBwYXJlbnRfdHlwZTogWyd0 YWJsZScsICd2aWV3JywgJ3BhcnRpdGlvbiddLAogICAgICAgY29sbGVjdGlvbl90eXBlOiBbJ2Nv bGwtdGFibGUnLCAnY29sbC12aWV3J10sCiAgICAgICB0eXBlOiAndHJpZ2dlcicsCmRpZmYgLS1n aXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMv c2NoZW1hcy90eXBlcy9zdGF0aWMvanMvdHlwZS5qcyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2Vy dmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3R5cGVzL3N0YXRpYy9qcy90eXBl LmpzCmluZGV4IGMxYzI0ODYxLi45MWNlNjE1ZiAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vYnJv d3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdHlwZXMvc3RhdGlj L2pzL3R5cGUuanMKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZl cnMvZGF0YWJhc2VzL3NjaGVtYXMvdHlwZXMvc3RhdGljL2pzL3R5cGUuanMKQEAgLTEsOCArMSw5 IEBACiBkZWZpbmUoJ3BnYWRtaW4ubm9kZS50eXBlJywgWwogICAnc291cmNlcy9nZXR0ZXh0Jywg J3NvdXJjZXMvdXJsX2ZvcicsICdqcXVlcnknLCAndW5kZXJzY29yZScsCiAgICdzb3VyY2VzL3Bn YWRtaW4nLCAncGdhZG1pbi5icm93c2VyJywgJ3BnYWRtaW4uYmFja2Zvcm0nLAotICAncGdhZG1p bi5iYWNrZ3JpZCcsICdwZ2FkbWluLmJyb3dzZXIuY29sbGVjdGlvbicsCi1dLCBmdW5jdGlvbihn ZXR0ZXh0LCB1cmxfZm9yLCAkLCBfLCBwZ0FkbWluLCBwZ0Jyb3dzZXIsIEJhY2tmb3JtLCBCYWNr Z3JpZCkgeworICAncGdhZG1pbi5iYWNrZ3JpZCcsICdzb3VyY2VzL21lbnUvY2FuX2NyZWF0ZScs ICdwZ2FkbWluLmJyb3dzZXIuY29sbGVjdGlvbicsCitdLCBmdW5jdGlvbihnZXR0ZXh0LCB1cmxf Zm9yLCAkLCBfLCBwZ0FkbWluLCBwZ0Jyb3dzZXIsIEJhY2tmb3JtLCBCYWNrZ3JpZCwKKyAgIGNh bkNyZWF0ZSkgewogCiAgIGlmICghcGdCcm93c2VyLk5vZGVzWydjb2xsLXR5cGUnXSkgewogICAg IHBnQnJvd3Nlci5Ob2Rlc1snY29sbC10eXBlJ10gPQpAQCAtOTEyLDMyICs5MTMsNyBAQCBkZWZp bmUoJ3BnYWRtaW4ubm9kZS50eXBlJywgWwogICAgICAgICB9LAogICAgICAgfSksCiAgICAgICBj YW5DcmVhdGU6IGZ1bmN0aW9uKGl0ZW1EYXRhLCBpdGVtLCBkYXRhKSB7Ci0gICAgICAgIC8vSWYg Y2hlY2sgaXMgZmFsc2UgdGhlbiAsIHdlIHdpbGwgYWxsb3cgY3JlYXRlIG1lbnUKLSAgICAgICAg aWYgKGRhdGEgJiYgZGF0YS5jaGVjayA9PSBmYWxzZSkKLSAgICAgICAgICByZXR1cm4gdHJ1ZTsK LQotICAgICAgICB2YXIgdCA9IHBnQnJvd3Nlci50cmVlLCBpID0gaXRlbSwgZCA9IGl0ZW1EYXRh OwotICAgICAgICAvLyBUbyBpdGVyYXRlIG92ZXIgdHJlZSB0byBjaGVjayBwYXJlbnQgbm9kZQot ICAgICAgICB3aGlsZSAoaSkgewotICAgICAgICAgIC8vIElmIGl0IGlzIHNjaGVtYSB0aGVuIGFs bG93IHVzZXIgdG8gY3JlYXRlIHRhYmxlCi0gICAgICAgICAgaWYgKF8uaW5kZXhPZihbJ3NjaGVt YSddLCBkLl90eXBlKSA+IC0xKQotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICAgICAg ICBpZiAoJ2NvbGwtdHlwZScgPT0gZC5fdHlwZSkgewotICAgICAgICAgICAgLy9DaGVjayBpZiB3 ZSBhcmUgbm90IGNoaWxkIG9mIGNhdGFsb2cKLSAgICAgICAgICAgIHZhciBwcmV2X2kgPSB0Lmhh c1BhcmVudChpKSA/IHQucGFyZW50KGkpIDogbnVsbCwKLSAgICAgICAgICAgICAgcHJldl9kID0g cHJldl9pID8gdC5pdGVtRGF0YShwcmV2X2kpIDogbnVsbDsKLSAgICAgICAgICAgIGlmKCBwcmV2 X2QuX3R5cGUgPT0gJ2NhdGFsb2cnKSB7Ci0gICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAg ICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAg ICAgfQotICAgICAgICAgIH0KLSAgICAgICAgICBpID0gdC5oYXNQYXJlbnQoaSkgPyB0LnBhcmVu dChpKSA6IG51bGw7Ci0gICAgICAgICAgZCA9IGkgPyB0Lml0ZW1EYXRhKGkpIDogbnVsbDsKLSAg ICAgICAgfQotICAgICAgICAvLyBieSBkZWZhdWx0IHdlIGRvIG5vdCB3YW50IHRvIGFsbG93IGNy ZWF0ZSBtZW51Ci0gICAgICAgIHJldHVybiB0cnVlOworICAgICAgICByZXR1cm4gY2FuQ3JlYXRl LmNhbkNyZWF0ZShwZ0Jyb3dzZXIsICdjb2xsLXR5cGUnLCBpdGVtLCBkYXRhKTsKICAgICAgIH0s CiAgICAgfSk7CiAgIH0KZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dy b3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3ZpZXdzL3N0YXRpYy9qcy9tdmlldy5qcyBi L3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hl bWFzL3ZpZXdzL3N0YXRpYy9qcy9tdmlldy5qcwppbmRleCA3OTViYmZjZi4uMTVhNTE3YjggMTAw NjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFi YXNlcy9zY2hlbWFzL3ZpZXdzL3N0YXRpYy9qcy9tdmlldy5qcworKysgYi93ZWIvcGdhZG1pbi9i cm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy92aWV3cy9zdGF0 aWMvanMvbXZpZXcuanMKQEAgLTEsOCArMSwxMSBAQAogZGVmaW5lKCdwZ2FkbWluLm5vZGUubXZp ZXcnLCBbCiAgICdzb3VyY2VzL2dldHRleHQnLCAnc291cmNlcy91cmxfZm9yJywgJ2pxdWVyeScs ICd1bmRlcnNjb3JlJywKICAgJ3NvdXJjZXMvcGdhZG1pbicsICdwZ2FkbWluLmFsZXJ0aWZ5anMn LCAncGdhZG1pbi5icm93c2VyJywKLSAgJ3BnYWRtaW4uYmFja2Zvcm0nLCAncGdhZG1pbi5icm93 c2VyLnNlcnZlci5wcml2aWxlZ2UnLAotXSwgZnVuY3Rpb24oZ2V0dGV4dCwgdXJsX2ZvciwgJCwg XywgcGdBZG1pbiwgQWxlcnRpZnksIHBnQnJvd3NlciwgQmFja2Zvcm0pIHsKKyAgJ3BnYWRtaW4u YmFja2Zvcm0nLAorICAnc291cmNlcy9tZW51L2Nhbl9jcmVhdGUnLAorICAncGdhZG1pbi5icm93 c2VyLnNlcnZlci5wcml2aWxlZ2UnLAorXSwgZnVuY3Rpb24oZ2V0dGV4dCwgdXJsX2ZvciwgJCwg XywgcGdBZG1pbiwgQWxlcnRpZnksIHBnQnJvd3NlciwgQmFja2Zvcm0sCisgIGNhbkNyZWF0ZSkg ewogCiAgIC8qKgogICAgIENyZWF0ZSBhbmQgYWRkIGEgdmlldyBjb2xsZWN0aW9uIGludG8gbm9k ZXMKQEAgLTI0MSwzNyArMjQ0LDcgQEAgZGVmaW5lKCdwZ2FkbWluLm5vZGUubXZpZXcnLCBbCiAg ICAgICAgIGFuZCBoaWRlIGZvciBzeXN0ZW0gdmlldyBpbiBjYXRhbG9ncy4KICAgICAgICAqLwog ICAgICAgY2FuQ3JlYXRlOiBmdW5jdGlvbihpdGVtRGF0YSwgaXRlbSwgZGF0YSkgewotCi0gICAg ICAgIC8vIElmIGNoZWNrIGlzIGZhbHNlIHRoZW4sIHdlIHdpbGwgYWxsb3cgY3JlYXRlIG1lbnUK LSAgICAgICAgaWYgKGRhdGEgJiYgZGF0YS5jaGVjayA9PT0gZmFsc2UpCi0gICAgICAgICAgcmV0 dXJuIHRydWU7Ci0KLSAgICAgICAgdmFyIHQgPSBwZ0Jyb3dzZXIudHJlZSwgaSA9IGl0ZW0sIGQg PSBpdGVtRGF0YTsKLQotICAgICAgICAvLyBUbyBpdGVyYXRlIG92ZXIgdHJlZSB0byBjaGVjayBw YXJlbnQgbm9kZQotICAgICAgICB3aGlsZSAoaSkgewotCi0gICAgICAgICAgLy8gSWYgaXQgaXMg c2NoZW1hIHRoZW4gYWxsb3cgdXNlciB0byBjcmVhdGUgdmlldwotICAgICAgICAgIGlmIChfLmlu ZGV4T2YoWydzY2hlbWEnXSwgZC5fdHlwZSkgPiAtMSkKLSAgICAgICAgICAgIHJldHVybiB0cnVl OwotCi0gICAgICAgICAgaWYgKCdjb2xsLW12aWV3JyA9PSBkLl90eXBlKSB7Ci0KLSAgICAgICAg ICAgIC8vIENoZWNrIGlmIHdlIGFyZSBub3QgY2hpbGQgb2YgdmlldwotICAgICAgICAgICAgdmFy IHByZXZfaSA9IHQuaGFzUGFyZW50KGkpID8gdC5wYXJlbnQoaSkgOiBudWxsLAotICAgICAgICAg ICAgICBwcmV2X2QgPSBwcmV2X2kgPyB0Lml0ZW1EYXRhKHByZXZfaSkgOiBudWxsOwotICAgICAg ICAgICAgaWYoIHByZXZfZC5fdHlwZSA9PSAnY2F0YWxvZycpIHsKLSAgICAgICAgICAgICAgcmV0 dXJuIGZhbHNlOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgcmV0dXJuIHRy dWU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgfQotICAgICAgICAgIGkgPSB0Lmhhc1BhcmVu dChpKSA/IHQucGFyZW50KGkpIDogbnVsbDsKLSAgICAgICAgICBkID0gaSA/IHQuaXRlbURhdGEo aSkgOiBudWxsOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gYnkgZGVmYXVsdCB3ZSBkbyBub3Qg d2FudCB0byBhbGxvdyBjcmVhdGUgbWVudQotICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAg cmV0dXJuIGNhbkNyZWF0ZS5jYW5DcmVhdGUocGdCcm93c2VyLCAnY29sbC1tdmlldycsIGl0ZW0s IGRhdGEpOwogICAgICAgfSwKICAgICAgIHJlZnJlc2hfbXZpZXc6IGZ1bmN0aW9uKGFyZ3MpIHsK ICAgICAgICAgdmFyIGlucHV0ID0gYXJncyB8fCB7fSwKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWlu L2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3ZpZXdzL3N0 YXRpYy9qcy92aWV3LmpzIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZl cnMvZGF0YWJhc2VzL3NjaGVtYXMvdmlld3Mvc3RhdGljL2pzL3ZpZXcuanMKaW5kZXggNTc1NWE1 MDkuLmU0MjU4MTg4IDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91 cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy92aWV3cy9zdGF0aWMvanMvdmlldy5qcworKysg Yi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2No ZW1hcy92aWV3cy9zdGF0aWMvanMvdmlldy5qcwpAQCAtMSw5ICsxLDEyIEBACiBkZWZpbmUoJ3Bn YWRtaW4ubm9kZS52aWV3JywgWwogICAnc291cmNlcy9nZXR0ZXh0JywKICAgJ3NvdXJjZXMvdXJs X2ZvcicsICdqcXVlcnknLCAndW5kZXJzY29yZScsICdzb3VyY2VzL3BnYWRtaW4nLAotICAncGdh ZG1pbi5icm93c2VyJywgJ3BnYWRtaW4uYmFja2Zvcm0nLCAncGdhZG1pbi5icm93c2VyLnNlcnZl ci5wcml2aWxlZ2UnLAorICAncGdhZG1pbi5icm93c2VyJywgJ3BnYWRtaW4uYmFja2Zvcm0nLAor ICAnc291cmNlcy9tZW51L2Nhbl9jcmVhdGUnLAorICAncGdhZG1pbi5icm93c2VyLnNlcnZlci5w cml2aWxlZ2UnLAogICAncGdhZG1pbi5ub2RlLnJ1bGUnLAotXSwgZnVuY3Rpb24oZ2V0dGV4dCwg dXJsX2ZvciwgJCwgXywgcGdBZG1pbiwgcGdCcm93c2VyLCBCYWNrZm9ybSkgeworXSwgZnVuY3Rp b24oZ2V0dGV4dCwgdXJsX2ZvciwgJCwgXywgcGdBZG1pbiwgcGdCcm93c2VyLCBCYWNrZm9ybSwK KyAgY2FuQ3JlYXRlKSB7CiAKICAgLyoqCiAgICAgQ3JlYXRlIGFuZCBhZGQgYSB2aWV3IGNvbGxl Y3Rpb24gaW50byBub2RlcwpAQCAtMjAzLDM4ICsyMDYsNyBAQCBkZWZpbmUoJ3BnYWRtaW4ubm9k ZS52aWV3JywgWwogICAgICAgICBhbmQgaGlkZSBmb3Igc3lzdGVtIHZpZXcgaW4gY2F0YWxvZ3Mu CiAgICAgICAgICovCiAgICAgICBjYW5DcmVhdGU6IGZ1bmN0aW9uKGl0ZW1EYXRhLCBpdGVtLCBk YXRhKSB7Ci0KLSAgICAgICAgLy8gSWYgY2hlY2sgaXMgZmFsc2UgdGhlbiwgd2Ugd2lsbCBhbGxv dyBjcmVhdGUgbWVudQotICAgICAgICBpZiAoZGF0YSAmJiBkYXRhLmNoZWNrID09IGZhbHNlKQot ICAgICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgICAgIHZhciB0ID0gcGdCcm93c2VyLnRyZWUs IGkgPSBpdGVtLCBkID0gaXRlbURhdGE7Ci0KLSAgICAgICAgLy8gVG8gaXRlcmF0ZSBvdmVyIHRy ZWUgdG8gY2hlY2sgcGFyZW50IG5vZGUKLSAgICAgICAgd2hpbGUgKGkpIHsKLQotICAgICAgICAg IC8vIElmIGl0IGlzIHNjaGVtYSB0aGVuIGFsbG93IHVzZXIgdG8gY3JlYXRlIHZpZXcKLSAgICAg ICAgICBpZiAoXy5pbmRleE9mKFsnc2NoZW1hJ10sIGQuX3R5cGUpID4gLTEpCi0gICAgICAgICAg ICByZXR1cm4gdHJ1ZTsKLQotICAgICAgICAgIGlmICgnY29sbC12aWV3JyA9PSBkLl90eXBlKSB7 Ci0KLSAgICAgICAgICAgIC8vIENoZWNrIGlmIHdlIGFyZSBub3QgY2hpbGQgb2YgdmlldwotICAg ICAgICAgICAgdmFyIHByZXZfaSA9IHQuaGFzUGFyZW50KGkpID8gdC5wYXJlbnQoaSkgOiBudWxs LAotICAgICAgICAgICAgICBwcmV2X2QgPSBwcmV2X2kgPyB0Lml0ZW1EYXRhKHByZXZfaSkgOiBu dWxsOwotICAgICAgICAgICAgaWYoIHByZXZfZC5fdHlwZSA9PSAnY2F0YWxvZycpIHsKLSAgICAg ICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAg ICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgfQotICAgICAgICAgIGkg PSB0Lmhhc1BhcmVudChpKSA/IHQucGFyZW50KGkpIDogbnVsbDsKLSAgICAgICAgICBkID0gaSA/ IHQuaXRlbURhdGEoaSkgOiBudWxsOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gYnkgZGVmYXVs dCB3ZSBkbyBub3Qgd2FudCB0byBhbGxvdyBjcmVhdGUgbWVudQotICAgICAgICByZXR1cm4gdHJ1 ZTsKLQorICAgICAgICByZXR1cm4gY2FuQ3JlYXRlLmNhbkNyZWF0ZShwZ0Jyb3dzZXIsICdjb2xs LXZpZXcnLCBpdGVtLCBkYXRhKTsKICAgICAgIH0sCiAgICAgfSk7CiAgIH0KZGlmZiAtLWdpdCBh L3dlYi9wZ2FkbWluL2Jyb3dzZXIvc3RhdGljL2pzL25vZGUuanMgYi93ZWIvcGdhZG1pbi9icm93 c2VyL3N0YXRpYy9qcy9ub2RlLmpzCmluZGV4IGFkNTgyNDgzLi4zYmFmNTU0YSAxMDA2NDQKLS0t IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zdGF0aWMvanMvbm9kZS5qcworKysgYi93ZWIvcGdhZG1p bi9icm93c2VyL3N0YXRpYy9qcy9ub2RlLmpzCkBAIC0xLDkgKzEsMTIgQEAKIGRlZmluZSgncGdh ZG1pbi5icm93c2VyLm5vZGUnLCBbCisgICdzb3VyY2VzL3RyZWUvcGdhZG1pbl90cmVlX25vZGUn LAogICAnc291cmNlcy9nZXR0ZXh0JywgJ2pxdWVyeScsICd1bmRlcnNjb3JlJywgJ3VuZGVyc2Nv cmUuc3RyaW5nJywgJ3NvdXJjZXMvcGdhZG1pbicsCiAgICdwZ2FkbWluLmJyb3dzZXIubWVudScs ICdiYWNrYm9uZScsICdwZ2FkbWluLmFsZXJ0aWZ5anMnLCAncGdhZG1pbi5icm93c2VyLmRhdGFt b2RlbCcsCiAgICdiYWNrZm9ybScsICdzb3VyY2VzL2Jyb3dzZXIvZ2VuZXJhdGVfdXJsJywgJ3Nv dXJjZXMvdXRpbHMnLCAncGdhZG1pbi5icm93c2VyLnV0aWxzJywKICAgJ3BnYWRtaW4uYmFja2Zv cm0nLAotXSwgZnVuY3Rpb24oZ2V0dGV4dCwgJCwgXywgUywgcGdBZG1pbiwgTWVudSwgQmFja2Jv bmUsIEFsZXJ0aWZ5LCBwZ0Jyb3dzZXIsIEJhY2tmb3JtLCBnZW5lcmF0ZVVybCwgY29tbW9uVXRp bHMpIHsKK10sIGZ1bmN0aW9uKAorICBwZ2FkbWluVHJlZU5vZGUsCisgIGdldHRleHQsICQsIF8s IFMsIHBnQWRtaW4sIE1lbnUsIEJhY2tib25lLCBBbGVydGlmeSwgcGdCcm93c2VyLCBCYWNrZm9y bSwgZ2VuZXJhdGVVcmwsIGNvbW1vblV0aWxzKSB7CiAKICAgdmFyIHdjRG9ja2VyID0gd2luZG93 LndjRG9ja2VyLAogICAgIGtleUNvZGUgPSB7CkBAIC0xNTY2LDcgKzE1NjksNiBAQCBkZWZpbmUo J3BnYWRtaW4uYnJvd3Nlci5ub2RlJywgWwogICAgICAqIGRlcGVuZHMsIHN0YXRpc3RpY3MKICAg ICAgKi8KICAgICBnZW5lcmF0ZV91cmw6IGZ1bmN0aW9uKGl0ZW0sIHR5cGUsIGQsIHdpdGhfaWQs IGluZm8pIHsKLQogICAgICAgdmFyIG9wVVJMID0gewogICAgICAgICAgICdjcmVhdGUnOiAnb2Jq JywKICAgICAgICAgICAnZHJvcCc6ICdvYmonLApAQCAtMTYwOCwyNCArMTYxMCw3IEBAIGRlZmlu ZSgncGdhZG1pbi5icm93c2VyLm5vZGUnLCBbCiAgICAgQ29sbGVjdGlvbjogcGdCcm93c2VyLkRh dGFDb2xsZWN0aW9uLAogICAgIC8vIEJhc2UgY2xhc3MgZm9yIE5vZGUgRGF0YSBNb2RlbAogICAg IE1vZGVsOiBwZ0Jyb3dzZXIuRGF0YU1vZGVsLAotICAgIGdldFRyZWVOb2RlSGllcmFyY2h5OiBm dW5jdGlvbihpKSB7Ci0gICAgICB2YXIgaWR4ID0gMCwKLSAgICAgICAgcmVzID0ge30sCi0gICAg ICAgIHQgPSBwZ0Jyb3dzZXIudHJlZSwKLSAgICAgICAgZDsKLSAgICAgIGRvIHsKLSAgICAgICAg ZCA9IHQuaXRlbURhdGEoaSk7Ci0gICAgICAgIGlmIChkLl90eXBlIGluIHBnQnJvd3Nlci5Ob2Rl cyAmJiBwZ0Jyb3dzZXIuTm9kZXNbZC5fdHlwZV0uaGFzSWQpIHsKLSAgICAgICAgICByZXNbZC5f dHlwZV0gPSBfLmV4dGVuZCh7fSwgZCwgewotICAgICAgICAgICAgJ3ByaW9yaXR5JzogaWR4LAot ICAgICAgICAgIH0pOwotICAgICAgICAgIGlkeCAtPSAxOwotICAgICAgICB9Ci0gICAgICAgIGkg PSB0Lmhhc1BhcmVudChpKSA/IHQucGFyZW50KGkpIDogbnVsbDsKLSAgICAgIH0gd2hpbGUgKGkp OwotCi0gICAgICByZXR1cm4gcmVzOwotICAgIH0sCisgICAgZ2V0VHJlZU5vZGVIaWVyYXJjaHk6 IHBnYWRtaW5UcmVlTm9kZS5nZXRUcmVlTm9kZUhpZXJhcmNoeUZyb21JZGVudGlmaWVyLmJpbmQo cGdCcm93c2VyKSwKICAgICBjYWNoZTogZnVuY3Rpb24odXJsLCBub2RlX2luZm8sIGxldmVsLCBk YXRhKSB7CiAgICAgICB2YXIgY2FjaGVkID0gdGhpcy5jYWNoZWQgPSB0aGlzLmNhY2hlZCB8fCB7 fSwKICAgICAgICAgaGFzaCA9IHVybCwKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3N0YXRpYy9q cy9hbGVydGlmeS9kaWFsb2cuanMgYi93ZWIvcGdhZG1pbi9zdGF0aWMvanMvYWxlcnRpZnkvZGlh bG9nLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwLi43YjMwOTk0NAotLS0g L2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL3N0YXRpYy9qcy9hbGVydGlmeS9kaWFsb2cuanMK QEAgLTAsMCArMSwxMTQgQEAKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKy8vCisvLyBwZ0FkbWluIDQgLSBQb3N0Z3JlU1FMIFRv b2xzCisvLworLy8gQ29weXJpZ2h0IChDKSAyMDEzIC0gMjAxOCwgVGhlIHBnQWRtaW4gRGV2ZWxv cG1lbnQgVGVhbQorLy8gVGhpcyBzb2Z0d2FyZSBpcyByZWxlYXNlZCB1bmRlciB0aGUgUG9zdGdy ZVNRTCBMaWNlbmNlCisvLworLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKworaW1wb3J0IGdldHRleHQgZnJvbSAnLi4vZ2V0dGV4 dCc7CitpbXBvcnQge3NwcmludGZ9IGZyb20gJ3NwcmludGYtanMnOworaW1wb3J0IHtEaWFsb2dG YWN0b3J5fSBmcm9tICcuL2RpYWxvZ19mYWN0b3J5JzsKK2ltcG9ydCBCYWNrZm9ybSBmcm9tICcu Li9iYWNrZm9ybS5wZ2FkbWluJzsKKworLyoqCisgKiBUaGlzIGNsYXNzIGNhbiBiZSBleHRlbmRl ZCB0byBjcmVhdGUgbmV3IGRpYWxvZyBib3hlcy4KKyAqIEV4YW1wbGVzIG9mIHRoaXMgY2FuIGJl IGZvdW5kIGluOgorICogYHdlYi9wZ2FkbWluL3N0YXRpYy9qcy9iYWNrdXAvYmFja3VwX2RpYWxv Zy5qc2AKKyAqCisgKiBEbyBub3QgZm9yZ2V0IHRvIGFkZCB0aGUgbmV3IERpYWxvZyB0eXBlIHRv IHRoZSBgRGlhbG9nRmFjdG9yeWAKKyAqLworZXhwb3J0IGNsYXNzIERpYWxvZyB7CisgIGNvbnN0 cnVjdG9yKGVycm9yQWxlcnRUaXRsZSwKKyAgICAgICAgICAgICAgZGlhbG9nQ29udGFpbmVyU2Vs ZWN0b3IsCisgICAgICAgICAgICAgIHBnQnJvd3NlciwgJCwgYWxlcnRpZnksIERpYWxvZ01vZGVs LAorICAgICAgICAgICAgICBiYWNrZm9ybSA9IEJhY2tmb3JtKSB7CisgICAgdGhpcy5lcnJvckFs ZXJ0VGl0bGUgPSBlcnJvckFsZXJ0VGl0bGU7CisgICAgdGhpcy5hbGVydGlmeSA9IGFsZXJ0aWZ5 OworICAgIHRoaXMucGdCcm93c2VyID0gcGdCcm93c2VyOworICAgIHRoaXMuanF1ZXJ5ID0gJDsK KyAgICB0aGlzLmRpYWxvZ01vZGVsID0gRGlhbG9nTW9kZWw7CisgICAgdGhpcy5iYWNrZm9ybSA9 IGJhY2tmb3JtOworICAgIHRoaXMuZGlhbG9nQ29udGFpbmVyU2VsZWN0b3IgPSBkaWFsb2dDb250 YWluZXJTZWxlY3RvcjsKKyAgfQorCisgIHJldHJpZXZlQW5jZXN0b3JPZlR5cGVTZXJ2ZXIoaXRl bSkgeworICAgIGxldCBzZXJ2ZXJJbmZvcm1hdGlvbiA9IG51bGw7CisgICAgbGV0IGFjaVRyZWVJ dGVtID0gaXRlbSB8fCB0aGlzLnBnQnJvd3Nlci50cmVlTWVudS5zZWxlY3RlZCgpOworICAgIGxl dCB0cmVlTm9kZSA9IHRoaXMucGdCcm93c2VyLnRyZWVNZW51LmZpbmROb2RlQnlEb21FbGVtZW50 KGFjaVRyZWVJdGVtKTsKKworICAgIHdoaWxlICh0cmVlTm9kZSkgeworICAgICAgY29uc3Qgbm9k ZV9kYXRhID0gdHJlZU5vZGUuZ2V0RGF0YSgpOworICAgICAgaWYgKG5vZGVfZGF0YS5fdHlwZSA9 PT0gJ3NlcnZlcicpIHsKKyAgICAgICAgc2VydmVySW5mb3JtYXRpb24gPSBub2RlX2RhdGE7Cisg ICAgICAgIGJyZWFrOworICAgICAgfQorCisgICAgICBpZiAodHJlZU5vZGUuaGFzUGFyZW50KCkp IHsKKyAgICAgICAgdHJlZU5vZGUgPSB0cmVlTm9kZS5wYXJlbnQoKTsKKyAgICAgIH0gZWxzZSB7 CisgICAgICAgIHRoaXMuYWxlcnRpZnkuYWxlcnQoCisgICAgICAgICAgZ2V0dGV4dCh0aGlzLmVy cm9yQWxlcnRUaXRsZSksCisgICAgICAgICAgZ2V0dGV4dCgnUGxlYXNlIHNlbGVjdCBzZXJ2ZXIg b3IgY2hpbGQgbm9kZSBmcm9tIHRoZSBicm93c2VyIHRyZWUuJykKKyAgICAgICAgKTsKKyAgICAg ICAgYnJlYWs7CisgICAgICB9CisgICAgfQorICAgIHJldHVybiBzZXJ2ZXJJbmZvcm1hdGlvbjsK KyAgfQorCisgIGhhc0JpbmFyaWVzQ29uZmlndXJhdGlvbihzZXJ2ZXJJbmZvcm1hdGlvbikgewor ICAgIGNvbnN0IG1vZHVsZSA9ICdwYXRocyc7CisgICAgbGV0IHByZWZlcmVuY2VfbmFtZSA9ICdw Z19iaW5fZGlyJzsKKyAgICBsZXQgbXNnID0gZ2V0dGV4dCgnUGxlYXNlIGNvbmZpZ3VyZSB0aGUg UG9zdGdyZVNRTCBCaW5hcnkgUGF0aCBpbiB0aGUgUHJlZmVyZW5jZXMgZGlhbG9nLicpOworCisg ICAgaWYgKChzZXJ2ZXJJbmZvcm1hdGlvbi50eXBlICYmIHNlcnZlckluZm9ybWF0aW9uLnR5cGUg PT09ICdwcGFzJykgfHwKKyAgICAgIHNlcnZlckluZm9ybWF0aW9uLnNlcnZlcl90eXBlID09PSAn cHBhcycpIHsKKyAgICAgIHByZWZlcmVuY2VfbmFtZSA9ICdwcGFzX2Jpbl9kaXInOworICAgICAg bXNnID0gZ2V0dGV4dCgnUGxlYXNlIGNvbmZpZ3VyZSB0aGUgRURCIEFkdmFuY2VkIFNlcnZlciBC aW5hcnkgUGF0aCBpbiB0aGUgUHJlZmVyZW5jZXMgZGlhbG9nLicpOworICAgIH0KKyAgICBjb25z dCBwcmVmZXJlbmNlID0gdGhpcy5wZ0Jyb3dzZXIuZ2V0X3ByZWZlcmVuY2UobW9kdWxlLCBwcmVm ZXJlbmNlX25hbWUpOworCisgICAgaWYgKHByZWZlcmVuY2UpIHsKKyAgICAgIGlmICghcHJlZmVy ZW5jZS52YWx1ZSkgeworICAgICAgICB0aGlzLmFsZXJ0aWZ5LmFsZXJ0KGdldHRleHQoJ0NvbmZp Z3VyYXRpb24gcmVxdWlyZWQnKSwgbXNnKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg fQorICAgIH0gZWxzZSB7CisgICAgICB0aGlzLmFsZXJ0aWZ5LmFsZXJ0KAorICAgICAgICBnZXR0 ZXh0KHRoaXMuZXJyb3JBbGVydFRpdGxlKSwKKyAgICAgICAgc3ByaW50ZihnZXR0ZXh0KCdGYWls ZWQgdG8gbG9hZCBwcmVmZXJlbmNlICVzIG9mIG1vZHVsZSAlcycpLCBwcmVmZXJlbmNlX25hbWUs IG1vZHVsZSkKKyAgICAgICk7CisgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIHJldHVy biB0cnVlOworICB9CisKKyAgZGlhbG9nTmFtZSgpIHsKKyAgICByZXR1cm4gdW5kZWZpbmVkOwor ICB9CisKKyAgY3JlYXRlT3JHZXREaWFsb2coZGlhbG9nVGl0bGUsIHR5cGVPZkRpYWxvZykgewor ICAgIGNvbnN0IGRpYWxvZ05hbWUgPSB0aGlzLmRpYWxvZ05hbWUodHlwZU9mRGlhbG9nKTsKKwor ICAgIGlmICghdGhpcy5hbGVydGlmeVtkaWFsb2dOYW1lXSkgeworICAgICAgY29uc3Qgc2VsZiA9 IHRoaXM7CisgICAgICB0aGlzLmFsZXJ0aWZ5LmRpYWxvZyhkaWFsb2dOYW1lLCBmdW5jdGlvbiBm YWN0b3J5KCkgeworICAgICAgICByZXR1cm4gc2VsZi5kaWFsb2dGYWN0b3J5KGRpYWxvZ1RpdGxl LCB0eXBlT2ZEaWFsb2cpOworICAgICAgfSk7CisgICAgfQorICAgIHJldHVybiB0aGlzLmFsZXJ0 aWZ5W2RpYWxvZ05hbWVdOworICB9CisKKyAgZGlhbG9nRmFjdG9yeShkaWFsb2dUaXRsZSwgdHlw ZU9mRGlhbG9nKSB7CisgICAgY29uc3QgZmFjdG9yeSA9IG5ldyBEaWFsb2dGYWN0b3J5KAorICAg ICAgdGhpcy5wZ0Jyb3dzZXIsCisgICAgICB0aGlzLmpxdWVyeSwKKyAgICAgIHRoaXMuYWxlcnRp ZnksCisgICAgICB0aGlzLmRpYWxvZ01vZGVsLAorICAgICAgdGhpcy5iYWNrZm9ybSwKKyAgICAg IHRoaXMuZGlhbG9nQ29udGFpbmVyU2VsZWN0b3IpOworICAgIHJldHVybiBmYWN0b3J5LmNyZWF0 ZShkaWFsb2dUaXRsZSwgdHlwZU9mRGlhbG9nKTsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvd2ViL3Bn YWRtaW4vc3RhdGljL2pzL2FsZXJ0aWZ5L2RpYWxvZ19mYWN0b3J5LmpzIGIvd2ViL3BnYWRtaW4v c3RhdGljL2pzL2FsZXJ0aWZ5L2RpYWxvZ19mYWN0b3J5LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAwLi41MDAxNDBiOAotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWlu L3N0YXRpYy9qcy9hbGVydGlmeS9kaWFsb2dfZmFjdG9yeS5qcwpAQCAtMCwwICsxLDUyIEBACisv Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vCisvLworLy8gcGdBZG1pbiA0IC0gUG9zdGdyZVNRTCBUb29scworLy8KKy8vIENvcHlyaWdo dCAoQykgMjAxMyAtIDIwMTgsIFRoZSBwZ0FkbWluIERldmVsb3BtZW50IFRlYW0KKy8vIFRoaXMg c29mdHdhcmUgaXMgcmVsZWFzZWQgdW5kZXIgdGhlIFBvc3RncmVTUUwgTGljZW5jZQorLy8KKy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vCisKK2ltcG9ydCAqIGFzIEJhY2t1cERpYWxvZyBmcm9tICcuLi8uLi8uLi90b29scy9iYWNr dXAvc3RhdGljL2pzL2JhY2t1cF9kaWFsb2dfd3JhcHBlcic7CitpbXBvcnQge1Jlc3RvcmVEaWFs b2dXcmFwcGVyfSBmcm9tICcuLi8uLi8uLi90b29scy9yZXN0b3JlL3N0YXRpYy9qcy9yZXN0b3Jl X2RpYWxvZ193cmFwcGVyJzsKKworZXhwb3J0IGNsYXNzIERpYWxvZ0ZhY3RvcnkgeworICBjb25z dHJ1Y3RvcihwZ0Jyb3dzZXIsICQsCisgICAgICAgICAgICAgIGFsZXJ0aWZ5LCBEaWFsb2dNb2Rl bCwKKyAgICAgICAgICAgICAgYmFja2Zvcm0sIGRpYWxvZ0NvbnRhaW5lclNlbGVjdG9yKSB7Cisg ICAgdGhpcy5wZ0Jyb3dzZXIgPSBwZ0Jyb3dzZXI7CisgICAgdGhpcy5qcXVlcnkgPSAkOworICAg IHRoaXMuYWxlcnRpZnkgPSBhbGVydGlmeTsKKyAgICB0aGlzLmRpYWxvZ01vZGVsID0gRGlhbG9n TW9kZWw7CisgICAgdGhpcy5iYWNrZm9ybSA9IGJhY2tmb3JtOworICAgIHRoaXMuZGlhbG9nQ29u dGFpbmVyU2VsZWN0b3IgPSBkaWFsb2dDb250YWluZXJTZWxlY3RvcjsKKyAgfQorCisgIGNyZWF0 ZShkaWFsb2dUaXRsZSwgdHlwZU9mRGlhbG9nKSB7CisgICAgaWYgKHR5cGVPZkRpYWxvZyA9PT0g J3Jlc3RvcmUnKSB7CisgICAgICByZXR1cm4gdGhpcy5jcmVhdGVSZXN0b3JlRGlhbG9nKGRpYWxv Z1RpdGxlLCB0eXBlT2ZEaWFsb2cpOworICAgIH0gZWxzZSB7CisgICAgICByZXR1cm4gdGhpcy5j cmVhdGVCYWNrdXBEaWFsb2coZGlhbG9nVGl0bGUsIHR5cGVPZkRpYWxvZyk7CisgICAgfQorICB9 CisKKyAgY3JlYXRlUmVzdG9yZURpYWxvZyhkaWFsb2dUaXRsZSwgdHlwZU9mRGlhbG9nKSB7Cisg ICAgcmV0dXJuIG5ldyBSZXN0b3JlRGlhbG9nV3JhcHBlcigKKyAgICAgIHRoaXMuZGlhbG9nQ29u dGFpbmVyU2VsZWN0b3IsIGRpYWxvZ1RpdGxlLCB0eXBlT2ZEaWFsb2csCisgICAgICB0aGlzLmpx dWVyeSwKKyAgICAgIHRoaXMucGdCcm93c2VyLAorICAgICAgdGhpcy5hbGVydGlmeSwKKyAgICAg IHRoaXMuZGlhbG9nTW9kZWwsCisgICAgICB0aGlzLmJhY2tmb3JtKTsKKyAgfQorCisgIGNyZWF0 ZUJhY2t1cERpYWxvZyhkaWFsb2dUaXRsZSwgdHlwZU9mRGlhbG9nKSB7CisgICAgcmV0dXJuIG5l dyBCYWNrdXBEaWFsb2cuQmFja3VwRGlhbG9nV3JhcHBlcigKKyAgICAgIHRoaXMuZGlhbG9nQ29u dGFpbmVyU2VsZWN0b3IsIGRpYWxvZ1RpdGxlLCB0eXBlT2ZEaWFsb2csCisgICAgICB0aGlzLmpx dWVyeSwKKyAgICAgIHRoaXMucGdCcm93c2VyLAorICAgICAgdGhpcy5hbGVydGlmeSwKKyAgICAg IHRoaXMuZGlhbG9nTW9kZWwsCisgICAgICB0aGlzLmJhY2tmb3JtKTsKKyAgfQorfQpkaWZmIC0t Z2l0IGEvd2ViL3BnYWRtaW4vc3RhdGljL2pzL2FsZXJ0aWZ5L2RpYWxvZ193cmFwcGVyLmpzIGIv d2ViL3BnYWRtaW4vc3RhdGljL2pzL2FsZXJ0aWZ5L2RpYWxvZ193cmFwcGVyLmpzCm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwLi5iNWZmODIwNAotLS0gL2Rldi9udWxsCisrKyBi L3dlYi9wZ2FkbWluL3N0YXRpYy9qcy9hbGVydGlmeS9kaWFsb2dfd3JhcHBlci5qcwpAQCAtMCww ICsxLDU3IEBACitpbXBvcnQgKiBhcyBjb21tb25VdGlscyBmcm9tICcuLi91dGlscyc7CisKK2V4 cG9ydCBjbGFzcyBEaWFsb2dXcmFwcGVyIHsKKyAgY29uc3RydWN0b3IoCisgICAgZGlhbG9nQ29u dGFpbmVyU2VsZWN0b3IsIGRpYWxvZ1RpdGxlLCBqcXVlcnksIHBnQnJvd3NlciwKKyAgICBhbGVy dGlmeSwgZGlhbG9nTW9kZWwsIGJhY2tmb3JtKSB7CisgICAgdGhpcy5ob29rcyA9IHsKKyAgICAg IG9uY2xvc2U6IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgaWYgKHRoaXMudmlldykgeworICAgICAg ICAgIHRoaXMudmlldy5yZW1vdmUoeworICAgICAgICAgICAgZGF0YTogdHJ1ZSwKKyAgICAgICAg ICAgIGludGVybmFsOiB0cnVlLAorICAgICAgICAgICAgc2lsZW50OiB0cnVlLAorICAgICAgICAg IH0pOworICAgICAgICB9CisgICAgICB9LAorICAgIH07CisgICAgdGhpcy5kaWFsb2dDb250YWlu ZXJTZWxlY3RvciA9IGRpYWxvZ0NvbnRhaW5lclNlbGVjdG9yOworICAgIHRoaXMuZGlhbG9nVGl0 bGUgPSBkaWFsb2dUaXRsZTsKKyAgICB0aGlzLmpxdWVyeSA9IGpxdWVyeTsKKyAgICB0aGlzLnBn QnJvd3NlciA9IHBnQnJvd3NlcjsKKyAgICB0aGlzLmFsZXJ0aWZ5ID0gYWxlcnRpZnk7CisgICAg dGhpcy5kaWFsb2dNb2RlbCA9IGRpYWxvZ01vZGVsOworICAgIHRoaXMuYmFja2Zvcm0gPSBiYWNr Zm9ybTsKKyAgfQorCisgIGJ1aWxkKCkgeworICAgIHRoaXMuYWxlcnRpZnkucGdEaWFsb2dCdWls ZC5hcHBseSh0aGlzKTsKKyAgfQorCisgIHdhc0hlbHBCdXR0b25QcmVzc2VkKGUpIHsKKyAgICBy ZXR1cm4gZS5idXR0b24uZWxlbWVudC5uYW1lID09PSAnZGlhbG9nX2hlbHAnCisgICAgICB8fCBl LmJ1dHRvbi5lbGVtZW50Lm5hbWUgPT09ICdvYmplY3RfaGVscCc7CisgIH0KKworICBnZXRTZWxl Y3RlZE5vZGVEYXRhKHNlbGVjdGVkVHJlZU5vZGUpIHsKKyAgICBpZiAoIXRoaXMuaXNOb2RlU2Vs ZWN0ZWQoc2VsZWN0ZWRUcmVlTm9kZSkpIHsKKyAgICAgIHJldHVybiB1bmRlZmluZWQ7CisgICAg fQorICAgIGNvbnN0IHRyZWVOb2RlRGF0YSA9IHNlbGVjdGVkVHJlZU5vZGUuZ2V0RGF0YSgpOwor ICAgIGlmICh0cmVlTm9kZURhdGEpIHsKKyAgICAgIHJldHVybiB0cmVlTm9kZURhdGE7CisgICAg fQorICAgIHJldHVybiB1bmRlZmluZWQ7CisgIH0KKworICBmb2N1c09uRGlhbG9nKGRpYWxvZykg eworICAgIGRpYWxvZy4kZWwuYXR0cigndGFiaW5kZXgnLCAtMSk7CisgICAgdGhpcy5wZ0Jyb3dz ZXIua2V5Ym9hcmROYXZpZ2F0aW9uLmdldERpYWxvZ1RhYk5hdmlnYXRvcihkaWFsb2cpOworICAg IGNvbnN0IGNvbnRhaW5lciA9IGRpYWxvZy4kZWwuZmluZCgnLnRhYi1jb250ZW50OmZpcnN0ID4g LnRhYi1wYW5lLmFjdGl2ZTpmaXJzdCcpOworICAgIGNvbW1vblV0aWxzLmZpbmRBbmRTZXRGb2N1 cyhjb250YWluZXIpOworICB9CisKKyAgaXNOb2RlU2VsZWN0ZWQoc2VsZWN0ZWRUcmVlTm9kZSkg eworICAgIHJldHVybiBzZWxlY3RlZFRyZWVOb2RlOworICB9Cit9CmRpZmYgLS1naXQgYS93ZWIv cGdhZG1pbi9zdGF0aWMvanMvbWVudS9jYW5fY3JlYXRlLmpzIGIvd2ViL3BnYWRtaW4vc3RhdGlj L2pzL21lbnUvY2FuX2NyZWF0ZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw MC4uNDc2YmU0MzcKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9zdGF0aWMvanMvbWVu dS9jYW5fY3JlYXRlLmpzCkBAIC0wLDAgKzEsMzcgQEAKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKy8vCisvLyBwZ0FkbWluIDQg LSBQb3N0Z3JlU1FMIFRvb2xzCisvLworLy8gQ29weXJpZ2h0IChDKSAyMDEzIC0gMjAxOCwgVGhl IHBnQWRtaW4gRGV2ZWxvcG1lbnQgVGVhbQorLy8gVGhpcyBzb2Z0d2FyZSBpcyByZWxlYXNlZCB1 bmRlciB0aGUgUG9zdGdyZVNRTCBMaWNlbmNlCisvLworLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworCitleHBvcnQgZnVuY3Rpb24g Y2FuQ3JlYXRlKHBnQnJvd3NlciwgY2hpbGRPZkNhdGFsb2dUeXBlLCBpdGVtLCBkYXRhKSB7Cisg IC8vSWYgY2hlY2sgaXMgZmFsc2UgdGhlbiAsIHdlIHdpbGwgYWxsb3cgY3JlYXRlIG1lbnUKKyAg aWYgKGRhdGEgJiYgZGF0YS5jaGVjayA9PT0gZmFsc2UpIHsKKyAgICByZXR1cm4gdHJ1ZTsKKyAg fQorCisgIGxldCBub2RlID0gcGdCcm93c2VyLnRyZWVNZW51LmZpbmROb2RlQnlEb21FbGVtZW50 KGl0ZW0pOworCisgIGlmIChub2RlLmFueUZhbWlseU1lbWJlcihwYXJlbnRDYXRhbG9nT2ZUYWJs ZUNoaWxkLmJpbmQobnVsbCwgY2hpbGRPZkNhdGFsb2dUeXBlKSkpIHsKKyAgICByZXR1cm4gZmFs c2U7CisgIH0KKworICByZXR1cm4gdHJ1ZTsKK30KKworZnVuY3Rpb24gcGFyZW50Q2F0YWxvZ09m VGFibGVDaGlsZChhcmcsIG5vZGUpIHsKKyAgaWYgKGFyZyA9PT0gbm9kZS5nZXREYXRhKCkuX3R5 cGUpIHsKKyAgICBpZiAobm9kZS5oYXNQYXJlbnQoKSkgeworCisgICAgICBsZXQgcGFyZW50ID0g bm9kZS5wYXJlbnQoKTsKKyAgICAgIGlmICgnY2F0YWxvZycgPT09IHBhcmVudC5nZXREYXRhKCku X3R5cGUpIHsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICB9CisgICAgfQorICB9CisKKyAg cmV0dXJuIGZhbHNlOworfQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vc3RhdGljL2pzL21lbnUv bWVudV9lbmFibGVkLmpzIGIvd2ViL3BnYWRtaW4vc3RhdGljL2pzL21lbnUvbWVudV9lbmFibGVk LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwLi4wNWZmMGY0YQotLS0gL2Rl di9udWxsCisrKyBiL3dlYi9wZ2FkbWluL3N0YXRpYy9qcy9tZW51L21lbnVfZW5hYmxlZC5qcwpA QCAtMCwwICsxLDUyIEBACisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vCisvLworLy8gcGdBZG1pbiA0IC0gUG9zdGdyZVNRTCBUb29s cworLy8KKy8vIENvcHlyaWdodCAoQykgMjAxMyAtIDIwMTgsIFRoZSBwZ0FkbWluIERldmVsb3Bt ZW50IFRlYW0KKy8vIFRoaXMgc29mdHdhcmUgaXMgcmVsZWFzZWQgdW5kZXIgdGhlIFBvc3RncmVT UUwgTGljZW5jZQorLy8KKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vCisKK2Z1bmN0aW9uIGlzTm9kZVR5cGVTdXBwb3J0ZWQoYmFj a3VwU3VwcG9ydGVkTm9kZXMsIG5vZGVEYXRhVHlwZSwgdHJlZU5vZGUpIHsKKyAgcmV0dXJuIF8u aW5kZXhPZihiYWNrdXBTdXBwb3J0ZWROb2Rlcywgbm9kZURhdGFUeXBlKSAhPT0gLTEKKyAgICAm JiBhbmNlc3RvcldpdGhUeXBlQ2F0YWxvZ0RvZXNOb3RFeGlzdHModHJlZU5vZGUpOworfQorCitl eHBvcnQgZnVuY3Rpb24gaXNQcm92aWRlZERhdGFWYWxpZCh0cmVlTm9kZURhdGEpIHsKKyAgcmV0 dXJuICFfLmlzVW5kZWZpbmVkKHRyZWVOb2RlRGF0YSkgJiYgIV8uaXNOdWxsKHRyZWVOb2RlRGF0 YSk7Cit9CisKK2Z1bmN0aW9uIGRvZXNOb2RlSGF2ZU1lbnUodHJlZU5vZGVEYXRhKSB7CisgIHJl dHVybiAodHJlZU5vZGVEYXRhLl90eXBlID09PSAnZGF0YWJhc2UnICYmIHRyZWVOb2RlRGF0YS5h bGxvd0Nvbm4pCisgICAgfHwgdHJlZU5vZGVEYXRhLl90eXBlICE9PSAnZGF0YWJhc2UnOworfQor CitmdW5jdGlvbiBhbmNlc3RvcldpdGhUeXBlQ2F0YWxvZ0RvZXNOb3RFeGlzdHModHJlZU5vZGUp IHsKKyAgbGV0IGN1cnJlbnROb2RlID0gdHJlZU5vZGU7CisKKyAgd2hpbGUoY3VycmVudE5vZGUu aGFzUGFyZW50KCkgJiYgdHJlZU5vZGUucGFyZW50KCkuZ2V0RGF0YSgpICE9PSBudWxsKSB7Cisg ICAgaWYoY3VycmVudE5vZGUucGFyZW50KCkuZ2V0RGF0YSgpLl90eXBlID09PSAnY2F0YWxvZycp IHsKKyAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBjdXJyZW50Tm9kZSA9IGN1cnJl bnROb2RlLnBhcmVudCgpOworICB9CisKKyAgcmV0dXJuIHRydWU7Cit9CisKK2V4cG9ydCBmdW5j dGlvbiBtZW51RW5hYmxlZCh0cmVlLCBiYWNrdXBTdXBwb3J0ZWROb2RlcywgdHJlZU5vZGVEYXRh LCBkb21UcmVlTm9kZSkgeworICBsZXQgdHJlZU5vZGUgPSB0cmVlLmZpbmROb2RlQnlEb21FbGVt ZW50KGRvbVRyZWVOb2RlKTsKKyAgaWYgKCF0cmVlTm9kZSkgeworICAgIHJldHVybiBmYWxzZTsK KyAgfQorCisgIGlmIChpc1Byb3ZpZGVkRGF0YVZhbGlkKHRyZWVOb2RlRGF0YSkpIHsKKyAgICBy ZXR1cm4gaXNOb2RlVHlwZVN1cHBvcnRlZChiYWNrdXBTdXBwb3J0ZWROb2RlcywgdHJlZU5vZGVE YXRhLl90eXBlLCB0cmVlTm9kZSkKKyAgICAgICYmIGRvZXNOb2RlSGF2ZU1lbnUodHJlZU5vZGVE YXRhKTsKKyAgfSBlbHNlIHsKKyAgICByZXR1cm4gZmFsc2U7CisgIH0KK30KKworCmRpZmYgLS1n aXQgYS93ZWIvcGdhZG1pbi9zdGF0aWMvanMvdHJlZS9wZ2FkbWluX3RyZWVfbm9kZS5qcyBiL3dl Yi9wZ2FkbWluL3N0YXRpYy9qcy90cmVlL3BnYWRtaW5fdHJlZV9ub2RlLmpzCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwLi40ZmFhNThmMwotLS0gL2Rldi9udWxsCisrKyBiL3dl Yi9wZ2FkbWluL3N0YXRpYy9qcy90cmVlL3BnYWRtaW5fdHJlZV9ub2RlLmpzCkBAIC0wLDAgKzEs NjkgQEAKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisvLworLy8gcGdBZG1pbiA0IC0gUG9zdGdyZVNRTCBU b29scworLy8KKy8vIENvcHlyaWdodCAoQykgMjAxMyAtIDIwMTgsIFRoZSBwZ0FkbWluIERldmVs b3BtZW50IFRlYW0KKy8vIFRoaXMgc29mdHdhcmUgaXMgcmVsZWFzZWQgdW5kZXIgdGhlIFBvc3Rn cmVTUUwgTGljZW5jZQorLy8KKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisKKy8qKgorICogVGhpcyBtZXRo b2QgcmVjZWl2ZWQgcGdCcm93c2VyIGFuZCBuZXcgVHJlZU5vZGUgb2JqZWN0CisgKgorICogVGhp cyBtZXRob2QgcmV0cmlldmVzIGFsbCB0aGUgZGF0YSB0aGF0IGV4aXN0cyBpbiB0aGUgdHJlZSBu b2RlIGFuZCBpbgorICogYHBnQnJvd3Nlci5Ob2Rlc2AgZm9yIGFsbCB0aGUgcGFyZW50IG5vZGUg b2YgdGhlIHByb3ZpZGVkIG5vZGUuCisgKgorICogVGhlIDIgY29uZGl0aW9uIHRvIGdldCB0aGUg aW5mb3JtYXRpb24gZnJvbSBwZ0Jyb3dzZXIuTm9kZXMgYXJlOgorICogIDEgLSB0aGUgdmFyaWFi bGUgX3R5cGUgb2YgdGhlIHRyZWUgbm9kZQorICogIDIgLSB0aGUgcHJlc2VuY2Ugb2YgaGFzSWQg aW4gdGhlIHBnQnJvd3Nlci5Ob2RlcyBmb3IgdGhlIHNwZWNpZmljIG5vZGUKKyAqCisgKiBOdW1i ZXIgMiBpcyB1c2VkIHRvIGlnbm9yZSBjb2xsLSogbm9kZXMgYXMgdGhleSBkbyBub3QgYWRkIGFu eSB1c2VmdWwKKyAqIGluZm9ybWF0aW9uCisgKi8KK2V4cG9ydCBmdW5jdGlvbiBnZXRUcmVlTm9k ZUhpZXJhcmNoeUZyb21FbGVtZW50KHBnQnJvd3NlciwgdHJlZU5vZGUpIHsKKyAgcmV0dXJuIGdl dFRyZWVOb2RlSGllcmFyY2h5LmNhbGwocGdCcm93c2VyLCB0cmVlTm9kZSk7Cit9CisKKy8qKgor ICogVGhpcyBtZXRob2QgcmVjZWl2ZWQgYW4gQUNJIFRyZWUgSlF1ZXJ5IG5vZGUKKyAqCisgKiBU aGlzIG1ldGhvZCByZXRyaWV2ZXMgYWxsIHRoZSBkYXRhIHRoYXQgZXhpc3RzIGluIHRoZSB0cmVl IG5vZGUgYW5kIGluCisgKiBgcGdCcm93c2VyLk5vZGVzYCBmb3IgYWxsIHRoZSBwYXJlbnQgbm9k ZSBvZiB0aGUgcHJvdmlkZWQgbm9kZS4KKyAqCisgKiBUaGUgMiBjb25kaXRpb24gdG8gZ2V0IHRo ZSBpbmZvcm1hdGlvbiBmcm9tIHBnQnJvd3Nlci5Ob2RlcyBhcmU6CisgKiAgMSAtIHRoZSB2YXJp YWJsZSBfdHlwZSBvZiB0aGUgdHJlZSBub2RlCisgKiAgMiAtIHRoZSBwcmVzZW5jZSBvZiBoYXNJ ZCBpbiB0aGUgcGdCcm93c2VyLk5vZGVzIGZvciB0aGUgc3BlY2lmaWMgbm9kZQorICoKKyAqIE51 bWJlciAyIGlzIHVzZWQgdG8gaWdub3JlIGNvbGwtKiBub2RlcyBhcyB0aGV5IGRvIG5vdCBhZGQg YW55IHVzZWZ1bAorICogaW5mb3JtYXRpb24KKyAqLworZXhwb3J0IGZ1bmN0aW9uIGdldFRyZWVO b2RlSGllcmFyY2h5RnJvbUlkZW50aWZpZXIoYWNpVHJlZU5vZGVJZGVudGlmaWVyKSB7CisgIGxl dCBpZGVudGlmaWVyID0gdGhpcy50cmVlTWVudS50cmFuc2xhdGVUcmVlTm9kZUlkRnJvbUFDSVRy ZWUoYWNpVHJlZU5vZGVJZGVudGlmaWVyKTsKKyAgbGV0IGN1cnJlbnROb2RlID0gdGhpcy50cmVl TWVudS5maW5kTm9kZShpZGVudGlmaWVyKTsKKyAgcmV0dXJuIGdldFRyZWVOb2RlSGllcmFyY2h5 LmNhbGwodGhpcywgY3VycmVudE5vZGUpOworfQorCitleHBvcnQgZnVuY3Rpb24gZ2V0VHJlZU5v ZGVIaWVyYXJjaHkoY3VycmVudE5vZGUpIHsKKyAgbGV0IGlkeCA9IDA7CisgIGxldCByZXN1bHQg PSB7fTsKKworICBkbyB7CisgICAgY29uc3QgY3VycmVudE5vZGVEYXRhID0gY3VycmVudE5vZGUu Z2V0RGF0YSgpOworICAgIGlmIChjdXJyZW50Tm9kZURhdGEuX3R5cGUgaW4gdGhpcy5Ob2RlcyAm JiB0aGlzLk5vZGVzW2N1cnJlbnROb2RlRGF0YS5fdHlwZV0uaGFzSWQpIHsKKyAgICAgIGNvbnN0 IG5vZGVUeXBlID0gbWFwVHlwZShjdXJyZW50Tm9kZURhdGEuX3R5cGUpOworICAgICAgaWYgKHJl c3VsdFtub2RlVHlwZV0gPT09IHVuZGVmaW5lZCkgeworICAgICAgICByZXN1bHRbbm9kZVR5cGVd ID0gXy5leHRlbmQoe30sIGN1cnJlbnROb2RlRGF0YSwgeworICAgICAgICAgICdwcmlvcml0eSc6 IGlkeCwKKyAgICAgICAgfSk7CisgICAgICAgIGlkeCAtPSAxOworICAgICAgfQorICAgIH0KKyAg ICBjdXJyZW50Tm9kZSA9IGN1cnJlbnROb2RlLmhhc1BhcmVudCgpID8gY3VycmVudE5vZGUucGFy ZW50KCkgOiBudWxsOworICB9IHdoaWxlIChjdXJyZW50Tm9kZSk7CisKKyAgcmV0dXJuIHJlc3Vs dDsKK30KKworZnVuY3Rpb24gbWFwVHlwZSh0eXBlKSB7CisgIHJldHVybiB0eXBlID09PSAncGFy dGl0aW9uJyA/ICd0YWJsZScgOiB0eXBlOworfQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vdG9v bHMvYmFja3VwL3N0YXRpYy9qcy9iYWNrdXAuanMgYi93ZWIvcGdhZG1pbi90b29scy9iYWNrdXAv c3RhdGljL2pzL2JhY2t1cC5qcwppbmRleCBkZGJmYWVlNC4uZDc0ZWQ2ZGQgMTAwNjQ0Ci0tLSBh L3dlYi9wZ2FkbWluL3Rvb2xzL2JhY2t1cC9zdGF0aWMvanMvYmFja3VwLmpzCisrKyBiL3dlYi9w Z2FkbWluL3Rvb2xzL2JhY2t1cC9zdGF0aWMvanMvYmFja3VwLmpzCkBAIC0zLDkgKzMsMTIgQEAg ZGVmaW5lKFsKICAgJ3NvdXJjZXMvZ2V0dGV4dCcsICdzb3VyY2VzL3VybF9mb3InLCAnanF1ZXJ5 JywgJ3VuZGVyc2NvcmUnLAogICAndW5kZXJzY29yZS5zdHJpbmcnLCAncGdhZG1pbi5hbGVydGlm eWpzJywgJ2JhY2tib25lJywgJ3BnYWRtaW4uYmFja2dyaWQnLAogICAncGdhZG1pbi5iYWNrZm9y bScsICdwZ2FkbWluLmJyb3dzZXInLCAnc291cmNlcy91dGlscycsCisgICd0b29scy9iYWNrdXAv c3RhdGljL2pzL21lbnVfdXRpbHMnLAorICAndG9vbHMvYmFja3VwL3N0YXRpYy9qcy9iYWNrdXBf ZGlhbG9nJywKKyAgJ3NvdXJjZXMvbWVudS9tZW51X2VuYWJsZWQnLAogXSwgZnVuY3Rpb24oCiAg IGdldHRleHQsIHVybF9mb3IsICQsIF8sIFMsIGFsZXJ0aWZ5LCBCYWNrYm9uZSwgQmFja2dyaWQs IEJhY2tmb3JtLCBwZ0Jyb3dzZXIsCi1jb21tb25VdGlscworY29tbW9uVXRpbHMsIG1lbnVVdGls cywgZ2xvYmFsQmFja3VwRGlhbG9nLCBtZW51RW5hYmxlZAogKSB7CiAKICAgLy8gaWYgbW9kdWxl IGlzIGFscmVhZHkgaW5pdGlhbGl6ZWQsIHJlZmVyIHRvIHRoYXQuCkBAIC0zOTQsNDggKzM5Nyw2 IEBAIGNvbW1vblV0aWxzCiAKICAgICAgIHRoaXMuaW5pdGlhbGl6ZWQgPSB0cnVlOwogCi0gICAg ICAvLyBEZWZpbmUgbGlzdCBvZiBub2RlcyBvbiB3aGljaCBiYWNrdXAgY29udGV4dCBtZW51IG9w dGlvbiBhcHBlYXJzCi0gICAgICB2YXIgYmFja3VwX3N1cHBvcnRlZF9ub2RlcyA9IFsKLSAgICAg ICAgJ2RhdGFiYXNlJywgJ3NjaGVtYScsICd0YWJsZScsICdwYXJ0aXRpb24nLAotICAgICAgXTsK LQotICAgICAgLyoqCi0gICAgICAgIEVuYWJsZS9kaXNhYmxlIGJhY2t1cCBtZW51IGluIHRvb2xz IGJhc2VkCi0gICAgICAgIG9uIG5vZGUgc2VsZWN0ZWQKLSAgICAgICAgaWYgc2VsZWN0ZWQgbm9k ZSBpcyBwcmVzZW50IGluIHN1cHBvcnRlZF9ub2RlcywKLSAgICAgICAgbWVudSB3aWxsIGJlIGVu YWJsZWQgb3RoZXJ3aXNlIGRpc2FibGVkLgotICAgICAgICBBbHNvLCBoaWRlIGl0IGZvciBzeXN0 ZW0gdmlldyBpbiBjYXRhbG9ncwotICAgICAgKi8KLSAgICAgIHZhciBtZW51X2VuYWJsZWQgPSBm dW5jdGlvbihpdGVtRGF0YSwgaXRlbSkgewotICAgICAgICB2YXIgdCA9IHBnQnJvd3Nlci50cmVl LAotICAgICAgICAgIGkgPSBpdGVtLAotICAgICAgICAgIGQgPSBpdGVtRGF0YSwKLSAgICAgICAg ICBwYXJlbnRfaXRlbSA9IHQuaGFzUGFyZW50KGkpID8gdC5wYXJlbnQoaSkgOiBudWxsLAotICAg ICAgICAgIHBhcmVudF9kYXRhID0gcGFyZW50X2l0ZW0gPyB0Lml0ZW1EYXRhKHBhcmVudF9pdGVt KSA6IG51bGw7Ci0KLSAgICAgICAgaWYgKCFfLmlzVW5kZWZpbmVkKGQpICYmICFfLmlzTnVsbChk KSAmJiAhXy5pc051bGwocGFyZW50X2RhdGEpKSB7Ci0gICAgICAgICAgaWYgKF8uaW5kZXhPZihi YWNrdXBfc3VwcG9ydGVkX25vZGVzLCBkLl90eXBlKSAhPT0gLTEgJiYKLSAgICAgICAgICAgIHBh cmVudF9kYXRhLl90eXBlICE9ICdjYXRhbG9nJykgewotICAgICAgICAgICAgaWYgKGQuX3R5cGUg PT0gJ2RhdGFiYXNlJyAmJiBkLmFsbG93Q29ubikKLSAgICAgICAgICAgICAgcmV0dXJuIHRydWU7 Ci0gICAgICAgICAgICBlbHNlIGlmIChkLl90eXBlICE9ICdkYXRhYmFzZScpCi0gICAgICAgICAg ICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICByZXR1cm4g ZmFsc2U7Ci0gICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg ICAgIH0gZWxzZQotICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgIH07Ci0KLSAgICAgIHZh ciBtZW51X2VuYWJsZWRfc2VydmVyID0gZnVuY3Rpb24oaXRlbURhdGEpIHsKLSAgICAgICAgLy8g SWYgc2VydmVyIG5vZGUgc2VsZWN0ZWQgJiYgY29ubmVjdGVkCi0gICAgICAgIGlmICghXy5pc1Vu ZGVmaW5lZChpdGVtRGF0YSkgJiYgIV8uaXNOdWxsKGl0ZW1EYXRhKSkKLSAgICAgICAgICByZXR1 cm4gKCgnc2VydmVyJyA9PT0gaXRlbURhdGEuX3R5cGUpICYmIGl0ZW1EYXRhLmNvbm5lY3RlZCk7 Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICB9OwotCiAgICAg ICAvLyBEZWZpbmUgdGhlIG5vZGVzIG9uIHdoaWNoIHRoZSBtZW51cyB0byBiZSBhcHBlYXIKICAg ICAgIHZhciBtZW51cyA9IFt7CiAgICAgICAgIG5hbWU6ICdiYWNrdXBfZ2xvYmFsJywKQEAgLTQ0 NSw3ICs0MDYsNyBAQCBjb21tb25VdGlscwogICAgICAgICBwcmlvcml0eTogMTIsCiAgICAgICAg IGxhYmVsOiBnZXR0ZXh0KCdCYWNrdXAgR2xvYmFscy4uLicpLAogICAgICAgICBpY29uOiAnZmEg ZmEtZmxvcHB5LW8nLAotICAgICAgICBlbmFibGU6IG1lbnVfZW5hYmxlZF9zZXJ2ZXIsCisgICAg ICAgIGVuYWJsZTogbWVudVV0aWxzLm1lbnVFbmFibGVkU2VydmVyLAogICAgICAgfSwgewogICAg ICAgICBuYW1lOiAnYmFja3VwX3NlcnZlcicsCiAgICAgICAgIG1vZHVsZTogdGhpcywKQEAgLTQ1 NCw3ICs0MTUsNyBAQCBjb21tb25VdGlscwogICAgICAgICBwcmlvcml0eTogMTIsCiAgICAgICAg IGxhYmVsOiBnZXR0ZXh0KCdCYWNrdXAgU2VydmVyLi4uJyksCiAgICAgICAgIGljb246ICdmYSBm YS1mbG9wcHktbycsCi0gICAgICAgIGVuYWJsZTogbWVudV9lbmFibGVkX3NlcnZlciwKKyAgICAg ICAgZW5hYmxlOiBtZW51VXRpbHMubWVudUVuYWJsZWRTZXJ2ZXIsCiAgICAgICB9LCB7CiAgICAg ICAgIG5hbWU6ICdiYWNrdXBfZ2xvYmFsX2N0eCcsCiAgICAgICAgIG1vZHVsZTogdGhpcywKQEAg LTQ2NCw3ICs0MjUsNyBAQCBjb21tb25VdGlscwogICAgICAgICBwcmlvcml0eTogMTIsCiAgICAg ICAgIGxhYmVsOiBnZXR0ZXh0KCdCYWNrdXAgR2xvYmFscy4uLicpLAogICAgICAgICBpY29uOiAn ZmEgZmEtZmxvcHB5LW8nLAotICAgICAgICBlbmFibGU6IG1lbnVfZW5hYmxlZF9zZXJ2ZXIsCisg ICAgICAgIGVuYWJsZTogbWVudVV0aWxzLm1lbnVFbmFibGVkU2VydmVyLAogICAgICAgfSwgewog ICAgICAgICBuYW1lOiAnYmFja3VwX3NlcnZlcl9jdHgnLAogICAgICAgICBtb2R1bGU6IHRoaXMs CkBAIC00NzQsNyArNDM1LDcgQEAgY29tbW9uVXRpbHMKICAgICAgICAgcHJpb3JpdHk6IDEyLAog ICAgICAgICBsYWJlbDogZ2V0dGV4dCgnQmFja3VwIFNlcnZlci4uLicpLAogICAgICAgICBpY29u OiAnZmEgZmEtZmxvcHB5LW8nLAotICAgICAgICBlbmFibGU6IG1lbnVfZW5hYmxlZF9zZXJ2ZXIs CisgICAgICAgIGVuYWJsZTogbWVudVV0aWxzLm1lbnVFbmFibGVkU2VydmVyLAogICAgICAgfSwg ewogICAgICAgICBuYW1lOiAnYmFja3VwX29iamVjdCcsCiAgICAgICAgIG1vZHVsZTogdGhpcywK QEAgLTQ4MywyMCArNDQ0LDIyIEBAIGNvbW1vblV0aWxzCiAgICAgICAgIHByaW9yaXR5OiAxMSwK ICAgICAgICAgbGFiZWw6IGdldHRleHQoJ0JhY2t1cC4uLicpLAogICAgICAgICBpY29uOiAnZmEg ZmEtZmxvcHB5LW8nLAotICAgICAgICBlbmFibGU6IG1lbnVfZW5hYmxlZCwKKyAgICAgICAgZW5h YmxlOiBtZW51RW5hYmxlZC5tZW51RW5hYmxlZC5iaW5kKG51bGwsCisgICAgICAgICAgcGdCcm93 c2VyLnRyZWVNZW51LCBtZW51VXRpbHMuYmFja3VwU3VwcG9ydGVkTm9kZXMpLAogICAgICAgfV07 CiAKLSAgICAgIGZvciAodmFyIGlkeCA9IDA7IGlkeCA8IGJhY2t1cF9zdXBwb3J0ZWRfbm9kZXMu bGVuZ3RoOyBpZHgrKykgeworICAgICAgZm9yICh2YXIgaWR4ID0gMDsgaWR4IDwgbWVudVV0aWxz LmJhY2t1cFN1cHBvcnRlZE5vZGVzLmxlbmd0aDsgaWR4KyspIHsKICAgICAgICAgbWVudXMucHVz aCh7Ci0gICAgICAgICAgbmFtZTogJ2JhY2t1cF8nICsgYmFja3VwX3N1cHBvcnRlZF9ub2Rlc1tp ZHhdLAotICAgICAgICAgIG5vZGU6IGJhY2t1cF9zdXBwb3J0ZWRfbm9kZXNbaWR4XSwKKyAgICAg ICAgICBuYW1lOiAnYmFja3VwXycgKyBtZW51VXRpbHMuYmFja3VwU3VwcG9ydGVkTm9kZXNbaWR4 XSwKKyAgICAgICAgICBub2RlOiBtZW51VXRpbHMuYmFja3VwU3VwcG9ydGVkTm9kZXNbaWR4XSwK ICAgICAgICAgICBtb2R1bGU6IHRoaXMsCiAgICAgICAgICAgYXBwbGllczogWydjb250ZXh0J10s CiAgICAgICAgICAgY2FsbGJhY2s6ICdiYWNrdXBfb2JqZWN0cycsCiAgICAgICAgICAgcHJpb3Jp dHk6IDExLAogICAgICAgICAgIGxhYmVsOiBnZXR0ZXh0KCdCYWNrdXAuLi4nKSwKICAgICAgICAg ICBpY29uOiAnZmEgZmEtZmxvcHB5LW8nLAotICAgICAgICAgIGVuYWJsZTogbWVudV9lbmFibGVk LAorICAgICAgICAgIGVuYWJsZTogbWVudUVuYWJsZWQubWVudUVuYWJsZWQuYmluZChudWxsLAor ICAgICAgICAgICAgcGdCcm93c2VyLnRyZWVNZW51LCBtZW51VXRpbHMuYmFja3VwU3VwcG9ydGVk Tm9kZXMpLAogICAgICAgICB9KTsKICAgICAgIH0KIApAQCAtNTIxLDUzMSArNDg0LDI1IEBAIGNv bW1vblV0aWxzCiAgICAgfSwKIAogICAgIC8vIENhbGxiYWNrIHRvIGRyYXcgQmFja3VwIERpYWxv ZyBmb3IgZ2xvYmFscy9zZXJ2ZXIKLSAgICBzdGFydF9iYWNrdXBfZ2xvYmFsX3NlcnZlcjogZnVu Y3Rpb24oYWN0aW9uLCBpdGVtLCBwYXJhbXMpIHsKLSAgICAgIHZhciBpID0gaXRlbSB8fCBwZ0Jy b3dzZXIudHJlZS5zZWxlY3RlZCgpLAotICAgICAgICBzZXJ2ZXJfZGF0YSA9IG51bGw7Ci0KLSAg ICAgIHdoaWxlIChpKSB7Ci0gICAgICAgIHZhciBub2RlX2RhdGEgPSBwZ0Jyb3dzZXIudHJlZS5p dGVtRGF0YShpKTsKLSAgICAgICAgaWYgKG5vZGVfZGF0YS5fdHlwZSA9PSAnc2VydmVyJykgewot ICAgICAgICAgIHNlcnZlcl9kYXRhID0gbm9kZV9kYXRhOwotICAgICAgICAgIGJyZWFrOwotICAg ICAgICB9Ci0KLSAgICAgICAgaWYgKHBnQnJvd3Nlci50cmVlLmhhc1BhcmVudChpKSkgewotICAg ICAgICAgIGkgPSAkKHBnQnJvd3Nlci50cmVlLnBhcmVudChpKSk7Ci0gICAgICAgIH0gZWxzZSB7 Ci0gICAgICAgICAgYWxlcnRpZnkuYWxlcnQoCi0gICAgICAgICAgICBnZXR0ZXh0KCdCYWNrdXAg RXJyb3InKSwKLSAgICAgICAgICAgIGdldHRleHQoJ1BsZWFzZSBzZWxlY3Qgc2VydmVyIG9yIGNo aWxkIG5vZGUgZnJvbSB0aGUgYnJvd3NlciB0cmVlLicpCi0gICAgICAgICAgKTsKLSAgICAgICAg ICBicmVhazsKLSAgICAgICAgfQotICAgICAgfQotCi0gICAgICBpZiAoIXNlcnZlcl9kYXRhKSB7 Ci0gICAgICAgIHJldHVybjsKLSAgICAgIH0KLQotICAgICAgdmFyIG1vZHVsZSA9ICdwYXRocycs Ci0gICAgICAgIHByZWZlcmVuY2VfbmFtZSA9ICdwZ19iaW5fZGlyJywKLSAgICAgICAgbXNnID0g Z2V0dGV4dCgnUGxlYXNlIGNvbmZpZ3VyZSB0aGUgUG9zdGdyZVNRTCBCaW5hcnkgUGF0aCBpbiB0 aGUgUHJlZmVyZW5jZXMgZGlhbG9nLicpOwotCi0gICAgICBpZiAoKHNlcnZlcl9kYXRhLnR5cGUg JiYgc2VydmVyX2RhdGEudHlwZSA9PSAncHBhcycpIHx8Ci0gICAgICAgIHNlcnZlcl9kYXRhLnNl cnZlcl90eXBlID09ICdwcGFzJykgewotICAgICAgICBwcmVmZXJlbmNlX25hbWUgPSAncHBhc19i aW5fZGlyJzsKLSAgICAgICAgbXNnID0gZ2V0dGV4dCgnUGxlYXNlIGNvbmZpZ3VyZSB0aGUgRURC IEFkdmFuY2VkIFNlcnZlciBCaW5hcnkgUGF0aCBpbiB0aGUgUHJlZmVyZW5jZXMgZGlhbG9nLicp OwotICAgICAgfQotCi0gICAgICB2YXIgcHJlZmVyZW5jZSA9IHBnQnJvd3Nlci5nZXRfcHJlZmVy ZW5jZShtb2R1bGUsIHByZWZlcmVuY2VfbmFtZSk7Ci0KLSAgICAgIGlmIChwcmVmZXJlbmNlKSB7 Ci0gICAgICAgIGlmICghcHJlZmVyZW5jZS52YWx1ZSkgewotICAgICAgICAgIGFsZXJ0aWZ5LmFs ZXJ0KGdldHRleHQoJ0NvbmZpZ3VyYXRpb24gcmVxdWlyZWQnKSwgbXNnKTsKLSAgICAgICAgICBy ZXR1cm47Ci0gICAgICAgIH0KLSAgICAgIH0gZWxzZSB7Ci0gICAgICAgIGFsZXJ0aWZ5LmFsZXJ0 KAotICAgICAgICAgIGdldHRleHQoJ0JhY2t1cCBFcnJvcicpLAotICAgICAgICAgIFMoZ2V0dGV4 dCgnRmFpbGVkIHRvIGxvYWQgcHJlZmVyZW5jZSAlcyBvZiBtb2R1bGUgJXMnKSkuc3ByaW50Zihw cmVmZXJlbmNlX25hbWUsIG1vZHVsZSkudmFsdWUoKQotICAgICAgICApOwotICAgICAgICByZXR1 cm47Ci0gICAgICB9Ci0KLSAgICAgIHZhciBvZl90eXBlID0gdW5kZWZpbmVkOwotCi0gICAgICAv LyBTZXQgTm90ZXMgYWNjb3JkaW5nIHRvIHR5cGUgb2YgYmFja3VwCi0gICAgICBpZiAoIV8uaXNV bmRlZmluZWQocGFyYW1zWydnbG9iYWxzJ10pICYmIHBhcmFtc1snZ2xvYmFscyddKSB7Ci0gICAg ICAgIG9mX3R5cGUgPSAnZ2xvYmFscyc7Ci0gICAgICB9IGVsc2UgewotICAgICAgICBvZl90eXBl ID0gJ3NlcnZlcic7Ci0gICAgICB9Ci0KLSAgICAgIHZhciBEaWFsb2dOYW1lID0gJ0JhY2t1cERp YWxvZ18nICsgb2ZfdHlwZSwKLSAgICAgICAgRGlhbG9nVGl0bGUgPSAoKG9mX3R5cGUgPT0gJ2ds b2JhbHMnKSA/Ci0gICAgICAgICAgZ2V0dGV4dCgnQmFja3VwIEdsb2JhbHMuLi4nKSA6Ci0gICAg ICAgICAgZ2V0dGV4dCgnQmFja3VwIFNlcnZlci4uLicpKTsKLQotICAgICAgaWYgKCFhbGVydGlm eVtEaWFsb2dOYW1lXSkgewotICAgICAgICBhbGVydGlmeS5kaWFsb2coRGlhbG9nTmFtZSwgZnVu Y3Rpb24gZmFjdG9yeSgpIHsKLSAgICAgICAgICByZXR1cm4gewotICAgICAgICAgICAgbWFpbjog ZnVuY3Rpb24odGl0bGUpIHsKLSAgICAgICAgICAgICAgdGhpcy5zZXQoJ3RpdGxlJywgdGl0bGUp OwotICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIGJ1aWxkOiBmdW5jdGlvbigpIHsKLSAgICAg ICAgICAgICAgYWxlcnRpZnkucGdEaWFsb2dCdWlsZC5hcHBseSh0aGlzKTsKLSAgICAgICAgICAg IH0sCi0gICAgICAgICAgICBzZXR1cDogZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgIHJldHVy biB7Ci0gICAgICAgICAgICAgICAgYnV0dG9uczogW3sKLSAgICAgICAgICAgICAgICAgIHRleHQ6 ICcnLAotICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lOiAnYnRuIGJ0bi1kZWZhdWx0IHB1bGwt bGVmdCBmYSBmYS1sZyBmYS1pbmZvJywKLSAgICAgICAgICAgICAgICAgIGF0dHJzOiB7Ci0gICAg ICAgICAgICAgICAgICAgIG5hbWU6ICdvYmplY3RfaGVscCcsCi0gICAgICAgICAgICAgICAgICAg IHR5cGU6ICdidXR0b24nLAotICAgICAgICAgICAgICAgICAgICB1cmw6ICdiYWNrdXAuaHRtbCcs Ci0gICAgICAgICAgICAgICAgICAgIGxhYmVsOiBnZXR0ZXh0KCdCYWNrdXAnKSwKLSAgICAgICAg ICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgfSwgewotICAgICAgICAgICAgICAgICAgdGV4 dDogJycsCi0gICAgICAgICAgICAgICAgICBrZXk6IDExMiwKLSAgICAgICAgICAgICAgICAgIGNs YXNzTmFtZTogJ2J0biBidG4tZGVmYXVsdCBwdWxsLWxlZnQgZmEgZmEtbGcgZmEtcXVlc3Rpb24n LAotICAgICAgICAgICAgICAgICAgYXR0cnM6IHsKLSAgICAgICAgICAgICAgICAgICAgbmFtZTog J2RpYWxvZ19oZWxwJywKLSAgICAgICAgICAgICAgICAgICAgdHlwZTogJ2J1dHRvbicsCi0gICAg ICAgICAgICAgICAgICAgIGxhYmVsOiBnZXR0ZXh0KCdCYWNrdXAnKSwKLSAgICAgICAgICAgICAg ICAgICAgdXJsOiB1cmxfZm9yKCdoZWxwLnN0YXRpYycsIHsKLSAgICAgICAgICAgICAgICAgICAg ICAnZmlsZW5hbWUnOiAnYmFja3VwX2RpYWxvZy5odG1sJywKLSAgICAgICAgICAgICAgICAgICAg fSksCi0gICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgIH0sIHsKLSAgICAgICAg ICAgICAgICAgIHRleHQ6IGdldHRleHQoJ0JhY2t1cCcpLAotICAgICAgICAgICAgICAgICAga2V5 OiAxMywKLSAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogJ2J0biBidG4tcHJpbWFyeSBmYSBm YS1sZyBmYS1zYXZlIHBnLWFsZXJ0aWZ5LWJ1dHRvbicsCi0gICAgICAgICAgICAgICAgICAnZGF0 YS1idG4tbmFtZSc6ICdiYWNrdXAnLAotICAgICAgICAgICAgICAgIH0sIHsKLSAgICAgICAgICAg ICAgICAgIHRleHQ6IGdldHRleHQoJ0NhbmNlbCcpLAotICAgICAgICAgICAgICAgICAga2V5OiAy NywKLSAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogJ2J0biBidG4tZGFuZ2VyIGZhIGZhLWxn IGZhLXRpbWVzIHBnLWFsZXJ0aWZ5LWJ1dHRvbicsCi0gICAgICAgICAgICAgICAgICAnZGF0YS1i dG4tbmFtZSc6ICdjYW5jZWwnLAotICAgICAgICAgICAgICAgIH1dLAotICAgICAgICAgICAgICAg IC8vIFNldCBvcHRpb25zIGZvciBkaWFsb2cKLSAgICAgICAgICAgICAgICBvcHRpb25zOiB7Ci0g ICAgICAgICAgICAgICAgICB0aXRsZTogRGlhbG9nVGl0bGUsCi0gICAgICAgICAgICAgICAgICAv L2Rpc2FibGUgYm90aCBwYWRkaW5nIGFuZCBvdmVyZmxvdyBjb250cm9sLgotICAgICAgICAgICAg ICAgICAgcGFkZGluZzogITEsCi0gICAgICAgICAgICAgICAgICBvdmVyZmxvdzogITEsCi0gICAg ICAgICAgICAgICAgICBtb2RlbDogMCwKLSAgICAgICAgICAgICAgICAgIHJlc2l6YWJsZTogdHJ1 ZSwKLSAgICAgICAgICAgICAgICAgIG1heGltaXphYmxlOiB0cnVlLAotICAgICAgICAgICAgICAg ICAgcGlubmFibGU6IGZhbHNlLAotICAgICAgICAgICAgICAgICAgY2xvc2FibGVCeURpbW1lcjog ZmFsc2UsCi0gICAgICAgICAgICAgICAgICBtb2RhbDogZmFsc2UsCi0gICAgICAgICAgICAgICAg fSwKLSAgICAgICAgICAgICAgfTsKLSAgICAgICAgICAgIH0sCi0gICAgICAgICAgICBob29rczog ewotICAgICAgICAgICAgICAvLyBUcmlnZ2VyZWQgd2hlbiB0aGUgZGlhbG9nIGlzIGNsb3NlZAot ICAgICAgICAgICAgICBvbmNsb3NlOiBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICBpZiAo dGhpcy52aWV3KSB7Ci0gICAgICAgICAgICAgICAgICAvLyBjbGVhciBvdXIgYmFja2Zvcm0gbW9k ZWwvdmlldwotICAgICAgICAgICAgICAgICAgdGhpcy52aWV3LnJlbW92ZSh7Ci0gICAgICAgICAg ICAgICAgICAgIGRhdGE6IHRydWUsCi0gICAgICAgICAgICAgICAgICAgIGludGVybmFsOiB0cnVl LAotICAgICAgICAgICAgICAgICAgICBzaWxlbnQ6IHRydWUsCi0gICAgICAgICAgICAgICAgICB9 KTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICB9LAot ICAgICAgICAgICAgcHJlcGFyZTogZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgIHZhciBzZWxm ID0gdGhpczsKLSAgICAgICAgICAgICAgLy8gRGlzYWJsZSBCYWNrdXAgYnV0dG9uIHVudGlsIHVz ZXIgcHJvdmlkZXMgRmlsZW5hbWUKLSAgICAgICAgICAgICAgdGhpcy5fX2ludGVybmFsLmJ1dHRv bnNbMl0uZWxlbWVudC5kaXNhYmxlZCA9IHRydWU7Ci0KLSAgICAgICAgICAgICAgdmFyICRjb250 YWluZXIgPSAkKCc8ZGl2IGNsYXNzPVwnYmFja3VwX2RpYWxvZ1wnPjwvZGl2PicpOwotICAgICAg ICAgICAgICAvLyBGaW5kIGN1cnJlbnQvc2VsZWN0ZWQgbm9kZQotICAgICAgICAgICAgICB2YXIg dCA9IHBnQnJvd3Nlci50cmVlLAotICAgICAgICAgICAgICAgIGkgPSB0LnNlbGVjdGVkKCksCi0g ICAgICAgICAgICAgICAgZCA9IGkgJiYgaS5sZW5ndGggPT0gMSA/IHQuaXRlbURhdGEoaSkgOiB1 bmRlZmluZWQsCi0gICAgICAgICAgICAgICAgbm9kZSA9IGQgJiYgcGdCcm93c2VyLk5vZGVzW2Qu X3R5cGVdOwotCi0gICAgICAgICAgICAgIGlmICghZCkKLSAgICAgICAgICAgICAgICByZXR1cm47 Ci0gICAgICAgICAgICAgIC8vIENyZWF0ZSB0cmVlSW5mbwotICAgICAgICAgICAgICB2YXIgdHJl ZUluZm8gPSBub2RlLmdldFRyZWVOb2RlSGllcmFyY2h5LmFwcGx5KG5vZGUsIFtpXSk7Ci0gICAg ICAgICAgICAgIC8vIEluc3RhbmNlIG9mIGJhY2tib25lIG1vZGVsCi0gICAgICAgICAgICAgIHZh ciBuZXdNb2RlbCA9IG5ldyBCYWNrdXBNb2RlbCh7Ci0gICAgICAgICAgICAgICAgICB0eXBlOiBv Zl90eXBlLAotICAgICAgICAgICAgICAgIH0sIHsKLSAgICAgICAgICAgICAgICAgIG5vZGVfaW5m bzogdHJlZUluZm8sCi0gICAgICAgICAgICAgICAgfSksCi0gICAgICAgICAgICAgICAgZmllbGRz ID0gQmFja2Zvcm0uZ2VuZXJhdGVWaWV3U2NoZW1hKAotICAgICAgICAgICAgICAgICAgdHJlZUlu Zm8sIG5ld01vZGVsLCAnY3JlYXRlJywgbm9kZSwgdHJlZUluZm8uc2VydmVyLCB0cnVlCi0gICAg ICAgICAgICAgICAgKTsKLQotICAgICAgICAgICAgICB2YXIgdmlldyA9IHRoaXMudmlldyA9IG5l dyBCYWNrZm9ybS5EaWFsb2coewotICAgICAgICAgICAgICAgIGVsOiAkY29udGFpbmVyLAotICAg ICAgICAgICAgICAgIG1vZGVsOiBuZXdNb2RlbCwKLSAgICAgICAgICAgICAgICBzY2hlbWE6IGZp ZWxkcywKLSAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICAgIC8vIEFkZCBvdXIgY2xhc3Mg dG8gYWxlcnRpZnkKLSAgICAgICAgICAgICAgJCh0aGlzLmVsZW1lbnRzLmJvZHkuY2hpbGROb2Rl c1swXSkuYWRkQ2xhc3MoCi0gICAgICAgICAgICAgICAgJ2FsZXJ0aWZ5X3Rvb2xzX2RpYWxvZ19w cm9wZXJ0aWVzIG9ial9wcm9wZXJ0aWVzJwotICAgICAgICAgICAgICApOwotICAgICAgICAgICAg ICAvLyBSZW5kZXIgZGlhbG9nCi0gICAgICAgICAgICAgIHZpZXcucmVuZGVyKCk7Ci0KLSAgICAg ICAgICAgICAgdGhpcy5lbGVtZW50cy5jb250ZW50LmFwcGVuZENoaWxkKCRjb250YWluZXIuZ2V0 KDApKTsKLQotICAgICAgICAgICAgICB2YXIgY29udGFpbmVyID0gdmlldy4kZWwuZmluZCgnLnRh Yi1jb250ZW50OmZpcnN0ID4gLnRhYi1wYW5lLmFjdGl2ZTpmaXJzdCcpOwotICAgICAgICAgICAg ICBjb21tb25VdGlscy5maW5kQW5kU2V0Rm9jdXMoY29udGFpbmVyKTsKLQotICAgICAgICAgICAg ICAvLyBMaXN0ZW4gdG8gbW9kZWwgJiBpZiBmaWxlbmFtZSBpcyBwcm92aWRlZCB0aGVuIGVuYWJs ZSBCYWNrdXAgYnV0dG9uCi0gICAgICAgICAgICAgIHRoaXMudmlldy5tb2RlbC5vbignY2hhbmdl JywgZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAgaWYgKCFfLmlzVW5kZWZpbmVkKHRoaXMu Z2V0KCdmaWxlJykpICYmIHRoaXMuZ2V0KCdmaWxlJykgIT09ICcnKSB7Ci0gICAgICAgICAgICAg ICAgICB0aGlzLmVycm9yTW9kZWwuY2xlYXIoKTsKLSAgICAgICAgICAgICAgICAgIHNlbGYuX19p bnRlcm5hbC5idXR0b25zWzJdLmVsZW1lbnQuZGlzYWJsZWQgPSBmYWxzZTsKLSAgICAgICAgICAg ICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgc2VsZi5fX2ludGVybmFsLmJ1dHRvbnNb Ml0uZWxlbWVudC5kaXNhYmxlZCA9IHRydWU7Ci0gICAgICAgICAgICAgICAgICB0aGlzLmVycm9y TW9kZWwuc2V0KCdmaWxlJywgZ2V0dGV4dCgnUGxlYXNlIHByb3ZpZGUgYSBmaWxlbmFtZScpKTsK LSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgfSwKLSAg ICAgICAgICAgIC8vIENhbGxiYWNrIGZ1bmN0aW9ucyB3aGVuIGNsaWNrIG9uIHRoZSBidXR0b25z IG9mIHRoZSBBbGVydGlmeSBkaWFsb2dzCi0gICAgICAgICAgICBjYWxsYmFjazogZnVuY3Rpb24o ZSkgewotICAgICAgICAgICAgICAvLyBGZXRjaCBjdXJyZW50IHNlcnZlciBpZAotICAgICAgICAg ICAgICB2YXIgdCA9IHBnQnJvd3Nlci50cmVlLAotICAgICAgICAgICAgICAgIGkgPSB0LnNlbGVj dGVkKCksCi0gICAgICAgICAgICAgICAgZCA9IGkgJiYgaS5sZW5ndGggPT0gMSA/IHQuaXRlbURh dGEoaSkgOiB1bmRlZmluZWQsCi0gICAgICAgICAgICAgICAgbm9kZSA9IGQgJiYgcGdCcm93c2Vy Lk5vZGVzW2QuX3R5cGVdOwotCi0gICAgICAgICAgICAgIGlmIChlLmJ1dHRvbi5lbGVtZW50Lm5h bWUgPT0gJ2RpYWxvZ19oZWxwJyB8fCBlLmJ1dHRvbi5lbGVtZW50Lm5hbWUgPT0gJ29iamVjdF9o ZWxwJykgewotICAgICAgICAgICAgICAgIGUuY2FuY2VsID0gdHJ1ZTsKLSAgICAgICAgICAgICAg ICBwZ0Jyb3dzZXIuc2hvd0hlbHAoZS5idXR0b24uZWxlbWVudC5uYW1lLCBlLmJ1dHRvbi5lbGVt ZW50LmdldEF0dHJpYnV0ZSgndXJsJyksCi0gICAgICAgICAgICAgICAgICBub2RlLCBpLCBlLmJ1 dHRvbi5lbGVtZW50LmdldEF0dHJpYnV0ZSgnbGFiZWwnKSk7Ci0gICAgICAgICAgICAgICAgcmV0 dXJuOwotICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgaWYgKGUuYnV0dG9uWydkYXRh LWJ0bi1uYW1lJ10gPT09ICdiYWNrdXAnKSB7Ci0KLSAgICAgICAgICAgICAgICBpZiAoIWQpCi0g ICAgICAgICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgICAgICAgICB2YXIgdHJlZUluZm8g PSBub2RlLmdldFRyZWVOb2RlSGllcmFyY2h5LmFwcGx5KG5vZGUsIFtpXSk7Ci0KLSAgICAgICAg ICAgICAgICB2YXIgc2VsZiA9IHRoaXMsCi0gICAgICAgICAgICAgICAgICBiYXNlVXJsID0gdXJs X2ZvcignYmFja3VwLmNyZWF0ZV9zZXJ2ZXJfam9iJywgewotICAgICAgICAgICAgICAgICAgICAn c2lkJzogdHJlZUluZm8uc2VydmVyLl9pZCwKLSAgICAgICAgICAgICAgICAgIH0pLAotICAgICAg ICAgICAgICAgICAgYXJncyA9IHRoaXMudmlldy5tb2RlbC50b0pTT04oKTsKLQotICAgICAgICAg ICAgICAgICQuYWpheCh7Ci0gICAgICAgICAgICAgICAgICB1cmw6IGJhc2VVcmwsCi0gICAgICAg ICAgICAgICAgICBtZXRob2Q6ICdQT1NUJywKLSAgICAgICAgICAgICAgICAgIGRhdGE6IHsKLSAg ICAgICAgICAgICAgICAgICAgJ2RhdGEnOiBKU09OLnN0cmluZ2lmeShhcmdzKSwKLSAgICAgICAg ICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICBzdWNjZXNzOiBmdW5jdGlvbihyZXMpIHsK LSAgICAgICAgICAgICAgICAgICAgaWYgKHJlcy5zdWNjZXNzKSB7Ci0gICAgICAgICAgICAgICAg ICAgICAgYWxlcnRpZnkuc3VjY2VzcyhnZXR0ZXh0KCdCYWNrdXAgam9iIGNyZWF0ZWQuJyksIDUp OwotICAgICAgICAgICAgICAgICAgICAgIHBnQnJvd3Nlci5FdmVudHMudHJpZ2dlcigncGdhZG1p bi1iZ3Byb2Nlc3M6Y3JlYXRlZCcsIHNlbGYpOwotICAgICAgICAgICAgICAgICAgICB9IGVsc2Ug ewotICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUud2FybihyZXMpOwotICAgICAgICAgICAg ICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgZXJyb3I6 IGZ1bmN0aW9uKHhocikgewotICAgICAgICAgICAgICAgICAgICB0cnkgewotICAgICAgICAgICAg ICAgICAgICAgIHZhciBlcnIgPSAkLnBhcnNlSlNPTih4aHIucmVzcG9uc2VUZXh0KTsKLSAgICAg ICAgICAgICAgICAgICAgICBhbGVydGlmeS5hbGVydCgKLSAgICAgICAgICAgICAgICAgICAgICAg IGdldHRleHQoJ0JhY2t1cCBqb2IgZmFpbGVkLicpLAotICAgICAgICAgICAgICAgICAgICAgICAg ZXJyLmVycm9ybXNnCi0gICAgICAgICAgICAgICAgICAgICAgKTsKLSAgICAgICAgICAgICAgICAg ICAgfSBjYXRjaCAoZSkgewotICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUud2FybihlLnN0 YWNrIHx8IGUpOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICB9LAot ICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9LAotICAg ICAgICAgIH07Ci0gICAgICAgIH0pOwotICAgICAgfQotICAgICAgYWxlcnRpZnlbRGlhbG9nTmFt ZV0odHJ1ZSkucmVzaXplVG8oJzYwJScsICc1MCUnKTsKKyAgICBzdGFydF9iYWNrdXBfZ2xvYmFs X3NlcnZlcjogZnVuY3Rpb24oYWN0aW9uLCB0cmVlSXRlbSwgcGFyYW1zKSB7CisgICAgICBsZXQg ZGlhbG9nID0gbmV3IGdsb2JhbEJhY2t1cERpYWxvZy5CYWNrdXBEaWFsb2coCisgICAgICAgIHBn QnJvd3NlciwKKyAgICAgICAgJCwKKyAgICAgICAgYWxlcnRpZnksCisgICAgICAgIEJhY2t1cE1v ZGVsCisgICAgICApOworICAgICAgZGlhbG9nLmRyYXcoYWN0aW9uLCB0cmVlSXRlbSwgcGFyYW1z KTsKICAgICB9LAogCiAgICAgLy8gQ2FsbGJhY2sgdG8gZHJhdyBCYWNrdXAgRGlhbG9nIGZvciBv YmplY3RzCiAgICAgYmFja3VwX29iamVjdHM6IGZ1bmN0aW9uKGFjdGlvbiwgdHJlZUl0ZW0pIHsK LQotICAgICAgdmFyIGkgPSB0cmVlSXRlbSB8fCBwZ0Jyb3dzZXIudHJlZS5zZWxlY3RlZCgpLAot ICAgICAgICBzZXJ2ZXJfZGF0YSA9IG51bGw7Ci0KLSAgICAgIHdoaWxlIChpKSB7Ci0gICAgICAg IHZhciBub2RlX2RhdGEgPSBwZ0Jyb3dzZXIudHJlZS5pdGVtRGF0YShpKTsKLSAgICAgICAgaWYg KG5vZGVfZGF0YS5fdHlwZSA9PSAnc2VydmVyJykgewotICAgICAgICAgIHNlcnZlcl9kYXRhID0g bm9kZV9kYXRhOwotICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKHBn QnJvd3Nlci50cmVlLmhhc1BhcmVudChpKSkgewotICAgICAgICAgIGkgPSAkKHBnQnJvd3Nlci50 cmVlLnBhcmVudChpKSk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgYWxlcnRpZnkuYWxl cnQoCi0gICAgICAgICAgICBnZXR0ZXh0KCdCYWNrdXAgRXJyb3InKSwKLSAgICAgICAgICAgIGdl dHRleHQoJ1BsZWFzZSBzZWxlY3Qgc2VydmVyIG9yIGNoaWxkIG5vZGUgZnJvbSB0cmVlLicpCi0g ICAgICAgICAgKTsKLSAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgfQotCi0gICAg ICBpZiAoIXNlcnZlcl9kYXRhKSB7Ci0gICAgICAgIHJldHVybjsKLSAgICAgIH0KLQotICAgICAg dmFyIG1vZHVsZSA9ICdwYXRocycsCi0gICAgICAgIHByZWZlcmVuY2VfbmFtZSA9ICdwZ19iaW5f ZGlyJywKLSAgICAgICAgbXNnID0gZ2V0dGV4dCgnUGxlYXNlIHNldCBiaW5hcnkgcGF0aCBmb3Ig UG9zdGdyZVNRTCBTZXJ2ZXIgZnJvbSBwcmVmZXJlbmNlcy4nKTsKLQotICAgICAgaWYgKChzZXJ2 ZXJfZGF0YS50eXBlICYmIHNlcnZlcl9kYXRhLnR5cGUgPT0gJ3BwYXMnKSB8fAotICAgICAgICBz ZXJ2ZXJfZGF0YS5zZXJ2ZXJfdHlwZSA9PSAncHBhcycpIHsKLSAgICAgICAgcHJlZmVyZW5jZV9u YW1lID0gJ3BwYXNfYmluX2Rpcic7Ci0gICAgICAgIG1zZyA9IGdldHRleHQoJ1BsZWFzZSBzZXQg YmluYXJ5IHBhdGggZm9yIEVEQiBQb3N0Z3JlcyBBZHZhbmNlZCBTZXJ2ZXIgZnJvbSBwcmVmZXJl bmNlcy4nKTsKLSAgICAgIH0KLQotICAgICAgdmFyIHByZWZlcmVuY2UgPSBwZ0Jyb3dzZXIuZ2V0 X3ByZWZlcmVuY2UobW9kdWxlLCBwcmVmZXJlbmNlX25hbWUpOwotCi0gICAgICBpZiAocHJlZmVy ZW5jZSkgewotICAgICAgICBpZiAoIXByZWZlcmVuY2UudmFsdWUpIHsKLSAgICAgICAgICBhbGVy dGlmeS5hbGVydChnZXR0ZXh0KCdDb25maWd1cmF0aW9uIHJlcXVpcmVkJyksIG1zZyk7Ci0gICAg ICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICB9IGVsc2UgewotICAgICAgICBhbGVydGlm eS5hbGVydCgKLSAgICAgICAgICBnZXR0ZXh0KCdCYWNrdXAgRXJyb3InKSwKLSAgICAgICAgICBT KGdldHRleHQoJ0ZhaWxlZCB0byBsb2FkIHByZWZlcmVuY2UgJXMgb2YgbW9kdWxlICVzJykpLnNw cmludGYocHJlZmVyZW5jZV9uYW1lLCBtb2R1bGUpLnZhbHVlKCkKLSAgICAgICAgKTsKLSAgICAg ICAgcmV0dXJuOwotICAgICAgfQotCi0gICAgICB2YXIgdGl0bGUgPSBTKGdldHRleHQoJ0JhY2t1 cCAoJXM6ICVzKScpKSwKLSAgICAgICAgdHJlZSA9IHBnQnJvd3Nlci50cmVlLAotICAgICAgICBp dGVtID0gdHJlZUl0ZW0gfHwgdHJlZS5zZWxlY3RlZCgpLAotICAgICAgICBkYXRhID0gaXRlbSAm JiBpdGVtLmxlbmd0aCA9PSAxICYmIHRyZWUuaXRlbURhdGEoaXRlbSksCi0gICAgICAgIG5vZGUg PSBkYXRhICYmIGRhdGEuX3R5cGUgJiYgcGdCcm93c2VyLk5vZGVzW2RhdGEuX3R5cGVdOwotCi0g ICAgICBpZiAoIW5vZGUpCi0gICAgICAgIHJldHVybjsKLQotICAgICAgdGl0bGUgPSB0aXRsZS5z cHJpbnRmKG5vZGUubGFiZWwsIGRhdGEubGFiZWwpLnZhbHVlKCk7Ci0KLSAgICAgIGlmICghYWxl cnRpZnkuYmFja3VwX29iamVjdHMpIHsKLSAgICAgICAgLy8gQ3JlYXRlIERpYWxvZyB0aXRsZSBv biB0aGUgZmx5IHdpdGggbm9kZSBkZXRhaWxzCi0gICAgICAgIGFsZXJ0aWZ5LmRpYWxvZygnYmFj a3VwX29iamVjdHMnLCBmdW5jdGlvbiBmYWN0b3J5KCkgewotICAgICAgICAgIHJldHVybiB7Ci0g ICAgICAgICAgICBtYWluOiBmdW5jdGlvbih0aXRsZSkgewotICAgICAgICAgICAgICB0aGlzLnNl dCgndGl0bGUnLCB0aXRsZSk7Ci0gICAgICAgICAgICB9LAotICAgICAgICAgICAgYnVpbGQ6IGZ1 bmN0aW9uKCkgewotICAgICAgICAgICAgICBhbGVydGlmeS5wZ0RpYWxvZ0J1aWxkLmFwcGx5KHRo aXMpOwotICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIHNldHVwOiBmdW5jdGlvbigpIHsKLSAg ICAgICAgICAgICAgcmV0dXJuIHsKLSAgICAgICAgICAgICAgICBidXR0b25zOiBbewotICAgICAg ICAgICAgICAgICAgdGV4dDogJycsCi0gICAgICAgICAgICAgICAgICBjbGFzc05hbWU6ICdidG4g YnRuLWRlZmF1bHQgcHVsbC1sZWZ0IGZhIGZhLWxnIGZhLWluZm8nLAotICAgICAgICAgICAgICAg ICAgYXR0cnM6IHsKLSAgICAgICAgICAgICAgICAgICAgbmFtZTogJ29iamVjdF9oZWxwJywKLSAg ICAgICAgICAgICAgICAgICAgdHlwZTogJ2J1dHRvbicsCi0gICAgICAgICAgICAgICAgICAgIHVy bDogJ2JhY2t1cC5odG1sJywKLSAgICAgICAgICAgICAgICAgICAgbGFiZWw6IGdldHRleHQoJ0Jh Y2t1cCcpLAotICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICB9LCB7Ci0gICAg ICAgICAgICAgICAgICB0ZXh0OiAnJywKLSAgICAgICAgICAgICAgICAgIGtleTogMTEyLAotICAg ICAgICAgICAgICAgICAgY2xhc3NOYW1lOiAnYnRuIGJ0bi1kZWZhdWx0IHB1bGwtbGVmdCBmYSBm YS1sZyBmYS1xdWVzdGlvbicsCi0gICAgICAgICAgICAgICAgICBhdHRyczogewotICAgICAgICAg ICAgICAgICAgICBuYW1lOiAnZGlhbG9nX2hlbHAnLAotICAgICAgICAgICAgICAgICAgICB0eXBl OiAnYnV0dG9uJywKLSAgICAgICAgICAgICAgICAgICAgbGFiZWw6IGdldHRleHQoJ0JhY2t1cCcp LAotICAgICAgICAgICAgICAgICAgICB1cmw6IHVybF9mb3IoJ2hlbHAuc3RhdGljJywgewotICAg ICAgICAgICAgICAgICAgICAgICdmaWxlbmFtZSc6ICdiYWNrdXBfZGlhbG9nLmh0bWwnLAotICAg ICAgICAgICAgICAgICAgICB9KSwKLSAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAg ICAgfSwgewotICAgICAgICAgICAgICAgICAgdGV4dDogZ2V0dGV4dCgnQmFja3VwJyksCi0gICAg ICAgICAgICAgICAgICBrZXk6IDEzLAotICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lOiAnYnRu IGJ0bi1wcmltYXJ5IGZhIGZhLWxnIGZhLXNhdmUgcGctYWxlcnRpZnktYnV0dG9uJywKLSAgICAg ICAgICAgICAgICAgICdkYXRhLWJ0bi1uYW1lJzogJ2JhY2t1cCcsCi0gICAgICAgICAgICAgICAg fSwgewotICAgICAgICAgICAgICAgICAgdGV4dDogZ2V0dGV4dCgnQ2FuY2VsJyksCi0gICAgICAg ICAgICAgICAgICBrZXk6IDI3LAotICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lOiAnYnRuIGJ0 bi1kYW5nZXIgZmEgZmEtbGcgZmEtdGltZXMgcGctYWxlcnRpZnktYnV0dG9uJywKLSAgICAgICAg ICAgICAgICAgICdkYXRhLWJ0bi1uYW1lJzogJ2NhbmNlbCcsCi0gICAgICAgICAgICAgICAgfV0s Ci0gICAgICAgICAgICAgICAgLy8gU2V0IG9wdGlvbnMgZm9yIGRpYWxvZwotICAgICAgICAgICAg ICAgIG9wdGlvbnM6IHsKLSAgICAgICAgICAgICAgICAgIHRpdGxlOiB0aXRsZSwKLSAgICAgICAg ICAgICAgICAgIC8vZGlzYWJsZSBib3RoIHBhZGRpbmcgYW5kIG92ZXJmbG93IGNvbnRyb2wuCi0g ICAgICAgICAgICAgICAgICBwYWRkaW5nOiAhMSwKLSAgICAgICAgICAgICAgICAgIG92ZXJmbG93 OiAhMSwKLSAgICAgICAgICAgICAgICAgIG1vZGVsOiAwLAotICAgICAgICAgICAgICAgICAgcmVz aXphYmxlOiB0cnVlLAotICAgICAgICAgICAgICAgICAgbWF4aW1pemFibGU6IHRydWUsCi0gICAg ICAgICAgICAgICAgICBwaW5uYWJsZTogZmFsc2UsCi0gICAgICAgICAgICAgICAgICBjbG9zYWJs ZUJ5RGltbWVyOiBmYWxzZSwKLSAgICAgICAgICAgICAgICAgIG1vZGFsOiBmYWxzZSwKLSAgICAg ICAgICAgICAgICB9LAotICAgICAgICAgICAgICB9OwotICAgICAgICAgICAgfSwKLSAgICAgICAg ICAgIGhvb2tzOiB7Ci0gICAgICAgICAgICAgIC8vIHRyaWdnZXJlZCB3aGVuIHRoZSBkaWFsb2cg aXMgY2xvc2VkCi0gICAgICAgICAgICAgIG9uY2xvc2U6IGZ1bmN0aW9uKCkgewotICAgICAgICAg ICAgICAgIGlmICh0aGlzLnZpZXcpIHsKLSAgICAgICAgICAgICAgICAgIHRoaXMudmlldy5yZW1v dmUoewotICAgICAgICAgICAgICAgICAgICBkYXRhOiB0cnVlLAotICAgICAgICAgICAgICAgICAg ICBpbnRlcm5hbDogdHJ1ZSwKLSAgICAgICAgICAgICAgICAgICAgc2lsZW50OiB0cnVlLAotICAg ICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICB9LAot ICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIHByZXBhcmU6IGZ1bmN0aW9uKCkgewotICAgICAg ICAgICAgICB2YXIgc2VsZiA9IHRoaXM7Ci0gICAgICAgICAgICAgIC8vIERpc2FibGUgQmFja3Vw IGJ1dHRvbiB1bnRpbCB1c2VyIHByb3ZpZGVzIEZpbGVuYW1lCi0gICAgICAgICAgICAgIHRoaXMu X19pbnRlcm5hbC5idXR0b25zWzJdLmVsZW1lbnQuZGlzYWJsZWQgPSB0cnVlOwotICAgICAgICAg ICAgICB2YXIgJGNvbnRhaW5lciA9ICQoJzxkaXYgY2xhc3M9XCdiYWNrdXBfZGlhbG9nXCc+PC9k aXY+Jyk7Ci0gICAgICAgICAgICAgIHZhciB0ID0gcGdCcm93c2VyLnRyZWUsCi0gICAgICAgICAg ICAgICAgaSA9IHQuc2VsZWN0ZWQoKSwKLSAgICAgICAgICAgICAgICBkID0gaSAmJiBpLmxlbmd0 aCA9PSAxID8gdC5pdGVtRGF0YShpKSA6IHVuZGVmaW5lZCwKLSAgICAgICAgICAgICAgICBub2Rl ID0gZCAmJiBwZ0Jyb3dzZXIuTm9kZXNbZC5fdHlwZV07Ci0KLSAgICAgICAgICAgICAgaWYgKCFk KQotICAgICAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICAgICAgICB2YXIgdHJlZUluZm8g PSBub2RlLmdldFRyZWVOb2RlSGllcmFyY2h5LmFwcGx5KG5vZGUsIFtpXSk7Ci0KLSAgICAgICAg ICAgICAgdmFyIG5ld01vZGVsID0gbmV3IEJhY2t1cE9iamVjdE1vZGVsKHt9LCB7Ci0gICAgICAg ICAgICAgICAgICBub2RlX2luZm86IHRyZWVJbmZvLAotICAgICAgICAgICAgICAgIH0pLAotICAg ICAgICAgICAgICAgIGZpZWxkcyA9IEJhY2tmb3JtLmdlbmVyYXRlVmlld1NjaGVtYSgKLSAgICAg ICAgICAgICAgICAgIHRyZWVJbmZvLCBuZXdNb2RlbCwgJ2NyZWF0ZScsIG5vZGUsIHRyZWVJbmZv LnNlcnZlciwgdHJ1ZQotICAgICAgICAgICAgICAgICk7Ci0KLSAgICAgICAgICAgICAgdmFyIHZp ZXcgPSB0aGlzLnZpZXcgPSBuZXcgQmFja2Zvcm0uRGlhbG9nKHsKLSAgICAgICAgICAgICAgICBl bDogJGNvbnRhaW5lciwKLSAgICAgICAgICAgICAgICBtb2RlbDogbmV3TW9kZWwsCi0gICAgICAg ICAgICAgICAgc2NoZW1hOiBmaWVsZHMsCi0gICAgICAgICAgICAgIH0pOwotCi0gICAgICAgICAg ICAgICQodGhpcy5lbGVtZW50cy5ib2R5LmNoaWxkTm9kZXNbMF0pLmFkZENsYXNzKAotICAgICAg ICAgICAgICAgICdhbGVydGlmeV90b29sc19kaWFsb2dfcHJvcGVydGllcyBvYmpfcHJvcGVydGll cycKLSAgICAgICAgICAgICAgKTsKLQotICAgICAgICAgICAgICB2aWV3LnJlbmRlcigpOwotCi0g ICAgICAgICAgICAgIHRoaXMuZWxlbWVudHMuY29udGVudC5hcHBlbmRDaGlsZCgkY29udGFpbmVy LmdldCgwKSk7Ci0KLSAgICAgICAgICAgICAgaWYodmlldykgewotICAgICAgICAgICAgICAgIHZp ZXcuJGVsLmF0dHIoJ3RhYmluZGV4JywgLTEpOwotICAgICAgICAgICAgICAgIC8vIHZhciBkaWFs b2dUYWJOYXZpZ2F0b3IgPSBwZ0Jyb3dzZXIua2V5Ym9hcmROYXZpZ2F0aW9uLmdldERpYWxvZ1Rh Yk5hdmlnYXRvcih2aWV3KTsKLSAgICAgICAgICAgICAgICBwZ0Jyb3dzZXIua2V5Ym9hcmROYXZp Z2F0aW9uLmdldERpYWxvZ1RhYk5hdmlnYXRvcih2aWV3KTsKLSAgICAgICAgICAgICAgICB2YXIg Y29udGFpbmVyID0gdmlldy4kZWwuZmluZCgnLnRhYi1jb250ZW50OmZpcnN0ID4gLnRhYi1wYW5l LmFjdGl2ZTpmaXJzdCcpOwotICAgICAgICAgICAgICAgIGNvbW1vblV0aWxzLmZpbmRBbmRTZXRG b2N1cyhjb250YWluZXIpOwotICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgIC8vIExpc3Rl biB0byBtb2RlbCAmIGlmIGZpbGVuYW1lIGlzIHByb3ZpZGVkIHRoZW4gZW5hYmxlIEJhY2t1cCBi dXR0b24KLSAgICAgICAgICAgICAgdGhpcy52aWV3Lm1vZGVsLm9uKCdjaGFuZ2UnLCBmdW5jdGlv bigpIHsKLSAgICAgICAgICAgICAgICBpZiAoIV8uaXNVbmRlZmluZWQodGhpcy5nZXQoJ2ZpbGUn KSkgJiYgdGhpcy5nZXQoJ2ZpbGUnKSAhPT0gJycpIHsKLSAgICAgICAgICAgICAgICAgIHRoaXMu ZXJyb3JNb2RlbC5jbGVhcigpOwotICAgICAgICAgICAgICAgICAgc2VsZi5fX2ludGVybmFsLmJ1 dHRvbnNbMl0uZWxlbWVudC5kaXNhYmxlZCA9IGZhbHNlOwotICAgICAgICAgICAgICAgIH0gZWxz ZSB7Ci0gICAgICAgICAgICAgICAgICBzZWxmLl9faW50ZXJuYWwuYnV0dG9uc1syXS5lbGVtZW50 LmRpc2FibGVkID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgIHRoaXMuZXJyb3JNb2RlbC5zZXQo J2ZpbGUnLCBnZXR0ZXh0KCdQbGVhc2UgcHJvdmlkZSBmaWxlbmFtZScpKTsKLSAgICAgICAgICAg ICAgICB9Ci0gICAgICAgICAgICAgIH0pOwotCi0gICAgICAgICAgICB9LAotICAgICAgICAgICAg Ly8gQ2FsbGJhY2sgZnVuY3Rpb25zIHdoZW4gY2xpY2sgb24gdGhlIGJ1dHRvbnMgb2YgdGhlIEFs ZXJ0aWZ5IGRpYWxvZ3MKLSAgICAgICAgICAgIGNhbGxiYWNrOiBmdW5jdGlvbihlKSB7Ci0gICAg ICAgICAgICAgIC8vIEZldGNoIGN1cnJlbnQgc2VydmVyIGlkCi0gICAgICAgICAgICAgIHZhciB0 ID0gcGdCcm93c2VyLnRyZWUsCi0gICAgICAgICAgICAgICAgaSA9IHQuc2VsZWN0ZWQoKSwKLSAg ICAgICAgICAgICAgICBkID0gaSAmJiBpLmxlbmd0aCA9PSAxID8gdC5pdGVtRGF0YShpKSA6IHVu ZGVmaW5lZCwKLSAgICAgICAgICAgICAgICBub2RlID0gZCAmJiBwZ0Jyb3dzZXIuTm9kZXNbZC5f dHlwZV07Ci0KLSAgICAgICAgICAgICAgaWYgKGUuYnV0dG9uLmVsZW1lbnQubmFtZSA9PSAnZGlh bG9nX2hlbHAnIHx8IGUuYnV0dG9uLmVsZW1lbnQubmFtZSA9PSAnb2JqZWN0X2hlbHAnKSB7Ci0g ICAgICAgICAgICAgICAgZS5jYW5jZWwgPSB0cnVlOwotICAgICAgICAgICAgICAgIHBnQnJvd3Nl ci5zaG93SGVscChlLmJ1dHRvbi5lbGVtZW50Lm5hbWUsIGUuYnV0dG9uLmVsZW1lbnQuZ2V0QXR0 cmlidXRlKCd1cmwnKSwKLSAgICAgICAgICAgICAgICAgIG5vZGUsIGksIGUuYnV0dG9uLmVsZW1l bnQuZ2V0QXR0cmlidXRlKCdsYWJlbCcpKTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAg ICAgICAgICAgIH0KLQotICAgICAgICAgICAgICBpZiAoZS5idXR0b25bJ2RhdGEtYnRuLW5hbWUn XSA9PT0gJ2JhY2t1cCcpIHsKLSAgICAgICAgICAgICAgICBpZiAoIWQpCi0gICAgICAgICAgICAg ICAgICByZXR1cm47Ci0KLSAgICAgICAgICAgICAgICB2YXIgdHJlZUluZm8gPSBub2RlLmdldFRy ZWVOb2RlSGllcmFyY2h5LmFwcGx5KG5vZGUsIFtpXSk7Ci0KLSAgICAgICAgICAgICAgICAvLyBT ZXQgY3VycmVudCBkYXRhYmFzZSBpbnRvIG1vZGVsCi0gICAgICAgICAgICAgICAgdGhpcy52aWV3 Lm1vZGVsLnNldCgnZGF0YWJhc2UnLCB0cmVlSW5mby5kYXRhYmFzZS5fbGFiZWwpOwotCi0gICAg ICAgICAgICAgICAgLy8gV2Ugd2lsbCByZW1vdmUgb25jZSBvYmplY3QgdHJlZSBpcyBpbXBsZW1l bnRlZAotICAgICAgICAgICAgICAgIC8vIElmIHNlbGVjdGVkIG5vZGUgaXMgU2NoZW1hIHRoZW4g YWRkIGl0IGluIG1vZGVsCi0gICAgICAgICAgICAgICAgaWYgKGQuX3R5cGUgPT0gJ3NjaGVtYScp IHsKLSAgICAgICAgICAgICAgICAgIHZhciBzY2hlbWFzID0gW107Ci0gICAgICAgICAgICAgICAg ICBzY2hlbWFzLnB1c2goZC5fbGFiZWwpOwotICAgICAgICAgICAgICAgICAgdGhpcy52aWV3Lm1v ZGVsLnNldCgnc2NoZW1hcycsIHNjaGVtYXMpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAg ICAgICAgICAvLyBJZiBzZWxlY3RlZCBub2RlIGlzIFRhYmxlIHRoZW4gYWRkIGl0IGluIG1vZGVs IGFsb25nIHdpdGgKLSAgICAgICAgICAgICAgICAvLyBpdHMgc2NoZW1hCi0gICAgICAgICAgICAg ICAgaWYgKGQuX3R5cGUgPT0gJ3RhYmxlJykgewotICAgICAgICAgICAgICAgICAgdGhpcy52aWV3 Lm1vZGVsLnNldCgKLSAgICAgICAgICAgICAgICAgICAgJ3RhYmxlcycsIFsKLSAgICAgICAgICAg ICAgICAgICAgICBbdHJlZUluZm8uc2NoZW1hLl9sYWJlbCwgZC5fbGFiZWxdLAotICAgICAgICAg ICAgICAgICAgICBdCi0gICAgICAgICAgICAgICAgICApOwotICAgICAgICAgICAgICAgIH0KLQot ICAgICAgICAgICAgICAgIC8vIFJlbW92ZSByYXRpbyBhdHRyaWJ1dGUgZnJvbSBtb2RlbCBpZiBp dCBoYXMgZW1wdHkgc3RyaW5nLgotICAgICAgICAgICAgICAgIC8vIFRoZSB2YWxpZCB2YWx1ZSBj YW4gYmUgYmV0d2VlbiAwIHRvIDkuCi0gICAgICAgICAgICAgICAgaWYgKF8uaXNFbXB0eSh0aGlz LnZpZXcubW9kZWwuZ2V0KCdyYXRpbycpKSkgewotICAgICAgICAgICAgICAgICAgdGhpcy52aWV3 Lm1vZGVsLnVuc2V0KCdyYXRpbycpOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAg ICAgIHZhciBzZWxmID0gdGhpcywKLSAgICAgICAgICAgICAgICAgIGJhc2VVcmwgPSB1cmxfZm9y KCdiYWNrdXAuY3JlYXRlX29iamVjdF9qb2InLCB7Ci0gICAgICAgICAgICAgICAgICAgICdzaWQn OiB0cmVlSW5mby5zZXJ2ZXIuX2lkLAotICAgICAgICAgICAgICAgICAgfSksCi0gICAgICAgICAg ICAgICAgICBhcmdzID0gdGhpcy52aWV3Lm1vZGVsLnRvSlNPTigpOwotCi0gICAgICAgICAgICAg ICAgJC5hamF4KHsKLSAgICAgICAgICAgICAgICAgIHVybDogYmFzZVVybCwKLSAgICAgICAgICAg ICAgICAgIG1ldGhvZDogJ1BPU1QnLAotICAgICAgICAgICAgICAgICAgZGF0YTogewotICAgICAg ICAgICAgICAgICAgICAnZGF0YSc6IEpTT04uc3RyaW5naWZ5KGFyZ3MpLAotICAgICAgICAgICAg ICAgICAgfSwKLSAgICAgICAgICAgICAgICAgIHN1Y2Nlc3M6IGZ1bmN0aW9uKHJlcykgewotICAg ICAgICAgICAgICAgICAgICBpZiAocmVzLnN1Y2Nlc3MpIHsKLSAgICAgICAgICAgICAgICAgICAg ICBhbGVydGlmeS5zdWNjZXNzKGdldHRleHQoJ0JhY2t1cCBqb2IgY3JlYXRlZC4nKSwgNSk7Ci0g ICAgICAgICAgICAgICAgICAgICAgcGdCcm93c2VyLkV2ZW50cy50cmlnZ2VyKCdwZ2FkbWluLWJn cHJvY2VzczpjcmVhdGVkJywgc2VsZik7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAg ICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICBlcnJvcjogZnVuY3Rpb24oeGhyKSB7Ci0g ICAgICAgICAgICAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICAgICAgICAgICAgdmFyIGVyciA9 ICQucGFyc2VKU09OKHhoci5yZXNwb25zZVRleHQpOwotICAgICAgICAgICAgICAgICAgICAgIGFs ZXJ0aWZ5LmFsZXJ0KAotICAgICAgICAgICAgICAgICAgICAgICAgZ2V0dGV4dCgnQmFja3VwIGpv YiBmYWlsZWQuJyksCi0gICAgICAgICAgICAgICAgICAgICAgICBlcnIuZXJyb3Jtc2cKLSAgICAg ICAgICAgICAgICAgICAgICApOwotICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7Ci0g ICAgICAgICAgICAgICAgICAgICAgY29uc29sZS53YXJuKGUuc3RhY2sgfHwgZSk7Ci0gICAgICAg ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgfSk7 Ci0gICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0sCi0gICAgICAgICAgfTsKLSAgICAgICAg fSk7Ci0gICAgICB9Ci0gICAgICBhbGVydGlmeS5iYWNrdXBfb2JqZWN0cyh0aXRsZSkucmVzaXpl VG8oJzY1JScsICc2MCUnKTsKKyAgICAgIGxldCBkaWFsb2cgPSBuZXcgZ2xvYmFsQmFja3VwRGlh bG9nLkJhY2t1cERpYWxvZygKKyAgICAgICAgcGdCcm93c2VyLAorICAgICAgICAkLAorICAgICAg ICBhbGVydGlmeSwKKyAgICAgICAgQmFja3VwT2JqZWN0TW9kZWwKKyAgICAgICk7CisgICAgICBk aWFsb2cuZHJhdyhhY3Rpb24sIHRyZWVJdGVtLCBudWxsKTsKICAgICB9LAogICB9OwogICByZXR1 cm4gcGdCcm93c2VyLkJhY2t1cDsKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3Rvb2xzL2JhY2t1 cC9zdGF0aWMvanMvYmFja3VwX2RpYWxvZy5qcyBiL3dlYi9wZ2FkbWluL3Rvb2xzL2JhY2t1cC9z dGF0aWMvanMvYmFja3VwX2RpYWxvZy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw MDAwMC4uZTYwM2ZjZjkKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi90b29scy9iYWNr dXAvc3RhdGljL2pzL2JhY2t1cF9kaWFsb2cuanMKQEAgLTAsMCArMSw2NSBAQAorLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworLy8K Ky8vIHBnQWRtaW4gNCAtIFBvc3RncmVTUUwgVG9vbHMKKy8vCisvLyBDb3B5cmlnaHQgKEMpIDIw MTMgLSAyMDE4LCBUaGUgcGdBZG1pbiBEZXZlbG9wbWVudCBUZWFtCisvLyBUaGlzIHNvZnR3YXJl IGlzIHJlbGVhc2VkIHVuZGVyIHRoZSBQb3N0Z3JlU1FMIExpY2VuY2UKKy8vCisvLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworCitp bXBvcnQgZ2V0dGV4dCBmcm9tICcuLi8uLi8uLi8uLi9zdGF0aWMvanMvZ2V0dGV4dCc7CitpbXBv cnQgQmFja2Zvcm0gZnJvbSAnLi4vLi4vLi4vLi4vc3RhdGljL2pzL2JhY2tmb3JtLnBnYWRtaW4n OworaW1wb3J0IHtEaWFsb2d9IGZyb20gJy4uLy4uLy4uLy4uL3N0YXRpYy9qcy9hbGVydGlmeS9k aWFsb2cnOworCitleHBvcnQgY2xhc3MgQmFja3VwRGlhbG9nIGV4dGVuZHMgRGlhbG9nIHsKKyAg Y29uc3RydWN0b3IocGdCcm93c2VyLCAkLCBhbGVydGlmeSwgQmFja3VwTW9kZWwsIGJhY2tmb3Jt ID0gQmFja2Zvcm0pIHsKKyAgICBzdXBlcignQmFja3VwIEVycm9yJywKKyAgICAgICc8ZGl2IGNs YXNzPVwnYmFja3VwX2RpYWxvZ1wnPjwvZGl2PicsCisgICAgICBwZ0Jyb3dzZXIsICQsIGFsZXJ0 aWZ5LCBCYWNrdXBNb2RlbCwgYmFja2Zvcm0pOworICB9CisKKyAgZHJhdyhhY3Rpb24sIGFjaVRy ZWVJdGVtLCBwYXJhbXMpIHsKKyAgICBjb25zdCBzZXJ2ZXJJbmZvcm1hdGlvbiA9IHRoaXMucmV0 cmlldmVBbmNlc3Rvck9mVHlwZVNlcnZlcihhY2lUcmVlSXRlbSk7CisKKyAgICBpZiAoIXNlcnZl ckluZm9ybWF0aW9uKSB7CisgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKCF0aGlzLmhh c0JpbmFyaWVzQ29uZmlndXJhdGlvbihzZXJ2ZXJJbmZvcm1hdGlvbikpIHsKKyAgICAgIHJldHVy bjsKKyAgICB9CisKKyAgICBjb25zdCB0eXBlT2ZEaWFsb2cgPSBCYWNrdXBEaWFsb2cudHlwZU9m RGlhbG9nKHBhcmFtcyk7CisKKyAgICBjb25zdCBkaWFsb2cgPSB0aGlzLmNyZWF0ZU9yR2V0RGlh bG9nKEJhY2t1cERpYWxvZy5kaWFsb2dUaXRsZSh0eXBlT2ZEaWFsb2cpLAorICAgICAgdHlwZU9m RGlhbG9nKTsKKyAgICBkaWFsb2codHJ1ZSkucmVzaXplVG8oJzYwJScsICc1MCUnKTsKKyAgfQor CisgIHN0YXRpYyB0eXBlT2ZEaWFsb2cocGFyYW1zKSB7CisgICAgaWYocGFyYW1zID09PSBudWxs KSB7CisgICAgICByZXR1cm4gJ2JhY2t1cF9vYmplY3RzJzsKKyAgICB9CisgICAgbGV0IHR5cGVP ZkRpYWxvZyA9ICdzZXJ2ZXInOworICAgIGlmICghXy5pc1VuZGVmaW5lZChwYXJhbXNbJ2dsb2Jh bHMnXSkgJiYgcGFyYW1zWydnbG9iYWxzJ10pIHsKKyAgICAgIHR5cGVPZkRpYWxvZyA9ICdnbG9i YWxzJzsKKyAgICB9CisgICAgcmV0dXJuIHR5cGVPZkRpYWxvZzsKKyAgfQorCisgIHN0YXRpYyBk aWFsb2dUaXRsZSh0eXBlT2ZEaWFsb2cpIHsKKyAgICBpZih0eXBlT2ZEaWFsb2cgPT09ICdiYWNr dXBfb2JqZWN0cycpIHsKKyAgICAgIHJldHVybiBudWxsOworICAgIH0KKyAgICByZXR1cm4gKCh0 eXBlT2ZEaWFsb2cgPT09ICdnbG9iYWxzJykgPworICAgICAgZ2V0dGV4dCgnQmFja3VwIEdsb2Jh bHMuLi4nKSA6CisgICAgICBnZXR0ZXh0KCdCYWNrdXAgU2VydmVyLi4uJykpOworICB9CisKKyAg ZGlhbG9nTmFtZSh0eXBlT2ZEaWFsb2cpIHsKKyAgICBpZih0eXBlT2ZEaWFsb2cgPT09ICdiYWNr dXBfb2JqZWN0cycpIHsKKyAgICAgIHJldHVybiB0eXBlT2ZEaWFsb2c7CisgICAgfQorICAgIHJl dHVybiAnQmFja3VwRGlhbG9nXycgKyB0eXBlT2ZEaWFsb2c7CisgIH0KK30KZGlmZiAtLWdpdCBh L3dlYi9wZ2FkbWluL3Rvb2xzL2JhY2t1cC9zdGF0aWMvanMvYmFja3VwX2RpYWxvZ193cmFwcGVy LmpzIGIvd2ViL3BnYWRtaW4vdG9vbHMvYmFja3VwL3N0YXRpYy9qcy9iYWNrdXBfZGlhbG9nX3dy YXBwZXIuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAuLjJjZWJlM2QxCi0t LSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vdG9vbHMvYmFja3VwL3N0YXRpYy9qcy9iYWNr dXBfZGlhbG9nX3dyYXBwZXIuanMKQEAgLTAsMCArMSwyNTggQEAKKy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKy8vCisvLyBwZ0Fk bWluIDQgLSBQb3N0Z3JlU1FMIFRvb2xzCisvLworLy8gQ29weXJpZ2h0IChDKSAyMDEzIC0gMjAx OCwgVGhlIHBnQWRtaW4gRGV2ZWxvcG1lbnQgVGVhbQorLy8gVGhpcyBzb2Z0d2FyZSBpcyByZWxl YXNlZCB1bmRlciB0aGUgUG9zdGdyZVNRTCBMaWNlbmNlCisvLworLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKworaW1wb3J0IHtn ZXRUcmVlTm9kZUhpZXJhcmNoeUZyb21FbGVtZW50fSBmcm9tICcuLi8uLi8uLi8uLi9zdGF0aWMv anMvdHJlZS9wZ2FkbWluX3RyZWVfbm9kZSc7CitpbXBvcnQgYXhpb3MgZnJvbSAnYXhpb3MvaW5k ZXgnOworaW1wb3J0IGdldHRleHQgZnJvbSAnLi4vLi4vLi4vLi4vc3RhdGljL2pzL2dldHRleHQn OworaW1wb3J0IHVybF9mb3IgZnJvbSAnLi4vLi4vLi4vLi4vc3RhdGljL2pzL3VybF9mb3InOwor aW1wb3J0IF8gZnJvbSAndW5kZXJzY29yZSc7CitpbXBvcnQge0RpYWxvZ1dyYXBwZXJ9IGZyb20g Jy4uLy4uLy4uLy4uL3N0YXRpYy9qcy9hbGVydGlmeS9kaWFsb2dfd3JhcHBlcic7CisKK2V4cG9y dCBjbGFzcyBCYWNrdXBEaWFsb2dXcmFwcGVyIGV4dGVuZHMgRGlhbG9nV3JhcHBlciB7CisgIGNv bnN0cnVjdG9yKGRpYWxvZ0NvbnRhaW5lclNlbGVjdG9yLCBkaWFsb2dUaXRsZSwgdHlwZU9mRGlh bG9nLAorICAgICAgICAgICAgICBqcXVlcnksIHBnQnJvd3NlciwgYWxlcnRpZnksIGRpYWxvZ01v ZGVsLCBiYWNrZm9ybSkgeworICAgIHN1cGVyKGRpYWxvZ0NvbnRhaW5lclNlbGVjdG9yLCBkaWFs b2dUaXRsZSwganF1ZXJ5LAorICAgICAgcGdCcm93c2VyLCBhbGVydGlmeSwgZGlhbG9nTW9kZWws IGJhY2tmb3JtKTsKKyAgICB0aGlzLnR5cGVPZkRpYWxvZyA9IHR5cGVPZkRpYWxvZzsKKyAgfQor CisgIG1haW4odGl0bGUpIHsKKyAgICB0aGlzLnNldCgndGl0bGUnLCB0aXRsZSk7CisgIH0KKwor ICBzZXR1cCgpIHsKKyAgICByZXR1cm4geworICAgICAgYnV0dG9uczogW3sKKyAgICAgICAgdGV4 dDogJycsCisgICAgICAgIGNsYXNzTmFtZTogJ2J0biBidG4tZGVmYXVsdCBwdWxsLWxlZnQgZmEg ZmEtbGcgZmEtaW5mbycsCisgICAgICAgIGF0dHJzOiB7CisgICAgICAgICAgbmFtZTogJ29iamVj dF9oZWxwJywKKyAgICAgICAgICB0eXBlOiAnYnV0dG9uJywKKyAgICAgICAgICB1cmw6ICdiYWNr dXAuaHRtbCcsCisgICAgICAgICAgbGFiZWw6IGdldHRleHQoJ0JhY2t1cCcpLAorICAgICAgICB9 LAorICAgICAgfSwgeworICAgICAgICB0ZXh0OiAnJywKKyAgICAgICAga2V5OiAxMTIsCisgICAg ICAgIGNsYXNzTmFtZTogJ2J0biBidG4tZGVmYXVsdCBwdWxsLWxlZnQgZmEgZmEtbGcgZmEtcXVl c3Rpb24nLAorICAgICAgICBhdHRyczogeworICAgICAgICAgIG5hbWU6ICdkaWFsb2dfaGVscCcs CisgICAgICAgICAgdHlwZTogJ2J1dHRvbicsCisgICAgICAgICAgbGFiZWw6IGdldHRleHQoJ0Jh Y2t1cCcpLAorICAgICAgICAgIHVybDogdXJsX2ZvcignaGVscC5zdGF0aWMnLCB7CisgICAgICAg ICAgICAnZmlsZW5hbWUnOiAnYmFja3VwX2RpYWxvZy5odG1sJywKKyAgICAgICAgICB9KSwKKyAg ICAgICAgfSwKKyAgICAgIH0sIHsKKyAgICAgICAgdGV4dDogZ2V0dGV4dCgnQmFja3VwJyksCisg ICAgICAgIGtleTogMTMsCisgICAgICAgIGNsYXNzTmFtZTogJ2J0biBidG4tcHJpbWFyeSBmYSBm YS1sZyBmYS1zYXZlIHBnLWFsZXJ0aWZ5LWJ1dHRvbicsCisgICAgICAgICdkYXRhLWJ0bi1uYW1l JzogJ2JhY2t1cCcsCisgICAgICB9LCB7CisgICAgICAgIHRleHQ6IGdldHRleHQoJ0NhbmNlbCcp LAorICAgICAgICBrZXk6IDI3LAorICAgICAgICBjbGFzc05hbWU6ICdidG4gYnRuLWRhbmdlciBm YSBmYS1sZyBmYS10aW1lcyBwZy1hbGVydGlmeS1idXR0b24nLAorICAgICAgICAnZGF0YS1idG4t bmFtZSc6ICdjYW5jZWwnLAorICAgICAgfV0sCisgICAgICAvLyBTZXQgb3B0aW9ucyBmb3IgZGlh bG9nCisgICAgICBvcHRpb25zOiB7CisgICAgICAgIHRpdGxlOiB0aGlzLmRpYWxvZ1RpdGxlLAor ICAgICAgICAvL2Rpc2FibGUgYm90aCBwYWRkaW5nIGFuZCBvdmVyZmxvdyBjb250cm9sLgorICAg ICAgICBwYWRkaW5nOiAhMSwKKyAgICAgICAgb3ZlcmZsb3c6ICExLAorICAgICAgICBtb2RlbDog MCwKKyAgICAgICAgcmVzaXphYmxlOiB0cnVlLAorICAgICAgICBtYXhpbWl6YWJsZTogdHJ1ZSwK KyAgICAgICAgcGlubmFibGU6IGZhbHNlLAorICAgICAgICBjbG9zYWJsZUJ5RGltbWVyOiBmYWxz ZSwKKyAgICAgICAgbW9kYWw6IGZhbHNlLAorICAgICAgfSwKKyAgICB9OworICB9CisKKyAgcHJl cGFyZSgpIHsKKyAgICB0aGlzLmRpc2FibGVCYWNrdXBCdXR0b24oKTsKKworICAgIGNvbnN0ICRj b250YWluZXIgPSB0aGlzLmpxdWVyeSh0aGlzLmRpYWxvZ0NvbnRhaW5lclNlbGVjdG9yKTsKKyAg ICBjb25zdCBzZWxlY3RlZFRyZWVOb2RlID0gdGhpcy5nZXRTZWxlY3RlZE5vZGUoKTsKKyAgICBj b25zdCBzZWxlY3RlZFRyZWVOb2RlRGF0YSA9IHRoaXMuZ2V0U2VsZWN0ZWROb2RlRGF0YShzZWxl Y3RlZFRyZWVOb2RlKTsKKyAgICBpZiAoIXNlbGVjdGVkVHJlZU5vZGVEYXRhKSB7CisgICAgICBy ZXR1cm47CisgICAgfQorCisgICAgY29uc3Qgbm9kZSA9IHRoaXMucGdCcm93c2VyLk5vZGVzW3Nl bGVjdGVkVHJlZU5vZGVEYXRhLl90eXBlXTsKKyAgICBpZiAodGhpcy5kaWFsb2dUaXRsZSA9PT0g bnVsbCkgeworICAgICAgY29uc3QgdGl0bGUgPSBgQmFja3VwICgke25vZGUubGFiZWx9OiAke3Nl bGVjdGVkVHJlZU5vZGVEYXRhLmxhYmVsfSlgOworICAgICAgdGhpcy5tYWluKHRpdGxlKTsKKyAg ICB9CisKKyAgICBjb25zdCB0cmVlSW5mbyA9IGdldFRyZWVOb2RlSGllcmFyY2h5RnJvbUVsZW1l bnQodGhpcy5wZ0Jyb3dzZXIsIHNlbGVjdGVkVHJlZU5vZGUpOworICAgIGNvbnN0IGRpYWxvZyA9 IHRoaXMuY3JlYXRlRGlhbG9nKG5vZGUsIHRyZWVJbmZvLCB0aGlzLnR5cGVPZkRpYWxvZywgJGNv bnRhaW5lcik7CisgICAgdGhpcy5hZGRBbGVydGlmeUNsYXNzVG9CYWNrdXBOb2RlQ2hpbGROb2Rl cygpOworICAgIGRpYWxvZy5yZW5kZXIoKTsKKworICAgIHRoaXMuZWxlbWVudHMuY29udGVudC5h cHBlbmRDaGlsZCgkY29udGFpbmVyLmdldCgwKSk7CisKKyAgICB0aGlzLmZvY3VzT25EaWFsb2co ZGlhbG9nKTsKKyAgICB0aGlzLnNldExpc3RlbmVyc0ZvckZpbGVuYW1lQ2hhbmdlcygpOworICB9 CisKKyAgY2FsbGJhY2soZXZlbnQpIHsKKyAgICBjb25zdCBzZWxlY3RlZFRyZWVOb2RlID0gdGhp cy5nZXRTZWxlY3RlZE5vZGUoKTsKKyAgICBjb25zdCBzZWxlY3RlZFRyZWVOb2RlRGF0YSA9IHRo aXMuZ2V0U2VsZWN0ZWROb2RlRGF0YShzZWxlY3RlZFRyZWVOb2RlKTsKKyAgICBjb25zdCBub2Rl ID0gc2VsZWN0ZWRUcmVlTm9kZURhdGEgJiYgdGhpcy5wZ0Jyb3dzZXIuTm9kZXNbc2VsZWN0ZWRU cmVlTm9kZURhdGEuX3R5cGVdOworCisgICAgaWYgKHRoaXMud2FzSGVscEJ1dHRvblByZXNzZWQo ZXZlbnQpKSB7CisgICAgICBldmVudC5jYW5jZWwgPSB0cnVlOworICAgICAgdGhpcy5wZ0Jyb3dz ZXIuc2hvd0hlbHAoCisgICAgICAgIGV2ZW50LmJ1dHRvbi5lbGVtZW50Lm5hbWUsCisgICAgICAg IGV2ZW50LmJ1dHRvbi5lbGVtZW50LmdldEF0dHJpYnV0ZSgndXJsJyksCisgICAgICAgIG5vZGUs CisgICAgICAgIHNlbGVjdGVkVHJlZU5vZGUsCisgICAgICAgIGV2ZW50LmJ1dHRvbi5lbGVtZW50 LmdldEF0dHJpYnV0ZSgnbGFiZWwnKQorICAgICAgKTsKKyAgICAgIHJldHVybjsKKyAgICB9CisK KyAgICBpZiAodGhpcy53YXNCYWNrdXBCdXR0b25QcmVzc2VkKGV2ZW50KSkgeworCisgICAgICBp ZiAoIXNlbGVjdGVkVHJlZU5vZGVEYXRhKQorICAgICAgICByZXR1cm47CisKKyAgICAgIGNvbnN0 IHNlcnZlcklkZW50aWZpZXIgPSB0aGlzLnJldHJpZXZlU2VydmVySWRlbnRpZmllcihub2RlLCBz ZWxlY3RlZFRyZWVOb2RlKTsKKworICAgICAgY29uc3QgZGlhbG9nID0gdGhpczsKKyAgICAgIGxl dCB1cmxTaG9ydGN1dCA9ICdiYWNrdXAuY3JlYXRlX3NlcnZlcl9qb2InOworICAgICAgaWYgKHRo aXMudHlwZU9mRGlhbG9nID09PSAnYmFja3VwX29iamVjdHMnKSB7CisgICAgICAgIHVybFNob3J0 Y3V0ID0gJ2JhY2t1cC5jcmVhdGVfb2JqZWN0X2pvYic7CisgICAgICB9CisgICAgICBjb25zdCBi YXNlVXJsID0gdXJsX2Zvcih1cmxTaG9ydGN1dCwgeworICAgICAgICAnc2lkJzogc2VydmVySWRl bnRpZmllciwKKyAgICAgIH0pOworCisgICAgICBjb25zdCB0cmVlSW5mbyA9IGdldFRyZWVOb2Rl SGllcmFyY2h5RnJvbUVsZW1lbnQoCisgICAgICAgIHRoaXMucGdCcm93c2VyLAorICAgICAgICBz ZWxlY3RlZFRyZWVOb2RlCisgICAgICApOworCisgICAgICB0aGlzLnNldEV4dHJhUGFyYW1ldGVy cyhzZWxlY3RlZFRyZWVOb2RlLCB0cmVlSW5mbyk7CisKKyAgICAgIGxldCBzZXJ2aWNlID0gYXhp b3MuY3JlYXRlKHt9KTsKKyAgICAgIHNlcnZpY2UucG9zdCgKKyAgICAgICAgYmFzZVVybCwKKyAg ICAgICAgdGhpcy52aWV3Lm1vZGVsLnRvSlNPTigpCisgICAgICApLnRoZW4oZnVuY3Rpb24gKCkg eworICAgICAgICBkaWFsb2cuYWxlcnRpZnkuc3VjY2VzcyhnZXR0ZXh0KCdCYWNrdXAgam9iIGNy ZWF0ZWQuJyksIDUpOworICAgICAgICBkaWFsb2cucGdCcm93c2VyLkV2ZW50cy50cmlnZ2VyKCdw Z2FkbWluLWJncHJvY2VzczpjcmVhdGVkJywgZGlhbG9nKTsKKyAgICAgIH0pLmNhdGNoKGZ1bmN0 aW9uIChlcnJvcikgeworICAgICAgICB0cnkgeworICAgICAgICAgIGNvbnN0IGVyciA9IGVycm9y LnJlc3BvbnNlLmRhdGE7CisgICAgICAgICAgZGlhbG9nLmFsZXJ0aWZ5LmFsZXJ0KAorICAgICAg ICAgICAgZ2V0dGV4dCgnQmFja3VwIGpvYiBmYWlsZWQuJyksCisgICAgICAgICAgICBlcnIuZXJy b3Jtc2cKKyAgICAgICAgICApOworICAgICAgICB9IGNhdGNoIChlKSB7CisgICAgICAgICAgY29u c29sZS53YXJuKGUuc3RhY2sgfHwgZSk7CisgICAgICAgIH0KKyAgICAgIH0pOworICAgIH0KKyAg fQorCisgIGFkZEFsZXJ0aWZ5Q2xhc3NUb0JhY2t1cE5vZGVDaGlsZE5vZGVzKCkgeworICAgIHRo aXMuanF1ZXJ5KHRoaXMuZWxlbWVudHMuYm9keS5jaGlsZE5vZGVzWzBdKS5hZGRDbGFzcygKKyAg ICAgICdhbGVydGlmeV90b29sc19kaWFsb2dfcHJvcGVydGllcyBvYmpfcHJvcGVydGllcycKKyAg ICApOworICB9CisKKyAgZ2V0U2VsZWN0ZWROb2RlKCkgeworICAgIGNvbnN0IHRyZWUgPSB0aGlz LnBnQnJvd3Nlci50cmVlTWVudTsKKyAgICBjb25zdCBzZWxlY3RlZE5vZGUgPSB0cmVlLnNlbGVj dGVkKCk7CisgICAgaWYgKHNlbGVjdGVkTm9kZSkgeworICAgICAgcmV0dXJuIHRyZWUuZmluZE5v ZGVCeURvbUVsZW1lbnQoc2VsZWN0ZWROb2RlKTsKKyAgICB9IGVsc2UgeworICAgICAgcmV0dXJu IHVuZGVmaW5lZDsKKyAgICB9CisgIH0KKworICBkaXNhYmxlQmFja3VwQnV0dG9uKCkgeworICAg IHRoaXMuX19pbnRlcm5hbC5idXR0b25zWzJdLmVsZW1lbnQuZGlzYWJsZWQgPSB0cnVlOworICB9 CisKKyAgZW5hYmxlQmFja3VwQnV0dG9uKCkgeworICAgIHRoaXMuX19pbnRlcm5hbC5idXR0b25z WzJdLmVsZW1lbnQuZGlzYWJsZWQgPSBmYWxzZTsKKyAgfQorCisgIGNyZWF0ZURpYWxvZyhub2Rl LCB0cmVlSW5mbywgdHlwZU9mRGlhbG9nLCAkY29udGFpbmVyKSB7CisgICAgbGV0IGF0dHJpYnV0 ZXMgPSB7fTsKKyAgICBpZiAodHlwZU9mRGlhbG9nICE9PSAnYmFja3VwX29iamVjdHMnKSB7Cisg ICAgICBhdHRyaWJ1dGVzWyd0eXBlJ10gPSB0eXBlT2ZEaWFsb2c7CisgICAgfQorICAgIC8vIElu c3RhbmNlIG9mIGJhY2tib25lIG1vZGVsCisgICAgY29uc3QgbmV3TW9kZWwgPSBuZXcgdGhpcy5k aWFsb2dNb2RlbChhdHRyaWJ1dGVzLCB7CisgICAgICBub2RlX2luZm86IHRyZWVJbmZvLAorICAg IH0pOworICAgIGNvbnN0IGZpZWxkcyA9IHRoaXMuYmFja2Zvcm0uZ2VuZXJhdGVWaWV3U2NoZW1h KAorICAgICAgdHJlZUluZm8sIG5ld01vZGVsLCAnY3JlYXRlJywgbm9kZSwgdHJlZUluZm8uc2Vy dmVyLCB0cnVlCisgICAgKTsKKworICAgIHJldHVybiB0aGlzLnZpZXcgPSBuZXcgdGhpcy5iYWNr Zm9ybS5EaWFsb2coeworICAgICAgZWw6ICRjb250YWluZXIsCisgICAgICBtb2RlbDogbmV3TW9k ZWwsCisgICAgICBzY2hlbWE6IGZpZWxkcywKKyAgICB9KTsKKyAgfQorCisgIHJldHJpZXZlU2Vy dmVySWRlbnRpZmllcihub2RlLCBzZWxlY3RlZFRyZWVOb2RlKSB7CisgICAgY29uc3QgdHJlZUlu Zm8gPSBnZXRUcmVlTm9kZUhpZXJhcmNoeUZyb21FbGVtZW50KAorICAgICAgdGhpcy5wZ0Jyb3dz ZXIsCisgICAgICBzZWxlY3RlZFRyZWVOb2RlCisgICAgKTsKKyAgICByZXR1cm4gdHJlZUluZm8u c2VydmVyLl9pZDsKKyAgfQorCisgIHNldExpc3RlbmVyc0ZvckZpbGVuYW1lQ2hhbmdlcygpIHsK KyAgICBjb25zdCBzZWxmID0gdGhpczsKKworICAgIHRoaXMudmlldy5tb2RlbC5vbignY2hhbmdl JywgZnVuY3Rpb24gKCkgeworICAgICAgaWYgKCFfLmlzVW5kZWZpbmVkKHRoaXMuZ2V0KCdmaWxl JykpICYmIHRoaXMuZ2V0KCdmaWxlJykgIT09ICcnKSB7CisgICAgICAgIHRoaXMuZXJyb3JNb2Rl bC5jbGVhcigpOworICAgICAgICBzZWxmLmVuYWJsZUJhY2t1cEJ1dHRvbigpOworICAgICAgfSBl bHNlIHsKKyAgICAgICAgc2VsZi5kaXNhYmxlQmFja3VwQnV0dG9uKCk7CisgICAgICAgIHRoaXMu ZXJyb3JNb2RlbC5zZXQoJ2ZpbGUnLCBnZXR0ZXh0KCdQbGVhc2UgcHJvdmlkZSBhIGZpbGVuYW1l JykpOworICAgICAgfQorICAgIH0pOworICB9CisKKyAgc2V0RXh0cmFQYXJhbWV0ZXJzKHNlbGVj dGVkVHJlZU5vZGUsIHRyZWVJbmZvKSB7CisgICAgaWYgKHRoaXMudHlwZU9mRGlhbG9nID09PSAn YmFja3VwX29iamVjdHMnKSB7CisKKyAgICAgIHRoaXMudmlldy5tb2RlbC5zZXQoJ2RhdGFiYXNl JywgdHJlZUluZm8uZGF0YWJhc2UuX2xhYmVsKTsKKworICAgICAgY29uc3Qgbm9kZURhdGEgPSBz ZWxlY3RlZFRyZWVOb2RlLmdldERhdGEoKTsKKyAgICAgIGlmIChub2RlRGF0YS5fdHlwZSA9PT0g J3NjaGVtYScpIHsKKyAgICAgICAgdGhpcy52aWV3Lm1vZGVsLnNldCgnc2NoZW1hcycsIFtub2Rl RGF0YS5fbGFiZWxdKTsKKyAgICAgIH0KKworICAgICAgaWYgKG5vZGVEYXRhLl90eXBlID09PSAn dGFibGUnKSB7CisgICAgICAgIHRoaXMudmlldy5tb2RlbC5zZXQoJ3RhYmxlcycsIFsKKyAgICAg ICAgICBbdHJlZUluZm8uc2NoZW1hLl9sYWJlbCwgbm9kZURhdGEuX2xhYmVsXSwKKyAgICAgICAg XSk7CisgICAgICB9CisKKyAgICAgIGlmIChfLmlzRW1wdHkodGhpcy52aWV3Lm1vZGVsLmdldCgn cmF0aW8nKSkpIHsKKyAgICAgICAgdGhpcy52aWV3Lm1vZGVsLnVuc2V0KCdyYXRpbycpOworICAg ICAgfQorICAgIH0KKyAgfQorCisgIHdhc0JhY2t1cEJ1dHRvblByZXNzZWQoZXZlbnQpIHsKKyAg ICByZXR1cm4gZXZlbnQuYnV0dG9uWydkYXRhLWJ0bi1uYW1lJ10gPT09ICdiYWNrdXAnOworICB9 Cit9CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi90b29scy9iYWNrdXAvc3RhdGljL2pzL21lbnVf dXRpbHMuanMgYi93ZWIvcGdhZG1pbi90b29scy9iYWNrdXAvc3RhdGljL2pzL21lbnVfdXRpbHMu anMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAuLmZkZjQwMGFmCi0tLSAvZGV2 L251bGwKKysrIGIvd2ViL3BnYWRtaW4vdG9vbHMvYmFja3VwL3N0YXRpYy9qcy9tZW51X3V0aWxz LmpzCkBAIC0wLDAgKzEsMjMgQEAKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKy8vCisvLyBwZ0FkbWluIDQgLSBQb3N0Z3JlU1FM IFRvb2xzCisvLworLy8gQ29weXJpZ2h0IChDKSAyMDEzIC0gMjAxOCwgVGhlIHBnQWRtaW4gRGV2 ZWxvcG1lbnQgVGVhbQorLy8gVGhpcyBzb2Z0d2FyZSBpcyByZWxlYXNlZCB1bmRlciB0aGUgUG9z dGdyZVNRTCBMaWNlbmNlCisvLworLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKworaW1wb3J0IHtpc1Byb3ZpZGVkRGF0YVZhbGlk fSBmcm9tICcuLi8uLi8uLi8uLi9zdGF0aWMvanMvbWVudS9tZW51X2VuYWJsZWQnOworCitleHBv cnQgY29uc3QgYmFja3VwU3VwcG9ydGVkTm9kZXMgPSBbCisgICdkYXRhYmFzZScsICdzY2hlbWEn LCAndGFibGUnLCAncGFydGl0aW9uJywKK107CisKK2Z1bmN0aW9uIGlzTm9kZUFTZXJ2ZXJBbmRD b25uZWN0ZWQodHJlZU5vZGVEYXRhKSB7CisgIHJldHVybiAoKCdzZXJ2ZXInID09PSB0cmVlTm9k ZURhdGEuX3R5cGUpICYmIHRyZWVOb2RlRGF0YS5jb25uZWN0ZWQpOworfQorCitleHBvcnQgZnVu Y3Rpb24gbWVudUVuYWJsZWRTZXJ2ZXIodHJlZU5vZGVEYXRhKSB7CisgIHJldHVybiBpc1Byb3Zp ZGVkRGF0YVZhbGlkKHRyZWVOb2RlRGF0YSkKKyAgICAmJiBpc05vZGVBU2VydmVyQW5kQ29ubmVj dGVkKHRyZWVOb2RlRGF0YSk7Cit9CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi90b29scy9kYXRh Z3JpZC9zdGF0aWMvanMvZGF0YWdyaWQuanMgYi93ZWIvcGdhZG1pbi90b29scy9kYXRhZ3JpZC9z dGF0aWMvanMvZGF0YWdyaWQuanMKaW5kZXggYjBlZDYwZjYuLjUyMGE5Y2U1IDEwMDY0NAotLS0g YS93ZWIvcGdhZG1pbi90b29scy9kYXRhZ3JpZC9zdGF0aWMvanMvZGF0YWdyaWQuanMKKysrIGIv d2ViL3BnYWRtaW4vdG9vbHMvZGF0YWdyaWQvc3RhdGljL2pzL2RhdGFncmlkLmpzCkBAIC0xLDEw ICsxLDE0IEBACiBkZWZpbmUoJ3BnYWRtaW4uZGF0YWdyaWQnLCBbCiAgICdzb3VyY2VzL2dldHRl eHQnLCAnc291cmNlcy91cmxfZm9yJywgJ2pxdWVyeScsICd1bmRlcnNjb3JlJywKICAgJ3BnYWRt aW4uYWxlcnRpZnlqcycsICdzb3VyY2VzL3BnYWRtaW4nLCAnYnVuZGxlZF9jb2RlbWlycm9yJywK LSAgJ3NvdXJjZXMvc3FsZWRpdG9yX3V0aWxzJywgJ2JhY2tib25lJywgJ3djZG9ja2VyJywKKyAg J3NvdXJjZXMvc3FsZWRpdG9yX3V0aWxzJywgJ2JhY2tib25lJywKKyAgJ3Rvb2xzL2RhdGFncmlk L3N0YXRpYy9qcy9zaG93X2RhdGEnLAorICAndG9vbHMvZGF0YWdyaWQvc3RhdGljL2pzL2dldF9w YW5lbF90aXRsZScsCisgICd0b29scy9kYXRhZ3JpZC9zdGF0aWMvanMvc2hvd19xdWVyeV90b29s JywKKyAgJ3djZG9ja2VyJywKIF0sIGZ1bmN0aW9uKAogICBnZXR0ZXh0LCB1cmxfZm9yLCAkLCBf LCBhbGVydGlmeSwgcGdBZG1pbiwgY29kZW1pcnJvciwgc3FsRWRpdG9yVXRpbHMsCi0gIEJhY2ti b25lCisgIEJhY2tib25lLCBzaG93RGF0YSwgcGFuZWxUaXRsZSwgc2hvd1F1ZXJ5VG9vbAogKSB7 CiAgIC8vIFNvbWUgc2NyaXB0cyBkbyBleHBvcnQgdGhlaXIgb2JqZWN0IGluIHRoZSB3aW5kb3cg b25seS4KICAgLy8gR2VuZXJhbGx5IHRoZSBvbmUsIHdoaWNoIGRvIG5vIGhhdmUgQU1EIHN1cHBv cnQuCkBAIC0xNjEsNTUgKzE2NSw3IEBAIGRlZmluZSgncGdhZG1pbi5kYXRhZ3JpZCcsIFsKIAog ICAgICAgLy8gVGhpcyBpcyBhIGNhbGxiYWNrIGZ1bmN0aW9uIHRvIHNob3cgZGF0YSB3aGVuIHVz ZXIgY2xpY2sgb24gbWVudSBpdGVtLgogICAgICAgc2hvd19kYXRhX2dyaWQ6IGZ1bmN0aW9uKGRh dGEsIGkpIHsKLSAgICAgICAgdmFyIHNlbGYgPSB0aGlzLAotICAgICAgICAgIGQgPSBwZ0FkbWlu LkJyb3dzZXIudHJlZS5pdGVtRGF0YShpKTsKLSAgICAgICAgaWYgKGQgPT09IHVuZGVmaW5lZCkg ewotICAgICAgICAgIGFsZXJ0aWZ5LmFsZXJ0KAotICAgICAgICAgICAgZ2V0dGV4dCgnRGF0YSBH cmlkIEVycm9yJyksCi0gICAgICAgICAgICBnZXR0ZXh0KCdObyBvYmplY3Qgc2VsZWN0ZWQuJykK LSAgICAgICAgICApOwotICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIC8v IEdldCB0aGUgcGFyZW50IGRhdGEgZnJvbSB0aGUgdHJlZSBub2RlIGhpZXJhcmNoeS4KLSAgICAg ICAgdmFyIG5vZGUgPSBwZ0Jyb3dzZXIuTm9kZXNbZC5fdHlwZV0sCi0gICAgICAgICAgcGFyZW50 RGF0YSA9IG5vZGUuZ2V0VHJlZU5vZGVIaWVyYXJjaHkoaSk7Ci0KLSAgICAgICAgLy8gSWYgc2Vy dmVyLCBkYXRhYmFzZSBvciBzY2hlbWEgaXMgdW5kZWZpbmVkIHRoZW4gcmV0dXJuIGZyb20gdGhl IGZ1bmN0aW9uLgotICAgICAgICBpZiAocGFyZW50RGF0YS5zZXJ2ZXIgPT09IHVuZGVmaW5lZCB8 fCBwYXJlbnREYXRhLmRhdGFiYXNlID09PSB1bmRlZmluZWQpIHsKLSAgICAgICAgICByZXR1cm47 Ci0gICAgICAgIH0KLSAgICAgICAgLy8gSWYgc2NoZW1hLCB2aWV3LCBjYXRhbG9nIG9iamVjdCBh bGwgYXJlIHVuZGVmaW5lZCB0aGVuIHJldHVybiBmcm9tIHRoZSBmdW5jdGlvbi4KLSAgICAgICAg aWYgKHBhcmVudERhdGEuc2NoZW1hID09PSB1bmRlZmluZWQgJiYgcGFyZW50RGF0YS52aWV3ID09 PSB1bmRlZmluZWQgJiYKLSAgICAgICAgICAgICBwYXJlbnREYXRhLmNhdGFsb2cgPT09IHVuZGVm aW5lZCkgewotICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIHZhciBuc3Bf bmFtZSA9ICcnOwotCi0gICAgICAgIGlmIChwYXJlbnREYXRhLnNjaGVtYSAhPSB1bmRlZmluZWQp IHsKLSAgICAgICAgICBuc3BfbmFtZSA9IHBhcmVudERhdGEuc2NoZW1hLmxhYmVsOwotICAgICAg ICB9Ci0gICAgICAgIGVsc2UgaWYgKHBhcmVudERhdGEudmlldyAhPSB1bmRlZmluZWQpIHsKLSAg ICAgICAgICBuc3BfbmFtZSA9IHBhcmVudERhdGEudmlldy5sYWJlbDsKLSAgICAgICAgfQotICAg ICAgICBlbHNlIGlmIChwYXJlbnREYXRhLmNhdGFsb2cgIT0gdW5kZWZpbmVkKSB7Ci0gICAgICAg ICAgbnNwX25hbWUgPSBwYXJlbnREYXRhLmNhdGFsb2cubGFiZWw7Ci0gICAgICAgIH0KLSAgICAg ICAgdmFyIHVybF9wYXJhbXMgPSB7Ci0gICAgICAgICAgJ2NtZF90eXBlJzogZGF0YS5tbnVpZCwK LSAgICAgICAgICAnb2JqX3R5cGUnOiBkLl90eXBlLAotICAgICAgICAgICdzZ2lkJzogcGFyZW50 RGF0YS5zZXJ2ZXJfZ3JvdXAuX2lkLAotICAgICAgICAgICdzaWQnOiBwYXJlbnREYXRhLnNlcnZl ci5faWQsCi0gICAgICAgICAgJ2RpZCc6IHBhcmVudERhdGEuZGF0YWJhc2UuX2lkLAotICAgICAg ICAgICdvYmpfaWQnOiBkLl9pZCwKLSAgICAgICAgfTsKLQotICAgICAgICB2YXIgYmFzZVVybCA9 IHVybF9mb3IoJ2RhdGFncmlkLmluaXRpYWxpemVfZGF0YWdyaWQnLCB1cmxfcGFyYW1zKTsKLSAg ICAgICAgdmFyIGdyaWRfdGl0bGUgPSBwYXJlbnREYXRhLnNlcnZlci5sYWJlbCArICcgLSAnICsg cGFyZW50RGF0YS5kYXRhYmFzZS5sYWJlbCArICcgLSAnCi0gICAgICAgICAgICAgICAgICAgICAg ICArIG5zcF9uYW1lICsgJy4nICsgZC5sYWJlbDsKLQotICAgICAgICBzZWxmLmNyZWF0ZV90cmFu c2FjdGlvbihiYXNlVXJsLCBudWxsLCAnZmFsc2UnLCBwYXJlbnREYXRhLnNlcnZlci5zZXJ2ZXJf dHlwZSwgJycsIGdyaWRfdGl0bGUsICcnKTsKKyAgICAgICAgc2hvd0RhdGEuc2hvd0RhdGFHcmlk KHRoaXMsIHBnQnJvd3NlciwgYWxlcnRpZnksIGRhdGEsIGkpOwogICAgICAgfSwKIAogICAgICAg Ly8gVGhpcyBpcyBhIGNhbGxiYWNrIGZ1bmN0aW9uIHRvIHNob3cgZmlsdGVyZWQgZGF0YSB3aGVu IHVzZXIgY2xpY2sgb24gbWVudSBpdGVtLgpAQCAtMzg0LDYzICszNDAsMTIgQEAgZGVmaW5lKCdw Z2FkbWluLmRhdGFncmlkJywgWwogICAgICAgfSwKIAogICAgICAgZ2V0X3BhbmVsX3RpdGxlOiBm dW5jdGlvbigpIHsKLSAgICAgICAgLy8gR2V0IHRoZSBwYXJlbnQgZGF0YSBmcm9tIHRoZSB0cmVl IG5vZGUgaGllcmFyY2h5LgotICAgICAgICB2YXIgdHJlZSA9IHBnQWRtaW4uQnJvd3Nlci50cmVl LAotICAgICAgICAgIHNlbGVjdGVkX2l0ZW0gPSB0cmVlLnNlbGVjdGVkKCksCi0gICAgICAgICAg aXRlbV9kYXRhID0gdHJlZS5pdGVtRGF0YShzZWxlY3RlZF9pdGVtKTsKLQotICAgICAgICB2YXIg bm9kZSA9IHBnQnJvd3Nlci5Ob2Rlc1tpdGVtX2RhdGEuX3R5cGVdLAotICAgICAgICAgIHBhcmVu dERhdGEgPSBub2RlLmdldFRyZWVOb2RlSGllcmFyY2h5KHNlbGVjdGVkX2l0ZW0pOwotCi0gICAg ICAgIC8vIElmIHNlcnZlciwgZGF0YWJhc2UgaXMgdW5kZWZpbmVkIHRoZW4gcmV0dXJuIGZyb20g dGhlIGZ1bmN0aW9uLgotICAgICAgICBpZiAocGFyZW50RGF0YS5zZXJ2ZXIgPT09IHVuZGVmaW5l ZCkgewotICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAgICAvLyBJZiBEYXRhYmFz ZSBpcyBub3QgYXZhaWxhYmxlIHRoZW4gdXNlIGRlZmF1bHQgZGIKLSAgICAgICAgdmFyIGRiX2xh YmVsID0gcGFyZW50RGF0YS5kYXRhYmFzZSA/IHBhcmVudERhdGEuZGF0YWJhc2UubGFiZWwKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHBhcmVudERhdGEuc2Vy dmVyLmRiOwotCi0gICAgICAgIHZhciBncmlkX3RpdGxlID0gZGJfbGFiZWwgKyAnIG9uICcgKyBw YXJlbnREYXRhLnNlcnZlci51c2VyLm5hbWUgKyAnQCcgKwotICAgICAgICAgICAgICAgIHBhcmVu dERhdGEuc2VydmVyLmxhYmVsOwotICAgICAgICByZXR1cm4gZ3JpZF90aXRsZTsKKyAgICAgICAg cmV0dXJuIHBhbmVsVGl0bGUuZ2V0UGFuZWxUaXRsZShwZ0Jyb3dzZXIpOwogICAgICAgfSwKICAg ICAgIC8vIFRoaXMgaXMgYSBjYWxsYmFjayBmdW5jdGlvbiB0byBzaG93IHF1ZXJ5IHRvb2wgd2hl biB1c2VyIGNsaWNrIG9uIG1lbnUgaXRlbS4KLSAgICAgIHNob3dfcXVlcnlfdG9vbDogZnVuY3Rp b24odXJsLCBpLCBwYW5lbF90aXRsZSkgewotICAgICAgICB2YXIgc1VSTCA9IHVybCB8fCAnJywK LSAgICAgICAgICBkID0gcGdBZG1pbi5Ccm93c2VyLnRyZWUuaXRlbURhdGEoaSk7Ci0KLSAgICAg ICAgcGFuZWxfdGl0bGUgPSBwYW5lbF90aXRsZSB8fCAnJzsKLSAgICAgICAgaWYgKGQgPT09IHVu ZGVmaW5lZCkgewotICAgICAgICAgIGFsZXJ0aWZ5LmFsZXJ0KAotICAgICAgICAgICAgZ2V0dGV4 dCgnUXVlcnkgVG9vbCBFcnJvcicpLAotICAgICAgICAgICAgZ2V0dGV4dCgnTm8gb2JqZWN0IHNl bGVjdGVkLicpCi0gICAgICAgICAgKTsKLSAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQot ICAgICAgICAvLyBHZXQgdGhlIHBhcmVudCBkYXRhIGZyb20gdGhlIHRyZWUgbm9kZSBoaWVyYXJj aHkuCi0gICAgICAgIHZhciBub2RlID0gcGdCcm93c2VyLk5vZGVzW2QuX3R5cGVdLAotICAgICAg ICAgIHBhcmVudERhdGEgPSBub2RlLmdldFRyZWVOb2RlSGllcmFyY2h5KGkpOwotCi0gICAgICAg IC8vIElmIHNlcnZlciwgZGF0YWJhc2UgaXMgdW5kZWZpbmVkIHRoZW4gcmV0dXJuIGZyb20gdGhl IGZ1bmN0aW9uLgotICAgICAgICBpZiAocGFyZW50RGF0YS5zZXJ2ZXIgPT09IHVuZGVmaW5lZCkg ewotICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIHZhciB1cmxfcGFyYW1z ID0gewotICAgICAgICAgICAgJ3NnaWQnOiBwYXJlbnREYXRhLnNlcnZlcl9ncm91cC5faWQsCi0g ICAgICAgICAgICAnc2lkJzogcGFyZW50RGF0YS5zZXJ2ZXIuX2lkLAotICAgICAgICAgIH0sCi0g ICAgICAgICAgdXJsX2VuZHBvaW50ID0gJ2RhdGFncmlkLmluaXRpYWxpemVfcXVlcnlfdG9vbCc7 Ci0gICAgICAgIC8vIElmIGRhdGFiYXNlIG5vdCBwcmVzZW50IHRoZW4gdXNlIE1haW50ZW5hbmNl IGRhdGFiYXNlCi0gICAgICAgIC8vIFdlIHdpbGwgaGFuZGxlIHRoaXMgYXQgc2VydmVyIHNpZGUK LSAgICAgICAgaWYgKHBhcmVudERhdGEuZGF0YWJhc2UpIHsKLSAgICAgICAgICB1cmxfcGFyYW1z WydkaWQnXSA9IHBhcmVudERhdGEuZGF0YWJhc2UuX2lkOwotICAgICAgICAgIHVybF9lbmRwb2lu dCA9ICdkYXRhZ3JpZC5pbml0aWFsaXplX3F1ZXJ5X3Rvb2xfd2l0aF9kaWQnOwotICAgICAgICB9 Ci0gICAgICAgIHZhciBiYXNlVXJsID0gdXJsX2Zvcih1cmxfZW5kcG9pbnQsIHVybF9wYXJhbXMp OwotCi0gICAgICAgIHRoaXMuY3JlYXRlX3RyYW5zYWN0aW9uKGJhc2VVcmwsIG51bGwsICd0cnVl JywgcGFyZW50RGF0YS5zZXJ2ZXIuc2VydmVyX3R5cGUsIHNVUkwsIHBhbmVsX3RpdGxlLCAnJywg ZmFsc2UpOworICAgICAgc2hvd19xdWVyeV90b29sOiBmdW5jdGlvbih1cmwsIGFjaVRyZWVJZGVu dGlmaWVyLCBwYW5lbFRpdGxlKSB7CisgICAgICAgIHNob3dRdWVyeVRvb2wuc2hvd1F1ZXJ5VG9v bCh0aGlzLCBwZ0Jyb3dzZXIsIGFsZXJ0aWZ5LCB1cmwsCisgICAgICAgICAgYWNpVHJlZUlkZW50 aWZpZXIsIHBhbmVsVGl0bGUpOwogICAgICAgfSwKICAgICAgIGNyZWF0ZV90cmFuc2FjdGlvbjog ZnVuY3Rpb24oYmFzZVVybCwgdGFyZ2V0LCBpc19xdWVyeV90b29sLCBzZXJ2ZXJfdHlwZSwgc1VS TCwgcGFuZWxfdGl0bGUsIHNxbF9maWx0ZXIsIHJlY3JlYXRlKSB7CiAgICAgICAgIHZhciBzZWxm ID0gdGhpczsKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3Rvb2xzL2RhdGFncmlkL3N0YXRpYy9q cy9nZXRfcGFuZWxfdGl0bGUuanMgYi93ZWIvcGdhZG1pbi90b29scy9kYXRhZ3JpZC9zdGF0aWMv anMvZ2V0X3BhbmVsX3RpdGxlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw Li42NGIzYTNkMgotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL3Rvb2xzL2RhdGFncmlk L3N0YXRpYy9qcy9nZXRfcGFuZWxfdGl0bGUuanMKQEAgLTAsMCArMSwzMyBAQAorLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworLy8K Ky8vIHBnQWRtaW4gNCAtIFBvc3RncmVTUUwgVG9vbHMKKy8vCisvLyBDb3B5cmlnaHQgKEMpIDIw MTMgLSAyMDE4LCBUaGUgcGdBZG1pbiBEZXZlbG9wbWVudCBUZWFtCisvLyBUaGlzIHNvZnR3YXJl IGlzIHJlbGVhc2VkIHVuZGVyIHRoZSBQb3N0Z3JlU1FMIExpY2VuY2UKKy8vCisvLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworCitp bXBvcnQge2dldFRyZWVOb2RlSGllcmFyY2h5RnJvbUlkZW50aWZpZXJ9IGZyb20gJy4uLy4uLy4u Ly4uL3N0YXRpYy9qcy90cmVlL3BnYWRtaW5fdHJlZV9ub2RlJzsKKworZnVuY3Rpb24gZ2V0RGF0 YWJhc2VMYWJlbChwYXJlbnREYXRhKSB7CisgIHJldHVybiBwYXJlbnREYXRhLmRhdGFiYXNlID8g cGFyZW50RGF0YS5kYXRhYmFzZS5sYWJlbAorICAgIDogcGFyZW50RGF0YS5zZXJ2ZXIuZGI7Cit9 CisKK2Z1bmN0aW9uIGlzU2VydmVySW5mb3JtYXRpb25BdmFpbGFibGUocGFyZW50RGF0YSkgewor ICByZXR1cm4gcGFyZW50RGF0YS5zZXJ2ZXIgPT09IHVuZGVmaW5lZDsKK30KKworZXhwb3J0IGZ1 bmN0aW9uIGdldFBhbmVsVGl0bGUocGdCcm93c2VyKSB7CisgIGNvbnN0IHNlbGVjdGVkX2l0ZW0g PSBwZ0Jyb3dzZXIudHJlZU1lbnUuc2VsZWN0ZWQoKTsKKworICBjb25zdCBwYXJlbnREYXRhID0g Z2V0VHJlZU5vZGVIaWVyYXJjaHlGcm9tSWRlbnRpZmllcgorICAgIC5jYWxsKHBnQnJvd3Nlciwg c2VsZWN0ZWRfaXRlbSk7CisgIGlmIChpc1NlcnZlckluZm9ybWF0aW9uQXZhaWxhYmxlKHBhcmVu dERhdGEpKSB7CisgICAgcmV0dXJuOworICB9CisKKyAgY29uc3QgZGJfbGFiZWwgPSBnZXREYXRh YmFzZUxhYmVsKHBhcmVudERhdGEpOworCisgIHJldHVybiBgJHtkYl9sYWJlbH0gb24gJHtwYXJl bnREYXRhLnNlcnZlci51c2VyLm5hbWV9QCR7cGFyZW50RGF0YS5zZXJ2ZXIubGFiZWx9YDsKK30K ZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3Rvb2xzL2RhdGFncmlkL3N0YXRpYy9qcy9zaG93X2Rh dGEuanMgYi93ZWIvcGdhZG1pbi90b29scy9kYXRhZ3JpZC9zdGF0aWMvanMvc2hvd19kYXRhLmpz Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwLi4zNzNjOTdjZAotLS0gL2Rldi9u dWxsCisrKyBiL3dlYi9wZ2FkbWluL3Rvb2xzL2RhdGFncmlkL3N0YXRpYy9qcy9zaG93X2RhdGEu anMKQEAgLTAsMCArMSw5MiBAQAorLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworLy8KKy8vIHBnQWRtaW4gNCAtIFBvc3RncmVTUUwg VG9vbHMKKy8vCisvLyBDb3B5cmlnaHQgKEMpIDIwMTMgLSAyMDE4LCBUaGUgcGdBZG1pbiBEZXZl bG9wbWVudCBUZWFtCisvLyBUaGlzIHNvZnR3YXJlIGlzIHJlbGVhc2VkIHVuZGVyIHRoZSBQb3N0 Z3JlU1FMIExpY2VuY2UKKy8vCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworaW1wb3J0IGdldHRleHQgZnJvbSAnLi4vLi4vLi4v Li4vc3RhdGljL2pzL2dldHRleHQnOworaW1wb3J0IHVybF9mb3IgZnJvbSAnLi4vLi4vLi4vLi4v c3RhdGljL2pzL3VybF9mb3InOworaW1wb3J0IHtnZXRUcmVlTm9kZUhpZXJhcmNoeUZyb21JZGVu dGlmaWVyfSBmcm9tICcuLi8uLi8uLi8uLi9zdGF0aWMvanMvdHJlZS9wZ2FkbWluX3RyZWVfbm9k ZSc7CisKK2V4cG9ydCBmdW5jdGlvbiBzaG93RGF0YUdyaWQoCisgIGRhdGFncmlkLAorICBwZ0Jy b3dzZXIsCisgIGFsZXJ0aWZ5LAorICBjb25uZWN0aW9uRGF0YSwKKyAgYWNpVHJlZUlkZW50aWZp ZXIKKykgeworICBjb25zdCBub2RlID0gcGdCcm93c2VyLnRyZWVNZW51LmZpbmROb2RlQnlEb21F bGVtZW50KGFjaVRyZWVJZGVudGlmaWVyKTsKKyAgaWYgKG5vZGUgPT09IHVuZGVmaW5lZCB8fCAh bm9kZS5nZXREYXRhKCkpIHsKKyAgICBhbGVydGlmeS5hbGVydCgKKyAgICAgIGdldHRleHQoJ0Rh dGEgR3JpZCBFcnJvcicpLAorICAgICAgZ2V0dGV4dCgnTm8gb2JqZWN0IHNlbGVjdGVkLicpCisg ICAgKTsKKyAgICByZXR1cm47CisgIH0KKworICBjb25zdCBwYXJlbnREYXRhID0gZ2V0VHJlZU5v ZGVIaWVyYXJjaHlGcm9tSWRlbnRpZmllci5jYWxsKAorICAgIHBnQnJvd3NlciwKKyAgICBhY2lU cmVlSWRlbnRpZmllcgorICApOworCisgIGlmIChoYXNTZXJ2ZXJPckRhdGFiYXNlQ29uZmlndXJh dGlvbihwYXJlbnREYXRhKQorICAgIHx8ICFoYXNTY2hlbWFPckNhdGFsb2dPclZpZXdJbmZvcm1h dGlvbihwYXJlbnREYXRhKSkgeworICAgIHJldHVybjsKKyAgfQorCisgIGxldCBuYW1lc3BhY2VO YW1lID0gcmV0cmlldmVOYW1lU3BhY2VOYW1lKHBhcmVudERhdGEpOworICBjb25zdCBiYXNlVXJs ID0gZ2VuZXJhdGVVcmwoY29ubmVjdGlvbkRhdGEsIG5vZGUuZ2V0RGF0YSgpLCBwYXJlbnREYXRh KTsKKyAgY29uc3QgZ3JpZF90aXRsZSA9IGdlbmVyYXRlRGF0YWdyaWRUaXRsZShwYXJlbnREYXRh LCBuYW1lc3BhY2VOYW1lLCBub2RlLmdldERhdGEoKSk7CisKKyAgZGF0YWdyaWQuY3JlYXRlX3Ry YW5zYWN0aW9uKAorICAgIGJhc2VVcmwsCisgICAgbnVsbCwKKyAgICAnZmFsc2UnLAorICAgIHBh cmVudERhdGEuc2VydmVyLnNlcnZlcl90eXBlLAorICAgICcnLAorICAgIGdyaWRfdGl0bGUsCisg ICAgJycKKyAgKTsKK30KKworCitmdW5jdGlvbiByZXRyaWV2ZU5hbWVTcGFjZU5hbWUocGFyZW50 RGF0YSkgeworICBpZiAocGFyZW50RGF0YS5zY2hlbWEgIT09IHVuZGVmaW5lZCkgeworICAgIHJl dHVybiBwYXJlbnREYXRhLnNjaGVtYS5sYWJlbDsKKyAgfQorICBlbHNlIGlmIChwYXJlbnREYXRh LnZpZXcgIT09IHVuZGVmaW5lZCkgeworICAgIHJldHVybiBwYXJlbnREYXRhLnZpZXcubGFiZWw7 CisgIH0KKyAgZWxzZSBpZiAocGFyZW50RGF0YS5jYXRhbG9nICE9PSB1bmRlZmluZWQpIHsKKyAg ICByZXR1cm4gcGFyZW50RGF0YS5jYXRhbG9nLmxhYmVsOworICB9CisgIHJldHVybiAnJzsKK30K KworZnVuY3Rpb24gZ2VuZXJhdGVVcmwoY29ubmVjdGlvbkRhdGEsIG5vZGVEYXRhLCBwYXJlbnRE YXRhKSB7CisgIGNvbnN0IHVybF9wYXJhbXMgPSB7CisgICAgJ2NtZF90eXBlJzogY29ubmVjdGlv bkRhdGEubW51aWQsCisgICAgJ29ial90eXBlJzogbm9kZURhdGEuX3R5cGUsCisgICAgJ3NnaWQn OiBwYXJlbnREYXRhLnNlcnZlcl9ncm91cC5faWQsCisgICAgJ3NpZCc6IHBhcmVudERhdGEuc2Vy dmVyLl9pZCwKKyAgICAnZGlkJzogcGFyZW50RGF0YS5kYXRhYmFzZS5faWQsCisgICAgJ29ial9p ZCc6IG5vZGVEYXRhLl9pZCwKKyAgfTsKKworICByZXR1cm4gdXJsX2ZvcignZGF0YWdyaWQuaW5p dGlhbGl6ZV9kYXRhZ3JpZCcsIHVybF9wYXJhbXMpOworfQorCitmdW5jdGlvbiBoYXNTZXJ2ZXJP ckRhdGFiYXNlQ29uZmlndXJhdGlvbihwYXJlbnREYXRhKSB7CisgIHJldHVybiBwYXJlbnREYXRh LnNlcnZlciA9PT0gdW5kZWZpbmVkIHx8IHBhcmVudERhdGEuZGF0YWJhc2UgPT09IHVuZGVmaW5l ZDsKK30KKworZnVuY3Rpb24gaGFzU2NoZW1hT3JDYXRhbG9nT3JWaWV3SW5mb3JtYXRpb24ocGFy ZW50RGF0YSkgeworICByZXR1cm4gcGFyZW50RGF0YS5zY2hlbWEgIT09IHVuZGVmaW5lZCB8fCBw YXJlbnREYXRhLnZpZXcgIT09IHVuZGVmaW5lZCB8fAorICAgIHBhcmVudERhdGEuY2F0YWxvZyAh PT0gdW5kZWZpbmVkOworfQorCitmdW5jdGlvbiBnZW5lcmF0ZURhdGFncmlkVGl0bGUocGFyZW50 RGF0YSwgbmFtZXNwYWNlTmFtZSwgbm9kZURhdGEpIHsKKyAgcmV0dXJuIGAke3BhcmVudERhdGEu c2VydmVyLmxhYmVsfSAtICR7cGFyZW50RGF0YS5kYXRhYmFzZS5sYWJlbH0gLSAke25hbWVzcGFj ZU5hbWV9LiR7bm9kZURhdGEubGFiZWx9YDsKK30KZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3Rv b2xzL2RhdGFncmlkL3N0YXRpYy9qcy9zaG93X3F1ZXJ5X3Rvb2wuanMgYi93ZWIvcGdhZG1pbi90 b29scy9kYXRhZ3JpZC9zdGF0aWMvanMvc2hvd19xdWVyeV90b29sLmpzCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAwLi4wZWIxMmI4YgotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9w Z2FkbWluL3Rvb2xzL2RhdGFncmlkL3N0YXRpYy9qcy9zaG93X3F1ZXJ5X3Rvb2wuanMKQEAgLTAs MCArMSw2MyBAQAorLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLworLy8KKy8vIHBnQWRtaW4gNCAtIFBvc3RncmVTUUwgVG9vbHMKKy8v CisvLyBDb3B5cmlnaHQgKEMpIDIwMTMgLSAyMDE4LCBUaGUgcGdBZG1pbiBEZXZlbG9wbWVudCBU ZWFtCisvLyBUaGlzIHNvZnR3YXJlIGlzIHJlbGVhc2VkIHVuZGVyIHRoZSBQb3N0Z3JlU1FMIExp Y2VuY2UKKy8vCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLworCitpbXBvcnQgZ2V0dGV4dCBmcm9tICcuLi8uLi8uLi8uLi9zdGF0 aWMvanMvZ2V0dGV4dCc7CitpbXBvcnQgdXJsX2ZvciBmcm9tICcuLi8uLi8uLi8uLi9zdGF0aWMv anMvdXJsX2Zvcic7CitpbXBvcnQge2dldFRyZWVOb2RlSGllcmFyY2h5RnJvbUlkZW50aWZpZXJ9 IGZyb20gJy4uLy4uLy4uLy4uL3N0YXRpYy9qcy90cmVlL3BnYWRtaW5fdHJlZV9ub2RlJzsKKwor ZnVuY3Rpb24gaGFzRGF0YWJhc2VJbmZvcm1hdGlvbihwYXJlbnREYXRhKSB7CisgIHJldHVybiBw YXJlbnREYXRhLmRhdGFiYXNlOworfQorCitmdW5jdGlvbiBnZW5lcmF0ZVVybChwYXJlbnREYXRh KSB7CisgIGxldCB1cmxfZW5kcG9pbnQgPSAnZGF0YWdyaWQuaW5pdGlhbGl6ZV9xdWVyeV90b29s JzsKKyAgbGV0IHVybF9wYXJhbXMgPSB7CisgICAgJ3NnaWQnOiBwYXJlbnREYXRhLnNlcnZlcl9n cm91cC5faWQsCisgICAgJ3NpZCc6IHBhcmVudERhdGEuc2VydmVyLl9pZCwKKyAgfTsKKworICBp ZiAoaGFzRGF0YWJhc2VJbmZvcm1hdGlvbihwYXJlbnREYXRhKSkgeworICAgIHVybF9wYXJhbXNb J2RpZCddID0gcGFyZW50RGF0YS5kYXRhYmFzZS5faWQ7CisgICAgdXJsX2VuZHBvaW50ID0gJ2Rh dGFncmlkLmluaXRpYWxpemVfcXVlcnlfdG9vbF93aXRoX2RpZCc7CisgIH0KKworICByZXR1cm4g dXJsX2Zvcih1cmxfZW5kcG9pbnQsIHVybF9wYXJhbXMpOworfQorCitmdW5jdGlvbiBoYXNTZXJ2 ZXJJbmZvcm1hdGlvbnMocGFyZW50RGF0YSkgeworICByZXR1cm4gcGFyZW50RGF0YS5zZXJ2ZXIg PT09IHVuZGVmaW5lZDsKK30KKworZXhwb3J0IGZ1bmN0aW9uIHNob3dRdWVyeVRvb2woZGF0YWdy aWQsIHBnQnJvd3NlciwgYWxlcnRpZnksIHVybCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGFjaVRyZWVJZGVudGlmaWVyLCBwYW5lbFRpdGxlKSB7CisgIGNvbnN0IHNVUkwgPSB1cmwg fHwgJyc7CisgIGNvbnN0IHF1ZXJ5VG9vbFRpdGxlID0gcGFuZWxUaXRsZSB8fCAnJzsKKworICBj b25zdCBjdXJyZW50Tm9kZSA9IHBnQnJvd3Nlci50cmVlTWVudS5maW5kTm9kZUJ5RG9tRWxlbWVu dChhY2lUcmVlSWRlbnRpZmllcik7CisgIGlmIChjdXJyZW50Tm9kZSA9PT0gdW5kZWZpbmVkKSB7 CisgICAgYWxlcnRpZnkuYWxlcnQoCisgICAgICBnZXR0ZXh0KCdRdWVyeSBUb29sIEVycm9yJyks CisgICAgICBnZXR0ZXh0KCdObyBvYmplY3Qgc2VsZWN0ZWQuJykKKyAgICApOworICAgIHJldHVy bjsKKyAgfQorCisgIGNvbnN0IHBhcmVudERhdGEgPSBnZXRUcmVlTm9kZUhpZXJhcmNoeUZyb21J ZGVudGlmaWVyLmNhbGwoCisgICAgcGdCcm93c2VyLCBhY2lUcmVlSWRlbnRpZmllcik7CisKKyAg aWYgKGhhc1NlcnZlckluZm9ybWF0aW9ucyhwYXJlbnREYXRhKSkgeworICAgIHJldHVybjsKKyAg fQorCisgIGNvbnN0IGJhc2VVcmwgPSBnZW5lcmF0ZVVybChwYXJlbnREYXRhKTsKKworICBkYXRh Z3JpZC5jcmVhdGVfdHJhbnNhY3Rpb24oCisgICAgYmFzZVVybCwgbnVsbCwgJ3RydWUnLAorICAg IHBhcmVudERhdGEuc2VydmVyLnNlcnZlcl90eXBlLCBzVVJMLCBxdWVyeVRvb2xUaXRsZSwgJycs IGZhbHNlKTsKK30KZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3Rvb2xzL2dyYW50X3dpemFyZC9z dGF0aWMvanMvZ3JhbnRfd2l6YXJkLmpzIGIvd2ViL3BnYWRtaW4vdG9vbHMvZ3JhbnRfd2l6YXJk L3N0YXRpYy9qcy9ncmFudF93aXphcmQuanMKaW5kZXggNzUwODg3ZWMuLmNmMjM0ZjFkIDEwMDY0 NAotLS0gYS93ZWIvcGdhZG1pbi90b29scy9ncmFudF93aXphcmQvc3RhdGljL2pzL2dyYW50X3dp emFyZC5qcworKysgYi93ZWIvcGdhZG1pbi90b29scy9ncmFudF93aXphcmQvc3RhdGljL2pzL2dy YW50X3dpemFyZC5qcwpAQCAtMiwxMiArMiwxNiBAQAogZGVmaW5lKFsKICAgJ3NvdXJjZXMvZ2V0 dGV4dCcsICdzb3VyY2VzL3VybF9mb3InLCAnanF1ZXJ5JywgJ3VuZGVyc2NvcmUnLCAnYmFja2Jv bmUnLAogICAncGdhZG1pbi5hbGVydGlmeWpzJywgJ3BnYWRtaW4uYmFja2dyaWQnLCAncGdhZG1p bi5iYWNrZm9ybScsCi0gICdwZ2FkbWluLmJyb3dzZXInLCAncGdhZG1pbi5icm93c2VyLm5vZGUn LCAnYmFja2dyaWQuc2VsZWN0LmFsbCcsCisgICdwZ2FkbWluLmJyb3dzZXInLCAncGdhZG1pbi5i cm93c2VyLm5vZGUnLAorICAndG9vbHMvZ3JhbnRfd2l6YXJkL3N0YXRpYy9qcy9tZW51X3V0aWxz JywKKyAgJ3NvdXJjZXMvbWVudS9tZW51X2VuYWJsZWQnLAorCisgICdiYWNrZ3JpZC5zZWxlY3Qu YWxsJywKICAgJ2JhY2tncmlkLmZpbHRlcicsICdwZ2FkbWluLmJyb3dzZXIuc2VydmVyLnByaXZp bGVnZScsCiAgICdwZ2FkbWluLmJyb3dzZXIud2l6YXJkJywKIF0sIGZ1bmN0aW9uKAogICBnZXR0 ZXh0LCB1cmxfZm9yLCAkLCBfLCBCYWNrYm9uZSwgQWxlcnRpZnksIEJhY2tncmlkLCBCYWNrZm9y bSwgcGdCcm93c2VyLAotICBwZ05vZGUKKyAgcGdOb2RlLCBtZW51VXRpbHMsIG1lbnVFbmFibGVk CiApIHsKIAogICAvLyBpZiBtb2R1bGUgaXMgYWxyZWFkeSBpbml0aWFsaXplZCwgcmVmZXIgdG8g dGhhdC4KQEAgLTE0Myw0MSArMTQ3LDYgQEAgZGVmaW5lKFsKIAogICAgICAgdGhpcy5pbml0aWFs aXplZCA9IHRydWU7CiAKLSAgICAgIC8vIERlZmluZSBsaXN0IG9mIG5vZGVzIG9uIHdoaWNoIGdy YW50IHdpemFyZCBjb250ZXh0IG1lbnUgb3B0aW9uIGFwcGVhcnMKLSAgICAgIHZhciBzdXBwb3J0 ZWRfbm9kZXMgPSBbCi0gICAgICAgICAgJ3NjaGVtYScsICdjb2xsLWZ1bmN0aW9uJywgJ2NvbGwt c2VxdWVuY2UnLAotICAgICAgICAgICdjb2xsLXRhYmxlJywgJ2NvbGwtdmlldycsICdjb2xsLXBy b2NlZHVyZScsCi0gICAgICAgICAgJ2NvbGwtbXZpZXcnLCAnZGF0YWJhc2UnLCAnY29sbC10cmln Z2VyX2Z1bmN0aW9uJywKLSAgICAgICAgXSwKLQotICAgICAgICAvKioKLSAgICAgICAgICBFbmFi bGUvZGlzYWJsZSBncmFudHdpemFyZCBtZW51IGluIHRvb2xzIGJhc2VkCi0gICAgICAgICAgb24g bm9kZSBzZWxlY3RlZAotICAgICAgICAgIGlmIHNlbGVjdGVkIG5vZGUgaXMgcHJlc2VudCBpbiBz dXBwb3J0ZWRfbm9kZXMsCi0gICAgICAgICAgbWVudSB3aWxsIGJlIGVuYWJsZWQgb3RoZXJ3aXNl IGRpc2FibGVkLgotICAgICAgICAgIEFsc28sIGhpZGUgaXQgZm9yIHN5c3RlbSB2aWV3IGluIGNh dGFsb2dzCi0gICAgICAgICovCi0gICAgICAgIG1lbnVfZW5hYmxlZCA9IGZ1bmN0aW9uKGl0ZW1E YXRhLCBpdGVtKSB7Ci0gICAgICAgICAgdmFyIHQgPSBwZ0Jyb3dzZXIudHJlZSwKLSAgICAgICAg ICAgIGkgPSBpdGVtLAotICAgICAgICAgICAgZCA9IGl0ZW1EYXRhOwotICAgICAgICAgIHZhciBw YXJlbnRfaXRlbSA9IHQuaGFzUGFyZW50KGkpID8gdC5wYXJlbnQoaSkgOiBudWxsLAotICAgICAg ICAgICAgcGFyZW50X2RhdGEgPSBwYXJlbnRfaXRlbSA/IHQuaXRlbURhdGEocGFyZW50X2l0ZW0p IDogbnVsbDsKLSAgICAgICAgICBpZiAoIV8uaXNVbmRlZmluZWQoZCkgJiYgIV8uaXNOdWxsKGQp ICYmICFfLmlzTnVsbChwYXJlbnRfZGF0YSkpIHsKLSAgICAgICAgICAgIGlmIChfLmluZGV4T2Yo c3VwcG9ydGVkX25vZGVzLCBkLl90eXBlKSAhPT0gLTEgJiYKLSAgICAgICAgICAgICAgcGFyZW50 X2RhdGEuX3R5cGUgIT0gJ2NhdGFsb2cnKSB7Ci0gICAgICAgICAgICAgIGlmIChkLl90eXBlID09 ICdkYXRhYmFzZScgJiYgZC5hbGxvd0Nvbm4pCi0gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7 Ci0gICAgICAgICAgICAgIGVsc2UgaWYgKGQuX3R5cGUgIT0gJ2RhdGFiYXNlJykKLSAgICAgICAg ICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAg IHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICByZXR1cm4g ZmFsc2U7Ci0gICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg ICAgIH07Ci0KICAgICAgIC8vIERlZmluZSB0aGUgbm9kZXMgb24gd2hpY2ggdGhlIG1lbnVzIHRv IGJlIGFwcGVhcgogICAgICAgdmFyIG1lbnVzID0gW3sKICAgICAgICAgbmFtZTogJ2dyYW50X3dp emFyZF9zY2hlbWEnLApAQCAtMTg3LDIxICsxNTYsMjMgQEAgZGVmaW5lKFsKICAgICAgICAgcHJp b3JpdHk6IDE0LAogICAgICAgICBsYWJlbDogZ2V0dGV4dCgnR3JhbnQgV2l6YXJkLi4uJyksCiAg ICAgICAgIGljb246ICdmYSBmYS11bmxvY2stYWx0JywKLSAgICAgICAgZW5hYmxlOiBtZW51X2Vu YWJsZWQsCisgICAgICAgIGVuYWJsZTogbWVudUVuYWJsZWQubWVudUVuYWJsZWQuYmluZChudWxs LAorICAgICAgICAgIHBnQnJvd3Nlci50cmVlTWVudSwgbWVudVV0aWxzLnN1cHBvcnRlZE5vZGVz KSwKICAgICAgIH1dOwogCiAgICAgICAvLyBBZGQgc3VwcG9ydGVkIG1lbnVzIGludG8gdGhlIG1l bnVzIGxpc3QKLSAgICAgIGZvciAodmFyIGlkeCA9IDA7IGlkeCA8IHN1cHBvcnRlZF9ub2Rlcy5s ZW5ndGg7IGlkeCsrKSB7CisgICAgICBmb3IgKHZhciBpZHggPSAwOyBpZHggPCBtZW51VXRpbHMu c3VwcG9ydGVkTm9kZXMubGVuZ3RoOyBpZHgrKykgewogICAgICAgICBtZW51cy5wdXNoKHsKLSAg ICAgICAgICBuYW1lOiAnZ3JhbnRfd2l6YXJkX3NjaGVtYV9jb250ZXh0XycgKyBzdXBwb3J0ZWRf bm9kZXNbaWR4XSwKLSAgICAgICAgICBub2RlOiBzdXBwb3J0ZWRfbm9kZXNbaWR4XSwKKyAgICAg ICAgICBuYW1lOiAnZ3JhbnRfd2l6YXJkX3NjaGVtYV9jb250ZXh0XycgKyBtZW51VXRpbHMuc3Vw cG9ydGVkTm9kZXNbaWR4XSwKKyAgICAgICAgICBub2RlOiBtZW51VXRpbHMuc3VwcG9ydGVkTm9k ZXNbaWR4XSwKICAgICAgICAgICBtb2R1bGU6IHRoaXMsCiAgICAgICAgICAgYXBwbGllczogWydj b250ZXh0J10sCiAgICAgICAgICAgY2FsbGJhY2s6ICdzdGFydF9ncmFudF93aXphcmQnLAogICAg ICAgICAgIHByaW9yaXR5OiAxNCwKICAgICAgICAgICBsYWJlbDogZ2V0dGV4dCgnR3JhbnQgV2l6 YXJkLi4uJyksCiAgICAgICAgICAgaWNvbjogJ2ZhIGZhLXVubG9jay1hbHQnLAotICAgICAgICAg IGVuYWJsZTogbWVudV9lbmFibGVkLAorICAgICAgICAgIGVuYWJsZTogbWVudUVuYWJsZWQubWVu dUVuYWJsZWQuYmluZChudWxsLAorICAgICAgICAgICAgcGdCcm93c2VyLnRyZWVNZW51LCBtZW51 VXRpbHMuc3VwcG9ydGVkTm9kZXMpLAogICAgICAgICB9KTsKICAgICAgIH0KICAgICAgIHBnQnJv d3Nlci5hZGRfbWVudXMobWVudXMpOwpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vdG9vbHMvZ3Jh bnRfd2l6YXJkL3N0YXRpYy9qcy9tZW51X3V0aWxzLmpzIGIvd2ViL3BnYWRtaW4vdG9vbHMvZ3Jh bnRfd2l6YXJkL3N0YXRpYy9qcy9tZW51X3V0aWxzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAwLi5iNTZjZTNjZAotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL3Rv b2xzL2dyYW50X3dpemFyZC9zdGF0aWMvanMvbWVudV91dGlscy5qcwpAQCAtMCwwICsxLDE2IEBA CisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vCisvLworLy8gcGdBZG1pbiA0IC0gUG9zdGdyZVNRTCBUb29scworLy8KKy8vIENvcHly aWdodCAoQykgMjAxMyAtIDIwMTgsIFRoZSBwZ0FkbWluIERldmVsb3BtZW50IFRlYW0KKy8vIFRo aXMgc29mdHdhcmUgaXMgcmVsZWFzZWQgdW5kZXIgdGhlIFBvc3RncmVTUUwgTGljZW5jZQorLy8K Ky8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vCisKK2V4cG9ydCBjb25zdCBzdXBwb3J0ZWROb2RlcyA9IFsKKyAgJ3NjaGVtYScsICdj b2xsLWZ1bmN0aW9uJywgJ2NvbGwtc2VxdWVuY2UnLAorICAnY29sbC10YWJsZScsICdjb2xsLXZp ZXcnLCAnY29sbC1wcm9jZWR1cmUnLAorICAnY29sbC1tdmlldycsICdkYXRhYmFzZScsICdjb2xs LXRyaWdnZXJfZnVuY3Rpb24nLAorXTsKKworCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi90b29s cy9pbXBvcnRfZXhwb3J0L3N0YXRpYy9qcy9pbXBvcnRfZXhwb3J0LmpzIGIvd2ViL3BnYWRtaW4v dG9vbHMvaW1wb3J0X2V4cG9ydC9zdGF0aWMvanMvaW1wb3J0X2V4cG9ydC5qcwppbmRleCAzMDU4 ZjEyMi4uYmJiMDQ1Y2QgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL3Rvb2xzL2ltcG9ydF9leHBv cnQvc3RhdGljL2pzL2ltcG9ydF9leHBvcnQuanMKKysrIGIvd2ViL3BnYWRtaW4vdG9vbHMvaW1w b3J0X2V4cG9ydC9zdGF0aWMvanMvaW1wb3J0X2V4cG9ydC5qcwpAQCAtMSwxMCArMSwxMyBAQAog ZGVmaW5lKFsKICAgJ3NvdXJjZXMvZ2V0dGV4dCcsICdzb3VyY2VzL3VybF9mb3InLCAnanF1ZXJ5 JywgJ3VuZGVyc2NvcmUnLCAndW5kZXJzY29yZS5zdHJpbmcnLCAncGdhZG1pbi5hbGVydGlmeWpz JywKICAgJ3NvdXJjZXMvcGdhZG1pbicsICdwZ2FkbWluLmJyb3dzZXInLCAnYmFja2JvbmUnLCAn YmFja2dyaWQnLCAnYmFja2Zvcm0nLAotICAnc291cmNlcy91dGlscycsICdwZ2FkbWluLmJhY2tm b3JtJywgJ3BnYWRtaW4uYmFja2dyaWQnLCAncGdhZG1pbi5icm93c2VyLm5vZGUudWknLAorICAn c291cmNlcy91dGlscycsCisgICdzb3VyY2VzL21lbnUvbWVudV9lbmFibGVkJywKKworICAncGdh ZG1pbi5iYWNrZm9ybScsICdwZ2FkbWluLmJhY2tncmlkJywgJ3BnYWRtaW4uYnJvd3Nlci5ub2Rl LnVpJywKIF0sIGZ1bmN0aW9uKAogICBnZXR0ZXh0LCB1cmxfZm9yLCAkLCBfLCBTLCBBbGVydGlm eSwgcGdBZG1pbiwgcGdCcm93c2VyLCBCYWNrYm9uZSwgQmFja2dyaWQsCi1CYWNrZm9ybSwgY29t bW9uVXRpbHMKK0JhY2tmb3JtLCBjb21tb25VdGlscywgbWVudUVuYWJsZWQKICkgewogCiAgIHBn QWRtaW4gPSBwZ0FkbWluIHx8IHdpbmRvdy5wZ0FkbWluIHx8IHt9OwpAQCAtMzgzLDI1ICszODYs NiBAQCBCYWNrZm9ybSwgY29tbW9uVXRpbHMKIAogICAgICAgdGhpcy5pbml0aWFsaXplZCA9IHRy dWU7CiAKLSAgICAgIC8qCi0gICAgICAgKiBFbmFibGUvZGlzYWJsZSBpbXBvcnQgbWVudSBpbiB0 b29scyBiYXNlZCBvbiBub2RlIHNlbGVjdGVkLiBJbXBvcnQKLSAgICAgICAqIG1lbnUgd2lsbCBi ZSBlbmFibGVkIG9ubHkgd2hlbiB1c2VyIHNlbGVjdCB0YWJsZSBub2RlLgotICAgICAgICovCi0g ICAgICB2YXIgbWVudV9lbmFibGVkID0gZnVuY3Rpb24oaXRlbURhdGEsIGl0ZW0pIHsKLSAgICAg ICAgdmFyIHQgPSBwZ0Jyb3dzZXIudHJlZSwKLSAgICAgICAgICBpID0gaXRlbSwKLSAgICAgICAg ICBkID0gaXRlbURhdGE7Ci0gICAgICAgIHZhciBwYXJlbnRfaXRlbSA9IHQuaGFzUGFyZW50KGkp ID8gdC5wYXJlbnQoaSkgOiBudWxsLAotICAgICAgICAgIHBhcmVudF9kYXRhID0gcGFyZW50X2l0 ZW0gPyB0Lml0ZW1EYXRhKHBhcmVudF9pdGVtKSA6IG51bGw7Ci0gICAgICAgIGlmICghXy5pc1Vu ZGVmaW5lZChkKSAmJiAhXy5pc051bGwoZCkgJiYgIV8uaXNOdWxsKHBhcmVudF9kYXRhKSkKLSAg ICAgICAgICByZXR1cm4gKAotICAgICAgICAgICAgKF8uaW5kZXhPZihbJ3RhYmxlJ10sIGQuX3R5 cGUpICE9PSAtMSAmJgotICAgICAgICAgICAgICBwYXJlbnRfZGF0YS5fdHlwZSAhPSAnY2F0YWxv ZycpID8gdHJ1ZSA6IGZhbHNlCi0gICAgICAgICAgKTsKLSAgICAgICAgZWxzZQotICAgICAgICAg IHJldHVybiBmYWxzZTsKLSAgICAgIH07Ci0KICAgICAgIC8vIEluaXRpYWxpemUgdGhlIGNvbnRl eHQgbWVudSB0byBkaXNwbGF5IHRoZSBpbXBvcnQgb3B0aW9ucyB3aGVuIHVzZXIgb3BlbiB0aGUg Y29udGV4dCBtZW51IGZvciB0YWJsZQogICAgICAgcGdCcm93c2VyLmFkZF9tZW51cyhbewogICAg ICAgICBuYW1lOiAnaW1wb3J0JywKQEAgLTQxMyw3ICszOTcsNyBAQCBCYWNrZm9ybSwgY29tbW9u VXRpbHMKICAgICAgICAgcHJpb3JpdHk6IDEwLAogICAgICAgICBsYWJlbDogZ2V0dGV4dCgnSW1w b3J0L0V4cG9ydC4uLicpLAogICAgICAgICBpY29uOiAnZmEgZmEtc2hvcHBpbmctY2FydCcsCi0g ICAgICAgIGVuYWJsZTogbWVudV9lbmFibGVkLAorICAgICAgICBlbmFibGU6IG1lbnVFbmFibGVk Lm1lbnVFbmFibGVkLmJpbmQobnVsbCwgcGdCcm93c2VyLnRyZWVNZW51LCBbJ3RhYmxlJ10pLAog ICAgICAgfV0pOwogICAgIH0sCiAKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3Rvb2xzL21haW50 ZW5hbmNlL3N0YXRpYy9qcy9tYWludGVuYW5jZS5qcyBiL3dlYi9wZ2FkbWluL3Rvb2xzL21haW50 ZW5hbmNlL3N0YXRpYy9qcy9tYWludGVuYW5jZS5qcwppbmRleCA4MWU0NTk0NC4uZjMyY2U1YzQg MTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL3Rvb2xzL21haW50ZW5hbmNlL3N0YXRpYy9qcy9tYWlu dGVuYW5jZS5qcworKysgYi93ZWIvcGdhZG1pbi90b29scy9tYWludGVuYW5jZS9zdGF0aWMvanMv bWFpbnRlbmFuY2UuanMKQEAgLTIsMTEgKzIsMTQgQEAgZGVmaW5lKFsKICAgJ3NvdXJjZXMvZ2V0 dGV4dCcsICdzb3VyY2VzL3VybF9mb3InLCAnanF1ZXJ5JywgJ3VuZGVyc2NvcmUnLAogICAndW5k ZXJzY29yZS5zdHJpbmcnLCAncGdhZG1pbi5hbGVydGlmeWpzJywgJ3NvdXJjZXMvcGdhZG1pbics ICdwZ2FkbWluLmJyb3dzZXInLCAnYmFja2JvbmUnLAogICAnYmFja2dyaWQnLCAnYmFja2Zvcm0n LCAnc291cmNlcy91dGlscycsCisgICd0b29scy9tYWludGVuYW5jZS9zdGF0aWMvanMvbWVudV91 dGlscycsCisgICdzb3VyY2VzL21lbnUvbWVudV9lbmFibGVkJywKICAgJ3BnYWRtaW4uYmFja2Zv cm0nLCAncGdhZG1pbi5iYWNrZ3JpZCcsCiAgICdwZ2FkbWluLmJyb3dzZXIubm9kZS51aScsCiBd LCBmdW5jdGlvbigKICAgZ2V0dGV4dCwgdXJsX2ZvciwgJCwgXywgUywgQWxlcnRpZnksIHBnQWRt aW4sIHBnQnJvd3NlciwgQmFja2JvbmUsIEJhY2tncmlkLAotICBCYWNrZm9ybSwgY29tbW9uVXRp bHMKKyAgQmFja2Zvcm0sIGNvbW1vblV0aWxzLAorICBtZW51VXRpbHMsIG1lbnVFbmFibGVkCiAp IHsKIAogICBwZ0FkbWluID0gcGdBZG1pbiB8fCB3aW5kb3cucGdBZG1pbiB8fCB7fTsKQEAgLTE2 OCwzNiArMTcxLDYgQEAgZGVmaW5lKFsKIAogICAgICAgdGhpcy5pbml0aWFsaXplZCA9IHRydWU7 CiAKLSAgICAgIHZhciBtYWludGVuYW5jZV9zdXBwb3J0ZWRfbm9kZXMgPSBbCi0gICAgICAgICdk YXRhYmFzZScsICd0YWJsZScsICdwcmltYXJ5X2tleScsCi0gICAgICAgICd1bmlxdWVfY29uc3Ry YWludCcsICdpbmRleCcsICdwYXJ0aXRpb24nLAotICAgICAgXTsKLQotICAgICAgLyoqCi0gICAg ICAgRW5hYmxlL2Rpc2FibGUgTWFpbnRlbmFuY2UgbWVudSBpbiB0b29scyBiYXNlZCBvbiBub2Rl IHNlbGVjdGVkLgotICAgICAgIE1haW50ZW5hbmNlIG1lbnUgd2lsbCBiZSBlbmFibGVkIG9ubHkg d2hlbiB1c2VyIHNlbGVjdCB0YWJsZSBhbmQgZGF0YWJhc2Ugbm9kZS4KLSAgICAgICovCi0gICAg ICB2YXIgbWVudV9lbmFibGVkID0gZnVuY3Rpb24oaXRlbURhdGEsIGl0ZW0pIHsKLSAgICAgICAg dmFyIHQgPSBwZ0Jyb3dzZXIudHJlZSwKLSAgICAgICAgICBpID0gaXRlbSwKLSAgICAgICAgICBk ID0gaXRlbURhdGE7Ci0gICAgICAgIHZhciBwYXJlbnRfaXRlbSA9IHQuaGFzUGFyZW50KGkpID8g dC5wYXJlbnQoaSkgOiBudWxsLAotICAgICAgICAgIHBhcmVudF9kYXRhID0gcGFyZW50X2l0ZW0g PyB0Lml0ZW1EYXRhKHBhcmVudF9pdGVtKSA6IG51bGw7Ci0gICAgICAgIGlmICghXy5pc1VuZGVm aW5lZChkKSAmJiAhXy5pc051bGwoZCkgJiYgIV8uaXNOdWxsKHBhcmVudF9kYXRhKSkgewotICAg ICAgICAgIGlmIChfLmluZGV4T2YobWFpbnRlbmFuY2Vfc3VwcG9ydGVkX25vZGVzLCBkLl90eXBl KSAhPT0gLTEgJiYKLSAgICAgICAgICAgIHBhcmVudF9kYXRhLl90eXBlICE9ICdjYXRhbG9nJykg ewotICAgICAgICAgICAgaWYgKGQuX3R5cGUgPT0gJ2RhdGFiYXNlJyAmJiBkLmFsbG93Q29ubikK LSAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICBlbHNlIGlmIChkLl90eXBl ICE9ICdkYXRhYmFzZScpCi0gICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAg ZWxzZQotICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgfSBlbHNlCi0gICAg ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgIHJldHVybiBm YWxzZTsKLSAgICAgIH07Ci0KICAgICAgIHZhciBtZW51cyA9IFt7CiAgICAgICAgIG5hbWU6ICdt YWludGVuYW5jZScsCiAgICAgICAgIG1vZHVsZTogdGhpcywKQEAgLTIwNiwyMSArMTc5LDIzIEBA IGRlZmluZShbCiAgICAgICAgIHByaW9yaXR5OiAxMCwKICAgICAgICAgbGFiZWw6IGdldHRleHQo J01haW50ZW5hbmNlLi4uJyksCiAgICAgICAgIGljb246ICdmYSBmYS13cmVuY2gnLAotICAgICAg ICBlbmFibGU6IG1lbnVfZW5hYmxlZCwKKyAgICAgICAgZW5hYmxlOiBtZW51RW5hYmxlZC5tZW51 RW5hYmxlZC5iaW5kKG51bGwsCisgICAgICAgICAgcGdCcm93c2VyLnRyZWVNZW51LCBtZW51VXRp bHMubWFpbnRlbmFuY2VTdXBwb3J0ZWROb2RlcyksCiAgICAgICB9XTsKIAogICAgICAgLy8gQWRk IHN1cHBvcnRlZCBtZW51cyBpbnRvIHRoZSBtZW51cyBsaXN0Ci0gICAgICBmb3IgKHZhciBpZHgg PSAwOyBpZHggPCBtYWludGVuYW5jZV9zdXBwb3J0ZWRfbm9kZXMubGVuZ3RoOyBpZHgrKykgewor ICAgICAgZm9yICh2YXIgaWR4ID0gMDsgaWR4IDwgbWVudVV0aWxzLm1haW50ZW5hbmNlU3VwcG9y dGVkTm9kZXMubGVuZ3RoOyBpZHgrKykgewogICAgICAgICBtZW51cy5wdXNoKHsKLSAgICAgICAg ICBuYW1lOiAnbWFpbnRlbmFuY2VfY29udGV4dF8nICsgbWFpbnRlbmFuY2Vfc3VwcG9ydGVkX25v ZGVzW2lkeF0sCi0gICAgICAgICAgbm9kZTogbWFpbnRlbmFuY2Vfc3VwcG9ydGVkX25vZGVzW2lk eF0sCisgICAgICAgICAgbmFtZTogJ21haW50ZW5hbmNlX2NvbnRleHRfJyArIG1lbnVVdGlscy5t YWludGVuYW5jZVN1cHBvcnRlZE5vZGVzW2lkeF0sCisgICAgICAgICAgbm9kZTogbWVudVV0aWxz Lm1haW50ZW5hbmNlU3VwcG9ydGVkTm9kZXNbaWR4XSwKICAgICAgICAgICBtb2R1bGU6IHRoaXMs CiAgICAgICAgICAgYXBwbGllczogWydjb250ZXh0J10sCiAgICAgICAgICAgY2FsbGJhY2s6ICdj YWxsYmFja19tYWludGVuYW5jZScsCiAgICAgICAgICAgcHJpb3JpdHk6IDEwLAogICAgICAgICAg IGxhYmVsOiBnZXR0ZXh0KCdNYWludGVuYW5jZS4uLicpLAogICAgICAgICAgIGljb246ICdmYSBm YS13cmVuY2gnLAotICAgICAgICAgIGVuYWJsZTogbWVudV9lbmFibGVkLAorICAgICAgICAgIGVu YWJsZTogIG1lbnVFbmFibGVkLm1lbnVFbmFibGVkLmJpbmQobnVsbCwKKyAgICAgICAgICBwZ0Jy b3dzZXIudHJlZU1lbnUsIG1lbnVVdGlscy5tYWludGVuYW5jZVN1cHBvcnRlZE5vZGVzKSwKICAg ICAgICAgfSk7CiAgICAgICB9CiAgICAgICBwZ0Jyb3dzZXIuYWRkX21lbnVzKG1lbnVzKTsKZGlm ZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3Rvb2xzL21haW50ZW5hbmNlL3N0YXRpYy9qcy9tZW51X3V0 aWxzLmpzIGIvd2ViL3BnYWRtaW4vdG9vbHMvbWFpbnRlbmFuY2Uvc3RhdGljL2pzL21lbnVfdXRp bHMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAuLjhjZGUxYmFhCi0tLSAv ZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vdG9vbHMvbWFpbnRlbmFuY2Uvc3RhdGljL2pzL21l bnVfdXRpbHMuanMKQEAgLTAsMCArMSwxMyBAQAorLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworLy8KKy8vIHBnQWRtaW4gNCAtIFBv c3RncmVTUUwgVG9vbHMKKy8vCisvLyBDb3B5cmlnaHQgKEMpIDIwMTMgLSAyMDE4LCBUaGUgcGdB ZG1pbiBEZXZlbG9wbWVudCBUZWFtCisvLyBUaGlzIHNvZnR3YXJlIGlzIHJlbGVhc2VkIHVuZGVy IHRoZSBQb3N0Z3JlU1FMIExpY2VuY2UKKy8vCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworCitleHBvcnQgY29uc3QgbWFpbnRl bmFuY2VTdXBwb3J0ZWROb2RlcyA9IFsKKyAgJ2RhdGFiYXNlJywgJ3RhYmxlJywgJ3ByaW1hcnlf a2V5JywKKyAgJ3VuaXF1ZV9jb25zdHJhaW50JywgJ2luZGV4JywgJ3BhcnRpdGlvbicsCitdOwpk aWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vdG9vbHMvcmVzdG9yZS9zdGF0aWMvanMvbWVudV91dGls cy5qcyBiL3dlYi9wZ2FkbWluL3Rvb2xzL3Jlc3RvcmUvc3RhdGljL2pzL21lbnVfdXRpbHMuanMK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAuLjJkMzVjOTUxCi0tLSAvZGV2L251 bGwKKysrIGIvd2ViL3BnYWRtaW4vdG9vbHMvcmVzdG9yZS9zdGF0aWMvanMvbWVudV91dGlscy5q cwpAQCAtMCwwICsxLDE4IEBACisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisvLworLy8gcGdBZG1pbiA0IC0gUG9zdGdyZVNRTCBU b29scworLy8KKy8vIENvcHlyaWdodCAoQykgMjAxMyAtIDIwMTgsIFRoZSBwZ0FkbWluIERldmVs b3BtZW50IFRlYW0KKy8vIFRoaXMgc29mdHdhcmUgaXMgcmVsZWFzZWQgdW5kZXIgdGhlIFBvc3Rn cmVTUUwgTGljZW5jZQorLy8KKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisKK2V4cG9ydCBjb25zdCByZXN0b3JlU3VwcG9ydGVk Tm9kZXMgPSBbCisgICdkYXRhYmFzZScsCisgICdzY2hlbWEnLAorICAndGFibGUnLAorICAnZnVu Y3Rpb24nLAorICAndHJpZ2dlcicsCisgICdpbmRleCcsCisgICdwYXJ0aXRpb24nLAorXTsKZGlm ZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3Rvb2xzL3Jlc3RvcmUvc3RhdGljL2pzL3Jlc3RvcmUuanMg Yi93ZWIvcGdhZG1pbi90b29scy9yZXN0b3JlL3N0YXRpYy9qcy9yZXN0b3JlLmpzCmluZGV4IDVj MDgyYTlmLi5lYWE3YTE1ZSAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vdG9vbHMvcmVzdG9yZS9z dGF0aWMvanMvcmVzdG9yZS5qcworKysgYi93ZWIvcGdhZG1pbi90b29scy9yZXN0b3JlL3N0YXRp Yy9qcy9yZXN0b3JlLmpzCkBAIC0xLDExICsxLDEzIEBACi0vLyBSZXN0b3JlIGRpYWxvZwogZGVm aW5lKCd0b29scy5yZXN0b3JlJywgWwogICAnc291cmNlcy9nZXR0ZXh0JywgJ3NvdXJjZXMvdXJs X2ZvcicsICdqcXVlcnknLCAndW5kZXJzY29yZScsICdiYWNrYm9uZScsCiAgICd1bmRlcnNjb3Jl LnN0cmluZycsICdwZ2FkbWluLmFsZXJ0aWZ5anMnLCAncGdhZG1pbi5icm93c2VyJywKICAgJ3Bn YWRtaW4uYmFja2dyaWQnLCAncGdhZG1pbi5iYWNrZm9ybScsICdzb3VyY2VzL3V0aWxzJywKKyAg J3Rvb2xzL3Jlc3RvcmUvc3RhdGljL2pzL21lbnVfdXRpbHMnLAorICAnc291cmNlcy9tZW51L21l bnVfZW5hYmxlZCcsCisgICd0b29scy9yZXN0b3JlL3N0YXRpYy9qcy9yZXN0b3JlX2RpYWxvZycs CiBdLCBmdW5jdGlvbigKICAgZ2V0dGV4dCwgdXJsX2ZvciwgJCwgXywgQmFja2JvbmUsIFMsIGFs ZXJ0aWZ5LCBwZ0Jyb3dzZXIsIEJhY2tncmlkLCBCYWNrZm9ybSwKLWNvbW1vblV0aWxzCitjb21t b25VdGlscywgbWVudVV0aWxzLCBtZW51RW5hYmxlZCwgcmVzdG9yZURpYWxvZwogKSB7CiAKICAg Ly8gaWYgbW9kdWxlIGlzIGFscmVhZHkgaW5pdGlhbGl6ZWQsIHJlZmVyIHRvIHRoYXQuCkBAIC0z MDcsNTkgKzMwOSw2IEBAIGNvbW1vblV0aWxzCiAKICAgICAgIHRoaXMuaW5pdGlhbGl6ZWQgPSB0 cnVlOwogCi0gICAgICAvLyBEZWZpbmUgbGlzdCBvZiBub2RlcyBvbiB3aGljaCByZXN0b3JlIGNv bnRleHQgbWVudSBvcHRpb24gYXBwZWFycwotICAgICAgdmFyIHJlc3RvcmVfc3VwcG9ydGVkX25v ZGVzID0gWwotICAgICAgICAnZGF0YWJhc2UnLCAnc2NoZW1hJywKLSAgICAgICAgJ3RhYmxlJywg J2Z1bmN0aW9uJywKLSAgICAgICAgJ3RyaWdnZXInLCAnaW5kZXgnLAotICAgICAgICAncGFydGl0 aW9uJywKLSAgICAgIF07Ci0KLSAgICAgIC8qKgotICAgICAgICBFbmFibGUvZGlzYWJsZSByZXN0 b3JlIG1lbnUgaW4gdG9vbHMgYmFzZWQKLSAgICAgICAgb24gbm9kZSBzZWxlY3RlZAotICAgICAg ICBpZiBzZWxlY3RlZCBub2RlIGlzIHByZXNlbnQgaW4gc3VwcG9ydGVkX25vZGVzLAotICAgICAg ICBtZW51IHdpbGwgYmUgZW5hYmxlZCBvdGhlcndpc2UgZGlzYWJsZWQuCi0gICAgICAgIEFsc28s IGhpZGUgaXQgZm9yIHN5c3RlbSB2aWV3IGluIGNhdGFsb2dzCi0gICAgICAqLwotICAgICAgdmFy IG1lbnVfZW5hYmxlZCA9IGZ1bmN0aW9uKGl0ZW1EYXRhLCBpdGVtLCBkYXRhKSB7Ci0gICAgICAg IHZhciB0ID0gcGdCcm93c2VyLnRyZWUsCi0gICAgICAgICAgaSA9IGl0ZW0sCi0gICAgICAgICAg ZCA9IGl0ZW1EYXRhOwotICAgICAgICB2YXIgcGFyZW50X2l0ZW0gPSB0Lmhhc1BhcmVudChpKSA/ IHQucGFyZW50KGkpIDogbnVsbCwKLSAgICAgICAgICBwYXJlbnRfZGF0YSA9IHBhcmVudF9pdGVt ID8gdC5pdGVtRGF0YShwYXJlbnRfaXRlbSkgOiBudWxsOwotICAgICAgICBpZiAoIV8uaXNVbmRl ZmluZWQoZCkgJiYgIV8uaXNOdWxsKGQpICYmICFfLmlzTnVsbChwYXJlbnRfZGF0YSkpIHsKLSAg ICAgICAgICBpZiAoXy5pbmRleE9mKHJlc3RvcmVfc3VwcG9ydGVkX25vZGVzLCBkLl90eXBlKSAh PT0gLTEgJiYKLSAgICAgICAgICAgIGlzX3BhcmVudF9jYXRhbG9nKGl0ZW1EYXRhLCBpdGVtLCBk YXRhKSkgewotICAgICAgICAgICAgaWYgKGQuX3R5cGUgPT0gJ2RhdGFiYXNlJyAmJiBkLmFsbG93 Q29ubikKLSAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICBlbHNlIGlmIChk Ll90eXBlICE9ICdkYXRhYmFzZScpCi0gICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAg ICAgICAgZWxzZQotICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgfSBlbHNl Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgIHJl dHVybiBmYWxzZTsKLSAgICAgIH07Ci0KLSAgICAgIHZhciBpc19wYXJlbnRfY2F0YWxvZyA9IGZ1 bmN0aW9uKGl0ZW1EYXRhLCBpdGVtKSB7Ci0gICAgICAgIHZhciB0ID0gcGdCcm93c2VyLnRyZWUs Ci0gICAgICAgICAgaSA9IGl0ZW0sCi0gICAgICAgICAgZCA9IGl0ZW1EYXRhOwotCi0gICAgICAg IC8vIFRvIGl0ZXJhdGUgb3ZlciB0cmVlIHRvIGNoZWNrIHBhcmVudCBub2RlCi0gICAgICAgIHdo aWxlIChpKSB7Ci0gICAgICAgICAgLy8gSWYgaXQgaXMgc2NoZW1hIHRoZW4gYWxsb3cgdXNlciB0 byByZXN0b3JlCi0gICAgICAgICAgaWYgKF8uaW5kZXhPZihbJ2NhdGFsb2cnXSwgZC5fdHlwZSkg PiAtMSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICBpID0gdC5oYXNQYXJl bnQoaSkgPyB0LnBhcmVudChpKSA6IG51bGw7Ci0gICAgICAgICAgZCA9IGkgPyB0Lml0ZW1EYXRh KGkpIDogbnVsbDsKLSAgICAgICAgfQotICAgICAgICAvLyBieSBkZWZhdWx0IHdlIGRvIG5vdCB3 YW50IHRvIGFsbG93IGNyZWF0ZSBtZW51Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgICAgfTsK LQogICAgICAgLy8gRGVmaW5lIHRoZSBub2RlcyBvbiB3aGljaCB0aGUgbWVudXMgdG8gYmUgYXBw ZWFyCiAgICAgICB2YXIgbWVudXMgPSBbewogICAgICAgICBuYW1lOiAncmVzdG9yZV9vYmplY3Qn LApAQCAtMzY5LDIwICszMTgsMjIgQEAgY29tbW9uVXRpbHMKICAgICAgICAgcHJpb3JpdHk6IDEz LAogICAgICAgICBsYWJlbDogZ2V0dGV4dCgnUmVzdG9yZS4uLicpLAogICAgICAgICBpY29uOiAn ZmEgZmEtdXBsb2FkJywKLSAgICAgICAgZW5hYmxlOiBtZW51X2VuYWJsZWQsCisgICAgICAgIGVu YWJsZTogbWVudUVuYWJsZWQubWVudUVuYWJsZWQuYmluZChudWxsLAorICAgICAgICAgICAgcGdC cm93c2VyLnRyZWVNZW51LCBtZW51VXRpbHMucmVzdG9yZVN1cHBvcnRlZE5vZGVzKSwKICAgICAg IH1dOwogCi0gICAgICBmb3IgKHZhciBpZHggPSAwOyBpZHggPCByZXN0b3JlX3N1cHBvcnRlZF9u b2Rlcy5sZW5ndGg7IGlkeCsrKSB7CisgICAgICBmb3IgKHZhciBpZHggPSAwOyBpZHggPCBtZW51 VXRpbHMucmVzdG9yZVN1cHBvcnRlZE5vZGVzLmxlbmd0aDsgaWR4KyspIHsKICAgICAgICAgbWVu dXMucHVzaCh7Ci0gICAgICAgICAgbmFtZTogJ3Jlc3RvcmVfJyArIHJlc3RvcmVfc3VwcG9ydGVk X25vZGVzW2lkeF0sCi0gICAgICAgICAgbm9kZTogcmVzdG9yZV9zdXBwb3J0ZWRfbm9kZXNbaWR4 XSwKKyAgICAgICAgICBuYW1lOiAncmVzdG9yZV8nICsgbWVudVV0aWxzLnJlc3RvcmVTdXBwb3J0 ZWROb2Rlc1tpZHhdLAorICAgICAgICAgIG5vZGU6IG1lbnVVdGlscy5yZXN0b3JlU3VwcG9ydGVk Tm9kZXNbaWR4XSwKICAgICAgICAgICBtb2R1bGU6IHRoaXMsCiAgICAgICAgICAgYXBwbGllczog Wydjb250ZXh0J10sCiAgICAgICAgICAgY2FsbGJhY2s6ICdyZXN0b3JlX29iamVjdHMnLAogICAg ICAgICAgIHByaW9yaXR5OiAxMywKICAgICAgICAgICBsYWJlbDogZ2V0dGV4dCgnUmVzdG9yZS4u LicpLAogICAgICAgICAgIGljb246ICdmYSBmYS11cGxvYWQnLAotICAgICAgICAgIGVuYWJsZTog bWVudV9lbmFibGVkLAorICAgICAgICAgIGVuYWJsZTogbWVudUVuYWJsZWQubWVudUVuYWJsZWQu YmluZChudWxsLAorICAgICAgICAgICAgcGdCcm93c2VyLnRyZWVNZW51LCBtZW51VXRpbHMucmVz dG9yZVN1cHBvcnRlZE5vZGVzKSwKICAgICAgICAgfSk7CiAgICAgICB9CiAKQEAgLTM5MSwzMDcg KzM0Miw4IEBAIGNvbW1vblV0aWxzCiAgICAgfSwKICAgICAvLyBDYWxsYmFjayB0byBkcmF3IEJh Y2t1cCBEaWFsb2cgZm9yIG9iamVjdHMKICAgICByZXN0b3JlX29iamVjdHM6IGZ1bmN0aW9uKGFj dGlvbiwgdHJlZUl0ZW0pIHsKLQotICAgICAgdmFyIGkgPSB0cmVlSXRlbSB8fCBwZ0Jyb3dzZXIu dHJlZS5zZWxlY3RlZCgpLAotICAgICAgICBzZXJ2ZXJfZGF0YSA9IG51bGw7Ci0KLSAgICAgIHdo aWxlIChpKSB7Ci0gICAgICAgIHZhciBub2RlX2RhdGEgPSBwZ0Jyb3dzZXIudHJlZS5pdGVtRGF0 YShpKTsKLSAgICAgICAgaWYgKG5vZGVfZGF0YS5fdHlwZSA9PSAnc2VydmVyJykgewotICAgICAg ICAgIHNlcnZlcl9kYXRhID0gbm9kZV9kYXRhOwotICAgICAgICAgIGJyZWFrOwotICAgICAgICB9 Ci0KLSAgICAgICAgaWYgKHBnQnJvd3Nlci50cmVlLmhhc1BhcmVudChpKSkgewotICAgICAgICAg IGkgPSAkKHBnQnJvd3Nlci50cmVlLnBhcmVudChpKSk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAg ICAgICAgYWxlcnRpZnkuYWxlcnQoCi0gICAgICAgICAgICBnZXR0ZXh0KCdSZXN0b3JlIEVycm9y JyksCi0gICAgICAgICAgICBnZXR0ZXh0KCdQbGVhc2Ugc2VsZWN0IHNlcnZlciBvciBjaGlsZCBu b2RlIGZyb20gdHJlZS4nKQotICAgICAgICAgICk7Ci0gICAgICAgICAgYnJlYWs7Ci0gICAgICAg IH0KLSAgICAgIH0KLQotICAgICAgaWYgKCFzZXJ2ZXJfZGF0YSkgewotICAgICAgICByZXR1cm47 Ci0gICAgICB9Ci0KLSAgICAgIHZhciBtb2R1bGUgPSAncGF0aHMnLAotICAgICAgICBwcmVmZXJl bmNlX25hbWUgPSAncGdfYmluX2RpcicsCi0gICAgICAgIG1zZyA9IGdldHRleHQoJ1BsZWFzZSBj b25maWd1cmUgdGhlIFBvc3RncmVTUUwgQmluYXJ5IFBhdGggaW4gdGhlIFByZWZlcmVuY2VzIGRp YWxvZy4nKTsKLQotICAgICAgaWYgKChzZXJ2ZXJfZGF0YS50eXBlICYmIHNlcnZlcl9kYXRhLnR5 cGUgPT0gJ3BwYXMnKSB8fAotICAgICAgICBzZXJ2ZXJfZGF0YS5zZXJ2ZXJfdHlwZSA9PSAncHBh cycpIHsKLSAgICAgICAgcHJlZmVyZW5jZV9uYW1lID0gJ3BwYXNfYmluX2Rpcic7Ci0gICAgICAg IG1zZyA9IGdldHRleHQoJ1BsZWFzZSBjb25maWd1cmUgdGhlIEVEQiBBZHZhbmNlZCBTZXJ2ZXIg QmluYXJ5IFBhdGggaW4gdGhlIFByZWZlcmVuY2VzIGRpYWxvZy4nKTsKLSAgICAgIH0KLQotICAg ICAgdmFyIHByZWZlcmVuY2UgPSBwZ0Jyb3dzZXIuZ2V0X3ByZWZlcmVuY2UobW9kdWxlLCBwcmVm ZXJlbmNlX25hbWUpOwotCi0gICAgICBpZiAocHJlZmVyZW5jZSkgewotICAgICAgICBpZiAoIXBy ZWZlcmVuY2UudmFsdWUpIHsKLSAgICAgICAgICBhbGVydGlmeS5hbGVydChnZXR0ZXh0KCdDb25m aWd1cmF0aW9uIHJlcXVpcmVkJyksIG1zZyk7Ci0gICAgICAgICAgcmV0dXJuOwotICAgICAgICB9 Ci0gICAgICB9IGVsc2UgewotICAgICAgICBhbGVydGlmeS5hbGVydCgKLSAgICAgICAgICBnZXR0 ZXh0KCdSZXN0b3JlIEVycm9yJyksCi0gICAgICAgICAgUyhnZXR0ZXh0KCdGYWlsZWQgdG8gbG9h ZCBwcmVmZXJlbmNlICVzIG9mIG1vZHVsZSAlcycpKS5zcHJpbnRmKHByZWZlcmVuY2VfbmFtZSwg bW9kdWxlKS52YWx1ZSgpCi0gICAgICAgICk7Ci0gICAgICAgIHJldHVybjsKLSAgICAgIH0KLQot ICAgICAgdmFyIHRpdGxlID0gUyhnZXR0ZXh0KCdSZXN0b3JlICglczogJXMpJykpLAotICAgICAg ICB0cmVlID0gcGdCcm93c2VyLnRyZWUsCi0gICAgICAgIGl0ZW0gPSB0cmVlSXRlbSB8fCB0cmVl LnNlbGVjdGVkKCksCi0gICAgICAgIGRhdGEgPSBpdGVtICYmIGl0ZW0ubGVuZ3RoID09IDEgJiYg dHJlZS5pdGVtRGF0YShpdGVtKSwKLSAgICAgICAgbm9kZSA9IGRhdGEgJiYgZGF0YS5fdHlwZSAm JiBwZ0Jyb3dzZXIuTm9kZXNbZGF0YS5fdHlwZV07Ci0KLSAgICAgIGlmICghbm9kZSkKLSAgICAg ICAgcmV0dXJuOwotCi0gICAgICB0aXRsZSA9IHRpdGxlLnNwcmludGYobm9kZS5sYWJlbCwgZGF0 YS5sYWJlbCkudmFsdWUoKTsKLQotICAgICAgaWYgKCFhbGVydGlmeS5wZ19yZXN0b3JlKSB7Ci0g ICAgICAgIC8vIENyZWF0ZSBEaWFsb2cgdGl0bGUgb24gdGhlIGZseSB3aXRoIG5vZGUgZGV0YWls cwotICAgICAgICBhbGVydGlmeS5kaWFsb2coJ3BnX3Jlc3RvcmUnLCBmdW5jdGlvbiBmYWN0b3J5 KCkgewotICAgICAgICAgIHJldHVybiB7Ci0gICAgICAgICAgICBtYWluOiBmdW5jdGlvbih0aXRs ZSwgaXRlbSwgZGF0YSwgbm9kZSkgewotICAgICAgICAgICAgICB0aGlzLnNldCgndGl0bGUnLCB0 aXRsZSk7Ci0gICAgICAgICAgICAgIHRoaXMuc2V0dGluZygncGdfbm9kZScsIG5vZGUpOwotICAg ICAgICAgICAgICB0aGlzLnNldHRpbmcoJ3BnX2l0ZW0nLCBpdGVtKTsKLSAgICAgICAgICAgICAg dGhpcy5zZXR0aW5nKCdwZ19pdGVtX2RhdGEnLCBkYXRhKTsKLSAgICAgICAgICAgIH0sCi0gICAg ICAgICAgICBidWlsZDogZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgIGFsZXJ0aWZ5LnBnRGlh bG9nQnVpbGQuYXBwbHkodGhpcyk7Ci0gICAgICAgICAgICB9LAotICAgICAgICAgICAgc2V0dXA6 IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICByZXR1cm4gewotICAgICAgICAgICAgICAgIGJ1 dHRvbnM6IFt7Ci0gICAgICAgICAgICAgICAgICB0ZXh0OiAnJywKLSAgICAgICAgICAgICAgICAg IGNsYXNzTmFtZTogJ2J0biBidG4tZGVmYXVsdCBwdWxsLWxlZnQgZmEgZmEtbGcgZmEtaW5mbycs Ci0gICAgICAgICAgICAgICAgICBhdHRyczogewotICAgICAgICAgICAgICAgICAgICBuYW1lOiAn b2JqZWN0X2hlbHAnLAotICAgICAgICAgICAgICAgICAgICB0eXBlOiAnYnV0dG9uJywKLSAgICAg ICAgICAgICAgICAgICAgdXJsOiAnYmFja3VwLmh0bWwnLAotICAgICAgICAgICAgICAgICAgICBs YWJlbDogZ2V0dGV4dCgnUmVzdG9yZScpLAotICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAg ICAgICAgICB9LCB7Ci0gICAgICAgICAgICAgICAgICB0ZXh0OiAnJywKLSAgICAgICAgICAgICAg ICAgIGtleTogMTEyLAotICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lOiAnYnRuIGJ0bi1kZWZh dWx0IHB1bGwtbGVmdCBmYSBmYS1sZyBmYS1xdWVzdGlvbicsCi0gICAgICAgICAgICAgICAgICBh dHRyczogewotICAgICAgICAgICAgICAgICAgICBuYW1lOiAnZGlhbG9nX2hlbHAnLAotICAgICAg ICAgICAgICAgICAgICB0eXBlOiAnYnV0dG9uJywKLSAgICAgICAgICAgICAgICAgICAgbGFiZWw6 IGdldHRleHQoJ1Jlc3RvcmUnKSwKLSAgICAgICAgICAgICAgICAgICAgdXJsOiB1cmxfZm9yKCdo ZWxwLnN0YXRpYycsIHsKLSAgICAgICAgICAgICAgICAgICAgICAnZmlsZW5hbWUnOiAncmVzdG9y ZV9kaWFsb2cuaHRtbCcsCi0gICAgICAgICAgICAgICAgICAgIH0pLAotICAgICAgICAgICAgICAg ICAgfSwKLSAgICAgICAgICAgICAgICB9LCB7Ci0gICAgICAgICAgICAgICAgICB0ZXh0OiBnZXR0 ZXh0KCdSZXN0b3JlJyksCi0gICAgICAgICAgICAgICAgICBrZXk6IDEzLAotICAgICAgICAgICAg ICAgICAgY2xhc3NOYW1lOiAnYnRuIGJ0bi1wcmltYXJ5IGZhIGZhLXVwbG9hZCBwZy1hbGVydGlm eS1idXR0b24nLAotICAgICAgICAgICAgICAgICAgcmVzdG9yZTogdHJ1ZSwKLSAgICAgICAgICAg ICAgICAgICdkYXRhLWJ0bi1uYW1lJzogJ3Jlc3RvcmUnLAotICAgICAgICAgICAgICAgIH0sIHsK LSAgICAgICAgICAgICAgICAgIHRleHQ6IGdldHRleHQoJ0NhbmNlbCcpLAotICAgICAgICAgICAg ICAgICAga2V5OiAyNywKLSAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogJ2J0biBidG4tZGFu Z2VyIGZhIGZhLWxnIGZhLXRpbWVzIHBnLWFsZXJ0aWZ5LWJ1dHRvbicsCi0gICAgICAgICAgICAg ICAgICByZXN0b3JlOiBmYWxzZSwKLSAgICAgICAgICAgICAgICAgICdkYXRhLWJ0bi1uYW1lJzog J2NhbmNlbCcsCi0gICAgICAgICAgICAgICAgfV0sCi0gICAgICAgICAgICAgICAgLy8gU2V0IG9w dGlvbnMgZm9yIGRpYWxvZwotICAgICAgICAgICAgICAgIG9wdGlvbnM6IHsKLSAgICAgICAgICAg ICAgICAgIHRpdGxlOiB0aXRsZSwKLSAgICAgICAgICAgICAgICAgIC8vZGlzYWJsZSBib3RoIHBh ZGRpbmcgYW5kIG92ZXJmbG93IGNvbnRyb2wuCi0gICAgICAgICAgICAgICAgICBwYWRkaW5nOiAh MSwKLSAgICAgICAgICAgICAgICAgIG92ZXJmbG93OiAhMSwKLSAgICAgICAgICAgICAgICAgIG1v ZGVsOiAwLAotICAgICAgICAgICAgICAgICAgcmVzaXphYmxlOiB0cnVlLAotICAgICAgICAgICAg ICAgICAgbWF4aW1pemFibGU6IHRydWUsCi0gICAgICAgICAgICAgICAgICBwaW5uYWJsZTogZmFs c2UsCi0gICAgICAgICAgICAgICAgICBjbG9zYWJsZUJ5RGltbWVyOiBmYWxzZSwKLSAgICAgICAg ICAgICAgICAgIG1vZGFsOiBmYWxzZSwKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAg ICB9OwotICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIGhvb2tzOiB7Ci0gICAgICAgICAgICAg IC8vIHRyaWdnZXJlZCB3aGVuIHRoZSBkaWFsb2cgaXMgY2xvc2VkCi0gICAgICAgICAgICAgIG9u Y2xvc2U6IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICAgIGlmICh0aGlzLnZpZXcpIHsKLSAg ICAgICAgICAgICAgICAgIHRoaXMudmlldy5yZW1vdmUoewotICAgICAgICAgICAgICAgICAgICBk YXRhOiB0cnVlLAotICAgICAgICAgICAgICAgICAgICBpbnRlcm5hbDogdHJ1ZSwKLSAgICAgICAg ICAgICAgICAgICAgc2lsZW50OiB0cnVlLAotICAgICAgICAgICAgICAgICAgfSk7Ci0gICAgICAg ICAgICAgICAgfQotICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgfSwKLSAgICAgICAgICAg IHNldHRpbmdzOiB7Ci0gICAgICAgICAgICAgIHBnX25vZGU6IG51bGwsCi0gICAgICAgICAgICAg IHBnX2l0ZW06IG51bGwsCi0gICAgICAgICAgICAgIHBnX2l0ZW1fZGF0YTogbnVsbCwKLSAgICAg ICAgICAgIH0sCi0gICAgICAgICAgICBwcmVwYXJlOiBmdW5jdGlvbigpIHsKLQotICAgICAgICAg ICAgICB2YXIgc2VsZiA9IHRoaXM7Ci0gICAgICAgICAgICAgIC8vIERpc2FibGUgQmFja3VwIGJ1 dHRvbiB1bnRpbCB1c2VyIHByb3ZpZGVzIEZpbGVuYW1lCi0gICAgICAgICAgICAgIHRoaXMuX19p bnRlcm5hbC5idXR0b25zWzJdLmVsZW1lbnQuZGlzYWJsZWQgPSB0cnVlOwotICAgICAgICAgICAg ICB2YXIgJGNvbnRhaW5lciA9ICQoJzxkaXYgY2xhc3M9XCdyZXN0b3JlX2RpYWxvZ1wnPjwvZGl2 PicpOwotICAgICAgICAgICAgICB2YXIgdCA9IHBnQnJvd3Nlci50cmVlLAotICAgICAgICAgICAg ICAgIGkgPSB0LnNlbGVjdGVkKCksCi0gICAgICAgICAgICAgICAgZCA9IGkgJiYgaS5sZW5ndGgg PT0gMSA/IHQuaXRlbURhdGEoaSkgOiB1bmRlZmluZWQsCi0gICAgICAgICAgICAgICAgbm9kZSA9 IGQgJiYgcGdCcm93c2VyLk5vZGVzW2QuX3R5cGVdOwotCi0gICAgICAgICAgICAgIGlmICghZCkK LSAgICAgICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgICAgICAgdmFyIHRyZWVJbmZvID0g bm9kZS5nZXRUcmVlTm9kZUhpZXJhcmNoeS5hcHBseShub2RlLCBbaV0pOwotCi0gICAgICAgICAg ICAgIHZhciBuZXdNb2RlbCA9IG5ldyBSZXN0b3JlT2JqZWN0TW9kZWwoewotICAgICAgICAgICAg ICAgICAgbm9kZV9kYXRhOiBub2RlLAotICAgICAgICAgICAgICAgIH0sIHsKLSAgICAgICAgICAg ICAgICAgIG5vZGVfaW5mbzogdHJlZUluZm8sCi0gICAgICAgICAgICAgICAgfSksCi0gICAgICAg ICAgICAgICAgZmllbGRzID0gQmFja2Zvcm0uZ2VuZXJhdGVWaWV3U2NoZW1hKAotICAgICAgICAg ICAgICAgICAgdHJlZUluZm8sIG5ld01vZGVsLCAnY3JlYXRlJywgbm9kZSwgdHJlZUluZm8uc2Vy dmVyLCB0cnVlCi0gICAgICAgICAgICAgICAgKTsKLQotICAgICAgICAgICAgICB2YXIgdmlldyA9 IHRoaXMudmlldyA9IG5ldyBCYWNrZm9ybS5EaWFsb2coewotICAgICAgICAgICAgICAgIGVsOiAk Y29udGFpbmVyLAotICAgICAgICAgICAgICAgIG1vZGVsOiBuZXdNb2RlbCwKLSAgICAgICAgICAg ICAgICBzY2hlbWE6IGZpZWxkcywKLSAgICAgICAgICAgICAgfSk7Ci0KLSAgICAgICAgICAgICAg JCh0aGlzLmVsZW1lbnRzLmJvZHkuY2hpbGROb2Rlc1swXSkuYWRkQ2xhc3MoCi0gICAgICAgICAg ICAgICAgJ2FsZXJ0aWZ5X3Rvb2xzX2RpYWxvZ19wcm9wZXJ0aWVzIG9ial9wcm9wZXJ0aWVzJwot ICAgICAgICAgICAgICApOwotCi0gICAgICAgICAgICAgIHZpZXcucmVuZGVyKCk7Ci0KLSAgICAg ICAgICAgICAgdGhpcy5lbGVtZW50cy5jb250ZW50LmFwcGVuZENoaWxkKCRjb250YWluZXIuZ2V0 KDApKTsKLQotICAgICAgICAgICAgICB2aWV3LiRlbC5hdHRyKCd0YWJpbmRleCcsIC0xKTsKLSAg ICAgICAgICAgICAgLy8gdmFyIGRpYWxvZ1RhYk5hdmlnYXRvciA9IHBnQnJvd3Nlci5rZXlib2Fy ZE5hdmlnYXRpb24uZ2V0RGlhbG9nVGFiTmF2aWdhdG9yKHZpZXcpOwotICAgICAgICAgICAgICBw Z0Jyb3dzZXIua2V5Ym9hcmROYXZpZ2F0aW9uLmdldERpYWxvZ1RhYk5hdmlnYXRvcih2aWV3KTsK LSAgICAgICAgICAgICAgdmFyIGNvbnRhaW5lciA9IHZpZXcuJGVsLmZpbmQoJy50YWItY29udGVu dDpmaXJzdCA+IC50YWItcGFuZS5hY3RpdmU6Zmlyc3QnKTsKLSAgICAgICAgICAgICAgY29tbW9u VXRpbHMuZmluZEFuZFNldEZvY3VzKGNvbnRhaW5lcik7Ci0KLSAgICAgICAgICAgICAgLy8gTGlz dGVuIHRvIG1vZGVsICYgaWYgZmlsZW5hbWUgaXMgcHJvdmlkZWQgdGhlbiBlbmFibGUgQmFja3Vw IGJ1dHRvbgotICAgICAgICAgICAgICB0aGlzLnZpZXcubW9kZWwub24oJ2NoYW5nZScsIGZ1bmN0 aW9uKCkgewotICAgICAgICAgICAgICAgIGlmICghXy5pc1VuZGVmaW5lZCh0aGlzLmdldCgnZmls ZScpKSAmJiB0aGlzLmdldCgnZmlsZScpICE9PSAnJykgewotICAgICAgICAgICAgICAgICAgdGhp cy5lcnJvck1vZGVsLmNsZWFyKCk7Ci0gICAgICAgICAgICAgICAgICBzZWxmLl9faW50ZXJuYWwu YnV0dG9uc1syXS5lbGVtZW50LmRpc2FibGVkID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAgfSBl bHNlIHsKLSAgICAgICAgICAgICAgICAgIHNlbGYuX19pbnRlcm5hbC5idXR0b25zWzJdLmVsZW1l bnQuZGlzYWJsZWQgPSB0cnVlOwotICAgICAgICAgICAgICAgICAgdGhpcy5lcnJvck1vZGVsLnNl dCgnZmlsZScsIGdldHRleHQoJ1BsZWFzZSBwcm92aWRlIGZpbGVuYW1lJykpOwotICAgICAgICAg ICAgICAgIH0KLSAgICAgICAgICAgICAgfSk7Ci0KLSAgICAgICAgICAgIH0sCi0gICAgICAgICAg ICAvLyBDYWxsYmFjayBmdW5jdGlvbnMgd2hlbiBjbGljayBvbiB0aGUgYnV0dG9ucyBvZiB0aGUg QWxlcnRpZnkgZGlhbG9ncwotICAgICAgICAgICAgY2FsbGJhY2s6IGZ1bmN0aW9uKGUpIHsKLSAg ICAgICAgICAgICAgLy8gRmV0Y2ggY3VycmVudCBzZXJ2ZXIgaWQKLSAgICAgICAgICAgICAgdmFy IHQgPSBwZ0Jyb3dzZXIudHJlZSwKLSAgICAgICAgICAgICAgICBpID0gdGhpcy5zZXR0aW5nc1sn cGdfaXRlbSddIHx8IHQuc2VsZWN0ZWQoKSwKLSAgICAgICAgICAgICAgICBkID0gdGhpcy5zZXR0 aW5nc1sncGdfaXRlbV9kYXRhJ10gfHwgKAotICAgICAgICAgICAgICAgICAgaSAmJiBpLmxlbmd0 aCA9PSAxID8gdC5pdGVtRGF0YShpKSA6IHVuZGVmaW5lZAotICAgICAgICAgICAgICAgICksCi0g ICAgICAgICAgICAgICAgbm9kZSA9IHRoaXMuc2V0dGluZ3NbJ3BnX25vZGUnXSB8fCAoCi0gICAg ICAgICAgICAgICAgICBkICYmIHBnQnJvd3Nlci5Ob2Rlc1tkLl90eXBlXQotICAgICAgICAgICAg ICAgICk7Ci0KLSAgICAgICAgICAgICAgaWYgKGUuYnV0dG9uLmVsZW1lbnQubmFtZSA9PSAnZGlh bG9nX2hlbHAnIHx8IGUuYnV0dG9uLmVsZW1lbnQubmFtZSA9PSAnb2JqZWN0X2hlbHAnKSB7Ci0g ICAgICAgICAgICAgICAgZS5jYW5jZWwgPSB0cnVlOwotICAgICAgICAgICAgICAgIHBnQnJvd3Nl ci5zaG93SGVscChlLmJ1dHRvbi5lbGVtZW50Lm5hbWUsIGUuYnV0dG9uLmVsZW1lbnQuZ2V0QXR0 cmlidXRlKCd1cmwnKSwKLSAgICAgICAgICAgICAgICAgIG5vZGUsIGksIGUuYnV0dG9uLmVsZW1l bnQuZ2V0QXR0cmlidXRlKCdsYWJlbCcpKTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAg ICAgICAgICAgIH0KLQotICAgICAgICAgICAgICBpZiAoZS5idXR0b25bJ2RhdGEtYnRuLW5hbWUn XSA9PT0gJ3Jlc3RvcmUnKSB7Ci0gICAgICAgICAgICAgICAgaWYgKCFkKQotICAgICAgICAgICAg ICAgICAgcmV0dXJuOwotCi0gICAgICAgICAgICAgICAgdmFyIGluZm8gPSBub2RlLmdldFRyZWVO b2RlSGllcmFyY2h5LmFwcGx5KG5vZGUsIFtpXSksCi0gICAgICAgICAgICAgICAgICBtID0gdGhp cy52aWV3Lm1vZGVsOwotICAgICAgICAgICAgICAgIC8vIFNldCBjdXJyZW50IG5vZGUgaW5mbyBp bnRvIG1vZGVsCi0gICAgICAgICAgICAgICAgbS5zZXQoJ2RhdGFiYXNlJywgaW5mby5kYXRhYmFz ZS5fbGFiZWwpOwotICAgICAgICAgICAgICAgIGlmICghbS5nZXQoJ2N1c3RvbScpKSB7Ci0gICAg ICAgICAgICAgICAgICBzd2l0Y2ggKGQuX3R5cGUpIHsKLSAgICAgICAgICAgICAgICAgIGNhc2Ug J3NjaGVtYSc6Ci0gICAgICAgICAgICAgICAgICAgIG0uc2V0KCdzY2hlbWFzJywgW2QuX2xhYmVs XSk7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgY2FzZSAn dGFibGUnOgotICAgICAgICAgICAgICAgICAgICBtLnNldCgnc2NoZW1hcycsIFtpbmZvLnNjaGVt YS5fbGFiZWxdKTsKLSAgICAgICAgICAgICAgICAgICAgbS5zZXQoJ3RhYmxlcycsIFtkLl9sYWJl bF0pOwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgIGNhc2Ug J2Z1bmN0aW9uJzoKLSAgICAgICAgICAgICAgICAgICAgbS5zZXQoJ3NjaGVtYXMnLCBbaW5mby5z Y2hlbWEuX2xhYmVsXSk7Ci0gICAgICAgICAgICAgICAgICAgIG0uc2V0KCdmdW5jdGlvbnMnLCBb ZC5fbGFiZWxdKTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAg ICBjYXNlICdpbmRleCc6Ci0gICAgICAgICAgICAgICAgICAgIG0uc2V0KCdzY2hlbWFzJywgW2lu Zm8uc2NoZW1hLl9sYWJlbF0pOwotICAgICAgICAgICAgICAgICAgICBtLnNldCgnaW5kZXhlcycs IFtkLl9sYWJlbF0pOwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAg ICAgIGNhc2UgJ3RyaWdnZXInOgotICAgICAgICAgICAgICAgICAgICBtLnNldCgnc2NoZW1hcycs IFtpbmZvLnNjaGVtYS5fbGFiZWxdKTsKLSAgICAgICAgICAgICAgICAgICAgbS5zZXQoJ3RyaWdn ZXJzJywgW2QuX2xhYmVsXSk7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAg ICAgICAgICAgY2FzZSAndHJpZ2dlcl9mdW5jJzoKLSAgICAgICAgICAgICAgICAgICAgbS5zZXQo J3NjaGVtYXMnLCBbaW5mby5zY2hlbWEuX2xhYmVsXSk7Ci0gICAgICAgICAgICAgICAgICAgIG0u c2V0KCd0cmlnZ2VyX2Z1bmNzJywgW2QuX2xhYmVsXSk7Ci0gICAgICAgICAgICAgICAgICAgIGJy ZWFrOwotICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAg ICAgICAgICAgICAgICAvLyBUT0RPOjoKLSAgICAgICAgICAgICAgICAgIC8vIFdoZW4gd2Ugd2ls bCBpbXBsZW1lbnQgdGhlIG9iamVjdCBzZWxlY3Rpb24gaW4gdGhlCi0gICAgICAgICAgICAgICAg ICAvLyBpbXBvcnQgZGlhbG9nLCB3ZSB3aWxsIG5lZWQgdG8gc2VsZWN0IHRoZSBvYmplY3RzIGZy b20KLSAgICAgICAgICAgICAgICAgIC8vIHRoZSB0cmVlIHNlbGVjdGlvbiB0YWIuCi0gICAgICAg ICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgdmFyIHNlbGYgPSB0aGlzLAotICAgICAgICAg ICAgICAgICAgYmFzZVVybCA9IHVybF9mb3IoJ3Jlc3RvcmUuY3JlYXRlX2pvYicsIHsKLSAgICAg ICAgICAgICAgICAgICAgJ3NpZCc6IGluZm8uc2VydmVyLl9pZCwKLSAgICAgICAgICAgICAgICAg IH0pLAotICAgICAgICAgICAgICAgICAgYXJncyA9IHRoaXMudmlldy5tb2RlbC50b0pTT04oKTsK LQotICAgICAgICAgICAgICAgICQuYWpheCh7Ci0gICAgICAgICAgICAgICAgICB1cmw6IGJhc2VV cmwsCi0gICAgICAgICAgICAgICAgICBtZXRob2Q6ICdQT1NUJywKLSAgICAgICAgICAgICAgICAg IGRhdGE6IHsKLSAgICAgICAgICAgICAgICAgICAgJ2RhdGEnOiBKU09OLnN0cmluZ2lmeShhcmdz KSwKLSAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICBzdWNjZXNzOiBmdW5j dGlvbihyZXMpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHJlcy5zdWNjZXNzKSB7Ci0gICAg ICAgICAgICAgICAgICAgICAgYWxlcnRpZnkuc3VjY2VzcygKLSAgICAgICAgICAgICAgICAgICAg ICAgIGdldHRleHQoJ1Jlc3RvcmUgam9iIGNyZWF0ZWQuJyksIDUKLSAgICAgICAgICAgICAgICAg ICAgICApOwotICAgICAgICAgICAgICAgICAgICAgIHBnQnJvd3Nlci5FdmVudHMudHJpZ2dlcign cGdhZG1pbi1iZ3Byb2Nlc3M6Y3JlYXRlZCcsIHNlbGYpOwotICAgICAgICAgICAgICAgICAgICB9 IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUud2FybihyZXMpOwotICAgICAg ICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAg ZXJyb3I6IGZ1bmN0aW9uKHhocikgewotICAgICAgICAgICAgICAgICAgICB0cnkgewotICAgICAg ICAgICAgICAgICAgICAgIHZhciBlcnIgPSAkLnBhcnNlSlNPTih4aHIucmVzcG9uc2VUZXh0KTsK LSAgICAgICAgICAgICAgICAgICAgICBhbGVydGlmeS5hbGVydCgKLSAgICAgICAgICAgICAgICAg ICAgICAgIGdldHRleHQoJ1Jlc3RvcmUgZmFpbGVkLicpLAotICAgICAgICAgICAgICAgICAgICAg ICAgZXJyLmVycm9ybXNnCi0gICAgICAgICAgICAgICAgICAgICAgKTsKLSAgICAgICAgICAgICAg ICAgICAgfSBjYXRjaCAoZSkgewotICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUud2Fybihl LnN0YWNrIHx8IGUpOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICB9 LAotICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9LAot ICAgICAgICAgIH07Ci0gICAgICAgIH0pOwotICAgICAgfQotCi0gICAgICBhbGVydGlmeS5wZ19y ZXN0b3JlKHRpdGxlLCBpdGVtLCBkYXRhLCBub2RlKS5yZXNpemVUbygnNjUlJywgJzYwJScpOwor ICAgICAgbGV0IGRpYWxvZyA9IG5ldyByZXN0b3JlRGlhbG9nLlJlc3RvcmVEaWFsb2cocGdCcm93 c2VyLCAkLCBhbGVydGlmeSwgUmVzdG9yZU9iamVjdE1vZGVsKTsKKyAgICAgIGRpYWxvZy5kcmF3 KGFjdGlvbiwgdHJlZUl0ZW0pOwogICAgIH0sCiAgIH07CiAgIHJldHVybiBwZ0Jyb3dzZXIuUmVz dG9yZTsKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3Rvb2xzL3Jlc3RvcmUvc3RhdGljL2pzL3Jl c3RvcmVfZGlhbG9nLmpzIGIvd2ViL3BnYWRtaW4vdG9vbHMvcmVzdG9yZS9zdGF0aWMvanMvcmVz dG9yZV9kaWFsb2cuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAuLjY2ZmVh M2JhCi0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vdG9vbHMvcmVzdG9yZS9zdGF0aWMv anMvcmVzdG9yZV9kaWFsb2cuanMKQEAgLTAsMCArMSw1MyBAQAorLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworLy8KKy8vIHBnQWRt aW4gNCAtIFBvc3RncmVTUUwgVG9vbHMKKy8vCisvLyBDb3B5cmlnaHQgKEMpIDIwMTMgLSAyMDE4 LCBUaGUgcGdBZG1pbiBEZXZlbG9wbWVudCBUZWFtCisvLyBUaGlzIHNvZnR3YXJlIGlzIHJlbGVh c2VkIHVuZGVyIHRoZSBQb3N0Z3JlU1FMIExpY2VuY2UKKy8vCisvLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworCitpbXBvcnQgZ2V0 dGV4dCBmcm9tICcuLi8uLi8uLi8uLi9zdGF0aWMvanMvZ2V0dGV4dCc7CitpbXBvcnQge3Nwcmlu dGZ9IGZyb20gJ3NwcmludGYtanMnOworaW1wb3J0IEJhY2tmb3JtIGZyb20gJy4uLy4uLy4uLy4u L3N0YXRpYy9qcy9iYWNrZm9ybS5wZ2FkbWluJzsKK2ltcG9ydCB7RGlhbG9nfSBmcm9tICcuLi8u Li8uLi8uLi9zdGF0aWMvanMvYWxlcnRpZnkvZGlhbG9nJzsKKworZXhwb3J0IGNsYXNzIFJlc3Rv cmVEaWFsb2cgZXh0ZW5kcyBEaWFsb2cgeworICBjb25zdHJ1Y3RvcihwZ0Jyb3dzZXIsICQsIGFs ZXJ0aWZ5LCBSZXN0b3JlTW9kZWwsIGJhY2tmb3JtID0gQmFja2Zvcm0pIHsKKyAgICBzdXBlcign UmVzdG9yZSBFcnJvcicsCisgICAgICAnPGRpdiBjbGFzcz1cJ3Jlc3RvcmVfZGlhbG9nXCc+PC9k aXY+JywKKyAgICAgIHBnQnJvd3NlciwgJCwgYWxlcnRpZnksIFJlc3RvcmVNb2RlbCwgYmFja2Zv cm0pOworICB9CisKKyAgZHJhdyhhY3Rpb24sIGFjaVRyZWVJdGVtKSB7CisKKyAgICBjb25zdCBz ZXJ2ZXJJbmZvcm1hdGlvbiA9IHRoaXMucmV0cmlldmVBbmNlc3Rvck9mVHlwZVNlcnZlcihhY2lU cmVlSXRlbSk7CisKKyAgICBpZiAoIXNlcnZlckluZm9ybWF0aW9uKSB7CisgICAgICByZXR1cm47 CisgICAgfQorCisgICAgaWYgKCF0aGlzLmhhc0JpbmFyaWVzQ29uZmlndXJhdGlvbihzZXJ2ZXJJ bmZvcm1hdGlvbikpIHsKKyAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBsZXQgYWNpVHJlZUl0 ZW0xID0gYWNpVHJlZUl0ZW0gfHwgdGhpcy5wZ0Jyb3dzZXIudHJlZU1lbnUuc2VsZWN0ZWQoKTsK KyAgICBsZXQgaXRlbSA9IHRoaXMucGdCcm93c2VyLnRyZWVNZW51LmZpbmROb2RlQnlEb21FbGVt ZW50KGFjaVRyZWVJdGVtMSk7CisgICAgY29uc3QgZGF0YSA9IGl0ZW0uZ2V0RGF0YSgpOworICAg IGNvbnN0IG5vZGUgPSB0aGlzLnBnQnJvd3Nlci5Ob2Rlc1tkYXRhLl90eXBlXTsKKworICAgIGlm ICghbm9kZSkKKyAgICAgIHJldHVybjsKKworICAgIGxldCB0aXRsZSA9IHNwcmludGYoZ2V0dGV4 dCgnUmVzdG9yZSAoJXM6ICVzKScpLCBub2RlLmxhYmVsLCBkYXRhLmxhYmVsKTsKKworICAgIHRo aXMuY3JlYXRlT3JHZXREaWFsb2codGl0bGUsICdyZXN0b3JlJyk7CisKKyAgICB0aGlzLmFsZXJ0 aWZ5LnBnX3Jlc3RvcmUodGl0bGUsIGFjaVRyZWVJdGVtMSwgZGF0YSwgbm9kZSkucmVzaXplVG8o JzY1JScsICc2MCUnKTsKKyAgfQorCisgIGRpYWxvZ05hbWUoKSB7CisgICAgcmV0dXJuICdwZ19y ZXN0b3JlJzsKKyAgfQorfQorCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi90b29scy9yZXN0b3Jl L3N0YXRpYy9qcy9yZXN0b3JlX2RpYWxvZ193cmFwcGVyLmpzIGIvd2ViL3BnYWRtaW4vdG9vbHMv cmVzdG9yZS9zdGF0aWMvanMvcmVzdG9yZV9kaWFsb2dfd3JhcHBlci5qcwpuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwMC4uODQ1ZGE3YTMKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIv cGdhZG1pbi90b29scy9yZXN0b3JlL3N0YXRpYy9qcy9yZXN0b3JlX2RpYWxvZ193cmFwcGVyLmpz CkBAIC0wLDAgKzEsMjU1IEBACitpbXBvcnQge2dldFRyZWVOb2RlSGllcmFyY2h5RnJvbUVsZW1l bnR9IGZyb20gJy4uLy4uLy4uLy4uL3N0YXRpYy9qcy90cmVlL3BnYWRtaW5fdHJlZV9ub2RlJzsK K2ltcG9ydCBheGlvcyBmcm9tICdheGlvcy9pbmRleCc7CitpbXBvcnQgXyBmcm9tICd1bmRlcnNj b3JlJzsKK2ltcG9ydCBnZXR0ZXh0IGZyb20gJy4uLy4uLy4uLy4uL3N0YXRpYy9qcy9nZXR0ZXh0 JzsKK2ltcG9ydCB1cmxfZm9yIGZyb20gJy4uLy4uLy4uLy4uL3N0YXRpYy9qcy91cmxfZm9yJzsK K2ltcG9ydCB7RGlhbG9nV3JhcHBlcn0gZnJvbSAnLi4vLi4vLi4vLi4vc3RhdGljL2pzL2FsZXJ0 aWZ5L2RpYWxvZ193cmFwcGVyJzsKKworZXhwb3J0IGNsYXNzIFJlc3RvcmVEaWFsb2dXcmFwcGVy IGV4dGVuZHMgRGlhbG9nV3JhcHBlciB7CisgIGNvbnN0cnVjdG9yKGRpYWxvZ0NvbnRhaW5lclNl bGVjdG9yLCBkaWFsb2dUaXRsZSwgdHlwZU9mRGlhbG9nLAorICAgICAgICAgICAgICBqcXVlcnks IHBnQnJvd3NlciwgYWxlcnRpZnksIGRpYWxvZ01vZGVsLCBiYWNrZm9ybSkgeworICAgIHN1cGVy KGRpYWxvZ0NvbnRhaW5lclNlbGVjdG9yLCBkaWFsb2dUaXRsZSwganF1ZXJ5LAorICAgICAgcGdC cm93c2VyLCBhbGVydGlmeSwgZGlhbG9nTW9kZWwsIGJhY2tmb3JtKTsKKyAgfQorCisgIG1haW4o dGl0bGUsIGl0ZW0sIGRhdGEsIG5vZGUpIHsKKyAgICB0aGlzLnNldCgndGl0bGUnLCB0aXRsZSk7 CisgICAgdGhpcy5zZXR0aW5nKCdwZ19ub2RlJywgbm9kZSk7CisgICAgdGhpcy5zZXR0aW5nKCdw Z19pdGVtJywgaXRlbSk7CisgICAgdGhpcy5zZXR0aW5nKCdwZ19pdGVtX2RhdGEnLCBkYXRhKTsK KyAgfQorCisgIHNldHVwKCkgeworICAgIHJldHVybiB7CisgICAgICBidXR0b25zOiBbeworICAg ICAgICB0ZXh0OiAnJywKKyAgICAgICAgY2xhc3NOYW1lOiAnYnRuIGJ0bi1kZWZhdWx0IHB1bGwt bGVmdCBmYSBmYS1sZyBmYS1pbmZvJywKKyAgICAgICAgYXR0cnM6IHsKKyAgICAgICAgICBuYW1l OiAnb2JqZWN0X2hlbHAnLAorICAgICAgICAgIHR5cGU6ICdidXR0b24nLAorICAgICAgICAgIHVy bDogJ2JhY2t1cC5odG1sJywKKyAgICAgICAgICBsYWJlbDogZ2V0dGV4dCgnUmVzdG9yZScpLAor ICAgICAgICB9LAorICAgICAgfSwgeworICAgICAgICB0ZXh0OiAnJywKKyAgICAgICAga2V5OiAx MTIsCisgICAgICAgIGNsYXNzTmFtZTogJ2J0biBidG4tZGVmYXVsdCBwdWxsLWxlZnQgZmEgZmEt bGcgZmEtcXVlc3Rpb24nLAorICAgICAgICBhdHRyczogeworICAgICAgICAgIG5hbWU6ICdkaWFs b2dfaGVscCcsCisgICAgICAgICAgdHlwZTogJ2J1dHRvbicsCisgICAgICAgICAgbGFiZWw6IGdl dHRleHQoJ1Jlc3RvcmUnKSwKKyAgICAgICAgICB1cmw6IHVybF9mb3IoJ2hlbHAuc3RhdGljJywg eworICAgICAgICAgICAgJ2ZpbGVuYW1lJzogJ3Jlc3RvcmVfZGlhbG9nLmh0bWwnLAorICAgICAg ICAgIH0pLAorICAgICAgICB9LAorICAgICAgfSwgeworICAgICAgICB0ZXh0OiBnZXR0ZXh0KCdS ZXN0b3JlJyksCisgICAgICAgIGtleTogMTMsCisgICAgICAgIGNsYXNzTmFtZTogJ2J0biBidG4t cHJpbWFyeSBmYSBmYS11cGxvYWQgcGctYWxlcnRpZnktYnV0dG9uJywKKyAgICAgICAgcmVzdG9y ZTogdHJ1ZSwKKyAgICAgICAgJ2RhdGEtYnRuLW5hbWUnOiAncmVzdG9yZScsCisgICAgICB9LCB7 CisgICAgICAgIHRleHQ6IGdldHRleHQoJ0NhbmNlbCcpLAorICAgICAgICBrZXk6IDI3LAorICAg ICAgICBjbGFzc05hbWU6ICdidG4gYnRuLWRhbmdlciBmYSBmYS1sZyBmYS10aW1lcyBwZy1hbGVy dGlmeS1idXR0b24nLAorICAgICAgICByZXN0b3JlOiBmYWxzZSwKKyAgICAgICAgJ2RhdGEtYnRu LW5hbWUnOiAnY2FuY2VsJywKKyAgICAgIH1dLAorICAgICAgLy8gU2V0IG9wdGlvbnMgZm9yIGRp YWxvZworICAgICAgb3B0aW9uczogeworICAgICAgICB0aXRsZTogdGhpcy5kaWFsb2dUaXRsZSwK KyAgICAgICAgLy9kaXNhYmxlIGJvdGggcGFkZGluZyBhbmQgb3ZlcmZsb3cgY29udHJvbC4KKyAg ICAgICAgcGFkZGluZzogITEsCisgICAgICAgIG92ZXJmbG93OiAhMSwKKyAgICAgICAgbW9kZWw6 IDAsCisgICAgICAgIHJlc2l6YWJsZTogdHJ1ZSwKKyAgICAgICAgbWF4aW1pemFibGU6IHRydWUs CisgICAgICAgIHBpbm5hYmxlOiBmYWxzZSwKKyAgICAgICAgY2xvc2FibGVCeURpbW1lcjogZmFs c2UsCisgICAgICAgIG1vZGFsOiBmYWxzZSwKKyAgICAgIH0sCisgICAgfTsKKyAgfQorCisgIHBy ZXBhcmUoKSB7CisgICAgdGhpcy5kaXNhYmxlUmVzdG9yZUJ1dHRvbigpOworCisgICAgY29uc3Qg JGNvbnRhaW5lciA9IHRoaXMuanF1ZXJ5KHRoaXMuZGlhbG9nQ29udGFpbmVyU2VsZWN0b3IpOwor ICAgIGNvbnN0IHNlbGVjdGVkVHJlZU5vZGUgPSB0aGlzLmdldFNlbGVjdGVkTm9kZSgpOworICAg IGNvbnN0IHNlbGVjdGVkVHJlZU5vZGVEYXRhID0gdGhpcy5nZXRTZWxlY3RlZE5vZGVEYXRhKHNl bGVjdGVkVHJlZU5vZGUpOworICAgIGlmICghc2VsZWN0ZWRUcmVlTm9kZURhdGEpIHsKKyAgICAg IHJldHVybjsKKyAgICB9CisKKyAgICBjb25zdCBub2RlID0gdGhpcy5wZ0Jyb3dzZXIuTm9kZXNb c2VsZWN0ZWRUcmVlTm9kZURhdGEuX3R5cGVdOworCisgICAgY29uc3QgdHJlZUluZm8gPSBnZXRU cmVlTm9kZUhpZXJhcmNoeUZyb21FbGVtZW50KHRoaXMucGdCcm93c2VyLCBzZWxlY3RlZFRyZWVO b2RlKTsKKyAgICBjb25zdCBkaWFsb2cgPSB0aGlzLmNyZWF0ZURpYWxvZyhub2RlLCB0cmVlSW5m bywgJGNvbnRhaW5lcik7CisgICAgdGhpcy5hZGRBbGVydGlmeUNsYXNzVG9SZXN0b3JlTm9kZUNo aWxkTm9kZXMoKTsKKyAgICBkaWFsb2cucmVuZGVyKCk7CisKKyAgICB0aGlzLmVsZW1lbnRzLmNv bnRlbnQuYXBwZW5kQ2hpbGQoJGNvbnRhaW5lci5nZXQoMCkpOworCisgICAgdGhpcy5mb2N1c09u RGlhbG9nKGRpYWxvZyk7CisgICAgdGhpcy5zZXRMaXN0ZW5lcnNGb3JGaWxlbmFtZUNoYW5nZXMo KTsKKyAgfQorCisgIGNhbGxiYWNrKGV2ZW50KSB7CisgICAgY29uc3Qgc2VsZWN0ZWRUcmVlTm9k ZSA9IHRoaXMuZ2V0U2VsZWN0ZWROb2RlKCk7CisgICAgY29uc3Qgc2VsZWN0ZWRUcmVlTm9kZURh dGEgPSB0aGlzLmdldFNlbGVjdGVkTm9kZURhdGEoc2VsZWN0ZWRUcmVlTm9kZSk7CisgICAgY29u c3Qgbm9kZSA9IHNlbGVjdGVkVHJlZU5vZGVEYXRhICYmIHRoaXMucGdCcm93c2VyLk5vZGVzW3Nl bGVjdGVkVHJlZU5vZGVEYXRhLl90eXBlXTsKKworICAgIGlmICh0aGlzLndhc0hlbHBCdXR0b25Q cmVzc2VkKGV2ZW50KSkgeworICAgICAgZXZlbnQuY2FuY2VsID0gdHJ1ZTsKKyAgICAgIHRoaXMu cGdCcm93c2VyLnNob3dIZWxwKAorICAgICAgICBldmVudC5idXR0b24uZWxlbWVudC5uYW1lLAor ICAgICAgICBldmVudC5idXR0b24uZWxlbWVudC5nZXRBdHRyaWJ1dGUoJ3VybCcpLAorICAgICAg ICBub2RlLAorICAgICAgICBzZWxlY3RlZFRyZWVOb2RlLAorICAgICAgICBldmVudC5idXR0b24u ZWxlbWVudC5nZXRBdHRyaWJ1dGUoJ2xhYmVsJykKKyAgICAgICk7CisgICAgICByZXR1cm47Cisg ICAgfQorCisgICAgaWYgKHRoaXMud2FzUmVzdG9yZUJ1dHRvblByZXNzZWQoZXZlbnQpKSB7CisK KyAgICAgIGlmICghc2VsZWN0ZWRUcmVlTm9kZURhdGEpCisgICAgICAgIHJldHVybjsKKworICAg ICAgY29uc3Qgc2VydmVySWRlbnRpZmllciA9IHRoaXMucmV0cmlldmVTZXJ2ZXJJZGVudGlmaWVy KG5vZGUsIHNlbGVjdGVkVHJlZU5vZGUpOworCisgICAgICBjb25zdCBkaWFsb2dXcmFwcGVyID0g dGhpczsKKyAgICAgIGxldCB1cmxTaG9ydGN1dCA9ICdyZXN0b3JlLmNyZWF0ZV9qb2InOworCisg ICAgICBjb25zdCBiYXNlVXJsID0gdXJsX2Zvcih1cmxTaG9ydGN1dCwgeworICAgICAgICAnc2lk Jzogc2VydmVySWRlbnRpZmllciwKKyAgICAgIH0pOworCisgICAgICBjb25zdCB0cmVlSW5mbyA9 IGdldFRyZWVOb2RlSGllcmFyY2h5RnJvbUVsZW1lbnQoCisgICAgICAgIHRoaXMucGdCcm93c2Vy LAorICAgICAgICBzZWxlY3RlZFRyZWVOb2RlCisgICAgICApOworCisgICAgICB0aGlzLnNldEV4 dHJhUGFyYW1ldGVycyhzZWxlY3RlZFRyZWVOb2RlLCB0cmVlSW5mbyk7CisKKyAgICAgIGxldCBz ZXJ2aWNlID0gYXhpb3MuY3JlYXRlKHt9KTsKKyAgICAgIHNlcnZpY2UucG9zdCgKKyAgICAgICAg YmFzZVVybCwKKyAgICAgICAgdGhpcy52aWV3Lm1vZGVsLnRvSlNPTigpCisgICAgICApLnRoZW4o ZnVuY3Rpb24gKCkgeworICAgICAgICBkaWFsb2dXcmFwcGVyLmFsZXJ0aWZ5LnN1Y2Nlc3MoZ2V0 dGV4dCgnUmVzdG9yZSBqb2IgY3JlYXRlZC4nKSwgNSk7CisgICAgICAgIGRpYWxvZ1dyYXBwZXIu cGdCcm93c2VyLkV2ZW50cy50cmlnZ2VyKCdwZ2FkbWluLWJncHJvY2VzczpjcmVhdGVkJywgZGlh bG9nV3JhcHBlcik7CisgICAgICB9KS5jYXRjaChmdW5jdGlvbiAoZXJyb3IpIHsKKyAgICAgICAg dHJ5IHsKKyAgICAgICAgICBjb25zdCBlcnIgPSBlcnJvci5yZXNwb25zZS5kYXRhOworICAgICAg ICAgIGRpYWxvZ1dyYXBwZXIuYWxlcnRpZnkuYWxlcnQoCisgICAgICAgICAgICBnZXR0ZXh0KCdS ZXN0b3JlIGpvYiBmYWlsZWQuJyksCisgICAgICAgICAgICBlcnIuZXJyb3Jtc2cKKyAgICAgICAg ICApOworICAgICAgICB9IGNhdGNoIChlKSB7CisgICAgICAgICAgY29uc29sZS53YXJuKGUuc3Rh Y2sgfHwgZSk7CisgICAgICAgIH0KKyAgICAgIH0pOworICAgIH0KKyAgfQorCisgIGFkZEFsZXJ0 aWZ5Q2xhc3NUb1Jlc3RvcmVOb2RlQ2hpbGROb2RlcygpIHsKKyAgICB0aGlzLmpxdWVyeSh0aGlz LmVsZW1lbnRzLmJvZHkuY2hpbGROb2Rlc1swXSkuYWRkQ2xhc3MoCisgICAgICAnYWxlcnRpZnlf dG9vbHNfZGlhbG9nX3Byb3BlcnRpZXMgb2JqX3Byb3BlcnRpZXMnCisgICAgKTsKKyAgfQorCisg IGdldFNlbGVjdGVkTm9kZSgpIHsKKyAgICBjb25zdCB0cmVlID0gdGhpcy5wZ0Jyb3dzZXIudHJl ZU1lbnU7CisgICAgY29uc3Qgc2VsZWN0ZWROb2RlID0gdHJlZS5zZWxlY3RlZCgpOworICAgIGlm IChzZWxlY3RlZE5vZGUpIHsKKyAgICAgIHJldHVybiB0cmVlLmZpbmROb2RlQnlEb21FbGVtZW50 KHNlbGVjdGVkTm9kZSk7CisgICAgfSBlbHNlIHsKKyAgICAgIHJldHVybiB1bmRlZmluZWQ7Cisg ICAgfQorICB9CisKKyAgZGlzYWJsZVJlc3RvcmVCdXR0b24oKSB7CisgICAgdGhpcy5fX2ludGVy bmFsLmJ1dHRvbnNbMl0uZWxlbWVudC5kaXNhYmxlZCA9IHRydWU7CisgIH0KKworICBlbmFibGVS ZXN0b3JlQnV0dG9uKCkgeworICAgIHRoaXMuX19pbnRlcm5hbC5idXR0b25zWzJdLmVsZW1lbnQu ZGlzYWJsZWQgPSBmYWxzZTsKKyAgfQorCisgIGNyZWF0ZURpYWxvZyhub2RlLCB0cmVlSW5mbywg JGNvbnRhaW5lcikgeworICAgIGNvbnN0IG5ld01vZGVsID0gbmV3IHRoaXMuZGlhbG9nTW9kZWwo eworICAgICAgbm9kZV9kYXRhOiBub2RlLAorICAgIH0sIHsKKyAgICAgIG5vZGVfaW5mbzogdHJl ZUluZm8sCisgICAgfSk7CisgICAgY29uc3QgZmllbGRzID0gdGhpcy5iYWNrZm9ybS5nZW5lcmF0 ZVZpZXdTY2hlbWEoCisgICAgICB0cmVlSW5mbywgbmV3TW9kZWwsICdjcmVhdGUnLCBub2RlLCB0 cmVlSW5mby5zZXJ2ZXIsIHRydWUKKyAgICApOworCisgICAgcmV0dXJuIHRoaXMudmlldyA9IG5l dyB0aGlzLmJhY2tmb3JtLkRpYWxvZyh7CisgICAgICBlbDogJGNvbnRhaW5lciwKKyAgICAgIG1v ZGVsOiBuZXdNb2RlbCwKKyAgICAgIHNjaGVtYTogZmllbGRzLAorICAgIH0pOworICB9CisKKyAg cmV0cmlldmVTZXJ2ZXJJZGVudGlmaWVyKG5vZGUsIHNlbGVjdGVkVHJlZU5vZGUpIHsKKyAgICBj b25zdCB0cmVlSW5mbyA9IGdldFRyZWVOb2RlSGllcmFyY2h5RnJvbUVsZW1lbnQoCisgICAgICB0 aGlzLnBnQnJvd3NlciwKKyAgICAgIHNlbGVjdGVkVHJlZU5vZGUKKyAgICApOworICAgIHJldHVy biB0cmVlSW5mby5zZXJ2ZXIuX2lkOworICB9CisKKyAgc2V0TGlzdGVuZXJzRm9yRmlsZW5hbWVD aGFuZ2VzKCkgeworICAgIGNvbnN0IHNlbGYgPSB0aGlzOworCisgICAgdGhpcy52aWV3Lm1vZGVs Lm9uKCdjaGFuZ2UnLCBmdW5jdGlvbiAoKSB7CisgICAgICBpZiAoIV8uaXNVbmRlZmluZWQodGhp cy5nZXQoJ2ZpbGUnKSkgJiYgdGhpcy5nZXQoJ2ZpbGUnKSAhPT0gJycpIHsKKyAgICAgICAgdGhp cy5lcnJvck1vZGVsLmNsZWFyKCk7CisgICAgICAgIHNlbGYuZW5hYmxlUmVzdG9yZUJ1dHRvbigp OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgc2VsZi5kaXNhYmxlUmVzdG9yZUJ1dHRvbigpOwor ICAgICAgICB0aGlzLmVycm9yTW9kZWwuc2V0KCdmaWxlJywgZ2V0dGV4dCgnUGxlYXNlIHByb3Zp ZGUgYSBmaWxlbmFtZScpKTsKKyAgICAgIH0KKyAgICB9KTsKKyAgfQorCisgIHNldEV4dHJhUGFy YW1ldGVycyhzZWxlY3RlZFRyZWVOb2RlLCB0cmVlSW5mbykgeworICAgIHRoaXMudmlldy5tb2Rl bC5zZXQoJ2RhdGFiYXNlJywgdHJlZUluZm8uZGF0YWJhc2UuX2xhYmVsKTsKKyAgICBpZiAoIXRo aXMudmlldy5tb2RlbC5nZXQoJ2N1c3RvbScpKSB7CisgICAgICBjb25zdCBub2RlRGF0YSA9IHNl bGVjdGVkVHJlZU5vZGUuZ2V0RGF0YSgpOworCisgICAgICBzd2l0Y2ggKG5vZGVEYXRhLl90eXBl KSB7CisgICAgICBjYXNlICdzY2hlbWEnOgorICAgICAgICB0aGlzLnZpZXcubW9kZWwuc2V0KCdz Y2hlbWFzJywgW25vZGVEYXRhLl9sYWJlbF0pOworICAgICAgICBicmVhazsKKyAgICAgIGNhc2Ug J3RhYmxlJzoKKyAgICAgICAgdGhpcy52aWV3Lm1vZGVsLnNldCgnc2NoZW1hcycsIFt0cmVlSW5m by5zY2hlbWEuX2xhYmVsXSk7CisgICAgICAgIHRoaXMudmlldy5tb2RlbC5zZXQoJ3RhYmxlcycs IFtub2RlRGF0YS5fbGFiZWxdKTsKKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlICdmdW5jdGlv bic6CisgICAgICAgIHRoaXMudmlldy5tb2RlbC5zZXQoJ3NjaGVtYXMnLCBbdHJlZUluZm8uc2No ZW1hLl9sYWJlbF0pOworICAgICAgICB0aGlzLnZpZXcubW9kZWwuc2V0KCdmdW5jdGlvbnMnLCBb bm9kZURhdGEuX2xhYmVsXSk7CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSAnaW5kZXgnOgor ICAgICAgICB0aGlzLnZpZXcubW9kZWwuc2V0KCdzY2hlbWFzJywgW3RyZWVJbmZvLnNjaGVtYS5f bGFiZWxdKTsKKyAgICAgICAgdGhpcy52aWV3Lm1vZGVsLnNldCgnaW5kZXhlcycsIFtub2RlRGF0 YS5fbGFiZWxdKTsKKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlICd0cmlnZ2VyJzoKKyAgICAg ICAgdGhpcy52aWV3Lm1vZGVsLnNldCgnc2NoZW1hcycsIFt0cmVlSW5mby5zY2hlbWEuX2xhYmVs XSk7CisgICAgICAgIHRoaXMudmlldy5tb2RlbC5zZXQoJ3RyaWdnZXJzJywgW25vZGVEYXRhLl9s YWJlbF0pOworICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgJ3RyaWdnZXJfZnVuYyc6CisgICAg ICAgIHRoaXMudmlldy5tb2RlbC5zZXQoJ3NjaGVtYXMnLCBbdHJlZUluZm8uc2NoZW1hLl9sYWJl bF0pOworICAgICAgICB0aGlzLnZpZXcubW9kZWwuc2V0KCd0cmlnZ2VyX2Z1bmNzJywgW25vZGVE YXRhLl9sYWJlbF0pOworICAgICAgICBicmVhazsKKyAgICAgIH0KKyAgICB9CisgIH0KKworICB3 YXNSZXN0b3JlQnV0dG9uUHJlc3NlZChldmVudCkgeworICAgIHJldHVybiBldmVudC5idXR0b25b J2RhdGEtYnRuLW5hbWUnXSA9PT0gJ3Jlc3RvcmUnOworICB9Cit9CmRpZmYgLS1naXQgYS93ZWIv cmVncmVzc2lvbi9qYXZhc2NyaXB0L2JhY2t1cC9iYWNrdXBfZGlhbG9nX3NwZWMuanMgYi93ZWIv cmVncmVzc2lvbi9qYXZhc2NyaXB0L2JhY2t1cC9iYWNrdXBfZGlhbG9nX3NwZWMuanMKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAuLjg1ZTVlNjBiCi0tLSAvZGV2L251bGwKKysr IGIvd2ViL3JlZ3Jlc3Npb24vamF2YXNjcmlwdC9iYWNrdXAvYmFja3VwX2RpYWxvZ19zcGVjLmpz CkBAIC0wLDAgKzEsMTkwIEBACisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisvLworLy8gcGdBZG1pbiA0IC0gUG9zdGdyZVNRTCBU b29scworLy8KKy8vIENvcHlyaWdodCAoQykgMjAxMyAtIDIwMTgsIFRoZSBwZ0FkbWluIERldmVs b3BtZW50IFRlYW0KKy8vIFRoaXMgc29mdHdhcmUgaXMgcmVsZWFzZWQgdW5kZXIgdGhlIFBvc3Rn cmVTUUwgTGljZW5jZQorLy8KKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCitpbXBvcnQge0JhY2t1cERpYWxvZ30gZnJvbSAnLi4v Li4vLi4vcGdhZG1pbi90b29scy9iYWNrdXAvc3RhdGljL2pzL2JhY2t1cF9kaWFsb2cnOworaW1w b3J0IHtUcmVlRmFrZX0gZnJvbSAnLi4vdHJlZS90cmVlX2Zha2UnOworaW1wb3J0IHtUcmVlTm9k ZX0gZnJvbSAnLi4vLi4vLi4vcGdhZG1pbi9zdGF0aWMvanMvdHJlZS90cmVlJzsKKworY29uc3Qg Y29udGV4dCA9IGRlc2NyaWJlOworCitkZXNjcmliZSgnT2JqZWN0QmFja3VwRGlhbG9nJywgKCkg PT4geworICBsZXQgYmFja3VwRGlhbG9nOworICBsZXQgcGdCcm93c2VyOworICBsZXQganF1ZXJ5 U3B5OworICBsZXQgYWxlcnRpZnlTcHk7CisgIGxldCBiYWNrdXBNb2RlbFNweTsKKworCisgIGxl dCByb290Tm9kZTsKKyAgbGV0IHNlcnZlclRyZWVOb2RlOworICBsZXQgZGF0YWJhc2VUcmVlTm9k ZTsKKyAgbGV0IHBwYXNTZXJ2ZXJUcmVlTm9kZTsKKyAgbGV0IG5vRGF0YU5vZGU7CisKKyAgYmVm b3JlRWFjaCgoKSA9PiB7CisgICAgcGdCcm93c2VyID0geworICAgICAgdHJlZU1lbnU6IG5ldyBU cmVlRmFrZSgpLAorICAgICAgTm9kZXM6IHsKKyAgICAgICAgc2VydmVyOiB7CisgICAgICAgICAg aGFzSWQ6IHRydWUsCisgICAgICAgICAgbGFiZWw6ICdzZXJ2ZXInLAorICAgICAgICAgIGdldFRy ZWVOb2RlSGllcmFyY2h5OiBqYXNtaW5lLmNyZWF0ZVNweSgnc2VydmVyLmdldFRyZWVOb2RlSGll cmFyY2h5JyksCisgICAgICAgIH0sCisgICAgICAgIGRhdGFiYXNlOiB7CisgICAgICAgICAgaGFz SWQ6IHRydWUsCisgICAgICAgICAgbGFiZWw6ICdkYXRhYmFzZScsCisgICAgICAgICAgZ2V0VHJl ZU5vZGVIaWVyYXJjaHk6IGphc21pbmUuY3JlYXRlU3B5KCdkYi5nZXRUcmVlTm9kZUhpZXJhcmNo eScpLAorICAgICAgICB9LAorICAgICAgICBzY2hlbWE6IHsKKyAgICAgICAgICBoYXNJZDogdHJ1 ZSwKKyAgICAgICAgICBsYWJlbDogJ3NjaGVtYScsCisgICAgICAgICAgZ2V0VHJlZU5vZGVIaWVy YXJjaHk6IGphc21pbmUuY3JlYXRlU3B5KCdkYi5nZXRUcmVlTm9kZUhpZXJhcmNoeScpLAorICAg ICAgICB9LAorICAgICAgfSwKKyAgICB9OworICAgIHBnQnJvd3Nlci5Ob2Rlcy5zZXJ2ZXIuaGFz SWQgPSB0cnVlOworICAgIHBnQnJvd3Nlci5Ob2Rlcy5kYXRhYmFzZS5oYXNJZCA9IHRydWU7Cisg ICAganF1ZXJ5U3B5ID0gamFzbWluZS5jcmVhdGVTcHkoJ2pxdWVyeVNweScpOworICAgIGJhY2t1 cE1vZGVsU3B5ID0gamFzbWluZS5jcmVhdGVTcHkoJ2JhY2t1cE1vZGVsU3B5Jyk7CisKKyAgICBy b290Tm9kZSA9IHBnQnJvd3Nlci50cmVlTWVudS5hZGROZXdOb2RlKCdsZXZlbDEnLCB7fSwgW10p OworCisgICAgc2VydmVyVHJlZU5vZGUgPSBuZXcgVHJlZU5vZGUoJ2xldmVsMS4xJywgeworICAg ICAgX3R5cGU6ICdzZXJ2ZXInLAorICAgICAgX2lkOiAxMCwKKyAgICB9KTsKKyAgICBwZ0Jyb3dz ZXIudHJlZU1lbnUuYWRkQ2hpbGQocm9vdE5vZGUsIHNlcnZlclRyZWVOb2RlKTsKKworICAgIGRh dGFiYXNlVHJlZU5vZGUgPSBuZXcgVHJlZU5vZGUoCisgICAgICAnbGV2ZWwxLjEuMScsIHsKKyAg ICAgICAgX3R5cGU6ICdkYXRhYmFzZScsCisgICAgICAgIF9pZDogMTEsCisgICAgICAgIGxhYmVs OiAnc29tZV9kYXRhYmFzZScsCisgICAgICAgIF9sYWJlbDogJ3NvbWVfZGF0YWJhc2VfbGFiZWwn LAorICAgICAgfSwgW3tpZDogJ2xldmVsMS4xLjEnfV0pOworICAgIHBnQnJvd3Nlci50cmVlTWVu dS5hZGRDaGlsZChzZXJ2ZXJUcmVlTm9kZSwgZGF0YWJhc2VUcmVlTm9kZSk7CisKKyAgICBwcGFz U2VydmVyVHJlZU5vZGUgPSBuZXcgVHJlZU5vZGUoJ2xldmVsMS4yJywgeworICAgICAgX3R5cGU6 ICdzZXJ2ZXInLAorICAgICAgc2VydmVyX3R5cGU6ICdwcGFzJywKKyAgICB9KTsKKyAgICBwZ0Jy b3dzZXIudHJlZU1lbnUuYWRkQ2hpbGQocm9vdE5vZGUsIHBwYXNTZXJ2ZXJUcmVlTm9kZSk7CisK KyAgICBjb25zdCBzb21lTm9kZVVuZGVybmVhdGhQUEFTU2VydmVyID0gbmV3IFRyZWVOb2RlKCds ZXZlbDMnLCB7fSk7CisgICAgcGdCcm93c2VyLnRyZWVNZW51LmFkZENoaWxkKHBwYXNTZXJ2ZXJU cmVlTm9kZSwKKyAgICAgIHNvbWVOb2RlVW5kZXJuZWF0aFBQQVNTZXJ2ZXIpOworCisgICAgbm9E YXRhTm9kZSA9IG5ldyBUcmVlTm9kZSgKKyAgICAgICdsZXZlbDMuMScsIHVuZGVmaW5lZCk7Cisg ICAgcGdCcm93c2VyLnRyZWVNZW51LmFkZENoaWxkKHNvbWVOb2RlVW5kZXJuZWF0aFBQQVNTZXJ2 ZXIsIG5vRGF0YU5vZGUpOworICB9KTsKKworICBkZXNjcmliZSgnI2RyYXcnLCAoKSA9PiB7Cisg ICAgYmVmb3JlRWFjaCgoKSA9PiB7CisgICAgICBhbGVydGlmeVNweSA9IGphc21pbmUuY3JlYXRl U3B5T2JqKCdhbGVydGlmeScsIFsnYWxlcnQnLCAnZGlhbG9nJ10pOworICAgICAgYWxlcnRpZnlT cHlbJ2JhY2t1cF9vYmplY3RzJ10gPSBqYXNtaW5lLmNyZWF0ZVNweSgnYmFja3VwX29iamVjdHMn KTsKKyAgICAgIGJhY2t1cERpYWxvZyA9IG5ldyBCYWNrdXBEaWFsb2coCisgICAgICAgIHBnQnJv d3NlciwKKyAgICAgICAganF1ZXJ5U3B5LAorICAgICAgICBhbGVydGlmeVNweSwKKyAgICAgICAg YmFja3VwTW9kZWxTcHkKKyAgICAgICk7CisKKyAgICAgIHBnQnJvd3Nlci5nZXRfcHJlZmVyZW5j ZSA9IGphc21pbmUuY3JlYXRlU3B5KCdnZXRfcHJlZmVyZW5jZXMnKTsKKyAgICB9KTsKKworICAg IGNvbnRleHQoJ3RoZXJlIGFyZSBubyBhbmNlc3RvcnMgb2YgdGhlIHR5cGUgc2VydmVyJywgKCkg PT4geworICAgICAgaXQoJ2RvZXMgbm90IGNyZWF0ZSBhIGRpYWxvZycsICgpID0+IHsKKyAgICAg ICAgcGdCcm93c2VyLnRyZWVNZW51LnNlbGVjdE5vZGUoW3Jvb3ROb2RlXSk7CisgICAgICAgIGJh Y2t1cERpYWxvZy5kcmF3KG51bGwsIG51bGwsIG51bGwpOworICAgICAgICBleHBlY3QoYWxlcnRp ZnlTcHlbJ2JhY2t1cF9vYmplY3RzJ10pLm5vdC50b0hhdmVCZWVuQ2FsbGVkKCk7CisgICAgICB9 KTsKKworICAgICAgaXQoJ2Rpc3BsYXkgYW4gYWxlcnQgd2l0aCBhIEJhY2t1cCBFcnJvcicsICgp ID0+IHsKKyAgICAgICAgYmFja3VwRGlhbG9nLmRyYXcobnVsbCwgW3Jvb3ROb2RlXSwgbnVsbCk7 CisgICAgICAgIGV4cGVjdChhbGVydGlmeVNweS5hbGVydCkudG9IYXZlQmVlbkNhbGxlZFdpdGgo CisgICAgICAgICAgJ0JhY2t1cCBFcnJvcicsCisgICAgICAgICAgJ1BsZWFzZSBzZWxlY3Qgc2Vy dmVyIG9yIGNoaWxkIG5vZGUgZnJvbSB0aGUgYnJvd3NlciB0cmVlLicKKyAgICAgICAgKTsKKyAg ICAgIH0pOworICAgIH0pOworCisgICAgY29udGV4dCgndGhlcmUgaXMgYW4gYW5jZXN0b3Igb2Yg dGhlIHR5cGUgc2VydmVyJywgKCkgPT4geworICAgICAgY29udGV4dCgnbm8gcHJlZmVyZW5jZSBj YW4gYmUgZm91bmQnLCAoKSA9PiB7CisgICAgICAgIGJlZm9yZUVhY2goKCkgPT4geworICAgICAg ICAgIHBnQnJvd3Nlci5nZXRfcHJlZmVyZW5jZS5hbmQucmV0dXJuVmFsdWUodW5kZWZpbmVkKTsK KyAgICAgICAgfSk7CisKKyAgICAgICAgY29udGV4dCgnc2VydmVyIGlzIGEgcHBhcyBzZXJ2ZXIn LCAoKSA9PiB7CisgICAgICAgICAgaXQoJ2Rpc3BsYXkgYW4gYWxlcnQgd2l0aCAiQmFja3VwIEVy cm9yIicsICgpID0+IHsKKyAgICAgICAgICAgIGJhY2t1cERpYWxvZy5kcmF3KG51bGwsIFt7aWQ6 ICdsZXZlbDEuMS4xJ31dLCBudWxsKTsKKyAgICAgICAgICAgIGV4cGVjdChhbGVydGlmeVNweS5h bGVydCkudG9IYXZlQmVlbkNhbGxlZFdpdGgoCisgICAgICAgICAgICAgICdCYWNrdXAgRXJyb3In LAorICAgICAgICAgICAgICAnRmFpbGVkIHRvIGxvYWQgcHJlZmVyZW5jZSBwZ19iaW5fZGlyIG9m IG1vZHVsZSBwYXRocycKKyAgICAgICAgICAgICk7CisgICAgICAgICAgfSk7CisgICAgICAgIH0p OworCisgICAgICAgIGNvbnRleHQoJ3NlcnZlciBpcyBub3QgYSBwcGFzIHNlcnZlcicsICgpID0+ IHsKKyAgICAgICAgICBpdCgnZGlzcGxheSBhbiBhbGVydCB3aXRoICJCYWNrdXAgRXJyb3IiJywg KCkgPT4geworICAgICAgICAgICAgYmFja3VwRGlhbG9nLmRyYXcobnVsbCwgW3BwYXNTZXJ2ZXJU cmVlTm9kZV0sIG51bGwpOworICAgICAgICAgICAgZXhwZWN0KGFsZXJ0aWZ5U3B5LmFsZXJ0KS50 b0hhdmVCZWVuQ2FsbGVkV2l0aCgKKyAgICAgICAgICAgICAgJ0JhY2t1cCBFcnJvcicsCisgICAg ICAgICAgICAgICdGYWlsZWQgdG8gbG9hZCBwcmVmZXJlbmNlIHBwYXNfYmluX2RpciBvZiBtb2R1 bGUgcGF0aHMnCisgICAgICAgICAgICApOworICAgICAgICAgIH0pOworICAgICAgICB9KTsKKyAg ICAgIH0pOworCisgICAgICBjb250ZXh0KCdwcmVmZXJlbmNlIGNhbiBiZSBmb3VuZCcsICgpID0+ IHsKKyAgICAgICAgY29udGV4dCgnYmluYXJ5IGZvbGRlciBpcyBub3QgY29uZmlndXJlZCcsICgp ID0+IHsKKyAgICAgICAgICBiZWZvcmVFYWNoKCgpID0+IHsKKyAgICAgICAgICAgIHBnQnJvd3Nl ci5nZXRfcHJlZmVyZW5jZS5hbmQucmV0dXJuVmFsdWUoe30pOworICAgICAgICAgIH0pOworCisg ICAgICAgICAgY29udGV4dCgnc2VydmVyIGlzIGEgcHBhcyBzZXJ2ZXInLCAoKSA9PiB7CisgICAg ICAgICAgICBpdCgnZGlzcGxheSBhbiBhbGVydCB3aXRoICJDb25maWd1cmF0aW9uIHJlcXVpcmVk IicsICgpID0+IHsKKyAgICAgICAgICAgICAgYmFja3VwRGlhbG9nLmRyYXcobnVsbCwgW3NlcnZl clRyZWVOb2RlXSwgbnVsbCk7CisgICAgICAgICAgICAgIGV4cGVjdChhbGVydGlmeVNweS5hbGVy dCkudG9IYXZlQmVlbkNhbGxlZFdpdGgoCisgICAgICAgICAgICAgICAgJ0NvbmZpZ3VyYXRpb24g cmVxdWlyZWQnLAorICAgICAgICAgICAgICAgICdQbGVhc2UgY29uZmlndXJlIHRoZSBQb3N0Z3Jl U1FMIEJpbmFyeSBQYXRoIGluIHRoZSBQcmVmZXJlbmNlcyBkaWFsb2cuJworICAgICAgICAgICAg ICApOworICAgICAgICAgICAgfSk7CisgICAgICAgICAgfSk7CisKKyAgICAgICAgICBjb250ZXh0 KCdzZXJ2ZXIgaXMgbm90IGEgcHBhcyBzZXJ2ZXInLCAoKSA9PiB7CisgICAgICAgICAgICBpdCgn ZGlzcGxheSBhbiBhbGVydCB3aXRoICJDb25maWd1cmF0aW9uIHJlcXVpcmVkIicsICgpID0+IHsK KyAgICAgICAgICAgICAgYmFja3VwRGlhbG9nLmRyYXcobnVsbCwgW3BwYXNTZXJ2ZXJUcmVlTm9k ZV0sIG51bGwpOworICAgICAgICAgICAgICBleHBlY3QoYWxlcnRpZnlTcHkuYWxlcnQpLnRvSGF2 ZUJlZW5DYWxsZWRXaXRoKAorICAgICAgICAgICAgICAgICdDb25maWd1cmF0aW9uIHJlcXVpcmVk JywKKyAgICAgICAgICAgICAgICAnUGxlYXNlIGNvbmZpZ3VyZSB0aGUgRURCIEFkdmFuY2VkIFNl cnZlciBCaW5hcnkgUGF0aCBpbiB0aGUgUHJlZmVyZW5jZXMgZGlhbG9nLicKKyAgICAgICAgICAg ICAgKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICAgIH0pOworICAgICAgICB9KTsKKworICAg ICAgICBjb250ZXh0KCdiaW5hcnkgZm9sZGVyIGlzIGNvbmZpZ3VyZWQnLCAoKSA9PiB7CisgICAg ICAgICAgbGV0IGJhY2t1cERpYWxvZ1Jlc2l6ZVRvU3B5OworICAgICAgICAgIGJlZm9yZUVhY2go KCkgPT4geworICAgICAgICAgICAgYmFja3VwRGlhbG9nUmVzaXplVG9TcHkgPSBqYXNtaW5lLmNy ZWF0ZVNweU9iaignYmFja3VwRGlhbG9nUmVzaXplVG9TcHknLCBbJ3Jlc2l6ZVRvJ10pOworICAg ICAgICAgICAgYWxlcnRpZnlTcHlbJ2JhY2t1cF9vYmplY3RzJ10uYW5kCisgICAgICAgICAgICAg IC5yZXR1cm5WYWx1ZShiYWNrdXBEaWFsb2dSZXNpemVUb1NweSk7CisgICAgICAgICAgICBwZ0Jy b3dzZXIuZ2V0X3ByZWZlcmVuY2UuYW5kLnJldHVyblZhbHVlKHt2YWx1ZTogJy9zb21lL3BhdGgn fSk7CisgICAgICAgICAgfSk7CisKKyAgICAgICAgICBpdCgnZGlzcGxheXMgdGhlIGRpYWxvZycs ICgpID0+IHsKKyAgICAgICAgICAgIGJhY2t1cERpYWxvZy5kcmF3KG51bGwsIFtzZXJ2ZXJUcmVl Tm9kZV0sIG51bGwpOworICAgICAgICAgICAgZXhwZWN0KGFsZXJ0aWZ5U3B5WydiYWNrdXBfb2Jq ZWN0cyddKS50b0hhdmVCZWVuQ2FsbGVkV2l0aCh0cnVlKTsKKyAgICAgICAgICAgIGV4cGVjdChi YWNrdXBEaWFsb2dSZXNpemVUb1NweS5yZXNpemVUbykudG9IYXZlQmVlbkNhbGxlZFdpdGgoJzYw JScsICc1MCUnKTsKKyAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CisgICAgICB9KTsKKyAgICB9 KTsKKyAgfSk7CisKK30pOwpkaWZmIC0tZ2l0IGEvd2ViL3JlZ3Jlc3Npb24vamF2YXNjcmlwdC9i YWNrdXAvYmFja3VwX2RpYWxvZ193cmFwcGVyX3NwZWMuanMgYi93ZWIvcmVncmVzc2lvbi9qYXZh c2NyaXB0L2JhY2t1cC9iYWNrdXBfZGlhbG9nX3dyYXBwZXJfc3BlYy5qcwpuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwMC4uNTg3MDUzMTgKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIv cmVncmVzc2lvbi9qYXZhc2NyaXB0L2JhY2t1cC9iYWNrdXBfZGlhbG9nX3dyYXBwZXJfc3BlYy5q cwpAQCAtMCwwICsxLDY3NSBAQAoraW1wb3J0IHtUcmVlRmFrZX0gZnJvbSAnLi4vdHJlZS90cmVl X2Zha2UnOworaW1wb3J0IHtCYWNrdXBEaWFsb2dXcmFwcGVyfSBmcm9tICcuLi8uLi8uLi9wZ2Fk bWluL3Rvb2xzL2JhY2t1cC9zdGF0aWMvanMvYmFja3VwX2RpYWxvZ193cmFwcGVyJzsKK2ltcG9y dCBheGlvcyBmcm9tICdheGlvcy9pbmRleCc7CitpbXBvcnQgTW9ja0FkYXB0ZXIgZnJvbSAnYXhp b3MtbW9jay1hZGFwdGVyJzsKK2ltcG9ydCB7RmFrZU1vZGVsfSBmcm9tICcuLi9mYWtlX21vZGVs JzsKK2ltcG9ydCB7VHJlZU5vZGV9IGZyb20gJy4uLy4uLy4uL3BnYWRtaW4vc3RhdGljL2pzL3Ry ZWUvdHJlZSc7CisKK2xldCBjb250ZXh0ID0gZGVzY3JpYmU7CisKK2Rlc2NyaWJlKCdCYWNrdXBE aWFsb2dXcmFwcGVyJywgKCkgPT4geworICBsZXQganF1ZXJ5U3B5OworICBsZXQgcGdCcm93c2Vy OworICBsZXQgYWxlcnRpZnlTcHk7CisgIGxldCBkaWFsb2dNb2RlbEtsYXNzU3B5OworICBsZXQg YmFja2Zvcm07CisgIGxldCBnZW5lcmF0ZWRCYWNrdXBNb2RlbDsKKyAgbGV0IGJhY2t1cERpYWxv Z1dyYXBwZXI7CisgIGxldCBub0RhdGFOb2RlOworICBsZXQgc2VydmVyVHJlZU5vZGU7CisgIGxl dCBkYXRhYmFzZVRyZWVOb2RlOworICBsZXQgdmlld1NjaGVtYTsKKyAgbGV0IGJhY2t1cEpRdWVy eUNvbnRhaW5lclNweTsKKyAgbGV0IGJhY2t1cE5vZGVDaGlsZE5vZGVTcHk7CisgIGxldCBiYWNr dXBOb2RlOworCisgIGJlZm9yZUVhY2goKCkgPT4geworICAgIHBnQnJvd3NlciA9IHsKKyAgICAg IHRyZWVNZW51OiBuZXcgVHJlZUZha2UoKSwKKyAgICAgIE5vZGVzOiB7CisgICAgICAgIHNlcnZl cjogeworICAgICAgICAgIGhhc0lkOiB0cnVlLAorICAgICAgICAgIGdldFRyZWVOb2RlSGllcmFy Y2h5OiBqYXNtaW5lLmNyZWF0ZVNweSgnZ2V0VHJlZU5vZGVIaWVyYXJjaHknKSwKKyAgICAgICAg fSwKKyAgICAgICAgZGF0YWJhc2U6IHsKKyAgICAgICAgICBoYXNJZDogdHJ1ZSwKKyAgICAgICAg fSwKKyAgICAgIH0sCisgICAgICBrZXlib2FyZE5hdmlnYXRpb246IGphc21pbmUuY3JlYXRlU3B5 T2JqKCdrZXlib2FyZE5hdmlnYXRpb24nLCBbJ2dldERpYWxvZ1RhYk5hdmlnYXRvciddKSwKKyAg ICB9OworICAgIG5vRGF0YU5vZGUgPSBwZ0Jyb3dzZXIudHJlZU1lbnUuYWRkTmV3Tm9kZSgnbGV2 ZWwxLjEnLCB1bmRlZmluZWQsIFt7aWQ6ICdsZXZlbDEnfV0pOworICAgIHNlcnZlclRyZWVOb2Rl ID0gcGdCcm93c2VyLnRyZWVNZW51LmFkZE5ld05vZGUoJ2xldmVsMi4xJywgeworICAgICAgX3R5 cGU6ICdzZXJ2ZXInLAorICAgICAgX2lkOiAxMCwKKyAgICAgIGxhYmVsOiAnc29tZS10cmVlLWxh YmVsJywKKyAgICB9LCBbe2lkOiAnbGV2ZWwyLjEnfV0pOworICAgIGRhdGFiYXNlVHJlZU5vZGUg PSBuZXcgVHJlZU5vZGUoJ2RhdGFiYXNlLXRyZWUtbm9kZScsIHsKKyAgICAgIF90eXBlOiAnZGF0 YWJhc2UnLAorICAgICAgX2xhYmVsOiAnc29tZS1kYXRhYmFzZS1sYWJlbCcsCisgICAgfSwgW3tp ZDogJ2RhdGFiYXNlLXRyZWUtbm9kZSd9XSk7CisgICAgcGdCcm93c2VyLnRyZWVNZW51LmFkZENo aWxkKHNlcnZlclRyZWVOb2RlLCBkYXRhYmFzZVRyZWVOb2RlKTsKKworICAgIGpxdWVyeVNweSA9 IGphc21pbmUuY3JlYXRlU3B5KCdqcXVlcnlTcHknKTsKKyAgICBiYWNrdXBOb2RlID0geworICAg ICAgX19pbnRlcm5hbDogeworICAgICAgICBidXR0b25zOiBbe30sIHt9LCB7CisgICAgICAgICAg ZWxlbWVudDogeworICAgICAgICAgICAgZGlzYWJsZWQ6IGZhbHNlLAorICAgICAgICAgIH0sCisg ICAgICAgIH1dLAorICAgICAgfSwKKyAgICAgIGVsZW1lbnRzOiB7CisgICAgICAgIGJvZHk6IHsK KyAgICAgICAgICBjaGlsZE5vZGVzOiBbCisgICAgICAgICAgICB7fSwKKyAgICAgICAgICBdLAor ICAgICAgICB9LAorICAgICAgICBjb250ZW50OiBqYXNtaW5lLmNyZWF0ZVNweU9iaignY29udGVu dCcsIFsnYXBwZW5kQ2hpbGQnLCAnYXR0ciddKSwKKyAgICAgIH0sCisgICAgfTsKKworICAgIGJh Y2t1cEpRdWVyeUNvbnRhaW5lclNweSA9IGphc21pbmUuY3JlYXRlU3B5T2JqKCdiYWNrdXBKUXVl cnlDb250YWluZXInLCBbJ2dldCcsICdhdHRyJ10pOworICAgIGJhY2t1cEpRdWVyeUNvbnRhaW5l clNweS5nZXQuYW5kLnJldHVyblZhbHVlKGJhY2t1cEpRdWVyeUNvbnRhaW5lclNweSk7CisKKyAg ICBnZW5lcmF0ZWRCYWNrdXBNb2RlbCA9IHt9OworICAgIGRpYWxvZ01vZGVsS2xhc3NTcHkgPSBq YXNtaW5lLmNyZWF0ZVNweSgnZGlhbG9nTW9kZWxLbGFzcycpOworICAgIGRpYWxvZ01vZGVsS2xh c3NTcHkuYW5kLnJldHVyblZhbHVlKGdlbmVyYXRlZEJhY2t1cE1vZGVsKTsKKworICAgIHZpZXdT Y2hlbWEgPSB7fTsKKyAgICBiYWNrZm9ybSA9IGphc21pbmUuY3JlYXRlU3B5T2JqKCdiYWNrZm9y bScsIFsnZ2VuZXJhdGVWaWV3U2NoZW1hJywgJ0RpYWxvZyddKTsKKyAgICBiYWNrZm9ybS5nZW5l cmF0ZVZpZXdTY2hlbWEuYW5kLnJldHVyblZhbHVlKHZpZXdTY2hlbWEpOworCisgICAgYmFja3Vw Tm9kZUNoaWxkTm9kZVNweSA9IGphc21pbmUuY3JlYXRlU3B5T2JqKCdzb21ldGhpbmcnLCBbJ2Fk ZENsYXNzJ10pOworICAgIGpxdWVyeVNweS5hbmQuY2FsbEZha2UoKHNlbGVjdG9yKSA9PiB7Cisg ICAgICBpZiAoc2VsZWN0b3IgPT09ICc8ZGl2IGNsYXNzPVwnYmFja3VwX2RpYWxvZ1wnPjwvZGl2 PicpIHsKKyAgICAgICAgcmV0dXJuIGJhY2t1cEpRdWVyeUNvbnRhaW5lclNweTsKKyAgICAgIH0g ZWxzZSBpZiAoc2VsZWN0b3IgPT09IGJhY2t1cE5vZGUuZWxlbWVudHMuYm9keS5jaGlsZE5vZGVz WzBdKSB7CisgICAgICAgIHJldHVybiBiYWNrdXBOb2RlQ2hpbGROb2RlU3B5OworICAgICAgfQor ICAgIH0pOworCisgIH0pOworCisgIGRlc2NyaWJlKCcjcHJlcGFyZScsICgpID0+IHsKKyAgICBi ZWZvcmVFYWNoKCgpID0+IHsKKyAgICAgIGFsZXJ0aWZ5U3B5ID0gamFzbWluZS5jcmVhdGVTcHlP YmooJ2FsZXJ0aWZ5JywgWydhbGVydCcsICdkaWFsb2cnXSk7CisgICAgICBiYWNrdXBEaWFsb2dX cmFwcGVyID0gbmV3IEJhY2t1cERpYWxvZ1dyYXBwZXIoCisgICAgICAgICc8ZGl2IGNsYXNzPVwn YmFja3VwX2RpYWxvZ1wnPjwvZGl2PicsCisgICAgICAgICdiYWNrdXBEaWFsb2dUaXRsZScsCisg ICAgICAgICdiYWNrdXAnLAorICAgICAgICBqcXVlcnlTcHksCisgICAgICAgIHBnQnJvd3NlciwK KyAgICAgICAgYWxlcnRpZnlTcHksCisgICAgICAgIGRpYWxvZ01vZGVsS2xhc3NTcHksCisgICAg ICAgIGJhY2tmb3JtCisgICAgICApOworICAgICAgYmFja3VwRGlhbG9nV3JhcHBlciA9IE9iamVj dC5hc3NpZ24oYmFja3VwRGlhbG9nV3JhcHBlciwgYmFja3VwTm9kZSk7CisgICAgfSk7CisKKyAg ICBjb250ZXh0KCdubyB0cmVlIGVsZW1lbnQgaXMgc2VsZWN0ZWQnLCAoKSA9PiB7CisgICAgICBp dCgnZG9lcyBub3QgY3JlYXRlIGEgYmFja2Zvcm0gZGlhbG9nJywgKCkgPT4geworICAgICAgICBi YWNrdXBEaWFsb2dXcmFwcGVyLnByZXBhcmUoKTsKKyAgICAgICAgZXhwZWN0KGJhY2tmb3JtLkRp YWxvZykubm90LnRvSGF2ZUJlZW5DYWxsZWQoKTsKKyAgICAgIH0pOworCisgICAgICBpdCgnZGlz YWJsZXMgdGhlIGJ1dHRvbiAic3VibWl0IGJ1dHRvbiIgdW50aWwgYSBmaWxlbmFtZSBpcyBzZWxl Y3RlZCcsICgpID0+IHsKKyAgICAgICAgYmFja3VwRGlhbG9nV3JhcHBlci5wcmVwYXJlKCk7Cisg ICAgICAgIGV4cGVjdChiYWNrdXBEaWFsb2dXcmFwcGVyLl9faW50ZXJuYWwuYnV0dG9uc1syXS5l bGVtZW50LmRpc2FibGVkKS50b0JlKHRydWUpOworICAgICAgfSk7CisgICAgfSk7CisKKyAgICBj b250ZXh0KCdzZWxlY3RlZCB0cmVlIG5vZGUgaGFzIG5vIGRhdGEnLCAoKSA9PiB7CisgICAgICBi ZWZvcmVFYWNoKCgpID0+IHsKKyAgICAgICAgcGdCcm93c2VyLnRyZWVNZW51LnNlbGVjdE5vZGUo bm9EYXRhTm9kZS5kb21Ob2RlKTsKKyAgICAgIH0pOworCisgICAgICBpdCgnZG9lcyBub3QgY3Jl YXRlIGEgYmFja2Zvcm0gZGlhbG9nJywgKCkgPT4geworICAgICAgICBiYWNrdXBEaWFsb2dXcmFw cGVyLnByZXBhcmUoKTsKKyAgICAgICAgZXhwZWN0KGJhY2tmb3JtLkRpYWxvZykubm90LnRvSGF2 ZUJlZW5DYWxsZWQoKTsKKyAgICAgIH0pOworCisgICAgICBpdCgnZGlzYWJsZXMgdGhlIGJ1dHRv biAic3VibWl0IGJ1dHRvbiIgdW50aWwgYSBmaWxlbmFtZSBpcyBzZWxlY3RlZCcsICgpID0+IHsK KyAgICAgICAgYmFja3VwRGlhbG9nV3JhcHBlci5wcmVwYXJlKCk7CisgICAgICAgIGV4cGVjdChi YWNrdXBEaWFsb2dXcmFwcGVyLl9faW50ZXJuYWwuYnV0dG9uc1syXS5lbGVtZW50LmRpc2FibGVk KS50b0JlKHRydWUpOworICAgICAgfSk7CisgICAgfSk7CisKKyAgICBjb250ZXh0KCd0cmVlIGVs ZW1lbnQgaXMgc2VsZWN0ZWQnLCAoKSA9PiB7CisgICAgICBsZXQgdHJlZUhpZXJhcmNoeUluZm9y bWF0aW9uOworICAgICAgbGV0IGRpYWxvZ1NweTsKKworICAgICAgYmVmb3JlRWFjaCgoKSA9PiB7 CisgICAgICAgIHRyZWVIaWVyYXJjaHlJbmZvcm1hdGlvbiA9IHsKKyAgICAgICAgICBzZXJ2ZXI6 IHsKKyAgICAgICAgICAgIF90eXBlOiAnc2VydmVyJywKKyAgICAgICAgICAgIF9pZDogMTAsCisg ICAgICAgICAgICBwcmlvcml0eTogMCwKKyAgICAgICAgICAgIGxhYmVsOiAnc29tZS10cmVlLWxh YmVsJywKKyAgICAgICAgICB9LAorICAgICAgICB9OworICAgICAgICBwZ0Jyb3dzZXIudHJlZU1l bnUuc2VsZWN0Tm9kZShzZXJ2ZXJUcmVlTm9kZS5kb21Ob2RlKTsKKyAgICAgICAgcGdCcm93c2Vy Lk5vZGVzWydzZXJ2ZXInXS5nZXRUcmVlTm9kZUhpZXJhcmNoeS5hbmQKKyAgICAgICAgICAucmV0 dXJuVmFsdWUodHJlZUhpZXJhcmNoeUluZm9ybWF0aW9uKTsKKyAgICAgICAgZGlhbG9nU3B5ID0g amFzbWluZS5jcmVhdGVTcHlPYmooJ25ld1ZpZXcnLCBbJ3JlbmRlciddKTsKKyAgICAgICAgZGlh bG9nU3B5LiRlbCA9IGphc21pbmUuY3JlYXRlU3B5T2JqKCckZWwnLCBbJ2ZpbmQnLCAnYXR0cidd KTsKKyAgICAgICAgZGlhbG9nU3B5Lm1vZGVsID0gamFzbWluZS5jcmVhdGVTcHlPYmooJ21vZGVs JywgWydvbiddKTsKKyAgICAgICAgZGlhbG9nU3B5LiRlbC5maW5kLmFuZC5yZXR1cm5WYWx1ZShb XSk7CisKKyAgICAgICAgYmFja2Zvcm0uRGlhbG9nLmFuZC5yZXR1cm5WYWx1ZShkaWFsb2dTcHkp OworICAgICAgfSk7CisKKyAgICAgIGl0KCdjcmVhdGVzIGEgYmFja2Zvcm0gZGlhbG9nIGFuZCBk aXNwbGF5cyBpdCcsICgpID0+IHsKKyAgICAgICAgYmFja3VwRGlhbG9nV3JhcHBlci5wcmVwYXJl KCk7CisgICAgICAgIGV4cGVjdChiYWNrZm9ybS5EaWFsb2cpLnRvSGF2ZUJlZW5DYWxsZWRXaXRo KHsKKyAgICAgICAgICBlbDogYmFja3VwSlF1ZXJ5Q29udGFpbmVyU3B5LAorICAgICAgICAgIG1v ZGVsOiBnZW5lcmF0ZWRCYWNrdXBNb2RlbCwKKyAgICAgICAgICBzY2hlbWE6IHZpZXdTY2hlbWEs CisgICAgICAgIH0pOworCisgICAgICAgIGV4cGVjdChkaWFsb2dTcHkucmVuZGVyKS50b0hhdmVC ZWVuQ2FsbGVkKCk7CisgICAgICB9KTsKKworCisgICAgICBpdCgnYWRkIGFsZXJ0aWZ5IGNsYXNz ZXMgdG8gcmVzdG9yZSBub2RlIGNoaWxkbm9kZScsICgpID0+IHsKKyAgICAgICAgYmFja3VwRGlh bG9nV3JhcHBlci5wcmVwYXJlKCk7CisgICAgICAgIGV4cGVjdChiYWNrdXBOb2RlQ2hpbGROb2Rl U3B5LmFkZENsYXNzKQorICAgICAgICAgIC50b0hhdmVCZWVuQ2FsbGVkV2l0aCgnYWxlcnRpZnlf dG9vbHNfZGlhbG9nX3Byb3BlcnRpZXMgb2JqX3Byb3BlcnRpZXMnKTsKKyAgICAgIH0pOworCisg ICAgICBpdCgnZGlzYWJsZXMgdGhlIGJ1dHRvbiBzdWJtaXQgYnV0dG9uIHVudGlsIGEgZmlsZW5h bWUgaXMgc2VsZWN0ZWQnLCAoKSA9PiB7CisgICAgICAgIGJhY2t1cERpYWxvZ1dyYXBwZXIucHJl cGFyZSgpOworICAgICAgICBleHBlY3QoYmFja3VwTm9kZS5fX2ludGVybmFsLmJ1dHRvbnNbMl0u ZWxlbWVudC5kaXNhYmxlZCkudG9CZSh0cnVlKTsKKyAgICAgIH0pOworCisgICAgICBpdCgnZ2Vu ZXJhdGVzIGEgbmV3IGJhY2t1cCBtb2RlbCcsICgpID0+IHsKKyAgICAgICAgYmFja3VwRGlhbG9n V3JhcHBlci5wcmVwYXJlKCk7CisgICAgICAgIGV4cGVjdChkaWFsb2dNb2RlbEtsYXNzU3B5KS50 b0hhdmVCZWVuQ2FsbGVkV2l0aCgKKyAgICAgICAgICB7dHlwZTogJ2JhY2t1cCd9LAorICAgICAg ICAgIHtub2RlX2luZm86IHRyZWVIaWVyYXJjaHlJbmZvcm1hdGlvbn0KKyAgICAgICAgKTsKKyAg ICAgIH0pOworCisgICAgICBpdCgnYWRkIHRoZSBuZXcgZGlhbG9nIHRvIHRoZSBiYWNrdXAgbm9k ZSBIVE1MJywgKCkgPT4geworICAgICAgICBiYWNrdXBEaWFsb2dXcmFwcGVyLnByZXBhcmUoKTsK KyAgICAgICAgZXhwZWN0KGJhY2t1cE5vZGUuZWxlbWVudHMuY29udGVudC5hcHBlbmRDaGlsZCku dG9IYXZlQmVlbkNhbGxlZFdpdGgoYmFja3VwSlF1ZXJ5Q29udGFpbmVyU3B5KTsKKyAgICAgIH0p OworICAgIH0pOworICB9KTsKKworICBkZXNjcmliZSgnb25CdXR0b25DbGlja2VkJywgKCkgPT4g eworICAgIGxldCBuZXR3b3JrTW9jazsKKyAgICBiZWZvcmVFYWNoKCgpID0+IHsKKyAgICAgIG5l dHdvcmtNb2NrID0gbmV3IE1vY2tBZGFwdGVyKGF4aW9zKTsKKyAgICAgIGJhY2t1cERpYWxvZ1dy YXBwZXIgPSBuZXcgQmFja3VwRGlhbG9nV3JhcHBlcigKKyAgICAgICAgJzxkaXYgY2xhc3M9XCdi YWNrdXBfZGlhbG9nXCc+PC9kaXY+JywKKyAgICAgICAgJ2JhY2t1cERpYWxvZ1RpdGxlJywKKyAg ICAgICAgJ2JhY2t1cCcsCisgICAgICAgIGpxdWVyeVNweSwKKyAgICAgICAgcGdCcm93c2VyLAor ICAgICAgICBhbGVydGlmeVNweSwKKyAgICAgICAgZGlhbG9nTW9kZWxLbGFzc1NweSwKKyAgICAg ICAgYmFja2Zvcm0KKyAgICAgICk7CisKKyAgICAgIGJhY2t1cERpYWxvZ1dyYXBwZXIgPSBPYmpl Y3QuYXNzaWduKGJhY2t1cERpYWxvZ1dyYXBwZXIsIGJhY2t1cE5vZGUpOworICAgIH0pOworCisg ICAgYWZ0ZXJFYWNoKCgpID0+IHsKKyAgICAgIG5ldHdvcmtNb2NrLnJlc3RvcmUoKTsKKyAgICB9 KTsKKworICAgIGNvbnRleHQoJ2RpYWxvZyBoZWxwIGJ1dHRvbiB3YXMgcHJlc3NlZCcsICgpID0+ IHsKKyAgICAgIGxldCBuZXR3b3JrQ2FsbGVkOworICAgICAgYmVmb3JlRWFjaCgoKSA9PiB7Cisg ICAgICAgIG5ldHdvcmtDYWxsZWQgPSBmYWxzZTsKKyAgICAgICAgbmV0d29ya01vY2sub25Bbnko Ly4qLykucmVwbHkoKCkgPT4geworICAgICAgICAgIG5ldHdvcmtDYWxsZWQgPSB0cnVlOworICAg ICAgICAgIHJldHVybiBbMjAwLCB7fV07CisgICAgICAgIH0pOworICAgICAgICBwZ0Jyb3dzZXIu dHJlZU1lbnUuc2VsZWN0Tm9kZShzZXJ2ZXJUcmVlTm9kZS5kb21Ob2RlKTsKKyAgICAgICAgcGdC cm93c2VyLnNob3dIZWxwID0gamFzbWluZS5jcmVhdGVTcHkoJ3Nob3dIZWxwJyk7CisKKyAgICAg ICAgY29uc3QgZXZlbnQgPSB7CisgICAgICAgICAgYnV0dG9uOiB7CisgICAgICAgICAgICBlbGVt ZW50OiB7CisgICAgICAgICAgICAgIG5hbWU6ICdkaWFsb2dfaGVscCcsCisgICAgICAgICAgICAg IGdldEF0dHJpYnV0ZTogKGF0dHJpYnV0ZU5hbWUpID0+IHsKKyAgICAgICAgICAgICAgICBpZiAo YXR0cmlidXRlTmFtZSA9PT0gJ3VybCcpIHsKKyAgICAgICAgICAgICAgICAgIHJldHVybiAnaHR0 cDovL3NvbWV1cmwnOworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoYXR0cmlidXRlTmFtZSA9 PT0gJ2xhYmVsJykgeworICAgICAgICAgICAgICAgICAgcmV0dXJuICdzb21lIGxhYmVsJzsKKyAg ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICB9LAorICAgICAg ICAgIH0sCisgICAgICAgIH07CisgICAgICAgIGJhY2t1cERpYWxvZ1dyYXBwZXIuY2FsbGJhY2so ZXZlbnQpOworICAgICAgfSk7CisKKyAgICAgIGl0KCdkaXNwbGF5cyBoZWxwIGZvciBkaWFsb2cn LCAoKSA9PiB7CisgICAgICAgIGV4cGVjdChwZ0Jyb3dzZXIuc2hvd0hlbHApLnRvSGF2ZUJlZW5D YWxsZWRXaXRoKAorICAgICAgICAgICdkaWFsb2dfaGVscCcsCisgICAgICAgICAgJ2h0dHA6Ly9z b21ldXJsJywKKyAgICAgICAgICBwZ0Jyb3dzZXIuTm9kZXNbJ3NlcnZlciddLAorICAgICAgICAg IHNlcnZlclRyZWVOb2RlLAorICAgICAgICAgICdzb21lIGxhYmVsJworICAgICAgICApOworICAg ICAgfSk7CisKKyAgICAgIGl0KCdkb2VzIG5vdCBzdGFydCB0aGUgYmFja3VwJywgKCkgPT4gewor ICAgICAgICBleHBlY3QobmV0d29ya0NhbGxlZCkudG9CZShmYWxzZSk7CisgICAgICB9KTsKKyAg ICB9KTsKKworICAgIGNvbnRleHQoJ29iamVjdCBoZWxwIGJ1dHRvbiB3YXMgcHJlc3NlZCcsICgp ID0+IHsKKyAgICAgIGxldCBuZXR3b3JrQ2FsbGVkOworICAgICAgYmVmb3JlRWFjaCgoKSA9PiB7 CisgICAgICAgIG5ldHdvcmtDYWxsZWQgPSBmYWxzZTsKKyAgICAgICAgbmV0d29ya01vY2sub25B bnkoLy4qLykucmVwbHkoKCkgPT4geworICAgICAgICAgIG5ldHdvcmtDYWxsZWQgPSB0cnVlOwor ICAgICAgICAgIHJldHVybiBbMjAwLCB7fV07CisgICAgICAgIH0pOworICAgICAgICBwZ0Jyb3dz ZXIudHJlZU1lbnUuc2VsZWN0Tm9kZShzZXJ2ZXJUcmVlTm9kZS5kb21Ob2RlKTsKKyAgICAgICAg cGdCcm93c2VyLnNob3dIZWxwID0gamFzbWluZS5jcmVhdGVTcHkoJ3Nob3dIZWxwJyk7CisKKyAg ICAgICAgY29uc3QgZXZlbnQgPSB7CisgICAgICAgICAgYnV0dG9uOiB7CisgICAgICAgICAgICBl bGVtZW50OiB7CisgICAgICAgICAgICAgIG5hbWU6ICdvYmplY3RfaGVscCcsCisgICAgICAgICAg ICAgIGdldEF0dHJpYnV0ZTogKGF0dHJpYnV0ZU5hbWUpID0+IHsKKyAgICAgICAgICAgICAgICBp ZiAoYXR0cmlidXRlTmFtZSA9PT0gJ3VybCcpIHsKKyAgICAgICAgICAgICAgICAgIHJldHVybiAn aHR0cDovL3NvbWV1cmwnOworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoYXR0cmlidXRlTmFt ZSA9PT0gJ2xhYmVsJykgeworICAgICAgICAgICAgICAgICAgcmV0dXJuICdzb21lIGxhYmVsJzsK KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICB9LAorICAg ICAgICAgIH0sCisgICAgICAgIH07CisgICAgICAgIGJhY2t1cERpYWxvZ1dyYXBwZXIuY2FsbGJh Y2soZXZlbnQpOworICAgICAgfSk7CisKKyAgICAgIGl0KCdkaXNwbGF5cyBoZWxwIGZvciBkaWFs b2cnLCAoKSA9PiB7CisgICAgICAgIGV4cGVjdChwZ0Jyb3dzZXIuc2hvd0hlbHApLnRvSGF2ZUJl ZW5DYWxsZWRXaXRoKAorICAgICAgICAgICdvYmplY3RfaGVscCcsCisgICAgICAgICAgJ2h0dHA6 Ly9zb21ldXJsJywKKyAgICAgICAgICBwZ0Jyb3dzZXIuTm9kZXNbJ3NlcnZlciddLAorICAgICAg ICAgIHNlcnZlclRyZWVOb2RlLAorICAgICAgICAgICdzb21lIGxhYmVsJworICAgICAgICApOwor ICAgICAgfSk7CisKKyAgICAgIGl0KCdkb2VzIG5vdCBzdGFydCB0aGUgYmFja3VwJywgKCkgPT4g eworICAgICAgICBleHBlY3QobmV0d29ya0NhbGxlZCkudG9CZShmYWxzZSk7CisgICAgICB9KTsK KyAgICB9KTsKKworICAgIGNvbnRleHQoJ2JhY2t1cCBidXR0b24gd2FzIHByZXNzZWQnLCAoKSA9 PiB7CisgICAgICBjb250ZXh0KCdubyB0cmVlIG5vZGUgaXMgc2VsZWN0ZWQnLCAoKSA9PiB7Cisg ICAgICAgIGl0KCdkb2VzIG5vdCBzdGFydCB0aGUgYmFja3VwJywgKCkgPT4geworICAgICAgICAg IGxldCBuZXR3b3JrQ2FsbGVkID0gZmFsc2U7CisgICAgICAgICAgbmV0d29ya01vY2sub25Bbnko Ly4qLykucmVwbHkoKCkgPT4geworICAgICAgICAgICAgbmV0d29ya0NhbGxlZCA9IHRydWU7Cisg ICAgICAgICAgICByZXR1cm4gWzIwMCwge31dOworICAgICAgICAgIH0pOworCisgICAgICAgICAg bGV0IGV2ZW50ID0geworICAgICAgICAgICAgYnV0dG9uOiB7CisgICAgICAgICAgICAgICdkYXRh LWJ0bi1uYW1lJzogJ2JhY2t1cCcsCisgICAgICAgICAgICAgIGVsZW1lbnQ6IHsKKyAgICAgICAg ICAgICAgICBnZXRBdHRyaWJ1dGU6ICgpID0+IHsKKyAgICAgICAgICAgICAgICAgIHJldHVybiAn aHR0cDovL3NvbWV1cmwnOworICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgIH0sCisg ICAgICAgICAgICB9LAorICAgICAgICAgIH07CisKKyAgICAgICAgICBiYWNrdXBEaWFsb2dXcmFw cGVyLmNhbGxiYWNrKGV2ZW50KTsKKyAgICAgICAgICBleHBlY3QobmV0d29ya0NhbGxlZCkudG9C ZShmYWxzZSk7CisgICAgICAgIH0pOworICAgICAgfSk7CisKKyAgICAgIGNvbnRleHQoJ3RyZWUg bm9kZSBoYXMgbm8gZGF0YScsICgpID0+IHsKKyAgICAgICAgaXQoJ2RvZXMgbm90IHN0YXJ0IHRo ZSBiYWNrdXAnLCAoKSA9PiB7CisgICAgICAgICAgcGdCcm93c2VyLnRyZWVNZW51LnNlbGVjdE5v ZGUobm9EYXRhTm9kZS5kb21Ob2RlKTsKKworICAgICAgICAgIGxldCBuZXR3b3JrQ2FsbGVkID0g ZmFsc2U7CisgICAgICAgICAgbmV0d29ya01vY2sub25BbnkoLy4qLykucmVwbHkoKCkgPT4gewor ICAgICAgICAgICAgbmV0d29ya0NhbGxlZCA9IHRydWU7CisgICAgICAgICAgICByZXR1cm4gWzIw MCwge31dOworICAgICAgICAgIH0pOworCisgICAgICAgICAgbGV0IGV2ZW50ID0geworICAgICAg ICAgICAgYnV0dG9uOiB7CisgICAgICAgICAgICAgICdkYXRhLWJ0bi1uYW1lJzogJ2JhY2t1cCcs CisgICAgICAgICAgICAgIGVsZW1lbnQ6IHsKKyAgICAgICAgICAgICAgICBnZXRBdHRyaWJ1dGU6 ICgpID0+IHsKKyAgICAgICAgICAgICAgICAgIHJldHVybiAnaHR0cDovL3NvbWV1cmwnOworICAg ICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICB9LAorICAgICAg ICAgIH07CisKKyAgICAgICAgICBiYWNrdXBEaWFsb2dXcmFwcGVyLmNhbGxiYWNrKGV2ZW50KTsK KyAgICAgICAgICBleHBlY3QobmV0d29ya0NhbGxlZCkudG9CZShmYWxzZSk7CisgICAgICAgIH0p OworICAgICAgfSk7CisKKyAgICAgIGNvbnRleHQoJ3RyZWUgbm9kZSBoYXMgZGF0YScsICgpID0+ IHsKKyAgICAgICAgY29udGV4dCgnd2hlbiBkaWFsb2cgdHlwZSBpcyBnbG9iYWwnLCAoKSA9PiB7 CisgICAgICAgICAgbGV0IGV2ZW50OworICAgICAgICAgIGJlZm9yZUVhY2goKCkgPT4geworICAg ICAgICAgICAgcGdCcm93c2VyLnRyZWVNZW51LnNlbGVjdE5vZGUoc2VydmVyVHJlZU5vZGUuZG9t Tm9kZSk7CisKKyAgICAgICAgICAgIGJhY2t1cERpYWxvZ1dyYXBwZXIudmlldyA9IHsKKyAgICAg ICAgICAgICAgbW9kZWw6IG5ldyBGYWtlTW9kZWwoKSwKKyAgICAgICAgICAgIH07CisKKyAgICAg ICAgICAgIGV2ZW50ID0geworICAgICAgICAgICAgICBidXR0b246IHsKKyAgICAgICAgICAgICAg ICAnZGF0YS1idG4tbmFtZSc6ICdiYWNrdXAnLAorICAgICAgICAgICAgICAgIGVsZW1lbnQ6IHsK KyAgICAgICAgICAgICAgICAgIGdldEF0dHJpYnV0ZTogKCkgPT4geworICAgICAgICAgICAgICAg ICAgICByZXR1cm4gJ2h0dHA6Ly9zb21ldXJsJzsKKyAgICAgICAgICAgICAgICAgIH0sCisgICAg ICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIH07CisgICAgICAg ICAgfSk7CisKKyAgICAgICAgICBjb250ZXh0KCd3aGVuIHRoZSBiYWNrdXAgam9iIGlzIGNyZWF0 ZWQgc3VjY2Vzc2Z1bGx5JywgKCkgPT4geworICAgICAgICAgICAgbGV0IGRhdGFTZW50VG9TZXJ2 ZXI7CisgICAgICAgICAgICBiZWZvcmVFYWNoKCgpID0+IHsKKyAgICAgICAgICAgICAgcGdCcm93 c2VyLkV2ZW50cyA9IGphc21pbmUuY3JlYXRlU3B5T2JqKCdFdmVudHMnLCBbJ3RyaWdnZXInXSk7 CisgICAgICAgICAgICAgIGFsZXJ0aWZ5U3B5LnN1Y2Nlc3MgPSBqYXNtaW5lLmNyZWF0ZVNweSgn c3VjY2VzcycpOworCisgICAgICAgICAgICAgIG5ldHdvcmtNb2NrLm9uUG9zdCgnL2JhY2t1cC9q b2IvMTAnKS5yZXBseSgocmVxdWVzdCkgPT4geworICAgICAgICAgICAgICAgIGRhdGFTZW50VG9T ZXJ2ZXIgPSByZXF1ZXN0LmRhdGE7CisgICAgICAgICAgICAgICAgcmV0dXJuIFsyMDAsIHt9XTsK KyAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgaXQoJ2Ny ZWF0ZXMgYSBzdWNjZXNzIGFsZXJ0IGJveCcsIChkb25lKSA9PiB7CisgICAgICAgICAgICAgIGJh Y2t1cERpYWxvZ1dyYXBwZXIuY2FsbGJhY2soZXZlbnQpOworICAgICAgICAgICAgICBzZXRUaW1l b3V0KCgpID0+IHsKKyAgICAgICAgICAgICAgICBleHBlY3QoYWxlcnRpZnlTcHkuc3VjY2Vzcyku dG9IYXZlQmVlbkNhbGxlZFdpdGgoCisgICAgICAgICAgICAgICAgICAnQmFja3VwIGpvYiBjcmVh dGVkLicsCisgICAgICAgICAgICAgICAgICA1CisgICAgICAgICAgICAgICAgKTsKKyAgICAgICAg ICAgICAgICBkb25lKCk7CisgICAgICAgICAgICAgIH0sIDApOworICAgICAgICAgICAgfSk7CisK KyAgICAgICAgICAgIGl0KCd0cmlnZ2VyIGFuIGV2ZW50IHRvIGJhY2tncm91bmQgcHJvY2Vzcycs IChkb25lKSA9PiB7CisgICAgICAgICAgICAgIGJhY2t1cERpYWxvZ1dyYXBwZXIuY2FsbGJhY2so ZXZlbnQpOworCisgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4geworICAgICAgICAgICAg ICAgIGV4cGVjdChwZ0Jyb3dzZXIuRXZlbnRzLnRyaWdnZXIpLnRvSGF2ZUJlZW5DYWxsZWRXaXRo KAorICAgICAgICAgICAgICAgICAgJ3BnYWRtaW4tYmdwcm9jZXNzOmNyZWF0ZWQnLAorICAgICAg ICAgICAgICAgICAgYmFja3VwRGlhbG9nV3JhcHBlcgorICAgICAgICAgICAgICAgICk7CisgICAg ICAgICAgICAgICAgZG9uZSgpOworICAgICAgICAgICAgICB9LCAwKTsKKyAgICAgICAgICAgIH0p OworCisgICAgICAgICAgICBpdCgnc2VuZCB0aGUgY29ycmVjdCBwYXJhbWVudGVycyB0byB0aGUg YmFja2VuZCcsIChkb25lKSA9PiB7CisgICAgICAgICAgICAgIGJhY2t1cERpYWxvZ1dyYXBwZXIu Y2FsbGJhY2soZXZlbnQpOworICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHsKKyAgICAg ICAgICAgICAgICBleHBlY3QoSlNPTi5wYXJzZShkYXRhU2VudFRvU2VydmVyKSkudG9FcXVhbCgK KyAgICAgICAgICAgICAgICAgIHt9CisgICAgICAgICAgICAgICAgKTsKKyAgICAgICAgICAgICAg ICBkb25lKCk7CisgICAgICAgICAgICAgIH0sIDApOworICAgICAgICAgICAgfSk7CisgICAgICAg ICAgfSk7CisKKyAgICAgICAgICBjb250ZXh0KCd3aGVuIGNyZWF0aW5nIGJhY2t1cCBqb2IgZmFp bHMnLCAoKSA9PiB7CisgICAgICAgICAgICBpdCgnY3JlYXRlcyBhbiBhbGVydCBib3gnLCAoZG9u ZSkgPT4geworICAgICAgICAgICAgICBhbGVydGlmeVNweS5hbGVydCA9IGphc21pbmUuY3JlYXRl U3B5KCdhbGVydCcpOworICAgICAgICAgICAgICBuZXR3b3JrTW9jay5vblBvc3QoJy9iYWNrdXAv am9iLzEwJykucmVwbHkoKCkgPT4geworICAgICAgICAgICAgICAgIHJldHVybiBbNDAwLCB7Cisg ICAgICAgICAgICAgICAgICBlcnJvcm1zZzogJ3NvbWUtZXJyb3ItbWVzc2FnZScsCisgICAgICAg ICAgICAgICAgfV07CisgICAgICAgICAgICAgIH0pOworCisgICAgICAgICAgICAgIGJhY2t1cERp YWxvZ1dyYXBwZXIuY2FsbGJhY2soZXZlbnQpOworICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgp ID0+IHsKKyAgICAgICAgICAgICAgICBleHBlY3QoYWxlcnRpZnlTcHkuYWxlcnQpLnRvSGF2ZUJl ZW5DYWxsZWRXaXRoKAorICAgICAgICAgICAgICAgICAgJ0JhY2t1cCBqb2IgZmFpbGVkLicsCisg ICAgICAgICAgICAgICAgICAnc29tZS1lcnJvci1tZXNzYWdlJworICAgICAgICAgICAgICAgICk7 CisgICAgICAgICAgICAgICAgZG9uZSgpOworICAgICAgICAgICAgICB9LCAwKTsKKworICAgICAg ICAgICAgfSk7CisgICAgICAgICAgfSk7CisgICAgICAgIH0pOworCisgICAgICAgIGNvbnRleHQo J3doZW4gZGlhbG9nIHR5cGUgaXMgb2JqZWN0JywgKCkgPT4geworICAgICAgICAgIGxldCBldmVu dDsKKyAgICAgICAgICBiZWZvcmVFYWNoKCgpID0+IHsKKyAgICAgICAgICAgIGJhY2t1cERpYWxv Z1dyYXBwZXIgPSBuZXcgQmFja3VwRGlhbG9nV3JhcHBlcigKKyAgICAgICAgICAgICAgJzxkaXYg Y2xhc3M9XCdiYWNrdXBfZGlhbG9nXCc+PC9kaXY+JywKKyAgICAgICAgICAgICAgJ2JhY2t1cERp YWxvZ1RpdGxlJywKKyAgICAgICAgICAgICAgJ2JhY2t1cF9vYmplY3RzJywKKyAgICAgICAgICAg ICAganF1ZXJ5U3B5LAorICAgICAgICAgICAgICBwZ0Jyb3dzZXIsCisgICAgICAgICAgICAgIGFs ZXJ0aWZ5U3B5LAorICAgICAgICAgICAgICBkaWFsb2dNb2RlbEtsYXNzU3B5LAorICAgICAgICAg ICAgICBiYWNrZm9ybQorICAgICAgICAgICAgKTsKKworICAgICAgICAgICAgcGdCcm93c2VyLnRy ZWVNZW51LnNlbGVjdE5vZGUoZGF0YWJhc2VUcmVlTm9kZS5kb21Ob2RlKTsKKworICAgICAgICAg ICAgYmFja3VwRGlhbG9nV3JhcHBlci52aWV3ID0geworICAgICAgICAgICAgICBtb2RlbDogbmV3 IEZha2VNb2RlbCgpLAorICAgICAgICAgICAgfTsKKworICAgICAgICAgICAgZXZlbnQgPSB7Cisg ICAgICAgICAgICAgIGJ1dHRvbjogeworICAgICAgICAgICAgICAgICdkYXRhLWJ0bi1uYW1lJzog J2JhY2t1cCcsCisgICAgICAgICAgICAgICAgZWxlbWVudDogeworICAgICAgICAgICAgICAgICAg Z2V0QXR0cmlidXRlOiAoKSA9PiB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiAnaHR0cDov L3NvbWV1cmwnOworICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICB9LAorICAg ICAgICAgICAgICB9LAorICAgICAgICAgICAgfTsKKyAgICAgICAgICB9KTsKKworICAgICAgICAg IGNvbnRleHQoJ3doZW4gdGhlIGJhY2t1cCBqb2IgaXMgY3JlYXRlZCBzdWNjZXNzZnVsbHknLCAo KSA9PiB7CisgICAgICAgICAgICBsZXQgZGF0YVNlbnRUb1NlcnZlcjsKKyAgICAgICAgICAgIGJl Zm9yZUVhY2goKCkgPT4geworICAgICAgICAgICAgICBwZ0Jyb3dzZXIuRXZlbnRzID0gamFzbWlu ZS5jcmVhdGVTcHlPYmooJ0V2ZW50cycsIFsndHJpZ2dlciddKTsKKyAgICAgICAgICAgICAgYWxl cnRpZnlTcHkuc3VjY2VzcyA9IGphc21pbmUuY3JlYXRlU3B5KCdzdWNjZXNzJyk7CisKKyAgICAg ICAgICAgICAgbmV0d29ya01vY2sub25Qb3N0KCcvYmFja3VwL2pvYi8xMC9vYmplY3QnKS5yZXBs eSgocmVxdWVzdCkgPT4geworICAgICAgICAgICAgICAgIGRhdGFTZW50VG9TZXJ2ZXIgPSByZXF1 ZXN0LmRhdGE7CisgICAgICAgICAgICAgICAgcmV0dXJuIFsyMDAsIHt9XTsKKyAgICAgICAgICAg ICAgfSk7CisgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgaXQoJ2NyZWF0ZXMgYSBzdWNj ZXNzIGFsZXJ0IGJveCcsIChkb25lKSA9PiB7CisgICAgICAgICAgICAgIGJhY2t1cERpYWxvZ1dy YXBwZXIuY2FsbGJhY2soZXZlbnQpOworICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHsK KyAgICAgICAgICAgICAgICBleHBlY3QoYWxlcnRpZnlTcHkuc3VjY2VzcykudG9IYXZlQmVlbkNh bGxlZFdpdGgoCisgICAgICAgICAgICAgICAgICAnQmFja3VwIGpvYiBjcmVhdGVkLicsCisgICAg ICAgICAgICAgICAgICA1CisgICAgICAgICAgICAgICAgKTsKKyAgICAgICAgICAgICAgICBkb25l KCk7CisgICAgICAgICAgICAgIH0sIDApOworICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAg IGl0KCd0cmlnZ2VyIGFuIGV2ZW50IHRvIGJhY2tncm91bmQgcHJvY2VzcycsIChkb25lKSA9PiB7 CisgICAgICAgICAgICAgIGJhY2t1cERpYWxvZ1dyYXBwZXIuY2FsbGJhY2soZXZlbnQpOworCisg ICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4geworICAgICAgICAgICAgICAgIGV4cGVjdChw Z0Jyb3dzZXIuRXZlbnRzLnRyaWdnZXIpLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKAorICAgICAgICAg ICAgICAgICAgJ3BnYWRtaW4tYmdwcm9jZXNzOmNyZWF0ZWQnLAorICAgICAgICAgICAgICAgICAg YmFja3VwRGlhbG9nV3JhcHBlcgorICAgICAgICAgICAgICAgICk7CisgICAgICAgICAgICAgICAg ZG9uZSgpOworICAgICAgICAgICAgICB9LCAwKTsKKyAgICAgICAgICAgIH0pOworCisgICAgICAg ICAgICBpdCgnc2VuZCB0aGUgY29ycmVjdCBwYXJhbWV0ZXJzIHRvIHRoZSBiYWNrZW5kJywgKGRv bmUpID0+IHsKKyAgICAgICAgICAgICAgYmFja3VwRGlhbG9nV3JhcHBlci5jYWxsYmFjayhldmVu dCk7CisgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4geworICAgICAgICAgICAgICAgIGV4 cGVjdChKU09OLnBhcnNlKGRhdGFTZW50VG9TZXJ2ZXIpKS50b0VxdWFsKAorICAgICAgICAgICAg ICAgICAge2RhdGFiYXNlOiAnc29tZS1kYXRhYmFzZS1sYWJlbCd9CisgICAgICAgICAgICAgICAg KTsKKyAgICAgICAgICAgICAgICBkb25lKCk7CisgICAgICAgICAgICAgIH0sIDApOworICAgICAg ICAgICAgfSk7CisgICAgICAgICAgfSk7CisKKyAgICAgICAgICBjb250ZXh0KCd3aGVuIGNyZWF0 aW5nIGJhY2t1cCBqb2IgZmFpbHMnLCAoKSA9PiB7CisgICAgICAgICAgICBpdCgnY3JlYXRlcyBh biBhbGVydCBib3gnLCAoZG9uZSkgPT4geworICAgICAgICAgICAgICBhbGVydGlmeVNweS5hbGVy dCA9IGphc21pbmUuY3JlYXRlU3B5KCdhbGVydCcpOworICAgICAgICAgICAgICBuZXR3b3JrTW9j ay5vblBvc3QoJy9iYWNrdXAvam9iLzEwL29iamVjdCcpLnJlcGx5KCgpID0+IHsKKyAgICAgICAg ICAgICAgICByZXR1cm4gWzQwMCwgeworICAgICAgICAgICAgICAgICAgZXJyb3Jtc2c6ICdzb21l LWVycm9yLW1lc3NhZ2UnLAorICAgICAgICAgICAgICAgIH1dOworICAgICAgICAgICAgICB9KTsK KworICAgICAgICAgICAgICBiYWNrdXBEaWFsb2dXcmFwcGVyLmNhbGxiYWNrKGV2ZW50KTsKKyAg ICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7CisgICAgICAgICAgICAgICAgZXhwZWN0KGFs ZXJ0aWZ5U3B5LmFsZXJ0KS50b0hhdmVCZWVuQ2FsbGVkV2l0aCgKKyAgICAgICAgICAgICAgICAg ICdCYWNrdXAgam9iIGZhaWxlZC4nLAorICAgICAgICAgICAgICAgICAgJ3NvbWUtZXJyb3ItbWVz c2FnZScKKyAgICAgICAgICAgICAgICApOworICAgICAgICAgICAgICAgIGRvbmUoKTsKKyAgICAg ICAgICAgICAgfSwgMCk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgICB9KTsKKyAgICAgICAg fSk7CisgICAgICB9KTsKKyAgICB9KTsKKyAgfSk7CisKKyAgZGVzY3JpYmUoJyNzZXRFeHRyYVBh cmFtZXRlcnMnLCAoKSA9PiB7CisgICAgbGV0IHNlbGVjdGVkVHJlZU5vZGU7CisgICAgbGV0IHRy ZWVJbmZvOworICAgIGxldCBtb2RlbDsKKworICAgIGNvbnRleHQoJ3doZW4gZGlhbG9nIHR5cGUg aXMgZ2xvYmFsJywgKCkgPT4geworICAgICAgYmVmb3JlRWFjaCgoKSA9PiB7CisgICAgICAgIGJh Y2t1cERpYWxvZ1dyYXBwZXIgPSBuZXcgQmFja3VwRGlhbG9nV3JhcHBlcigKKyAgICAgICAgICAn PGRpdiBjbGFzcz1cJ2JhY2t1cF9kaWFsb2dcJz48L2Rpdj4nLAorICAgICAgICAgICdiYWNrdXBE aWFsb2dUaXRsZScsCisgICAgICAgICAgJ2JhY2t1cCcsCisgICAgICAgICAganF1ZXJ5U3B5LAor ICAgICAgICAgIHBnQnJvd3NlciwKKyAgICAgICAgICBhbGVydGlmeVNweSwKKyAgICAgICAgICBk aWFsb2dNb2RlbEtsYXNzU3B5LAorICAgICAgICAgIGJhY2tmb3JtCisgICAgICAgICk7CisKKyAg ICAgICAgdHJlZUluZm8gPSB7fTsKKyAgICAgICAgbW9kZWwgPSBuZXcgRmFrZU1vZGVsKCk7Cisg ICAgICAgIGJhY2t1cERpYWxvZ1dyYXBwZXIudmlldyA9IHsKKyAgICAgICAgICBtb2RlbDogbW9k ZWwsCisgICAgICAgIH07CisgICAgICB9KTsKKworCisgICAgICBpdCgnc2V0cyBub3RoaW5nIG9u IHRoZSB2aWV3IG1vZGVsJywgKCkgPT4geworICAgICAgICBiYWNrdXBEaWFsb2dXcmFwcGVyLnNl dEV4dHJhUGFyYW1ldGVycyhzZWxlY3RlZFRyZWVOb2RlLCB0cmVlSW5mbyk7CisgICAgICAgIGV4 cGVjdChtb2RlbC50b0pTT04oKSkudG9FcXVhbCh7fSk7CisgICAgICB9KTsKKyAgICB9KTsKKwor ICAgIGNvbnRleHQoJ3doZW4gZGlhbG9nIHR5cGUgaXMgb2JqZWN0JywgKCkgPT4geworICAgICAg YmVmb3JlRWFjaCgoKSA9PiB7CisgICAgICAgIGJhY2t1cERpYWxvZ1dyYXBwZXIgPSBuZXcgQmFj a3VwRGlhbG9nV3JhcHBlcigKKyAgICAgICAgICAnPGRpdiBjbGFzcz1cJ2JhY2t1cF9kaWFsb2dc Jz48L2Rpdj4nLAorICAgICAgICAgICdiYWNrdXBEaWFsb2dUaXRsZScsCisgICAgICAgICAgJ2Jh Y2t1cF9vYmplY3RzJywKKyAgICAgICAgICBqcXVlcnlTcHksCisgICAgICAgICAgcGdCcm93c2Vy LAorICAgICAgICAgIGFsZXJ0aWZ5U3B5LAorICAgICAgICAgIGRpYWxvZ01vZGVsS2xhc3NTcHks CisgICAgICAgICAgYmFja2Zvcm0KKyAgICAgICAgKTsKKworICAgICAgICB0cmVlSW5mbyA9IHsK KyAgICAgICAgICBkYXRhYmFzZTogeworICAgICAgICAgICAgX2xhYmVsOiAnc29tZS1kYXRhYmFz ZS1sYWJlbCcsCisgICAgICAgICAgfSwKKyAgICAgICAgICBzY2hlbWE6IHsKKyAgICAgICAgICAg IF9sYWJlbDogJ3NvbWUtdHJlZWluZm8tbGFiZWwnLAorICAgICAgICAgIH0sCisgICAgICAgIH07 CisKKyAgICAgICAgbW9kZWwgPSBuZXcgRmFrZU1vZGVsKCk7CisgICAgICAgIHNlbGVjdGVkVHJl ZU5vZGUgPSBuZXcgVHJlZU5vZGUoJ3NvbWUtc2VsZWN0ZWQtbm9kZScsCisgICAgICAgICAge190 eXBlOiAnc29tZS10eXBlJywgX2xhYmVsOiAnc29tZS1zZWxlY3RlZC1sYWJlbCd9LAorICAgICAg ICAgIFtdKTsKKyAgICAgICAgYmFja3VwRGlhbG9nV3JhcHBlci52aWV3ID0geworICAgICAgICAg IG1vZGVsOiBtb2RlbCwKKyAgICAgICAgfTsKKyAgICAgIH0pOworCisgICAgICBpdCgnc2V0cyB0 aGUgZGF0YWJhc2UgbGFiZWwgb24gdGhlIG1vZGVsJywgKCkgPT4geworICAgICAgICBiYWNrdXBE aWFsb2dXcmFwcGVyLnNldEV4dHJhUGFyYW1ldGVycyhzZWxlY3RlZFRyZWVOb2RlLCB0cmVlSW5m byk7CisgICAgICAgIGV4cGVjdChtb2RlbC50b0pTT04oKSkudG9FcXVhbCh7CisgICAgICAgICAg J2RhdGFiYXNlJzogJ3NvbWUtZGF0YWJhc2UtbGFiZWwnLAorICAgICAgICB9KTsKKyAgICAgIH0p OworCisgICAgICBjb250ZXh0KCd3aGVuIHRoZSBzZWxlY3RlZCBpcyBhIHNjaGVtYSB0eXBlJywg KCkgPT4geworICAgICAgICBiZWZvcmVFYWNoKCgpID0+IHsKKyAgICAgICAgICBzZWxlY3RlZFRy ZWVOb2RlID0gbmV3IFRyZWVOb2RlKCdzb21lLXNlbGVjdGVkLW5vZGUnLAorICAgICAgICAgICAg e190eXBlOiAnc2NoZW1hJywgX2xhYmVsOiAnc29tZS1zY2hlbWEtbGFiZWwnfSwKKyAgICAgICAg ICAgIFtdKTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgaXQoJ3NldHMgdGhlIHNjaGVtYSBsYWJl bCBvbiB0aGUgbW9kZWwnLCAoKSA9PiB7CisgICAgICAgICAgYmFja3VwRGlhbG9nV3JhcHBlci5z ZXRFeHRyYVBhcmFtZXRlcnMoc2VsZWN0ZWRUcmVlTm9kZSwgdHJlZUluZm8pOworICAgICAgICAg IGV4cGVjdChtb2RlbC50b0pTT04oKSkudG9FcXVhbCh7CisgICAgICAgICAgICAnZGF0YWJhc2Un OiAnc29tZS1kYXRhYmFzZS1sYWJlbCcsCisgICAgICAgICAgICAnc2NoZW1hcyc6IFsnc29tZS1z Y2hlbWEtbGFiZWwnXSwKKyAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CisgICAgICB9KTsKKwor ICAgICAgY29udGV4dCgnd2hlbiB0aGUgc2VsZWN0ZWQgaXMgYSB0YWJsZSB0eXBlJywgKCkgPT4g eworICAgICAgICBiZWZvcmVFYWNoKCgpID0+IHsKKyAgICAgICAgICBzZWxlY3RlZFRyZWVOb2Rl ID0gbmV3IFRyZWVOb2RlKCdzb21lLXNlbGVjdGVkLW5vZGUnLAorICAgICAgICAgICAge190eXBl OiAndGFibGUnLCBfbGFiZWw6ICdzb21lLXRhYmxlLWxhYmVsJ30sCisgICAgICAgICAgICBbXSk7 CisgICAgICAgIH0pOworCisgICAgICAgIGl0KCdzZXRzIHRoZSBzY2hlbWEgbGFiZWwgb24gdGhl IG1vZGVsJywgKCkgPT4geworICAgICAgICAgIGJhY2t1cERpYWxvZ1dyYXBwZXIuc2V0RXh0cmFQ YXJhbWV0ZXJzKHNlbGVjdGVkVHJlZU5vZGUsIHRyZWVJbmZvKTsKKyAgICAgICAgICBleHBlY3Qo bW9kZWwudG9KU09OKCkpLnRvRXF1YWwoeworICAgICAgICAgICAgJ2RhdGFiYXNlJzogJ3NvbWUt ZGF0YWJhc2UtbGFiZWwnLAorICAgICAgICAgICAgJ3RhYmxlcyc6IFtbJ3NvbWUtdHJlZWluZm8t bGFiZWwnLCAnc29tZS10YWJsZS1sYWJlbCddXSwKKyAgICAgICAgICB9KTsKKyAgICAgICAgfSk7 CisgICAgICB9KTsKKworICAgICAgY29udGV4dCgnd2hlbiB0aGUgbW9kZWwgaGFzIG5vIHJhdGlv IHZhbHVlJywgKCkgPT4geworICAgICAgICBiZWZvcmVFYWNoKCgpID0+IHsKKyAgICAgICAgICBt b2RlbC5zZXQoJ3JhdGlvJywgJycpOworICAgICAgICB9KTsKKworICAgICAgICBpdCgnc2V0cyBj bGVhcnMgdGhlIHJhdGlvIHZhbHVlJywgKCkgPT4geworICAgICAgICAgIGJhY2t1cERpYWxvZ1dy YXBwZXIuc2V0RXh0cmFQYXJhbWV0ZXJzKHNlbGVjdGVkVHJlZU5vZGUsIHRyZWVJbmZvKTsKKyAg ICAgICAgICBleHBlY3QobW9kZWwuZ2V0KCdyYXRpbycpKS50b0JlVW5kZWZpbmVkKCk7CisgICAg ICAgIH0pOworICAgICAgfSk7CisKKyAgICAgIGNvbnRleHQoJ3doZW4gdGhlIG1vZGVsIGhhcyBh IHZhbGlkIHJhdGlvIHZhbHVlJywgKCkgPT4geworICAgICAgICBiZWZvcmVFYWNoKCgpID0+IHsK KyAgICAgICAgICBtb2RlbC5zZXQoJ3JhdGlvJywgJzAuMjUnKTsKKyAgICAgICAgfSk7CisKKyAg ICAgICAgaXQoJ3NldHMgY2xlYXJzIHRoZSByYXRpbyB2YWx1ZScsICgpID0+IHsKKyAgICAgICAg ICBiYWNrdXBEaWFsb2dXcmFwcGVyLnNldEV4dHJhUGFyYW1ldGVycyhzZWxlY3RlZFRyZWVOb2Rl LCB0cmVlSW5mbyk7CisgICAgICAgICAgZXhwZWN0KG1vZGVsLmdldCgncmF0aW8nKSkudG9FcXVh bCgnMC4yNScpOworICAgICAgICB9KTsKKyAgICAgIH0pOworICAgIH0pOworICB9KTsKK30pOwpk aWZmIC0tZ2l0IGEvd2ViL3JlZ3Jlc3Npb24vamF2YXNjcmlwdC9iYWNrdXAvZ2xvYmFsX3NlcnZl cl9iYWNrdXBfZGlhbG9nX3NwZWMuanMgYi93ZWIvcmVncmVzc2lvbi9qYXZhc2NyaXB0L2JhY2t1 cC9nbG9iYWxfc2VydmVyX2JhY2t1cF9kaWFsb2dfc3BlYy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwMC4uODZkZjY3MmUKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcmVncmVz c2lvbi9qYXZhc2NyaXB0L2JhY2t1cC9nbG9iYWxfc2VydmVyX2JhY2t1cF9kaWFsb2dfc3BlYy5q cwpAQCAtMCwwICsxLDE2OCBAQAorLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworLy8KKy8vIHBnQWRtaW4gNCAtIFBvc3RncmVTUUwg VG9vbHMKKy8vCisvLyBDb3B5cmlnaHQgKEMpIDIwMTMgLSAyMDE4LCBUaGUgcGdBZG1pbiBEZXZl bG9wbWVudCBUZWFtCisvLyBUaGlzIHNvZnR3YXJlIGlzIHJlbGVhc2VkIHVuZGVyIHRoZSBQb3N0 Z3JlU1FMIExpY2VuY2UKKy8vCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworaW1wb3J0IHtCYWNrdXBEaWFsb2d9IGZyb20gJy4u Ly4uLy4uL3BnYWRtaW4vdG9vbHMvYmFja3VwL3N0YXRpYy9qcy9iYWNrdXBfZGlhbG9nJzsKK2lt cG9ydCB7VHJlZUZha2V9IGZyb20gJy4uL3RyZWUvdHJlZV9mYWtlJzsKKworY29uc3QgY29udGV4 dCA9IGRlc2NyaWJlOworCitkZXNjcmliZSgnR2xvYmFsU2VydmVyQmFja3VwRGlhbG9nJywgKCkg PT4geworICBsZXQgYmFja3VwRGlhbG9nOworICBsZXQgcGdCcm93c2VyOworICBsZXQganF1ZXJ5 U3B5OworICBsZXQgYWxlcnRpZnlTcHk7CisgIGxldCBiYWNrdXBNb2RlbFNweTsKKworCisgIGxl dCByb290Tm9kZTsKKyAgbGV0IHNlcnZlclRyZWVOb2RlOworICBsZXQgcHBhc1NlcnZlclRyZWVO b2RlOworCisgIGJlZm9yZUVhY2goKCkgPT4geworICAgIHBnQnJvd3NlciA9IHsKKyAgICAgIHRy ZWVNZW51OiBuZXcgVHJlZUZha2UoKSwKKyAgICAgIE5vZGVzOiB7CisgICAgICAgIHNlcnZlcjog amFzbWluZS5jcmVhdGVTcHlPYmooJ05vZGVbc2VydmVyXScsIFsnZ2V0VHJlZU5vZGVIaWVyYXJj aHknXSksCisgICAgICB9LAorICAgIH07CisgICAgcGdCcm93c2VyLk5vZGVzLnNlcnZlci5oYXNJ ZCA9IHRydWU7CisgICAganF1ZXJ5U3B5ID0gamFzbWluZS5jcmVhdGVTcHkoJ2pxdWVyeVNweScp OworICAgIGJhY2t1cE1vZGVsU3B5ID0gamFzbWluZS5jcmVhdGVTcHkoJ2JhY2t1cE1vZGVsU3B5 Jyk7CisKKyAgICByb290Tm9kZSA9IHBnQnJvd3Nlci50cmVlTWVudS5hZGROZXdOb2RlKCdsZXZl bDEnLCB7fSwgdW5kZWZpbmVkLCBbXSk7CisgICAgc2VydmVyVHJlZU5vZGUgPSBwZ0Jyb3dzZXIu dHJlZU1lbnUuYWRkTmV3Tm9kZSgnbGV2ZWwxLjEnLCB7CisgICAgICBfdHlwZTogJ3NlcnZlcics CisgICAgICBfaWQ6IDEwLAorICAgIH0sIHVuZGVmaW5lZCwgWydsZXZlbDEnXSk7CisgICAgcHBh c1NlcnZlclRyZWVOb2RlID0gcGdCcm93c2VyLnRyZWVNZW51LmFkZE5ld05vZGUoJ2xldmVsMS4y JywgeworICAgICAgX3R5cGU6ICdzZXJ2ZXInLAorICAgICAgc2VydmVyX3R5cGU6ICdwcGFzJywK KyAgICB9LCB1bmRlZmluZWQsIFsnbGV2ZWwxJ10pOworICAgIHBnQnJvd3Nlci50cmVlTWVudS5h ZGROZXdOb2RlKCdsZXZlbDMnLCB7fSwgdW5kZWZpbmVkLCBbJ2xldmVsMScsICdsZXZlbDEuMidd KTsKKyAgICBwZ0Jyb3dzZXIudHJlZU1lbnUuYWRkTmV3Tm9kZSgnbGV2ZWwzLjEnLCB1bmRlZmlu ZWQsIHVuZGVmaW5lZCwgWydsZXZlbDEnLCAnbGV2ZWwxLjInLCAnbGV2ZWwzJ10pOworICB9KTsK KworICBkZXNjcmliZSgnI2RyYXcnLCAoKSA9PiB7CisgICAgYmVmb3JlRWFjaCgoKSA9PiB7Cisg ICAgICBhbGVydGlmeVNweSA9IGphc21pbmUuY3JlYXRlU3B5T2JqKCdhbGVydGlmeScsIFsnYWxl cnQnLCAnZGlhbG9nJ10pOworICAgICAgYWxlcnRpZnlTcHlbJ0JhY2t1cERpYWxvZ19nbG9iYWxz J10gPSBqYXNtaW5lLmNyZWF0ZVNweSgnQmFja3VwRGlhbG9nX2dsb2JhbHMnKTsKKyAgICAgIGFs ZXJ0aWZ5U3B5WydCYWNrdXBEaWFsb2dfc2VydmVyJ10gPSBqYXNtaW5lLmNyZWF0ZVNweSgnQmFj a3VwRGlhbG9nX3NlcnZlcicpOworICAgICAgYmFja3VwRGlhbG9nID0gbmV3IEJhY2t1cERpYWxv ZygKKyAgICAgICAgcGdCcm93c2VyLAorICAgICAgICBqcXVlcnlTcHksCisgICAgICAgIGFsZXJ0 aWZ5U3B5LAorICAgICAgICBiYWNrdXBNb2RlbFNweQorICAgICAgKTsKKworICAgICAgcGdCcm93 c2VyLmdldF9wcmVmZXJlbmNlID0gamFzbWluZS5jcmVhdGVTcHkoJ2dldF9wcmVmZXJlbmNlcycp OworICAgIH0pOworCisgICAgY29udGV4dCgndGhlcmUgYXJlIG5vIGFuY2VzdG9ycyBvZiB0aGUg dHlwZSBzZXJ2ZXInLCAoKSA9PiB7CisgICAgICBpdCgnZG9lcyBub3QgY3JlYXRlIGEgZGlhbG9n JywgKCkgPT4geworICAgICAgICBwZ0Jyb3dzZXIudHJlZU1lbnUuc2VsZWN0Tm9kZShbe2lkOiAn bGV2ZWwxJ31dKTsKKyAgICAgICAgYmFja3VwRGlhbG9nLmRyYXcobnVsbCwgbnVsbCwgbnVsbCk7 CisgICAgICAgIGV4cGVjdChhbGVydGlmeVNweVsnQmFja3VwRGlhbG9nX2dsb2JhbHMnXSkubm90 LnRvSGF2ZUJlZW5DYWxsZWQoKTsKKyAgICAgICAgZXhwZWN0KGFsZXJ0aWZ5U3B5WydCYWNrdXBE aWFsb2dfc2VydmVyJ10pLm5vdC50b0hhdmVCZWVuQ2FsbGVkKCk7CisgICAgICB9KTsKKworICAg ICAgaXQoJ2Rpc3BsYXkgYW4gYWxlcnQgd2l0aCBhIEJhY2t1cCBFcnJvcicsICgpID0+IHsKKyAg ICAgICAgYmFja3VwRGlhbG9nLmRyYXcobnVsbCwgW3Jvb3ROb2RlXSwgbnVsbCk7CisgICAgICAg IGV4cGVjdChhbGVydGlmeVNweS5hbGVydCkudG9IYXZlQmVlbkNhbGxlZFdpdGgoCisgICAgICAg ICAgJ0JhY2t1cCBFcnJvcicsCisgICAgICAgICAgJ1BsZWFzZSBzZWxlY3Qgc2VydmVyIG9yIGNo aWxkIG5vZGUgZnJvbSB0aGUgYnJvd3NlciB0cmVlLicKKyAgICAgICAgKTsKKyAgICAgIH0pOwor ICAgIH0pOworCisgICAgY29udGV4dCgndGhlcmUgaXMgYW4gYW5jZXN0b3Igb2YgdGhlIHR5cGUg c2VydmVyJywgKCkgPT4geworICAgICAgY29udGV4dCgnbm8gcHJlZmVyZW5jZSBjYW4gYmUgZm91 bmQnLCAoKSA9PiB7CisgICAgICAgIGJlZm9yZUVhY2goKCkgPT4geworICAgICAgICAgIHBnQnJv d3Nlci5nZXRfcHJlZmVyZW5jZS5hbmQucmV0dXJuVmFsdWUodW5kZWZpbmVkKTsKKyAgICAgICAg fSk7CisKKyAgICAgICAgY29udGV4dCgnc2VydmVyIGlzIGEgcHBhcyBzZXJ2ZXInLCAoKSA9PiB7 CisgICAgICAgICAgaXQoJ2Rpc3BsYXkgYW4gYWxlcnQgd2l0aCAiQmFja3VwIEVycm9yIicsICgp ID0+IHsKKyAgICAgICAgICAgIGJhY2t1cERpYWxvZy5kcmF3KG51bGwsIFtzZXJ2ZXJUcmVlTm9k ZV0sIG51bGwpOworICAgICAgICAgICAgZXhwZWN0KGFsZXJ0aWZ5U3B5LmFsZXJ0KS50b0hhdmVC ZWVuQ2FsbGVkV2l0aCgKKyAgICAgICAgICAgICAgJ0JhY2t1cCBFcnJvcicsCisgICAgICAgICAg ICAgICdGYWlsZWQgdG8gbG9hZCBwcmVmZXJlbmNlIHBnX2Jpbl9kaXIgb2YgbW9kdWxlIHBhdGhz JworICAgICAgICAgICAgKTsKKyAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CisKKyAgICAgICAg Y29udGV4dCgnc2VydmVyIGlzIG5vdCBhIHBwYXMgc2VydmVyJywgKCkgPT4geworICAgICAgICAg IGl0KCdkaXNwbGF5IGFuIGFsZXJ0IHdpdGggIkJhY2t1cCBFcnJvciInLCAoKSA9PiB7CisgICAg ICAgICAgICBiYWNrdXBEaWFsb2cuZHJhdyhudWxsLCBbcHBhc1NlcnZlclRyZWVOb2RlXSwgbnVs bCk7CisgICAgICAgICAgICBleHBlY3QoYWxlcnRpZnlTcHkuYWxlcnQpLnRvSGF2ZUJlZW5DYWxs ZWRXaXRoKAorICAgICAgICAgICAgICAnQmFja3VwIEVycm9yJywKKyAgICAgICAgICAgICAgJ0Zh aWxlZCB0byBsb2FkIHByZWZlcmVuY2UgcHBhc19iaW5fZGlyIG9mIG1vZHVsZSBwYXRocycKKyAg ICAgICAgICAgICk7CisgICAgICAgICAgfSk7CisgICAgICAgIH0pOworICAgICAgfSk7CisKKyAg ICAgIGNvbnRleHQoJ3ByZWZlcmVuY2UgY2FuIGJlIGZvdW5kJywgKCkgPT4geworICAgICAgICBj b250ZXh0KCdiaW5hcnkgZm9sZGVyIGlzIG5vdCBjb25maWd1cmVkJywgKCkgPT4geworICAgICAg ICAgIGJlZm9yZUVhY2goKCkgPT4geworICAgICAgICAgICAgcGdCcm93c2VyLmdldF9wcmVmZXJl bmNlLmFuZC5yZXR1cm5WYWx1ZSh7fSk7CisgICAgICAgICAgfSk7CisKKyAgICAgICAgICBjb250 ZXh0KCdzZXJ2ZXIgaXMgYSBwcGFzIHNlcnZlcicsICgpID0+IHsKKyAgICAgICAgICAgIGl0KCdk aXNwbGF5IGFuIGFsZXJ0IHdpdGggIkNvbmZpZ3VyYXRpb24gcmVxdWlyZWQiJywgKCkgPT4gewor ICAgICAgICAgICAgICBiYWNrdXBEaWFsb2cuZHJhdyhudWxsLCBbc2VydmVyVHJlZU5vZGVdLCBu dWxsKTsKKyAgICAgICAgICAgICAgZXhwZWN0KGFsZXJ0aWZ5U3B5LmFsZXJ0KS50b0hhdmVCZWVu Q2FsbGVkV2l0aCgKKyAgICAgICAgICAgICAgICAnQ29uZmlndXJhdGlvbiByZXF1aXJlZCcsCisg ICAgICAgICAgICAgICAgJ1BsZWFzZSBjb25maWd1cmUgdGhlIFBvc3RncmVTUUwgQmluYXJ5IFBh dGggaW4gdGhlIFByZWZlcmVuY2VzIGRpYWxvZy4nCisgICAgICAgICAgICAgICk7CisgICAgICAg ICAgICB9KTsKKyAgICAgICAgICB9KTsKKworICAgICAgICAgIGNvbnRleHQoJ3NlcnZlciBpcyBu b3QgYSBwcGFzIHNlcnZlcicsICgpID0+IHsKKyAgICAgICAgICAgIGl0KCdkaXNwbGF5IGFuIGFs ZXJ0IHdpdGggIkNvbmZpZ3VyYXRpb24gcmVxdWlyZWQiJywgKCkgPT4geworICAgICAgICAgICAg ICBiYWNrdXBEaWFsb2cuZHJhdyhudWxsLCBbcHBhc1NlcnZlclRyZWVOb2RlXSwgbnVsbCk7Cisg ICAgICAgICAgICAgIGV4cGVjdChhbGVydGlmeVNweS5hbGVydCkudG9IYXZlQmVlbkNhbGxlZFdp dGgoCisgICAgICAgICAgICAgICAgJ0NvbmZpZ3VyYXRpb24gcmVxdWlyZWQnLAorICAgICAgICAg ICAgICAgICdQbGVhc2UgY29uZmlndXJlIHRoZSBFREIgQWR2YW5jZWQgU2VydmVyIEJpbmFyeSBQ YXRoIGluIHRoZSBQcmVmZXJlbmNlcyBkaWFsb2cuJworICAgICAgICAgICAgICApOworICAgICAg ICAgICAgfSk7CisgICAgICAgICAgfSk7CisgICAgICAgIH0pOworCisgICAgICAgIGNvbnRleHQo J2JpbmFyeSBmb2xkZXIgaXMgY29uZmlndXJlZCcsICgpID0+IHsKKyAgICAgICAgICBsZXQgZ2xv YmFsUmVzaXplVG9TcHk7CisgICAgICAgICAgbGV0IHNlcnZlclJlc2l6ZVRvU3B5OworICAgICAg ICAgIGJlZm9yZUVhY2goKCkgPT4geworICAgICAgICAgICAgZ2xvYmFsUmVzaXplVG9TcHkgPSBq YXNtaW5lLmNyZWF0ZVNweU9iaignZ2xvYmFscycsIFsncmVzaXplVG8nXSk7CisgICAgICAgICAg ICBhbGVydGlmeVNweVsnQmFja3VwRGlhbG9nX2dsb2JhbHMnXS5hbmQKKyAgICAgICAgICAgICAg LnJldHVyblZhbHVlKGdsb2JhbFJlc2l6ZVRvU3B5KTsKKyAgICAgICAgICAgIHNlcnZlclJlc2l6 ZVRvU3B5ID0gamFzbWluZS5jcmVhdGVTcHlPYmooJ3NlcnZlcicsIFsncmVzaXplVG8nXSk7Cisg ICAgICAgICAgICBhbGVydGlmeVNweVsnQmFja3VwRGlhbG9nX3NlcnZlciddLmFuZAorICAgICAg ICAgICAgICAucmV0dXJuVmFsdWUoc2VydmVyUmVzaXplVG9TcHkpOworICAgICAgICAgICAgcGdC cm93c2VyLmdldF9wcmVmZXJlbmNlLmFuZC5yZXR1cm5WYWx1ZSh7dmFsdWU6ICcvc29tZS9wYXRo J30pOworICAgICAgICAgIH0pOworCisgICAgICAgICAgY29udGV4dCgnZGlhbG9nIGZvciBnbG9i YWwgYmFja3VwJywgKCkgPT4geworICAgICAgICAgICAgaXQoJ2Rpc3BsYXlzIHRoZSBkaWFsb2cn LCAoKSA9PiB7CisgICAgICAgICAgICAgIGJhY2t1cERpYWxvZy5kcmF3KG51bGwsIFtzZXJ2ZXJU cmVlTm9kZV0sIHtnbG9iYWxzOiB0cnVlfSk7CisgICAgICAgICAgICAgIGV4cGVjdChhbGVydGlm eVNweVsnQmFja3VwRGlhbG9nX2dsb2JhbHMnXSkudG9IYXZlQmVlbkNhbGxlZFdpdGgodHJ1ZSk7 CisgICAgICAgICAgICAgIGV4cGVjdChnbG9iYWxSZXNpemVUb1NweS5yZXNpemVUbykudG9IYXZl QmVlbkNhbGxlZFdpdGgoJzYwJScsICc1MCUnKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICAg IH0pOworCisgICAgICAgICAgY29udGV4dCgnZGlhbG9nIGZvciBzZXJ2ZXIgYmFja3VwJywgKCkg PT4geworICAgICAgICAgICAgaXQoJ2Rpc3BsYXlzIHRoZSBkaWFsb2cnLCAoKSA9PiB7CisgICAg ICAgICAgICAgIGJhY2t1cERpYWxvZy5kcmF3KG51bGwsIFtzZXJ2ZXJUcmVlTm9kZV0sIHtzZXJ2 ZXI6IHRydWV9KTsKKyAgICAgICAgICAgICAgZXhwZWN0KGFsZXJ0aWZ5U3B5WydCYWNrdXBEaWFs b2dfc2VydmVyJ10pLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKHRydWUpOworICAgICAgICAgICAgICBl eHBlY3Qoc2VydmVyUmVzaXplVG9TcHkucmVzaXplVG8pLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKCc2 MCUnLCAnNTAlJyk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgICB9KTsKKyAgICAgICAgfSk7 CisgICAgICB9KTsKKyAgICB9KTsKKyAgfSk7Cit9KTsKZGlmZiAtLWdpdCBhL3dlYi9yZWdyZXNz aW9uL2phdmFzY3JpcHQvYmFja3VwL21lbnVfdXRpbHNfc3BlYy5qcyBiL3dlYi9yZWdyZXNzaW9u L2phdmFzY3JpcHQvYmFja3VwL21lbnVfdXRpbHNfc3BlYy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwMC4uOTQzNWQ2OTkKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcmVncmVz c2lvbi9qYXZhc2NyaXB0L2JhY2t1cC9tZW51X3V0aWxzX3NwZWMuanMKQEAgLTAsMCArMSw1NSBA QAorLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLworLy8KKy8vIHBnQWRtaW4gNCAtIFBvc3RncmVTUUwgVG9vbHMKKy8vCisvLyBDb3B5 cmlnaHQgKEMpIDIwMTMgLSAyMDE4LCBUaGUgcGdBZG1pbiBEZXZlbG9wbWVudCBUZWFtCisvLyBU aGlzIHNvZnR3YXJlIGlzIHJlbGVhc2VkIHVuZGVyIHRoZSBQb3N0Z3JlU1FMIExpY2VuY2UKKy8v CisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLworCisKK2ltcG9ydCB7bWVudUVuYWJsZWRTZXJ2ZXJ9IGZyb20gJy4uLy4uLy4uL3Bn YWRtaW4vdG9vbHMvYmFja3VwL3N0YXRpYy9qcy9tZW51X3V0aWxzJzsKKworY29uc3QgY29udGV4 dCA9IGRlc2NyaWJlOworCitkZXNjcmliZSgnYmFja3VwLm1lbnVVdGlscycsICgpID0+IHsKKyAg ZGVzY3JpYmUoJyNtZW51RW5hYmxlZFNlcnZlcicsICgpID0+IHsKKyAgICBjb250ZXh0KCdwcm92 aWRlZCBub2RlIGRhdGEgaXMgdW5kZWZpbmVkJywgKCkgPT4geworICAgICAgaXQoJ3JldHVybnMg ZmFsc2UnLCAoKSA9PiB7CisgICAgICAgIGV4cGVjdChtZW51RW5hYmxlZFNlcnZlcih1bmRlZmlu ZWQpKS50b0JlKGZhbHNlKTsKKyAgICAgIH0pOworICAgIH0pOworCisgICAgY29udGV4dCgncHJv dmlkZWQgbm9kZSBkYXRhIGlzIG51bGwnLCAoKSA9PiB7CisgICAgICBpdCgncmV0dXJucyBmYWxz ZScsICgpID0+IHsKKyAgICAgICAgZXhwZWN0KG1lbnVFbmFibGVkU2VydmVyKG51bGwpKS50b0Jl KGZhbHNlKTsKKyAgICAgIH0pOworICAgIH0pOworCisgICAgY29udGV4dCgnY3VycmVudCBub2Rl IHR5cGUgaXMgbm90IG9mIHRoZSB0eXBlIHNlcnZlcicsICgpID0+IHsKKyAgICAgIGl0KCdyZXR1 cm5zIGZhbHNlJywgKCkgPT4geworICAgICAgICBleHBlY3QobWVudUVuYWJsZWRTZXJ2ZXIoe190 eXBlOiAnc2NoZW1hJ30pKS50b0JlKGZhbHNlKTsKKyAgICAgIH0pOworICAgIH0pOworCisgICAg Y29udGV4dCgnY3VycmVudCBub2RlIHR5cGUgaXMgb2YgdGhlIHR5cGUgc2VydmVyJywgKCkgPT4g eworICAgICAgY29udGV4dCgnaXMgY29ubmVjdGVkJywgKCkgPT4geworICAgICAgICBpdCgncmV0 dXJucyB0cnVlJywgKCkgPT4geworICAgICAgICAgIGV4cGVjdChtZW51RW5hYmxlZFNlcnZlcih7 CisgICAgICAgICAgICBfdHlwZTogJ3NlcnZlcicsCisgICAgICAgICAgICBjb25uZWN0ZWQ6IHRy dWUsCisgICAgICAgICAgfSkpLnRvQmUodHJ1ZSk7CisgICAgICAgIH0pOworICAgICAgfSk7Cisg ICAgICBjb250ZXh0KCdpcyBub3QgY29ubmVjdGVkJywgKCkgPT4geworICAgICAgICBpdCgncmV0 dXJucyBmYWxzZScsICgpID0+IHsKKyAgICAgICAgICBleHBlY3QobWVudUVuYWJsZWRTZXJ2ZXIo eworICAgICAgICAgICAgX3R5cGU6ICdzZXJ2ZXInLAorICAgICAgICAgICAgY29ubmVjdGVkOiBm YWxzZSwKKyAgICAgICAgICB9KSkudG9CZShmYWxzZSk7CisgICAgICAgIH0pOworICAgICAgfSk7 CisgICAgfSk7CisgIH0pOworfSk7CisKZGlmZiAtLWdpdCBhL3dlYi9yZWdyZXNzaW9uL2phdmFz Y3JpcHQvY29tbW9uX2tleWJvYXJkX3Nob3J0Y3V0c19zcGVjLmpzIGIvd2ViL3JlZ3Jlc3Npb24v amF2YXNjcmlwdC9jb21tb25fa2V5Ym9hcmRfc2hvcnRjdXRzX3NwZWMuanMKaW5kZXggOWVhMzFl ZmQuLmUyNzkyOWJmIDEwMDY0NAotLS0gYS93ZWIvcmVncmVzc2lvbi9qYXZhc2NyaXB0L2NvbW1v bl9rZXlib2FyZF9zaG9ydGN1dHNfc3BlYy5qcworKysgYi93ZWIvcmVncmVzc2lvbi9qYXZhc2Ny aXB0L2NvbW1vbl9rZXlib2FyZF9zaG9ydGN1dHNfc3BlYy5qcwpAQCAtMTEsMTAgKzExLDYgQEAg aW1wb3J0IGtleWJvYXJkU2hvcnRjdXRzIGZyb20gJ3NvdXJjZXMva2V5Ym9hcmRfc2hvcnRjdXRz JzsKIAogZGVzY3JpYmUoJ3RoZSBrZXlib2FyZCBzaG9ydGN1dHMnLCAoKSA9PiB7CiAgIGNvbnN0 IEYxX0tFWSA9IDExMjsKLSAgLy8gY29uc3QgRURJVF9LRVkgPSA3MTsgIC8vIEtleTogRyAtPiBH cmlkIHZhbHVlcwotICAvLyBjb25zdCBMRUZUX0FSUk9XX0tFWSA9IDM3OwotICAvLyBjb25zdCBS SUdIVF9BUlJPV19LRVkgPSAzOTsKLSAgLy8gY29uc3QgTU9WRV9ORVhUID0gJ3JpZ2h0JzsKIAog ICBsZXQgZGVidWdnZXJFbGVtZW50U3B5LCBldmVudCwgZGVidWdnZXJVc2VyU2hvcnRjdXRTcHk7 CiAgIGRlYnVnZ2VyVXNlclNob3J0Y3V0U3B5ID0gamFzbWluZS5jcmVhdGVTcHlPYmooCmRpZmYg LS1naXQgYS93ZWIvcmVncmVzc2lvbi9qYXZhc2NyaXB0L2RhdGFncmlkL2dldF9wYW5lbF90aXRs ZV9zcGVjLmpzIGIvd2ViL3JlZ3Jlc3Npb24vamF2YXNjcmlwdC9kYXRhZ3JpZC9nZXRfcGFuZWxf dGl0bGVfc3BlYy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMC4uOGEzNDRh ODQKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcmVncmVzc2lvbi9qYXZhc2NyaXB0L2RhdGFncmlk L2dldF9wYW5lbF90aXRsZV9zcGVjLmpzCkBAIC0wLDAgKzEsODIgQEAKKy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKy8vCisvLyBw Z0FkbWluIDQgLSBQb3N0Z3JlU1FMIFRvb2xzCisvLworLy8gQ29weXJpZ2h0IChDKSAyMDEzIC0g MjAxOCwgVGhlIHBnQWRtaW4gRGV2ZWxvcG1lbnQgVGVhbQorLy8gVGhpcyBzb2Z0d2FyZSBpcyBy ZWxlYXNlZCB1bmRlciB0aGUgUG9zdGdyZVNRTCBMaWNlbmNlCisvLworLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKworaW1wb3J0 IHtnZXRQYW5lbFRpdGxlfSBmcm9tICcuLi8uLi8uLi9wZ2FkbWluL3Rvb2xzL2RhdGFncmlkL3N0 YXRpYy9qcy9nZXRfcGFuZWxfdGl0bGUnOworaW1wb3J0IHtUcmVlRmFrZX0gZnJvbSAnLi4vdHJl ZS90cmVlX2Zha2UnOworaW1wb3J0IHtUcmVlTm9kZX0gZnJvbSAnLi4vLi4vLi4vcGdhZG1pbi9z dGF0aWMvanMvdHJlZS90cmVlJzsKKworY29uc3QgY29udGV4dCA9IGRlc2NyaWJlOworCitkZXNj cmliZSgnI2dldFBhbmVsVGl0bGUnLCAoKSA9PiB7CisgIGxldCBwZ0Jyb3dzZXI7CisgIGxldCB0 cmVlOworICBiZWZvcmVFYWNoKCgpID0+IHsKKyAgICB0cmVlID0gbmV3IFRyZWVGYWtlKCk7Cisg ICAgcGdCcm93c2VyID0geworICAgICAgdHJlZU1lbnU6IHRyZWUsCisgICAgICBOb2Rlczogewor ICAgICAgICBzZXJ2ZXI6IHsKKyAgICAgICAgICBoYXNJZDogdHJ1ZSwKKyAgICAgICAgICBfdHlw ZTogJ3NlcnZlcicsCisgICAgICAgIH0sCisgICAgICAgIGRhdGFiYXNlOiB7CisgICAgICAgICAg aGFzSWQ6IHRydWUsCisgICAgICAgICAgX3R5cGU6ICdkYXRhYmFzZScsCisgICAgICAgIH0sCisg ICAgICB9LAorICAgIH07CisgIH0pOworCisgIGNvbnRleHQoJ3NlbGVjdGVkIG5vZGUgZG9lcyBu b3QgYmVsb25nIHRvIGEgc2VydmVyJywgKCkgPT4geworICAgIGl0KCdyZXR1cm5zIHVuZGVmaW5l ZCcsICgpID0+IHsKKyAgICAgIGNvbnN0IHJvb3QgPSB0cmVlLmFkZE5ld05vZGUoJ2xldmVsMScs IHtfdHlwZTogJ3NlcnZlcl9ncm91cHMnfSk7CisgICAgICB0cmVlLmFkZENoaWxkKHJvb3QsIG5l dyBUcmVlTm9kZSgnbGV2ZWwxLjEnLCB7X3R5cGU6ICdvdGhlcid9KSk7CisgICAgICB0cmVlLnNl bGVjdE5vZGUoW3tpZDogJ2xldmVsMSd9XSk7CisgICAgICBleHBlY3QoZ2V0UGFuZWxUaXRsZShw Z0Jyb3dzZXIpKS50b0JlVW5kZWZpbmVkKCk7CisgICAgfSk7CisgIH0pOworCisgIGNvbnRleHQo J3NlbGVjdGVkIG5vZGUgYmVsb25nIHRvIGEgc2VydmVyJywgKCkgPT4geworICAgIGNvbnRleHQo J3NlbGVjdGVkIG5vZGUgZG9lcyBub3QgYmVsb25nIHRvIGEgZGF0YWJhc2UnLCAoKSA9PiB7Cisg ICAgICBpdCgncmV0dXJucyB0aGUgc2VydmVyIGxhYmVsIGFuZCB0aGUgdXNlcm5hbWUnLCAoKSA9 PiB7CisgICAgICAgIHRyZWUuYWRkTmV3Tm9kZSgnbGV2ZWwxJywgeworICAgICAgICAgIF90eXBl OiAnc2VydmVyJywKKyAgICAgICAgICBkYjogJ290aGVyIGRiIGxhYmVsJywKKyAgICAgICAgICB1 c2VyOiB7bmFtZTogJ3NvbWUgdXNlciBuYW1lJ30sCisgICAgICAgICAgbGFiZWw6ICdzZXJ2ZXIg bGFiZWwnLAorICAgICAgICB9LCBbXSk7CisKKyAgICAgICAgdHJlZS5zZWxlY3ROb2RlKFt7aWQ6 ICdsZXZlbDEnfV0pOworICAgICAgICBleHBlY3QoZ2V0UGFuZWxUaXRsZShwZ0Jyb3dzZXIpKQor ICAgICAgICAgIC50b0JlKCdvdGhlciBkYiBsYWJlbCBvbiBzb21lIHVzZXIgbmFtZUBzZXJ2ZXIg bGFiZWwnKTsKKyAgICAgIH0pOworICAgIH0pOworCisgICAgY29udGV4dCgnc2VsZWN0ZWQgbm9k ZSBiZWxvbmdzIHRvIGEgZGF0YWJhc2UnLCAoKSA9PiB7CisgICAgICBpdCgncmV0dXJucyB0aGUg ZGF0YWJhc2UgbGFiZWwgYW5kIHRoZSB1c2VybmFtZScsICgpID0+IHsKKyAgICAgICAgY29uc3Qg cm9vdCA9IHRyZWUuYWRkTmV3Tm9kZSgnbGV2ZWwxJywgeworICAgICAgICAgIF90eXBlOiAnc2Vy dmVyJywKKyAgICAgICAgICBkYjogJ290aGVyIGRiIGxhYmVsJywKKyAgICAgICAgICB1c2VyOiB7 bmFtZTogJ3NvbWUgdXNlciBuYW1lJ30sCisgICAgICAgICAgbGFiZWw6ICdzZXJ2ZXIgbGFiZWwn LAorICAgICAgICB9KTsKKyAgICAgICAgY29uc3QgbGV2ZWwxID0gbmV3IFRyZWVOb2RlKCdsZXZl bDEuMScsIHsKKyAgICAgICAgICBfdHlwZTogJ2RhdGFiYXNlJywKKyAgICAgICAgICBsYWJlbDog J2RiIGxhYmVsJywKKyAgICAgICAgfSk7CisgICAgICAgIHRyZWUuYWRkQ2hpbGQocm9vdCwgbGV2 ZWwxKTsKKyAgICAgICAgdHJlZS5hZGRDaGlsZChsZXZlbDEsCisgICAgICAgICAgbmV3IFRyZWVO b2RlKCdsZXZlbDEuMS4xJywge190eXBlOiAndGFibGUnfSkpOworICAgICAgICB0cmVlLnNlbGVj dE5vZGUoW3tpZDogJ2xldmVsMS4xLjEnfV0pOworICAgICAgICBleHBlY3QoZ2V0UGFuZWxUaXRs ZShwZ0Jyb3dzZXIpKQorICAgICAgICAgIC50b0JlKCdkYiBsYWJlbCBvbiBzb21lIHVzZXIgbmFt ZUBzZXJ2ZXIgbGFiZWwnKTsKKyAgICAgIH0pOworICAgIH0pOworICB9KTsKK30pOwpkaWZmIC0t Z2l0IGEvd2ViL3JlZ3Jlc3Npb24vamF2YXNjcmlwdC9kYXRhZ3JpZC9zaG93X2RhdGFfc3BlYy5q cyBiL3dlYi9yZWdyZXNzaW9uL2phdmFzY3JpcHQvZGF0YWdyaWQvc2hvd19kYXRhX3NwZWMuanMK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAuLjgwZDI1ZWIzCi0tLSAvZGV2L251 bGwKKysrIGIvd2ViL3JlZ3Jlc3Npb24vamF2YXNjcmlwdC9kYXRhZ3JpZC9zaG93X2RhdGFfc3Bl Yy5qcwpAQCAtMCwwICsxLDE3MSBAQAorLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworLy8KKy8vIHBnQWRtaW4gNCAtIFBvc3RncmVT UUwgVG9vbHMKKy8vCisvLyBDb3B5cmlnaHQgKEMpIDIwMTMgLSAyMDE4LCBUaGUgcGdBZG1pbiBE ZXZlbG9wbWVudCBUZWFtCisvLyBUaGlzIHNvZnR3YXJlIGlzIHJlbGVhc2VkIHVuZGVyIHRoZSBQ b3N0Z3JlU1FMIExpY2VuY2UKKy8vCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworCitpbXBvcnQge3Nob3dEYXRhR3JpZH0gZnJv bSAnLi4vLi4vLi4vcGdhZG1pbi90b29scy9kYXRhZ3JpZC9zdGF0aWMvanMvc2hvd19kYXRhJzsK K2ltcG9ydCB7VHJlZUZha2V9IGZyb20gJy4uL3RyZWUvdHJlZV9mYWtlJzsKK2ltcG9ydCB7VHJl ZU5vZGV9IGZyb20gJy4uLy4uLy4uL3BnYWRtaW4vc3RhdGljL2pzL3RyZWUvdHJlZSc7CisKK2Nv bnN0IGNvbnRleHQgPSBkZXNjcmliZTsKKworZGVzY3JpYmUoJyNzaG93X2RhdGEnLCAoKSA9PiB7 CisgIGxldCBkYXRhZ3JpZDsKKyAgbGV0IHBnQnJvd3NlcjsKKyAgbGV0IGFsZXJ0aWZ5OworICBi ZWZvcmVFYWNoKCgpID0+IHsKKyAgICBhbGVydGlmeSA9IGphc21pbmUuY3JlYXRlU3B5T2JqKCdh bGVydGlmeScsIFsnYWxlcnQnXSk7CisgICAgZGF0YWdyaWQgPSB7CisgICAgICBjcmVhdGVfdHJh bnNhY3Rpb246IGphc21pbmUuY3JlYXRlU3B5KCdjcmVhdGVfdHJhbnNhY3Rpb24nKSwKKyAgICB9 OworICAgIHBnQnJvd3NlciA9IHsKKyAgICAgIHRyZWVNZW51OiBuZXcgVHJlZUZha2UoKSwKKyAg ICAgIE5vZGVzOiB7CisgICAgICAgIHNlcnZlcl9ncm91cDogeworICAgICAgICAgIF90eXBlOiAn c2VydmVyX2dyb3VwJywKKyAgICAgICAgICBoYXNJZDogdHJ1ZSwKKyAgICAgICAgfSwKKyAgICAg ICAgc2VydmVyOiB7CisgICAgICAgICAgX3R5cGU6ICdzZXJ2ZXInLAorICAgICAgICAgIGhhc0lk OiB0cnVlLAorICAgICAgICB9LAorICAgICAgICBkYXRhYmFzZTogeworICAgICAgICAgIF90eXBl OiAnZGF0YWJhc2UnLAorICAgICAgICAgIGhhc0lkOiB0cnVlLAorICAgICAgICB9LAorICAgICAg ICBzY2hlbWE6IHsKKyAgICAgICAgICBfdHlwZTogJ3NjaGVtYScsCisgICAgICAgICAgaGFzSWQ6 IHRydWUsCisgICAgICAgIH0sCisgICAgICAgIHZpZXc6IHsKKyAgICAgICAgICBfdHlwZTogJ3Zp ZXcnLAorICAgICAgICAgIGhhc0lkOiB0cnVlLAorICAgICAgICB9LAorICAgICAgICBjYXRhbG9n OiB7CisgICAgICAgICAgX3R5cGU6ICdjYXRhbG9nJywKKyAgICAgICAgICBoYXNJZDogdHJ1ZSwK KyAgICAgICAgfSwKKyAgICAgIH0sCisgICAgfTsKKyAgICBjb25zdCBwYXJlbnQgPSBwZ0Jyb3dz ZXIudHJlZU1lbnUuYWRkTmV3Tm9kZSgncGFyZW50Jywge190eXBlOiAncGFyZW50J30sIFtdKTsK KyAgICBjb25zdCBzZXJ2ZXJHcm91cDEgPSBuZXcgVHJlZU5vZGUoJ3NlcnZlcl9ncm91cDEnLCB7 CisgICAgICBfdHlwZTogJ3NlcnZlcl9ncm91cCcsCisgICAgICBfaWQ6IDEsCisgICAgfSk7Cisg ICAgcGdCcm93c2VyLnRyZWVNZW51LmFkZENoaWxkKHBhcmVudCwgc2VydmVyR3JvdXAxKTsKKwor ICAgIGNvbnN0IHNlcnZlcjEgPSBuZXcgVHJlZU5vZGUoJ3NlcnZlcjEnLCB7CisgICAgICBfdHlw ZTogJ3NlcnZlcicsCisgICAgICBsYWJlbDogJ3NlcnZlcjEnLAorICAgICAgc2VydmVyX3R5cGU6 ICdwZycsCisgICAgICBfaWQ6IDIsCisgICAgfSwgWydwYXJlbnQnLCAnc2VydmVyX2dyb3VwMSdd KTsKKyAgICBwZ0Jyb3dzZXIudHJlZU1lbnUuYWRkQ2hpbGQoc2VydmVyR3JvdXAxLCBzZXJ2ZXIx KTsKKworICAgIGNvbnN0IGRhdGFiYXNlMSA9IG5ldyBUcmVlTm9kZSgnZGF0YWJhc2UxJywgewor ICAgICAgX3R5cGU6ICdkYXRhYmFzZScsCisgICAgICBsYWJlbDogJ2RhdGFiYXNlMScsCisgICAg ICBfaWQ6IDMsCisgICAgfSwgWydwYXJlbnQnLCAnc2VydmVyX2dyb3VwMScsICdzZXJ2ZXIxJ10p OworICAgIHBnQnJvd3Nlci50cmVlTWVudS5hZGRDaGlsZChzZXJ2ZXIxLCBkYXRhYmFzZTEpOwor CisgICAgY29uc3Qgc2NoZW1hMSA9IG5ldyBUcmVlTm9kZSgnc2NoZW1hMScsIHsKKyAgICAgIF90 eXBlOiAnc2NoZW1hJywKKyAgICAgIGxhYmVsOiAnc2NoZW1hMScsCisgICAgICBfaWQ6IDQsCisg ICAgfSk7CisgICAgcGdCcm93c2VyLnRyZWVNZW51LmFkZENoaWxkKGRhdGFiYXNlMSwgc2NoZW1h MSk7CisKKyAgICBjb25zdCB2aWV3MSA9IG5ldyBUcmVlTm9kZSgndmlldzEnLCB7CisgICAgICBf dHlwZTogJ3ZpZXcnLAorICAgICAgbGFiZWw6ICd2aWV3MScsCisgICAgICBfaWQ6IDUsCisgICAg fSwgWydwYXJlbnQnLCAnc2VydmVyX2dyb3VwMScsICdzZXJ2ZXIxJywgJ2RhdGFiYXNlMSddKTsK KyAgICBwZ0Jyb3dzZXIudHJlZU1lbnUuYWRkQ2hpbGQoZGF0YWJhc2UxLCB2aWV3MSk7CisKKyAg ICBjb25zdCBjYXRhbG9nMSA9IG5ldyBUcmVlTm9kZSgnY2F0YWxvZzEnLCB7CisgICAgICBfdHlw ZTogJ2NhdGFsb2cnLAorICAgICAgbGFiZWw6ICdjYXRhbG9nMScsCisgICAgICBfaWQ6IDYsCisg ICAgfSwgWydwYXJlbnQnLCAnc2VydmVyX2dyb3VwMScsICdzZXJ2ZXIxJywgJ2RhdGFiYXNlMSdd KTsKKyAgICBwZ0Jyb3dzZXIudHJlZU1lbnUuYWRkQ2hpbGQoZGF0YWJhc2UxLCBjYXRhbG9nMSk7 CisgIH0pOworCisgIGNvbnRleHQoJ2Nhbm5vdCBmaW5kIHRoZSB0cmVlIG5vZGUnLCAoKSA9PiB7 CisgICAgaXQoJ2RvZXMgbm90IGNyZWF0ZSBhIHRyYW5zYWN0aW9uJywgKCkgPT4geworICAgICAg c2hvd0RhdGFHcmlkKGRhdGFncmlkLCBwZ0Jyb3dzZXIsIGFsZXJ0aWZ5LCB7fSwgW3tpZDogJzEw J31dKTsKKyAgICAgIGV4cGVjdChkYXRhZ3JpZC5jcmVhdGVfdHJhbnNhY3Rpb24pLm5vdC50b0hh dmVCZWVuQ2FsbGVkKCk7CisgICAgfSk7CisKKyAgICBpdCgnZGlzcGxheSBhbGVydCcsICgpID0+ IHsKKyAgICAgIHNob3dEYXRhR3JpZChkYXRhZ3JpZCwgcGdCcm93c2VyLCBhbGVydGlmeSwge30s IFt7aWQ6ICcxMCd9XSk7CisgICAgICBleHBlY3QoYWxlcnRpZnkuYWxlcnQpLnRvSGF2ZUJlZW5D YWxsZWRXaXRoKAorICAgICAgICAnRGF0YSBHcmlkIEVycm9yJywKKyAgICAgICAgJ05vIG9iamVj dCBzZWxlY3RlZC4nCisgICAgICApOworICAgIH0pOworICB9KTsKKworICBjb250ZXh0KCdjdXJy ZW50IG5vZGUgaXMgbm90IHVuZGVybmVhdGggYSBzZXJ2ZXInLCAoKSA9PiB7CisgICAgaXQoJ2Rv ZXMgbm90IGNyZWF0ZSBhIHRyYW5zYWN0aW9uJywgKCkgPT4geworICAgICAgc2hvd0RhdGFHcmlk KGRhdGFncmlkLCBwZ0Jyb3dzZXIsIGFsZXJ0aWZ5LCB7fSwgW3tpZDogJ3BhcmVudCd9XSk7Cisg ICAgICBleHBlY3QoZGF0YWdyaWQuY3JlYXRlX3RyYW5zYWN0aW9uKS5ub3QudG9IYXZlQmVlbkNh bGxlZCgpOworICAgIH0pOworICB9KTsKKworICBjb250ZXh0KCdjdXJyZW50IG5vZGUgaXMgbm90 IHVuZGVybmVhdGggYSBzY2hlbWEgb3IgdmlldyBvciBjYXRhbG9nJywgKCkgPT4geworICAgIGl0 KCdkb2VzIG5vdCBjcmVhdGUgYSB0cmFuc2FjdGlvbicsICgpID0+IHsKKyAgICAgIHNob3dEYXRh R3JpZChkYXRhZ3JpZCwgcGdCcm93c2VyLCBhbGVydGlmeSwge30sIFt7aWQ6ICdkYXRhYmFzZTEn fV0pOworICAgICAgZXhwZWN0KGRhdGFncmlkLmNyZWF0ZV90cmFuc2FjdGlvbikubm90LnRvSGF2 ZUJlZW5DYWxsZWQoKTsKKyAgICB9KTsKKyAgfSk7CisKKyAgY29udGV4dCgnY3VycmVudCBub2Rl IGlzIHVuZGVybmVhdGggYSBzY2hlbWEnLCAoKSA9PiB7CisgICAgaXQoJ2RvZXMgbm90IGNyZWF0 ZSBhIHRyYW5zYWN0aW9uJywgKCkgPT4geworICAgICAgc2hvd0RhdGFHcmlkKGRhdGFncmlkLCBw Z0Jyb3dzZXIsIGFsZXJ0aWZ5LCB7bW51aWQ6IDExfSwgW3tpZDogJ3NjaGVtYTEnfV0pOworICAg ICAgZXhwZWN0KGRhdGFncmlkLmNyZWF0ZV90cmFuc2FjdGlvbikudG9IYXZlQmVlbkNhbGxlZFdp dGgoCisgICAgICAgICcvaW5pdGlhbGl6ZS9kYXRhZ3JpZC8xMS9zY2hlbWEvMS8yLzMvNCcsCisg ICAgICAgIG51bGwsCisgICAgICAgICdmYWxzZScsCisgICAgICAgICdwZycsCisgICAgICAgICcn LAorICAgICAgICAnc2VydmVyMSAtIGRhdGFiYXNlMSAtIHNjaGVtYTEuc2NoZW1hMScsCisgICAg ICAgICcnCisgICAgICApOworICAgIH0pOworICB9KTsKKworICBjb250ZXh0KCdjdXJyZW50IG5v ZGUgaXMgdW5kZXJuZWF0aCBhIHZpZXcnLCAoKSA9PiB7CisgICAgaXQoJ2RvZXMgbm90IGNyZWF0 ZSBhIHRyYW5zYWN0aW9uJywgKCkgPT4geworICAgICAgc2hvd0RhdGFHcmlkKGRhdGFncmlkLCBw Z0Jyb3dzZXIsIGFsZXJ0aWZ5LCB7bW51aWQ6IDExfSwgW3tpZDogJ3ZpZXcxJ31dKTsKKyAgICAg IGV4cGVjdChkYXRhZ3JpZC5jcmVhdGVfdHJhbnNhY3Rpb24pLnRvSGF2ZUJlZW5DYWxsZWRXaXRo KAorICAgICAgICAnL2luaXRpYWxpemUvZGF0YWdyaWQvMTEvdmlldy8xLzIvMy81JywKKyAgICAg ICAgbnVsbCwKKyAgICAgICAgJ2ZhbHNlJywKKyAgICAgICAgJ3BnJywKKyAgICAgICAgJycsCisg ICAgICAgICdzZXJ2ZXIxIC0gZGF0YWJhc2UxIC0gdmlldzEudmlldzEnLAorICAgICAgICAnJwor ICAgICAgKTsKKyAgICB9KTsKKyAgfSk7CisKKyAgY29udGV4dCgnY3VycmVudCBub2RlIGlzIHVu ZGVybmVhdGggYSBjYXRhbG9nJywgKCkgPT4geworICAgIGl0KCdkb2VzIG5vdCBjcmVhdGUgYSB0 cmFuc2FjdGlvbicsICgpID0+IHsKKyAgICAgIHNob3dEYXRhR3JpZChkYXRhZ3JpZCwgcGdCcm93 c2VyLCBhbGVydGlmeSwge21udWlkOiAxMX0sIFt7aWQ6ICdjYXRhbG9nMSd9XSk7CisgICAgICBl eHBlY3QoZGF0YWdyaWQuY3JlYXRlX3RyYW5zYWN0aW9uKS50b0hhdmVCZWVuQ2FsbGVkV2l0aCgK KyAgICAgICAgJy9pbml0aWFsaXplL2RhdGFncmlkLzExL2NhdGFsb2cvMS8yLzMvNicsCisgICAg ICAgIG51bGwsCisgICAgICAgICdmYWxzZScsCisgICAgICAgICdwZycsCisgICAgICAgICcnLAor ICAgICAgICAnc2VydmVyMSAtIGRhdGFiYXNlMSAtIGNhdGFsb2cxLmNhdGFsb2cxJywKKyAgICAg ICAgJycKKyAgICAgICk7CisgICAgfSk7CisgIH0pOworfSk7CmRpZmYgLS1naXQgYS93ZWIvcmVn cmVzc2lvbi9qYXZhc2NyaXB0L2RhdGFncmlkL3Nob3dfcXVlcnlfdG9vbF9zcGVjLmpzIGIvd2Vi L3JlZ3Jlc3Npb24vamF2YXNjcmlwdC9kYXRhZ3JpZC9zaG93X3F1ZXJ5X3Rvb2xfc3BlYy5qcwpu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMC4uNjZiZDM3Y2UKLS0tIC9kZXYvbnVs bAorKysgYi93ZWIvcmVncmVzc2lvbi9qYXZhc2NyaXB0L2RhdGFncmlkL3Nob3dfcXVlcnlfdG9v bF9zcGVjLmpzCkBAIC0wLDAgKzEsMTI1IEBACisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisvLworLy8gcGdBZG1pbiA0IC0gUG9z dGdyZVNRTCBUb29scworLy8KKy8vIENvcHlyaWdodCAoQykgMjAxMyAtIDIwMTgsIFRoZSBwZ0Fk bWluIERldmVsb3BtZW50IFRlYW0KKy8vIFRoaXMgc29mdHdhcmUgaXMgcmVsZWFzZWQgdW5kZXIg dGhlIFBvc3RncmVTUUwgTGljZW5jZQorLy8KKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisKK2ltcG9ydCB7VHJlZUZha2V9IGZy b20gJy4uL3RyZWUvdHJlZV9mYWtlJzsKK2ltcG9ydCB7c2hvd1F1ZXJ5VG9vbH0gZnJvbSAnLi4v Li4vLi4vcGdhZG1pbi90b29scy9kYXRhZ3JpZC9zdGF0aWMvanMvc2hvd19xdWVyeV90b29sJzsK K2ltcG9ydCB7VHJlZU5vZGV9IGZyb20gJy4uLy4uLy4uL3BnYWRtaW4vc3RhdGljL2pzL3RyZWUv dHJlZSc7CisKK2NvbnN0IGNvbnRleHQgPSBkZXNjcmliZTsKKworZGVzY3JpYmUoJyNzaG93UXVl cnlUb29sJywgKCkgPT4geworICBsZXQgcXVlcnlUb29sOworICBsZXQgcGdCcm93c2VyOworICBs ZXQgYWxlcnRpZnk7CisgIGJlZm9yZUVhY2goKCkgPT4geworICAgIGFsZXJ0aWZ5ID0gamFzbWlu ZS5jcmVhdGVTcHlPYmooJ2FsZXJ0aWZ5JywgWydhbGVydCddKTsKKyAgICBxdWVyeVRvb2wgPSB7 CisgICAgICBjcmVhdGVfdHJhbnNhY3Rpb246IGphc21pbmUuY3JlYXRlU3B5KCdjcmVhdGVfdHJh bnNhY3Rpb24nKSwKKyAgICB9OworICAgIHBnQnJvd3NlciA9IHsKKyAgICAgIHRyZWVNZW51OiBu ZXcgVHJlZUZha2UoKSwKKyAgICAgIE5vZGVzOiB7CisgICAgICAgIHNlcnZlcl9ncm91cDogewor ICAgICAgICAgIF90eXBlOiAnc2VydmVyX2dyb3VwJywKKyAgICAgICAgICBoYXNJZDogdHJ1ZSwK KyAgICAgICAgfSwKKyAgICAgICAgc2VydmVyOiB7CisgICAgICAgICAgX3R5cGU6ICdzZXJ2ZXIn LAorICAgICAgICAgIGhhc0lkOiB0cnVlLAorICAgICAgICB9LAorICAgICAgICBkYXRhYmFzZTog eworICAgICAgICAgIF90eXBlOiAnZGF0YWJhc2UnLAorICAgICAgICAgIGhhc0lkOiB0cnVlLAor ICAgICAgICB9LAorICAgICAgfSwKKyAgICB9OworICAgIGNvbnN0IHBhcmVudCA9IHBnQnJvd3Nl ci50cmVlTWVudS5hZGROZXdOb2RlKCdwYXJlbnQnLCB7X3R5cGU6ICdwYXJlbnQnfSk7CisgICAg Y29uc3Qgc2VydmVyR3JvdXAxID0gIG5ldyBUcmVlTm9kZSgnc2VydmVyX2dyb3VwMScsIHsKKyAg ICAgIF90eXBlOiAnc2VydmVyX2dyb3VwJywKKyAgICAgIF9pZDogMSwKKyAgICB9LCBbJ3BhcmVu dCddKTsKKyAgICBwZ0Jyb3dzZXIudHJlZU1lbnUuYWRkQ2hpbGQocGFyZW50LCBzZXJ2ZXJHcm91 cDEpOworCisgICAgY29uc3Qgc2VydmVyMSA9IG5ldyBUcmVlTm9kZSgnc2VydmVyMScsIHsKKyAg ICAgIF90eXBlOiAnc2VydmVyJywKKyAgICAgIGxhYmVsOiAnc2VydmVyMScsCisgICAgICBzZXJ2 ZXJfdHlwZTogJ3BnJywKKyAgICAgIF9pZDogMiwKKyAgICB9KTsKKyAgICBwZ0Jyb3dzZXIudHJl ZU1lbnUuYWRkQ2hpbGQoc2VydmVyR3JvdXAxLCBzZXJ2ZXIxKTsKKworICAgIGNvbnN0IGRhdGFi YXNlMSA9IG5ldyAgVHJlZU5vZGUoJ2RhdGFiYXNlMScsIHsKKyAgICAgIF90eXBlOiAnZGF0YWJh c2UnLAorICAgICAgbGFiZWw6ICdkYXRhYmFzZTEnLAorICAgICAgX2lkOiAzLAorICAgIH0pOwor ICAgIHBnQnJvd3Nlci50cmVlTWVudS5hZGRDaGlsZChzZXJ2ZXIxLCBkYXRhYmFzZTEpOworICB9 KTsKKworICBjb250ZXh0KCdjYW5ub3QgZmluZCB0aGUgdHJlZSBub2RlJywgKCkgPT4geworICAg IGJlZm9yZUVhY2goKCkgPT4geworICAgICAgc2hvd1F1ZXJ5VG9vbChxdWVyeVRvb2wsIHBnQnJv d3NlciwgYWxlcnRpZnksICcnLCBbe2lkOiAnMTAnfV0sICd0aXRsZScpOworICAgIH0pOworICAg IGl0KCdkb2VzIG5vdCBjcmVhdGUgYSB0cmFuc2FjdGlvbicsICgpID0+IHsKKyAgICAgIGV4cGVj dChxdWVyeVRvb2wuY3JlYXRlX3RyYW5zYWN0aW9uKS5ub3QudG9IYXZlQmVlbkNhbGxlZCgpOwor ICAgIH0pOworCisgICAgaXQoJ2Rpc3BsYXkgYWxlcnQnLCAoKSA9PiB7CisgICAgICBleHBlY3Qo YWxlcnRpZnkuYWxlcnQpLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKAorICAgICAgICAnUXVlcnkgVG9v bCBFcnJvcicsCisgICAgICAgICdObyBvYmplY3Qgc2VsZWN0ZWQuJworICAgICAgKTsKKyAgICB9 KTsKKyAgfSk7CisKKyAgY29udGV4dCgnY3VycmVudCBub2RlIGlzIG5vdCB1bmRlcm5lYXRoIGEg c2VydmVyJywgKCkgPT4geworICAgIGl0KCdkb2VzIG5vdCBjcmVhdGUgYSB0cmFuc2FjdGlvbics ICgpID0+IHsKKyAgICAgIHNob3dRdWVyeVRvb2wocXVlcnlUb29sLCBwZ0Jyb3dzZXIsIGFsZXJ0 aWZ5LCAnJywgW3tpZDogJ3BhcmVudCd9XSwgJ3RpdGxlJyk7CisgICAgICBleHBlY3QocXVlcnlU b29sLmNyZWF0ZV90cmFuc2FjdGlvbikubm90LnRvSGF2ZUJlZW5DYWxsZWQoKTsKKyAgICB9KTsK KworICAgIGl0KCdubyBhbGVydCBpcyBkaXNwbGF5ZWQnLCAoKSA9PiB7CisgICAgICBleHBlY3Qo YWxlcnRpZnkuYWxlcnQpLm5vdC50b0hhdmVCZWVuQ2FsbGVkKCk7CisgICAgfSk7CisgIH0pOwor CisgIGNvbnRleHQoJ2N1cnJlbnQgbm9kZSBpcyB1bmRlcm5lYXRoIGEgc2VydmVyJywgKCkgPT4g eworICAgIGNvbnRleHQoJ2N1cnJlbnQgbm9kZSBpcyBub3QgdW5kZXJuZWF0aCBhIGRhdGFiYXNl JywgKCkgPT4geworICAgICAgaXQoJ2NyZWF0ZXMgYSB0cmFuc2FjdGlvbicsICgpID0+IHsKKyAg ICAgICAgc2hvd1F1ZXJ5VG9vbChxdWVyeVRvb2wsIHBnQnJvd3NlciwgYWxlcnRpZnksICdodHRw Oi8vc29tZXVybCcsIFt7aWQ6ICdzZXJ2ZXIxJ31dLCAndGl0bGUnKTsKKyAgICAgICAgZXhwZWN0 KHF1ZXJ5VG9vbC5jcmVhdGVfdHJhbnNhY3Rpb24pLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKAorICAg ICAgICAgICcvaW5pdGlhbGl6ZS9xdWVyeV90b29sLzEvMicsCisgICAgICAgICAgbnVsbCwKKyAg ICAgICAgICAndHJ1ZScsCisgICAgICAgICAgJ3BnJywKKyAgICAgICAgICAnaHR0cDovL3NvbWV1 cmwnLAorICAgICAgICAgICd0aXRsZScsCisgICAgICAgICAgJycsCisgICAgICAgICAgZmFsc2UK KyAgICAgICAgKTsKKyAgICAgIH0pOworICAgIH0pOworCisgICAgY29udGV4dCgnY3VycmVudCBu b2RlIGlzIHVuZGVybmVhdGggYSBkYXRhYmFzZScsICgpID0+IHsKKyAgICAgIGl0KCdjcmVhdGVz IGEgdHJhbnNhY3Rpb24nLCAoKSA9PiB7CisgICAgICAgIHNob3dRdWVyeVRvb2wocXVlcnlUb29s LCBwZ0Jyb3dzZXIsIGFsZXJ0aWZ5LCAnaHR0cDovL3NvbWV1cmwnLCBbe2lkOiAnZGF0YWJhc2Ux J31dLCAndGl0bGUnKTsKKyAgICAgICAgZXhwZWN0KHF1ZXJ5VG9vbC5jcmVhdGVfdHJhbnNhY3Rp b24pLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKAorICAgICAgICAgICcvaW5pdGlhbGl6ZS9xdWVyeV90 b29sLzEvMi8zJywKKyAgICAgICAgICBudWxsLAorICAgICAgICAgICd0cnVlJywKKyAgICAgICAg ICAncGcnLAorICAgICAgICAgICdodHRwOi8vc29tZXVybCcsCisgICAgICAgICAgJ3RpdGxlJywK KyAgICAgICAgICAnJywKKyAgICAgICAgICBmYWxzZQorICAgICAgICApOworICAgICAgfSk7Cisg ICAgfSk7CisgIH0pOworfSk7CmRpZmYgLS1naXQgYS93ZWIvcmVncmVzc2lvbi9qYXZhc2NyaXB0 L2Zha2VfZW5kcG9pbnRzLmpzIGIvd2ViL3JlZ3Jlc3Npb24vamF2YXNjcmlwdC9mYWtlX2VuZHBv aW50cy5qcwppbmRleCA1NGI4NmE5NC4uYzA2MGJhNzggMTAwNjQ0Ci0tLSBhL3dlYi9yZWdyZXNz aW9uL2phdmFzY3JpcHQvZmFrZV9lbmRwb2ludHMuanMKKysrIGIvd2ViL3JlZ3Jlc3Npb24vamF2 YXNjcmlwdC9mYWtlX2VuZHBvaW50cy5qcwpAQCAtMTIsNSArMTIsMTEgQEAgZGVmaW5lKGZ1bmN0 aW9uICgpIHsKICAgICAnc3RhdGljJzogJy9iYXNlL3BnYWRtaW4vc3RhdGljLzxwYXRoOmZpbGVu YW1lPicsCiAgICAgJ3NxbGVkaXRvci5wb2xsJzogJy9zcWxlZGl0b3IvcXVlcnlfdG9vbC9wb2xs LzxwYXRoOnRyYW5zX2lkPicsCiAgICAgJ3NxbGVkaXRvci5xdWVyeV90b29sX3N0YXJ0JzogJy9z cWxlZGl0b3IvcXVlcnlfdG9vbC9zdGFydC88cGF0aDp0cmFuc19pZD4nLAorICAgICdiYWNrdXAu Y3JlYXRlX3NlcnZlcl9qb2InOiAgJy9iYWNrdXAvam9iLzxpbnQ6c2lkPicsCisgICAgJ2JhY2t1 cC5jcmVhdGVfb2JqZWN0X2pvYic6ICAnL2JhY2t1cC9qb2IvPGludDpzaWQ+L29iamVjdCcsCisg ICAgJ2RhdGFncmlkLmluaXRpYWxpemVfZGF0YWdyaWQnOiAnL2luaXRpYWxpemUvZGF0YWdyaWQv PGludDpjbWRfdHlwZT4vPG9ial90eXBlPi88aW50OnNnaWQ+LzxpbnQ6c2lkPi88aW50OmRpZD4v PGludDpvYmpfaWQ+JywKKyAgICAnZGF0YWdyaWQuaW5pdGlhbGl6ZV9xdWVyeV90b29sJzogJy9p bml0aWFsaXplL3F1ZXJ5X3Rvb2wvPGludDpzZ2lkPi88aW50OnNpZD4nLAorICAgICdkYXRhZ3Jp ZC5pbml0aWFsaXplX3F1ZXJ5X3Rvb2xfd2l0aF9kaWQnOiAnL2luaXRpYWxpemUvcXVlcnlfdG9v bC88aW50OnNnaWQ+LzxpbnQ6c2lkPi88aW50OmRpZD4nLAorICAgICdyZXN0b3JlLmNyZWF0ZV9q b2InOiAnL3Jlc3RvcmUvam9iLzxpbnQ6c2lkPicsCiAgIH07CiB9KTsKZGlmZiAtLWdpdCBhL3dl Yi9yZWdyZXNzaW9uL2phdmFzY3JpcHQvZmFrZV9tb2RlbC5qcyBiL3dlYi9yZWdyZXNzaW9uL2ph dmFzY3JpcHQvZmFrZV9tb2RlbC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw MC4uYWNmYWE1MzIKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcmVncmVzc2lvbi9qYXZhc2NyaXB0 L2Zha2VfbW9kZWwuanMKQEAgLTAsMCArMSwyMSBAQAorZXhwb3J0IGNsYXNzIEZha2VNb2RlbCB7 CisgIGNvbnN0cnVjdG9yKCkgeworICAgIHRoaXMudmFsdWVzID0ge307CisgIH0KKworICBzZXQo a2V5LCB2YWx1ZSkgeworICAgIHRoaXMudmFsdWVzW2tleV0gPSB2YWx1ZTsKKyAgfQorCisgIGdl dChrZXkpIHsKKyAgICByZXR1cm4gdGhpcy52YWx1ZXNba2V5XTsKKyAgfQorCisgIHVuc2V0KGtl eSkgeworICAgIGRlbGV0ZSB0aGlzLnZhbHVlc1trZXldOworICB9CisKKyAgdG9KU09OKCkgewor ICAgIHJldHVybiBPYmplY3QuYXNzaWduKHt9LCB0aGlzLnZhbHVlcyk7CisgIH0KK30KZGlmZiAt LWdpdCBhL3dlYi9yZWdyZXNzaW9uL2phdmFzY3JpcHQvbWVudS9jYW5fY3JlYXRlX3NwZWMuanMg Yi93ZWIvcmVncmVzc2lvbi9qYXZhc2NyaXB0L21lbnUvY2FuX2NyZWF0ZV9zcGVjLmpzCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwLi42NDIzOTYwZgotLS0gL2Rldi9udWxsCisr KyBiL3dlYi9yZWdyZXNzaW9uL2phdmFzY3JpcHQvbWVudS9jYW5fY3JlYXRlX3NwZWMuanMKQEAg LTAsMCArMSwxNjAgQEAKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8KKy8vCisvLyBwZ0FkbWluIDQgLSBQb3N0Z3JlU1FMIFRvb2xz CisvLworLy8gQ29weXJpZ2h0IChDKSAyMDEzIC0gMjAxOCwgVGhlIHBnQWRtaW4gRGV2ZWxvcG1l bnQgVGVhbQorLy8gVGhpcyBzb2Z0d2FyZSBpcyByZWxlYXNlZCB1bmRlciB0aGUgUG9zdGdyZVNR TCBMaWNlbmNlCisvLworLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLworCitpbXBvcnQge2NhbkNyZWF0ZX0gZnJvbSAnLi4vLi4vLi4v cGdhZG1pbi9zdGF0aWMvanMvbWVudS9jYW5fY3JlYXRlJzsKK2ltcG9ydCB7VHJlZUZha2V9IGZy b20gJy4uL3RyZWUvdHJlZV9mYWtlJzsKKworY29uc3QgY29udGV4dCA9IGRlc2NyaWJlOworCitk ZXNjcmliZSgnI2NhbkNyZWF0ZScsICgpID0+IHsKKyAgbGV0IG91ckJyb3dzZXI7CisgIGxldCBk YXRhOworICBsZXQgdHJlZTsKKworICBjb250ZXh0KCdkYXRhIGlzIG5vdCBudWxsIGFuZCBjaGVj ayBpcyBmYWxzZSAnLCAoKSA9PiB7CisgICAgYmVmb3JlRWFjaCgoKSA9PiB7CisgICAgICBkYXRh ID0ge2FjdGlvbjogJ2NyZWF0ZScsIGNoZWNrOiBmYWxzZX07CisgICAgfSk7CisgICAgaXQoJ3Jl dHVybnMgdHJ1ZScsICgpID0+IHsKKyAgICAgIGV4cGVjdChjYW5DcmVhdGUoe30sIHt9LCB7fSwg ZGF0YSkpLnRvQmUodHJ1ZSk7CisgICAgfSk7CisgIH0pOworCisgIGNvbnRleHQoJ2RhdGEgaXMg bm90IG51bGwgYW5kIGNoZWNrIGlzIHRydWUnLCAoKSA9PiB7CisgICAgYmVmb3JlRWFjaCgoKSA9 PiB7CisgICAgICBkYXRhID0ge2FjdGlvbjogJ2NyZWF0ZScsIGNoZWNrOiB0cnVlfTsKKyAgICB9 KTsKKworICAgIGNvbnRleHQoJ2lzIG5vZGUgd2l0aCB0eXBlIHNjaGVtYScsICgpID0+IHsKKyAg ICAgIGJlZm9yZUVhY2goKCkgPT4geworICAgICAgICBsZXQgaGllcmFyY2h5ID0geworICAgICAg ICAgIGlkOiAncm9vdCcsCisgICAgICAgICAgY2hpbGRyZW46IFsKKyAgICAgICAgICAgIHsKKyAg ICAgICAgICAgICAgaWQ6ICdsZXZlbDInLAorICAgICAgICAgICAgICBkYXRhOiB7X3R5cGU6ICdz Y2hlbWEnfSwKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgXSwKKyAgICAgICAgfTsKKworICAg ICAgICB0cmVlID0gVHJlZUZha2UuYnVpbGQoaGllcmFyY2h5KTsKKyAgICAgICAgb3VyQnJvd3Nl ciA9IHt0cmVlTWVudTogdHJlZX07CisgICAgICB9KTsKKworICAgICAgaXQoJ3JldHVybnMgdHJ1 ZScsICgpID0+IHsKKyAgICAgICAgZXhwZWN0KGNhbkNyZWF0ZShvdXJCcm93c2VyLCAnY29sbC10 YWJsZScsIFt7aWQ6ICdsZXZlbDInfV0sIGRhdGEpKS50b0JlKHRydWUpOworICAgICAgfSk7Cisg ICAgfSk7CisKKyAgICBjb250ZXh0KCdoYXMgYW5jZXN0b3Igd2l0aCB0eXBlIHNjaGVtYScsICgp ID0+IHsKKyAgICAgIGJlZm9yZUVhY2goKCkgPT4geworCisgICAgICAgIGxldCBoaWVyYXJjaHkg PSB7CisgICAgICAgICAgaWQ6ICdyb290JywKKyAgICAgICAgICBjaGlsZHJlbjogWworICAgICAg ICAgICAgeworICAgICAgICAgICAgICBpZDogJ2xldmVsMicsCisgICAgICAgICAgICAgIGRhdGE6 IHtfdHlwZTogJ3NjaGVtYSd9LAorICAgICAgICAgICAgICBjaGlsZHJlbjogWworICAgICAgICAg ICAgICAgIHsKKyAgICAgICAgICAgICAgICAgIGlkOiAnbGV2ZWwzJywKKyAgICAgICAgICAgICAg ICAgIGRhdGE6IHtfdHlwZTogJ2RhdGFiYXNlJ30sCisgICAgICAgICAgICAgICAgfSwKKyAgICAg ICAgICAgICAgXSwKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgXSwKKyAgICAgICAgfTsKKwor ICAgICAgICB0cmVlID0gVHJlZUZha2UuYnVpbGQoaGllcmFyY2h5KTsKKyAgICAgICAgb3VyQnJv d3NlciA9IHt0cmVlTWVudTogdHJlZX07CisgICAgICB9KTsKKworICAgICAgaXQoJ3JldHVybnMg dHJ1ZScsICgpID0+IHsKKyAgICAgICAgZXhwZWN0KGNhbkNyZWF0ZShvdXJCcm93c2VyLCAnY29s bC10YWJsZScsIFt7aWQ6ICdsZXZlbDMnfV0sIGRhdGEpKS50b0JlKHRydWUpOworICAgICAgfSk7 CisgICAgfSk7CisKKyAgICBjb250ZXh0KCd3aGVuIHR5cGUgaXMgbm90ICJjb2xsLXRhYmxlIics ICgpID0+IHsKKyAgICAgIGJlZm9yZUVhY2goKCkgPT4geworICAgICAgICBsZXQgaGllcmFyY2h5 ID0geworICAgICAgICAgIGlkOiAncm9vdCcsCisgICAgICAgICAgY2hpbGRyZW46IFsKKyAgICAg ICAgICAgIHsKKyAgICAgICAgICAgICAgaWQ6ICdsZXZlbDInLAorICAgICAgICAgICAgICBkYXRh OiB7X3R5cGU6ICdkYXRhYmFzZSd9LAorICAgICAgICAgICAgfSwKKyAgICAgICAgICBdLAorICAg ICAgICB9OworCisgICAgICAgIHRyZWUgPSBUcmVlRmFrZS5idWlsZChoaWVyYXJjaHkpOworICAg ICAgICBvdXJCcm93c2VyID0ge3RyZWVNZW51OiB0cmVlfTsKKyAgICAgIH0pOworCisgICAgICBp dCgncmV0dXJucyB0cnVlJywgKCkgPT4geworICAgICAgICBleHBlY3QoY2FuQ3JlYXRlKG91ckJy b3dzZXIsICdjb2xsLXRhYmxlJywgW3tpZDogJ2xldmVsMid9XSwgZGF0YSkpLnRvQmUodHJ1ZSk7 CisgICAgICB9KTsKKyAgICB9KTsKKworICAgIGNvbnRleHQoJ3doZW4gdHlwZSBpcyAiY29sbC10 YWJsZSInLCAoKSA9PiB7CisgICAgICBjb250ZXh0KCd3aGVuIHBhcmVudCB0eXBlIGlzICJjYXRh bG9nIicsICgpID0+IHsKKyAgICAgICAgYmVmb3JlRWFjaCgoKSA9PiB7CisgICAgICAgICAgbGV0 IGhpZXJhcmNoeSA9IHsKKyAgICAgICAgICAgIGlkOiAncm9vdCcsCisgICAgICAgICAgICBjaGls ZHJlbjogWworICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgaWQ6ICdsZXZlbDInLAor ICAgICAgICAgICAgICAgIGRhdGE6IHtfdHlwZTogJ2NhdGFsb2cnfSwKKyAgICAgICAgICAgICAg ICBjaGlsZHJlbjogWworICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBp ZDogJ2xldmVsMycsCisgICAgICAgICAgICAgICAgICAgIGRhdGE6IHtfdHlwZTogJ2NvbGwtdGFi bGUnfSwKKyAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgXSwKKyAgICAgICAg ICAgICAgfSwKKyAgICAgICAgICAgIF0sCisgICAgICAgICAgfTsKKworICAgICAgICAgIHRyZWUg PSBUcmVlRmFrZS5idWlsZChoaWVyYXJjaHkpOworICAgICAgICAgIG91ckJyb3dzZXIgPSB7dHJl ZU1lbnU6IHRyZWV9OworICAgICAgICB9KTsKKworICAgICAgICBpdCgncmV0dXJucyBmYWxzZScs ICgpID0+IHsKKyAgICAgICAgICBleHBlY3QoY2FuQ3JlYXRlKG91ckJyb3dzZXIsICdjb2xsLXRh YmxlJywgW3tpZDogJ2xldmVsMyd9XSwgZGF0YSkpLnRvQmUoZmFsc2UpOworICAgICAgICB9KTsK KyAgICAgIH0pOworCisgICAgICBjb250ZXh0KCd3aGVuIHBhcmVudCB0eXBlIGlzIG5vdCAiY2F0 YWxvZyInLCAoKSA9PiB7CisgICAgICAgIGJlZm9yZUVhY2goKCkgPT4geworICAgICAgICAgIGxl dCBoaWVyYXJjaHkgPSB7CisgICAgICAgICAgICBpZDogJ3Jvb3QnLAorICAgICAgICAgICAgY2hp bGRyZW46IFsKKyAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGlkOiAnbGV2ZWwyJywK KyAgICAgICAgICAgICAgICBkYXRhOiB7X3R5cGU6ICdkYXRhYmFzZSd9LAorICAgICAgICAgICAg ICAgIGNoaWxkcmVuOiBbCisgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAg IGlkOiAnbGV2ZWwzJywKKyAgICAgICAgICAgICAgICAgICAgZGF0YToge190eXBlOiAnY29sbC10 YWJsZSd9LAorICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICBdLAorICAgICAg ICAgICAgICB9LAorICAgICAgICAgICAgXSwKKyAgICAgICAgICB9OworCisgICAgICAgICAgdHJl ZSA9IFRyZWVGYWtlLmJ1aWxkKGhpZXJhcmNoeSk7CisgICAgICAgICAgb3VyQnJvd3NlciA9IHt0 cmVlTWVudTogdHJlZX07CisgICAgICAgIH0pOworCisgICAgICAgIGl0KCdyZXR1cm5zIGZhbHNl JywgKCkgPT4geworICAgICAgICAgIGV4cGVjdChjYW5DcmVhdGUob3VyQnJvd3NlciwgJ2NvbGwt dGFibGUnLCBbe2lkOiAnbGV2ZWwzJ31dLCBkYXRhKSkudG9CZSh0cnVlKTsKKyAgICAgICAgfSk7 CisgICAgICB9KTsKKyAgICB9KTsKKyAgfSk7Cit9KTsKZGlmZiAtLWdpdCBhL3dlYi9yZWdyZXNz aW9uL2phdmFzY3JpcHQvbWVudS9tZW51X2VuYWJsZWRfc3BlYy5qcyBiL3dlYi9yZWdyZXNzaW9u L2phdmFzY3JpcHQvbWVudS9tZW51X2VuYWJsZWRfc3BlYy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwMC4uMDY5NjdkNzcKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcmVncmVz c2lvbi9qYXZhc2NyaXB0L21lbnUvbWVudV9lbmFibGVkX3NwZWMuanMKQEAgLTAsMCArMSwxMzEg QEAKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8KKy8vCisvLyBwZ0FkbWluIDQgLSBQb3N0Z3JlU1FMIFRvb2xzCisvLworLy8gQ29w eXJpZ2h0IChDKSAyMDEzIC0gMjAxOCwgVGhlIHBnQWRtaW4gRGV2ZWxvcG1lbnQgVGVhbQorLy8g VGhpcyBzb2Z0d2FyZSBpcyByZWxlYXNlZCB1bmRlciB0aGUgUG9zdGdyZVNRTCBMaWNlbmNlCisv LworLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8KK2ltcG9ydCB7VHJlZUZha2V9IGZyb20gJy4uL3RyZWUvdHJlZV9mYWtlJzsKK2lt cG9ydCB7bWVudUVuYWJsZWR9IGZyb20gJy4uLy4uLy4uL3BnYWRtaW4vc3RhdGljL2pzL21lbnUv bWVudV9lbmFibGVkJzsKKworY29uc3QgY29udGV4dCA9IGRlc2NyaWJlOworZGVzY3JpYmUoJyNt ZW51RW5hYmxlZCcsICgpID0+IHsKKyAgbGV0IG91ckJyb3dzZXI7CisgIGJlZm9yZUVhY2goKCkg PT4geworICAgIGNvbnN0IHRyZWUgPSBuZXcgVHJlZUZha2UoKTsKKyAgICBvdXJCcm93c2VyID0g eworICAgICAgdHJlZU1lbnU6IHRyZWUsCisgICAgfTsKKyAgICB0cmVlLmFkZE5ld05vZGUoJ2xl dmVsMScsIHt9LCB1bmRlZmluZWQsIFtdKTsKKyAgICB0cmVlLmFkZE5ld05vZGUoJ2xldmVsMS4x Jywge190eXBlOiAnY2F0YWxvZyd9LCB1bmRlZmluZWQsIFsnbGV2ZWwxJ10pOworICAgIHRyZWUu YWRkTmV3Tm9kZSgnbGV2ZWwxLjEuMScsIHtfdHlwZTogJ2RhdGFiYXNlJ30sIHVuZGVmaW5lZCwg WydsZXZlbDEnLCAnbGV2ZWwxLjEnXSk7CisgICAgdHJlZS5hZGROZXdOb2RlKCdsZXZlbDEuMics IHtfdHlwZTogJ2JhbW0nfSwgdW5kZWZpbmVkLCBbJ2xldmVsMSddKTsKKyAgICB0cmVlLmFkZE5l d05vZGUoJ2xldmVsMS4yLjEnLCB7CisgICAgICBfdHlwZTogJ2RhdGFiYXNlJywKKyAgICAgIGFs bG93Q29ubjogdHJ1ZSwKKyAgICB9LCB1bmRlZmluZWQsIFsnbGV2ZWwxJywgJ2xldmVsMS4yJ10p OworICAgIHRyZWUuYWRkTmV3Tm9kZSgnbGV2ZWwxLjIuMicsIHsKKyAgICAgIF90eXBlOiAnZGF0 YWJhc2UnLAorICAgICAgYWxsb3dDb25uOiBmYWxzZSwKKyAgICB9LCB1bmRlZmluZWQsIFsnbGV2 ZWwxJywgJ2xldmVsMS4yJ10pOworICAgIHRyZWUuYWRkTmV3Tm9kZSgnbGV2ZWwxLjIuMycsIHsK KyAgICAgIF90eXBlOiAndGFibGUnLAorICAgIH0sIHVuZGVmaW5lZCwgWydsZXZlbDEnLCAnbGV2 ZWwxLjInXSk7CisKKyAgICB0cmVlLmFkZE5ld05vZGUoJ2xldmVsMicsIHt9LCB1bmRlZmluZWQs IFtdKTsKKyAgICB0cmVlLmFkZE5ld05vZGUoJ2xldmVsMi4xJywgbnVsbCwgdW5kZWZpbmVkLCBb J2xldmVsMiddKTsKKyAgICB0cmVlLmFkZE5ld05vZGUoJ2xldmVsMi4xLjEnLCB7fSwgdW5kZWZp bmVkLCBbJ2xldmVsMicsICdsZXZlbDIuMSddKTsKKyAgfSk7CisKKyAgY29udGV4dCgnV2hlbiB0 aGUgY3VycmVudCBub2RlIGlzIGEgcm9vdCBub2RlJywgKCkgPT4geworICAgIGl0KCdyZXR1cm4g ZmFsc2UnLCAoKSA9PiB7CisgICAgICBleHBlY3QobWVudUVuYWJsZWQob3VyQnJvd3Nlci50cmVl TWVudSwgW10sIHt9LCBbe2lkOiAnbGV2ZWwxJ31dKSkudG9CZShmYWxzZSk7CisgICAgfSk7Cisg IH0pOworCisgIGNvbnRleHQoJ3doZW4gY3VycmVudCBub2RlIGRvZXMgbm90IGV4aXN0JywgKCkg PT4geworICAgIGl0KCdyZXR1cm4gZmFsc2UnLCAoKSA9PiB7CisgICAgICBleHBlY3QobWVudUVu YWJsZWQob3VyQnJvd3Nlci50cmVlTWVudSwgW10sIHt9LCBbe2lkOiAnYmFtbSd9XSkpLnRvQmUo ZmFsc2UpOworICAgIH0pOworICB9KTsKKworICBjb250ZXh0KCdwcm92aWRlZCBub2RlIGRhdGEg aXMgdW5kZWZpbmVkJywgKCkgPT4geworICAgIGl0KCdyZXR1cm5zIGZhbHNlJywgKCkgPT4gewor ICAgICAgZXhwZWN0KG1lbnVFbmFibGVkKG91ckJyb3dzZXIudHJlZU1lbnUsIFtdLCB1bmRlZmlu ZWQsIFt7aWQ6ICdsZXZlbDEnfV0pKS50b0JlKGZhbHNlKTsKKyAgICB9KTsKKyAgfSk7CisKKyAg Y29udGV4dCgncHJvdmlkZWQgbm9kZSBkYXRhIGlzIG51bGwnLCAoKSA9PiB7CisgICAgaXQoJ3Jl dHVybnMgZmFsc2UnLCAoKSA9PiB7CisgICAgICBleHBlY3QobWVudUVuYWJsZWQob3VyQnJvd3Nl ci50cmVlTWVudSwgW10sIG51bGwsIFt7aWQ6ICdsZXZlbDEnfV0pKS50b0JlKGZhbHNlKTsKKyAg ICB9KTsKKyAgfSk7CisKKyAgY29udGV4dCgnV2hlbiB0aGUgY3VycmVudCBub2RlIGlzIG5vdCBh IHJvb3Qgbm9kZScsICgpID0+IHsKKyAgICBjb250ZXh0KCdwYXJlbnQgZGF0YSBkb2VzIG5vdCBl eGlzdCcsICgpID0+IHsKKyAgICAgIGl0KCdyZXR1cm5zIGZhbHNlJywgKCkgPT4geworICAgICAg ICBleHBlY3QobWVudUVuYWJsZWQob3VyQnJvd3Nlci50cmVlTWVudSwgW10sIHt9LCBbe2lkOiAn bGV2ZWwyLjEuMSd9XSkpLnRvQmUoZmFsc2UpOworICAgICAgfSk7CisgICAgfSk7CisKKyAgICBj b250ZXh0KCdwYXJlbnQgYXMgZGF0YScsICgpID0+IHsKKyAgICAgIGNvbnRleHQoJ3RoZSBjdXJy ZW50IG5vZGUgdHlwZSBpcyBpbiB0aGUgc3VwcG9ydGVkIG5vZGUgdHlwZXMnLCAoKSA9PiB7Cisg ICAgICAgIGNvbnRleHQoJ3RoZSBwYXJlbnQgaXMgb2YgdGhlIHR5cGUgY2F0YWxvZycsICgpID0+ IHsKKyAgICAgICAgICBpdCgncmV0dXJucyBmYWxzZScsICgpID0+IHsKKyAgICAgICAgICAgIGV4 cGVjdChtZW51RW5hYmxlZChvdXJCcm93c2VyLnRyZWVNZW51LAorICAgICAgICAgICAgICBbJ3Nj aGVtYSddLAorICAgICAgICAgICAgICB7X3R5cGU6ICdzY2hlbWEnfSwKKyAgICAgICAgICAgICAg W3tpZDogJ2xldmVsMS4xLjEnfV0KKyAgICAgICAgICAgICkpLnRvQmUoZmFsc2UpOworICAgICAg ICAgIH0pOworICAgICAgICB9KTsKKyAgICAgICAgY29udGV4dCgnYW4gYW5jZXN0b3Igd2l0aCB0 eXBlIGNhdGFsb2cgZXhpc3RzJywgKCkgPT4geworICAgICAgICAgIGl0KCdyZXR1cm5zIGZhbHNl JywgKCkgPT4geworICAgICAgICAgICAgZXhwZWN0KG1lbnVFbmFibGVkKG91ckJyb3dzZXIudHJl ZU1lbnUsCisgICAgICAgICAgICAgIFsndGFibGUnXSwKKyAgICAgICAgICAgICAge190eXBlOiAn dGFibGUnfSwKKyAgICAgICAgICAgICAgW3tpZDogJ2xldmVsMS4xLjEuMSd9XQorICAgICAgICAg ICAgKSkudG9CZShmYWxzZSk7CisgICAgICAgICAgfSk7CisgICAgICAgIH0pOworICAgICAgICBj b250ZXh0KCd0aGUgcGFyZW50IGlzIG5vdCBvZiB0aGUgdHlwZSBjYXRhbG9nJywgKCkgPT4gewor ICAgICAgICAgIGNvbnRleHQoJ2N1cnJlbnQgbm9kZSBpcyBvZiB0aGUgdHlwZSBkYXRhYmFzZScs ICgpID0+IHsKKyAgICAgICAgICAgIGNvbnRleHQoJ2N1cnJlbnQgbm9kZSBhbGxvd3MgY29ubmVj dGlvbicsICgpID0+IHsKKyAgICAgICAgICAgICAgaXQoJ3JldHVybnMgdHJ1ZScsICgpID0+IHsK KyAgICAgICAgICAgICAgICBleHBlY3QobWVudUVuYWJsZWQob3VyQnJvd3Nlci50cmVlTWVudSwK KyAgICAgICAgICAgICAgICAgICAgWydkYXRhYmFzZSddLAorICAgICAgICAgICAgICAgICAgewor ICAgICAgICAgICAgICAgICAgICBfdHlwZTogJ2RhdGFiYXNlJywKKyAgICAgICAgICAgICAgICAg ICAgYWxsb3dDb25uOiB0cnVlLAorICAgICAgICAgICAgICAgICAgfSwgW3tpZDogJ2xldmVsMS4y LjEnfV0pKS50b0JlKHRydWUpOworICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIH0pOwor ICAgICAgICAgICAgY29udGV4dCgnY3VycmVudCBub2RlIGRvIG5vdCBhbGxvdyBjb25uZWN0aW9u JywgKCkgPT4geworICAgICAgICAgICAgICBpdCgncmV0dXJucyBmYWxzZScsICgpID0+IHsKKyAg ICAgICAgICAgICAgICBleHBlY3QobWVudUVuYWJsZWQob3VyQnJvd3Nlci50cmVlTWVudSwKKyAg ICAgICAgICAgICAgICAgICAgWydkYXRhYmFzZSddLCB7CisgICAgICAgICAgICAgICAgICAgICAg X3R5cGU6ICdkYXRhYmFzZScsCisgICAgICAgICAgICAgICAgICAgICAgYWxsb3dDb25uOiBmYWxz ZSwKKyAgICAgICAgICAgICAgICAgICAgfSwgW3tpZDogJ2xldmVsMS4yLjInfV0pKS50b0JlKGZh bHNlKTsKKyAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgICB9KTsK KyAgICAgICAgICBjb250ZXh0KCdjdXJyZW50IG5vZGUgaXMgbm90IG9mIHRoZSB0eXBlIGRhdGFi YXNlJywgKCkgPT4geworICAgICAgICAgICAgaXQoJ3JldHVybnMgdHJ1ZScsICgpID0+IHsKKyAg ICAgICAgICAgICAgZXhwZWN0KG1lbnVFbmFibGVkKG91ckJyb3dzZXIudHJlZU1lbnUsCisgICAg ICAgICAgICAgICAgICBbJ3NjaGVtYSddLCB7CisgICAgICAgICAgICAgICAgICAgIF90eXBlOiAn c2NoZW1hJywKKyAgICAgICAgICAgICAgICAgIH0sIFt7aWQ6ICdsZXZlbDEuMi4zJ31dKSkudG9C ZSh0cnVlKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICAgIH0pOworICAgICAgICB9KTsKKyAg ICAgIH0pOworICAgICAgY29udGV4dCgndGhlIGN1cnJlbnQgbm9kZSB0eXBlIGlzIG5vdCBpbiB0 aGUgc3VwcG9ydGVkIG5vZGUgdHlwZXMnLCAoKSA9PiB7CisgICAgICAgIGl0KCdyZXR1cm5zIGZh bHNlJywgKCkgPT4geworICAgICAgICAgIGV4cGVjdChtZW51RW5hYmxlZChvdXJCcm93c2VyLnRy ZWVNZW51LCBbXSwge190eXBlOiAnY2F0YWxvZyd9LCBbe2lkOiAnbGV2ZWwxLjEnfV0pKS50b0Jl KGZhbHNlKTsKKyAgICAgICAgfSk7CisgICAgICB9KTsKKyAgICB9KTsKKyAgfSk7Cit9KTsKZGlm ZiAtLWdpdCBhL3dlYi9yZWdyZXNzaW9uL2phdmFzY3JpcHQvcmVzdG9yZS9yZXN0b3JlX2RpYWxv Z19zcGVjLmpzIGIvd2ViL3JlZ3Jlc3Npb24vamF2YXNjcmlwdC9yZXN0b3JlL3Jlc3RvcmVfZGlh bG9nX3NwZWMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAuLmMxMzM1ZWVi Ci0tLSAvZGV2L251bGwKKysrIGIvd2ViL3JlZ3Jlc3Npb24vamF2YXNjcmlwdC9yZXN0b3JlL3Jl c3RvcmVfZGlhbG9nX3NwZWMuanMKQEAgLTAsMCArMSwxODEgQEAKKy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKy8vCisvLyBwZ0Fk bWluIDQgLSBQb3N0Z3JlU1FMIFRvb2xzCisvLworLy8gQ29weXJpZ2h0IChDKSAyMDEzIC0gMjAx OCwgVGhlIHBnQWRtaW4gRGV2ZWxvcG1lbnQgVGVhbQorLy8gVGhpcyBzb2Z0d2FyZSBpcyByZWxl YXNlZCB1bmRlciB0aGUgUG9zdGdyZVNRTCBMaWNlbmNlCisvLworLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KK2ltcG9ydCB7VHJl ZUZha2V9IGZyb20gJy4uL3RyZWUvdHJlZV9mYWtlJzsKK2ltcG9ydCB7CisgIFJlc3RvcmVEaWFs b2csCit9IGZyb20gJy4uLy4uLy4uL3BnYWRtaW4vdG9vbHMvcmVzdG9yZS9zdGF0aWMvanMvcmVz dG9yZV9kaWFsb2cnOworaW1wb3J0IHtUcmVlTm9kZX0gZnJvbSAnLi4vLi4vLi4vcGdhZG1pbi9z dGF0aWMvanMvdHJlZS90cmVlJzsKKworY29uc3QgY29udGV4dCA9IGRlc2NyaWJlOworCitkZXNj cmliZSgnUmVzdG9yZURpYWxvZycsICgpID0+IHsKKyAgbGV0IHJlc3RvcmVEaWFsb2c7CisgIGxl dCBwZ0Jyb3dzZXI7CisgIGxldCBqcXVlcnlTcHk7CisgIGxldCBhbGVydGlmeVNweTsKKyAgbGV0 IHJlc3RvcmVNb2RlbFNweTsKKworCisgIGxldCByb290Tm9kZTsKKyAgbGV0IHNlcnZlclRyZWVO b2RlOworICBsZXQgZGF0YWJhc2VUcmVlTm9kZTsKKyAgbGV0IHBwYXNTZXJ2ZXJUcmVlTm9kZTsK KyAgbGV0IG5vRGF0YU5vZGU7CisKKyAgYmVmb3JlRWFjaCgoKSA9PiB7CisgICAgcGdCcm93c2Vy ID0geworICAgICAgdHJlZU1lbnU6IG5ldyBUcmVlRmFrZSgpLAorICAgICAgTm9kZXM6IHsKKyAg ICAgICAgc2VydmVyOiBqYXNtaW5lLmNyZWF0ZVNweU9iaignTm9kZVtzZXJ2ZXJdJywgWydnZXRU cmVlTm9kZUhpZXJhcmNoeSddKSwKKyAgICAgICAgZGF0YWJhc2U6IGphc21pbmUuY3JlYXRlU3B5 T2JqKCdOb2RlW2RhdGFiYXNlXScsIFsnZ2V0VHJlZU5vZGVIaWVyYXJjaHknXSksCisgICAgICB9 LAorICAgIH07CisgICAgcGdCcm93c2VyLk5vZGVzLnNlcnZlci5oYXNJZCA9IHRydWU7CisgICAg cGdCcm93c2VyLk5vZGVzLmRhdGFiYXNlLmhhc0lkID0gdHJ1ZTsKKyAgICBqcXVlcnlTcHkgPSBq YXNtaW5lLmNyZWF0ZVNweSgnanF1ZXJ5U3B5Jyk7CisgICAgcmVzdG9yZU1vZGVsU3B5ID0gamFz bWluZS5jcmVhdGVTcHkoJ3Jlc3RvcmVNb2RlbFNweScpOworCisgICAgcm9vdE5vZGUgPSBwZ0Jy b3dzZXIudHJlZU1lbnUuYWRkTmV3Tm9kZSgnbGV2ZWwxJywge30sIFt7aWQ6ICdsZXZlbDEnfV0s IFtdKTsKKyAgICBzZXJ2ZXJUcmVlTm9kZSA9IG5ldyBUcmVlTm9kZSgnbGV2ZWwxLjEnLCB7Cisg ICAgICBfdHlwZTogJ3NlcnZlcicsCisgICAgICBfaWQ6IDEwLAorICAgICAgbGFiZWw6ICdzb21l LXRyZWUtbGFiZWwnLAorICAgIH0sIFt7aWQ6ICdsZXZlbDEuMSd9XSk7CisgICAgcGdCcm93c2Vy LnRyZWVNZW51LmFkZENoaWxkKHJvb3ROb2RlLCBzZXJ2ZXJUcmVlTm9kZSk7CisKKyAgICBkYXRh YmFzZVRyZWVOb2RlID0gbmV3IFRyZWVOb2RlKCdsZXZlbDEuMS4xJywgeworICAgICAgX3R5cGU6 ICdkYXRhYmFzZScsCisgICAgICBfaWQ6IDEwLAorICAgICAgX2xhYmVsOiAnc29tZS1kYXRhYmFz ZS1sYWJlbCcsCisgICAgfSwgW3tpZDogJ2xldmVsMS4xLjEnfV0sIFsnbGV2ZWwxJywgJ2xldmVs MS4xJ10pOworICAgIHBnQnJvd3Nlci50cmVlTWVudS5hZGRDaGlsZChzZXJ2ZXJUcmVlTm9kZSwg ZGF0YWJhc2VUcmVlTm9kZSk7CisKKyAgICBwcGFzU2VydmVyVHJlZU5vZGUgPSBuZXcgVHJlZU5v ZGUoJ2xldmVsMS4yJywgeworICAgICAgX3R5cGU6ICdzZXJ2ZXInLAorICAgICAgc2VydmVyX3R5 cGU6ICdwcGFzJywKKyAgICB9LCBbe2lkOiAnbGV2ZWwxLjInfV0sIFsnbGV2ZWwxJ10pOworICAg IHBnQnJvd3Nlci50cmVlTWVudS5hZGRDaGlsZChyb290Tm9kZSwgcHBhc1NlcnZlclRyZWVOb2Rl KTsKKworICAgIGNvbnN0IGxldmVsMyA9IG5ldyBUcmVlTm9kZSgnbGV2ZWwzJywge30sIFt7aWQ6 ICdsZXZlbDMnfV0pOworICAgIHBnQnJvd3Nlci50cmVlTWVudS5hZGRDaGlsZChwcGFzU2VydmVy VHJlZU5vZGUsIGxldmVsMyk7CisKKyAgICBub0RhdGFOb2RlID0gcGdCcm93c2VyLnRyZWVNZW51 LmFkZE5ld05vZGUoJ2xldmVsMy4xJywgdW5kZWZpbmVkLCBbe2lkOiAnbGV2ZWwxJ31dKTsKKyAg ICBwZ0Jyb3dzZXIudHJlZU1lbnUuYWRkQ2hpbGQobGV2ZWwzLCBub0RhdGFOb2RlKTsKKworICB9 KTsKKworICBkZXNjcmliZSgnI2RyYXcnLCAoKSA9PiB7CisgICAgYmVmb3JlRWFjaCgoKSA9PiB7 CisgICAgICBhbGVydGlmeVNweSA9IGphc21pbmUuY3JlYXRlU3B5T2JqKCdhbGVydGlmeScsIFsn YWxlcnQnLCAnZGlhbG9nJ10pOworICAgICAgYWxlcnRpZnlTcHlbJ3BnX3Jlc3RvcmUnXSA9IGph c21pbmUuY3JlYXRlU3B5KCdwZ19yZXN0b3JlJyk7CisgICAgICByZXN0b3JlRGlhbG9nID0gbmV3 IFJlc3RvcmVEaWFsb2coCisgICAgICAgIHBnQnJvd3NlciwKKyAgICAgICAganF1ZXJ5U3B5LAor ICAgICAgICBhbGVydGlmeVNweSwKKyAgICAgICAgcmVzdG9yZU1vZGVsU3B5CisgICAgICApOwor CisgICAgICBwZ0Jyb3dzZXIuZ2V0X3ByZWZlcmVuY2UgPSBqYXNtaW5lLmNyZWF0ZVNweSgnZ2V0 X3ByZWZlcmVuY2VzJyk7CisgICAgfSk7CisKKyAgICBjb250ZXh0KCd0aGVyZSBhcmUgbm8gYW5j ZXN0b3JzIG9mIHRoZSB0eXBlIHNlcnZlcicsICgpID0+IHsKKyAgICAgIGl0KCdkb2VzIG5vdCBj cmVhdGUgYSBkaWFsb2cnLCAoKSA9PiB7CisgICAgICAgIHBnQnJvd3Nlci50cmVlTWVudS5zZWxl Y3ROb2RlKFt7aWQ6ICdsZXZlbDEnfV0pOworICAgICAgICByZXN0b3JlRGlhbG9nLmRyYXcobnVs bCwgbnVsbCwgbnVsbCk7CisgICAgICAgIGV4cGVjdChhbGVydGlmeVNweVsncGdfcmVzdG9yZSdd KS5ub3QudG9IYXZlQmVlbkNhbGxlZCgpOworICAgICAgfSk7CisKKyAgICAgIGl0KCdkaXNwbGF5 IGFuIGFsZXJ0IHdpdGggYSBSZXN0b3JlIEVycm9yJywgKCkgPT4geworICAgICAgICByZXN0b3Jl RGlhbG9nLmRyYXcobnVsbCwgW3tpZDogJ2xldmVsMSd9XSwgbnVsbCk7CisgICAgICAgIGV4cGVj dChhbGVydGlmeVNweS5hbGVydCkudG9IYXZlQmVlbkNhbGxlZFdpdGgoCisgICAgICAgICAgJ1Jl c3RvcmUgRXJyb3InLAorICAgICAgICAgICdQbGVhc2Ugc2VsZWN0IHNlcnZlciBvciBjaGlsZCBu b2RlIGZyb20gdGhlIGJyb3dzZXIgdHJlZS4nCisgICAgICAgICk7CisgICAgICB9KTsKKyAgICB9 KTsKKworICAgIGNvbnRleHQoJ3RoZXJlIGlzIGFuIGFuY2VzdG9yIG9mIHRoZSB0eXBlIHNlcnZl cicsICgpID0+IHsKKyAgICAgIGNvbnRleHQoJ25vIHByZWZlcmVuY2UgY2FuIGJlIGZvdW5kJywg KCkgPT4geworICAgICAgICBiZWZvcmVFYWNoKCgpID0+IHsKKyAgICAgICAgICBwZ0Jyb3dzZXIu Z2V0X3ByZWZlcmVuY2UuYW5kLnJldHVyblZhbHVlKHVuZGVmaW5lZCk7CisgICAgICAgIH0pOwor CisgICAgICAgIGNvbnRleHQoJ3NlcnZlciBpcyBhIHBwYXMgc2VydmVyJywgKCkgPT4geworICAg ICAgICAgIGl0KCdkaXNwbGF5IGFuIGFsZXJ0IHdpdGggIlJlc3RvcmUgRXJyb3IiJywgKCkgPT4g eworICAgICAgICAgICAgcmVzdG9yZURpYWxvZy5kcmF3KG51bGwsIFtzZXJ2ZXJUcmVlTm9kZV0s IG51bGwpOworICAgICAgICAgICAgZXhwZWN0KGFsZXJ0aWZ5U3B5LmFsZXJ0KS50b0hhdmVCZWVu Q2FsbGVkV2l0aCgKKyAgICAgICAgICAgICAgJ1Jlc3RvcmUgRXJyb3InLAorICAgICAgICAgICAg ICAnRmFpbGVkIHRvIGxvYWQgcHJlZmVyZW5jZSBwZ19iaW5fZGlyIG9mIG1vZHVsZSBwYXRocycK KyAgICAgICAgICAgICk7CisgICAgICAgICAgfSk7CisgICAgICAgIH0pOworCisgICAgICAgIGNv bnRleHQoJ3NlcnZlciBpcyBub3QgYSBwcGFzIHNlcnZlcicsICgpID0+IHsKKyAgICAgICAgICBp dCgnZGlzcGxheSBhbiBhbGVydCB3aXRoICJSZXN0b3JlIEVycm9yIicsICgpID0+IHsKKyAgICAg ICAgICAgIHJlc3RvcmVEaWFsb2cuZHJhdyhudWxsLCBbcHBhc1NlcnZlclRyZWVOb2RlXSwgbnVs bCk7CisgICAgICAgICAgICBleHBlY3QoYWxlcnRpZnlTcHkuYWxlcnQpLnRvSGF2ZUJlZW5DYWxs ZWRXaXRoKAorICAgICAgICAgICAgICAnUmVzdG9yZSBFcnJvcicsCisgICAgICAgICAgICAgICdG YWlsZWQgdG8gbG9hZCBwcmVmZXJlbmNlIHBwYXNfYmluX2RpciBvZiBtb2R1bGUgcGF0aHMnCisg ICAgICAgICAgICApOworICAgICAgICAgIH0pOworICAgICAgICB9KTsKKyAgICAgIH0pOworCisg ICAgICBjb250ZXh0KCdwcmVmZXJlbmNlIGNhbiBiZSBmb3VuZCcsICgpID0+IHsKKyAgICAgICAg Y29udGV4dCgnYmluYXJ5IGZvbGRlciBpcyBub3QgY29uZmlndXJlZCcsICgpID0+IHsKKyAgICAg ICAgICBiZWZvcmVFYWNoKCgpID0+IHsKKyAgICAgICAgICAgIHBnQnJvd3Nlci5nZXRfcHJlZmVy ZW5jZS5hbmQucmV0dXJuVmFsdWUoe30pOworICAgICAgICAgIH0pOworCisgICAgICAgICAgY29u dGV4dCgnc2VydmVyIGlzIGEgcHBhcyBzZXJ2ZXInLCAoKSA9PiB7CisgICAgICAgICAgICBpdCgn ZGlzcGxheSBhbiBhbGVydCB3aXRoICJDb25maWd1cmF0aW9uIHJlcXVpcmVkIicsICgpID0+IHsK KyAgICAgICAgICAgICAgcmVzdG9yZURpYWxvZy5kcmF3KG51bGwsIFtzZXJ2ZXJUcmVlTm9kZV0s IG51bGwpOworICAgICAgICAgICAgICBleHBlY3QoYWxlcnRpZnlTcHkuYWxlcnQpLnRvSGF2ZUJl ZW5DYWxsZWRXaXRoKAorICAgICAgICAgICAgICAgICdDb25maWd1cmF0aW9uIHJlcXVpcmVkJywK KyAgICAgICAgICAgICAgICAnUGxlYXNlIGNvbmZpZ3VyZSB0aGUgUG9zdGdyZVNRTCBCaW5hcnkg UGF0aCBpbiB0aGUgUHJlZmVyZW5jZXMgZGlhbG9nLicKKyAgICAgICAgICAgICAgKTsKKyAgICAg ICAgICAgIH0pOworICAgICAgICAgIH0pOworCisgICAgICAgICAgY29udGV4dCgnc2VydmVyIGlz IG5vdCBhIHBwYXMgc2VydmVyJywgKCkgPT4geworICAgICAgICAgICAgaXQoJ2Rpc3BsYXkgYW4g YWxlcnQgd2l0aCAiQ29uZmlndXJhdGlvbiByZXF1aXJlZCInLCAoKSA9PiB7CisgICAgICAgICAg ICAgIHJlc3RvcmVEaWFsb2cuZHJhdyhudWxsLCBbcHBhc1NlcnZlclRyZWVOb2RlXSwgbnVsbCk7 CisgICAgICAgICAgICAgIGV4cGVjdChhbGVydGlmeVNweS5hbGVydCkudG9IYXZlQmVlbkNhbGxl ZFdpdGgoCisgICAgICAgICAgICAgICAgJ0NvbmZpZ3VyYXRpb24gcmVxdWlyZWQnLAorICAgICAg ICAgICAgICAgICdQbGVhc2UgY29uZmlndXJlIHRoZSBFREIgQWR2YW5jZWQgU2VydmVyIEJpbmFy eSBQYXRoIGluIHRoZSBQcmVmZXJlbmNlcyBkaWFsb2cuJworICAgICAgICAgICAgICApOworICAg ICAgICAgICAgfSk7CisgICAgICAgICAgfSk7CisgICAgICAgIH0pOworCisgICAgICAgIGNvbnRl eHQoJ2JpbmFyeSBmb2xkZXIgaXMgY29uZmlndXJlZCcsICgpID0+IHsKKyAgICAgICAgICBsZXQg c3B5OworICAgICAgICAgIGJlZm9yZUVhY2goKCkgPT4geworICAgICAgICAgICAgc3B5ID0gamFz bWluZS5jcmVhdGVTcHlPYmooJ2dsb2JhbHMnLCBbJ3Jlc2l6ZVRvJ10pOworICAgICAgICAgICAg YWxlcnRpZnlTcHlbJ3BnX3Jlc3RvcmUnXS5hbmQKKyAgICAgICAgICAgICAgLnJldHVyblZhbHVl KHNweSk7CisgICAgICAgICAgICBwZ0Jyb3dzZXIuZ2V0X3ByZWZlcmVuY2UuYW5kLnJldHVyblZh bHVlKHt2YWx1ZTogJy9zb21lL3BhdGgnfSk7CisgICAgICAgICAgICBwZ0Jyb3dzZXIuTm9kZXMu c2VydmVyLmxhYmVsID0gJ3NvbWUtc2VydmVyLWxhYmVsJzsKKyAgICAgICAgICB9KTsKKworICAg ICAgICAgIGl0KCdkaXNwbGF5cyB0aGUgZGlhbG9nJywgKCkgPT4geworICAgICAgICAgICAgcmVz dG9yZURpYWxvZy5kcmF3KG51bGwsIFt7aWQ6ICdsZXZlbDEuMSd9XSwge3NlcnZlcjogdHJ1ZX0p OworICAgICAgICAgICAgZXhwZWN0KGFsZXJ0aWZ5U3B5WydwZ19yZXN0b3JlJ10pLnRvSGF2ZUJl ZW5DYWxsZWRXaXRoKAorICAgICAgICAgICAgICAnUmVzdG9yZSAoc29tZS1zZXJ2ZXItbGFiZWw6 IHNvbWUtdHJlZS1sYWJlbCknLAorICAgICAgICAgICAgICBbe2lkOiAnbGV2ZWwxLjEnfV0sCisg ICAgICAgICAgICAgIHNlcnZlclRyZWVOb2RlLmdldERhdGEoKSwKKyAgICAgICAgICAgICAgcGdC cm93c2VyLk5vZGVzLnNlcnZlcgorICAgICAgICAgICAgKTsKKyAgICAgICAgICAgIGV4cGVjdChz cHkucmVzaXplVG8pLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKCc2NSUnLCAnNjAlJyk7CisgICAgICAg ICAgfSk7CisgICAgICAgIH0pOworICAgICAgfSk7CisgICAgfSk7CisgIH0pOworfSk7CmRpZmYg LS1naXQgYS93ZWIvcmVncmVzc2lvbi9qYXZhc2NyaXB0L3Jlc3RvcmUvcmVzdG9yZV9kaWFsb2df d3JhcHBlcl9zcGVjLmpzIGIvd2ViL3JlZ3Jlc3Npb24vamF2YXNjcmlwdC9yZXN0b3JlL3Jlc3Rv cmVfZGlhbG9nX3dyYXBwZXJfc3BlYy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw MDAwMC4uYzJhMzFkNTUKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcmVncmVzc2lvbi9qYXZhc2Ny aXB0L3Jlc3RvcmUvcmVzdG9yZV9kaWFsb2dfd3JhcHBlcl9zcGVjLmpzCkBAIC0wLDAgKzEsNTkz IEBACisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vCisvLworLy8gcGdBZG1pbiA0IC0gUG9zdGdyZVNRTCBUb29scworLy8KKy8vIENv cHlyaWdodCAoQykgMjAxMyAtIDIwMTgsIFRoZSBwZ0FkbWluIERldmVsb3BtZW50IFRlYW0KKy8v IFRoaXMgc29mdHdhcmUgaXMgcmVsZWFzZWQgdW5kZXIgdGhlIFBvc3RncmVTUUwgTGljZW5jZQor Ly8KKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vCitpbXBvcnQge1RyZWVGYWtlfSBmcm9tICcuLi90cmVlL3RyZWVfZmFrZSc7Citp bXBvcnQge1Jlc3RvcmVEaWFsb2dXcmFwcGVyfSBmcm9tICcuLi8uLi8uLi9wZ2FkbWluL3Rvb2xz L3Jlc3RvcmUvc3RhdGljL2pzL3Jlc3RvcmVfZGlhbG9nX3dyYXBwZXInOworaW1wb3J0IE1vY2tB ZGFwdGVyIGZyb20gJ2F4aW9zLW1vY2stYWRhcHRlcic7CitpbXBvcnQgYXhpb3MgZnJvbSAnYXhp b3MvaW5kZXgnOworaW1wb3J0IHtGYWtlTW9kZWx9IGZyb20gJy4uL2Zha2VfbW9kZWwnOworaW1w b3J0IHtUcmVlTm9kZX0gZnJvbSAnLi4vLi4vLi4vcGdhZG1pbi9zdGF0aWMvanMvdHJlZS90cmVl JzsKKworbGV0IGNvbnRleHQgPSBkZXNjcmliZTsKKworZGVzY3JpYmUoJ1Jlc3RvcmVEaWFsb2dX cmFwcGVyJywgKCkgPT4geworICBsZXQganF1ZXJ5U3B5OworICBsZXQgcGdCcm93c2VyOworICBs ZXQgYWxlcnRpZnlTcHk7CisgIGxldCBkaWFsb2dNb2RlbEtsYXNzU3B5OworICBsZXQgYmFja2Zv cm07CisgIGxldCBnZW5lcmF0ZWRSZXN0b3JlTW9kZWw7CisgIGxldCByZXN0b3JlRGlhbG9nV3Jh cHBlcjsKKyAgbGV0IG5vRGF0YU5vZGU7CisgIGxldCBzZXJ2ZXJUcmVlTm9kZTsKKyAgbGV0IHZp ZXdTY2hlbWE7CisgIGxldCByZXN0b3JlSlF1ZXJ5Q29udGFpbmVyU3B5OworICBsZXQgcmVzdG9y ZU5vZGVDaGlsZE5vZGVTcHk7CisgIGxldCByZXN0b3JlTm9kZTsKKworICBiZWZvcmVFYWNoKCgp ID0+IHsKKyAgICBwZ0Jyb3dzZXIgPSB7CisgICAgICB0cmVlTWVudTogbmV3IFRyZWVGYWtlKCks CisgICAgICBOb2RlczogeworICAgICAgICBzZXJ2ZXI6IHsKKyAgICAgICAgICBoYXNJZDogdHJ1 ZSwKKyAgICAgICAgICBnZXRUcmVlTm9kZUhpZXJhcmNoeTogamFzbWluZS5jcmVhdGVTcHkoJ2dl dFRyZWVOb2RlSGllcmFyY2h5JyksCisgICAgICAgIH0sCisgICAgICB9LAorICAgICAga2V5Ym9h cmROYXZpZ2F0aW9uOiBqYXNtaW5lLmNyZWF0ZVNweU9iaigna2V5Ym9hcmROYXZpZ2F0aW9uJywg WydnZXREaWFsb2dUYWJOYXZpZ2F0b3InXSksCisgICAgfTsKKworICAgIG5vRGF0YU5vZGUgPSBw Z0Jyb3dzZXIudHJlZU1lbnUuYWRkTmV3Tm9kZSgnbGV2ZWwxLjEnLCB1bmRlZmluZWQsIFt7aWQ6 ICdsZXZlbDEnfV0pOworICAgIHNlcnZlclRyZWVOb2RlID0gcGdCcm93c2VyLnRyZWVNZW51LmFk ZE5ld05vZGUoJ2xldmVsMi4xJywgeworICAgICAgX3R5cGU6ICdzZXJ2ZXInLAorICAgICAgX2lk OiAxMCwKKyAgICAgIGxhYmVsOiAnc29tZS10cmVlLWxhYmVsJywKKyAgICB9LCBbe2lkOiAnbGV2 ZWwyLjEnfV0pOworICAgIGpxdWVyeVNweSA9IGphc21pbmUuY3JlYXRlU3B5KCdqcXVlcnlTcHkn KTsKKyAgICBkaWFsb2dNb2RlbEtsYXNzU3B5ID0gamFzbWluZS5jcmVhdGVTcHkoJ2RpYWxvZ01v ZGVsS2xhc3MnKTsKKyAgICBnZW5lcmF0ZWRSZXN0b3JlTW9kZWwgPSB7fTsKKyAgICB2aWV3U2No ZW1hID0ge307CisgICAgYmFja2Zvcm0gPSBqYXNtaW5lLmNyZWF0ZVNweU9iaignYmFja2Zvcm0n LCBbJ2dlbmVyYXRlVmlld1NjaGVtYScsICdEaWFsb2cnXSk7CisgICAgYmFja2Zvcm0uZ2VuZXJh dGVWaWV3U2NoZW1hLmFuZC5yZXR1cm5WYWx1ZSh2aWV3U2NoZW1hKTsKKyAgICBkaWFsb2dNb2Rl bEtsYXNzU3B5LmFuZC5yZXR1cm5WYWx1ZShnZW5lcmF0ZWRSZXN0b3JlTW9kZWwpOworICAgIHJl c3RvcmVKUXVlcnlDb250YWluZXJTcHkgPSBqYXNtaW5lLmNyZWF0ZVNweU9iaigncmVzdG9yZUpR dWVyeUNvbnRhaW5lcicsIFsnZ2V0JywgJ2F0dHInXSk7CisgICAgcmVzdG9yZUpRdWVyeUNvbnRh aW5lclNweS5nZXQuYW5kLnJldHVyblZhbHVlKHJlc3RvcmVKUXVlcnlDb250YWluZXJTcHkpOwor CisgICAgcmVzdG9yZU5vZGUgPSB7CisgICAgICBfX2ludGVybmFsOiB7CisgICAgICAgIGJ1dHRv bnM6IFsKKyAgICAgICAgICB7fSwge30sCisgICAgICAgICAgeworICAgICAgICAgICAgZWxlbWVu dDogeworICAgICAgICAgICAgICBkaXNhYmxlZDogZmFsc2UsCisgICAgICAgICAgICB9LAorICAg ICAgICAgIH0sCisgICAgICAgIF0sCisgICAgICB9LAorICAgICAgZWxlbWVudHM6IHsKKyAgICAg ICAgYm9keTogeworICAgICAgICAgIGNoaWxkTm9kZXM6IFsKKyAgICAgICAgICAgIHt9LAorICAg ICAgICAgIF0sCisgICAgICAgIH0sCisgICAgICAgIGNvbnRlbnQ6IGphc21pbmUuY3JlYXRlU3B5 T2JqKCdjb250ZW50JywgWydhcHBlbmRDaGlsZCcsICdhdHRyJ10pLAorICAgICAgfSwKKyAgICB9 OworCisKKyAgICByZXN0b3JlTm9kZUNoaWxkTm9kZVNweSA9IGphc21pbmUuY3JlYXRlU3B5T2Jq KCdzb21ldGhpbmcnLCBbJ2FkZENsYXNzJ10pOworCisgICAganF1ZXJ5U3B5LmFuZC5jYWxsRmFr ZSgoc2VsZWN0b3IpID0+IHsKKyAgICAgIGlmIChzZWxlY3RvciA9PT0gJzxkaXYgY2xhc3M9XCdy ZXN0b3JlX2RpYWxvZ1wnPjwvZGl2PicpIHsKKyAgICAgICAgcmV0dXJuIHJlc3RvcmVKUXVlcnlD b250YWluZXJTcHk7CisgICAgICB9IGVsc2UgaWYgKHNlbGVjdG9yID09PSByZXN0b3JlTm9kZS5l bGVtZW50cy5ib2R5LmNoaWxkTm9kZXNbMF0pIHsKKyAgICAgICAgcmV0dXJuIHJlc3RvcmVOb2Rl Q2hpbGROb2RlU3B5OworICAgICAgfQorICAgIH0pOworICB9KTsKKworICBkZXNjcmliZSgnI3By ZXBhcmUnLCAoKSA9PiB7CisKKyAgICBiZWZvcmVFYWNoKCgpID0+IHsKKyAgICAgIGFsZXJ0aWZ5 U3B5ID0gamFzbWluZS5jcmVhdGVTcHlPYmooJ2FsZXJ0aWZ5JywgWydhbGVydCcsICdkaWFsb2cn XSk7CisgICAgICByZXN0b3JlRGlhbG9nV3JhcHBlciA9IG5ldyBSZXN0b3JlRGlhbG9nV3JhcHBl cigKKyAgICAgICAgJzxkaXYgY2xhc3M9XCdyZXN0b3JlX2RpYWxvZ1wnPjwvZGl2PicsCisgICAg ICAgICdyZXN0b3JlRGlhbG9nVGl0bGUnLAorICAgICAgICAncmVzdG9yZScsCisgICAgICAgIGpx dWVyeVNweSwKKyAgICAgICAgcGdCcm93c2VyLAorICAgICAgICBhbGVydGlmeVNweSwKKyAgICAg ICAgZGlhbG9nTW9kZWxLbGFzc1NweSwKKyAgICAgICAgYmFja2Zvcm0KKyAgICAgICk7CisgICAg ICByZXN0b3JlRGlhbG9nV3JhcHBlciA9IE9iamVjdC5hc3NpZ24ocmVzdG9yZURpYWxvZ1dyYXBw ZXIsIHJlc3RvcmVOb2RlKTsKKyAgICB9KTsKKyAgICBjb250ZXh0KCdubyB0cmVlIGVsZW1lbnQg aXMgc2VsZWN0ZWQnLCAoKSA9PiB7CisgICAgICBpdCgnZG9lcyBub3QgY3JlYXRlIGEgYmFja2Zv cm0gZGlhbG9nJywgKCkgPT4geworICAgICAgICByZXN0b3JlRGlhbG9nV3JhcHBlci5wcmVwYXJl KCk7CisgICAgICAgIGV4cGVjdChiYWNrZm9ybS5EaWFsb2cpLm5vdC50b0hhdmVCZWVuQ2FsbGVk KCk7CisgICAgICB9KTsKKworICAgICAgaXQoJ2Rpc2FibGVzIHRoZSBidXR0b24gInN1Ym1pdCBi dXR0b24iIHVudGlsIGEgZmlsZW5hbWUgaXMgc2VsZWN0ZWQnLCAoKSA9PiB7CisgICAgICAgIHJl c3RvcmVEaWFsb2dXcmFwcGVyLnByZXBhcmUoKTsKKyAgICAgICAgZXhwZWN0KHJlc3RvcmVEaWFs b2dXcmFwcGVyLl9faW50ZXJuYWwuYnV0dG9uc1syXS5lbGVtZW50LmRpc2FibGVkKS50b0JlKHRy dWUpOworICAgICAgfSk7CisgICAgfSk7CisKKyAgICBjb250ZXh0KCdzZWxlY3RlZCB0cmVlIG5v ZGUgaGFzIG5vIGRhdGEnLCAoKSA9PiB7CisgICAgICBiZWZvcmVFYWNoKCgpID0+IHsKKyAgICAg ICAgcGdCcm93c2VyLnRyZWVNZW51LnNlbGVjdE5vZGUobm9EYXRhTm9kZS5kb21Ob2RlKTsKKyAg ICAgIH0pOworCisgICAgICBpdCgnZG9lcyBub3QgY3JlYXRlIGEgYmFja2Zvcm0gZGlhbG9nJywg KCkgPT4geworICAgICAgICByZXN0b3JlRGlhbG9nV3JhcHBlci5wcmVwYXJlKCk7CisgICAgICAg IGV4cGVjdChiYWNrZm9ybS5EaWFsb2cpLm5vdC50b0hhdmVCZWVuQ2FsbGVkKCk7CisgICAgICB9 KTsKKworICAgICAgaXQoJ2Rpc2FibGVzIHRoZSBidXR0b24gInN1Ym1pdCBidXR0b24iIHVudGls IGEgZmlsZW5hbWUgaXMgc2VsZWN0ZWQnLCAoKSA9PiB7CisgICAgICAgIHJlc3RvcmVEaWFsb2dX cmFwcGVyLnByZXBhcmUoKTsKKyAgICAgICAgZXhwZWN0KHJlc3RvcmVEaWFsb2dXcmFwcGVyLl9f aW50ZXJuYWwuYnV0dG9uc1syXS5lbGVtZW50LmRpc2FibGVkKS50b0JlKHRydWUpOworICAgICAg fSk7CisgICAgfSk7CisKKyAgICBjb250ZXh0KCd0cmVlIGVsZW1lbnQgaXMgc2VsZWN0ZWQnLCAo KSA9PiB7CisgICAgICBsZXQgdHJlZUhpZXJhcmNoeUluZm9ybWF0aW9uOworICAgICAgbGV0IGRp YWxvZ1NweTsKKyAgICAgIGJlZm9yZUVhY2goKCkgPT4geworICAgICAgICB0cmVlSGllcmFyY2h5 SW5mb3JtYXRpb24gPSB7CisgICAgICAgICAgc2VydmVyOiB7CisgICAgICAgICAgICBfdHlwZTog J3NlcnZlcicsCisgICAgICAgICAgICBfaWQ6IDEwLAorICAgICAgICAgICAgcHJpb3JpdHk6IDAs CisgICAgICAgICAgICBsYWJlbDogJ3NvbWUtdHJlZS1sYWJlbCcsCisgICAgICAgICAgfSwKKyAg ICAgICAgfTsKKyAgICAgICAgcGdCcm93c2VyLnRyZWVNZW51LnNlbGVjdE5vZGUoc2VydmVyVHJl ZU5vZGUuZG9tTm9kZSk7CisgICAgICAgIHBnQnJvd3Nlci5Ob2Rlc1snc2VydmVyJ10uZ2V0VHJl ZU5vZGVIaWVyYXJjaHkuYW5kCisgICAgICAgICAgLnJldHVyblZhbHVlKHRyZWVIaWVyYXJjaHlJ bmZvcm1hdGlvbik7CisgICAgICAgIGRpYWxvZ1NweSA9IGphc21pbmUuY3JlYXRlU3B5T2JqKCdu ZXdWaWV3JywgWydyZW5kZXInXSk7CisgICAgICAgIGRpYWxvZ1NweS4kZWwgPSBqYXNtaW5lLmNy ZWF0ZVNweU9iaignJGVsJywgWydmaW5kJywgJ2F0dHInXSk7CisgICAgICAgIGRpYWxvZ1NweS5t b2RlbCA9IGphc21pbmUuY3JlYXRlU3B5T2JqKCdtb2RlbCcsIFsnb24nXSk7CisgICAgICAgIGRp YWxvZ1NweS4kZWwuZmluZC5hbmQucmV0dXJuVmFsdWUoW10pOworCisgICAgICAgIGJhY2tmb3Jt LkRpYWxvZy5hbmQucmV0dXJuVmFsdWUoZGlhbG9nU3B5KTsKKyAgICAgIH0pOworCisgICAgICBp dCgnY3JlYXRlcyBhIGJhY2tmb3JtIGRpYWxvZyBhbmQgZGlzcGxheXMgaXQnLCAoKSA9PiB7Cisg ICAgICAgIHJlc3RvcmVEaWFsb2dXcmFwcGVyLnByZXBhcmUoKTsKKyAgICAgICAgZXhwZWN0KGJh Y2tmb3JtLkRpYWxvZykudG9IYXZlQmVlbkNhbGxlZFdpdGgoeworICAgICAgICAgIGVsOiByZXN0 b3JlSlF1ZXJ5Q29udGFpbmVyU3B5LAorICAgICAgICAgIG1vZGVsOiBnZW5lcmF0ZWRSZXN0b3Jl TW9kZWwsCisgICAgICAgICAgc2NoZW1hOiB2aWV3U2NoZW1hLAorICAgICAgICB9KTsKKworICAg ICAgICBleHBlY3QoZGlhbG9nU3B5LnJlbmRlcikudG9IYXZlQmVlbkNhbGxlZCgpOworICAgICAg fSk7CisKKyAgICAgIGl0KCdhZGQgYWxlcnRpZnkgY2xhc3NlcyB0byByZXN0b3JlIG5vZGUgY2hp bGRub2RlJywgKCkgPT4geworICAgICAgICByZXN0b3JlRGlhbG9nV3JhcHBlci5wcmVwYXJlKCk7 CisgICAgICAgIGV4cGVjdChyZXN0b3JlTm9kZUNoaWxkTm9kZVNweS5hZGRDbGFzcykKKyAgICAg ICAgICAudG9IYXZlQmVlbkNhbGxlZFdpdGgoJ2FsZXJ0aWZ5X3Rvb2xzX2RpYWxvZ19wcm9wZXJ0 aWVzIG9ial9wcm9wZXJ0aWVzJyk7CisgICAgICB9KTsKKworICAgICAgaXQoJ2Rpc2FibGVzIHRo ZSBidXR0b24gc3VibWl0IGJ1dHRvbiB1bnRpbCBhIGZpbGVuYW1lIGlzIHNlbGVjdGVkJywgKCkg PT4geworICAgICAgICByZXN0b3JlRGlhbG9nV3JhcHBlci5wcmVwYXJlKCk7CisgICAgICAgIGV4 cGVjdChyZXN0b3JlTm9kZS5fX2ludGVybmFsLmJ1dHRvbnNbMl0uZWxlbWVudC5kaXNhYmxlZCku dG9CZSh0cnVlKTsKKyAgICAgIH0pOworCisgICAgICBpdCgnZ2VuZXJhdGVzIGEgbmV3IHJlc3Rv cmUgbW9kZWwnLCAoKSA9PiB7CisgICAgICAgIHJlc3RvcmVEaWFsb2dXcmFwcGVyLnByZXBhcmUo KTsKKyAgICAgICAgZXhwZWN0KGRpYWxvZ01vZGVsS2xhc3NTcHkpLnRvSGF2ZUJlZW5DYWxsZWRX aXRoKAorICAgICAgICAgIHtub2RlX2RhdGE6IHBnQnJvd3Nlci5Ob2Rlc1snc2VydmVyJ119LAor ICAgICAgICAgIHtub2RlX2luZm86IHRyZWVIaWVyYXJjaHlJbmZvcm1hdGlvbn0KKyAgICAgICAg KTsKKyAgICAgIH0pOworCisgICAgICBpdCgnYWRkIHRoZSBuZXcgZGlhbG9nIHRvIHRoZSByZXN0 b3JlIG5vZGUgSFRNTCcsICgpID0+IHsKKyAgICAgICAgcmVzdG9yZURpYWxvZ1dyYXBwZXIucHJl cGFyZSgpOworICAgICAgICBleHBlY3QocmVzdG9yZU5vZGUuZWxlbWVudHMuY29udGVudC5hcHBl bmRDaGlsZCkudG9IYXZlQmVlbkNhbGxlZFdpdGgocmVzdG9yZUpRdWVyeUNvbnRhaW5lclNweSk7 CisgICAgICB9KTsKKyAgICB9KTsKKyAgfSk7CisKKyAgZGVzY3JpYmUoJ29uQnV0dG9uQ2xpY2tl ZCcsICgpID0+IHsKKyAgICBsZXQgbmV0d29ya01vY2s7CisKKyAgICBiZWZvcmVFYWNoKCgpID0+ IHsKKyAgICAgIHBnQnJvd3Nlci5zaG93SGVscCA9IGphc21pbmUuY3JlYXRlU3B5KCdzaG93SGVs cCcpOworICAgICAgbmV0d29ya01vY2sgPSBuZXcgTW9ja0FkYXB0ZXIoYXhpb3MpOworICAgICAg YWxlcnRpZnlTcHkgPSBqYXNtaW5lLmNyZWF0ZVNweU9iaignYWxlcnRpZnknLCBbJ3N1Y2Nlc3Mn LCAnYWxlcnQnXSk7CisgICAgICByZXN0b3JlRGlhbG9nV3JhcHBlciA9IG5ldyBSZXN0b3JlRGlh bG9nV3JhcHBlcigKKyAgICAgICAgJzxkaXYgY2xhc3M9XCdyZXN0b3JlX2RpYWxvZ1wnPjwvZGl2 PicsCisgICAgICAgICdyZXN0b3JlRGlhbG9nVGl0bGUnLAorICAgICAgICAncmVzdG9yZScsCisg ICAgICAgIGpxdWVyeVNweSwKKyAgICAgICAgcGdCcm93c2VyLAorICAgICAgICBhbGVydGlmeVNw eSwKKyAgICAgICAgZGlhbG9nTW9kZWxLbGFzc1NweSwKKyAgICAgICAgYmFja2Zvcm0KKyAgICAg ICk7CisgICAgICByZXN0b3JlRGlhbG9nV3JhcHBlciA9IE9iamVjdC5hc3NpZ24ocmVzdG9yZURp YWxvZ1dyYXBwZXIsIHJlc3RvcmVOb2RlKTsKKworICAgIH0pOworCisgICAgYWZ0ZXJFYWNoKGZ1 bmN0aW9uICgpIHsKKyAgICAgIG5ldHdvcmtNb2NrLnJlc3RvcmUoKTsKKyAgICB9KTsKKworICAg IGNvbnRleHQoJ2RpYWxvZyBoZWxwIGJ1dHRvbiB3YXMgcHJlc3NlZCcsICgpID0+IHsKKyAgICAg IGxldCBuZXR3b3JrQ2FsbGVkOworICAgICAgYmVmb3JlRWFjaCgoKSA9PiB7CisgICAgICAgIG5l dHdvcmtDYWxsZWQgPSBmYWxzZTsKKyAgICAgICAgcGdCcm93c2VyLnRyZWVNZW51LnNlbGVjdE5v ZGUoc2VydmVyVHJlZU5vZGUuZG9tTm9kZSk7CisgICAgICAgIG5ldHdvcmtNb2NrLm9uQW55KC8u Ky8pLnJlcGx5KCgpID0+IHsKKyAgICAgICAgICBuZXR3b3JrQ2FsbGVkID0gdHJ1ZTsKKyAgICAg ICAgICByZXR1cm4gWzIwMCwge31dOworICAgICAgICB9KTsKKworICAgICAgICBjb25zdCBldmVu dCA9IHsKKyAgICAgICAgICBidXR0b246IHsKKyAgICAgICAgICAgIGVsZW1lbnQ6IHsKKyAgICAg ICAgICAgICAgbmFtZTogJ2RpYWxvZ19oZWxwJywKKyAgICAgICAgICAgICAgZ2V0QXR0cmlidXRl OiAoYXR0cmlidXRlTmFtZSkgPT4geworICAgICAgICAgICAgICAgIGlmIChhdHRyaWJ1dGVOYW1l ID09PSAndXJsJykgeworICAgICAgICAgICAgICAgICAgcmV0dXJuICdodHRwOi8vc29tZXVybCc7 CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChhdHRyaWJ1dGVOYW1lID09PSAnbGFiZWwnKSB7 CisgICAgICAgICAgICAgICAgICByZXR1cm4gJ3NvbWUgbGFiZWwnOworICAgICAgICAgICAgICAg IH0KKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgfSwKKyAgICAg ICAgfTsKKyAgICAgICAgcmVzdG9yZURpYWxvZ1dyYXBwZXIuY2FsbGJhY2soZXZlbnQpOworICAg ICAgfSk7CisKKyAgICAgIGl0KCdkaXNwbGF5cyBoZWxwIGZvciBkaWFsb2cnLCAoKSA9PiB7Cisg ICAgICAgIGV4cGVjdChwZ0Jyb3dzZXIuc2hvd0hlbHApLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKAor ICAgICAgICAgICdkaWFsb2dfaGVscCcsCisgICAgICAgICAgJ2h0dHA6Ly9zb21ldXJsJywKKyAg ICAgICAgICBwZ0Jyb3dzZXIuTm9kZXNbJ3NlcnZlciddLAorICAgICAgICAgIHNlcnZlclRyZWVO b2RlLAorICAgICAgICAgICdzb21lIGxhYmVsJworICAgICAgICApOworICAgICAgfSk7CisKKyAg ICAgIGl0KCdkb2VzIG5vdCBzdGFydCB0aGUgcmVzdG9yZScsICgpID0+IHsKKyAgICAgICAgZXhw ZWN0KG5ldHdvcmtDYWxsZWQpLnRvQmUoZmFsc2UpOworICAgICAgfSk7CisgICAgfSk7CisKKyAg ICBjb250ZXh0KCdvYmplY3QgaGVscCBidXR0b24gd2FzIHByZXNzZWQnLCAoKSA9PiB7CisgICAg ICBsZXQgbmV0d29ya0NhbGxlZDsKKyAgICAgIGJlZm9yZUVhY2goKCkgPT4geworICAgICAgICBu ZXR3b3JrQ2FsbGVkID0gZmFsc2U7CisgICAgICAgIHBnQnJvd3Nlci50cmVlTWVudS5zZWxlY3RO b2RlKHNlcnZlclRyZWVOb2RlLmRvbU5vZGUpOworICAgICAgICBuZXR3b3JrTW9jay5vbkFueSgv LisvKS5yZXBseSgoKSA9PiB7CisgICAgICAgICAgbmV0d29ya0NhbGxlZCA9IHRydWU7CisgICAg ICAgICAgcmV0dXJuIFsyMDAsIHt9XTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgY29uc3QgZXZl bnQgPSB7CisgICAgICAgICAgYnV0dG9uOiB7CisgICAgICAgICAgICBlbGVtZW50OiB7CisgICAg ICAgICAgICAgIG5hbWU6ICdvYmplY3RfaGVscCcsCisgICAgICAgICAgICAgIGdldEF0dHJpYnV0 ZTogKGF0dHJpYnV0ZU5hbWUpID0+IHsKKyAgICAgICAgICAgICAgICBpZiAoYXR0cmlidXRlTmFt ZSA9PT0gJ3VybCcpIHsKKyAgICAgICAgICAgICAgICAgIHJldHVybiAnaHR0cDovL3NvbWV1cmwn OworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoYXR0cmlidXRlTmFtZSA9PT0gJ2xhYmVsJykg eworICAgICAgICAgICAgICAgICAgcmV0dXJuICdzb21lIGxhYmVsJzsKKyAgICAgICAgICAgICAg ICB9CisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICB9LAorICAgICAgICAgIH0sCisgICAg ICAgIH07CisgICAgICAgIHJlc3RvcmVEaWFsb2dXcmFwcGVyLmNhbGxiYWNrKGV2ZW50KTsKKyAg ICAgIH0pOworCisgICAgICBpdCgnZGlzcGxheXMgaGVscCBmb3IgZGlhbG9nJywgKCkgPT4gewor ICAgICAgICBleHBlY3QocGdCcm93c2VyLnNob3dIZWxwKS50b0hhdmVCZWVuQ2FsbGVkV2l0aCgK KyAgICAgICAgICAnb2JqZWN0X2hlbHAnLAorICAgICAgICAgICdodHRwOi8vc29tZXVybCcsCisg ICAgICAgICAgcGdCcm93c2VyLk5vZGVzWydzZXJ2ZXInXSwKKyAgICAgICAgICBzZXJ2ZXJUcmVl Tm9kZSwKKyAgICAgICAgICAnc29tZSBsYWJlbCcKKyAgICAgICAgKTsKKyAgICAgIH0pOworCisg ICAgICBpdCgnZG9lcyBub3Qgc3RhcnQgdGhlIHJlc3RvcmUnLCAoKSA9PiB7CisgICAgICAgIGV4 cGVjdChuZXR3b3JrQ2FsbGVkKS50b0JlKGZhbHNlKTsKKyAgICAgIH0pOworICAgIH0pOworCisg ICAgY29udGV4dCgncmVzdG9yZSBidXR0b24gd2FzIHByZXNzZWQnLCAoKSA9PiB7CisgICAgICBs ZXQgbmV0d29ya0NhbGxlZDsKKyAgICAgIGxldCBldmVudDsKKworICAgICAgY29udGV4dCgnbm8g dHJlZSBub2RlIGlzIHNlbGVjdGVkJywgKCkgPT4geworICAgICAgICBiZWZvcmVFYWNoKCgpID0+ IHsKKyAgICAgICAgICBuZXR3b3JrQ2FsbGVkID0gZmFsc2U7CisgICAgICAgICAgbmV0d29ya01v Y2sub25BbnkoLy4rLykucmVwbHkoKCkgPT4geworICAgICAgICAgICAgbmV0d29ya0NhbGxlZCA9 IHRydWU7CisgICAgICAgICAgICByZXR1cm4gWzIwMCwge31dOworICAgICAgICAgIH0pOworICAg ICAgICAgIGV2ZW50ID0geworICAgICAgICAgICAgYnV0dG9uOiB7CisgICAgICAgICAgICAgICdk YXRhLWJ0bi1uYW1lJzogJ3Jlc3RvcmUnLAorICAgICAgICAgICAgICBlbGVtZW50OiB7CisgICAg ICAgICAgICAgICAgZ2V0QXR0cmlidXRlOiAoKSA9PiB7CisgICAgICAgICAgICAgICAgICByZXR1 cm4gJ2h0dHA6Ly9zb21ldXJsJzsKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICB9 LAorICAgICAgICAgICAgfSwKKyAgICAgICAgICB9OworICAgICAgICB9KTsKKworICAgICAgICBp dCgnZG9lcyBub3Qgc3RhcnQgdGhlIHJlc3RvcmUnLCAoKSA9PiB7CisgICAgICAgICAgcmVzdG9y ZURpYWxvZ1dyYXBwZXIuY2FsbGJhY2soZXZlbnQpOworICAgICAgICAgIGV4cGVjdChuZXR3b3Jr Q2FsbGVkKS50b0JlKGZhbHNlKTsKKyAgICAgICAgfSk7CisgICAgICB9KTsKKworICAgICAgY29u dGV4dCgndHJlZSBub2RlIHNlbGVjdGVkIGhhcyBubyBkYXRhJywgKCkgPT4geworICAgICAgICBi ZWZvcmVFYWNoKCgpID0+IHsKKyAgICAgICAgICBuZXR3b3JrQ2FsbGVkID0gZmFsc2U7CisgICAg ICAgICAgbmV0d29ya01vY2sub25BbnkoLy4rLykucmVwbHkoKCkgPT4geworICAgICAgICAgICAg bmV0d29ya0NhbGxlZCA9IHRydWU7CisgICAgICAgICAgICByZXR1cm4gWzIwMCwge31dOworICAg ICAgICAgIH0pOworICAgICAgICAgIGV2ZW50ID0geworICAgICAgICAgICAgYnV0dG9uOiB7Cisg ICAgICAgICAgICAgICdkYXRhLWJ0bi1uYW1lJzogJ3Jlc3RvcmUnLAorICAgICAgICAgICAgICBl bGVtZW50OiB7CisgICAgICAgICAgICAgICAgZ2V0QXR0cmlidXRlOiAoKSA9PiB7CisgICAgICAg ICAgICAgICAgICByZXR1cm4gJ2h0dHA6Ly9zb21ldXJsJzsKKyAgICAgICAgICAgICAgICB9LAor ICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgfSwKKyAgICAgICAgICB9OworICAgICAgICAg IHBnQnJvd3Nlci50cmVlTWVudS5zZWxlY3ROb2RlKG5vRGF0YU5vZGUuZG9tTm9kZSk7CisgICAg ICAgIH0pOworCisgICAgICAgIGl0KCdkb2VzIG5vdCBzdGFydCB0aGUgcmVzdG9yZScsICgpID0+ IHsKKyAgICAgICAgICByZXN0b3JlRGlhbG9nV3JhcHBlci5jYWxsYmFjayhldmVudCk7CisgICAg ICAgICAgZXhwZWN0KG5ldHdvcmtDYWxsZWQpLnRvQmUoZmFsc2UpOworICAgICAgICB9KTsKKyAg ICAgIH0pOworCisgICAgICBjb250ZXh0KCd0cmVlIG5vZGUgc2VsZWN0IGhhcyBkYXRhJywgKCkg PT4geworCisgICAgICAgIGxldCBkYXRhYmFzZVRyZWVOb2RlOworCisgICAgICAgIGJlZm9yZUVh Y2goKCkgPT4geworICAgICAgICAgIGRhdGFiYXNlVHJlZU5vZGUgPSBwZ0Jyb3dzZXIudHJlZU1l bnUuYWRkTmV3Tm9kZSgnbGV2ZWwzLjEnLCB7CisgICAgICAgICAgICBfdHlwZTogJ2RhdGFiYXNl JywKKyAgICAgICAgICAgIF9pZDogMTAsCisgICAgICAgICAgICBfbGFiZWw6ICdzb21lLWRhdGFi YXNlLWxhYmVsJywKKyAgICAgICAgICB9LCBbe2lkOiAnbGV2ZWwzLjEnfV0pOworICAgICAgICAg IHBnQnJvd3Nlci50cmVlTWVudS5hZGRDaGlsZChzZXJ2ZXJUcmVlTm9kZSwgZGF0YWJhc2VUcmVl Tm9kZSk7CisgICAgICAgICAgcGdCcm93c2VyLk5vZGVzLmRhdGFiYXNlID0geworICAgICAgICAg ICAgaGFzSWQ6IHRydWUsCisgICAgICAgICAgICBfbGFiZWw6ICdzb21lLWRhdGFiYXNlLWxhYmVs JywKKyAgICAgICAgICB9OworICAgICAgICAgIGxldCBmYWtlTW9kZWwgPSBuZXcgRmFrZU1vZGVs KCk7CisgICAgICAgICAgZmFrZU1vZGVsLnNldCgnc29tZS1rZXknLCAnc29tZS12YWx1ZScpOwor ICAgICAgICAgIHJlc3RvcmVEaWFsb2dXcmFwcGVyLnZpZXcgPSB7CisgICAgICAgICAgICBtb2Rl bDogZmFrZU1vZGVsLAorICAgICAgICAgIH07CisgICAgICAgICAgcGdCcm93c2VyLnRyZWVNZW51 LnNlbGVjdE5vZGUoZGF0YWJhc2VUcmVlTm9kZS5kb21Ob2RlKTsKKyAgICAgICAgICBwZ0Jyb3dz ZXIuRXZlbnRzID0gamFzbWluZS5jcmVhdGVTcHlPYmooJ3BnQnJvd3NlckV2ZW50c1NweScsIFsn dHJpZ2dlciddKTsKKyAgICAgICAgICBldmVudCA9IHsKKyAgICAgICAgICAgIGJ1dHRvbjogewor ICAgICAgICAgICAgICAnZGF0YS1idG4tbmFtZSc6ICdyZXN0b3JlJywKKyAgICAgICAgICAgICAg ZWxlbWVudDogeworICAgICAgICAgICAgICAgIGdldEF0dHJpYnV0ZTogKCkgPT4geworICAgICAg ICAgICAgICAgICAgcmV0dXJuICdodHRwOi8vc29tZXVybCc7CisgICAgICAgICAgICAgICAgfSwK KyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgfTsKKyAgICAgICAg fSk7CisgICAgICAgIGNvbnRleHQoJ3Jlc3RvcmUgam9iIGNyZWF0ZWQgc3VjY2Vzc2Z1bGx5Jywg KCkgPT4geworICAgICAgICAgIGxldCBkYXRhU2VudFRvU2VydmVyOworICAgICAgICAgIGJlZm9y ZUVhY2goKCkgPT4geworICAgICAgICAgICAgbmV0d29ya01vY2sub25Qb3N0KCcvcmVzdG9yZS9q b2IvMTAnKS5yZXBseSgocmVxdWVzdCkgPT4geworICAgICAgICAgICAgICBkYXRhU2VudFRvU2Vy dmVyID0gcmVxdWVzdC5kYXRhOworICAgICAgICAgICAgICByZXR1cm4gWzIwMCwge31dOworICAg ICAgICAgICAgfSk7CisgICAgICAgICAgfSk7CisKKyAgICAgICAgICBpdCgnY3JlYXRlIGFuIHN1 Y2Nlc3MgYWxlcnQgYm94JywgKGRvbmUpID0+IHsKKyAgICAgICAgICAgIHJlc3RvcmVEaWFsb2dX cmFwcGVyLmNhbGxiYWNrKGV2ZW50KTsKKyAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gewor ICAgICAgICAgICAgICBleHBlY3QoYWxlcnRpZnlTcHkuc3VjY2VzcykudG9IYXZlQmVlbkNhbGxl ZFdpdGgoCisgICAgICAgICAgICAgICAgJ1Jlc3RvcmUgam9iIGNyZWF0ZWQuJywKKyAgICAgICAg ICAgICAgICA1CisgICAgICAgICAgICAgICk7CisgICAgICAgICAgICAgIGRvbmUoKTsKKyAgICAg ICAgICAgIH0sIDApOworICAgICAgICAgIH0pOworCisgICAgICAgICAgaXQoJ3RyaWdnZXIgYmFj a2dyb3VuZCBwcm9jZXNzJywgKGRvbmUpID0+IHsKKyAgICAgICAgICAgIHJlc3RvcmVEaWFsb2dX cmFwcGVyLmNhbGxiYWNrKGV2ZW50KTsKKyAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gewor ICAgICAgICAgICAgICBleHBlY3QocGdCcm93c2VyLkV2ZW50cy50cmlnZ2VyKS50b0hhdmVCZWVu Q2FsbGVkV2l0aCgKKyAgICAgICAgICAgICAgICAncGdhZG1pbi1iZ3Byb2Nlc3M6Y3JlYXRlZCcs CisgICAgICAgICAgICAgICAgcmVzdG9yZURpYWxvZ1dyYXBwZXIKKyAgICAgICAgICAgICAgKTsK KyAgICAgICAgICAgICAgZG9uZSgpOworICAgICAgICAgICAgfSwgMCk7CisgICAgICAgICAgfSk7 CisKKyAgICAgICAgICBpdCgnc2VuZCBjb3JyZWN0IGRhdGEgdG8gc2VydmVyJywgKGRvbmUpID0+ IHsKKyAgICAgICAgICAgIHJlc3RvcmVEaWFsb2dXcmFwcGVyLmNhbGxiYWNrKGV2ZW50KTsKKyAg ICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4geworICAgICAgICAgICAgICBleHBlY3QoSlNPTi5w YXJzZShkYXRhU2VudFRvU2VydmVyKSkudG9FcXVhbCh7CisgICAgICAgICAgICAgICAgJ3NvbWUt a2V5JzogJ3NvbWUtdmFsdWUnLAorICAgICAgICAgICAgICAgICdkYXRhYmFzZSc6ICdzb21lLWRh dGFiYXNlLWxhYmVsJywKKyAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgIGRvbmUoKTsK KyAgICAgICAgICAgIH0sIDApOworICAgICAgICAgIH0pOworICAgICAgICB9KTsKKworICAgICAg ICBjb250ZXh0KCdlcnJvciBjcmVhdGluZyByZXN0b3JlIGpvYicsICgpID0+IHsKKyAgICAgICAg ICBiZWZvcmVFYWNoKCgpID0+IHsKKyAgICAgICAgICAgIG5ldHdvcmtNb2NrLm9uUG9zdCgnL3Jl c3RvcmUvam9iLzEwJykucmVwbHkoKCkgPT4geworICAgICAgICAgICAgICByZXR1cm4gWzQwMCwg e31dOworICAgICAgICAgICAgfSk7CisgICAgICAgICAgfSk7CisKKyAgICAgICAgICBpdCgnY3Jl YXRlcyBhbiBhbGVydCBib3gnLCAoZG9uZSkgPT4geworICAgICAgICAgICAgcmVzdG9yZURpYWxv Z1dyYXBwZXIuY2FsbGJhY2soZXZlbnQpOworICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7 CisgICAgICAgICAgICAgIGV4cGVjdChhbGVydGlmeVNweS5hbGVydCkudG9IYXZlQmVlbkNhbGxl ZFdpdGgoCisgICAgICAgICAgICAgICAgJ1Jlc3RvcmUgam9iIGZhaWxlZC4nLAorICAgICAgICAg ICAgICAgIHVuZGVmaW5lZAorICAgICAgICAgICAgICApOworICAgICAgICAgICAgICBkb25lKCk7 CisgICAgICAgICAgICB9LCAwKTsKKyAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CisgICAgICB9 KTsKKyAgICB9KTsKKyAgfSk7CisKKyAgZGVzY3JpYmUoJ3NldEV4dHJhUGFyYW1ldGVycycsICgp ID0+IHsKKyAgICBsZXQgc2VsZWN0ZWROb2RlOworICAgIGxldCB0cmVlSW5mbzsKKyAgICBsZXQg bW9kZWw7CisKKyAgICBiZWZvcmVFYWNoKCgpID0+IHsKKyAgICAgIHJlc3RvcmVEaWFsb2dXcmFw cGVyID0gbmV3IFJlc3RvcmVEaWFsb2dXcmFwcGVyKAorICAgICAgICAnPGRpdiBjbGFzcz1cJ3Jl c3RvcmVfZGlhbG9nXCc+PC9kaXY+JywKKyAgICAgICAgJ3Jlc3RvcmVEaWFsb2dUaXRsZScsCisg ICAgICAgICdyZXN0b3JlJywKKyAgICAgICAganF1ZXJ5U3B5LAorICAgICAgICBwZ0Jyb3dzZXIs CisgICAgICAgIGFsZXJ0aWZ5U3B5LAorICAgICAgICBkaWFsb2dNb2RlbEtsYXNzU3B5LAorICAg ICAgICBiYWNrZm9ybQorICAgICAgKTsKKworICAgICAgbW9kZWwgPSBuZXcgRmFrZU1vZGVsKCk7 CisgICAgICByZXN0b3JlRGlhbG9nV3JhcHBlci52aWV3ID0geworICAgICAgICBtb2RlbDogbW9k ZWwsCisgICAgICB9OworICAgIH0pOworCisgICAgY29udGV4dCgnd2hlbiBpdCBpcyBhIGN1c3Rv bSBtb2RlbCcsICgpID0+IHsKKyAgICAgIGJlZm9yZUVhY2goKCkgPT4geworICAgICAgICBtb2Rl bC5zZXQoJ2N1c3RvbScsIHRydWUpOworICAgICAgICB0cmVlSW5mbyA9IHsKKyAgICAgICAgICAn ZGF0YWJhc2UnOiB7CisgICAgICAgICAgICAnX2xhYmVsJzogJ3NvbWUtZGF0YWJhc2UtbGFiZWwn LAorICAgICAgICAgIH0sCisgICAgICAgIH07CisgICAgICB9KTsKKworICAgICAgaXQoJ29ubHkg c2V0cyB0aGUgZGF0YWJhc2UnLCAoKSA9PiB7CisgICAgICAgIHJlc3RvcmVEaWFsb2dXcmFwcGVy LnNldEV4dHJhUGFyYW1ldGVycyhzZWxlY3RlZE5vZGUsIHRyZWVJbmZvKTsKKyAgICAgICAgZXhw ZWN0KG1vZGVsLnRvSlNPTigpKS50b0VxdWFsKHsKKyAgICAgICAgICAnY3VzdG9tJzogdHJ1ZSwK KyAgICAgICAgICAnZGF0YWJhc2UnOiAnc29tZS1kYXRhYmFzZS1sYWJlbCcsCisgICAgICAgIH0p OworICAgICAgfSk7CisgICAgfSk7CisKKyAgICBjb250ZXh0KCd3aGVuIGl0IGlzIG5vdCBhIGN1 c3RvbSBtb2RlbCcsICgpID0+IHsKKyAgICAgIGJlZm9yZUVhY2goKCkgPT4geworICAgICAgICBt b2RlbC5zZXQoJ2N1c3RvbScsIGZhbHNlKTsKKyAgICAgICAgdHJlZUluZm8gPSB7CisgICAgICAg ICAgJ2RhdGFiYXNlJzogeworICAgICAgICAgICAgJ19sYWJlbCc6ICdzb21lLWRhdGFiYXNlLWxh YmVsJywKKyAgICAgICAgICB9LAorICAgICAgICAgICdzY2hlbWEnOiB7CisgICAgICAgICAgICAn X2xhYmVsJzogJ3NvbWUtc2NoZW1hLWxhYmVsJywKKyAgICAgICAgICB9LAorICAgICAgICB9Owor ICAgICAgfSk7CisKKyAgICAgIGNvbnRleHQoJ3doZW4gc2VsZWN0ZWQgbm9kZSBpcyBhIHNjaGVt YScsICgpID0+IHsKKyAgICAgICAgaXQoJ3NldHMgc2NoZW1hcyBvbiB0aGUgbW9kZWwnLCAoKSA9 PiB7CisgICAgICAgICAgc2VsZWN0ZWROb2RlID0gbmV3IFRyZWVOb2RlKCdzY2hlbWEnLCB7X3R5 cGU6ICdzY2hlbWEnLCBfbGFiZWw6ICdzb21lLXNjaGVtYS1sYWJlbCd9LCAnJyk7CisgICAgICAg ICAgcmVzdG9yZURpYWxvZ1dyYXBwZXIuc2V0RXh0cmFQYXJhbWV0ZXJzKHNlbGVjdGVkTm9kZSwg dHJlZUluZm8pOworICAgICAgICAgIGV4cGVjdChtb2RlbC50b0pTT04oKSkudG9FcXVhbCh7Cisg ICAgICAgICAgICBjdXN0b206IGZhbHNlLAorICAgICAgICAgICAgZGF0YWJhc2U6ICdzb21lLWRh dGFiYXNlLWxhYmVsJywKKyAgICAgICAgICAgIHNjaGVtYXM6IFsnc29tZS1zY2hlbWEtbGFiZWwn XSwKKyAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CisgICAgICB9KTsKKworICAgICAgY29udGV4 dCgnd2hlbiBzZWxlY3RlZCBub2RlIGlzIGEgdGFibGUnLCAoKSA9PiB7CisgICAgICAgIGl0KCdz ZXRzIHNjaGVtYXMgYW5kIHRhYmxlIG9uIHRoZSBtb2RlbCcsICgpID0+IHsKKyAgICAgICAgICBz ZWxlY3RlZE5vZGUgPSBuZXcgVHJlZU5vZGUoJ3RhYmxlJywge190eXBlOiAndGFibGUnLCBfbGFi ZWw6ICdzb21lLXRhYmxlLWxhYmVsJ30sICcnKTsKKyAgICAgICAgICByZXN0b3JlRGlhbG9nV3Jh cHBlci5zZXRFeHRyYVBhcmFtZXRlcnMoc2VsZWN0ZWROb2RlLCB0cmVlSW5mbyk7CisgICAgICAg ICAgZXhwZWN0KG1vZGVsLnRvSlNPTigpKS50b0VxdWFsKHsKKyAgICAgICAgICAgIGN1c3RvbTog ZmFsc2UsCisgICAgICAgICAgICBkYXRhYmFzZTogJ3NvbWUtZGF0YWJhc2UtbGFiZWwnLAorICAg ICAgICAgICAgc2NoZW1hczogWydzb21lLXNjaGVtYS1sYWJlbCddLAorICAgICAgICAgICAgdGFi bGVzOiBbJ3NvbWUtdGFibGUtbGFiZWwnXSwKKyAgICAgICAgICB9KTsKKyAgICAgICAgfSk7Cisg ICAgICB9KTsKKworICAgICAgY29udGV4dCgnd2hlbiBzZWxlY3RlZCBub2RlIGlzIGEgZnVuY3Rp b24nLCAoKSA9PiB7CisgICAgICAgIGl0KCdzZXRzIHNjaGVtYXMgYW5kIGZ1bmN0aW9uIG9uIHRo ZSBtb2RlbCcsICgpID0+IHsKKyAgICAgICAgICBzZWxlY3RlZE5vZGUgPSBuZXcgVHJlZU5vZGUo J2Z1bmN0aW9uJywge190eXBlOiAnZnVuY3Rpb24nLCBfbGFiZWw6ICdzb21lLWZ1bmN0aW9uLWxh YmVsJ30sICcnKTsKKyAgICAgICAgICByZXN0b3JlRGlhbG9nV3JhcHBlci5zZXRFeHRyYVBhcmFt ZXRlcnMoc2VsZWN0ZWROb2RlLCB0cmVlSW5mbyk7CisgICAgICAgICAgZXhwZWN0KG1vZGVsLnRv SlNPTigpKS50b0VxdWFsKHsKKyAgICAgICAgICAgIGN1c3RvbTogZmFsc2UsCisgICAgICAgICAg ICBkYXRhYmFzZTogJ3NvbWUtZGF0YWJhc2UtbGFiZWwnLAorICAgICAgICAgICAgc2NoZW1hczog Wydzb21lLXNjaGVtYS1sYWJlbCddLAorICAgICAgICAgICAgZnVuY3Rpb25zOiBbJ3NvbWUtZnVu Y3Rpb24tbGFiZWwnXSwKKyAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CisgICAgICB9KTsKKwor ICAgICAgY29udGV4dCgnd2hlbiBzZWxlY3RlZCBub2RlIGlzIGFuIGluZGV4JywgKCkgPT4gewor ICAgICAgICBpdCgnc2V0cyBzY2hlbWFzIGFuZCBpbmRleCBvbiB0aGUgbW9kZWwnLCAoKSA9PiB7 CisgICAgICAgICAgc2VsZWN0ZWROb2RlID0gbmV3IFRyZWVOb2RlKCdpbmRleCcsIHtfdHlwZTog J2luZGV4JywgX2xhYmVsOiAnc29tZS1pbmRleC1sYWJlbCd9LCAnJyk7CisgICAgICAgICAgcmVz dG9yZURpYWxvZ1dyYXBwZXIuc2V0RXh0cmFQYXJhbWV0ZXJzKHNlbGVjdGVkTm9kZSwgdHJlZUlu Zm8pOworICAgICAgICAgIGV4cGVjdChtb2RlbC50b0pTT04oKSkudG9FcXVhbCh7CisgICAgICAg ICAgICBjdXN0b206IGZhbHNlLAorICAgICAgICAgICAgZGF0YWJhc2U6ICdzb21lLWRhdGFiYXNl LWxhYmVsJywKKyAgICAgICAgICAgIHNjaGVtYXM6IFsnc29tZS1zY2hlbWEtbGFiZWwnXSwKKyAg ICAgICAgICAgIGluZGV4ZXM6IFsnc29tZS1pbmRleC1sYWJlbCddLAorICAgICAgICAgIH0pOwor ICAgICAgICB9KTsKKyAgICAgIH0pOworCisgICAgICBjb250ZXh0KCd3aGVuIHNlbGVjdGVkIG5v ZGUgaXMgYSB0cmlnZ2VyJywgKCkgPT4geworICAgICAgICBpdCgnc2V0cyBzY2hlbWFzIGFuZCB0 cmlnZ2VyIG9uIHRoZSBtb2RlbCcsICgpID0+IHsKKyAgICAgICAgICBzZWxlY3RlZE5vZGUgPSBu ZXcgVHJlZU5vZGUoJ3RyaWdnZXInLCB7X3R5cGU6ICd0cmlnZ2VyJywgX2xhYmVsOiAnc29tZS10 cmlnZ2VyLWxhYmVsJ30sICcnKTsKKyAgICAgICAgICByZXN0b3JlRGlhbG9nV3JhcHBlci5zZXRF eHRyYVBhcmFtZXRlcnMoc2VsZWN0ZWROb2RlLCB0cmVlSW5mbyk7CisgICAgICAgICAgZXhwZWN0 KG1vZGVsLnRvSlNPTigpKS50b0VxdWFsKHsKKyAgICAgICAgICAgIGN1c3RvbTogZmFsc2UsCisg ICAgICAgICAgICBkYXRhYmFzZTogJ3NvbWUtZGF0YWJhc2UtbGFiZWwnLAorICAgICAgICAgICAg c2NoZW1hczogWydzb21lLXNjaGVtYS1sYWJlbCddLAorICAgICAgICAgICAgdHJpZ2dlcnM6IFsn c29tZS10cmlnZ2VyLWxhYmVsJ10sCisgICAgICAgICAgfSk7CisgICAgICAgIH0pOworICAgICAg fSk7CisKKyAgICAgIGNvbnRleHQoJ3doZW4gc2VsZWN0ZWQgbm9kZSBpcyBhIHRyaWdnZXJfZnVu YycsICgpID0+IHsKKyAgICAgICAgaXQoJ3NldHMgc2NoZW1hcyBhbmQgdHJpZ2dlcl9mdW5jIG9u IHRoZSBtb2RlbCcsICgpID0+IHsKKyAgICAgICAgICBzZWxlY3RlZE5vZGUgPSBuZXcgVHJlZU5v ZGUoJ3RyaWdnZXJfZnVuYycsIHtfdHlwZTogJ3RyaWdnZXJfZnVuYycsIF9sYWJlbDogJ3NvbWUt dHJpZ2dlcl9mdW5jLWxhYmVsJ30sICcnKTsKKyAgICAgICAgICByZXN0b3JlRGlhbG9nV3JhcHBl ci5zZXRFeHRyYVBhcmFtZXRlcnMoc2VsZWN0ZWROb2RlLCB0cmVlSW5mbyk7CisgICAgICAgICAg ZXhwZWN0KG1vZGVsLnRvSlNPTigpKS50b0VxdWFsKHsKKyAgICAgICAgICAgIGN1c3RvbTogZmFs c2UsCisgICAgICAgICAgICBkYXRhYmFzZTogJ3NvbWUtZGF0YWJhc2UtbGFiZWwnLAorICAgICAg ICAgICAgc2NoZW1hczogWydzb21lLXNjaGVtYS1sYWJlbCddLAorICAgICAgICAgICAgdHJpZ2dl cl9mdW5jczogWydzb21lLXRyaWdnZXJfZnVuYy1sYWJlbCddLAorICAgICAgICAgIH0pOworICAg ICAgICB9KTsKKyAgICAgIH0pOworICAgIH0pOworICB9KTsKK30pOwpkaWZmIC0tZ2l0IGEvd2Vi L3JlZ3Jlc3Npb24vamF2YXNjcmlwdC9zY2hlbWEvY2FuX2Ryb3BfY2hpbGRfc3BlYy5qcyBiL3dl Yi9yZWdyZXNzaW9uL2phdmFzY3JpcHQvc2NoZW1hL2Nhbl9kcm9wX2NoaWxkX3NwZWMuanMKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAuLjQ0MDNiMjc0Ci0tLSAvZGV2L251bGwK KysrIGIvd2ViL3JlZ3Jlc3Npb24vamF2YXNjcmlwdC9zY2hlbWEvY2FuX2Ryb3BfY2hpbGRfc3Bl Yy5qcwpAQCAtMCwwICsxLDgyIEBACisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisvLworLy8gcGdBZG1pbiA0IC0gUG9zdGdyZVNR TCBUb29scworLy8KKy8vIENvcHlyaWdodCAoQykgMjAxMyAtIDIwMTgsIFRoZSBwZ0FkbWluIERl dmVsb3BtZW50IFRlYW0KKy8vIFRoaXMgc29mdHdhcmUgaXMgcmVsZWFzZWQgdW5kZXIgdGhlIFBv c3RncmVTUUwgTGljZW5jZQorLy8KKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisKK2ltcG9ydCB7Y2FuRHJvcENoaWxkfSBmcm9t ICcuLi8uLi8uLi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNl cy9zY2hlbWFzL3N0YXRpYy9qcy9jYW5fZHJvcF9jaGlsZCc7CitpbXBvcnQge1RyZWVGYWtlfSBm cm9tICcuLi90cmVlL3RyZWVfZmFrZSc7CisKK2xldCBjb250ZXh0ID0gZGVzY3JpYmU7CisKK2Rl c2NyaWJlKCdjYW5fZHJvcF9jaGlsZCcsICgpID0+IHsKKworICBsZXQgYnJvd3NlcjsKKyAgbGV0 IGl0ZW1EYXRhOworICBsZXQgaXRlbTsKKworICBiZWZvcmVFYWNoKCgpID0+IHsKKyAgICBicm93 c2VyID0geworICAgICAgdHJlZU1lbnU6IG5ldyBUcmVlRmFrZSgpLAorICAgIH07CisgICAgaXRl bSA9IFtdOworICAgIGJyb3dzZXIudHJlZU1lbnUuYWRkTmV3Tm9kZSgnbm9kZTEnLCB7X3R5cGU6 ICdzY2hlbWEnfSwgW3tpZDogJ25vZGUxJ31dLCBbXSk7CisgICAgYnJvd3Nlci50cmVlTWVudS5h ZGROZXdOb2RlKCdub2RlMS4xJywge190eXBlOiAnZGF0YWJhc2UnfSwgW3tpZDogJ25vZGUxLjEn fV0sIFsnbm9kZTEnXSk7CisgICAgYnJvd3Nlci50cmVlTWVudS5hZGROZXdOb2RlKCdub2RlMics IHtfdHlwZTogJ2NhdGFsb2cnfSwgW3tpZDogJ25vZGUyJ31dLCBbXSk7CisgICAgYnJvd3Nlci50 cmVlTWVudS5hZGROZXdOb2RlKCdub2RlMi4xJywge190eXBlOiAndGFibGUnfSwgW3tpZDogJ25v ZGUyLjEnfV0sIFsnbm9kZTInXSk7CisgICAgYnJvd3Nlci50cmVlTWVudS5hZGROZXdOb2RlKCdu b2RlMycsIHtfdHlwZTogJ2Z1bmN0aW9uJ30sIFt7aWQ6ICdub2RlMyd9XSwgW10pOworICAgIGJy b3dzZXIudHJlZU1lbnUuYWRkTmV3Tm9kZSgnbm9kZTMuMScsIHtfdHlwZTogJ3Byb2NlZHVyZSd9 LCBbe2lkOiAnbm9kZTMuMSd9XSwgWydub2RlMyddKTsKKyAgfSk7CisKKyAgY29udGV4dCgnd2hl biBjdXJyZW50IG5vZGUgaXMgb2YgdGhlIHR5cGUgc2NoZW1hJywgKCkgPT4geworICAgIGJlZm9y ZUVhY2goKCkgPT4geworICAgICAgaXRlbURhdGEgPSB7CisgICAgICAgIF90eXBlOiAnc2NoZW1h JywKKyAgICAgIH07CisgICAgICBpdGVtID0gW3tpZDogJ25vZGUxJ31dOworICAgIH0pOworCisg ICAgaXQoJ3JldHVybnMgdHJ1ZScsICgpID0+IHsKKyAgICAgIGxldCBib29sID0gY2FuRHJvcENo aWxkKGJyb3dzZXIsIGl0ZW1EYXRhLCBpdGVtKTsKKyAgICAgIGV4cGVjdChib29sKS50b0JlKHRy dWUpOworICAgIH0pOworICB9KTsKKworICBjb250ZXh0KCd3aGVuIGEgcGFyZW50IG9mIHRoZSBj dXJyZW50IG5vZGUgaXMgYSBzY2hlbWEnLCAoKSA9PiB7CisgICAgaXQoJ3JldHVybnMgdHJ1ZScs ICgpID0+IHsKKyAgICAgIGl0ZW1EYXRhID0geworICAgICAgICBfdHlwZTogJ2RhdGFiYXNlJywK KyAgICAgIH07CisgICAgICBpdGVtID0gW3tpZDogJ25vZGUxLjEnfV07CisgICAgICBsZXQgYm9v bCA9IGNhbkRyb3BDaGlsZChicm93c2VyLCBpdGVtRGF0YSwgaXRlbSk7CisgICAgICBleHBlY3Qo Ym9vbCkudG9CZSh0cnVlKTsKKyAgICB9KTsKKyAgfSk7CisKKyAgY29udGV4dCgnd2hlbiBhIHBh cmVudCBvZiB0aGUgY3VycmVudCBub2RlIGlzIGEgY2F0YWxvZycsICgpID0+IHsKKyAgICBpdCgn cmV0dXJucyBmYWxzZScsICgpID0+IHsKKyAgICAgIGl0ZW1EYXRhPSB7CisgICAgICAgIF90eXBl OiAndGFibGUnLAorICAgICAgfTsKKyAgICAgIGl0ZW0gPSBbe2lkOiAnbm9kZTIuMSd9XTsKKwor ICAgICAgbGV0IGJvb2wgPSBjYW5Ecm9wQ2hpbGQoYnJvd3NlciwgaXRlbURhdGEsIGl0ZW0pOwor ICAgICAgZXhwZWN0KGJvb2wpLnRvQmUoZmFsc2UpOworICAgIH0pOworICB9KTsKKworICBjb250 ZXh0KCd3aGVuIGEgcGFyZW50IG9mIHRoZSBjdXJyZW50IG5vZGUgaXMgbm90IGNhdGFsb2cgbm9y IHNjaGVtYScsICgpID0+IHsKKyAgICBpdCgncmV0dXJucyB0cnVlJywgKCkgPT4geworICAgICAg aXRlbURhdGEgPSB7CisgICAgICAgIF90eXBlOiAncHJvY2VkdXJlJywKKyAgICAgIH07CisgICAg ICBpdGVtID0gW3tpZDogJ25vZGUzLjEnfV07CisKKyAgICAgIGxldCBib29sID0gY2FuRHJvcENo aWxkKGJyb3dzZXIsIGl0ZW1EYXRhLCBpdGVtKTsKKyAgICAgIGV4cGVjdChib29sKS50b0JlKHRy dWUpOworICAgIH0pOworICB9KTsKK30pOwpkaWZmIC0tZ2l0IGEvd2ViL3JlZ3Jlc3Npb24vamF2 YXNjcmlwdC9zcWxlZGl0b3IvZmlsdGVyX2RpYWxvZ19zcGVjcy5qcyBiL3dlYi9yZWdyZXNzaW9u L2phdmFzY3JpcHQvc3FsZWRpdG9yL2ZpbHRlcl9kaWFsb2dfc3BlY3MuanMKaW5kZXggZWQ3N2Rm ZjUuLmNlYTc1ZTZiIDEwMDY0NAotLS0gYS93ZWIvcmVncmVzc2lvbi9qYXZhc2NyaXB0L3NxbGVk aXRvci9maWx0ZXJfZGlhbG9nX3NwZWNzLmpzCisrKyBiL3dlYi9yZWdyZXNzaW9uL2phdmFzY3Jp cHQvc3FsZWRpdG9yL2ZpbHRlcl9kaWFsb2dfc3BlY3MuanMKQEAgLTcsMTAgKzcsOCBAQAogLy8K IC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vCiBpbXBvcnQgZmlsdGVyRGlhbG9nIGZyb20gJ3NvdXJjZXMvc3Fs ZWRpdG9yL2ZpbHRlcl9kaWFsb2cnOwotLy8gaW1wb3J0IGZpbHRlckRpYWxvZ01vZGVsIGZyb20g J3NvdXJjZXMvc3FsZWRpdG9yL2ZpbHRlcl9kaWFsb2dfbW9kZWwnOwogCiBkZXNjcmliZSgnZmls dGVyRGlhbG9nJywgKCkgPT4gewotICBqYXNtaW5lLmNyZWF0ZVNweSgnc3FsRWRpdG9yQ29udHJv bGxlcicpOwogICBkZXNjcmliZSgnZmlsdGVyRGlhbG9nJywgKCkgPT4gewogICAgIGRlc2NyaWJl KCd3aGVuIHVzaW5nIGZpbHRlciBkaWFsb2cnLCAoKSA9PiB7CiAgICAgICBiZWZvcmVFYWNoKCgp ID0+IHsKZGlmZiAtLWdpdCBhL3dlYi9yZWdyZXNzaW9uL2phdmFzY3JpcHQvdGFibGUvZW5hYmxl X2Rpc2FibGVfdHJpZ2dlcnNfc3BlYy5qcyBiL3dlYi9yZWdyZXNzaW9uL2phdmFzY3JpcHQvdGFi bGUvZW5hYmxlX2Rpc2FibGVfdHJpZ2dlcnNfc3BlYy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwMC4uN2JkZDI4NGUKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcmVncmVzc2lv bi9qYXZhc2NyaXB0L3RhYmxlL2VuYWJsZV9kaXNhYmxlX3RyaWdnZXJzX3NwZWMuanMKQEAgLTAs MCArMSwyNzEgQEAKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8KKy8vCisvLyBwZ0FkbWluIDQgLSBQb3N0Z3JlU1FMIFRvb2xzCisv LworLy8gQ29weXJpZ2h0IChDKSAyMDEzIC0gMjAxOCwgVGhlIHBnQWRtaW4gRGV2ZWxvcG1lbnQg VGVhbQorLy8gVGhpcyBzb2Z0d2FyZSBpcyByZWxlYXNlZCB1bmRlciB0aGUgUG9zdGdyZVNRTCBM aWNlbmNlCisvLworLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8KKworaW1wb3J0IE1vY2tBZGFwdGVyIGZyb20gJ2F4aW9zLW1vY2st YWRhcHRlcic7CitpbXBvcnQgYXhpb3MgZnJvbSAnYXhpb3MvaW5kZXgnOworaW1wb3J0IHsKKyAg ZW5hYmxlVHJpZ2dlcnMsCisgIGRpc2FibGVUcmlnZ2VycywKK30gZnJvbSAnLi4vLi4vLi4vcGdh ZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJs ZXMvc3RhdGljL2pzL2VuYWJsZV9kaXNhYmxlX3RyaWdnZXJzJzsKK2ltcG9ydCB7VHJlZUZha2V9 IGZyb20gJy4uL3RyZWUvdHJlZV9mYWtlJzsKK2ltcG9ydCB7VHJlZU5vZGV9IGZyb20gJy4uLy4u Ly4uL3BnYWRtaW4vc3RhdGljL2pzL3RyZWUvdHJlZSc7CisKK2Rlc2NyaWJlKCcjZW5hYmxlVHJp Z2dlcnMnLCAoKSA9PiB7CisgIGxldCBuZXR3b3JrTW9jazsKKyAgbGV0IHRyZWU7CisgIGxldCBh bGVydGlmeTsKKyAgbGV0IGdlbmVyYXRlVXJsU3B5OworICBiZWZvcmVFYWNoKCgpID0+IHsKKyAg ICBuZXR3b3JrTW9jayA9IG5ldyBNb2NrQWRhcHRlcihheGlvcyk7CisgICAgdHJlZSA9IG5ldyBU cmVlRmFrZSgpOworICAgIGNvbnN0IHNlcnZlcjEgPSB0cmVlLmFkZE5ld05vZGUoJ3NlcnZlcjEn LCB7X2lkOiAxfSwgWyc8bGk+c2VydmVyMTwvbGk+J10pOworICAgIGNvbnN0IGRhdGFiYXNlMSA9 IHRyZWUuYWRkTmV3Tm9kZSgnZGF0YWJhc2UxJywge190eXBlOiAnZGF0YWJhc2UnfSwgWyc8bGk+ ZGF0YWJhc2UxPC9saT4nXSk7CisgICAgdHJlZS5hZGRDaGlsZChzZXJ2ZXIxLCBkYXRhYmFzZTEp OworCisgICAgY29uc3Qgc2NoZW1hMSA9IHRyZWUuYWRkTmV3Tm9kZSgnc2NoZW1hMScsIHtfdHlw ZTogJ3NjaGVtYSd9LCBbJzxsaT5zY2hlbWExPC9saT4nXSk7CisgICAgdHJlZS5hZGRDaGlsZChk YXRhYmFzZTEsIHNjaGVtYTEpOworCisgICAgY29uc3QgdGFibGUxID0gdHJlZS5hZGROZXdOb2Rl KCd0YWJsZTEnLCB7X3R5cGU6ICd0YWJsZSd9LCBbJzxsaT50YWJsZTE8L2xpPiddKTsKKyAgICB0 cmVlLmFkZENoaWxkKHNjaGVtYTEsIHRhYmxlMSk7CisKKyAgICBjb25zdCBjb2x1bW4xID0gdHJl ZS5hZGROZXdOb2RlKCdjb2x1bW4xJywge190eXBlOiAnY29sdW1uJ30sIFsnPGxpPmNvbHVtbjE8 L2xpPiddKTsKKyAgICB0cmVlLmFkZENoaWxkKHRhYmxlMSwgY29sdW1uMSk7CisKKyAgICBjb25z dCB0YWJsZU5vRGF0YSA9IHRyZWUuYWRkTmV3Tm9kZSgndGFibGUtbm8tZGF0YScsIHVuZGVmaW5l ZCwgWyc8bGk+dGFibGUtbm8tZGF0YTwvbGk+J10pOworICAgIHRyZWUuYWRkQ2hpbGQoc2NoZW1h MSwgdGFibGVOb0RhdGEpOworCisgICAgYWxlcnRpZnkgPSBqYXNtaW5lLmNyZWF0ZVNweU9iaign YWxlcnRpZnknLCBbJ3N1Y2Nlc3MnLCAnZXJyb3InXSk7CisgICAgZ2VuZXJhdGVVcmxTcHkgPSBq YXNtaW5lLmNyZWF0ZVNweSgnZ2VuZXJhdGVVcmwnKTsKKyAgICBnZW5lcmF0ZVVybFNweS5hbmQu cmV0dXJuVmFsdWUoJy9zb21lL3BsYWNlJyk7CisgIH0pOworCisgIGRlc2NyaWJlKCdubyBub2Rl IGlzIHNlbGVjdGVkJywgKCkgPT4geworICAgIGl0KCdkb2VzIG5vdCBzZW5kIHRoZSByZXF1ZXN0 IHRvIHRoZSBiYWNrZW5kJywgKGRvbmUpID0+IHsKKyAgICAgIG5ldHdvcmtNb2NrLm9uQW55KCcu KicpLnJlcGx5KDIwMCwgKCkgPT4geworICAgICAgfSk7CisKKyAgICAgIHNldFRpbWVvdXQoKCkg PT4geworICAgICAgICBleHBlY3QoZW5hYmxlVHJpZ2dlcnModHJlZSwgYWxlcnRpZnksIGdlbmVy YXRlVXJsU3B5LCB7fSkpLnRvQmUoZmFsc2UpOworICAgICAgICBkb25lKCk7CisgICAgICB9LCAw KTsKKyAgICB9KTsKKyAgfSk7CisKKyAgZGVzY3JpYmUoJ2Egbm9kZSBpcyBzZWxlY3RlZCcsICgp ID0+IHsKKyAgICBkZXNjcmliZSgnbm9kZSBhcyBubyBkYXRhJywgKCkgPT4geworICAgICAgaXQo J2RvZXMgbm90IHNlbmQgdGhlIHJlcXVlc3QgdG8gdGhlIGJhY2tlbmQnLCAoKSA9PiB7CisgICAg ICAgIHRyZWUuc2VsZWN0Tm9kZShbe2lkOiAndGFibGUtbm8tZGF0YSd9XSk7CisKKyAgICAgICAg bmV0d29ya01vY2sub25BbnkoJy4qJykucmVwbHkoMjAwLCAoKSA9PiB7CisgICAgICAgIH0pOwor CisgICAgICAgIHNldFRpbWVvdXQoKCkgPT4geworICAgICAgICAgIGV4cGVjdChlbmFibGVUcmln Z2Vycyh0cmVlLCBhbGVydGlmeSwgZ2VuZXJhdGVVcmxTcHksIHt9KSkudG9CZShmYWxzZSk7Cisg ICAgICAgIH0sIDApOworICAgICAgfSk7CisgICAgfSk7CisKKyAgICBkZXNjcmliZSgnbm9kZSBh cyAgZGF0YScsICgpID0+IHsKKyAgICAgIGRlc2NyaWJlKCdiYWNrZW5kIHJlc3BvbmRzIHdpdGgg c3VjY2VzcycsICgpID0+IHsKKyAgICAgICAgbGV0IG5ldHdvcmtNb2NrQ2FsbGVkV2l0aDsKKyAg ICAgICAgYmVmb3JlRWFjaCgoKSA9PiB7CisgICAgICAgICAgbmV0d29ya01vY2tDYWxsZWRXaXRo ID0gZmFsc2U7CisgICAgICAgICAgbmV0d29ya01vY2sub25QdXQoLy4qLykucmVwbHkoKGNvbmZp Z3VyYXRpb24pID0+IHsKKyAgICAgICAgICAgIG5ldHdvcmtNb2NrQ2FsbGVkV2l0aCA9IGNvbmZp Z3VyYXRpb247CisgICAgICAgICAgICByZXR1cm4gWzIwMCwgeworICAgICAgICAgICAgICBzdWNj ZXNzOiAxLAorICAgICAgICAgICAgICBpbmZvOiAnc29tZSBpbmZvcm1hdGlvbicsCisgICAgICAg ICAgICB9XTsKKyAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgaXQoJ2Rpc3Bs YXlzIGFuIGFsZXJ0IGJveCB3aXRoIHN1Y2Nlc3MnLCAoZG9uZSkgPT4geworICAgICAgICAgIHRy ZWUuc2VsZWN0Tm9kZShbe2lkOiAndGFibGUxJ31dKTsKKyAgICAgICAgICBlbmFibGVUcmlnZ2Vy cyh0cmVlLCBhbGVydGlmeSwgZ2VuZXJhdGVVcmxTcHksIHt9KTsKKyAgICAgICAgICBzZXRUaW1l b3V0KCgpID0+IHsKKyAgICAgICAgICAgIGV4cGVjdChhbGVydGlmeS5zdWNjZXNzKS50b0hhdmVC ZWVuQ2FsbGVkV2l0aCgnc29tZSBpbmZvcm1hdGlvbicpOworICAgICAgICAgICAgZG9uZSgpOwor ICAgICAgICAgIH0sIDApOworICAgICAgICB9KTsKKworICAgICAgICBpdCgncmVsb2FkcyB0aGUg bm9kZScsIChkb25lKSA9PiB7CisgICAgICAgICAgZW5hYmxlVHJpZ2dlcnModHJlZSwgYWxlcnRp ZnksIGdlbmVyYXRlVXJsU3B5LCB7aXRlbTogW3tpZDogJ3RhYmxlMSd9XX0pOworICAgICAgICAg IHNldFRpbWVvdXQoKCkgPT4geworICAgICAgICAgICAgZXhwZWN0KHRyZWUuc2VsZWN0ZWQoKSku dG9FcXVhbChbJzxsaT50YWJsZTE8L2xpPiddKTsKKyAgICAgICAgICAgIGRvbmUoKTsKKyAgICAg ICAgICB9LCAyMCk7CisgICAgICAgIH0pOworCisgICAgICAgIGl0KCdjYWxsIGJhY2tlbmQgd2l0 aCB0aGUgY29ycmVjdCBwYXJhbWV0ZXJzJywgKGRvbmUpID0+IHsKKyAgICAgICAgICBlbmFibGVU cmlnZ2Vycyh0cmVlLCBhbGVydGlmeSwgZ2VuZXJhdGVVcmxTcHksIHtpdGVtOiBbe2lkOiAndGFi bGUxJ31dfSk7CisgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7CisgICAgICAgICAgICBleHBl Y3QobmV0d29ya01vY2tDYWxsZWRXaXRoLmRhdGEpLnRvRXF1YWwoSlNPTi5zdHJpbmdpZnkoe2Vu YWJsZTogJ3RydWUnfSkpOworICAgICAgICAgICAgZG9uZSgpOworICAgICAgICAgIH0sIDApOwor ICAgICAgICB9KTsKKyAgICAgIH0pOworCisgICAgICBkZXNjcmliZSgnYmFja2VuZCByZXNwb25k cyB3aXRoIGVycm9yJywgKCkgPT4geworICAgICAgICBiZWZvcmVFYWNoKCgpID0+IHsKKyAgICAg ICAgICBuZXR3b3JrTW9jay5vblB1dCgvLiovKS5yZXBseSgoKSA9PiB7CisgICAgICAgICAgICBy ZXR1cm4gWzUwMCwgeworICAgICAgICAgICAgICBzdWNjZXNzOiAwLAorICAgICAgICAgICAgICBl cnJvcm1zZzogJ3NvbWUgZXJyb3IgbWVzc2FnZScsCisgICAgICAgICAgICB9XTsKKyAgICAgICAg ICB9KTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgaXQoJ2Rpc3BsYXlzIGFuIGVycm9yIGFsZXJ0 JywgKGRvbmUpID0+IHsKKyAgICAgICAgICB0cmVlLnNlbGVjdE5vZGUoW3tpZDogJ3RhYmxlMSd9 XSk7CisgICAgICAgICAgZW5hYmxlVHJpZ2dlcnModHJlZSwgYWxlcnRpZnksIGdlbmVyYXRlVXJs U3B5LCB7fSk7CisgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7CisgICAgICAgICAgICBleHBl Y3QoYWxlcnRpZnkuZXJyb3IpLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKCdzb21lIGVycm9yIG1lc3Nh Z2UnKTsKKyAgICAgICAgICAgIGRvbmUoKTsKKyAgICAgICAgICB9LCAwKTsKKyAgICAgICAgfSk7 CisKKyAgICAgICAgaXQoJ3VubG9hZCB0aGUgbm9kZScsIChkb25lKSA9PiB7CisgICAgICAgICAg ZW5hYmxlVHJpZ2dlcnModHJlZSwgYWxlcnRpZnksIGdlbmVyYXRlVXJsU3B5LCB7aXRlbTogW3tp ZDogJ3RhYmxlMSd9XX0pOworCisgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7CisgICAgICAg ICAgICBleHBlY3QodHJlZS5maW5kTm9kZUJ5RG9tRWxlbWVudChbe2lkOiAndGFibGUxJ31dKS5j aGlsZHJlbi5sZW5ndGgpLnRvQmUoMCk7CisgICAgICAgICAgICBkb25lKCk7CisgICAgICAgICAg fSwgMjApOworICAgICAgICB9KTsKKyAgICAgIH0pOworICAgIH0pOworICB9KTsKK30pOworCitk ZXNjcmliZSgnI2Rpc2FibGVUcmlnZ2VycycsICgpID0+IHsKKyAgbGV0IG5ldHdvcmtNb2NrOwor ICBsZXQgdHJlZTsKKyAgbGV0IGFsZXJ0aWZ5OworICBsZXQgZ2VuZXJhdGVVcmxTcHk7CisgIGJl Zm9yZUVhY2goKCkgPT4geworICAgIG5ldHdvcmtNb2NrID0gbmV3IE1vY2tBZGFwdGVyKGF4aW9z KTsKKyAgICB0cmVlID0gbmV3IFRyZWVGYWtlKCk7CisgICAgY29uc3Qgc2VydmVyMSA9IHRyZWUu YWRkTmV3Tm9kZSgnc2VydmVyMScsIHtfaWQ6IDF9LCBbJzxsaT5zZXJ2ZXIxPC9saT4nXSk7Cisg ICAgY29uc3QgZGF0YWJhc2UxID0gbmV3IFRyZWVOb2RlKCdkYXRhYmFzZTEnLCB7X3R5cGU6ICdk YXRhYmFzZSd9LCBbJzxsaT5kYXRhYmFzZTE8L2xpPiddKTsKKyAgICB0cmVlLmFkZENoaWxkKHNl cnZlcjEsIGRhdGFiYXNlMSk7CisKKyAgICBjb25zdCBzY2hlbWExID0gbmV3IFRyZWVOb2RlKCdz Y2hlbWExJywge190eXBlOiAnc2NoZW1hJ30sIFsnPGxpPnNjaGVtYTE8L2xpPiddKTsKKyAgICB0 cmVlLmFkZENoaWxkKGRhdGFiYXNlMSwgc2NoZW1hMSk7CisKKyAgICBjb25zdCB0YWJsZTEgPSBu ZXcgVHJlZU5vZGUoJ3RhYmxlMScsIHtfdHlwZTogJ3RhYmxlJ30sIFsnPGxpPnRhYmxlMTwvbGk+ J10pOworICAgIHRyZWUuYWRkQ2hpbGQoc2NoZW1hMSwgdGFibGUxKTsKKworICAgIGNvbnN0IGNv bHVtbjEgPSBuZXcgVHJlZU5vZGUoJ2NvbHVtbjEnLCB7X3R5cGU6ICdjb2x1bW4nfSwgWyc8bGk+ Y29sdW1uMTwvbGk+J10pOworICAgIHRyZWUuYWRkQ2hpbGQodGFibGUxLCBjb2x1bW4xKTsKKwor ICAgIGNvbnN0IHRhYmxlTm9EYXRhID0gbmV3IFRyZWVOb2RlKCd0YWJsZS1uby1kYXRhJywgdW5k ZWZpbmVkLCBbJzxsaT50YWJsZS1uby1kYXRhPC9saT4nXSk7CisgICAgdHJlZS5hZGRDaGlsZChz Y2hlbWExLCB0YWJsZU5vRGF0YSk7CisKKyAgICBhbGVydGlmeSA9IGphc21pbmUuY3JlYXRlU3B5 T2JqKCdhbGVydGlmeScsIFsnc3VjY2VzcycsICdlcnJvciddKTsKKyAgICBnZW5lcmF0ZVVybFNw eSA9IGphc21pbmUuY3JlYXRlU3B5KCdnZW5lcmF0ZVVybCcpOworICAgIGdlbmVyYXRlVXJsU3B5 LmFuZC5yZXR1cm5WYWx1ZSgnL3NvbWUvcGxhY2UnKTsKKyAgfSk7CisKKyAgZGVzY3JpYmUoJ25v IG5vZGUgaXMgc2VsZWN0ZWQnLCAoKSA9PiB7CisgICAgaXQoJ2RvZXMgbm90IHNlbmQgdGhlIHJl cXVlc3QgdG8gdGhlIGJhY2tlbmQnLCAoZG9uZSkgPT4geworICAgICAgbmV0d29ya01vY2sub25B bnkoJy4qJykucmVwbHkoMjAwLCAoKSA9PiB7CisgICAgICB9KTsKKworICAgICAgc2V0VGltZW91 dCgoKSA9PiB7CisgICAgICAgIGV4cGVjdChkaXNhYmxlVHJpZ2dlcnModHJlZSwgYWxlcnRpZnks IGdlbmVyYXRlVXJsU3B5LCB7fSkpLnRvQmUoZmFsc2UpOworICAgICAgICBkb25lKCk7CisgICAg ICB9LCAwKTsKKyAgICB9KTsKKyAgfSk7CisKKyAgZGVzY3JpYmUoJ2Egbm9kZSBpcyBzZWxlY3Rl ZCcsICgpID0+IHsKKyAgICBkZXNjcmliZSgnbm9kZSBhcyBubyBkYXRhJywgKCkgPT4geworICAg ICAgaXQoJ2RvZXMgbm90IHNlbmQgdGhlIHJlcXVlc3QgdG8gdGhlIGJhY2tlbmQnLCAoKSA9PiB7 CisgICAgICAgIHRyZWUuc2VsZWN0Tm9kZShbe2lkOiAndGFibGUtbm8tZGF0YSd9XSk7CisKKyAg ICAgICAgbmV0d29ya01vY2sub25BbnkoJy4qJykucmVwbHkoMjAwLCAoKSA9PiB7CisgICAgICAg IH0pOworCisgICAgICAgIHNldFRpbWVvdXQoKCkgPT4geworICAgICAgICAgIGV4cGVjdChkaXNh YmxlVHJpZ2dlcnModHJlZSwgYWxlcnRpZnksIGdlbmVyYXRlVXJsU3B5LCB7fSkpLnRvQmUoZmFs c2UpOworICAgICAgICB9LCAwKTsKKyAgICAgIH0pOworICAgIH0pOworCisgICAgZGVzY3JpYmUo J25vZGUgYXMgIGRhdGEnLCAoKSA9PiB7CisgICAgICBkZXNjcmliZSgnYmFja2VuZCByZXNwb25k cyB3aXRoIHN1Y2Nlc3MnLCAoKSA9PiB7CisgICAgICAgIGxldCBuZXR3b3JrTW9ja0NhbGxlZFdp dGg7CisgICAgICAgIGJlZm9yZUVhY2goKCkgPT4geworICAgICAgICAgIG5ldHdvcmtNb2NrQ2Fs bGVkV2l0aCA9IGZhbHNlOworICAgICAgICAgIG5ldHdvcmtNb2NrLm9uUHV0KC8uKi8pLnJlcGx5 KChjb25maWd1cmF0aW9uKSA9PiB7CisgICAgICAgICAgICBuZXR3b3JrTW9ja0NhbGxlZFdpdGgg PSBjb25maWd1cmF0aW9uOworICAgICAgICAgICAgcmV0dXJuIFsyMDAsIHsKKyAgICAgICAgICAg ICAgc3VjY2VzczogMSwKKyAgICAgICAgICAgICAgaW5mbzogJ3NvbWUgaW5mb3JtYXRpb24nLAor ICAgICAgICAgICAgfV07CisgICAgICAgICAgfSk7CisgICAgICAgIH0pOworCisgICAgICAgIGl0 KCdkaXNwbGF5cyBhbiBhbGVydCBib3ggd2l0aCBzdWNjZXNzJywgKGRvbmUpID0+IHsKKyAgICAg ICAgICB0cmVlLnNlbGVjdE5vZGUoW3tpZDogJ3RhYmxlMSd9XSk7CisgICAgICAgICAgZGlzYWJs ZVRyaWdnZXJzKHRyZWUsIGFsZXJ0aWZ5LCBnZW5lcmF0ZVVybFNweSwge30pOworICAgICAgICAg IHNldFRpbWVvdXQoKCkgPT4geworICAgICAgICAgICAgZXhwZWN0KGFsZXJ0aWZ5LnN1Y2Nlc3Mp LnRvSGF2ZUJlZW5DYWxsZWRXaXRoKCdzb21lIGluZm9ybWF0aW9uJyk7CisgICAgICAgICAgICBk b25lKCk7CisgICAgICAgICAgfSwgMCk7CisgICAgICAgIH0pOworCisgICAgICAgIGl0KCdyZWxv YWRzIHRoZSBub2RlJywgKGRvbmUpID0+IHsKKyAgICAgICAgICBkaXNhYmxlVHJpZ2dlcnModHJl ZSwgYWxlcnRpZnksIGdlbmVyYXRlVXJsU3B5LCB7aXRlbTogW3tpZDogJ3RhYmxlMSd9XX0pOwor ICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4geworICAgICAgICAgICAgZXhwZWN0KHRyZWUuc2Vs ZWN0ZWQoKSkudG9FcXVhbChbJzxsaT50YWJsZTE8L2xpPiddKTsKKyAgICAgICAgICAgIGRvbmUo KTsKKyAgICAgICAgICB9LCAyMCk7CisgICAgICAgIH0pOworCisgICAgICAgIGl0KCdjYWxsIGJh Y2tlbmQgd2l0aCB0aGUgY29ycmVjdCBwYXJhbWV0ZXJzJywgKGRvbmUpID0+IHsKKyAgICAgICAg ICBkaXNhYmxlVHJpZ2dlcnModHJlZSwgYWxlcnRpZnksIGdlbmVyYXRlVXJsU3B5LCB7aXRlbTog W3tpZDogJ3RhYmxlMSd9XX0pOworICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4geworICAgICAg ICAgICAgZXhwZWN0KG5ldHdvcmtNb2NrQ2FsbGVkV2l0aC5kYXRhKS50b0VxdWFsKEpTT04uc3Ry aW5naWZ5KHtlbmFibGU6ICdmYWxzZSd9KSk7CisgICAgICAgICAgICBkb25lKCk7CisgICAgICAg ICAgfSwgMCk7CisgICAgICAgIH0pOworICAgICAgfSk7CisKKyAgICAgIGRlc2NyaWJlKCdiYWNr ZW5kIHJlc3BvbmRzIHdpdGggZXJyb3InLCAoKSA9PiB7CisgICAgICAgIGJlZm9yZUVhY2goKCkg PT4geworICAgICAgICAgIG5ldHdvcmtNb2NrLm9uUHV0KC8uKi8pLnJlcGx5KCgpID0+IHsKKyAg ICAgICAgICAgIHJldHVybiBbNTAwLCB7CisgICAgICAgICAgICAgIHN1Y2Nlc3M6IDAsCisgICAg ICAgICAgICAgIGVycm9ybXNnOiAnc29tZSBlcnJvciBtZXNzYWdlJywKKyAgICAgICAgICAgIH1d OworICAgICAgICAgIH0pOworICAgICAgICB9KTsKKworICAgICAgICBpdCgnZGlzcGxheXMgYW4g ZXJyb3IgYWxlcnQnLCAoZG9uZSkgPT4geworICAgICAgICAgIHRyZWUuc2VsZWN0Tm9kZShbe2lk OiAndGFibGUxJ31dKTsKKyAgICAgICAgICBkaXNhYmxlVHJpZ2dlcnModHJlZSwgYWxlcnRpZnks IGdlbmVyYXRlVXJsU3B5LCB7fSk7CisgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7CisgICAg ICAgICAgICBleHBlY3QoYWxlcnRpZnkuZXJyb3IpLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKCdzb21l IGVycm9yIG1lc3NhZ2UnKTsKKyAgICAgICAgICAgIGRvbmUoKTsKKyAgICAgICAgICB9LCAwKTsK KyAgICAgICAgfSk7CisKKyAgICAgICAgaXQoJ3VubG9hZCB0aGUgbm9kZScsIChkb25lKSA9PiB7 CisgICAgICAgICAgZGlzYWJsZVRyaWdnZXJzKHRyZWUsIGFsZXJ0aWZ5LCBnZW5lcmF0ZVVybFNw eSwge2l0ZW06IFt7aWQ6ICd0YWJsZTEnfV19KTsKKworICAgICAgICAgIHNldFRpbWVvdXQoKCkg PT4geworICAgICAgICAgICAgZXhwZWN0KHRyZWUuZmluZE5vZGVCeURvbUVsZW1lbnQoW3tpZDog J3RhYmxlMSd9XSkuY2hpbGRyZW4ubGVuZ3RoKS50b0JlKDApOworICAgICAgICAgICAgZG9uZSgp OworICAgICAgICAgIH0sIDIwKTsKKyAgICAgICAgfSk7CisgICAgICB9KTsKKyAgICB9KTsKKyAg fSk7Cit9KTsKZGlmZiAtLWdpdCBhL3dlYi9yZWdyZXNzaW9uL2phdmFzY3JpcHQvdHJlZS9wZ2Fk bWluX3RyZWVfbm9kZV9zcGVjLmpzIGIvd2ViL3JlZ3Jlc3Npb24vamF2YXNjcmlwdC90cmVlL3Bn YWRtaW5fdHJlZV9ub2RlX3NwZWMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MDAuLjQ3OWU1MTVjCi0tLSAvZGV2L251bGwKKysrIGIvd2ViL3JlZ3Jlc3Npb24vamF2YXNjcmlw dC90cmVlL3BnYWRtaW5fdHJlZV9ub2RlX3NwZWMuanMKQEAgLTAsMCArMSwzNTMgQEAKKy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vCisvLworLy8gcGdBZG1pbiA0IC0gUG9zdGdyZVNRTCBUb29scworLy8KKy8v IENvcHlyaWdodCAoQykgMjAxMyAtIDIwMTgsIFRoZSBwZ0FkbWluIERldmVsb3BtZW50IFRlYW0K Ky8vIFRoaXMgc29mdHdhcmUgaXMgcmVsZWFzZWQgdW5kZXIgdGhlIFBvc3RncmVTUUwgTGljZW5j ZQorLy8KKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisKK2ltcG9ydCB7CisgIGdldFRyZWVOb2RlSGllcmFy Y2h5RnJvbUVsZW1lbnQsCisgIGdldFRyZWVOb2RlSGllcmFyY2h5RnJvbUlkZW50aWZpZXIsCit9 IGZyb20gJy4uLy4uLy4uL3BnYWRtaW4vc3RhdGljL2pzL3RyZWUvcGdhZG1pbl90cmVlX25vZGUn OworaW1wb3J0IHtUcmVlTm9kZX0gZnJvbSAnLi4vLi4vLi4vcGdhZG1pbi9zdGF0aWMvanMvdHJl ZS90cmVlJzsKK2ltcG9ydCB7VHJlZUZha2V9IGZyb20gJy4vdHJlZV9mYWtlJzsKKworY29uc3Qg Y29udGV4dCA9IGRlc2NyaWJlOworCitkZXNjcmliZSgndHJlZSNub2RlI2dldFRyZWVOb2RlSGll cmFyY2h5JywgKCkgPT4geworICBsZXQgYnJvd3NlcjsKKyAgbGV0IG5ld1RyZWU7CisgIGJlZm9y ZUVhY2goKCkgPT4geworICAgIG5ld1RyZWUgPSBuZXcgVHJlZUZha2UoKTsKKyAgICBicm93c2Vy ID0geworICAgICAgTm9kZXM6IHsKKyAgICAgICAgJ3NwZWNpYWwgb25lJzoge2hhc0lkOiB0cnVl fSwKKyAgICAgICAgJ2NoaWxkIHNwZWNpYWwnOiB7aGFzSWQ6IHRydWV9LAorICAgICAgICAnb3Ro ZXIgdHlwZSc6IHtoYXNJZDogdHJ1ZX0sCisgICAgICAgICd0YWJsZSc6IHtoYXNJZDogdHJ1ZX0s CisgICAgICAgICdwYXJ0aXRpb24nOiB7aGFzSWQ6IHRydWV9LAorICAgICAgICAnbm8gaWQnOiB7 aGFzSWQ6IGZhbHNlfSwKKyAgICAgIH0sCisgICAgfTsKKyAgICBicm93c2VyLnRyZWVNZW51ID0g bmV3VHJlZTsKKyAgfSk7CisKKyAgY29udGV4dCgnZ2V0VHJlZU5vZGVIaWVyYXJjaHkgaXMgY2Fs bGVkIHdpdGggYWNpVHJlZU5vZGUgb2JqZWN0JywgKCkgPT4geworICAgIGRlc2NyaWJlKCdXaGVu IHRoZSBjdXJyZW50IG5vZGUgaXMgcm9vdCBlbGVtZW50JywgKCkgPT4geworICAgICAgYmVmb3Jl RWFjaCgoKSA9PiB7CisgICAgICAgIG5ld1RyZWUuYWRkTmV3Tm9kZSgncm9vdCcsIHsKKyAgICAg ICAgICAnc29tZSBrZXknOiAnc29tZSB2YWx1ZScsCisgICAgICAgICAgJ190eXBlJzogJ3NwZWNp YWwgb25lJywKKyAgICAgICAgfSk7CisgICAgICB9KTsKKworICAgICAgaXQoJ3JldHVybnMgYSBv YmplY3Qgd2l0aCB0aGUgZWxlbWVudCB0eXBlIHBhc3NlZCBkYXRhIGFuZCBwcmlvcml0eSA9PSAw JywgKCkgPT4geworICAgICAgICBjb25zdCByZXN1bHQgPSBnZXRUcmVlTm9kZUhpZXJhcmNoeUZy b21JZGVudGlmaWVyLmJpbmQoYnJvd3NlcikoW3tpZDogJ3Jvb3QnfV0pOworICAgICAgICBleHBl Y3QocmVzdWx0KS50b0VxdWFsKHsKKyAgICAgICAgICAnc3BlY2lhbCBvbmUnOiB7CisgICAgICAg ICAgICAnc29tZSBrZXknOiAnc29tZSB2YWx1ZScsCisgICAgICAgICAgICAnX3R5cGUnOiAnc3Bl Y2lhbCBvbmUnLAorICAgICAgICAgICAgJ3ByaW9yaXR5JzogMCwKKyAgICAgICAgICB9LAorICAg ICAgICB9KTsKKyAgICAgIH0pOworICAgIH0pOworCisgICAgZGVzY3JpYmUoJ1doZW4gdGhlIGN1 cnJlbnQgbm9kZSBpcyBub3Qgb2YgYSBrbm93biB0eXBlJywgKCkgPT4geworICAgICAgYmVmb3Jl RWFjaCgoKSA9PiB7CisgICAgICAgIG5ld1RyZWUuYWRkTmV3Tm9kZSgncm9vdCcsIHsKKyAgICAg ICAgICAnc29tZSBrZXknOiAnc29tZSB2YWx1ZScsCisgICAgICAgICAgJ190eXBlJzogJ2RvIG5v dCBleGlzdCcsCisgICAgICAgIH0sIFtdKTsKKyAgICAgIH0pOworCisgICAgICBpdCgncmV0dXJu cyBhIGVtcHR5IG9iamVjdCcsICgpID0+IHsKKyAgICAgICAgY29uc3QgcmVzdWx0ID0gZ2V0VHJl ZU5vZGVIaWVyYXJjaHlGcm9tSWRlbnRpZmllci5iaW5kKGJyb3dzZXIpKCdyb290Jyk7CisgICAg ICAgIGV4cGVjdChyZXN1bHQpLnRvRXF1YWwoe30pOworICAgICAgfSk7CisgICAgfSk7CisKKyAg ICBkZXNjcmliZSgnV2hlbiB0aGUgY3VycmVudCBub2RlIHR5cGUgaGFzIG5vIGlkJywgKCkgPT4g eworICAgICAgYmVmb3JlRWFjaCgoKSA9PiB7CisgICAgICAgIG5ld1RyZWUuYWRkTmV3Tm9kZSgn cm9vdCcsIHsKKyAgICAgICAgICAnc29tZSBrZXknOiAnc29tZSB2YWx1ZScsCisgICAgICAgICAg J190eXBlJzogJ25vIGlkJywKKyAgICAgICAgfSwgW10pOworICAgICAgfSk7CisKKyAgICAgIGl0 KCdyZXR1cm5zIGEgZW1wdHkgb2JqZWN0JywgKCkgPT4geworICAgICAgICBjb25zdCByZXN1bHQg PSBnZXRUcmVlTm9kZUhpZXJhcmNoeUZyb21JZGVudGlmaWVyLmJpbmQoYnJvd3NlcikoJ3Jvb3Qn KTsKKyAgICAgICAgZXhwZWN0KHJlc3VsdCkudG9FcXVhbCh7fSk7CisgICAgICB9KTsKKyAgICB9 KTsKKworICAgIGRlc2NyaWJlKCdXaGVuIHRoZSBjdXJyZW50IG5vZGUgaXMgYXQgdGhlIHNlY29u ZCBsZXZlbCcsICgpID0+IHsKKyAgICAgIGJlZm9yZUVhY2goKCkgPT4geworICAgICAgICBjb25z dCByb290ID0gbmV3VHJlZS5hZGROZXdOb2RlKCdyb290JywgeworICAgICAgICAgICdzb21lIGtl eSc6ICdzb21lIHZhbHVlJywKKyAgICAgICAgICAnX3R5cGUnOiAnc3BlY2lhbCBvbmUnLAorICAg ICAgICB9KTsKKyAgICAgICAgY29uc3QgZmlyc3RDaGlsZCA9IG5ldyBUcmVlTm9kZSgnZmlyc3Qg Y2hpbGQnLCB7CisgICAgICAgICAgJ3NvbWUga2V5JzogJ3NvbWUgb3RoZXIgdmFsdWUnLAorICAg ICAgICAgICdfdHlwZSc6ICdjaGlsZCBzcGVjaWFsJywKKyAgICAgICAgfSwgWydyb290J10pOwor ICAgICAgICBuZXdUcmVlLmFkZENoaWxkKHJvb3QsIGZpcnN0Q2hpbGQpOworICAgICAgfSk7CisK KyAgICAgIGl0KCdyZXR1cm5zIGEgZW1wdHkgb2JqZWN0JywgKCkgPT4geworICAgICAgICBjb25z dCByZXN1bHQgPSBnZXRUcmVlTm9kZUhpZXJhcmNoeUZyb21JZGVudGlmaWVyLmJpbmQoYnJvd3Nl cikoW3tpZDogJ2ZpcnN0IGNoaWxkJ31dKTsKKyAgICAgICAgZXhwZWN0KHJlc3VsdCkudG9FcXVh bCh7CisgICAgICAgICAgJ2NoaWxkIHNwZWNpYWwnOiB7CisgICAgICAgICAgICAnc29tZSBrZXkn OiAnc29tZSBvdGhlciB2YWx1ZScsCisgICAgICAgICAgICAnX3R5cGUnOiAnY2hpbGQgc3BlY2lh bCcsCisgICAgICAgICAgICAncHJpb3JpdHknOiAwLAorICAgICAgICAgIH0sCisgICAgICAgICAg J3NwZWNpYWwgb25lJzogeworICAgICAgICAgICAgJ3NvbWUga2V5JzogJ3NvbWUgdmFsdWUnLAor ICAgICAgICAgICAgJ190eXBlJzogJ3NwZWNpYWwgb25lJywKKyAgICAgICAgICAgICdwcmlvcml0 eSc6IC0xLAorICAgICAgICAgIH0sCisgICAgICAgIH0pOworICAgICAgfSk7CisgICAgfSk7CisK KyAgICBjb250ZXh0KCdXaGVuIHRyZWUgYXMgInNwZWNpYWwgdHlwZSInLCAoKSA9PiB7CisgICAg ICBjb250ZXh0KCdXaGVuICJzcGVjaWFsIHR5cGUiIGhhdmUgIm90aGVyIHR5cGUiJywgKCkgPT4g eworICAgICAgICBjb250ZXh0KCdXaGVuICJvdGhlciB0eXBlIiBoYXZlICJzcGVjaWFsIHR5cGUi JywgKCkgPT4geworICAgICAgICAgIGRlc2NyaWJlKCdXaGVuIHJldHJpZXZpbmcgbGVhZCBub2Rl JywgKCkgPT4geworICAgICAgICAgICAgaXQoJ2RvZXMgbm90IG92ZXJyaWRlIHByZXZpb3VzIG5v ZGUgdHlwZSBkYXRhJywgKCkgPT4geworICAgICAgICAgICAgICBjb25zdCByb290Tm9kZSA9IG5l d1RyZWUuYWRkTmV3Tm9kZSgncm9vdCcsIHsKKyAgICAgICAgICAgICAgICAnc29tZSBrZXknOiAn c29tZSB2YWx1ZScsCisgICAgICAgICAgICAgICAgJ190eXBlJzogJ3NwZWNpYWwgb25lJywKKyAg ICAgICAgICAgICAgfSwgW10pOworCisgICAgICAgICAgICAgIGNvbnN0IGxldmVsMSA9IG5ldyBU cmVlTm9kZSgnbGV2ZWwgMScsIHsKKyAgICAgICAgICAgICAgICAnc29tZSBrZXknOiAnc29tZSB2 YWx1ZScsCisgICAgICAgICAgICAgICAgJ190eXBlJzogJ290aGVyIHR5cGUnLAorICAgICAgICAg ICAgICB9KTsKKyAgICAgICAgICAgICAgbmV3VHJlZS5hZGRDaGlsZChyb290Tm9kZSwgbGV2ZWwx KTsKKworICAgICAgICAgICAgICBuZXdUcmVlLmFkZENoaWxkKGxldmVsMSwgbmV3IFRyZWVOb2Rl KCdsZXZlbCAyJywgeworICAgICAgICAgICAgICAgICdzb21lIGtleSc6ICdleHBlY3RlZCB2YWx1 ZScsCisgICAgICAgICAgICAgICAgJ190eXBlJzogJ3NwZWNpYWwgb25lJywKKyAgICAgICAgICAg ICAgICAnc29tZSBvdGhlciBrZXknOiAnc29tZSBvdGhlciB2YWx1ZScsCisgICAgICAgICAgICAg IH0pKTsKKworICAgICAgICAgICAgICBjb25zdCByZXN1bHQgPSBnZXRUcmVlTm9kZUhpZXJhcmNo eUZyb21JZGVudGlmaWVyLmJpbmQoYnJvd3NlcikoW3tpZDogJ2xldmVsIDInfV0pOworICAgICAg ICAgICAgICBleHBlY3QocmVzdWx0KS50b0VxdWFsKHsKKyAgICAgICAgICAgICAgICAnc3BlY2lh bCBvbmUnOiB7CisgICAgICAgICAgICAgICAgICAnc29tZSBrZXknOiAnZXhwZWN0ZWQgdmFsdWUn LAorICAgICAgICAgICAgICAgICAgJ190eXBlJzogJ3NwZWNpYWwgb25lJywKKyAgICAgICAgICAg ICAgICAgICdzb21lIG90aGVyIGtleSc6ICdzb21lIG90aGVyIHZhbHVlJywKKyAgICAgICAgICAg ICAgICAgICdwcmlvcml0eSc6IDAsCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAg ICAnb3RoZXIgdHlwZSc6IHsKKyAgICAgICAgICAgICAgICAgICdzb21lIGtleSc6ICdzb21lIHZh bHVlJywKKyAgICAgICAgICAgICAgICAgICdfdHlwZSc6ICdvdGhlciB0eXBlJywKKyAgICAgICAg ICAgICAgICAgICdwcmlvcml0eSc6IC0xLAorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAg ICAgIH0pOworICAgICAgICAgICAgfSk7CisgICAgICAgICAgfSk7CisgICAgICAgIH0pOworICAg ICAgfSk7CisgICAgfSk7CisKKyAgICBjb250ZXh0KCdXaGVuIHRyZWUgaGFzIHRhYmxlJywgKCkg PT4geworICAgICAgY29udGV4dCgnd2hlbiB0YWJsZSBoYXMgcGFydGl0aW9uJywgKCkgPT4gewor ICAgICAgICBpdCgncmV0dXJucyB0YWJsZSB3aXRoIHBhcnRpdGlvbiBwYXJhbWV0ZXJzJywgKCkg PT4geworICAgICAgICAgIGNvbnN0IHJvb3QgPSBuZXdUcmVlLmFkZE5ld05vZGUoJ3Jvb3QnLCB7 CisgICAgICAgICAgICAnc29tZSBrZXknOiAnc29tZSB2YWx1ZScsCisgICAgICAgICAgICAnX3R5 cGUnOiAnc3BlY2lhbCBvbmUnLAorICAgICAgICAgIH0sIFtdKTsKKyAgICAgICAgICBjb25zdCBs ZXZlbDEgPSBuZXcgVHJlZU5vZGUoJ2xldmVsIDEnLCB7CisgICAgICAgICAgICAnc29tZSBrZXkn OiAnc29tZSB2YWx1ZScsCisgICAgICAgICAgICAnX3R5cGUnOiAndGFibGUnLAorICAgICAgICAg IH0pOworICAgICAgICAgIG5ld1RyZWUuYWRkQ2hpbGQocm9vdCwgbGV2ZWwxKTsKKyAgICAgICAg ICBuZXdUcmVlLmFkZENoaWxkKGxldmVsMSwgbmV3IFRyZWVOb2RlKCdsZXZlbCAyJywgeworICAg ICAgICAgICAgJ3NvbWUga2V5JzogJ2V4cGVjdGVkIHZhbHVlJywKKyAgICAgICAgICAgICdfdHlw ZSc6ICdwYXJ0aXRpb24nLAorICAgICAgICAgICAgJ3NvbWUgb3RoZXIga2V5JzogJ3NvbWUgb3Ro ZXIgdmFsdWUnLAorICAgICAgICAgIH0pKTsKKworICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGdl dFRyZWVOb2RlSGllcmFyY2h5RnJvbUlkZW50aWZpZXIuYmluZChicm93c2VyKShbe2lkOidsZXZl bCAyJ31dKTsKKyAgICAgICAgICBleHBlY3QocmVzdWx0KS50b0VxdWFsKHsKKyAgICAgICAgICAg ICdzcGVjaWFsIG9uZSc6IHsKKyAgICAgICAgICAgICAgJ3NvbWUga2V5JzogJ3NvbWUgdmFsdWUn LAorICAgICAgICAgICAgICAnX3R5cGUnOiAnc3BlY2lhbCBvbmUnLAorICAgICAgICAgICAgICAn cHJpb3JpdHknOiAtMSwKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICAndGFibGUnOiB7Cisg ICAgICAgICAgICAgICdzb21lIGtleSc6ICdleHBlY3RlZCB2YWx1ZScsCisgICAgICAgICAgICAg ICdzb21lIG90aGVyIGtleSc6ICdzb21lIG90aGVyIHZhbHVlJywKKyAgICAgICAgICAgICAgJ190 eXBlJzogJ3BhcnRpdGlvbicsCisgICAgICAgICAgICAgICdwcmlvcml0eSc6IDAsCisgICAgICAg ICAgICB9LAorICAgICAgICAgIH0pOworICAgICAgICB9KTsKKyAgICAgIH0pOworICAgIH0pOwor ICB9KTsKKworICBjb250ZXh0KCdnZXRUcmVlTm9kZUhpZXJhcmNoeSBpcyBjYWxsZWQgd2l0aCBU cmVlTm9kZSBvYmplY3QnLCAoKSA9PiB7CisgICAgbGV0IHRyZWVOb2RlOworICAgIGRlc2NyaWJl KCdXaGVuIHRoZSBjdXJyZW50IG5vZGUgaXMgcm9vdCBlbGVtZW50JywgKCkgPT4geworICAgICAg YmVmb3JlRWFjaCgoKSA9PiB7CisgICAgICAgIHRyZWVOb2RlID0gbmV3VHJlZS5hZGROZXdOb2Rl KCdyb290JywgeworICAgICAgICAgICdzb21lIGtleSc6ICdzb21lIHZhbHVlJywKKyAgICAgICAg ICAnX3R5cGUnOiAnc3BlY2lhbCBvbmUnLAorICAgICAgICB9LCBbXSk7CisgICAgICB9KTsKKwor ICAgICAgaXQoJ3JldHVybnMgYSBvYmplY3Qgd2l0aCB0aGUgZWxlbWVudCB0eXBlIHBhc3NlZCBk YXRhIGFuZCBwcmlvcml0eSA9PSAwJywgKCkgPT4geworICAgICAgICBjb25zdCByZXN1bHQgPSBn ZXRUcmVlTm9kZUhpZXJhcmNoeUZyb21FbGVtZW50KGJyb3dzZXIsIHRyZWVOb2RlKTsKKyAgICAg ICAgZXhwZWN0KHJlc3VsdCkudG9FcXVhbCh7CisgICAgICAgICAgJ3NwZWNpYWwgb25lJzogewor ICAgICAgICAgICAgJ3NvbWUga2V5JzogJ3NvbWUgdmFsdWUnLAorICAgICAgICAgICAgJ190eXBl JzogJ3NwZWNpYWwgb25lJywKKyAgICAgICAgICAgICdwcmlvcml0eSc6IDAsCisgICAgICAgICAg fSwKKyAgICAgICAgfSk7CisgICAgICB9KTsKKyAgICB9KTsKKworICAgIGRlc2NyaWJlKCdXaGVu IHRoZSBjdXJyZW50IG5vZGUgaXMgbm90IG9mIGEga25vd24gdHlwZScsICgpID0+IHsKKyAgICAg IGJlZm9yZUVhY2goKCkgPT4geworICAgICAgICB0cmVlTm9kZSA9IG5ld1RyZWUuYWRkTmV3Tm9k ZSgncm9vdCcsIHsKKyAgICAgICAgICAnc29tZSBrZXknOiAnc29tZSB2YWx1ZScsCisgICAgICAg ICAgJ190eXBlJzogJ2RvIG5vdCBleGlzdCcsCisgICAgICAgIH0sIFtdKTsKKyAgICAgIH0pOwor CisgICAgICBpdCgncmV0dXJucyBhIGVtcHR5IG9iamVjdCcsICgpID0+IHsKKyAgICAgICAgY29u c3QgcmVzdWx0ID0gZ2V0VHJlZU5vZGVIaWVyYXJjaHlGcm9tRWxlbWVudChicm93c2VyLCB0cmVl Tm9kZSk7CisgICAgICAgIGV4cGVjdChyZXN1bHQpLnRvRXF1YWwoe30pOworICAgICAgfSk7Cisg ICAgfSk7CisKKyAgICBkZXNjcmliZSgnV2hlbiB0aGUgY3VycmVudCBub2RlIHR5cGUgaGFzIG5v IGlkJywgKCkgPT4geworICAgICAgYmVmb3JlRWFjaCgoKSA9PiB7CisgICAgICAgIHRyZWVOb2Rl ID0gbmV3VHJlZS5hZGROZXdOb2RlKCdyb290JywgeworICAgICAgICAgICdzb21lIGtleSc6ICdz b21lIHZhbHVlJywKKyAgICAgICAgICAnX3R5cGUnOiAnbm8gaWQnLAorICAgICAgICB9LCBbXSk7 CisgICAgICB9KTsKKworICAgICAgaXQoJ3JldHVybnMgYSBlbXB0eSBvYmplY3QnLCAoKSA9PiB7 CisgICAgICAgIGNvbnN0IHJlc3VsdCA9IGdldFRyZWVOb2RlSGllcmFyY2h5RnJvbUVsZW1lbnQo YnJvd3NlciwgdHJlZU5vZGUpOworICAgICAgICBleHBlY3QocmVzdWx0KS50b0VxdWFsKHt9KTsK KyAgICAgIH0pOworICAgIH0pOworCisgICAgZGVzY3JpYmUoJ1doZW4gdGhlIGN1cnJlbnQgbm9k ZSBpcyBhdCB0aGUgc2Vjb25kIGxldmVsJywgKCkgPT4geworICAgICAgYmVmb3JlRWFjaCgoKSA9 PiB7CisgICAgICAgIGNvbnN0IHJvb3QgPSBuZXdUcmVlLmFkZE5ld05vZGUoJ3Jvb3QnLCB7Cisg ICAgICAgICAgJ3NvbWUga2V5JzogJ3NvbWUgdmFsdWUnLAorICAgICAgICAgICdfdHlwZSc6ICdz cGVjaWFsIG9uZScsCisgICAgICAgIH0sIFtdKTsKKyAgICAgICAgdHJlZU5vZGUgPSBuZXcgVHJl ZU5vZGUoJ2ZpcnN0IGNoaWxkJywgeworICAgICAgICAgICdzb21lIGtleSc6ICdzb21lIG90aGVy IHZhbHVlJywKKyAgICAgICAgICAnX3R5cGUnOiAnY2hpbGQgc3BlY2lhbCcsCisgICAgICAgIH0p OworICAgICAgICBuZXdUcmVlLmFkZENoaWxkKHJvb3QsIHRyZWVOb2RlKTsKKyAgICAgIH0pOwor CisgICAgICBpdCgncmV0dXJucyBhIGVtcHR5IG9iamVjdCcsICgpID0+IHsKKyAgICAgICAgY29u c3QgcmVzdWx0ID0gZ2V0VHJlZU5vZGVIaWVyYXJjaHlGcm9tRWxlbWVudChicm93c2VyLCB0cmVl Tm9kZSk7CisgICAgICAgIGV4cGVjdChyZXN1bHQpLnRvRXF1YWwoeworICAgICAgICAgICdjaGls ZCBzcGVjaWFsJzogeworICAgICAgICAgICAgJ3NvbWUga2V5JzogJ3NvbWUgb3RoZXIgdmFsdWUn LAorICAgICAgICAgICAgJ190eXBlJzogJ2NoaWxkIHNwZWNpYWwnLAorICAgICAgICAgICAgJ3By aW9yaXR5JzogMCwKKyAgICAgICAgICB9LAorICAgICAgICAgICdzcGVjaWFsIG9uZSc6IHsKKyAg ICAgICAgICAgICdzb21lIGtleSc6ICdzb21lIHZhbHVlJywKKyAgICAgICAgICAgICdfdHlwZSc6 ICdzcGVjaWFsIG9uZScsCisgICAgICAgICAgICAncHJpb3JpdHknOiAtMSwKKyAgICAgICAgICB9 LAorICAgICAgICB9KTsKKyAgICAgIH0pOworICAgIH0pOworCisgICAgY29udGV4dCgnV2hlbiB0 cmVlIGFzICJzcGVjaWFsIHR5cGUiJywgKCkgPT4geworICAgICAgY29udGV4dCgnV2hlbiAic3Bl Y2lhbCB0eXBlIiBoYXZlICJvdGhlciB0eXBlIicsICgpID0+IHsKKyAgICAgICAgY29udGV4dCgn V2hlbiAib3RoZXIgdHlwZSIgaGF2ZSAic3BlY2lhbCB0eXBlIicsICgpID0+IHsKKyAgICAgICAg ICBkZXNjcmliZSgnV2hlbiByZXRyaWV2aW5nIGxlYWQgbm9kZScsICgpID0+IHsKKyAgICAgICAg ICAgIGl0KCdkb2VzIG5vdCBvdmVycmlkZSBwcmV2aW91cyBub2RlIHR5cGUgZGF0YScsICgpID0+ IHsKKyAgICAgICAgICAgICAgY29uc3Qgcm9vdCA9IG5ld1RyZWUuYWRkTmV3Tm9kZSgncm9vdCcs IHsKKyAgICAgICAgICAgICAgICAnc29tZSBrZXknOiAnc29tZSB2YWx1ZScsCisgICAgICAgICAg ICAgICAgJ190eXBlJzogJ3NwZWNpYWwgb25lJywKKyAgICAgICAgICAgICAgfSwgW10pOworICAg ICAgICAgICAgICBjb25zdCBsZXZlbDEgPSBuZXcgVHJlZU5vZGUoJ2xldmVsIDEnLCB7CisgICAg ICAgICAgICAgICAgJ3NvbWUga2V5JzogJ3NvbWUgdmFsdWUnLAorICAgICAgICAgICAgICAgICdf dHlwZSc6ICdvdGhlciB0eXBlJywKKyAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgIG5l d1RyZWUuYWRkQ2hpbGQocm9vdCwgbGV2ZWwxKTsKKyAgICAgICAgICAgICAgdHJlZU5vZGUgPSBu ZXcgVHJlZU5vZGUoJ2xldmVsIDInLCB7CisgICAgICAgICAgICAgICAgJ3NvbWUga2V5JzogJ2V4 cGVjdGVkIHZhbHVlJywKKyAgICAgICAgICAgICAgICAnX3R5cGUnOiAnc3BlY2lhbCBvbmUnLAor ICAgICAgICAgICAgICAgICdzb21lIG90aGVyIGtleSc6ICdzb21lIG90aGVyIHZhbHVlJywKKyAg ICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgIG5ld1RyZWUuYWRkQ2hpbGQobGV2ZWwxLCB0 cmVlTm9kZSk7CisKKyAgICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gZ2V0VHJlZU5vZGVIaWVy YXJjaHlGcm9tRWxlbWVudChicm93c2VyLCB0cmVlTm9kZSk7CisgICAgICAgICAgICAgIGV4cGVj dChyZXN1bHQpLnRvRXF1YWwoeworICAgICAgICAgICAgICAgICdzcGVjaWFsIG9uZSc6IHsKKyAg ICAgICAgICAgICAgICAgICdzb21lIGtleSc6ICdleHBlY3RlZCB2YWx1ZScsCisgICAgICAgICAg ICAgICAgICAnX3R5cGUnOiAnc3BlY2lhbCBvbmUnLAorICAgICAgICAgICAgICAgICAgJ3NvbWUg b3RoZXIga2V5JzogJ3NvbWUgb3RoZXIgdmFsdWUnLAorICAgICAgICAgICAgICAgICAgJ3ByaW9y aXR5JzogMCwKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICdvdGhlciB0eXBl JzogeworICAgICAgICAgICAgICAgICAgJ3NvbWUga2V5JzogJ3NvbWUgdmFsdWUnLAorICAgICAg ICAgICAgICAgICAgJ190eXBlJzogJ290aGVyIHR5cGUnLAorICAgICAgICAgICAgICAgICAgJ3By aW9yaXR5JzogLTEsCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgfSk7CisgICAg ICAgICAgICB9KTsKKyAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CisgICAgICB9KTsKKyAgICB9 KTsKKworICAgIGNvbnRleHQoJ1doZW4gdHJlZSBoYXMgdGFibGUnLCAoKSA9PiB7CisgICAgICBj b250ZXh0KCd3aGVuIHRhYmxlIGhhcyBwYXJ0aXRpb24nLCAoKSA9PiB7CisgICAgICAgIGl0KCdy ZXR1cm5zIHRhYmxlIHdpdGggcGFydGl0aW9uIHBhcmFtZXRlcnMnLCAoKSA9PiB7CisgICAgICAg ICAgY29uc3Qgcm9vdCA9IG5ld1RyZWUuYWRkTmV3Tm9kZSgncm9vdCcsIHsKKyAgICAgICAgICAg ICdzb21lIGtleSc6ICdzb21lIHZhbHVlJywKKyAgICAgICAgICAgICdfdHlwZSc6ICdzcGVjaWFs IG9uZScsCisgICAgICAgICAgfSk7CisgICAgICAgICAgY29uc3QgbGV2ZWwxID0gbmV3VHJlZS5h ZGROZXdOb2RlKCdsZXZlbCAxJywgeworICAgICAgICAgICAgJ3NvbWUga2V5JzogJ3NvbWUgdmFs dWUnLAorICAgICAgICAgICAgJ190eXBlJzogJ3RhYmxlJywKKyAgICAgICAgICB9KTsKKyAgICAg ICAgICBuZXdUcmVlLmFkZENoaWxkKHJvb3QsIGxldmVsMSk7CisgICAgICAgICAgdHJlZU5vZGUg PSBuZXcgVHJlZU5vZGUoJ2xldmVsIDInLCB7CisgICAgICAgICAgICAnc29tZSBrZXknOiAnZXhw ZWN0ZWQgdmFsdWUnLAorICAgICAgICAgICAgJ190eXBlJzogJ3BhcnRpdGlvbicsCisgICAgICAg ICAgICAnc29tZSBvdGhlciBrZXknOiAnc29tZSBvdGhlciB2YWx1ZScsCisgICAgICAgICAgfSk7 CisgICAgICAgICAgbmV3VHJlZS5hZGRDaGlsZChsZXZlbDEsIHRyZWVOb2RlKTsKKworICAgICAg ICAgIGNvbnN0IHJlc3VsdCA9IGdldFRyZWVOb2RlSGllcmFyY2h5RnJvbUVsZW1lbnQoYnJvd3Nl ciwgdHJlZU5vZGUpOworICAgICAgICAgIGV4cGVjdChyZXN1bHQpLnRvRXF1YWwoeworICAgICAg ICAgICAgJ3NwZWNpYWwgb25lJzogeworICAgICAgICAgICAgICAnc29tZSBrZXknOiAnc29tZSB2 YWx1ZScsCisgICAgICAgICAgICAgICdfdHlwZSc6ICdzcGVjaWFsIG9uZScsCisgICAgICAgICAg ICAgICdwcmlvcml0eSc6IC0xLAorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICd0YWJsZSc6 IHsKKyAgICAgICAgICAgICAgJ3NvbWUga2V5JzogJ2V4cGVjdGVkIHZhbHVlJywKKyAgICAgICAg ICAgICAgJ3NvbWUgb3RoZXIga2V5JzogJ3NvbWUgb3RoZXIgdmFsdWUnLAorICAgICAgICAgICAg ICAnX3R5cGUnOiAncGFydGl0aW9uJywKKyAgICAgICAgICAgICAgJ3ByaW9yaXR5JzogMCwKKyAg ICAgICAgICAgIH0sCisgICAgICAgICAgfSk7CisgICAgICAgIH0pOworICAgICAgfSk7CisgICAg fSk7CisgIH0pOworfSk7CmRpZmYgLS1naXQgYS93ZWIvcmVncmVzc2lvbi9qYXZhc2NyaXB0L3Ry ZWUvdHJlZV9mYWtlLmpzIGIvd2ViL3JlZ3Jlc3Npb24vamF2YXNjcmlwdC90cmVlL3RyZWVfZmFr ZS5qcwppbmRleCBiMjg1YTQ1Zi4uZTAzZDcxZmIgMTAwNjQ0Ci0tLSBhL3dlYi9yZWdyZXNzaW9u L2phdmFzY3JpcHQvdHJlZS90cmVlX2Zha2UuanMKKysrIGIvd2ViL3JlZ3Jlc3Npb24vamF2YXNj cmlwdC90cmVlL3RyZWVfZmFrZS5qcwpAQCAtMTAsNiArMTAsMzIgQEAKIGltcG9ydCB7VHJlZX0g ZnJvbSAnLi4vLi4vLi4vcGdhZG1pbi9zdGF0aWMvanMvdHJlZS90cmVlJzsKIAogZXhwb3J0IGNs YXNzIFRyZWVGYWtlIGV4dGVuZHMgVHJlZSB7CisgIHN0YXRpYyBidWlsZChzdHJ1Y3R1cmUpIHsK KyAgICBsZXQgdHJlZSA9IG5ldyBUcmVlRmFrZSgpOworICAgIGxldCByb290Tm9kZSA9IHRyZWUu cm9vdE5vZGU7CisKKyAgICBpZiAoc3RydWN0dXJlLmNoaWxkcmVuICE9PSB1bmRlZmluZWQpIHsK KyAgICAgIHN0cnVjdHVyZS5jaGlsZHJlbi5mb3JFYWNoKChjaGlsZCkgPT4geworICAgICAgICBU cmVlRmFrZS5yZWN1cnNpdmVseUFkZE5vZGVzKHRyZWUsIGNoaWxkLCByb290Tm9kZSk7CisgICAg ICB9KTsKKyAgICB9CisKKyAgICByZXR1cm4gdHJlZTsKKyAgfQorCisgIHN0YXRpYyByZWN1cnNp dmVseUFkZE5vZGVzKHRyZWUsIG5ld05vZGUsIHBhcmVudCkgeworICAgIGxldCBpZCA9IG5ld05v ZGUuaWQ7CisgICAgbGV0IGRhdGEgPSBuZXdOb2RlLmRhdGEgPyBuZXdOb2RlLmRhdGEgOiB7fTsK KyAgICBsZXQgZG9tTm9kZSA9IG5ld05vZGUuZG9tTm9kZSA/IG5ld05vZGUuZG9tTm9kZSA6IFt7 aWQ6IGlkfV07CisgICAgdHJlZS5hZGROZXdOb2RlKGlkLCBkYXRhLCBkb21Ob2RlLCB0cmVlLnRy YW5zbGF0ZVRyZWVOb2RlSWRGcm9tQUNJVHJlZShbcGFyZW50XSkpOworCisgICAgaWYgKG5ld05v ZGUuY2hpbGRyZW4gIT09IHVuZGVmaW5lZCkgeworICAgICAgbmV3Tm9kZS5jaGlsZHJlbi5mb3JF YWNoKChjaGlsZCkgPT4geworICAgICAgICBUcmVlRmFrZS5yZWN1cnNpdmVseUFkZE5vZGVzKHRy ZWUsIGNoaWxkLCBuZXdOb2RlKTsKKyAgICAgIH0pOworICAgIH0KKyAgfQorCiAgIGNvbnN0cnVj dG9yKCkgewogICAgIHN1cGVyKCk7CiAgICAgdGhpcy5hY2lUcmVlVG9PdXJUcmVlVHJhbnNsYXRv ciA9IHt9OwpAQCAtNDUsNyArNzEsNyBAQCBleHBvcnQgY2xhc3MgVHJlZUZha2UgZXh0ZW5kcyBU cmVlIHsKICAgfQogCiAgIHRyYW5zbGF0ZVRyZWVOb2RlSWRGcm9tQUNJVHJlZShhY2lUcmVlTm9k ZSkgewotICAgIGlmKGFjaVRyZWVOb2RlID09PSB1bmRlZmluZWQgfHwgYWNpVHJlZU5vZGVbMF0g PT09IHVuZGVmaW5lZCkgeworICAgIGlmIChhY2lUcmVlTm9kZSA9PT0gdW5kZWZpbmVkIHx8IGFj aVRyZWVOb2RlWzBdID09PSB1bmRlZmluZWQpIHsKICAgICAgIHJldHVybiBudWxsOwogICAgIH0K ICAgICByZXR1cm4gdGhpcy5hY2lUcmVlVG9PdXJUcmVlVHJhbnNsYXRvclthY2lUcmVlTm9kZVsw XS5pZF07Ci0tIAoyLjE2LjIKCg== --00000000000053c199056b687e7b--