<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>36394</bug_id>
          
          <creation_ts>2010-03-19 15:48:49 -0700</creation_ts>
          <short_desc>Include git commits in the diff for webkit-patch upload/land.</short_desc>
          <delta_ts>2010-05-25 16:02:47 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>37103</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Ojan Vafai">ojan</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>aroben</cc>
    
    <cc>cjerdonek</cc>
    
    <cc>ddkilzer</cc>
    
    <cc>eric</cc>
    
    <cc>evan</cc>
    
    <cc>hamaji</cc>
    
    <cc>levin</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>202066</commentid>
    <comment_count>0</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2010-03-19 15:48:49 -0700</bug_when>
    <thetext>Include git commits in the diff for webkit-patch upload</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>202067</commentid>
    <comment_count>1</comment_count>
      <attachid>51197</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2010-03-19 15:49:13 -0700</bug_when>
    <thetext>Created attachment 51197
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>202207</commentid>
    <comment_count>2</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-03-20 08:53:40 -0700</bug_when>
    <thetext>Cool!  CCing our resident git expert.

I think there are other places where we say &quot;trunk&quot; that we should do this trick instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>202208</commentid>
    <comment_count>3</comment_count>
      <attachid>51197</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-03-20 08:54:24 -0700</bug_when>
    <thetext>Comment on attachment 51197
Patch

This might break some of our tests.  Did you run test-webkitpy --all?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>202320</commentid>
    <comment_count>4</comment_count>
    <who name="Chris Jerdonek">cjerdonek</who>
    <bug_when>2010-03-21 14:40:33 -0700</bug_when>
    <thetext>Note that check-webkit-style also uses create_patch() when invoked without passing paths.  What implications will this change have?

Also, should the same logic be applied to create_patch_from_local_commit() and create_patch_since_local_commit() for consistency?

Might we want to create a new method instead?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>202402</commentid>
    <comment_count>5</comment_count>
    <who name="Evan Martin">evan</who>
    <bug_when>2010-03-21 22:52:53 -0700</bug_when>
    <thetext>+        # Diff against the remote server to include both working copy and committed diffs.

It&apos;s not the remote server (all git operations but push/pull are local), it&apos;s the remote branch.


+        return run_command([&apos;git&apos;, &apos;diff&apos;, &apos;--binary&apos;, remote])

so say you&apos;re in this situation

*--A--B--C--D   &lt;- trunk
    \
     X--Y--Z  &lt;- my awesome patch

you&apos;re diffing D and Z, so your patch will include all of the stuff in A, B, C, which I don&apos;t think you want.

Two options:
1) refuse to do a diff unless your patch is merged with trunk.  (If you did a &quot;merge trunk&quot; into your branch, you&apos;d have a new commit derived from D and Z and your diff command would display the right thing.)

2) or, do &quot;git diff --binary trunk...&quot;  (with the ... added), which basically means &quot;diff the stuff I did not on trunk&quot; and is computed as a diff of Z and A (the point where your branch diverged from trunk)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>202661</commentid>
    <comment_count>6</comment_count>
      <attachid>51322</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2010-03-22 11:56:16 -0700</bug_when>
    <thetext>Created attachment 51322
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>202664</commentid>
    <comment_count>7</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2010-03-22 12:01:17 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; Note that check-webkit-style also uses create_patch() when invoked without
&gt; passing paths.  What implications will this change have?

This means that local commits that are not in SVN will also be included in the check-webkit-style call. That seems correct to me.

&gt; Also, should the same logic be applied to create_patch_from_local_commit() and
&gt; create_patch_since_local_commit() for consistency?

I&apos;m not sure. These seem correct to create a patch just for a single commit...I think.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>202682</commentid>
    <comment_count>8</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-03-22 12:27:32 -0700</bug_when>
    <thetext>Technically scm.py shouldn&apos;t know about prepare-ChangeLog...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>202702</commentid>
    <comment_count>9</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-03-22 12:37:42 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; Technically scm.py shouldn&apos;t know about prepare-ChangeLog...

Isn&apos;t that what your new fancy webkit_checkout is for?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>202802</commentid>
    <comment_count>10</comment_count>
    <who name="Chris Jerdonek">cjerdonek</who>
    <bug_when>2010-03-22 15:36:18 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; (In reply to comment #4)
&gt; &gt; Note that check-webkit-style also uses create_patch() when invoked without
&gt; &gt; passing paths.  What implications will this change have?
&gt; 
&gt; This means that local commits that are not in SVN will also be included in the
&gt; check-webkit-style call. That seems correct to me.

Evan&apos;s post clarified what you were trying to do.  Yes, XYZ without ABC makes sense.

&gt; &gt; Also, should the same logic be applied to create_patch_from_local_commit() and
&gt; &gt; create_patch_since_local_commit() for consistency?
&gt; 
&gt; I&apos;m not sure. These seem correct to create a patch just for a single commit...I
&gt; think.

create_patch_since_local_commit() creates a patch for several commits (all commits since the given commit).  Since the caller is already providing a commit to diff with in this case, it doesn&apos;t seem like it would make sense to apply the same logic (I&apos;m answering my own question here).  If create_patch() was supposed to include ABC in the diff, then the answer wouldn&apos;t be as clear.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>203115</commentid>
    <comment_count>11</comment_count>
    <who name="Chris Jerdonek">cjerdonek</who>
    <bug_when>2010-03-23 11:08:39 -0700</bug_when>
    <thetext>Do you think you could clarify and update the documentation here?

http://trac.webkit.org/browser/trunk/WebKitTools/Scripts/webkitpy/style/optparser.py?rev=56331#L57

I believe where previously people did--

&gt; check-webkit-style

they will now need to do--

&gt; check-webkit-style --git-commit HEAD</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>203132</commentid>
    <comment_count>12</comment_count>
      <attachid>51443</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2010-03-23 11:48:59 -0700</bug_when>
    <thetext>Created attachment 51443
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>203135</commentid>
    <comment_count>13</comment_count>
      <attachid>51443</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2010-03-23 11:50:14 -0700</bug_when>
    <thetext>Comment on attachment 51443
Patch

Passes unittests, adds to check-webkit-style documentation and removes the prepare_changelog_arguments method.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>203141</commentid>
    <comment_count>14</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-03-23 12:06:56 -0700</bug_when>
    <thetext>This seems strange to me.  We should discuss in person.

The old &quot;git-send-bugzilla&quot; command took a commit id and everythign forward from that revision was sent.  That was like how &quot;git diff&quot; worked.  The new webkit-patch used to work like that, and then was changed to work more like git cherry-pick.  I&apos;m confused by this new symantecs.  I&apos;m also confused as to how you&apos;ll make land or upload work sanely with changelogs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>203288</commentid>
    <comment_count>15</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2010-03-23 17:05:48 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; This seems strange to me.  We should discuss in person.

I&apos;ll attempt a written discussion since I&apos;m sure others will wonder the same thing.

&gt; The old &quot;git-send-bugzilla&quot; command took a commit id and everythign forward
&gt; from that revision was sent.  That was like how &quot;git diff&quot; worked. 

git-send-bugzilla sent a separate patch for each local commit. git diff gives you the diff of the working copy. Those seem totally different to me.

&gt; The new
&gt; webkit-patch used to work like that, and then was changed to work more like git
&gt; cherry-pick.

I don&apos;t understand how it&apos;s like cherry-pick now.

&gt; I&apos;m confused by this new symantecs.  I&apos;m also confused as to how
&gt; you&apos;ll make land or upload work sanely with changelogs.

Hopefully this will clarify. The new behavior makes sense if you think about &quot;webkit-patch land&quot; will do.

Consider a branch with the following:
A--B--C--D

Where C and D are local commits and A and B are in the SVN repo. And, just for fun, lets say you also have some changes in the working copy.


Current state of the world:
webkit-patch upload: uploads only your working copy changes
webkit-patch land: commits your working copy changes locally (lets call that commit E), then proceeds to commit C, D and E as separate commits all with the same commit message


git-send-bugzilla behavior:
git-send-bugzilla C: uploads two patches, C and D. Leaves the working copy alone.
git-send-bugzilla D: uploads patch D

There is no git-send-bugzilla land.


New state after this patch:
webkit-patch upload: uploads a single-diff with all the local changes (C, D and working copy)
webkit-patch land: commits a single commit (E) with all the local changes (C, D and working copy) and resets your branch to the svn repo so you end up with A--B--E


Basically, the current state of the world only works if you keep all your changes in the working copy. In order to upload or commit, you need to &quot;git reset trunk&quot; or some equivalent action.

The git-send-bugzilla world could make sense if there was a way to commit a single local commit to svn, but dcommit will commit all local changes. Even if you could do this, I&apos;m not sure it would be a great workflow.

The new state lets you have multiple local commits that get uploaded as a single patch and get committed as a single commit. This allows people to have workflows where they actually use git&apos;s ability to do local commits without needing to do a bunch of reset/rebase junk in order to upload/land a patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>204275</commentid>
    <comment_count>16</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-03-25 15:59:53 -0700</bug_when>
    <thetext>Maybe a --squash option would let folks use both workflows?  It could be an option on both upload and land.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>204291</commentid>
    <comment_count>17</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2010-03-25 16:27:08 -0700</bug_when>
    <thetext>(In reply to comment #16)
&gt; Maybe a --squash option would let folks use both workflows?  It could be an
&gt; option on both upload and land.

I don&apos;t understand what the other workflow is. When is the current workflow ever superior to the squash workflow?

The current workflow requires all your changes to be in the working copy. The new one lets you continue doing that if you want, but also lets you have committed changes. In theory, the current workflow lets you have local commits that you don&apos;t want to upload, but why is that useful if committing to SVN will commit all your local commits as well?

Adding it isn&apos;t a big deal I guess, except for maintenance overhead for a feature that probably won&apos;t get used. I would want it to at least default to true.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>204771</commentid>
    <comment_count>18</comment_count>
      <attachid>51443</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-03-26 14:08:05 -0700</bug_when>
    <thetext>Comment on attachment 51443
Patch

I would rather pass a revision to prepare-ChagneLog to diff against so that you dont&apos; have to compute the remote branch twice in two languages.

 131     print STDERR &quot;  --full-diff    Populate the ChangeLogs from the full diff from trunk including local commits\n&quot;;

519520     def commit_with_message(self, message, username=None):

needs to be broken into little _ helper functions for my little brain to have a prayer of understanding.

I thought we had some helper function for running git config?
 588         remote = run_command([&apos;git&apos;, &apos;config&apos;, &apos;svn-remote.svn.fetch&apos;])

Maybe that&apos;s in credentials.py?  If so it probably should re-use code in scm.Git

%s is always better than + imo:
 607             args.append(self.svn_branch_name() + &apos;..HEAD&apos;)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>204772</commentid>
    <comment_count>19</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-03-26 14:08:18 -0700</bug_when>
    <thetext>Overall this change is awesome btw.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>205287</commentid>
    <comment_count>20</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2010-03-28 20:05:25 -0700</bug_when>
    <thetext>(In reply to comment #17)
&gt; (In reply to comment #16)
&gt; &gt; Maybe a --squash option would let folks use both workflows?  It could be an
&gt; &gt; option on both upload and land.
&gt; 
&gt; I don&apos;t understand what the other workflow is. When is the current workflow
&gt; ever superior to the squash workflow?
&gt; 
&gt; The current workflow requires all your changes to be in the working copy. The
&gt; new one lets you continue doing that if you want, but also lets you have
&gt; committed changes. In theory, the current workflow lets you have local commits
&gt; that you don&apos;t want to upload, but why is that useful if committing to SVN will
&gt; commit all your local commits as well?
&gt; 
&gt; Adding it isn&apos;t a big deal I guess, except for maintenance overhead for a
&gt; feature that probably won&apos;t get used. I would want it to at least default to
&gt; true.

I know I&apos;m in the minority, but I don&apos;t want webkit-patch squashing my commits or otherwise modifying my git repository, other than to update placeholders for reviewers (or bug numbers) before it lands local commits individually.

If I wanted commits squashed, I will do it myself.  Likewise I wouldn&apos;t have local changes when running webkit-patch--I would have committed them (usually on a branch) before I ran the command.  I tend to have multiple patches in progress on different branches in my git repo, so local changes don&apos;t make much sense in that scenario.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>205288</commentid>
    <comment_count>21</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2010-03-28 20:09:33 -0700</bug_when>
    <thetext>(In reply to comment #20)
&gt; I know I&apos;m in the minority, but I don&apos;t want webkit-patch squashing my commits
&gt; or otherwise modifying my git repository, other than to update placeholders for
&gt; reviewers (or bug numbers) before it lands local commits individually.
&gt; 
&gt; If I wanted commits squashed, I will do it myself.  Likewise I wouldn&apos;t have
&gt; local changes when running webkit-patch--I would have committed them (usually
&gt; on a branch) before I ran the command.  I tend to have multiple patches in
&gt; progress on different branches in my git repo, so local changes don&apos;t make much
&gt; sense in that scenario.

Again, because I&apos;m in the minority, don&apos;t worry about satisfying my workflow, but I wanted to note the differences in the way I use git and want to use webkit-patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>205291</commentid>
    <comment_count>22</comment_count>
    <who name="Chris Jerdonek">cjerdonek</who>
    <bug_when>2010-03-28 20:49:47 -0700</bug_when>
    <thetext>(In reply to comment #15)

[Re-ordering parts of the comment for better readability.]

I can&apos;t say I use webkit-patch a whole lot yet (mostly because of workflow issues), but I have to agree with David.

&gt; The new state lets you have multiple local commits that get uploaded as a
&gt; single patch and get committed as a single commit.  This allows people to have
&gt; workflows where they actually use git&apos;s ability to do local commits without
&gt; needing to do a bunch of reset/rebase junk in order to upload/land a patch.

Do many people use this workflow?  I was when I first started using git, but that was before I found about &quot;git-commit --amend&quot;.  In my experience, the --amend option has for the most part eliminated the need for me to squash locally.

For me it&apos;s more common that I would want to upload only the most recent one of several local commits rather than a bunch at once.  This is when I&apos;d like to have &quot;serial patches&quot; reviewed separately -- i.e. consecutive patches that depend on the previous being landed.

It seems like WebKit&apos;s processes (e.g. ChangeLogs) discourage spreading patches across several commits.  And because WebKit favors small patches anyways, it seems like such commits should perhaps be landed separately, too.

&gt; Basically, the current state of the world only works if you keep all your
&gt; changes in the working copy. In order to upload or commit, you need to &quot;git
&gt; reset trunk&quot; or some equivalent action.

If I understand webkit-patch&apos;s capabilities correctly, one thing I think I do agree with you on is wanting the ability to land the most recent local commit -- rather than having to &quot;reset&quot; the most recent local commit into the working directory before landing, etc.  Let me know if I&apos;m misunderstanding anything.  Thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>205293</commentid>
    <comment_count>23</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2010-03-28 21:33:38 -0700</bug_when>
    <thetext>(In reply to comment #22)
&gt; Do many people use this workflow?  I was when I first started using git, but
&gt; that was before I found about &quot;git-commit --amend&quot;.  In my experience, the
&gt; --amend option has for the most part eliminated the need for me to squash
&gt; locally.

See also &quot;git merge --squash&quot; and especially &quot;git rebase -i&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>205294</commentid>
    <comment_count>24</comment_count>
    <who name="Evan Martin">evan</who>
    <bug_when>2010-03-28 22:27:54 -0700</bug_when>
    <thetext>When you have a branch with multiple patches in it, do you really get the reviews all lined up for each patch such that you can &quot;git svn dcommit&quot; the whole branch?  Or do you split it out into multiple independent submissions somehow when it comes time to commit some piece?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>205399</commentid>
    <comment_count>25</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2010-03-29 04:20:42 -0700</bug_when>
    <thetext>(In reply to comment #24)
&gt; When you have a branch with multiple patches in it, do you really get the
&gt; reviews all lined up for each patch such that you can &quot;git svn dcommit&quot; the
&gt; whole branch?  Or do you split it out into multiple independent submissions
&gt; somehow when it comes time to commit some piece?

No, I create one branch per bug.  Sometimes I want to do some refactoring before the actual bug is fixed, so I create a series of commits on a branch.  It makes reviewing the changes a lot easier if they are split into smaller, logical pieces.  Most recently for Bug 36560, I had two patches.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>205411</commentid>
    <comment_count>26</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2010-03-29 05:38:38 -0700</bug_when>
    <thetext>(In reply to comment #20)
&gt; I know I&apos;m in the minority, but I don&apos;t want webkit-patch squashing my commits
&gt; or otherwise modifying my git repository, other than to update placeholders for
&gt; reviewers (or bug numbers) before it lands local commits individually.
&gt; 
&gt; If I wanted commits squashed, I will do it myself.  Likewise I wouldn&apos;t have
&gt; local changes when running webkit-patch--I would have committed them (usually
&gt; on a branch) before I ran the command.  I tend to have multiple patches in
&gt; progress on different branches in my git repo, so local changes don&apos;t make much
&gt; sense in that scenario.

My workflow sounds very similar to Dave&apos;s. Count me in to the minority!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>205459</commentid>
    <comment_count>27</comment_count>
    <who name="Chris Jerdonek">cjerdonek</who>
    <bug_when>2010-03-29 08:42:33 -0700</bug_when>
    <thetext>(In reply to comment #24)
&gt; When you have a branch with multiple patches in it, do you really get the
&gt; reviews all lined up for each patch such that you can &quot;git svn dcommit&quot; the
&gt; whole branch?

I&apos;ve never done this.  It&apos;s probably more trouble than it&apos;s worth.

&gt; Or do you split it out into multiple independent submissions
&gt; somehow when it comes time to commit some piece?

I make one branch per bug.  I create each branch as soon as I know it will be separate, so it will already be split out by the time it comes to committing.  For example, I might create--

A
A-B

and submit A and B separately for review (in different bug reports).

After landing A, I will &quot;git svn rebase&quot; A-B and land B (or resubmit B if it hasn&apos;t been reviewed yet).  Rarely do I do more than 2 or 3 serial patches this way.  Of course, it&apos;s better if you can structure your work so patches can be committed independently of one another, and then you can avoid this process.  But that is not always possible.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>205592</commentid>
    <comment_count>28</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2010-03-29 12:04:49 -0700</bug_when>
    <thetext>(In reply to comment #20)
&gt; I know I&apos;m in the minority, but I don&apos;t want webkit-patch squashing my commits
&gt; or otherwise modifying my git repository, other than to update placeholders for
&gt; reviewers (or bug numbers) before it lands local commits individually.

I guess I don&apos;t quite understand your workflow still. For every bug you have one branch, right? Within that branch you have multiple patches. You them them reviewed and the git svn dcommit them, which makes an svn commit for each commit. Did I get that right?

If that&apos;s the case, how do you test each svn commit separately? If you don&apos;t test them separately, shouldn&apos;t they go in as a single commit? That way, if there is a problem with the commit and someone else needs to roll it out (e.g. on a release branch), they can safely roll out one atomic unit.

&gt; If I wanted commits squashed, I will do it myself.  Likewise I wouldn&apos;t have
&gt; local changes when running webkit-patch--I would have committed them (usually
&gt; on a branch) before I ran the command.  I tend to have multiple patches in
&gt; progress on different branches in my git repo, so local changes don&apos;t make much
&gt; sense in that scenario.

Another possibility Evan suggested, which makes sense to me:

webkit-patch upload will check if there are multiple local commits and/or working copy changes. If there are, it will ask whether to squash them into one patch, if you say no, it will upload them as separate patches.

webkit-patch land warns that there are working copy changes and asks whether to commit them. Then it checks if there are multiple local commits and asks whether to squash them or not.

Both commands will also have --git-commit option to upload/land just a single local commit and a --squash=true/false option, to avoid the prompts.

I still think squash should be the default. It matches the concept of commiting as an atomic unit the thing you tested.

This is more ambitious than I was starting with, but this can be done in iterations if we agree on the desired end result.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>205839</commentid>
    <comment_count>29</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2010-03-29 21:43:04 -0700</bug_when>
    <thetext>(In reply to comment #28)
&gt; (In reply to comment #20)
&gt; &gt; I know I&apos;m in the minority, but I don&apos;t want webkit-patch squashing my commits
&gt; &gt; or otherwise modifying my git repository, other than to update placeholders for
&gt; &gt; reviewers (or bug numbers) before it lands local commits individually.
&gt; 
&gt; I guess I don&apos;t quite understand your workflow still. For every bug you have
&gt; one branch, right? Within that branch you have multiple patches. You them them
&gt; reviewed and the git svn dcommit them, which makes an svn commit for each
&gt; commit. Did I get that right?

Correct.

&gt; If that&apos;s the case, how do you test each svn commit separately? If you don&apos;t
&gt; test them separately, shouldn&apos;t they go in as a single commit? That way, if
&gt; there is a problem with the commit and someone else needs to roll it out (e.g.
&gt; on a release branch), they can safely roll out one atomic unit.

You&apos;re missing the point of having separate commits--making reviews easier and making small, logical changes together.  Each commit should be able to stand on its own and pass all tests.

There are many ways to run tests against individual commits.  Usually that&apos;s done as you&apos;re developing, but using &quot;git rebase -i&quot; and marking each commit as &quot;edit&quot; would allow you to run tests against each commit.

&gt; &gt; If I wanted commits squashed, I will do it myself.  Likewise I wouldn&apos;t have
&gt; &gt; local changes when running webkit-patch--I would have committed them (usually
&gt; &gt; on a branch) before I ran the command.  I tend to have multiple patches in
&gt; &gt; progress on different branches in my git repo, so local changes don&apos;t make much
&gt; &gt; sense in that scenario.
&gt; 
&gt; Another possibility Evan suggested, which makes sense to me:
&gt; 
&gt; webkit-patch upload will check if there are multiple local commits and/or
&gt; working copy changes. If there are, it will ask whether to squash them into one
&gt; patch, if you say no, it will upload them as separate patches.
&gt; 
&gt; webkit-patch land warns that there are working copy changes and asks whether to
&gt; commit them. Then it checks if there are multiple local commits and asks
&gt; whether to squash them or not.
&gt; 
&gt; Both commands will also have --git-commit option to upload/land just a single
&gt; local commit and a --squash=true/false option, to avoid the prompts.
&gt; 
&gt; I still think squash should be the default. It matches the concept of commiting
&gt; as an atomic unit the thing you tested.
&gt; 
&gt; This is more ambitious than I was starting with, but this can be done in
&gt; iterations if we agree on the desired end result.

That&apos;s fine to make squashing the default.  It would be cool I could set a default via .gitconfig to make the default not squash for me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>206862</commentid>
    <comment_count>30</comment_count>
      <attachid>52229</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2010-03-31 18:06:53 -0700</bug_when>
    <thetext>Created attachment 52229
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>206863</commentid>
    <comment_count>31</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2010-03-31 18:08:22 -0700</bug_when>
    <thetext>OK. Screw iterations. I just did all of it. Added --squash and --git-commit as well as reading webkit-patch.squash for the git config.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>206866</commentid>
    <comment_count>32</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-03-31 18:12:10 -0700</bug_when>
    <thetext>Technically, you shouldn&apos;t be passing options to scm.py.  Options are part of the command/step API, but scm.py is one layer further down.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>207161</commentid>
    <comment_count>33</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2010-04-01 08:06:05 -0700</bug_when>
    <thetext>(In reply to comment #32)
&gt; Technically, you shouldn&apos;t be passing options to scm.py.  Options are part of
&gt; the command/step API, but scm.py is one layer further down.

Yeah, I thought about that as I was writing it. I actually started out giving create_patch, changed_files and commit_with_message optional git_commit and squash arguments. That quickly got very messy though. There&apos;s a lot of code that calls those that doesn&apos;t have access to options.

Anyways, how about I SCM takes squash and git_commit arguments instead of options?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>207200</commentid>
    <comment_count>34</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-04-01 09:19:32 -0700</bug_when>
    <thetext>&gt; Anyways, how about I SCM takes squash and git_commit arguments instead of
&gt; options?

That seems fine.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>207218</commentid>
    <comment_count>35</comment_count>
      <attachid>52305</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2010-04-01 10:02:13 -0700</bug_when>
    <thetext>Created attachment 52305
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>207220</commentid>
    <comment_count>36</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2010-04-01 10:03:02 -0700</bug_when>
    <thetext>(In reply to comment #34)
&gt; &gt; Anyways, how about I SCM takes squash and git_commit arguments instead of
&gt; &gt; options?
&gt; 
&gt; That seems fine.

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>207221</commentid>
    <comment_count>37</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-04-01 10:04:00 -0700</bug_when>
    <thetext>Attachment 52305 did not pass style-queue:

Failed to run &quot;WebKitTools/Scripts/check-webkit-style&quot; exit_code: 1
Last 3072 characters of output:
long (80 characters)  [pep8/E501] [5]
WebKitTools/Scripts/webkitpy/common/checkout/scm.py:558:  line too long (90 characters)  [pep8/E501] [5]
WebKitTools/Scripts/webkitpy/common/checkout/scm.py:568:  line too long (98 characters)  [pep8/E501] [5]
WebKitTools/Scripts/webkitpy/common/checkout/scm.py:569:  line too long (97 characters)  [pep8/E501] [5]
WebKitTools/Scripts/webkitpy/common/checkout/scm.py:573:  line too long (81 characters)  [pep8/E501] [5]
WebKitTools/Scripts/webkitpy/common/checkout/scm.py:574:  line too long (83 characters)  [pep8/E501] [5]
WebKitTools/Scripts/webkitpy/common/checkout/scm.py:579:  line too long (95 characters)  [pep8/E501] [5]
WebKitTools/Scripts/webkitpy/common/checkout/scm.py:582:  line too long (94 characters)  [pep8/E501] [5]
WebKitTools/Scripts/webkitpy/common/checkout/scm.py:585:  line too long (88 characters)  [pep8/E501] [5]
WebKitTools/Scripts/webkitpy/common/checkout/scm.py:602:  line too long (90 characters)  [pep8/E501] [5]
WebKitTools/Scripts/webkitpy/common/checkout/scm.py:618:  line too long (119 characters)  [pep8/E501] [5]
WebKitTools/Scripts/webkitpy/common/checkout/scm.py:622:  line too long (89 characters)  [pep8/E501] [5]
WebKitTools/Scripts/webkitpy/common/checkout/scm.py:640:  line too long (81 characters)  [pep8/E501] [5]
WebKitTools/Scripts/webkitpy/common/checkout/scm.py:641:  line too long (104 characters)  [pep8/E501] [5]
WebKitTools/Scripts/webkitpy/tool/steps/options.py:45:  line too long (120 characters)  [pep8/E501] [5]
WebKitTools/Scripts/webkitpy/tool/steps/options.py:56:  line too long (147 characters)  [pep8/E501] [5]
WebKitTools/Scripts/webkitpy/style/optparser.py:45:  line too long (90 characters)  [pep8/E501] [5]
WebKitTools/Scripts/webkitpy/tool/steps/preparechangelog.py:57:  line too long (90 characters)  [pep8/E501] [5]
WebKitTools/Scripts/webkitpy/tool/steps/abstractstep.py:39:  line too long (80 characters)  [pep8/E501] [5]
WebKitTools/Scripts/webkitpy/tool/main.py:78:  line too long (103 characters)  [pep8/E501] [5]
WebKitTools/Scripts/webkitpy/tool/main.py:82:  line too long (107 characters)  [pep8/E501] [5]
WebKitTools/Scripts/webkitpy/common/checkout/scm_unittest.py:487:  line too long (83 characters)  [pep8/E501] [5]
WebKitTools/Scripts/webkitpy/common/checkout/scm_unittest.py:488:  line too long (82 characters)  [pep8/E501] [5]
WebKitTools/Scripts/webkitpy/common/checkout/scm_unittest.py:492:  line too long (87 characters)  [pep8/E501] [5]
WebKitTools/Scripts/webkitpy/common/checkout/scm_unittest.py:493:  line too long (82 characters)  [pep8/E501] [5]
WebKitTools/Scripts/webkitpy/common/checkout/scm_unittest.py:626:  line too long (82 characters)  [pep8/E501] [5]
WebKitTools/Scripts/webkitpy/common/checkout/scm_unittest.py:632:  line too long (82 characters)  [pep8/E501] [5]
WebKitTools/Scripts/webkitpy/common/checkout/scm_unittest.py:729:  line too long (101 characters)  [pep8/E501] [5]
WebKitTools/Scripts/webkitpy/common/checkout/scm_unittest.py:795:  line too long (101 characters)  [pep8/E501] [5]
Total errors found: 42 in 17 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>207224</commentid>
    <comment_count>38</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-04-01 10:15:44 -0700</bug_when>
    <thetext>&gt; Failed to run &quot;WebKitTools/Scripts/check-webkit-style&quot; exit_code: 1

Oh man.  Our Python style overloads have arrived.  Don&apos;t worry about these errors for this patch.  We need to deal with them, but it can be in a separate patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>207229</commentid>
    <comment_count>39</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2010-04-01 10:18:30 -0700</bug_when>
    <thetext>(In reply to comment #38)
&gt; &gt; Failed to run &quot;WebKitTools/Scripts/check-webkit-style&quot; exit_code: 1
&gt; 
&gt; Oh man.  Our Python style overloads have arrived.  Don&apos;t worry about these
&gt; errors for this patch.  We need to deal with them, but it can be in a separate
&gt; patch.

Yeah, I fixed all the non-line-length ones. Seemed dumb to restrict to 78 chars when the rest of these files done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>207569</commentid>
    <comment_count>40</comment_count>
      <attachid>52305</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-04-01 18:16:03 -0700</bug_when>
    <thetext>Comment on attachment 52305
Patch

Ojan and I reviewed this in person.

r=me on the prepare-ChagneLog changes.
He&apos;s going to post a new patch with just the svn_branch_name, svn_merge_base, delete_branch stuff and tests.
And I believe his plan is to re-write this to pass the individual options as arguments to the various functions which need them.  Mostly some different plumbing, but should be easier to understand than a stateful Git class.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>208565</commentid>
    <comment_count>41</comment_count>
      <attachid>52542</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2010-04-05 10:48:39 -0700</bug_when>
    <thetext>Created attachment 52542
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>208566</commentid>
    <comment_count>42</comment_count>
      <attachid>52542</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2010-04-05 10:49:17 -0700</bug_when>
    <thetext>Comment on attachment 52542
Patch

This is the part eric r+&apos;ed. I&apos;ll commit this shortly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>208569</commentid>
    <comment_count>43</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2010-04-05 10:55:27 -0700</bug_when>
    <thetext>Committed r57084: &lt;http://trac.webkit.org/changeset/57084&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>208614</commentid>
    <comment_count>44</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2010-04-05 12:03:11 -0700</bug_when>
    <thetext>Added bug 37103 for the svn_branch_name, svn_merge_base, delete_branch and assorted other bits.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>209344</commentid>
    <comment_count>45</comment_count>
      <attachid>52686</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2010-04-06 17:26:28 -0700</bug_when>
    <thetext>Created attachment 52686
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>209347</commentid>
    <comment_count>46</comment_count>
      <attachid>52686</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2010-04-06 17:28:43 -0700</bug_when>
    <thetext>Comment on attachment 52686
Patch

Moves git_commit and squash to be arguments to the relevant functions instead of state stored in the Git class.

Also, adds --no-squash and lets --git-commit take a range (e.g. head~3..head).

Changes check-webkit-style to not treat --git-commit as --git-since and gets rid of --git-since. Treating the git-commit as a since is unnecessary (and otherwise limiting) since that can be replicated by just adding a &quot;..&quot; to the end of the commit ID.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>209348</commentid>
    <comment_count>47</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-04-06 17:29:07 -0700</bug_when>
    <thetext>Attachment 52686 did not pass style-queue:

Failed to run &quot;WebKitTools/Scripts/check-webkit-style&quot; exit_code: 1
WebKitTools/Scripts/webkitpy/tool/commands/download.py:97:  whitespace before &apos;}&apos;  [pep8/E202] [5]
Total errors found: 1 in 23 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>209350</commentid>
    <comment_count>48</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2010-04-06 17:33:33 -0700</bug_when>
    <thetext>(In reply to comment #47)
&gt; WebKitTools/Scripts/webkitpy/tool/commands/download.py:97:  whitespace before
&gt; &apos;}&apos;  [pep8/E202] [5]
&gt; 
&gt; If any of these errors are false positives, please file a bug against
&gt; check-webkit-style.

I saw this error when uploading. I think it might be a false positive, but I&apos;m not sure if pep8 is just dumb. I can&apos;t imagine it&apos;s saying I should put the } at the beginning of the line or at the end of the previous line though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>209386</commentid>
    <comment_count>49</comment_count>
    <who name="Chris Jerdonek">cjerdonek</who>
    <bug_when>2010-04-06 18:33:58 -0700</bug_when>
    <thetext>(In reply to comment #46)
&gt; (From update of attachment 52686 [details])
&gt; Moves git_commit and squash to be arguments to the relevant functions instead
&gt; of state stored in the Git class.
&gt; 
&gt; Also, adds --no-squash and lets --git-commit take a range (e.g. head~3..head).
&gt; 
&gt; Changes check-webkit-style to not treat --git-commit as --git-since and gets
&gt; rid of --git-since. Treating the git-commit as a since is unnecessary (and
&gt; otherwise limiting) since that can be replicated by just adding a &quot;..&quot; to the
&gt; end of the commit ID.

Something weird is happening here:

https://bugs.webkit.org/show_bug.cgi?id=36938#c14

(Eric e-mailed me about this.)

I haven&apos;t looked at this patch to understand how it impacts check-webkit-style, but I did notice this:

+        squash_help = (&quot;All diffs from the remote branch are checked.&quot;
+                       &quot;If excluded, prompts whether to squash when there are multiple commits.&quot;)
+        parser.add_option(&quot;-s&quot;, &quot;--squash&quot;, action=&quot;store_true&quot;, dest=&quot;squash&quot;, help=squash_help)
+
+        squash_help = (&quot;Only working copy diffs are checked.&quot;
+                       &quot;If excluded, prompts whether to squash when there are multiple commits.&quot;)
+        parser.add_option(&quot;--no-squash&quot;, action=&quot;store_false&quot;, dest=&quot;squash&quot;, help=squash_help)
+
         verbose_help = &quot;enable verbose logging.&quot;
         parser.add_option(&quot;-v&quot;, &quot;--verbose&quot;, dest=&quot;is_verbose&quot;, default=False,
                           action=&quot;store_true&quot;, help=verbose_help)

Can &quot;--squash&quot; and &quot;--no-squash&quot; perhaps be combined into a single argument-less flag?  They are writing to the same &quot;squash&quot; property.  The code for the &quot;--verbose&quot; option above might help which uses a default parameter.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>209392</commentid>
    <comment_count>50</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-04-06 18:59:14 -0700</bug_when>
    <thetext>&gt; I saw this error when uploading. I think it might be a false positive, but I&apos;m
&gt; not sure if pep8 is just dumb. I can&apos;t imagine it&apos;s saying I should put the }
&gt; at the beginning of the line or at the end of the previous line though.

It wants a trailing comma before the }.  Also, no space before the :.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>209394</commentid>
    <comment_count>51</comment_count>
      <attachid>52686</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-04-06 19:02:37 -0700</bug_when>
    <thetext>Comment on attachment 52686
Patch

Please combine --squash and --no-squash into a single option.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>209558</commentid>
    <comment_count>52</comment_count>
    <who name="Chris Jerdonek">cjerdonek</who>
    <bug_when>2010-04-07 03:27:02 -0700</bug_when>
    <thetext>(In reply to comment #46)
&gt; (From update of attachment 52686 [details])

I&apos;m starting to wonder if a --squash option is appropriate for checking
style.  Will running check-webkit-style with the squash option actually
change your local branch, or is it just a temporary calculation step needed
for the style check?  It doesn&apos;t seem like the act of checking style should
have as a side effect that it alters your branch.

If squashing is necessary for the webkit-patch workflow you envision, then
can the squashing simply be done before the check-webkit-style invocation?

-        if options.git_commit:
-            patch = checkout.create_patch_since_local_commit(options.git_commit)
-        else:
-            patch = checkout.create_patch()
+        patch = checkout.create_patch(options.git_commit, options.squash)

It seems that more side effects and references to global objects are being
added to the method above that would make it harder to unit test than it
already is.  For example, the following is being added deep within the call to
create_patch()--

+            # FIXME: parameterize prompt so this can be tested.
+            response = User.prompt(&quot;There are %s local commits%s. Squash into a single commit? [Y/n]: &quot; % (
+                num_local_commits, working_directory_message), repeat=3)

The style code has been moving in the opposite direction by incorporating
more dependency injection to make testing easier (e.g. by adding a mock_stderr
parameter to methods where appropriate).

Would it be possible to take a flatter approach initially, say by either--

(1) requiring the user to know in advance if s/he wants to squash, and to raise
    an error if an incompatible choice is made, rather than prompting, or
(2) structuring the code so that any prompting can take place at one of
    the outer levels of the calling code?
    
Something else that makes this code harder to test is that there is a lot
of branching going on deep down around that prompt, which is one of the
reasons I suggest trying to flatten things out a bit:

+    def should_squash(self, squash):
+        if squash is not None:
+            # Squash is specified on the command-line.
+            return squash
+
+        if Git.squash_prompt is not None:
+            # The user already responded to the prompt below on a previous should_squash call.
+            return Git.squash_prompt
+
+        config_squash = Git.read_git_config(&apos;webkit-patch.squash&apos;)
+        if (config_squash and config_squash is not &quot;&quot;):
+            return config_squash.lower() == &quot;true&quot;
+
+        # Only prompt if there are actually multiple commits to squash.
+        num_local_commits = len(self.local_commits())
+        if num_local_commits &gt; 1 or num_local_commits &gt; 0 and not self.working_directory_is_clean():
+            working_directory_message = &quot;&quot; if self.working_directory_is_clean() else &quot; and working copy changes&quot;
+            # FIXME: parameterize prompt so this can be tested.
+            response = User.prompt(&quot;There are %s local commits%s. Squash into a single commit? [Y/n]: &quot; % (
+                num_local_commits, working_directory_message), repeat=3)
+            if response == &quot;Y&quot;:
+                Git.squash_prompt = True
+            elif response == &apos;n&apos;:
+                Git.squash_prompt = False
+            else:
+                raise &quot;Must answer &apos;Y&apos; or &apos;n&apos;&quot;
+
+            return Git.squash_prompt
+
+        return False</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>210504</commentid>
    <comment_count>53</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2010-04-08 17:38:54 -0700</bug_when>
    <thetext>Not sure why this got closed when the bug it depends on was closed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>214708</commentid>
    <comment_count>54</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2010-04-20 09:52:43 -0700</bug_when>
    <thetext>(In reply to comment #52)
&gt; (In reply to comment #46)
&gt; &gt; (From update of attachment 52686 [details] [details])
&gt; 
&gt; I&apos;m starting to wonder if a --squash option is appropriate for checking
&gt; style.  Will running check-webkit-style with the squash option actually
&gt; change your local branch, or is it just a temporary calculation step needed
&gt; for the style check?  It doesn&apos;t seem like the act of checking style should
&gt; have as a side effect that it alters your branch.

The only step that actually modifies your local branch is committing. So, upload, check-style, etc. do not.

&gt; -        if options.git_commit:
&gt; -            patch =
&gt; checkout.create_patch_since_local_commit(options.git_commit)
&gt; -        else:
&gt; -            patch = checkout.create_patch()
&gt; +        patch = checkout.create_patch(options.git_commit, options.squash)
&gt; 
&gt; It seems that more side effects and references to global objects are being
&gt; added to the method above that would make it harder to unit test than it
&gt; already is.  For example, the following is being added deep within the call to
&gt; create_patch()--
&gt; 
&gt; +            # FIXME: parameterize prompt so this can be tested.
&gt; +            response = User.prompt(&quot;There are %s local commits%s. Squash into
&gt; a single commit? [Y/n]: &quot; % (
&gt; +                num_local_commits, working_directory_message), repeat=3)
&gt; 
&gt; The style code has been moving in the opposite direction by incorporating
&gt; more dependency injection to make testing easier (e.g. by adding a mock_stderr
&gt; parameter to methods where appropriate).
&gt; 
&gt; Would it be possible to take a flatter approach initially, say by either--
&gt; 
&gt; (1) requiring the user to know in advance if s/he wants to squash, and to raise
&gt;     an error if an incompatible choice is made, rather than prompting, or

Raising an error is definitely doable. The more I think about it, the more I&apos;m OK with this. I&apos;ll try changing it and see how it looks.

&gt; (2) structuring the code so that any prompting can take place at one of
&gt;     the outer levels of the calling code?

I don&apos;t see a reasonable way to do this.

&gt; Something else that makes this code harder to test is that there is a lot
&gt; of branching going on deep down around that prompt, which is one of the
&gt; reasons I suggest trying to flatten things out a bit:

Getting rid of the prompt should make this considerably simpler.

(In reply to comment #49)
&gt; +        squash_help = (&quot;All diffs from the remote branch are checked.&quot;
&gt; +                       &quot;If excluded, prompts whether to squash when there are
&gt; multiple commits.&quot;)
&gt; +        parser.add_option(&quot;-s&quot;, &quot;--squash&quot;, action=&quot;store_true&quot;,
&gt; dest=&quot;squash&quot;, help=squash_help)
&gt; +
&gt; +        squash_help = (&quot;Only working copy diffs are checked.&quot;
&gt; +                       &quot;If excluded, prompts whether to squash when there are
&gt; multiple commits.&quot;)
&gt; +        parser.add_option(&quot;--no-squash&quot;, action=&quot;store_false&quot;, dest=&quot;squash&quot;,
&gt; help=squash_help)
&gt; +
&gt; Can &quot;--squash&quot; and &quot;--no-squash&quot; perhaps be combined into a single
&gt; argument-less flag?  They are writing to the same &quot;squash&quot; property.  The code
&gt; for the &quot;--verbose&quot; option above might help which uses a default parameter.

The issue is that it&apos;s more like there are 3 states, False, True and None. If neither squash nor no-squash is set, then we prompt the user (or raise an error per the above comments). If one of them is set, then we avoid the prompt and assume the user wants that behavior. Another option is to combine it into a single flag with an argument. It could take true, false and confirm as values, or something like that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>214787</commentid>
    <comment_count>55</comment_count>
      <attachid>53851</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2010-04-20 11:18:37 -0700</bug_when>
    <thetext>Created attachment 53851
Patch-6001</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>215053</commentid>
    <comment_count>56</comment_count>
      <attachid>53904</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2010-04-20 16:31:27 -0700</bug_when>
    <thetext>Created attachment 53904
Patch-10001</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>215054</commentid>
    <comment_count>57</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2010-04-20 16:32:35 -0700</bug_when>
    <thetext>Latest patch fixes --fancy-review to respect --squash and --git-commit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>216332</commentid>
    <comment_count>58</comment_count>
      <attachid>53904</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-04-23 01:18:34 -0700</bug_when>
    <thetext>Comment on attachment 53904
Patch-10001

WebKitTools/Scripts/webkitpy/common/checkout/scm.py:181
 +      def changed_files(self, git_commit=None, squash=None):
Should this be squash=False?

WebKitTools/Scripts/webkitpy/common/checkout/api.py:131
 +              raise ScriptError(message=&quot;Working directory must be clean to revert a revision.&quot;)
Why did you add this error handling here?  This is the wrong layer to catch this error.  Notice that apply patch doesn&apos;t have a similar check even though it has logically the same issue.

Thanks for sticking with this patch.  I didn&apos;t understand the gut part, but I appreciate the tests and the effort you put into it.  Eric should review this change, but he&apos;s been slacking off in this department.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>217183</commentid>
    <comment_count>59</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2010-04-26 10:29:55 -0700</bug_when>
    <thetext>(In reply to comment #58)
&gt; (From update of attachment 53904 [details])
&gt; WebKitTools/Scripts/webkitpy/common/checkout/scm.py:181
&gt;  +      def changed_files(self, git_commit=None, squash=None):
&gt; Should this be squash=False?

No, this is a bit messy. There are currently three squash states:
None: The behavior before this patch + some explicit failures for unexpected cases (e.g. multiple local commits + working-copy changes)
False: Treat each local commit + working copy separately
True: Treat all commits + working copy as one commit.

My plan is to eventually make squash=True the default and get rid of the None state entirely, but I&apos;d like --squash to bake for a couple weeks first.

&gt; WebKitTools/Scripts/webkitpy/common/checkout/api.py:131
&gt;  +              raise ScriptError(message=&quot;Working directory must be clean to
&gt; revert a revision.&quot;)
&gt; Why did you add this error handling here?  This is the wrong layer to catch
&gt; this error.  Notice that apply patch doesn&apos;t have a similar check even though
&gt; it has logically the same issue.

It&apos;s documenting the existing behavior that locally modified ChangeLogs will get reverted along with the reverse_diff&apos;s ChangeLogs. It&apos;s not a new behavior with this patch though, so I&apos;ll just remove the new error.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>217188</commentid>
    <comment_count>60</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2010-04-26 10:48:34 -0700</bug_when>
    <thetext>Committed r58261: &lt;http://trac.webkit.org/changeset/58261&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>217572</commentid>
    <comment_count>61</comment_count>
    <who name="Chris Jerdonek">cjerdonek</who>
    <bug_when>2010-04-27 01:04:22 -0700</bug_when>
    <thetext>Thanks for the patch, Ojan.  I noticed a couple things in it, though, that I was hoping you could address in a subsequent patch.

&gt; +        # Set logging level to avoid rietveld&apos;s logging spew.
&gt; +        old_level_name = logging.getLogger().getEffectiveLevel()
&gt; +        logging.getLogger().setLevel(logging.ERROR)
&gt; +
&gt; +        # Use RealMain instead of calling upload from the commandline so that
&gt; +        # we can pass in the diff ourselves. Otherwise, upload will just use
&gt; +        # git diff for git checkouts, which doesn&apos;t respect --squash and --git-commit.
&gt; +        issue, patchset = upload.RealMain(args[1:], data=diff)
&gt; +
&gt; +        # Reset logging level to the original value.
&gt; +        logging.getLogger().setLevel(old_level_name)

It is probably better to throttle the rietveld logging from the calling code rather than by temporarily changing it from within.  Otherwise, it doesn&apos;t seem like there is a way for the caller to, say, temporarily re-enable this logging.

You may wish to look at the pattern we&apos;re using to disable autoinstall logging from the calling code while running test-webkitpy:

http://trac.webkit.org/browser/trunk/WebKitTools/Scripts/test-webkitpy?rev=56981#L87


&gt; -        # FIXME: Add unit tests.
&gt; -        if git_commit and &apos;..&apos; in git_commit:
&gt; -            # FIXME: If the range is a &quot;...&quot;, the code should find the common
&gt; -            #        ancestor and start there.  See git diff --help for how
&gt; -            #        &quot;...&quot; usually works.
&gt; -            self._parse_error(&apos;invalid --git-commit option: option does &apos;
&gt; -                              &apos;not support ranges &quot;..&quot;: %s&apos; % git_commit)

Above you deleted the FIXME to add more unit tests, but below you removed some unit tests without adding any new ones.  It seems like you should at least preserve the FIXME above to add more unit tests.

&gt; +++ b/WebKitTools/Scripts/webkitpy/style/optparser_unittest.py
&gt; @@ -114,10 +114,6 @@ class ArgumentParserTest(LoggingTestCase):

&gt; -        self.assertRaises(SystemExit, parse, [&apos;--git-diff=aa..bb&apos;])
&gt; -        self.assertLog([&apos;ERROR: invalid --git-commit option: &apos;
&gt; -                        &apos;option does not support ranges &quot;..&quot;: aa..bb\n&apos;])
&gt; -

&gt; -        (files, options) = parse([&apos;--git-since=commit&apos;])
&gt; -        self.assertEquals(options.git_commit, &apos;commit&apos;)

Would it be possible for you to create optparser unit tests for the new options you are adding (and to update the existing tests to take into account the new options)?  Up to this point, we have maintained pretty good code coverage of the option parsing code.  Thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>230454</commentid>
    <comment_count>62</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2010-05-25 14:16:40 -0700</bug_when>
    <thetext>Sorry it took so long, but I&apos;m just getting back to this.

(In reply to comment #61)
&gt; It is probably better to throttle the rietveld logging from the calling code rather than by temporarily changing it from within.  Otherwise, it doesn&apos;t seem like there is a way for the caller to, say, temporarily re-enable this logging.

I agree, but I&apos;m actually going to remove the logging filtering from this entirely. It&apos;s no longer something that will run on upload. It will only run on the upload bot or when explicitly run via webkit-patch post-attachment-to-rietveld. So, I think we&apos;d actually prefer to do all the logging.

&gt; &gt; -        # FIXME: Add unit tests.
&gt; &gt; -        if git_commit and &apos;..&apos; in git_commit:
&gt; &gt; -            # FIXME: If the range is a &quot;...&quot;, the code should find the common
&gt; &gt; -            #        ancestor and start there.  See git diff --help for how
&gt; &gt; -            #        &quot;...&quot; usually works.
&gt; &gt; -            self._parse_error(&apos;invalid --git-commit option: option does &apos;
&gt; &gt; -                              &apos;not support ranges &quot;..&quot;: %s&apos; % git_commit)
&gt; 
&gt; Above you deleted the FIXME to add more unit tests, but below you removed some unit tests without adding any new ones.  It seems like you should at least preserve the FIXME above to add more unit tests.

&gt; Would it be possible for you to create optparser unit tests for the new options you are adding (and to update the existing tests to take into account the new options)?  Up to this point, we have maintained pretty good code coverage of the option parsing code.  Thanks.

I&apos;ll add tests for passing commit ranges to git-commit. The other options are getting deleted in bug 39624.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>230499</commentid>
    <comment_count>63</comment_count>
    <who name="Chris Jerdonek">cjerdonek</who>
    <bug_when>2010-05-25 15:21:09 -0700</bug_when>
    <thetext>(In reply to comment #62)
&gt; Sorry it took so long, but I&apos;m just getting back to this.

Sounds good.  Thanks for eventually getting back to me. :)

Also, for posterity (even though you don&apos;t need it here), here is a comment with very basic info on filtering log messages:

https://bugs.webkit.org/show_bug.cgi?id=39614#c1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>230511</commentid>
    <comment_count>64</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2010-05-25 15:51:23 -0700</bug_when>
    <thetext>&gt; &gt; &gt; -        # FIXME: Add unit tests.
&gt; &gt; &gt; -        if git_commit and &apos;..&apos; in git_commit:
&gt; &gt; &gt; -            # FIXME: If the range is a &quot;...&quot;, the code should find the common
&gt; &gt; &gt; -            #        ancestor and start there.  See git diff --help for how
&gt; &gt; &gt; -            #        &quot;...&quot; usually works.
&gt; &gt; &gt; -            self._parse_error(&apos;invalid --git-commit option: option does &apos;
&gt; &gt; &gt; -                              &apos;not support ranges &quot;..&quot;: %s&apos; % git_commit)
&gt; &gt; 
&gt; &gt; Above you deleted the FIXME to add more unit tests, but below you removed some unit tests without adding any new ones.  It seems like you should at least preserve the FIXME above to add more unit tests.
&gt; 
&gt; &gt; Would it be possible for you to create optparser unit tests for the new options you are adding (and to update the existing tests to take into account the new options)?  Up to this point, we have maintained pretty good code coverage of the option parsing code.  Thanks.
&gt; 
&gt; I&apos;ll add tests for passing commit ranges to git-commit. The other options are getting deleted in bug 39624.

Actually, I went to do this and realized that I don&apos;t know what this is talking about testing. This patch made commit ranges work, so the second FIXME above is addressed. I could add a test that optparser doesn&apos;t error our when you pass a commit range, but that seems sort of silly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>230517</commentid>
    <comment_count>65</comment_count>
    <who name="Chris Jerdonek">cjerdonek</who>
    <bug_when>2010-05-25 16:02:47 -0700</bug_when>
    <thetext>(In reply to comment #64)
&gt; &gt; I&apos;ll add tests for passing commit ranges to git-commit. The other options are getting deleted in bug 39624.
&gt; 
&gt; Actually, I went to do this and realized that I don&apos;t know what this is talking about testing. This patch made commit ranges work, so the second FIXME above is addressed. I could add a test that optparser doesn&apos;t error our when you pass a commit range, but that seems sort of silly.

Yes, you can disregard that comment.  I think I also realized days after posting that particular comment that it may not have made sense or was no longer applicable.  Thanks for confirming.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>51197</attachid>
            <date>2010-03-19 15:49:13 -0700</date>
            <delta_ts>2010-03-22 11:56:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-36394-20100319154912.patch</filename>
            <type>text/plain</type>
            <size>1188</size>
            <attacher name="Ojan Vafai">ojan</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCA3NTk2NzM1Li41NjVjYWRiIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9DaGFuZ2VM
b2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTAtMDMt
MTkgIE9qYW4gVmFmYWkgIDxvamFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbmNsdWRlIGdpdCBjb21taXRzIGluIHRoZSBk
aWZmIGZvciB3ZWJraXQtcGF0Y2ggdXBsb2FkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0zNjM5NAorCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9z
Y20ucHk6CisKIDIwMTAtMDMtMTkgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KIAog
ICAgICAgICBVbnJldmlld2VkLgpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9zY20ucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3NjbS5weQppbmRleCBl
NmZhMDFhLi4yYzhlMmM1IDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5
L3NjbS5weQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3NjbS5weQpAQCAtNDc1
LDcgKzQ3NSwxMCBAQCBjbGFzcyBHaXQoU0NNKToKICAgICAgICAgcmV0dXJuICJnaXQiCiAKICAg
ICBkZWYgY3JlYXRlX3BhdGNoKHNlbGYpOgotICAgICAgICByZXR1cm4gcnVuX2NvbW1hbmQoWydn
aXQnLCAnZGlmZicsICctLWJpbmFyeScsICdIRUFEJ10pCisgICAgICAgICMgRGlmZiBhZ2FpbnN0
IHRoZSByZW1vdGUgc2VydmVyIHRvIGluY2x1ZGUgYm90aCB3b3JraW5nIGNvcHkgYW5kIGNvbW1p
dHRlZCBkaWZmcy4KKyAgICAgICAgcmVtb3RlID0gcnVuX2NvbW1hbmQoWydnaXQnLCAnY29uZmln
JywgJ3N2bi1yZW1vdGUuc3ZuLmZldGNoJ10pCisgICAgICAgIHJlbW90ZSA9IHJlbW90ZS5yc3Ry
aXAoJ1xuJykuc3BsaXQoJzonKVsxXQorICAgICAgICByZXR1cm4gcnVuX2NvbW1hbmQoWydnaXQn
LCAnZGlmZicsICctLWJpbmFyeScsIHJlbW90ZV0pCiAKICAgICBAY2xhc3NtZXRob2QKICAgICBk
ZWYgZ2l0X2NvbW1pdF9mcm9tX3N2bl9yZXZpc2lvbihjbHMsIHJldmlzaW9uKToK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>51322</attachid>
            <date>2010-03-22 11:56:16 -0700</date>
            <delta_ts>2010-03-23 11:48:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-36394-20100322115615.patch</filename>
            <type>text/plain</type>
            <size>12046</size>
            <attacher name="Ojan Vafai">ojan</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCA3NTk2NzM1Li44NjQ2ZjgwIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9DaGFuZ2VM
b2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQgQEAKKzIwMTAtMDMt
MjIgIE9qYW4gVmFmYWkgIDxvamFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbmNsdWRlIGdpdCBjb21taXRzIGluIHRoZSBk
aWZmIGZvciB3ZWJraXQtcGF0Y2ggdXBsb2FkL2xhbmQuCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNjM5NAorCisgICAgICAgIERpZmYgYWdhaW5zdCB0
aGUgcmVtb3RlIGJyYW5jaCB0byBpbmNsdWRlIGJvdGggbG9jYWwgY29tbWl0cyBhbmQKKyAgICAg
ICAgd29ya2luZyBjb3B5IGNoYW5nZXMgd2hlbiBkb2luZyB1cGxvYWQgb3IgbGFuZC4KKworICAg
ICAgICBXaGVuIGRvaW5nIGFuIHVwbG9hZCwgd2UgbWVyZ2UgdGhlIGNoYW5nZXMgaW50byBhIGNv
bW1pdCBicmFuY2gKKyAgICAgICAgc28gd2UgY2FuIHNxdWFzaCBhbGwgdGhlIGNoYW5nZXMgaW50
byBvbmUgY29tbWl0LiBUaGlzIGlzIG1vc3RseSBjb3BpZWQKKyAgICAgICAgZnJvbSBnaXQtY2wu
CisKKyAgICAgICAgKiBTY3JpcHRzL3ByZXBhcmUtQ2hhbmdlTG9nOgorICAgICAgICBBZGRzIGEg
bmV3IC0tZ2l0LWZ1bGwtZGlmZiBmbGFnIHRvIGdldCB0aGUgZGlmZiBpbmNsdWRpbmcgbG9jYWwg
Y29tbWl0cy4KKyAgICAgICAgTWF5YmUgdGhpcyBzaG91bGQgYmUgdGhlIGRlZmF1bHQ/CisgICAg
ICAgICogU2NyaXB0cy93ZWJraXRweS9leGVjdXRpdmUucHk6CisgICAgICAgICogU2NyaXB0cy93
ZWJraXRweS9zY20ucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9zdGVwcy9wcmVwYXJl
Y2hhbmdlbG9nLnB5OgorCiAyMDEwLTAzLTE5ICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5v
cmc+CiAKICAgICAgICAgVW5yZXZpZXdlZC4KZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1Njcmlw
dHMvcHJlcGFyZS1DaGFuZ2VMb2cgYi9XZWJLaXRUb29scy9TY3JpcHRzL3ByZXBhcmUtQ2hhbmdl
TG9nCmluZGV4IDg3MGM0YjcuLmIxZTBiZTYgMTAwNzU1Ci0tLSBhL1dlYktpdFRvb2xzL1Njcmlw
dHMvcHJlcGFyZS1DaGFuZ2VMb2cKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy9wcmVwYXJlLUNo
YW5nZUxvZwpAQCAtMTA0LDYgKzEwNCw3IEBAIG15ICRuYW1lOwogbXkgJGVtYWlsQWRkcmVzczsK
IG15ICRnaXRDb21taXQgPSAwOwogbXkgJGdpdEluZGV4ID0gIiI7CitteSAkZ2l0RnVsbERpZmYg
PSAwOwogbXkgJGdpdFJldmlld2VyID0gIiI7CiBteSAkb3BlbkNoYW5nZUxvZ3MgPSAwOwogbXkg
JHdyaXRlQ2hhbmdlTG9ncyA9IDE7CkBAIC0xMTcsNiArMTE4LDcgQEAgbXkgJHBhcnNlT3B0aW9u
c1Jlc3VsdCA9CiAgICAgICAgICAgICAgICAiZW1haWw6cyIgPT4gXCRlbWFpbEFkZHJlc3MsCiAg
ICAgICAgICAgICAgICAiZ2l0LWNvbW1pdDpzIiA9PiBcJGdpdENvbW1pdCwKICAgICAgICAgICAg
ICAgICJnaXQtaW5kZXgiID0+IFwkZ2l0SW5kZXgsCisgICAgICAgICAgICAgICAiZ2l0LWZ1bGwt
ZGlmZiIgPT4gXCRnaXRGdWxsRGlmZiwKICAgICAgICAgICAgICAgICJnaXQtcmV2aWV3ZXI6cyIg
PT4gXCRnaXRSZXZpZXdlciwKICAgICAgICAgICAgICAgICJoZWxwfGghIiA9PiBcJHNob3dIZWxw
LAogICAgICAgICAgICAgICAgIm9wZW58byEiID0+IFwkb3BlbkNoYW5nZUxvZ3MsCkBAIC0xMjgs
NiArMTMwLDcgQEAgaWYgKCEkcGFyc2VPcHRpb25zUmVzdWx0IHx8ICRzaG93SGVscCkgewogICAg
IHByaW50IFNUREVSUiAiICAtZHwtLWRpZmYgICAgICBTcGV3IGRpZmYgdG8gc3Rkb3V0IHdoZW4g
cnVubmluZ1xuIjsKICAgICBwcmludCBTVERFUlIgIiAgLS1naXQtY29tbWl0ICAgUG9wdWxhdGUg
dGhlIENoYW5nZUxvZ3MgZnJvbSB0aGUgc3BlY2lmaWVkIGdpdCBjb21taXRcbiI7CiAgICAgcHJp
bnQgU1RERVJSICIgIC0tZ2l0LWluZGV4ICAgIFBvcHVsYXRlIHRoZSBDaGFuZ2VMb2dzIGZyb20g
dGhlIGdpdCBpbmRleCBvbmx5XG4iOworICAgIHByaW50IFNUREVSUiAiICAtLWdpdC1mdWxsLWRp
ZmYgUG9wdWxhdGUgdGhlIENoYW5nZUxvZ3MgZnJvbSB0aGUgZnVsbCBkaWZmIGZyb20gdHJ1bmtc
biI7CiAgICAgcHJpbnQgU1RERVJSICIgIC0tZ2l0LXJldmlld2VyIFdoZW4gcG9wdWxhdGluZyB0
aGUgQ2hhbmdlTG9ncyBmcm9tIGEgZ2l0IGNvbW1pdCBjbGFpbSB0aGF0IHRoZSBzcGNpZmllZCBu
YW1lIHJldmlld2VkIHRoZSBjaGFuZ2UuXG4iOwogICAgIHByaW50IFNUREVSUiAiICAgICAgICAg
ICAgICAgICBUaGlzIG9wdGlvbiBpcyB1c2VmdWwgd2hlbiB0aGUgZ2l0IGNvbW1pdCBsYWNrcyBh
IFNpZ25lZC1PZmYtQnk6IGxpbmVcbiI7CiAgICAgcHJpbnQgU1RERVJSICIgIC1ofC0taGVscCAg
ICAgIFNob3cgdGhpcyBoZWxwIG1lc3NhZ2VcbiI7CkBAIC0xMjU0LDcgKzEyNTcsMTYgQEAgc3Vi
IGRpZmZGcm9tVG9TdHJpbmcoKQogICAgIHJldHVybiAkZ2l0Q29tbWl0IGlmICRnaXRDb21taXQg
PX4gbS8uK1wuXC4uKy87CiAgICAgcmV0dXJuICJcIiRnaXRDb21taXReXCIgXCIkZ2l0Q29tbWl0
XCIiIGlmICRnaXRDb21taXQ7CiAgICAgcmV0dXJuICItLWNhY2hlZCIgaWYgJGdpdEluZGV4Owot
ICAgIHJldHVybiAiSEVBRCIgaWYgJGlzR2l0OworICAgIGlmICgkZ2l0RnVsbERpZmYpIHsKKyAg
ICAgICAgb3BlbiBDT05GSUcsICItfCIsICIkR0lUIGNvbmZpZyBzdm4tcmVtb3RlLnN2bi5mZXRj
aCIgb3IgZGllOworICAgICAgICBteSAkY29uZmlnID0gPENPTkZJRz47CisgICAgICAgICMgR2V0
IHRoZSBwYXJ0IGFmdGVyIHRoZSBjb2xvbiB0byBkaWZmIGFnYWluc3QuCisgICAgICAgICRjb25m
aWcgPX4gcy8uKjovLzsKKyAgICAgICAgJGNvbmZpZyA9fiBzL1xzKiQvLzsKKyAgICAgICAgIyBH
ZXRzIHRoZSBmdWxsLWRpZmYgZnJvbSB0aGUgYnJhbmNoIGluICRjb25maWcgdG8gdGhlIGN1cnJl
bnQgYnJhbmNoLCBpbmNsdWRpbmcgd29ya2luZyBjb3B5IGNoYW5nZXMuCisgICAgICAgIHJldHVy
biAiXCQoZ2l0IG1lcmdlLWJhc2UgIiAuICRjb25maWcgLiAiIEhFQUQpIjsKKyAgICB9CisgICAg
cmV0dXJuICJIRUFEIiBpZiAkaXNHaXQ7ICAgICAgICAKIH0KIAogc3ViIGRpZmZDb21tYW5kKEAp
CkBAIC0xMjY4LDcgKzEyODAsNyBAQCBzdWIgZGlmZkNvbW1hbmQoQCkKICAgICAgICAgJGNvbW1h
bmQgPSAiJFNWTiBkaWZmIC0tZGlmZi1jbWQgZGlmZiAteCAtTiAkcGF0aHNTdHJpbmciOwogICAg
IH0gZWxzaWYgKCRpc0dpdCkgewogICAgICAgICAkY29tbWFuZCA9ICIkR0lUIGRpZmYgLS1uby1l
eHQtZGlmZiAtVTAgIiAuIGRpZmZGcm9tVG9TdHJpbmcoKTsKLSAgICAgICAgJGNvbW1hbmQgLj0g
IiAtLSAkcGF0aHNTdHJpbmciIHVubGVzcyAkZ2l0Q29tbWl0OworICAgICAgICAkY29tbWFuZCAu
PSAiIC0tICRwYXRoc1N0cmluZyIgdW5sZXNzICRnaXRDb21taXQgb3IgJGdpdEZ1bGxEaWZmOwog
ICAgIH0KIAogICAgIHJldHVybiAkY29tbWFuZDsKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvZXhlY3V0aXZlLnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9leGVjdXRpdmUucHkKaW5kZXggNTBiMTE5Yi4uMDkxMDkyOSAxMDA2NDQKLS0tIGEvV2ViS2l0
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9leGVjdXRpdmUucHkKKysrIGIvV2ViS2l0VG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9leGVjdXRpdmUucHkKQEAgLTE2MCwxMiArMTYwLDE0IEBAIGNsYXNzIEV4
ZWN1dGl2ZShvYmplY3QpOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjd2Q9
Y3dkKQogICAgICAgICBvdXRwdXQgPSBwcm9jZXNzLmNvbW11bmljYXRlKHN0cmluZ190b19jb21t
dW5pY2F0ZSlbMF0KICAgICAgICAgZXhpdF9jb2RlID0gcHJvY2Vzcy53YWl0KCkKKworICAgICAg
ICBpZiByZXR1cm5fZXhpdF9jb2RlOgorICAgICAgICAgICAgcmV0dXJuIGV4aXRfY29kZQorCiAg
ICAgICAgIGlmIGV4aXRfY29kZToKICAgICAgICAgICAgIHNjcmlwdF9lcnJvciA9IFNjcmlwdEVy
cm9yKHNjcmlwdF9hcmdzPWFyZ3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBleGl0X2NvZGU9ZXhpdF9jb2RlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgb3V0cHV0PW91dHB1dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGN3ZD1jd2QpCiAgICAgICAgICAgICAoZXJyb3JfaGFuZGxlciBvciBzZWxmLmRlZmF1
bHRfZXJyb3JfaGFuZGxlcikoc2NyaXB0X2Vycm9yKQotICAgICAgICBpZiByZXR1cm5fZXhpdF9j
b2RlOgotICAgICAgICAgICAgcmV0dXJuIGV4aXRfY29kZQogICAgICAgICByZXR1cm4gb3V0cHV0
CmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3NjbS5weSBiL1dlYktp
dFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc2NtLnB5CmluZGV4IGU2ZmEwMWEuLmVhMGE0N2UgMTAw
NjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc2NtLnB5CisrKyBiL1dlYktp
dFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc2NtLnB5CkBAIC0yMDgsNiArMjA4LDkgQEAgY2xhc3Mg
U0NNOgogICAgIGRlZiBjaGFuZ2VkX2ZpbGVzX2Zvcl9yZXZpc2lvbihzZWxmKToKICAgICAgICAg
cmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvciwgInN1YmNsYXNzZXMgbXVzdCBpbXBsZW1lbnQiCiAK
KyAgICBkZWYgcHJlcGFyZV9jaGFuZ2Vsb2dfYXJncyhzZWxmKToKKyAgICAgICAgcmFpc2UgTm90
SW1wbGVtZW50ZWRFcnJvciwgInN1YmNsYXNzZXMgbXVzdCBpbXBsZW1lbnQiCisKICAgICBkZWYg
Y29uZmxpY3RlZF9maWxlcyhzZWxmKToKICAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJv
ciwgInN1YmNsYXNzZXMgbXVzdCBpbXBsZW1lbnQiCiAKQEAgLTM0Niw2ICszNDksOSBAQCBjbGFz
cyBTVk4oU0NNKToKICAgICAgICAgc3RhdHVzX2NvbW1hbmQgPSBbInN2biIsICJkaWZmIiwgIi0t
c3VtbWFyaXplIiwgIi1jIiwgc3RyKHJldmlzaW9uKV0KICAgICAgICAgcmV0dXJuIHNlbGYucnVu
X3N0YXR1c19hbmRfZXh0cmFjdF9maWxlbmFtZXMoc3RhdHVzX2NvbW1hbmQsIHNlbGYuX3N0YXR1
c19yZWdleHAoIkFDRE1SIikpCiAKKyAgICBkZWYgcHJlcGFyZV9jaGFuZ2Vsb2dfYXJncyhzZWxm
KToKKyAgICAgICAgcmV0dXJuIFtdCisKICAgICBkZWYgY29uZmxpY3RlZF9maWxlcyhzZWxmKToK
ICAgICAgICAgcmV0dXJuIHNlbGYucnVuX3N0YXR1c19hbmRfZXh0cmFjdF9maWxlbmFtZXMoc2Vs
Zi5zdGF0dXNfY29tbWFuZCgpLCBzZWxmLl9zdGF0dXNfcmVnZXhwKCJDIikpCiAKQEAgLTQyOCwx
MCArNDM0LDEwIEBAIGNsYXNzIEdpdChTQ00pOgogICAgICAgICByZXR1cm4gIl5Db21taXR0ZWQg
cig/UDxzdm5fcmV2aXNpb24+XGQrKSQiCiAKICAgICBkZWYgZGlzY2FyZF9sb2NhbF9jb21taXRz
KHNlbGYpOgotICAgICAgICBydW5fY29tbWFuZChbJ2dpdCcsICdyZXNldCcsICctLWhhcmQnLCAn
dHJ1bmsnXSkKKyAgICAgICAgcnVuX2NvbW1hbmQoWydnaXQnLCAncmVzZXQnLCAnLS1oYXJkJywg
c2VsZi5zdm5fYnJhbmNoX25hbWUoKV0pCiAgICAgCiAgICAgZGVmIGxvY2FsX2NvbW1pdHMoc2Vs
Zik6Ci0gICAgICAgIHJldHVybiBydW5fY29tbWFuZChbJ2dpdCcsICdsb2cnLCAnLS1wcmV0dHk9
b25lbGluZScsICdIRUFELi4udHJ1bmsnXSkuc3BsaXRsaW5lcygpCisgICAgICAgIHJldHVybiBy
dW5fY29tbWFuZChbJ2dpdCcsICdsb2cnLCAnLS1wcmV0dHk9b25lbGluZScsICdIRUFELi4uJyAr
IHNlbGYuc3ZuX2JyYW5jaF9uYW1lKCldKS5zcGxpdGxpbmVzKCkKIAogICAgIGRlZiByZWJhc2Vf
aW5fcHJvZ3Jlc3Moc2VsZik6CiAgICAgICAgIHJldHVybiBvcy5wYXRoLmV4aXN0cyhvcy5wYXRo
LmpvaW4oc2VsZi5jaGVja291dF9yb290LCAnLmdpdC9yZWJhc2UtYXBwbHknKSkKQEAgLTQ1Myw3
ICs0NTksNyBAQCBjbGFzcyBHaXQoU0NNKToKICAgICAgICAgcmV0dXJuICdeKD9QPHN0YXR1cz5b
JXNdKVx0KD9QPGZpbGVuYW1lPi4rKSQnICUgZXhwZWN0ZWRfdHlwZXMKIAogICAgIGRlZiBjaGFu
Z2VkX2ZpbGVzKHNlbGYpOgotICAgICAgICBzdGF0dXNfY29tbWFuZCA9IFsnZ2l0JywgJ2RpZmYn
LCAnLXInLCAnLS1uYW1lLXN0YXR1cycsICctQycsICctTScsICdIRUFEJ10KKyAgICAgICAgc3Rh
dHVzX2NvbW1hbmQgPSBbJ2dpdCcsICdkaWZmJywgJy1yJywgJy0tbmFtZS1zdGF0dXMnLCAnLUMn
LCAnLU0nLCBzZWxmLnN2bl9tZXJnZV9iYXNlKCldCiAgICAgICAgIHJldHVybiBzZWxmLnJ1bl9z
dGF0dXNfYW5kX2V4dHJhY3RfZmlsZW5hbWVzKHN0YXR1c19jb21tYW5kLCBzZWxmLl9zdGF0dXNf
cmVnZXhwKCJBRE0iKSkKIAogICAgIGRlZiBjaGFuZ2VkX2ZpbGVzX2Zvcl9yZXZpc2lvbihzZWxm
LCByZXZpc2lvbik6CkBAIC00NjMsNiArNDY5LDkgQEAgY2xhc3MgR2l0KFNDTSk6CiAgICAgICAg
ICMgaW5zdGVhZCBpdCBqdXN0IHByaW50cyBhIGJsYW5rIGxpbmUgYXQgdGhlIHRvcCwgc28gd2Ug
c2tpcCB0aGUgYmxhbmsgbGluZToKICAgICAgICAgcmV0dXJuIGNoYW5nZWRfZmlsZXNbMTpdCiAK
KyAgICBkZWYgcHJlcGFyZV9jaGFuZ2Vsb2dfYXJncyhzZWxmKToKKyAgICAgICAgcmV0dXJuIFsn
LS1naXQtZnVsbC1kaWZmJ10KKwogICAgIGRlZiBjb25mbGljdGVkX2ZpbGVzKHNlbGYpOgogICAg
ICAgICBzdGF0dXNfY29tbWFuZCA9IFsnZ2l0JywgJ2RpZmYnLCAnLS1uYW1lLXN0YXR1cycsICct
QycsICctTScsICctLWRpZmYtZmlsdGVyPVUnXQogICAgICAgICByZXR1cm4gc2VsZi5ydW5fc3Rh
dHVzX2FuZF9leHRyYWN0X2ZpbGVuYW1lcyhzdGF0dXNfY29tbWFuZCwgc2VsZi5fc3RhdHVzX3Jl
Z2V4cCgiVSIpKQpAQCAtNDczLDkgKzQ4MiwxMyBAQCBjbGFzcyBHaXQoU0NNKToKIAogICAgIGRl
ZiBkaXNwbGF5X25hbWUoc2VsZik6CiAgICAgICAgIHJldHVybiAiZ2l0IgorICAgICAgICAKKyAg
ICBkZWYgc3ZuX21lcmdlX2Jhc2Uoc2VsZik6CisgICAgICAgIHJldHVybiBydW5fY29tbWFuZChb
J2dpdCcsICdtZXJnZS1iYXNlJywgc2VsZi5zdm5fYnJhbmNoX25hbWUoKSwgJ0hFQUQnXSkuc3Ry
aXAoKQogCiAgICAgZGVmIGNyZWF0ZV9wYXRjaChzZWxmKToKLSAgICAgICAgcmV0dXJuIHJ1bl9j
b21tYW5kKFsnZ2l0JywgJ2RpZmYnLCAnLS1iaW5hcnknLCAnSEVBRCddKQorICAgICAgICAjIEdl
dHMgdGhlIGZ1bGwtZGlmZiBmcm9tIHRoZSBzdm4gYnJhbmNoIHRvIHRoZSBjdXJyZW50IGJyYW5j
aCwgaW5jbHVkaW5nIHdvcmtpbmcgY29weSBjaGFuZ2VzLgorICAgICAgICByZXR1cm4gcnVuX2Nv
bW1hbmQoWydnaXQnLCAnZGlmZicsICctLWJpbmFyeScsIHNlbGYuc3ZuX21lcmdlX2Jhc2UoKV0p
CiAKICAgICBAY2xhc3NtZXRob2QKICAgICBkZWYgZ2l0X2NvbW1pdF9mcm9tX3N2bl9yZXZpc2lv
bihjbHMsIHJldmlzaW9uKToKQEAgLTUxNiwxMCArNTI5LDUyIEBAIGNsYXNzIEdpdChTQ00pOgog
ICAgIGRlZiByZXZlcnRfZmlsZXMoc2VsZiwgZmlsZV9wYXRocyk6CiAgICAgICAgIHJ1bl9jb21t
YW5kKFsnZ2l0JywgJ2NoZWNrb3V0JywgJ0hFQUQnXSArIGZpbGVfcGF0aHMpCiAKKyAgICBkZWYg
c3ZuX2JyYW5jaF9uYW1lKHNlbGYpOgorICAgICAgICByZW1vdGUgPSBydW5fY29tbWFuZChbJ2dp
dCcsICdjb25maWcnLCAnc3ZuLXJlbW90ZS5zdm4uZmV0Y2gnXSkKKyAgICAgICAgcmV0dXJuIHJl
bW90ZS5zdHJpcCgpLnNwbGl0KCc6JylbMV0KKwogICAgIGRlZiBjb21taXRfd2l0aF9tZXNzYWdl
KHNlbGYsIG1lc3NhZ2UsIHVzZXJuYW1lPU5vbmUpOgogICAgICAgICAjIFVzZXJuYW1lIGlzIGln
bm9yZWQgZHVyaW5nIEdpdCBjb21taXRzLgotICAgICAgICBzZWxmLmNvbW1pdF9sb2NhbGx5X3dp
dGhfbWVzc2FnZShtZXNzYWdlKQotICAgICAgICByZXR1cm4gc2VsZi5wdXNoX2xvY2FsX2NvbW1p
dHNfdG9fc2VydmVyKCkKKyAgICAgICAgaWYgbm90IHNlbGYud29ya2luZ19kaXJlY3RvcnlfaXNf
Y2xlYW4oKToKKyAgICAgICAgICAgIHNlbGYuY29tbWl0X2xvY2FsbHlfd2l0aF9tZXNzYWdlKG1l
c3NhZ2UpCisKKyAgICAgICAgYnJhbmNoX3JlZiA9IHJ1bl9jb21tYW5kKFsnZ2l0JywgJ3N5bWJv
bGljLXJlZicsICdIRUFEJ10pLnN0cmlwKCkKKyAgICAgICAgYnJhbmNoX25hbWUgPSBicmFuY2hf
cmVmLnJlcGxhY2UoJ3JlZnMvaGVhZHMvJywgJycpCisgICAgICAgIHN2bl9icmFuY2ggPSBzZWxm
LnN2bl9icmFuY2hfbmFtZSgpCisKKyAgICAgICAgIyBXZSB3YW50IHRvIHNxdWFzaCBhbGwgdGhp
cyBicmFuY2gncyBjb21taXRzIGludG8gb25lIGNvbW1pdCB3aXRoIHRoZSBwcm9wZXIgZGVzY3Jp
cHRpb24uCisgICAgICAgICMgV2UgZG8gdGhpcyBieSBkb2luZyBhICJtZXJnZSAtLXNxdWFzaCIg
aW50byBhIG5ldyBjb21taXQgYnJhbmNoLCB0aGVuIGRjb21taXR0aW5nIHRoYXQuCisgICAgICAg
IE1FUkdFX0JSQU5DSCA9ICd3ZWJraXQtcGF0Y2gtbGFuZCcKKyAgICAgICAgIyBEZWxldGUgdGhl
IG1lcmdlIGJyYW5jaCBpZiBpdCBhbHJlYWR5IGV4aXN0cy4KKyAgICAgICAgaWYgcnVuX2NvbW1h
bmQoWydnaXQnLCAnc2hvdy1yZWYnLCAnLS1xdWlldCcsICctLXZlcmlmeScsICdyZWZzL2hlYWRz
LycgKyBNRVJHRV9CUkFOQ0hdLCByZXR1cm5fZXhpdF9jb2RlPVRydWUpID09IDA6CisgICAgICAg
ICAgICBydW5fY29tbWFuZChbJ2dpdCcsICdicmFuY2gnLCAnLUQnLCBNRVJHRV9CUkFOQ0hdKQor
CisgICAgICAgICMgV2UgbWlnaHQgYmUgaW4gYSBkaXJlY3RvcnkgdGhhdCdzIHByZXNlbnQgaW4g
dGhpcyBicmFuY2ggYnV0IG5vdCBpbiB0aGUKKyAgICAgICAgIyB0cnVuay4gIE1vdmUgdXAgdG8g
dGhlIHRvcCBvZiB0aGUgdHJlZSBzbyB0aGF0IGdpdCBjb21tYW5kcyB0aGF0IGV4cGVjdCBhCisg
ICAgICAgICMgdmFsaWQgQ1dEIHdvbid0IGZhaWwgYWZ0ZXIgd2UgY2hlY2sgb3V0IHRoZSBtZXJn
ZSBicmFuY2guCisgICAgICAgIHJlbF9iYXNlX3BhdGggPSBydW5fY29tbWFuZChbJ2dpdCcsICdy
ZXYtcGFyc2UnLCAnLS1zaG93LWNkdXAnXSkuc3RyaXAoKQorICAgICAgICBpZiByZWxfYmFzZV9w
YXRoOgorICAgICAgICAgICAgb3MuY2hkaXIocmVsX2Jhc2VfcGF0aCkKKworICAgICAgICAjIFN0
dWZmIG91ciBjaGFuZ2UgaW50byB0aGUgbWVyZ2UgYnJhbmNoLgorICAgICAgICAjIFdlIHdyYXAg
aW4gYSB0cnkuLi5maW5hbGx5IGJsb2NrIHNvIGlmIGFueXRoaW5nIGdvZXMgd3JvbmcsCisgICAg
ICAgICMgd2UgY2xlYW4gdXAgdGhlIGJyYW5jaGVzLgorICAgICAgICBvdXRwdXQgPSAiQ29tbWl0
IGZhaWxlZCIKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcnVuX2NvbW1hbmQoWydnaXQnLCAn
Y2hlY2tvdXQnLCAnLXEnLCAnLWInLCBNRVJHRV9CUkFOQ0gsIHN2bl9icmFuY2hdKQorICAgICAg
ICAgICAgcnVuX2NvbW1hbmQoWydnaXQnLCAnbWVyZ2UnLCAnLS1zcXVhc2gnLCBicmFuY2hfcmVm
XSkKKyAgICAgICAgICAgIHJ1bl9jb21tYW5kKFsnZ2l0JywgJ2NvbW1pdCcsICctbScsIG1lc3Nh
Z2VdKQorCisgICAgICAgICAgICBkY29tbWl0X2NvbW1hbmQgPSBbJ2dpdCcsICdzdm4nLCAnZGNv
bW1pdCcsICctLW5vLXJlYmFzZSddCisgICAgICAgICAgICBpZiBzZWxmLmRyeXJ1bjoKKyAgICAg
ICAgICAgICAgICBkY29tbWl0X2NvbW1hbmQuYXBwZW5kKCctLWRyeS1ydW4nKQorICAgICAgICAg
ICAgb3V0cHV0ID0gcnVuX2NvbW1hbmQoZGNvbW1pdF9jb21tYW5kLCBlcnJvcl9oYW5kbGVyPWNv
bW1pdF9lcnJvcl9oYW5kbGVyKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgIyBBbmQg
dGhlbiBzd2FwIGJhY2sgdG8gdGhlIG9yaWdpbmFsIGJyYW5jaCBhbmQgY2xlYW4gdXAuCisgICAg
ICAgICAgICBydW5fY29tbWFuZChbJ2dpdCcsICdjaGVja291dCcsICctcScsIGJyYW5jaF9uYW1l
XSkKKyAgICAgICAgICAgIHJ1bl9jb21tYW5kKFsnZ2l0JywgJ2JyYW5jaCcsICctRCcsIE1FUkdF
X0JSQU5DSF0pCisKKyAgICAgICAgcmV0dXJuIG91dHB1dAogCiAgICAgZGVmIHN2bl9jb21taXRf
bG9nKHNlbGYsIHN2bl9yZXZpc2lvbik6CiAgICAgICAgIHN2bl9yZXZpc2lvbiA9IHNlbGYuc3Ry
aXBfcl9mcm9tX3N2bl9yZXZpc2lvbihzdm5fcmV2aXNpb24pCkBAIC01MzgsMTIgKzU5Myw2IEBA
IGNsYXNzIEdpdChTQ00pOgogCiAgICAgZGVmIGNvbW1pdF9sb2NhbGx5X3dpdGhfbWVzc2FnZShz
ZWxmLCBtZXNzYWdlKToKICAgICAgICAgcnVuX2NvbW1hbmQoWydnaXQnLCAnY29tbWl0JywgJy0t
YWxsJywgJy1GJywgJy0nXSwgaW5wdXQ9bWVzc2FnZSkKLSAgICAgICAgCi0gICAgZGVmIHB1c2hf
bG9jYWxfY29tbWl0c190b19zZXJ2ZXIoc2VsZik6Ci0gICAgICAgIGlmIHNlbGYuZHJ5cnVuOgot
ICAgICAgICAgICAgIyBSZXR1cm4gYSBzdHJpbmcgd2hpY2ggbG9va3MgbGlrZSBhIGNvbW1pdCBz
byB0aGF0IHRoaW5ncyB3aGljaCBwYXJzZSB0aGlzIG91dHB1dCB3aWxsIHN1Y2NlZWQuCi0gICAg
ICAgICAgICByZXR1cm4gIkRyeSBydW4sIG5vIHJlbW90ZSBjb21taXQuXG5Db21taXR0ZWQgcjAi
Ci0gICAgICAgIHJldHVybiBydW5fY29tbWFuZChbJ2dpdCcsICdzdm4nLCAnZGNvbW1pdCddLCBl
cnJvcl9oYW5kbGVyPWNvbW1pdF9lcnJvcl9oYW5kbGVyKQogCiAgICAgIyBUaGlzIGZ1bmN0aW9u
IHN1cHBvcnRzIHRoZSBmb2xsb3dpbmcgYXJndW1lbnQgZm9ybWF0czoKICAgICAjIG5vIGFyZ3Mg
OiByZXYtbGlzdCB0cnVuay4uSEVBRApAQCAtNTUyLDggKzYwMSw3IEBAIGNsYXNzIEdpdChTQ00p
OgogICAgICMgQSBCICAgICA6IFtBLCBCXSAgKGRpZmZlcmVudCBmcm9tIGdpdCBkaWZmLCB3aGlj
aCB3b3VsZCB1c2UgInJldi1saXN0IEEuLkIiKQogICAgIGRlZiBjb21taXRfaWRzX2Zyb21fY29t
bWl0aXNoX2FyZ3VtZW50cyhzZWxmLCBhcmdzKToKICAgICAgICAgaWYgbm90IGxlbihhcmdzKToK
LSAgICAgICAgICAgICMgRklYTUU6IHRydW5rIGlzIG5vdCBhbHdheXMgdGhlIHJlbW90ZSBicmFu
Y2ggbmFtZSwgbmVlZCBhIHdheSB0byBkZXRlY3QgdGhlIG5hbWUuCi0gICAgICAgICAgICBhcmdz
LmFwcGVuZCgndHJ1bmsuLkhFQUQnKQorICAgICAgICAgICAgYXJncy5hcHBlbmQoc2VsZi5zdm5f
YnJhbmNoX25hbWUoKSArICcuLkhFQUQnKQogCiAgICAgICAgIGNvbW1pdF9pZHMgPSBbXQogICAg
ICAgICBmb3IgY29tbWl0aXNoIGluIGFyZ3M6CmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L3N0ZXBzL3ByZXBhcmVjaGFuZ2Vsb2cucHkgYi9XZWJLaXRUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L3N0ZXBzL3ByZXBhcmVjaGFuZ2Vsb2cucHkKaW5kZXggYmQ0MWYwYi4uOGRj
Mjg5NiAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdGVwcy9wcmVw
YXJlY2hhbmdlbG9nLnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3RlcHMv
cHJlcGFyZWNoYW5nZWxvZy5weQpAQCAtNTIsNiArNTIsNyBAQCBjbGFzcyBQcmVwYXJlQ2hhbmdl
TG9nKEFic3RyYWN0U3RlcCk6CiAgICAgICAgICAgICBhcmdzLmFwcGVuZCgiLS1idWc9JXMiICUg
c3RhdGVbImJ1Z19pZCJdKQogICAgICAgICBpZiBzZWxmLl9vcHRpb25zLmVtYWlsOgogICAgICAg
ICAgICAgYXJncy5hcHBlbmQoIi0tZW1haWw9JXMiICUgc2VsZi5fb3B0aW9ucy5lbWFpbCkKKyAg
ICAgICAgYXJncy5leHRlbmQoc2VsZi5fdG9vbC5zY20oKS5wcmVwYXJlX2NoYW5nZWxvZ19hcmdz
KCkpCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHNlbGYuX3Rvb2wuZXhlY3V0aXZlLnJ1bl9h
bmRfdGhyb3dfaWZfZmFpbChhcmdzLCBzZWxmLl9vcHRpb25zLnF1aWV0KQogICAgICAgICBleGNl
cHQgU2NyaXB0RXJyb3IsIGU6Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>51443</attachid>
            <date>2010-03-23 11:48:59 -0700</date>
            <delta_ts>2010-03-31 18:06:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-36394-20100323114858.patch</filename>
            <type>text/plain</type>
            <size>12116</size>
            <attacher name="Ojan Vafai">ojan</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCA3NTk2NzM1Li44NjQ2ZjgwIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9DaGFuZ2VM
b2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQgQEAKKzIwMTAtMDMt
MjIgIE9qYW4gVmFmYWkgIDxvamFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbmNsdWRlIGdpdCBjb21taXRzIGluIHRoZSBk
aWZmIGZvciB3ZWJraXQtcGF0Y2ggdXBsb2FkL2xhbmQuCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNjM5NAorCisgICAgICAgIERpZmYgYWdhaW5zdCB0
aGUgcmVtb3RlIGJyYW5jaCB0byBpbmNsdWRlIGJvdGggbG9jYWwgY29tbWl0cyBhbmQKKyAgICAg
ICAgd29ya2luZyBjb3B5IGNoYW5nZXMgd2hlbiBkb2luZyB1cGxvYWQgb3IgbGFuZC4KKworICAg
ICAgICBXaGVuIGRvaW5nIGFuIHVwbG9hZCwgd2UgbWVyZ2UgdGhlIGNoYW5nZXMgaW50byBhIGNv
bW1pdCBicmFuY2gKKyAgICAgICAgc28gd2UgY2FuIHNxdWFzaCBhbGwgdGhlIGNoYW5nZXMgaW50
byBvbmUgY29tbWl0LiBUaGlzIGlzIG1vc3RseSBjb3BpZWQKKyAgICAgICAgZnJvbSBnaXQtY2wu
CisKKyAgICAgICAgKiBTY3JpcHRzL3ByZXBhcmUtQ2hhbmdlTG9nOgorICAgICAgICBBZGRzIGEg
bmV3IC0tZ2l0LWZ1bGwtZGlmZiBmbGFnIHRvIGdldCB0aGUgZGlmZiBpbmNsdWRpbmcgbG9jYWwg
Y29tbWl0cy4KKyAgICAgICAgTWF5YmUgdGhpcyBzaG91bGQgYmUgdGhlIGRlZmF1bHQ/CisgICAg
ICAgICogU2NyaXB0cy93ZWJraXRweS9leGVjdXRpdmUucHk6CisgICAgICAgICogU2NyaXB0cy93
ZWJraXRweS9zY20ucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9zdGVwcy9wcmVwYXJl
Y2hhbmdlbG9nLnB5OgorCiAyMDEwLTAzLTE5ICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5v
cmc+CiAKICAgICAgICAgVW5yZXZpZXdlZC4KZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1Njcmlw
dHMvcHJlcGFyZS1DaGFuZ2VMb2cgYi9XZWJLaXRUb29scy9TY3JpcHRzL3ByZXBhcmUtQ2hhbmdl
TG9nCmluZGV4IDg3MGM0YjcuLjk2YjVmYWIgMTAwNzU1Ci0tLSBhL1dlYktpdFRvb2xzL1Njcmlw
dHMvcHJlcGFyZS1DaGFuZ2VMb2cKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy9wcmVwYXJlLUNo
YW5nZUxvZwpAQCAtMTAyLDYgKzEwMiw3IEBAIG15ICRjaGFuZ2VMb2dUaW1lWm9uZSA9ICJQU1Q4
UERUIjsKIG15ICRidWdOdW1iZXI7CiBteSAkbmFtZTsKIG15ICRlbWFpbEFkZHJlc3M7CitteSAk
ZnVsbERpZmYgPSAwOwogbXkgJGdpdENvbW1pdCA9IDA7CiBteSAkZ2l0SW5kZXggPSAiIjsKIG15
ICRnaXRSZXZpZXdlciA9ICIiOwpAQCAtMTE1LDYgKzExNiw3IEBAIG15ICRwYXJzZU9wdGlvbnNS
ZXN1bHQgPQogICAgICAgICAgICAgICAgImJ1ZzppIiA9PiBcJGJ1Z051bWJlciwKICAgICAgICAg
ICAgICAgICJuYW1lOnMiID0+IFwkbmFtZSwKICAgICAgICAgICAgICAgICJlbWFpbDpzIiA9PiBc
JGVtYWlsQWRkcmVzcywKKyAgICAgICAgICAgICAgICJmdWxsLWRpZmYiID0+IFwkZnVsbERpZmYs
CiAgICAgICAgICAgICAgICAiZ2l0LWNvbW1pdDpzIiA9PiBcJGdpdENvbW1pdCwKICAgICAgICAg
ICAgICAgICJnaXQtaW5kZXgiID0+IFwkZ2l0SW5kZXgsCiAgICAgICAgICAgICAgICAiZ2l0LXJl
dmlld2VyOnMiID0+IFwkZ2l0UmV2aWV3ZXIsCkBAIC0xMjYsNiArMTI4LDcgQEAgaWYgKCEkcGFy
c2VPcHRpb25zUmVzdWx0IHx8ICRzaG93SGVscCkgewogICAgIHByaW50IFNUREVSUiBiYXNlbmFt
ZSgkMCkgLiAiIFstLWJ1Z10gWy1kfC0tZGlmZl0gWy1ofC0taGVscF0gWy1vfC0tb3Blbl0gWy0t
Z2l0LWNvbW1pdD08Y29tbWl0dGlzaD5dIFstLWdpdC1yZXZpZXdlcj08bmFtZT5dIFtzdm5kaXIx
IFtzdm5kaXIyIC4uLl1dXG4iOwogICAgIHByaW50IFNUREVSUiAiICAtLWJ1ZyAgICAgICAgICBG
aWxsIGluIHRoZSBDaGFuZ2VMb2cgYnVnIGluZm9ybWF0aW9uIGZyb20gdGhlIGdpdmVuIGJ1Zy5c
biI7CiAgICAgcHJpbnQgU1RERVJSICIgIC1kfC0tZGlmZiAgICAgIFNwZXcgZGlmZiB0byBzdGRv
dXQgd2hlbiBydW5uaW5nXG4iOworICAgIHByaW50IFNUREVSUiAiICAtLWZ1bGwtZGlmZiAgICBQ
b3B1bGF0ZSB0aGUgQ2hhbmdlTG9ncyBmcm9tIHRoZSBmdWxsIGRpZmYgZnJvbSB0cnVuayBpbmNs
dWRpbmcgbG9jYWwgY29tbWl0c1xuIjsKICAgICBwcmludCBTVERFUlIgIiAgLS1naXQtY29tbWl0
ICAgUG9wdWxhdGUgdGhlIENoYW5nZUxvZ3MgZnJvbSB0aGUgc3BlY2lmaWVkIGdpdCBjb21taXRc
biI7CiAgICAgcHJpbnQgU1RERVJSICIgIC0tZ2l0LWluZGV4ICAgIFBvcHVsYXRlIHRoZSBDaGFu
Z2VMb2dzIGZyb20gdGhlIGdpdCBpbmRleCBvbmx5XG4iOwogICAgIHByaW50IFNUREVSUiAiICAt
LWdpdC1yZXZpZXdlciBXaGVuIHBvcHVsYXRpbmcgdGhlIENoYW5nZUxvZ3MgZnJvbSBhIGdpdCBj
b21taXQgY2xhaW0gdGhhdCB0aGUgc3BjaWZpZWQgbmFtZSByZXZpZXdlZCB0aGUgY2hhbmdlLlxu
IjsKQEAgLTEyNTQsNiArMTI1NywxNSBAQCBzdWIgZGlmZkZyb21Ub1N0cmluZygpCiAgICAgcmV0
dXJuICRnaXRDb21taXQgaWYgJGdpdENvbW1pdCA9fiBtLy4rXC5cLi4rLzsKICAgICByZXR1cm4g
IlwiJGdpdENvbW1pdF5cIiBcIiRnaXRDb21taXRcIiIgaWYgJGdpdENvbW1pdDsKICAgICByZXR1
cm4gIi0tY2FjaGVkIiBpZiAkZ2l0SW5kZXg7CisgICAgaWYgKCRmdWxsRGlmZikgeworICAgICAg
ICBvcGVuIENPTkZJRywgIi18IiwgIiRHSVQgY29uZmlnIHN2bi1yZW1vdGUuc3ZuLmZldGNoIiBv
ciBkaWU7CisgICAgICAgIG15ICRjb25maWcgPSA8Q09ORklHPjsKKyAgICAgICAgIyBHZXQgdGhl
IHBhcnQgYWZ0ZXIgdGhlIGNvbG9uIHRvIGRpZmYgYWdhaW5zdC4KKyAgICAgICAgJGNvbmZpZyA9
fiBzLy4qOi8vOworICAgICAgICAkY29uZmlnID1+IHMvXHMqJC8vOworICAgICAgICAjIEdldHMg
dGhlIGZ1bGwtZGlmZiBmcm9tIHRoZSBicmFuY2ggaW4gJGNvbmZpZyB0byB0aGUgY3VycmVudCBi
cmFuY2gsIGluY2x1ZGluZyB3b3JraW5nIGNvcHkgY2hhbmdlcy4KKyAgICAgICAgcmV0dXJuICJc
JChnaXQgbWVyZ2UtYmFzZSAiIC4gJGNvbmZpZyAuICIgSEVBRCkiOworICAgIH0KICAgICByZXR1
cm4gIkhFQUQiIGlmICRpc0dpdDsKIH0KIApAQCAtMTI2OCw3ICsxMjgwLDcgQEAgc3ViIGRpZmZD
b21tYW5kKEApCiAgICAgICAgICRjb21tYW5kID0gIiRTVk4gZGlmZiAtLWRpZmYtY21kIGRpZmYg
LXggLU4gJHBhdGhzU3RyaW5nIjsKICAgICB9IGVsc2lmICgkaXNHaXQpIHsKICAgICAgICAgJGNv
bW1hbmQgPSAiJEdJVCBkaWZmIC0tbm8tZXh0LWRpZmYgLVUwICIgLiBkaWZmRnJvbVRvU3RyaW5n
KCk7Ci0gICAgICAgICRjb21tYW5kIC49ICIgLS0gJHBhdGhzU3RyaW5nIiB1bmxlc3MgJGdpdENv
bW1pdDsKKyAgICAgICAgJGNvbW1hbmQgLj0gIiAtLSAkcGF0aHNTdHJpbmciIHVubGVzcyAkZ2l0
Q29tbWl0IG9yICRmdWxsRGlmZjsKICAgICB9CiAKICAgICByZXR1cm4gJGNvbW1hbmQ7CmRpZmYg
LS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2V4ZWN1dGl2ZS5weSBiL1dlYktp
dFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvZXhlY3V0aXZlLnB5CmluZGV4IDUwYjExOWIuLjA5MTA5
MjkgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvZXhlY3V0aXZlLnB5
CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvZXhlY3V0aXZlLnB5CkBAIC0xNjAs
MTIgKzE2MCwxNCBAQCBjbGFzcyBFeGVjdXRpdmUob2JqZWN0KToKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY3dkPWN3ZCkKICAgICAgICAgb3V0cHV0ID0gcHJvY2Vzcy5jb21t
dW5pY2F0ZShzdHJpbmdfdG9fY29tbXVuaWNhdGUpWzBdCiAgICAgICAgIGV4aXRfY29kZSA9IHBy
b2Nlc3Mud2FpdCgpCisKKyAgICAgICAgaWYgcmV0dXJuX2V4aXRfY29kZToKKyAgICAgICAgICAg
IHJldHVybiBleGl0X2NvZGUKKwogICAgICAgICBpZiBleGl0X2NvZGU6CiAgICAgICAgICAgICBz
Y3JpcHRfZXJyb3IgPSBTY3JpcHRFcnJvcihzY3JpcHRfYXJncz1hcmdzLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhpdF9jb2RlPWV4aXRfY29kZSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dD1vdXRwdXQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjd2Q9Y3dkKQogICAgICAgICAgICAgKGVycm9y
X2hhbmRsZXIgb3Igc2VsZi5kZWZhdWx0X2Vycm9yX2hhbmRsZXIpKHNjcmlwdF9lcnJvcikKLSAg
ICAgICAgaWYgcmV0dXJuX2V4aXRfY29kZToKLSAgICAgICAgICAgIHJldHVybiBleGl0X2NvZGUK
ICAgICAgICAgcmV0dXJuIG91dHB1dApkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93
ZWJraXRweS9zY20ucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3NjbS5weQppbmRl
eCBlNmZhMDFhLi4xNzY1MjNkIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtp
dHB5L3NjbS5weQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3NjbS5weQpAQCAt
NDI4LDEwICs0MjgsMTAgQEAgY2xhc3MgR2l0KFNDTSk6CiAgICAgICAgIHJldHVybiAiXkNvbW1p
dHRlZCByKD9QPHN2bl9yZXZpc2lvbj5cZCspJCIKIAogICAgIGRlZiBkaXNjYXJkX2xvY2FsX2Nv
bW1pdHMoc2VsZik6Ci0gICAgICAgIHJ1bl9jb21tYW5kKFsnZ2l0JywgJ3Jlc2V0JywgJy0taGFy
ZCcsICd0cnVuayddKQorICAgICAgICBydW5fY29tbWFuZChbJ2dpdCcsICdyZXNldCcsICctLWhh
cmQnLCBzZWxmLnN2bl9icmFuY2hfbmFtZSgpXSkKICAgICAKICAgICBkZWYgbG9jYWxfY29tbWl0
cyhzZWxmKToKLSAgICAgICAgcmV0dXJuIHJ1bl9jb21tYW5kKFsnZ2l0JywgJ2xvZycsICctLXBy
ZXR0eT1vbmVsaW5lJywgJ0hFQUQuLi50cnVuayddKS5zcGxpdGxpbmVzKCkKKyAgICAgICAgcmV0
dXJuIHJ1bl9jb21tYW5kKFsnZ2l0JywgJ2xvZycsICctLXByZXR0eT1vbmVsaW5lJywgJ0hFQUQu
Li4nICsgc2VsZi5zdm5fYnJhbmNoX25hbWUoKV0pLnNwbGl0bGluZXMoKQogCiAgICAgZGVmIHJl
YmFzZV9pbl9wcm9ncmVzcyhzZWxmKToKICAgICAgICAgcmV0dXJuIG9zLnBhdGguZXhpc3RzKG9z
LnBhdGguam9pbihzZWxmLmNoZWNrb3V0X3Jvb3QsICcuZ2l0L3JlYmFzZS1hcHBseScpKQpAQCAt
NDUzLDcgKzQ1Myw3IEBAIGNsYXNzIEdpdChTQ00pOgogICAgICAgICByZXR1cm4gJ14oP1A8c3Rh
dHVzPlslc10pXHQoP1A8ZmlsZW5hbWU+LispJCcgJSBleHBlY3RlZF90eXBlcwogCiAgICAgZGVm
IGNoYW5nZWRfZmlsZXMoc2VsZik6Ci0gICAgICAgIHN0YXR1c19jb21tYW5kID0gWydnaXQnLCAn
ZGlmZicsICctcicsICctLW5hbWUtc3RhdHVzJywgJy1DJywgJy1NJywgJ0hFQUQnXQorICAgICAg
ICBzdGF0dXNfY29tbWFuZCA9IFsnZ2l0JywgJ2RpZmYnLCAnLXInLCAnLS1uYW1lLXN0YXR1cycs
ICctQycsICctTScsIHNlbGYuc3ZuX21lcmdlX2Jhc2UoKV0KICAgICAgICAgcmV0dXJuIHNlbGYu
cnVuX3N0YXR1c19hbmRfZXh0cmFjdF9maWxlbmFtZXMoc3RhdHVzX2NvbW1hbmQsIHNlbGYuX3N0
YXR1c19yZWdleHAoIkFETSIpKQogCiAgICAgZGVmIGNoYW5nZWRfZmlsZXNfZm9yX3JldmlzaW9u
KHNlbGYsIHJldmlzaW9uKToKQEAgLTQ3NSw3ICs0NzUsOCBAQCBjbGFzcyBHaXQoU0NNKToKICAg
ICAgICAgcmV0dXJuICJnaXQiCiAKICAgICBkZWYgY3JlYXRlX3BhdGNoKHNlbGYpOgotICAgICAg
ICByZXR1cm4gcnVuX2NvbW1hbmQoWydnaXQnLCAnZGlmZicsICctLWJpbmFyeScsICdIRUFEJ10p
CisgICAgICAgICMgR2V0cyB0aGUgZnVsbC1kaWZmIGZyb20gdGhlIHN2biBicmFuY2ggdG8gdGhl
IGN1cnJlbnQgYnJhbmNoLCBpbmNsdWRpbmcgd29ya2luZyBjb3B5IGNoYW5nZXMuCisgICAgICAg
IHJldHVybiBydW5fY29tbWFuZChbJ2dpdCcsICdkaWZmJywgJy0tYmluYXJ5Jywgc2VsZi5zdm5f
bWVyZ2VfYmFzZSgpXSkKIAogICAgIEBjbGFzc21ldGhvZAogICAgIGRlZiBnaXRfY29tbWl0X2Zy
b21fc3ZuX3JldmlzaW9uKGNscywgcmV2aXNpb24pOgpAQCAtNTE4LDggKzUxOSw1OCBAQCBjbGFz
cyBHaXQoU0NNKToKIAogICAgIGRlZiBjb21taXRfd2l0aF9tZXNzYWdlKHNlbGYsIG1lc3NhZ2Us
IHVzZXJuYW1lPU5vbmUpOgogICAgICAgICAjIFVzZXJuYW1lIGlzIGlnbm9yZWQgZHVyaW5nIEdp
dCBjb21taXRzLgotICAgICAgICBzZWxmLmNvbW1pdF9sb2NhbGx5X3dpdGhfbWVzc2FnZShtZXNz
YWdlKQotICAgICAgICByZXR1cm4gc2VsZi5wdXNoX2xvY2FsX2NvbW1pdHNfdG9fc2VydmVyKCkK
KworICAgICAgICAjIE5lZWQgd29ya2luZyBkaXJlY3RvcnkgY2hhbmdlcyB0byBiZSBjb21taXR0
ZWQgc28gd2UgY2FuIGNoZWNrb3V0IHRoZSBtZXJnZSBicmFuY2guCisgICAgICAgIGlmIG5vdCBz
ZWxmLndvcmtpbmdfZGlyZWN0b3J5X2lzX2NsZWFuKCk6CisgICAgICAgICAgICBzZWxmLmNvbW1p
dF9sb2NhbGx5X3dpdGhfbWVzc2FnZShtZXNzYWdlKQorCisgICAgICAgIGJyYW5jaF9yZWYgPSBy
dW5fY29tbWFuZChbJ2dpdCcsICdzeW1ib2xpYy1yZWYnLCAnSEVBRCddKS5zdHJpcCgpCisgICAg
ICAgIGJyYW5jaF9uYW1lID0gYnJhbmNoX3JlZi5yZXBsYWNlKCdyZWZzL2hlYWRzLycsICcnKQor
ICAgICAgICBzdm5fYnJhbmNoID0gc2VsZi5zdm5fYnJhbmNoX25hbWUoKQorCisgICAgICAgICMg
V2Ugd2FudCB0byBzcXVhc2ggYWxsIHRoaXMgYnJhbmNoJ3MgY29tbWl0cyBpbnRvIG9uZSBjb21t
aXQgd2l0aCB0aGUgcHJvcGVyIGRlc2NyaXB0aW9uLgorICAgICAgICAjIFdlIGRvIHRoaXMgYnkg
ZG9pbmcgYSAibWVyZ2UgLS1zcXVhc2giIGludG8gYSBuZXcgY29tbWl0IGJyYW5jaCwgdGhlbiBk
Y29tbWl0dGluZyB0aGF0LgorICAgICAgICBNRVJHRV9CUkFOQ0ggPSAnd2Via2l0LXBhdGNoLWxh
bmQnCisgICAgICAgICMgRGVsZXRlIHRoZSBtZXJnZSBicmFuY2ggaWYgaXQgYWxyZWFkeSBleGlz
dHMuCisgICAgICAgIGlmIHJ1bl9jb21tYW5kKFsnZ2l0JywgJ3Nob3ctcmVmJywgJy0tcXVpZXQn
LCAnLS12ZXJpZnknLCAncmVmcy9oZWFkcy8nICsgTUVSR0VfQlJBTkNIXSwgcmV0dXJuX2V4aXRf
Y29kZT1UcnVlKSA9PSAwOgorICAgICAgICAgICAgcnVuX2NvbW1hbmQoWydnaXQnLCAnYnJhbmNo
JywgJy1EJywgTUVSR0VfQlJBTkNIXSkKKworICAgICAgICAjIFdlIG1pZ2h0IGJlIGluIGEgZGly
ZWN0b3J5IHRoYXQncyBwcmVzZW50IGluIHRoaXMgYnJhbmNoIGJ1dCBub3QgaW4gdGhlCisgICAg
ICAgICMgdHJ1bmsuICBNb3ZlIHVwIHRvIHRoZSB0b3Agb2YgdGhlIHRyZWUgc28gdGhhdCBnaXQg
Y29tbWFuZHMgdGhhdCBleHBlY3QgYQorICAgICAgICAjIHZhbGlkIENXRCB3b24ndCBmYWlsIGFm
dGVyIHdlIGNoZWNrIG91dCB0aGUgbWVyZ2UgYnJhbmNoLgorICAgICAgICByZWxfYmFzZV9wYXRo
ID0gcnVuX2NvbW1hbmQoWydnaXQnLCAncmV2LXBhcnNlJywgJy0tc2hvdy1jZHVwJ10pLnN0cmlw
KCkKKyAgICAgICAgaWYgcmVsX2Jhc2VfcGF0aDoKKyAgICAgICAgICAgIG9zLmNoZGlyKHJlbF9i
YXNlX3BhdGgpCisKKyAgICAgICAgIyBTdHVmZiBvdXIgY2hhbmdlIGludG8gdGhlIG1lcmdlIGJy
YW5jaC4KKyAgICAgICAgIyBXZSB3cmFwIGluIGEgdHJ5Li4uZmluYWxseSBibG9jayBzbyBpZiBh
bnl0aGluZyBnb2VzIHdyb25nLCB3ZSBjbGVhbiB1cCB0aGUgYnJhbmNoZXMuCisgICAgICAgIGNv
bW1pdF9zdWNjZWVkZWQgPSBUcnVlCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHJ1bl9jb21t
YW5kKFsnZ2l0JywgJ2NoZWNrb3V0JywgJy1xJywgJy1iJywgTUVSR0VfQlJBTkNILCBzdm5fYnJh
bmNoXSkKKyAgICAgICAgICAgIHJ1bl9jb21tYW5kKFsnZ2l0JywgJ21lcmdlJywgJy0tc3F1YXNo
JywgYnJhbmNoX3JlZl0pCisgICAgICAgICAgICBydW5fY29tbWFuZChbJ2dpdCcsICdjb21taXQn
LCAnLW0nLCBtZXNzYWdlXSkKKworICAgICAgICAgICAgZGNvbW1pdF9jb21tYW5kID0gWydnaXQn
LCAnc3ZuJywgJ2Rjb21taXQnLCAnLS1uby1yZWJhc2UnXQorICAgICAgICAgICAgaWYgc2VsZi5k
cnlydW46CisgICAgICAgICAgICAgICAgZGNvbW1pdF9jb21tYW5kLmFwcGVuZCgnLS1kcnktcnVu
JykKKworICAgICAgICAgICAgb3V0cHV0ID0gcnVuX2NvbW1hbmQoZGNvbW1pdF9jb21tYW5kLCBl
cnJvcl9oYW5kbGVyPWNvbW1pdF9lcnJvcl9oYW5kbGVyKQorCisgICAgICAgICAgICAjIFJldHVy
biBhIHN0cmluZyB3aGljaCBsb29rcyBsaWtlIGEgY29tbWl0IHNvIHRoYXQgdGhpbmdzIHdoaWNo
IHBhcnNlIHRoaXMgb3V0cHV0IHdpbGwgc3VjY2VlZC4KKyAgICAgICAgICAgIGlmIHNlbGYuZHJ5
cnVuOgorICAgICAgICAgICAgICAgIG91dHB1dCArPSAiXG5Db21taXR0ZWQgcjAiCisgICAgICAg
IGV4Y2VwdDoKKyAgICAgICAgICAgIG91dHB1dCA9ICJDb21taXQgZmFpbGVkIgorICAgICAgICAg
ICAgY29tbWl0X3N1Y2NlZWRlZCA9IEZhbHNlCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAg
ICAjIEFuZCB0aGVuIHN3YXAgYmFjayB0byB0aGUgb3JpZ2luYWwgYnJhbmNoIGFuZCBjbGVhbiB1
cC4KKyAgICAgICAgICAgIHJ1bl9jb21tYW5kKFsnZ2l0JywgJ2NoZWNrb3V0JywgJy1xJywgYnJh
bmNoX25hbWVdKQorICAgICAgICAgICAgcnVuX2NvbW1hbmQoWydnaXQnLCAnYnJhbmNoJywgJy1E
JywgTUVSR0VfQlJBTkNIXSkKKyAgICAgICAgICAgICMgSWYgdGhlIGNvbW1pdCBzdWNjZWVkZWQs
IG1ha2UgdGhlIGJyYW5jaCBtYXRjaCB0aGUgc3ZuIHJlcG8uCisgICAgICAgICAgICBpZiBjb21t
aXRfc3VjY2VlZGVkIGFuZCBub3Qgc2VsZi5kcnlydW46CisgICAgICAgICAgICAgICAgcnVuX2Nv
bW1hbmQoWydnaXQnLCAncmVzZXQnLCAnLS1oYXJkJywgc3ZuX2JyYW5jaF0pCisKKyAgICAgICAg
cmV0dXJuIG91dHB1dAogCiAgICAgZGVmIHN2bl9jb21taXRfbG9nKHNlbGYsIHN2bl9yZXZpc2lv
bik6CiAgICAgICAgIHN2bl9yZXZpc2lvbiA9IHNlbGYuc3RyaXBfcl9mcm9tX3N2bl9yZXZpc2lv
bihzdm5fcmV2aXNpb24pCkBAIC01MzAsNiArNTgxLDEzIEBAIGNsYXNzIEdpdChTQ00pOgogCiAg
ICAgIyBHaXQtc3BlY2lmaWMgbWV0aG9kczoKIAorICAgIGRlZiBzdm5fbWVyZ2VfYmFzZShzZWxm
KToKKyAgICAgICAgcmV0dXJuIHJ1bl9jb21tYW5kKFsnZ2l0JywgJ21lcmdlLWJhc2UnLCBzZWxm
LnN2bl9icmFuY2hfbmFtZSgpLCAnSEVBRCddKS5zdHJpcCgpCisKKyAgICBkZWYgc3ZuX2JyYW5j
aF9uYW1lKHNlbGYpOgorICAgICAgICByZW1vdGUgPSBydW5fY29tbWFuZChbJ2dpdCcsICdjb25m
aWcnLCAnc3ZuLXJlbW90ZS5zdm4uZmV0Y2gnXSkKKyAgICAgICAgcmV0dXJuIHJlbW90ZS5zdHJp
cCgpLnNwbGl0KCc6JylbMV0KKwogICAgIGRlZiBjcmVhdGVfcGF0Y2hfZnJvbV9sb2NhbF9jb21t
aXQoc2VsZiwgY29tbWl0X2lkKToKICAgICAgICAgcmV0dXJuIHJ1bl9jb21tYW5kKFsnZ2l0Jywg
J2RpZmYnLCAnLS1iaW5hcnknLCBjb21taXRfaWQgKyAiXi4uIiArIGNvbW1pdF9pZF0pCiAKQEAg
LTUzOCwxMiArNTk2LDYgQEAgY2xhc3MgR2l0KFNDTSk6CiAKICAgICBkZWYgY29tbWl0X2xvY2Fs
bHlfd2l0aF9tZXNzYWdlKHNlbGYsIG1lc3NhZ2UpOgogICAgICAgICBydW5fY29tbWFuZChbJ2dp
dCcsICdjb21taXQnLCAnLS1hbGwnLCAnLUYnLCAnLSddLCBpbnB1dD1tZXNzYWdlKQotICAgICAg
ICAKLSAgICBkZWYgcHVzaF9sb2NhbF9jb21taXRzX3RvX3NlcnZlcihzZWxmKToKLSAgICAgICAg
aWYgc2VsZi5kcnlydW46Ci0gICAgICAgICAgICAjIFJldHVybiBhIHN0cmluZyB3aGljaCBsb29r
cyBsaWtlIGEgY29tbWl0IHNvIHRoYXQgdGhpbmdzIHdoaWNoIHBhcnNlIHRoaXMgb3V0cHV0IHdp
bGwgc3VjY2VlZC4KLSAgICAgICAgICAgIHJldHVybiAiRHJ5IHJ1biwgbm8gcmVtb3RlIGNvbW1p
dC5cbkNvbW1pdHRlZCByMCIKLSAgICAgICAgcmV0dXJuIHJ1bl9jb21tYW5kKFsnZ2l0JywgJ3N2
bicsICdkY29tbWl0J10sIGVycm9yX2hhbmRsZXI9Y29tbWl0X2Vycm9yX2hhbmRsZXIpCiAKICAg
ICAjIFRoaXMgZnVuY3Rpb24gc3VwcG9ydHMgdGhlIGZvbGxvd2luZyBhcmd1bWVudCBmb3JtYXRz
OgogICAgICMgbm8gYXJncyA6IHJldi1saXN0IHRydW5rLi5IRUFECkBAIC01NTIsOCArNjA0LDcg
QEAgY2xhc3MgR2l0KFNDTSk6CiAgICAgIyBBIEIgICAgIDogW0EsIEJdICAoZGlmZmVyZW50IGZy
b20gZ2l0IGRpZmYsIHdoaWNoIHdvdWxkIHVzZSAicmV2LWxpc3QgQS4uQiIpCiAgICAgZGVmIGNv
bW1pdF9pZHNfZnJvbV9jb21taXRpc2hfYXJndW1lbnRzKHNlbGYsIGFyZ3MpOgogICAgICAgICBp
ZiBub3QgbGVuKGFyZ3MpOgotICAgICAgICAgICAgIyBGSVhNRTogdHJ1bmsgaXMgbm90IGFsd2F5
cyB0aGUgcmVtb3RlIGJyYW5jaCBuYW1lLCBuZWVkIGEgd2F5IHRvIGRldGVjdCB0aGUgbmFtZS4K
LSAgICAgICAgICAgIGFyZ3MuYXBwZW5kKCd0cnVuay4uSEVBRCcpCisgICAgICAgICAgICBhcmdz
LmFwcGVuZChzZWxmLnN2bl9icmFuY2hfbmFtZSgpICsgJy4uSEVBRCcpCiAKICAgICAgICAgY29t
bWl0X2lkcyA9IFtdCiAgICAgICAgIGZvciBjb21taXRpc2ggaW4gYXJnczoKZGlmZiAtLWdpdCBh
L1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3RlcHMvcHJlcGFyZWNoYW5nZWxvZy5weSBi
L1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3RlcHMvcHJlcGFyZWNoYW5nZWxvZy5weQpp
bmRleCBiZDQxZjBiLi5lNzU4YWQ0IDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dl
YmtpdHB5L3N0ZXBzL3ByZXBhcmVjaGFuZ2Vsb2cucHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0
cy93ZWJraXRweS9zdGVwcy9wcmVwYXJlY2hhbmdlbG9nLnB5CkBAIC01Miw2ICs1Miw3IEBAIGNs
YXNzIFByZXBhcmVDaGFuZ2VMb2coQWJzdHJhY3RTdGVwKToKICAgICAgICAgICAgIGFyZ3MuYXBw
ZW5kKCItLWJ1Zz0lcyIgJSBzdGF0ZVsiYnVnX2lkIl0pCiAgICAgICAgIGlmIHNlbGYuX29wdGlv
bnMuZW1haWw6CiAgICAgICAgICAgICBhcmdzLmFwcGVuZCgiLS1lbWFpbD0lcyIgJSBzZWxmLl9v
cHRpb25zLmVtYWlsKQorICAgICAgICBhcmdzLmFwcGVuZCgiLS1mdWxsLWRpZmYiKQogICAgICAg
ICB0cnk6CiAgICAgICAgICAgICBzZWxmLl90b29sLmV4ZWN1dGl2ZS5ydW5fYW5kX3Rocm93X2lm
X2ZhaWwoYXJncywgc2VsZi5fb3B0aW9ucy5xdWlldCkKICAgICAgICAgZXhjZXB0IFNjcmlwdEVy
cm9yLCBlOgpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9v
cHRwYXJzZXIucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL29wdHBhcnNl
ci5weQppbmRleCA5N2VhNmM5Li41YWM4YjJkIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L3N0eWxlL29wdHBhcnNlci5weQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRz
L3dlYmtpdHB5L3N0eWxlL29wdHBhcnNlci5weQpAQCAtNjcsNiArNjcsOCBAQCBTeW50YXg6ICUo
cHJvZ3JhbV9uYW1lKXMgWy0tdmVyYm9zZT0jXSBbLS1naXQtY29tbWl0PTxTaW5nbGVDb21taXQ+
XSBbLS1vdXRwdXQ9dgogCiAgICAgZ2l0LWNvbW1pdD08U2luZ2xlQ29tbWl0PgogICAgICAgQ2hl
Y2tzIHRoZSBzdHlsZSBvZiBldmVyeXRoaW5nIGZyb20gdGhlIGdpdmVuIGNvbW1pdCB0byB0aGUg
bG9jYWwgdHJlZS4KKyAgICAgIElmIG9taXR0ZWQsIHRoZW4gYWxsIGRpZmZzIGZyb20gdGhlIHJl
bW90ZSBicmFuY2ggYXJlIGNoZWNrZWQsCisgICAgICBpbmNsdWRpbmcgd29ya2luZyBjb3B5IGNo
YW5nZXMgYW5kIGxvY2FsIGNvbW1pdHMuCiAKICAgICBvdXRwdXQ9dnM3CiAgICAgICBUaGUgb3V0
cHV0IGZvcm1hdCwgd2hpY2ggbWF5IGJlIG9uZSBvZgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>52229</attachid>
            <date>2010-03-31 18:06:53 -0700</date>
            <delta_ts>2010-04-01 10:02:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-36394-20100331180652.patch</filename>
            <type>text/plain</type>
            <size>53183</size>
            <attacher name="Ojan Vafai">ojan</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCBjNDQ1ZTIyLi5mNzc0MjQwIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9DaGFuZ2VM
b2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjggQEAKKzIwMTAtMDMt
MjkgIE9qYW4gVmFmYWkgIDxvamFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBi
eSBFcmljIFNlaWRlbC4KKworICAgICAgICBJbmNsdWRlIGdpdCBjb21taXRzIGluIHRoZSBkaWZm
IGZvciB3ZWJraXQtcGF0Y2ggdXBsb2FkL2xhbmQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNjM5NAorCisgICAgICAgIEFkZHMgLS1zcXVhc2ggYW5k
IC0tZ2l0LWNvbW1pdC4gLS1naXQtY29tbWl0IHdpbGwgdXNlIGEgc3BlY2lmaWMKKyAgICAgICAg
bG9jYWwgY29tbWl0IGZvciBsYW5kL3VwbG9hZC4gLS1zcXVhc2ggd2lsbCBzcXVhc2ggYWxsIGxv
Y2FsIGNoYW5nZXMKKyAgICAgICAgaW5jbHVkaW5nIHdvcmtpbmcgY29weSBjaGFuZ2VzIGludG8g
YSBzaW5nbGUgcGF0Y2guIElmIG5laXRoZXIgaXMKKyAgICAgICAgc3BlY2lmaWVkLCB0aGVuIHRo
ZSB1c2VyIGlzIHByb21wdGVkIHdoZW5ldmVyIHRoZXJlIGlzIG1vcmUgdGhhbgorICAgICAgICBv
bmUgY29tbWl0IGF2YWlsYWJsZSBvciB3aGVuIHRoZXJlIGFyZSBsb2NhbCBjb21taXQocykgYW5k
IHdvcmtpbmcKKyAgICAgICAgY29weSBjaGFuZ2VzLgorCisgICAgICAgIEFsc28sIGlmIHRoZSB3
ZWJraXQtcGF0Y2guc3F1YXNoIGdpdCBjb25maWcgcGFyYW1ldGVyIGlzIHNldCwgdGhlbgorICAg
ICAgICB0aGF0IHdpbGwgYmUgcmVzcGVjdGVkIGluc3RlYWQgb2YgcHJvbXB0aW5nIHRoZSB1c2Vy
LgorCisgICAgICAgICogU2NyaXB0cy9wcmVwYXJlLUNoYW5nZUxvZzoKKyAgICAgICAgKiBTY3Jp
cHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9zY20ucHk6CisgICAgICAgICogU2NyaXB0cy93
ZWJraXRweS9jb21tb24vbmV0L2NyZWRlbnRpYWxzLnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Vi
a2l0cHkvY29tbW9uL25ldC9jcmVkZW50aWFsc191bml0dGVzdC5weToKKyAgICAgICAgKiBTY3Jp
cHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vZXhlY3V0aXZlLnB5OgorICAgICAgICAqIFNjcmlw
dHMvd2Via2l0cHkvc3R5bGUvb3B0cGFyc2VyLnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0
cHkvdG9vbC9zdGVwcy9wcmVwYXJlY2hhbmdlbG9nLnB5OgorCiAyMDEwLTAzLTMxICBEaWVnbyBH
b256YWxleiAgPGRpZWdvLmdvbnphbGV6QG9wZW5ib3NzYS5vcmc+CiAKICAgICAgICAgUmV2aWV3
ZWQgYnkgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4uCmRpZmYgLS1naXQgYS9XZWJLaXRUb29s
cy9TY3JpcHRzL2NoZWNrLXdlYmtpdC1zdHlsZSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvY2hlY2st
d2Via2l0LXN0eWxlCmluZGV4IDVkMjk2OTUuLmZiNjcyMTggMTAwNzU1Ci0tLSBhL1dlYktpdFRv
b2xzL1NjcmlwdHMvY2hlY2std2Via2l0LXN0eWxlCisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMv
Y2hlY2std2Via2l0LXN0eWxlCkBAIC00OSw2ICs0OSw3IEBAIGltcG9ydCBvcy5wYXRoCiBpbXBv
cnQgc3lzCiAKIGZyb20gd2Via2l0cHkuc3R5bGVfcmVmZXJlbmNlcyBpbXBvcnQgZGV0ZWN0X2No
ZWNrb3V0Citmcm9tIHdlYmtpdHB5LnN0eWxlX3JlZmVyZW5jZXMgaW1wb3J0IGluX3dvcmtpbmdf
ZGlyZWN0b3J5CiBmcm9tIHdlYmtpdHB5LnN0eWxlLm1haW4gaW1wb3J0IGNoYW5nZV9kaXJlY3Rv
cnkKIGltcG9ydCB3ZWJraXRweS5zdHlsZS5jaGVja2VyIGFzIGNoZWNrZXIKIApAQCAtODMsMTgg
Kzg0LDE4IEBAIGRlZiBtYWluKCk6CiAgICAgY2hlY2tlci5jb25maWd1cmVfbG9nZ2luZyhzdHJl
YW09c3RkZXJyLCBpc192ZXJib3NlPWlzX3ZlcmJvc2UpCiAgICAgX2xvZy5kZWJ1ZygiVmVyYm9z
ZSBsb2dnaW5nIGVuYWJsZWQuIikKIAotICAgIGNoZWNrb3V0ID0gZGV0ZWN0X2NoZWNrb3V0KCkK
LQotICAgIGlmIGNoZWNrb3V0IGlzIE5vbmU6Ci0gICAgICAgIGNoZWNrb3V0X3Jvb3QgPSBOb25l
CisgICAgaGFzX2NoZWNrb3V0ID0gaW5fd29ya2luZ19kaXJlY3RvcnkKKyAgICBpZiBub3QgaGFz
X2NoZWNrb3V0OgogICAgICAgICBfbG9nLmRlYnVnKCJXZWJLaXQgY2hlY2tvdXQgbm90IGZvdW5k
IGZvciBjdXJyZW50IGRpcmVjdG9yeS4iKQotICAgIGVsc2U6Ci0gICAgICAgIGNoZWNrb3V0X3Jv
b3QgPSBjaGVja291dC5yb290X3BhdGgoKQotICAgICAgICBfbG9nLmRlYnVnKCJXZWJLaXQgY2hl
Y2tvdXQgZm91bmQgd2l0aCByb290OiAlcyIgJSBjaGVja291dF9yb290KQogCiAgICAgcGFyc2Vy
ID0gY2hlY2tlci5jaGVja193ZWJraXRfc3R5bGVfcGFyc2VyKCkKLSAgICBmb3VuZF9jaGVja291
dCA9IGNoZWNrb3V0IGlzIG5vdCBOb25lCi0gICAgKHBhdGhzLCBvcHRpb25zKSA9IHBhcnNlci5w
YXJzZShhcmdzLCBmb3VuZF9jaGVja291dD1mb3VuZF9jaGVja291dCkKKyAgICAocGF0aHMsIG9w
dGlvbnMpID0gcGFyc2VyLnBhcnNlKGFyZ3MsIGZvdW5kX2NoZWNrb3V0PWhhc19jaGVja291dCkK
KworICAgIGNoZWNrb3V0ID0gZGV0ZWN0X2NoZWNrb3V0KG9wdGlvbnMpCisKKyAgICBpZiBjaGVj
a291dDoKKyAgICAgICAgY2hlY2tvdXRfcm9vdCA9IGNoZWNrb3V0LnJvb3RfcGF0aCgpCisgICAg
ICAgIF9sb2cuZGVidWcoIldlYktpdCBjaGVja291dCBmb3VuZCB3aXRoIHJvb3Q6ICVzIiAlIGNo
ZWNrb3V0X3Jvb3QpCiAKICAgICBjb25maWd1cmF0aW9uID0gY2hlY2tlci5jaGVja193ZWJraXRf
c3R5bGVfY29uZmlndXJhdGlvbihvcHRpb25zKQogICAgIHN0eWxlX2NoZWNrZXIgPSBjaGVja2Vy
LlN0eWxlQ2hlY2tlcihjb25maWd1cmF0aW9uKQpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2Ny
aXB0cy9wcmVwYXJlLUNoYW5nZUxvZyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvcHJlcGFyZS1DaGFu
Z2VMb2cKaW5kZXggODcwYzRiNy4uYjA4N2Y2NyAxMDA3NTUKLS0tIGEvV2ViS2l0VG9vbHMvU2Ny
aXB0cy9wcmVwYXJlLUNoYW5nZUxvZworKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3ByZXBhcmUt
Q2hhbmdlTG9nCkBAIC0xMDIsNiArMTAyLDcgQEAgbXkgJGNoYW5nZUxvZ1RpbWVab25lID0gIlBT
VDhQRFQiOwogbXkgJGJ1Z051bWJlcjsKIG15ICRuYW1lOwogbXkgJGVtYWlsQWRkcmVzczsKK215
ICRtZXJnZUJhc2UgPSAwOwogbXkgJGdpdENvbW1pdCA9IDA7CiBteSAkZ2l0SW5kZXggPSAiIjsK
IG15ICRnaXRSZXZpZXdlciA9ICIiOwpAQCAtMTE1LDYgKzExNiw3IEBAIG15ICRwYXJzZU9wdGlv
bnNSZXN1bHQgPQogICAgICAgICAgICAgICAgImJ1ZzppIiA9PiBcJGJ1Z051bWJlciwKICAgICAg
ICAgICAgICAgICJuYW1lOnMiID0+IFwkbmFtZSwKICAgICAgICAgICAgICAgICJlbWFpbDpzIiA9
PiBcJGVtYWlsQWRkcmVzcywKKyAgICAgICAgICAgICAgICJtZXJnZS1iYXNlOnMiID0+IFwkbWVy
Z2VCYXNlLAogICAgICAgICAgICAgICAgImdpdC1jb21taXQ6cyIgPT4gXCRnaXRDb21taXQsCiAg
ICAgICAgICAgICAgICAiZ2l0LWluZGV4IiA9PiBcJGdpdEluZGV4LAogICAgICAgICAgICAgICAg
ImdpdC1yZXZpZXdlcjpzIiA9PiBcJGdpdFJldmlld2VyLApAQCAtMTI2LDYgKzEyOCw3IEBAIGlm
ICghJHBhcnNlT3B0aW9uc1Jlc3VsdCB8fCAkc2hvd0hlbHApIHsKICAgICBwcmludCBTVERFUlIg
YmFzZW5hbWUoJDApIC4gIiBbLS1idWddIFstZHwtLWRpZmZdIFstaHwtLWhlbHBdIFstb3wtLW9w
ZW5dIFstLWdpdC1jb21taXQ9PGNvbW1pdHRpc2g+XSBbLS1naXQtcmV2aWV3ZXI9PG5hbWU+XSBb
c3ZuZGlyMSBbc3ZuZGlyMiAuLi5dXVxuIjsKICAgICBwcmludCBTVERFUlIgIiAgLS1idWcgICAg
ICAgICAgRmlsbCBpbiB0aGUgQ2hhbmdlTG9nIGJ1ZyBpbmZvcm1hdGlvbiBmcm9tIHRoZSBnaXZl
biBidWcuXG4iOwogICAgIHByaW50IFNUREVSUiAiICAtZHwtLWRpZmYgICAgICBTcGV3IGRpZmYg
dG8gc3Rkb3V0IHdoZW4gcnVubmluZ1xuIjsKKyAgICBwcmludCBTVERFUlIgIiAgLS1tZXJnZS1i
YXNlICAgUG9wdWxhdGUgdGhlIENoYW5nZUxvZ3Mgd2l0aCB0aGUgZGlmZiB0byB0aGlzIGJyYW5j
aFxuIjsKICAgICBwcmludCBTVERFUlIgIiAgLS1naXQtY29tbWl0ICAgUG9wdWxhdGUgdGhlIENo
YW5nZUxvZ3MgZnJvbSB0aGUgc3BlY2lmaWVkIGdpdCBjb21taXRcbiI7CiAgICAgcHJpbnQgU1RE
RVJSICIgIC0tZ2l0LWluZGV4ICAgIFBvcHVsYXRlIHRoZSBDaGFuZ2VMb2dzIGZyb20gdGhlIGdp
dCBpbmRleCBvbmx5XG4iOwogICAgIHByaW50IFNUREVSUiAiICAtLWdpdC1yZXZpZXdlciBXaGVu
IHBvcHVsYXRpbmcgdGhlIENoYW5nZUxvZ3MgZnJvbSBhIGdpdCBjb21taXQgY2xhaW0gdGhhdCB0
aGUgc3BjaWZpZWQgbmFtZSByZXZpZXdlZCB0aGUgY2hhbmdlLlxuIjsKQEAgLTEyNTQsNiArMTI1
Nyw3IEBAIHN1YiBkaWZmRnJvbVRvU3RyaW5nKCkKICAgICByZXR1cm4gJGdpdENvbW1pdCBpZiAk
Z2l0Q29tbWl0ID1+IG0vLitcLlwuLisvOwogICAgIHJldHVybiAiXCIkZ2l0Q29tbWl0XlwiIFwi
JGdpdENvbW1pdFwiIiBpZiAkZ2l0Q29tbWl0OwogICAgIHJldHVybiAiLS1jYWNoZWQiIGlmICRn
aXRJbmRleDsKKyAgICByZXR1cm4gJG1lcmdlQmFzZSBpZiAkbWVyZ2VCYXNlOwogICAgIHJldHVy
biAiSEVBRCIgaWYgJGlzR2l0OwogfQogCkBAIC0xMjY4LDcgKzEyNzIsNyBAQCBzdWIgZGlmZkNv
bW1hbmQoQCkKICAgICAgICAgJGNvbW1hbmQgPSAiJFNWTiBkaWZmIC0tZGlmZi1jbWQgZGlmZiAt
eCAtTiAkcGF0aHNTdHJpbmciOwogICAgIH0gZWxzaWYgKCRpc0dpdCkgewogICAgICAgICAkY29t
bWFuZCA9ICIkR0lUIGRpZmYgLS1uby1leHQtZGlmZiAtVTAgIiAuIGRpZmZGcm9tVG9TdHJpbmco
KTsKLSAgICAgICAgJGNvbW1hbmQgLj0gIiAtLSAkcGF0aHNTdHJpbmciIHVubGVzcyAkZ2l0Q29t
bWl0OworICAgICAgICAkY29tbWFuZCAuPSAiIC0tICRwYXRoc1N0cmluZyIgdW5sZXNzICRnaXRD
b21taXQgb3IgJG1lcmdlQmFzZTsKICAgICB9CiAKICAgICByZXR1cm4gJGNvbW1hbmQ7CmRpZmYg
LS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9zY20u
cHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9zY20ucHkK
aW5kZXggNmU3YTg5ZS4uOTU5OThmNyAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93
ZWJraXRweS9jb21tb24vY2hlY2tvdXQvc2NtLnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMv
d2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L3NjbS5weQpAQCAtMzYsMTUgKzM2LDE4IEBAIGZyb20g
d2Via2l0cHkuY29tbW9uLnN5c3RlbS5leGVjdXRpdmUgaW1wb3J0IEV4ZWN1dGl2ZSwgcnVuX2Nv
bW1hbmQsIFNjcmlwdEVycm9yCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0udXNlciBpbXBv
cnQgVXNlcgogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmRlcHJlY2F0ZWRfbG9nZ2luZyBp
bXBvcnQgZXJyb3IsIGxvZwogCi1kZWYgZGV0ZWN0X3NjbV9zeXN0ZW0ocGF0aCk6CitkZWYgZGV0
ZWN0X3NjbV9zeXN0ZW0ocGF0aCwgb3B0aW9ucyk6CiAgICAgaWYgU1ZOLmluX3dvcmtpbmdfZGly
ZWN0b3J5KHBhdGgpOgotICAgICAgICByZXR1cm4gU1ZOKGN3ZD1wYXRoKQorICAgICAgICByZXR1
cm4gU1ZOKGN3ZD1wYXRoLCBvcHRpb25zPW9wdGlvbnMpCiAgICAgCiAgICAgaWYgR2l0LmluX3dv
cmtpbmdfZGlyZWN0b3J5KHBhdGgpOgotICAgICAgICByZXR1cm4gR2l0KGN3ZD1wYXRoKQorICAg
ICAgICByZXR1cm4gR2l0KGN3ZD1wYXRoLCBvcHRpb25zPW9wdGlvbnMpCiAgICAgCiAgICAgcmV0
dXJuIE5vbmUKIAorZGVmIGluX3dvcmtpbmdfZGlyZWN0b3J5KHBhdGgpOgorICAgIHJldHVybiBT
Vk4uaW5fd29ya2luZ19kaXJlY3RvcnkocGF0aCkgb3IgR2l0LmluX3dvcmtpbmdfZGlyZWN0b3J5
KHBhdGgpCisKIGRlZiBmaXJzdF9ub25fZW1wdHlfbGluZV9hZnRlcl9pbmRleChsaW5lcywgaW5k
ZXg9MCk6CiAgICAgZmlyc3Rfbm9uX2VtcHR5X2xpbmUgPSBpbmRleAogICAgIGZvciBsaW5lIGlu
IGxpbmVzW2luZGV4Ol06CkBAIC04OSwxMCArOTIsMTEgQEAgZGVmIGNvbW1pdF9lcnJvcl9oYW5k
bGVyKGVycm9yKToKIAogCiBjbGFzcyBTQ006Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGN3ZCwg
ZHJ5cnVuPUZhbHNlKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgY3dkLCBvcHRpb25zKToKICAg
ICAgICAgc2VsZi5jd2QgPSBjd2QKICAgICAgICAgc2VsZi5jaGVja291dF9yb290ID0gc2VsZi5m
aW5kX2NoZWNrb3V0X3Jvb3Qoc2VsZi5jd2QpCi0gICAgICAgIHNlbGYuZHJ5cnVuID0gZHJ5cnVu
CisgICAgICAgIHNlbGYuZHJ5cnVuID0gRmFsc2UKKyAgICAgICAgc2VsZi5vcHRpb25zID0gb3B0
aW9ucwogCiAgICAgZGVmIHNjcmlwdHNfZGlyZWN0b3J5KHNlbGYpOgogICAgICAgICByZXR1cm4g
b3MucGF0aC5qb2luKHNlbGYuY2hlY2tvdXRfcm9vdCwgIldlYktpdFRvb2xzIiwgIlNjcmlwdHMi
KQpAQCAtMjA1LDYgKzIwOSw5IEBAIGNsYXNzIFNDTToKICAgICBkZWYgc3VwcG9ydHNfbG9jYWxf
Y29tbWl0cygpOgogICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yLCAic3ViY2xhc3Nl
cyBtdXN0IGltcGxlbWVudCIKIAorICAgIGRlZiBzdm5fbWVyZ2VfYmFzZSgpOgorICAgICAgICBy
YWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yLCAic3ViY2xhc3NlcyBtdXN0IGltcGxlbWVudCIKKwog
ICAgIGRlZiBjcmVhdGVfcGF0Y2hfZnJvbV9sb2NhbF9jb21taXQoc2VsZiwgY29tbWl0X2lkKToK
ICAgICAgICAgZXJyb3IoIllvdXIgc291cmNlIGNvbnRyb2wgbWFuYWdlciBkb2VzIG5vdCBzdXBw
b3J0IGNyZWF0aW5nIGEgcGF0Y2ggZnJvbSBhIGxvY2FsIGNvbW1pdC4iKQogCkBAIC0yMjYsOCAr
MjMzLDggQEAgY2xhc3MgU1ZOKFNDTSk6CiAgICAgc3ZuX3NlcnZlcl9ob3N0ID0gInN2bi53ZWJr
aXQub3JnIgogICAgIHN2bl9zZXJ2ZXJfcmVhbG0gPSAiPGh0dHA6Ly9zdm4ud2Via2l0Lm9yZzo4
MD4gTWFjIE9TIEZvcmdlIgogCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGN3ZCwgZHJ5cnVuPUZh
bHNlKToKLSAgICAgICAgU0NNLl9faW5pdF9fKHNlbGYsIGN3ZCwgZHJ5cnVuKQorICAgIGRlZiBf
X2luaXRfXyhzZWxmLCBjd2QsIG9wdGlvbnMpOgorICAgICAgICBTQ00uX19pbml0X18oc2VsZiwg
Y3dkLCBvcHRpb25zKQogICAgICAgICBzZWxmLmNhY2hlZF92ZXJzaW9uID0gTm9uZQogICAgIAog
ICAgIEBzdGF0aWNtZXRob2QKQEAgLTM0MSw2ICszNDgsNyBAQCBjbGFzcyBTVk4oU0NNKToKICAg
ICAgICAgcnVuX2NvbW1hbmQoWydzdm4nLCAncmV2ZXJ0J10gKyBmaWxlX3BhdGhzKQogCiAgICAg
ZGVmIGNvbW1pdF93aXRoX21lc3NhZ2Uoc2VsZiwgbWVzc2FnZSwgdXNlcm5hbWU9Tm9uZSk6Cisg
ICAgICAgICMgc3F1YXNoIGFuZCBnaXQtY29tbWl0IGFyZSBub3QgdXNlZCBieSBTVk4uCiAgICAg
ICAgIGlmIHNlbGYuZHJ5cnVuOgogICAgICAgICAgICAgIyBSZXR1cm4gYSBzdHJpbmcgd2hpY2gg
bG9va3MgbGlrZSBhIGNvbW1pdCBzbyB0aGF0IHRoaW5ncyB3aGljaCBwYXJzZSB0aGlzIG91dHB1
dCB3aWxsIHN1Y2NlZWQuCiAgICAgICAgICAgICByZXR1cm4gIkRyeSBydW4sIG5vIGNvbW1pdC5c
bkNvbW1pdHRlZCByZXZpc2lvbiAwLiIKQEAgLTM2NSw4ICszNzMsOCBAQCBjbGFzcyBTVk4oU0NN
KToKIAogIyBBbGwgZ2l0LXNwZWNpZmljIGxvZ2ljIHNob3VsZCBnbyBoZXJlLgogY2xhc3MgR2l0
KFNDTSk6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGN3ZCwgZHJ5cnVuPUZhbHNlKToKLSAgICAg
ICAgU0NNLl9faW5pdF9fKHNlbGYsIGN3ZCwgZHJ5cnVuKQorICAgIGRlZiBfX2luaXRfXyhzZWxm
LCBjd2QsIG9wdGlvbnMpOgorICAgICAgICBTQ00uX19pbml0X18oc2VsZiwgY3dkLCBvcHRpb25z
KQogCiAgICAgQGNsYXNzbWV0aG9kCiAgICAgZGVmIGluX3dvcmtpbmdfZGlyZWN0b3J5KGNscywg
cGF0aCk6CkBAIC0zODAsMTYgKzM4OCwyMSBAQCBjbGFzcyBHaXQoU0NNKToKICAgICAgICAgaWYg
bm90IG9zLnBhdGguaXNhYnMoY2hlY2tvdXRfcm9vdCk6ICMgU29tZXRpbWVzIGdpdCByZXR1cm5z
IHJlbGF0aXZlIHBhdGhzCiAgICAgICAgICAgICBjaGVja291dF9yb290ID0gb3MucGF0aC5qb2lu
KHBhdGgsIGNoZWNrb3V0X3Jvb3QpCiAgICAgICAgIHJldHVybiBjaGVja291dF9yb290Ci0gICAg
CisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgcmVhZF9naXRfY29uZmlnKGNscywga2V5KToK
KyAgICAgICAgcmV0dXJuIHJ1bl9jb21tYW5kKFsiZ2l0IiwgImNvbmZpZyIsIGtleV0sCisgICAg
ICAgICAgICBlcnJvcl9oYW5kbGVyPUV4ZWN1dGl2ZS5pZ25vcmVfZXJyb3IpLnJzdHJpcCgnXG4n
KQorCiAgICAgQHN0YXRpY21ldGhvZAogICAgIGRlZiBjb21taXRfc3VjY2Vzc19yZWdleHAoKToK
ICAgICAgICAgcmV0dXJuICJeQ29tbWl0dGVkIHIoP1A8c3ZuX3JldmlzaW9uPlxkKykkIgogCiAg
ICAgZGVmIGRpc2NhcmRfbG9jYWxfY29tbWl0cyhzZWxmKToKLSAgICAgICAgcnVuX2NvbW1hbmQo
WydnaXQnLCAncmVzZXQnLCAnLS1oYXJkJywgJ3RydW5rJ10pCisgICAgICAgIHJ1bl9jb21tYW5k
KFsnZ2l0JywgJ3Jlc2V0JywgJy0taGFyZCcsIHNlbGYuc3ZuX2JyYW5jaF9uYW1lKCldKQogICAg
IAogICAgIGRlZiBsb2NhbF9jb21taXRzKHNlbGYpOgotICAgICAgICByZXR1cm4gcnVuX2NvbW1h
bmQoWydnaXQnLCAnbG9nJywgJy0tcHJldHR5PW9uZWxpbmUnLCAnSEVBRC4uLnRydW5rJ10pLnNw
bGl0bGluZXMoKQorICAgICAgICByZXR1cm4gcnVuX2NvbW1hbmQoWydnaXQnLCAnbG9nJywgJy0t
cHJldHR5PW9uZWxpbmUnLCAnSEVBRC4uLicgKyBzZWxmLnN2bl9icmFuY2hfbmFtZSgpXSkuc3Bs
aXRsaW5lcygpCiAKICAgICBkZWYgcmViYXNlX2luX3Byb2dyZXNzKHNlbGYpOgogICAgICAgICBy
ZXR1cm4gb3MucGF0aC5leGlzdHMob3MucGF0aC5qb2luKHNlbGYuY2hlY2tvdXRfcm9vdCwgJy5n
aXQvcmViYXNlLWFwcGx5JykpCkBAIC00MTEsMTYgKzQyNCwyNiBAQCBjbGFzcyBHaXQoU0NNKToK
ICAgICAgICAgcmV0dXJuICdeKD9QPHN0YXR1cz5bJXNdKVx0KD9QPGZpbGVuYW1lPi4rKSQnICUg
ZXhwZWN0ZWRfdHlwZXMKIAogICAgIGRlZiBjaGFuZ2VkX2ZpbGVzKHNlbGYpOgotICAgICAgICBz
dGF0dXNfY29tbWFuZCA9IFsnZ2l0JywgJ2RpZmYnLCAnLXInLCAnLS1uYW1lLXN0YXR1cycsICct
QycsICctTScsICdIRUFEJ10KKyAgICAgICAgaWYgc2VsZi5vcHRpb25zLmdpdF9jb21taXQ6Cisg
ICAgICAgICAgICByZXR1cm4gc2VsZi5fY2hhbmdlc19maWxlc19mb3JfY29tbWl0KHNlbGYub3B0
aW9ucy5naXRfY29tbWl0KQorICAgICAgICBlbGlmIHNlbGYuX3Nob3VsZF9zcXVhc2goKToKKyAg
ICAgICAgICAgIGJhc2UgPSBzZWxmLnN2bl9tZXJnZV9iYXNlKCkKKyAgICAgICAgZWxzZToKKyAg
ICAgICAgICAgIGJhc2UgPSAnSEVBRCcKKworICAgICAgICBzdGF0dXNfY29tbWFuZCA9IFsnZ2l0
JywgJ2RpZmYnLCAnLXInLCAnLS1uYW1lLXN0YXR1cycsICctQycsICctTScsIGJhc2VdCiAgICAg
ICAgIHJldHVybiBzZWxmLnJ1bl9zdGF0dXNfYW5kX2V4dHJhY3RfZmlsZW5hbWVzKHN0YXR1c19j
b21tYW5kLCBzZWxmLl9zdGF0dXNfcmVnZXhwKCJBRE0iKSkKIAotICAgIGRlZiBjaGFuZ2VkX2Zp
bGVzX2Zvcl9yZXZpc2lvbihzZWxmLCByZXZpc2lvbik6Ci0gICAgICAgIGNvbW1pdF9pZCA9IHNl
bGYuZ2l0X2NvbW1pdF9mcm9tX3N2bl9yZXZpc2lvbihyZXZpc2lvbikKKyAgICBkZWYgX2NoYW5n
ZXNfZmlsZXNfZm9yX2NvbW1pdChzZWxmLCBnaXRfY29tbWl0KToKICAgICAgICAgIyAtLXByZXR0
eT0iZm9ybWF0OiIgbWFrZXMgZ2l0IHNob3cgbm90IHByaW50IHRoZSBjb21taXQgbG9nIGhlYWRl
ciwKLSAgICAgICAgY2hhbmdlZF9maWxlcyA9IHJ1bl9jb21tYW5kKFsiZ2l0IiwgInNob3ciLCAi
LS1wcmV0dHk9Zm9ybWF0OiIsICItLW5hbWUtb25seSIsIGNvbW1pdF9pZF0pLnNwbGl0bGluZXMo
KQorICAgICAgICBjaGFuZ2VkX2ZpbGVzID0gcnVuX2NvbW1hbmQoWyJnaXQiLCAic2hvdyIsICIt
LXByZXR0eT1mb3JtYXQ6IiwgIi0tbmFtZS1vbmx5IiwgZ2l0X2NvbW1pdF0pLnNwbGl0bGluZXMo
KQogICAgICAgICAjIGluc3RlYWQgaXQganVzdCBwcmludHMgYSBibGFuayBsaW5lIGF0IHRoZSB0
b3AsIHNvIHdlIHNraXAgdGhlIGJsYW5rIGxpbmU6CiAgICAgICAgIHJldHVybiBjaGFuZ2VkX2Zp
bGVzWzE6XQogCisgICAgZGVmIGNoYW5nZWRfZmlsZXNfZm9yX3JldmlzaW9uKHNlbGYsIHJldmlz
aW9uKToKKyAgICAgICAgY29tbWl0X2lkID0gc2VsZi5naXRfY29tbWl0X2Zyb21fc3ZuX3Jldmlz
aW9uKHJldmlzaW9uKQorICAgICAgICByZXR1cm4gc2VsZi5fY2hhbmdlc19maWxlc19mb3JfY29t
bWl0KGNvbW1pdF9pZCkKKwogICAgIGRlZiBjb25mbGljdGVkX2ZpbGVzKHNlbGYpOgogICAgICAg
ICBzdGF0dXNfY29tbWFuZCA9IFsnZ2l0JywgJ2RpZmYnLCAnLS1uYW1lLXN0YXR1cycsICctQycs
ICctTScsICctLWRpZmYtZmlsdGVyPVUnXQogICAgICAgICByZXR1cm4gc2VsZi5ydW5fc3RhdHVz
X2FuZF9leHRyYWN0X2ZpbGVuYW1lcyhzdGF0dXNfY29tbWFuZCwgc2VsZi5fc3RhdHVzX3JlZ2V4
cCgiVSIpKQpAQCAtNDMzLDcgKzQ1NiwxNiBAQCBjbGFzcyBHaXQoU0NNKToKICAgICAgICAgcmV0
dXJuICJnaXQiCiAKICAgICBkZWYgY3JlYXRlX3BhdGNoKHNlbGYpOgotICAgICAgICByZXR1cm4g
cnVuX2NvbW1hbmQoWydnaXQnLCAnZGlmZicsICctLWJpbmFyeScsICdIRUFEJ10pCisgICAgICAg
IGRpZmZfY29tbWFuZCA9IFsnZ2l0JywgJ2RpZmYnLCAnLS1iaW5hcnknXQorICAgICAgICBpZiBz
ZWxmLm9wdGlvbnMuZ2l0X2NvbW1pdDoKKyAgICAgICAgICAgIGRpZmZfY29tbWFuZC5hcHBlbmQo
c2VsZi5vcHRpb25zLmdpdF9jb21taXQpCisgICAgICAgICAgICBkaWZmX2NvbW1hbmQuYXBwZW5k
KCIlc14iICUgc2VsZi5vcHRpb25zLmdpdF9jb21taXQpCisgICAgICAgIGVsaWYgc2VsZi5fc2hv
dWxkX3NxdWFzaCgpOgorICAgICAgICAgICAgZGlmZl9jb21tYW5kLmFwcGVuZChzZWxmLnN2bl9t
ZXJnZV9iYXNlKCkpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBkaWZmX2NvbW1hbmQuYXBw
ZW5kKCdIRUFEJykKKworICAgICAgICByZXR1cm4gcnVuX2NvbW1hbmQoZGlmZl9jb21tYW5kKQog
CiAgICAgQGNsYXNzbWV0aG9kCiAgICAgZGVmIGdpdF9jb21taXRfZnJvbV9zdm5fcmV2aXNpb24o
Y2xzLCByZXZpc2lvbik6CkBAIC00NjUsMTAgKzQ5Nyw5NyBAQCBjbGFzcyBHaXQoU0NNKToKICAg
ICBkZWYgcmV2ZXJ0X2ZpbGVzKHNlbGYsIGZpbGVfcGF0aHMpOgogICAgICAgICBydW5fY29tbWFu
ZChbJ2dpdCcsICdjaGVja291dCcsICdIRUFEJ10gKyBmaWxlX3BhdGhzKQogCisgICAgZGVmIF9z
aG91bGRfc3F1YXNoKHNlbGYpOgorICAgICAgICAjIElmIHNxdWFzaCBpcyBzcGVjaWZpZWQgb24g
dGhlIGNvbW1hbmQtbGluZSwgdGhlbiBvYmV5IHRoYXQuCisgICAgICAgIGlmIHNlbGYub3B0aW9u
cy5zcXVhc2ggaXMgbm90IE5vbmU6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5vcHRpb25zLnNx
dWFzaAorCisgICAgICAgIGNvbmZpZ19zcXVhc2ggPSBHaXQucmVhZF9naXRfY29uZmlnKCd3ZWJr
aXQtcGF0Y2guc3F1YXNoJykKKyAgICAgICAgaWYgKGNvbmZpZ19zcXVhc2ggYW5kIGNvbmZpZ19z
cXVhc2ggaXMgbm90ICIiKToKKyAgICAgICAgICAgIHJldHVybiBjb25maWdfc3F1YXNoLmxvd2Vy
KCkgPT0gInRydWUiCisKKyAgICAgICAgIyBPbmx5IHByb21wdCBpZiB0aGVyZSBhcmUgYWN0dWFs
bHkgbXVsdGlwbGUgY29tbWl0cyB0byBzcXVhc2guCisgICAgICAgIG51bV9sb2NhbF9jb21taXRz
ID0gbGVuKHNlbGYubG9jYWxfY29tbWl0cygpKQorICAgICAgICBpZiBudW1fbG9jYWxfY29tbWl0
cyA+IDEgb3IgbnVtX2xvY2FsX2NvbW1pdHMgPiAwIGFuZCBub3Qgc2VsZi53b3JraW5nX2RpcmVj
dG9yeV9pc19jbGVhbigpOgorICAgICAgICAgICAgd29ya2luZ19kaXJlY3RvcnlfbWVzc2FnZSA9
ICIiIGlmIHNlbGYud29ya2luZ19kaXJlY3RvcnlfaXNfY2xlYW4oKSBlbHNlICIgYW5kIHdvcmtp
bmcgY29weSBjaGFuZ2VzIgorICAgICAgICAgICAgIyBGSVhNRTogcGFyYW1ldGVyaXplIHByb21w
dCBzbyB0aGlzIGNhbiBiZSB0ZXN0ZWQuCisgICAgICAgICAgICByZXNwb25zZSA9IFVzZXIucHJv
bXB0KCJUaGVyZSBhcmUgJXMgbG9jYWwgY29tbWl0cyVzLiBTcXVhc2ggaW50byBhIHNpbmdsZSBj
b21taXQ/ICh5L04pIiAlICgKKyAgICAgICAgICAgICAgICBudW1fbG9jYWxfY29tbWl0cywgd29y
a2luZ19kaXJlY3RvcnlfbWVzc2FnZSkpCisgICAgICAgICAgICAjIE1vZGlmaXkgc2VsZi5vcHRp
b25zIHNvIHdlIGRvbid0IHByb21wdCBtdWxpdGlwbGUgdGltZXMuCisgICAgICAgICAgICBzZWxm
Lm9wdGlvbnMuc3F1YXNoID0gcmVzcG9uc2UgPT0gInkiCisgICAgICAgICAgICByZXR1cm4gc2Vs
Zi5vcHRpb25zLnNxdWFzaAorCisgICAgICAgIHJldHVybiBGYWxzZQorCiAgICAgZGVmIGNvbW1p
dF93aXRoX21lc3NhZ2Uoc2VsZiwgbWVzc2FnZSwgdXNlcm5hbWU9Tm9uZSk6CiAgICAgICAgICMg
VXNlcm5hbWUgaXMgaWdub3JlZCBkdXJpbmcgR2l0IGNvbW1pdHMuCi0gICAgICAgIHNlbGYuY29t
bWl0X2xvY2FsbHlfd2l0aF9tZXNzYWdlKG1lc3NhZ2UpCi0gICAgICAgIHJldHVybiBzZWxmLnB1
c2hfbG9jYWxfY29tbWl0c190b19zZXJ2ZXIoKQorCisgICAgICAgIGlmIHNlbGYub3B0aW9ucy5n
aXRfY29tbWl0OgorICAgICAgICAgICAgIyBOZWVkIHdvcmtpbmcgZGlyZWN0b3J5IGNoYW5nZXMg
dG8gYmUgY29tbWl0dGVkIHNvIHdlIGNhbiBjaGVja291dCB0aGUgbWVyZ2UgYnJhbmNoLgorICAg
ICAgICAgICAgaWYgbm90IHNlbGYud29ya2luZ19kaXJlY3RvcnlfaXNfY2xlYW4oKToKKyAgICAg
ICAgICAgICAgICBsb2coIldvcmtpbmcgY29weSBpcyBtb2RpZmllZC4gQ2Fubm90IGNvbW1pdCBp
bmRpdmlkdWFsIGdpdF9jb21taXRzLiIpCisgICAgICAgICAgICByZXR1cm4gc2VsZi5fY29tbWl0
X29uX2JyYW5jaChtZXNzYWdlLCBzZWxmLm9wdGlvbnMuZ2l0X2NvbW1pdCkKKworICAgICAgICBp
ZiBzZWxmLl9zaG91bGRfc3F1YXNoKCk6CisgICAgICAgICAgICAjIE5lZWQgd29ya2luZyBkaXJl
Y3RvcnkgY2hhbmdlcyB0byBiZSBjb21taXR0ZWQgc28gd2UgY2FuIGNoZWNrb3V0IHRoZSBtZXJn
ZSBicmFuY2guCisgICAgICAgICAgICBpZiBub3Qgc2VsZi53b3JraW5nX2RpcmVjdG9yeV9pc19j
bGVhbigpOgorICAgICAgICAgICAgICAgIHNlbGYuY29tbWl0X2xvY2FsbHlfd2l0aF9tZXNzYWdl
KG1lc3NhZ2UpCisgICAgICAgICAgICByZXR1cm4gc2VsZi5fY29tbWl0X29uX2JyYW5jaChtZXNz
YWdlKQorCisgICAgICAgICMgRklYTUU6IFRoaXMgd2lsbCBjb21taXQgYWxsIGxvY2FsIGNvbW1p
dHMsIGVhY2ggd2l0aCBpdCdzIG93biBtZXNzYWdlLgorICAgICAgICAjIFdlIHNob3VsZCByZXN0
cnVjdHVyZSBzbyB0aGF0IGVhY2ggY29tbWl0IGhhcyB0aGUgYXBwcm9wcmlhdGUgY29tbWl0Cisg
ICAgICAgICMgbWVzc2FnZSBiYXNlZCBvZmYgaXQncyBDaGFuZ2VMb2dzLgorICAgICAgICBpZiBu
b3Qgc2VsZi53b3JraW5nX2RpcmVjdG9yeV9pc19jbGVhbigpOgorICAgICAgICAgICAgIyBGSVhN
RTogcGFyYW1ldGVyaXplIHByb21wdCBzbyB0aGlzIGNhbiBiZSB0ZXN0ZWQuCisgICAgICAgICAg
ICByZXNwb25zZSA9IFVzZXIucHJvbXB0KCJUaGVyZSBhcmUgd29ya2luZyBjb3B5IGNoYW5nZXMu
IENvbW1pdCB0aGVtPyAoeS9OKSIpCisgICAgICAgICAgICBpZiAocmVzcG9uc2UgPT0gInkiKToK
KyAgICAgICAgICAgICAgICBzZWxmLmNvbW1pdF9sb2NhbGx5X3dpdGhfbWVzc2FnZShtZXNzYWdl
KQorCisgICAgICAgIHJldHVybiBzZWxmLnB1c2hfbG9jYWxfY29tbWl0c190b19zZXJ2ZXIoKTsK
KworICAgIGRlZiBfY29tbWl0X29uX2JyYW5jaChzZWxmLCBtZXNzYWdlLCBnaXRfY29tbWl0PU5v
bmUpOgorICAgICAgICBicmFuY2hfcmVmID0gcnVuX2NvbW1hbmQoWydnaXQnLCAnc3ltYm9saWMt
cmVmJywgJ0hFQUQnXSkuc3RyaXAoKQorICAgICAgICBicmFuY2hfbmFtZSA9IGJyYW5jaF9yZWYu
cmVwbGFjZSgncmVmcy9oZWFkcy8nLCAnJykKKworICAgICAgICAjIFdlIHdhbnQgdG8gc3F1YXNo
IGFsbCB0aGlzIGJyYW5jaCdzIGNvbW1pdHMgaW50byBvbmUgY29tbWl0IHdpdGggdGhlIHByb3Bl
ciBkZXNjcmlwdGlvbi4KKyAgICAgICAgIyBXZSBkbyB0aGlzIGJ5IGRvaW5nIGEgIm1lcmdlIC0t
c3F1YXNoIiBpbnRvIGEgbmV3IGNvbW1pdCBicmFuY2gsIHRoZW4gZGNvbW1pdHRpbmcgdGhhdC4K
KyAgICAgICAgTUVSR0VfQlJBTkNIID0gJ3dlYmtpdC1wYXRjaC1sYW5kJworICAgICAgICBzZWxm
LmRlbGV0ZV9icmFuY2goTUVSR0VfQlJBTkNIKQorCisgICAgICAgICMgV2UgbWlnaHQgYmUgaW4g
YSBkaXJlY3RvcnkgdGhhdCdzIHByZXNlbnQgaW4gdGhpcyBicmFuY2ggYnV0IG5vdCBpbiB0aGUK
KyAgICAgICAgIyB0cnVuay4gIE1vdmUgdXAgdG8gdGhlIHRvcCBvZiB0aGUgdHJlZSBzbyB0aGF0
IGdpdCBjb21tYW5kcyB0aGF0IGV4cGVjdCBhCisgICAgICAgICMgdmFsaWQgQ1dEIHdvbid0IGZh
aWwgYWZ0ZXIgd2UgY2hlY2sgb3V0IHRoZSBtZXJnZSBicmFuY2guCisgICAgICAgIG9zLmNoZGly
KHNlbGYuY2hlY2tvdXRfcm9vdCkKKworICAgICAgICAjIFN0dWZmIG91ciBjaGFuZ2UgaW50byB0
aGUgbWVyZ2UgYnJhbmNoLgorICAgICAgICAjIFdlIHdyYXAgaW4gYSB0cnkuLi5maW5hbGx5IGJs
b2NrIHNvIGlmIGFueXRoaW5nIGdvZXMgd3JvbmcsIHdlIGNsZWFuIHVwIHRoZSBicmFuY2hlcy4K
KyAgICAgICAgY29tbWl0X3N1Y2NlZWRlZCA9IFRydWUKKyAgICAgICAgdHJ5OgorICAgICAgICAg
ICAgcnVuX2NvbW1hbmQoWydnaXQnLCAnY2hlY2tvdXQnLCAnLXEnLCAnLWInLCBNRVJHRV9CUkFO
Q0gsIHNlbGYuc3ZuX2JyYW5jaF9uYW1lKCldKQorCisgICAgICAgICAgICBpZiBnaXRfY29tbWl0
OgorICAgICAgICAgICAgICAgICMgV2UncmUgb24gYSBkaWZmZXJlbnQgYnJhbmNoIG5vdywgc28g
Y29udmVydCAiaGVhZCIgdG8gdGhlIGJyYW5jaCBuYW1lLgorICAgICAgICAgICAgICAgIGdpdF9j
b21taXQgPSByZS5zdWIocicoP2kpaGVhZCcsIGJyYW5jaF9uYW1lLCBnaXRfY29tbWl0KQorICAg
ICAgICAgICAgICAgIHJ1bl9jb21tYW5kKFsnZ2l0JywgJ2NoZXJyeS1waWNrJywgJy0tbm8tY29t
bWl0JywgZ2l0X2NvbW1pdF0pCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHJ1
bl9jb21tYW5kKFsnZ2l0JywgJ21lcmdlJywgJy0tc3F1YXNoJywgYnJhbmNoX3JlZl0pCisKKyAg
ICAgICAgICAgIHJ1bl9jb21tYW5kKFsnZ2l0JywgJ2NvbW1pdCcsICctbScsIG1lc3NhZ2VdKQor
ICAgICAgICAgICAgb3V0cHV0ID0gc2VsZi5wdXNoX2xvY2FsX2NvbW1pdHNfdG9fc2VydmVyKCkK
KyAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiwgZToKKyAgICAgICAgICAgIGxvZygiQ09NTUlUIEZB
SUxFRDogIiArIHN0cihlKSkKKyAgICAgICAgICAgIG91dHB1dCA9ICJDb21taXQgZmFpbGVkLiIK
KyAgICAgICAgICAgIGNvbW1pdF9zdWNjZWVkZWQgPSBGYWxzZQorICAgICAgICBmaW5hbGx5Ogor
ICAgICAgICAgICAgIyBBbmQgdGhlbiBzd2FwIGJhY2sgdG8gdGhlIG9yaWdpbmFsIGJyYW5jaCBh
bmQgY2xlYW4gdXAuCisgICAgICAgICAgICBzZWxmLmNsZWFuX3dvcmtpbmdfZGlyZWN0b3J5KCkK
KyAgICAgICAgICAgIHJ1bl9jb21tYW5kKFsnZ2l0JywgJ2NoZWNrb3V0JywgJy1xJywgYnJhbmNo
X25hbWVdKQorICAgICAgICAgICAgc2VsZi5kZWxldGVfYnJhbmNoKE1FUkdFX0JSQU5DSCkKKyAg
ICAgICAgICAgICMgSWYgdGhlIGNvbW1pdCBzdWNjZWVkZWQgYW5kIHdlIHNxdWFzaGVkLCBtYWtl
IHRoZSBicmFuY2ggbWF0Y2ggdGhlIHN2biByZXBvLgorICAgICAgICAgICAgaWYgY29tbWl0X3N1
Y2NlZWRlZCBhbmQgbm90IGdpdF9jb21taXQgYW5kIG5vdCBzZWxmLmRyeXJ1bjoKKyAgICAgICAg
ICAgICAgICBydW5fY29tbWFuZChbJ2dpdCcsICdyZXNldCcsICctLWhhcmQnLCBzZWxmLnN2bl9i
cmFuY2hfbmFtZSgpXSkKKworICAgICAgICByZXR1cm4gb3V0cHV0CiAKICAgICBkZWYgc3ZuX2Nv
bW1pdF9sb2coc2VsZiwgc3ZuX3JldmlzaW9uKToKICAgICAgICAgc3ZuX3JldmlzaW9uID0gc2Vs
Zi5zdHJpcF9yX2Zyb21fc3ZuX3JldmlzaW9uKHN2bl9yZXZpc2lvbikKQEAgLTQ3OSw2ICs1OTgs
MTYgQEAgY2xhc3MgR2l0KFNDTSk6CiAKICAgICAjIEdpdC1zcGVjaWZpYyBtZXRob2RzOgogCisg
ICAgZGVmIGRlbGV0ZV9icmFuY2goc2VsZiwgYnJhbmNoKToKKyAgICAgICAgaWYgcnVuX2NvbW1h
bmQoWydnaXQnLCAnc2hvdy1yZWYnLCAnLS1xdWlldCcsICctLXZlcmlmeScsICdyZWZzL2hlYWRz
LycgKyBicmFuY2hdLCByZXR1cm5fZXhpdF9jb2RlPVRydWUpID09IDA6CisgICAgICAgICAgICBy
dW5fY29tbWFuZChbJ2dpdCcsICdicmFuY2gnLCAnLUQnLCBicmFuY2hdKQorCisgICAgZGVmIHN2
bl9tZXJnZV9iYXNlKHNlbGYpOgorICAgICAgICByZXR1cm4gcnVuX2NvbW1hbmQoWydnaXQnLCAn
bWVyZ2UtYmFzZScsIHNlbGYuc3ZuX2JyYW5jaF9uYW1lKCksICdIRUFEJ10pLnN0cmlwKCkKKwor
ICAgIGRlZiBzdm5fYnJhbmNoX25hbWUoc2VsZik6CisgICAgICAgIHJldHVybiBHaXQucmVhZF9n
aXRfY29uZmlnKCdzdm4tcmVtb3RlLnN2bi5mZXRjaCcpLnNwbGl0KCc6JylbMV0KKwogICAgIGRl
ZiBjcmVhdGVfcGF0Y2hfZnJvbV9sb2NhbF9jb21taXQoc2VsZiwgY29tbWl0X2lkKToKICAgICAg
ICAgcmV0dXJuIHJ1bl9jb21tYW5kKFsnZ2l0JywgJ2RpZmYnLCAnLS1iaW5hcnknLCBjb21taXRf
aWQgKyAiXi4uIiArIGNvbW1pdF9pZF0pCiAKQEAgLTQ4NywxMiArNjE2LDE2IEBAIGNsYXNzIEdp
dChTQ00pOgogCiAgICAgZGVmIGNvbW1pdF9sb2NhbGx5X3dpdGhfbWVzc2FnZShzZWxmLCBtZXNz
YWdlKToKICAgICAgICAgcnVuX2NvbW1hbmQoWydnaXQnLCAnY29tbWl0JywgJy0tYWxsJywgJy1G
JywgJy0nXSwgaW5wdXQ9bWVzc2FnZSkKLSAgICAgICAgCisKICAgICBkZWYgcHVzaF9sb2NhbF9j
b21taXRzX3RvX3NlcnZlcihzZWxmKToKKyAgICAgICAgZGNvbW1pdF9jb21tYW5kID0gWydnaXQn
LCAnc3ZuJywgJ2Rjb21taXQnXQogICAgICAgICBpZiBzZWxmLmRyeXJ1bjoKLSAgICAgICAgICAg
ICMgUmV0dXJuIGEgc3RyaW5nIHdoaWNoIGxvb2tzIGxpa2UgYSBjb21taXQgc28gdGhhdCB0aGlu
Z3Mgd2hpY2ggcGFyc2UgdGhpcyBvdXRwdXQgd2lsbCBzdWNjZWVkLgotICAgICAgICAgICAgcmV0
dXJuICJEcnkgcnVuLCBubyByZW1vdGUgY29tbWl0LlxuQ29tbWl0dGVkIHIwIgotICAgICAgICBy
ZXR1cm4gcnVuX2NvbW1hbmQoWydnaXQnLCAnc3ZuJywgJ2Rjb21taXQnXSwgZXJyb3JfaGFuZGxl
cj1jb21taXRfZXJyb3JfaGFuZGxlcikKKyAgICAgICAgICAgIGRjb21taXRfY29tbWFuZC5hcHBl
bmQoJy0tZHJ5LXJ1bicpCisgICAgICAgIG91dHB1dCA9IHJ1bl9jb21tYW5kKGRjb21taXRfY29t
bWFuZCwgZXJyb3JfaGFuZGxlcj1jb21taXRfZXJyb3JfaGFuZGxlcikKKyAgICAgICAgIyBSZXR1
cm4gYSBzdHJpbmcgd2hpY2ggbG9va3MgbGlrZSBhIGNvbW1pdCBzbyB0aGF0IHRoaW5ncyB3aGlj
aCBwYXJzZSB0aGlzIG91dHB1dCB3aWxsIHN1Y2NlZWQuCisgICAgICAgIGlmIHNlbGYuZHJ5cnVu
OgorICAgICAgICAgICAgb3V0cHV0ICs9ICJcbkNvbW1pdHRlZCByMCIKKyAgICAgICAgcmV0dXJu
IG91dHB1dAogCiAgICAgIyBUaGlzIGZ1bmN0aW9uIHN1cHBvcnRzIHRoZSBmb2xsb3dpbmcgYXJn
dW1lbnQgZm9ybWF0czoKICAgICAjIG5vIGFyZ3MgOiByZXYtbGlzdCB0cnVuay4uSEVBRApAQCAt
NTAxLDggKzYzNCw3IEBAIGNsYXNzIEdpdChTQ00pOgogICAgICMgQSBCICAgICA6IFtBLCBCXSAg
KGRpZmZlcmVudCBmcm9tIGdpdCBkaWZmLCB3aGljaCB3b3VsZCB1c2UgInJldi1saXN0IEEuLkIi
KQogICAgIGRlZiBjb21taXRfaWRzX2Zyb21fY29tbWl0aXNoX2FyZ3VtZW50cyhzZWxmLCBhcmdz
KToKICAgICAgICAgaWYgbm90IGxlbihhcmdzKToKLSAgICAgICAgICAgICMgRklYTUU6IHRydW5r
IGlzIG5vdCBhbHdheXMgdGhlIHJlbW90ZSBicmFuY2ggbmFtZSwgbmVlZCBhIHdheSB0byBkZXRl
Y3QgdGhlIG5hbWUuCi0gICAgICAgICAgICBhcmdzLmFwcGVuZCgndHJ1bmsuLkhFQUQnKQorICAg
ICAgICAgICAgYXJncy5hcHBlbmQoJyVzLi5IRUFEJyAlIHNlbGYuc3ZuX2JyYW5jaF9uYW1lKCkp
CiAKICAgICAgICAgY29tbWl0X2lkcyA9IFtdCiAgICAgICAgIGZvciBjb21taXRpc2ggaW4gYXJn
czoKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNr
b3V0L3NjbV91bml0dGVzdC5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9u
L2NoZWNrb3V0L3NjbV91bml0dGVzdC5weQppbmRleCA1ODYxNjM1Li5mYTEzMTg2IDEwMDY0NAot
LS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9zY21fdW5p
dHRlc3QucHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tv
dXQvc2NtX3VuaXR0ZXN0LnB5CkBAIC02Nyw2ICs2NywxMSBAQCBkZWYgcmVhZF9mcm9tX3BhdGgo
ZmlsZV9wYXRoKToKICAgICBmaWxlLmNsb3NlKCkKICAgICByZXR1cm4gY29udGVudHMKIAorY2xh
c3MgTW9ja09wdGlvbnMoKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgc3F1YXNoPUZhbHNlLCBn
aXRfY29tbWl0PU5vbmUpOgorICAgICAgICBzZWxmLnNxdWFzaCA9IHNxdWFzaAorICAgICAgICBz
ZWxmLmdpdF9jb21taXQgPSBnaXRfY29tbWl0CisKICMgRXhpc3RzIHRvIHNoYXJlIHN2biByZXBv
c2l0b3J5IGNyZWF0aW9uIGNvZGUgYmV0d2VlbiB0aGUgZ2l0IGFuZCBzdm4gdGVzdHMKIGNsYXNz
IFNWTlRlc3RSZXBvc2l0b3J5OgogICAgIEBzdGF0aWNtZXRob2QKQEAgLTEyMiw3ICsxMjcsNyBA
QCBjbGFzcyBTVk5UZXN0UmVwb3NpdG9yeToKIAogICAgICAgICAjIE5vdyB0aGF0IHdlJ3ZlIGRl
bGV0ZWQgdGhlIGNoZWNrb3V0IHBhdGhzLCBjd2RkaXIgbWF5IGJlIGludmFsaWQKICAgICAgICAg
IyBDaGFuZ2UgYmFjayB0byBhIHZhbGlkIGRpcmVjdG9yeSBzbyB0aGF0IGxhdGVyIGNhbGxzIHRv
IG9zLmdldGN3ZCgpIGRvIG5vdCBmYWlsLgotICAgICAgICBvcy5jaGRpcihkZXRlY3Rfc2NtX3N5
c3RlbShvcy5wYXRoLmRpcm5hbWUoX19maWxlX18pKS5jaGVja291dF9yb290KQorICAgICAgICBv
cy5jaGRpcihkZXRlY3Rfc2NtX3N5c3RlbShvcy5wYXRoLmRpcm5hbWUoX19maWxlX18pLCBNb2Nr
T3B0aW9ucygpKS5jaGVja291dF9yb290KQogCiAjIEZvciB0ZXN0aW5nIHRoZSBTQ00gYmFzZWNs
YXNzIGRpcmVjdGx5LgogY2xhc3MgU0NNQ2xhc3NUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CkBA
IC0xODUsNyArMTkwLDcgQEAgY2xhc3MgU0NNVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAg
ICAgIHJldHVybiBhdHRhY2htZW50CiAKICAgICBkZWYgX3NldHVwX3dlYmtpdHRvb2xzX3Njcmlw
dHNfc3ltbGluayhzZWxmLCBsb2NhbF9zY20pOgotICAgICAgICB3ZWJraXRfc2NtID0gZGV0ZWN0
X3NjbV9zeXN0ZW0ob3MucGF0aC5kaXJuYW1lKG9zLnBhdGguYWJzcGF0aChfX2ZpbGVfXykpKQor
ICAgICAgICB3ZWJraXRfc2NtID0gZGV0ZWN0X3NjbV9zeXN0ZW0ob3MucGF0aC5kaXJuYW1lKG9z
LnBhdGguYWJzcGF0aChfX2ZpbGVfXykpLCBNb2NrT3B0aW9ucygpKQogICAgICAgICB3ZWJraXRf
c2NyaXB0c19kaXJlY3RvcnkgPSB3ZWJraXRfc2NtLnNjcmlwdHNfZGlyZWN0b3J5KCkKICAgICAg
ICAgbG9jYWxfc2NyaXB0c19kaXJlY3RvcnkgPSBsb2NhbF9zY20uc2NyaXB0c19kaXJlY3Rvcnko
KQogICAgICAgICBvcy5ta2Rpcihvcy5wYXRoLmRpcm5hbWUobG9jYWxfc2NyaXB0c19kaXJlY3Rv
cnkpKQpAQCAtMTkzLDE1ICsxOTgsNiBAQCBjbGFzcyBTQ01UZXN0KHVuaXR0ZXN0LlRlc3RDYXNl
KToKIAogICAgICMgVGVzdHMgd2hpY2ggYm90aCBHaXRUZXN0IGFuZCBTVk5UZXN0IHNob3VsZCBy
dW4uCiAgICAgIyBGSVhNRTogVGhlcmUgbXVzdCBiZSBhIHNpbXBsZXIgd2F5IHRvIGFkZCB0aGVz
ZSB3L28gYWRkaW5nIGEgd3JhcHBlciBtZXRob2QgdG8gYm90aCBzdWJjbGFzc2VzCi0gICAgZGVm
IF9zaGFyZWRfdGVzdF9jb21taXRfd2l0aF9tZXNzYWdlKHNlbGYsIHVzZXJuYW1lPSJkYmF0ZXNA
d2Via2l0Lm9yZyIpOgotICAgICAgICB3cml0ZV9pbnRvX2ZpbGVfYXRfcGF0aCgndGVzdF9maWxl
JywgJ21vcmUgdGVzdCBjb250ZW50JykKLSAgICAgICAgY29tbWl0X3RleHQgPSBzZWxmLnNjbS5j
b21taXRfd2l0aF9tZXNzYWdlKCJhbm90aGVyIHRlc3QgY29tbWl0IiwgdXNlcm5hbWUpCi0gICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5zY20uc3ZuX3JldmlzaW9uX2Zyb21fY29tbWl0X3Rl
eHQoY29tbWl0X3RleHQpLCAnNScpCi0KLSAgICAgICAgc2VsZi5zY20uZHJ5cnVuID0gVHJ1ZQot
ICAgICAgICB3cml0ZV9pbnRvX2ZpbGVfYXRfcGF0aCgndGVzdF9maWxlJywgJ3N0aWxsIG1vcmUg
dGVzdCBjb250ZW50JykKLSAgICAgICAgY29tbWl0X3RleHQgPSBzZWxmLnNjbS5jb21taXRfd2l0
aF9tZXNzYWdlKCJ5ZXQgYW5vdGhlciB0ZXN0IGNvbW1pdCIsIHVzZXJuYW1lKQotICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKHNlbGYuc2NtLnN2bl9yZXZpc2lvbl9mcm9tX2NvbW1pdF90ZXh0KGNv
bW1pdF90ZXh0KSwgJzAnKQogCiAgICAgZGVmIF9zaGFyZWRfdGVzdF9jaGFuZ2VkX2ZpbGVzX2Zv
cl9yZXZpc2lvbihzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnNjbS5jaGFu
Z2VkX2ZpbGVzX2Zvcl9yZXZpc2lvbigyKSwgWyJ0ZXN0X2ZpbGUiXSkKQEAgLTQxOSw3ICs0MTUs
NyBAQCBjbGFzcyBTVk5UZXN0KFNDTVRlc3QpOgogICAgIGRlZiBzZXRVcChzZWxmKToKICAgICAg
ICAgU1ZOVGVzdFJlcG9zaXRvcnkuc2V0dXAoc2VsZikKICAgICAgICAgb3MuY2hkaXIoc2VsZi5z
dm5fY2hlY2tvdXRfcGF0aCkKLSAgICAgICAgc2VsZi5zY20gPSBkZXRlY3Rfc2NtX3N5c3RlbShz
ZWxmLnN2bl9jaGVja291dF9wYXRoKQorICAgICAgICBzZWxmLnNjbSA9IGRldGVjdF9zY21fc3lz
dGVtKHNlbGYuc3ZuX2NoZWNrb3V0X3BhdGgsIE1vY2tPcHRpb25zKCkpCiAgICAgICAgICMgRm9y
IGhpc3RvcmljYWwgcmVhc29ucywgd2UgdGVzdCBzb21lIGNoZWNrb3V0IGNvZGUgaGVyZSB0b28u
CiAgICAgICAgIHNlbGYuY2hlY2tvdXQgPSBDaGVja291dChzZWxmLnNjbSkKIApAQCAtNDQyLDE0
ICs0MzgsMTQgQEAgY2xhc3MgU1ZOVGVzdChTQ01UZXN0KToKIAogICAgICAgICAjIENoYW5nZSBp
bnRvIG91ciB0ZXN0IGRpcmVjdG9yeSBhbmQgcnVuIHRoZSBjcmVhdGVfcGF0Y2ggY29tbWFuZC4K
ICAgICAgICAgb3MuY2hkaXIodGVzdF9kaXJfcGF0aCkKLSAgICAgICAgc2NtID0gZGV0ZWN0X3Nj
bV9zeXN0ZW0odGVzdF9kaXJfcGF0aCkKKyAgICAgICAgc2NtID0gZGV0ZWN0X3NjbV9zeXN0ZW0o
dGVzdF9kaXJfcGF0aCwgTW9ja09wdGlvbnMoKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChz
Y20uY2hlY2tvdXRfcm9vdCwgc2VsZi5zdm5fY2hlY2tvdXRfcGF0aCkgIyBTYW5pdHkgY2hlY2sg
dGhhdCBkZXRlY3Rpb24gd29ya2VkIHJpZ2h0LgogICAgICAgICBwYXRjaF9jb250ZW50cyA9IHNj
bS5jcmVhdGVfcGF0Y2goKQogICAgICAgICAjIE91ciBmYWtlICdzdm4tY3JlYXRlLXBhdGNoJyBy
ZXR1cm5zICRQV0QgaW5zdGVhZCBvZiBhIHBhdGNoLCBjaGVjayB0aGF0IGl0IHdhcyBleGVjdXRl
ZCBmcm9tIHRoZSByb290IG9mIHRoZSByZXBvLgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCIl
c1xuIiAlIG9zLnBhdGgucmVhbHBhdGgoc2NtLmNoZWNrb3V0X3Jvb3QpLCBwYXRjaF9jb250ZW50
cykgIyBBZGQgYSBcbiBiZWNhdXNlIGVjaG8gYWRkcyBhIFxuLgogCiAgICAgZGVmIHRlc3RfZGV0
ZWN0aW9uKHNlbGYpOgotICAgICAgICBzY20gPSBkZXRlY3Rfc2NtX3N5c3RlbShzZWxmLnN2bl9j
aGVja291dF9wYXRoKQorICAgICAgICBzY20gPSBkZXRlY3Rfc2NtX3N5c3RlbShzZWxmLnN2bl9j
aGVja291dF9wYXRoLCBNb2NrT3B0aW9ucygpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNj
bS5kaXNwbGF5X25hbWUoKSwgInN2biIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2NtLnN1
cHBvcnRzX2xvY2FsX2NvbW1pdHMoKSwgRmFsc2UpCiAKQEAgLTQ3NSwxMyArNDcxLDEzIEBAIFEx
ZFRCeDBBQUFCNDJpdGc0R2xnWUpqR3dNRER5T0RNeE1EdzM0R0JnUUVBSlBRREpBPT0KICAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChhY3R1YWxfY29udGVudHMsIGV4cGVjdGVkX2NvbnRlbnRzKQog
CiAgICAgZGVmIHRlc3RfYXBwbHlfc3ZuX3BhdGNoKHNlbGYpOgotICAgICAgICBzY20gPSBkZXRl
Y3Rfc2NtX3N5c3RlbShzZWxmLnN2bl9jaGVja291dF9wYXRoKQorICAgICAgICBzY20gPSBkZXRl
Y3Rfc2NtX3N5c3RlbShzZWxmLnN2bl9jaGVja291dF9wYXRoLCBNb2NrT3B0aW9ucygpKQogICAg
ICAgICBwYXRjaCA9IHNlbGYuX2NyZWF0ZV9wYXRjaChydW5fY29tbWFuZChbJ3N2bicsICdkaWZm
JywgJy1yNDozJ10pKQogICAgICAgICBzZWxmLl9zZXR1cF93ZWJraXR0b29sc19zY3JpcHRzX3N5
bWxpbmsoc2NtKQogICAgICAgICBDaGVja291dChzY20pLmFwcGx5X3BhdGNoKHBhdGNoKQogCiAg
ICAgZGVmIHRlc3RfYXBwbHlfc3ZuX3BhdGNoX2ZvcmNlKHNlbGYpOgotICAgICAgICBzY20gPSBk
ZXRlY3Rfc2NtX3N5c3RlbShzZWxmLnN2bl9jaGVja291dF9wYXRoKQorICAgICAgICBzY20gPSBk
ZXRlY3Rfc2NtX3N5c3RlbShzZWxmLnN2bl9jaGVja291dF9wYXRoLCBNb2NrT3B0aW9ucygpKQog
ICAgICAgICBwYXRjaCA9IHNlbGYuX2NyZWF0ZV9wYXRjaChydW5fY29tbWFuZChbJ3N2bicsICdk
aWZmJywgJy1yMjo0J10pKQogICAgICAgICBzZWxmLl9zZXR1cF93ZWJraXR0b29sc19zY3JpcHRz
X3N5bWxpbmsoc2NtKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhTY3JpcHRFcnJvciwgQ2hl
Y2tvdXQoc2NtKS5hcHBseV9wYXRjaCwgcGF0Y2gsIGZvcmNlPVRydWUpCkBAIC00OTEsNiArNDg3
LDE2IEBAIFExZFRCeDBBQUFCNDJpdGc0R2xnWUpqR3dNRER5T0RNeE1EdzM0R0JnUUVBSlBRREpB
PT0KICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLnNlYXJjaCgnZm91cnRoIGNvbW1pdCcsIHNl
bGYuc2NtLmxhc3Rfc3ZuX2NvbW1pdF9sb2coKSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShy
ZS5zZWFyY2goJ3NlY29uZCBjb21taXQnLCBzZWxmLnNjbS5zdm5fY29tbWl0X2xvZygyKSkpCiAK
KyAgICBkZWYgX3NoYXJlZF90ZXN0X2NvbW1pdF93aXRoX21lc3NhZ2Uoc2VsZiwgdXNlcm5hbWU9
Tm9uZSk6CisgICAgICAgIHdyaXRlX2ludG9fZmlsZV9hdF9wYXRoKCd0ZXN0X2ZpbGUnLCAnbW9y
ZSB0ZXN0IGNvbnRlbnQnKQorICAgICAgICBjb21taXRfdGV4dCA9IHNlbGYuc2NtLmNvbW1pdF93
aXRoX21lc3NhZ2UoImFub3RoZXIgdGVzdCBjb21taXQiLCB1c2VybmFtZSkKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChzZWxmLnNjbS5zdm5fcmV2aXNpb25fZnJvbV9jb21taXRfdGV4dChjb21t
aXRfdGV4dCksICc1JykKKworICAgICAgICBzZWxmLnNjbS5kcnlydW4gPSBUcnVlCisgICAgICAg
IHdyaXRlX2ludG9fZmlsZV9hdF9wYXRoKCd0ZXN0X2ZpbGUnLCAnc3RpbGwgbW9yZSB0ZXN0IGNv
bnRlbnQnKQorICAgICAgICBjb21taXRfdGV4dCA9IHNlbGYuc2NtLmNvbW1pdF93aXRoX21lc3Nh
Z2UoInlldCBhbm90aGVyIHRlc3QgY29tbWl0IiwgdXNlcm5hbWUpCisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoc2VsZi5zY20uc3ZuX3JldmlzaW9uX2Zyb21fY29tbWl0X3RleHQoY29tbWl0X3Rl
eHQpLCAnMCcpCisKICAgICBkZWYgdGVzdF9jb21taXRfdGV4dF9wYXJzaW5nKHNlbGYpOgogICAg
ICAgICBzZWxmLl9zaGFyZWRfdGVzdF9jb21taXRfd2l0aF9tZXNzYWdlKCkKIApAQCAtNDk4LDcg
KzUwNCw3IEBAIFExZFRCeDBBQUFCNDJpdGc0R2xnWUpqR3dNRER5T0RNeE1EdzM0R0JnUUVBSlBR
REpBPT0KICAgICAgICAgc2VsZi5fc2hhcmVkX3Rlc3RfY29tbWl0X3dpdGhfbWVzc2FnZSgiZGJh
dGVzQHdlYmtpdC5vcmciKQogCiAgICAgZGVmIHRlc3RfaGFzX2F1dGhvcml6YXRpb25fZm9yX3Jl
YWxtKHNlbGYpOgotICAgICAgICBzY20gPSBkZXRlY3Rfc2NtX3N5c3RlbShzZWxmLnN2bl9jaGVj
a291dF9wYXRoKQorICAgICAgICBzY20gPSBkZXRlY3Rfc2NtX3N5c3RlbShzZWxmLnN2bl9jaGVj
a291dF9wYXRoLCBNb2NrT3B0aW9ucygpKQogICAgICAgICBmYWtlX2hvbWVfZGlyID0gdGVtcGZp
bGUubWtkdGVtcChzdWZmaXg9ImZha2VfaG9tZV9kaXIiKQogICAgICAgICBzdm5fY29uZmlnX2Rp
cl9wYXRoID0gb3MucGF0aC5qb2luKGZha2VfaG9tZV9kaXIsICIuc3VidmVyc2lvbiIpCiAgICAg
ICAgIG9zLm1rZGlyKHN2bl9jb25maWdfZGlyX3BhdGgpCkBAIC01MTAsNyArNTE2LDcgQEAgUTFk
VEJ4MEFBQUI0Mml0ZzRHbGdZSmpHd01ERHlPRE14TUR3MzRHQmdRRUFKUFFESkE9PQogICAgICAg
ICBvcy5ybWRpcihmYWtlX2hvbWVfZGlyKQogCiAgICAgZGVmIHRlc3Rfbm90X2hhdmVfYXV0aG9y
aXphdGlvbl9mb3JfcmVhbG0oc2VsZik6Ci0gICAgICAgIHNjbSA9IGRldGVjdF9zY21fc3lzdGVt
KHNlbGYuc3ZuX2NoZWNrb3V0X3BhdGgpCisgICAgICAgIHNjbSA9IGRldGVjdF9zY21fc3lzdGVt
KHNlbGYuc3ZuX2NoZWNrb3V0X3BhdGgsIE1vY2tPcHRpb25zKCkpCiAgICAgICAgIGZha2VfaG9t
ZV9kaXIgPSB0ZW1wZmlsZS5ta2R0ZW1wKHN1ZmZpeD0iZmFrZV9ob21lX2RpciIpCiAgICAgICAg
IHN2bl9jb25maWdfZGlyX3BhdGggPSBvcy5wYXRoLmpvaW4oZmFrZV9ob21lX2RpciwgIi5zdWJ2
ZXJzaW9uIikKICAgICAgICAgb3MubWtkaXIoc3ZuX2NvbmZpZ19kaXJfcGF0aCkKQEAgLTUzNiw3
ICs1NDIsNiBAQCBRMWRUQngwQUFBQjQyaXRnNEdsZ1lKakd3TUREeU9ETXhNRHczNEdCZ1FFQUpQ
UURKQT09CiAgICAgZGVmIHRlc3RfY29tbWl0dGVyX2VtYWlsX2Zvcl9yZXZpc2lvbihzZWxmKToK
ICAgICAgICAgc2VsZi5fc2hhcmVkX3Rlc3RfY29tbWl0dGVyX2VtYWlsX2Zvcl9yZXZpc2lvbigp
CiAKLQogY2xhc3MgR2l0VGVzdChTQ01UZXN0KToKIAogICAgIGRlZiBfc2V0dXBfZ2l0X2Nsb25l
X29mX3N2bl9yZXBvc2l0b3J5KHNlbGYpOgpAQCAtNTUxLDcgKzU1Niw3IEBAIGNsYXNzIEdpdFRl
c3QoU0NNVGVzdCk6CiAgICAgICAgIFNWTlRlc3RSZXBvc2l0b3J5LnNldHVwKHNlbGYpCiAgICAg
ICAgIHNlbGYuX3NldHVwX2dpdF9jbG9uZV9vZl9zdm5fcmVwb3NpdG9yeSgpCiAgICAgICAgIG9z
LmNoZGlyKHNlbGYuZ2l0X2NoZWNrb3V0X3BhdGgpCi0gICAgICAgIHNlbGYuc2NtID0gZGV0ZWN0
X3NjbV9zeXN0ZW0oc2VsZi5naXRfY2hlY2tvdXRfcGF0aCkKKyAgICAgICAgc2VsZi5zY20gPSBk
ZXRlY3Rfc2NtX3N5c3RlbShzZWxmLmdpdF9jaGVja291dF9wYXRoLCBNb2NrT3B0aW9ucygpKQog
ICAgICAgICAjIEZvciBoaXN0b3JpY2FsIHJlYXNvbnMsIHdlIHRlc3Qgc29tZSBjaGVja291dCBj
b2RlIGhlcmUgdG9vLgogICAgICAgICBzZWxmLmNoZWNrb3V0ID0gQ2hlY2tvdXQoc2VsZi5zY20p
CiAKQEAgLTU2MCw3ICs1NjUsNyBAQCBjbGFzcyBHaXRUZXN0KFNDTVRlc3QpOgogICAgICAgICBz
ZWxmLl90ZWFyX2Rvd25fZ2l0X2Nsb25lX29mX3N2bl9yZXBvc2l0b3J5KCkKIAogICAgIGRlZiB0
ZXN0X2RldGVjdGlvbihzZWxmKToKLSAgICAgICAgc2NtID0gZGV0ZWN0X3NjbV9zeXN0ZW0oc2Vs
Zi5naXRfY2hlY2tvdXRfcGF0aCkKKyAgICAgICAgc2NtID0gZGV0ZWN0X3NjbV9zeXN0ZW0oc2Vs
Zi5naXRfY2hlY2tvdXRfcGF0aCwgTW9ja09wdGlvbnMoKSkKICAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChzY20uZGlzcGxheV9uYW1lKCksICJnaXQiKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KHNjbS5zdXBwb3J0c19sb2NhbF9jb21taXRzKCksIFRydWUpCiAKQEAgLTU3Niw3ICs1ODEsNyBA
QCBjbGFzcyBHaXRUZXN0KFNDTVRlc3QpOgogICAgICAgICAjIC0tcXVpZXQgZG9lc24ndCBtYWtl
IGdpdCBzdm4gc2lsZW50LCBzbyB1c2UgcnVuX3NpbGVudCB0byByZWRpcmVjdCBvdXRwdXQKICAg
ICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoU2NyaXB0RXJyb3IsIHJ1bl9zaWxlbnQsIFsnZ2l0Jywg
J3N2bicsICctLXF1aWV0JywgJ3JlYmFzZSddKSAjIFdpbGwgZmFpbCBkdWUgdG8gYSBjb25mbGlj
dCBsZWF2aW5nIHVzIG1pZC1yZWJhc2UuCiAKLSAgICAgICAgc2NtID0gZGV0ZWN0X3NjbV9zeXN0
ZW0oc2VsZi5naXRfY2hlY2tvdXRfcGF0aCkKKyAgICAgICAgc2NtID0gZGV0ZWN0X3NjbV9zeXN0
ZW0oc2VsZi5naXRfY2hlY2tvdXRfcGF0aCwgTW9ja09wdGlvbnMoKSkKICAgICAgICAgc2VsZi5h
c3NlcnRUcnVlKHNjbS5yZWJhc2VfaW5fcHJvZ3Jlc3MoKSkKIAogICAgICAgICAjIE1ha2Ugc3Vy
ZSBvdXIgY2xlYW51cCB3b3Jrcy4KQEAgLTU4Nyw3ICs1OTIsNyBAQCBjbGFzcyBHaXRUZXN0KFND
TVRlc3QpOgogICAgICAgICBzY20uY2xlYW5fd29ya2luZ19kaXJlY3RvcnkoKQogCiAgICAgZGVm
IHRlc3RfY29tbWl0aXNoX3BhcnNpbmcoc2VsZik6Ci0gICAgICAgIHNjbSA9IGRldGVjdF9zY21f
c3lzdGVtKHNlbGYuZ2l0X2NoZWNrb3V0X3BhdGgpCisgICAgICAgIHNjbSA9IGRldGVjdF9zY21f
c3lzdGVtKHNlbGYuZ2l0X2NoZWNrb3V0X3BhdGgsIE1vY2tPcHRpb25zKCkpCiAgICAgCiAgICAg
ICAgICMgTXVsdGlwbGUgcmV2aXNpb25zIGFyZSBjaGVycnktcGlja2VkLgogICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKGxlbihzY20uY29tbWl0X2lkc19mcm9tX2NvbW1pdGlzaF9hcmd1bWVudHMo
WydIRUFEfjInXSkpLCAxKQpAQCAtNTk3LDcgKzYwMiw3IEBAIGNsYXNzIEdpdFRlc3QoU0NNVGVz
dCk6CiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFNjcmlwdEVycm9yLCBzY20uY29tbWl0X2lk
c19mcm9tX2NvbW1pdGlzaF9hcmd1bWVudHMsIFsndHJ1bmsuLi5IRUFEJ10pCiAKICAgICBkZWYg
dGVzdF9jb21taXRpc2hfb3JkZXIoc2VsZik6Ci0gICAgICAgIHNjbSA9IGRldGVjdF9zY21fc3lz
dGVtKHNlbGYuZ2l0X2NoZWNrb3V0X3BhdGgpCisgICAgICAgIHNjbSA9IGRldGVjdF9zY21fc3lz
dGVtKHNlbGYuZ2l0X2NoZWNrb3V0X3BhdGgsIE1vY2tPcHRpb25zKCkpCiAKICAgICAgICAgY29t
bWl0X3JhbmdlID0gJ0hFQUR+My4uSEVBRCcKIApAQCAtNjA4LDE5ICs2MTMsODkgQEAgY2xhc3Mg
R2l0VGVzdChTQ01UZXN0KToKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhY3R1YWxfY29tbWl0
cywgZXhwZWN0ZWRfY29tbWl0cykKIAogICAgIGRlZiB0ZXN0X2FwcGx5X2dpdF9wYXRjaChzZWxm
KToKLSAgICAgICAgc2NtID0gZGV0ZWN0X3NjbV9zeXN0ZW0oc2VsZi5naXRfY2hlY2tvdXRfcGF0
aCkKKyAgICAgICAgc2NtID0gZGV0ZWN0X3NjbV9zeXN0ZW0oc2VsZi5naXRfY2hlY2tvdXRfcGF0
aCwgTW9ja09wdGlvbnMoKSkKICAgICAgICAgcGF0Y2ggPSBzZWxmLl9jcmVhdGVfcGF0Y2gocnVu
X2NvbW1hbmQoWydnaXQnLCAnZGlmZicsICdIRUFELi5IRUFEXiddKSkKICAgICAgICAgc2VsZi5f
c2V0dXBfd2Via2l0dG9vbHNfc2NyaXB0c19zeW1saW5rKHNjbSkKICAgICAgICAgQ2hlY2tvdXQo
c2NtKS5hcHBseV9wYXRjaChwYXRjaCkKIAogICAgIGRlZiB0ZXN0X2FwcGx5X2dpdF9wYXRjaF9m
b3JjZShzZWxmKToKLSAgICAgICAgc2NtID0gZGV0ZWN0X3NjbV9zeXN0ZW0oc2VsZi5naXRfY2hl
Y2tvdXRfcGF0aCkKKyAgICAgICAgc2NtID0gZGV0ZWN0X3NjbV9zeXN0ZW0oc2VsZi5naXRfY2hl
Y2tvdXRfcGF0aCwgTW9ja09wdGlvbnMoKSkKICAgICAgICAgcGF0Y2ggPSBzZWxmLl9jcmVhdGVf
cGF0Y2gocnVuX2NvbW1hbmQoWydnaXQnLCAnZGlmZicsICdIRUFEfjIuLkhFQUQnXSkpCiAgICAg
ICAgIHNlbGYuX3NldHVwX3dlYmtpdHRvb2xzX3NjcmlwdHNfc3ltbGluayhzY20pCiAgICAgICAg
IHNlbGYuYXNzZXJ0UmFpc2VzKFNjcmlwdEVycm9yLCBDaGVja291dChzY20pLmFwcGx5X3BhdGNo
LCBwYXRjaCwgZm9yY2U9VHJ1ZSkKIAogICAgIGRlZiB0ZXN0X2NvbW1pdF90ZXh0X3BhcnNpbmco
c2VsZik6Ci0gICAgICAgIHNlbGYuX3NoYXJlZF90ZXN0X2NvbW1pdF93aXRoX21lc3NhZ2UoKQor
ICAgICAgICB3cml0ZV9pbnRvX2ZpbGVfYXRfcGF0aCgndGVzdF9maWxlJywgJ21vcmUgdGVzdCBj
b250ZW50JykKKyAgICAgICAgc2VsZi5zY20uY29tbWl0X2xvY2FsbHlfd2l0aF9tZXNzYWdlKCJh
bm90aGVyIHRlc3QgY29tbWl0IikKKyAgICAgICAgY29tbWl0X3RleHQgPSBzZWxmLnNjbS5jb21t
aXRfd2l0aF9tZXNzYWdlKCJhbm90aGVyIHRlc3QgY29tbWl0IikKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChzZWxmLnNjbS5zdm5fcmV2aXNpb25fZnJvbV9jb21taXRfdGV4dChjb21taXRfdGV4
dCksICc1JykKKworICAgICAgICBzZWxmLnNjbS5kcnlydW4gPSBUcnVlCisgICAgICAgIHdyaXRl
X2ludG9fZmlsZV9hdF9wYXRoKCd0ZXN0X2ZpbGUnLCAnc3RpbGwgbW9yZSB0ZXN0IGNvbnRlbnQn
KQorICAgICAgICBzZWxmLnNjbS5jb21taXRfbG9jYWxseV93aXRoX21lc3NhZ2UoInlldCBhbm90
aGVyIHRlc3QgY29tbWl0IikKKyAgICAgICAgY29tbWl0X3RleHQgPSBzZWxmLnNjbS5jb21taXRf
d2l0aF9tZXNzYWdlKCJ5ZXQgYW5vdGhlciB0ZXN0IGNvbW1pdCIpCisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoc2VsZi5zY20uc3ZuX3JldmlzaW9uX2Zyb21fY29tbWl0X3RleHQoY29tbWl0X3Rl
eHQpLCAnMCcpCisKKyAgICBkZWYgX29uZV9sb2NhbF9jb21taXRfcGx1c193b3JraW5nX2NvcHlf
Y2hhbmdlcyhzZWxmKToKKyAgICAgICAgd3JpdGVfaW50b19maWxlX2F0X3BhdGgoJ3Rlc3RfZmls
ZV9jb21taXQxJywgJ21vcmUgdGVzdCBjb250ZW50JykKKyAgICAgICAgcnVuX2NvbW1hbmQoWydn
aXQnLCAnYWRkJywgJ3Rlc3RfZmlsZV9jb21taXQxJ10pCisgICAgICAgIHNlbGYuc2NtLmNvbW1p
dF9sb2NhbGx5X3dpdGhfbWVzc2FnZSgiYW5vdGhlciB0ZXN0IGNvbW1pdCIpCisKKyAgICAgICAg
d3JpdGVfaW50b19maWxlX2F0X3BhdGgoJ3Rlc3RfZmlsZV9jb21taXQyJywgJ3N0aWxsIG1vcmUg
dGVzdCBjb250ZW50JykKKyAgICAgICAgcnVuX2NvbW1hbmQoWydnaXQnLCAnYWRkJywgJ3Rlc3Rf
ZmlsZV9jb21taXQyJ10pCisKKyAgICBkZWYgdGVzdF9jb21taXRfd2l0aF9tZXNzYWdlX3NxdWFz
aGVkKHNlbGYpOgorICAgICAgICBzZWxmLl9vbmVfbG9jYWxfY29tbWl0X3BsdXNfd29ya2luZ19j
b3B5X2NoYW5nZXMoKTsKKyAgICAgICAgc2NtID0gZGV0ZWN0X3NjbV9zeXN0ZW0oc2VsZi5naXRf
Y2hlY2tvdXRfcGF0aCwgTW9ja09wdGlvbnMoc3F1YXNoPVRydWUpKQorICAgICAgICBjb21taXRf
dGV4dCA9IHNjbS5jb21taXRfd2l0aF9tZXNzYWdlKCJ5ZXQgYW5vdGhlciB0ZXN0IGNvbW1pdCIp
CisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzY20uc3ZuX3JldmlzaW9uX2Zyb21fY29tbWl0
X3RleHQoY29tbWl0X3RleHQpLCAnNScpCisgICAgICAgIHN2bl9sb2cgPSBydW5fY29tbWFuZChb
J2dpdCcsICdzdm4nLCAnbG9nJywgJy0tbGltaXQ9MScsICctLXZlcmJvc2UnXSkKKyAgICAgICAg
c2VsZi5hc3NlcnRUcnVlKHJlLnNlYXJjaChyJ3Rlc3RfZmlsZV9jb21taXQyJywgc3ZuX2xvZykp
CisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5zZWFyY2gocid0ZXN0X2ZpbGVfY29tbWl0MScs
IHN2bl9sb2cpKQorCisgICAgZGVmIF90d29fbG9jYWxfY29tbWl0cyhzZWxmKToKKyAgICAgICAg
d3JpdGVfaW50b19maWxlX2F0X3BhdGgoJ3Rlc3RfZmlsZV9jb21taXQxJywgJ21vcmUgdGVzdCBj
b250ZW50JykKKyAgICAgICAgcnVuX2NvbW1hbmQoWydnaXQnLCAnYWRkJywgJ3Rlc3RfZmlsZV9j
b21taXQxJ10pCisgICAgICAgIHNlbGYuc2NtLmNvbW1pdF9sb2NhbGx5X3dpdGhfbWVzc2FnZSgi
YW5vdGhlciB0ZXN0IGNvbW1pdCIpCisKKyAgICAgICAgd3JpdGVfaW50b19maWxlX2F0X3BhdGgo
J3Rlc3RfZmlsZV9jb21taXQyJywgJ3N0aWxsIG1vcmUgdGVzdCBjb250ZW50JykKKyAgICAgICAg
cnVuX2NvbW1hbmQoWydnaXQnLCAnYWRkJywgJ3Rlc3RfZmlsZV9jb21taXQyJ10pCisgICAgICAg
IHNlbGYuc2NtLmNvbW1pdF9sb2NhbGx5X3dpdGhfbWVzc2FnZSgieWV0IGFub3RoZXIgdGVzdCBj
b21taXQiKQorCisgICAgZGVmIHRlc3RfY29tbWl0X3dpdGhfbWVzc2FnZV9naXRfY29tbWl0KHNl
bGYpOgorICAgICAgICBzZWxmLl90d29fbG9jYWxfY29tbWl0cygpCisKKyAgICAgICAgc2NtID0g
ZGV0ZWN0X3NjbV9zeXN0ZW0oc2VsZi5naXRfY2hlY2tvdXRfcGF0aCwgTW9ja09wdGlvbnMoZ2l0
X2NvbW1pdD0iSEVBRF4iKSkKKyAgICAgICAgY29tbWl0X3RleHQgPSBzY20uY29tbWl0X3dpdGhf
bWVzc2FnZSgiYW5vdGhlciB0ZXN0IGNvbW1pdCIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
c2NtLnN2bl9yZXZpc2lvbl9mcm9tX2NvbW1pdF90ZXh0KGNvbW1pdF90ZXh0KSwgJzUnKQorCisg
ICAgICAgIHN2bl9sb2cgPSBydW5fY29tbWFuZChbJ2dpdCcsICdzdm4nLCAnbG9nJywgJy0tbGlt
aXQ9MScsICctLXZlcmJvc2UnXSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLnNlYXJjaChy
J3Rlc3RfZmlsZV9jb21taXQxJywgc3ZuX2xvZykpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uo
cmUuc2VhcmNoKHIndGVzdF9maWxlX2NvbW1pdDInLCBzdm5fbG9nKSkKKworICAgIGRlZiB0ZXN0
X2NvbW1pdF93aXRoX21lc3NhZ2VfbXVsdGlwbGVfbG9jYWxfY29tbWl0cyhzZWxmKToKKyAgICAg
ICAgc2VsZi5fdHdvX2xvY2FsX2NvbW1pdHMoKQorICAgICAgICBzY20gPSBkZXRlY3Rfc2NtX3N5
c3RlbShzZWxmLmdpdF9jaGVja291dF9wYXRoLCBNb2NrT3B0aW9ucyhzcXVhc2g9RmFsc2UpKQor
ICAgICAgICBjb21taXRfdGV4dCA9IHNjbS5jb21taXRfd2l0aF9tZXNzYWdlKCJ5ZXQgYW5vdGhl
ciB0ZXN0IGNvbW1pdCIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2NtLnN2bl9yZXZpc2lv
bl9mcm9tX2NvbW1pdF90ZXh0KGNvbW1pdF90ZXh0KSwgJzUnKQorCisgICAgICAgIHN2bl9sb2cg
PSBydW5fY29tbWFuZChbJ2dpdCcsICdzdm4nLCAnbG9nJywgJy0tbGltaXQ9MScsICctLXZlcmJv
c2UnXSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLnNlYXJjaChyJ3Rlc3RfZmlsZV9jb21t
aXQyJywgc3ZuX2xvZykpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UocmUuc2VhcmNoKHIndGVz
dF9maWxlX2NvbW1pdDEnLCBzdm5fbG9nKSkKKworICAgICAgICBzdm5fbG9nID0gcnVuX2NvbW1h
bmQoWydnaXQnLCAnc3ZuJywgJ2xvZycsICctLWxpbWl0PTInLCAnLS12ZXJib3NlJ10pCisgICAg
ICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5zZWFyY2gocid0ZXN0X2ZpbGVfY29tbWl0MScsIHN2bl9s
b2cpKQorCisgICAgZGVmIHRlc3RfY29tbWl0X3dpdGhfbWVzc2FnZV9tdWx0aXBsZV9sb2NhbF9j
b21taXRzX3NxdWFzaGVkKHNlbGYpOgorICAgICAgICBzZWxmLl90d29fbG9jYWxfY29tbWl0cygp
CisgICAgICAgIHNjbSA9IGRldGVjdF9zY21fc3lzdGVtKHNlbGYuZ2l0X2NoZWNrb3V0X3BhdGgs
IE1vY2tPcHRpb25zKHNxdWFzaD1UcnVlKSkKKyAgICAgICAgY29tbWl0X3RleHQgPSBzY20uY29t
bWl0X3dpdGhfbWVzc2FnZSgieWV0IGFub3RoZXIgdGVzdCBjb21taXQiKQorICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKHNjbS5zdm5fcmV2aXNpb25fZnJvbV9jb21taXRfdGV4dChjb21taXRfdGV4
dCksICc1JykKKworICAgICAgICBzdm5fbG9nID0gcnVuX2NvbW1hbmQoWydnaXQnLCAnc3ZuJywg
J2xvZycsICctLWxpbWl0PTEnLCAnLS12ZXJib3NlJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1
ZShyZS5zZWFyY2gocid0ZXN0X2ZpbGVfY29tbWl0MicsIHN2bl9sb2cpKQorICAgICAgICBzZWxm
LmFzc2VydFRydWUocmUuc2VhcmNoKHIndGVzdF9maWxlX2NvbW1pdDEnLCBzdm5fbG9nKSkKIAog
ICAgIGRlZiB0ZXN0X3JldmVyc2VfZGlmZihzZWxmKToKICAgICAgICAgc2VsZi5fc2hhcmVkX3Rl
c3RfcmV2ZXJzZV9kaWZmKCkKQEAgLTYzMSw5ICs3MDYsNDUgQEAgY2xhc3MgR2l0VGVzdChTQ01U
ZXN0KToKICAgICBkZWYgdGVzdF9zdm5fYXBwbHlfZ2l0X3BhdGNoKHNlbGYpOgogICAgICAgICBz
ZWxmLl9zaGFyZWRfdGVzdF9zdm5fYXBwbHlfZ2l0X3BhdGNoKCkKIAorICAgIGRlZiB0ZXN0X2Ny
ZWF0ZV9wYXRjaF9zcXVhc2hlZChzZWxmKToKKyAgICAgICAgc2VsZi5fb25lX2xvY2FsX2NvbW1p
dF9wbHVzX3dvcmtpbmdfY29weV9jaGFuZ2VzKCk7CisgICAgICAgIHNjbSA9IGRldGVjdF9zY21f
c3lzdGVtKHNlbGYuZ2l0X2NoZWNrb3V0X3BhdGgsIE1vY2tPcHRpb25zKHNxdWFzaD1UcnVlKSkK
KyAgICAgICAgcGF0Y2ggPSBzY20uY3JlYXRlX3BhdGNoKCkKKyAgICAgICAgc2VsZi5hc3NlcnRU
cnVlKHJlLnNlYXJjaChyJ3Rlc3RfZmlsZV9jb21taXQyJywgcGF0Y2gpKQorICAgICAgICBzZWxm
LmFzc2VydFRydWUocmUuc2VhcmNoKHIndGVzdF9maWxlX2NvbW1pdDEnLCBwYXRjaCkpCisKKyAg
ICBkZWYgdGVzdF9jcmVhdGVfcGF0Y2hfbm90X3NxdWFzaGVkKHNlbGYpOgorICAgICAgICBzZWxm
Ll9vbmVfbG9jYWxfY29tbWl0X3BsdXNfd29ya2luZ19jb3B5X2NoYW5nZXMoKTsKKyAgICAgICAg
c2NtID0gZGV0ZWN0X3NjbV9zeXN0ZW0oc2VsZi5naXRfY2hlY2tvdXRfcGF0aCwgTW9ja09wdGlv
bnMoc3F1YXNoPUZhbHNlKSkKKyAgICAgICAgcGF0Y2ggPSBzY20uY3JlYXRlX3BhdGNoKCkKKyAg
ICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLnNlYXJjaChyJ3Rlc3RfZmlsZV9jb21taXQyJywgcGF0
Y2gpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHJlLnNlYXJjaChyJ3Rlc3RfZmlsZV9jb21t
aXQxJywgcGF0Y2gpKQorCisgICAgZGVmIHRlc3RfY3JlYXRlX3BhdGNoX2dpdF9jb21taXQoc2Vs
Zik6CisgICAgICAgIHNlbGYuX3R3b19sb2NhbF9jb21taXRzKCkKKyAgICAgICAgc2NtID0gZGV0
ZWN0X3NjbV9zeXN0ZW0oc2VsZi5naXRfY2hlY2tvdXRfcGF0aCwgTW9ja09wdGlvbnMoZ2l0X2Nv
bW1pdD0iSEVBRF4iKSkKKyAgICAgICAgcGF0Y2ggPSBzY20uY3JlYXRlX3BhdGNoKCkKKyAgICAg
ICAgc2VsZi5hc3NlcnRUcnVlKHJlLnNlYXJjaChyJ3Rlc3RfZmlsZV9jb21taXQxJywgcGF0Y2gp
KQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHJlLnNlYXJjaChyJ3Rlc3RfZmlsZV9jb21taXQy
JywgcGF0Y2gpKQorCisgICAgZGVmIHRlc3RfY3JlYXRlX3BhdGNoX211bHRpcGxlX2xvY2FsX2Nv
bW1pdHMoc2VsZik6CisgICAgICAgIHNlbGYuX3R3b19sb2NhbF9jb21taXRzKCkKKyAgICAgICAg
c2NtID0gZGV0ZWN0X3NjbV9zeXN0ZW0oc2VsZi5naXRfY2hlY2tvdXRfcGF0aCwgTW9ja09wdGlv
bnMoc3F1YXNoPUZhbHNlKSkKKyAgICAgICAgcGF0Y2ggPSBzY20uY3JlYXRlX3BhdGNoKCkKKyAg
ICAgICAgIyBGSVhNRTogSXQncyB3ZWlyZCB0aGF0IHdpdGggc3F1YXNoPUZhbHNlLCBjcmVhdGVf
cGF0Y2gvY2hhbmdlZF9maWxlcyBpZ25vcmVzIGxvY2FsIGNvbW1pdHMsCisgICAgICAgICMgYnV0
IGNvbW1pdF93aXRoX21lc3NhZ2UgY29tbWl0cyB0aGVtLgorICAgICAgICBzZWxmLmFzc2VydFRy
dWUocGF0Y2ggPT0gIiIpCisKKyAgICBkZWYgdGVzdF9jcmVhdGVfcGF0Y2hfbXVsdGlwbGVfbG9j
YWxfY29tbWl0c19zcXVhc2hlZChzZWxmKToKKyAgICAgICAgc2VsZi5fdHdvX2xvY2FsX2NvbW1p
dHMoKQorICAgICAgICBzY20gPSBkZXRlY3Rfc2NtX3N5c3RlbShzZWxmLmdpdF9jaGVja291dF9w
YXRoLCBNb2NrT3B0aW9ucyhzcXVhc2g9VHJ1ZSkpCisgICAgICAgIHBhdGNoID0gc2NtLmNyZWF0
ZV9wYXRjaCgpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5zZWFyY2gocid0ZXN0X2ZpbGVf
Y29tbWl0MicsIHBhdGNoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLnNlYXJjaChyJ3Rl
c3RfZmlsZV9jb21taXQxJywgcGF0Y2gpKQorCiAgICAgZGVmIHRlc3RfY3JlYXRlX2JpbmFyeV9w
YXRjaChzZWxmKToKICAgICAgICAgIyBDcmVhdGUgYSBnaXQgYmluYXJ5IHBhdGNoIGFuZCBjaGVj
ayB0aGUgY29udGVudHMuCi0gICAgICAgIHNjbSA9IGRldGVjdF9zY21fc3lzdGVtKHNlbGYuZ2l0
X2NoZWNrb3V0X3BhdGgpCisgICAgICAgIHNjbSA9IGRldGVjdF9zY21fc3lzdGVtKHNlbGYuZ2l0
X2NoZWNrb3V0X3BhdGgsIE1vY2tPcHRpb25zKCkpCiAgICAgICAgIHRlc3RfZmlsZV9uYW1lID0g
J2JpbmFyeV9maWxlJwogICAgICAgICB0ZXN0X2ZpbGVfcGF0aCA9IG9zLnBhdGguam9pbihzZWxm
LmdpdF9jaGVja291dF9wYXRoLCB0ZXN0X2ZpbGVfbmFtZSkKICAgICAgICAgZmlsZV9jb250ZW50
cyA9ICcnLmpvaW4obWFwKGNociwgcmFuZ2UoMjU2KSkpCkBAIC02NjEsNiArNzcyLDQyIEBAIGNs
YXNzIEdpdFRlc3QoU0NNVGVzdCk6CiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5zZWFyY2go
cidcbmxpdGVyYWwgMjU2XG4nLCBwYXRjaF9zaW5jZV9sb2NhbF9jb21taXQpKQogICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKHBhdGNoX2Zyb21fbG9jYWxfY29tbWl0LCBwYXRjaF9zaW5jZV9sb2Nh
bF9jb21taXQpCiAKKyAgICBkZWYgdGVzdF9jaGFuZ2VkX2ZpbGVzX3NxdWFzaGVkKHNlbGYpOgor
ICAgICAgICBzZWxmLl9vbmVfbG9jYWxfY29tbWl0X3BsdXNfd29ya2luZ19jb3B5X2NoYW5nZXMo
KTsKKyAgICAgICAgc2NtID0gZGV0ZWN0X3NjbV9zeXN0ZW0oc2VsZi5naXRfY2hlY2tvdXRfcGF0
aCwgTW9ja09wdGlvbnMoc3F1YXNoPVRydWUpKQorICAgICAgICBmaWxlcyA9IHNjbS5jaGFuZ2Vk
X2ZpbGVzKCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCd0ZXN0X2ZpbGVfY29tbWl0MicgaW4g
ZmlsZXMpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgndGVzdF9maWxlX2NvbW1pdDEnIGluIGZp
bGVzKQorCisgICAgZGVmIHRlc3RfY2hhbmdlZF9maWxlc19ub3Rfc3F1YXNoZWQoc2VsZik6Cisg
ICAgICAgIHNlbGYuX29uZV9sb2NhbF9jb21taXRfcGx1c193b3JraW5nX2NvcHlfY2hhbmdlcygp
OworICAgICAgICBzY20gPSBkZXRlY3Rfc2NtX3N5c3RlbShzZWxmLmdpdF9jaGVja291dF9wYXRo
LCBNb2NrT3B0aW9ucyhzcXVhc2g9RmFsc2UpKQorICAgICAgICBmaWxlcyA9IHNjbS5jaGFuZ2Vk
X2ZpbGVzKCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCd0ZXN0X2ZpbGVfY29tbWl0MicgaW4g
ZmlsZXMpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoJ3Rlc3RfZmlsZV9jb21taXQxJyBpbiBm
aWxlcykKKworICAgIGRlZiB0ZXN0X2NoYW5nZWRfZmlsZXNfZ2l0X2NvbW1pdChzZWxmKToKKyAg
ICAgICAgc2VsZi5fdHdvX2xvY2FsX2NvbW1pdHMoKQorICAgICAgICBzY20gPSBkZXRlY3Rfc2Nt
X3N5c3RlbShzZWxmLmdpdF9jaGVja291dF9wYXRoLCBNb2NrT3B0aW9ucyhnaXRfY29tbWl0PSJI
RUFEXiIpKQorICAgICAgICBmaWxlcyA9IHNjbS5jaGFuZ2VkX2ZpbGVzKCkKKyAgICAgICAgc2Vs
Zi5hc3NlcnRUcnVlKCd0ZXN0X2ZpbGVfY29tbWl0MScgaW4gZmlsZXMpCisgICAgICAgIHNlbGYu
YXNzZXJ0RmFsc2UoJ3Rlc3RfZmlsZV9jb21taXQyJyBpbiBmaWxlcykKKworICAgIGRlZiB0ZXN0
X2NoYW5nZWRfZmlsZXNfbXVsdGlwbGVfbG9jYWxfY29tbWl0cyhzZWxmKToKKyAgICAgICAgc2Vs
Zi5fdHdvX2xvY2FsX2NvbW1pdHMoKQorICAgICAgICBzY20gPSBkZXRlY3Rfc2NtX3N5c3RlbShz
ZWxmLmdpdF9jaGVja291dF9wYXRoLCBNb2NrT3B0aW9ucyhzcXVhc2g9RmFsc2UpKQorICAgICAg
ICBmaWxlcyA9IHNjbS5jaGFuZ2VkX2ZpbGVzKCkKKyAgICAgICAgIyBGSVhNRTogSXQncyB3ZWly
ZCB0aGF0IHdpdGggc3F1YXNoPUZhbHNlLCBjcmVhdGVfcGF0Y2gvY2hhbmdlZF9maWxlcyBpZ25v
cmVzIGxvY2FsIGNvbW1pdHMsCisgICAgICAgICMgYnV0IGNvbW1pdF93aXRoX21lc3NhZ2UgY29t
bWl0cyB0aGVtLgorICAgICAgICBzZWxmLmFzc2VydFRydWUobGVuKGZpbGVzKSA9PSAwKQorCisg
ICAgZGVmIHRlc3RfY2hhbmdlZF9maWxlc19tdWx0aXBsZV9sb2NhbF9jb21taXRzX3NxdWFzaGVk
KHNlbGYpOgorICAgICAgICBzZWxmLl90d29fbG9jYWxfY29tbWl0cygpCisgICAgICAgIHNjbSA9
IGRldGVjdF9zY21fc3lzdGVtKHNlbGYuZ2l0X2NoZWNrb3V0X3BhdGgsIE1vY2tPcHRpb25zKHNx
dWFzaD1UcnVlKSkKKyAgICAgICAgZmlsZXMgPSBzY20uY2hhbmdlZF9maWxlcygpCisgICAgICAg
IHNlbGYuYXNzZXJ0VHJ1ZSgndGVzdF9maWxlX2NvbW1pdDInIGluIGZpbGVzKQorICAgICAgICBz
ZWxmLmFzc2VydFRydWUoJ3Rlc3RfZmlsZV9jb21taXQxJyBpbiBmaWxlcykKKwogICAgIGRlZiB0
ZXN0X2NoYW5nZWRfZmlsZXNfZm9yX3JldmlzaW9uKHNlbGYpOgogICAgICAgICBzZWxmLl9zaGFy
ZWRfdGVzdF9jaGFuZ2VkX2ZpbGVzX2Zvcl9yZXZpc2lvbigpCiAKZGlmZiAtLWdpdCBhL1dlYktp
dFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9jcmVkZW50aWFscy5weSBiL1dlYktp
dFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9jcmVkZW50aWFscy5weQppbmRleCA0
N2ZjMTcxLi4xZDVmODNkIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5
L2NvbW1vbi9uZXQvY3JlZGVudGlhbHMucHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9jb21tb24vbmV0L2NyZWRlbnRpYWxzLnB5CkBAIC00NCwyMCArNDQsMTMgQEAgY2xhc3Mg
Q3JlZGVudGlhbHMob2JqZWN0KToKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBob3N0LCBnaXRf
cHJlZml4PU5vbmUsIGV4ZWN1dGl2ZT1Ob25lLCBjd2Q9b3MuZ2V0Y3dkKCkpOgogICAgICAgICBz
ZWxmLmhvc3QgPSBob3N0Ci0gICAgICAgIHNlbGYuZ2l0X3ByZWZpeCA9IGdpdF9wcmVmaXgKKyAg
ICAgICAgc2VsZi5naXRfcHJlZml4ID0gIiVzLiIgJSBnaXRfcHJlZml4IGlmIGdpdF9wcmVmaXgg
ZWxzZSAiIgogICAgICAgICBzZWxmLmV4ZWN1dGl2ZSA9IGV4ZWN1dGl2ZSBvciBFeGVjdXRpdmUo
KQogICAgICAgICBzZWxmLmN3ZCA9IGN3ZAogCiAgICAgZGVmIF9jcmVkZW50aWFsc19mcm9tX2dp
dChzZWxmKToKLSAgICAgICAgcmV0dXJuIFtzZWxmLl9yZWFkX2dpdF9jb25maWcoInVzZXJuYW1l
IiksCi0gICAgICAgICAgICAgICAgc2VsZi5fcmVhZF9naXRfY29uZmlnKCJwYXNzd29yZCIpXQot
Ci0gICAgZGVmIF9yZWFkX2dpdF9jb25maWcoc2VsZiwga2V5KToKLSAgICAgICAgY29uZmlnX2tl
eSA9ICIlcy4lcyIgJSAoc2VsZi5naXRfcHJlZml4LCBrZXkpIGlmIHNlbGYuZ2l0X3ByZWZpeCBc
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBl
bHNlIGtleQotICAgICAgICByZXR1cm4gc2VsZi5leGVjdXRpdmUucnVuX2NvbW1hbmQoCi0gICAg
ICAgICAgICAgICAgWyJnaXQiLCAiY29uZmlnIiwgIi0tZ2V0IiwgY29uZmlnX2tleV0sCi0gICAg
ICAgICAgICAgICAgZXJyb3JfaGFuZGxlcj1FeGVjdXRpdmUuaWdub3JlX2Vycm9yKS5yc3RyaXAo
J1xuJykKKyAgICAgICAgcmV0dXJuIFtHaXQucmVhZF9naXRfY29uZmlnKHNlbGYuZ2l0X3ByZWZp
eCArICJ1c2VybmFtZSIpLAorICAgICAgICAgICAgICAgIEdpdC5yZWFkX2dpdF9jb25maWcoc2Vs
Zi5naXRfcHJlZml4ICsgInBhc3N3b3JkIildCiAKICAgICBkZWYgX2tleWNoYWluX3ZhbHVlX3dp
dGhfbGFiZWwoc2VsZiwgbGFiZWwsIHNvdXJjZV90ZXh0KToKICAgICAgICAgbWF0Y2ggPSByZS5z
ZWFyY2goIiVzXCIoP1A8dmFsdWU+LispXCIiICUgbGFiZWwsCmRpZmYgLS1naXQgYS9XZWJLaXRU
b29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvY3JlZGVudGlhbHNfdW5pdHRlc3QucHkg
Yi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvY3JlZGVudGlhbHNfdW5p
dHRlc3QucHkKaW5kZXggYTgzMGIxMy4uOWE0MmJkZCAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMv
U2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0L2NyZWRlbnRpYWxzX3VuaXR0ZXN0LnB5CisrKyBi
L1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9jcmVkZW50aWFsc191bml0
dGVzdC5weQpAQCAtMTAxLDE2ICsxMDEsNiBAQCBwYXNzd29yZDogIlNFQ1JFVFNBVUNFIgogICAg
ICAgICBzZWxmLl9hc3NlcnRfc2VjdXJpdHlfY2FsbCgpCiAgICAgICAgIHNlbGYuX2Fzc2VydF9z
ZWN1cml0eV9jYWxsKHVzZXJuYW1lPSJmb28iKQogCi0gICAgZGVmIHRlc3RfZ2l0X2NvbmZpZ19j
YWxscyhzZWxmKToKLSAgICAgICAgZXhlY3V0aXZlX21vY2sgPSBNb2NrKCkKLSAgICAgICAgY3Jl
ZGVudGlhbHMgPSBDcmVkZW50aWFscygiZXhhbXBsZS5jb20iLCBleGVjdXRpdmU9ZXhlY3V0aXZl
X21vY2spCi0gICAgICAgIGNyZWRlbnRpYWxzLl9yZWFkX2dpdF9jb25maWcoImZvbyIpCi0gICAg
ICAgIGV4ZWN1dGl2ZV9tb2NrLnJ1bl9jb21tYW5kLmFzc2VydF9jYWxsZWRfd2l0aChbImdpdCIs
ICJjb25maWciLCAiLS1nZXQiLCAiZm9vIl0sIGVycm9yX2hhbmRsZXI9RXhlY3V0aXZlLmlnbm9y
ZV9lcnJvcikKLQotICAgICAgICBjcmVkZW50aWFscyA9IENyZWRlbnRpYWxzKCJleGFtcGxlLmNv
bSIsIGdpdF9wcmVmaXg9InRlc3RfcHJlZml4IiwgZXhlY3V0aXZlPWV4ZWN1dGl2ZV9tb2NrKQot
ICAgICAgICBjcmVkZW50aWFscy5fcmVhZF9naXRfY29uZmlnKCJmb28iKQotICAgICAgICBleGVj
dXRpdmVfbW9jay5ydW5fY29tbWFuZC5hc3NlcnRfY2FsbGVkX3dpdGgoWyJnaXQiLCAiY29uZmln
IiwgIi0tZ2V0IiwgInRlc3RfcHJlZml4LmZvbyJdLCBlcnJvcl9oYW5kbGVyPUV4ZWN1dGl2ZS5p
Z25vcmVfZXJyb3IpCi0KICAgICBkZWYgdGVzdF9yZWFkX2NyZWRlbnRpYWxzX3dpdGhvdXRfZ2l0
X3JlcG8oc2VsZik6CiAgICAgICAgIGNsYXNzIEZha2VDcmVkZW50aWFscyhDcmVkZW50aWFscyk6
CiAgICAgICAgICAgICBkZWYgX2lzX21hY19vc194KHNlbGYpOgpkaWZmIC0tZ2l0IGEvV2ViS2l0
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL2V4ZWN1dGl2ZS5weSBiL1dlYktp
dFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9leGVjdXRpdmUucHkKaW5kZXgg
NWM3NWRmNi4uZjQzZmU0YSAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9jb21tb24vc3lzdGVtL2V4ZWN1dGl2ZS5weQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dl
YmtpdHB5L2NvbW1vbi9zeXN0ZW0vZXhlY3V0aXZlLnB5CkBAIC0xNjMsMTIgKzE2MywxNCBAQCBj
bGFzcyBFeGVjdXRpdmUob2JqZWN0KToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY3dkPWN3ZCkKICAgICAgICAgb3V0cHV0ID0gcHJvY2Vzcy5jb21tdW5pY2F0ZShzdHJpbmdf
dG9fY29tbXVuaWNhdGUpWzBdCiAgICAgICAgIGV4aXRfY29kZSA9IHByb2Nlc3Mud2FpdCgpCisK
KyAgICAgICAgaWYgcmV0dXJuX2V4aXRfY29kZToKKyAgICAgICAgICAgIHJldHVybiBleGl0X2Nv
ZGUKKwogICAgICAgICBpZiBleGl0X2NvZGU6CiAgICAgICAgICAgICBzY3JpcHRfZXJyb3IgPSBT
Y3JpcHRFcnJvcihzY3JpcHRfYXJncz1hcmdzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZXhpdF9jb2RlPWV4aXRfY29kZSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG91dHB1dD1vdXRwdXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjd2Q9Y3dkKQogICAgICAgICAgICAgKGVycm9yX2hhbmRsZXIgb3Igc2Vs
Zi5kZWZhdWx0X2Vycm9yX2hhbmRsZXIpKHNjcmlwdF9lcnJvcikKLSAgICAgICAgaWYgcmV0dXJu
X2V4aXRfY29kZToKLSAgICAgICAgICAgIHJldHVybiBleGl0X2NvZGUKICAgICAgICAgcmV0dXJu
IG91dHB1dApkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9v
cHRwYXJzZXIucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL29wdHBhcnNl
ci5weQppbmRleCAzNDAzZGQ4Li44NTZkMmUzIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L3N0eWxlL29wdHBhcnNlci5weQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRz
L3dlYmtpdHB5L3N0eWxlL29wdHBhcnNlci5weQpAQCAtNDIsNyArNDIsNyBAQCBkZWYgX2NyZWF0
ZV91c2FnZShkZWZhdWx0X29wdGlvbnMpOgogICAgICIiIgogICAgIHVzYWdlID0gIiIiCiBTeW50
YXg6ICUocHJvZ3JhbV9uYW1lKXMgWy0tZmlsdGVyPS14LCt5LC4uLl0gWy0tZ2l0LWNvbW1pdD08
U2luZ2xlQ29tbWl0Pl0KLSAgICAgICAgWy0tbWluLWNvbmZpZGVuY2U9I10gWy0tb3V0cHV0PXZz
N10gWy0tdmVyYm9zZV0gW2ZpbGUgb3IgZGlyZWN0b3J5XSAuLi4KKyAgICAgICAgWy0tbWluLWNv
bmZpZGVuY2U9I10gWy0tb3V0cHV0PXZzN10gWy0tdmVyYm9zZV0gWy0tc3F1YXNoXSBbZmlsZSBv
ciBkaXJlY3RvcnldIC4uLgogCiAgIFRoZSBzdHlsZSBndWlkZWxpbmVzIHRoaXMgdHJpZXMgdG8g
Zm9sbG93IGFyZSBoZXJlOgogICAgIGh0dHA6Ly93ZWJraXQub3JnL2NvZGluZy9jb2Rpbmctc3R5
bGUuaHRtbApAQCAtOTksNiArOTksMTAgQEAgU3ludGF4OiAlKHByb2dyYW1fbmFtZSlzIFstLWZp
bHRlcj0teCwreSwuLi5dIFstLWdpdC1jb21taXQ9PFNpbmdsZUNvbW1pdD5dCiAgICAgICAgIHZz
NyAgIDogY29tcGF0aWJsZSB3aXRoIFZpc3VhbCBTdHVkaW8KICAgICAgIERlZmF1bHRzIHRvICIl
KGRlZmF1bHRfb3V0cHV0X2Zvcm1hdClzIi4gT3RoZXIgZm9ybWF0cyBhcmUgdW5zdXBwb3J0ZWQu
CiAKKyAgICBzcXVhc2gKKyAgICAgIElmIFRydWUsIHRoZW4gYWxsIGRpZmZzIGZyb20gdGhlIHJl
bW90ZSBicmFuY2ggYXJlIGNoZWNrZWQuCisgICAgICBJZiBleGNsdWRlZCwgcHJvbXB0cyB3aGV0
aGVyIHRvIHNxdWFzaCB3aGVuIHRoZXJlIGFyZSBtdWx0aXBsZSBjb21taXRzLgorCiAgICAgdmVy
Ym9zZQogICAgICAgTG9nZ2luZyBpcyB2ZXJib3NlIGlmIHRoaXMgZmxhZyBpcyBwcmVzZW50Lgog
CkBAIC0xODYsNyArMTkwLDggQEAgY2xhc3MgQ29tbWFuZE9wdGlvblZhbHVlcyhvYmplY3QpOgog
ICAgICAgICAgICAgICAgICBnaXRfY29tbWl0PU5vbmUsCiAgICAgICAgICAgICAgICAgIGlzX3Zl
cmJvc2U9RmFsc2UsCiAgICAgICAgICAgICAgICAgIG1pbl9jb25maWRlbmNlPTEsCi0gICAgICAg
ICAgICAgICAgIG91dHB1dF9mb3JtYXQ9ImVtYWNzIik6CisgICAgICAgICAgICAgICAgIG91dHB1
dF9mb3JtYXQ9ImVtYWNzIiwKKyAgICAgICAgICAgICAgICAgc3F1YXNoPUZhbHNlKToKICAgICAg
ICAgaWYgZmlsdGVyX3J1bGVzIGlzIE5vbmU6CiAgICAgICAgICAgICBmaWx0ZXJfcnVsZXMgPSBb
XQogCkBAIC0yMDUsNiArMjEwLDcgQEAgY2xhc3MgQ29tbWFuZE9wdGlvblZhbHVlcyhvYmplY3Qp
OgogICAgICAgICBzZWxmLmlzX3ZlcmJvc2UgPSBpc192ZXJib3NlCiAgICAgICAgIHNlbGYubWlu
X2NvbmZpZGVuY2UgPSBtaW5fY29uZmlkZW5jZQogICAgICAgICBzZWxmLm91dHB1dF9mb3JtYXQg
PSBvdXRwdXRfZm9ybWF0CisgICAgICAgIHNlbGYuc3F1YXNoID0gc3F1YXNoCiAKICAgICAjIFVz
ZWZ1bCBmb3IgdW5pdCB0ZXN0aW5nLgogICAgIGRlZiBfX2VxX18oc2VsZiwgb3RoZXIpOgpAQCAt
MjUzLDYgKzI1OSw4IEBAIGNsYXNzIEFyZ3VtZW50UHJpbnRlcihvYmplY3QpOgogICAgICAgICAg
ICAgZmxhZ3NbJ2ZpbHRlciddID0gIiwiLmpvaW4oZmlsdGVyX3J1bGVzKQogICAgICAgICBpZiBv
cHRpb25zLmdpdF9jb21taXQ6CiAgICAgICAgICAgICBmbGFnc1snZ2l0LWNvbW1pdCddID0gb3B0
aW9ucy5naXRfY29tbWl0CisgICAgICAgIGlmIG9wdGlvbnMuc3F1YXNoOgorICAgICAgICAgICAg
ZmxhZ3NbJ3NxdWFzaCddID0gb3B0aW9ucy5zcXVhc2gKIAogICAgICAgICBmbGFnX3N0cmluZyA9
ICcnCiAgICAgICAgICMgQWxwaGFiZXRpemluZyBsZXRzIHVzIHVuaXQgdGVzdCB0aGlzIG1ldGhv
ZC4KQEAgLTM4Nyw3ICszOTUsNyBAQCBjbGFzcyBBcmd1bWVudFBhcnNlcihvYmplY3QpOgogCiAg
ICAgICAgICMgVGhlIGZsYWdzIHRoYXQgdGhlIENvbW1hbmRPcHRpb25WYWx1ZXMgY2xhc3Mgc3Vw
cG9ydHMuCiAgICAgICAgIGZsYWdzID0gWydmaWx0ZXI9JywgJ2dpdC1jb21taXQ9JywgJ2hlbHAn
LCAnbWluLWNvbmZpZGVuY2U9JywKLSAgICAgICAgICAgICAgICAgJ291dHB1dD0nLCAndmVyYm9z
ZSddCisgICAgICAgICAgICAgICAgICdvdXRwdXQ9JywgJ3ZlcmJvc2UnLCAnc3F1YXNoJ10KIAog
ICAgICAgICB0cnk6CiAgICAgICAgICAgICAob3B0cywgcGF0aHMpID0gZ2V0b3B0LmdldG9wdChh
cmdzLCAnJywgZmxhZ3MpCkBAIC0zOTksNiArNDA3LDcgQEAgY2xhc3MgQXJndW1lbnRQYXJzZXIo
b2JqZWN0KToKICAgICAgICAgICAgIHNlbGYuX2V4aXRfd2l0aF91c2FnZSgnSW52YWxpZCBhcmd1
bWVudHM6ICVzJyAlIGVycikKIAogICAgICAgICBnaXRfY29tbWl0ID0gTm9uZQorICAgICAgICBz
cXVhc2ggPSBGYWxzZQogICAgICAgICBmaWx0ZXJfcnVsZXMgPSBbXQogCiAgICAgICAgIGZvciAo
b3B0LCB2YWwpIGluIG9wdHM6CkBAIC00MTcsNiArNDI2LDggQEAgY2xhc3MgQXJndW1lbnRQYXJz
ZXIob2JqZWN0KToKICAgICAgICAgICAgICAgICBvdXRwdXRfZm9ybWF0ID0gdmFsCiAgICAgICAg
ICAgICBlbGlmIG9wdCA9PSAiLS12ZXJib3NlIjoKICAgICAgICAgICAgICAgICBpc192ZXJib3Nl
ID0gVHJ1ZQorICAgICAgICAgICAgZWxpZiBvcHQgPT0gIi0tc3F1YXNoIjoKKyAgICAgICAgICAg
ICAgICBzcXVhc2ggPSBUcnVlCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICMg
V2Ugc2hvdWxkIG5ldmVyIGdldCBoZXJlIGJlY2F1c2UgZ2V0b3B0LmdldG9wdCgpCiAgICAgICAg
ICAgICAgICAgIyByYWlzZXMgYW4gZXJyb3IgaW4gdGhpcyBjYXNlLgpAQCAtNDQ5LDcgKzQ2MCw4
IEBAIGNsYXNzIEFyZ3VtZW50UGFyc2VyKG9iamVjdCk6CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGdpdF9jb21taXQ9Z2l0X2NvbW1pdCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaXNfdmVyYm9zZT1pc192ZXJib3NlLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBtaW5fY29uZmlkZW5jZT1taW5fY29uZmlkZW5jZSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0X2Zvcm1hdD1vdXRw
dXRfZm9ybWF0KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXRf
Zm9ybWF0PW91dHB1dF9mb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNxdWFzaD1zcXVhc2gpCiAKICAgICAgICAgcmV0dXJuIChwYXRocywgb3B0aW9ucykKIApk
aWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZV9yZWZlcmVuY2Vz
LnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZV9yZWZlcmVuY2VzLnB5Cmlu
ZGV4IDlkZDM5OWYuLjlkOTJjZWMgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvc3R5bGVfcmVmZXJlbmNlcy5weQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtp
dHB5L3N0eWxlX3JlZmVyZW5jZXMucHkKQEAgLTQ2LDE0ICs0NiwxNiBAQCBmcm9tIHdlYmtpdHB5
LmNvbW1vbi5zeXN0ZW0ubG9ndGVzdGluZyBpbXBvcnQgVGVzdExvZ1N0cmVhbQogZnJvbSB3ZWJr
aXRweS5jb21tb24uY2hlY2tvdXQuc2NtIGltcG9ydCBkZXRlY3Rfc2NtX3N5c3RlbQogCiAKLWRl
ZiBkZXRlY3RfY2hlY2tvdXQoKToKK2RlZiBkZXRlY3RfY2hlY2tvdXQob3B0aW9ucyk6CiAgICAg
IiIiUmV0dXJuIGEgV2ViS2l0Q2hlY2tvdXQgaW5zdGFuY2UsIG9yIE5vbmUgaWYgaXQgY2Fubm90
IGJlIGZvdW5kLiIiIgogICAgIGN3ZCA9IG9zLnBhdGguYWJzcGF0aChvcy5jdXJkaXIpCi0gICAg
c2NtID0gZGV0ZWN0X3NjbV9zeXN0ZW0oY3dkKQorICAgIHNjbSA9IGRldGVjdF9zY21fc3lzdGVt
KGN3ZCwgb3B0aW9ucykKIAogICAgIHJldHVybiBOb25lIGlmIHNjbSBpcyBOb25lIGVsc2UgV2Vi
S2l0Q2hlY2tvdXQoc2NtKQogCi0KK2RlZiBpbl93b3JraW5nX2RpcmVjdG9yeSgpOgorICAgIHJl
dHVybiBpbl93b3JraW5nX2RpcmVjdG9yeShvcy5wYXRoLmFic3BhdGgob3MuY3VyZGlyKSkKKyAg
ICAKIGRlZiBwYXJzZV9wYXRjaChwYXRjaF9zdHJpbmcpOgogCiAgICAgIiIiUGFyc2UgYSBwYXRj
aCBzdHJpbmcgYW5kIHJldHVybiB0aGUgYWZmZWN0ZWQgZmlsZXMuIiIiCmRpZmYgLS1naXQgYS9X
ZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvbWFpbi5weSBiL1dlYktpdFRvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvdG9vbC9tYWluLnB5CmluZGV4IDYyOWU4NmYuLjI2MjFkMGYgMTAwNzU1
Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9tYWluLnB5CisrKyBiL1dl
YktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9tYWluLnB5CkBAIC03NSwxMSArNzUsMTEg
QEAgY2xhc3MgV2ViS2l0UGF0Y2goTXVsdGlDb21tYW5kVG9vbCk6CiAgICAgICAgICMgTGF6aWx5
IGluaXRpYWxpemUgU0NNIHRvIG5vdCBlcnJvci1vdXQgYmVmb3JlIGNvbW1hbmQgbGluZSBwYXJz
aW5nIChvciB3aGVuIHJ1bm5pbmcgbm9uLXNjbSBjb21tYW5kcykuCiAgICAgICAgIG9yaWdpbmFs
X2N3ZCA9IG9zLnBhdGguYWJzcGF0aCgiLiIpCiAgICAgICAgIGlmIG5vdCBzZWxmLl9zY206Ci0g
ICAgICAgICAgICBzZWxmLl9zY20gPSBkZXRlY3Rfc2NtX3N5c3RlbShvcmlnaW5hbF9jd2QpCisg
ICAgICAgICAgICBzZWxmLl9zY20gPSBkZXRlY3Rfc2NtX3N5c3RlbShvcmlnaW5hbF9jd2QsIHNl
bGYuX29wdGlvbnMpCiAKICAgICAgICAgaWYgbm90IHNlbGYuX3NjbToKICAgICAgICAgICAgIHNj
cmlwdF9kaXJlY3RvcnkgPSBvcy5wYXRoLmFic3BhdGgoc3lzLnBhdGhbMF0pCi0gICAgICAgICAg
ICBzZWxmLl9zY20gPSBkZXRlY3Rfc2NtX3N5c3RlbShzY3JpcHRfZGlyZWN0b3J5KQorICAgICAg
ICAgICAgc2VsZi5fc2NtID0gZGV0ZWN0X3NjbV9zeXN0ZW0oc2NyaXB0X2RpcmVjdG9yeSwgc2Vs
Zi5fb3B0aW9ucykKICAgICAgICAgICAgIGlmIHNlbGYuX3NjbToKICAgICAgICAgICAgICAgICBs
b2coIlRoZSBjdXJyZW50IGRpcmVjdG9yeSAoJXMpIGlzIG5vdCBhIFdlYktpdCBjaGVja291dCwg
dXNpbmcgJXMiICUgKG9yaWdpbmFsX2N3ZCwgc2VsZi5fc2NtLmNoZWNrb3V0X3Jvb3QpKQogICAg
ICAgICAgICAgZWxzZToKQEAgLTExOCw2ICsxMTgsNyBAQCBjbGFzcyBXZWJLaXRQYXRjaChNdWx0
aUNvbW1hbmRUb29sKToKIAogICAgICMgRklYTUU6IFRoaXMgbWF5IGJlIHVubmVjZXNzYXJ5IHNp
bmNlIHdlIHBhc3MgZ2xvYmFsIG9wdGlvbnMgdG8gYWxsIGNvbW1hbmRzIGR1cmluZyBleGVjdXRl
KCkgYXMgd2VsbC4KICAgICBkZWYgaGFuZGxlX2dsb2JhbF9vcHRpb25zKHNlbGYsIG9wdGlvbnMp
OgorICAgICAgICBzZWxmLl9vcHRpb25zID0gb3B0aW9ucwogICAgICAgICBpZiBvcHRpb25zLmRy
eV9ydW46CiAgICAgICAgICAgICBzZWxmLnNjbSgpLmRyeXJ1biA9IFRydWUKICAgICAgICAgICAg
IHNlbGYuYnVncy5kcnlydW4gPSBUcnVlCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRz
L3dlYmtpdHB5L3Rvb2wvc3RlcHMvYWJzdHJhY3RzdGVwLnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0
cy93ZWJraXRweS90b29sL3N0ZXBzL2Fic3RyYWN0c3RlcC5weQppbmRleCAxYWQzNDNkLi5lMWJh
NWRiIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMv
YWJzdHJhY3RzdGVwLnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9z
dGVwcy9hYnN0cmFjdHN0ZXAucHkKQEAgLTM2LDEwICszNiwxMyBAQCBjbGFzcyBBYnN0cmFjdFN0
ZXAob2JqZWN0KToKICAgICAgICAgc2VsZi5fb3B0aW9ucyA9IG9wdGlvbnMKICAgICAgICAgc2Vs
Zi5fcG9ydCA9IE5vbmUKIAotICAgIGRlZiBfcnVuX3NjcmlwdChzZWxmLCBzY3JpcHRfbmFtZSwg
cXVpZXQ9RmFsc2UsIHBvcnQ9V2ViS2l0UG9ydCk6CisgICAgZGVmIF9ydW5fc2NyaXB0KHNlbGYs
IHNjcmlwdF9uYW1lLCBhcmdzPU5vbmUsIHF1aWV0PUZhbHNlLCBwb3J0PVdlYktpdFBvcnQpOgog
ICAgICAgICBsb2coIlJ1bm5pbmcgJXMiICUgc2NyaXB0X25hbWUpCiAgICAgICAgICMgRklYTUU6
IFRoaXMgc2hvdWxkIHVzZSBzZWxmLnBvcnQoKQotICAgICAgICBzZWxmLl90b29sLmV4ZWN1dGl2
ZS5ydW5fYW5kX3Rocm93X2lmX2ZhaWwocG9ydC5zY3JpcHRfcGF0aChzY3JpcHRfbmFtZSksIHF1
aWV0KQorICAgICAgICBjb21tYW5kID0gW3BvcnQuc2NyaXB0X3BhdGgoc2NyaXB0X25hbWUpXQor
ICAgICAgICBpZiBhcmdzOgorICAgICAgICAgICAgY29tbWFuZC5leHRlbmQoYXJncykKKyAgICAg
ICAgc2VsZi5fdG9vbC5leGVjdXRpdmUucnVuX2FuZF90aHJvd19pZl9mYWlsKGNvbW1hbmQsIHF1
aWV0KQogCiAgICAgIyBGSVhNRTogVGhlIHBvcnQgc2hvdWxkIGxpdmUgb24gdGhlIHRvb2wuCiAg
ICAgZGVmIHBvcnQoc2VsZik6CmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtp
dHB5L3Rvb2wvc3RlcHMvY2hlY2tzdHlsZS5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0
cHkvdG9vbC9zdGVwcy9jaGVja3N0eWxlLnB5CmluZGV4IDYzZjAxMTQuLjY4ZDRhNWQgMTAwNjQ0
Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9jaGVja3N0eWxl
LnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9jaGVja3N0
eWxlLnB5CkBAIC0zOSw2ICszOSw4IEBAIGNsYXNzIENoZWNrU3R5bGUoQWJzdHJhY3RTdGVwKToK
ICAgICAgICAgcmV0dXJuIFsKICAgICAgICAgICAgIE9wdGlvbnMubm9uX2ludGVyYWN0aXZlLAog
ICAgICAgICAgICAgT3B0aW9ucy5jaGVja19zdHlsZSwKKyAgICAgICAgICAgIE9wdGlvbnMuZ2l0
X2NvbW1pdCwKKyAgICAgICAgICAgIE9wdGlvbnMuc3F1YXNoLAogICAgICAgICBdCiAKICAgICBk
ZWYgcnVuKHNlbGYsIHN0YXRlKToKQEAgLTQ2LDcgKzQ4LDE0IEBAIGNsYXNzIENoZWNrU3R5bGUo
QWJzdHJhY3RTdGVwKToKICAgICAgICAgICAgIHJldHVybgogICAgICAgICBvcy5jaGRpcihzZWxm
Ll90b29sLnNjbSgpLmNoZWNrb3V0X3Jvb3QpCiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIHNl
bGYuX3J1bl9zY3JpcHQoImNoZWNrLXdlYmtpdC1zdHlsZSIpCisgICAgICAgICAgICBhcmdzID0g
W10KKyAgICAgICAgICAgIGlmIHNlbGYuX29wdGlvbnMuZ2l0X2NvbW1pdDoKKyAgICAgICAgICAg
ICAgICBhcmdzLmFwcGVuZCgiLS1naXQtY29tbWl0IikKKyAgICAgICAgICAgICAgICBhcmdzLmFw
cGVuZChzZWxmLl9vcHRpb25zLmdpdF9jb21taXQpCisgICAgICAgICAgICBpZiBzZWxmLl9vcHRp
b25zLnNxdWFzaDoKKyAgICAgICAgICAgICAgICBhcmdzLmFwcGVuZCgiLS1zcXVhc2giKQorCisg
ICAgICAgICAgICBzZWxmLl9ydW5fc2NyaXB0KCJjaGVjay13ZWJraXQtc3R5bGUiLCBhcmdzKQog
ICAgICAgICBleGNlcHQgU2NyaXB0RXJyb3IsIGU6CiAgICAgICAgICAgICBpZiBzZWxmLl9vcHRp
b25zLm5vbl9pbnRlcmFjdGl2ZToKICAgICAgICAgICAgICAgICAjIFdlIG5lZWQgdG8gcmUtcmFp
c2UgdGhlIGV4Y2VwdGlvbiBoZXJlIHRvIGhhdmUgdGhlCmRpZmYgLS1naXQgYS9XZWJLaXRUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvY29tbWl0LnB5IGIvV2ViS2l0VG9vbHMvU2Ny
aXB0cy93ZWJraXRweS90b29sL3N0ZXBzL2NvbW1pdC5weQppbmRleCBiZDVjOTk4Li4xNTQ0YThm
IDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvY29t
bWl0LnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9jb21t
aXQucHkKQEAgLTI3LDkgKzI3LDE3IEBACiAjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKIGZyb20gd2Via2l0cHku
dG9vbC5zdGVwcy5hYnN0cmFjdHN0ZXAgaW1wb3J0IEFic3RyYWN0U3RlcAorZnJvbSB3ZWJraXRw
eS50b29sLnN0ZXBzLm9wdGlvbnMgaW1wb3J0IE9wdGlvbnMKIAogCiBjbGFzcyBDb21taXQoQWJz
dHJhY3RTdGVwKToKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgb3B0aW9ucyhjbHMpOgorICAg
ICAgICByZXR1cm4gWworICAgICAgICAgICAgT3B0aW9ucy5naXRfY29tbWl0LAorICAgICAgICAg
ICAgT3B0aW9ucy5zcXVhc2gsCisgICAgICAgIF0KKwogICAgIGRlZiBydW4oc2VsZiwgc3RhdGUp
OgogICAgICAgICBjb21taXRfbWVzc2FnZSA9IHNlbGYuX3Rvb2wuY2hlY2tvdXQoKS5jb21taXRf
bWVzc2FnZV9mb3JfdGhpc19jb21taXQoKQogICAgICAgICBzdGF0ZVsiY29tbWl0X3RleHQiXSA9
ICBzZWxmLl90b29sLnNjbSgpLmNvbW1pdF93aXRoX21lc3NhZ2UoY29tbWl0X21lc3NhZ2UubWVz
c2FnZSgpKQpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0
ZXBzL29wdGlvbnMucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMv
b3B0aW9ucy5weQppbmRleCBlYTQzZDZkLi4wYWJjYmY4IDEwMDY0NAotLS0gYS9XZWJLaXRUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvb3B0aW9ucy5weQorKysgYi9XZWJLaXRUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvb3B0aW9ucy5weQpAQCAtNDEsNiArNDEsOCBA
QCBjbGFzcyBPcHRpb25zKG9iamVjdCk6CiAgICAgZGVzY3JpcHRpb24gPSBtYWtlX29wdGlvbigi
LW0iLCAiLS1kZXNjcmlwdGlvbiIsIGFjdGlvbj0ic3RvcmUiLCB0eXBlPSJzdHJpbmciLCBkZXN0
PSJkZXNjcmlwdGlvbiIsIGhlbHA9IkRlc2NyaXB0aW9uIHN0cmluZyBmb3IgdGhlIGF0dGFjaG1l
bnQgKGRlZmF1bHQ6IFwicGF0Y2hcIikiKQogICAgIGVtYWlsID0gbWFrZV9vcHRpb24oIi0tZW1h
aWwiLCBhY3Rpb249InN0b3JlIiwgdHlwZT0ic3RyaW5nIiwgZGVzdD0iZW1haWwiLCBoZWxwPSJF
bWFpbCBhZGRyZXNzIHRvIHVzZSBpbiBDaGFuZ2VMb2dzLiIpCiAgICAgZm9yY2VfY2xlYW4gPSBt
YWtlX29wdGlvbigiLS1mb3JjZS1jbGVhbiIsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsIGRlc3Q9ImZv
cmNlX2NsZWFuIiwgZGVmYXVsdD1GYWxzZSwgaGVscD0iQ2xlYW4gd29ya2luZyBkaXJlY3Rvcnkg
YmVmb3JlIGFwcGx5aW5nIHBhdGNoZXMgKHJlbW92ZXMgbG9jYWwgY2hhbmdlcyBhbmQgY29tbWl0
cykiKQorIyBGSVhNRTogTWFrZSBnaXRfY29tbWl0IGEgZ2l0X2NvbW1pdGlzaCB0aGF0IHRha2Vz
IGNvbW1pdCByYW5nZXMuCisgICAgZ2l0X2NvbW1pdCA9IG1ha2Vfb3B0aW9uKCItLWdpdC1jb21t
aXQiLCBhY3Rpb249InN0b3JlIiwgZGVzdD0iZ2l0X2NvbW1pdCIsIGhlbHA9IkxvY2FsIGdpdCBj
b21taXQgdG8gdXBsb2FkL2xhbmQuIikKICAgICBsb2NhbF9jb21taXQgPSBtYWtlX29wdGlvbigi
LS1sb2NhbC1jb21taXQiLCBhY3Rpb249InN0b3JlX3RydWUiLCBkZXN0PSJsb2NhbF9jb21taXQi
LCBkZWZhdWx0PUZhbHNlLCBoZWxwPSJNYWtlIGEgbG9jYWwgY29tbWl0IGZvciBlYWNoIGFwcGxp
ZWQgcGF0Y2giKQogICAgIG5vbl9pbnRlcmFjdGl2ZSA9IG1ha2Vfb3B0aW9uKCItLW5vbi1pbnRl
cmFjdGl2ZSIsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsIGRlc3Q9Im5vbl9pbnRlcmFjdGl2ZSIsIGRl
ZmF1bHQ9RmFsc2UsIGhlbHA9Ik5ldmVyIHByb21wdCB0aGUgdXNlciwgZmFpbCBhcyBmYXN0IGFz
IHBvc3NpYmxlLiIpCiAgICAgb2Jzb2xldGVfcGF0Y2hlcyA9IG1ha2Vfb3B0aW9uKCItLW5vLW9i
c29sZXRlIiwgYWN0aW9uPSJzdG9yZV9mYWxzZSIsIGRlc3Q9Im9ic29sZXRlX3BhdGNoZXMiLCBk
ZWZhdWx0PVRydWUsIGhlbHA9IkRvIG5vdCBvYnNvbGV0ZSBvbGQgcGF0Y2hlcyBiZWZvcmUgcG9z
dGluZyB0aGlzIG9uZS4iKQpAQCAtNTEsNSArNTMsNiBAQCBjbGFzcyBPcHRpb25zKG9iamVjdCk6
CiAgICAgcmVxdWVzdF9jb21taXQgPSBtYWtlX29wdGlvbigiLS1yZXF1ZXN0LWNvbW1pdCIsIGFj
dGlvbj0ic3RvcmVfdHJ1ZSIsIGRlc3Q9InJlcXVlc3RfY29tbWl0IiwgZGVmYXVsdD1GYWxzZSwg
aGVscD0iTWFyayB0aGUgcGF0Y2ggYXMgbmVlZGluZyBhdXRvLWNvbW1pdCBhZnRlciByZXZpZXcu
IikKICAgICByZXZpZXcgPSBtYWtlX29wdGlvbigiLS1uby1yZXZpZXciLCBhY3Rpb249InN0b3Jl
X2ZhbHNlIiwgZGVzdD0icmV2aWV3IiwgZGVmYXVsdD1UcnVlLCBoZWxwPSJEbyBub3QgbWFyayB0
aGUgcGF0Y2ggZm9yIHJldmlldy4iKQogICAgIHJldmlld2VyID0gbWFrZV9vcHRpb24oIi1yIiwg
Ii0tcmV2aWV3ZXIiLCBhY3Rpb249InN0b3JlIiwgdHlwZT0ic3RyaW5nIiwgZGVzdD0icmV2aWV3
ZXIiLCBoZWxwPSJVcGRhdGUgQ2hhbmdlTG9ncyB0byBzYXkgUmV2aWV3ZWQgYnkgUkVWSUVXRVIu
IikKKyAgICBzcXVhc2ggPSBtYWtlX29wdGlvbigiLXMiLCAiLS1zcXVhc2giLCBhY3Rpb249InN0
b3JlX3RydWUiLCBkZXN0PSJzcXVhc2giLCBoZWxwPSJTcXVhc2ggYWxsIGxvY2FsIGNvbW1pdHMg
aW50byBvbmUgb24gdXBsb2FkL2xhbmQgKGdpdC1vbmx5KS4iKQogICAgIHRlc3QgPSBtYWtlX29w
dGlvbigiLS1uby10ZXN0IiwgYWN0aW9uPSJzdG9yZV9mYWxzZSIsIGRlc3Q9InRlc3QiLCBkZWZh
dWx0PVRydWUsIGhlbHA9IkNvbW1pdCB3aXRob3V0IHJ1bm5pbmcgcnVuLXdlYmtpdC10ZXN0cy4i
KQogICAgIHVwZGF0ZSA9IG1ha2Vfb3B0aW9uKCItLW5vLXVwZGF0ZSIsIGFjdGlvbj0ic3RvcmVf
ZmFsc2UiLCBkZXN0PSJ1cGRhdGUiLCBkZWZhdWx0PVRydWUsIGhlbHA9IkRvbid0IHVwZGF0ZSB0
aGUgd29ya2luZyBkaXJlY3RvcnkuIikKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMv
d2Via2l0cHkvdG9vbC9zdGVwcy9wb3N0ZGlmZi5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvdG9vbC9zdGVwcy9wb3N0ZGlmZi5weQppbmRleCBlZjhmNGM4Li4yZmViMWFlIDEwMDY0
NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvcG9zdGRpZmYu
cHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL3Bvc3RkaWZm
LnB5CkBAIC00MCw2ICs0MCw4IEBAIGNsYXNzIFBvc3REaWZmKEFic3RyYWN0U3RlcCk6CiAgICAg
ICAgICAgICBPcHRpb25zLnJldmlldywKICAgICAgICAgICAgIE9wdGlvbnMucmVxdWVzdF9jb21t
aXQsCiAgICAgICAgICAgICBPcHRpb25zLm9wZW5fYnVnLAorICAgICAgICAgICAgT3B0aW9ucy5n
aXRfY29tbWl0LAorICAgICAgICAgICAgT3B0aW9ucy5zcXVhc2gsCiAgICAgICAgIF0KIAogICAg
IGRlZiBydW4oc2VsZiwgc3RhdGUpOgpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93
ZWJraXRweS90b29sL3N0ZXBzL3ByZXBhcmVjaGFuZ2Vsb2cucHkgYi9XZWJLaXRUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvcHJlcGFyZWNoYW5nZWxvZy5weQppbmRleCBmY2I0MGJl
Li5hZTUxNTNjIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wv
c3RlcHMvcHJlcGFyZWNoYW5nZWxvZy5weQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtp
dHB5L3Rvb2wvc3RlcHMvcHJlcGFyZWNoYW5nZWxvZy5weQpAQCAtNDEsNiArNDEsOCBAQCBjbGFz
cyBQcmVwYXJlQ2hhbmdlTG9nKEFic3RyYWN0U3RlcCk6CiAgICAgICAgICAgICBPcHRpb25zLnBv
cnQsCiAgICAgICAgICAgICBPcHRpb25zLnF1aWV0LAogICAgICAgICAgICAgT3B0aW9ucy5lbWFp
bCwKKyAgICAgICAgICAgIE9wdGlvbnMuZ2l0X2NvbW1pdCwKKyAgICAgICAgICAgIE9wdGlvbnMu
c3F1YXNoLAogICAgICAgICBdCiAKICAgICBkZWYgcnVuKHNlbGYsIHN0YXRlKToKQEAgLTUyLDYg
KzU0LDExIEBAIGNsYXNzIFByZXBhcmVDaGFuZ2VMb2coQWJzdHJhY3RTdGVwKToKICAgICAgICAg
ICAgIGFyZ3MuYXBwZW5kKCItLWJ1Zz0lcyIgJSBzdGF0ZVsiYnVnX2lkIl0pCiAgICAgICAgIGlm
IHNlbGYuX29wdGlvbnMuZW1haWw6CiAgICAgICAgICAgICBhcmdzLmFwcGVuZCgiLS1lbWFpbD0l
cyIgJSBzZWxmLl9vcHRpb25zLmVtYWlsKQorICAgICAgICBpZiBzZWxmLl90b29sLnNjbSgpLnN1
cHBvcnRzX2xvY2FsX2NvbW1pdHMoKToKKyAgICAgICAgICAgIGFyZ3MuYXBwZW5kKCItLW1lcmdl
LWJhc2U9JXMiICUgc2VsZi5fdG9vbC5zY20oKS5zdm5fbWVyZ2VfYmFzZSgpKQorICAgICAgICBp
ZiBzZWxmLl9vcHRpb25zLmdpdF9jb21taXQ6CisgICAgICAgICAgICBhcmdzLmFwcGVuZCgiLS1n
aXQtY29tbWl0PSVzIiAlIHNlbGYuX29wdGlvbnMuZ2l0X2NvbW1pdCkKKwogICAgICAgICB0cnk6
CiAgICAgICAgICAgICBzZWxmLl90b29sLmV4ZWN1dGl2ZS5ydW5fYW5kX3Rocm93X2lmX2ZhaWwo
YXJncywgc2VsZi5fb3B0aW9ucy5xdWlldCkKICAgICAgICAgZXhjZXB0IFNjcmlwdEVycm9yLCBl
Ogo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>52305</attachid>
            <date>2010-04-01 10:02:13 -0700</date>
            <delta_ts>2010-04-05 10:48:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-36394-20100401100212.patch</filename>
            <type>text/plain</type>
            <size>46725</size>
            <attacher name="Ojan Vafai">ojan</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCBiMTFkMDdkLi5kMDc0NjAwIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9DaGFuZ2VM
b2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzcgQEAKKzIwMTAtMDQt
MDEgIE9qYW4gVmFmYWkgIDxvamFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbmNsdWRlIGdpdCBjb21taXRzIGluIHRoZSBk
aWZmIGZvciB3ZWJraXQtcGF0Y2ggdXBsb2FkL2xhbmQuCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNjM5NAorCisgICAgICAgIEFkZHMgLS1zcXVhc2gg
YW5kIC0tZ2l0LWNvbW1pdC4gLS1naXQtY29tbWl0IHdpbGwgdXNlIGEgc3BlY2lmaWMKKyAgICAg
ICAgbG9jYWwgY29tbWl0IGZvciBsYW5kL3VwbG9hZC4gLS1zcXVhc2ggd2lsbCBzcXVhc2ggYWxs
IGxvY2FsIGNoYW5nZXMKKyAgICAgICAgaW5jbHVkaW5nIHdvcmtpbmcgY29weSBjaGFuZ2VzIGlu
dG8gYSBzaW5nbGUgcGF0Y2guIElmIG5laXRoZXIgaXMKKyAgICAgICAgc3BlY2lmaWVkLCB0aGVu
IHRoZSB1c2VyIGlzIHByb21wdGVkIHdoZW5ldmVyIHRoZXJlIGlzIG1vcmUgdGhhbgorICAgICAg
ICBvbmUgY29tbWl0IGF2YWlsYWJsZSBvciB3aGVuIHRoZXJlIGFyZSBsb2NhbCBjb21taXQocykg
YW5kIHdvcmtpbmcKKyAgICAgICAgY29weSBjaGFuZ2VzLgorCisgICAgICAgIEFsc28sIGlmIHRo
ZSB3ZWJraXQtcGF0Y2guc3F1YXNoIGdpdCBjb25maWcgcGFyYW1ldGVyIGlzIHNldCwgdGhlbgor
ICAgICAgICB0aGF0IHdpbGwgYmUgcmVzcGVjdGVkIGluc3RlYWQgb2YgcHJvbXB0aW5nIHRoZSB1
c2VyLgorCisgICAgICAgICogU2NyaXB0cy9jaGVjay13ZWJraXQtc3R5bGU6CisgICAgICAgICog
U2NyaXB0cy9wcmVwYXJlLUNoYW5nZUxvZzoKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2Nv
bW1vbi9jaGVja291dC9zY20ucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24v
Y2hlY2tvdXQvc2NtX3VuaXR0ZXN0LnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29t
bW9uL25ldC9jcmVkZW50aWFscy5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1v
bi9uZXQvY3JlZGVudGlhbHNfdW5pdHRlc3QucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRw
eS9jb21tb24vc3lzdGVtL2V4ZWN1dGl2ZS5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5
L3N0eWxlL29wdHBhcnNlci5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3N0eWxlX3Jl
ZmVyZW5jZXMucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS90b29sL21haW4ucHk6Cisg
ICAgICAgICogU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL2Fic3RyYWN0c3RlcC5weToKKyAg
ICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvY2hlY2tzdHlsZS5weToKKyAgICAg
ICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvY29tbWl0LnB5OgorICAgICAgICAqIFNj
cmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9vcHRpb25zLnB5OgorICAgICAgICAqIFNjcmlwdHMv
d2Via2l0cHkvdG9vbC9zdGVwcy9wb3N0ZGlmZi5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtp
dHB5L3Rvb2wvc3RlcHMvcHJlcGFyZWNoYW5nZWxvZy5weToKKwogMjAxMC0wNC0wMSAgSWx5YSBU
aWtob25vdnNreSAgPGxvaXNsb0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkg
WXVyeSBTZW1pa2hhdHNreS4KZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvY2hlY2st
d2Via2l0LXN0eWxlIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy9jaGVjay13ZWJraXQtc3R5bGUKaW5k
ZXggNWQyOTY5NS4uYzkzZWQ5OCAxMDA3NTUKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy9jaGVj
ay13ZWJraXQtc3R5bGUKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy9jaGVjay13ZWJraXQtc3R5
bGUKQEAgLTQ5LDYgKzQ5LDcgQEAgaW1wb3J0IG9zLnBhdGgKIGltcG9ydCBzeXMKIAogZnJvbSB3
ZWJraXRweS5zdHlsZV9yZWZlcmVuY2VzIGltcG9ydCBkZXRlY3RfY2hlY2tvdXQKK2Zyb20gd2Vi
a2l0cHkuc3R5bGVfcmVmZXJlbmNlcyBpbXBvcnQgaW5fd29ya2luZ19kaXJlY3RvcnkKIGZyb20g
d2Via2l0cHkuc3R5bGUubWFpbiBpbXBvcnQgY2hhbmdlX2RpcmVjdG9yeQogaW1wb3J0IHdlYmtp
dHB5LnN0eWxlLmNoZWNrZXIgYXMgY2hlY2tlcgogCkBAIC04MywxOCArODQsMTggQEAgZGVmIG1h
aW4oKToKICAgICBjaGVja2VyLmNvbmZpZ3VyZV9sb2dnaW5nKHN0cmVhbT1zdGRlcnIsIGlzX3Zl
cmJvc2U9aXNfdmVyYm9zZSkKICAgICBfbG9nLmRlYnVnKCJWZXJib3NlIGxvZ2dpbmcgZW5hYmxl
ZC4iKQogCi0gICAgY2hlY2tvdXQgPSBkZXRlY3RfY2hlY2tvdXQoKQotCi0gICAgaWYgY2hlY2tv
dXQgaXMgTm9uZToKLSAgICAgICAgY2hlY2tvdXRfcm9vdCA9IE5vbmUKKyAgICBoYXNfY2hlY2tv
dXQgPSBpbl93b3JraW5nX2RpcmVjdG9yeQorICAgIGlmIG5vdCBoYXNfY2hlY2tvdXQ6CiAgICAg
ICAgIF9sb2cuZGVidWcoIldlYktpdCBjaGVja291dCBub3QgZm91bmQgZm9yIGN1cnJlbnQgZGly
ZWN0b3J5LiIpCi0gICAgZWxzZToKLSAgICAgICAgY2hlY2tvdXRfcm9vdCA9IGNoZWNrb3V0LnJv
b3RfcGF0aCgpCi0gICAgICAgIF9sb2cuZGVidWcoIldlYktpdCBjaGVja291dCBmb3VuZCB3aXRo
IHJvb3Q6ICVzIiAlIGNoZWNrb3V0X3Jvb3QpCiAKICAgICBwYXJzZXIgPSBjaGVja2VyLmNoZWNr
X3dlYmtpdF9zdHlsZV9wYXJzZXIoKQotICAgIGZvdW5kX2NoZWNrb3V0ID0gY2hlY2tvdXQgaXMg
bm90IE5vbmUKLSAgICAocGF0aHMsIG9wdGlvbnMpID0gcGFyc2VyLnBhcnNlKGFyZ3MsIGZvdW5k
X2NoZWNrb3V0PWZvdW5kX2NoZWNrb3V0KQorICAgIChwYXRocywgb3B0aW9ucykgPSBwYXJzZXIu
cGFyc2UoYXJncywgZm91bmRfY2hlY2tvdXQ9aGFzX2NoZWNrb3V0KQorCisgICAgY2hlY2tvdXQg
PSBkZXRlY3RfY2hlY2tvdXQob3B0aW9ucy5zcXVhc2gsIG9wdGlvbnMuZ2l0X2NvbW1pdCkKKwor
ICAgIGlmIGNoZWNrb3V0OgorICAgICAgICBjaGVja291dF9yb290ID0gY2hlY2tvdXQucm9vdF9w
YXRoKCkKKyAgICAgICAgX2xvZy5kZWJ1ZygiV2ViS2l0IGNoZWNrb3V0IGZvdW5kIHdpdGggcm9v
dDogJXMiICUgY2hlY2tvdXRfcm9vdCkKIAogICAgIGNvbmZpZ3VyYXRpb24gPSBjaGVja2VyLmNo
ZWNrX3dlYmtpdF9zdHlsZV9jb25maWd1cmF0aW9uKG9wdGlvbnMpCiAgICAgc3R5bGVfY2hlY2tl
ciA9IGNoZWNrZXIuU3R5bGVDaGVja2VyKGNvbmZpZ3VyYXRpb24pCmRpZmYgLS1naXQgYS9XZWJL
aXRUb29scy9TY3JpcHRzL3ByZXBhcmUtQ2hhbmdlTG9nIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy9w
cmVwYXJlLUNoYW5nZUxvZwppbmRleCA4NzBjNGI3Li5iMDg3ZjY3IDEwMDc1NQotLS0gYS9XZWJL
aXRUb29scy9TY3JpcHRzL3ByZXBhcmUtQ2hhbmdlTG9nCisrKyBiL1dlYktpdFRvb2xzL1Njcmlw
dHMvcHJlcGFyZS1DaGFuZ2VMb2cKQEAgLTEwMiw2ICsxMDIsNyBAQCBteSAkY2hhbmdlTG9nVGlt
ZVpvbmUgPSAiUFNUOFBEVCI7CiBteSAkYnVnTnVtYmVyOwogbXkgJG5hbWU7CiBteSAkZW1haWxB
ZGRyZXNzOworbXkgJG1lcmdlQmFzZSA9IDA7CiBteSAkZ2l0Q29tbWl0ID0gMDsKIG15ICRnaXRJ
bmRleCA9ICIiOwogbXkgJGdpdFJldmlld2VyID0gIiI7CkBAIC0xMTUsNiArMTE2LDcgQEAgbXkg
JHBhcnNlT3B0aW9uc1Jlc3VsdCA9CiAgICAgICAgICAgICAgICAiYnVnOmkiID0+IFwkYnVnTnVt
YmVyLAogICAgICAgICAgICAgICAgIm5hbWU6cyIgPT4gXCRuYW1lLAogICAgICAgICAgICAgICAg
ImVtYWlsOnMiID0+IFwkZW1haWxBZGRyZXNzLAorICAgICAgICAgICAgICAgIm1lcmdlLWJhc2U6
cyIgPT4gXCRtZXJnZUJhc2UsCiAgICAgICAgICAgICAgICAiZ2l0LWNvbW1pdDpzIiA9PiBcJGdp
dENvbW1pdCwKICAgICAgICAgICAgICAgICJnaXQtaW5kZXgiID0+IFwkZ2l0SW5kZXgsCiAgICAg
ICAgICAgICAgICAiZ2l0LXJldmlld2VyOnMiID0+IFwkZ2l0UmV2aWV3ZXIsCkBAIC0xMjYsNiAr
MTI4LDcgQEAgaWYgKCEkcGFyc2VPcHRpb25zUmVzdWx0IHx8ICRzaG93SGVscCkgewogICAgIHBy
aW50IFNUREVSUiBiYXNlbmFtZSgkMCkgLiAiIFstLWJ1Z10gWy1kfC0tZGlmZl0gWy1ofC0taGVs
cF0gWy1vfC0tb3Blbl0gWy0tZ2l0LWNvbW1pdD08Y29tbWl0dGlzaD5dIFstLWdpdC1yZXZpZXdl
cj08bmFtZT5dIFtzdm5kaXIxIFtzdm5kaXIyIC4uLl1dXG4iOwogICAgIHByaW50IFNUREVSUiAi
ICAtLWJ1ZyAgICAgICAgICBGaWxsIGluIHRoZSBDaGFuZ2VMb2cgYnVnIGluZm9ybWF0aW9uIGZy
b20gdGhlIGdpdmVuIGJ1Zy5cbiI7CiAgICAgcHJpbnQgU1RERVJSICIgIC1kfC0tZGlmZiAgICAg
IFNwZXcgZGlmZiB0byBzdGRvdXQgd2hlbiBydW5uaW5nXG4iOworICAgIHByaW50IFNUREVSUiAi
ICAtLW1lcmdlLWJhc2UgICBQb3B1bGF0ZSB0aGUgQ2hhbmdlTG9ncyB3aXRoIHRoZSBkaWZmIHRv
IHRoaXMgYnJhbmNoXG4iOwogICAgIHByaW50IFNUREVSUiAiICAtLWdpdC1jb21taXQgICBQb3B1
bGF0ZSB0aGUgQ2hhbmdlTG9ncyBmcm9tIHRoZSBzcGVjaWZpZWQgZ2l0IGNvbW1pdFxuIjsKICAg
ICBwcmludCBTVERFUlIgIiAgLS1naXQtaW5kZXggICAgUG9wdWxhdGUgdGhlIENoYW5nZUxvZ3Mg
ZnJvbSB0aGUgZ2l0IGluZGV4IG9ubHlcbiI7CiAgICAgcHJpbnQgU1RERVJSICIgIC0tZ2l0LXJl
dmlld2VyIFdoZW4gcG9wdWxhdGluZyB0aGUgQ2hhbmdlTG9ncyBmcm9tIGEgZ2l0IGNvbW1pdCBj
bGFpbSB0aGF0IHRoZSBzcGNpZmllZCBuYW1lIHJldmlld2VkIHRoZSBjaGFuZ2UuXG4iOwpAQCAt
MTI1NCw2ICsxMjU3LDcgQEAgc3ViIGRpZmZGcm9tVG9TdHJpbmcoKQogICAgIHJldHVybiAkZ2l0
Q29tbWl0IGlmICRnaXRDb21taXQgPX4gbS8uK1wuXC4uKy87CiAgICAgcmV0dXJuICJcIiRnaXRD
b21taXReXCIgXCIkZ2l0Q29tbWl0XCIiIGlmICRnaXRDb21taXQ7CiAgICAgcmV0dXJuICItLWNh
Y2hlZCIgaWYgJGdpdEluZGV4OworICAgIHJldHVybiAkbWVyZ2VCYXNlIGlmICRtZXJnZUJhc2U7
CiAgICAgcmV0dXJuICJIRUFEIiBpZiAkaXNHaXQ7CiB9CiAKQEAgLTEyNjgsNyArMTI3Miw3IEBA
IHN1YiBkaWZmQ29tbWFuZChAKQogICAgICAgICAkY29tbWFuZCA9ICIkU1ZOIGRpZmYgLS1kaWZm
LWNtZCBkaWZmIC14IC1OICRwYXRoc1N0cmluZyI7CiAgICAgfSBlbHNpZiAoJGlzR2l0KSB7CiAg
ICAgICAgICRjb21tYW5kID0gIiRHSVQgZGlmZiAtLW5vLWV4dC1kaWZmIC1VMCAiIC4gZGlmZkZy
b21Ub1N0cmluZygpOwotICAgICAgICAkY29tbWFuZCAuPSAiIC0tICRwYXRoc1N0cmluZyIgdW5s
ZXNzICRnaXRDb21taXQ7CisgICAgICAgICRjb21tYW5kIC49ICIgLS0gJHBhdGhzU3RyaW5nIiB1
bmxlc3MgJGdpdENvbW1pdCBvciAkbWVyZ2VCYXNlOwogICAgIH0KIAogICAgIHJldHVybiAkY29t
bWFuZDsKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2No
ZWNrb3V0L3NjbS5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNr
b3V0L3NjbS5weQppbmRleCA2ZTdhODllLi5hZTg1NTI5IDEwMDY0NAotLS0gYS9XZWJLaXRUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9zY20ucHkKKysrIGIvV2ViS2l0VG9v
bHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvc2NtLnB5CkBAIC0zNiwxNSArMzYs
MjEgQEAgZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmV4ZWN1dGl2ZSBpbXBvcnQgRXhlY3V0
aXZlLCBydW5fY29tbWFuZCwgU2NyaXB0RXJyb3IKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3Rl
bS51c2VyIGltcG9ydCBVc2VyCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZGVwcmVjYXRl
ZF9sb2dnaW5nIGltcG9ydCBlcnJvciwgbG9nCiAKLWRlZiBkZXRlY3Rfc2NtX3N5c3RlbShwYXRo
KToKKworZGVmIGRldGVjdF9zY21fc3lzdGVtKHBhdGgsIHNxdWFzaD1Ob25lLCBnaXRfY29tbWl0
PU5vbmUpOgogICAgIGlmIFNWTi5pbl93b3JraW5nX2RpcmVjdG9yeShwYXRoKToKICAgICAgICAg
cmV0dXJuIFNWTihjd2Q9cGF0aCkKICAgICAKICAgICBpZiBHaXQuaW5fd29ya2luZ19kaXJlY3Rv
cnkocGF0aCk6Ci0gICAgICAgIHJldHVybiBHaXQoY3dkPXBhdGgpCisgICAgICAgIHJldHVybiBH
aXQoY3dkPXBhdGgsIHNxdWFzaD1zcXVhc2gsIGdpdF9jb21taXQ9Z2l0X2NvbW1pdCkKICAgICAK
ICAgICByZXR1cm4gTm9uZQogCisKK2RlZiBpbl93b3JraW5nX2RpcmVjdG9yeShwYXRoKToKKyAg
ICByZXR1cm4gU1ZOLmluX3dvcmtpbmdfZGlyZWN0b3J5KHBhdGgpIG9yIEdpdC5pbl93b3JraW5n
X2RpcmVjdG9yeShwYXRoKQorCisKIGRlZiBmaXJzdF9ub25fZW1wdHlfbGluZV9hZnRlcl9pbmRl
eChsaW5lcywgaW5kZXg9MCk6CiAgICAgZmlyc3Rfbm9uX2VtcHR5X2xpbmUgPSBpbmRleAogICAg
IGZvciBsaW5lIGluIGxpbmVzW2luZGV4Ol06CkBAIC04OSwxMCArOTUsMTAgQEAgZGVmIGNvbW1p
dF9lcnJvcl9oYW5kbGVyKGVycm9yKToKIAogCiBjbGFzcyBTQ006Ci0gICAgZGVmIF9faW5pdF9f
KHNlbGYsIGN3ZCwgZHJ5cnVuPUZhbHNlKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgY3dkKToK
ICAgICAgICAgc2VsZi5jd2QgPSBjd2QKICAgICAgICAgc2VsZi5jaGVja291dF9yb290ID0gc2Vs
Zi5maW5kX2NoZWNrb3V0X3Jvb3Qoc2VsZi5jd2QpCi0gICAgICAgIHNlbGYuZHJ5cnVuID0gZHJ5
cnVuCisgICAgICAgIHNlbGYuZHJ5cnVuID0gRmFsc2UKIAogICAgIGRlZiBzY3JpcHRzX2RpcmVj
dG9yeShzZWxmKToKICAgICAgICAgcmV0dXJuIG9zLnBhdGguam9pbihzZWxmLmNoZWNrb3V0X3Jv
b3QsICJXZWJLaXRUb29scyIsICJTY3JpcHRzIikKQEAgLTIwNSw2ICsyMTEsMTIgQEAgY2xhc3Mg
U0NNOgogICAgIGRlZiBzdXBwb3J0c19sb2NhbF9jb21taXRzKCk6CiAgICAgICAgIHJhaXNlIE5v
dEltcGxlbWVudGVkRXJyb3IsICJzdWJjbGFzc2VzIG11c3QgaW1wbGVtZW50IgogCisgICAgZGVm
IHNob3VsZF9zcXVhc2goc2VsZik6CisgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3Is
ICJzdWJjbGFzc2VzIG11c3QgaW1wbGVtZW50IgorCisgICAgZGVmIHN2bl9tZXJnZV9iYXNlKCk6
CisgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IsICJzdWJjbGFzc2VzIG11c3QgaW1w
bGVtZW50IgorCiAgICAgZGVmIGNyZWF0ZV9wYXRjaF9mcm9tX2xvY2FsX2NvbW1pdChzZWxmLCBj
b21taXRfaWQpOgogICAgICAgICBlcnJvcigiWW91ciBzb3VyY2UgY29udHJvbCBtYW5hZ2VyIGRv
ZXMgbm90IHN1cHBvcnQgY3JlYXRpbmcgYSBwYXRjaCBmcm9tIGEgbG9jYWwgY29tbWl0LiIpCiAK
QEAgLTIyNiw4ICsyMzgsOCBAQCBjbGFzcyBTVk4oU0NNKToKICAgICBzdm5fc2VydmVyX2hvc3Qg
PSAic3ZuLndlYmtpdC5vcmciCiAgICAgc3ZuX3NlcnZlcl9yZWFsbSA9ICI8aHR0cDovL3N2bi53
ZWJraXQub3JnOjgwPiBNYWMgT1MgRm9yZ2UiCiAKLSAgICBkZWYgX19pbml0X18oc2VsZiwgY3dk
LCBkcnlydW49RmFsc2UpOgotICAgICAgICBTQ00uX19pbml0X18oc2VsZiwgY3dkLCBkcnlydW4p
CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGN3ZCk6CisgICAgICAgIFNDTS5fX2luaXRfXyhzZWxm
LCBjd2QpCiAgICAgICAgIHNlbGYuY2FjaGVkX3ZlcnNpb24gPSBOb25lCiAgICAgCiAgICAgQHN0
YXRpY21ldGhvZApAQCAtMzExLDYgKzMyMyw5IEBAIGNsYXNzIFNWTihTQ00pOgogICAgIGRlZiBz
dXBwb3J0c19sb2NhbF9jb21taXRzKCk6CiAgICAgICAgIHJldHVybiBGYWxzZQogCisgICAgZGVm
IHNob3VsZF9zcXVhc2goKToKKyAgICAgICAgcmV0dXJuIEZhbHNlCisKICAgICBkZWYgZGlzcGxh
eV9uYW1lKHNlbGYpOgogICAgICAgICByZXR1cm4gInN2biIKIApAQCAtMzQxLDYgKzM1Niw3IEBA
IGNsYXNzIFNWTihTQ00pOgogICAgICAgICBydW5fY29tbWFuZChbJ3N2bicsICdyZXZlcnQnXSAr
IGZpbGVfcGF0aHMpCiAKICAgICBkZWYgY29tbWl0X3dpdGhfbWVzc2FnZShzZWxmLCBtZXNzYWdl
LCB1c2VybmFtZT1Ob25lKToKKyAgICAgICAgIyBzcXVhc2ggYW5kIGdpdC1jb21taXQgYXJlIG5v
dCB1c2VkIGJ5IFNWTi4KICAgICAgICAgaWYgc2VsZi5kcnlydW46CiAgICAgICAgICAgICAjIFJl
dHVybiBhIHN0cmluZyB3aGljaCBsb29rcyBsaWtlIGEgY29tbWl0IHNvIHRoYXQgdGhpbmdzIHdo
aWNoIHBhcnNlIHRoaXMgb3V0cHV0IHdpbGwgc3VjY2VlZC4KICAgICAgICAgICAgIHJldHVybiAi
RHJ5IHJ1biwgbm8gY29tbWl0LlxuQ29tbWl0dGVkIHJldmlzaW9uIDAuIgpAQCAtMzY1LDggKzM4
MSwxMCBAQCBjbGFzcyBTVk4oU0NNKToKIAogIyBBbGwgZ2l0LXNwZWNpZmljIGxvZ2ljIHNob3Vs
ZCBnbyBoZXJlLgogY2xhc3MgR2l0KFNDTSk6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGN3ZCwg
ZHJ5cnVuPUZhbHNlKToKLSAgICAgICAgU0NNLl9faW5pdF9fKHNlbGYsIGN3ZCwgZHJ5cnVuKQor
ICAgIGRlZiBfX2luaXRfXyhzZWxmLCBjd2QsIHNxdWFzaCwgZ2l0X2NvbW1pdCk6CisgICAgICAg
IFNDTS5fX2luaXRfXyhzZWxmLCBjd2QpCisgICAgICAgIHNlbGYuX3NxdWFzaCA9IHNxdWFzaAor
ICAgICAgICBzZWxmLl9naXRfY29tbWl0ID0gZ2l0X2NvbW1pdAogCiAgICAgQGNsYXNzbWV0aG9k
CiAgICAgZGVmIGluX3dvcmtpbmdfZGlyZWN0b3J5KGNscywgcGF0aCk6CkBAIC0zODAsMTYgKzM5
OCwyMSBAQCBjbGFzcyBHaXQoU0NNKToKICAgICAgICAgaWYgbm90IG9zLnBhdGguaXNhYnMoY2hl
Y2tvdXRfcm9vdCk6ICMgU29tZXRpbWVzIGdpdCByZXR1cm5zIHJlbGF0aXZlIHBhdGhzCiAgICAg
ICAgICAgICBjaGVja291dF9yb290ID0gb3MucGF0aC5qb2luKHBhdGgsIGNoZWNrb3V0X3Jvb3Qp
CiAgICAgICAgIHJldHVybiBjaGVja291dF9yb290Ci0gICAgCisKKyAgICBAY2xhc3NtZXRob2QK
KyAgICBkZWYgcmVhZF9naXRfY29uZmlnKGNscywga2V5KToKKyAgICAgICAgcmV0dXJuIHJ1bl9j
b21tYW5kKFsiZ2l0IiwgImNvbmZpZyIsIGtleV0sCisgICAgICAgICAgICBlcnJvcl9oYW5kbGVy
PUV4ZWN1dGl2ZS5pZ25vcmVfZXJyb3IpLnJzdHJpcCgnXG4nKQorCiAgICAgQHN0YXRpY21ldGhv
ZAogICAgIGRlZiBjb21taXRfc3VjY2Vzc19yZWdleHAoKToKICAgICAgICAgcmV0dXJuICJeQ29t
bWl0dGVkIHIoP1A8c3ZuX3JldmlzaW9uPlxkKykkIgogCiAgICAgZGVmIGRpc2NhcmRfbG9jYWxf
Y29tbWl0cyhzZWxmKToKLSAgICAgICAgcnVuX2NvbW1hbmQoWydnaXQnLCAncmVzZXQnLCAnLS1o
YXJkJywgJ3RydW5rJ10pCisgICAgICAgIHJ1bl9jb21tYW5kKFsnZ2l0JywgJ3Jlc2V0JywgJy0t
aGFyZCcsIHNlbGYuc3ZuX2JyYW5jaF9uYW1lKCldKQogICAgIAogICAgIGRlZiBsb2NhbF9jb21t
aXRzKHNlbGYpOgotICAgICAgICByZXR1cm4gcnVuX2NvbW1hbmQoWydnaXQnLCAnbG9nJywgJy0t
cHJldHR5PW9uZWxpbmUnLCAnSEVBRC4uLnRydW5rJ10pLnNwbGl0bGluZXMoKQorICAgICAgICBy
ZXR1cm4gcnVuX2NvbW1hbmQoWydnaXQnLCAnbG9nJywgJy0tcHJldHR5PW9uZWxpbmUnLCAnSEVB
RC4uLicgKyBzZWxmLnN2bl9icmFuY2hfbmFtZSgpXSkuc3BsaXRsaW5lcygpCiAKICAgICBkZWYg
cmViYXNlX2luX3Byb2dyZXNzKHNlbGYpOgogICAgICAgICByZXR1cm4gb3MucGF0aC5leGlzdHMo
b3MucGF0aC5qb2luKHNlbGYuY2hlY2tvdXRfcm9vdCwgJy5naXQvcmViYXNlLWFwcGx5JykpCkBA
IC00MTEsMTYgKzQzNCwyOSBAQCBjbGFzcyBHaXQoU0NNKToKICAgICAgICAgcmV0dXJuICdeKD9Q
PHN0YXR1cz5bJXNdKVx0KD9QPGZpbGVuYW1lPi4rKSQnICUgZXhwZWN0ZWRfdHlwZXMKIAogICAg
IGRlZiBjaGFuZ2VkX2ZpbGVzKHNlbGYpOgotICAgICAgICBzdGF0dXNfY29tbWFuZCA9IFsnZ2l0
JywgJ2RpZmYnLCAnLXInLCAnLS1uYW1lLXN0YXR1cycsICctQycsICctTScsICdIRUFEJ10KKyAg
ICAgICAgaWYgc2VsZi5fZ2l0X2NvbW1pdDoKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9jaGFu
Z2VzX2ZpbGVzX2Zvcl9jb21taXQoc2VsZi5fZ2l0X2NvbW1pdCkKKyAgICAgICAgZWxpZiBzZWxm
LnNob3VsZF9zcXVhc2goKToKKyAgICAgICAgICAgIGJhc2UgPSBzZWxmLnN2bl9tZXJnZV9iYXNl
KCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgICMgRklYTUU6IE5vbi1zcXVhc2ggYmVoYXZp
b3Igc2hvdWxkIG1hdGNoIGNvbW1pdF93aXRoX21lc3NhZ2UuCisgICAgICAgICAgICAjIEl0IHNo
b3VsZCBwcm9tcHQgd2hldGhlciB0byBjb25zaWRlciB3b3JraW5nIGNvcHkgY2hhbmdlcyBhbmQg
dGhlbgorICAgICAgICAgICAgIyBwcm9jZWVkIHdpdGggZWFjaCBsb2NhbCBjb21taXQgYXMgYSBz
ZXBhcmF0ZSBwYXRjaC4KKyAgICAgICAgICAgIGJhc2UgPSAnSEVBRCcKKworICAgICAgICBzdGF0
dXNfY29tbWFuZCA9IFsnZ2l0JywgJ2RpZmYnLCAnLXInLCAnLS1uYW1lLXN0YXR1cycsICctQycs
ICctTScsIGJhc2VdCiAgICAgICAgIHJldHVybiBzZWxmLnJ1bl9zdGF0dXNfYW5kX2V4dHJhY3Rf
ZmlsZW5hbWVzKHN0YXR1c19jb21tYW5kLCBzZWxmLl9zdGF0dXNfcmVnZXhwKCJBRE0iKSkKIAot
ICAgIGRlZiBjaGFuZ2VkX2ZpbGVzX2Zvcl9yZXZpc2lvbihzZWxmLCByZXZpc2lvbik6Ci0gICAg
ICAgIGNvbW1pdF9pZCA9IHNlbGYuZ2l0X2NvbW1pdF9mcm9tX3N2bl9yZXZpc2lvbihyZXZpc2lv
bikKKyAgICBkZWYgX2NoYW5nZXNfZmlsZXNfZm9yX2NvbW1pdChzZWxmLCBnaXRfY29tbWl0KToK
ICAgICAgICAgIyAtLXByZXR0eT0iZm9ybWF0OiIgbWFrZXMgZ2l0IHNob3cgbm90IHByaW50IHRo
ZSBjb21taXQgbG9nIGhlYWRlciwKLSAgICAgICAgY2hhbmdlZF9maWxlcyA9IHJ1bl9jb21tYW5k
KFsiZ2l0IiwgInNob3ciLCAiLS1wcmV0dHk9Zm9ybWF0OiIsICItLW5hbWUtb25seSIsIGNvbW1p
dF9pZF0pLnNwbGl0bGluZXMoKQorICAgICAgICBjaGFuZ2VkX2ZpbGVzID0gcnVuX2NvbW1hbmQo
WyJnaXQiLCAic2hvdyIsICItLXByZXR0eT1mb3JtYXQ6IiwgIi0tbmFtZS1vbmx5IiwgZ2l0X2Nv
bW1pdF0pLnNwbGl0bGluZXMoKQogICAgICAgICAjIGluc3RlYWQgaXQganVzdCBwcmludHMgYSBi
bGFuayBsaW5lIGF0IHRoZSB0b3AsIHNvIHdlIHNraXAgdGhlIGJsYW5rIGxpbmU6CiAgICAgICAg
IHJldHVybiBjaGFuZ2VkX2ZpbGVzWzE6XQogCisgICAgZGVmIGNoYW5nZWRfZmlsZXNfZm9yX3Jl
dmlzaW9uKHNlbGYsIHJldmlzaW9uKToKKyAgICAgICAgY29tbWl0X2lkID0gc2VsZi5naXRfY29t
bWl0X2Zyb21fc3ZuX3JldmlzaW9uKHJldmlzaW9uKQorICAgICAgICByZXR1cm4gc2VsZi5fY2hh
bmdlc19maWxlc19mb3JfY29tbWl0KGNvbW1pdF9pZCkKKwogICAgIGRlZiBjb25mbGljdGVkX2Zp
bGVzKHNlbGYpOgogICAgICAgICBzdGF0dXNfY29tbWFuZCA9IFsnZ2l0JywgJ2RpZmYnLCAnLS1u
YW1lLXN0YXR1cycsICctQycsICctTScsICctLWRpZmYtZmlsdGVyPVUnXQogICAgICAgICByZXR1
cm4gc2VsZi5ydW5fc3RhdHVzX2FuZF9leHRyYWN0X2ZpbGVuYW1lcyhzdGF0dXNfY29tbWFuZCwg
c2VsZi5fc3RhdHVzX3JlZ2V4cCgiVSIpKQpAQCAtNDMzLDcgKzQ2OSwxOSBAQCBjbGFzcyBHaXQo
U0NNKToKICAgICAgICAgcmV0dXJuICJnaXQiCiAKICAgICBkZWYgY3JlYXRlX3BhdGNoKHNlbGYp
OgotICAgICAgICByZXR1cm4gcnVuX2NvbW1hbmQoWydnaXQnLCAnZGlmZicsICctLWJpbmFyeScs
ICdIRUFEJ10pCisgICAgICAgIGRpZmZfY29tbWFuZCA9IFsnZ2l0JywgJ2RpZmYnLCAnLS1iaW5h
cnknXQorICAgICAgICBpZiBzZWxmLl9naXRfY29tbWl0OgorICAgICAgICAgICAgZGlmZl9jb21t
YW5kLmFwcGVuZChzZWxmLl9naXRfY29tbWl0KQorICAgICAgICAgICAgZGlmZl9jb21tYW5kLmFw
cGVuZCgiJXNeIiAlIHNlbGYuX2dpdF9jb21taXQpCisgICAgICAgIGVsaWYgc2VsZi5zaG91bGRf
c3F1YXNoKCk6CisgICAgICAgICAgICBkaWZmX2NvbW1hbmQuYXBwZW5kKHNlbGYuc3ZuX21lcmdl
X2Jhc2UoKSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgICMgRklYTUU6IE5vbi1zcXVhc2gg
YmVoYXZpb3Igc2hvdWxkIG1hdGNoIGNvbW1pdF93aXRoX21lc3NhZ2UuCisgICAgICAgICAgICAj
IEl0IHNob3VsZCBwcm9tcHQgd2hldGhlciB0byBjb25zaWRlciB3b3JraW5nIGNvcHkgY2hhbmdl
cyBhbmQgdGhlbgorICAgICAgICAgICAgIyBwcm9jZWVkIHdpdGggZWFjaCBsb2NhbCBjb21taXQg
YXMgYSBzZXBhcmF0ZSBwYXRjaC4KKyAgICAgICAgICAgIGRpZmZfY29tbWFuZC5hcHBlbmQoJ0hF
QUQnKQorCisgICAgICAgIHJldHVybiBydW5fY29tbWFuZChkaWZmX2NvbW1hbmQpCiAKICAgICBA
Y2xhc3NtZXRob2QKICAgICBkZWYgZ2l0X2NvbW1pdF9mcm9tX3N2bl9yZXZpc2lvbihjbHMsIHJl
dmlzaW9uKToKQEAgLTQ2NSwxMSArNTEzLDk4IEBAIGNsYXNzIEdpdChTQ00pOgogICAgIGRlZiBy
ZXZlcnRfZmlsZXMoc2VsZiwgZmlsZV9wYXRocyk6CiAgICAgICAgIHJ1bl9jb21tYW5kKFsnZ2l0
JywgJ2NoZWNrb3V0JywgJ0hFQUQnXSArIGZpbGVfcGF0aHMpCiAKKyAgICBkZWYgc2hvdWxkX3Nx
dWFzaChzZWxmKToKKyAgICAgICAgIyBJZiBzcXVhc2ggaXMgc3BlY2lmaWVkIG9uIHRoZSBjb21t
YW5kLWxpbmUsIHRoZW4gb2JleSB0aGF0LgorICAgICAgICBpZiBzZWxmLl9zcXVhc2ggaXMgbm90
IE5vbmU6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5fc3F1YXNoCisKKyAgICAgICAgY29uZmln
X3NxdWFzaCA9IEdpdC5yZWFkX2dpdF9jb25maWcoJ3dlYmtpdC1wYXRjaC5zcXVhc2gnKQorICAg
ICAgICBpZiAoY29uZmlnX3NxdWFzaCBhbmQgY29uZmlnX3NxdWFzaCBpcyBub3QgIiIpOgorICAg
ICAgICAgICAgcmV0dXJuIGNvbmZpZ19zcXVhc2gubG93ZXIoKSA9PSAidHJ1ZSIKKworICAgICAg
ICAjIE9ubHkgcHJvbXB0IGlmIHRoZXJlIGFyZSBhY3R1YWxseSBtdWx0aXBsZSBjb21taXRzIHRv
IHNxdWFzaC4KKyAgICAgICAgbnVtX2xvY2FsX2NvbW1pdHMgPSBsZW4oc2VsZi5sb2NhbF9jb21t
aXRzKCkpCisgICAgICAgIGlmIG51bV9sb2NhbF9jb21taXRzID4gMSBvciBudW1fbG9jYWxfY29t
bWl0cyA+IDAgYW5kIG5vdCBzZWxmLndvcmtpbmdfZGlyZWN0b3J5X2lzX2NsZWFuKCk6CisgICAg
ICAgICAgICB3b3JraW5nX2RpcmVjdG9yeV9tZXNzYWdlID0gIiIgaWYgc2VsZi53b3JraW5nX2Rp
cmVjdG9yeV9pc19jbGVhbigpIGVsc2UgIiBhbmQgd29ya2luZyBjb3B5IGNoYW5nZXMiCisgICAg
ICAgICAgICAjIEZJWE1FOiBwYXJhbWV0ZXJpemUgcHJvbXB0IHNvIHRoaXMgY2FuIGJlIHRlc3Rl
ZC4KKyAgICAgICAgICAgIHJlc3BvbnNlID0gVXNlci5wcm9tcHQoIlRoZXJlIGFyZSAlcyBsb2Nh
bCBjb21taXRzJXMuIFNxdWFzaCBpbnRvIGEgc2luZ2xlIGNvbW1pdD8gW1kvbl06ICIgJSAoCisg
ICAgICAgICAgICAgICAgbnVtX2xvY2FsX2NvbW1pdHMsIHdvcmtpbmdfZGlyZWN0b3J5X21lc3Nh
Z2UpKQorICAgICAgICAgICAgIyBNb2RpZml5IHNlbGYub3B0aW9ucyBzbyB3ZSBkb24ndCBwcm9t
cHQgbXVsaXRpcGxlIHRpbWVzLgorICAgICAgICAgICAgc2VsZi5fc3F1YXNoID0gcmVzcG9uc2Ug
PT0gIlkiCisgICAgICAgICAgICByZXR1cm4gc2VsZi5fc3F1YXNoCisKKyAgICAgICAgcmV0dXJu
IEZhbHNlCisKICAgICBkZWYgY29tbWl0X3dpdGhfbWVzc2FnZShzZWxmLCBtZXNzYWdlLCB1c2Vy
bmFtZT1Ob25lKToKICAgICAgICAgIyBVc2VybmFtZSBpcyBpZ25vcmVkIGR1cmluZyBHaXQgY29t
bWl0cy4KLSAgICAgICAgc2VsZi5jb21taXRfbG9jYWxseV93aXRoX21lc3NhZ2UobWVzc2FnZSkK
KworICAgICAgICBpZiBzZWxmLl9naXRfY29tbWl0OgorICAgICAgICAgICAgIyBOZWVkIHdvcmtp
bmcgZGlyZWN0b3J5IGNoYW5nZXMgdG8gYmUgY29tbWl0dGVkIHNvIHdlIGNhbiBjaGVja291dCB0
aGUgbWVyZ2UgYnJhbmNoLgorICAgICAgICAgICAgaWYgbm90IHNlbGYud29ya2luZ19kaXJlY3Rv
cnlfaXNfY2xlYW4oKToKKyAgICAgICAgICAgICAgICBsb2coIldvcmtpbmcgY29weSBpcyBtb2Rp
ZmllZC4gQ2Fubm90IGNvbW1pdCBpbmRpdmlkdWFsIGdpdF9jb21taXRzLiIpCisgICAgICAgICAg
ICByZXR1cm4gc2VsZi5fY29tbWl0X29uX2JyYW5jaChtZXNzYWdlLCBzZWxmLl9naXRfY29tbWl0
KQorCisgICAgICAgIGlmIHNlbGYuc2hvdWxkX3NxdWFzaCgpOgorICAgICAgICAgICAgIyBOZWVk
IHdvcmtpbmcgZGlyZWN0b3J5IGNoYW5nZXMgdG8gYmUgY29tbWl0dGVkIHNvIHdlIGNhbiBjaGVj
a291dCB0aGUgbWVyZ2UgYnJhbmNoLgorICAgICAgICAgICAgaWYgbm90IHNlbGYud29ya2luZ19k
aXJlY3RvcnlfaXNfY2xlYW4oKToKKyAgICAgICAgICAgICAgICBzZWxmLmNvbW1pdF9sb2NhbGx5
X3dpdGhfbWVzc2FnZShtZXNzYWdlKQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2NvbW1pdF9v
bl9icmFuY2gobWVzc2FnZSkKKworICAgICAgICAjIEZJWE1FOiBUaGlzIHdpbGwgY29tbWl0IGFs
bCBsb2NhbCBjb21taXRzLCBlYWNoIHdpdGggaXQncyBvd24gbWVzc2FnZS4KKyAgICAgICAgIyBX
ZSBzaG91bGQgcmVzdHJ1Y3R1cmUgc28gdGhhdCBlYWNoIGNvbW1pdCBoYXMgdGhlIGFwcHJvcHJp
YXRlIGNvbW1pdAorICAgICAgICAjIG1lc3NhZ2UgYmFzZWQgb2ZmIGl0J3MgQ2hhbmdlTG9ncy4K
KyAgICAgICAgaWYgbm90IHNlbGYud29ya2luZ19kaXJlY3RvcnlfaXNfY2xlYW4oKToKKyAgICAg
ICAgICAgICMgRklYTUU6IHBhcmFtZXRlcml6ZSBwcm9tcHQgc28gdGhpcyBjYW4gYmUgdGVzdGVk
LgorICAgICAgICAgICAgcmVzcG9uc2UgPSBVc2VyLnByb21wdCgiVGhlcmUgYXJlIHdvcmtpbmcg
Y29weSBjaGFuZ2VzLiBDb21taXQgdGhlbT8gW1kvbl06ICIpCisgICAgICAgICAgICBpZiAocmVz
cG9uc2UgPT0gIlkiKToKKyAgICAgICAgICAgICAgICBzZWxmLmNvbW1pdF9sb2NhbGx5X3dpdGhf
bWVzc2FnZShtZXNzYWdlKQorCiAgICAgICAgIHJldHVybiBzZWxmLnB1c2hfbG9jYWxfY29tbWl0
c190b19zZXJ2ZXIoKQogCisgICAgZGVmIF9jb21taXRfb25fYnJhbmNoKHNlbGYsIG1lc3NhZ2Us
IGdpdF9jb21taXQ9Tm9uZSk6CisgICAgICAgIGJyYW5jaF9yZWYgPSBydW5fY29tbWFuZChbJ2dp
dCcsICdzeW1ib2xpYy1yZWYnLCAnSEVBRCddKS5zdHJpcCgpCisgICAgICAgIGJyYW5jaF9uYW1l
ID0gYnJhbmNoX3JlZi5yZXBsYWNlKCdyZWZzL2hlYWRzLycsICcnKQorCisgICAgICAgICMgV2Ug
d2FudCB0byBzcXVhc2ggYWxsIHRoaXMgYnJhbmNoJ3MgY29tbWl0cyBpbnRvIG9uZSBjb21taXQg
d2l0aCB0aGUgcHJvcGVyIGRlc2NyaXB0aW9uLgorICAgICAgICAjIFdlIGRvIHRoaXMgYnkgZG9p
bmcgYSAibWVyZ2UgLS1zcXVhc2giIGludG8gYSBuZXcgY29tbWl0IGJyYW5jaCwgdGhlbiBkY29t
bWl0dGluZyB0aGF0LgorICAgICAgICBNRVJHRV9CUkFOQ0ggPSAnd2Via2l0LXBhdGNoLWxhbmQn
CisgICAgICAgIHNlbGYuZGVsZXRlX2JyYW5jaChNRVJHRV9CUkFOQ0gpCisKKyAgICAgICAgIyBX
ZSBtaWdodCBiZSBpbiBhIGRpcmVjdG9yeSB0aGF0J3MgcHJlc2VudCBpbiB0aGlzIGJyYW5jaCBi
dXQgbm90IGluIHRoZQorICAgICAgICAjIHRydW5rLiAgTW92ZSB1cCB0byB0aGUgdG9wIG9mIHRo
ZSB0cmVlIHNvIHRoYXQgZ2l0IGNvbW1hbmRzIHRoYXQgZXhwZWN0IGEKKyAgICAgICAgIyB2YWxp
ZCBDV0Qgd29uJ3QgZmFpbCBhZnRlciB3ZSBjaGVjayBvdXQgdGhlIG1lcmdlIGJyYW5jaC4KKyAg
ICAgICAgb3MuY2hkaXIoc2VsZi5jaGVja291dF9yb290KQorCisgICAgICAgICMgU3R1ZmYgb3Vy
IGNoYW5nZSBpbnRvIHRoZSBtZXJnZSBicmFuY2guCisgICAgICAgICMgV2Ugd3JhcCBpbiBhIHRy
eS4uLmZpbmFsbHkgYmxvY2sgc28gaWYgYW55dGhpbmcgZ29lcyB3cm9uZywgd2UgY2xlYW4gdXAg
dGhlIGJyYW5jaGVzLgorICAgICAgICBjb21taXRfc3VjY2VlZGVkID0gVHJ1ZQorICAgICAgICB0
cnk6CisgICAgICAgICAgICBydW5fY29tbWFuZChbJ2dpdCcsICdjaGVja291dCcsICctcScsICct
YicsIE1FUkdFX0JSQU5DSCwgc2VsZi5zdm5fYnJhbmNoX25hbWUoKV0pCisKKyAgICAgICAgICAg
IGlmIGdpdF9jb21taXQ6CisgICAgICAgICAgICAgICAgIyBXZSdyZSBvbiBhIGRpZmZlcmVudCBi
cmFuY2ggbm93LCBzbyBjb252ZXJ0ICJoZWFkIiB0byB0aGUgYnJhbmNoIG5hbWUuCisgICAgICAg
ICAgICAgICAgZ2l0X2NvbW1pdCA9IHJlLnN1YihyJyg/aSloZWFkJywgYnJhbmNoX25hbWUsIGdp
dF9jb21taXQpCisgICAgICAgICAgICAgICAgcnVuX2NvbW1hbmQoWydnaXQnLCAnY2hlcnJ5LXBp
Y2snLCAnLS1uby1jb21taXQnLCBnaXRfY29tbWl0XSkKKyAgICAgICAgICAgIGVsc2U6CisgICAg
ICAgICAgICAgICAgcnVuX2NvbW1hbmQoWydnaXQnLCAnbWVyZ2UnLCAnLS1zcXVhc2gnLCBicmFu
Y2hfcmVmXSkKKworICAgICAgICAgICAgcnVuX2NvbW1hbmQoWydnaXQnLCAnY29tbWl0JywgJy1t
JywgbWVzc2FnZV0pCisgICAgICAgICAgICBvdXRwdXQgPSBzZWxmLnB1c2hfbG9jYWxfY29tbWl0
c190b19zZXJ2ZXIoKQorICAgICAgICBleGNlcHQgRXhjZXB0aW9uLCBlOgorICAgICAgICAgICAg
bG9nKCJDT01NSVQgRkFJTEVEOiAiICsgc3RyKGUpKQorICAgICAgICAgICAgb3V0cHV0ID0gIkNv
bW1pdCBmYWlsZWQuIgorICAgICAgICAgICAgY29tbWl0X3N1Y2NlZWRlZCA9IEZhbHNlCisgICAg
ICAgIGZpbmFsbHk6CisgICAgICAgICAgICAjIEFuZCB0aGVuIHN3YXAgYmFjayB0byB0aGUgb3Jp
Z2luYWwgYnJhbmNoIGFuZCBjbGVhbiB1cC4KKyAgICAgICAgICAgIHNlbGYuY2xlYW5fd29ya2lu
Z19kaXJlY3RvcnkoKQorICAgICAgICAgICAgcnVuX2NvbW1hbmQoWydnaXQnLCAnY2hlY2tvdXQn
LCAnLXEnLCBicmFuY2hfbmFtZV0pCisgICAgICAgICAgICBzZWxmLmRlbGV0ZV9icmFuY2goTUVS
R0VfQlJBTkNIKQorICAgICAgICAgICAgIyBJZiB0aGUgY29tbWl0IHN1Y2NlZWRlZCBhbmQgd2Ug
c3F1YXNoZWQsIG1ha2UgdGhlIGJyYW5jaCBtYXRjaCB0aGUgc3ZuIHJlcG8uCisgICAgICAgICAg
ICBpZiBjb21taXRfc3VjY2VlZGVkIGFuZCBub3QgZ2l0X2NvbW1pdCBhbmQgbm90IHNlbGYuZHJ5
cnVuOgorICAgICAgICAgICAgICAgIHJ1bl9jb21tYW5kKFsnZ2l0JywgJ3Jlc2V0JywgJy0taGFy
ZCcsIHNlbGYuc3ZuX2JyYW5jaF9uYW1lKCldKQorCisgICAgICAgIHJldHVybiBvdXRwdXQKKwog
ICAgIGRlZiBzdm5fY29tbWl0X2xvZyhzZWxmLCBzdm5fcmV2aXNpb24pOgogICAgICAgICBzdm5f
cmV2aXNpb24gPSBzZWxmLnN0cmlwX3JfZnJvbV9zdm5fcmV2aXNpb24oc3ZuX3JldmlzaW9uKQog
ICAgICAgICByZXR1cm4gcnVuX2NvbW1hbmQoWydnaXQnLCAnc3ZuJywgJ2xvZycsICctcicsIHN2
bl9yZXZpc2lvbl0pCkBAIC00NzksNiArNjE0LDE2IEBAIGNsYXNzIEdpdChTQ00pOgogCiAgICAg
IyBHaXQtc3BlY2lmaWMgbWV0aG9kczoKIAorICAgIGRlZiBkZWxldGVfYnJhbmNoKHNlbGYsIGJy
YW5jaCk6CisgICAgICAgIGlmIHJ1bl9jb21tYW5kKFsnZ2l0JywgJ3Nob3ctcmVmJywgJy0tcXVp
ZXQnLCAnLS12ZXJpZnknLCAncmVmcy9oZWFkcy8nICsgYnJhbmNoXSwgcmV0dXJuX2V4aXRfY29k
ZT1UcnVlKSA9PSAwOgorICAgICAgICAgICAgcnVuX2NvbW1hbmQoWydnaXQnLCAnYnJhbmNoJywg
Jy1EJywgYnJhbmNoXSkKKworICAgIGRlZiBzdm5fbWVyZ2VfYmFzZShzZWxmKToKKyAgICAgICAg
cmV0dXJuIHJ1bl9jb21tYW5kKFsnZ2l0JywgJ21lcmdlLWJhc2UnLCBzZWxmLnN2bl9icmFuY2hf
bmFtZSgpLCAnSEVBRCddKS5zdHJpcCgpCisKKyAgICBkZWYgc3ZuX2JyYW5jaF9uYW1lKHNlbGYp
OgorICAgICAgICByZXR1cm4gR2l0LnJlYWRfZ2l0X2NvbmZpZygnc3ZuLXJlbW90ZS5zdm4uZmV0
Y2gnKS5zcGxpdCgnOicpWzFdCisKICAgICBkZWYgY3JlYXRlX3BhdGNoX2Zyb21fbG9jYWxfY29t
bWl0KHNlbGYsIGNvbW1pdF9pZCk6CiAgICAgICAgIHJldHVybiBydW5fY29tbWFuZChbJ2dpdCcs
ICdkaWZmJywgJy0tYmluYXJ5JywgY29tbWl0X2lkICsgIl4uLiIgKyBjb21taXRfaWRdKQogCkBA
IC00ODcsMTIgKzYzMiwxNiBAQCBjbGFzcyBHaXQoU0NNKToKIAogICAgIGRlZiBjb21taXRfbG9j
YWxseV93aXRoX21lc3NhZ2Uoc2VsZiwgbWVzc2FnZSk6CiAgICAgICAgIHJ1bl9jb21tYW5kKFsn
Z2l0JywgJ2NvbW1pdCcsICctLWFsbCcsICctRicsICctJ10sIGlucHV0PW1lc3NhZ2UpCi0gICAg
ICAgIAorCiAgICAgZGVmIHB1c2hfbG9jYWxfY29tbWl0c190b19zZXJ2ZXIoc2VsZik6CisgICAg
ICAgIGRjb21taXRfY29tbWFuZCA9IFsnZ2l0JywgJ3N2bicsICdkY29tbWl0J10KICAgICAgICAg
aWYgc2VsZi5kcnlydW46Ci0gICAgICAgICAgICAjIFJldHVybiBhIHN0cmluZyB3aGljaCBsb29r
cyBsaWtlIGEgY29tbWl0IHNvIHRoYXQgdGhpbmdzIHdoaWNoIHBhcnNlIHRoaXMgb3V0cHV0IHdp
bGwgc3VjY2VlZC4KLSAgICAgICAgICAgIHJldHVybiAiRHJ5IHJ1biwgbm8gcmVtb3RlIGNvbW1p
dC5cbkNvbW1pdHRlZCByMCIKLSAgICAgICAgcmV0dXJuIHJ1bl9jb21tYW5kKFsnZ2l0JywgJ3N2
bicsICdkY29tbWl0J10sIGVycm9yX2hhbmRsZXI9Y29tbWl0X2Vycm9yX2hhbmRsZXIpCisgICAg
ICAgICAgICBkY29tbWl0X2NvbW1hbmQuYXBwZW5kKCctLWRyeS1ydW4nKQorICAgICAgICBvdXRw
dXQgPSBydW5fY29tbWFuZChkY29tbWl0X2NvbW1hbmQsIGVycm9yX2hhbmRsZXI9Y29tbWl0X2Vy
cm9yX2hhbmRsZXIpCisgICAgICAgICMgUmV0dXJuIGEgc3RyaW5nIHdoaWNoIGxvb2tzIGxpa2Ug
YSBjb21taXQgc28gdGhhdCB0aGluZ3Mgd2hpY2ggcGFyc2UgdGhpcyBvdXRwdXQgd2lsbCBzdWNj
ZWVkLgorICAgICAgICBpZiBzZWxmLmRyeXJ1bjoKKyAgICAgICAgICAgIG91dHB1dCArPSAiXG5D
b21taXR0ZWQgcjAiCisgICAgICAgIHJldHVybiBvdXRwdXQKIAogICAgICMgVGhpcyBmdW5jdGlv
biBzdXBwb3J0cyB0aGUgZm9sbG93aW5nIGFyZ3VtZW50IGZvcm1hdHM6CiAgICAgIyBubyBhcmdz
IDogcmV2LWxpc3QgdHJ1bmsuLkhFQUQKQEAgLTUwMSw4ICs2NTAsNyBAQCBjbGFzcyBHaXQoU0NN
KToKICAgICAjIEEgQiAgICAgOiBbQSwgQl0gIChkaWZmZXJlbnQgZnJvbSBnaXQgZGlmZiwgd2hp
Y2ggd291bGQgdXNlICJyZXYtbGlzdCBBLi5CIikKICAgICBkZWYgY29tbWl0X2lkc19mcm9tX2Nv
bW1pdGlzaF9hcmd1bWVudHMoc2VsZiwgYXJncyk6CiAgICAgICAgIGlmIG5vdCBsZW4oYXJncyk6
Ci0gICAgICAgICAgICAjIEZJWE1FOiB0cnVuayBpcyBub3QgYWx3YXlzIHRoZSByZW1vdGUgYnJh
bmNoIG5hbWUsIG5lZWQgYSB3YXkgdG8gZGV0ZWN0IHRoZSBuYW1lLgotICAgICAgICAgICAgYXJn
cy5hcHBlbmQoJ3RydW5rLi5IRUFEJykKKyAgICAgICAgICAgIGFyZ3MuYXBwZW5kKCclcy4uSEVB
RCcgJSBzZWxmLnN2bl9icmFuY2hfbmFtZSgpKQogCiAgICAgICAgIGNvbW1pdF9pZHMgPSBbXQog
ICAgICAgICBmb3IgY29tbWl0aXNoIGluIGFyZ3M6CmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9T
Y3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9zY21fdW5pdHRlc3QucHkgYi9XZWJLaXRU
b29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9zY21fdW5pdHRlc3QucHkKaW5k
ZXggNTg2MTYzNS4uMGY1NGNmNSAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9jb21tb24vY2hlY2tvdXQvc2NtX3VuaXR0ZXN0LnB5CisrKyBiL1dlYktpdFRvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L3NjbV91bml0dGVzdC5weQpAQCAtMTkzLDE1
ICsxOTMsNiBAQCBjbGFzcyBTQ01UZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKIAogICAgICMgVGVz
dHMgd2hpY2ggYm90aCBHaXRUZXN0IGFuZCBTVk5UZXN0IHNob3VsZCBydW4uCiAgICAgIyBGSVhN
RTogVGhlcmUgbXVzdCBiZSBhIHNpbXBsZXIgd2F5IHRvIGFkZCB0aGVzZSB3L28gYWRkaW5nIGEg
d3JhcHBlciBtZXRob2QgdG8gYm90aCBzdWJjbGFzc2VzCi0gICAgZGVmIF9zaGFyZWRfdGVzdF9j
b21taXRfd2l0aF9tZXNzYWdlKHNlbGYsIHVzZXJuYW1lPSJkYmF0ZXNAd2Via2l0Lm9yZyIpOgot
ICAgICAgICB3cml0ZV9pbnRvX2ZpbGVfYXRfcGF0aCgndGVzdF9maWxlJywgJ21vcmUgdGVzdCBj
b250ZW50JykKLSAgICAgICAgY29tbWl0X3RleHQgPSBzZWxmLnNjbS5jb21taXRfd2l0aF9tZXNz
YWdlKCJhbm90aGVyIHRlc3QgY29tbWl0IiwgdXNlcm5hbWUpCi0gICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoc2VsZi5zY20uc3ZuX3JldmlzaW9uX2Zyb21fY29tbWl0X3RleHQoY29tbWl0X3RleHQp
LCAnNScpCi0KLSAgICAgICAgc2VsZi5zY20uZHJ5cnVuID0gVHJ1ZQotICAgICAgICB3cml0ZV9p
bnRvX2ZpbGVfYXRfcGF0aCgndGVzdF9maWxlJywgJ3N0aWxsIG1vcmUgdGVzdCBjb250ZW50JykK
LSAgICAgICAgY29tbWl0X3RleHQgPSBzZWxmLnNjbS5jb21taXRfd2l0aF9tZXNzYWdlKCJ5ZXQg
YW5vdGhlciB0ZXN0IGNvbW1pdCIsIHVzZXJuYW1lKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KHNlbGYuc2NtLnN2bl9yZXZpc2lvbl9mcm9tX2NvbW1pdF90ZXh0KGNvbW1pdF90ZXh0KSwgJzAn
KQogCiAgICAgZGVmIF9zaGFyZWRfdGVzdF9jaGFuZ2VkX2ZpbGVzX2Zvcl9yZXZpc2lvbihzZWxm
KToKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnNjbS5jaGFuZ2VkX2ZpbGVzX2Zvcl9y
ZXZpc2lvbigyKSwgWyJ0ZXN0X2ZpbGUiXSkKQEAgLTQ5MSw2ICs0ODIsMTYgQEAgUTFkVEJ4MEFB
QUI0Mml0ZzRHbGdZSmpHd01ERHlPRE14TUR3MzRHQmdRRUFKUFFESkE9PQogICAgICAgICBzZWxm
LmFzc2VydFRydWUocmUuc2VhcmNoKCdmb3VydGggY29tbWl0Jywgc2VsZi5zY20ubGFzdF9zdm5f
Y29tbWl0X2xvZygpKSkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLnNlYXJjaCgnc2Vjb25k
IGNvbW1pdCcsIHNlbGYuc2NtLnN2bl9jb21taXRfbG9nKDIpKSkKIAorICAgIGRlZiBfc2hhcmVk
X3Rlc3RfY29tbWl0X3dpdGhfbWVzc2FnZShzZWxmLCB1c2VybmFtZT1Ob25lKToKKyAgICAgICAg
d3JpdGVfaW50b19maWxlX2F0X3BhdGgoJ3Rlc3RfZmlsZScsICdtb3JlIHRlc3QgY29udGVudCcp
CisgICAgICAgIGNvbW1pdF90ZXh0ID0gc2VsZi5zY20uY29tbWl0X3dpdGhfbWVzc2FnZSgiYW5v
dGhlciB0ZXN0IGNvbW1pdCIsIHVzZXJuYW1lKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNl
bGYuc2NtLnN2bl9yZXZpc2lvbl9mcm9tX2NvbW1pdF90ZXh0KGNvbW1pdF90ZXh0KSwgJzUnKQor
CisgICAgICAgIHNlbGYuc2NtLmRyeXJ1biA9IFRydWUKKyAgICAgICAgd3JpdGVfaW50b19maWxl
X2F0X3BhdGgoJ3Rlc3RfZmlsZScsICdzdGlsbCBtb3JlIHRlc3QgY29udGVudCcpCisgICAgICAg
IGNvbW1pdF90ZXh0ID0gc2VsZi5zY20uY29tbWl0X3dpdGhfbWVzc2FnZSgieWV0IGFub3RoZXIg
dGVzdCBjb21taXQiLCB1c2VybmFtZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnNj
bS5zdm5fcmV2aXNpb25fZnJvbV9jb21taXRfdGV4dChjb21taXRfdGV4dCksICcwJykKKwogICAg
IGRlZiB0ZXN0X2NvbW1pdF90ZXh0X3BhcnNpbmcoc2VsZik6CiAgICAgICAgIHNlbGYuX3NoYXJl
ZF90ZXN0X2NvbW1pdF93aXRoX21lc3NhZ2UoKQogCkBAIC01MzYsNyArNTM3LDYgQEAgUTFkVEJ4
MEFBQUI0Mml0ZzRHbGdZSmpHd01ERHlPRE14TUR3MzRHQmdRRUFKUFFESkE9PQogICAgIGRlZiB0
ZXN0X2NvbW1pdHRlcl9lbWFpbF9mb3JfcmV2aXNpb24oc2VsZik6CiAgICAgICAgIHNlbGYuX3No
YXJlZF90ZXN0X2NvbW1pdHRlcl9lbWFpbF9mb3JfcmV2aXNpb24oKQogCi0KIGNsYXNzIEdpdFRl
c3QoU0NNVGVzdCk6CiAKICAgICBkZWYgX3NldHVwX2dpdF9jbG9uZV9vZl9zdm5fcmVwb3NpdG9y
eShzZWxmKToKQEAgLTYyMCw3ICs2MjAsNzcgQEAgY2xhc3MgR2l0VGVzdChTQ01UZXN0KToKICAg
ICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoU2NyaXB0RXJyb3IsIENoZWNrb3V0KHNjbSkuYXBwbHlf
cGF0Y2gsIHBhdGNoLCBmb3JjZT1UcnVlKQogCiAgICAgZGVmIHRlc3RfY29tbWl0X3RleHRfcGFy
c2luZyhzZWxmKToKLSAgICAgICAgc2VsZi5fc2hhcmVkX3Rlc3RfY29tbWl0X3dpdGhfbWVzc2Fn
ZSgpCisgICAgICAgIHdyaXRlX2ludG9fZmlsZV9hdF9wYXRoKCd0ZXN0X2ZpbGUnLCAnbW9yZSB0
ZXN0IGNvbnRlbnQnKQorICAgICAgICBzZWxmLnNjbS5jb21taXRfbG9jYWxseV93aXRoX21lc3Nh
Z2UoImFub3RoZXIgdGVzdCBjb21taXQiKQorICAgICAgICBjb21taXRfdGV4dCA9IHNlbGYuc2Nt
LmNvbW1pdF93aXRoX21lc3NhZ2UoImFub3RoZXIgdGVzdCBjb21taXQiKQorICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKHNlbGYuc2NtLnN2bl9yZXZpc2lvbl9mcm9tX2NvbW1pdF90ZXh0KGNvbW1p
dF90ZXh0KSwgJzUnKQorCisgICAgICAgIHNlbGYuc2NtLmRyeXJ1biA9IFRydWUKKyAgICAgICAg
d3JpdGVfaW50b19maWxlX2F0X3BhdGgoJ3Rlc3RfZmlsZScsICdzdGlsbCBtb3JlIHRlc3QgY29u
dGVudCcpCisgICAgICAgIHNlbGYuc2NtLmNvbW1pdF9sb2NhbGx5X3dpdGhfbWVzc2FnZSgieWV0
IGFub3RoZXIgdGVzdCBjb21taXQiKQorICAgICAgICBjb21taXRfdGV4dCA9IHNlbGYuc2NtLmNv
bW1pdF93aXRoX21lc3NhZ2UoInlldCBhbm90aGVyIHRlc3QgY29tbWl0IikKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChzZWxmLnNjbS5zdm5fcmV2aXNpb25fZnJvbV9jb21taXRfdGV4dChjb21t
aXRfdGV4dCksICcwJykKKworICAgIGRlZiBfb25lX2xvY2FsX2NvbW1pdF9wbHVzX3dvcmtpbmdf
Y29weV9jaGFuZ2VzKHNlbGYpOgorICAgICAgICB3cml0ZV9pbnRvX2ZpbGVfYXRfcGF0aCgndGVz
dF9maWxlX2NvbW1pdDEnLCAnbW9yZSB0ZXN0IGNvbnRlbnQnKQorICAgICAgICBydW5fY29tbWFu
ZChbJ2dpdCcsICdhZGQnLCAndGVzdF9maWxlX2NvbW1pdDEnXSkKKyAgICAgICAgc2VsZi5zY20u
Y29tbWl0X2xvY2FsbHlfd2l0aF9tZXNzYWdlKCJhbm90aGVyIHRlc3QgY29tbWl0IikKKworICAg
ICAgICB3cml0ZV9pbnRvX2ZpbGVfYXRfcGF0aCgndGVzdF9maWxlX2NvbW1pdDInLCAnc3RpbGwg
bW9yZSB0ZXN0IGNvbnRlbnQnKQorICAgICAgICBydW5fY29tbWFuZChbJ2dpdCcsICdhZGQnLCAn
dGVzdF9maWxlX2NvbW1pdDInXSkKKworICAgIGRlZiB0ZXN0X2NvbW1pdF93aXRoX21lc3NhZ2Vf
c3F1YXNoZWQoc2VsZik6CisgICAgICAgIHNlbGYuX29uZV9sb2NhbF9jb21taXRfcGx1c193b3Jr
aW5nX2NvcHlfY2hhbmdlcygpCisgICAgICAgIHNjbSA9IGRldGVjdF9zY21fc3lzdGVtKHNlbGYu
Z2l0X2NoZWNrb3V0X3BhdGgsIHNxdWFzaD1UcnVlKQorICAgICAgICBjb21taXRfdGV4dCA9IHNj
bS5jb21taXRfd2l0aF9tZXNzYWdlKCJ5ZXQgYW5vdGhlciB0ZXN0IGNvbW1pdCIpCisKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChzY20uc3ZuX3JldmlzaW9uX2Zyb21fY29tbWl0X3RleHQoY29t
bWl0X3RleHQpLCAnNScpCisgICAgICAgIHN2bl9sb2cgPSBydW5fY29tbWFuZChbJ2dpdCcsICdz
dm4nLCAnbG9nJywgJy0tbGltaXQ9MScsICctLXZlcmJvc2UnXSkKKyAgICAgICAgc2VsZi5hc3Nl
cnRUcnVlKHJlLnNlYXJjaChyJ3Rlc3RfZmlsZV9jb21taXQyJywgc3ZuX2xvZykpCisgICAgICAg
IHNlbGYuYXNzZXJ0VHJ1ZShyZS5zZWFyY2gocid0ZXN0X2ZpbGVfY29tbWl0MScsIHN2bl9sb2cp
KQorCisgICAgZGVmIF90d29fbG9jYWxfY29tbWl0cyhzZWxmKToKKyAgICAgICAgd3JpdGVfaW50
b19maWxlX2F0X3BhdGgoJ3Rlc3RfZmlsZV9jb21taXQxJywgJ21vcmUgdGVzdCBjb250ZW50JykK
KyAgICAgICAgcnVuX2NvbW1hbmQoWydnaXQnLCAnYWRkJywgJ3Rlc3RfZmlsZV9jb21taXQxJ10p
CisgICAgICAgIHNlbGYuc2NtLmNvbW1pdF9sb2NhbGx5X3dpdGhfbWVzc2FnZSgiYW5vdGhlciB0
ZXN0IGNvbW1pdCIpCisKKyAgICAgICAgd3JpdGVfaW50b19maWxlX2F0X3BhdGgoJ3Rlc3RfZmls
ZV9jb21taXQyJywgJ3N0aWxsIG1vcmUgdGVzdCBjb250ZW50JykKKyAgICAgICAgcnVuX2NvbW1h
bmQoWydnaXQnLCAnYWRkJywgJ3Rlc3RfZmlsZV9jb21taXQyJ10pCisgICAgICAgIHNlbGYuc2Nt
LmNvbW1pdF9sb2NhbGx5X3dpdGhfbWVzc2FnZSgieWV0IGFub3RoZXIgdGVzdCBjb21taXQiKQor
CisgICAgZGVmIHRlc3RfY29tbWl0X3dpdGhfbWVzc2FnZV9naXRfY29tbWl0KHNlbGYpOgorICAg
ICAgICBzZWxmLl90d29fbG9jYWxfY29tbWl0cygpCisKKyAgICAgICAgc2NtID0gZGV0ZWN0X3Nj
bV9zeXN0ZW0oc2VsZi5naXRfY2hlY2tvdXRfcGF0aCwgZ2l0X2NvbW1pdD0iSEVBRF4iKQorICAg
ICAgICBjb21taXRfdGV4dCA9IHNjbS5jb21taXRfd2l0aF9tZXNzYWdlKCJhbm90aGVyIHRlc3Qg
Y29tbWl0IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzY20uc3ZuX3JldmlzaW9uX2Zyb21f
Y29tbWl0X3RleHQoY29tbWl0X3RleHQpLCAnNScpCisKKyAgICAgICAgc3ZuX2xvZyA9IHJ1bl9j
b21tYW5kKFsnZ2l0JywgJ3N2bicsICdsb2cnLCAnLS1saW1pdD0xJywgJy0tdmVyYm9zZSddKQor
ICAgICAgICBzZWxmLmFzc2VydFRydWUocmUuc2VhcmNoKHIndGVzdF9maWxlX2NvbW1pdDEnLCBz
dm5fbG9nKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShyZS5zZWFyY2gocid0ZXN0X2ZpbGVf
Y29tbWl0MicsIHN2bl9sb2cpKQorCisgICAgZGVmIHRlc3RfY29tbWl0X3dpdGhfbWVzc2FnZV9t
dWx0aXBsZV9sb2NhbF9jb21taXRzKHNlbGYpOgorICAgICAgICBzZWxmLl90d29fbG9jYWxfY29t
bWl0cygpCisgICAgICAgIHNjbSA9IGRldGVjdF9zY21fc3lzdGVtKHNlbGYuZ2l0X2NoZWNrb3V0
X3BhdGgsIHNxdWFzaD1GYWxzZSkKKyAgICAgICAgY29tbWl0X3RleHQgPSBzY20uY29tbWl0X3dp
dGhfbWVzc2FnZSgieWV0IGFub3RoZXIgdGVzdCBjb21taXQiKQorICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKHNjbS5zdm5fcmV2aXNpb25fZnJvbV9jb21taXRfdGV4dChjb21taXRfdGV4dCksICc1
JykKKworICAgICAgICBzdm5fbG9nID0gcnVuX2NvbW1hbmQoWydnaXQnLCAnc3ZuJywgJ2xvZycs
ICctLWxpbWl0PTEnLCAnLS12ZXJib3NlJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5z
ZWFyY2gocid0ZXN0X2ZpbGVfY29tbWl0MicsIHN2bl9sb2cpKQorICAgICAgICBzZWxmLmFzc2Vy
dEZhbHNlKHJlLnNlYXJjaChyJ3Rlc3RfZmlsZV9jb21taXQxJywgc3ZuX2xvZykpCisKKyAgICAg
ICAgc3ZuX2xvZyA9IHJ1bl9jb21tYW5kKFsnZ2l0JywgJ3N2bicsICdsb2cnLCAnLS1saW1pdD0y
JywgJy0tdmVyYm9zZSddKQorICAgICAgICBzZWxmLmFzc2VydFRydWUocmUuc2VhcmNoKHIndGVz
dF9maWxlX2NvbW1pdDEnLCBzdm5fbG9nKSkKKworICAgIGRlZiB0ZXN0X2NvbW1pdF93aXRoX21l
c3NhZ2VfbXVsdGlwbGVfbG9jYWxfY29tbWl0c19zcXVhc2hlZChzZWxmKToKKyAgICAgICAgc2Vs
Zi5fdHdvX2xvY2FsX2NvbW1pdHMoKQorICAgICAgICBzY20gPSBkZXRlY3Rfc2NtX3N5c3RlbShz
ZWxmLmdpdF9jaGVja291dF9wYXRoLCBzcXVhc2g9VHJ1ZSkKKyAgICAgICAgY29tbWl0X3RleHQg
PSBzY20uY29tbWl0X3dpdGhfbWVzc2FnZSgieWV0IGFub3RoZXIgdGVzdCBjb21taXQiKQorICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKHNjbS5zdm5fcmV2aXNpb25fZnJvbV9jb21taXRfdGV4dChj
b21taXRfdGV4dCksICc1JykKKworICAgICAgICBzdm5fbG9nID0gcnVuX2NvbW1hbmQoWydnaXQn
LCAnc3ZuJywgJ2xvZycsICctLWxpbWl0PTEnLCAnLS12ZXJib3NlJ10pCisgICAgICAgIHNlbGYu
YXNzZXJ0VHJ1ZShyZS5zZWFyY2gocid0ZXN0X2ZpbGVfY29tbWl0MicsIHN2bl9sb2cpKQorICAg
ICAgICBzZWxmLmFzc2VydFRydWUocmUuc2VhcmNoKHIndGVzdF9maWxlX2NvbW1pdDEnLCBzdm5f
bG9nKSkKIAogICAgIGRlZiB0ZXN0X3JldmVyc2VfZGlmZihzZWxmKToKICAgICAgICAgc2VsZi5f
c2hhcmVkX3Rlc3RfcmV2ZXJzZV9kaWZmKCkKQEAgLTYzMSw2ICs3MDEsNDIgQEAgY2xhc3MgR2l0
VGVzdChTQ01UZXN0KToKICAgICBkZWYgdGVzdF9zdm5fYXBwbHlfZ2l0X3BhdGNoKHNlbGYpOgog
ICAgICAgICBzZWxmLl9zaGFyZWRfdGVzdF9zdm5fYXBwbHlfZ2l0X3BhdGNoKCkKIAorICAgIGRl
ZiB0ZXN0X2NyZWF0ZV9wYXRjaF9zcXVhc2hlZChzZWxmKToKKyAgICAgICAgc2VsZi5fb25lX2xv
Y2FsX2NvbW1pdF9wbHVzX3dvcmtpbmdfY29weV9jaGFuZ2VzKCkKKyAgICAgICAgc2NtID0gZGV0
ZWN0X3NjbV9zeXN0ZW0oc2VsZi5naXRfY2hlY2tvdXRfcGF0aCwgc3F1YXNoPVRydWUpCisgICAg
ICAgIHBhdGNoID0gc2NtLmNyZWF0ZV9wYXRjaCgpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShy
ZS5zZWFyY2gocid0ZXN0X2ZpbGVfY29tbWl0MicsIHBhdGNoKSkKKyAgICAgICAgc2VsZi5hc3Nl
cnRUcnVlKHJlLnNlYXJjaChyJ3Rlc3RfZmlsZV9jb21taXQxJywgcGF0Y2gpKQorCisgICAgZGVm
IHRlc3RfY3JlYXRlX3BhdGNoX25vdF9zcXVhc2hlZChzZWxmKToKKyAgICAgICAgc2VsZi5fb25l
X2xvY2FsX2NvbW1pdF9wbHVzX3dvcmtpbmdfY29weV9jaGFuZ2VzKCkKKyAgICAgICAgc2NtID0g
ZGV0ZWN0X3NjbV9zeXN0ZW0oc2VsZi5naXRfY2hlY2tvdXRfcGF0aCwgc3F1YXNoPUZhbHNlKQor
ICAgICAgICBwYXRjaCA9IHNjbS5jcmVhdGVfcGF0Y2goKQorICAgICAgICBzZWxmLmFzc2VydFRy
dWUocmUuc2VhcmNoKHIndGVzdF9maWxlX2NvbW1pdDInLCBwYXRjaCkpCisgICAgICAgIHNlbGYu
YXNzZXJ0RmFsc2UocmUuc2VhcmNoKHIndGVzdF9maWxlX2NvbW1pdDEnLCBwYXRjaCkpCisKKyAg
ICBkZWYgdGVzdF9jcmVhdGVfcGF0Y2hfZ2l0X2NvbW1pdChzZWxmKToKKyAgICAgICAgc2VsZi5f
dHdvX2xvY2FsX2NvbW1pdHMoKQorICAgICAgICBzY20gPSBkZXRlY3Rfc2NtX3N5c3RlbShzZWxm
LmdpdF9jaGVja291dF9wYXRoLCBnaXRfY29tbWl0PSJIRUFEXiIpCisgICAgICAgIHBhdGNoID0g
c2NtLmNyZWF0ZV9wYXRjaCgpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5zZWFyY2gocid0
ZXN0X2ZpbGVfY29tbWl0MScsIHBhdGNoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShyZS5z
ZWFyY2gocid0ZXN0X2ZpbGVfY29tbWl0MicsIHBhdGNoKSkKKworICAgIGRlZiB0ZXN0X2NyZWF0
ZV9wYXRjaF9tdWx0aXBsZV9sb2NhbF9jb21taXRzKHNlbGYpOgorICAgICAgICBzZWxmLl90d29f
bG9jYWxfY29tbWl0cygpCisgICAgICAgIHNjbSA9IGRldGVjdF9zY21fc3lzdGVtKHNlbGYuZ2l0
X2NoZWNrb3V0X3BhdGgsIHNxdWFzaD1GYWxzZSkKKyAgICAgICAgcGF0Y2ggPSBzY20uY3JlYXRl
X3BhdGNoKCkKKyAgICAgICAgIyBGSVhNRTogSXQncyB3ZWlyZCB0aGF0IHdpdGggc3F1YXNoPUZh
bHNlLCBjcmVhdGVfcGF0Y2gvY2hhbmdlZF9maWxlcyBpZ25vcmVzIGxvY2FsIGNvbW1pdHMsCisg
ICAgICAgICMgYnV0IGNvbW1pdF93aXRoX21lc3NhZ2UgY29tbWl0cyB0aGVtLgorICAgICAgICBz
ZWxmLmFzc2VydFRydWUocGF0Y2ggPT0gIiIpCisKKyAgICBkZWYgdGVzdF9jcmVhdGVfcGF0Y2hf
bXVsdGlwbGVfbG9jYWxfY29tbWl0c19zcXVhc2hlZChzZWxmKToKKyAgICAgICAgc2VsZi5fdHdv
X2xvY2FsX2NvbW1pdHMoKQorICAgICAgICBzY20gPSBkZXRlY3Rfc2NtX3N5c3RlbShzZWxmLmdp
dF9jaGVja291dF9wYXRoLCBzcXVhc2g9VHJ1ZSkKKyAgICAgICAgcGF0Y2ggPSBzY20uY3JlYXRl
X3BhdGNoKCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLnNlYXJjaChyJ3Rlc3RfZmlsZV9j
b21taXQyJywgcGF0Y2gpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUocmUuc2VhcmNoKHIndGVz
dF9maWxlX2NvbW1pdDEnLCBwYXRjaCkpCisKICAgICBkZWYgdGVzdF9jcmVhdGVfYmluYXJ5X3Bh
dGNoKHNlbGYpOgogICAgICAgICAjIENyZWF0ZSBhIGdpdCBiaW5hcnkgcGF0Y2ggYW5kIGNoZWNr
IHRoZSBjb250ZW50cy4KICAgICAgICAgc2NtID0gZGV0ZWN0X3NjbV9zeXN0ZW0oc2VsZi5naXRf
Y2hlY2tvdXRfcGF0aCkKQEAgLTY2MSw2ICs3NjcsNDIgQEAgY2xhc3MgR2l0VGVzdChTQ01UZXN0
KToKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLnNlYXJjaChyJ1xubGl0ZXJhbCAyNTZcbics
IHBhdGNoX3NpbmNlX2xvY2FsX2NvbW1pdCkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGF0
Y2hfZnJvbV9sb2NhbF9jb21taXQsIHBhdGNoX3NpbmNlX2xvY2FsX2NvbW1pdCkKIAorICAgIGRl
ZiB0ZXN0X2NoYW5nZWRfZmlsZXNfc3F1YXNoZWQoc2VsZik6CisgICAgICAgIHNlbGYuX29uZV9s
b2NhbF9jb21taXRfcGx1c193b3JraW5nX2NvcHlfY2hhbmdlcygpCisgICAgICAgIHNjbSA9IGRl
dGVjdF9zY21fc3lzdGVtKHNlbGYuZ2l0X2NoZWNrb3V0X3BhdGgsIHNxdWFzaD1UcnVlKQorICAg
ICAgICBmaWxlcyA9IHNjbS5jaGFuZ2VkX2ZpbGVzKCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVl
KCd0ZXN0X2ZpbGVfY29tbWl0MicgaW4gZmlsZXMpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgn
dGVzdF9maWxlX2NvbW1pdDEnIGluIGZpbGVzKQorCisgICAgZGVmIHRlc3RfY2hhbmdlZF9maWxl
c19ub3Rfc3F1YXNoZWQoc2VsZik6CisgICAgICAgIHNlbGYuX29uZV9sb2NhbF9jb21taXRfcGx1
c193b3JraW5nX2NvcHlfY2hhbmdlcygpCisgICAgICAgIHNjbSA9IGRldGVjdF9zY21fc3lzdGVt
KHNlbGYuZ2l0X2NoZWNrb3V0X3BhdGgsIHNxdWFzaD1GYWxzZSkKKyAgICAgICAgZmlsZXMgPSBz
Y20uY2hhbmdlZF9maWxlcygpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgndGVzdF9maWxlX2Nv
bW1pdDInIGluIGZpbGVzKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKCd0ZXN0X2ZpbGVfY29t
bWl0MScgaW4gZmlsZXMpCisKKyAgICBkZWYgdGVzdF9jaGFuZ2VkX2ZpbGVzX2dpdF9jb21taXQo
c2VsZik6CisgICAgICAgIHNlbGYuX3R3b19sb2NhbF9jb21taXRzKCkKKyAgICAgICAgc2NtID0g
ZGV0ZWN0X3NjbV9zeXN0ZW0oc2VsZi5naXRfY2hlY2tvdXRfcGF0aCwgZ2l0X2NvbW1pdD0iSEVB
RF4iKQorICAgICAgICBmaWxlcyA9IHNjbS5jaGFuZ2VkX2ZpbGVzKCkKKyAgICAgICAgc2VsZi5h
c3NlcnRUcnVlKCd0ZXN0X2ZpbGVfY29tbWl0MScgaW4gZmlsZXMpCisgICAgICAgIHNlbGYuYXNz
ZXJ0RmFsc2UoJ3Rlc3RfZmlsZV9jb21taXQyJyBpbiBmaWxlcykKKworICAgIGRlZiB0ZXN0X2No
YW5nZWRfZmlsZXNfbXVsdGlwbGVfbG9jYWxfY29tbWl0cyhzZWxmKToKKyAgICAgICAgc2VsZi5f
dHdvX2xvY2FsX2NvbW1pdHMoKQorICAgICAgICBzY20gPSBkZXRlY3Rfc2NtX3N5c3RlbShzZWxm
LmdpdF9jaGVja291dF9wYXRoLCBzcXVhc2g9RmFsc2UpCisgICAgICAgIGZpbGVzID0gc2NtLmNo
YW5nZWRfZmlsZXMoKQorICAgICAgICAjIEZJWE1FOiBJdCdzIHdlaXJkIHRoYXQgd2l0aCBzcXVh
c2g9RmFsc2UsIGNyZWF0ZV9wYXRjaC9jaGFuZ2VkX2ZpbGVzIGlnbm9yZXMgbG9jYWwgY29tbWl0
cywKKyAgICAgICAgIyBidXQgY29tbWl0X3dpdGhfbWVzc2FnZSBjb21taXRzIHRoZW0uCisgICAg
ICAgIHNlbGYuYXNzZXJ0VHJ1ZShsZW4oZmlsZXMpID09IDApCisKKyAgICBkZWYgdGVzdF9jaGFu
Z2VkX2ZpbGVzX211bHRpcGxlX2xvY2FsX2NvbW1pdHNfc3F1YXNoZWQoc2VsZik6CisgICAgICAg
IHNlbGYuX3R3b19sb2NhbF9jb21taXRzKCkKKyAgICAgICAgc2NtID0gZGV0ZWN0X3NjbV9zeXN0
ZW0oc2VsZi5naXRfY2hlY2tvdXRfcGF0aCwgc3F1YXNoPVRydWUpCisgICAgICAgIGZpbGVzID0g
c2NtLmNoYW5nZWRfZmlsZXMoKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoJ3Rlc3RfZmlsZV9j
b21taXQyJyBpbiBmaWxlcykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCd0ZXN0X2ZpbGVfY29t
bWl0MScgaW4gZmlsZXMpCisKICAgICBkZWYgdGVzdF9jaGFuZ2VkX2ZpbGVzX2Zvcl9yZXZpc2lv
bihzZWxmKToKICAgICAgICAgc2VsZi5fc2hhcmVkX3Rlc3RfY2hhbmdlZF9maWxlc19mb3JfcmV2
aXNpb24oKQogCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1v
bi9uZXQvY3JlZGVudGlhbHMucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1v
bi9uZXQvY3JlZGVudGlhbHMucHkKaW5kZXggNDdmYzE3MS4uMWQ1ZjgzZCAxMDA2NDQKLS0tIGEv
V2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0L2NyZWRlbnRpYWxzLnB5Cisr
KyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9jcmVkZW50aWFscy5w
eQpAQCAtNDQsMjAgKzQ0LDEzIEBAIGNsYXNzIENyZWRlbnRpYWxzKG9iamVjdCk6CiAKICAgICBk
ZWYgX19pbml0X18oc2VsZiwgaG9zdCwgZ2l0X3ByZWZpeD1Ob25lLCBleGVjdXRpdmU9Tm9uZSwg
Y3dkPW9zLmdldGN3ZCgpKToKICAgICAgICAgc2VsZi5ob3N0ID0gaG9zdAotICAgICAgICBzZWxm
LmdpdF9wcmVmaXggPSBnaXRfcHJlZml4CisgICAgICAgIHNlbGYuZ2l0X3ByZWZpeCA9ICIlcy4i
ICUgZ2l0X3ByZWZpeCBpZiBnaXRfcHJlZml4IGVsc2UgIiIKICAgICAgICAgc2VsZi5leGVjdXRp
dmUgPSBleGVjdXRpdmUgb3IgRXhlY3V0aXZlKCkKICAgICAgICAgc2VsZi5jd2QgPSBjd2QKIAog
ICAgIGRlZiBfY3JlZGVudGlhbHNfZnJvbV9naXQoc2VsZik6Ci0gICAgICAgIHJldHVybiBbc2Vs
Zi5fcmVhZF9naXRfY29uZmlnKCJ1c2VybmFtZSIpLAotICAgICAgICAgICAgICAgIHNlbGYuX3Jl
YWRfZ2l0X2NvbmZpZygicGFzc3dvcmQiKV0KLQotICAgIGRlZiBfcmVhZF9naXRfY29uZmlnKHNl
bGYsIGtleSk6Ci0gICAgICAgIGNvbmZpZ19rZXkgPSAiJXMuJXMiICUgKHNlbGYuZ2l0X3ByZWZp
eCwga2V5KSBpZiBzZWxmLmdpdF9wcmVmaXggXAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBrZXkKLSAgICAgICAgcmV0dXJuIHNlbGYu
ZXhlY3V0aXZlLnJ1bl9jb21tYW5kKAotICAgICAgICAgICAgICAgIFsiZ2l0IiwgImNvbmZpZyIs
ICItLWdldCIsIGNvbmZpZ19rZXldLAotICAgICAgICAgICAgICAgIGVycm9yX2hhbmRsZXI9RXhl
Y3V0aXZlLmlnbm9yZV9lcnJvcikucnN0cmlwKCdcbicpCisgICAgICAgIHJldHVybiBbR2l0LnJl
YWRfZ2l0X2NvbmZpZyhzZWxmLmdpdF9wcmVmaXggKyAidXNlcm5hbWUiKSwKKyAgICAgICAgICAg
ICAgICBHaXQucmVhZF9naXRfY29uZmlnKHNlbGYuZ2l0X3ByZWZpeCArICJwYXNzd29yZCIpXQog
CiAgICAgZGVmIF9rZXljaGFpbl92YWx1ZV93aXRoX2xhYmVsKHNlbGYsIGxhYmVsLCBzb3VyY2Vf
dGV4dCk6CiAgICAgICAgIG1hdGNoID0gcmUuc2VhcmNoKCIlc1wiKD9QPHZhbHVlPi4rKVwiIiAl
IGxhYmVsLApkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24v
bmV0L2NyZWRlbnRpYWxzX3VuaXR0ZXN0LnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9jb21tb24vbmV0L2NyZWRlbnRpYWxzX3VuaXR0ZXN0LnB5CmluZGV4IGE4MzBiMTMuLjlhNDJi
ZGQgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9j
cmVkZW50aWFsc191bml0dGVzdC5weQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5
L2NvbW1vbi9uZXQvY3JlZGVudGlhbHNfdW5pdHRlc3QucHkKQEAgLTEwMSwxNiArMTAxLDYgQEAg
cGFzc3dvcmQ6ICJTRUNSRVRTQVVDRSIKICAgICAgICAgc2VsZi5fYXNzZXJ0X3NlY3VyaXR5X2Nh
bGwoKQogICAgICAgICBzZWxmLl9hc3NlcnRfc2VjdXJpdHlfY2FsbCh1c2VybmFtZT0iZm9vIikK
IAotICAgIGRlZiB0ZXN0X2dpdF9jb25maWdfY2FsbHMoc2VsZik6Ci0gICAgICAgIGV4ZWN1dGl2
ZV9tb2NrID0gTW9jaygpCi0gICAgICAgIGNyZWRlbnRpYWxzID0gQ3JlZGVudGlhbHMoImV4YW1w
bGUuY29tIiwgZXhlY3V0aXZlPWV4ZWN1dGl2ZV9tb2NrKQotICAgICAgICBjcmVkZW50aWFscy5f
cmVhZF9naXRfY29uZmlnKCJmb28iKQotICAgICAgICBleGVjdXRpdmVfbW9jay5ydW5fY29tbWFu
ZC5hc3NlcnRfY2FsbGVkX3dpdGgoWyJnaXQiLCAiY29uZmlnIiwgIi0tZ2V0IiwgImZvbyJdLCBl
cnJvcl9oYW5kbGVyPUV4ZWN1dGl2ZS5pZ25vcmVfZXJyb3IpCi0KLSAgICAgICAgY3JlZGVudGlh
bHMgPSBDcmVkZW50aWFscygiZXhhbXBsZS5jb20iLCBnaXRfcHJlZml4PSJ0ZXN0X3ByZWZpeCIs
IGV4ZWN1dGl2ZT1leGVjdXRpdmVfbW9jaykKLSAgICAgICAgY3JlZGVudGlhbHMuX3JlYWRfZ2l0
X2NvbmZpZygiZm9vIikKLSAgICAgICAgZXhlY3V0aXZlX21vY2sucnVuX2NvbW1hbmQuYXNzZXJ0
X2NhbGxlZF93aXRoKFsiZ2l0IiwgImNvbmZpZyIsICItLWdldCIsICJ0ZXN0X3ByZWZpeC5mb28i
XSwgZXJyb3JfaGFuZGxlcj1FeGVjdXRpdmUuaWdub3JlX2Vycm9yKQotCiAgICAgZGVmIHRlc3Rf
cmVhZF9jcmVkZW50aWFsc193aXRob3V0X2dpdF9yZXBvKHNlbGYpOgogICAgICAgICBjbGFzcyBG
YWtlQ3JlZGVudGlhbHMoQ3JlZGVudGlhbHMpOgogICAgICAgICAgICAgZGVmIF9pc19tYWNfb3Nf
eChzZWxmKToKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9u
L3N5c3RlbS9leGVjdXRpdmUucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1v
bi9zeXN0ZW0vZXhlY3V0aXZlLnB5CmluZGV4IDVjNzVkZjYuLmY0M2ZlNGEgMTAwNjQ0Ci0tLSBh
L1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9leGVjdXRpdmUucHkK
KysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL2V4ZWN1dGl2
ZS5weQpAQCAtMTYzLDEyICsxNjMsMTQgQEAgY2xhc3MgRXhlY3V0aXZlKG9iamVjdCk6CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN3ZD1jd2QpCiAgICAgICAgIG91dHB1dCA9
IHByb2Nlc3MuY29tbXVuaWNhdGUoc3RyaW5nX3RvX2NvbW11bmljYXRlKVswXQogICAgICAgICBl
eGl0X2NvZGUgPSBwcm9jZXNzLndhaXQoKQorCisgICAgICAgIGlmIHJldHVybl9leGl0X2NvZGU6
CisgICAgICAgICAgICByZXR1cm4gZXhpdF9jb2RlCisKICAgICAgICAgaWYgZXhpdF9jb2RlOgog
ICAgICAgICAgICAgc2NyaXB0X2Vycm9yID0gU2NyaXB0RXJyb3Ioc2NyaXB0X2FyZ3M9YXJncywK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4aXRfY29kZT1leGl0X2Nv
ZGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXQ9b3V0cHV0
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3dkPWN3ZCkKICAgICAg
ICAgICAgIChlcnJvcl9oYW5kbGVyIG9yIHNlbGYuZGVmYXVsdF9lcnJvcl9oYW5kbGVyKShzY3Jp
cHRfZXJyb3IpCi0gICAgICAgIGlmIHJldHVybl9leGl0X2NvZGU6Ci0gICAgICAgICAgICByZXR1
cm4gZXhpdF9jb2RlCiAgICAgICAgIHJldHVybiBvdXRwdXQKZGlmZiAtLWdpdCBhL1dlYktpdFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvb3B0cGFyc2VyLnB5IGIvV2ViS2l0VG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9zdHlsZS9vcHRwYXJzZXIucHkKaW5kZXggMzQwM2RkOC4uODU2ZDJlMyAx
MDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9vcHRwYXJzZXIu
cHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9vcHRwYXJzZXIucHkK
QEAgLTQyLDcgKzQyLDcgQEAgZGVmIF9jcmVhdGVfdXNhZ2UoZGVmYXVsdF9vcHRpb25zKToKICAg
ICAiIiIKICAgICB1c2FnZSA9ICIiIgogU3ludGF4OiAlKHByb2dyYW1fbmFtZSlzIFstLWZpbHRl
cj0teCwreSwuLi5dIFstLWdpdC1jb21taXQ9PFNpbmdsZUNvbW1pdD5dCi0gICAgICAgIFstLW1p
bi1jb25maWRlbmNlPSNdIFstLW91dHB1dD12czddIFstLXZlcmJvc2VdIFtmaWxlIG9yIGRpcmVj
dG9yeV0gLi4uCisgICAgICAgIFstLW1pbi1jb25maWRlbmNlPSNdIFstLW91dHB1dD12czddIFst
LXZlcmJvc2VdIFstLXNxdWFzaF0gW2ZpbGUgb3IgZGlyZWN0b3J5XSAuLi4KIAogICBUaGUgc3R5
bGUgZ3VpZGVsaW5lcyB0aGlzIHRyaWVzIHRvIGZvbGxvdyBhcmUgaGVyZToKICAgICBodHRwOi8v
d2Via2l0Lm9yZy9jb2RpbmcvY29kaW5nLXN0eWxlLmh0bWwKQEAgLTk5LDYgKzk5LDEwIEBAIFN5
bnRheDogJShwcm9ncmFtX25hbWUpcyBbLS1maWx0ZXI9LXgsK3ksLi4uXSBbLS1naXQtY29tbWl0
PTxTaW5nbGVDb21taXQ+XQogICAgICAgICB2czcgICA6IGNvbXBhdGlibGUgd2l0aCBWaXN1YWwg
U3R1ZGlvCiAgICAgICBEZWZhdWx0cyB0byAiJShkZWZhdWx0X291dHB1dF9mb3JtYXQpcyIuIE90
aGVyIGZvcm1hdHMgYXJlIHVuc3VwcG9ydGVkLgogCisgICAgc3F1YXNoCisgICAgICBJZiBUcnVl
LCB0aGVuIGFsbCBkaWZmcyBmcm9tIHRoZSByZW1vdGUgYnJhbmNoIGFyZSBjaGVja2VkLgorICAg
ICAgSWYgZXhjbHVkZWQsIHByb21wdHMgd2hldGhlciB0byBzcXVhc2ggd2hlbiB0aGVyZSBhcmUg
bXVsdGlwbGUgY29tbWl0cy4KKwogICAgIHZlcmJvc2UKICAgICAgIExvZ2dpbmcgaXMgdmVyYm9z
ZSBpZiB0aGlzIGZsYWcgaXMgcHJlc2VudC4KIApAQCAtMTg2LDcgKzE5MCw4IEBAIGNsYXNzIENv
bW1hbmRPcHRpb25WYWx1ZXMob2JqZWN0KToKICAgICAgICAgICAgICAgICAgZ2l0X2NvbW1pdD1O
b25lLAogICAgICAgICAgICAgICAgICBpc192ZXJib3NlPUZhbHNlLAogICAgICAgICAgICAgICAg
ICBtaW5fY29uZmlkZW5jZT0xLAotICAgICAgICAgICAgICAgICBvdXRwdXRfZm9ybWF0PSJlbWFj
cyIpOgorICAgICAgICAgICAgICAgICBvdXRwdXRfZm9ybWF0PSJlbWFjcyIsCisgICAgICAgICAg
ICAgICAgIHNxdWFzaD1GYWxzZSk6CiAgICAgICAgIGlmIGZpbHRlcl9ydWxlcyBpcyBOb25lOgog
ICAgICAgICAgICAgZmlsdGVyX3J1bGVzID0gW10KIApAQCAtMjA1LDYgKzIxMCw3IEBAIGNsYXNz
IENvbW1hbmRPcHRpb25WYWx1ZXMob2JqZWN0KToKICAgICAgICAgc2VsZi5pc192ZXJib3NlID0g
aXNfdmVyYm9zZQogICAgICAgICBzZWxmLm1pbl9jb25maWRlbmNlID0gbWluX2NvbmZpZGVuY2UK
ICAgICAgICAgc2VsZi5vdXRwdXRfZm9ybWF0ID0gb3V0cHV0X2Zvcm1hdAorICAgICAgICBzZWxm
LnNxdWFzaCA9IHNxdWFzaAogCiAgICAgIyBVc2VmdWwgZm9yIHVuaXQgdGVzdGluZy4KICAgICBk
ZWYgX19lcV9fKHNlbGYsIG90aGVyKToKQEAgLTI1Myw2ICsyNTksOCBAQCBjbGFzcyBBcmd1bWVu
dFByaW50ZXIob2JqZWN0KToKICAgICAgICAgICAgIGZsYWdzWydmaWx0ZXInXSA9ICIsIi5qb2lu
KGZpbHRlcl9ydWxlcykKICAgICAgICAgaWYgb3B0aW9ucy5naXRfY29tbWl0OgogICAgICAgICAg
ICAgZmxhZ3NbJ2dpdC1jb21taXQnXSA9IG9wdGlvbnMuZ2l0X2NvbW1pdAorICAgICAgICBpZiBv
cHRpb25zLnNxdWFzaDoKKyAgICAgICAgICAgIGZsYWdzWydzcXVhc2gnXSA9IG9wdGlvbnMuc3F1
YXNoCiAKICAgICAgICAgZmxhZ19zdHJpbmcgPSAnJwogICAgICAgICAjIEFscGhhYmV0aXppbmcg
bGV0cyB1cyB1bml0IHRlc3QgdGhpcyBtZXRob2QuCkBAIC0zODcsNyArMzk1LDcgQEAgY2xhc3Mg
QXJndW1lbnRQYXJzZXIob2JqZWN0KToKIAogICAgICAgICAjIFRoZSBmbGFncyB0aGF0IHRoZSBD
b21tYW5kT3B0aW9uVmFsdWVzIGNsYXNzIHN1cHBvcnRzLgogICAgICAgICBmbGFncyA9IFsnZmls
dGVyPScsICdnaXQtY29tbWl0PScsICdoZWxwJywgJ21pbi1jb25maWRlbmNlPScsCi0gICAgICAg
ICAgICAgICAgICdvdXRwdXQ9JywgJ3ZlcmJvc2UnXQorICAgICAgICAgICAgICAgICAnb3V0cHV0
PScsICd2ZXJib3NlJywgJ3NxdWFzaCddCiAKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgKG9w
dHMsIHBhdGhzKSA9IGdldG9wdC5nZXRvcHQoYXJncywgJycsIGZsYWdzKQpAQCAtMzk5LDYgKzQw
Nyw3IEBAIGNsYXNzIEFyZ3VtZW50UGFyc2VyKG9iamVjdCk6CiAgICAgICAgICAgICBzZWxmLl9l
eGl0X3dpdGhfdXNhZ2UoJ0ludmFsaWQgYXJndW1lbnRzOiAlcycgJSBlcnIpCiAKICAgICAgICAg
Z2l0X2NvbW1pdCA9IE5vbmUKKyAgICAgICAgc3F1YXNoID0gRmFsc2UKICAgICAgICAgZmlsdGVy
X3J1bGVzID0gW10KIAogICAgICAgICBmb3IgKG9wdCwgdmFsKSBpbiBvcHRzOgpAQCAtNDE3LDYg
KzQyNiw4IEBAIGNsYXNzIEFyZ3VtZW50UGFyc2VyKG9iamVjdCk6CiAgICAgICAgICAgICAgICAg
b3V0cHV0X2Zvcm1hdCA9IHZhbAogICAgICAgICAgICAgZWxpZiBvcHQgPT0gIi0tdmVyYm9zZSI6
CiAgICAgICAgICAgICAgICAgaXNfdmVyYm9zZSA9IFRydWUKKyAgICAgICAgICAgIGVsaWYgb3B0
ID09ICItLXNxdWFzaCI6CisgICAgICAgICAgICAgICAgc3F1YXNoID0gVHJ1ZQogICAgICAgICAg
ICAgZWxzZToKICAgICAgICAgICAgICAgICAjIFdlIHNob3VsZCBuZXZlciBnZXQgaGVyZSBiZWNh
dXNlIGdldG9wdC5nZXRvcHQoKQogICAgICAgICAgICAgICAgICMgcmFpc2VzIGFuIGVycm9yIGlu
IHRoaXMgY2FzZS4KQEAgLTQ0OSw3ICs0NjAsOCBAQCBjbGFzcyBBcmd1bWVudFBhcnNlcihvYmpl
Y3QpOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnaXRfY29tbWl0PWdp
dF9jb21taXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzX3ZlcmJv
c2U9aXNfdmVyYm9zZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWlu
X2NvbmZpZGVuY2U9bWluX2NvbmZpZGVuY2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG91dHB1dF9mb3JtYXQ9b3V0cHV0X2Zvcm1hdCkKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgb3V0cHV0X2Zvcm1hdD1vdXRwdXRfZm9ybWF0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcXVhc2g9c3F1YXNoKQogCiAgICAgICAg
IHJldHVybiAocGF0aHMsIG9wdGlvbnMpCiAKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvc3R5bGVfcmVmZXJlbmNlcy5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvc3R5bGVfcmVmZXJlbmNlcy5weQppbmRleCBiYTI4MDZlLi43M2YwYjk5IDEwMDY0NAot
LS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlX3JlZmVyZW5jZXMucHkKKysr
IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZV9yZWZlcmVuY2VzLnB5CkBAIC00
OCwxNCArNDgsMTggQEAgZnJvbSB3ZWJraXRweS5jb21tb24uY2hlY2tvdXQuc2NtIGltcG9ydCBk
ZXRlY3Rfc2NtX3N5c3RlbQogZnJvbSB3ZWJraXRweS50aGlyZHBhcnR5LmF1dG9pbnN0YWxsZWQg
aW1wb3J0IHBlcDgKIAogCi1kZWYgZGV0ZWN0X2NoZWNrb3V0KCk6CitkZWYgZGV0ZWN0X2NoZWNr
b3V0KHNxdWFzaCwgZ2l0X2NvbW1pdCk6CiAgICAgIiIiUmV0dXJuIGEgV2ViS2l0Q2hlY2tvdXQg
aW5zdGFuY2UsIG9yIE5vbmUgaWYgaXQgY2Fubm90IGJlIGZvdW5kLiIiIgogICAgIGN3ZCA9IG9z
LnBhdGguYWJzcGF0aChvcy5jdXJkaXIpCi0gICAgc2NtID0gZGV0ZWN0X3NjbV9zeXN0ZW0oY3dk
KQorICAgIHNjbSA9IGRldGVjdF9zY21fc3lzdGVtKGN3ZCwgc3F1YXNoLCBnaXRfY29tbWl0KQog
CiAgICAgcmV0dXJuIE5vbmUgaWYgc2NtIGlzIE5vbmUgZWxzZSBXZWJLaXRDaGVja291dChzY20p
CiAKIAorZGVmIGluX3dvcmtpbmdfZGlyZWN0b3J5KCk6CisgICAgcmV0dXJuIGluX3dvcmtpbmdf
ZGlyZWN0b3J5KG9zLnBhdGguYWJzcGF0aChvcy5jdXJkaXIpKQorCisKIGRlZiBwYXJzZV9wYXRj
aChwYXRjaF9zdHJpbmcpOgogCiAgICAgIiIiUGFyc2UgYSBwYXRjaCBzdHJpbmcgYW5kIHJldHVy
biB0aGUgYWZmZWN0ZWQgZmlsZXMuIiIiCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRz
L3dlYmtpdHB5L3Rvb2wvbWFpbi5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9v
bC9tYWluLnB5CmluZGV4IDYyOWU4NmYuLmY2YjE0YmIgMTAwNzU1Ci0tLSBhL1dlYktpdFRvb2xz
L1NjcmlwdHMvd2Via2l0cHkvdG9vbC9tYWluLnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMv
d2Via2l0cHkvdG9vbC9tYWluLnB5CkBAIC03NSwxMSArNzUsMTEgQEAgY2xhc3MgV2ViS2l0UGF0
Y2goTXVsdGlDb21tYW5kVG9vbCk6CiAgICAgICAgICMgTGF6aWx5IGluaXRpYWxpemUgU0NNIHRv
IG5vdCBlcnJvci1vdXQgYmVmb3JlIGNvbW1hbmQgbGluZSBwYXJzaW5nIChvciB3aGVuIHJ1bm5p
bmcgbm9uLXNjbSBjb21tYW5kcykuCiAgICAgICAgIG9yaWdpbmFsX2N3ZCA9IG9zLnBhdGguYWJz
cGF0aCgiLiIpCiAgICAgICAgIGlmIG5vdCBzZWxmLl9zY206Ci0gICAgICAgICAgICBzZWxmLl9z
Y20gPSBkZXRlY3Rfc2NtX3N5c3RlbShvcmlnaW5hbF9jd2QpCisgICAgICAgICAgICBzZWxmLl9z
Y20gPSBkZXRlY3Rfc2NtX3N5c3RlbShvcmlnaW5hbF9jd2QsIHNlbGYuX29wdGlvbnMuc3F1YXNo
LCBzZWxmLl9vcHRpb25zLmdpdF9jb21taXQpCiAKICAgICAgICAgaWYgbm90IHNlbGYuX3NjbToK
ICAgICAgICAgICAgIHNjcmlwdF9kaXJlY3RvcnkgPSBvcy5wYXRoLmFic3BhdGgoc3lzLnBhdGhb
MF0pCi0gICAgICAgICAgICBzZWxmLl9zY20gPSBkZXRlY3Rfc2NtX3N5c3RlbShzY3JpcHRfZGly
ZWN0b3J5KQorICAgICAgICAgICAgc2VsZi5fc2NtID0gZGV0ZWN0X3NjbV9zeXN0ZW0oc2NyaXB0
X2RpcmVjdG9yeSwgc2VsZi5fb3B0aW9ucy5zcXVhc2gsIHNlbGYuX29wdGlvbnMuZ2l0X2NvbW1p
dCkKICAgICAgICAgICAgIGlmIHNlbGYuX3NjbToKICAgICAgICAgICAgICAgICBsb2coIlRoZSBj
dXJyZW50IGRpcmVjdG9yeSAoJXMpIGlzIG5vdCBhIFdlYktpdCBjaGVja291dCwgdXNpbmcgJXMi
ICUgKG9yaWdpbmFsX2N3ZCwgc2VsZi5fc2NtLmNoZWNrb3V0X3Jvb3QpKQogICAgICAgICAgICAg
ZWxzZToKQEAgLTExOCw2ICsxMTgsNyBAQCBjbGFzcyBXZWJLaXRQYXRjaChNdWx0aUNvbW1hbmRU
b29sKToKIAogICAgICMgRklYTUU6IFRoaXMgbWF5IGJlIHVubmVjZXNzYXJ5IHNpbmNlIHdlIHBh
c3MgZ2xvYmFsIG9wdGlvbnMgdG8gYWxsIGNvbW1hbmRzIGR1cmluZyBleGVjdXRlKCkgYXMgd2Vs
bC4KICAgICBkZWYgaGFuZGxlX2dsb2JhbF9vcHRpb25zKHNlbGYsIG9wdGlvbnMpOgorICAgICAg
ICBzZWxmLl9vcHRpb25zID0gb3B0aW9ucwogICAgICAgICBpZiBvcHRpb25zLmRyeV9ydW46CiAg
ICAgICAgICAgICBzZWxmLnNjbSgpLmRyeXJ1biA9IFRydWUKICAgICAgICAgICAgIHNlbGYuYnVn
cy5kcnlydW4gPSBUcnVlCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5
L3Rvb2wvc3RlcHMvYWJzdHJhY3RzdGVwLnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRw
eS90b29sL3N0ZXBzL2Fic3RyYWN0c3RlcC5weQppbmRleCAxYWQzNDNkLi5lMWJhNWRiIDEwMDY0
NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvYWJzdHJhY3Rz
dGVwLnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9hYnN0
cmFjdHN0ZXAucHkKQEAgLTM2LDEwICszNiwxMyBAQCBjbGFzcyBBYnN0cmFjdFN0ZXAob2JqZWN0
KToKICAgICAgICAgc2VsZi5fb3B0aW9ucyA9IG9wdGlvbnMKICAgICAgICAgc2VsZi5fcG9ydCA9
IE5vbmUKIAotICAgIGRlZiBfcnVuX3NjcmlwdChzZWxmLCBzY3JpcHRfbmFtZSwgcXVpZXQ9RmFs
c2UsIHBvcnQ9V2ViS2l0UG9ydCk6CisgICAgZGVmIF9ydW5fc2NyaXB0KHNlbGYsIHNjcmlwdF9u
YW1lLCBhcmdzPU5vbmUsIHF1aWV0PUZhbHNlLCBwb3J0PVdlYktpdFBvcnQpOgogICAgICAgICBs
b2coIlJ1bm5pbmcgJXMiICUgc2NyaXB0X25hbWUpCiAgICAgICAgICMgRklYTUU6IFRoaXMgc2hv
dWxkIHVzZSBzZWxmLnBvcnQoKQotICAgICAgICBzZWxmLl90b29sLmV4ZWN1dGl2ZS5ydW5fYW5k
X3Rocm93X2lmX2ZhaWwocG9ydC5zY3JpcHRfcGF0aChzY3JpcHRfbmFtZSksIHF1aWV0KQorICAg
ICAgICBjb21tYW5kID0gW3BvcnQuc2NyaXB0X3BhdGgoc2NyaXB0X25hbWUpXQorICAgICAgICBp
ZiBhcmdzOgorICAgICAgICAgICAgY29tbWFuZC5leHRlbmQoYXJncykKKyAgICAgICAgc2VsZi5f
dG9vbC5leGVjdXRpdmUucnVuX2FuZF90aHJvd19pZl9mYWlsKGNvbW1hbmQsIHF1aWV0KQogCiAg
ICAgIyBGSVhNRTogVGhlIHBvcnQgc2hvdWxkIGxpdmUgb24gdGhlIHRvb2wuCiAgICAgZGVmIHBv
cnQoc2VsZik6CmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wv
c3RlcHMvY2hlY2tzdHlsZS5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9z
dGVwcy9jaGVja3N0eWxlLnB5CmluZGV4IDYzZjAxMTQuLjYyMTk0YzcgMTAwNjQ0Ci0tLSBhL1dl
YktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9jaGVja3N0eWxlLnB5CisrKyBi
L1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9jaGVja3N0eWxlLnB5CkBA
IC0zOSw2ICszOSw4IEBAIGNsYXNzIENoZWNrU3R5bGUoQWJzdHJhY3RTdGVwKToKICAgICAgICAg
cmV0dXJuIFsKICAgICAgICAgICAgIE9wdGlvbnMubm9uX2ludGVyYWN0aXZlLAogICAgICAgICAg
ICAgT3B0aW9ucy5jaGVja19zdHlsZSwKKyAgICAgICAgICAgIE9wdGlvbnMuZ2l0X2NvbW1pdCwK
KyAgICAgICAgICAgIE9wdGlvbnMuc3F1YXNoLAogICAgICAgICBdCiAKICAgICBkZWYgcnVuKHNl
bGYsIHN0YXRlKToKQEAgLTQ2LDcgKzQ4LDE0IEBAIGNsYXNzIENoZWNrU3R5bGUoQWJzdHJhY3RT
dGVwKToKICAgICAgICAgICAgIHJldHVybgogICAgICAgICBvcy5jaGRpcihzZWxmLl90b29sLnNj
bSgpLmNoZWNrb3V0X3Jvb3QpCiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIHNlbGYuX3J1bl9z
Y3JpcHQoImNoZWNrLXdlYmtpdC1zdHlsZSIpCisgICAgICAgICAgICBhcmdzID0gW10KKyAgICAg
ICAgICAgIGlmIHNlbGYuX29wdGlvbnMuZ2l0X2NvbW1pdDoKKyAgICAgICAgICAgICAgICBhcmdz
LmFwcGVuZCgiLS1naXQtY29tbWl0IikKKyAgICAgICAgICAgICAgICBhcmdzLmFwcGVuZChzZWxm
Ll9vcHRpb25zLmdpdF9jb21taXQpCisgICAgICAgICAgICBpZiBzZWxmLl90b29sLnNjbSgpLnNo
b3VsZF9zcXVhc2goKToKKyAgICAgICAgICAgICAgICBhcmdzLmFwcGVuZCgiLS1zcXVhc2giKQor
CisgICAgICAgICAgICBzZWxmLl9ydW5fc2NyaXB0KCJjaGVjay13ZWJraXQtc3R5bGUiLCBhcmdz
KQogICAgICAgICBleGNlcHQgU2NyaXB0RXJyb3IsIGU6CiAgICAgICAgICAgICBpZiBzZWxmLl9v
cHRpb25zLm5vbl9pbnRlcmFjdGl2ZToKICAgICAgICAgICAgICAgICAjIFdlIG5lZWQgdG8gcmUt
cmFpc2UgdGhlIGV4Y2VwdGlvbiBoZXJlIHRvIGhhdmUgdGhlCmRpZmYgLS1naXQgYS9XZWJLaXRU
b29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvY29tbWl0LnB5IGIvV2ViS2l0VG9vbHMv
U2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL2NvbW1pdC5weQppbmRleCBiZDVjOTk4Li4xNTQ0
YThmIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMv
Y29tbWl0LnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9j
b21taXQucHkKQEAgLTI3LDkgKzI3LDE3IEBACiAjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKIGZyb20gd2Via2l0
cHkudG9vbC5zdGVwcy5hYnN0cmFjdHN0ZXAgaW1wb3J0IEFic3RyYWN0U3RlcAorZnJvbSB3ZWJr
aXRweS50b29sLnN0ZXBzLm9wdGlvbnMgaW1wb3J0IE9wdGlvbnMKIAogCiBjbGFzcyBDb21taXQo
QWJzdHJhY3RTdGVwKToKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgb3B0aW9ucyhjbHMpOgor
ICAgICAgICByZXR1cm4gWworICAgICAgICAgICAgT3B0aW9ucy5naXRfY29tbWl0LAorICAgICAg
ICAgICAgT3B0aW9ucy5zcXVhc2gsCisgICAgICAgIF0KKwogICAgIGRlZiBydW4oc2VsZiwgc3Rh
dGUpOgogICAgICAgICBjb21taXRfbWVzc2FnZSA9IHNlbGYuX3Rvb2wuY2hlY2tvdXQoKS5jb21t
aXRfbWVzc2FnZV9mb3JfdGhpc19jb21taXQoKQogICAgICAgICBzdGF0ZVsiY29tbWl0X3RleHQi
XSA9ICBzZWxmLl90b29sLnNjbSgpLmNvbW1pdF93aXRoX21lc3NhZ2UoY29tbWl0X21lc3NhZ2Uu
bWVzc2FnZSgpKQpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29s
L3N0ZXBzL29wdGlvbnMucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3Rl
cHMvb3B0aW9ucy5weQppbmRleCBlYTQzZDZkLi4wYWJjYmY4IDEwMDY0NAotLS0gYS9XZWJLaXRU
b29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvb3B0aW9ucy5weQorKysgYi9XZWJLaXRU
b29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvb3B0aW9ucy5weQpAQCAtNDEsNiArNDEs
OCBAQCBjbGFzcyBPcHRpb25zKG9iamVjdCk6CiAgICAgZGVzY3JpcHRpb24gPSBtYWtlX29wdGlv
bigiLW0iLCAiLS1kZXNjcmlwdGlvbiIsIGFjdGlvbj0ic3RvcmUiLCB0eXBlPSJzdHJpbmciLCBk
ZXN0PSJkZXNjcmlwdGlvbiIsIGhlbHA9IkRlc2NyaXB0aW9uIHN0cmluZyBmb3IgdGhlIGF0dGFj
aG1lbnQgKGRlZmF1bHQ6IFwicGF0Y2hcIikiKQogICAgIGVtYWlsID0gbWFrZV9vcHRpb24oIi0t
ZW1haWwiLCBhY3Rpb249InN0b3JlIiwgdHlwZT0ic3RyaW5nIiwgZGVzdD0iZW1haWwiLCBoZWxw
PSJFbWFpbCBhZGRyZXNzIHRvIHVzZSBpbiBDaGFuZ2VMb2dzLiIpCiAgICAgZm9yY2VfY2xlYW4g
PSBtYWtlX29wdGlvbigiLS1mb3JjZS1jbGVhbiIsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsIGRlc3Q9
ImZvcmNlX2NsZWFuIiwgZGVmYXVsdD1GYWxzZSwgaGVscD0iQ2xlYW4gd29ya2luZyBkaXJlY3Rv
cnkgYmVmb3JlIGFwcGx5aW5nIHBhdGNoZXMgKHJlbW92ZXMgbG9jYWwgY2hhbmdlcyBhbmQgY29t
bWl0cykiKQorIyBGSVhNRTogTWFrZSBnaXRfY29tbWl0IGEgZ2l0X2NvbW1pdGlzaCB0aGF0IHRh
a2VzIGNvbW1pdCByYW5nZXMuCisgICAgZ2l0X2NvbW1pdCA9IG1ha2Vfb3B0aW9uKCItLWdpdC1j
b21taXQiLCBhY3Rpb249InN0b3JlIiwgZGVzdD0iZ2l0X2NvbW1pdCIsIGhlbHA9IkxvY2FsIGdp
dCBjb21taXQgdG8gdXBsb2FkL2xhbmQuIikKICAgICBsb2NhbF9jb21taXQgPSBtYWtlX29wdGlv
bigiLS1sb2NhbC1jb21taXQiLCBhY3Rpb249InN0b3JlX3RydWUiLCBkZXN0PSJsb2NhbF9jb21t
aXQiLCBkZWZhdWx0PUZhbHNlLCBoZWxwPSJNYWtlIGEgbG9jYWwgY29tbWl0IGZvciBlYWNoIGFw
cGxpZWQgcGF0Y2giKQogICAgIG5vbl9pbnRlcmFjdGl2ZSA9IG1ha2Vfb3B0aW9uKCItLW5vbi1p
bnRlcmFjdGl2ZSIsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsIGRlc3Q9Im5vbl9pbnRlcmFjdGl2ZSIs
IGRlZmF1bHQ9RmFsc2UsIGhlbHA9Ik5ldmVyIHByb21wdCB0aGUgdXNlciwgZmFpbCBhcyBmYXN0
IGFzIHBvc3NpYmxlLiIpCiAgICAgb2Jzb2xldGVfcGF0Y2hlcyA9IG1ha2Vfb3B0aW9uKCItLW5v
LW9ic29sZXRlIiwgYWN0aW9uPSJzdG9yZV9mYWxzZSIsIGRlc3Q9Im9ic29sZXRlX3BhdGNoZXMi
LCBkZWZhdWx0PVRydWUsIGhlbHA9IkRvIG5vdCBvYnNvbGV0ZSBvbGQgcGF0Y2hlcyBiZWZvcmUg
cG9zdGluZyB0aGlzIG9uZS4iKQpAQCAtNTEsNSArNTMsNiBAQCBjbGFzcyBPcHRpb25zKG9iamVj
dCk6CiAgICAgcmVxdWVzdF9jb21taXQgPSBtYWtlX29wdGlvbigiLS1yZXF1ZXN0LWNvbW1pdCIs
IGFjdGlvbj0ic3RvcmVfdHJ1ZSIsIGRlc3Q9InJlcXVlc3RfY29tbWl0IiwgZGVmYXVsdD1GYWxz
ZSwgaGVscD0iTWFyayB0aGUgcGF0Y2ggYXMgbmVlZGluZyBhdXRvLWNvbW1pdCBhZnRlciByZXZp
ZXcuIikKICAgICByZXZpZXcgPSBtYWtlX29wdGlvbigiLS1uby1yZXZpZXciLCBhY3Rpb249InN0
b3JlX2ZhbHNlIiwgZGVzdD0icmV2aWV3IiwgZGVmYXVsdD1UcnVlLCBoZWxwPSJEbyBub3QgbWFy
ayB0aGUgcGF0Y2ggZm9yIHJldmlldy4iKQogICAgIHJldmlld2VyID0gbWFrZV9vcHRpb24oIi1y
IiwgIi0tcmV2aWV3ZXIiLCBhY3Rpb249InN0b3JlIiwgdHlwZT0ic3RyaW5nIiwgZGVzdD0icmV2
aWV3ZXIiLCBoZWxwPSJVcGRhdGUgQ2hhbmdlTG9ncyB0byBzYXkgUmV2aWV3ZWQgYnkgUkVWSUVX
RVIuIikKKyAgICBzcXVhc2ggPSBtYWtlX29wdGlvbigiLXMiLCAiLS1zcXVhc2giLCBhY3Rpb249
InN0b3JlX3RydWUiLCBkZXN0PSJzcXVhc2giLCBoZWxwPSJTcXVhc2ggYWxsIGxvY2FsIGNvbW1p
dHMgaW50byBvbmUgb24gdXBsb2FkL2xhbmQgKGdpdC1vbmx5KS4iKQogICAgIHRlc3QgPSBtYWtl
X29wdGlvbigiLS1uby10ZXN0IiwgYWN0aW9uPSJzdG9yZV9mYWxzZSIsIGRlc3Q9InRlc3QiLCBk
ZWZhdWx0PVRydWUsIGhlbHA9IkNvbW1pdCB3aXRob3V0IHJ1bm5pbmcgcnVuLXdlYmtpdC10ZXN0
cy4iKQogICAgIHVwZGF0ZSA9IG1ha2Vfb3B0aW9uKCItLW5vLXVwZGF0ZSIsIGFjdGlvbj0ic3Rv
cmVfZmFsc2UiLCBkZXN0PSJ1cGRhdGUiLCBkZWZhdWx0PVRydWUsIGhlbHA9IkRvbid0IHVwZGF0
ZSB0aGUgd29ya2luZyBkaXJlY3RvcnkuIikKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvdG9vbC9zdGVwcy9wb3N0ZGlmZi5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMv
d2Via2l0cHkvdG9vbC9zdGVwcy9wb3N0ZGlmZi5weQppbmRleCBlZjhmNGM4Li4yZmViMWFlIDEw
MDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvcG9zdGRp
ZmYucHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL3Bvc3Rk
aWZmLnB5CkBAIC00MCw2ICs0MCw4IEBAIGNsYXNzIFBvc3REaWZmKEFic3RyYWN0U3RlcCk6CiAg
ICAgICAgICAgICBPcHRpb25zLnJldmlldywKICAgICAgICAgICAgIE9wdGlvbnMucmVxdWVzdF9j
b21taXQsCiAgICAgICAgICAgICBPcHRpb25zLm9wZW5fYnVnLAorICAgICAgICAgICAgT3B0aW9u
cy5naXRfY29tbWl0LAorICAgICAgICAgICAgT3B0aW9ucy5zcXVhc2gsCiAgICAgICAgIF0KIAog
ICAgIGRlZiBydW4oc2VsZiwgc3RhdGUpOgpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0
cy93ZWJraXRweS90b29sL3N0ZXBzL3ByZXBhcmVjaGFuZ2Vsb2cucHkgYi9XZWJLaXRUb29scy9T
Y3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvcHJlcGFyZWNoYW5nZWxvZy5weQppbmRleCBmY2I0
MGJlLi5jYWE2OWU2IDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rv
b2wvc3RlcHMvcHJlcGFyZWNoYW5nZWxvZy5weQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dl
YmtpdHB5L3Rvb2wvc3RlcHMvcHJlcGFyZWNoYW5nZWxvZy5weQpAQCAtNDEsNiArNDEsOCBAQCBj
bGFzcyBQcmVwYXJlQ2hhbmdlTG9nKEFic3RyYWN0U3RlcCk6CiAgICAgICAgICAgICBPcHRpb25z
LnBvcnQsCiAgICAgICAgICAgICBPcHRpb25zLnF1aWV0LAogICAgICAgICAgICAgT3B0aW9ucy5l
bWFpbCwKKyAgICAgICAgICAgIE9wdGlvbnMuZ2l0X2NvbW1pdCwKKyAgICAgICAgICAgIE9wdGlv
bnMuc3F1YXNoLAogICAgICAgICBdCiAKICAgICBkZWYgcnVuKHNlbGYsIHN0YXRlKToKQEAgLTUy
LDYgKzU0LDExIEBAIGNsYXNzIFByZXBhcmVDaGFuZ2VMb2coQWJzdHJhY3RTdGVwKToKICAgICAg
ICAgICAgIGFyZ3MuYXBwZW5kKCItLWJ1Zz0lcyIgJSBzdGF0ZVsiYnVnX2lkIl0pCiAgICAgICAg
IGlmIHNlbGYuX29wdGlvbnMuZW1haWw6CiAgICAgICAgICAgICBhcmdzLmFwcGVuZCgiLS1lbWFp
bD0lcyIgJSBzZWxmLl9vcHRpb25zLmVtYWlsKQorICAgICAgICBpZiBzZWxmLl90b29sLnNjbSgp
LnN1cHBvcnRzX2xvY2FsX2NvbW1pdHMoKSBhbmQgc2VsZi5fdG9vbC5zY20oKS5zaG91bGRfc3F1
YXNoKCk6CisgICAgICAgICAgICBhcmdzLmFwcGVuZCgiLS1tZXJnZS1iYXNlPSVzIiAlIHNlbGYu
X3Rvb2wuc2NtKCkuc3ZuX21lcmdlX2Jhc2UoKSkKKyAgICAgICAgaWYgc2VsZi5fb3B0aW9ucy5n
aXRfY29tbWl0OgorICAgICAgICAgICAgYXJncy5hcHBlbmQoIi0tZ2l0LWNvbW1pdD0lcyIgJSBz
ZWxmLl9vcHRpb25zLmdpdF9jb21taXQpCisKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgc2Vs
Zi5fdG9vbC5leGVjdXRpdmUucnVuX2FuZF90aHJvd19pZl9mYWlsKGFyZ3MsIHNlbGYuX29wdGlv
bnMucXVpZXQpCiAgICAgICAgIGV4Y2VwdCBTY3JpcHRFcnJvciwgZToK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>52542</attachid>
            <date>2010-04-05 10:48:39 -0700</date>
            <delta_ts>2010-04-05 11:01:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-36394-20100405104838.patch</filename>
            <type>text/plain</type>
            <size>2708</size>
            <attacher name="Ojan Vafai">ojan</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCA0NDMyNDk1Li40M2IxNWE1IDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9DaGFuZ2VM
b2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTAtMDQt
MDUgIE9qYW4gVmFmYWkgIDxvamFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBwcmVwYXJlLUNoYW5nZUxvZyBzaG91bGQgdGFr
ZSBhIG1lcmdlLWJhc2UgZm9yIHdoaWNoIGdpdCBicmFuY2ggdG8gZGlmZiBhZ2FpbnN0LgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzYzOTQKKworICAg
ICAgICAqIFNjcmlwdHMvcHJlcGFyZS1DaGFuZ2VMb2c6CisKIDIwMTAtMDQtMDEgIE9qYW4gVmFm
YWkgIDxvamFuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvcHJlcGFyZS1DaGFuZ2VMb2cg
Yi9XZWJLaXRUb29scy9TY3JpcHRzL3ByZXBhcmUtQ2hhbmdlTG9nCmluZGV4IDg3MGM0YjcuLmIw
ODdmNjcgMTAwNzU1Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvcHJlcGFyZS1DaGFuZ2VMb2cK
KysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy9wcmVwYXJlLUNoYW5nZUxvZwpAQCAtMTAyLDYgKzEw
Miw3IEBAIG15ICRjaGFuZ2VMb2dUaW1lWm9uZSA9ICJQU1Q4UERUIjsKIG15ICRidWdOdW1iZXI7
CiBteSAkbmFtZTsKIG15ICRlbWFpbEFkZHJlc3M7CitteSAkbWVyZ2VCYXNlID0gMDsKIG15ICRn
aXRDb21taXQgPSAwOwogbXkgJGdpdEluZGV4ID0gIiI7CiBteSAkZ2l0UmV2aWV3ZXIgPSAiIjsK
QEAgLTExNSw2ICsxMTYsNyBAQCBteSAkcGFyc2VPcHRpb25zUmVzdWx0ID0KICAgICAgICAgICAg
ICAgICJidWc6aSIgPT4gXCRidWdOdW1iZXIsCiAgICAgICAgICAgICAgICAibmFtZTpzIiA9PiBc
JG5hbWUsCiAgICAgICAgICAgICAgICAiZW1haWw6cyIgPT4gXCRlbWFpbEFkZHJlc3MsCisgICAg
ICAgICAgICAgICAibWVyZ2UtYmFzZTpzIiA9PiBcJG1lcmdlQmFzZSwKICAgICAgICAgICAgICAg
ICJnaXQtY29tbWl0OnMiID0+IFwkZ2l0Q29tbWl0LAogICAgICAgICAgICAgICAgImdpdC1pbmRl
eCIgPT4gXCRnaXRJbmRleCwKICAgICAgICAgICAgICAgICJnaXQtcmV2aWV3ZXI6cyIgPT4gXCRn
aXRSZXZpZXdlciwKQEAgLTEyNiw2ICsxMjgsNyBAQCBpZiAoISRwYXJzZU9wdGlvbnNSZXN1bHQg
fHwgJHNob3dIZWxwKSB7CiAgICAgcHJpbnQgU1RERVJSIGJhc2VuYW1lKCQwKSAuICIgWy0tYnVn
XSBbLWR8LS1kaWZmXSBbLWh8LS1oZWxwXSBbLW98LS1vcGVuXSBbLS1naXQtY29tbWl0PTxjb21t
aXR0aXNoPl0gWy0tZ2l0LXJldmlld2VyPTxuYW1lPl0gW3N2bmRpcjEgW3N2bmRpcjIgLi4uXV1c
biI7CiAgICAgcHJpbnQgU1RERVJSICIgIC0tYnVnICAgICAgICAgIEZpbGwgaW4gdGhlIENoYW5n
ZUxvZyBidWcgaW5mb3JtYXRpb24gZnJvbSB0aGUgZ2l2ZW4gYnVnLlxuIjsKICAgICBwcmludCBT
VERFUlIgIiAgLWR8LS1kaWZmICAgICAgU3BldyBkaWZmIHRvIHN0ZG91dCB3aGVuIHJ1bm5pbmdc
biI7CisgICAgcHJpbnQgU1RERVJSICIgIC0tbWVyZ2UtYmFzZSAgIFBvcHVsYXRlIHRoZSBDaGFu
Z2VMb2dzIHdpdGggdGhlIGRpZmYgdG8gdGhpcyBicmFuY2hcbiI7CiAgICAgcHJpbnQgU1RERVJS
ICIgIC0tZ2l0LWNvbW1pdCAgIFBvcHVsYXRlIHRoZSBDaGFuZ2VMb2dzIGZyb20gdGhlIHNwZWNp
ZmllZCBnaXQgY29tbWl0XG4iOwogICAgIHByaW50IFNUREVSUiAiICAtLWdpdC1pbmRleCAgICBQ
b3B1bGF0ZSB0aGUgQ2hhbmdlTG9ncyBmcm9tIHRoZSBnaXQgaW5kZXggb25seVxuIjsKICAgICBw
cmludCBTVERFUlIgIiAgLS1naXQtcmV2aWV3ZXIgV2hlbiBwb3B1bGF0aW5nIHRoZSBDaGFuZ2VM
b2dzIGZyb20gYSBnaXQgY29tbWl0IGNsYWltIHRoYXQgdGhlIHNwY2lmaWVkIG5hbWUgcmV2aWV3
ZWQgdGhlIGNoYW5nZS5cbiI7CkBAIC0xMjU0LDYgKzEyNTcsNyBAQCBzdWIgZGlmZkZyb21Ub1N0
cmluZygpCiAgICAgcmV0dXJuICRnaXRDb21taXQgaWYgJGdpdENvbW1pdCA9fiBtLy4rXC5cLi4r
LzsKICAgICByZXR1cm4gIlwiJGdpdENvbW1pdF5cIiBcIiRnaXRDb21taXRcIiIgaWYgJGdpdENv
bW1pdDsKICAgICByZXR1cm4gIi0tY2FjaGVkIiBpZiAkZ2l0SW5kZXg7CisgICAgcmV0dXJuICRt
ZXJnZUJhc2UgaWYgJG1lcmdlQmFzZTsKICAgICByZXR1cm4gIkhFQUQiIGlmICRpc0dpdDsKIH0K
IApAQCAtMTI2OCw3ICsxMjcyLDcgQEAgc3ViIGRpZmZDb21tYW5kKEApCiAgICAgICAgICRjb21t
YW5kID0gIiRTVk4gZGlmZiAtLWRpZmYtY21kIGRpZmYgLXggLU4gJHBhdGhzU3RyaW5nIjsKICAg
ICB9IGVsc2lmICgkaXNHaXQpIHsKICAgICAgICAgJGNvbW1hbmQgPSAiJEdJVCBkaWZmIC0tbm8t
ZXh0LWRpZmYgLVUwICIgLiBkaWZmRnJvbVRvU3RyaW5nKCk7Ci0gICAgICAgICRjb21tYW5kIC49
ICIgLS0gJHBhdGhzU3RyaW5nIiB1bmxlc3MgJGdpdENvbW1pdDsKKyAgICAgICAgJGNvbW1hbmQg
Lj0gIiAtLSAkcGF0aHNTdHJpbmciIHVubGVzcyAkZ2l0Q29tbWl0IG9yICRtZXJnZUJhc2U7CiAg
ICAgfQogCiAgICAgcmV0dXJuICRjb21tYW5kOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>52686</attachid>
            <date>2010-04-06 17:26:28 -0700</date>
            <delta_ts>2010-04-20 11:17:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-36394-20100406172626.patch</filename>
            <type>text/plain</type>
            <size>60767</size>
            <attacher name="Ojan Vafai">ojan</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCA2Njc0MWI5Li5lMjgxNGZjIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9DaGFuZ2VM
b2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTUgQEAKKzIwMTAtMDQt
MDYgIE9qYW4gVmFmYWkgIDxvamFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbmNsdWRlIGdpdCBjb21taXRzIGluIHRoZSBk
aWZmIGZvciB3ZWJraXQtcGF0Y2ggdXBsb2FkL2xhbmQuCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNjM5NAorCisgICAgICAgIEFkZHMgLS1zcXVhc2gs
IC0tbm8tc3F1YXNoIGFuZCAtLWdpdC1jb21taXQuCisKKyAgICAgICAgLS1naXQtY29tbWl0IHdp
bGwgdXNlIGEgc3BlY2lmaWMgbG9jYWwgY29tbWl0IGZvciBsYW5kL3VwbG9hZC4KKyAgICAgICAg
SWYgYSBjb21taXQtcmFuZ2UgaXMgc3BlY2lmaWVkLCB0aGVuIHRoYXQgcmFuZ2UgaXMgdHJlYXRl
ZCBhcworICAgICAgICBhIHNpbmdsZSBzcXVhc2hlZCBjb21taXQuCisKKyAgICAgICAgLS1zcXVh
c2ggd2lsbCBzcXVhc2ggYWxsIGxvY2FsIGNoYW5nZXMgaW5jbHVkaW5nIHdvcmtpbmcgY29weSBj
aGFuZ2VzCisgICAgICAgIGludG8gYSBzaW5nbGUgcGF0Y2guCisgICAgICAgIAorICAgICAgICAt
LW5vLXNxdWFzaCBpcyB0aGUgbGVnYWN5IGJlaGF2aW9yICh1cGxvYWQgb25seSBjb25zaWRlcnMg
dGhlIHdvcmtpbmcgY29weSwKKyAgICAgICAgbGFuZCBjb21taXRzIHRoZSB3b3JraW5nIGNvcHkg
YW5kIHRoZW4gZWFjaCBsb2NhbCBjb21taXQgc2VwYXJhdGVseSB0byBTVk4pCisKKyAgICAgICAg
SWYgbmVpdGhlciBpcyBzcGVjaWZpZWQsIHRoZW4gdGhlIHVzZXIgaXMgcHJvbXB0ZWQgd2hlbmV2
ZXIgdGhlcmUgaXMgbW9yZSB0aGFuCisgICAgICAgIG9uZSBjb21taXQgYXZhaWxhYmxlIG9yIHdo
ZW4gdGhlcmUgYXJlIGxvY2FsIGNvbW1pdChzKSBhbmQgd29ya2luZworICAgICAgICBjb3B5IGNo
YW5nZXMuCisKKyAgICAgICAgSWYgdGhlIHdlYmtpdC1wYXRjaC5zcXVhc2ggZ2l0IGNvbmZpZyBw
YXJhbWV0ZXIgaXMgc2V0LCB0aGVuCisgICAgICAgIHRoYXQgd2lsbCBiZSByZXNwZWN0ZWQgaW5z
dGVhZCBvZiBwcm9tcHRpbmcgdGhlIHVzZXIuCisKKyAgICAgICAgKiBTY3JpcHRzL2NoZWNrLXdl
YmtpdC1zdHlsZToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9h
cGkucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvYXBpX3Vu
aXR0ZXN0LnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L3Nj
bS5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9zY21fdW5p
dHRlc3QucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9zdHlsZS9vcHRwYXJzZXIucHk6
CisgICAgICAgIC0tZ2l0LXNpbmNlIGlzIHJlbW92ZWQgYW5kIC0tZ2l0LWNvbW1pdCBubyBsb25n
ZXIgaW1wbGllcyBjb21taXRfaWQuLgorICAgICAgICBJbnN0ZWFkLCBpdCB0cmVhdHMgdGhhdCBp
bmRpdmlkdWFsIGNvbW1pdCwgYnV0IGFsc28gc3VwcG9ydHMgY29tbWl0IHJhbmdlcworICAgICAg
ICAoZS5nLiBjb21taXRfaWQuLikgYXMgYXJndW1lbnRzLgorICAgICAgICAqIFNjcmlwdHMvd2Vi
a2l0cHkvc3R5bGUvb3B0cGFyc2VyX3VuaXR0ZXN0LnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Vi
a2l0cHkvc3R5bGVfcmVmZXJlbmNlcy5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rv
b2wvY29tbWFuZHMvZG93bmxvYWQucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS90b29s
L2NvbW1hbmRzL3VwbG9hZC5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rvb2wvbWFp
bi5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rvb2wvbW9ja3Rvb2wucHk6CisgICAg
ICAgICogU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL2Fic3RyYWN0c3RlcC5weToKKyAgICAg
ICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvYXBwbHlwYXRjaHdpdGhsb2NhbGNvbW1p
dC5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvY2hlY2tzdHlsZS5w
eToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvY29tbWl0LnB5OgorICAg
ICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9vcHRpb25zLnB5OgorICAgICAgICAq
IFNjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9wb3N0ZGlmZi5weToKKyAgICAgICAgKiBTY3Jp
cHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvcHJlcGFyZWNoYW5nZWxvZy5weToKKyAgICAgICAgKiBT
Y3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvcHJlcGFyZWNoYW5nZWxvZ2ZvcnJldmVydC5weToK
KyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvdXBkYXRlY2hhbmdlbG9nc3dp
dGhyZXZpZXdlci5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvdmFs
aWRhdGVyZXZpZXdlci5weToKKwogMjAxMC0wNC0wNiAgTGFzemxvIEdvbWJvcyAgPGxhc3psby4x
LmdvbWJvc0Bub2tpYS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBSb2hkZSBD
aHJpc3RpYW5zZW4uCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL2NoZWNrLXdlYmtp
dC1zdHlsZSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvY2hlY2std2Via2l0LXN0eWxlCmluZGV4IDk1
ZmZmNzkuLmViMGFmMTQgMTAwNzU1Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvY2hlY2std2Vi
a2l0LXN0eWxlCisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvY2hlY2std2Via2l0LXN0eWxlCkBA
IC04MywyNCArODMsMjQgQEAgZGVmIG1haW4oKToKICAgICBjaGVja2VyLmNvbmZpZ3VyZV9sb2dn
aW5nKHN0cmVhbT1zdGRlcnIsIGlzX3ZlcmJvc2U9aXNfdmVyYm9zZSkKICAgICBfbG9nLmRlYnVn
KCJWZXJib3NlIGxvZ2dpbmcgZW5hYmxlZC4iKQogCisgICAgcGFyc2VyID0gY2hlY2tlci5jaGVj
a193ZWJraXRfc3R5bGVfcGFyc2VyKCkKKyAgICAocGF0aHMsIG9wdGlvbnMpID0gcGFyc2VyLnBh
cnNlKGFyZ3MpCisKICAgICBjaGVja291dCA9IGRldGVjdF9jaGVja291dCgpCiAKICAgICBpZiBj
aGVja291dCBpcyBOb25lOgorICAgICAgICBpZiBub3QgcGF0aHM6CisgICAgICAgICAgICBfbG9n
LmVycm9yKCJXZWJLaXQgY2hlY2tvdXQgbm90IGZvdW5kOiBZb3UgbXVzdCBydW4gdGhpcyBzY3Jp
cHQgIgorICAgICAgICAgICAgICAgICAgICAgICAiZnJvbSB3aXRoaW4gYSBXZWJLaXQgY2hlY2tv
dXQgaWYgeW91IGFyZSBub3QgcGFzc2luZyAiCisgICAgICAgICAgICAgICAgICAgICAgICJzcGVj
aWZpYyBwYXRocyB0byBjaGVjay4iKQorICAgICAgICAgICAgc3lzLmV4aXQoMSkKKwogICAgICAg
ICBjaGVja291dF9yb290ID0gTm9uZQogICAgICAgICBfbG9nLmRlYnVnKCJXZWJLaXQgY2hlY2tv
dXQgbm90IGZvdW5kIGZvciBjdXJyZW50IGRpcmVjdG9yeS4iKQogICAgIGVsc2U6CiAgICAgICAg
IGNoZWNrb3V0X3Jvb3QgPSBjaGVja291dC5yb290X3BhdGgoKQogICAgICAgICBfbG9nLmRlYnVn
KCJXZWJLaXQgY2hlY2tvdXQgZm91bmQgd2l0aCByb290OiAlcyIgJSBjaGVja291dF9yb290KQog
Ci0gICAgcGFyc2VyID0gY2hlY2tlci5jaGVja193ZWJraXRfc3R5bGVfcGFyc2VyKCkKLSAgICAo
cGF0aHMsIG9wdGlvbnMpID0gcGFyc2VyLnBhcnNlKGFyZ3MpCi0KLSAgICBpZiBjaGVja291dCBp
cyBOb25lIGFuZCBub3QgcGF0aHM6Ci0gICAgICAgIF9sb2cuZXJyb3IoIldlYktpdCBjaGVja291
dCBub3QgZm91bmQ6IFlvdSBtdXN0IHJ1biB0aGlzIHNjcmlwdCAiCi0gICAgICAgICAgICAgICAg
ICAgImZyb20gd2l0aGluIGEgV2ViS2l0IGNoZWNrb3V0IGlmIHlvdSBhcmUgbm90IHBhc3Npbmcg
IgotICAgICAgICAgICAgICAgICAgICJzcGVjaWZpYyBwYXRocyB0byBjaGVjay4iKQotICAgICAg
ICBzeXMuZXhpdCgxKQotCiAgICAgY29uZmlndXJhdGlvbiA9IGNoZWNrZXIuY2hlY2tfd2Via2l0
X3N0eWxlX2NvbmZpZ3VyYXRpb24ob3B0aW9ucykKICAgICBzdHlsZV9jaGVja2VyID0gY2hlY2tl
ci5TdHlsZUNoZWNrZXIoY29uZmlndXJhdGlvbikKIApAQCAtMTA5LDEwICsxMDksNyBAQCBkZWYg
bWFpbigpOgogICAgIGlmIHBhdGhzOgogICAgICAgICBzdHlsZV9jaGVja2VyLmNoZWNrX3BhdGhz
KHBhdGhzKQogICAgIGVsc2U6Ci0gICAgICAgIGlmIG9wdGlvbnMuZ2l0X2NvbW1pdDoKLSAgICAg
ICAgICAgIHBhdGNoID0gY2hlY2tvdXQuY3JlYXRlX3BhdGNoX3NpbmNlX2xvY2FsX2NvbW1pdChv
cHRpb25zLmdpdF9jb21taXQpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBwYXRjaCA9IGNo
ZWNrb3V0LmNyZWF0ZV9wYXRjaCgpCisgICAgICAgIHBhdGNoID0gY2hlY2tvdXQuY3JlYXRlX3Bh
dGNoKG9wdGlvbnMuZ2l0X2NvbW1pdCwgb3B0aW9ucy5zcXVhc2gpCiAgICAgICAgIHN0eWxlX2No
ZWNrZXIuY2hlY2tfcGF0Y2gocGF0Y2gpCiAKICAgICBlcnJvcl9jb3VudCA9IHN0eWxlX2NoZWNr
ZXIuZXJyb3JfY291bnQKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkv
Y29tbW9uL2NoZWNrb3V0L2FwaS5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29t
bW9uL2NoZWNrb3V0L2FwaS5weQppbmRleCA1NzQxOGRjLi44ZjJjNTU5IDEwMDY0NAotLS0gYS9X
ZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9hcGkucHkKKysrIGIv
V2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvYXBpLnB5CkBAIC03
OCwxNiArNzgsMTYgQEAgY2xhc3MgQ2hlY2tvdXQob2JqZWN0KToKICAgICBkZWYgYnVnX2lkX2Zv
cl9yZXZpc2lvbihzZWxmLCByZXZpc2lvbik6CiAgICAgICAgIHJldHVybiBzZWxmLmNvbW1pdF9p
bmZvX2Zvcl9yZXZpc2lvbihyZXZpc2lvbikuYnVnX2lkKCkKIAotICAgIGRlZiBtb2RpZmllZF9j
aGFuZ2Vsb2dzKHNlbGYpOgorICAgIGRlZiBtb2RpZmllZF9jaGFuZ2Vsb2dzKHNlbGYsIGdpdF9j
b21taXQsIHNxdWFzaCk6CiAgICAgICAgICMgU0NNIHJldHVybnMgcGF0aHMgcmVsYXRpdmUgdG8g
c2NtLmNoZWNrb3V0X3Jvb3QKICAgICAgICAgIyBDYWxsZXJzIChlc3BlY2lhbGx5IHRob3NlIHVz
aW5nIHRoZSBDaGFuZ2VMb2cgY2xhc3MpIG1heQogICAgICAgICAjIGV4cGVjdCBhYnNvbHV0ZSBw
YXRocywgc28gdGhpcyBtZXRob2QgcmV0dXJucyBhYnNvbHV0ZSBwYXRocy4KLSAgICAgICAgY2hh
bmdlZF9maWxlcyA9IHNlbGYuX3NjbS5jaGFuZ2VkX2ZpbGVzKCkKKyAgICAgICAgY2hhbmdlZF9m
aWxlcyA9IHNlbGYuX3NjbS5jaGFuZ2VkX2ZpbGVzKGdpdF9jb21taXQsIHNxdWFzaCkKICAgICAg
ICAgYWJzb2x1dGVfcGF0aHMgPSBbb3MucGF0aC5qb2luKHNlbGYuX3NjbS5jaGVja291dF9yb290
LCBwYXRoKSBmb3IgcGF0aCBpbiBjaGFuZ2VkX2ZpbGVzXQogICAgICAgICByZXR1cm4gW3BhdGgg
Zm9yIHBhdGggaW4gYWJzb2x1dGVfcGF0aHMgaWYgc2VsZi5faXNfcGF0aF90b19jaGFuZ2Vsb2co
cGF0aCldCiAKLSAgICBkZWYgY29tbWl0X21lc3NhZ2VfZm9yX3RoaXNfY29tbWl0KHNlbGYpOgot
ICAgICAgICBjaGFuZ2Vsb2dfcGF0aHMgPSBzZWxmLm1vZGlmaWVkX2NoYW5nZWxvZ3MoKQorICAg
IGRlZiBjb21taXRfbWVzc2FnZV9mb3JfdGhpc19jb21taXQoc2VsZiwgZ2l0X2NvbW1pdCwgc3F1
YXNoKToKKyAgICAgICAgY2hhbmdlbG9nX3BhdGhzID0gc2VsZi5tb2RpZmllZF9jaGFuZ2Vsb2dz
KGdpdF9jb21taXQsIHNxdWFzaCkKICAgICAgICAgaWYgbm90IGxlbihjaGFuZ2Vsb2dfcGF0aHMp
OgogICAgICAgICAgICAgcmFpc2UgU2NyaXB0RXJyb3IobWVzc2FnZT0iRm91bmQgbm8gbW9kaWZp
ZWQgQ2hhbmdlTG9ncywgY2Fubm90IGNyZWF0ZSBhIGNvbW1pdCBtZXNzYWdlLlxuIgogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIkFsbCBjaGFuZ2VzIHJlcXVpcmUgYSBDaGFuZ2VMb2cu
ICBTZWU6XG4iCkBAIC0xMDQsOSArMTA0LDkgQEAgY2xhc3MgQ2hlY2tvdXQob2JqZWN0KToKICAg
ICAgICAgIyBGSVhNRTogV2Ugc2hvdWxkIHNvcnQgYW5kIGxhYmVsIHRoZSBDaGFuZ2VMb2cgbWVz
c2FnZXMgbGlrZSBjb21taXQtbG9nLWVkaXRvciBkb2VzLgogICAgICAgICByZXR1cm4gQ29tbWl0
TWVzc2FnZSgiIi5qb2luKGNoYW5nZWxvZ19tZXNzYWdlcykuc3BsaXRsaW5lcygpKQogCi0gICAg
ZGVmIGJ1Z19pZF9mb3JfdGhpc19jb21taXQoc2VsZik6CisgICAgZGVmIGJ1Z19pZF9mb3JfdGhp
c19jb21taXQoc2VsZiwgZ2l0X2NvbW1pdCwgc3F1YXNoKToKICAgICAgICAgdHJ5OgotICAgICAg
ICAgICAgcmV0dXJuIHBhcnNlX2J1Z19pZChzZWxmLmNvbW1pdF9tZXNzYWdlX2Zvcl90aGlzX2Nv
bW1pdCgpLm1lc3NhZ2UoKSkKKyAgICAgICAgICAgIHJldHVybiBwYXJzZV9idWdfaWQoc2VsZi5j
b21taXRfbWVzc2FnZV9mb3JfdGhpc19jb21taXQoZ2l0X2NvbW1pdCwgc3F1YXNoKS5tZXNzYWdl
KCkpCiAgICAgICAgIGV4Y2VwdCBTY3JpcHRFcnJvciwgZToKICAgICAgICAgICAgIHBhc3MgIyBX
ZSBtaWdodCBub3QgaGF2ZSBDaGFuZ2VMb2dzLgogCkBAIC0xMjUsMTEgKzEyNSwxNCBAQCBjbGFz
cyBDaGVja291dChvYmplY3QpOgogICAgICAgICBydW5fY29tbWFuZChhcmdzLCBpbnB1dD1jdXJs
X3Byb2Nlc3Muc3Rkb3V0KQogCiAgICAgZGVmIGFwcGx5X3JldmVyc2VfZGlmZihzZWxmLCByZXZp
c2lvbik6CisgICAgICAgIGlmIG5vdCBzZWxmLl9zY20ud29ya2luZ19kaXJlY3RvcnlfaXNfY2xl
YW4oKToKKyAgICAgICAgICAgIHJhaXNlIFNjcmlwdEVycm9yKG1lc3NhZ2U9IldvcmtpbmcgZGly
ZWN0b3J5IG11c3QgYmUgY2xlYW4gdG8gcmV2ZXJ0IGEgcmV2aXNpb24uIikKKwogICAgICAgICBz
ZWxmLl9zY20uYXBwbHlfcmV2ZXJzZV9kaWZmKHJldmlzaW9uKQogCiAgICAgICAgICMgV2UgcmV2
ZXJ0IHRoZSBDaGFuZ2VMb2dzIGJlY2F1c2UgcmVtb3ZpbmcgbGluZXMgZnJvbSBhIENoYW5nZUxv
ZwogICAgICAgICAjIGRvZXNuJ3QgbWFrZSBzZW5zZS4gIENoYW5nZUxvZ3MgYXJlIGFwcGVuZCBv
bmx5LgotICAgICAgICBjaGFuZ2Vsb2dfcGF0aHMgPSBzZWxmLm1vZGlmaWVkX2NoYW5nZWxvZ3Mo
KQorICAgICAgICBjaGFuZ2Vsb2dfcGF0aHMgPSBzZWxmLm1vZGlmaWVkX2NoYW5nZWxvZ3MoZ2l0
X2NvbW1pdD1Ob25lLCBzcXVhc2g9RmFsc2UpCiAgICAgICAgIGlmIGxlbihjaGFuZ2Vsb2dfcGF0
aHMpOgogICAgICAgICAgICAgc2VsZi5fc2NtLnJldmVydF9maWxlcyhjaGFuZ2Vsb2dfcGF0aHMp
CiAKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNr
b3V0L2FwaV91bml0dGVzdC5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9u
L2NoZWNrb3V0L2FwaV91bml0dGVzdC5weQppbmRleCAzNTZiNjg4Li5lNjQzYjUzIDEwMDY0NAot
LS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9hcGlfdW5p
dHRlc3QucHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tv
dXQvYXBpX3VuaXR0ZXN0LnB5CkBAIC0xMTEsMTAgKzExMSwxMSBAQCBjbGFzcyBDb21taXRNZXNz
YWdlRm9yVGhpc0NvbW1pdFRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICMgQ2hhbmdlTG9n
IGlzIGRpZmZpY3VsdCB0byBtb2NrIGF0IGN1cnJlbnQuCiAgICAgZGVmIHRlc3RfY29tbWl0X21l
c3NhZ2VfZm9yX3RoaXNfY29tbWl0KHNlbGYpOgogICAgICAgICBjaGVja291dCA9IENoZWNrb3V0
KE5vbmUpCi0gICAgICAgIGNoZWNrb3V0Lm1vZGlmaWVkX2NoYW5nZWxvZ3MgPSBsYW1iZGE6IFsi
Q2hhbmdlTG9nMSIsICJDaGFuZ2VMb2cyIl0KKyAgICAgICAgY2hlY2tvdXQubW9kaWZpZWRfY2hh
bmdlbG9ncyA9IGxhbWJkYSBnaXRfY29tbWl0LCBzcXVhc2g6IFsiQ2hhbmdlTG9nMSIsICJDaGFu
Z2VMb2cyIl0KICAgICAgICAgb3V0cHV0ID0gT3V0cHV0Q2FwdHVyZSgpCiAgICAgICAgIGV4cGVj
dGVkX3N0ZGVyciA9ICJQYXJzaW5nIENoYW5nZUxvZzogQ2hhbmdlTG9nMVxuUGFyc2luZyBDaGFu
Z2VMb2c6IENoYW5nZUxvZzJcbiIKLSAgICAgICAgY29tbWl0X21lc3NhZ2UgPSBvdXRwdXQuYXNz
ZXJ0X291dHB1dHMoc2VsZiwgY2hlY2tvdXQuY29tbWl0X21lc3NhZ2VfZm9yX3RoaXNfY29tbWl0
LCBleHBlY3RlZF9zdGRlcnI9ZXhwZWN0ZWRfc3RkZXJyKQorICAgICAgICBjb21taXRfbWVzc2Fn
ZSA9IG91dHB1dC5hc3NlcnRfb3V0cHV0cyhzZWxmLCBjaGVja291dC5jb21taXRfbWVzc2FnZV9m
b3JfdGhpc19jb21taXQsCisgICAgICAgICAgICBrd2FyZ3M9eyJnaXRfY29tbWl0IjogTm9uZSwg
InNxdWFzaCI6IEZhbHNlfSwgZXhwZWN0ZWRfc3RkZXJyPWV4cGVjdGVkX3N0ZGVycikKICAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChjb21taXRfbWVzc2FnZS5tZXNzYWdlKCksIHNlbGYuZXhwZWN0
ZWRfY29tbWl0X21lc3NhZ2UpCiAKIApAQCAtMTU0LDEzICsxNTUsMTMgQEAgY2xhc3MgQ2hlY2tv
dXRUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgdGVzdF9idWdfaWRfZm9yX3RoaXNf
Y29tbWl0KHNlbGYpOgogICAgICAgICBzY20gPSBNb2NrKCkKICAgICAgICAgY2hlY2tvdXQgPSBD
aGVja291dChzY20pCi0gICAgICAgIGNoZWNrb3V0LmNvbW1pdF9tZXNzYWdlX2Zvcl90aGlzX2Nv
bW1pdCA9IGxhbWJkYTogQ29tbWl0TWVzc2FnZShDaGFuZ2VMb2dFbnRyeShfY2hhbmdlbG9nMWVu
dHJ5MSkuY29udGVudHMoKS5zcGxpdGxpbmVzKCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
Y2hlY2tvdXQuYnVnX2lkX2Zvcl90aGlzX2NvbW1pdCgpLCAzNjYyOSkKKyAgICAgICAgY2hlY2tv
dXQuY29tbWl0X21lc3NhZ2VfZm9yX3RoaXNfY29tbWl0ID0gbGFtYmRhIGdpdF9jb21taXQsIHNx
dWFzaDogQ29tbWl0TWVzc2FnZShDaGFuZ2VMb2dFbnRyeShfY2hhbmdlbG9nMWVudHJ5MSkuY29u
dGVudHMoKS5zcGxpdGxpbmVzKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2hlY2tvdXQu
YnVnX2lkX2Zvcl90aGlzX2NvbW1pdChnaXRfY29tbWl0PU5vbmUsIHNxdWFzaD1GYWxzZSksIDM2
NjI5KQogCiAgICAgZGVmIHRlc3RfbW9kaWZpZWRfY2hhbmdlbG9ncyhzZWxmKToKICAgICAgICAg
c2NtID0gTW9jaygpCiAgICAgICAgIHNjbS5jaGVja291dF9yb290ID0gIi9mb28vYmFyIgotICAg
ICAgICBzY20uY2hhbmdlZF9maWxlcyA9IGxhbWJkYTpbImZpbGUxIiwgIkNoYW5nZUxvZyIsICJy
ZWxhdGl2ZS9wYXRoL0NoYW5nZUxvZyJdCisgICAgICAgIHNjbS5jaGFuZ2VkX2ZpbGVzID0gbGFt
YmRhIGdpdF9jb21taXQsIHNxdWFzaDogWyJmaWxlMSIsICJDaGFuZ2VMb2ciLCAicmVsYXRpdmUv
cGF0aC9DaGFuZ2VMb2ciXQogICAgICAgICBjaGVja291dCA9IENoZWNrb3V0KHNjbSkKICAgICAg
ICAgZXhwZWN0ZWRfY2hhbmdsb2dzID0gWyIvZm9vL2Jhci9DaGFuZ2VMb2ciLCAiL2Zvby9iYXIv
cmVsYXRpdmUvcGF0aC9DaGFuZ2VMb2ciXQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNoZWNr
b3V0Lm1vZGlmaWVkX2NoYW5nZWxvZ3MoKSwgZXhwZWN0ZWRfY2hhbmdsb2dzKQorICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKGNoZWNrb3V0Lm1vZGlmaWVkX2NoYW5nZWxvZ3MoZ2l0X2NvbW1pdD1O
b25lLCBzcXVhc2g9RmFsc2UpLCBleHBlY3RlZF9jaGFuZ2xvZ3MpCmRpZmYgLS1naXQgYS9XZWJL
aXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9zY20ucHkgYi9XZWJLaXRU
b29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9zY20ucHkKaW5kZXggNjU1YTk5
ZC4uMmMzNWJkNSAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21t
b24vY2hlY2tvdXQvc2NtLnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29t
bW9uL2NoZWNrb3V0L3NjbS5weQpAQCAtMTYyLDcgKzE2Miw3IEBAIGNsYXNzIFNDTToKICAgICBk
ZWYgc3RhdHVzX2NvbW1hbmQoc2VsZik6CiAgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJy
b3IsICJzdWJjbGFzc2VzIG11c3QgaW1wbGVtZW50IgogCi0gICAgZGVmIGNoYW5nZWRfZmlsZXMo
c2VsZik6CisgICAgZGVmIGNoYW5nZWRfZmlsZXMoc2VsZiwgZ2l0X2NvbW1pdD1Ob25lLCBzcXVh
c2g9Tm9uZSk6CiAgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IsICJzdWJjbGFzc2Vz
IG11c3QgaW1wbGVtZW50IgogCiAgICAgZGVmIGNoYW5nZWRfZmlsZXNfZm9yX3JldmlzaW9uKHNl
bGYpOgpAQCAtMTc0LDcgKzE3NCw3IEBAIGNsYXNzIFNDTToKICAgICBkZWYgZGlzcGxheV9uYW1l
KHNlbGYpOgogICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yLCAic3ViY2xhc3NlcyBt
dXN0IGltcGxlbWVudCIKIAotICAgIGRlZiBjcmVhdGVfcGF0Y2goc2VsZik6CisgICAgZGVmIGNy
ZWF0ZV9wYXRjaChzZWxmLCBnaXRfY29tbWl0PU5vbmUsIHNxdWFzaD1Ob25lKToKICAgICAgICAg
cmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvciwgInN1YmNsYXNzZXMgbXVzdCBpbXBsZW1lbnQiCiAK
ICAgICBkZWYgY29tbWl0dGVyX2VtYWlsX2Zvcl9yZXZpc2lvbihzZWxmLCByZXZpc2lvbik6CkBA
IC0xOTIsNyArMTkyLDcgQEAgY2xhc3MgU0NNOgogICAgIGRlZiByZXZlcnRfZmlsZXMoc2VsZiwg
ZmlsZV9wYXRocyk6CiAgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IsICJzdWJjbGFz
c2VzIG11c3QgaW1wbGVtZW50IgogCi0gICAgZGVmIGNvbW1pdF93aXRoX21lc3NhZ2Uoc2VsZiwg
bWVzc2FnZSwgdXNlcm5hbWU9Tm9uZSk6CisgICAgZGVmIGNvbW1pdF93aXRoX21lc3NhZ2Uoc2Vs
ZiwgbWVzc2FnZSwgdXNlcm5hbWU9Tm9uZSwgZ2l0X2NvbW1pdD1Ob25lLCBzcXVhc2g9Tm9uZSk6
CiAgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IsICJzdWJjbGFzc2VzIG11c3QgaW1w
bGVtZW50IgogCiAgICAgZGVmIHN2bl9jb21taXRfbG9nKHNlbGYsIHN2bl9yZXZpc2lvbik6CkBA
IC0yMTAsMTIgKzIxMCw2IEBAIGNsYXNzIFNDTToKICAgICBkZWYgc3ZuX21lcmdlX2Jhc2UoKToK
ICAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvciwgInN1YmNsYXNzZXMgbXVzdCBpbXBs
ZW1lbnQiCiAKLSAgICBkZWYgY3JlYXRlX3BhdGNoX2Zyb21fbG9jYWxfY29tbWl0KHNlbGYsIGNv
bW1pdF9pZCk6Ci0gICAgICAgIGVycm9yKCJZb3VyIHNvdXJjZSBjb250cm9sIG1hbmFnZXIgZG9l
cyBub3Qgc3VwcG9ydCBjcmVhdGluZyBhIHBhdGNoIGZyb20gYSBsb2NhbCBjb21taXQuIikKLQot
ICAgIGRlZiBjcmVhdGVfcGF0Y2hfc2luY2VfbG9jYWxfY29tbWl0KHNlbGYsIGNvbW1pdF9pZCk6
Ci0gICAgICAgIGVycm9yKCJZb3VyIHNvdXJjZSBjb250cm9sIG1hbmFnZXIgZG9lcyBub3Qgc3Vw
cG9ydCBjcmVhdGluZyBhIHBhdGNoIGZyb20gYSBsb2NhbCBjb21taXQuIikKLQogICAgIGRlZiBj
b21taXRfbG9jYWxseV93aXRoX21lc3NhZ2Uoc2VsZiwgbWVzc2FnZSk6CiAgICAgICAgIGVycm9y
KCJZb3VyIHNvdXJjZSBjb250cm9sIG1hbmFnZXIgZG9lcyBub3Qgc3VwcG9ydCBsb2NhbCBjb21t
aXRzLiIpCiAKQEAgLTMwMSw3ICsyOTUsNyBAQCBjbGFzcyBTVk4oU0NNKToKICAgICAgICAgZmll
bGRfY291bnQgPSA2IGlmIHNlbGYuc3ZuX3ZlcnNpb24oKSA+ICIxLjYiIGVsc2UgNQogICAgICAg
ICByZXR1cm4gIl4oP1A8c3RhdHVzPlslc10pLnslc30gKD9QPGZpbGVuYW1lPi4rKSQiICUgKGV4
cGVjdGVkX3R5cGVzLCBmaWVsZF9jb3VudCkKIAotICAgIGRlZiBjaGFuZ2VkX2ZpbGVzKHNlbGYp
OgorICAgIGRlZiBjaGFuZ2VkX2ZpbGVzKHNlbGYsIGdpdF9jb21taXQ9Tm9uZSwgc3F1YXNoPU5v
bmUpOgogICAgICAgICByZXR1cm4gc2VsZi5ydW5fc3RhdHVzX2FuZF9leHRyYWN0X2ZpbGVuYW1l
cyhzZWxmLnN0YXR1c19jb21tYW5kKCksIHNlbGYuX3N0YXR1c19yZWdleHAoIkFDRE1SIikpCiAK
ICAgICBkZWYgY2hhbmdlZF9maWxlc19mb3JfcmV2aXNpb24oc2VsZiwgcmV2aXNpb24pOgpAQCAt
MzE5LDcgKzMxMyw3IEBAIGNsYXNzIFNWTihTQ00pOgogICAgIGRlZiBkaXNwbGF5X25hbWUoc2Vs
Zik6CiAgICAgICAgIHJldHVybiAic3ZuIgogCi0gICAgZGVmIGNyZWF0ZV9wYXRjaChzZWxmKToK
KyAgICBkZWYgY3JlYXRlX3BhdGNoKHNlbGYsIGdpdF9jb21taXQ9Tm9uZSwgc3F1YXNoPU5vbmUp
OgogICAgICAgICByZXR1cm4gcnVuX2NvbW1hbmQoc2VsZi5zY3JpcHRfcGF0aCgic3ZuLWNyZWF0
ZS1wYXRjaCIpLCBjd2Q9c2VsZi5jaGVja291dF9yb290LCByZXR1cm5fc3RkZXJyPUZhbHNlKQog
CiAgICAgZGVmIGNvbW1pdHRlcl9lbWFpbF9mb3JfcmV2aXNpb24oc2VsZiwgcmV2aXNpb24pOgpA
QCAtMzQ1LDcgKzMzOSw4IEBAIGNsYXNzIFNWTihTQ00pOgogICAgIGRlZiByZXZlcnRfZmlsZXMo
c2VsZiwgZmlsZV9wYXRocyk6CiAgICAgICAgIHJ1bl9jb21tYW5kKFsnc3ZuJywgJ3JldmVydCdd
ICsgZmlsZV9wYXRocykKIAotICAgIGRlZiBjb21taXRfd2l0aF9tZXNzYWdlKHNlbGYsIG1lc3Nh
Z2UsIHVzZXJuYW1lPU5vbmUpOgorICAgIGRlZiBjb21taXRfd2l0aF9tZXNzYWdlKHNlbGYsIG1l
c3NhZ2UsIHVzZXJuYW1lPU5vbmUsIGdpdF9jb21taXQ9Tm9uZSwgc3F1YXNoPU5vbmUpOgorICAg
ICAgICAjIHNxdWFzaCBhbmQgZ2l0LWNvbW1pdCBhcmUgbm90IHVzZWQgYnkgU1ZOLgogICAgICAg
ICBpZiBzZWxmLmRyeXJ1bjoKICAgICAgICAgICAgICMgUmV0dXJuIGEgc3RyaW5nIHdoaWNoIGxv
b2tzIGxpa2UgYSBjb21taXQgc28gdGhhdCB0aGluZ3Mgd2hpY2ggcGFyc2UgdGhpcyBvdXRwdXQg
d2lsbCBzdWNjZWVkLgogICAgICAgICAgICAgcmV0dXJuICJEcnkgcnVuLCBubyBjb21taXQuXG5D
b21taXR0ZWQgcmV2aXNpb24gMC4iCkBAIC0zNzAsNiArMzY1LDggQEAgY2xhc3MgU1ZOKFNDTSk6
CiAKICMgQWxsIGdpdC1zcGVjaWZpYyBsb2dpYyBzaG91bGQgZ28gaGVyZS4KIGNsYXNzIEdpdChT
Q00pOgorICAgIHNxdWFzaF9wcm9tcHQgPSBOb25lCisKICAgICBkZWYgX19pbml0X18oc2VsZiwg
Y3dkKToKICAgICAgICAgU0NNLl9faW5pdF9fKHNlbGYsIGN3ZCkKIApAQCAtNDIwLDggKzQxNywy
NCBAQCBjbGFzcyBHaXQoU0NNKToKICAgICBkZWYgX3N0YXR1c19yZWdleHAoc2VsZiwgZXhwZWN0
ZWRfdHlwZXMpOgogICAgICAgICByZXR1cm4gJ14oP1A8c3RhdHVzPlslc10pXHQoP1A8ZmlsZW5h
bWU+LispJCcgJSBleHBlY3RlZF90eXBlcwogCi0gICAgZGVmIGNoYW5nZWRfZmlsZXMoc2VsZik6
Ci0gICAgICAgIHN0YXR1c19jb21tYW5kID0gWydnaXQnLCAnZGlmZicsICctcicsICctLW5hbWUt
c3RhdHVzJywgJy1DJywgJy1NJywgJ0hFQUQnXQorICAgIGRlZiBfbWVyZ2VfYmFzZShzZWxmLCBn
aXRfY29tbWl0LCBzcXVhc2gpOgorICAgICAgICBpZiBnaXRfY29tbWl0OgorICAgICAgICAgICAg
IyBGSVhNRTogQ2FsbGluZyBjb2RlIHNob3VsZCB0dXJuIGNvbW1pdCByYW5nZXMgaW50byBhIGxp
c3Qgb2YgY29tbWl0IElEcworICAgICAgICAgICAgIyBhbmQgdGhlbiB0cmVhdCBlYWNoIGNvbW1p
dCBzZXBhcmF0ZWx5LgorICAgICAgICAgICAgaWYgJy4uJyBub3QgaW4gZ2l0X2NvbW1pdDoKKyAg
ICAgICAgICAgICAgICBnaXRfY29tbWl0ID0gZ2l0X2NvbW1pdCArICJeLi4iICsgZ2l0X2NvbW1p
dAorICAgICAgICAgICAgcmV0dXJuIGdpdF9jb21taXQKKworICAgICAgICBpZiBzZWxmLnNob3Vs
ZF9zcXVhc2goc3F1YXNoKToKKyAgICAgICAgICAgIHJldHVybiBzZWxmLnN2bl9tZXJnZV9iYXNl
KCkKKworICAgICAgICAjIEZJWE1FOiBOb24tc3F1YXNoIGJlaGF2aW9yIHNob3VsZCBtYXRjaCBj
b21taXRfd2l0aF9tZXNzYWdlLgorICAgICAgICAjIEl0IHNob3VsZCBwcm9tcHQgd2hldGhlciB0
byBjb25zaWRlciB3b3JraW5nIGNvcHkgY2hhbmdlcyBhbmQgdGhlbgorICAgICAgICAjIHByb2Nl
ZWQgd2l0aCBlYWNoIGxvY2FsIGNvbW1pdCBhcyBhIHNlcGFyYXRlIHBhdGNoLgorICAgICAgICBy
ZXR1cm4gJ0hFQUQnCisKKyAgICBkZWYgY2hhbmdlZF9maWxlcyhzZWxmLCBnaXRfY29tbWl0PU5v
bmUsIHNxdWFzaD1Ob25lKToKKyAgICAgICAgc3RhdHVzX2NvbW1hbmQgPSBbJ2dpdCcsICdkaWZm
JywgJy1yJywgJy0tbmFtZS1zdGF0dXMnLCAnLUMnLCAnLU0nLCBzZWxmLl9tZXJnZV9iYXNlKGdp
dF9jb21taXQsIHNxdWFzaCldCiAgICAgICAgIHJldHVybiBzZWxmLnJ1bl9zdGF0dXNfYW5kX2V4
dHJhY3RfZmlsZW5hbWVzKHN0YXR1c19jb21tYW5kLCBzZWxmLl9zdGF0dXNfcmVnZXhwKCJBRE0i
KSkKIAogICAgIGRlZiBfY2hhbmdlc19maWxlc19mb3JfY29tbWl0KHNlbGYsIGdpdF9jb21taXQp
OgpAQCAtNDQ1LDggKzQ1OCw4IEBAIGNsYXNzIEdpdChTQ00pOgogICAgIGRlZiBkaXNwbGF5X25h
bWUoc2VsZik6CiAgICAgICAgIHJldHVybiAiZ2l0IgogCi0gICAgZGVmIGNyZWF0ZV9wYXRjaChz
ZWxmKToKLSAgICAgICAgcmV0dXJuIHJ1bl9jb21tYW5kKFsnZ2l0JywgJ2RpZmYnLCAnLS1iaW5h
cnknLCAnSEVBRCddKQorICAgIGRlZiBjcmVhdGVfcGF0Y2goc2VsZiwgZ2l0X2NvbW1pdD1Ob25l
LCBzcXVhc2g9Tm9uZSk6CisgICAgICAgIHJldHVybiBydW5fY29tbWFuZChbJ2dpdCcsICdkaWZm
JywgJy0tYmluYXJ5Jywgc2VsZi5fbWVyZ2VfYmFzZShnaXRfY29tbWl0LCBzcXVhc2gpXSkKIAog
ICAgIEBjbGFzc21ldGhvZAogICAgIGRlZiBnaXRfY29tbWl0X2Zyb21fc3ZuX3JldmlzaW9uKGNs
cywgcmV2aXNpb24pOgpAQCAtNDYxLDcgKzQ3NCw3IEBAIGNsYXNzIEdpdChTQ00pOgogCiAgICAg
ZGVmIGRpZmZfZm9yX3JldmlzaW9uKHNlbGYsIHJldmlzaW9uKToKICAgICAgICAgZ2l0X2NvbW1p
dCA9IHNlbGYuZ2l0X2NvbW1pdF9mcm9tX3N2bl9yZXZpc2lvbihyZXZpc2lvbikKLSAgICAgICAg
cmV0dXJuIHNlbGYuY3JlYXRlX3BhdGNoX2Zyb21fbG9jYWxfY29tbWl0KGdpdF9jb21taXQpCisg
ICAgICAgIHJldHVybiBzZWxmLmNyZWF0ZV9wYXRjaChnaXRfY29tbWl0KQogCiAgICAgZGVmIGNv
bW1pdHRlcl9lbWFpbF9mb3JfcmV2aXNpb24oc2VsZiwgcmV2aXNpb24pOgogICAgICAgICBnaXRf
Y29tbWl0ID0gc2VsZi5naXRfY29tbWl0X2Zyb21fc3ZuX3JldmlzaW9uKHJldmlzaW9uKQpAQCAt
NDc4LDExICs0OTEsMTA2IEBAIGNsYXNzIEdpdChTQ00pOgogICAgIGRlZiByZXZlcnRfZmlsZXMo
c2VsZiwgZmlsZV9wYXRocyk6CiAgICAgICAgIHJ1bl9jb21tYW5kKFsnZ2l0JywgJ2NoZWNrb3V0
JywgJ0hFQUQnXSArIGZpbGVfcGF0aHMpCiAKLSAgICBkZWYgY29tbWl0X3dpdGhfbWVzc2FnZShz
ZWxmLCBtZXNzYWdlLCB1c2VybmFtZT1Ob25lKToKKyAgICBkZWYgc2hvdWxkX3NxdWFzaChzZWxm
LCBzcXVhc2gpOgorICAgICAgICBpZiBzcXVhc2ggaXMgbm90IE5vbmU6CisgICAgICAgICAgICAj
IFNxdWFzaCBpcyBzcGVjaWZpZWQgb24gdGhlIGNvbW1hbmQtbGluZS4KKyAgICAgICAgICAgIHJl
dHVybiBzcXVhc2gKKworICAgICAgICBpZiBHaXQuc3F1YXNoX3Byb21wdCBpcyBub3QgTm9uZToK
KyAgICAgICAgICAgICMgVGhlIHVzZXIgYWxyZWFkeSByZXNwb25kZWQgdG8gdGhlIHByb21wdCBi
ZWxvdyBvbiBhIHByZXZpb3VzIHNob3VsZF9zcXVhc2ggY2FsbC4KKyAgICAgICAgICAgIHJldHVy
biBHaXQuc3F1YXNoX3Byb21wdAorCisgICAgICAgIGNvbmZpZ19zcXVhc2ggPSBHaXQucmVhZF9n
aXRfY29uZmlnKCd3ZWJraXQtcGF0Y2guc3F1YXNoJykKKyAgICAgICAgaWYgKGNvbmZpZ19zcXVh
c2ggYW5kIGNvbmZpZ19zcXVhc2ggaXMgbm90ICIiKToKKyAgICAgICAgICAgIHJldHVybiBjb25m
aWdfc3F1YXNoLmxvd2VyKCkgPT0gInRydWUiCisKKyAgICAgICAgIyBPbmx5IHByb21wdCBpZiB0
aGVyZSBhcmUgYWN0dWFsbHkgbXVsdGlwbGUgY29tbWl0cyB0byBzcXVhc2guCisgICAgICAgIG51
bV9sb2NhbF9jb21taXRzID0gbGVuKHNlbGYubG9jYWxfY29tbWl0cygpKQorICAgICAgICBpZiBu
dW1fbG9jYWxfY29tbWl0cyA+IDEgb3IgbnVtX2xvY2FsX2NvbW1pdHMgPiAwIGFuZCBub3Qgc2Vs
Zi53b3JraW5nX2RpcmVjdG9yeV9pc19jbGVhbigpOgorICAgICAgICAgICAgd29ya2luZ19kaXJl
Y3RvcnlfbWVzc2FnZSA9ICIiIGlmIHNlbGYud29ya2luZ19kaXJlY3RvcnlfaXNfY2xlYW4oKSBl
bHNlICIgYW5kIHdvcmtpbmcgY29weSBjaGFuZ2VzIgorICAgICAgICAgICAgIyBGSVhNRTogcGFy
YW1ldGVyaXplIHByb21wdCBzbyB0aGlzIGNhbiBiZSB0ZXN0ZWQuCisgICAgICAgICAgICByZXNw
b25zZSA9IFVzZXIucHJvbXB0KCJUaGVyZSBhcmUgJXMgbG9jYWwgY29tbWl0cyVzLiBTcXVhc2gg
aW50byBhIHNpbmdsZSBjb21taXQ/IFtZL25dOiAiICUgKAorICAgICAgICAgICAgICAgIG51bV9s
b2NhbF9jb21taXRzLCB3b3JraW5nX2RpcmVjdG9yeV9tZXNzYWdlKSwgcmVwZWF0PTMpCisgICAg
ICAgICAgICBpZiByZXNwb25zZSA9PSAiWSI6CisgICAgICAgICAgICAgICAgR2l0LnNxdWFzaF9w
cm9tcHQgPSBUcnVlCisgICAgICAgICAgICBlbGlmIHJlc3BvbnNlID09ICduJzoKKyAgICAgICAg
ICAgICAgICBHaXQuc3F1YXNoX3Byb21wdCA9IEZhbHNlCisgICAgICAgICAgICBlbHNlOgorICAg
ICAgICAgICAgICAgIHJhaXNlICJNdXN0IGFuc3dlciAnWScgb3IgJ24nIgorCisgICAgICAgICAg
ICByZXR1cm4gR2l0LnNxdWFzaF9wcm9tcHQKKworICAgICAgICByZXR1cm4gRmFsc2UKKworICAg
IGRlZiBjb21taXRfd2l0aF9tZXNzYWdlKHNlbGYsIG1lc3NhZ2UsIHVzZXJuYW1lPU5vbmUsIGdp
dF9jb21taXQ9Tm9uZSwgc3F1YXNoPU5vbmUpOgogICAgICAgICAjIFVzZXJuYW1lIGlzIGlnbm9y
ZWQgZHVyaW5nIEdpdCBjb21taXRzLgotICAgICAgICBzZWxmLmNvbW1pdF9sb2NhbGx5X3dpdGhf
bWVzc2FnZShtZXNzYWdlKQorICAgICAgICBpZiBnaXRfY29tbWl0OgorICAgICAgICAgICAgIyBO
ZWVkIHdvcmtpbmcgZGlyZWN0b3J5IGNoYW5nZXMgdG8gYmUgY29tbWl0dGVkIHNvIHdlIGNhbiBj
aGVja291dCB0aGUgbWVyZ2UgYnJhbmNoLgorICAgICAgICAgICAgaWYgbm90IHNlbGYud29ya2lu
Z19kaXJlY3RvcnlfaXNfY2xlYW4oKToKKyAgICAgICAgICAgICAgICAjIEZJWE1FOiB3ZWJraXQt
cGF0Y2ggbGFuZCB3aWxsIG1vZGlmeSB0aGUgQ2hhbmdlTG9ncyB0byBjb3JyZWN0IHRoZSByZXZp
ZXdlci4KKyAgICAgICAgICAgICAgICAjIFRoYXQgd2lsbCBtb2RpZnkgdGhlIHdvcmtpbmctY29w
eSBhbmQgY2F1c2UgdXMgdG8gaGl0IHRoaXMgZXJyb3IuCisgICAgICAgICAgICAgICAgIyBUaGUg
Q2hhbmdlTG9nIG1vZGlmaWNhdGlvbiBjb3VsZCBiZSBtYWRlIHRvIG1vZGlmeSB0aGUgZXhpc3Rp
bmcgbG9jYWwgY29tbWl0PworICAgICAgICAgICAgICAgIHJhaXNlIFNjcmlwdEVycm9yKG1lc3Nh
Z2U9IldvcmtpbmcgY29weSBpcyBtb2RpZmllZC4gQ2Fubm90IGNvbW1pdCBpbmRpdmlkdWFsIGdp
dF9jb21taXRzLiIpCisgICAgICAgICAgICByZXR1cm4gc2VsZi5fY29tbWl0X29uX2JyYW5jaCht
ZXNzYWdlLCBnaXRfY29tbWl0KQorCisgICAgICAgIGlmIHNlbGYuc2hvdWxkX3NxdWFzaChzcXVh
c2gpOgorICAgICAgICAgICAgcnVuX2NvbW1hbmQoWydnaXQnLCAncmVzZXQnLCAnLS1zb2Z0Jywg
c2VsZi5zdm5fYnJhbmNoX25hbWUoKV0pCisgICAgICAgICAgICBzZWxmLmNvbW1pdF9sb2NhbGx5
X3dpdGhfbWVzc2FnZShtZXNzYWdlKQorICAgICAgICBlbGlmIG5vdCBzZWxmLndvcmtpbmdfZGly
ZWN0b3J5X2lzX2NsZWFuKCk6CisgICAgICAgICAgICAjIEZJWE1FOiBwYXJhbWV0ZXJpemUgcHJv
bXB0IHNvIHRoaXMgY2FuIGJlIHRlc3RlZC4KKyAgICAgICAgICAgIHJlc3BvbnNlID0gVXNlci5w
cm9tcHQoIlRoZXJlIGFyZSB3b3JraW5nIGNvcHkgY2hhbmdlcy4gQ29tbWl0IHRoZW0/IFtZL25d
OiAiLCByZXBlYXQ9MykKKyAgICAgICAgICAgIGlmIHJlc3BvbnNlID09ICJZIjoKKyAgICAgICAg
ICAgICAgICBzZWxmLmNvbW1pdF9sb2NhbGx5X3dpdGhfbWVzc2FnZShtZXNzYWdlKQorICAgICAg
ICAgICAgZWxpZiByZXNwb25zZSAhPSAnbic6CisgICAgICAgICAgICAgICAgcmFpc2UgIk11c3Qg
YW5zd2VyICdZJyBvciAnbiciCisKKyAgICAgICAgIyBGSVhNRTogVGhpcyB3aWxsIGNvbW1pdCBh
bGwgbG9jYWwgY29tbWl0cywgZWFjaCB3aXRoIGl0J3Mgb3duIG1lc3NhZ2UuCisgICAgICAgICMg
SWYgd2UndmUgc3F1YXNoZWQgaW50byBhIHNpbmdsZSBsb2NhbCBjb21taXQsIHRoYXQncyBmaW5l
LiBXZSBzaG91bGQgcmVzdHJ1Y3R1cmUKKyAgICAgICAgIyBzbyB0aGF0IGVhY2ggbG9jYWwgY29t
bWl0IGhhcyB0aGUgYXBwcm9wcmlhdGUgY29tbWl0IG1lc3NhZ2UgYmFzZWQgb2ZmIGl0J3MgQ2hh
bmdlTG9ncy4KICAgICAgICAgcmV0dXJuIHNlbGYucHVzaF9sb2NhbF9jb21taXRzX3RvX3NlcnZl
cigpCiAKKyAgICBkZWYgX2NvbW1pdF9vbl9icmFuY2goc2VsZiwgbWVzc2FnZSwgZ2l0X2NvbW1p
dCk6CisgICAgICAgIGJyYW5jaF9yZWYgPSBydW5fY29tbWFuZChbJ2dpdCcsICdzeW1ib2xpYy1y
ZWYnLCAnSEVBRCddKS5zdHJpcCgpCisgICAgICAgIGJyYW5jaF9uYW1lID0gYnJhbmNoX3JlZi5y
ZXBsYWNlKCdyZWZzL2hlYWRzLycsICcnKQorICAgICAgICBjb21taXRfaWRzID0gc2VsZi5jb21t
aXRfaWRzX2Zyb21fY29tbWl0aXNoX2FyZ3VtZW50cyhbZ2l0X2NvbW1pdF0pCisKKyAgICAgICAg
IyBXZSB3YW50IHRvIHNxdWFzaCBhbGwgdGhpcyBicmFuY2gncyBjb21taXRzIGludG8gb25lIGNv
bW1pdCB3aXRoIHRoZSBwcm9wZXIgZGVzY3JpcHRpb24uCisgICAgICAgICMgV2UgZG8gdGhpcyBi
eSBkb2luZyBhICJtZXJnZSAtLXNxdWFzaCIgaW50byBhIG5ldyBjb21taXQgYnJhbmNoLCB0aGVu
IGRjb21taXR0aW5nIHRoYXQuCisgICAgICAgIE1FUkdFX0JSQU5DSCA9ICd3ZWJraXQtcGF0Y2gt
bGFuZCcKKyAgICAgICAgc2VsZi5kZWxldGVfYnJhbmNoKE1FUkdFX0JSQU5DSCkKKworICAgICAg
ICAjIFdlIG1pZ2h0IGJlIGluIGEgZGlyZWN0b3J5IHRoYXQncyBwcmVzZW50IGluIHRoaXMgYnJh
bmNoIGJ1dCBub3QgaW4gdGhlCisgICAgICAgICMgdHJ1bmsuICBNb3ZlIHVwIHRvIHRoZSB0b3Ag
b2YgdGhlIHRyZWUgc28gdGhhdCBnaXQgY29tbWFuZHMgdGhhdCBleHBlY3QgYQorICAgICAgICAj
IHZhbGlkIENXRCB3b24ndCBmYWlsIGFmdGVyIHdlIGNoZWNrIG91dCB0aGUgbWVyZ2UgYnJhbmNo
LgorICAgICAgICBvcy5jaGRpcihzZWxmLmNoZWNrb3V0X3Jvb3QpCisKKyAgICAgICAgIyBTdHVm
ZiBvdXIgY2hhbmdlIGludG8gdGhlIG1lcmdlIGJyYW5jaC4KKyAgICAgICAgIyBXZSB3cmFwIGlu
IGEgdHJ5Li4uZmluYWxseSBibG9jayBzbyBpZiBhbnl0aGluZyBnb2VzIHdyb25nLCB3ZSBjbGVh
biB1cCB0aGUgYnJhbmNoZXMuCisgICAgICAgIGNvbW1pdF9zdWNjZWVkZWQgPSBUcnVlCisgICAg
ICAgIHRyeToKKyAgICAgICAgICAgIHJ1bl9jb21tYW5kKFsnZ2l0JywgJ2NoZWNrb3V0JywgJy1x
JywgJy1iJywgTUVSR0VfQlJBTkNILCBzZWxmLnN2bl9icmFuY2hfbmFtZSgpXSkKKworICAgICAg
ICAgICAgZm9yIGNvbW1pdCBpbiBjb21taXRfaWRzOgorICAgICAgICAgICAgICAgICMgV2UncmUg
b24gYSBkaWZmZXJlbnQgYnJhbmNoIG5vdywgc28gY29udmVydCAiaGVhZCIgdG8gdGhlIGJyYW5j
aCBuYW1lLgorICAgICAgICAgICAgICAgIGNvbW1pdCA9IHJlLnN1YihyJyg/aSloZWFkJywgYnJh
bmNoX25hbWUsIGNvbW1pdCkKKyAgICAgICAgICAgICAgICAjIEZJWE1FOiBPbmNlIGNoYW5nZWRf
ZmlsZXMgYW5kIGNyZWF0ZV9wYXRjaCBhcmUgbW9kaWZpZWQgdG8gc2VwYXJhdGVseSBoYW5kbGUg
ZWFjaAorICAgICAgICAgICAgICAgICMgY29tbWl0IGluIGEgY29tbWl0IHJhbmdlLCBjb21taXQg
ZWFjaCBjaGVycnkgcGljayBzbyB0aGV5J2xsIGdldCBkY29tbWl0dGVkIHNlcGFyYXRlbHkuCisg
ICAgICAgICAgICAgICAgcnVuX2NvbW1hbmQoWydnaXQnLCAnY2hlcnJ5LXBpY2snLCAnLS1uby1j
b21taXQnLCBjb21taXRdKQorCisgICAgICAgICAgICBydW5fY29tbWFuZChbJ2dpdCcsICdjb21t
aXQnLCAnLW0nLCBtZXNzYWdlXSkKKyAgICAgICAgICAgIG91dHB1dCA9IHNlbGYucHVzaF9sb2Nh
bF9jb21taXRzX3RvX3NlcnZlcigpCisgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24sIGU6CisgICAg
ICAgICAgICBsb2coIkNPTU1JVCBGQUlMRUQ6ICIgKyBzdHIoZSkpCisgICAgICAgICAgICBvdXRw
dXQgPSAiQ29tbWl0IGZhaWxlZC4iCisgICAgICAgICAgICBjb21taXRfc3VjY2VlZGVkID0gRmFs
c2UKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICMgQW5kIHRoZW4gc3dhcCBiYWNrIHRv
IHRoZSBvcmlnaW5hbCBicmFuY2ggYW5kIGNsZWFuIHVwLgorICAgICAgICAgICAgc2VsZi5jbGVh
bl93b3JraW5nX2RpcmVjdG9yeSgpCisgICAgICAgICAgICBydW5fY29tbWFuZChbJ2dpdCcsICdj
aGVja291dCcsICctcScsIGJyYW5jaF9uYW1lXSkKKyAgICAgICAgICAgIHNlbGYuZGVsZXRlX2Jy
YW5jaChNRVJHRV9CUkFOQ0gpCisKKyAgICAgICAgcmV0dXJuIG91dHB1dAorCiAgICAgZGVmIHN2
bl9jb21taXRfbG9nKHNlbGYsIHN2bl9yZXZpc2lvbik6CiAgICAgICAgIHN2bl9yZXZpc2lvbiA9
IHNlbGYuc3RyaXBfcl9mcm9tX3N2bl9yZXZpc2lvbihzdm5fcmV2aXNpb24pCiAgICAgICAgIHJl
dHVybiBydW5fY29tbWFuZChbJ2dpdCcsICdzdm4nLCAnbG9nJywgJy1yJywgc3ZuX3JldmlzaW9u
XSkKQEAgLTUwMiwxMiArNjEwLDYgQEAgY2xhc3MgR2l0KFNDTSk6CiAgICAgZGVmIHN2bl9icmFu
Y2hfbmFtZShzZWxmKToKICAgICAgICAgcmV0dXJuIEdpdC5yZWFkX2dpdF9jb25maWcoJ3N2bi1y
ZW1vdGUuc3ZuLmZldGNoJykuc3BsaXQoJzonKVsxXQogCi0gICAgZGVmIGNyZWF0ZV9wYXRjaF9m
cm9tX2xvY2FsX2NvbW1pdChzZWxmLCBjb21taXRfaWQpOgotICAgICAgICByZXR1cm4gcnVuX2Nv
bW1hbmQoWydnaXQnLCAnZGlmZicsICctLWJpbmFyeScsIGNvbW1pdF9pZCArICJeLi4iICsgY29t
bWl0X2lkXSkKLQotICAgIGRlZiBjcmVhdGVfcGF0Y2hfc2luY2VfbG9jYWxfY29tbWl0KHNlbGYs
IGNvbW1pdF9pZCk6Ci0gICAgICAgIHJldHVybiBydW5fY29tbWFuZChbJ2dpdCcsICdkaWZmJywg
Jy0tYmluYXJ5JywgY29tbWl0X2lkXSkKLQogICAgIGRlZiBjb21taXRfbG9jYWxseV93aXRoX21l
c3NhZ2Uoc2VsZiwgbWVzc2FnZSk6CiAgICAgICAgIHJ1bl9jb21tYW5kKFsnZ2l0JywgJ2NvbW1p
dCcsICctLWFsbCcsICctRicsICctJ10sIGlucHV0PW1lc3NhZ2UpCiAKZGlmZiAtLWdpdCBhL1dl
YktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L3NjbV91bml0dGVzdC5w
eSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L3NjbV91bml0
dGVzdC5weQppbmRleCBkNDg3NTk4Li5jYjU1NjZkIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9T
Y3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9zY21fdW5pdHRlc3QucHkKKysrIGIvV2Vi
S2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvc2NtX3VuaXR0ZXN0LnB5
CkBAIC0xOTMsMTUgKzE5Myw2IEBAIGNsYXNzIFNDTVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgog
CiAgICAgIyBUZXN0cyB3aGljaCBib3RoIEdpdFRlc3QgYW5kIFNWTlRlc3Qgc2hvdWxkIHJ1bi4K
ICAgICAjIEZJWE1FOiBUaGVyZSBtdXN0IGJlIGEgc2ltcGxlciB3YXkgdG8gYWRkIHRoZXNlIHcv
byBhZGRpbmcgYSB3cmFwcGVyIG1ldGhvZCB0byBib3RoIHN1YmNsYXNzZXMKLSAgICBkZWYgX3No
YXJlZF90ZXN0X2NvbW1pdF93aXRoX21lc3NhZ2Uoc2VsZiwgdXNlcm5hbWU9ImRiYXRlc0B3ZWJr
aXQub3JnIik6Ci0gICAgICAgIHdyaXRlX2ludG9fZmlsZV9hdF9wYXRoKCd0ZXN0X2ZpbGUnLCAn
bW9yZSB0ZXN0IGNvbnRlbnQnKQotICAgICAgICBjb21taXRfdGV4dCA9IHNlbGYuc2NtLmNvbW1p
dF93aXRoX21lc3NhZ2UoImFub3RoZXIgdGVzdCBjb21taXQiLCB1c2VybmFtZSkKLSAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChzZWxmLnNjbS5zdm5fcmV2aXNpb25fZnJvbV9jb21taXRfdGV4dChj
b21taXRfdGV4dCksICc1JykKLQotICAgICAgICBzZWxmLnNjbS5kcnlydW4gPSBUcnVlCi0gICAg
ICAgIHdyaXRlX2ludG9fZmlsZV9hdF9wYXRoKCd0ZXN0X2ZpbGUnLCAnc3RpbGwgbW9yZSB0ZXN0
IGNvbnRlbnQnKQotICAgICAgICBjb21taXRfdGV4dCA9IHNlbGYuc2NtLmNvbW1pdF93aXRoX21l
c3NhZ2UoInlldCBhbm90aGVyIHRlc3QgY29tbWl0IiwgdXNlcm5hbWUpCi0gICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoc2VsZi5zY20uc3ZuX3JldmlzaW9uX2Zyb21fY29tbWl0X3RleHQoY29tbWl0
X3RleHQpLCAnMCcpCiAKICAgICBkZWYgX3NoYXJlZF90ZXN0X2NoYW5nZWRfZmlsZXNfZm9yX3Jl
dmlzaW9uKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuc2NtLmNoYW5nZWRf
ZmlsZXNfZm9yX3JldmlzaW9uKDIpLCBbInRlc3RfZmlsZSJdKQpAQCAtNDkxLDYgKzQ4MiwxNiBA
QCBRMWRUQngwQUFBQjQyaXRnNEdsZ1lKakd3TUREeU9ETXhNRHczNEdCZ1FFQUpQUURKQT09CiAg
ICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5zZWFyY2goJ2ZvdXJ0aCBjb21taXQnLCBzZWxmLnNj
bS5sYXN0X3N2bl9jb21taXRfbG9nKCkpKQogICAgICAgICBzZWxmLmFzc2VydFRydWUocmUuc2Vh
cmNoKCdzZWNvbmQgY29tbWl0Jywgc2VsZi5zY20uc3ZuX2NvbW1pdF9sb2coMikpKQogCisgICAg
ZGVmIF9zaGFyZWRfdGVzdF9jb21taXRfd2l0aF9tZXNzYWdlKHNlbGYsIHVzZXJuYW1lPU5vbmUp
OgorICAgICAgICB3cml0ZV9pbnRvX2ZpbGVfYXRfcGF0aCgndGVzdF9maWxlJywgJ21vcmUgdGVz
dCBjb250ZW50JykKKyAgICAgICAgY29tbWl0X3RleHQgPSBzZWxmLnNjbS5jb21taXRfd2l0aF9t
ZXNzYWdlKCJhbm90aGVyIHRlc3QgY29tbWl0IiwgdXNlcm5hbWUpCisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoc2VsZi5zY20uc3ZuX3JldmlzaW9uX2Zyb21fY29tbWl0X3RleHQoY29tbWl0X3Rl
eHQpLCAnNScpCisKKyAgICAgICAgc2VsZi5zY20uZHJ5cnVuID0gVHJ1ZQorICAgICAgICB3cml0
ZV9pbnRvX2ZpbGVfYXRfcGF0aCgndGVzdF9maWxlJywgJ3N0aWxsIG1vcmUgdGVzdCBjb250ZW50
JykKKyAgICAgICAgY29tbWl0X3RleHQgPSBzZWxmLnNjbS5jb21taXRfd2l0aF9tZXNzYWdlKCJ5
ZXQgYW5vdGhlciB0ZXN0IGNvbW1pdCIsIHVzZXJuYW1lKQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKHNlbGYuc2NtLnN2bl9yZXZpc2lvbl9mcm9tX2NvbW1pdF90ZXh0KGNvbW1pdF90ZXh0KSwg
JzAnKQorCiAgICAgZGVmIHRlc3RfY29tbWl0X3RleHRfcGFyc2luZyhzZWxmKToKICAgICAgICAg
c2VsZi5fc2hhcmVkX3Rlc3RfY29tbWl0X3dpdGhfbWVzc2FnZSgpCiAKQEAgLTY2Niw3ICs2Njcs
ODggQEAgY2xhc3MgR2l0VGVzdChTQ01UZXN0KToKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMo
U2NyaXB0RXJyb3IsIENoZWNrb3V0KHNjbSkuYXBwbHlfcGF0Y2gsIHBhdGNoLCBmb3JjZT1UcnVl
KQogCiAgICAgZGVmIHRlc3RfY29tbWl0X3RleHRfcGFyc2luZyhzZWxmKToKLSAgICAgICAgc2Vs
Zi5fc2hhcmVkX3Rlc3RfY29tbWl0X3dpdGhfbWVzc2FnZSgpCisgICAgICAgIHdyaXRlX2ludG9f
ZmlsZV9hdF9wYXRoKCd0ZXN0X2ZpbGUnLCAnbW9yZSB0ZXN0IGNvbnRlbnQnKQorICAgICAgICBz
ZWxmLnNjbS5jb21taXRfbG9jYWxseV93aXRoX21lc3NhZ2UoImFub3RoZXIgdGVzdCBjb21taXQi
KQorICAgICAgICBjb21taXRfdGV4dCA9IHNlbGYuc2NtLmNvbW1pdF93aXRoX21lc3NhZ2UoImFu
b3RoZXIgdGVzdCBjb21taXQiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuc2NtLnN2
bl9yZXZpc2lvbl9mcm9tX2NvbW1pdF90ZXh0KGNvbW1pdF90ZXh0KSwgJzUnKQorCisgICAgICAg
IHNlbGYuc2NtLmRyeXJ1biA9IFRydWUKKyAgICAgICAgd3JpdGVfaW50b19maWxlX2F0X3BhdGgo
J3Rlc3RfZmlsZScsICdzdGlsbCBtb3JlIHRlc3QgY29udGVudCcpCisgICAgICAgIHNlbGYuc2Nt
LmNvbW1pdF9sb2NhbGx5X3dpdGhfbWVzc2FnZSgieWV0IGFub3RoZXIgdGVzdCBjb21taXQiKQor
ICAgICAgICBjb21taXRfdGV4dCA9IHNlbGYuc2NtLmNvbW1pdF93aXRoX21lc3NhZ2UoInlldCBh
bm90aGVyIHRlc3QgY29tbWl0IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnNjbS5z
dm5fcmV2aXNpb25fZnJvbV9jb21taXRfdGV4dChjb21taXRfdGV4dCksICcwJykKKworICAgIGRl
ZiBfb25lX2xvY2FsX2NvbW1pdF9wbHVzX3dvcmtpbmdfY29weV9jaGFuZ2VzKHNlbGYpOgorICAg
ICAgICB3cml0ZV9pbnRvX2ZpbGVfYXRfcGF0aCgndGVzdF9maWxlX2NvbW1pdDEnLCAnbW9yZSB0
ZXN0IGNvbnRlbnQnKQorICAgICAgICBydW5fY29tbWFuZChbJ2dpdCcsICdhZGQnLCAndGVzdF9m
aWxlX2NvbW1pdDEnXSkKKyAgICAgICAgc2VsZi5zY20uY29tbWl0X2xvY2FsbHlfd2l0aF9tZXNz
YWdlKCJhbm90aGVyIHRlc3QgY29tbWl0IikKKworICAgICAgICB3cml0ZV9pbnRvX2ZpbGVfYXRf
cGF0aCgndGVzdF9maWxlX2NvbW1pdDInLCAnc3RpbGwgbW9yZSB0ZXN0IGNvbnRlbnQnKQorICAg
ICAgICBydW5fY29tbWFuZChbJ2dpdCcsICdhZGQnLCAndGVzdF9maWxlX2NvbW1pdDInXSkKKwor
ICAgIGRlZiB0ZXN0X2NvbW1pdF93aXRoX21lc3NhZ2Vfc3F1YXNoZWQoc2VsZik6CisgICAgICAg
IHNlbGYuX29uZV9sb2NhbF9jb21taXRfcGx1c193b3JraW5nX2NvcHlfY2hhbmdlcygpCisgICAg
ICAgIHNjbSA9IGRldGVjdF9zY21fc3lzdGVtKHNlbGYuZ2l0X2NoZWNrb3V0X3BhdGgpCisgICAg
ICAgIGNvbW1pdF90ZXh0ID0gc2NtLmNvbW1pdF93aXRoX21lc3NhZ2UoInlldCBhbm90aGVyIHRl
c3QgY29tbWl0Iiwgc3F1YXNoPVRydWUpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzY20u
c3ZuX3JldmlzaW9uX2Zyb21fY29tbWl0X3RleHQoY29tbWl0X3RleHQpLCAnNScpCisgICAgICAg
IHN2bl9sb2cgPSBydW5fY29tbWFuZChbJ2dpdCcsICdzdm4nLCAnbG9nJywgJy0tbGltaXQ9MScs
ICctLXZlcmJvc2UnXSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLnNlYXJjaChyJ3Rlc3Rf
ZmlsZV9jb21taXQyJywgc3ZuX2xvZykpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5zZWFy
Y2gocid0ZXN0X2ZpbGVfY29tbWl0MScsIHN2bl9sb2cpKQorCisgICAgZGVmIF90d29fbG9jYWxf
Y29tbWl0cyhzZWxmKToKKyAgICAgICAgd3JpdGVfaW50b19maWxlX2F0X3BhdGgoJ3Rlc3RfZmls
ZV9jb21taXQxJywgJ21vcmUgdGVzdCBjb250ZW50JykKKyAgICAgICAgcnVuX2NvbW1hbmQoWydn
aXQnLCAnYWRkJywgJ3Rlc3RfZmlsZV9jb21taXQxJ10pCisgICAgICAgIHNlbGYuc2NtLmNvbW1p
dF9sb2NhbGx5X3dpdGhfbWVzc2FnZSgiYW5vdGhlciB0ZXN0IGNvbW1pdCIpCisKKyAgICAgICAg
d3JpdGVfaW50b19maWxlX2F0X3BhdGgoJ3Rlc3RfZmlsZV9jb21taXQyJywgJ3N0aWxsIG1vcmUg
dGVzdCBjb250ZW50JykKKyAgICAgICAgcnVuX2NvbW1hbmQoWydnaXQnLCAnYWRkJywgJ3Rlc3Rf
ZmlsZV9jb21taXQyJ10pCisgICAgICAgIHNlbGYuc2NtLmNvbW1pdF9sb2NhbGx5X3dpdGhfbWVz
c2FnZSgieWV0IGFub3RoZXIgdGVzdCBjb21taXQiKQorCisgICAgZGVmIHRlc3RfY29tbWl0X3dp
dGhfbWVzc2FnZV9naXRfY29tbWl0KHNlbGYpOgorICAgICAgICBzZWxmLl90d29fbG9jYWxfY29t
bWl0cygpCisKKyAgICAgICAgc2NtID0gZGV0ZWN0X3NjbV9zeXN0ZW0oc2VsZi5naXRfY2hlY2tv
dXRfcGF0aCkKKyAgICAgICAgY29tbWl0X3RleHQgPSBzY20uY29tbWl0X3dpdGhfbWVzc2FnZSgi
YW5vdGhlciB0ZXN0IGNvbW1pdCIsIGdpdF9jb21taXQ9IkhFQUReIikKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChzY20uc3ZuX3JldmlzaW9uX2Zyb21fY29tbWl0X3RleHQoY29tbWl0X3RleHQp
LCAnNScpCisKKyAgICAgICAgc3ZuX2xvZyA9IHJ1bl9jb21tYW5kKFsnZ2l0JywgJ3N2bicsICds
b2cnLCAnLS1saW1pdD0xJywgJy0tdmVyYm9zZSddKQorICAgICAgICBzZWxmLmFzc2VydFRydWUo
cmUuc2VhcmNoKHIndGVzdF9maWxlX2NvbW1pdDEnLCBzdm5fbG9nKSkKKyAgICAgICAgc2VsZi5h
c3NlcnRGYWxzZShyZS5zZWFyY2gocid0ZXN0X2ZpbGVfY29tbWl0MicsIHN2bl9sb2cpKQorCisg
ICAgZGVmIHRlc3RfY29tbWl0X3dpdGhfbWVzc2FnZV9naXRfY29tbWl0X3JhbmdlKHNlbGYpOgor
ICAgICAgICBzZWxmLl90d29fbG9jYWxfY29tbWl0cygpCisKKyAgICAgICAgc2NtID0gZGV0ZWN0
X3NjbV9zeXN0ZW0oc2VsZi5naXRfY2hlY2tvdXRfcGF0aCkKKyAgICAgICAgY29tbWl0X3RleHQg
PSBzY20uY29tbWl0X3dpdGhfbWVzc2FnZSgiYW5vdGhlciB0ZXN0IGNvbW1pdCIsIGdpdF9jb21t
aXQ9IkhFQUR+Mi4uSEVBRCIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2NtLnN2bl9yZXZp
c2lvbl9mcm9tX2NvbW1pdF90ZXh0KGNvbW1pdF90ZXh0KSwgJzUnKQorCisgICAgICAgIHN2bl9s
b2cgPSBydW5fY29tbWFuZChbJ2dpdCcsICdzdm4nLCAnbG9nJywgJy0tbGltaXQ9MScsICctLXZl
cmJvc2UnXSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLnNlYXJjaChyJ3Rlc3RfZmlsZV9j
b21taXQxJywgc3ZuX2xvZykpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5zZWFyY2gocid0
ZXN0X2ZpbGVfY29tbWl0MicsIHN2bl9sb2cpKQorCisgICAgZGVmIHRlc3RfY29tbWl0X3dpdGhf
bWVzc2FnZV9tdWx0aXBsZV9sb2NhbF9jb21taXRzKHNlbGYpOgorICAgICAgICBzZWxmLl90d29f
bG9jYWxfY29tbWl0cygpCisgICAgICAgIHNjbSA9IGRldGVjdF9zY21fc3lzdGVtKHNlbGYuZ2l0
X2NoZWNrb3V0X3BhdGgpCisgICAgICAgIGNvbW1pdF90ZXh0ID0gc2NtLmNvbW1pdF93aXRoX21l
c3NhZ2UoInlldCBhbm90aGVyIHRlc3QgY29tbWl0Iiwgc3F1YXNoPUZhbHNlKQorICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKHNjbS5zdm5fcmV2aXNpb25fZnJvbV9jb21taXRfdGV4dChjb21taXRf
dGV4dCksICc1JykKKworICAgICAgICBzdm5fbG9nID0gcnVuX2NvbW1hbmQoWydnaXQnLCAnc3Zu
JywgJ2xvZycsICctLWxpbWl0PTEnLCAnLS12ZXJib3NlJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0
VHJ1ZShyZS5zZWFyY2gocid0ZXN0X2ZpbGVfY29tbWl0MicsIHN2bl9sb2cpKQorICAgICAgICBz
ZWxmLmFzc2VydEZhbHNlKHJlLnNlYXJjaChyJ3Rlc3RfZmlsZV9jb21taXQxJywgc3ZuX2xvZykp
CisKKyAgICAgICAgc3ZuX2xvZyA9IHJ1bl9jb21tYW5kKFsnZ2l0JywgJ3N2bicsICdsb2cnLCAn
LS1saW1pdD0yJywgJy0tdmVyYm9zZSddKQorICAgICAgICBzZWxmLmFzc2VydFRydWUocmUuc2Vh
cmNoKHIndGVzdF9maWxlX2NvbW1pdDEnLCBzdm5fbG9nKSkKKworICAgIGRlZiB0ZXN0X2NvbW1p
dF93aXRoX21lc3NhZ2VfbXVsdGlwbGVfbG9jYWxfY29tbWl0c19zcXVhc2hlZChzZWxmKToKKyAg
ICAgICAgc2VsZi5fdHdvX2xvY2FsX2NvbW1pdHMoKQorICAgICAgICBzY20gPSBkZXRlY3Rfc2Nt
X3N5c3RlbShzZWxmLmdpdF9jaGVja291dF9wYXRoKQorICAgICAgICBjb21taXRfdGV4dCA9IHNj
bS5jb21taXRfd2l0aF9tZXNzYWdlKCJ5ZXQgYW5vdGhlciB0ZXN0IGNvbW1pdCIsIHNxdWFzaD1U
cnVlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNjbS5zdm5fcmV2aXNpb25fZnJvbV9jb21t
aXRfdGV4dChjb21taXRfdGV4dCksICc1JykKKworICAgICAgICBzdm5fbG9nID0gcnVuX2NvbW1h
bmQoWydnaXQnLCAnc3ZuJywgJ2xvZycsICctLWxpbWl0PTEnLCAnLS12ZXJib3NlJ10pCisgICAg
ICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5zZWFyY2gocid0ZXN0X2ZpbGVfY29tbWl0MicsIHN2bl9s
b2cpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUocmUuc2VhcmNoKHIndGVzdF9maWxlX2NvbW1p
dDEnLCBzdm5fbG9nKSkKIAogICAgIGRlZiB0ZXN0X3JldmVyc2VfZGlmZihzZWxmKToKICAgICAg
ICAgc2VsZi5fc2hhcmVkX3Rlc3RfcmV2ZXJzZV9kaWZmKCkKQEAgLTY3Nyw2ICs3NTksNDkgQEAg
Y2xhc3MgR2l0VGVzdChTQ01UZXN0KToKICAgICBkZWYgdGVzdF9zdm5fYXBwbHlfZ2l0X3BhdGNo
KHNlbGYpOgogICAgICAgICBzZWxmLl9zaGFyZWRfdGVzdF9zdm5fYXBwbHlfZ2l0X3BhdGNoKCkK
IAorICAgIGRlZiB0ZXN0X2NyZWF0ZV9wYXRjaF9zcXVhc2hlZChzZWxmKToKKyAgICAgICAgc2Vs
Zi5fb25lX2xvY2FsX2NvbW1pdF9wbHVzX3dvcmtpbmdfY29weV9jaGFuZ2VzKCkKKyAgICAgICAg
c2NtID0gZGV0ZWN0X3NjbV9zeXN0ZW0oc2VsZi5naXRfY2hlY2tvdXRfcGF0aCkKKyAgICAgICAg
cGF0Y2ggPSBzY20uY3JlYXRlX3BhdGNoKHNxdWFzaD1UcnVlKQorICAgICAgICBzZWxmLmFzc2Vy
dFRydWUocmUuc2VhcmNoKHIndGVzdF9maWxlX2NvbW1pdDInLCBwYXRjaCkpCisgICAgICAgIHNl
bGYuYXNzZXJ0VHJ1ZShyZS5zZWFyY2gocid0ZXN0X2ZpbGVfY29tbWl0MScsIHBhdGNoKSkKKwor
ICAgIGRlZiB0ZXN0X2NyZWF0ZV9wYXRjaF9ub3Rfc3F1YXNoZWQoc2VsZik6CisgICAgICAgIHNl
bGYuX29uZV9sb2NhbF9jb21taXRfcGx1c193b3JraW5nX2NvcHlfY2hhbmdlcygpCisgICAgICAg
IHNjbSA9IGRldGVjdF9zY21fc3lzdGVtKHNlbGYuZ2l0X2NoZWNrb3V0X3BhdGgpCisgICAgICAg
IHBhdGNoID0gc2NtLmNyZWF0ZV9wYXRjaChzcXVhc2g9RmFsc2UpCisgICAgICAgIHNlbGYuYXNz
ZXJ0VHJ1ZShyZS5zZWFyY2gocid0ZXN0X2ZpbGVfY29tbWl0MicsIHBhdGNoKSkKKyAgICAgICAg
c2VsZi5hc3NlcnRGYWxzZShyZS5zZWFyY2gocid0ZXN0X2ZpbGVfY29tbWl0MScsIHBhdGNoKSkK
KworICAgIGRlZiB0ZXN0X2NyZWF0ZV9wYXRjaF9naXRfY29tbWl0KHNlbGYpOgorICAgICAgICBz
ZWxmLl90d29fbG9jYWxfY29tbWl0cygpCisgICAgICAgIHNjbSA9IGRldGVjdF9zY21fc3lzdGVt
KHNlbGYuZ2l0X2NoZWNrb3V0X3BhdGgpCisgICAgICAgIHBhdGNoID0gc2NtLmNyZWF0ZV9wYXRj
aChnaXRfY29tbWl0PSJIRUFEXiIpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5zZWFyY2go
cid0ZXN0X2ZpbGVfY29tbWl0MScsIHBhdGNoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShy
ZS5zZWFyY2gocid0ZXN0X2ZpbGVfY29tbWl0MicsIHBhdGNoKSkKKworICAgIGRlZiB0ZXN0X2Ny
ZWF0ZV9wYXRjaF9naXRfY29tbWl0X3JhbmdlKHNlbGYpOgorICAgICAgICBzZWxmLl90d29fbG9j
YWxfY29tbWl0cygpCisgICAgICAgIHNjbSA9IGRldGVjdF9zY21fc3lzdGVtKHNlbGYuZ2l0X2No
ZWNrb3V0X3BhdGgpCisgICAgICAgIHBhdGNoID0gc2NtLmNyZWF0ZV9wYXRjaChnaXRfY29tbWl0
PSJIRUFEfjIuLkhFQUQiKQorICAgICAgICBzZWxmLmFzc2VydFRydWUocmUuc2VhcmNoKHIndGVz
dF9maWxlX2NvbW1pdDInLCBwYXRjaCkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5zZWFy
Y2gocid0ZXN0X2ZpbGVfY29tbWl0MScsIHBhdGNoKSkKKworICAgIGRlZiB0ZXN0X2NyZWF0ZV9w
YXRjaF9tdWx0aXBsZV9sb2NhbF9jb21taXRzKHNlbGYpOgorICAgICAgICBzZWxmLl90d29fbG9j
YWxfY29tbWl0cygpCisgICAgICAgIHNjbSA9IGRldGVjdF9zY21fc3lzdGVtKHNlbGYuZ2l0X2No
ZWNrb3V0X3BhdGgpCisgICAgICAgIHBhdGNoID0gc2NtLmNyZWF0ZV9wYXRjaChzcXVhc2g9RmFs
c2UpCisgICAgICAgICMgRklYTUU6IEl0J3Mgd2VpcmQgdGhhdCB3aXRoIHNxdWFzaD1GYWxzZSwg
Y3JlYXRlX3BhdGNoL2NoYW5nZWRfZmlsZXMgaWdub3JlcyBsb2NhbCBjb21taXRzLAorICAgICAg
ICAjIGJ1dCBjb21taXRfd2l0aF9tZXNzYWdlIGNvbW1pdHMgdGhlbS4KKyAgICAgICAgc2VsZi5h
c3NlcnRUcnVlKHBhdGNoID09ICIiKQorCisgICAgZGVmIHRlc3RfY3JlYXRlX3BhdGNoX211bHRp
cGxlX2xvY2FsX2NvbW1pdHNfc3F1YXNoZWQoc2VsZik6CisgICAgICAgIHNlbGYuX3R3b19sb2Nh
bF9jb21taXRzKCkKKyAgICAgICAgc2NtID0gZGV0ZWN0X3NjbV9zeXN0ZW0oc2VsZi5naXRfY2hl
Y2tvdXRfcGF0aCkKKyAgICAgICAgcGF0Y2ggPSBzY20uY3JlYXRlX3BhdGNoKHNxdWFzaD1UcnVl
KQorICAgICAgICBzZWxmLmFzc2VydFRydWUocmUuc2VhcmNoKHIndGVzdF9maWxlX2NvbW1pdDIn
LCBwYXRjaCkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5zZWFyY2gocid0ZXN0X2ZpbGVf
Y29tbWl0MScsIHBhdGNoKSkKKwogICAgIGRlZiB0ZXN0X2NyZWF0ZV9iaW5hcnlfcGF0Y2goc2Vs
Zik6CiAgICAgICAgICMgQ3JlYXRlIGEgZ2l0IGJpbmFyeSBwYXRjaCBhbmQgY2hlY2sgdGhlIGNv
bnRlbnRzLgogICAgICAgICBzY20gPSBkZXRlY3Rfc2NtX3N5c3RlbShzZWxmLmdpdF9jaGVja291
dF9wYXRoKQpAQCAtNjk5LDEzICs4MjQsNTIgQEAgY2xhc3MgR2l0VGVzdChTQ01UZXN0KToKICAg
ICAgICAgd3JpdGVfaW50b19maWxlX2F0X3BhdGgodGVzdF9maWxlX3BhdGgsIGZpbGVfY29udGVu
dHMpCiAgICAgICAgIHJ1bl9jb21tYW5kKFsnZ2l0JywgJ2FkZCcsIHRlc3RfZmlsZV9uYW1lXSkK
ICAgICAgICAgcnVuX2NvbW1hbmQoWydnaXQnLCAnY29tbWl0JywgJy1tJywgJ2JpbmFyeSBkaWZm
J10pCi0gICAgICAgIHBhdGNoX2Zyb21fbG9jYWxfY29tbWl0ID0gc2NtLmNyZWF0ZV9wYXRjaF9m
cm9tX2xvY2FsX2NvbW1pdCgnSEVBRCcpCisgICAgICAgIHBhdGNoX2Zyb21fbG9jYWxfY29tbWl0
ID0gc2NtLmNyZWF0ZV9wYXRjaCgnSEVBRCcpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5z
ZWFyY2gocidcbmxpdGVyYWwgMFxuJywgcGF0Y2hfZnJvbV9sb2NhbF9jb21taXQpKQogICAgICAg
ICBzZWxmLmFzc2VydFRydWUocmUuc2VhcmNoKHInXG5saXRlcmFsIDI1NlxuJywgcGF0Y2hfZnJv
bV9sb2NhbF9jb21taXQpKQotICAgICAgICBwYXRjaF9zaW5jZV9sb2NhbF9jb21taXQgPSBzY20u
Y3JlYXRlX3BhdGNoX3NpbmNlX2xvY2FsX2NvbW1pdCgnSEVBRF4xJykKLSAgICAgICAgc2VsZi5h
c3NlcnRUcnVlKHJlLnNlYXJjaChyJ1xubGl0ZXJhbCAwXG4nLCBwYXRjaF9zaW5jZV9sb2NhbF9j
b21taXQpKQotICAgICAgICBzZWxmLmFzc2VydFRydWUocmUuc2VhcmNoKHInXG5saXRlcmFsIDI1
NlxuJywgcGF0Y2hfc2luY2VfbG9jYWxfY29tbWl0KSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChwYXRjaF9mcm9tX2xvY2FsX2NvbW1pdCwgcGF0Y2hfc2luY2VfbG9jYWxfY29tbWl0KQorCisg
ICAgZGVmIHRlc3RfY2hhbmdlZF9maWxlc19zcXVhc2hlZChzZWxmKToKKyAgICAgICAgc2VsZi5f
b25lX2xvY2FsX2NvbW1pdF9wbHVzX3dvcmtpbmdfY29weV9jaGFuZ2VzKCkKKyAgICAgICAgc2Nt
ID0gZGV0ZWN0X3NjbV9zeXN0ZW0oc2VsZi5naXRfY2hlY2tvdXRfcGF0aCkKKyAgICAgICAgZmls
ZXMgPSBzY20uY2hhbmdlZF9maWxlcyhzcXVhc2g9VHJ1ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRU
cnVlKCd0ZXN0X2ZpbGVfY29tbWl0MicgaW4gZmlsZXMpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1
ZSgndGVzdF9maWxlX2NvbW1pdDEnIGluIGZpbGVzKQorCisgICAgZGVmIHRlc3RfY2hhbmdlZF9m
aWxlc19ub3Rfc3F1YXNoZWQoc2VsZik6CisgICAgICAgIHNlbGYuX29uZV9sb2NhbF9jb21taXRf
cGx1c193b3JraW5nX2NvcHlfY2hhbmdlcygpCisgICAgICAgIHNjbSA9IGRldGVjdF9zY21fc3lz
dGVtKHNlbGYuZ2l0X2NoZWNrb3V0X3BhdGgpCisgICAgICAgIGZpbGVzID0gc2NtLmNoYW5nZWRf
ZmlsZXMoc3F1YXNoPUZhbHNlKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoJ3Rlc3RfZmlsZV9j
b21taXQyJyBpbiBmaWxlcykKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSgndGVzdF9maWxlX2Nv
bW1pdDEnIGluIGZpbGVzKQorCisgICAgZGVmIHRlc3RfY2hhbmdlZF9maWxlc19naXRfY29tbWl0
KHNlbGYpOgorICAgICAgICBzZWxmLl90d29fbG9jYWxfY29tbWl0cygpCisgICAgICAgIHNjbSA9
IGRldGVjdF9zY21fc3lzdGVtKHNlbGYuZ2l0X2NoZWNrb3V0X3BhdGgpCisgICAgICAgIGZpbGVz
ID0gc2NtLmNoYW5nZWRfZmlsZXMoZ2l0X2NvbW1pdD0iSEVBRF4iKQorICAgICAgICBzZWxmLmFz
c2VydFRydWUoJ3Rlc3RfZmlsZV9jb21taXQxJyBpbiBmaWxlcykKKyAgICAgICAgc2VsZi5hc3Nl
cnRGYWxzZSgndGVzdF9maWxlX2NvbW1pdDInIGluIGZpbGVzKQorCisgICAgZGVmIHRlc3RfY2hh
bmdlZF9maWxlc19naXRfY29tbWl0X3JhbmdlKHNlbGYpOgorICAgICAgICBzZWxmLl90d29fbG9j
YWxfY29tbWl0cygpCisgICAgICAgIHNjbSA9IGRldGVjdF9zY21fc3lzdGVtKHNlbGYuZ2l0X2No
ZWNrb3V0X3BhdGgpCisgICAgICAgIGZpbGVzID0gc2NtLmNoYW5nZWRfZmlsZXMoZ2l0X2NvbW1p
dD0iSEVBRH4yLi5IRUFEIikKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCd0ZXN0X2ZpbGVfY29t
bWl0MScgaW4gZmlsZXMpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgndGVzdF9maWxlX2NvbW1p
dDInIGluIGZpbGVzKQorCisgICAgZGVmIHRlc3RfY2hhbmdlZF9maWxlc19tdWx0aXBsZV9sb2Nh
bF9jb21taXRzKHNlbGYpOgorICAgICAgICBzZWxmLl90d29fbG9jYWxfY29tbWl0cygpCisgICAg
ICAgIHNjbSA9IGRldGVjdF9zY21fc3lzdGVtKHNlbGYuZ2l0X2NoZWNrb3V0X3BhdGgpCisgICAg
ICAgIGZpbGVzID0gc2NtLmNoYW5nZWRfZmlsZXMoc3F1YXNoPUZhbHNlKQorICAgICAgICAjIEZJ
WE1FOiBJdCdzIHdlaXJkIHRoYXQgd2l0aCBzcXVhc2g9RmFsc2UsIGNyZWF0ZV9wYXRjaC9jaGFu
Z2VkX2ZpbGVzIGlnbm9yZXMgbG9jYWwgY29tbWl0cywKKyAgICAgICAgIyBidXQgY29tbWl0X3dp
dGhfbWVzc2FnZSBjb21taXRzIHRoZW0uCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShsZW4oZmls
ZXMpID09IDApCisKKyAgICBkZWYgdGVzdF9jaGFuZ2VkX2ZpbGVzX211bHRpcGxlX2xvY2FsX2Nv
bW1pdHNfc3F1YXNoZWQoc2VsZik6CisgICAgICAgIHNlbGYuX3R3b19sb2NhbF9jb21taXRzKCkK
KyAgICAgICAgc2NtID0gZGV0ZWN0X3NjbV9zeXN0ZW0oc2VsZi5naXRfY2hlY2tvdXRfcGF0aCkK
KyAgICAgICAgZmlsZXMgPSBzY20uY2hhbmdlZF9maWxlcyhzcXVhc2g9VHJ1ZSkKKyAgICAgICAg
c2VsZi5hc3NlcnRUcnVlKCd0ZXN0X2ZpbGVfY29tbWl0MicgaW4gZmlsZXMpCisgICAgICAgIHNl
bGYuYXNzZXJ0VHJ1ZSgndGVzdF9maWxlX2NvbW1pdDEnIGluIGZpbGVzKQogCiAgICAgZGVmIHRl
c3RfY2hhbmdlZF9maWxlc19mb3JfcmV2aXNpb24oc2VsZik6CiAgICAgICAgIHNlbGYuX3NoYXJl
ZF90ZXN0X2NoYW5nZWRfZmlsZXNfZm9yX3JldmlzaW9uKCkKZGlmZiAtLWdpdCBhL1dlYktpdFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvb3B0cGFyc2VyLnB5IGIvV2ViS2l0VG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9zdHlsZS9vcHRwYXJzZXIucHkKaW5kZXggNTc2YzE2YS4uYmI0Nzg4YSAx
MDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9vcHRwYXJzZXIu
cHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9vcHRwYXJzZXIucHkK
QEAgLTE0Nyw3ICsxNDcsOCBAQCBjbGFzcyBDb21tYW5kT3B0aW9uVmFsdWVzKG9iamVjdCk6CiAg
ICAgICAgICAgICAgICAgIGdpdF9jb21taXQ9Tm9uZSwKICAgICAgICAgICAgICAgICAgaXNfdmVy
Ym9zZT1GYWxzZSwKICAgICAgICAgICAgICAgICAgbWluX2NvbmZpZGVuY2U9MSwKLSAgICAgICAg
ICAgICAgICAgb3V0cHV0X2Zvcm1hdD0iZW1hY3MiKToKKyAgICAgICAgICAgICAgICAgb3V0cHV0
X2Zvcm1hdD0iZW1hY3MiLAorICAgICAgICAgICAgICAgICBzcXVhc2g9RmFsc2UpOgogICAgICAg
ICBpZiBmaWx0ZXJfcnVsZXMgaXMgTm9uZToKICAgICAgICAgICAgIGZpbHRlcl9ydWxlcyA9IFtd
CiAKQEAgLTE2Niw2ICsxNjcsNyBAQCBjbGFzcyBDb21tYW5kT3B0aW9uVmFsdWVzKG9iamVjdCk6
CiAgICAgICAgIHNlbGYuaXNfdmVyYm9zZSA9IGlzX3ZlcmJvc2UKICAgICAgICAgc2VsZi5taW5f
Y29uZmlkZW5jZSA9IG1pbl9jb25maWRlbmNlCiAgICAgICAgIHNlbGYub3V0cHV0X2Zvcm1hdCA9
IG91dHB1dF9mb3JtYXQKKyAgICAgICAgc2VsZi5zcXVhc2ggPSBzcXVhc2gKIAogICAgICMgVXNl
ZnVsIGZvciB1bml0IHRlc3RpbmcuCiAgICAgZGVmIF9fZXFfXyhzZWxmLCBvdGhlcik6CkBAIC0x
ODAsNiArMTgyLDggQEAgY2xhc3MgQ29tbWFuZE9wdGlvblZhbHVlcyhvYmplY3QpOgogICAgICAg
ICAgICAgcmV0dXJuIEZhbHNlCiAgICAgICAgIGlmIHNlbGYub3V0cHV0X2Zvcm1hdCAhPSBvdGhl
ci5vdXRwdXRfZm9ybWF0OgogICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgIGlmIHNl
bGYuc3F1YXNoICE9IG90aGVyLnNxdWFzaDoKKyAgICAgICAgICAgIHJldHVybiBGYWxzZQogCiAg
ICAgICAgIHJldHVybiBUcnVlCiAKQEAgLTIxNCw2ICsyMTgsOCBAQCBjbGFzcyBBcmd1bWVudFBy
aW50ZXIob2JqZWN0KToKICAgICAgICAgICAgIGZsYWdzWydmaWx0ZXInXSA9ICIsIi5qb2luKGZp
bHRlcl9ydWxlcykKICAgICAgICAgaWYgb3B0aW9ucy5naXRfY29tbWl0OgogICAgICAgICAgICAg
ZmxhZ3NbJ2dpdC1jb21taXQnXSA9IG9wdGlvbnMuZ2l0X2NvbW1pdAorICAgICAgICBpZiBvcHRp
b25zLnNxdWFzaDoKKyAgICAgICAgICAgIGZsYWdzWydzcXVhc2gnXSA9IG9wdGlvbnMuc3F1YXNo
CiAKICAgICAgICAgZmxhZ19zdHJpbmcgPSAnJwogICAgICAgICAjIEFscGhhYmV0aXppbmcgbGV0
cyB1cyB1bml0IHRlc3QgdGhpcyBtZXRob2QuCkBAIC0zMDMsOSArMzA5LDEwIEBAIGNsYXNzIEFy
Z3VtZW50UGFyc2VyKG9iamVjdCk6CiAgICAgICAgIHBhcnNlci5hZGRfb3B0aW9uKCItZiIsICIt
LWZpbHRlci1ydWxlcyIsIG1ldGF2YXI9IlJVTEVTIiwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZGVzdD0iZmlsdGVyX3ZhbHVlIiwgaGVscD1maWx0ZXJfaGVscCkKIAotICAgICAgICBnaXRf
aGVscCA9ICJjaGVjayBhbGwgY2hhbmdlcyBhZnRlciB0aGUgZ2l2ZW4gZ2l0IGNvbW1pdC4iCi0g
ICAgICAgIHBhcnNlci5hZGRfb3B0aW9uKCItZyIsICItLWdpdC1jb21taXQiLCAiLS1naXQtZGlm
ZiIsICItLWdpdC1zaW5jZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGF2YXI9IkNP
TU1JVCIsIGRlc3Q9ImdpdF9zaW5jZSIsIGhlbHA9Z2l0X2hlbHAsKQorICAgICAgICBnaXRfY29t
bWl0X2hlbHAgPSAoImNoZWNrIGFsbCBjaGFuZ2VzIGluIHRoZSBnaXZlbiBnaXQgY29tbWl0LiAi
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAiVXNlICdjb21taXRfaWQuLicgdG8gY2hlY2sg
YWxsIGNoYW5nZXMgYWZ0ZXIgY29tbW1pdF9pZCIpCisgICAgICAgIHBhcnNlci5hZGRfb3B0aW9u
KCItZyIsICItLWdpdC1kaWZmIiwgIi0tZ2l0LWNvbW1pdCIsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgIG1ldGF2YXI9IkNPTU1JVCIsIGRlc3Q9ImdpdF9jb21taXQiLCBoZWxwPWdpdF9jb21t
aXRfaGVscCwpCiAKICAgICAgICAgbWluX2NvbmZpZGVuY2VfaGVscCA9ICgic2V0IHRoZSBtaW5p
bXVtIGNvbmZpZGVuY2Ugb2Ygc3R5bGUgZXJyb3JzICIKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAidG8gcmVwb3J0LiAgQ2FuIGJlIGFuIGludGVnZXIgMS01LCB3aXRoIDEgIgpAQCAt
MzIzLDYgKzMzMCwxNCBAQCBjbGFzcyBBcmd1bWVudFBhcnNlcihvYmplY3QpOgogICAgICAgICAg
ICAgICAgICAgICAgICAgICBkZXN0PSJvdXRwdXRfZm9ybWF0IiwgZGVmYXVsdD1kZWZhdWx0X291
dHB1dF9mb3JtYXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9b3V0cHV0X2Zvcm1h
dF9oZWxwKQogCisgICAgICAgIHNxdWFzaF9oZWxwID0gKCJBbGwgZGlmZnMgZnJvbSB0aGUgcmVt
b3RlIGJyYW5jaCBhcmUgY2hlY2tlZC4iCisgICAgICAgICAgICAgICAgICAgICAgICJJZiBleGNs
dWRlZCwgcHJvbXB0cyB3aGV0aGVyIHRvIHNxdWFzaCB3aGVuIHRoZXJlIGFyZSBtdWx0aXBsZSBj
b21taXRzLiIpCisgICAgICAgIHBhcnNlci5hZGRfb3B0aW9uKCItcyIsICItLXNxdWFzaCIsIGFj
dGlvbj0ic3RvcmVfdHJ1ZSIsIGRlc3Q9InNxdWFzaCIsIGhlbHA9c3F1YXNoX2hlbHApCisKKyAg
ICAgICAgc3F1YXNoX2hlbHAgPSAoIk9ubHkgd29ya2luZyBjb3B5IGRpZmZzIGFyZSBjaGVja2Vk
LiIKKyAgICAgICAgICAgICAgICAgICAgICAgIklmIGV4Y2x1ZGVkLCBwcm9tcHRzIHdoZXRoZXIg
dG8gc3F1YXNoIHdoZW4gdGhlcmUgYXJlIG11bHRpcGxlIGNvbW1pdHMuIikKKyAgICAgICAgcGFy
c2VyLmFkZF9vcHRpb24oIi0tbm8tc3F1YXNoIiwgYWN0aW9uPSJzdG9yZV9mYWxzZSIsIGRlc3Q9
InNxdWFzaCIsIGhlbHA9c3F1YXNoX2hlbHApCisKICAgICAgICAgdmVyYm9zZV9oZWxwID0gImVu
YWJsZSB2ZXJib3NlIGxvZ2dpbmcuIgogICAgICAgICBwYXJzZXIuYWRkX29wdGlvbigiLXYiLCAi
LS12ZXJib3NlIiwgZGVzdD0iaXNfdmVyYm9zZSIsIGRlZmF1bHQ9RmFsc2UsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsIGhlbHA9dmVyYm9zZV9oZWxwKQpA
QCAtNDA3LDcgKzQyMiw3IEBAIGNsYXNzIEFyZ3VtZW50UGFyc2VyKG9iamVjdCk6CiAgICAgICAg
IChvcHRpb25zLCBwYXRocykgPSBzZWxmLl9wYXJzZXIucGFyc2VfYXJncyhhcmdzPWFyZ3MpCiAK
ICAgICAgICAgZmlsdGVyX3ZhbHVlID0gb3B0aW9ucy5maWx0ZXJfdmFsdWUKLSAgICAgICAgZ2l0
X2NvbW1pdCA9IG9wdGlvbnMuZ2l0X3NpbmNlCisgICAgICAgIGdpdF9jb21taXQgPSBvcHRpb25z
LmdpdF9jb21taXQKICAgICAgICAgaXNfdmVyYm9zZSA9IG9wdGlvbnMuaXNfdmVyYm9zZQogICAg
ICAgICBtaW5fY29uZmlkZW5jZSA9IG9wdGlvbnMubWluX2NvbmZpZGVuY2UKICAgICAgICAgb3V0
cHV0X2Zvcm1hdCA9IG9wdGlvbnMub3V0cHV0X2Zvcm1hdApAQCAtNDIzLDE0ICs0MzgsNiBAQCBj
bGFzcyBBcmd1bWVudFBhcnNlcihvYmplY3QpOgogICAgICAgICAgICAgc2VsZi5fcGFyc2VfZXJy
b3IoJ1lvdSBjYW5ub3QgcHJvdmlkZSBib3RoIHBhdGhzIGFuZCBhIGdpdCAnCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAnY29tbWl0IGF0IHRoZSBzYW1lIHRpbWUuJykKIAotICAgICAg
ICAjIEZJWE1FOiBBZGQgdW5pdCB0ZXN0cy4KLSAgICAgICAgaWYgZ2l0X2NvbW1pdCBhbmQgJy4u
JyBpbiBnaXRfY29tbWl0OgotICAgICAgICAgICAgIyBGSVhNRTogSWYgdGhlIHJhbmdlIGlzIGEg
Ii4uLiIsIHRoZSBjb2RlIHNob3VsZCBmaW5kIHRoZSBjb21tb24KLSAgICAgICAgICAgICMgICAg
ICAgIGFuY2VzdG9yIGFuZCBzdGFydCB0aGVyZS4gIFNlZSBnaXQgZGlmZiAtLWhlbHAgZm9yIGhv
dwotICAgICAgICAgICAgIyAgICAgICAgIi4uLiIgdXN1YWxseSB3b3Jrcy4KLSAgICAgICAgICAg
IHNlbGYuX3BhcnNlX2Vycm9yKCdpbnZhbGlkIC0tZ2l0LWNvbW1pdCBvcHRpb246IG9wdGlvbiBk
b2VzICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdub3Qgc3VwcG9ydCByYW5nZXMg
Ii4uIjogJXMnICUgZ2l0X2NvbW1pdCkKLQogICAgICAgICBtaW5fY29uZmlkZW5jZSA9IGludCht
aW5fY29uZmlkZW5jZSkKICAgICAgICAgaWYgKG1pbl9jb25maWRlbmNlIDwgMSkgb3IgKG1pbl9j
b25maWRlbmNlID4gNSk6CiAgICAgICAgICAgICBzZWxmLl9wYXJzZV9lcnJvcignb3B0aW9uIC0t
bWluLWNvbmZpZGVuY2U6IGludmFsaWQgaW50ZWdlcjogJwpAQCAtNDUxLDcgKzQ1OCw4IEBAIGNs
YXNzIEFyZ3VtZW50UGFyc2VyKG9iamVjdCk6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGdpdF9jb21taXQ9Z2l0X2NvbW1pdCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaXNfdmVyYm9zZT1pc192ZXJib3NlLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBtaW5fY29uZmlkZW5jZT1taW5fY29uZmlkZW5jZSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0X2Zvcm1hdD1vdXRwdXRfZm9y
bWF0KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXRfZm9ybWF0
PW91dHB1dF9mb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNx
dWFzaD1vcHRpb25zLnNxdWFzaCkKIAogICAgICAgICByZXR1cm4gKHBhdGhzLCBvcHRpb25zKQog
CmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL29wdHBhcnNl
cl91bml0dGVzdC5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvb3B0cGFy
c2VyX3VuaXR0ZXN0LnB5CmluZGV4IDFjNTI1YzYuLmI3ZTNlZGEgMTAwNjQ0Ci0tLSBhL1dlYktp
dFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvb3B0cGFyc2VyX3VuaXR0ZXN0LnB5CisrKyBi
L1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvb3B0cGFyc2VyX3VuaXR0ZXN0LnB5
CkBAIC0xMTQsMTAgKzExNCw2IEBAIGNsYXNzIEFyZ3VtZW50UGFyc2VyVGVzdChMb2dnaW5nVGVz
dENhc2UpOgogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhTeXN0ZW1FeGl0LCBwYXJzZSwgWyct
LWJhZCddKQogICAgICAgICBzZWxmLmFzc2VydExvZyhbJ0VSUk9SOiBubyBzdWNoIG9wdGlvbjog
LS1iYWRcbiddKQogCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFN5c3RlbUV4aXQsIHBhcnNl
LCBbJy0tZ2l0LWRpZmY9YWEuLmJiJ10pCi0gICAgICAgIHNlbGYuYXNzZXJ0TG9nKFsnRVJST1I6
IGludmFsaWQgLS1naXQtY29tbWl0IG9wdGlvbjogJwotICAgICAgICAgICAgICAgICAgICAgICAg
J29wdGlvbiBkb2VzIG5vdCBzdXBwb3J0IHJhbmdlcyAiLi4iOiBhYS4uYmJcbiddKQotCiAgICAg
ICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFN5c3RlbUV4aXQsIHBhcnNlLCBbJy0tbWluLWNvbmZpZGVu
Y2U9YmFkJ10pCiAgICAgICAgIHNlbGYuYXNzZXJ0TG9nKFsnRVJST1I6IG9wdGlvbiAtLW1pbi1j
b25maWRlbmNlOiAnCiAgICAgICAgICAgICAgICAgICAgICAgICAiaW52YWxpZCBpbnRlZ2VyIHZh
bHVlOiAnYmFkJ1xuIl0pCkBAIC0xNzMsOCArMTY5LDYgQEAgY2xhc3MgQXJndW1lbnRQYXJzZXJU
ZXN0KExvZ2dpbmdUZXN0Q2FzZSk6CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKG9wdGlvbnMu
Z2l0X2NvbW1pdCwgJ2NvbW1pdCcpCiAgICAgICAgIChmaWxlcywgb3B0aW9ucykgPSBwYXJzZShb
Jy0tZ2l0LWRpZmY9Y29tbWl0J10pCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKG9wdGlvbnMu
Z2l0X2NvbW1pdCwgJ2NvbW1pdCcpCi0gICAgICAgIChmaWxlcywgb3B0aW9ucykgPSBwYXJzZShb
Jy0tZ2l0LXNpbmNlPWNvbW1pdCddKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhvcHRpb25z
LmdpdF9jb21taXQsICdjb21taXQnKQogICAgICAgICAoZmlsZXMsIG9wdGlvbnMpID0gcGFyc2Uo
WyctLXZlcmJvc2UnXSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMob3B0aW9ucy5pc192ZXJi
b3NlLCBUcnVlKQogCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0
eWxlX3JlZmVyZW5jZXMucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlX3Jl
ZmVyZW5jZXMucHkKaW5kZXggYmEyODA2ZS4uMWJmMDg3ZCAxMDA2NDQKLS0tIGEvV2ViS2l0VG9v
bHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZV9yZWZlcmVuY2VzLnB5CisrKyBiL1dlYktpdFRvb2xz
L1NjcmlwdHMvd2Via2l0cHkvc3R5bGVfcmVmZXJlbmNlcy5weQpAQCAtNzUsOSArNzUsNiBAQCBj
bGFzcyBXZWJLaXRDaGVja291dChvYmplY3QpOgogICAgICAgICAiIiJSZXR1cm4gdGhlIGNoZWNr
b3V0IHJvb3QgYXMgYW4gYWJzb2x1dGUgcGF0aC4iIiIKICAgICAgICAgcmV0dXJuIHNlbGYuX3Nj
bS5jaGVja291dF9yb290CiAKLSAgICBkZWYgY3JlYXRlX3BhdGNoKHNlbGYpOgotICAgICAgICBy
ZXR1cm4gc2VsZi5fc2NtLmNyZWF0ZV9wYXRjaCgpCi0KLSAgICBkZWYgY3JlYXRlX3BhdGNoX3Np
bmNlX2xvY2FsX2NvbW1pdChzZWxmLCBjb21taXQpOgotICAgICAgICByZXR1cm4gc2VsZi5fc2Nt
LmNyZWF0ZV9wYXRjaF9zaW5jZV9sb2NhbF9jb21taXQoY29tbWl0KQorICAgIGRlZiBjcmVhdGVf
cGF0Y2goc2VsZiwgZ2l0X2NvbW1pdCwgc3F1YXNoKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX3Nj
bS5jcmVhdGVfcGF0Y2goZ2l0X2NvbW1pdCwgc3F1YXNoKQogCmRpZmYgLS1naXQgYS9XZWJLaXRU
b29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvZG93bmxvYWQucHkgYi9XZWJLaXRU
b29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvZG93bmxvYWQucHkKaW5kZXggM2Fj
YzY2Ni4uMTU2MzA3YiAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90
b29sL2NvbW1hbmRzL2Rvd25sb2FkLnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0
cHkvdG9vbC9jb21tYW5kcy9kb3dubG9hZC5weQpAQCAtOTQsNyArOTQsNyBAQCBJZiBhIGJ1ZyBp
ZCBpcyBwcm92aWRlZCwgb3Igb25lIGNhbiBiZSBmb3VuZCBpbiB0aGUgQ2hhbmdlTG9nIGxhbmQg
d2lsbCB1cGRhdGUgdAogCiAgICAgZGVmIF9wcmVwYXJlX3N0YXRlKHNlbGYsIG9wdGlvbnMsIGFy
Z3MsIHRvb2wpOgogICAgICAgICByZXR1cm4gewotICAgICAgICAgICAgImJ1Z19pZCIgOiAoYXJn
cyBhbmQgYXJnc1swXSkgb3IgdG9vbC5jaGVja291dCgpLmJ1Z19pZF9mb3JfdGhpc19jb21taXQo
KQorICAgICAgICAgICAgImJ1Z19pZCIgOiAoYXJncyBhbmQgYXJnc1swXSkgb3IgdG9vbC5jaGVj
a291dCgpLmJ1Z19pZF9mb3JfdGhpc19jb21taXQob3B0aW9ucy5naXRfY29tbWl0LCBvcHRpb25z
LnNxdWFzaCkKICAgICAgICAgfQogCiAKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMv
d2Via2l0cHkvdG9vbC9jb21tYW5kcy91cGxvYWQucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dl
YmtpdHB5L3Rvb2wvY29tbWFuZHMvdXBsb2FkLnB5CmluZGV4IDdkODliY2EuLmQxNGFhMzYgMTAw
NjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy91cGxv
YWQucHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL3Vw
bG9hZC5weQpAQCAtMTQwLDE2ICsxNDAsMTYgQEAgY2xhc3MgT2Jzb2xldGVBdHRhY2htZW50cyhB
YnN0cmFjdFNlcXVlbmNlZENvbW1hbmQpOgogCiAKIGNsYXNzIEFic3RyYWN0UGF0Y2hVcGxvYWRp
bmdDb21tYW5kKEFic3RyYWN0U2VxdWVuY2VkQ29tbWFuZCk6Ci0gICAgZGVmIF9idWdfaWQoc2Vs
ZiwgYXJncywgdG9vbCwgc3RhdGUpOgorICAgIGRlZiBfYnVnX2lkKHNlbGYsIG9wdGlvbnMsIGFy
Z3MsIHRvb2wsIHN0YXRlKToKICAgICAgICAgIyBQZXJmZXIgYSBidWcgaWQgcGFzc2VkIGFzIGFu
IGFyZ3VtZW50IG92ZXIgYSBidWcgdXJsIGluIHRoZSBkaWZmIChpLmUuIENoYW5nZUxvZ3MpLgog
ICAgICAgICBidWdfaWQgPSBhcmdzIGFuZCBhcmdzWzBdCiAgICAgICAgIGlmIG5vdCBidWdfaWQ6
Ci0gICAgICAgICAgICBidWdfaWQgPSB0b29sLmNoZWNrb3V0KCkuYnVnX2lkX2Zvcl90aGlzX2Nv
bW1pdCgpCisgICAgICAgICAgICBidWdfaWQgPSB0b29sLmNoZWNrb3V0KCkuYnVnX2lkX2Zvcl90
aGlzX2NvbW1pdChvcHRpb25zLmdpdF9jb21taXQsIG9wdGlvbnMuc3F1YXNoKQogICAgICAgICBy
ZXR1cm4gYnVnX2lkCiAKICAgICBkZWYgX3ByZXBhcmVfc3RhdGUoc2VsZiwgb3B0aW9ucywgYXJn
cywgdG9vbCk6CiAgICAgICAgIHN0YXRlID0ge30KLSAgICAgICAgc3RhdGVbImJ1Z19pZCJdID0g
c2VsZi5fYnVnX2lkKGFyZ3MsIHRvb2wsIHN0YXRlKQorICAgICAgICBzdGF0ZVsiYnVnX2lkIl0g
PSBzZWxmLl9idWdfaWQob3B0aW9ucywgYXJncywgdG9vbCwgc3RhdGUpCiAgICAgICAgIGlmIG5v
dCBzdGF0ZVsiYnVnX2lkIl06CiAgICAgICAgICAgICBlcnJvcigiTm8gYnVnIGlkIHBhc3NlZCBh
bmQgbm8gYnVnIHVybCBmb3VuZCBpbiBDaGFuZ2VMb2dzLiIpCiAgICAgICAgIHJldHVybiBzdGF0
ZQpAQCAtMjIwLDcgKzIyMCw3IEBAIGNsYXNzIFVwbG9hZChBYnN0cmFjdFBhdGNoVXBsb2FkaW5n
Q29tbWFuZCk6CiAKICAgICBkZWYgX3ByZXBhcmVfc3RhdGUoc2VsZiwgb3B0aW9ucywgYXJncywg
dG9vbCk6CiAgICAgICAgIHN0YXRlID0ge30KLSAgICAgICAgc3RhdGVbImJ1Z19pZCJdID0gc2Vs
Zi5fYnVnX2lkKGFyZ3MsIHRvb2wsIHN0YXRlKQorICAgICAgICBzdGF0ZVsiYnVnX2lkIl0gPSBz
ZWxmLl9idWdfaWQob3B0aW9ucywgYXJncywgdG9vbCwgc3RhdGUpCiAgICAgICAgIHJldHVybiBz
dGF0ZQogCiAKQEAgLTI1OCw3ICsyNTgsNyBAQCBjbGFzcyBQb3N0Q29tbWl0cyhBYnN0cmFjdERl
Y2xhcmF0aXZlQ29tbWFuZCk6CiAgICAgICAgIHJldHVybiBjb21tZW50X3RleHQKIAogICAgIGRl
ZiBfZGlmZl9maWxlX2Zvcl9jb21taXQoc2VsZiwgdG9vbCwgY29tbWl0X2lkKToKLSAgICAgICAg
ZGlmZiA9IHRvb2wuc2NtKCkuY3JlYXRlX3BhdGNoX2Zyb21fbG9jYWxfY29tbWl0KGNvbW1pdF9p
ZCkKKyAgICAgICAgZGlmZiA9IHRvb2wuc2NtKCkuY3JlYXRlX3BhdGNoKGNvbW1pdF9pZCkKICAg
ICAgICAgcmV0dXJuIFN0cmluZ0lPLlN0cmluZ0lPKGRpZmYpICMgYWRkX3BhdGNoX3RvX2J1ZyBl
eHBlY3RzIGEgZmlsZS1saWtlIG9iamVjdAogCiAgICAgZGVmIGV4ZWN1dGUoc2VsZiwgb3B0aW9u
cywgYXJncywgdG9vbCk6CkBAIC0yNzEsNyArMjcxLDcgQEAgY2xhc3MgUG9zdENvbW1pdHMoQWJz
dHJhY3REZWNsYXJhdGl2ZUNvbW1hbmQpOgogICAgICAgICAgICAgY29tbWl0X21lc3NhZ2UgPSB0
b29sLnNjbSgpLmNvbW1pdF9tZXNzYWdlX2Zvcl9sb2NhbF9jb21taXQoY29tbWl0X2lkKQogCiAg
ICAgICAgICAgICAjIFByZWZlciAtLWJ1Zy1pZD0sIHRoZW4gYSBidWcgdXJsIGluIHRoZSBjb21t
aXQgbWVzc2FnZSwgdGhlbiBhIGJ1ZyB1cmwgaW4gdGhlIGVudGlyZSBjb21taXQgZGlmZiAoaS5l
LiBDaGFuZ2VMb2dzKS4KLSAgICAgICAgICAgIGJ1Z19pZCA9IG9wdGlvbnMuYnVnX2lkIG9yIHBh
cnNlX2J1Z19pZChjb21taXRfbWVzc2FnZS5tZXNzYWdlKCkpIG9yIHBhcnNlX2J1Z19pZCh0b29s
LnNjbSgpLmNyZWF0ZV9wYXRjaF9mcm9tX2xvY2FsX2NvbW1pdChjb21taXRfaWQpKQorICAgICAg
ICAgICAgYnVnX2lkID0gb3B0aW9ucy5idWdfaWQgb3IgcGFyc2VfYnVnX2lkKGNvbW1pdF9tZXNz
YWdlLm1lc3NhZ2UoKSkgb3IgcGFyc2VfYnVnX2lkKHRvb2wuc2NtKCkuY3JlYXRlX3BhdGNoKGNv
bW1pdF9pZCkpCiAgICAgICAgICAgICBpZiBub3QgYnVnX2lkOgogICAgICAgICAgICAgICAgIGxv
ZygiU2tpcHBpbmcgJXM6IE5vIGJ1ZyBpZCBmb3VuZCBpbiBjb21taXQgb3Igc3BlY2lmaWVkIHdp
dGggLS1idWctaWQuIiAlIGNvbW1pdF9pZCkKICAgICAgICAgICAgICAgICBjb250aW51ZQpAQCAt
NDAwLDcgKzQwMCw3IEBAIGNsYXNzIENyZWF0ZUJ1ZyhBYnN0cmFjdERlY2xhcmF0aXZlQ29tbWFu
ZCk6CiAgICAgICAgICAgICBjb21tZW50X3RleHQgKz0gIi0tLVxuIgogICAgICAgICAgICAgY29t
bWVudF90ZXh0ICs9IHRvb2wuc2NtKCkuZmlsZXNfY2hhbmdlZF9zdW1tYXJ5X2Zvcl9jb21taXQo
Y29tbWl0X2lkKQogCi0gICAgICAgIGRpZmYgPSB0b29sLnNjbSgpLmNyZWF0ZV9wYXRjaF9mcm9t
X2xvY2FsX2NvbW1pdChjb21taXRfaWQpCisgICAgICAgIGRpZmYgPSB0b29sLnNjbSgpLmNyZWF0
ZV9wYXRjaChjb21taXRfaWQpCiAgICAgICAgIGRpZmZfZmlsZSA9IFN0cmluZ0lPLlN0cmluZ0lP
KGRpZmYpICMgY3JlYXRlX2J1ZyBleHBlY3RzIGEgZmlsZS1saWtlIG9iamVjdAogICAgICAgICBi
dWdfaWQgPSB0b29sLmJ1Z3MuY3JlYXRlX2J1ZyhidWdfdGl0bGUsIGNvbW1lbnRfdGV4dCwgb3B0
aW9ucy5jb21wb25lbnQsIGRpZmZfZmlsZSwgIlBhdGNoIiwgY2M9b3B0aW9ucy5jYywgbWFya19m
b3JfcmV2aWV3PW9wdGlvbnMucmV2aWV3LCBtYXJrX2Zvcl9jb21taXRfcXVldWU9b3B0aW9ucy5y
ZXF1ZXN0X2NvbW1pdCkKIApAQCAtNDE2LDExICs0MTYsMTEgQEAgY2xhc3MgQ3JlYXRlQnVnKEFi
c3RyYWN0RGVjbGFyYXRpdmVDb21tYW5kKToKICAgICAgICAgaWYgb3B0aW9ucy5wcm9tcHQ6CiAg
ICAgICAgICAgICAoYnVnX3RpdGxlLCBjb21tZW50X3RleHQpID0gc2VsZi5wcm9tcHRfZm9yX2J1
Z190aXRsZV9hbmRfY29tbWVudCgpCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBjb21taXRf
bWVzc2FnZSA9IHRvb2wuY2hlY2tvdXQoKS5jb21taXRfbWVzc2FnZV9mb3JfdGhpc19jb21taXQo
KQorICAgICAgICAgICAgY29tbWl0X21lc3NhZ2UgPSB0b29sLmNoZWNrb3V0KCkuY29tbWl0X21l
c3NhZ2VfZm9yX3RoaXNfY29tbWl0KG9wdGlvbnMuZ2l0X2NvbW1pdCwgb3B0aW9ucy5zcXVhc2gp
CiAgICAgICAgICAgICBidWdfdGl0bGUgPSBjb21taXRfbWVzc2FnZS5kZXNjcmlwdGlvbihsc3Ry
aXA9VHJ1ZSwgc3RyaXBfdXJsPVRydWUpCiAgICAgICAgICAgICBjb21tZW50X3RleHQgPSBjb21t
aXRfbWVzc2FnZS5ib2R5KGxzdHJpcD1UcnVlKQogCi0gICAgICAgIGRpZmYgPSB0b29sLnNjbSgp
LmNyZWF0ZV9wYXRjaCgpCisgICAgICAgIGRpZmYgPSB0b29sLnNjbSgpLmNyZWF0ZV9wYXRjaChv
cHRpb25zLmdpdF9jb21taXQsIG9wdGlvbnMuc3F1YXNoKQogICAgICAgICBkaWZmX2ZpbGUgPSBT
dHJpbmdJTy5TdHJpbmdJTyhkaWZmKSAjIGNyZWF0ZV9idWcgZXhwZWN0cyBhIGZpbGUtbGlrZSBv
YmplY3QKICAgICAgICAgYnVnX2lkID0gdG9vbC5idWdzLmNyZWF0ZV9idWcoYnVnX3RpdGxlLCBj
b21tZW50X3RleHQsIG9wdGlvbnMuY29tcG9uZW50LCBkaWZmX2ZpbGUsICJQYXRjaCIsIGNjPW9w
dGlvbnMuY2MsIG1hcmtfZm9yX3Jldmlldz1vcHRpb25zLnJldmlldywgbWFya19mb3JfY29tbWl0
X3F1ZXVlPW9wdGlvbnMucmVxdWVzdF9jb21taXQpCiAKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xz
L1NjcmlwdHMvd2Via2l0cHkvdG9vbC9tYWluLnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJr
aXRweS90b29sL21haW4ucHkKaW5kZXggNjI5ZTg2Zi4uNjY4ODdlMCAxMDA3NTUKLS0tIGEvV2Vi
S2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL21haW4ucHkKKysrIGIvV2ViS2l0VG9vbHMv
U2NyaXB0cy93ZWJraXRweS90b29sL21haW4ucHkKQEAgLTExOCw2ICsxMTgsNyBAQCBjbGFzcyBX
ZWJLaXRQYXRjaChNdWx0aUNvbW1hbmRUb29sKToKIAogICAgICMgRklYTUU6IFRoaXMgbWF5IGJl
IHVubmVjZXNzYXJ5IHNpbmNlIHdlIHBhc3MgZ2xvYmFsIG9wdGlvbnMgdG8gYWxsIGNvbW1hbmRz
IGR1cmluZyBleGVjdXRlKCkgYXMgd2VsbC4KICAgICBkZWYgaGFuZGxlX2dsb2JhbF9vcHRpb25z
KHNlbGYsIG9wdGlvbnMpOgorICAgICAgICBzZWxmLl9vcHRpb25zID0gb3B0aW9ucwogICAgICAg
ICBpZiBvcHRpb25zLmRyeV9ydW46CiAgICAgICAgICAgICBzZWxmLnNjbSgpLmRyeXJ1biA9IFRy
dWUKICAgICAgICAgICAgIHNlbGYuYnVncy5kcnlydW4gPSBUcnVlCmRpZmYgLS1naXQgYS9XZWJL
aXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvbW9ja3Rvb2wucHkgYi9XZWJLaXRUb29scy9T
Y3JpcHRzL3dlYmtpdHB5L3Rvb2wvbW9ja3Rvb2wucHkKaW5kZXggODlmZGU2YS4uZWQ0ZTQ1NSAx
MDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL21vY2t0b29sLnB5
CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9tb2NrdG9vbC5weQpAQCAt
Mzc5LDcgKzM3OSw3IEBAIGNsYXNzIE1vY2tTQ00oTW9jayk6CiAgICAgICAgICMgd2lsbCBhY3R1
YWxseSBiZSB0aGUgcm9vdC4gIFNpbmNlIGdldGN3ZCgpIGlzIHdyb25nLCB1c2UgYSBnbG9iYWxs
eSBmYWtlIHJvb3QgZm9yIG5vdy4KICAgICAgICAgc2VsZi5jaGVja291dF9yb290ID0gc2VsZi5m
YWtlX2NoZWNrb3V0X3Jvb3QKIAotICAgIGRlZiBjcmVhdGVfcGF0Y2goc2VsZik6CisgICAgZGVm
IGNyZWF0ZV9wYXRjaChzZWxmLCBnaXRfY29tbWl0LCBzcXVhc2gpOgogICAgICAgICByZXR1cm4g
IlBhdGNoMSIKIAogICAgIGRlZiBjb21taXRfaWRzX2Zyb21fY29tbWl0aXNoX2FyZ3VtZW50cyhz
ZWxmLCBhcmdzKToKQEAgLTM5NCwxMyArMzk0LDYgQEAgY2xhc3MgTW9ja1NDTShNb2NrKToKICAg
ICAgICAgICAgICAgICAiaHR0cHM6Ly9idWdzLmV4YW1wbGUub3JnL3Nob3dfYnVnLmNnaT9pZD03
NVxuIikKICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCJCb2d1cyBjb21taXRfaWQgaW4gY29tbWl0
X21lc3NhZ2VfZm9yX2xvY2FsX2NvbW1pdC4iKQogCi0gICAgZGVmIGNyZWF0ZV9wYXRjaF9mcm9t
X2xvY2FsX2NvbW1pdChzZWxmLCBjb21taXRfaWQpOgotICAgICAgICBpZiBjb21taXRfaWQgPT0g
IkNvbW1pdGlzaDEiOgotICAgICAgICAgICAgcmV0dXJuICJQYXRjaDEiCi0gICAgICAgIGlmIGNv
bW1pdF9pZCA9PSAiQ29tbWl0aXNoMiI6Ci0gICAgICAgICAgICByZXR1cm4gIlBhdGNoMiIKLSAg
ICAgICAgcmFpc2UgRXhjZXB0aW9uKCJCb2d1cyBjb21taXRfaWQgaW4gY29tbWl0X21lc3NhZ2Vf
Zm9yX2xvY2FsX2NvbW1pdC4iKQotCiAgICAgZGVmIGRpZmZfZm9yX3JldmlzaW9uKHNlbGYsIHJl
dmlzaW9uKToKICAgICAgICAgcmV0dXJuICJEaWZmRm9yUmV2aXNpb24lc1xuIiBcCiAgICAgICAg
ICAgICAgICAiaHR0cDovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIzNDUiICUg
cmV2aXNpb24KQEAgLTQyNiwxMiArNDE5LDEyIEBAIGNsYXNzIE1vY2tDaGVja291dChvYmplY3Qp
OgogICAgIGRlZiBidWdfaWRfZm9yX3JldmlzaW9uKHNlbGYsIHN2bl9yZXZpc2lvbik6CiAgICAg
ICAgIHJldHVybiAxMjM0NQogCi0gICAgZGVmIG1vZGlmaWVkX2NoYW5nZWxvZ3Moc2VsZik6Cisg
ICAgZGVmIG1vZGlmaWVkX2NoYW5nZWxvZ3Moc2VsZiwgZ2l0X2NvbW1pdCwgc3F1YXNoKToKICAg
ICAgICAgIyBJZGVhbGx5IHdlJ2QgcmV0dXJuIHNvbWV0aGluZyBtb3JlIGludGVyZXN0aW5nIGhl
cmUuICBUaGUgcHJvYmxlbSBpcwogICAgICAgICAjIHRoYXQgTGFuZERpZmYgd2lsbCB0cnkgdG8g
YWN0dWFsbHkgcmVhZCB0aGUgcGF0Y2ggZnJvbSBkaXNrIQogICAgICAgICByZXR1cm4gW10KIAot
ICAgIGRlZiBjb21taXRfbWVzc2FnZV9mb3JfdGhpc19jb21taXQoc2VsZik6CisgICAgZGVmIGNv
bW1pdF9tZXNzYWdlX2Zvcl90aGlzX2NvbW1pdChzZWxmLCBnaXRfY29tbWl0LCBzcXVhc2gpOgog
ICAgICAgICByZXR1cm4gTW9jaygpCiAKICAgICBkZWYgYXBwbHlfcGF0Y2goc2VsZiwgcGF0Y2gs
IGZvcmNlPUZhbHNlKToKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkv
dG9vbC9zdGVwcy9hYnN0cmFjdHN0ZXAucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5
L3Rvb2wvc3RlcHMvYWJzdHJhY3RzdGVwLnB5CmluZGV4IDFhZDM0M2QuLjhlODNiNGIgMTAwNjQ0
Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9hYnN0cmFjdHN0
ZXAucHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL2Fic3Ry
YWN0c3RlcC5weQpAQCAtMzYsMTAgKzM2LDEzIEBAIGNsYXNzIEFic3RyYWN0U3RlcChvYmplY3Qp
OgogICAgICAgICBzZWxmLl9vcHRpb25zID0gb3B0aW9ucwogICAgICAgICBzZWxmLl9wb3J0ID0g
Tm9uZQogCi0gICAgZGVmIF9ydW5fc2NyaXB0KHNlbGYsIHNjcmlwdF9uYW1lLCBxdWlldD1GYWxz
ZSwgcG9ydD1XZWJLaXRQb3J0KToKKyAgICBkZWYgX3J1bl9zY3JpcHQoc2VsZiwgc2NyaXB0X25h
bWUsIGFyZ3M9Tm9uZSwgcXVpZXQ9RmFsc2UsIHBvcnQ9V2ViS2l0UG9ydCk6CiAgICAgICAgIGxv
ZygiUnVubmluZyAlcyIgJSBzY3JpcHRfbmFtZSkKICAgICAgICAgIyBGSVhNRTogVGhpcyBzaG91
bGQgdXNlIHNlbGYucG9ydCgpCi0gICAgICAgIHNlbGYuX3Rvb2wuZXhlY3V0aXZlLnJ1bl9hbmRf
dGhyb3dfaWZfZmFpbChwb3J0LnNjcmlwdF9wYXRoKHNjcmlwdF9uYW1lKSwgcXVpZXQpCisgICAg
ICAgIGNvbW1hbmQgPSBbcG9ydC5zY3JpcHRfcGF0aChzY3JpcHRfbmFtZSldCisgICAgICAgIGlm
IGFyZ3M6CisgICAgICAgICAgICBjb21tYW5kLmV4dGVuZChhcmdzKQorICAgICAgICBzZWxmLl90
b29sLmV4ZWN1dGl2ZS5ydW5fYW5kX3Rocm93X2lmX2ZhaWwoY29tbWFuZCwgcXVpZXQpCiAKICAg
ICAjIEZJWE1FOiBUaGUgcG9ydCBzaG91bGQgbGl2ZSBvbiB0aGUgdG9vbC4KICAgICBkZWYgcG9y
dChzZWxmKToKQEAgLTQ5LDggKzUyLDggQEAgY2xhc3MgQWJzdHJhY3RTdGVwKG9iamVjdCk6CiAg
ICAgICAgIHJldHVybiBzZWxmLl9wb3J0CiAKICAgICBfd2VsbF9rbm93bl9rZXlzID0gewotICAg
ICAgICAiZGlmZiIgOiBsYW1iZGEgc2VsZjogc2VsZi5fdG9vbC5zY20oKS5jcmVhdGVfcGF0Y2go
KSwKLSAgICAgICAgImNoYW5nZWxvZ3MiIDogbGFtYmRhIHNlbGY6IHNlbGYuX3Rvb2wuY2hlY2tv
dXQoKS5tb2RpZmllZF9jaGFuZ2Vsb2dzKCksCisgICAgICAgICJkaWZmIjogbGFtYmRhIHNlbGY6
IHNlbGYuX3Rvb2wuc2NtKCkuY3JlYXRlX3BhdGNoKHNlbGYuX29wdGlvbnMuZ2l0X2NvbW1pdCwg
c2VsZi5fb3B0aW9ucy5zcXVhc2gpLAorICAgICAgICAiY2hhbmdlbG9ncyI6IGxhbWJkYSBzZWxm
OiBzZWxmLl90b29sLmNoZWNrb3V0KCkubW9kaWZpZWRfY2hhbmdlbG9ncyhzZWxmLl9vcHRpb25z
LmdpdF9jb21taXQsIHNlbGYuX29wdGlvbnMuc3F1YXNoKSwKICAgICB9CiAKICAgICBkZWYgY2Fj
aGVkX2xvb2t1cChzZWxmLCBzdGF0ZSwga2V5LCBwcm9taXNlPU5vbmUpOgpkaWZmIC0tZ2l0IGEv
V2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL2FwcGx5cGF0Y2h3aXRobG9j
YWxjb21taXQucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvYXBw
bHlwYXRjaHdpdGhsb2NhbGNvbW1pdC5weQppbmRleCA3MGRkZmU1Li5mZjA5MmIwIDEwMDY0NAot
LS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvYXBwbHlwYXRjaHdp
dGhsb2NhbGNvbW1pdC5weQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wv
c3RlcHMvYXBwbHlwYXRjaHdpdGhsb2NhbGNvbW1pdC5weQpAQCAtMzksNSArMzksNSBAQCBjbGFz
cyBBcHBseVBhdGNoV2l0aExvY2FsQ29tbWl0KEFwcGx5UGF0Y2gpOgogICAgIGRlZiBydW4oc2Vs
Ziwgc3RhdGUpOgogICAgICAgICBBcHBseVBhdGNoLnJ1bihzZWxmLCBzdGF0ZSkKICAgICAgICAg
aWYgc2VsZi5fb3B0aW9ucy5sb2NhbF9jb21taXQ6Ci0gICAgICAgICAgICBjb21taXRfbWVzc2Fn
ZSA9IHNlbGYuX3Rvb2wuY2hlY2tvdXQoKS5jb21taXRfbWVzc2FnZV9mb3JfdGhpc19jb21taXQo
KQorICAgICAgICAgICAgY29tbWl0X21lc3NhZ2UgPSBzZWxmLl90b29sLmNoZWNrb3V0KCkuY29t
bWl0X21lc3NhZ2VfZm9yX3RoaXNfY29tbWl0KGdpdF9jb21taXQ9Tm9uZSwgc3F1YXNoPUZhbHNl
KQogICAgICAgICAgICAgc2VsZi5fdG9vbC5zY20oKS5jb21taXRfbG9jYWxseV93aXRoX21lc3Nh
Z2UoY29tbWl0X21lc3NhZ2UubWVzc2FnZSgpIG9yIHN0YXRlWyJwYXRjaCJdLm5hbWUoKSkKZGlm
ZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9jaGVja3N0
eWxlLnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL2NoZWNrc3R5
bGUucHkKaW5kZXggNjNmMDExNC4uMDdjZTljZiAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2Ny
aXB0cy93ZWJraXRweS90b29sL3N0ZXBzL2NoZWNrc3R5bGUucHkKKysrIGIvV2ViS2l0VG9vbHMv
U2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL2NoZWNrc3R5bGUucHkKQEAgLTM5LDYgKzM5LDkg
QEAgY2xhc3MgQ2hlY2tTdHlsZShBYnN0cmFjdFN0ZXApOgogICAgICAgICByZXR1cm4gWwogICAg
ICAgICAgICAgT3B0aW9ucy5ub25faW50ZXJhY3RpdmUsCiAgICAgICAgICAgICBPcHRpb25zLmNo
ZWNrX3N0eWxlLAorICAgICAgICAgICAgT3B0aW9ucy5naXRfY29tbWl0LAorICAgICAgICAgICAg
T3B0aW9ucy5ub19zcXVhc2gsCisgICAgICAgICAgICBPcHRpb25zLnNxdWFzaCwKICAgICAgICAg
XQogCiAgICAgZGVmIHJ1bihzZWxmLCBzdGF0ZSk6CkBAIC00Niw3ICs0OSwxNiBAQCBjbGFzcyBD
aGVja1N0eWxlKEFic3RyYWN0U3RlcCk6CiAgICAgICAgICAgICByZXR1cm4KICAgICAgICAgb3Mu
Y2hkaXIoc2VsZi5fdG9vbC5zY20oKS5jaGVja291dF9yb290KQogICAgICAgICB0cnk6Ci0gICAg
ICAgICAgICBzZWxmLl9ydW5fc2NyaXB0KCJjaGVjay13ZWJraXQtc3R5bGUiKQorICAgICAgICAg
ICAgYXJncyA9IFtdCisgICAgICAgICAgICBpZiBzZWxmLl9vcHRpb25zLmdpdF9jb21taXQ6Cisg
ICAgICAgICAgICAgICAgYXJncy5hcHBlbmQoIi0tZ2l0LWNvbW1pdCIpCisgICAgICAgICAgICAg
ICAgYXJncy5hcHBlbmQoc2VsZi5fb3B0aW9ucy5naXRfY29tbWl0KQorICAgICAgICAgICAgaWYg
c2VsZi5fdG9vbC5zY20oKS5zaG91bGRfc3F1YXNoKHNlbGYuX29wdGlvbnMuc3F1YXNoKToKKyAg
ICAgICAgICAgICAgICBhcmdzLmFwcGVuZCgiLS1zcXVhc2giKQorICAgICAgICAgICAgZWxzZToK
KyAgICAgICAgICAgICAgICBhcmdzLmFwcGVuZCgiLS1uby1zcXVhc2giKQorCisgICAgICAgICAg
ICBzZWxmLl9ydW5fc2NyaXB0KCJjaGVjay13ZWJraXQtc3R5bGUiLCBhcmdzKQogICAgICAgICBl
eGNlcHQgU2NyaXB0RXJyb3IsIGU6CiAgICAgICAgICAgICBpZiBzZWxmLl9vcHRpb25zLm5vbl9p
bnRlcmFjdGl2ZToKICAgICAgICAgICAgICAgICAjIFdlIG5lZWQgdG8gcmUtcmFpc2UgdGhlIGV4
Y2VwdGlvbiBoZXJlIHRvIGhhdmUgdGhlCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRz
L3dlYmtpdHB5L3Rvb2wvc3RlcHMvY29tbWl0LnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJr
aXRweS90b29sL3N0ZXBzL2NvbW1pdC5weQppbmRleCBiZDVjOTk4Li5lMjdmNmQ0IDEwMDY0NAot
LS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvY29tbWl0LnB5Cisr
KyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9jb21taXQucHkKQEAg
LTI3LDkgKzI3LDE5IEBACiAjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKIGZyb20gd2Via2l0cHkudG9vbC5zdGVw
cy5hYnN0cmFjdHN0ZXAgaW1wb3J0IEFic3RyYWN0U3RlcAorZnJvbSB3ZWJraXRweS50b29sLnN0
ZXBzLm9wdGlvbnMgaW1wb3J0IE9wdGlvbnMKIAogCiBjbGFzcyBDb21taXQoQWJzdHJhY3RTdGVw
KToKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgb3B0aW9ucyhjbHMpOgorICAgICAgICByZXR1
cm4gWworICAgICAgICAgICAgT3B0aW9ucy5naXRfY29tbWl0LAorICAgICAgICAgICAgT3B0aW9u
cy5ub19zcXVhc2gsCisgICAgICAgICAgICBPcHRpb25zLnNxdWFzaCwKKyAgICAgICAgXQorCiAg
ICAgZGVmIHJ1bihzZWxmLCBzdGF0ZSk6Ci0gICAgICAgIGNvbW1pdF9tZXNzYWdlID0gc2VsZi5f
dG9vbC5jaGVja291dCgpLmNvbW1pdF9tZXNzYWdlX2Zvcl90aGlzX2NvbW1pdCgpCi0gICAgICAg
IHN0YXRlWyJjb21taXRfdGV4dCJdID0gIHNlbGYuX3Rvb2wuc2NtKCkuY29tbWl0X3dpdGhfbWVz
c2FnZShjb21taXRfbWVzc2FnZS5tZXNzYWdlKCkpCisgICAgICAgIGNvbW1pdF9tZXNzYWdlID0g
c2VsZi5fdG9vbC5jaGVja291dCgpLmNvbW1pdF9tZXNzYWdlX2Zvcl90aGlzX2NvbW1pdChzZWxm
Ll9vcHRpb25zLmdpdF9jb21taXQsIHNlbGYuX29wdGlvbnMuc3F1YXNoKQorICAgICAgICBzdGF0
ZVsiY29tbWl0X3RleHQiXSA9IHNlbGYuX3Rvb2wuc2NtKCkuY29tbWl0X3dpdGhfbWVzc2FnZShj
b21taXRfbWVzc2FnZS5tZXNzYWdlKCksCisgICAgICAgICAgICBnaXRfY29tbWl0PXNlbGYuX29w
dGlvbnMuZ2l0X2NvbW1pdCwgc3F1YXNoPXNlbGYuX29wdGlvbnMuc3F1YXNoKQpkaWZmIC0tZ2l0
IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL29wdGlvbnMucHkgYi9X
ZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvb3B0aW9ucy5weQppbmRleCBl
YTQzZDZkLi43MTYyMDI0IDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5
L3Rvb2wvc3RlcHMvb3B0aW9ucy5weQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5
L3Rvb2wvc3RlcHMvb3B0aW9ucy5weQpAQCAtNDEsNyArNDEsMTAgQEAgY2xhc3MgT3B0aW9ucyhv
YmplY3QpOgogICAgIGRlc2NyaXB0aW9uID0gbWFrZV9vcHRpb24oIi1tIiwgIi0tZGVzY3JpcHRp
b24iLCBhY3Rpb249InN0b3JlIiwgdHlwZT0ic3RyaW5nIiwgZGVzdD0iZGVzY3JpcHRpb24iLCBo
ZWxwPSJEZXNjcmlwdGlvbiBzdHJpbmcgZm9yIHRoZSBhdHRhY2htZW50IChkZWZhdWx0OiBcInBh
dGNoXCIpIikKICAgICBlbWFpbCA9IG1ha2Vfb3B0aW9uKCItLWVtYWlsIiwgYWN0aW9uPSJzdG9y
ZSIsIHR5cGU9InN0cmluZyIsIGRlc3Q9ImVtYWlsIiwgaGVscD0iRW1haWwgYWRkcmVzcyB0byB1
c2UgaW4gQ2hhbmdlTG9ncy4iKQogICAgIGZvcmNlX2NsZWFuID0gbWFrZV9vcHRpb24oIi0tZm9y
Y2UtY2xlYW4iLCBhY3Rpb249InN0b3JlX3RydWUiLCBkZXN0PSJmb3JjZV9jbGVhbiIsIGRlZmF1
bHQ9RmFsc2UsIGhlbHA9IkNsZWFuIHdvcmtpbmcgZGlyZWN0b3J5IGJlZm9yZSBhcHBseWluZyBw
YXRjaGVzIChyZW1vdmVzIGxvY2FsIGNoYW5nZXMgYW5kIGNvbW1pdHMpIikKKyMgRklYTUU6IE1h
a2UgY29tbWl0IHJhbmdlcyB0cmVhdCBlYWNoIGNvbW1pdCBzZXBhcmF0ZWx5IGluc3RlYWQgb2Yg
c3F1YXNoaW5nIHRoZW0gaW50byBvbmUuCisgICAgZ2l0X2NvbW1pdCA9IG1ha2Vfb3B0aW9uKCIt
LWdpdC1jb21taXQiLCBhY3Rpb249InN0b3JlIiwgZGVzdD0iZ2l0X2NvbW1pdCIsIGhlbHA9Ikxv
Y2FsIGdpdCBjb21taXQgdG8gdXBsb2FkL2xhbmQuIElmIGEgcmFuZ2UsIHRoZSBjb21taXRzIGFy
ZSBzcXVhc2hlZCBpbnRvIG9uZS4iKQogICAgIGxvY2FsX2NvbW1pdCA9IG1ha2Vfb3B0aW9uKCIt
LWxvY2FsLWNvbW1pdCIsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsIGRlc3Q9ImxvY2FsX2NvbW1pdCIs
IGRlZmF1bHQ9RmFsc2UsIGhlbHA9Ik1ha2UgYSBsb2NhbCBjb21taXQgZm9yIGVhY2ggYXBwbGll
ZCBwYXRjaCIpCisgICAgbm9fc3F1YXNoID0gbWFrZV9vcHRpb24oIi0tbm8tc3F1YXNoIiwgYWN0
aW9uPSJzdG9yZV9mYWxzZSIsIGRlc3Q9InNxdWFzaCIsIGhlbHA9IkRvbid0IHNxdWFzaCBsb2Nh
bCBjb21taXRzIGludG8gb25lIG9uIHVwbG9hZC9sYW5kIChnaXQtb25seSkuIikKICAgICBub25f
aW50ZXJhY3RpdmUgPSBtYWtlX29wdGlvbigiLS1ub24taW50ZXJhY3RpdmUiLCBhY3Rpb249InN0
b3JlX3RydWUiLCBkZXN0PSJub25faW50ZXJhY3RpdmUiLCBkZWZhdWx0PUZhbHNlLCBoZWxwPSJO
ZXZlciBwcm9tcHQgdGhlIHVzZXIsIGZhaWwgYXMgZmFzdCBhcyBwb3NzaWJsZS4iKQogICAgIG9i
c29sZXRlX3BhdGNoZXMgPSBtYWtlX29wdGlvbigiLS1uby1vYnNvbGV0ZSIsIGFjdGlvbj0ic3Rv
cmVfZmFsc2UiLCBkZXN0PSJvYnNvbGV0ZV9wYXRjaGVzIiwgZGVmYXVsdD1UcnVlLCBoZWxwPSJE
byBub3Qgb2Jzb2xldGUgb2xkIHBhdGNoZXMgYmVmb3JlIHBvc3RpbmcgdGhpcyBvbmUuIikKICAg
ICBvcGVuX2J1ZyA9IG1ha2Vfb3B0aW9uKCItLW9wZW4tYnVnIiwgYWN0aW9uPSJzdG9yZV90cnVl
IiwgZGVzdD0ib3Blbl9idWciLCBkZWZhdWx0PUZhbHNlLCBoZWxwPSJPcGVucyB0aGUgYXNzb2Np
YXRlZCBidWcgaW4gYSBicm93c2VyLiIpCkBAIC01MSw1ICs1NCw2IEBAIGNsYXNzIE9wdGlvbnMo
b2JqZWN0KToKICAgICByZXF1ZXN0X2NvbW1pdCA9IG1ha2Vfb3B0aW9uKCItLXJlcXVlc3QtY29t
bWl0IiwgYWN0aW9uPSJzdG9yZV90cnVlIiwgZGVzdD0icmVxdWVzdF9jb21taXQiLCBkZWZhdWx0
PUZhbHNlLCBoZWxwPSJNYXJrIHRoZSBwYXRjaCBhcyBuZWVkaW5nIGF1dG8tY29tbWl0IGFmdGVy
IHJldmlldy4iKQogICAgIHJldmlldyA9IG1ha2Vfb3B0aW9uKCItLW5vLXJldmlldyIsIGFjdGlv
bj0ic3RvcmVfZmFsc2UiLCBkZXN0PSJyZXZpZXciLCBkZWZhdWx0PVRydWUsIGhlbHA9IkRvIG5v
dCBtYXJrIHRoZSBwYXRjaCBmb3IgcmV2aWV3LiIpCiAgICAgcmV2aWV3ZXIgPSBtYWtlX29wdGlv
bigiLXIiLCAiLS1yZXZpZXdlciIsIGFjdGlvbj0ic3RvcmUiLCB0eXBlPSJzdHJpbmciLCBkZXN0
PSJyZXZpZXdlciIsIGhlbHA9IlVwZGF0ZSBDaGFuZ2VMb2dzIHRvIHNheSBSZXZpZXdlZCBieSBS
RVZJRVdFUi4iKQorICAgIHNxdWFzaCA9IG1ha2Vfb3B0aW9uKCItcyIsICItLXNxdWFzaCIsIGFj
dGlvbj0ic3RvcmVfdHJ1ZSIsIGRlc3Q9InNxdWFzaCIsIGhlbHA9IlNxdWFzaCBhbGwgbG9jYWwg
Y29tbWl0cyBpbnRvIG9uZSBvbiB1cGxvYWQvbGFuZCAoZ2l0LW9ubHkpLiIpCiAgICAgdGVzdCA9
IG1ha2Vfb3B0aW9uKCItLW5vLXRlc3QiLCBhY3Rpb249InN0b3JlX2ZhbHNlIiwgZGVzdD0idGVz
dCIsIGRlZmF1bHQ9VHJ1ZSwgaGVscD0iQ29tbWl0IHdpdGhvdXQgcnVubmluZyBydW4td2Via2l0
LXRlc3RzLiIpCiAgICAgdXBkYXRlID0gbWFrZV9vcHRpb24oIi0tbm8tdXBkYXRlIiwgYWN0aW9u
PSJzdG9yZV9mYWxzZSIsIGRlc3Q9InVwZGF0ZSIsIGRlZmF1bHQ9VHJ1ZSwgaGVscD0iRG9uJ3Qg
dXBkYXRlIHRoZSB3b3JraW5nIGRpcmVjdG9yeS4iKQpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMv
U2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL3Bvc3RkaWZmLnB5IGIvV2ViS2l0VG9vbHMvU2Ny
aXB0cy93ZWJraXRweS90b29sL3N0ZXBzL3Bvc3RkaWZmLnB5CmluZGV4IGVmOGY0YzguLjhmNzRk
OTggMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9w
b3N0ZGlmZi5weQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMv
cG9zdGRpZmYucHkKQEAgLTQwLDYgKzQwLDkgQEAgY2xhc3MgUG9zdERpZmYoQWJzdHJhY3RTdGVw
KToKICAgICAgICAgICAgIE9wdGlvbnMucmV2aWV3LAogICAgICAgICAgICAgT3B0aW9ucy5yZXF1
ZXN0X2NvbW1pdCwKICAgICAgICAgICAgIE9wdGlvbnMub3Blbl9idWcsCisgICAgICAgICAgICBP
cHRpb25zLmdpdF9jb21taXQsCisgICAgICAgICAgICBPcHRpb25zLm5vX3NxdWFzaCwKKyAgICAg
ICAgICAgIE9wdGlvbnMuc3F1YXNoLAogICAgICAgICBdCiAKICAgICBkZWYgcnVuKHNlbGYsIHN0
YXRlKToKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVw
cy9wcmVwYXJlY2hhbmdlbG9nLnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29s
L3N0ZXBzL3ByZXBhcmVjaGFuZ2Vsb2cucHkKaW5kZXggZmNiNDBiZS4uOTM2MmI4NiAxMDA2NDQK
LS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL3ByZXBhcmVjaGFu
Z2Vsb2cucHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL3By
ZXBhcmVjaGFuZ2Vsb2cucHkKQEAgLTQxLDYgKzQxLDkgQEAgY2xhc3MgUHJlcGFyZUNoYW5nZUxv
ZyhBYnN0cmFjdFN0ZXApOgogICAgICAgICAgICAgT3B0aW9ucy5wb3J0LAogICAgICAgICAgICAg
T3B0aW9ucy5xdWlldCwKICAgICAgICAgICAgIE9wdGlvbnMuZW1haWwsCisgICAgICAgICAgICBP
cHRpb25zLmdpdF9jb21taXQsCisgICAgICAgICAgICBPcHRpb25zLm5vX3NxdWFzaCwKKyAgICAg
ICAgICAgIE9wdGlvbnMuc3F1YXNoLAogICAgICAgICBdCiAKICAgICBkZWYgcnVuKHNlbGYsIHN0
YXRlKToKQEAgLTUyLDYgKzU1LDEyIEBAIGNsYXNzIFByZXBhcmVDaGFuZ2VMb2coQWJzdHJhY3RT
dGVwKToKICAgICAgICAgICAgIGFyZ3MuYXBwZW5kKCItLWJ1Zz0lcyIgJSBzdGF0ZVsiYnVnX2lk
Il0pCiAgICAgICAgIGlmIHNlbGYuX29wdGlvbnMuZW1haWw6CiAgICAgICAgICAgICBhcmdzLmFw
cGVuZCgiLS1lbWFpbD0lcyIgJSBzZWxmLl9vcHRpb25zLmVtYWlsKQorICAgICAgICBpZiAoc2Vs
Zi5fdG9vbC5zY20oKS5zdXBwb3J0c19sb2NhbF9jb21taXRzKCkgYW5kCisgICAgICAgICAgICBz
ZWxmLl90b29sLnNjbSgpLnNob3VsZF9zcXVhc2goc2VsZi5fb3B0aW9ucy5zcXVhc2gpKToKKyAg
ICAgICAgICAgIGFyZ3MuYXBwZW5kKCItLW1lcmdlLWJhc2U9JXMiICUgc2VsZi5fdG9vbC5zY20o
KS5zdm5fbWVyZ2VfYmFzZSgpKQorICAgICAgICBpZiBzZWxmLl9vcHRpb25zLmdpdF9jb21taXQ6
CisgICAgICAgICAgICBhcmdzLmFwcGVuZCgiLS1naXQtY29tbWl0PSVzIiAlIHNlbGYuX29wdGlv
bnMuZ2l0X2NvbW1pdCkKKwogICAgICAgICB0cnk6CiAgICAgICAgICAgICBzZWxmLl90b29sLmV4
ZWN1dGl2ZS5ydW5fYW5kX3Rocm93X2lmX2ZhaWwoYXJncywgc2VsZi5fb3B0aW9ucy5xdWlldCkK
ICAgICAgICAgZXhjZXB0IFNjcmlwdEVycm9yLCBlOgpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMv
U2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL3ByZXBhcmVjaGFuZ2Vsb2dmb3JyZXZlcnQucHkg
Yi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvcHJlcGFyZWNoYW5nZWxv
Z2ZvcnJldmVydC5weQppbmRleCBmN2Q5Y2QzLi40ZDI5OWZhIDEwMDY0NAotLS0gYS9XZWJLaXRU
b29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvcHJlcGFyZWNoYW5nZWxvZ2ZvcnJldmVy
dC5weQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvcHJlcGFy
ZWNoYW5nZWxvZ2ZvcnJldmVydC5weQpAQCAtMzYsNyArMzYsNyBAQCBjbGFzcyBQcmVwYXJlQ2hh
bmdlTG9nRm9yUmV2ZXJ0KEFic3RyYWN0U3RlcCk6CiAgICAgZGVmIHJ1bihzZWxmLCBzdGF0ZSk6
CiAgICAgICAgICMgVGhpcyBjb3VsZCBtb3ZlIHRvIHByZXBhcmUtQ2hhbmdlTG9nIGJ5IGFkZGlu
ZyBhIC0tcmV2ZXJ0PSBvcHRpb24uCiAgICAgICAgIHNlbGYuX3J1bl9zY3JpcHQoInByZXBhcmUt
Q2hhbmdlTG9nIikKLSAgICAgICAgY2hhbmdlbG9nX3BhdGhzID0gc2VsZi5fdG9vbC5jaGVja291
dCgpLm1vZGlmaWVkX2NoYW5nZWxvZ3MoKQorICAgICAgICBjaGFuZ2Vsb2dfcGF0aHMgPSBzZWxm
Ll90b29sLmNoZWNrb3V0KCkubW9kaWZpZWRfY2hhbmdlbG9ncyhnaXRfY29tbWl0PU5vbmUsIHNx
dWFzaD1GYWxzZSkKICAgICAgICAgYnVnX3VybCA9IHNlbGYuX3Rvb2wuYnVncy5idWdfdXJsX2Zv
cl9idWdfaWQoc3RhdGVbImJ1Z19pZCJdKSBpZiBzdGF0ZVsiYnVnX2lkIl0gZWxzZSBOb25lCiAg
ICAgICAgIGZvciBjaGFuZ2Vsb2dfcGF0aCBpbiBjaGFuZ2Vsb2dfcGF0aHM6CiAgICAgICAgICAg
ICAjIEZJWE1FOiBTZWVtcyB3ZSBzaG91bGQgcHJlcGFyZSB0aGUgbWVzc2FnZSBvdXRzaWRlIG9m
IGNoYW5nZWxvZ3MucHkgYW5kIHRoZW4ganVzdCBwYXNzIGluCmRpZmYgLS1naXQgYS9XZWJLaXRU
b29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvdXBkYXRlY2hhbmdlbG9nc3dpdGhyZXZp
ZXdlci5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy91cGRhdGVj
aGFuZ2Vsb2dzd2l0aHJldmlld2VyLnB5CmluZGV4IGEzNWVkOGMuLmQ4NDFkNWIgMTAwNjQ0Ci0t
LSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy91cGRhdGVjaGFuZ2Vs
b2dzd2l0aHJldmlld2VyLnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9v
bC9zdGVwcy91cGRhdGVjaGFuZ2Vsb2dzd2l0aHJldmlld2VyLnB5CkBAIC0zOCw3ICszOCwxMCBA
QCBjbGFzcyBVcGRhdGVDaGFuZ2VMb2dzV2l0aFJldmlld2VyKEFic3RyYWN0U3RlcCk6CiAgICAg
QGNsYXNzbWV0aG9kCiAgICAgZGVmIG9wdGlvbnMoY2xzKToKICAgICAgICAgcmV0dXJuIFsKKyAg
ICAgICAgICAgIE9wdGlvbnMuZ2l0X2NvbW1pdCwKICAgICAgICAgICAgIE9wdGlvbnMucmV2aWV3
ZXIsCisgICAgICAgICAgICBPcHRpb25zLm5vX3NxdWFzaCwKKyAgICAgICAgICAgIE9wdGlvbnMu
c3F1YXNoLAogICAgICAgICBdCiAKICAgICBkZWYgX2d1ZXNzX3Jldmlld2VyX2Zyb21fYnVnKHNl
bGYsIGJ1Z19pZCk6CkBAIC02Nyw1ICs3MCw1IEBAIGNsYXNzIFVwZGF0ZUNoYW5nZUxvZ3NXaXRo
UmV2aWV3ZXIoQWJzdHJhY3RTdGVwKToKICAgICAgICAgICAgIHJldHVybgogCiAgICAgICAgIG9z
LmNoZGlyKHNlbGYuX3Rvb2wuc2NtKCkuY2hlY2tvdXRfcm9vdCkKLSAgICAgICAgZm9yIGNoYW5n
ZWxvZ19wYXRoIGluIHNlbGYuX3Rvb2wuY2hlY2tvdXQoKS5tb2RpZmllZF9jaGFuZ2Vsb2dzKCk6
CisgICAgICAgIGZvciBjaGFuZ2Vsb2dfcGF0aCBpbiBzZWxmLl90b29sLmNoZWNrb3V0KCkubW9k
aWZpZWRfY2hhbmdlbG9ncyhzZWxmLl9vcHRpb25zLmdpdF9jb21taXQsIHNlbGYuX29wdGlvbnMu
c3F1YXNoKToKICAgICAgICAgICAgIENoYW5nZUxvZyhjaGFuZ2Vsb2dfcGF0aCkuc2V0X3Jldmll
d2VyKHJldmlld2VyKQpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90
b29sL3N0ZXBzL3ZhbGlkYXRlcmV2aWV3ZXIucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtp
dHB5L3Rvb2wvc3RlcHMvdmFsaWRhdGVyZXZpZXdlci5weQppbmRleCA4MGIyYzVkLi43N2U4N2Fk
IDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvdmFs
aWRhdGVyZXZpZXdlci5weQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wv
c3RlcHMvdmFsaWRhdGVyZXZpZXdlci5weQpAQCAtMzEsMTEgKzMxLDIwIEBAIGltcG9ydCByZQog
CiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5jaGVja291dC5jaGFuZ2Vsb2cgaW1wb3J0IENoYW5nZUxv
ZwogZnJvbSB3ZWJraXRweS50b29sLnN0ZXBzLmFic3RyYWN0c3RlcCBpbXBvcnQgQWJzdHJhY3RT
dGVwCitmcm9tIHdlYmtpdHB5LnRvb2wuc3RlcHMub3B0aW9ucyBpbXBvcnQgT3B0aW9ucwogZnJv
bSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmRlcHJlY2F0ZWRfbG9nZ2luZyBpbXBvcnQgZXJyb3Is
IGxvZwogCiAKICMgRklYTUU6IFNvbWUgb2YgdGhpcyBsb2dpYyBzaG91bGQgcHJvYmFibHkgYmUg
dW5pZmllZCB3aXRoIENvbW1pdHRlclZhbGlkYXRvcj8KIGNsYXNzIFZhbGlkYXRlUmV2aWV3ZXIo
QWJzdHJhY3RTdGVwKToKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgb3B0aW9ucyhjbHMpOgor
ICAgICAgICByZXR1cm4gWworICAgICAgICAgICAgT3B0aW9ucy5naXRfY29tbWl0LAorICAgICAg
ICAgICAgT3B0aW9ucy5ub19zcXVhc2gsCisgICAgICAgICAgICBPcHRpb25zLnNxdWFzaCwKKyAg
ICAgICAgXQorCiAgICAgIyBGSVhNRTogVGhpcyBzaG91bGQgcHJvYmFibHkgbW92ZSBvbnRvIENo
YW5nZUxvZ0VudHJ5CiAgICAgZGVmIF9oYXNfdmFsaWRfcmV2aWV3ZXIoc2VsZiwgY2hhbmdlbG9n
X2VudHJ5KToKICAgICAgICAgaWYgY2hhbmdlbG9nX2VudHJ5LnJldmlld2VyKCk6CkBAIC01NCw3
ICs2Myw3IEBAIGNsYXNzIFZhbGlkYXRlUmV2aWV3ZXIoQWJzdHJhY3RTdGVwKToKICAgICAgICAg
IyBGSVhNRTogV2Ugc2hvdWxkIGZpZ3VyZSBvdXQgaG93IHRvIGhhbmRsZSB0aGUgY3VycmVudCB3
b3JraW5nCiAgICAgICAgICMgICAgICAgIGRpcmVjdG9yeSBpc3N1ZSBtb3JlIGdsb2JhbGx5Lgog
ICAgICAgICBvcy5jaGRpcihzZWxmLl90b29sLnNjbSgpLmNoZWNrb3V0X3Jvb3QpCi0gICAgICAg
IGZvciBjaGFuZ2Vsb2dfcGF0aCBpbiBzZWxmLl90b29sLmNoZWNrb3V0KCkubW9kaWZpZWRfY2hh
bmdlbG9ncygpOgorICAgICAgICBmb3IgY2hhbmdlbG9nX3BhdGggaW4gc2VsZi5fdG9vbC5jaGVj
a291dCgpLm1vZGlmaWVkX2NoYW5nZWxvZ3Moc2VsZi5fb3B0aW9ucy5naXRfY29tbWl0LCBzZWxm
Ll9vcHRpb25zLnNxdWFzaCk6CiAgICAgICAgICAgICBjaGFuZ2Vsb2dfZW50cnkgPSBDaGFuZ2VM
b2coY2hhbmdlbG9nX3BhdGgpLmxhdGVzdF9lbnRyeSgpCiAgICAgICAgICAgICBpZiBzZWxmLl9o
YXNfdmFsaWRfcmV2aWV3ZXIoY2hhbmdlbG9nX2VudHJ5KToKICAgICAgICAgICAgICAgICBjb250
aW51ZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>53851</attachid>
            <date>2010-04-20 11:18:37 -0700</date>
            <delta_ts>2010-04-20 16:31:20 -0700</delta_ts>
            <desc>Patch-6001</desc>
            <filename>bug-36394-20100420111836.patch</filename>
            <type>text/plain</type>
            <size>63248</size>
            <attacher name="Ojan Vafai">ojan</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCBmYmU5ZDBjLi43NDU0Y2VlIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9DaGFuZ2VM
b2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTUgQEAKKzIwMTAtMDQt
MDYgIE9qYW4gVmFmYWkgIDxvamFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbmNsdWRlIGdpdCBjb21taXRzIGluIHRoZSBk
aWZmIGZvciB3ZWJraXQtcGF0Y2ggdXBsb2FkL2xhbmQuCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNjM5NAorCisgICAgICAgIEFkZHMgLS1zcXVhc2gs
IC0tbm8tc3F1YXNoIGFuZCAtLWdpdC1jb21taXQuCisKKyAgICAgICAgLS1naXQtY29tbWl0IHdp
bGwgdXNlIGEgc3BlY2lmaWMgbG9jYWwgY29tbWl0IGZvciBsYW5kL3VwbG9hZC4KKyAgICAgICAg
SWYgYSBjb21taXQtcmFuZ2UgaXMgc3BlY2lmaWVkLCB0aGVuIHRoYXQgcmFuZ2UgaXMgdHJlYXRl
ZCBhcworICAgICAgICBhIHNpbmdsZSBzcXVhc2hlZCBjb21taXQuCisKKyAgICAgICAgLS1zcXVh
c2ggd2lsbCBzcXVhc2ggYWxsIGxvY2FsIGNoYW5nZXMgaW5jbHVkaW5nIHdvcmtpbmcgY29weSBj
aGFuZ2VzCisgICAgICAgIGludG8gYSBzaW5nbGUgcGF0Y2guCisKKyAgICAgICAgLS1uby1zcXVh
c2ggaXMgdGhlIGxlZ2FjeSBiZWhhdmlvciAodXBsb2FkIG9ubHkgY29uc2lkZXJzIHRoZSB3b3Jr
aW5nIGNvcHksCisgICAgICAgIGxhbmQgY29tbWl0cyB0aGUgd29ya2luZyBjb3B5IGFuZCB0aGVu
IGVhY2ggbG9jYWwgY29tbWl0IHNlcGFyYXRlbHkgdG8gU1ZOKQorCisgICAgICAgIElmIG5laXRo
ZXIgaXMgc3BlY2lmaWVkLCB0aGVuIGFuIGluZm9ybWF0aXZlIGVycm9yIGlzIHJhaXNlZCBpZiB0
aGVyZSBpcworICAgICAgICBtb3JlIHRoYW4gb25lIGxvY2FsIGNvbW1pdCBvciB3aGVuIHRoZXJl
IGFyZSBsb2NhbCBjb21taXQocykgYW5kIHdvcmtpbmcKKyAgICAgICAgY29weSBjaGFuZ2VzLgor
CisgICAgICAgIElmIHRoZSB3ZWJraXQtcGF0Y2guc3F1YXNoIGdpdCBjb25maWcgcGFyYW1ldGVy
IGlzIHNldCwgdGhlbgorICAgICAgICB0aGF0IHdpbGwgYmUgcmVzcGVjdGVkIGluc3RlYWQgb2Yg
cmFpc2luZyBhbiBlcnJvci4KKworICAgICAgICAqIFNjcmlwdHMvY2hlY2std2Via2l0LXN0eWxl
OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L2FwaS5weToKKyAg
ICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9hcGlfdW5pdHRlc3QucHk6
CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvc2NtLnB5OgorICAg
ICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L3NjbV91bml0dGVzdC5weToK
KyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3N0eWxlL29wdHBhcnNlci5weToKKyAgICAgICAg
LS1naXQtc2luY2UgaXMgcmVtb3ZlZCBhbmQgLS1naXQtY29tbWl0IG5vIGxvbmdlciBpbXBsaWVz
IGNvbW1pdF9pZC4uCisgICAgICAgIEluc3RlYWQsIGl0IHRyZWF0cyB0aGF0IGluZGl2aWR1YWwg
Y29tbWl0LCBidXQgYWxzbyBzdXBwb3J0cyBjb21taXQgcmFuZ2VzCisgICAgICAgIChlLmcuIGNv
bW1pdF9pZC4uKSBhcyBhcmd1bWVudHMuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9zdHls
ZS9vcHRwYXJzZXJfdW5pdHRlc3QucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9zdHls
ZV9yZWZlcmVuY2VzLnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5k
cy9kb3dubG9hZC5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMv
dXBsb2FkLnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdG9vbC9tYWluLnB5OgorICAg
ICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdG9vbC9tb2NrdG9vbC5weToKKyAgICAgICAgKiBTY3Jp
cHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvYWJzdHJhY3RzdGVwLnB5OgorICAgICAgICAqIFNjcmlw
dHMvd2Via2l0cHkvdG9vbC9zdGVwcy9hcHBseXBhdGNod2l0aGxvY2FsY29tbWl0LnB5OgorICAg
ICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9jaGVja3N0eWxlLnB5OgorICAgICAg
ICAqIFNjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9jb21taXQucHk6CisgICAgICAgICogU2Ny
aXB0cy93ZWJraXRweS90b29sL3N0ZXBzL29wdGlvbnMucHk6CisgICAgICAgICogU2NyaXB0cy93
ZWJraXRweS90b29sL3N0ZXBzL3Bvc3RkaWZmLnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0
cHkvdG9vbC9zdGVwcy9wcmVwYXJlY2hhbmdlbG9nLnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Vi
a2l0cHkvdG9vbC9zdGVwcy9wcmVwYXJlY2hhbmdlbG9nZm9ycmV2ZXJ0LnB5OgorICAgICAgICAq
IFNjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy91cGRhdGVjaGFuZ2Vsb2dzd2l0aHJldmlld2Vy
LnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy92YWxpZGF0ZXJldmll
d2VyLnB5OgorCiAyMDEwLTA0LTIwICBNT1JJVEEgSGFqaW1lIDxtb3JyaXRhQGdvb2dsZS5jb20+
CiAKICAgICAgICAgVW5yZXZpZXdlZCwgYWRkIG15c2VsZiB0byB0aGUgY29tbWl0dGVycyBsaXN0
LgpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy9jaGVjay13ZWJraXQtc3R5bGUgYi9X
ZWJLaXRUb29scy9TY3JpcHRzL2NoZWNrLXdlYmtpdC1zdHlsZQppbmRleCA5ODk3ZmJkLi5iZDBm
NTg0IDEwMDc1NQotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL2NoZWNrLXdlYmtpdC1zdHlsZQor
KysgYi9XZWJLaXRUb29scy9TY3JpcHRzL2NoZWNrLXdlYmtpdC1zdHlsZQpAQCAtODQsMjQgKzg0
LDI0IEBAIGRlZiBtYWluKCk6CiAgICAgY2hlY2tlci5jb25maWd1cmVfbG9nZ2luZyhzdHJlYW09
c3RkZXJyLCBpc192ZXJib3NlPWlzX3ZlcmJvc2UpCiAgICAgX2xvZy5kZWJ1ZygiVmVyYm9zZSBs
b2dnaW5nIGVuYWJsZWQuIikKIAorICAgIHBhcnNlciA9IGNoZWNrZXIuY2hlY2tfd2Via2l0X3N0
eWxlX3BhcnNlcigpCisgICAgKHBhdGhzLCBvcHRpb25zKSA9IHBhcnNlci5wYXJzZShhcmdzKQor
CiAgICAgY2hlY2tvdXQgPSBkZXRlY3RfY2hlY2tvdXQoKQogCiAgICAgaWYgY2hlY2tvdXQgaXMg
Tm9uZToKKyAgICAgICAgaWYgbm90IHBhdGhzOgorICAgICAgICAgICAgX2xvZy5lcnJvcigiV2Vi
S2l0IGNoZWNrb3V0IG5vdCBmb3VuZDogWW91IG11c3QgcnVuIHRoaXMgc2NyaXB0ICIKKyAgICAg
ICAgICAgICAgICAgICAgICAgImZyb20gd2l0aGluIGEgV2ViS2l0IGNoZWNrb3V0IGlmIHlvdSBh
cmUgbm90IHBhc3NpbmcgIgorICAgICAgICAgICAgICAgICAgICAgICAic3BlY2lmaWMgcGF0aHMg
dG8gY2hlY2suIikKKyAgICAgICAgICAgIHN5cy5leGl0KDEpCisKICAgICAgICAgY2hlY2tvdXRf
cm9vdCA9IE5vbmUKICAgICAgICAgX2xvZy5kZWJ1ZygiV2ViS2l0IGNoZWNrb3V0IG5vdCBmb3Vu
ZCBmb3IgY3VycmVudCBkaXJlY3RvcnkuIikKICAgICBlbHNlOgogICAgICAgICBjaGVja291dF9y
b290ID0gY2hlY2tvdXQucm9vdF9wYXRoKCkKICAgICAgICAgX2xvZy5kZWJ1ZygiV2ViS2l0IGNo
ZWNrb3V0IGZvdW5kIHdpdGggcm9vdDogJXMiICUgY2hlY2tvdXRfcm9vdCkKIAotICAgIHBhcnNl
ciA9IGNoZWNrZXIuY2hlY2tfd2Via2l0X3N0eWxlX3BhcnNlcigpCi0gICAgKHBhdGhzLCBvcHRp
b25zKSA9IHBhcnNlci5wYXJzZShhcmdzKQotCi0gICAgaWYgY2hlY2tvdXQgaXMgTm9uZSBhbmQg
bm90IHBhdGhzOgotICAgICAgICBfbG9nLmVycm9yKCJXZWJLaXQgY2hlY2tvdXQgbm90IGZvdW5k
OiBZb3UgbXVzdCBydW4gdGhpcyBzY3JpcHQgIgotICAgICAgICAgICAgICAgICAgICJmcm9tIHdp
dGhpbiBhIFdlYktpdCBjaGVja291dCBpZiB5b3UgYXJlIG5vdCBwYXNzaW5nICIKLSAgICAgICAg
ICAgICAgICAgICAic3BlY2lmaWMgcGF0aHMgdG8gY2hlY2suIikKLSAgICAgICAgc3lzLmV4aXQo
MSkKLQogICAgIGNvbmZpZ3VyYXRpb24gPSBjaGVja2VyLmNoZWNrX3dlYmtpdF9zdHlsZV9jb25m
aWd1cmF0aW9uKG9wdGlvbnMpCiAgICAgc3R5bGVfY2hlY2tlciA9IGNoZWNrZXIuU3R5bGVDaGVj
a2VyKGNvbmZpZ3VyYXRpb24pCiAKQEAgLTExMCwxMCArMTEwLDcgQEAgZGVmIG1haW4oKToKICAg
ICBpZiBwYXRoczoKICAgICAgICAgc3R5bGVfY2hlY2tlci5jaGVja19wYXRocyhwYXRocykKICAg
ICBlbHNlOgotICAgICAgICBpZiBvcHRpb25zLmdpdF9jb21taXQ6Ci0gICAgICAgICAgICBwYXRj
aCA9IGNoZWNrb3V0LmNyZWF0ZV9wYXRjaF9zaW5jZV9sb2NhbF9jb21taXQob3B0aW9ucy5naXRf
Y29tbWl0KQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcGF0Y2ggPSBjaGVja291dC5jcmVh
dGVfcGF0Y2goKQorICAgICAgICBwYXRjaCA9IGNoZWNrb3V0LmNyZWF0ZV9wYXRjaChvcHRpb25z
LmdpdF9jb21taXQsIG9wdGlvbnMuc3F1YXNoKQogICAgICAgICBwYXRjaF9jaGVja2VyID0gUGF0
Y2hDaGVja2VyKHN0eWxlX2NoZWNrZXIpCiAgICAgICAgIHBhdGNoX2NoZWNrZXIuY2hlY2socGF0
Y2gpCiAKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2No
ZWNrb3V0L2FwaS5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNr
b3V0L2FwaS5weQppbmRleCBjNGUyYjY5Li4yYTI2NzcwIDEwMDY0NAotLS0gYS9XZWJLaXRUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9hcGkucHkKKysrIGIvV2ViS2l0VG9v
bHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvYXBpLnB5CkBAIC04MCwxNiArODAs
MTYgQEAgY2xhc3MgQ2hlY2tvdXQob2JqZWN0KToKICAgICBkZWYgYnVnX2lkX2Zvcl9yZXZpc2lv
bihzZWxmLCByZXZpc2lvbik6CiAgICAgICAgIHJldHVybiBzZWxmLmNvbW1pdF9pbmZvX2Zvcl9y
ZXZpc2lvbihyZXZpc2lvbikuYnVnX2lkKCkKIAotICAgIGRlZiBtb2RpZmllZF9jaGFuZ2Vsb2dz
KHNlbGYpOgorICAgIGRlZiBtb2RpZmllZF9jaGFuZ2Vsb2dzKHNlbGYsIGdpdF9jb21taXQsIHNx
dWFzaCk6CiAgICAgICAgICMgU0NNIHJldHVybnMgcGF0aHMgcmVsYXRpdmUgdG8gc2NtLmNoZWNr
b3V0X3Jvb3QKICAgICAgICAgIyBDYWxsZXJzIChlc3BlY2lhbGx5IHRob3NlIHVzaW5nIHRoZSBD
aGFuZ2VMb2cgY2xhc3MpIG1heQogICAgICAgICAjIGV4cGVjdCBhYnNvbHV0ZSBwYXRocywgc28g
dGhpcyBtZXRob2QgcmV0dXJucyBhYnNvbHV0ZSBwYXRocy4KLSAgICAgICAgY2hhbmdlZF9maWxl
cyA9IHNlbGYuX3NjbS5jaGFuZ2VkX2ZpbGVzKCkKKyAgICAgICAgY2hhbmdlZF9maWxlcyA9IHNl
bGYuX3NjbS5jaGFuZ2VkX2ZpbGVzKGdpdF9jb21taXQsIHNxdWFzaCkKICAgICAgICAgYWJzb2x1
dGVfcGF0aHMgPSBbb3MucGF0aC5qb2luKHNlbGYuX3NjbS5jaGVja291dF9yb290LCBwYXRoKSBm
b3IgcGF0aCBpbiBjaGFuZ2VkX2ZpbGVzXQogICAgICAgICByZXR1cm4gW3BhdGggZm9yIHBhdGgg
aW4gYWJzb2x1dGVfcGF0aHMgaWYgc2VsZi5faXNfcGF0aF90b19jaGFuZ2Vsb2cocGF0aCldCiAK
LSAgICBkZWYgY29tbWl0X21lc3NhZ2VfZm9yX3RoaXNfY29tbWl0KHNlbGYpOgotICAgICAgICBj
aGFuZ2Vsb2dfcGF0aHMgPSBzZWxmLm1vZGlmaWVkX2NoYW5nZWxvZ3MoKQorICAgIGRlZiBjb21t
aXRfbWVzc2FnZV9mb3JfdGhpc19jb21taXQoc2VsZiwgZ2l0X2NvbW1pdCwgc3F1YXNoKToKKyAg
ICAgICAgY2hhbmdlbG9nX3BhdGhzID0gc2VsZi5tb2RpZmllZF9jaGFuZ2Vsb2dzKGdpdF9jb21t
aXQsIHNxdWFzaCkKICAgICAgICAgaWYgbm90IGxlbihjaGFuZ2Vsb2dfcGF0aHMpOgogICAgICAg
ICAgICAgcmFpc2UgU2NyaXB0RXJyb3IobWVzc2FnZT0iRm91bmQgbm8gbW9kaWZpZWQgQ2hhbmdl
TG9ncywgY2Fubm90IGNyZWF0ZSBhIGNvbW1pdCBtZXNzYWdlLlxuIgogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIkFsbCBjaGFuZ2VzIHJlcXVpcmUgYSBDaGFuZ2VMb2cuICBTZWU6XG4i
CkBAIC0xMDYsOSArMTA2LDkgQEAgY2xhc3MgQ2hlY2tvdXQob2JqZWN0KToKICAgICAgICAgIyBG
SVhNRTogV2Ugc2hvdWxkIHNvcnQgYW5kIGxhYmVsIHRoZSBDaGFuZ2VMb2cgbWVzc2FnZXMgbGlr
ZSBjb21taXQtbG9nLWVkaXRvciBkb2VzLgogICAgICAgICByZXR1cm4gQ29tbWl0TWVzc2FnZSgi
Ii5qb2luKGNoYW5nZWxvZ19tZXNzYWdlcykuc3BsaXRsaW5lcygpKQogCi0gICAgZGVmIGJ1Z19p
ZF9mb3JfdGhpc19jb21taXQoc2VsZik6CisgICAgZGVmIGJ1Z19pZF9mb3JfdGhpc19jb21taXQo
c2VsZiwgZ2l0X2NvbW1pdCwgc3F1YXNoKToKICAgICAgICAgdHJ5OgotICAgICAgICAgICAgcmV0
dXJuIHBhcnNlX2J1Z19pZChzZWxmLmNvbW1pdF9tZXNzYWdlX2Zvcl90aGlzX2NvbW1pdCgpLm1l
c3NhZ2UoKSkKKyAgICAgICAgICAgIHJldHVybiBwYXJzZV9idWdfaWQoc2VsZi5jb21taXRfbWVz
c2FnZV9mb3JfdGhpc19jb21taXQoZ2l0X2NvbW1pdCwgc3F1YXNoKS5tZXNzYWdlKCkpCiAgICAg
ICAgIGV4Y2VwdCBTY3JpcHRFcnJvciwgZToKICAgICAgICAgICAgIHBhc3MgIyBXZSBtaWdodCBu
b3QgaGF2ZSBDaGFuZ2VMb2dzLgogCkBAIC0xMjcsMTEgKzEyNywxNCBAQCBjbGFzcyBDaGVja291
dChvYmplY3QpOgogICAgICAgICBydW5fY29tbWFuZChhcmdzLCBpbnB1dD1jdXJsX3Byb2Nlc3Mu
c3Rkb3V0KQogCiAgICAgZGVmIGFwcGx5X3JldmVyc2VfZGlmZihzZWxmLCByZXZpc2lvbik6Cisg
ICAgICAgIGlmIG5vdCBzZWxmLl9zY20ud29ya2luZ19kaXJlY3RvcnlfaXNfY2xlYW4oKToKKyAg
ICAgICAgICAgIHJhaXNlIFNjcmlwdEVycm9yKG1lc3NhZ2U9IldvcmtpbmcgZGlyZWN0b3J5IG11
c3QgYmUgY2xlYW4gdG8gcmV2ZXJ0IGEgcmV2aXNpb24uIikKKwogICAgICAgICBzZWxmLl9zY20u
YXBwbHlfcmV2ZXJzZV9kaWZmKHJldmlzaW9uKQogCiAgICAgICAgICMgV2UgcmV2ZXJ0IHRoZSBD
aGFuZ2VMb2dzIGJlY2F1c2UgcmVtb3ZpbmcgbGluZXMgZnJvbSBhIENoYW5nZUxvZwogICAgICAg
ICAjIGRvZXNuJ3QgbWFrZSBzZW5zZS4gIENoYW5nZUxvZ3MgYXJlIGFwcGVuZCBvbmx5LgotICAg
ICAgICBjaGFuZ2Vsb2dfcGF0aHMgPSBzZWxmLm1vZGlmaWVkX2NoYW5nZWxvZ3MoKQorICAgICAg
ICBjaGFuZ2Vsb2dfcGF0aHMgPSBzZWxmLm1vZGlmaWVkX2NoYW5nZWxvZ3MoZ2l0X2NvbW1pdD1O
b25lLCBzcXVhc2g9RmFsc2UpCiAgICAgICAgIGlmIGxlbihjaGFuZ2Vsb2dfcGF0aHMpOgogICAg
ICAgICAgICAgc2VsZi5fc2NtLnJldmVydF9maWxlcyhjaGFuZ2Vsb2dfcGF0aHMpCiAKZGlmZiAt
LWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L2FwaV91
bml0dGVzdC5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0
L2FwaV91bml0dGVzdC5weQppbmRleCBlOTljYWVlLi44OTUwOWNmIDEwMDY0NAotLS0gYS9XZWJL
aXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9hcGlfdW5pdHRlc3QucHkK
KysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvYXBpX3Vu
aXR0ZXN0LnB5CkBAIC0xMTEsMTAgKzExMSwxMSBAQCBjbGFzcyBDb21taXRNZXNzYWdlRm9yVGhp
c0NvbW1pdFRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICMgQ2hhbmdlTG9nIGlzIGRpZmZp
Y3VsdCB0byBtb2NrIGF0IGN1cnJlbnQuCiAgICAgZGVmIHRlc3RfY29tbWl0X21lc3NhZ2VfZm9y
X3RoaXNfY29tbWl0KHNlbGYpOgogICAgICAgICBjaGVja291dCA9IENoZWNrb3V0KE5vbmUpCi0g
ICAgICAgIGNoZWNrb3V0Lm1vZGlmaWVkX2NoYW5nZWxvZ3MgPSBsYW1iZGE6IFsiQ2hhbmdlTG9n
MSIsICJDaGFuZ2VMb2cyIl0KKyAgICAgICAgY2hlY2tvdXQubW9kaWZpZWRfY2hhbmdlbG9ncyA9
IGxhbWJkYSBnaXRfY29tbWl0LCBzcXVhc2g6IFsiQ2hhbmdlTG9nMSIsICJDaGFuZ2VMb2cyIl0K
ICAgICAgICAgb3V0cHV0ID0gT3V0cHV0Q2FwdHVyZSgpCiAgICAgICAgIGV4cGVjdGVkX3N0ZGVy
ciA9ICJQYXJzaW5nIENoYW5nZUxvZzogQ2hhbmdlTG9nMVxuUGFyc2luZyBDaGFuZ2VMb2c6IENo
YW5nZUxvZzJcbiIKLSAgICAgICAgY29tbWl0X21lc3NhZ2UgPSBvdXRwdXQuYXNzZXJ0X291dHB1
dHMoc2VsZiwgY2hlY2tvdXQuY29tbWl0X21lc3NhZ2VfZm9yX3RoaXNfY29tbWl0LCBleHBlY3Rl
ZF9zdGRlcnI9ZXhwZWN0ZWRfc3RkZXJyKQorICAgICAgICBjb21taXRfbWVzc2FnZSA9IG91dHB1
dC5hc3NlcnRfb3V0cHV0cyhzZWxmLCBjaGVja291dC5jb21taXRfbWVzc2FnZV9mb3JfdGhpc19j
b21taXQsCisgICAgICAgICAgICBrd2FyZ3M9eyJnaXRfY29tbWl0IjogTm9uZSwgInNxdWFzaCI6
IEZhbHNlfSwgZXhwZWN0ZWRfc3RkZXJyPWV4cGVjdGVkX3N0ZGVycikKICAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChjb21taXRfbWVzc2FnZS5tZXNzYWdlKCksIHNlbGYuZXhwZWN0ZWRfY29tbWl0
X21lc3NhZ2UpCiAKIApAQCAtMTU3LDEzICsxNTgsMTMgQEAgY2xhc3MgQ2hlY2tvdXRUZXN0KHVu
aXR0ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgdGVzdF9idWdfaWRfZm9yX3RoaXNfY29tbWl0KHNl
bGYpOgogICAgICAgICBzY20gPSBNb2NrKCkKICAgICAgICAgY2hlY2tvdXQgPSBDaGVja291dChz
Y20pCi0gICAgICAgIGNoZWNrb3V0LmNvbW1pdF9tZXNzYWdlX2Zvcl90aGlzX2NvbW1pdCA9IGxh
bWJkYTogQ29tbWl0TWVzc2FnZShDaGFuZ2VMb2dFbnRyeShfY2hhbmdlbG9nMWVudHJ5MSkuY29u
dGVudHMoKS5zcGxpdGxpbmVzKCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2hlY2tvdXQu
YnVnX2lkX2Zvcl90aGlzX2NvbW1pdCgpLCAzNjYyOSkKKyAgICAgICAgY2hlY2tvdXQuY29tbWl0
X21lc3NhZ2VfZm9yX3RoaXNfY29tbWl0ID0gbGFtYmRhIGdpdF9jb21taXQsIHNxdWFzaDogQ29t
bWl0TWVzc2FnZShDaGFuZ2VMb2dFbnRyeShfY2hhbmdlbG9nMWVudHJ5MSkuY29udGVudHMoKS5z
cGxpdGxpbmVzKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2hlY2tvdXQuYnVnX2lkX2Zv
cl90aGlzX2NvbW1pdChnaXRfY29tbWl0PU5vbmUsIHNxdWFzaD1GYWxzZSksIDM2NjI5KQogCiAg
ICAgZGVmIHRlc3RfbW9kaWZpZWRfY2hhbmdlbG9ncyhzZWxmKToKICAgICAgICAgc2NtID0gTW9j
aygpCiAgICAgICAgIHNjbS5jaGVja291dF9yb290ID0gIi9mb28vYmFyIgotICAgICAgICBzY20u
Y2hhbmdlZF9maWxlcyA9IGxhbWJkYTpbImZpbGUxIiwgIkNoYW5nZUxvZyIsICJyZWxhdGl2ZS9w
YXRoL0NoYW5nZUxvZyJdCisgICAgICAgIHNjbS5jaGFuZ2VkX2ZpbGVzID0gbGFtYmRhIGdpdF9j
b21taXQsIHNxdWFzaDogWyJmaWxlMSIsICJDaGFuZ2VMb2ciLCAicmVsYXRpdmUvcGF0aC9DaGFu
Z2VMb2ciXQogICAgICAgICBjaGVja291dCA9IENoZWNrb3V0KHNjbSkKICAgICAgICAgZXhwZWN0
ZWRfY2hhbmdsb2dzID0gWyIvZm9vL2Jhci9DaGFuZ2VMb2ciLCAiL2Zvby9iYXIvcmVsYXRpdmUv
cGF0aC9DaGFuZ2VMb2ciXQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNoZWNrb3V0Lm1vZGlm
aWVkX2NoYW5nZWxvZ3MoKSwgZXhwZWN0ZWRfY2hhbmdsb2dzKQorICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKGNoZWNrb3V0Lm1vZGlmaWVkX2NoYW5nZWxvZ3MoZ2l0X2NvbW1pdD1Ob25lLCBzcXVh
c2g9RmFsc2UpLCBleHBlY3RlZF9jaGFuZ2xvZ3MpCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9T
Y3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9zY20ucHkgYi9XZWJLaXRUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9zY20ucHkKaW5kZXggMjcwNGYwNy4uMDQzNGNj
ZiAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tv
dXQvc2NtLnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNr
b3V0L3NjbS5weQpAQCAtMTc4LDcgKzE3OCw3IEBAIGNsYXNzIFNDTToKICAgICBkZWYgYWRkKHNl
bGYsIHBhdGgpOgogICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yLCAic3ViY2xhc3Nl
cyBtdXN0IGltcGxlbWVudCIKIAotICAgIGRlZiBjaGFuZ2VkX2ZpbGVzKHNlbGYpOgorICAgIGRl
ZiBjaGFuZ2VkX2ZpbGVzKHNlbGYsIGdpdF9jb21taXQ9Tm9uZSwgc3F1YXNoPU5vbmUpOgogICAg
ICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yLCAic3ViY2xhc3NlcyBtdXN0IGltcGxlbWVu
dCIKIAogICAgIGRlZiBjaGFuZ2VkX2ZpbGVzX2Zvcl9yZXZpc2lvbihzZWxmKToKQEAgLTE5Myw3
ICsxOTMsNyBAQCBjbGFzcyBTQ006CiAgICAgZGVmIGRpc3BsYXlfbmFtZShzZWxmKToKICAgICAg
ICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvciwgInN1YmNsYXNzZXMgbXVzdCBpbXBsZW1lbnQi
CiAKLSAgICBkZWYgY3JlYXRlX3BhdGNoKHNlbGYpOgorICAgIGRlZiBjcmVhdGVfcGF0Y2goc2Vs
ZiwgZ2l0X2NvbW1pdD1Ob25lLCBzcXVhc2g9Tm9uZSk6CiAgICAgICAgIHJhaXNlIE5vdEltcGxl
bWVudGVkRXJyb3IsICJzdWJjbGFzc2VzIG11c3QgaW1wbGVtZW50IgogCiAgICAgZGVmIGNvbW1p
dHRlcl9lbWFpbF9mb3JfcmV2aXNpb24oc2VsZiwgcmV2aXNpb24pOgpAQCAtMjExLDcgKzIxMSw3
IEBAIGNsYXNzIFNDTToKICAgICBkZWYgcmV2ZXJ0X2ZpbGVzKHNlbGYsIGZpbGVfcGF0aHMpOgog
ICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yLCAic3ViY2xhc3NlcyBtdXN0IGltcGxl
bWVudCIKIAotICAgIGRlZiBjb21taXRfd2l0aF9tZXNzYWdlKHNlbGYsIG1lc3NhZ2UsIHVzZXJu
YW1lPU5vbmUpOgorICAgIGRlZiBjb21taXRfd2l0aF9tZXNzYWdlKHNlbGYsIG1lc3NhZ2UsIHVz
ZXJuYW1lPU5vbmUsIGdpdF9jb21taXQ9Tm9uZSwgc3F1YXNoPU5vbmUpOgogICAgICAgICByYWlz
ZSBOb3RJbXBsZW1lbnRlZEVycm9yLCAic3ViY2xhc3NlcyBtdXN0IGltcGxlbWVudCIKIAogICAg
IGRlZiBzdm5fY29tbWl0X2xvZyhzZWxmLCBzdm5fcmV2aXNpb24pOgpAQCAtMjI5LDEyICsyMjks
NiBAQCBjbGFzcyBTQ006CiAgICAgZGVmIHN2bl9tZXJnZV9iYXNlKCk6CiAgICAgICAgIHJhaXNl
IE5vdEltcGxlbWVudGVkRXJyb3IsICJzdWJjbGFzc2VzIG11c3QgaW1wbGVtZW50IgogCi0gICAg
ZGVmIGNyZWF0ZV9wYXRjaF9mcm9tX2xvY2FsX2NvbW1pdChzZWxmLCBjb21taXRfaWQpOgotICAg
ICAgICBlcnJvcigiWW91ciBzb3VyY2UgY29udHJvbCBtYW5hZ2VyIGRvZXMgbm90IHN1cHBvcnQg
Y3JlYXRpbmcgYSBwYXRjaCBmcm9tIGEgbG9jYWwgY29tbWl0LiIpCi0KLSAgICBkZWYgY3JlYXRl
X3BhdGNoX3NpbmNlX2xvY2FsX2NvbW1pdChzZWxmLCBjb21taXRfaWQpOgotICAgICAgICBlcnJv
cigiWW91ciBzb3VyY2UgY29udHJvbCBtYW5hZ2VyIGRvZXMgbm90IHN1cHBvcnQgY3JlYXRpbmcg
YSBwYXRjaCBmcm9tIGEgbG9jYWwgY29tbWl0LiIpCi0KICAgICBkZWYgY29tbWl0X2xvY2FsbHlf
d2l0aF9tZXNzYWdlKHNlbGYsIG1lc3NhZ2UpOgogICAgICAgICBlcnJvcigiWW91ciBzb3VyY2Ug
Y29udHJvbCBtYW5hZ2VyIGRvZXMgbm90IHN1cHBvcnQgbG9jYWwgY29tbWl0cy4iKQogCkBAIC0z
MzksNyArMzMzLDcgQEAgY2xhc3MgU1ZOKFNDTSk6CiAgICAgICAgICMgcGF0aCBpcyBhc3N1bWVk
IHRvIGJlIGN3ZCByZWxhdGl2ZT8KICAgICAgICAgcnVuX2NvbW1hbmQoWyJzdm4iLCAiYWRkIiwg
cGF0aF0pCiAKLSAgICBkZWYgY2hhbmdlZF9maWxlcyhzZWxmKToKKyAgICBkZWYgY2hhbmdlZF9m
aWxlcyhzZWxmLCBnaXRfY29tbWl0PU5vbmUsIHNxdWFzaD1Ob25lKToKICAgICAgICAgcmV0dXJu
IHNlbGYucnVuX3N0YXR1c19hbmRfZXh0cmFjdF9maWxlbmFtZXMoc2VsZi5zdGF0dXNfY29tbWFu
ZCgpLCBzZWxmLl9zdGF0dXNfcmVnZXhwKCJBQ0RNUiIpKQogCiAgICAgZGVmIGNoYW5nZWRfZmls
ZXNfZm9yX3JldmlzaW9uKHNlbGYsIHJldmlzaW9uKToKQEAgLTM2MCw3ICszNTQsNyBAQCBjbGFz
cyBTVk4oU0NNKToKICAgICBkZWYgZGlzcGxheV9uYW1lKHNlbGYpOgogICAgICAgICByZXR1cm4g
InN2biIKIAotICAgIGRlZiBjcmVhdGVfcGF0Y2goc2VsZik6CisgICAgZGVmIGNyZWF0ZV9wYXRj
aChzZWxmLCBnaXRfY29tbWl0PU5vbmUsIHNxdWFzaD1Ob25lKToKICAgICAgICAgcmV0dXJuIHJ1
bl9jb21tYW5kKHNlbGYuc2NyaXB0X3BhdGgoInN2bi1jcmVhdGUtcGF0Y2giKSwgY3dkPXNlbGYu
Y2hlY2tvdXRfcm9vdCwgcmV0dXJuX3N0ZGVycj1GYWxzZSkKIAogICAgIGRlZiBjb21taXR0ZXJf
ZW1haWxfZm9yX3JldmlzaW9uKHNlbGYsIHJldmlzaW9uKToKQEAgLTM4OSw3ICszODMsOCBAQCBj
bGFzcyBTVk4oU0NNKToKICAgICAgICAgIyBGSVhNRTogVGhpcyBzaG91bGQgcHJvYmFibHkgdXNl
IGN3ZD1zZWxmLmNoZWNrb3V0X3Jvb3QuCiAgICAgICAgIHJ1bl9jb21tYW5kKFsnc3ZuJywgJ3Jl
dmVydCddICsgZmlsZV9wYXRocykKIAotICAgIGRlZiBjb21taXRfd2l0aF9tZXNzYWdlKHNlbGYs
IG1lc3NhZ2UsIHVzZXJuYW1lPU5vbmUpOgorICAgIGRlZiBjb21taXRfd2l0aF9tZXNzYWdlKHNl
bGYsIG1lc3NhZ2UsIHVzZXJuYW1lPU5vbmUsIGdpdF9jb21taXQ9Tm9uZSwgc3F1YXNoPU5vbmUp
OgorICAgICAgICAjIHNxdWFzaCBhbmQgZ2l0LWNvbW1pdCBhcmUgbm90IHVzZWQgYnkgU1ZOLgog
ICAgICAgICBpZiBzZWxmLmRyeXJ1bjoKICAgICAgICAgICAgICMgUmV0dXJuIGEgc3RyaW5nIHdo
aWNoIGxvb2tzIGxpa2UgYSBjb21taXQgc28gdGhhdCB0aGluZ3Mgd2hpY2ggcGFyc2UgdGhpcyBv
dXRwdXQgd2lsbCBzdWNjZWVkLgogICAgICAgICAgICAgcmV0dXJuICJEcnkgcnVuLCBubyBjb21t
aXQuXG5Db21taXR0ZWQgcmV2aXNpb24gMC4iCkBAIC00NzUsOCArNDcwLDI0IEBAIGNsYXNzIEdp
dChTQ00pOgogICAgICAgICAjIHBhdGggaXMgYXNzdW1lZCB0byBiZSBjd2QgcmVsYXRpdmU/CiAg
ICAgICAgIHJ1bl9jb21tYW5kKFsiZ2l0IiwgImFkZCIsIHBhdGhdKQogCi0gICAgZGVmIGNoYW5n
ZWRfZmlsZXMoc2VsZik6Ci0gICAgICAgIHN0YXR1c19jb21tYW5kID0gWydnaXQnLCAnZGlmZics
ICctcicsICctLW5hbWUtc3RhdHVzJywgJy1DJywgJy1NJywgJ0hFQUQnXQorICAgIGRlZiBfbWVy
Z2VfYmFzZShzZWxmLCBnaXRfY29tbWl0LCBzcXVhc2gpOgorICAgICAgICBpZiBnaXRfY29tbWl0
OgorICAgICAgICAgICAgIyBGSVhNRTogQ2FsbGluZyBjb2RlIHNob3VsZCB0dXJuIGNvbW1pdCBy
YW5nZXMgaW50byBhIGxpc3Qgb2YgY29tbWl0IElEcworICAgICAgICAgICAgIyBhbmQgdGhlbiB0
cmVhdCBlYWNoIGNvbW1pdCBzZXBhcmF0ZWx5LgorICAgICAgICAgICAgaWYgJy4uJyBub3QgaW4g
Z2l0X2NvbW1pdDoKKyAgICAgICAgICAgICAgICBnaXRfY29tbWl0ID0gZ2l0X2NvbW1pdCArICJe
Li4iICsgZ2l0X2NvbW1pdAorICAgICAgICAgICAgcmV0dXJuIGdpdF9jb21taXQKKworICAgICAg
ICBpZiBzZWxmLnNob3VsZF9zcXVhc2goc3F1YXNoKToKKyAgICAgICAgICAgIHJldHVybiBzZWxm
LnN2bl9tZXJnZV9iYXNlKCkKKworICAgICAgICAjIEZJWE1FOiBOb24tc3F1YXNoIGJlaGF2aW9y
IHNob3VsZCBtYXRjaCBjb21taXRfd2l0aF9tZXNzYWdlLiBJdCByYWlzZXMgYW4gZXJyb3IKKyAg
ICAgICAgIyBpZiB0aGVyZSBhcmUgd29ya2luZyBjb3B5IGNoYW5nZXMgYW5kIC0tc3F1YXNoIG9y
IC0tbm8tc3F1YXNoIHdhc24ndCBwYXNzZWQgaW4uCisgICAgICAgICMgSWYgLS1uby1zcXVhc2gs
IHRoZW4gaXQgc2hvdWxkIHByb2NlZWQgd2l0aCBlYWNoIGxvY2FsIGNvbW1pdCBhcyBhIHNlcGFy
YXRlIHBhdGNoLgorICAgICAgICByZXR1cm4gJ0hFQUQnCisKKyAgICBkZWYgY2hhbmdlZF9maWxl
cyhzZWxmLCBnaXRfY29tbWl0PU5vbmUsIHNxdWFzaD1Ob25lKToKKyAgICAgICAgc3RhdHVzX2Nv
bW1hbmQgPSBbJ2dpdCcsICdkaWZmJywgJy1yJywgJy0tbmFtZS1zdGF0dXMnLCAnLUMnLCAnLU0n
LCBzZWxmLl9tZXJnZV9iYXNlKGdpdF9jb21taXQsIHNxdWFzaCldCiAgICAgICAgIHJldHVybiBz
ZWxmLnJ1bl9zdGF0dXNfYW5kX2V4dHJhY3RfZmlsZW5hbWVzKHN0YXR1c19jb21tYW5kLCBzZWxm
Ll9zdGF0dXNfcmVnZXhwKCJBRE0iKSkKIAogICAgIGRlZiBfY2hhbmdlc19maWxlc19mb3JfY29t
bWl0KHNlbGYsIGdpdF9jb21taXQpOgpAQCAtNTAzLDkgKzUxNCw5IEBAIGNsYXNzIEdpdChTQ00p
OgogICAgIGRlZiBkaXNwbGF5X25hbWUoc2VsZik6CiAgICAgICAgIHJldHVybiAiZ2l0IgogCi0g
ICAgZGVmIGNyZWF0ZV9wYXRjaChzZWxmKToKKyAgICBkZWYgY3JlYXRlX3BhdGNoKHNlbGYsIGdp
dF9jb21taXQ9Tm9uZSwgc3F1YXNoPU5vbmUpOgogICAgICAgICAjIEZJWE1FOiBUaGlzIHNob3Vs
ZCBwcm9iYWJseSB1c2UgY3dkPXNlbGYuY2hlY2tvdXRfcm9vdAotICAgICAgICByZXR1cm4gcnVu
X2NvbW1hbmQoWydnaXQnLCAnZGlmZicsICctLWJpbmFyeScsICdIRUFEJ10pCisgICAgICAgIHJl
dHVybiBydW5fY29tbWFuZChbJ2dpdCcsICdkaWZmJywgJy0tYmluYXJ5Jywgc2VsZi5fbWVyZ2Vf
YmFzZShnaXRfY29tbWl0LCBzcXVhc2gpXSkKIAogICAgIEBjbGFzc21ldGhvZAogICAgIGRlZiBn
aXRfY29tbWl0X2Zyb21fc3ZuX3JldmlzaW9uKGNscywgcmV2aXNpb24pOgpAQCAtNTIxLDcgKzUz
Miw3IEBAIGNsYXNzIEdpdChTQ00pOgogCiAgICAgZGVmIGRpZmZfZm9yX3JldmlzaW9uKHNlbGYs
IHJldmlzaW9uKToKICAgICAgICAgZ2l0X2NvbW1pdCA9IHNlbGYuZ2l0X2NvbW1pdF9mcm9tX3N2
bl9yZXZpc2lvbihyZXZpc2lvbikKLSAgICAgICAgcmV0dXJuIHNlbGYuY3JlYXRlX3BhdGNoX2Zy
b21fbG9jYWxfY29tbWl0KGdpdF9jb21taXQpCisgICAgICAgIHJldHVybiBzZWxmLmNyZWF0ZV9w
YXRjaChnaXRfY29tbWl0KQogCiAgICAgZGVmIGNvbW1pdHRlcl9lbWFpbF9mb3JfcmV2aXNpb24o
c2VsZiwgcmV2aXNpb24pOgogICAgICAgICBnaXRfY29tbWl0ID0gc2VsZi5naXRfY29tbWl0X2Zy
b21fc3ZuX3JldmlzaW9uKHJldmlzaW9uKQpAQCAtNTM4LDExICs1NDksMTAwIEBAIGNsYXNzIEdp
dChTQ00pOgogICAgIGRlZiByZXZlcnRfZmlsZXMoc2VsZiwgZmlsZV9wYXRocyk6CiAgICAgICAg
IHJ1bl9jb21tYW5kKFsnZ2l0JywgJ2NoZWNrb3V0JywgJ0hFQUQnXSArIGZpbGVfcGF0aHMpCiAK
LSAgICBkZWYgY29tbWl0X3dpdGhfbWVzc2FnZShzZWxmLCBtZXNzYWdlLCB1c2VybmFtZT1Ob25l
KToKKyAgICBkZWYgc2hvdWxkX3NxdWFzaChzZWxmLCBzcXVhc2gpOgorICAgICAgICBpZiBzcXVh
c2ggaXMgbm90IE5vbmU6CisgICAgICAgICAgICAjIFNxdWFzaCBpcyBzcGVjaWZpZWQgb24gdGhl
IGNvbW1hbmQtbGluZS4KKyAgICAgICAgICAgIHJldHVybiBzcXVhc2gKKworICAgICAgICBjb25m
aWdfc3F1YXNoID0gR2l0LnJlYWRfZ2l0X2NvbmZpZygnd2Via2l0LXBhdGNoLnNxdWFzaCcpCisg
ICAgICAgIGlmIChjb25maWdfc3F1YXNoIGFuZCBjb25maWdfc3F1YXNoIGlzIG5vdCAiIik6Cisg
ICAgICAgICAgICByZXR1cm4gY29uZmlnX3NxdWFzaC5sb3dlcigpID09ICJ0cnVlIgorCisgICAg
ICAgICMgT25seSByYWlzZSBhbiBlcnJvciBpZiB0aGVyZSBhcmUgYWN0dWFsbHkgbXVsdGlwbGUg
Y29tbWl0cyB0byBzcXVhc2guCisgICAgICAgIG51bV9sb2NhbF9jb21taXRzID0gbGVuKHNlbGYu
bG9jYWxfY29tbWl0cygpKQorICAgICAgICBpZiBudW1fbG9jYWxfY29tbWl0cyA+IDEgb3IgbnVt
X2xvY2FsX2NvbW1pdHMgPiAwIGFuZCBub3Qgc2VsZi53b3JraW5nX2RpcmVjdG9yeV9pc19jbGVh
bigpOgorICAgICAgICAgICAgd29ya2luZ19kaXJlY3RvcnlfbWVzc2FnZSA9ICIiIGlmIHNlbGYu
d29ya2luZ19kaXJlY3RvcnlfaXNfY2xlYW4oKSBlbHNlICIgYW5kIHdvcmtpbmcgY29weSBjaGFu
Z2VzIgorICAgICAgICAgICAgcmFpc2UgU2NyaXB0RXJyb3IobWVzc2FnZT0iIiJUaGVyZSBhcmUg
JXMgbG9jYWwgY29tbWl0cyVzLiBEbyBvbmUgb2YgdGhlIGZvbGxvd2luZzoKKzEpIFVzZSAtLXNx
dWFzaCBvciAtLW5vLXNxdWFzaAorMikgZ2l0IGNvbmZpZyB3ZWJraXQtcGF0Y2guc3F1YXNoIHRy
dWUvZmFsc2UKKyIiIiAlIChudW1fbG9jYWxfY29tbWl0cywgd29ya2luZ19kaXJlY3RvcnlfbWVz
c2FnZSkpCisKKyAgICAgICAgcmV0dXJuIE5vbmUKKworICAgIGRlZiBjb21taXRfd2l0aF9tZXNz
YWdlKHNlbGYsIG1lc3NhZ2UsIHVzZXJuYW1lPU5vbmUsIGdpdF9jb21taXQ9Tm9uZSwgc3F1YXNo
PU5vbmUpOgogICAgICAgICAjIFVzZXJuYW1lIGlzIGlnbm9yZWQgZHVyaW5nIEdpdCBjb21taXRz
LgotICAgICAgICBzZWxmLmNvbW1pdF9sb2NhbGx5X3dpdGhfbWVzc2FnZShtZXNzYWdlKQorICAg
ICAgICBpZiBnaXRfY29tbWl0OgorICAgICAgICAgICAgIyBOZWVkIHdvcmtpbmcgZGlyZWN0b3J5
IGNoYW5nZXMgdG8gYmUgY29tbWl0dGVkIHNvIHdlIGNhbiBjaGVja291dCB0aGUgbWVyZ2UgYnJh
bmNoLgorICAgICAgICAgICAgaWYgbm90IHNlbGYud29ya2luZ19kaXJlY3RvcnlfaXNfY2xlYW4o
KToKKyAgICAgICAgICAgICAgICAjIEZJWE1FOiB3ZWJraXQtcGF0Y2ggbGFuZCB3aWxsIG1vZGlm
eSB0aGUgQ2hhbmdlTG9ncyB0byBjb3JyZWN0IHRoZSByZXZpZXdlci4KKyAgICAgICAgICAgICAg
ICAjIFRoYXQgd2lsbCBtb2RpZnkgdGhlIHdvcmtpbmctY29weSBhbmQgY2F1c2UgdXMgdG8gaGl0
IHRoaXMgZXJyb3IuCisgICAgICAgICAgICAgICAgIyBUaGUgQ2hhbmdlTG9nIG1vZGlmaWNhdGlv
biBjb3VsZCBiZSBtYWRlIHRvIG1vZGlmeSB0aGUgZXhpc3RpbmcgbG9jYWwgY29tbWl0PworICAg
ICAgICAgICAgICAgIHJhaXNlIFNjcmlwdEVycm9yKG1lc3NhZ2U9IldvcmtpbmcgY29weSBpcyBt
b2RpZmllZC4gQ2Fubm90IGNvbW1pdCBpbmRpdmlkdWFsIGdpdF9jb21taXRzLiIpCisgICAgICAg
ICAgICByZXR1cm4gc2VsZi5fY29tbWl0X29uX2JyYW5jaChtZXNzYWdlLCBnaXRfY29tbWl0KQor
CisgICAgICAgIHNxdWFzaCA9IHNlbGYuc2hvdWxkX3NxdWFzaChzcXVhc2gpCisgICAgICAgIGlm
IHNxdWFzaDoKKyAgICAgICAgICAgIHJ1bl9jb21tYW5kKFsnZ2l0JywgJ3Jlc2V0JywgJy0tc29m
dCcsIHNlbGYuc3ZuX2JyYW5jaF9uYW1lKCldKQorICAgICAgICAgICAgc2VsZi5jb21taXRfbG9j
YWxseV93aXRoX21lc3NhZ2UobWVzc2FnZSkKKyAgICAgICAgZWxpZiBub3Qgc2VsZi53b3JraW5n
X2RpcmVjdG9yeV9pc19jbGVhbigpOgorICAgICAgICAgICAgaWYgbm90IGxlbihzZWxmLmxvY2Fs
X2NvbW1pdHMoKSk6CisgICAgICAgICAgICAgICAgIyBUaGVyZSBhcmUgb25seSB3b3JraW5nIGNv
cHkgY2hhbmdlcy4gQXNzdW1lIHRoZXkgc2hvdWxkIGJlIGNvbW1pdHRlZC4KKyAgICAgICAgICAg
ICAgICBzZWxmLmNvbW1pdF9sb2NhbGx5X3dpdGhfbWVzc2FnZShtZXNzYWdlKQorICAgICAgICAg
ICAgZWxpZiBzcXVhc2ggaXMgTm9uZToKKyAgICAgICAgICAgICAgICAjIFRoZSB1c2VyIGRpZG4n
dCBleHBsaWNpdGx5IHNheSB0byBzcXVhc2ggb3Igbm90IHNxdWFzaC4gVGhlcmUgYXJlIGxvY2Fs
IGNvbW1pdHMKKyAgICAgICAgICAgICAgICAjIGFuZCB3b3JraW5nIGNvcHkgY2hhbmdlcy4gTm90
IGNsZWFyIHdoYXQgdGhlIHVzZXIgd2FudHMuCisgICAgICAgICAgICAgICAgcmFpc2UgU2NyaXB0
RXJyb3IobWVzc2FnZT0iIiJUaGVyZSBhcmUgbG9jYWwgY29tbWl0cyBhbmQgd29ya2luZyBjb3B5
IGNoYW5nZXMuIERvIG9uZSBvZiB0aGUgZm9sbG93aW5nOgorMSkgQ29tbWl0L3JldmVydCB3b3Jr
aW5nIGNvcHkgY2hhbmdlcy4KKzIpIFVzZSAtLXNxdWFzaCBvciAtLW5vLXNxdWFzaAorMykgZ2l0
IGNvbmZpZyB3ZWJraXQtcGF0Y2guc3F1YXNoIHRydWUvZmFsc2UKKyIiIikKKworICAgICAgICAj
IEZJWE1FOiBUaGlzIHdpbGwgY29tbWl0IGFsbCBsb2NhbCBjb21taXRzLCBlYWNoIHdpdGggaXQn
cyBvd24gbWVzc2FnZS4gV2Ugc2hvdWxkIHJlc3RydWN0dXJlCisgICAgICAgICMgc28gdGhhdCBl
YWNoIGxvY2FsIGNvbW1pdCBoYXMgdGhlIGFwcHJvcHJpYXRlIGNvbW1pdCBtZXNzYWdlIGJhc2Vk
IG9mZiBpdCdzIENoYW5nZUxvZ3MuCiAgICAgICAgIHJldHVybiBzZWxmLnB1c2hfbG9jYWxfY29t
bWl0c190b19zZXJ2ZXIoKQogCisgICAgZGVmIF9jb21taXRfb25fYnJhbmNoKHNlbGYsIG1lc3Nh
Z2UsIGdpdF9jb21taXQpOgorICAgICAgICBicmFuY2hfcmVmID0gcnVuX2NvbW1hbmQoWydnaXQn
LCAnc3ltYm9saWMtcmVmJywgJ0hFQUQnXSkuc3RyaXAoKQorICAgICAgICBicmFuY2hfbmFtZSA9
IGJyYW5jaF9yZWYucmVwbGFjZSgncmVmcy9oZWFkcy8nLCAnJykKKyAgICAgICAgY29tbWl0X2lk
cyA9IHNlbGYuY29tbWl0X2lkc19mcm9tX2NvbW1pdGlzaF9hcmd1bWVudHMoW2dpdF9jb21taXRd
KQorCisgICAgICAgICMgV2Ugd2FudCB0byBzcXVhc2ggYWxsIHRoaXMgYnJhbmNoJ3MgY29tbWl0
cyBpbnRvIG9uZSBjb21taXQgd2l0aCB0aGUgcHJvcGVyIGRlc2NyaXB0aW9uLgorICAgICAgICAj
IFdlIGRvIHRoaXMgYnkgZG9pbmcgYSAibWVyZ2UgLS1zcXVhc2giIGludG8gYSBuZXcgY29tbWl0
IGJyYW5jaCwgdGhlbiBkY29tbWl0dGluZyB0aGF0LgorICAgICAgICBNRVJHRV9CUkFOQ0ggPSAn
d2Via2l0LXBhdGNoLWxhbmQnCisgICAgICAgIHNlbGYuZGVsZXRlX2JyYW5jaChNRVJHRV9CUkFO
Q0gpCisKKyAgICAgICAgIyBXZSBtaWdodCBiZSBpbiBhIGRpcmVjdG9yeSB0aGF0J3MgcHJlc2Vu
dCBpbiB0aGlzIGJyYW5jaCBidXQgbm90IGluIHRoZQorICAgICAgICAjIHRydW5rLiAgTW92ZSB1
cCB0byB0aGUgdG9wIG9mIHRoZSB0cmVlIHNvIHRoYXQgZ2l0IGNvbW1hbmRzIHRoYXQgZXhwZWN0
IGEKKyAgICAgICAgIyB2YWxpZCBDV0Qgd29uJ3QgZmFpbCBhZnRlciB3ZSBjaGVjayBvdXQgdGhl
IG1lcmdlIGJyYW5jaC4KKyAgICAgICAgb3MuY2hkaXIoc2VsZi5jaGVja291dF9yb290KQorCisg
ICAgICAgICMgU3R1ZmYgb3VyIGNoYW5nZSBpbnRvIHRoZSBtZXJnZSBicmFuY2guCisgICAgICAg
ICMgV2Ugd3JhcCBpbiBhIHRyeS4uLmZpbmFsbHkgYmxvY2sgc28gaWYgYW55dGhpbmcgZ29lcyB3
cm9uZywgd2UgY2xlYW4gdXAgdGhlIGJyYW5jaGVzLgorICAgICAgICBjb21taXRfc3VjY2VlZGVk
ID0gVHJ1ZQorICAgICAgICB0cnk6CisgICAgICAgICAgICBydW5fY29tbWFuZChbJ2dpdCcsICdj
aGVja291dCcsICctcScsICctYicsIE1FUkdFX0JSQU5DSCwgc2VsZi5zdm5fYnJhbmNoX25hbWUo
KV0pCisKKyAgICAgICAgICAgIGZvciBjb21taXQgaW4gY29tbWl0X2lkczoKKyAgICAgICAgICAg
ICAgICAjIFdlJ3JlIG9uIGEgZGlmZmVyZW50IGJyYW5jaCBub3csIHNvIGNvbnZlcnQgImhlYWQi
IHRvIHRoZSBicmFuY2ggbmFtZS4KKyAgICAgICAgICAgICAgICBjb21taXQgPSByZS5zdWIocico
P2kpaGVhZCcsIGJyYW5jaF9uYW1lLCBjb21taXQpCisgICAgICAgICAgICAgICAgIyBGSVhNRTog
T25jZSBjaGFuZ2VkX2ZpbGVzIGFuZCBjcmVhdGVfcGF0Y2ggYXJlIG1vZGlmaWVkIHRvIHNlcGFy
YXRlbHkgaGFuZGxlIGVhY2gKKyAgICAgICAgICAgICAgICAjIGNvbW1pdCBpbiBhIGNvbW1pdCBy
YW5nZSwgY29tbWl0IGVhY2ggY2hlcnJ5IHBpY2sgc28gdGhleSdsbCBnZXQgZGNvbW1pdHRlZCBz
ZXBhcmF0ZWx5LgorICAgICAgICAgICAgICAgIHJ1bl9jb21tYW5kKFsnZ2l0JywgJ2NoZXJyeS1w
aWNrJywgJy0tbm8tY29tbWl0JywgY29tbWl0XSkKKworICAgICAgICAgICAgcnVuX2NvbW1hbmQo
WydnaXQnLCAnY29tbWl0JywgJy1tJywgbWVzc2FnZV0pCisgICAgICAgICAgICBvdXRwdXQgPSBz
ZWxmLnB1c2hfbG9jYWxfY29tbWl0c190b19zZXJ2ZXIoKQorICAgICAgICBleGNlcHQgRXhjZXB0
aW9uLCBlOgorICAgICAgICAgICAgbG9nKCJDT01NSVQgRkFJTEVEOiAiICsgc3RyKGUpKQorICAg
ICAgICAgICAgb3V0cHV0ID0gIkNvbW1pdCBmYWlsZWQuIgorICAgICAgICAgICAgY29tbWl0X3N1
Y2NlZWRlZCA9IEZhbHNlCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAjIEFuZCB0aGVu
IHN3YXAgYmFjayB0byB0aGUgb3JpZ2luYWwgYnJhbmNoIGFuZCBjbGVhbiB1cC4KKyAgICAgICAg
ICAgIHNlbGYuY2xlYW5fd29ya2luZ19kaXJlY3RvcnkoKQorICAgICAgICAgICAgcnVuX2NvbW1h
bmQoWydnaXQnLCAnY2hlY2tvdXQnLCAnLXEnLCBicmFuY2hfbmFtZV0pCisgICAgICAgICAgICBz
ZWxmLmRlbGV0ZV9icmFuY2goTUVSR0VfQlJBTkNIKQorCisgICAgICAgIHJldHVybiBvdXRwdXQK
KwogICAgIGRlZiBzdm5fY29tbWl0X2xvZyhzZWxmLCBzdm5fcmV2aXNpb24pOgogICAgICAgICBz
dm5fcmV2aXNpb24gPSBzZWxmLnN0cmlwX3JfZnJvbV9zdm5fcmV2aXNpb24oc3ZuX3JldmlzaW9u
KQogICAgICAgICByZXR1cm4gcnVuX2NvbW1hbmQoWydnaXQnLCAnc3ZuJywgJ2xvZycsICctcics
IHN2bl9yZXZpc2lvbl0pCkBAIC01NjIsMTIgKzY2Miw2IEBAIGNsYXNzIEdpdChTQ00pOgogICAg
IGRlZiBzdm5fYnJhbmNoX25hbWUoc2VsZik6CiAgICAgICAgIHJldHVybiBHaXQucmVhZF9naXRf
Y29uZmlnKCdzdm4tcmVtb3RlLnN2bi5mZXRjaCcpLnNwbGl0KCc6JylbMV0KIAotICAgIGRlZiBj
cmVhdGVfcGF0Y2hfZnJvbV9sb2NhbF9jb21taXQoc2VsZiwgY29tbWl0X2lkKToKLSAgICAgICAg
cmV0dXJuIHJ1bl9jb21tYW5kKFsnZ2l0JywgJ2RpZmYnLCAnLS1iaW5hcnknLCBjb21taXRfaWQg
KyAiXi4uIiArIGNvbW1pdF9pZF0pCi0KLSAgICBkZWYgY3JlYXRlX3BhdGNoX3NpbmNlX2xvY2Fs
X2NvbW1pdChzZWxmLCBjb21taXRfaWQpOgotICAgICAgICByZXR1cm4gcnVuX2NvbW1hbmQoWydn
aXQnLCAnZGlmZicsICctLWJpbmFyeScsIGNvbW1pdF9pZF0pCi0KICAgICBkZWYgY29tbWl0X2xv
Y2FsbHlfd2l0aF9tZXNzYWdlKHNlbGYsIG1lc3NhZ2UpOgogICAgICAgICBydW5fY29tbWFuZChb
J2dpdCcsICdjb21taXQnLCAnLS1hbGwnLCAnLUYnLCAnLSddLCBpbnB1dD1tZXNzYWdlKQogCmRp
ZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9z
Y21fdW5pdHRlc3QucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVj
a291dC9zY21fdW5pdHRlc3QucHkKaW5kZXggYzBhNjRkNC4uZjY3ZmM2NCAxMDA2NDQKLS0tIGEv
V2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvc2NtX3VuaXR0ZXN0
LnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L3Nj
bV91bml0dGVzdC5weQpAQCAtMjAyLDE1ICsyMDIsNiBAQCBjbGFzcyBTQ01UZXN0KHVuaXR0ZXN0
LlRlc3RDYXNlKToKIAogICAgICMgVGVzdHMgd2hpY2ggYm90aCBHaXRUZXN0IGFuZCBTVk5UZXN0
IHNob3VsZCBydW4uCiAgICAgIyBGSVhNRTogVGhlcmUgbXVzdCBiZSBhIHNpbXBsZXIgd2F5IHRv
IGFkZCB0aGVzZSB3L28gYWRkaW5nIGEgd3JhcHBlciBtZXRob2QgdG8gYm90aCBzdWJjbGFzc2Vz
Ci0gICAgZGVmIF9zaGFyZWRfdGVzdF9jb21taXRfd2l0aF9tZXNzYWdlKHNlbGYsIHVzZXJuYW1l
PSJkYmF0ZXNAd2Via2l0Lm9yZyIpOgotICAgICAgICB3cml0ZV9pbnRvX2ZpbGVfYXRfcGF0aCgn
dGVzdF9maWxlJywgJ21vcmUgdGVzdCBjb250ZW50JykKLSAgICAgICAgY29tbWl0X3RleHQgPSBz
ZWxmLnNjbS5jb21taXRfd2l0aF9tZXNzYWdlKCJhbm90aGVyIHRlc3QgY29tbWl0IiwgdXNlcm5h
bWUpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5zY20uc3ZuX3JldmlzaW9uX2Zyb21f
Y29tbWl0X3RleHQoY29tbWl0X3RleHQpLCAnNScpCi0KLSAgICAgICAgc2VsZi5zY20uZHJ5cnVu
ID0gVHJ1ZQotICAgICAgICB3cml0ZV9pbnRvX2ZpbGVfYXRfcGF0aCgndGVzdF9maWxlJywgJ3N0
aWxsIG1vcmUgdGVzdCBjb250ZW50JykKLSAgICAgICAgY29tbWl0X3RleHQgPSBzZWxmLnNjbS5j
b21taXRfd2l0aF9tZXNzYWdlKCJ5ZXQgYW5vdGhlciB0ZXN0IGNvbW1pdCIsIHVzZXJuYW1lKQot
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuc2NtLnN2bl9yZXZpc2lvbl9mcm9tX2NvbW1p
dF90ZXh0KGNvbW1pdF90ZXh0KSwgJzAnKQogCiAgICAgZGVmIF9zaGFyZWRfdGVzdF9jaGFuZ2Vk
X2ZpbGVzKHNlbGYpOgogICAgICAgICB3cml0ZV9pbnRvX2ZpbGVfYXRfcGF0aCgidGVzdF9maWxl
IiwgImNoYW5nZWQgY29udGVudCIpCkBAIC01MzgsNiArNTI5LDE2IEBAIFExZFRCeDBBQUFCNDJp
dGc0R2xnWUpqR3dNRER5T0RNeE1EdzM0R0JnUUVBSlBRREpBPT0KICAgICAgICAgc2VsZi5hc3Nl
cnRUcnVlKHJlLnNlYXJjaCgnZm91cnRoIGNvbW1pdCcsIHNlbGYuc2NtLmxhc3Rfc3ZuX2NvbW1p
dF9sb2coKSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5zZWFyY2goJ3NlY29uZCBjb21t
aXQnLCBzZWxmLnNjbS5zdm5fY29tbWl0X2xvZygyKSkpCiAKKyAgICBkZWYgX3NoYXJlZF90ZXN0
X2NvbW1pdF93aXRoX21lc3NhZ2Uoc2VsZiwgdXNlcm5hbWU9Tm9uZSk6CisgICAgICAgIHdyaXRl
X2ludG9fZmlsZV9hdF9wYXRoKCd0ZXN0X2ZpbGUnLCAnbW9yZSB0ZXN0IGNvbnRlbnQnKQorICAg
ICAgICBjb21taXRfdGV4dCA9IHNlbGYuc2NtLmNvbW1pdF93aXRoX21lc3NhZ2UoImFub3RoZXIg
dGVzdCBjb21taXQiLCB1c2VybmFtZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnNj
bS5zdm5fcmV2aXNpb25fZnJvbV9jb21taXRfdGV4dChjb21taXRfdGV4dCksICc1JykKKworICAg
ICAgICBzZWxmLnNjbS5kcnlydW4gPSBUcnVlCisgICAgICAgIHdyaXRlX2ludG9fZmlsZV9hdF9w
YXRoKCd0ZXN0X2ZpbGUnLCAnc3RpbGwgbW9yZSB0ZXN0IGNvbnRlbnQnKQorICAgICAgICBjb21t
aXRfdGV4dCA9IHNlbGYuc2NtLmNvbW1pdF93aXRoX21lc3NhZ2UoInlldCBhbm90aGVyIHRlc3Qg
Y29tbWl0IiwgdXNlcm5hbWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5zY20uc3Zu
X3JldmlzaW9uX2Zyb21fY29tbWl0X3RleHQoY29tbWl0X3RleHQpLCAnMCcpCisKICAgICBkZWYg
dGVzdF9jb21taXRfdGV4dF9wYXJzaW5nKHNlbGYpOgogICAgICAgICBzZWxmLl9zaGFyZWRfdGVz
dF9jb21taXRfd2l0aF9tZXNzYWdlKCkKIApAQCAtNzIyLDcgKzcyMywxMTUgQEAgY2xhc3MgR2l0
VGVzdChTQ01UZXN0KToKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoU2NyaXB0RXJyb3IsIENo
ZWNrb3V0KHNjbSkuYXBwbHlfcGF0Y2gsIHBhdGNoLCBmb3JjZT1UcnVlKQogCiAgICAgZGVmIHRl
c3RfY29tbWl0X3RleHRfcGFyc2luZyhzZWxmKToKLSAgICAgICAgc2VsZi5fc2hhcmVkX3Rlc3Rf
Y29tbWl0X3dpdGhfbWVzc2FnZSgpCisgICAgICAgIHdyaXRlX2ludG9fZmlsZV9hdF9wYXRoKCd0
ZXN0X2ZpbGUnLCAnbW9yZSB0ZXN0IGNvbnRlbnQnKQorICAgICAgICBzZWxmLnNjbS5jb21taXRf
bG9jYWxseV93aXRoX21lc3NhZ2UoImFub3RoZXIgdGVzdCBjb21taXQiKQorICAgICAgICBjb21t
aXRfdGV4dCA9IHNlbGYuc2NtLmNvbW1pdF93aXRoX21lc3NhZ2UoImFub3RoZXIgdGVzdCBjb21t
aXQiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuc2NtLnN2bl9yZXZpc2lvbl9mcm9t
X2NvbW1pdF90ZXh0KGNvbW1pdF90ZXh0KSwgJzUnKQorCisgICAgICAgIHNlbGYuc2NtLmRyeXJ1
biA9IFRydWUKKyAgICAgICAgd3JpdGVfaW50b19maWxlX2F0X3BhdGgoJ3Rlc3RfZmlsZScsICdz
dGlsbCBtb3JlIHRlc3QgY29udGVudCcpCisgICAgICAgIHNlbGYuc2NtLmNvbW1pdF9sb2NhbGx5
X3dpdGhfbWVzc2FnZSgieWV0IGFub3RoZXIgdGVzdCBjb21taXQiKQorICAgICAgICBjb21taXRf
dGV4dCA9IHNlbGYuc2NtLmNvbW1pdF93aXRoX21lc3NhZ2UoInlldCBhbm90aGVyIHRlc3QgY29t
bWl0IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnNjbS5zdm5fcmV2aXNpb25fZnJv
bV9jb21taXRfdGV4dChjb21taXRfdGV4dCksICcwJykKKworICAgIGRlZiBfb25lX2xvY2FsX2Nv
bW1pdF9wbHVzX3dvcmtpbmdfY29weV9jaGFuZ2VzKHNlbGYpOgorICAgICAgICB3cml0ZV9pbnRv
X2ZpbGVfYXRfcGF0aCgndGVzdF9maWxlX2NvbW1pdDEnLCAnbW9yZSB0ZXN0IGNvbnRlbnQnKQor
ICAgICAgICBydW5fY29tbWFuZChbJ2dpdCcsICdhZGQnLCAndGVzdF9maWxlX2NvbW1pdDEnXSkK
KyAgICAgICAgc2VsZi5zY20uY29tbWl0X2xvY2FsbHlfd2l0aF9tZXNzYWdlKCJhbm90aGVyIHRl
c3QgY29tbWl0IikKKworICAgICAgICB3cml0ZV9pbnRvX2ZpbGVfYXRfcGF0aCgndGVzdF9maWxl
X2NvbW1pdDInLCAnc3RpbGwgbW9yZSB0ZXN0IGNvbnRlbnQnKQorICAgICAgICBydW5fY29tbWFu
ZChbJ2dpdCcsICdhZGQnLCAndGVzdF9maWxlX2NvbW1pdDInXSkKKworICAgIGRlZiB0ZXN0X2Nv
bW1pdF93aXRoX21lc3NhZ2Vfd29ya2luZ19jb3B5X29ubHkoc2VsZik6CisgICAgICAgIHdyaXRl
X2ludG9fZmlsZV9hdF9wYXRoKCd0ZXN0X2ZpbGVfY29tbWl0MScsICdtb3JlIHRlc3QgY29udGVu
dCcpCisgICAgICAgIHJ1bl9jb21tYW5kKFsnZ2l0JywgJ2FkZCcsICd0ZXN0X2ZpbGVfY29tbWl0
MSddKQorICAgICAgICBzY20gPSBkZXRlY3Rfc2NtX3N5c3RlbShzZWxmLmdpdF9jaGVja291dF9w
YXRoKQorICAgICAgICBjb21taXRfdGV4dCA9IHNjbS5jb21taXRfd2l0aF9tZXNzYWdlKCJ5ZXQg
YW5vdGhlciB0ZXN0IGNvbW1pdCIpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzY20uc3Zu
X3JldmlzaW9uX2Zyb21fY29tbWl0X3RleHQoY29tbWl0X3RleHQpLCAnNScpCisgICAgICAgIHN2
bl9sb2cgPSBydW5fY29tbWFuZChbJ2dpdCcsICdzdm4nLCAnbG9nJywgJy0tbGltaXQ9MScsICct
LXZlcmJvc2UnXSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLnNlYXJjaChyJ3Rlc3RfZmls
ZV9jb21taXQxJywgc3ZuX2xvZykpCisKKyAgICBkZWYgdGVzdF9jb21taXRfd2l0aF9tZXNzYWdl
X3NxdWFzaGVkKHNlbGYpOgorICAgICAgICBzZWxmLl9vbmVfbG9jYWxfY29tbWl0X3BsdXNfd29y
a2luZ19jb3B5X2NoYW5nZXMoKQorICAgICAgICBzY20gPSBkZXRlY3Rfc2NtX3N5c3RlbShzZWxm
LmdpdF9jaGVja291dF9wYXRoKQorICAgICAgICBjb21taXRfdGV4dCA9IHNjbS5jb21taXRfd2l0
aF9tZXNzYWdlKCJ5ZXQgYW5vdGhlciB0ZXN0IGNvbW1pdCIsIHNxdWFzaD1UcnVlKQorCisgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2NtLnN2bl9yZXZpc2lvbl9mcm9tX2NvbW1pdF90ZXh0KGNv
bW1pdF90ZXh0KSwgJzUnKQorICAgICAgICBzdm5fbG9nID0gcnVuX2NvbW1hbmQoWydnaXQnLCAn
c3ZuJywgJ2xvZycsICctLWxpbWl0PTEnLCAnLS12ZXJib3NlJ10pCisgICAgICAgIHNlbGYuYXNz
ZXJ0VHJ1ZShyZS5zZWFyY2gocid0ZXN0X2ZpbGVfY29tbWl0MicsIHN2bl9sb2cpKQorICAgICAg
ICBzZWxmLmFzc2VydFRydWUocmUuc2VhcmNoKHIndGVzdF9maWxlX2NvbW1pdDEnLCBzdm5fbG9n
KSkKKworICAgIGRlZiBfdHdvX2xvY2FsX2NvbW1pdHMoc2VsZik6CisgICAgICAgIHdyaXRlX2lu
dG9fZmlsZV9hdF9wYXRoKCd0ZXN0X2ZpbGVfY29tbWl0MScsICdtb3JlIHRlc3QgY29udGVudCcp
CisgICAgICAgIHJ1bl9jb21tYW5kKFsnZ2l0JywgJ2FkZCcsICd0ZXN0X2ZpbGVfY29tbWl0MSdd
KQorICAgICAgICBzZWxmLnNjbS5jb21taXRfbG9jYWxseV93aXRoX21lc3NhZ2UoImFub3RoZXIg
dGVzdCBjb21taXQiKQorCisgICAgICAgIHdyaXRlX2ludG9fZmlsZV9hdF9wYXRoKCd0ZXN0X2Zp
bGVfY29tbWl0MicsICdzdGlsbCBtb3JlIHRlc3QgY29udGVudCcpCisgICAgICAgIHJ1bl9jb21t
YW5kKFsnZ2l0JywgJ2FkZCcsICd0ZXN0X2ZpbGVfY29tbWl0MiddKQorICAgICAgICBzZWxmLnNj
bS5jb21taXRfbG9jYWxseV93aXRoX21lc3NhZ2UoInlldCBhbm90aGVyIHRlc3QgY29tbWl0IikK
KworICAgIGRlZiB0ZXN0X2NvbW1pdF93aXRoX21lc3NhZ2VfZ2l0X2NvbW1pdChzZWxmKToKKyAg
ICAgICAgc2VsZi5fdHdvX2xvY2FsX2NvbW1pdHMoKQorCisgICAgICAgIHNjbSA9IGRldGVjdF9z
Y21fc3lzdGVtKHNlbGYuZ2l0X2NoZWNrb3V0X3BhdGgpCisgICAgICAgIGNvbW1pdF90ZXh0ID0g
c2NtLmNvbW1pdF93aXRoX21lc3NhZ2UoImFub3RoZXIgdGVzdCBjb21taXQiLCBnaXRfY29tbWl0
PSJIRUFEXiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2NtLnN2bl9yZXZpc2lvbl9mcm9t
X2NvbW1pdF90ZXh0KGNvbW1pdF90ZXh0KSwgJzUnKQorCisgICAgICAgIHN2bl9sb2cgPSBydW5f
Y29tbWFuZChbJ2dpdCcsICdzdm4nLCAnbG9nJywgJy0tbGltaXQ9MScsICctLXZlcmJvc2UnXSkK
KyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLnNlYXJjaChyJ3Rlc3RfZmlsZV9jb21taXQxJywg
c3ZuX2xvZykpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UocmUuc2VhcmNoKHIndGVzdF9maWxl
X2NvbW1pdDInLCBzdm5fbG9nKSkKKworICAgIGRlZiB0ZXN0X2NvbW1pdF93aXRoX21lc3NhZ2Vf
Z2l0X2NvbW1pdF9yYW5nZShzZWxmKToKKyAgICAgICAgc2VsZi5fdHdvX2xvY2FsX2NvbW1pdHMo
KQorCisgICAgICAgIHNjbSA9IGRldGVjdF9zY21fc3lzdGVtKHNlbGYuZ2l0X2NoZWNrb3V0X3Bh
dGgpCisgICAgICAgIGNvbW1pdF90ZXh0ID0gc2NtLmNvbW1pdF93aXRoX21lc3NhZ2UoImFub3Ro
ZXIgdGVzdCBjb21taXQiLCBnaXRfY29tbWl0PSJIRUFEfjIuLkhFQUQiKQorICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKHNjbS5zdm5fcmV2aXNpb25fZnJvbV9jb21taXRfdGV4dChjb21taXRfdGV4
dCksICc1JykKKworICAgICAgICBzdm5fbG9nID0gcnVuX2NvbW1hbmQoWydnaXQnLCAnc3ZuJywg
J2xvZycsICctLWxpbWl0PTEnLCAnLS12ZXJib3NlJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1
ZShyZS5zZWFyY2gocid0ZXN0X2ZpbGVfY29tbWl0MScsIHN2bl9sb2cpKQorICAgICAgICBzZWxm
LmFzc2VydFRydWUocmUuc2VhcmNoKHIndGVzdF9maWxlX2NvbW1pdDInLCBzdm5fbG9nKSkKKwor
ICAgIGRlZiB0ZXN0X2NvbW1pdF93aXRoX21lc3NhZ2VfbXVsdGlwbGVfbG9jYWxfY29tbWl0cyhz
ZWxmKToKKyAgICAgICAgc2VsZi5fdHdvX2xvY2FsX2NvbW1pdHMoKQorICAgICAgICBzY20gPSBk
ZXRlY3Rfc2NtX3N5c3RlbShzZWxmLmdpdF9jaGVja291dF9wYXRoKQorICAgICAgICBzZWxmLmFz
c2VydFJhaXNlcyhTY3JpcHRFcnJvciwgc2NtLmNvbW1pdF93aXRoX21lc3NhZ2UsIFsiYW5vdGhl
ciB0ZXN0IGNvbW1pdCJdKQorCisgICAgZGVmIHRlc3RfY29tbWl0X3dpdGhfbWVzc2FnZV9tdWx0
aXBsZV9sb2NhbF9jb21taXRzX2FuZF93b3JraW5nX2NvcHkoc2VsZik6CisgICAgICAgIHNlbGYu
X3R3b19sb2NhbF9jb21taXRzKCkKKyAgICAgICAgd3JpdGVfaW50b19maWxlX2F0X3BhdGgoJ3Rl
c3RfZmlsZV9jb21taXQxJywgJ3dvcmtpbmcgY29weSBjaGFuZ2UnKQorICAgICAgICBzY20gPSBk
ZXRlY3Rfc2NtX3N5c3RlbShzZWxmLmdpdF9jaGVja291dF9wYXRoKQorICAgICAgICBzZWxmLmFz
c2VydFJhaXNlcyhTY3JpcHRFcnJvciwgc2NtLmNvbW1pdF93aXRoX21lc3NhZ2UsIFsiYW5vdGhl
ciB0ZXN0IGNvbW1pdCJdKQorCisgICAgZGVmIHRlc3RfY29tbWl0X3dpdGhfbWVzc2FnZV9naXRf
Y29tbWl0X2FuZF93b3JraW5nX2NvcHkoc2VsZik6CisgICAgICAgIHNlbGYuX3R3b19sb2NhbF9j
b21taXRzKCkKKyAgICAgICAgd3JpdGVfaW50b19maWxlX2F0X3BhdGgoJ3Rlc3RfZmlsZV9jb21t
aXQxJywgJ3dvcmtpbmcgY29weSBjaGFuZ2UnKQorICAgICAgICBzY20gPSBkZXRlY3Rfc2NtX3N5
c3RlbShzZWxmLmdpdF9jaGVja291dF9wYXRoKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhT
Y3JpcHRFcnJvciwgc2NtLmNvbW1pdF93aXRoX21lc3NhZ2UsIFsiYW5vdGhlciB0ZXN0IGNvbW1p
dCIsICdnaXRfY29tbWl0PSJIRUFEXiInXSkKKworICAgIGRlZiB0ZXN0X2NvbW1pdF93aXRoX21l
c3NhZ2VfbXVsdGlwbGVfbG9jYWxfY29tbWl0c19ub19zcXVhc2goc2VsZik6CisgICAgICAgIHNl
bGYuX3R3b19sb2NhbF9jb21taXRzKCkKKyAgICAgICAgc2NtID0gZGV0ZWN0X3NjbV9zeXN0ZW0o
c2VsZi5naXRfY2hlY2tvdXRfcGF0aCkKKyAgICAgICAgY29tbWl0X3RleHQgPSBzY20uY29tbWl0
X3dpdGhfbWVzc2FnZSgieWV0IGFub3RoZXIgdGVzdCBjb21taXQiLCBzcXVhc2g9RmFsc2UpCisg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2NtLnN2bl9yZXZpc2lvbl9mcm9tX2NvbW1pdF90ZXh0
KGNvbW1pdF90ZXh0KSwgJzUnKQorCisgICAgICAgIHN2bl9sb2cgPSBydW5fY29tbWFuZChbJ2dp
dCcsICdzdm4nLCAnbG9nJywgJy0tbGltaXQ9MScsICctLXZlcmJvc2UnXSkKKyAgICAgICAgc2Vs
Zi5hc3NlcnRUcnVlKHJlLnNlYXJjaChyJ3Rlc3RfZmlsZV9jb21taXQyJywgc3ZuX2xvZykpCisg
ICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UocmUuc2VhcmNoKHIndGVzdF9maWxlX2NvbW1pdDEnLCBz
dm5fbG9nKSkKKworICAgICAgICBzdm5fbG9nID0gcnVuX2NvbW1hbmQoWydnaXQnLCAnc3ZuJywg
J2xvZycsICctLWxpbWl0PTInLCAnLS12ZXJib3NlJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1
ZShyZS5zZWFyY2gocid0ZXN0X2ZpbGVfY29tbWl0MScsIHN2bl9sb2cpKQorCisgICAgZGVmIHRl
c3RfY29tbWl0X3dpdGhfbWVzc2FnZV9tdWx0aXBsZV9sb2NhbF9jb21taXRzX3NxdWFzaChzZWxm
KToKKyAgICAgICAgc2VsZi5fdHdvX2xvY2FsX2NvbW1pdHMoKQorICAgICAgICBzY20gPSBkZXRl
Y3Rfc2NtX3N5c3RlbShzZWxmLmdpdF9jaGVja291dF9wYXRoKQorICAgICAgICBjb21taXRfdGV4
dCA9IHNjbS5jb21taXRfd2l0aF9tZXNzYWdlKCJ5ZXQgYW5vdGhlciB0ZXN0IGNvbW1pdCIsIHNx
dWFzaD1UcnVlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNjbS5zdm5fcmV2aXNpb25fZnJv
bV9jb21taXRfdGV4dChjb21taXRfdGV4dCksICc1JykKKworICAgICAgICBzdm5fbG9nID0gcnVu
X2NvbW1hbmQoWydnaXQnLCAnc3ZuJywgJ2xvZycsICctLWxpbWl0PTEnLCAnLS12ZXJib3NlJ10p
CisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5zZWFyY2gocid0ZXN0X2ZpbGVfY29tbWl0Mics
IHN2bl9sb2cpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUocmUuc2VhcmNoKHIndGVzdF9maWxl
X2NvbW1pdDEnLCBzdm5fbG9nKSkKIAogICAgIGRlZiB0ZXN0X3JldmVyc2VfZGlmZihzZWxmKToK
ICAgICAgICAgc2VsZi5fc2hhcmVkX3Rlc3RfcmV2ZXJzZV9kaWZmKCkKQEAgLTczMyw2ICs4NDIs
NTkgQEAgY2xhc3MgR2l0VGVzdChTQ01UZXN0KToKICAgICBkZWYgdGVzdF9zdm5fYXBwbHlfZ2l0
X3BhdGNoKHNlbGYpOgogICAgICAgICBzZWxmLl9zaGFyZWRfdGVzdF9zdm5fYXBwbHlfZ2l0X3Bh
dGNoKCkKIAorICAgIGRlZiB0ZXN0X2NyZWF0ZV9wYXRjaF9sb2NhbF9wbHVzX3dvcmtpbmdfY29w
eShzZWxmKToKKyAgICAgICAgc2VsZi5fb25lX2xvY2FsX2NvbW1pdF9wbHVzX3dvcmtpbmdfY29w
eV9jaGFuZ2VzKCkKKyAgICAgICAgc2NtID0gZGV0ZWN0X3NjbV9zeXN0ZW0oc2VsZi5naXRfY2hl
Y2tvdXRfcGF0aCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoU2NyaXB0RXJyb3IsIHNjbS5j
cmVhdGVfcGF0Y2gpCisKKyAgICBkZWYgdGVzdF9jcmVhdGVfcGF0Y2hfbXVsdGlwbGVfbG9jYWxf
Y29tbWl0cyhzZWxmKToKKyAgICAgICAgc2VsZi5fdHdvX2xvY2FsX2NvbW1pdHMoKQorICAgICAg
ICBzY20gPSBkZXRlY3Rfc2NtX3N5c3RlbShzZWxmLmdpdF9jaGVja291dF9wYXRoKQorICAgICAg
ICBzZWxmLmFzc2VydFJhaXNlcyhTY3JpcHRFcnJvciwgc2NtLmNyZWF0ZV9wYXRjaCkKKworICAg
IGRlZiB0ZXN0X2NyZWF0ZV9wYXRjaF9zcXVhc2hlZChzZWxmKToKKyAgICAgICAgc2VsZi5fb25l
X2xvY2FsX2NvbW1pdF9wbHVzX3dvcmtpbmdfY29weV9jaGFuZ2VzKCkKKyAgICAgICAgc2NtID0g
ZGV0ZWN0X3NjbV9zeXN0ZW0oc2VsZi5naXRfY2hlY2tvdXRfcGF0aCkKKyAgICAgICAgcGF0Y2gg
PSBzY20uY3JlYXRlX3BhdGNoKHNxdWFzaD1UcnVlKQorICAgICAgICBzZWxmLmFzc2VydFRydWUo
cmUuc2VhcmNoKHIndGVzdF9maWxlX2NvbW1pdDInLCBwYXRjaCkpCisgICAgICAgIHNlbGYuYXNz
ZXJ0VHJ1ZShyZS5zZWFyY2gocid0ZXN0X2ZpbGVfY29tbWl0MScsIHBhdGNoKSkKKworICAgIGRl
ZiB0ZXN0X2NyZWF0ZV9wYXRjaF9ub3Rfc3F1YXNoZWQoc2VsZik6CisgICAgICAgIHNlbGYuX29u
ZV9sb2NhbF9jb21taXRfcGx1c193b3JraW5nX2NvcHlfY2hhbmdlcygpCisgICAgICAgIHNjbSA9
IGRldGVjdF9zY21fc3lzdGVtKHNlbGYuZ2l0X2NoZWNrb3V0X3BhdGgpCisgICAgICAgIHBhdGNo
ID0gc2NtLmNyZWF0ZV9wYXRjaChzcXVhc2g9RmFsc2UpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1
ZShyZS5zZWFyY2gocid0ZXN0X2ZpbGVfY29tbWl0MicsIHBhdGNoKSkKKyAgICAgICAgc2VsZi5h
c3NlcnRGYWxzZShyZS5zZWFyY2gocid0ZXN0X2ZpbGVfY29tbWl0MScsIHBhdGNoKSkKKworICAg
IGRlZiB0ZXN0X2NyZWF0ZV9wYXRjaF9naXRfY29tbWl0KHNlbGYpOgorICAgICAgICBzZWxmLl90
d29fbG9jYWxfY29tbWl0cygpCisgICAgICAgIHNjbSA9IGRldGVjdF9zY21fc3lzdGVtKHNlbGYu
Z2l0X2NoZWNrb3V0X3BhdGgpCisgICAgICAgIHBhdGNoID0gc2NtLmNyZWF0ZV9wYXRjaChnaXRf
Y29tbWl0PSJIRUFEXiIpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5zZWFyY2gocid0ZXN0
X2ZpbGVfY29tbWl0MScsIHBhdGNoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShyZS5zZWFy
Y2gocid0ZXN0X2ZpbGVfY29tbWl0MicsIHBhdGNoKSkKKworICAgIGRlZiB0ZXN0X2NyZWF0ZV9w
YXRjaF9naXRfY29tbWl0X3JhbmdlKHNlbGYpOgorICAgICAgICBzZWxmLl90d29fbG9jYWxfY29t
bWl0cygpCisgICAgICAgIHNjbSA9IGRldGVjdF9zY21fc3lzdGVtKHNlbGYuZ2l0X2NoZWNrb3V0
X3BhdGgpCisgICAgICAgIHBhdGNoID0gc2NtLmNyZWF0ZV9wYXRjaChnaXRfY29tbWl0PSJIRUFE
fjIuLkhFQUQiKQorICAgICAgICBzZWxmLmFzc2VydFRydWUocmUuc2VhcmNoKHIndGVzdF9maWxl
X2NvbW1pdDInLCBwYXRjaCkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5zZWFyY2gocid0
ZXN0X2ZpbGVfY29tbWl0MScsIHBhdGNoKSkKKworICAgIGRlZiB0ZXN0X2NyZWF0ZV9wYXRjaF9t
dWx0aXBsZV9sb2NhbF9jb21taXRzX25vX3NxdWFzaChzZWxmKToKKyAgICAgICAgc2VsZi5fdHdv
X2xvY2FsX2NvbW1pdHMoKQorICAgICAgICBzY20gPSBkZXRlY3Rfc2NtX3N5c3RlbShzZWxmLmdp
dF9jaGVja291dF9wYXRoKQorICAgICAgICBwYXRjaCA9IHNjbS5jcmVhdGVfcGF0Y2goc3F1YXNo
PUZhbHNlKQorICAgICAgICAjIEZJWE1FOiBJdCdzIHdlaXJkIHRoYXQgd2l0aCBzcXVhc2g9RmFs
c2UsIGNyZWF0ZV9wYXRjaC9jaGFuZ2VkX2ZpbGVzIGlnbm9yZXMgbG9jYWwgY29tbWl0cywKKyAg
ICAgICAgIyBidXQgY29tbWl0X3dpdGhfbWVzc2FnZSBjb21taXRzIHRoZW0uCisgICAgICAgIHNl
bGYuYXNzZXJ0VHJ1ZShwYXRjaCA9PSAiIikKKworICAgIGRlZiB0ZXN0X2NyZWF0ZV9wYXRjaF9t
dWx0aXBsZV9sb2NhbF9jb21taXRzX3NxdWFzaChzZWxmKToKKyAgICAgICAgc2VsZi5fdHdvX2xv
Y2FsX2NvbW1pdHMoKQorICAgICAgICBzY20gPSBkZXRlY3Rfc2NtX3N5c3RlbShzZWxmLmdpdF9j
aGVja291dF9wYXRoKQorICAgICAgICBwYXRjaCA9IHNjbS5jcmVhdGVfcGF0Y2goc3F1YXNoPVRy
dWUpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5zZWFyY2gocid0ZXN0X2ZpbGVfY29tbWl0
MicsIHBhdGNoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLnNlYXJjaChyJ3Rlc3RfZmls
ZV9jb21taXQxJywgcGF0Y2gpKQorCiAgICAgZGVmIHRlc3RfY3JlYXRlX2JpbmFyeV9wYXRjaChz
ZWxmKToKICAgICAgICAgIyBDcmVhdGUgYSBnaXQgYmluYXJ5IHBhdGNoIGFuZCBjaGVjayB0aGUg
Y29udGVudHMuCiAgICAgICAgIHNjbSA9IGRldGVjdF9zY21fc3lzdGVtKHNlbGYuZ2l0X2NoZWNr
b3V0X3BhdGgpCkBAIC03NTUsMTMgKzkxNyw2MiBAQCBjbGFzcyBHaXRUZXN0KFNDTVRlc3QpOgog
ICAgICAgICB3cml0ZV9pbnRvX2ZpbGVfYXRfcGF0aCh0ZXN0X2ZpbGVfcGF0aCwgZmlsZV9jb250
ZW50cykKICAgICAgICAgcnVuX2NvbW1hbmQoWydnaXQnLCAnYWRkJywgdGVzdF9maWxlX25hbWVd
KQogICAgICAgICBydW5fY29tbWFuZChbJ2dpdCcsICdjb21taXQnLCAnLW0nLCAnYmluYXJ5IGRp
ZmYnXSkKLSAgICAgICAgcGF0Y2hfZnJvbV9sb2NhbF9jb21taXQgPSBzY20uY3JlYXRlX3BhdGNo
X2Zyb21fbG9jYWxfY29tbWl0KCdIRUFEJykKKyAgICAgICAgcGF0Y2hfZnJvbV9sb2NhbF9jb21t
aXQgPSBzY20uY3JlYXRlX3BhdGNoKCdIRUFEJykKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJl
LnNlYXJjaChyJ1xubGl0ZXJhbCAwXG4nLCBwYXRjaF9mcm9tX2xvY2FsX2NvbW1pdCkpCiAgICAg
ICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5zZWFyY2gocidcbmxpdGVyYWwgMjU2XG4nLCBwYXRjaF9m
cm9tX2xvY2FsX2NvbW1pdCkpCi0gICAgICAgIHBhdGNoX3NpbmNlX2xvY2FsX2NvbW1pdCA9IHNj
bS5jcmVhdGVfcGF0Y2hfc2luY2VfbG9jYWxfY29tbWl0KCdIRUFEXjEnKQotICAgICAgICBzZWxm
LmFzc2VydFRydWUocmUuc2VhcmNoKHInXG5saXRlcmFsIDBcbicsIHBhdGNoX3NpbmNlX2xvY2Fs
X2NvbW1pdCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5zZWFyY2gocidcbmxpdGVyYWwg
MjU2XG4nLCBwYXRjaF9zaW5jZV9sb2NhbF9jb21taXQpKQotICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKHBhdGNoX2Zyb21fbG9jYWxfY29tbWl0LCBwYXRjaF9zaW5jZV9sb2NhbF9jb21taXQpCisK
KyAgICBkZWYgdGVzdF9jaGFuZ2VkX2ZpbGVzX2xvY2FsX3BsdXNfd29ya2luZ19jb3B5KHNlbGYp
OgorICAgICAgICBzZWxmLl9vbmVfbG9jYWxfY29tbWl0X3BsdXNfd29ya2luZ19jb3B5X2NoYW5n
ZXMoKQorICAgICAgICBzY20gPSBkZXRlY3Rfc2NtX3N5c3RlbShzZWxmLmdpdF9jaGVja291dF9w
YXRoKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhTY3JpcHRFcnJvciwgc2NtLmNoYW5nZWRf
ZmlsZXMpCisKKyAgICBkZWYgdGVzdF9jaGFuZ2VkX2ZpbGVzX211bHRpcGxlX2xvY2FsX2NvbW1p
dHMoc2VsZik6CisgICAgICAgIHNlbGYuX3R3b19sb2NhbF9jb21taXRzKCkKKyAgICAgICAgc2Nt
ID0gZGV0ZWN0X3NjbV9zeXN0ZW0oc2VsZi5naXRfY2hlY2tvdXRfcGF0aCkKKyAgICAgICAgc2Vs
Zi5hc3NlcnRSYWlzZXMoU2NyaXB0RXJyb3IsIHNjbS5jaGFuZ2VkX2ZpbGVzKQorCisgICAgZGVm
IHRlc3RfY2hhbmdlZF9maWxlc19zcXVhc2hlZChzZWxmKToKKyAgICAgICAgc2VsZi5fb25lX2xv
Y2FsX2NvbW1pdF9wbHVzX3dvcmtpbmdfY29weV9jaGFuZ2VzKCkKKyAgICAgICAgc2NtID0gZGV0
ZWN0X3NjbV9zeXN0ZW0oc2VsZi5naXRfY2hlY2tvdXRfcGF0aCkKKyAgICAgICAgZmlsZXMgPSBz
Y20uY2hhbmdlZF9maWxlcyhzcXVhc2g9VHJ1ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCd0
ZXN0X2ZpbGVfY29tbWl0MicgaW4gZmlsZXMpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgndGVz
dF9maWxlX2NvbW1pdDEnIGluIGZpbGVzKQorCisgICAgZGVmIHRlc3RfY2hhbmdlZF9maWxlc19u
b3Rfc3F1YXNoZWQoc2VsZik6CisgICAgICAgIHNlbGYuX29uZV9sb2NhbF9jb21taXRfcGx1c193
b3JraW5nX2NvcHlfY2hhbmdlcygpCisgICAgICAgIHNjbSA9IGRldGVjdF9zY21fc3lzdGVtKHNl
bGYuZ2l0X2NoZWNrb3V0X3BhdGgpCisgICAgICAgIGZpbGVzID0gc2NtLmNoYW5nZWRfZmlsZXMo
c3F1YXNoPUZhbHNlKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoJ3Rlc3RfZmlsZV9jb21taXQy
JyBpbiBmaWxlcykKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSgndGVzdF9maWxlX2NvbW1pdDEn
IGluIGZpbGVzKQorCisgICAgZGVmIHRlc3RfY2hhbmdlZF9maWxlc19naXRfY29tbWl0KHNlbGYp
OgorICAgICAgICBzZWxmLl90d29fbG9jYWxfY29tbWl0cygpCisgICAgICAgIHNjbSA9IGRldGVj
dF9zY21fc3lzdGVtKHNlbGYuZ2l0X2NoZWNrb3V0X3BhdGgpCisgICAgICAgIGZpbGVzID0gc2Nt
LmNoYW5nZWRfZmlsZXMoZ2l0X2NvbW1pdD0iSEVBRF4iKQorICAgICAgICBzZWxmLmFzc2VydFRy
dWUoJ3Rlc3RfZmlsZV9jb21taXQxJyBpbiBmaWxlcykKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxz
ZSgndGVzdF9maWxlX2NvbW1pdDInIGluIGZpbGVzKQorCisgICAgZGVmIHRlc3RfY2hhbmdlZF9m
aWxlc19naXRfY29tbWl0X3JhbmdlKHNlbGYpOgorICAgICAgICBzZWxmLl90d29fbG9jYWxfY29t
bWl0cygpCisgICAgICAgIHNjbSA9IGRldGVjdF9zY21fc3lzdGVtKHNlbGYuZ2l0X2NoZWNrb3V0
X3BhdGgpCisgICAgICAgIGZpbGVzID0gc2NtLmNoYW5nZWRfZmlsZXMoZ2l0X2NvbW1pdD0iSEVB
RH4yLi5IRUFEIikKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCd0ZXN0X2ZpbGVfY29tbWl0MScg
aW4gZmlsZXMpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgndGVzdF9maWxlX2NvbW1pdDInIGlu
IGZpbGVzKQorCisgICAgZGVmIHRlc3RfY2hhbmdlZF9maWxlc19tdWx0aXBsZV9sb2NhbF9jb21t
aXRzX25vX3NxdWFzaChzZWxmKToKKyAgICAgICAgc2VsZi5fdHdvX2xvY2FsX2NvbW1pdHMoKQor
ICAgICAgICBzY20gPSBkZXRlY3Rfc2NtX3N5c3RlbShzZWxmLmdpdF9jaGVja291dF9wYXRoKQor
ICAgICAgICBmaWxlcyA9IHNjbS5jaGFuZ2VkX2ZpbGVzKHNxdWFzaD1GYWxzZSkKKyAgICAgICAg
IyBGSVhNRTogSXQncyB3ZWlyZCB0aGF0IHdpdGggc3F1YXNoPUZhbHNlLCBjcmVhdGVfcGF0Y2gv
Y2hhbmdlZF9maWxlcyBpZ25vcmVzIGxvY2FsIGNvbW1pdHMsCisgICAgICAgICMgYnV0IGNvbW1p
dF93aXRoX21lc3NhZ2UgY29tbWl0cyB0aGVtLgorICAgICAgICBzZWxmLmFzc2VydFRydWUobGVu
KGZpbGVzKSA9PSAwKQorCisgICAgZGVmIHRlc3RfY2hhbmdlZF9maWxlc19tdWx0aXBsZV9sb2Nh
bF9jb21taXRzX3NxdWFzaChzZWxmKToKKyAgICAgICAgc2VsZi5fdHdvX2xvY2FsX2NvbW1pdHMo
KQorICAgICAgICBzY20gPSBkZXRlY3Rfc2NtX3N5c3RlbShzZWxmLmdpdF9jaGVja291dF9wYXRo
KQorICAgICAgICBmaWxlcyA9IHNjbS5jaGFuZ2VkX2ZpbGVzKHNxdWFzaD1UcnVlKQorICAgICAg
ICBzZWxmLmFzc2VydFRydWUoJ3Rlc3RfZmlsZV9jb21taXQyJyBpbiBmaWxlcykKKyAgICAgICAg
c2VsZi5hc3NlcnRUcnVlKCd0ZXN0X2ZpbGVfY29tbWl0MScgaW4gZmlsZXMpCiAKICAgICBkZWYg
dGVzdF9jaGFuZ2VkX2ZpbGVzKHNlbGYpOgogICAgICAgICBzZWxmLl9zaGFyZWRfdGVzdF9jaGFu
Z2VkX2ZpbGVzKCkKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5
bGUvb3B0cGFyc2VyLnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9vcHRw
YXJzZXIucHkKaW5kZXggNTc2YzE2YS4uYmI0Nzg4YSAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMv
U2NyaXB0cy93ZWJraXRweS9zdHlsZS9vcHRwYXJzZXIucHkKKysrIGIvV2ViS2l0VG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9zdHlsZS9vcHRwYXJzZXIucHkKQEAgLTE0Nyw3ICsxNDcsOCBAQCBjbGFz
cyBDb21tYW5kT3B0aW9uVmFsdWVzKG9iamVjdCk6CiAgICAgICAgICAgICAgICAgIGdpdF9jb21t
aXQ9Tm9uZSwKICAgICAgICAgICAgICAgICAgaXNfdmVyYm9zZT1GYWxzZSwKICAgICAgICAgICAg
ICAgICAgbWluX2NvbmZpZGVuY2U9MSwKLSAgICAgICAgICAgICAgICAgb3V0cHV0X2Zvcm1hdD0i
ZW1hY3MiKToKKyAgICAgICAgICAgICAgICAgb3V0cHV0X2Zvcm1hdD0iZW1hY3MiLAorICAgICAg
ICAgICAgICAgICBzcXVhc2g9RmFsc2UpOgogICAgICAgICBpZiBmaWx0ZXJfcnVsZXMgaXMgTm9u
ZToKICAgICAgICAgICAgIGZpbHRlcl9ydWxlcyA9IFtdCiAKQEAgLTE2Niw2ICsxNjcsNyBAQCBj
bGFzcyBDb21tYW5kT3B0aW9uVmFsdWVzKG9iamVjdCk6CiAgICAgICAgIHNlbGYuaXNfdmVyYm9z
ZSA9IGlzX3ZlcmJvc2UKICAgICAgICAgc2VsZi5taW5fY29uZmlkZW5jZSA9IG1pbl9jb25maWRl
bmNlCiAgICAgICAgIHNlbGYub3V0cHV0X2Zvcm1hdCA9IG91dHB1dF9mb3JtYXQKKyAgICAgICAg
c2VsZi5zcXVhc2ggPSBzcXVhc2gKIAogICAgICMgVXNlZnVsIGZvciB1bml0IHRlc3RpbmcuCiAg
ICAgZGVmIF9fZXFfXyhzZWxmLCBvdGhlcik6CkBAIC0xODAsNiArMTgyLDggQEAgY2xhc3MgQ29t
bWFuZE9wdGlvblZhbHVlcyhvYmplY3QpOgogICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAgICAg
ICAgIGlmIHNlbGYub3V0cHV0X2Zvcm1hdCAhPSBvdGhlci5vdXRwdXRfZm9ybWF0OgogICAgICAg
ICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgIGlmIHNlbGYuc3F1YXNoICE9IG90aGVyLnNxdWFz
aDoKKyAgICAgICAgICAgIHJldHVybiBGYWxzZQogCiAgICAgICAgIHJldHVybiBUcnVlCiAKQEAg
LTIxNCw2ICsyMTgsOCBAQCBjbGFzcyBBcmd1bWVudFByaW50ZXIob2JqZWN0KToKICAgICAgICAg
ICAgIGZsYWdzWydmaWx0ZXInXSA9ICIsIi5qb2luKGZpbHRlcl9ydWxlcykKICAgICAgICAgaWYg
b3B0aW9ucy5naXRfY29tbWl0OgogICAgICAgICAgICAgZmxhZ3NbJ2dpdC1jb21taXQnXSA9IG9w
dGlvbnMuZ2l0X2NvbW1pdAorICAgICAgICBpZiBvcHRpb25zLnNxdWFzaDoKKyAgICAgICAgICAg
IGZsYWdzWydzcXVhc2gnXSA9IG9wdGlvbnMuc3F1YXNoCiAKICAgICAgICAgZmxhZ19zdHJpbmcg
PSAnJwogICAgICAgICAjIEFscGhhYmV0aXppbmcgbGV0cyB1cyB1bml0IHRlc3QgdGhpcyBtZXRo
b2QuCkBAIC0zMDMsOSArMzA5LDEwIEBAIGNsYXNzIEFyZ3VtZW50UGFyc2VyKG9iamVjdCk6CiAg
ICAgICAgIHBhcnNlci5hZGRfb3B0aW9uKCItZiIsICItLWZpbHRlci1ydWxlcyIsIG1ldGF2YXI9
IlJVTEVTIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdD0iZmlsdGVyX3ZhbHVlIiwg
aGVscD1maWx0ZXJfaGVscCkKIAotICAgICAgICBnaXRfaGVscCA9ICJjaGVjayBhbGwgY2hhbmdl
cyBhZnRlciB0aGUgZ2l2ZW4gZ2l0IGNvbW1pdC4iCi0gICAgICAgIHBhcnNlci5hZGRfb3B0aW9u
KCItZyIsICItLWdpdC1jb21taXQiLCAiLS1naXQtZGlmZiIsICItLWdpdC1zaW5jZSIsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgIG1ldGF2YXI9IkNPTU1JVCIsIGRlc3Q9ImdpdF9zaW5jZSIs
IGhlbHA9Z2l0X2hlbHAsKQorICAgICAgICBnaXRfY29tbWl0X2hlbHAgPSAoImNoZWNrIGFsbCBj
aGFuZ2VzIGluIHRoZSBnaXZlbiBnaXQgY29tbWl0LiAiCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAiVXNlICdjb21taXRfaWQuLicgdG8gY2hlY2sgYWxsIGNoYW5nZXMgYWZ0ZXIgY29tbW1p
dF9pZCIpCisgICAgICAgIHBhcnNlci5hZGRfb3B0aW9uKCItZyIsICItLWdpdC1kaWZmIiwgIi0t
Z2l0LWNvbW1pdCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGF2YXI9IkNPTU1JVCIs
IGRlc3Q9ImdpdF9jb21taXQiLCBoZWxwPWdpdF9jb21taXRfaGVscCwpCiAKICAgICAgICAgbWlu
X2NvbmZpZGVuY2VfaGVscCA9ICgic2V0IHRoZSBtaW5pbXVtIGNvbmZpZGVuY2Ugb2Ygc3R5bGUg
ZXJyb3JzICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidG8gcmVwb3J0LiAgQ2Fu
IGJlIGFuIGludGVnZXIgMS01LCB3aXRoIDEgIgpAQCAtMzIzLDYgKzMzMCwxNCBAQCBjbGFzcyBB
cmd1bWVudFBhcnNlcihvYmplY3QpOgogICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0PSJv
dXRwdXRfZm9ybWF0IiwgZGVmYXVsdD1kZWZhdWx0X291dHB1dF9mb3JtYXQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGhlbHA9b3V0cHV0X2Zvcm1hdF9oZWxwKQogCisgICAgICAgIHNxdWFz
aF9oZWxwID0gKCJBbGwgZGlmZnMgZnJvbSB0aGUgcmVtb3RlIGJyYW5jaCBhcmUgY2hlY2tlZC4i
CisgICAgICAgICAgICAgICAgICAgICAgICJJZiBleGNsdWRlZCwgcHJvbXB0cyB3aGV0aGVyIHRv
IHNxdWFzaCB3aGVuIHRoZXJlIGFyZSBtdWx0aXBsZSBjb21taXRzLiIpCisgICAgICAgIHBhcnNl
ci5hZGRfb3B0aW9uKCItcyIsICItLXNxdWFzaCIsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsIGRlc3Q9
InNxdWFzaCIsIGhlbHA9c3F1YXNoX2hlbHApCisKKyAgICAgICAgc3F1YXNoX2hlbHAgPSAoIk9u
bHkgd29ya2luZyBjb3B5IGRpZmZzIGFyZSBjaGVja2VkLiIKKyAgICAgICAgICAgICAgICAgICAg
ICAgIklmIGV4Y2x1ZGVkLCBwcm9tcHRzIHdoZXRoZXIgdG8gc3F1YXNoIHdoZW4gdGhlcmUgYXJl
IG11bHRpcGxlIGNvbW1pdHMuIikKKyAgICAgICAgcGFyc2VyLmFkZF9vcHRpb24oIi0tbm8tc3F1
YXNoIiwgYWN0aW9uPSJzdG9yZV9mYWxzZSIsIGRlc3Q9InNxdWFzaCIsIGhlbHA9c3F1YXNoX2hl
bHApCisKICAgICAgICAgdmVyYm9zZV9oZWxwID0gImVuYWJsZSB2ZXJib3NlIGxvZ2dpbmcuIgog
ICAgICAgICBwYXJzZXIuYWRkX29wdGlvbigiLXYiLCAiLS12ZXJib3NlIiwgZGVzdD0iaXNfdmVy
Ym9zZSIsIGRlZmF1bHQ9RmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbj0i
c3RvcmVfdHJ1ZSIsIGhlbHA9dmVyYm9zZV9oZWxwKQpAQCAtNDA3LDcgKzQyMiw3IEBAIGNsYXNz
IEFyZ3VtZW50UGFyc2VyKG9iamVjdCk6CiAgICAgICAgIChvcHRpb25zLCBwYXRocykgPSBzZWxm
Ll9wYXJzZXIucGFyc2VfYXJncyhhcmdzPWFyZ3MpCiAKICAgICAgICAgZmlsdGVyX3ZhbHVlID0g
b3B0aW9ucy5maWx0ZXJfdmFsdWUKLSAgICAgICAgZ2l0X2NvbW1pdCA9IG9wdGlvbnMuZ2l0X3Np
bmNlCisgICAgICAgIGdpdF9jb21taXQgPSBvcHRpb25zLmdpdF9jb21taXQKICAgICAgICAgaXNf
dmVyYm9zZSA9IG9wdGlvbnMuaXNfdmVyYm9zZQogICAgICAgICBtaW5fY29uZmlkZW5jZSA9IG9w
dGlvbnMubWluX2NvbmZpZGVuY2UKICAgICAgICAgb3V0cHV0X2Zvcm1hdCA9IG9wdGlvbnMub3V0
cHV0X2Zvcm1hdApAQCAtNDIzLDE0ICs0MzgsNiBAQCBjbGFzcyBBcmd1bWVudFBhcnNlcihvYmpl
Y3QpOgogICAgICAgICAgICAgc2VsZi5fcGFyc2VfZXJyb3IoJ1lvdSBjYW5ub3QgcHJvdmlkZSBi
b3RoIHBhdGhzIGFuZCBhIGdpdCAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY29t
bWl0IGF0IHRoZSBzYW1lIHRpbWUuJykKIAotICAgICAgICAjIEZJWE1FOiBBZGQgdW5pdCB0ZXN0
cy4KLSAgICAgICAgaWYgZ2l0X2NvbW1pdCBhbmQgJy4uJyBpbiBnaXRfY29tbWl0OgotICAgICAg
ICAgICAgIyBGSVhNRTogSWYgdGhlIHJhbmdlIGlzIGEgIi4uLiIsIHRoZSBjb2RlIHNob3VsZCBm
aW5kIHRoZSBjb21tb24KLSAgICAgICAgICAgICMgICAgICAgIGFuY2VzdG9yIGFuZCBzdGFydCB0
aGVyZS4gIFNlZSBnaXQgZGlmZiAtLWhlbHAgZm9yIGhvdwotICAgICAgICAgICAgIyAgICAgICAg
Ii4uLiIgdXN1YWxseSB3b3Jrcy4KLSAgICAgICAgICAgIHNlbGYuX3BhcnNlX2Vycm9yKCdpbnZh
bGlkIC0tZ2l0LWNvbW1pdCBvcHRpb246IG9wdGlvbiBkb2VzICcKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICdub3Qgc3VwcG9ydCByYW5nZXMgIi4uIjogJXMnICUgZ2l0X2NvbW1pdCkK
LQogICAgICAgICBtaW5fY29uZmlkZW5jZSA9IGludChtaW5fY29uZmlkZW5jZSkKICAgICAgICAg
aWYgKG1pbl9jb25maWRlbmNlIDwgMSkgb3IgKG1pbl9jb25maWRlbmNlID4gNSk6CiAgICAgICAg
ICAgICBzZWxmLl9wYXJzZV9lcnJvcignb3B0aW9uIC0tbWluLWNvbmZpZGVuY2U6IGludmFsaWQg
aW50ZWdlcjogJwpAQCAtNDUxLDcgKzQ1OCw4IEBAIGNsYXNzIEFyZ3VtZW50UGFyc2VyKG9iamVj
dCk6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdpdF9jb21taXQ9Z2l0
X2NvbW1pdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNfdmVyYm9z
ZT1pc192ZXJib3NlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaW5f
Y29uZmlkZW5jZT1taW5fY29uZmlkZW5jZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgb3V0cHV0X2Zvcm1hdD1vdXRwdXRfZm9ybWF0KQorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBvdXRwdXRfZm9ybWF0PW91dHB1dF9mb3JtYXQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNxdWFzaD1vcHRpb25zLnNxdWFzaCkKIAog
ICAgICAgICByZXR1cm4gKHBhdGhzLCBvcHRpb25zKQogCmRpZmYgLS1naXQgYS9XZWJLaXRUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL29wdHBhcnNlcl91bml0dGVzdC5weSBiL1dlYktpdFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvb3B0cGFyc2VyX3VuaXR0ZXN0LnB5CmluZGV4IDFj
NTI1YzYuLmI3ZTNlZGEgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkv
c3R5bGUvb3B0cGFyc2VyX3VuaXR0ZXN0LnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvc3R5bGUvb3B0cGFyc2VyX3VuaXR0ZXN0LnB5CkBAIC0xMTQsMTAgKzExNCw2IEBAIGNs
YXNzIEFyZ3VtZW50UGFyc2VyVGVzdChMb2dnaW5nVGVzdENhc2UpOgogICAgICAgICBzZWxmLmFz
c2VydFJhaXNlcyhTeXN0ZW1FeGl0LCBwYXJzZSwgWyctLWJhZCddKQogICAgICAgICBzZWxmLmFz
c2VydExvZyhbJ0VSUk9SOiBubyBzdWNoIG9wdGlvbjogLS1iYWRcbiddKQogCi0gICAgICAgIHNl
bGYuYXNzZXJ0UmFpc2VzKFN5c3RlbUV4aXQsIHBhcnNlLCBbJy0tZ2l0LWRpZmY9YWEuLmJiJ10p
Ci0gICAgICAgIHNlbGYuYXNzZXJ0TG9nKFsnRVJST1I6IGludmFsaWQgLS1naXQtY29tbWl0IG9w
dGlvbjogJwotICAgICAgICAgICAgICAgICAgICAgICAgJ29wdGlvbiBkb2VzIG5vdCBzdXBwb3J0
IHJhbmdlcyAiLi4iOiBhYS4uYmJcbiddKQotCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFN5
c3RlbUV4aXQsIHBhcnNlLCBbJy0tbWluLWNvbmZpZGVuY2U9YmFkJ10pCiAgICAgICAgIHNlbGYu
YXNzZXJ0TG9nKFsnRVJST1I6IG9wdGlvbiAtLW1pbi1jb25maWRlbmNlOiAnCiAgICAgICAgICAg
ICAgICAgICAgICAgICAiaW52YWxpZCBpbnRlZ2VyIHZhbHVlOiAnYmFkJ1xuIl0pCkBAIC0xNzMs
OCArMTY5LDYgQEAgY2xhc3MgQXJndW1lbnRQYXJzZXJUZXN0KExvZ2dpbmdUZXN0Q2FzZSk6CiAg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKG9wdGlvbnMuZ2l0X2NvbW1pdCwgJ2NvbW1pdCcpCiAg
ICAgICAgIChmaWxlcywgb3B0aW9ucykgPSBwYXJzZShbJy0tZ2l0LWRpZmY9Y29tbWl0J10pCiAg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKG9wdGlvbnMuZ2l0X2NvbW1pdCwgJ2NvbW1pdCcpCi0g
ICAgICAgIChmaWxlcywgb3B0aW9ucykgPSBwYXJzZShbJy0tZ2l0LXNpbmNlPWNvbW1pdCddKQot
ICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhvcHRpb25zLmdpdF9jb21taXQsICdjb21taXQnKQog
ICAgICAgICAoZmlsZXMsIG9wdGlvbnMpID0gcGFyc2UoWyctLXZlcmJvc2UnXSkKICAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbHMob3B0aW9ucy5pc192ZXJib3NlLCBUcnVlKQogCmRpZmYgLS1naXQg
YS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlX3JlZmVyZW5jZXMucHkgYi9XZWJL
aXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlX3JlZmVyZW5jZXMucHkKaW5kZXggYmEyODA2
ZS4uMWJmMDg3ZCAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHls
ZV9yZWZlcmVuY2VzLnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGVf
cmVmZXJlbmNlcy5weQpAQCAtNzUsOSArNzUsNiBAQCBjbGFzcyBXZWJLaXRDaGVja291dChvYmpl
Y3QpOgogICAgICAgICAiIiJSZXR1cm4gdGhlIGNoZWNrb3V0IHJvb3QgYXMgYW4gYWJzb2x1dGUg
cGF0aC4iIiIKICAgICAgICAgcmV0dXJuIHNlbGYuX3NjbS5jaGVja291dF9yb290CiAKLSAgICBk
ZWYgY3JlYXRlX3BhdGNoKHNlbGYpOgotICAgICAgICByZXR1cm4gc2VsZi5fc2NtLmNyZWF0ZV9w
YXRjaCgpCi0KLSAgICBkZWYgY3JlYXRlX3BhdGNoX3NpbmNlX2xvY2FsX2NvbW1pdChzZWxmLCBj
b21taXQpOgotICAgICAgICByZXR1cm4gc2VsZi5fc2NtLmNyZWF0ZV9wYXRjaF9zaW5jZV9sb2Nh
bF9jb21taXQoY29tbWl0KQorICAgIGRlZiBjcmVhdGVfcGF0Y2goc2VsZiwgZ2l0X2NvbW1pdCwg
c3F1YXNoKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX3NjbS5jcmVhdGVfcGF0Y2goZ2l0X2NvbW1p
dCwgc3F1YXNoKQogCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rv
b2wvY29tbWFuZHMvZG93bmxvYWQucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rv
b2wvY29tbWFuZHMvZG93bmxvYWQucHkKaW5kZXggZDk2MGJiZS4uOWRlZGFjMiAxMDA2NDQKLS0t
IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL2Rvd25sb2FkLnB5
CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9kb3dubG9h
ZC5weQpAQCAtOTQsNyArOTQsNyBAQCBJZiBhIGJ1ZyBpZCBpcyBwcm92aWRlZCwgb3Igb25lIGNh
biBiZSBmb3VuZCBpbiB0aGUgQ2hhbmdlTG9nIGxhbmQgd2lsbCB1cGRhdGUgdAogCiAgICAgZGVm
IF9wcmVwYXJlX3N0YXRlKHNlbGYsIG9wdGlvbnMsIGFyZ3MsIHRvb2wpOgogICAgICAgICByZXR1
cm4gewotICAgICAgICAgICAgImJ1Z19pZCIgOiAoYXJncyBhbmQgYXJnc1swXSkgb3IgdG9vbC5j
aGVja291dCgpLmJ1Z19pZF9mb3JfdGhpc19jb21taXQoKQorICAgICAgICAgICAgImJ1Z19pZCI6
IChhcmdzIGFuZCBhcmdzWzBdKSBvciB0b29sLmNoZWNrb3V0KCkuYnVnX2lkX2Zvcl90aGlzX2Nv
bW1pdChvcHRpb25zLmdpdF9jb21taXQsIG9wdGlvbnMuc3F1YXNoKSwKICAgICAgICAgfQogCiAK
ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy91
cGxvYWQucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvdXBs
b2FkLnB5CmluZGV4IGJkZjA2MGEuLmIzNGJhMWIgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy91cGxvYWQucHkKKysrIGIvV2ViS2l0VG9vbHMv
U2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL3VwbG9hZC5weQpAQCAtMTQxLDE2ICsxNDEs
MTYgQEAgY2xhc3MgT2Jzb2xldGVBdHRhY2htZW50cyhBYnN0cmFjdFNlcXVlbmNlZENvbW1hbmQp
OgogCiAKIGNsYXNzIEFic3RyYWN0UGF0Y2hVcGxvYWRpbmdDb21tYW5kKEFic3RyYWN0U2VxdWVu
Y2VkQ29tbWFuZCk6Ci0gICAgZGVmIF9idWdfaWQoc2VsZiwgYXJncywgdG9vbCwgc3RhdGUpOgor
ICAgIGRlZiBfYnVnX2lkKHNlbGYsIG9wdGlvbnMsIGFyZ3MsIHRvb2wsIHN0YXRlKToKICAgICAg
ICAgIyBQZXJmZXIgYSBidWcgaWQgcGFzc2VkIGFzIGFuIGFyZ3VtZW50IG92ZXIgYSBidWcgdXJs
IGluIHRoZSBkaWZmIChpLmUuIENoYW5nZUxvZ3MpLgogICAgICAgICBidWdfaWQgPSBhcmdzIGFu
ZCBhcmdzWzBdCiAgICAgICAgIGlmIG5vdCBidWdfaWQ6Ci0gICAgICAgICAgICBidWdfaWQgPSB0
b29sLmNoZWNrb3V0KCkuYnVnX2lkX2Zvcl90aGlzX2NvbW1pdCgpCisgICAgICAgICAgICBidWdf
aWQgPSB0b29sLmNoZWNrb3V0KCkuYnVnX2lkX2Zvcl90aGlzX2NvbW1pdChvcHRpb25zLmdpdF9j
b21taXQsIG9wdGlvbnMuc3F1YXNoKQogICAgICAgICByZXR1cm4gYnVnX2lkCiAKICAgICBkZWYg
X3ByZXBhcmVfc3RhdGUoc2VsZiwgb3B0aW9ucywgYXJncywgdG9vbCk6CiAgICAgICAgIHN0YXRl
ID0ge30KLSAgICAgICAgc3RhdGVbImJ1Z19pZCJdID0gc2VsZi5fYnVnX2lkKGFyZ3MsIHRvb2ws
IHN0YXRlKQorICAgICAgICBzdGF0ZVsiYnVnX2lkIl0gPSBzZWxmLl9idWdfaWQob3B0aW9ucywg
YXJncywgdG9vbCwgc3RhdGUpCiAgICAgICAgIGlmIG5vdCBzdGF0ZVsiYnVnX2lkIl06CiAgICAg
ICAgICAgICBlcnJvcigiTm8gYnVnIGlkIHBhc3NlZCBhbmQgbm8gYnVnIHVybCBmb3VuZCBpbiBD
aGFuZ2VMb2dzLiIpCiAgICAgICAgIHJldHVybiBzdGF0ZQpAQCAtMjIzLDcgKzIyMyw3IEBAIGNs
YXNzIFVwbG9hZChBYnN0cmFjdFBhdGNoVXBsb2FkaW5nQ29tbWFuZCk6CiAKICAgICBkZWYgX3By
ZXBhcmVfc3RhdGUoc2VsZiwgb3B0aW9ucywgYXJncywgdG9vbCk6CiAgICAgICAgIHN0YXRlID0g
e30KLSAgICAgICAgc3RhdGVbImJ1Z19pZCJdID0gc2VsZi5fYnVnX2lkKGFyZ3MsIHRvb2wsIHN0
YXRlKQorICAgICAgICBzdGF0ZVsiYnVnX2lkIl0gPSBzZWxmLl9idWdfaWQob3B0aW9ucywgYXJn
cywgdG9vbCwgc3RhdGUpCiAgICAgICAgIHJldHVybiBzdGF0ZQogCiAKQEAgLTI2MSw3ICsyNjEs
NyBAQCBjbGFzcyBQb3N0Q29tbWl0cyhBYnN0cmFjdERlY2xhcmF0aXZlQ29tbWFuZCk6CiAgICAg
ICAgIHJldHVybiBjb21tZW50X3RleHQKIAogICAgIGRlZiBfZGlmZl9maWxlX2Zvcl9jb21taXQo
c2VsZiwgdG9vbCwgY29tbWl0X2lkKToKLSAgICAgICAgZGlmZiA9IHRvb2wuc2NtKCkuY3JlYXRl
X3BhdGNoX2Zyb21fbG9jYWxfY29tbWl0KGNvbW1pdF9pZCkKKyAgICAgICAgZGlmZiA9IHRvb2wu
c2NtKCkuY3JlYXRlX3BhdGNoKGNvbW1pdF9pZCkKICAgICAgICAgcmV0dXJuIFN0cmluZ0lPLlN0
cmluZ0lPKGRpZmYpICMgYWRkX3BhdGNoX3RvX2J1ZyBleHBlY3RzIGEgZmlsZS1saWtlIG9iamVj
dAogCiAgICAgZGVmIGV4ZWN1dGUoc2VsZiwgb3B0aW9ucywgYXJncywgdG9vbCk6CkBAIC0yNzQs
NyArMjc0LDcgQEAgY2xhc3MgUG9zdENvbW1pdHMoQWJzdHJhY3REZWNsYXJhdGl2ZUNvbW1hbmQp
OgogICAgICAgICAgICAgY29tbWl0X21lc3NhZ2UgPSB0b29sLnNjbSgpLmNvbW1pdF9tZXNzYWdl
X2Zvcl9sb2NhbF9jb21taXQoY29tbWl0X2lkKQogCiAgICAgICAgICAgICAjIFByZWZlciAtLWJ1
Zy1pZD0sIHRoZW4gYSBidWcgdXJsIGluIHRoZSBjb21taXQgbWVzc2FnZSwgdGhlbiBhIGJ1ZyB1
cmwgaW4gdGhlIGVudGlyZSBjb21taXQgZGlmZiAoaS5lLiBDaGFuZ2VMb2dzKS4KLSAgICAgICAg
ICAgIGJ1Z19pZCA9IG9wdGlvbnMuYnVnX2lkIG9yIHBhcnNlX2J1Z19pZChjb21taXRfbWVzc2Fn
ZS5tZXNzYWdlKCkpIG9yIHBhcnNlX2J1Z19pZCh0b29sLnNjbSgpLmNyZWF0ZV9wYXRjaF9mcm9t
X2xvY2FsX2NvbW1pdChjb21taXRfaWQpKQorICAgICAgICAgICAgYnVnX2lkID0gb3B0aW9ucy5i
dWdfaWQgb3IgcGFyc2VfYnVnX2lkKGNvbW1pdF9tZXNzYWdlLm1lc3NhZ2UoKSkgb3IgcGFyc2Vf
YnVnX2lkKHRvb2wuc2NtKCkuY3JlYXRlX3BhdGNoKGNvbW1pdF9pZCkpCiAgICAgICAgICAgICBp
ZiBub3QgYnVnX2lkOgogICAgICAgICAgICAgICAgIGxvZygiU2tpcHBpbmcgJXM6IE5vIGJ1ZyBp
ZCBmb3VuZCBpbiBjb21taXQgb3Igc3BlY2lmaWVkIHdpdGggLS1idWctaWQuIiAlIGNvbW1pdF9p
ZCkKICAgICAgICAgICAgICAgICBjb250aW51ZQpAQCAtNDAzLDcgKzQwMyw3IEBAIGNsYXNzIENy
ZWF0ZUJ1ZyhBYnN0cmFjdERlY2xhcmF0aXZlQ29tbWFuZCk6CiAgICAgICAgICAgICBjb21tZW50
X3RleHQgKz0gIi0tLVxuIgogICAgICAgICAgICAgY29tbWVudF90ZXh0ICs9IHRvb2wuc2NtKCku
ZmlsZXNfY2hhbmdlZF9zdW1tYXJ5X2Zvcl9jb21taXQoY29tbWl0X2lkKQogCi0gICAgICAgIGRp
ZmYgPSB0b29sLnNjbSgpLmNyZWF0ZV9wYXRjaF9mcm9tX2xvY2FsX2NvbW1pdChjb21taXRfaWQp
CisgICAgICAgIGRpZmYgPSB0b29sLnNjbSgpLmNyZWF0ZV9wYXRjaChjb21taXRfaWQpCiAgICAg
ICAgIGRpZmZfZmlsZSA9IFN0cmluZ0lPLlN0cmluZ0lPKGRpZmYpICMgY3JlYXRlX2J1ZyBleHBl
Y3RzIGEgZmlsZS1saWtlIG9iamVjdAogICAgICAgICBidWdfaWQgPSB0b29sLmJ1Z3MuY3JlYXRl
X2J1ZyhidWdfdGl0bGUsIGNvbW1lbnRfdGV4dCwgb3B0aW9ucy5jb21wb25lbnQsIGRpZmZfZmls
ZSwgIlBhdGNoIiwgY2M9b3B0aW9ucy5jYywgbWFya19mb3JfcmV2aWV3PW9wdGlvbnMucmV2aWV3
LCBtYXJrX2Zvcl9jb21taXRfcXVldWU9b3B0aW9ucy5yZXF1ZXN0X2NvbW1pdCkKIApAQCAtNDE5
LDExICs0MTksMTEgQEAgY2xhc3MgQ3JlYXRlQnVnKEFic3RyYWN0RGVjbGFyYXRpdmVDb21tYW5k
KToKICAgICAgICAgaWYgb3B0aW9ucy5wcm9tcHQ6CiAgICAgICAgICAgICAoYnVnX3RpdGxlLCBj
b21tZW50X3RleHQpID0gc2VsZi5wcm9tcHRfZm9yX2J1Z190aXRsZV9hbmRfY29tbWVudCgpCiAg
ICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBjb21taXRfbWVzc2FnZSA9IHRvb2wuY2hlY2tvdXQo
KS5jb21taXRfbWVzc2FnZV9mb3JfdGhpc19jb21taXQoKQorICAgICAgICAgICAgY29tbWl0X21l
c3NhZ2UgPSB0b29sLmNoZWNrb3V0KCkuY29tbWl0X21lc3NhZ2VfZm9yX3RoaXNfY29tbWl0KG9w
dGlvbnMuZ2l0X2NvbW1pdCwgb3B0aW9ucy5zcXVhc2gpCiAgICAgICAgICAgICBidWdfdGl0bGUg
PSBjb21taXRfbWVzc2FnZS5kZXNjcmlwdGlvbihsc3RyaXA9VHJ1ZSwgc3RyaXBfdXJsPVRydWUp
CiAgICAgICAgICAgICBjb21tZW50X3RleHQgPSBjb21taXRfbWVzc2FnZS5ib2R5KGxzdHJpcD1U
cnVlKQogCi0gICAgICAgIGRpZmYgPSB0b29sLnNjbSgpLmNyZWF0ZV9wYXRjaCgpCisgICAgICAg
IGRpZmYgPSB0b29sLnNjbSgpLmNyZWF0ZV9wYXRjaChvcHRpb25zLmdpdF9jb21taXQsIG9wdGlv
bnMuc3F1YXNoKQogICAgICAgICBkaWZmX2ZpbGUgPSBTdHJpbmdJTy5TdHJpbmdJTyhkaWZmKSAj
IGNyZWF0ZV9idWcgZXhwZWN0cyBhIGZpbGUtbGlrZSBvYmplY3QKICAgICAgICAgYnVnX2lkID0g
dG9vbC5idWdzLmNyZWF0ZV9idWcoYnVnX3RpdGxlLCBjb21tZW50X3RleHQsIG9wdGlvbnMuY29t
cG9uZW50LCBkaWZmX2ZpbGUsICJQYXRjaCIsIGNjPW9wdGlvbnMuY2MsIG1hcmtfZm9yX3Jldmll
dz1vcHRpb25zLnJldmlldywgbWFya19mb3JfY29tbWl0X3F1ZXVlPW9wdGlvbnMucmVxdWVzdF9j
b21taXQpCiAKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9t
YWluLnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL21haW4ucHkKaW5kZXgg
ZGQ3NjUyZC4uNjE4NjY1MyAxMDA3NTUKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRw
eS90b29sL21haW4ucHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL21h
aW4ucHkKQEAgLTEyMCw2ICsxMjAsNyBAQCBjbGFzcyBXZWJLaXRQYXRjaChNdWx0aUNvbW1hbmRU
b29sKToKIAogICAgICMgRklYTUU6IFRoaXMgbWF5IGJlIHVubmVjZXNzYXJ5IHNpbmNlIHdlIHBh
c3MgZ2xvYmFsIG9wdGlvbnMgdG8gYWxsIGNvbW1hbmRzIGR1cmluZyBleGVjdXRlKCkgYXMgd2Vs
bC4KICAgICBkZWYgaGFuZGxlX2dsb2JhbF9vcHRpb25zKHNlbGYsIG9wdGlvbnMpOgorICAgICAg
ICBzZWxmLl9vcHRpb25zID0gb3B0aW9ucwogICAgICAgICBpZiBvcHRpb25zLmRyeV9ydW46CiAg
ICAgICAgICAgICBzZWxmLnNjbSgpLmRyeXJ1biA9IFRydWUKICAgICAgICAgICAgIHNlbGYuYnVn
cy5kcnlydW4gPSBUcnVlCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5
L3Rvb2wvbW9ja3Rvb2wucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvbW9j
a3Rvb2wucHkKaW5kZXggYzU2YzUzZS4uNDE3M2FjZCAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMv
U2NyaXB0cy93ZWJraXRweS90b29sL21vY2t0b29sLnB5CisrKyBiL1dlYktpdFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvdG9vbC9tb2NrdG9vbC5weQpAQCAtMzgxLDcgKzM4MSw3IEBAIGNsYXNzIE1v
Y2tTQ00oTW9jayk6CiAgICAgICAgICMgd2lsbCBhY3R1YWxseSBiZSB0aGUgcm9vdC4gIFNpbmNl
IGdldGN3ZCgpIGlzIHdyb25nLCB1c2UgYSBnbG9iYWxseSBmYWtlIHJvb3QgZm9yIG5vdy4KICAg
ICAgICAgc2VsZi5jaGVja291dF9yb290ID0gc2VsZi5mYWtlX2NoZWNrb3V0X3Jvb3QKIAotICAg
IGRlZiBjcmVhdGVfcGF0Y2goc2VsZik6CisgICAgZGVmIGNyZWF0ZV9wYXRjaChzZWxmLCBnaXRf
Y29tbWl0LCBzcXVhc2gpOgogICAgICAgICByZXR1cm4gIlBhdGNoMSIKIAogICAgIGRlZiBjb21t
aXRfaWRzX2Zyb21fY29tbWl0aXNoX2FyZ3VtZW50cyhzZWxmLCBhcmdzKToKQEAgLTM5NiwxMyAr
Mzk2LDYgQEAgY2xhc3MgTW9ja1NDTShNb2NrKToKICAgICAgICAgICAgICAgICAiaHR0cHM6Ly9i
dWdzLmV4YW1wbGUub3JnL3Nob3dfYnVnLmNnaT9pZD03NVxuIikKICAgICAgICAgcmFpc2UgRXhj
ZXB0aW9uKCJCb2d1cyBjb21taXRfaWQgaW4gY29tbWl0X21lc3NhZ2VfZm9yX2xvY2FsX2NvbW1p
dC4iKQogCi0gICAgZGVmIGNyZWF0ZV9wYXRjaF9mcm9tX2xvY2FsX2NvbW1pdChzZWxmLCBjb21t
aXRfaWQpOgotICAgICAgICBpZiBjb21taXRfaWQgPT0gIkNvbW1pdGlzaDEiOgotICAgICAgICAg
ICAgcmV0dXJuICJQYXRjaDEiCi0gICAgICAgIGlmIGNvbW1pdF9pZCA9PSAiQ29tbWl0aXNoMiI6
Ci0gICAgICAgICAgICByZXR1cm4gIlBhdGNoMiIKLSAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCJC
b2d1cyBjb21taXRfaWQgaW4gY29tbWl0X21lc3NhZ2VfZm9yX2xvY2FsX2NvbW1pdC4iKQotCiAg
ICAgZGVmIGRpZmZfZm9yX3JldmlzaW9uKHNlbGYsIHJldmlzaW9uKToKICAgICAgICAgcmV0dXJu
ICJEaWZmRm9yUmV2aXNpb24lc1xuIiBcCiAgICAgICAgICAgICAgICAiaHR0cDovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIzNDUiICUgcmV2aXNpb24KQEAgLTQyOCwxMiArNDIx
LDEyIEBAIGNsYXNzIE1vY2tDaGVja291dChvYmplY3QpOgogICAgIGRlZiBidWdfaWRfZm9yX3Jl
dmlzaW9uKHNlbGYsIHN2bl9yZXZpc2lvbik6CiAgICAgICAgIHJldHVybiAxMjM0NQogCi0gICAg
ZGVmIG1vZGlmaWVkX2NoYW5nZWxvZ3Moc2VsZik6CisgICAgZGVmIG1vZGlmaWVkX2NoYW5nZWxv
Z3Moc2VsZiwgZ2l0X2NvbW1pdCwgc3F1YXNoKToKICAgICAgICAgIyBJZGVhbGx5IHdlJ2QgcmV0
dXJuIHNvbWV0aGluZyBtb3JlIGludGVyZXN0aW5nIGhlcmUuICBUaGUgcHJvYmxlbSBpcwogICAg
ICAgICAjIHRoYXQgTGFuZERpZmYgd2lsbCB0cnkgdG8gYWN0dWFsbHkgcmVhZCB0aGUgcGF0Y2gg
ZnJvbSBkaXNrIQogICAgICAgICByZXR1cm4gW10KIAotICAgIGRlZiBjb21taXRfbWVzc2FnZV9m
b3JfdGhpc19jb21taXQoc2VsZik6CisgICAgZGVmIGNvbW1pdF9tZXNzYWdlX2Zvcl90aGlzX2Nv
bW1pdChzZWxmLCBnaXRfY29tbWl0LCBzcXVhc2gpOgogICAgICAgICBjb21taXRfbWVzc2FnZSA9
IE1vY2soKQogICAgICAgICBjb21taXRfbWVzc2FnZS5tZXNzYWdlID0gbGFtYmRhOiJUaGlzIGlz
IGEgZmFrZSBjb21taXQgbWVzc2FnZSB0aGF0IGlzIGF0IGxlYXN0IDUwIGNoYXJhY3RlcnMuIgog
ICAgICAgICByZXR1cm4gY29tbWl0X21lc3NhZ2UKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9hYnN0cmFjdHN0ZXAucHkgYi9XZWJLaXRUb29scy9T
Y3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvYWJzdHJhY3RzdGVwLnB5CmluZGV4IDFhZDM0M2Qu
LjhlODNiNGIgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9z
dGVwcy9hYnN0cmFjdHN0ZXAucHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90
b29sL3N0ZXBzL2Fic3RyYWN0c3RlcC5weQpAQCAtMzYsMTAgKzM2LDEzIEBAIGNsYXNzIEFic3Ry
YWN0U3RlcChvYmplY3QpOgogICAgICAgICBzZWxmLl9vcHRpb25zID0gb3B0aW9ucwogICAgICAg
ICBzZWxmLl9wb3J0ID0gTm9uZQogCi0gICAgZGVmIF9ydW5fc2NyaXB0KHNlbGYsIHNjcmlwdF9u
YW1lLCBxdWlldD1GYWxzZSwgcG9ydD1XZWJLaXRQb3J0KToKKyAgICBkZWYgX3J1bl9zY3JpcHQo
c2VsZiwgc2NyaXB0X25hbWUsIGFyZ3M9Tm9uZSwgcXVpZXQ9RmFsc2UsIHBvcnQ9V2ViS2l0UG9y
dCk6CiAgICAgICAgIGxvZygiUnVubmluZyAlcyIgJSBzY3JpcHRfbmFtZSkKICAgICAgICAgIyBG
SVhNRTogVGhpcyBzaG91bGQgdXNlIHNlbGYucG9ydCgpCi0gICAgICAgIHNlbGYuX3Rvb2wuZXhl
Y3V0aXZlLnJ1bl9hbmRfdGhyb3dfaWZfZmFpbChwb3J0LnNjcmlwdF9wYXRoKHNjcmlwdF9uYW1l
KSwgcXVpZXQpCisgICAgICAgIGNvbW1hbmQgPSBbcG9ydC5zY3JpcHRfcGF0aChzY3JpcHRfbmFt
ZSldCisgICAgICAgIGlmIGFyZ3M6CisgICAgICAgICAgICBjb21tYW5kLmV4dGVuZChhcmdzKQor
ICAgICAgICBzZWxmLl90b29sLmV4ZWN1dGl2ZS5ydW5fYW5kX3Rocm93X2lmX2ZhaWwoY29tbWFu
ZCwgcXVpZXQpCiAKICAgICAjIEZJWE1FOiBUaGUgcG9ydCBzaG91bGQgbGl2ZSBvbiB0aGUgdG9v
bC4KICAgICBkZWYgcG9ydChzZWxmKToKQEAgLTQ5LDggKzUyLDggQEAgY2xhc3MgQWJzdHJhY3RT
dGVwKG9iamVjdCk6CiAgICAgICAgIHJldHVybiBzZWxmLl9wb3J0CiAKICAgICBfd2VsbF9rbm93
bl9rZXlzID0gewotICAgICAgICAiZGlmZiIgOiBsYW1iZGEgc2VsZjogc2VsZi5fdG9vbC5zY20o
KS5jcmVhdGVfcGF0Y2goKSwKLSAgICAgICAgImNoYW5nZWxvZ3MiIDogbGFtYmRhIHNlbGY6IHNl
bGYuX3Rvb2wuY2hlY2tvdXQoKS5tb2RpZmllZF9jaGFuZ2Vsb2dzKCksCisgICAgICAgICJkaWZm
IjogbGFtYmRhIHNlbGY6IHNlbGYuX3Rvb2wuc2NtKCkuY3JlYXRlX3BhdGNoKHNlbGYuX29wdGlv
bnMuZ2l0X2NvbW1pdCwgc2VsZi5fb3B0aW9ucy5zcXVhc2gpLAorICAgICAgICAiY2hhbmdlbG9n
cyI6IGxhbWJkYSBzZWxmOiBzZWxmLl90b29sLmNoZWNrb3V0KCkubW9kaWZpZWRfY2hhbmdlbG9n
cyhzZWxmLl9vcHRpb25zLmdpdF9jb21taXQsIHNlbGYuX29wdGlvbnMuc3F1YXNoKSwKICAgICB9
CiAKICAgICBkZWYgY2FjaGVkX2xvb2t1cChzZWxmLCBzdGF0ZSwga2V5LCBwcm9taXNlPU5vbmUp
OgpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL2Fw
cGx5cGF0Y2h3aXRobG9jYWxjb21taXQucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5
L3Rvb2wvc3RlcHMvYXBwbHlwYXRjaHdpdGhsb2NhbGNvbW1pdC5weQppbmRleCA3MGRkZmU1Li5m
ZjA5MmIwIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3Rl
cHMvYXBwbHlwYXRjaHdpdGhsb2NhbGNvbW1pdC5weQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRz
L3dlYmtpdHB5L3Rvb2wvc3RlcHMvYXBwbHlwYXRjaHdpdGhsb2NhbGNvbW1pdC5weQpAQCAtMzks
NSArMzksNSBAQCBjbGFzcyBBcHBseVBhdGNoV2l0aExvY2FsQ29tbWl0KEFwcGx5UGF0Y2gpOgog
ICAgIGRlZiBydW4oc2VsZiwgc3RhdGUpOgogICAgICAgICBBcHBseVBhdGNoLnJ1bihzZWxmLCBz
dGF0ZSkKICAgICAgICAgaWYgc2VsZi5fb3B0aW9ucy5sb2NhbF9jb21taXQ6Ci0gICAgICAgICAg
ICBjb21taXRfbWVzc2FnZSA9IHNlbGYuX3Rvb2wuY2hlY2tvdXQoKS5jb21taXRfbWVzc2FnZV9m
b3JfdGhpc19jb21taXQoKQorICAgICAgICAgICAgY29tbWl0X21lc3NhZ2UgPSBzZWxmLl90b29s
LmNoZWNrb3V0KCkuY29tbWl0X21lc3NhZ2VfZm9yX3RoaXNfY29tbWl0KGdpdF9jb21taXQ9Tm9u
ZSwgc3F1YXNoPUZhbHNlKQogICAgICAgICAgICAgc2VsZi5fdG9vbC5zY20oKS5jb21taXRfbG9j
YWxseV93aXRoX21lc3NhZ2UoY29tbWl0X21lc3NhZ2UubWVzc2FnZSgpIG9yIHN0YXRlWyJwYXRj
aCJdLm5hbWUoKSkKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9v
bC9zdGVwcy9jaGVja3N0eWxlLnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29s
L3N0ZXBzL2NoZWNrc3R5bGUucHkKaW5kZXggNjNmMDExNC4uMDdjZTljZiAxMDA2NDQKLS0tIGEv
V2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL2NoZWNrc3R5bGUucHkKKysr
IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL2NoZWNrc3R5bGUucHkK
QEAgLTM5LDYgKzM5LDkgQEAgY2xhc3MgQ2hlY2tTdHlsZShBYnN0cmFjdFN0ZXApOgogICAgICAg
ICByZXR1cm4gWwogICAgICAgICAgICAgT3B0aW9ucy5ub25faW50ZXJhY3RpdmUsCiAgICAgICAg
ICAgICBPcHRpb25zLmNoZWNrX3N0eWxlLAorICAgICAgICAgICAgT3B0aW9ucy5naXRfY29tbWl0
LAorICAgICAgICAgICAgT3B0aW9ucy5ub19zcXVhc2gsCisgICAgICAgICAgICBPcHRpb25zLnNx
dWFzaCwKICAgICAgICAgXQogCiAgICAgZGVmIHJ1bihzZWxmLCBzdGF0ZSk6CkBAIC00Niw3ICs0
OSwxNiBAQCBjbGFzcyBDaGVja1N0eWxlKEFic3RyYWN0U3RlcCk6CiAgICAgICAgICAgICByZXR1
cm4KICAgICAgICAgb3MuY2hkaXIoc2VsZi5fdG9vbC5zY20oKS5jaGVja291dF9yb290KQogICAg
ICAgICB0cnk6Ci0gICAgICAgICAgICBzZWxmLl9ydW5fc2NyaXB0KCJjaGVjay13ZWJraXQtc3R5
bGUiKQorICAgICAgICAgICAgYXJncyA9IFtdCisgICAgICAgICAgICBpZiBzZWxmLl9vcHRpb25z
LmdpdF9jb21taXQ6CisgICAgICAgICAgICAgICAgYXJncy5hcHBlbmQoIi0tZ2l0LWNvbW1pdCIp
CisgICAgICAgICAgICAgICAgYXJncy5hcHBlbmQoc2VsZi5fb3B0aW9ucy5naXRfY29tbWl0KQor
ICAgICAgICAgICAgaWYgc2VsZi5fdG9vbC5zY20oKS5zaG91bGRfc3F1YXNoKHNlbGYuX29wdGlv
bnMuc3F1YXNoKToKKyAgICAgICAgICAgICAgICBhcmdzLmFwcGVuZCgiLS1zcXVhc2giKQorICAg
ICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBhcmdzLmFwcGVuZCgiLS1uby1zcXVhc2gi
KQorCisgICAgICAgICAgICBzZWxmLl9ydW5fc2NyaXB0KCJjaGVjay13ZWJraXQtc3R5bGUiLCBh
cmdzKQogICAgICAgICBleGNlcHQgU2NyaXB0RXJyb3IsIGU6CiAgICAgICAgICAgICBpZiBzZWxm
Ll9vcHRpb25zLm5vbl9pbnRlcmFjdGl2ZToKICAgICAgICAgICAgICAgICAjIFdlIG5lZWQgdG8g
cmUtcmFpc2UgdGhlIGV4Y2VwdGlvbiBoZXJlIHRvIGhhdmUgdGhlCmRpZmYgLS1naXQgYS9XZWJL
aXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvY29tbWl0LnB5IGIvV2ViS2l0VG9v
bHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL2NvbW1pdC5weQppbmRleCAyOTRiNDFlLi5h
YmI3NTIyIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3Rl
cHMvY29tbWl0LnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVw
cy9jb21taXQucHkKQEAgLTI3LDExICsyNywyMSBAQAogIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCiBmcm9tIHdl
YmtpdHB5LnRvb2wuc3RlcHMuYWJzdHJhY3RzdGVwIGltcG9ydCBBYnN0cmFjdFN0ZXAKK2Zyb20g
d2Via2l0cHkudG9vbC5zdGVwcy5vcHRpb25zIGltcG9ydCBPcHRpb25zCiAKIAogY2xhc3MgQ29t
bWl0KEFic3RyYWN0U3RlcCk6CisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIG9wdGlvbnMoY2xz
KToKKyAgICAgICAgcmV0dXJuIFsKKyAgICAgICAgICAgIE9wdGlvbnMuZ2l0X2NvbW1pdCwKKyAg
ICAgICAgICAgIE9wdGlvbnMubm9fc3F1YXNoLAorICAgICAgICAgICAgT3B0aW9ucy5zcXVhc2gs
CisgICAgICAgIF0KKwogICAgIGRlZiBydW4oc2VsZiwgc3RhdGUpOgotICAgICAgICBjb21taXRf
bWVzc2FnZSA9IHNlbGYuX3Rvb2wuY2hlY2tvdXQoKS5jb21taXRfbWVzc2FnZV9mb3JfdGhpc19j
b21taXQoKQorICAgICAgICBjb21taXRfbWVzc2FnZSA9IHNlbGYuX3Rvb2wuY2hlY2tvdXQoKS5j
b21taXRfbWVzc2FnZV9mb3JfdGhpc19jb21taXQoc2VsZi5fb3B0aW9ucy5naXRfY29tbWl0LCBz
ZWxmLl9vcHRpb25zLnNxdWFzaCkKICAgICAgICAgaWYgbGVuKGNvbW1pdF9tZXNzYWdlLm1lc3Nh
Z2UoKSkgPCA1MDoKICAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiQXR0ZW1wdGVkIHRvIGNv
bW1pdCB3aXRoIGEgY29tbWl0IG1lc3NhZ2Ugc2hvcnRlciB0aGFuIDUwIGNoYXJhY3RlcnMuICBF
aXRoZXIgeW91ciBwYXRjaCBpcyBtaXNzaW5nIGEgQ2hhbmdlTG9nIG9yIHdlYmtpdC1wYXRjaCBt
YXkgaGF2ZSBhIGJ1Zy4iKQotICAgICAgICBzdGF0ZVsiY29tbWl0X3RleHQiXSA9ICBzZWxmLl90
b29sLnNjbSgpLmNvbW1pdF93aXRoX21lc3NhZ2UoY29tbWl0X21lc3NhZ2UubWVzc2FnZSgpKQor
ICAgICAgICBzdGF0ZVsiY29tbWl0X3RleHQiXSA9IHNlbGYuX3Rvb2wuc2NtKCkuY29tbWl0X3dp
dGhfbWVzc2FnZShjb21taXRfbWVzc2FnZS5tZXNzYWdlKCksCisgICAgICAgICAgICBnaXRfY29t
bWl0PXNlbGYuX29wdGlvbnMuZ2l0X2NvbW1pdCwgc3F1YXNoPXNlbGYuX29wdGlvbnMuc3F1YXNo
KQpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL29w
dGlvbnMucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvb3B0aW9u
cy5weQppbmRleCA3Zjc2ZjU1Li41MjRhMjUyIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvb3B0aW9ucy5weQorKysgYi9XZWJLaXRUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvb3B0aW9ucy5weQpAQCAtNDIsNyArNDIsMTAgQEAgY2xh
c3MgT3B0aW9ucyhvYmplY3QpOgogICAgIGVtYWlsID0gbWFrZV9vcHRpb24oIi0tZW1haWwiLCBh
Y3Rpb249InN0b3JlIiwgdHlwZT0ic3RyaW5nIiwgZGVzdD0iZW1haWwiLCBoZWxwPSJFbWFpbCBh
ZGRyZXNzIHRvIHVzZSBpbiBDaGFuZ2VMb2dzLiIpCiAgICAgZmFuY3lfcmV2aWV3ID0gbWFrZV9v
cHRpb24oIi0tZmFuY3ktcmV2aWV3IiwgYWN0aW9uPSJzdG9yZV90cnVlIiwgZGVzdD0iZmFuY3lf
cmV2aWV3IiwgZGVmYXVsdD1GYWxzZSwgaGVscD0iKEV4cGVyaW1lbnRhbCkgVXBsb2FkIHRoZSBw
YXRjaCB0byBSaWV0dmVsZCBjb2RlIHJldmlldyB0b29sLiIpCiAgICAgZm9yY2VfY2xlYW4gPSBt
YWtlX29wdGlvbigiLS1mb3JjZS1jbGVhbiIsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsIGRlc3Q9ImZv
cmNlX2NsZWFuIiwgZGVmYXVsdD1GYWxzZSwgaGVscD0iQ2xlYW4gd29ya2luZyBkaXJlY3Rvcnkg
YmVmb3JlIGFwcGx5aW5nIHBhdGNoZXMgKHJlbW92ZXMgbG9jYWwgY2hhbmdlcyBhbmQgY29tbWl0
cykiKQorIyBGSVhNRTogTWFrZSBjb21taXQgcmFuZ2VzIHRyZWF0IGVhY2ggY29tbWl0IHNlcGFy
YXRlbHkgaW5zdGVhZCBvZiBzcXVhc2hpbmcgdGhlbSBpbnRvIG9uZS4KKyAgICBnaXRfY29tbWl0
ID0gbWFrZV9vcHRpb24oIi0tZ2l0LWNvbW1pdCIsIGFjdGlvbj0ic3RvcmUiLCBkZXN0PSJnaXRf
Y29tbWl0IiwgaGVscD0iTG9jYWwgZ2l0IGNvbW1pdCB0byB1cGxvYWQvbGFuZC4gSWYgYSByYW5n
ZSwgdGhlIGNvbW1pdHMgYXJlIHNxdWFzaGVkIGludG8gb25lLiIpCiAgICAgbG9jYWxfY29tbWl0
ID0gbWFrZV9vcHRpb24oIi0tbG9jYWwtY29tbWl0IiwgYWN0aW9uPSJzdG9yZV90cnVlIiwgZGVz
dD0ibG9jYWxfY29tbWl0IiwgZGVmYXVsdD1GYWxzZSwgaGVscD0iTWFrZSBhIGxvY2FsIGNvbW1p
dCBmb3IgZWFjaCBhcHBsaWVkIHBhdGNoIikKKyAgICBub19zcXVhc2ggPSBtYWtlX29wdGlvbigi
LS1uby1zcXVhc2giLCBhY3Rpb249InN0b3JlX2ZhbHNlIiwgZGVzdD0ic3F1YXNoIiwgaGVscD0i
RG9uJ3Qgc3F1YXNoIGxvY2FsIGNvbW1pdHMgaW50byBvbmUgb24gdXBsb2FkL2xhbmQgKGdpdC1v
bmx5KS4iKQogICAgIG5vbl9pbnRlcmFjdGl2ZSA9IG1ha2Vfb3B0aW9uKCItLW5vbi1pbnRlcmFj
dGl2ZSIsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsIGRlc3Q9Im5vbl9pbnRlcmFjdGl2ZSIsIGRlZmF1
bHQ9RmFsc2UsIGhlbHA9Ik5ldmVyIHByb21wdCB0aGUgdXNlciwgZmFpbCBhcyBmYXN0IGFzIHBv
c3NpYmxlLiIpCiAgICAgb2Jzb2xldGVfcGF0Y2hlcyA9IG1ha2Vfb3B0aW9uKCItLW5vLW9ic29s
ZXRlIiwgYWN0aW9uPSJzdG9yZV9mYWxzZSIsIGRlc3Q9Im9ic29sZXRlX3BhdGNoZXMiLCBkZWZh
dWx0PVRydWUsIGhlbHA9IkRvIG5vdCBvYnNvbGV0ZSBvbGQgcGF0Y2hlcyBiZWZvcmUgcG9zdGlu
ZyB0aGlzIG9uZS4iKQogICAgIG9wZW5fYnVnID0gbWFrZV9vcHRpb24oIi0tb3Blbi1idWciLCBh
Y3Rpb249InN0b3JlX3RydWUiLCBkZXN0PSJvcGVuX2J1ZyIsIGRlZmF1bHQ9RmFsc2UsIGhlbHA9
Ik9wZW5zIHRoZSBhc3NvY2lhdGVkIGJ1ZyBpbiBhIGJyb3dzZXIuIikKQEAgLTUyLDUgKzU1LDYg
QEAgY2xhc3MgT3B0aW9ucyhvYmplY3QpOgogICAgIHJlcXVlc3RfY29tbWl0ID0gbWFrZV9vcHRp
b24oIi0tcmVxdWVzdC1jb21taXQiLCBhY3Rpb249InN0b3JlX3RydWUiLCBkZXN0PSJyZXF1ZXN0
X2NvbW1pdCIsIGRlZmF1bHQ9RmFsc2UsIGhlbHA9Ik1hcmsgdGhlIHBhdGNoIGFzIG5lZWRpbmcg
YXV0by1jb21taXQgYWZ0ZXIgcmV2aWV3LiIpCiAgICAgcmV2aWV3ID0gbWFrZV9vcHRpb24oIi0t
bm8tcmV2aWV3IiwgYWN0aW9uPSJzdG9yZV9mYWxzZSIsIGRlc3Q9InJldmlldyIsIGRlZmF1bHQ9
VHJ1ZSwgaGVscD0iRG8gbm90IG1hcmsgdGhlIHBhdGNoIGZvciByZXZpZXcuIikKICAgICByZXZp
ZXdlciA9IG1ha2Vfb3B0aW9uKCItciIsICItLXJldmlld2VyIiwgYWN0aW9uPSJzdG9yZSIsIHR5
cGU9InN0cmluZyIsIGRlc3Q9InJldmlld2VyIiwgaGVscD0iVXBkYXRlIENoYW5nZUxvZ3MgdG8g
c2F5IFJldmlld2VkIGJ5IFJFVklFV0VSLiIpCi0gICAgdGVzdCA9IG1ha2Vfb3B0aW9uKCItLXRl
c3QiLCBhY3Rpb249InN0b3JlX3RydWUiLCBkZXN0PSJ0ZXN0IiwgZGVmYXVsdD1GYWxzZSwgaGVs
cD0iQ29tbWl0IHdpdGhvdXQgcnVubmluZyBydW4td2Via2l0LXRlc3RzIikKKyAgICBzcXVhc2gg
PSBtYWtlX29wdGlvbigiLXMiLCAiLS1zcXVhc2giLCBhY3Rpb249InN0b3JlX3RydWUiLCBkZXN0
PSJzcXVhc2giLCBoZWxwPSJTcXVhc2ggYWxsIGxvY2FsIGNvbW1pdHMgaW50byBvbmUgb24gdXBs
b2FkL2xhbmQgKGdpdC1vbmx5KS4iKQorICAgIHRlc3QgPSBtYWtlX29wdGlvbigiLS10ZXN0Iiwg
YWN0aW9uPSJzdG9yZV90cnVlIiwgZGVzdD0idGVzdCIsIGRlZmF1bHQ9RmFsc2UsIGhlbHA9IlJ1
biBydW4td2Via2l0LXRlc3RzIGJlZm9yZSBjb21taXR0aW5nLiIpCiAgICAgdXBkYXRlID0gbWFr
ZV9vcHRpb24oIi0tbm8tdXBkYXRlIiwgYWN0aW9uPSJzdG9yZV9mYWxzZSIsIGRlc3Q9InVwZGF0
ZSIsIGRlZmF1bHQ9VHJ1ZSwgaGVscD0iRG9uJ3QgdXBkYXRlIHRoZSB3b3JraW5nIGRpcmVjdG9y
eS4iKQpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBz
L3Bvc3RkaWZmLnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL3Bv
c3RkaWZmLnB5CmluZGV4IDZhM2RlZTQuLjk4Njk1NjkgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xz
L1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9wb3N0ZGlmZi5weQorKysgYi9XZWJLaXRUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvcG9zdGRpZmYucHkKQEAgLTQwLDYgKzQwLDkg
QEAgY2xhc3MgUG9zdERpZmYoQWJzdHJhY3RTdGVwKToKICAgICAgICAgICAgIE9wdGlvbnMucmV2
aWV3LAogICAgICAgICAgICAgT3B0aW9ucy5yZXF1ZXN0X2NvbW1pdCwKICAgICAgICAgICAgIE9w
dGlvbnMub3Blbl9idWcsCisgICAgICAgICAgICBPcHRpb25zLmdpdF9jb21taXQsCisgICAgICAg
ICAgICBPcHRpb25zLm5vX3NxdWFzaCwKKyAgICAgICAgICAgIE9wdGlvbnMuc3F1YXNoLAogICAg
ICAgICBdCiAKICAgICBkZWYgcnVuKHNlbGYsIHN0YXRlKToKZGlmZiAtLWdpdCBhL1dlYktpdFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9wcmVwYXJlY2hhbmdlbG9nLnB5IGIvV2Vi
S2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL3ByZXBhcmVjaGFuZ2Vsb2cucHkK
aW5kZXggZmNiNDBiZS4uOTM2MmI4NiAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93
ZWJraXRweS90b29sL3N0ZXBzL3ByZXBhcmVjaGFuZ2Vsb2cucHkKKysrIGIvV2ViS2l0VG9vbHMv
U2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL3ByZXBhcmVjaGFuZ2Vsb2cucHkKQEAgLTQxLDYg
KzQxLDkgQEAgY2xhc3MgUHJlcGFyZUNoYW5nZUxvZyhBYnN0cmFjdFN0ZXApOgogICAgICAgICAg
ICAgT3B0aW9ucy5wb3J0LAogICAgICAgICAgICAgT3B0aW9ucy5xdWlldCwKICAgICAgICAgICAg
IE9wdGlvbnMuZW1haWwsCisgICAgICAgICAgICBPcHRpb25zLmdpdF9jb21taXQsCisgICAgICAg
ICAgICBPcHRpb25zLm5vX3NxdWFzaCwKKyAgICAgICAgICAgIE9wdGlvbnMuc3F1YXNoLAogICAg
ICAgICBdCiAKICAgICBkZWYgcnVuKHNlbGYsIHN0YXRlKToKQEAgLTUyLDYgKzU1LDEyIEBAIGNs
YXNzIFByZXBhcmVDaGFuZ2VMb2coQWJzdHJhY3RTdGVwKToKICAgICAgICAgICAgIGFyZ3MuYXBw
ZW5kKCItLWJ1Zz0lcyIgJSBzdGF0ZVsiYnVnX2lkIl0pCiAgICAgICAgIGlmIHNlbGYuX29wdGlv
bnMuZW1haWw6CiAgICAgICAgICAgICBhcmdzLmFwcGVuZCgiLS1lbWFpbD0lcyIgJSBzZWxmLl9v
cHRpb25zLmVtYWlsKQorICAgICAgICBpZiAoc2VsZi5fdG9vbC5zY20oKS5zdXBwb3J0c19sb2Nh
bF9jb21taXRzKCkgYW5kCisgICAgICAgICAgICBzZWxmLl90b29sLnNjbSgpLnNob3VsZF9zcXVh
c2goc2VsZi5fb3B0aW9ucy5zcXVhc2gpKToKKyAgICAgICAgICAgIGFyZ3MuYXBwZW5kKCItLW1l
cmdlLWJhc2U9JXMiICUgc2VsZi5fdG9vbC5zY20oKS5zdm5fbWVyZ2VfYmFzZSgpKQorICAgICAg
ICBpZiBzZWxmLl9vcHRpb25zLmdpdF9jb21taXQ6CisgICAgICAgICAgICBhcmdzLmFwcGVuZCgi
LS1naXQtY29tbWl0PSVzIiAlIHNlbGYuX29wdGlvbnMuZ2l0X2NvbW1pdCkKKwogICAgICAgICB0
cnk6CiAgICAgICAgICAgICBzZWxmLl90b29sLmV4ZWN1dGl2ZS5ydW5fYW5kX3Rocm93X2lmX2Zh
aWwoYXJncywgc2VsZi5fb3B0aW9ucy5xdWlldCkKICAgICAgICAgZXhjZXB0IFNjcmlwdEVycm9y
LCBlOgpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBz
L3ByZXBhcmVjaGFuZ2Vsb2dmb3JyZXZlcnQucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtp
dHB5L3Rvb2wvc3RlcHMvcHJlcGFyZWNoYW5nZWxvZ2ZvcnJldmVydC5weQppbmRleCBmN2Q5Y2Qz
Li40ZDI5OWZhIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wv
c3RlcHMvcHJlcGFyZWNoYW5nZWxvZ2ZvcnJldmVydC5weQorKysgYi9XZWJLaXRUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvcHJlcGFyZWNoYW5nZWxvZ2ZvcnJldmVydC5weQpAQCAt
MzYsNyArMzYsNyBAQCBjbGFzcyBQcmVwYXJlQ2hhbmdlTG9nRm9yUmV2ZXJ0KEFic3RyYWN0U3Rl
cCk6CiAgICAgZGVmIHJ1bihzZWxmLCBzdGF0ZSk6CiAgICAgICAgICMgVGhpcyBjb3VsZCBtb3Zl
IHRvIHByZXBhcmUtQ2hhbmdlTG9nIGJ5IGFkZGluZyBhIC0tcmV2ZXJ0PSBvcHRpb24uCiAgICAg
ICAgIHNlbGYuX3J1bl9zY3JpcHQoInByZXBhcmUtQ2hhbmdlTG9nIikKLSAgICAgICAgY2hhbmdl
bG9nX3BhdGhzID0gc2VsZi5fdG9vbC5jaGVja291dCgpLm1vZGlmaWVkX2NoYW5nZWxvZ3MoKQor
ICAgICAgICBjaGFuZ2Vsb2dfcGF0aHMgPSBzZWxmLl90b29sLmNoZWNrb3V0KCkubW9kaWZpZWRf
Y2hhbmdlbG9ncyhnaXRfY29tbWl0PU5vbmUsIHNxdWFzaD1GYWxzZSkKICAgICAgICAgYnVnX3Vy
bCA9IHNlbGYuX3Rvb2wuYnVncy5idWdfdXJsX2Zvcl9idWdfaWQoc3RhdGVbImJ1Z19pZCJdKSBp
ZiBzdGF0ZVsiYnVnX2lkIl0gZWxzZSBOb25lCiAgICAgICAgIGZvciBjaGFuZ2Vsb2dfcGF0aCBp
biBjaGFuZ2Vsb2dfcGF0aHM6CiAgICAgICAgICAgICAjIEZJWE1FOiBTZWVtcyB3ZSBzaG91bGQg
cHJlcGFyZSB0aGUgbWVzc2FnZSBvdXRzaWRlIG9mIGNoYW5nZWxvZ3MucHkgYW5kIHRoZW4ganVz
dCBwYXNzIGluCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wv
c3RlcHMvdXBkYXRlY2hhbmdlbG9nc3dpdGhyZXZpZXdlci5weSBiL1dlYktpdFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvdG9vbC9zdGVwcy91cGRhdGVjaGFuZ2Vsb2dzd2l0aHJldmlld2VyLnB5Cmlu
ZGV4IGEzNWVkOGMuLmQ4NDFkNWIgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvdG9vbC9zdGVwcy91cGRhdGVjaGFuZ2Vsb2dzd2l0aHJldmlld2VyLnB5CisrKyBiL1dl
YktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy91cGRhdGVjaGFuZ2Vsb2dzd2l0
aHJldmlld2VyLnB5CkBAIC0zOCw3ICszOCwxMCBAQCBjbGFzcyBVcGRhdGVDaGFuZ2VMb2dzV2l0
aFJldmlld2VyKEFic3RyYWN0U3RlcCk6CiAgICAgQGNsYXNzbWV0aG9kCiAgICAgZGVmIG9wdGlv
bnMoY2xzKToKICAgICAgICAgcmV0dXJuIFsKKyAgICAgICAgICAgIE9wdGlvbnMuZ2l0X2NvbW1p
dCwKICAgICAgICAgICAgIE9wdGlvbnMucmV2aWV3ZXIsCisgICAgICAgICAgICBPcHRpb25zLm5v
X3NxdWFzaCwKKyAgICAgICAgICAgIE9wdGlvbnMuc3F1YXNoLAogICAgICAgICBdCiAKICAgICBk
ZWYgX2d1ZXNzX3Jldmlld2VyX2Zyb21fYnVnKHNlbGYsIGJ1Z19pZCk6CkBAIC02Nyw1ICs3MCw1
IEBAIGNsYXNzIFVwZGF0ZUNoYW5nZUxvZ3NXaXRoUmV2aWV3ZXIoQWJzdHJhY3RTdGVwKToKICAg
ICAgICAgICAgIHJldHVybgogCiAgICAgICAgIG9zLmNoZGlyKHNlbGYuX3Rvb2wuc2NtKCkuY2hl
Y2tvdXRfcm9vdCkKLSAgICAgICAgZm9yIGNoYW5nZWxvZ19wYXRoIGluIHNlbGYuX3Rvb2wuY2hl
Y2tvdXQoKS5tb2RpZmllZF9jaGFuZ2Vsb2dzKCk6CisgICAgICAgIGZvciBjaGFuZ2Vsb2dfcGF0
aCBpbiBzZWxmLl90b29sLmNoZWNrb3V0KCkubW9kaWZpZWRfY2hhbmdlbG9ncyhzZWxmLl9vcHRp
b25zLmdpdF9jb21taXQsIHNlbGYuX29wdGlvbnMuc3F1YXNoKToKICAgICAgICAgICAgIENoYW5n
ZUxvZyhjaGFuZ2Vsb2dfcGF0aCkuc2V0X3Jldmlld2VyKHJldmlld2VyKQpkaWZmIC0tZ2l0IGEv
V2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL3ZhbGlkYXRlcmV2aWV3ZXIu
cHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvdmFsaWRhdGVyZXZp
ZXdlci5weQppbmRleCA4MGIyYzVkLi43N2U4N2FkIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9T
Y3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvdmFsaWRhdGVyZXZpZXdlci5weQorKysgYi9XZWJL
aXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvdmFsaWRhdGVyZXZpZXdlci5weQpA
QCAtMzEsMTEgKzMxLDIwIEBAIGltcG9ydCByZQogCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5jaGVj
a291dC5jaGFuZ2Vsb2cgaW1wb3J0IENoYW5nZUxvZwogZnJvbSB3ZWJraXRweS50b29sLnN0ZXBz
LmFic3RyYWN0c3RlcCBpbXBvcnQgQWJzdHJhY3RTdGVwCitmcm9tIHdlYmtpdHB5LnRvb2wuc3Rl
cHMub3B0aW9ucyBpbXBvcnQgT3B0aW9ucwogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmRl
cHJlY2F0ZWRfbG9nZ2luZyBpbXBvcnQgZXJyb3IsIGxvZwogCiAKICMgRklYTUU6IFNvbWUgb2Yg
dGhpcyBsb2dpYyBzaG91bGQgcHJvYmFibHkgYmUgdW5pZmllZCB3aXRoIENvbW1pdHRlclZhbGlk
YXRvcj8KIGNsYXNzIFZhbGlkYXRlUmV2aWV3ZXIoQWJzdHJhY3RTdGVwKToKKyAgICBAY2xhc3Nt
ZXRob2QKKyAgICBkZWYgb3B0aW9ucyhjbHMpOgorICAgICAgICByZXR1cm4gWworICAgICAgICAg
ICAgT3B0aW9ucy5naXRfY29tbWl0LAorICAgICAgICAgICAgT3B0aW9ucy5ub19zcXVhc2gsCisg
ICAgICAgICAgICBPcHRpb25zLnNxdWFzaCwKKyAgICAgICAgXQorCiAgICAgIyBGSVhNRTogVGhp
cyBzaG91bGQgcHJvYmFibHkgbW92ZSBvbnRvIENoYW5nZUxvZ0VudHJ5CiAgICAgZGVmIF9oYXNf
dmFsaWRfcmV2aWV3ZXIoc2VsZiwgY2hhbmdlbG9nX2VudHJ5KToKICAgICAgICAgaWYgY2hhbmdl
bG9nX2VudHJ5LnJldmlld2VyKCk6CkBAIC01NCw3ICs2Myw3IEBAIGNsYXNzIFZhbGlkYXRlUmV2
aWV3ZXIoQWJzdHJhY3RTdGVwKToKICAgICAgICAgIyBGSVhNRTogV2Ugc2hvdWxkIGZpZ3VyZSBv
dXQgaG93IHRvIGhhbmRsZSB0aGUgY3VycmVudCB3b3JraW5nCiAgICAgICAgICMgICAgICAgIGRp
cmVjdG9yeSBpc3N1ZSBtb3JlIGdsb2JhbGx5LgogICAgICAgICBvcy5jaGRpcihzZWxmLl90b29s
LnNjbSgpLmNoZWNrb3V0X3Jvb3QpCi0gICAgICAgIGZvciBjaGFuZ2Vsb2dfcGF0aCBpbiBzZWxm
Ll90b29sLmNoZWNrb3V0KCkubW9kaWZpZWRfY2hhbmdlbG9ncygpOgorICAgICAgICBmb3IgY2hh
bmdlbG9nX3BhdGggaW4gc2VsZi5fdG9vbC5jaGVja291dCgpLm1vZGlmaWVkX2NoYW5nZWxvZ3Mo
c2VsZi5fb3B0aW9ucy5naXRfY29tbWl0LCBzZWxmLl9vcHRpb25zLnNxdWFzaCk6CiAgICAgICAg
ICAgICBjaGFuZ2Vsb2dfZW50cnkgPSBDaGFuZ2VMb2coY2hhbmdlbG9nX3BhdGgpLmxhdGVzdF9l
bnRyeSgpCiAgICAgICAgICAgICBpZiBzZWxmLl9oYXNfdmFsaWRfcmV2aWV3ZXIoY2hhbmdlbG9n
X2VudHJ5KToKICAgICAgICAgICAgICAgICBjb250aW51ZQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>53904</attachid>
            <date>2010-04-20 16:31:27 -0700</date>
            <delta_ts>2010-04-23 01:18:34 -0700</delta_ts>
            <desc>Patch-10001</desc>
            <filename>bug-36394-20100420163126.patch</filename>
            <type>text/plain</type>
            <size>68984</size>
            <attacher name="Ojan Vafai">ojan</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCBmYmU5ZDBjM2E4YjcwODk1MzdlMWM3NDE4OWFjMzJhOTU1ZDRiMzg2Li43NDU0Y2Vl
MGM1MzU4YjNkNThjYTQ2MTI2NDlkYTcwNGE3NjU3ZTMyIDEwMDY0NAotLS0gYS9XZWJLaXRUb29s
cy9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTUgQEAK
KzIwMTAtMDQtMDYgIE9qYW4gVmFmYWkgIDxvamFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbmNsdWRlIGdpdCBjb21taXRz
IGluIHRoZSBkaWZmIGZvciB3ZWJraXQtcGF0Y2ggdXBsb2FkL2xhbmQuCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNjM5NAorCisgICAgICAgIEFkZHMg
LS1zcXVhc2gsIC0tbm8tc3F1YXNoIGFuZCAtLWdpdC1jb21taXQuCisKKyAgICAgICAgLS1naXQt
Y29tbWl0IHdpbGwgdXNlIGEgc3BlY2lmaWMgbG9jYWwgY29tbWl0IGZvciBsYW5kL3VwbG9hZC4K
KyAgICAgICAgSWYgYSBjb21taXQtcmFuZ2UgaXMgc3BlY2lmaWVkLCB0aGVuIHRoYXQgcmFuZ2Ug
aXMgdHJlYXRlZCBhcworICAgICAgICBhIHNpbmdsZSBzcXVhc2hlZCBjb21taXQuCisKKyAgICAg
ICAgLS1zcXVhc2ggd2lsbCBzcXVhc2ggYWxsIGxvY2FsIGNoYW5nZXMgaW5jbHVkaW5nIHdvcmtp
bmcgY29weSBjaGFuZ2VzCisgICAgICAgIGludG8gYSBzaW5nbGUgcGF0Y2guCisKKyAgICAgICAg
LS1uby1zcXVhc2ggaXMgdGhlIGxlZ2FjeSBiZWhhdmlvciAodXBsb2FkIG9ubHkgY29uc2lkZXJz
IHRoZSB3b3JraW5nIGNvcHksCisgICAgICAgIGxhbmQgY29tbWl0cyB0aGUgd29ya2luZyBjb3B5
IGFuZCB0aGVuIGVhY2ggbG9jYWwgY29tbWl0IHNlcGFyYXRlbHkgdG8gU1ZOKQorCisgICAgICAg
IElmIG5laXRoZXIgaXMgc3BlY2lmaWVkLCB0aGVuIGFuIGluZm9ybWF0aXZlIGVycm9yIGlzIHJh
aXNlZCBpZiB0aGVyZSBpcworICAgICAgICBtb3JlIHRoYW4gb25lIGxvY2FsIGNvbW1pdCBvciB3
aGVuIHRoZXJlIGFyZSBsb2NhbCBjb21taXQocykgYW5kIHdvcmtpbmcKKyAgICAgICAgY29weSBj
aGFuZ2VzLgorCisgICAgICAgIElmIHRoZSB3ZWJraXQtcGF0Y2guc3F1YXNoIGdpdCBjb25maWcg
cGFyYW1ldGVyIGlzIHNldCwgdGhlbgorICAgICAgICB0aGF0IHdpbGwgYmUgcmVzcGVjdGVkIGlu
c3RlYWQgb2YgcmFpc2luZyBhbiBlcnJvci4KKworICAgICAgICAqIFNjcmlwdHMvY2hlY2std2Vi
a2l0LXN0eWxlOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L2Fw
aS5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9hcGlfdW5p
dHRlc3QucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvc2Nt
LnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L3NjbV91bml0
dGVzdC5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3N0eWxlL29wdHBhcnNlci5weToK
KyAgICAgICAgLS1naXQtc2luY2UgaXMgcmVtb3ZlZCBhbmQgLS1naXQtY29tbWl0IG5vIGxvbmdl
ciBpbXBsaWVzIGNvbW1pdF9pZC4uCisgICAgICAgIEluc3RlYWQsIGl0IHRyZWF0cyB0aGF0IGlu
ZGl2aWR1YWwgY29tbWl0LCBidXQgYWxzbyBzdXBwb3J0cyBjb21taXQgcmFuZ2VzCisgICAgICAg
IChlLmcuIGNvbW1pdF9pZC4uKSBhcyBhcmd1bWVudHMuCisgICAgICAgICogU2NyaXB0cy93ZWJr
aXRweS9zdHlsZS9vcHRwYXJzZXJfdW5pdHRlc3QucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJr
aXRweS9zdHlsZV9yZWZlcmVuY2VzLnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdG9v
bC9jb21tYW5kcy9kb3dubG9hZC5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rvb2wv
Y29tbWFuZHMvdXBsb2FkLnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdG9vbC9tYWlu
LnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdG9vbC9tb2NrdG9vbC5weToKKyAgICAg
ICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvYWJzdHJhY3RzdGVwLnB5OgorICAgICAg
ICAqIFNjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9hcHBseXBhdGNod2l0aGxvY2FsY29tbWl0
LnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9jaGVja3N0eWxlLnB5
OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9jb21taXQucHk6CisgICAg
ICAgICogU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL29wdGlvbnMucHk6CisgICAgICAgICog
U2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL3Bvc3RkaWZmLnB5OgorICAgICAgICAqIFNjcmlw
dHMvd2Via2l0cHkvdG9vbC9zdGVwcy9wcmVwYXJlY2hhbmdlbG9nLnB5OgorICAgICAgICAqIFNj
cmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9wcmVwYXJlY2hhbmdlbG9nZm9ycmV2ZXJ0LnB5Ogor
ICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy91cGRhdGVjaGFuZ2Vsb2dzd2l0
aHJldmlld2VyLnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy92YWxp
ZGF0ZXJldmlld2VyLnB5OgorCiAyMDEwLTA0LTIwICBNT1JJVEEgSGFqaW1lIDxtb3JyaXRhQGdv
b2dsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgYWRkIG15c2VsZiB0byB0aGUgY29tbWl0
dGVycyBsaXN0LgpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy9jaGVjay13ZWJraXQt
c3R5bGUgYi9XZWJLaXRUb29scy9TY3JpcHRzL2NoZWNrLXdlYmtpdC1zdHlsZQppbmRleCA5ODk3
ZmJkMGQ3MTZhZmM4ODFmZWRlNzA4ZmFkN2RjYzUzYTAyYWI1Li5iZDBmNTg0OGNkYjcyNzVhY2Fm
YmZiNjBjMjZhMWQ2M2M3ZWM4ZGI5IDEwMDc1NQotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL2No
ZWNrLXdlYmtpdC1zdHlsZQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL2NoZWNrLXdlYmtpdC1z
dHlsZQpAQCAtODQsMjQgKzg0LDI0IEBAIGRlZiBtYWluKCk6CiAgICAgY2hlY2tlci5jb25maWd1
cmVfbG9nZ2luZyhzdHJlYW09c3RkZXJyLCBpc192ZXJib3NlPWlzX3ZlcmJvc2UpCiAgICAgX2xv
Zy5kZWJ1ZygiVmVyYm9zZSBsb2dnaW5nIGVuYWJsZWQuIikKIAorICAgIHBhcnNlciA9IGNoZWNr
ZXIuY2hlY2tfd2Via2l0X3N0eWxlX3BhcnNlcigpCisgICAgKHBhdGhzLCBvcHRpb25zKSA9IHBh
cnNlci5wYXJzZShhcmdzKQorCiAgICAgY2hlY2tvdXQgPSBkZXRlY3RfY2hlY2tvdXQoKQogCiAg
ICAgaWYgY2hlY2tvdXQgaXMgTm9uZToKKyAgICAgICAgaWYgbm90IHBhdGhzOgorICAgICAgICAg
ICAgX2xvZy5lcnJvcigiV2ViS2l0IGNoZWNrb3V0IG5vdCBmb3VuZDogWW91IG11c3QgcnVuIHRo
aXMgc2NyaXB0ICIKKyAgICAgICAgICAgICAgICAgICAgICAgImZyb20gd2l0aGluIGEgV2ViS2l0
IGNoZWNrb3V0IGlmIHlvdSBhcmUgbm90IHBhc3NpbmcgIgorICAgICAgICAgICAgICAgICAgICAg
ICAic3BlY2lmaWMgcGF0aHMgdG8gY2hlY2suIikKKyAgICAgICAgICAgIHN5cy5leGl0KDEpCisK
ICAgICAgICAgY2hlY2tvdXRfcm9vdCA9IE5vbmUKICAgICAgICAgX2xvZy5kZWJ1ZygiV2ViS2l0
IGNoZWNrb3V0IG5vdCBmb3VuZCBmb3IgY3VycmVudCBkaXJlY3RvcnkuIikKICAgICBlbHNlOgog
ICAgICAgICBjaGVja291dF9yb290ID0gY2hlY2tvdXQucm9vdF9wYXRoKCkKICAgICAgICAgX2xv
Zy5kZWJ1ZygiV2ViS2l0IGNoZWNrb3V0IGZvdW5kIHdpdGggcm9vdDogJXMiICUgY2hlY2tvdXRf
cm9vdCkKIAotICAgIHBhcnNlciA9IGNoZWNrZXIuY2hlY2tfd2Via2l0X3N0eWxlX3BhcnNlcigp
Ci0gICAgKHBhdGhzLCBvcHRpb25zKSA9IHBhcnNlci5wYXJzZShhcmdzKQotCi0gICAgaWYgY2hl
Y2tvdXQgaXMgTm9uZSBhbmQgbm90IHBhdGhzOgotICAgICAgICBfbG9nLmVycm9yKCJXZWJLaXQg
Y2hlY2tvdXQgbm90IGZvdW5kOiBZb3UgbXVzdCBydW4gdGhpcyBzY3JpcHQgIgotICAgICAgICAg
ICAgICAgICAgICJmcm9tIHdpdGhpbiBhIFdlYktpdCBjaGVja291dCBpZiB5b3UgYXJlIG5vdCBw
YXNzaW5nICIKLSAgICAgICAgICAgICAgICAgICAic3BlY2lmaWMgcGF0aHMgdG8gY2hlY2suIikK
LSAgICAgICAgc3lzLmV4aXQoMSkKLQogICAgIGNvbmZpZ3VyYXRpb24gPSBjaGVja2VyLmNoZWNr
X3dlYmtpdF9zdHlsZV9jb25maWd1cmF0aW9uKG9wdGlvbnMpCiAgICAgc3R5bGVfY2hlY2tlciA9
IGNoZWNrZXIuU3R5bGVDaGVja2VyKGNvbmZpZ3VyYXRpb24pCiAKQEAgLTExMCwxMCArMTEwLDcg
QEAgZGVmIG1haW4oKToKICAgICBpZiBwYXRoczoKICAgICAgICAgc3R5bGVfY2hlY2tlci5jaGVj
a19wYXRocyhwYXRocykKICAgICBlbHNlOgotICAgICAgICBpZiBvcHRpb25zLmdpdF9jb21taXQ6
Ci0gICAgICAgICAgICBwYXRjaCA9IGNoZWNrb3V0LmNyZWF0ZV9wYXRjaF9zaW5jZV9sb2NhbF9j
b21taXQob3B0aW9ucy5naXRfY29tbWl0KQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcGF0
Y2ggPSBjaGVja291dC5jcmVhdGVfcGF0Y2goKQorICAgICAgICBwYXRjaCA9IGNoZWNrb3V0LmNy
ZWF0ZV9wYXRjaChvcHRpb25zLmdpdF9jb21taXQsIG9wdGlvbnMuc3F1YXNoKQogICAgICAgICBw
YXRjaF9jaGVja2VyID0gUGF0Y2hDaGVja2VyKHN0eWxlX2NoZWNrZXIpCiAgICAgICAgIHBhdGNo
X2NoZWNrZXIuY2hlY2socGF0Y2gpCiAKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMv
d2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L2FwaS5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvY29tbW9uL2NoZWNrb3V0L2FwaS5weQppbmRleCBjNGUyYjY5ZGJjNzY4MmU5OGIyMzNm
NDcwN2FiNTgxZWUwNDQ2ZTgyLi4yYTI2NzcwNzQ3NjljNDhkMzQwMTQ3YmZhYzMxM2UwN2EyNDk5
ZGZjIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVj
a291dC9hcGkucHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hl
Y2tvdXQvYXBpLnB5CkBAIC04MCwxNiArODAsMTYgQEAgY2xhc3MgQ2hlY2tvdXQob2JqZWN0KToK
ICAgICBkZWYgYnVnX2lkX2Zvcl9yZXZpc2lvbihzZWxmLCByZXZpc2lvbik6CiAgICAgICAgIHJl
dHVybiBzZWxmLmNvbW1pdF9pbmZvX2Zvcl9yZXZpc2lvbihyZXZpc2lvbikuYnVnX2lkKCkKIAot
ICAgIGRlZiBtb2RpZmllZF9jaGFuZ2Vsb2dzKHNlbGYpOgorICAgIGRlZiBtb2RpZmllZF9jaGFu
Z2Vsb2dzKHNlbGYsIGdpdF9jb21taXQsIHNxdWFzaCk6CiAgICAgICAgICMgU0NNIHJldHVybnMg
cGF0aHMgcmVsYXRpdmUgdG8gc2NtLmNoZWNrb3V0X3Jvb3QKICAgICAgICAgIyBDYWxsZXJzIChl
c3BlY2lhbGx5IHRob3NlIHVzaW5nIHRoZSBDaGFuZ2VMb2cgY2xhc3MpIG1heQogICAgICAgICAj
IGV4cGVjdCBhYnNvbHV0ZSBwYXRocywgc28gdGhpcyBtZXRob2QgcmV0dXJucyBhYnNvbHV0ZSBw
YXRocy4KLSAgICAgICAgY2hhbmdlZF9maWxlcyA9IHNlbGYuX3NjbS5jaGFuZ2VkX2ZpbGVzKCkK
KyAgICAgICAgY2hhbmdlZF9maWxlcyA9IHNlbGYuX3NjbS5jaGFuZ2VkX2ZpbGVzKGdpdF9jb21t
aXQsIHNxdWFzaCkKICAgICAgICAgYWJzb2x1dGVfcGF0aHMgPSBbb3MucGF0aC5qb2luKHNlbGYu
X3NjbS5jaGVja291dF9yb290LCBwYXRoKSBmb3IgcGF0aCBpbiBjaGFuZ2VkX2ZpbGVzXQogICAg
ICAgICByZXR1cm4gW3BhdGggZm9yIHBhdGggaW4gYWJzb2x1dGVfcGF0aHMgaWYgc2VsZi5faXNf
cGF0aF90b19jaGFuZ2Vsb2cocGF0aCldCiAKLSAgICBkZWYgY29tbWl0X21lc3NhZ2VfZm9yX3Ro
aXNfY29tbWl0KHNlbGYpOgotICAgICAgICBjaGFuZ2Vsb2dfcGF0aHMgPSBzZWxmLm1vZGlmaWVk
X2NoYW5nZWxvZ3MoKQorICAgIGRlZiBjb21taXRfbWVzc2FnZV9mb3JfdGhpc19jb21taXQoc2Vs
ZiwgZ2l0X2NvbW1pdCwgc3F1YXNoKToKKyAgICAgICAgY2hhbmdlbG9nX3BhdGhzID0gc2VsZi5t
b2RpZmllZF9jaGFuZ2Vsb2dzKGdpdF9jb21taXQsIHNxdWFzaCkKICAgICAgICAgaWYgbm90IGxl
bihjaGFuZ2Vsb2dfcGF0aHMpOgogICAgICAgICAgICAgcmFpc2UgU2NyaXB0RXJyb3IobWVzc2Fn
ZT0iRm91bmQgbm8gbW9kaWZpZWQgQ2hhbmdlTG9ncywgY2Fubm90IGNyZWF0ZSBhIGNvbW1pdCBt
ZXNzYWdlLlxuIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkFsbCBjaGFuZ2VzIHJl
cXVpcmUgYSBDaGFuZ2VMb2cuICBTZWU6XG4iCkBAIC0xMDYsOSArMTA2LDkgQEAgY2xhc3MgQ2hl
Y2tvdXQob2JqZWN0KToKICAgICAgICAgIyBGSVhNRTogV2Ugc2hvdWxkIHNvcnQgYW5kIGxhYmVs
IHRoZSBDaGFuZ2VMb2cgbWVzc2FnZXMgbGlrZSBjb21taXQtbG9nLWVkaXRvciBkb2VzLgogICAg
ICAgICByZXR1cm4gQ29tbWl0TWVzc2FnZSgiIi5qb2luKGNoYW5nZWxvZ19tZXNzYWdlcykuc3Bs
aXRsaW5lcygpKQogCi0gICAgZGVmIGJ1Z19pZF9mb3JfdGhpc19jb21taXQoc2VsZik6CisgICAg
ZGVmIGJ1Z19pZF9mb3JfdGhpc19jb21taXQoc2VsZiwgZ2l0X2NvbW1pdCwgc3F1YXNoKToKICAg
ICAgICAgdHJ5OgotICAgICAgICAgICAgcmV0dXJuIHBhcnNlX2J1Z19pZChzZWxmLmNvbW1pdF9t
ZXNzYWdlX2Zvcl90aGlzX2NvbW1pdCgpLm1lc3NhZ2UoKSkKKyAgICAgICAgICAgIHJldHVybiBw
YXJzZV9idWdfaWQoc2VsZi5jb21taXRfbWVzc2FnZV9mb3JfdGhpc19jb21taXQoZ2l0X2NvbW1p
dCwgc3F1YXNoKS5tZXNzYWdlKCkpCiAgICAgICAgIGV4Y2VwdCBTY3JpcHRFcnJvciwgZToKICAg
ICAgICAgICAgIHBhc3MgIyBXZSBtaWdodCBub3QgaGF2ZSBDaGFuZ2VMb2dzLgogCkBAIC0xMjcs
MTEgKzEyNywxNCBAQCBjbGFzcyBDaGVja291dChvYmplY3QpOgogICAgICAgICBydW5fY29tbWFu
ZChhcmdzLCBpbnB1dD1jdXJsX3Byb2Nlc3Muc3Rkb3V0KQogCiAgICAgZGVmIGFwcGx5X3JldmVy
c2VfZGlmZihzZWxmLCByZXZpc2lvbik6CisgICAgICAgIGlmIG5vdCBzZWxmLl9zY20ud29ya2lu
Z19kaXJlY3RvcnlfaXNfY2xlYW4oKToKKyAgICAgICAgICAgIHJhaXNlIFNjcmlwdEVycm9yKG1l
c3NhZ2U9IldvcmtpbmcgZGlyZWN0b3J5IG11c3QgYmUgY2xlYW4gdG8gcmV2ZXJ0IGEgcmV2aXNp
b24uIikKKwogICAgICAgICBzZWxmLl9zY20uYXBwbHlfcmV2ZXJzZV9kaWZmKHJldmlzaW9uKQog
CiAgICAgICAgICMgV2UgcmV2ZXJ0IHRoZSBDaGFuZ2VMb2dzIGJlY2F1c2UgcmVtb3ZpbmcgbGlu
ZXMgZnJvbSBhIENoYW5nZUxvZwogICAgICAgICAjIGRvZXNuJ3QgbWFrZSBzZW5zZS4gIENoYW5n
ZUxvZ3MgYXJlIGFwcGVuZCBvbmx5LgotICAgICAgICBjaGFuZ2Vsb2dfcGF0aHMgPSBzZWxmLm1v
ZGlmaWVkX2NoYW5nZWxvZ3MoKQorICAgICAgICBjaGFuZ2Vsb2dfcGF0aHMgPSBzZWxmLm1vZGlm
aWVkX2NoYW5nZWxvZ3MoZ2l0X2NvbW1pdD1Ob25lLCBzcXVhc2g9RmFsc2UpCiAgICAgICAgIGlm
IGxlbihjaGFuZ2Vsb2dfcGF0aHMpOgogICAgICAgICAgICAgc2VsZi5fc2NtLnJldmVydF9maWxl
cyhjaGFuZ2Vsb2dfcGF0aHMpCiAKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvY29tbW9uL2NoZWNrb3V0L2FwaV91bml0dGVzdC5weSBiL1dlYktpdFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L2FwaV91bml0dGVzdC5weQppbmRleCBlOTljYWVl
YjIxZjkzNjBmNDgzNWM0ZmY3OTMzYTg0Y2Q3OWI3NWU2Li44OTUwOWNmZTRmZjMwYmU0M2Y4ZmZk
YjQ3ZWFkYzU2OGY5NjJmZjhlIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtp
dHB5L2NvbW1vbi9jaGVja291dC9hcGlfdW5pdHRlc3QucHkKKysrIGIvV2ViS2l0VG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvYXBpX3VuaXR0ZXN0LnB5CkBAIC0xMTEsMTAg
KzExMSwxMSBAQCBjbGFzcyBDb21taXRNZXNzYWdlRm9yVGhpc0NvbW1pdFRlc3QodW5pdHRlc3Qu
VGVzdENhc2UpOgogICAgICMgQ2hhbmdlTG9nIGlzIGRpZmZpY3VsdCB0byBtb2NrIGF0IGN1cnJl
bnQuCiAgICAgZGVmIHRlc3RfY29tbWl0X21lc3NhZ2VfZm9yX3RoaXNfY29tbWl0KHNlbGYpOgog
ICAgICAgICBjaGVja291dCA9IENoZWNrb3V0KE5vbmUpCi0gICAgICAgIGNoZWNrb3V0Lm1vZGlm
aWVkX2NoYW5nZWxvZ3MgPSBsYW1iZGE6IFsiQ2hhbmdlTG9nMSIsICJDaGFuZ2VMb2cyIl0KKyAg
ICAgICAgY2hlY2tvdXQubW9kaWZpZWRfY2hhbmdlbG9ncyA9IGxhbWJkYSBnaXRfY29tbWl0LCBz
cXVhc2g6IFsiQ2hhbmdlTG9nMSIsICJDaGFuZ2VMb2cyIl0KICAgICAgICAgb3V0cHV0ID0gT3V0
cHV0Q2FwdHVyZSgpCiAgICAgICAgIGV4cGVjdGVkX3N0ZGVyciA9ICJQYXJzaW5nIENoYW5nZUxv
ZzogQ2hhbmdlTG9nMVxuUGFyc2luZyBDaGFuZ2VMb2c6IENoYW5nZUxvZzJcbiIKLSAgICAgICAg
Y29tbWl0X21lc3NhZ2UgPSBvdXRwdXQuYXNzZXJ0X291dHB1dHMoc2VsZiwgY2hlY2tvdXQuY29t
bWl0X21lc3NhZ2VfZm9yX3RoaXNfY29tbWl0LCBleHBlY3RlZF9zdGRlcnI9ZXhwZWN0ZWRfc3Rk
ZXJyKQorICAgICAgICBjb21taXRfbWVzc2FnZSA9IG91dHB1dC5hc3NlcnRfb3V0cHV0cyhzZWxm
LCBjaGVja291dC5jb21taXRfbWVzc2FnZV9mb3JfdGhpc19jb21taXQsCisgICAgICAgICAgICBr
d2FyZ3M9eyJnaXRfY29tbWl0IjogTm9uZSwgInNxdWFzaCI6IEZhbHNlfSwgZXhwZWN0ZWRfc3Rk
ZXJyPWV4cGVjdGVkX3N0ZGVycikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb21taXRfbWVz
c2FnZS5tZXNzYWdlKCksIHNlbGYuZXhwZWN0ZWRfY29tbWl0X21lc3NhZ2UpCiAKIApAQCAtMTU3
LDEzICsxNTgsMTMgQEAgY2xhc3MgQ2hlY2tvdXRUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAg
ICBkZWYgdGVzdF9idWdfaWRfZm9yX3RoaXNfY29tbWl0KHNlbGYpOgogICAgICAgICBzY20gPSBN
b2NrKCkKICAgICAgICAgY2hlY2tvdXQgPSBDaGVja291dChzY20pCi0gICAgICAgIGNoZWNrb3V0
LmNvbW1pdF9tZXNzYWdlX2Zvcl90aGlzX2NvbW1pdCA9IGxhbWJkYTogQ29tbWl0TWVzc2FnZShD
aGFuZ2VMb2dFbnRyeShfY2hhbmdlbG9nMWVudHJ5MSkuY29udGVudHMoKS5zcGxpdGxpbmVzKCkp
Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2hlY2tvdXQuYnVnX2lkX2Zvcl90aGlzX2NvbW1p
dCgpLCAzNjYyOSkKKyAgICAgICAgY2hlY2tvdXQuY29tbWl0X21lc3NhZ2VfZm9yX3RoaXNfY29t
bWl0ID0gbGFtYmRhIGdpdF9jb21taXQsIHNxdWFzaDogQ29tbWl0TWVzc2FnZShDaGFuZ2VMb2dF
bnRyeShfY2hhbmdlbG9nMWVudHJ5MSkuY29udGVudHMoKS5zcGxpdGxpbmVzKCkpCisgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoY2hlY2tvdXQuYnVnX2lkX2Zvcl90aGlzX2NvbW1pdChnaXRfY29t
bWl0PU5vbmUsIHNxdWFzaD1GYWxzZSksIDM2NjI5KQogCiAgICAgZGVmIHRlc3RfbW9kaWZpZWRf
Y2hhbmdlbG9ncyhzZWxmKToKICAgICAgICAgc2NtID0gTW9jaygpCiAgICAgICAgIHNjbS5jaGVj
a291dF9yb290ID0gIi9mb28vYmFyIgotICAgICAgICBzY20uY2hhbmdlZF9maWxlcyA9IGxhbWJk
YTpbImZpbGUxIiwgIkNoYW5nZUxvZyIsICJyZWxhdGl2ZS9wYXRoL0NoYW5nZUxvZyJdCisgICAg
ICAgIHNjbS5jaGFuZ2VkX2ZpbGVzID0gbGFtYmRhIGdpdF9jb21taXQsIHNxdWFzaDogWyJmaWxl
MSIsICJDaGFuZ2VMb2ciLCAicmVsYXRpdmUvcGF0aC9DaGFuZ2VMb2ciXQogICAgICAgICBjaGVj
a291dCA9IENoZWNrb3V0KHNjbSkKICAgICAgICAgZXhwZWN0ZWRfY2hhbmdsb2dzID0gWyIvZm9v
L2Jhci9DaGFuZ2VMb2ciLCAiL2Zvby9iYXIvcmVsYXRpdmUvcGF0aC9DaGFuZ2VMb2ciXQotICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKGNoZWNrb3V0Lm1vZGlmaWVkX2NoYW5nZWxvZ3MoKSwgZXhw
ZWN0ZWRfY2hhbmdsb2dzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNoZWNrb3V0Lm1vZGlm
aWVkX2NoYW5nZWxvZ3MoZ2l0X2NvbW1pdD1Ob25lLCBzcXVhc2g9RmFsc2UpLCBleHBlY3RlZF9j
aGFuZ2xvZ3MpCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1v
bi9jaGVja291dC9zY20ucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9j
aGVja291dC9zY20ucHkKaW5kZXggMjcwNGYwNzg4NzMzOThjYjcyOTJkMDhiZGIwZjZmZDBlNDVl
OTMxOC4uZGMwNWIxZDFhZjVlZWJiN2IxN2E0ZTY1NzdjMGFjOGQ5MDZiOGIyZiAxMDA2NDQKLS0t
IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvc2NtLnB5Cisr
KyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L3NjbS5weQpA
QCAtMTc4LDcgKzE3OCw3IEBAIGNsYXNzIFNDTToKICAgICBkZWYgYWRkKHNlbGYsIHBhdGgpOgog
ICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yLCAic3ViY2xhc3NlcyBtdXN0IGltcGxl
bWVudCIKIAotICAgIGRlZiBjaGFuZ2VkX2ZpbGVzKHNlbGYpOgorICAgIGRlZiBjaGFuZ2VkX2Zp
bGVzKHNlbGYsIGdpdF9jb21taXQ9Tm9uZSwgc3F1YXNoPU5vbmUpOgogICAgICAgICByYWlzZSBO
b3RJbXBsZW1lbnRlZEVycm9yLCAic3ViY2xhc3NlcyBtdXN0IGltcGxlbWVudCIKIAogICAgIGRl
ZiBjaGFuZ2VkX2ZpbGVzX2Zvcl9yZXZpc2lvbihzZWxmKToKQEAgLTE5Myw3ICsxOTMsNyBAQCBj
bGFzcyBTQ006CiAgICAgZGVmIGRpc3BsYXlfbmFtZShzZWxmKToKICAgICAgICAgcmFpc2UgTm90
SW1wbGVtZW50ZWRFcnJvciwgInN1YmNsYXNzZXMgbXVzdCBpbXBsZW1lbnQiCiAKLSAgICBkZWYg
Y3JlYXRlX3BhdGNoKHNlbGYpOgorICAgIGRlZiBjcmVhdGVfcGF0Y2goc2VsZiwgZ2l0X2NvbW1p
dD1Ob25lLCBzcXVhc2g9Tm9uZSk6CiAgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3Is
ICJzdWJjbGFzc2VzIG11c3QgaW1wbGVtZW50IgogCiAgICAgZGVmIGNvbW1pdHRlcl9lbWFpbF9m
b3JfcmV2aXNpb24oc2VsZiwgcmV2aXNpb24pOgpAQCAtMjExLDcgKzIxMSw3IEBAIGNsYXNzIFND
TToKICAgICBkZWYgcmV2ZXJ0X2ZpbGVzKHNlbGYsIGZpbGVfcGF0aHMpOgogICAgICAgICByYWlz
ZSBOb3RJbXBsZW1lbnRlZEVycm9yLCAic3ViY2xhc3NlcyBtdXN0IGltcGxlbWVudCIKIAotICAg
IGRlZiBjb21taXRfd2l0aF9tZXNzYWdlKHNlbGYsIG1lc3NhZ2UsIHVzZXJuYW1lPU5vbmUpOgor
ICAgIGRlZiBjb21taXRfd2l0aF9tZXNzYWdlKHNlbGYsIG1lc3NhZ2UsIHVzZXJuYW1lPU5vbmUs
IGdpdF9jb21taXQ9Tm9uZSwgc3F1YXNoPU5vbmUpOgogICAgICAgICByYWlzZSBOb3RJbXBsZW1l
bnRlZEVycm9yLCAic3ViY2xhc3NlcyBtdXN0IGltcGxlbWVudCIKIAogICAgIGRlZiBzdm5fY29t
bWl0X2xvZyhzZWxmLCBzdm5fcmV2aXNpb24pOgpAQCAtMjI5LDEyICsyMjksNiBAQCBjbGFzcyBT
Q006CiAgICAgZGVmIHN2bl9tZXJnZV9iYXNlKCk6CiAgICAgICAgIHJhaXNlIE5vdEltcGxlbWVu
dGVkRXJyb3IsICJzdWJjbGFzc2VzIG11c3QgaW1wbGVtZW50IgogCi0gICAgZGVmIGNyZWF0ZV9w
YXRjaF9mcm9tX2xvY2FsX2NvbW1pdChzZWxmLCBjb21taXRfaWQpOgotICAgICAgICBlcnJvcigi
WW91ciBzb3VyY2UgY29udHJvbCBtYW5hZ2VyIGRvZXMgbm90IHN1cHBvcnQgY3JlYXRpbmcgYSBw
YXRjaCBmcm9tIGEgbG9jYWwgY29tbWl0LiIpCi0KLSAgICBkZWYgY3JlYXRlX3BhdGNoX3NpbmNl
X2xvY2FsX2NvbW1pdChzZWxmLCBjb21taXRfaWQpOgotICAgICAgICBlcnJvcigiWW91ciBzb3Vy
Y2UgY29udHJvbCBtYW5hZ2VyIGRvZXMgbm90IHN1cHBvcnQgY3JlYXRpbmcgYSBwYXRjaCBmcm9t
IGEgbG9jYWwgY29tbWl0LiIpCi0KICAgICBkZWYgY29tbWl0X2xvY2FsbHlfd2l0aF9tZXNzYWdl
KHNlbGYsIG1lc3NhZ2UpOgogICAgICAgICBlcnJvcigiWW91ciBzb3VyY2UgY29udHJvbCBtYW5h
Z2VyIGRvZXMgbm90IHN1cHBvcnQgbG9jYWwgY29tbWl0cy4iKQogCkBAIC0zMzksNyArMzMzLDcg
QEAgY2xhc3MgU1ZOKFNDTSk6CiAgICAgICAgICMgcGF0aCBpcyBhc3N1bWVkIHRvIGJlIGN3ZCBy
ZWxhdGl2ZT8KICAgICAgICAgcnVuX2NvbW1hbmQoWyJzdm4iLCAiYWRkIiwgcGF0aF0pCiAKLSAg
ICBkZWYgY2hhbmdlZF9maWxlcyhzZWxmKToKKyAgICBkZWYgY2hhbmdlZF9maWxlcyhzZWxmLCBn
aXRfY29tbWl0PU5vbmUsIHNxdWFzaD1Ob25lKToKICAgICAgICAgcmV0dXJuIHNlbGYucnVuX3N0
YXR1c19hbmRfZXh0cmFjdF9maWxlbmFtZXMoc2VsZi5zdGF0dXNfY29tbWFuZCgpLCBzZWxmLl9z
dGF0dXNfcmVnZXhwKCJBQ0RNUiIpKQogCiAgICAgZGVmIGNoYW5nZWRfZmlsZXNfZm9yX3Jldmlz
aW9uKHNlbGYsIHJldmlzaW9uKToKQEAgLTM2MCw3ICszNTQsNyBAQCBjbGFzcyBTVk4oU0NNKToK
ICAgICBkZWYgZGlzcGxheV9uYW1lKHNlbGYpOgogICAgICAgICByZXR1cm4gInN2biIKIAotICAg
IGRlZiBjcmVhdGVfcGF0Y2goc2VsZik6CisgICAgZGVmIGNyZWF0ZV9wYXRjaChzZWxmLCBnaXRf
Y29tbWl0PU5vbmUsIHNxdWFzaD1Ob25lKToKICAgICAgICAgcmV0dXJuIHJ1bl9jb21tYW5kKHNl
bGYuc2NyaXB0X3BhdGgoInN2bi1jcmVhdGUtcGF0Y2giKSwgY3dkPXNlbGYuY2hlY2tvdXRfcm9v
dCwgcmV0dXJuX3N0ZGVycj1GYWxzZSkKIAogICAgIGRlZiBjb21taXR0ZXJfZW1haWxfZm9yX3Jl
dmlzaW9uKHNlbGYsIHJldmlzaW9uKToKQEAgLTM4OSw3ICszODMsOCBAQCBjbGFzcyBTVk4oU0NN
KToKICAgICAgICAgIyBGSVhNRTogVGhpcyBzaG91bGQgcHJvYmFibHkgdXNlIGN3ZD1zZWxmLmNo
ZWNrb3V0X3Jvb3QuCiAgICAgICAgIHJ1bl9jb21tYW5kKFsnc3ZuJywgJ3JldmVydCddICsgZmls
ZV9wYXRocykKIAotICAgIGRlZiBjb21taXRfd2l0aF9tZXNzYWdlKHNlbGYsIG1lc3NhZ2UsIHVz
ZXJuYW1lPU5vbmUpOgorICAgIGRlZiBjb21taXRfd2l0aF9tZXNzYWdlKHNlbGYsIG1lc3NhZ2Us
IHVzZXJuYW1lPU5vbmUsIGdpdF9jb21taXQ9Tm9uZSwgc3F1YXNoPU5vbmUpOgorICAgICAgICAj
IHNxdWFzaCBhbmQgZ2l0LWNvbW1pdCBhcmUgbm90IHVzZWQgYnkgU1ZOLgogICAgICAgICBpZiBz
ZWxmLmRyeXJ1bjoKICAgICAgICAgICAgICMgUmV0dXJuIGEgc3RyaW5nIHdoaWNoIGxvb2tzIGxp
a2UgYSBjb21taXQgc28gdGhhdCB0aGluZ3Mgd2hpY2ggcGFyc2UgdGhpcyBvdXRwdXQgd2lsbCBz
dWNjZWVkLgogICAgICAgICAgICAgcmV0dXJuICJEcnkgcnVuLCBubyBjb21taXQuXG5Db21taXR0
ZWQgcmV2aXNpb24gMC4iCkBAIC00NzUsOCArNDcwLDI0IEBAIGNsYXNzIEdpdChTQ00pOgogICAg
ICAgICAjIHBhdGggaXMgYXNzdW1lZCB0byBiZSBjd2QgcmVsYXRpdmU/CiAgICAgICAgIHJ1bl9j
b21tYW5kKFsiZ2l0IiwgImFkZCIsIHBhdGhdKQogCi0gICAgZGVmIGNoYW5nZWRfZmlsZXMoc2Vs
Zik6Ci0gICAgICAgIHN0YXR1c19jb21tYW5kID0gWydnaXQnLCAnZGlmZicsICctcicsICctLW5h
bWUtc3RhdHVzJywgJy1DJywgJy1NJywgJ0hFQUQnXQorICAgIGRlZiBfbWVyZ2VfYmFzZShzZWxm
LCBnaXRfY29tbWl0LCBzcXVhc2gpOgorICAgICAgICBpZiBnaXRfY29tbWl0OgorICAgICAgICAg
ICAgIyBGSVhNRTogQ2FsbGluZyBjb2RlIHNob3VsZCB0dXJuIGNvbW1pdCByYW5nZXMgaW50byBh
IGxpc3Qgb2YgY29tbWl0IElEcworICAgICAgICAgICAgIyBhbmQgdGhlbiB0cmVhdCBlYWNoIGNv
bW1pdCBzZXBhcmF0ZWx5LgorICAgICAgICAgICAgaWYgJy4uJyBub3QgaW4gZ2l0X2NvbW1pdDoK
KyAgICAgICAgICAgICAgICBnaXRfY29tbWl0ID0gZ2l0X2NvbW1pdCArICJeLi4iICsgZ2l0X2Nv
bW1pdAorICAgICAgICAgICAgcmV0dXJuIGdpdF9jb21taXQKKworICAgICAgICBpZiBzZWxmLnNo
b3VsZF9zcXVhc2goc3F1YXNoKToKKyAgICAgICAgICAgIHJldHVybiBzZWxmLnN2bl9tZXJnZV9i
YXNlKCkKKworICAgICAgICAjIEZJWE1FOiBOb24tc3F1YXNoIGJlaGF2aW9yIHNob3VsZCBtYXRj
aCBjb21taXRfd2l0aF9tZXNzYWdlLiBJdCByYWlzZXMgYW4gZXJyb3IKKyAgICAgICAgIyBpZiB0
aGVyZSBhcmUgd29ya2luZyBjb3B5IGNoYW5nZXMgYW5kIC0tc3F1YXNoIG9yIC0tbm8tc3F1YXNo
IHdhc24ndCBwYXNzZWQgaW4uCisgICAgICAgICMgSWYgLS1uby1zcXVhc2gsIHRoZW4gaXQgc2hv
dWxkIHByb2NlZWQgd2l0aCBlYWNoIGxvY2FsIGNvbW1pdCBhcyBhIHNlcGFyYXRlIHBhdGNoLgor
ICAgICAgICByZXR1cm4gJ0hFQUQnCisKKyAgICBkZWYgY2hhbmdlZF9maWxlcyhzZWxmLCBnaXRf
Y29tbWl0PU5vbmUsIHNxdWFzaD1Ob25lKToKKyAgICAgICAgc3RhdHVzX2NvbW1hbmQgPSBbJ2dp
dCcsICdkaWZmJywgJy1yJywgJy0tbmFtZS1zdGF0dXMnLCAnLUMnLCAnLU0nLCAiLS1uby1leHQt
ZGlmZiIsICItLWZ1bGwtaW5kZXgiLCBzZWxmLl9tZXJnZV9iYXNlKGdpdF9jb21taXQsIHNxdWFz
aCldCiAgICAgICAgIHJldHVybiBzZWxmLnJ1bl9zdGF0dXNfYW5kX2V4dHJhY3RfZmlsZW5hbWVz
KHN0YXR1c19jb21tYW5kLCBzZWxmLl9zdGF0dXNfcmVnZXhwKCJBRE0iKSkKIAogICAgIGRlZiBf
Y2hhbmdlc19maWxlc19mb3JfY29tbWl0KHNlbGYsIGdpdF9jb21taXQpOgpAQCAtNTAzLDkgKzUx
NCw5IEBAIGNsYXNzIEdpdChTQ00pOgogICAgIGRlZiBkaXNwbGF5X25hbWUoc2VsZik6CiAgICAg
ICAgIHJldHVybiAiZ2l0IgogCi0gICAgZGVmIGNyZWF0ZV9wYXRjaChzZWxmKToKKyAgICBkZWYg
Y3JlYXRlX3BhdGNoKHNlbGYsIGdpdF9jb21taXQ9Tm9uZSwgc3F1YXNoPU5vbmUpOgogICAgICAg
ICAjIEZJWE1FOiBUaGlzIHNob3VsZCBwcm9iYWJseSB1c2UgY3dkPXNlbGYuY2hlY2tvdXRfcm9v
dAotICAgICAgICByZXR1cm4gcnVuX2NvbW1hbmQoWydnaXQnLCAnZGlmZicsICctLWJpbmFyeScs
ICdIRUFEJ10pCisgICAgICAgIHJldHVybiBydW5fY29tbWFuZChbJ2dpdCcsICdkaWZmJywgJy0t
YmluYXJ5JywgIi0tbm8tZXh0LWRpZmYiLCAiLS1mdWxsLWluZGV4IiwgIi1NIiwgc2VsZi5fbWVy
Z2VfYmFzZShnaXRfY29tbWl0LCBzcXVhc2gpXSkKIAogICAgIEBjbGFzc21ldGhvZAogICAgIGRl
ZiBnaXRfY29tbWl0X2Zyb21fc3ZuX3JldmlzaW9uKGNscywgcmV2aXNpb24pOgpAQCAtNTIxLDcg
KzUzMiw3IEBAIGNsYXNzIEdpdChTQ00pOgogCiAgICAgZGVmIGRpZmZfZm9yX3JldmlzaW9uKHNl
bGYsIHJldmlzaW9uKToKICAgICAgICAgZ2l0X2NvbW1pdCA9IHNlbGYuZ2l0X2NvbW1pdF9mcm9t
X3N2bl9yZXZpc2lvbihyZXZpc2lvbikKLSAgICAgICAgcmV0dXJuIHNlbGYuY3JlYXRlX3BhdGNo
X2Zyb21fbG9jYWxfY29tbWl0KGdpdF9jb21taXQpCisgICAgICAgIHJldHVybiBzZWxmLmNyZWF0
ZV9wYXRjaChnaXRfY29tbWl0KQogCiAgICAgZGVmIGNvbW1pdHRlcl9lbWFpbF9mb3JfcmV2aXNp
b24oc2VsZiwgcmV2aXNpb24pOgogICAgICAgICBnaXRfY29tbWl0ID0gc2VsZi5naXRfY29tbWl0
X2Zyb21fc3ZuX3JldmlzaW9uKHJldmlzaW9uKQpAQCAtNTM4LDExICs1NDksMTAwIEBAIGNsYXNz
IEdpdChTQ00pOgogICAgIGRlZiByZXZlcnRfZmlsZXMoc2VsZiwgZmlsZV9wYXRocyk6CiAgICAg
ICAgIHJ1bl9jb21tYW5kKFsnZ2l0JywgJ2NoZWNrb3V0JywgJ0hFQUQnXSArIGZpbGVfcGF0aHMp
CiAKLSAgICBkZWYgY29tbWl0X3dpdGhfbWVzc2FnZShzZWxmLCBtZXNzYWdlLCB1c2VybmFtZT1O
b25lKToKKyAgICBkZWYgc2hvdWxkX3NxdWFzaChzZWxmLCBzcXVhc2gpOgorICAgICAgICBpZiBz
cXVhc2ggaXMgbm90IE5vbmU6CisgICAgICAgICAgICAjIFNxdWFzaCBpcyBzcGVjaWZpZWQgb24g
dGhlIGNvbW1hbmQtbGluZS4KKyAgICAgICAgICAgIHJldHVybiBzcXVhc2gKKworICAgICAgICBj
b25maWdfc3F1YXNoID0gR2l0LnJlYWRfZ2l0X2NvbmZpZygnd2Via2l0LXBhdGNoLnNxdWFzaCcp
CisgICAgICAgIGlmIChjb25maWdfc3F1YXNoIGFuZCBjb25maWdfc3F1YXNoIGlzIG5vdCAiIik6
CisgICAgICAgICAgICByZXR1cm4gY29uZmlnX3NxdWFzaC5sb3dlcigpID09ICJ0cnVlIgorCisg
ICAgICAgICMgT25seSByYWlzZSBhbiBlcnJvciBpZiB0aGVyZSBhcmUgYWN0dWFsbHkgbXVsdGlw
bGUgY29tbWl0cyB0byBzcXVhc2guCisgICAgICAgIG51bV9sb2NhbF9jb21taXRzID0gbGVuKHNl
bGYubG9jYWxfY29tbWl0cygpKQorICAgICAgICBpZiBudW1fbG9jYWxfY29tbWl0cyA+IDEgb3Ig
bnVtX2xvY2FsX2NvbW1pdHMgPiAwIGFuZCBub3Qgc2VsZi53b3JraW5nX2RpcmVjdG9yeV9pc19j
bGVhbigpOgorICAgICAgICAgICAgd29ya2luZ19kaXJlY3RvcnlfbWVzc2FnZSA9ICIiIGlmIHNl
bGYud29ya2luZ19kaXJlY3RvcnlfaXNfY2xlYW4oKSBlbHNlICIgYW5kIHdvcmtpbmcgY29weSBj
aGFuZ2VzIgorICAgICAgICAgICAgcmFpc2UgU2NyaXB0RXJyb3IobWVzc2FnZT0iIiJUaGVyZSBh
cmUgJXMgbG9jYWwgY29tbWl0cyVzLiBEbyBvbmUgb2YgdGhlIGZvbGxvd2luZzoKKzEpIFVzZSAt
LXNxdWFzaCBvciAtLW5vLXNxdWFzaAorMikgZ2l0IGNvbmZpZyB3ZWJraXQtcGF0Y2guc3F1YXNo
IHRydWUvZmFsc2UKKyIiIiAlIChudW1fbG9jYWxfY29tbWl0cywgd29ya2luZ19kaXJlY3Rvcnlf
bWVzc2FnZSkpCisKKyAgICAgICAgcmV0dXJuIE5vbmUKKworICAgIGRlZiBjb21taXRfd2l0aF9t
ZXNzYWdlKHNlbGYsIG1lc3NhZ2UsIHVzZXJuYW1lPU5vbmUsIGdpdF9jb21taXQ9Tm9uZSwgc3F1
YXNoPU5vbmUpOgogICAgICAgICAjIFVzZXJuYW1lIGlzIGlnbm9yZWQgZHVyaW5nIEdpdCBjb21t
aXRzLgotICAgICAgICBzZWxmLmNvbW1pdF9sb2NhbGx5X3dpdGhfbWVzc2FnZShtZXNzYWdlKQor
ICAgICAgICBpZiBnaXRfY29tbWl0OgorICAgICAgICAgICAgIyBOZWVkIHdvcmtpbmcgZGlyZWN0
b3J5IGNoYW5nZXMgdG8gYmUgY29tbWl0dGVkIHNvIHdlIGNhbiBjaGVja291dCB0aGUgbWVyZ2Ug
YnJhbmNoLgorICAgICAgICAgICAgaWYgbm90IHNlbGYud29ya2luZ19kaXJlY3RvcnlfaXNfY2xl
YW4oKToKKyAgICAgICAgICAgICAgICAjIEZJWE1FOiB3ZWJraXQtcGF0Y2ggbGFuZCB3aWxsIG1v
ZGlmeSB0aGUgQ2hhbmdlTG9ncyB0byBjb3JyZWN0IHRoZSByZXZpZXdlci4KKyAgICAgICAgICAg
ICAgICAjIFRoYXQgd2lsbCBtb2RpZnkgdGhlIHdvcmtpbmctY29weSBhbmQgY2F1c2UgdXMgdG8g
aGl0IHRoaXMgZXJyb3IuCisgICAgICAgICAgICAgICAgIyBUaGUgQ2hhbmdlTG9nIG1vZGlmaWNh
dGlvbiBjb3VsZCBiZSBtYWRlIHRvIG1vZGlmeSB0aGUgZXhpc3RpbmcgbG9jYWwgY29tbWl0Pwor
ICAgICAgICAgICAgICAgIHJhaXNlIFNjcmlwdEVycm9yKG1lc3NhZ2U9IldvcmtpbmcgY29weSBp
cyBtb2RpZmllZC4gQ2Fubm90IGNvbW1pdCBpbmRpdmlkdWFsIGdpdF9jb21taXRzLiIpCisgICAg
ICAgICAgICByZXR1cm4gc2VsZi5fY29tbWl0X29uX2JyYW5jaChtZXNzYWdlLCBnaXRfY29tbWl0
KQorCisgICAgICAgIHNxdWFzaCA9IHNlbGYuc2hvdWxkX3NxdWFzaChzcXVhc2gpCisgICAgICAg
IGlmIHNxdWFzaDoKKyAgICAgICAgICAgIHJ1bl9jb21tYW5kKFsnZ2l0JywgJ3Jlc2V0JywgJy0t
c29mdCcsIHNlbGYuc3ZuX2JyYW5jaF9uYW1lKCldKQorICAgICAgICAgICAgc2VsZi5jb21taXRf
bG9jYWxseV93aXRoX21lc3NhZ2UobWVzc2FnZSkKKyAgICAgICAgZWxpZiBub3Qgc2VsZi53b3Jr
aW5nX2RpcmVjdG9yeV9pc19jbGVhbigpOgorICAgICAgICAgICAgaWYgbm90IGxlbihzZWxmLmxv
Y2FsX2NvbW1pdHMoKSk6CisgICAgICAgICAgICAgICAgIyBUaGVyZSBhcmUgb25seSB3b3JraW5n
IGNvcHkgY2hhbmdlcy4gQXNzdW1lIHRoZXkgc2hvdWxkIGJlIGNvbW1pdHRlZC4KKyAgICAgICAg
ICAgICAgICBzZWxmLmNvbW1pdF9sb2NhbGx5X3dpdGhfbWVzc2FnZShtZXNzYWdlKQorICAgICAg
ICAgICAgZWxpZiBzcXVhc2ggaXMgTm9uZToKKyAgICAgICAgICAgICAgICAjIFRoZSB1c2VyIGRp
ZG4ndCBleHBsaWNpdGx5IHNheSB0byBzcXVhc2ggb3Igbm90IHNxdWFzaC4gVGhlcmUgYXJlIGxv
Y2FsIGNvbW1pdHMKKyAgICAgICAgICAgICAgICAjIGFuZCB3b3JraW5nIGNvcHkgY2hhbmdlcy4g
Tm90IGNsZWFyIHdoYXQgdGhlIHVzZXIgd2FudHMuCisgICAgICAgICAgICAgICAgcmFpc2UgU2Ny
aXB0RXJyb3IobWVzc2FnZT0iIiJUaGVyZSBhcmUgbG9jYWwgY29tbWl0cyBhbmQgd29ya2luZyBj
b3B5IGNoYW5nZXMuIERvIG9uZSBvZiB0aGUgZm9sbG93aW5nOgorMSkgQ29tbWl0L3JldmVydCB3
b3JraW5nIGNvcHkgY2hhbmdlcy4KKzIpIFVzZSAtLXNxdWFzaCBvciAtLW5vLXNxdWFzaAorMykg
Z2l0IGNvbmZpZyB3ZWJraXQtcGF0Y2guc3F1YXNoIHRydWUvZmFsc2UKKyIiIikKKworICAgICAg
ICAjIEZJWE1FOiBUaGlzIHdpbGwgY29tbWl0IGFsbCBsb2NhbCBjb21taXRzLCBlYWNoIHdpdGgg
aXQncyBvd24gbWVzc2FnZS4gV2Ugc2hvdWxkIHJlc3RydWN0dXJlCisgICAgICAgICMgc28gdGhh
dCBlYWNoIGxvY2FsIGNvbW1pdCBoYXMgdGhlIGFwcHJvcHJpYXRlIGNvbW1pdCBtZXNzYWdlIGJh
c2VkIG9mZiBpdCdzIENoYW5nZUxvZ3MuCiAgICAgICAgIHJldHVybiBzZWxmLnB1c2hfbG9jYWxf
Y29tbWl0c190b19zZXJ2ZXIoKQogCisgICAgZGVmIF9jb21taXRfb25fYnJhbmNoKHNlbGYsIG1l
c3NhZ2UsIGdpdF9jb21taXQpOgorICAgICAgICBicmFuY2hfcmVmID0gcnVuX2NvbW1hbmQoWydn
aXQnLCAnc3ltYm9saWMtcmVmJywgJ0hFQUQnXSkuc3RyaXAoKQorICAgICAgICBicmFuY2hfbmFt
ZSA9IGJyYW5jaF9yZWYucmVwbGFjZSgncmVmcy9oZWFkcy8nLCAnJykKKyAgICAgICAgY29tbWl0
X2lkcyA9IHNlbGYuY29tbWl0X2lkc19mcm9tX2NvbW1pdGlzaF9hcmd1bWVudHMoW2dpdF9jb21t
aXRdKQorCisgICAgICAgICMgV2Ugd2FudCB0byBzcXVhc2ggYWxsIHRoaXMgYnJhbmNoJ3MgY29t
bWl0cyBpbnRvIG9uZSBjb21taXQgd2l0aCB0aGUgcHJvcGVyIGRlc2NyaXB0aW9uLgorICAgICAg
ICAjIFdlIGRvIHRoaXMgYnkgZG9pbmcgYSAibWVyZ2UgLS1zcXVhc2giIGludG8gYSBuZXcgY29t
bWl0IGJyYW5jaCwgdGhlbiBkY29tbWl0dGluZyB0aGF0LgorICAgICAgICBNRVJHRV9CUkFOQ0gg
PSAnd2Via2l0LXBhdGNoLWxhbmQnCisgICAgICAgIHNlbGYuZGVsZXRlX2JyYW5jaChNRVJHRV9C
UkFOQ0gpCisKKyAgICAgICAgIyBXZSBtaWdodCBiZSBpbiBhIGRpcmVjdG9yeSB0aGF0J3MgcHJl
c2VudCBpbiB0aGlzIGJyYW5jaCBidXQgbm90IGluIHRoZQorICAgICAgICAjIHRydW5rLiAgTW92
ZSB1cCB0byB0aGUgdG9wIG9mIHRoZSB0cmVlIHNvIHRoYXQgZ2l0IGNvbW1hbmRzIHRoYXQgZXhw
ZWN0IGEKKyAgICAgICAgIyB2YWxpZCBDV0Qgd29uJ3QgZmFpbCBhZnRlciB3ZSBjaGVjayBvdXQg
dGhlIG1lcmdlIGJyYW5jaC4KKyAgICAgICAgb3MuY2hkaXIoc2VsZi5jaGVja291dF9yb290KQor
CisgICAgICAgICMgU3R1ZmYgb3VyIGNoYW5nZSBpbnRvIHRoZSBtZXJnZSBicmFuY2guCisgICAg
ICAgICMgV2Ugd3JhcCBpbiBhIHRyeS4uLmZpbmFsbHkgYmxvY2sgc28gaWYgYW55dGhpbmcgZ29l
cyB3cm9uZywgd2UgY2xlYW4gdXAgdGhlIGJyYW5jaGVzLgorICAgICAgICBjb21taXRfc3VjY2Vl
ZGVkID0gVHJ1ZQorICAgICAgICB0cnk6CisgICAgICAgICAgICBydW5fY29tbWFuZChbJ2dpdCcs
ICdjaGVja291dCcsICctcScsICctYicsIE1FUkdFX0JSQU5DSCwgc2VsZi5zdm5fYnJhbmNoX25h
bWUoKV0pCisKKyAgICAgICAgICAgIGZvciBjb21taXQgaW4gY29tbWl0X2lkczoKKyAgICAgICAg
ICAgICAgICAjIFdlJ3JlIG9uIGEgZGlmZmVyZW50IGJyYW5jaCBub3csIHNvIGNvbnZlcnQgImhl
YWQiIHRvIHRoZSBicmFuY2ggbmFtZS4KKyAgICAgICAgICAgICAgICBjb21taXQgPSByZS5zdWIo
cicoP2kpaGVhZCcsIGJyYW5jaF9uYW1lLCBjb21taXQpCisgICAgICAgICAgICAgICAgIyBGSVhN
RTogT25jZSBjaGFuZ2VkX2ZpbGVzIGFuZCBjcmVhdGVfcGF0Y2ggYXJlIG1vZGlmaWVkIHRvIHNl
cGFyYXRlbHkgaGFuZGxlIGVhY2gKKyAgICAgICAgICAgICAgICAjIGNvbW1pdCBpbiBhIGNvbW1p
dCByYW5nZSwgY29tbWl0IGVhY2ggY2hlcnJ5IHBpY2sgc28gdGhleSdsbCBnZXQgZGNvbW1pdHRl
ZCBzZXBhcmF0ZWx5LgorICAgICAgICAgICAgICAgIHJ1bl9jb21tYW5kKFsnZ2l0JywgJ2NoZXJy
eS1waWNrJywgJy0tbm8tY29tbWl0JywgY29tbWl0XSkKKworICAgICAgICAgICAgcnVuX2NvbW1h
bmQoWydnaXQnLCAnY29tbWl0JywgJy1tJywgbWVzc2FnZV0pCisgICAgICAgICAgICBvdXRwdXQg
PSBzZWxmLnB1c2hfbG9jYWxfY29tbWl0c190b19zZXJ2ZXIoKQorICAgICAgICBleGNlcHQgRXhj
ZXB0aW9uLCBlOgorICAgICAgICAgICAgbG9nKCJDT01NSVQgRkFJTEVEOiAiICsgc3RyKGUpKQor
ICAgICAgICAgICAgb3V0cHV0ID0gIkNvbW1pdCBmYWlsZWQuIgorICAgICAgICAgICAgY29tbWl0
X3N1Y2NlZWRlZCA9IEZhbHNlCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAjIEFuZCB0
aGVuIHN3YXAgYmFjayB0byB0aGUgb3JpZ2luYWwgYnJhbmNoIGFuZCBjbGVhbiB1cC4KKyAgICAg
ICAgICAgIHNlbGYuY2xlYW5fd29ya2luZ19kaXJlY3RvcnkoKQorICAgICAgICAgICAgcnVuX2Nv
bW1hbmQoWydnaXQnLCAnY2hlY2tvdXQnLCAnLXEnLCBicmFuY2hfbmFtZV0pCisgICAgICAgICAg
ICBzZWxmLmRlbGV0ZV9icmFuY2goTUVSR0VfQlJBTkNIKQorCisgICAgICAgIHJldHVybiBvdXRw
dXQKKwogICAgIGRlZiBzdm5fY29tbWl0X2xvZyhzZWxmLCBzdm5fcmV2aXNpb24pOgogICAgICAg
ICBzdm5fcmV2aXNpb24gPSBzZWxmLnN0cmlwX3JfZnJvbV9zdm5fcmV2aXNpb24oc3ZuX3Jldmlz
aW9uKQogICAgICAgICByZXR1cm4gcnVuX2NvbW1hbmQoWydnaXQnLCAnc3ZuJywgJ2xvZycsICct
cicsIHN2bl9yZXZpc2lvbl0pCkBAIC01NjIsMTIgKzY2Miw2IEBAIGNsYXNzIEdpdChTQ00pOgog
ICAgIGRlZiBzdm5fYnJhbmNoX25hbWUoc2VsZik6CiAgICAgICAgIHJldHVybiBHaXQucmVhZF9n
aXRfY29uZmlnKCdzdm4tcmVtb3RlLnN2bi5mZXRjaCcpLnNwbGl0KCc6JylbMV0KIAotICAgIGRl
ZiBjcmVhdGVfcGF0Y2hfZnJvbV9sb2NhbF9jb21taXQoc2VsZiwgY29tbWl0X2lkKToKLSAgICAg
ICAgcmV0dXJuIHJ1bl9jb21tYW5kKFsnZ2l0JywgJ2RpZmYnLCAnLS1iaW5hcnknLCBjb21taXRf
aWQgKyAiXi4uIiArIGNvbW1pdF9pZF0pCi0KLSAgICBkZWYgY3JlYXRlX3BhdGNoX3NpbmNlX2xv
Y2FsX2NvbW1pdChzZWxmLCBjb21taXRfaWQpOgotICAgICAgICByZXR1cm4gcnVuX2NvbW1hbmQo
WydnaXQnLCAnZGlmZicsICctLWJpbmFyeScsIGNvbW1pdF9pZF0pCi0KICAgICBkZWYgY29tbWl0
X2xvY2FsbHlfd2l0aF9tZXNzYWdlKHNlbGYsIG1lc3NhZ2UpOgogICAgICAgICBydW5fY29tbWFu
ZChbJ2dpdCcsICdjb21taXQnLCAnLS1hbGwnLCAnLUYnLCAnLSddLCBpbnB1dD1tZXNzYWdlKQog
CmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291
dC9zY21fdW5pdHRlc3QucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9j
aGVja291dC9zY21fdW5pdHRlc3QucHkKaW5kZXggYzBhNjRkNDgyNzI2OThhYTllYjE5NWUwYjg3
MTgzN2EwYjEwZDgyZS4uZjY3ZmM2NGIxY2M4M2E2ZGI1NDBiZDI1ZDBlNDg1MmVmYjBlMWE0YSAx
MDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQv
c2NtX3VuaXR0ZXN0LnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9u
L2NoZWNrb3V0L3NjbV91bml0dGVzdC5weQpAQCAtMjAyLDE1ICsyMDIsNiBAQCBjbGFzcyBTQ01U
ZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKIAogICAgICMgVGVzdHMgd2hpY2ggYm90aCBHaXRUZXN0
IGFuZCBTVk5UZXN0IHNob3VsZCBydW4uCiAgICAgIyBGSVhNRTogVGhlcmUgbXVzdCBiZSBhIHNp
bXBsZXIgd2F5IHRvIGFkZCB0aGVzZSB3L28gYWRkaW5nIGEgd3JhcHBlciBtZXRob2QgdG8gYm90
aCBzdWJjbGFzc2VzCi0gICAgZGVmIF9zaGFyZWRfdGVzdF9jb21taXRfd2l0aF9tZXNzYWdlKHNl
bGYsIHVzZXJuYW1lPSJkYmF0ZXNAd2Via2l0Lm9yZyIpOgotICAgICAgICB3cml0ZV9pbnRvX2Zp
bGVfYXRfcGF0aCgndGVzdF9maWxlJywgJ21vcmUgdGVzdCBjb250ZW50JykKLSAgICAgICAgY29t
bWl0X3RleHQgPSBzZWxmLnNjbS5jb21taXRfd2l0aF9tZXNzYWdlKCJhbm90aGVyIHRlc3QgY29t
bWl0IiwgdXNlcm5hbWUpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5zY20uc3ZuX3Jl
dmlzaW9uX2Zyb21fY29tbWl0X3RleHQoY29tbWl0X3RleHQpLCAnNScpCi0KLSAgICAgICAgc2Vs
Zi5zY20uZHJ5cnVuID0gVHJ1ZQotICAgICAgICB3cml0ZV9pbnRvX2ZpbGVfYXRfcGF0aCgndGVz
dF9maWxlJywgJ3N0aWxsIG1vcmUgdGVzdCBjb250ZW50JykKLSAgICAgICAgY29tbWl0X3RleHQg
PSBzZWxmLnNjbS5jb21taXRfd2l0aF9tZXNzYWdlKCJ5ZXQgYW5vdGhlciB0ZXN0IGNvbW1pdCIs
IHVzZXJuYW1lKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuc2NtLnN2bl9yZXZpc2lv
bl9mcm9tX2NvbW1pdF90ZXh0KGNvbW1pdF90ZXh0KSwgJzAnKQogCiAgICAgZGVmIF9zaGFyZWRf
dGVzdF9jaGFuZ2VkX2ZpbGVzKHNlbGYpOgogICAgICAgICB3cml0ZV9pbnRvX2ZpbGVfYXRfcGF0
aCgidGVzdF9maWxlIiwgImNoYW5nZWQgY29udGVudCIpCkBAIC01MzgsNiArNTI5LDE2IEBAIFEx
ZFRCeDBBQUFCNDJpdGc0R2xnWUpqR3dNRER5T0RNeE1EdzM0R0JnUUVBSlBRREpBPT0KICAgICAg
ICAgc2VsZi5hc3NlcnRUcnVlKHJlLnNlYXJjaCgnZm91cnRoIGNvbW1pdCcsIHNlbGYuc2NtLmxh
c3Rfc3ZuX2NvbW1pdF9sb2coKSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5zZWFyY2go
J3NlY29uZCBjb21taXQnLCBzZWxmLnNjbS5zdm5fY29tbWl0X2xvZygyKSkpCiAKKyAgICBkZWYg
X3NoYXJlZF90ZXN0X2NvbW1pdF93aXRoX21lc3NhZ2Uoc2VsZiwgdXNlcm5hbWU9Tm9uZSk6Cisg
ICAgICAgIHdyaXRlX2ludG9fZmlsZV9hdF9wYXRoKCd0ZXN0X2ZpbGUnLCAnbW9yZSB0ZXN0IGNv
bnRlbnQnKQorICAgICAgICBjb21taXRfdGV4dCA9IHNlbGYuc2NtLmNvbW1pdF93aXRoX21lc3Nh
Z2UoImFub3RoZXIgdGVzdCBjb21taXQiLCB1c2VybmFtZSkKKyAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChzZWxmLnNjbS5zdm5fcmV2aXNpb25fZnJvbV9jb21taXRfdGV4dChjb21taXRfdGV4dCks
ICc1JykKKworICAgICAgICBzZWxmLnNjbS5kcnlydW4gPSBUcnVlCisgICAgICAgIHdyaXRlX2lu
dG9fZmlsZV9hdF9wYXRoKCd0ZXN0X2ZpbGUnLCAnc3RpbGwgbW9yZSB0ZXN0IGNvbnRlbnQnKQor
ICAgICAgICBjb21taXRfdGV4dCA9IHNlbGYuc2NtLmNvbW1pdF93aXRoX21lc3NhZ2UoInlldCBh
bm90aGVyIHRlc3QgY29tbWl0IiwgdXNlcm5hbWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
c2VsZi5zY20uc3ZuX3JldmlzaW9uX2Zyb21fY29tbWl0X3RleHQoY29tbWl0X3RleHQpLCAnMCcp
CisKICAgICBkZWYgdGVzdF9jb21taXRfdGV4dF9wYXJzaW5nKHNlbGYpOgogICAgICAgICBzZWxm
Ll9zaGFyZWRfdGVzdF9jb21taXRfd2l0aF9tZXNzYWdlKCkKIApAQCAtNzIyLDcgKzcyMywxMTUg
QEAgY2xhc3MgR2l0VGVzdChTQ01UZXN0KToKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoU2Ny
aXB0RXJyb3IsIENoZWNrb3V0KHNjbSkuYXBwbHlfcGF0Y2gsIHBhdGNoLCBmb3JjZT1UcnVlKQog
CiAgICAgZGVmIHRlc3RfY29tbWl0X3RleHRfcGFyc2luZyhzZWxmKToKLSAgICAgICAgc2VsZi5f
c2hhcmVkX3Rlc3RfY29tbWl0X3dpdGhfbWVzc2FnZSgpCisgICAgICAgIHdyaXRlX2ludG9fZmls
ZV9hdF9wYXRoKCd0ZXN0X2ZpbGUnLCAnbW9yZSB0ZXN0IGNvbnRlbnQnKQorICAgICAgICBzZWxm
LnNjbS5jb21taXRfbG9jYWxseV93aXRoX21lc3NhZ2UoImFub3RoZXIgdGVzdCBjb21taXQiKQor
ICAgICAgICBjb21taXRfdGV4dCA9IHNlbGYuc2NtLmNvbW1pdF93aXRoX21lc3NhZ2UoImFub3Ro
ZXIgdGVzdCBjb21taXQiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuc2NtLnN2bl9y
ZXZpc2lvbl9mcm9tX2NvbW1pdF90ZXh0KGNvbW1pdF90ZXh0KSwgJzUnKQorCisgICAgICAgIHNl
bGYuc2NtLmRyeXJ1biA9IFRydWUKKyAgICAgICAgd3JpdGVfaW50b19maWxlX2F0X3BhdGgoJ3Rl
c3RfZmlsZScsICdzdGlsbCBtb3JlIHRlc3QgY29udGVudCcpCisgICAgICAgIHNlbGYuc2NtLmNv
bW1pdF9sb2NhbGx5X3dpdGhfbWVzc2FnZSgieWV0IGFub3RoZXIgdGVzdCBjb21taXQiKQorICAg
ICAgICBjb21taXRfdGV4dCA9IHNlbGYuc2NtLmNvbW1pdF93aXRoX21lc3NhZ2UoInlldCBhbm90
aGVyIHRlc3QgY29tbWl0IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnNjbS5zdm5f
cmV2aXNpb25fZnJvbV9jb21taXRfdGV4dChjb21taXRfdGV4dCksICcwJykKKworICAgIGRlZiBf
b25lX2xvY2FsX2NvbW1pdF9wbHVzX3dvcmtpbmdfY29weV9jaGFuZ2VzKHNlbGYpOgorICAgICAg
ICB3cml0ZV9pbnRvX2ZpbGVfYXRfcGF0aCgndGVzdF9maWxlX2NvbW1pdDEnLCAnbW9yZSB0ZXN0
IGNvbnRlbnQnKQorICAgICAgICBydW5fY29tbWFuZChbJ2dpdCcsICdhZGQnLCAndGVzdF9maWxl
X2NvbW1pdDEnXSkKKyAgICAgICAgc2VsZi5zY20uY29tbWl0X2xvY2FsbHlfd2l0aF9tZXNzYWdl
KCJhbm90aGVyIHRlc3QgY29tbWl0IikKKworICAgICAgICB3cml0ZV9pbnRvX2ZpbGVfYXRfcGF0
aCgndGVzdF9maWxlX2NvbW1pdDInLCAnc3RpbGwgbW9yZSB0ZXN0IGNvbnRlbnQnKQorICAgICAg
ICBydW5fY29tbWFuZChbJ2dpdCcsICdhZGQnLCAndGVzdF9maWxlX2NvbW1pdDInXSkKKworICAg
IGRlZiB0ZXN0X2NvbW1pdF93aXRoX21lc3NhZ2Vfd29ya2luZ19jb3B5X29ubHkoc2VsZik6Cisg
ICAgICAgIHdyaXRlX2ludG9fZmlsZV9hdF9wYXRoKCd0ZXN0X2ZpbGVfY29tbWl0MScsICdtb3Jl
IHRlc3QgY29udGVudCcpCisgICAgICAgIHJ1bl9jb21tYW5kKFsnZ2l0JywgJ2FkZCcsICd0ZXN0
X2ZpbGVfY29tbWl0MSddKQorICAgICAgICBzY20gPSBkZXRlY3Rfc2NtX3N5c3RlbShzZWxmLmdp
dF9jaGVja291dF9wYXRoKQorICAgICAgICBjb21taXRfdGV4dCA9IHNjbS5jb21taXRfd2l0aF9t
ZXNzYWdlKCJ5ZXQgYW5vdGhlciB0ZXN0IGNvbW1pdCIpCisKKyAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChzY20uc3ZuX3JldmlzaW9uX2Zyb21fY29tbWl0X3RleHQoY29tbWl0X3RleHQpLCAnNScp
CisgICAgICAgIHN2bl9sb2cgPSBydW5fY29tbWFuZChbJ2dpdCcsICdzdm4nLCAnbG9nJywgJy0t
bGltaXQ9MScsICctLXZlcmJvc2UnXSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLnNlYXJj
aChyJ3Rlc3RfZmlsZV9jb21taXQxJywgc3ZuX2xvZykpCisKKyAgICBkZWYgdGVzdF9jb21taXRf
d2l0aF9tZXNzYWdlX3NxdWFzaGVkKHNlbGYpOgorICAgICAgICBzZWxmLl9vbmVfbG9jYWxfY29t
bWl0X3BsdXNfd29ya2luZ19jb3B5X2NoYW5nZXMoKQorICAgICAgICBzY20gPSBkZXRlY3Rfc2Nt
X3N5c3RlbShzZWxmLmdpdF9jaGVja291dF9wYXRoKQorICAgICAgICBjb21taXRfdGV4dCA9IHNj
bS5jb21taXRfd2l0aF9tZXNzYWdlKCJ5ZXQgYW5vdGhlciB0ZXN0IGNvbW1pdCIsIHNxdWFzaD1U
cnVlKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2NtLnN2bl9yZXZpc2lvbl9mcm9tX2Nv
bW1pdF90ZXh0KGNvbW1pdF90ZXh0KSwgJzUnKQorICAgICAgICBzdm5fbG9nID0gcnVuX2NvbW1h
bmQoWydnaXQnLCAnc3ZuJywgJ2xvZycsICctLWxpbWl0PTEnLCAnLS12ZXJib3NlJ10pCisgICAg
ICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5zZWFyY2gocid0ZXN0X2ZpbGVfY29tbWl0MicsIHN2bl9s
b2cpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUocmUuc2VhcmNoKHIndGVzdF9maWxlX2NvbW1p
dDEnLCBzdm5fbG9nKSkKKworICAgIGRlZiBfdHdvX2xvY2FsX2NvbW1pdHMoc2VsZik6CisgICAg
ICAgIHdyaXRlX2ludG9fZmlsZV9hdF9wYXRoKCd0ZXN0X2ZpbGVfY29tbWl0MScsICdtb3JlIHRl
c3QgY29udGVudCcpCisgICAgICAgIHJ1bl9jb21tYW5kKFsnZ2l0JywgJ2FkZCcsICd0ZXN0X2Zp
bGVfY29tbWl0MSddKQorICAgICAgICBzZWxmLnNjbS5jb21taXRfbG9jYWxseV93aXRoX21lc3Nh
Z2UoImFub3RoZXIgdGVzdCBjb21taXQiKQorCisgICAgICAgIHdyaXRlX2ludG9fZmlsZV9hdF9w
YXRoKCd0ZXN0X2ZpbGVfY29tbWl0MicsICdzdGlsbCBtb3JlIHRlc3QgY29udGVudCcpCisgICAg
ICAgIHJ1bl9jb21tYW5kKFsnZ2l0JywgJ2FkZCcsICd0ZXN0X2ZpbGVfY29tbWl0MiddKQorICAg
ICAgICBzZWxmLnNjbS5jb21taXRfbG9jYWxseV93aXRoX21lc3NhZ2UoInlldCBhbm90aGVyIHRl
c3QgY29tbWl0IikKKworICAgIGRlZiB0ZXN0X2NvbW1pdF93aXRoX21lc3NhZ2VfZ2l0X2NvbW1p
dChzZWxmKToKKyAgICAgICAgc2VsZi5fdHdvX2xvY2FsX2NvbW1pdHMoKQorCisgICAgICAgIHNj
bSA9IGRldGVjdF9zY21fc3lzdGVtKHNlbGYuZ2l0X2NoZWNrb3V0X3BhdGgpCisgICAgICAgIGNv
bW1pdF90ZXh0ID0gc2NtLmNvbW1pdF93aXRoX21lc3NhZ2UoImFub3RoZXIgdGVzdCBjb21taXQi
LCBnaXRfY29tbWl0PSJIRUFEXiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2NtLnN2bl9y
ZXZpc2lvbl9mcm9tX2NvbW1pdF90ZXh0KGNvbW1pdF90ZXh0KSwgJzUnKQorCisgICAgICAgIHN2
bl9sb2cgPSBydW5fY29tbWFuZChbJ2dpdCcsICdzdm4nLCAnbG9nJywgJy0tbGltaXQ9MScsICct
LXZlcmJvc2UnXSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLnNlYXJjaChyJ3Rlc3RfZmls
ZV9jb21taXQxJywgc3ZuX2xvZykpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UocmUuc2VhcmNo
KHIndGVzdF9maWxlX2NvbW1pdDInLCBzdm5fbG9nKSkKKworICAgIGRlZiB0ZXN0X2NvbW1pdF93
aXRoX21lc3NhZ2VfZ2l0X2NvbW1pdF9yYW5nZShzZWxmKToKKyAgICAgICAgc2VsZi5fdHdvX2xv
Y2FsX2NvbW1pdHMoKQorCisgICAgICAgIHNjbSA9IGRldGVjdF9zY21fc3lzdGVtKHNlbGYuZ2l0
X2NoZWNrb3V0X3BhdGgpCisgICAgICAgIGNvbW1pdF90ZXh0ID0gc2NtLmNvbW1pdF93aXRoX21l
c3NhZ2UoImFub3RoZXIgdGVzdCBjb21taXQiLCBnaXRfY29tbWl0PSJIRUFEfjIuLkhFQUQiKQor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNjbS5zdm5fcmV2aXNpb25fZnJvbV9jb21taXRfdGV4
dChjb21taXRfdGV4dCksICc1JykKKworICAgICAgICBzdm5fbG9nID0gcnVuX2NvbW1hbmQoWydn
aXQnLCAnc3ZuJywgJ2xvZycsICctLWxpbWl0PTEnLCAnLS12ZXJib3NlJ10pCisgICAgICAgIHNl
bGYuYXNzZXJ0VHJ1ZShyZS5zZWFyY2gocid0ZXN0X2ZpbGVfY29tbWl0MScsIHN2bl9sb2cpKQor
ICAgICAgICBzZWxmLmFzc2VydFRydWUocmUuc2VhcmNoKHIndGVzdF9maWxlX2NvbW1pdDInLCBz
dm5fbG9nKSkKKworICAgIGRlZiB0ZXN0X2NvbW1pdF93aXRoX21lc3NhZ2VfbXVsdGlwbGVfbG9j
YWxfY29tbWl0cyhzZWxmKToKKyAgICAgICAgc2VsZi5fdHdvX2xvY2FsX2NvbW1pdHMoKQorICAg
ICAgICBzY20gPSBkZXRlY3Rfc2NtX3N5c3RlbShzZWxmLmdpdF9jaGVja291dF9wYXRoKQorICAg
ICAgICBzZWxmLmFzc2VydFJhaXNlcyhTY3JpcHRFcnJvciwgc2NtLmNvbW1pdF93aXRoX21lc3Nh
Z2UsIFsiYW5vdGhlciB0ZXN0IGNvbW1pdCJdKQorCisgICAgZGVmIHRlc3RfY29tbWl0X3dpdGhf
bWVzc2FnZV9tdWx0aXBsZV9sb2NhbF9jb21taXRzX2FuZF93b3JraW5nX2NvcHkoc2VsZik6Cisg
ICAgICAgIHNlbGYuX3R3b19sb2NhbF9jb21taXRzKCkKKyAgICAgICAgd3JpdGVfaW50b19maWxl
X2F0X3BhdGgoJ3Rlc3RfZmlsZV9jb21taXQxJywgJ3dvcmtpbmcgY29weSBjaGFuZ2UnKQorICAg
ICAgICBzY20gPSBkZXRlY3Rfc2NtX3N5c3RlbShzZWxmLmdpdF9jaGVja291dF9wYXRoKQorICAg
ICAgICBzZWxmLmFzc2VydFJhaXNlcyhTY3JpcHRFcnJvciwgc2NtLmNvbW1pdF93aXRoX21lc3Nh
Z2UsIFsiYW5vdGhlciB0ZXN0IGNvbW1pdCJdKQorCisgICAgZGVmIHRlc3RfY29tbWl0X3dpdGhf
bWVzc2FnZV9naXRfY29tbWl0X2FuZF93b3JraW5nX2NvcHkoc2VsZik6CisgICAgICAgIHNlbGYu
X3R3b19sb2NhbF9jb21taXRzKCkKKyAgICAgICAgd3JpdGVfaW50b19maWxlX2F0X3BhdGgoJ3Rl
c3RfZmlsZV9jb21taXQxJywgJ3dvcmtpbmcgY29weSBjaGFuZ2UnKQorICAgICAgICBzY20gPSBk
ZXRlY3Rfc2NtX3N5c3RlbShzZWxmLmdpdF9jaGVja291dF9wYXRoKQorICAgICAgICBzZWxmLmFz
c2VydFJhaXNlcyhTY3JpcHRFcnJvciwgc2NtLmNvbW1pdF93aXRoX21lc3NhZ2UsIFsiYW5vdGhl
ciB0ZXN0IGNvbW1pdCIsICdnaXRfY29tbWl0PSJIRUFEXiInXSkKKworICAgIGRlZiB0ZXN0X2Nv
bW1pdF93aXRoX21lc3NhZ2VfbXVsdGlwbGVfbG9jYWxfY29tbWl0c19ub19zcXVhc2goc2VsZik6
CisgICAgICAgIHNlbGYuX3R3b19sb2NhbF9jb21taXRzKCkKKyAgICAgICAgc2NtID0gZGV0ZWN0
X3NjbV9zeXN0ZW0oc2VsZi5naXRfY2hlY2tvdXRfcGF0aCkKKyAgICAgICAgY29tbWl0X3RleHQg
PSBzY20uY29tbWl0X3dpdGhfbWVzc2FnZSgieWV0IGFub3RoZXIgdGVzdCBjb21taXQiLCBzcXVh
c2g9RmFsc2UpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2NtLnN2bl9yZXZpc2lvbl9mcm9t
X2NvbW1pdF90ZXh0KGNvbW1pdF90ZXh0KSwgJzUnKQorCisgICAgICAgIHN2bl9sb2cgPSBydW5f
Y29tbWFuZChbJ2dpdCcsICdzdm4nLCAnbG9nJywgJy0tbGltaXQ9MScsICctLXZlcmJvc2UnXSkK
KyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLnNlYXJjaChyJ3Rlc3RfZmlsZV9jb21taXQyJywg
c3ZuX2xvZykpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UocmUuc2VhcmNoKHIndGVzdF9maWxl
X2NvbW1pdDEnLCBzdm5fbG9nKSkKKworICAgICAgICBzdm5fbG9nID0gcnVuX2NvbW1hbmQoWydn
aXQnLCAnc3ZuJywgJ2xvZycsICctLWxpbWl0PTInLCAnLS12ZXJib3NlJ10pCisgICAgICAgIHNl
bGYuYXNzZXJ0VHJ1ZShyZS5zZWFyY2gocid0ZXN0X2ZpbGVfY29tbWl0MScsIHN2bl9sb2cpKQor
CisgICAgZGVmIHRlc3RfY29tbWl0X3dpdGhfbWVzc2FnZV9tdWx0aXBsZV9sb2NhbF9jb21taXRz
X3NxdWFzaChzZWxmKToKKyAgICAgICAgc2VsZi5fdHdvX2xvY2FsX2NvbW1pdHMoKQorICAgICAg
ICBzY20gPSBkZXRlY3Rfc2NtX3N5c3RlbShzZWxmLmdpdF9jaGVja291dF9wYXRoKQorICAgICAg
ICBjb21taXRfdGV4dCA9IHNjbS5jb21taXRfd2l0aF9tZXNzYWdlKCJ5ZXQgYW5vdGhlciB0ZXN0
IGNvbW1pdCIsIHNxdWFzaD1UcnVlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNjbS5zdm5f
cmV2aXNpb25fZnJvbV9jb21taXRfdGV4dChjb21taXRfdGV4dCksICc1JykKKworICAgICAgICBz
dm5fbG9nID0gcnVuX2NvbW1hbmQoWydnaXQnLCAnc3ZuJywgJ2xvZycsICctLWxpbWl0PTEnLCAn
LS12ZXJib3NlJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5zZWFyY2gocid0ZXN0X2Zp
bGVfY29tbWl0MicsIHN2bl9sb2cpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUocmUuc2VhcmNo
KHIndGVzdF9maWxlX2NvbW1pdDEnLCBzdm5fbG9nKSkKIAogICAgIGRlZiB0ZXN0X3JldmVyc2Vf
ZGlmZihzZWxmKToKICAgICAgICAgc2VsZi5fc2hhcmVkX3Rlc3RfcmV2ZXJzZV9kaWZmKCkKQEAg
LTczMyw2ICs4NDIsNTkgQEAgY2xhc3MgR2l0VGVzdChTQ01UZXN0KToKICAgICBkZWYgdGVzdF9z
dm5fYXBwbHlfZ2l0X3BhdGNoKHNlbGYpOgogICAgICAgICBzZWxmLl9zaGFyZWRfdGVzdF9zdm5f
YXBwbHlfZ2l0X3BhdGNoKCkKIAorICAgIGRlZiB0ZXN0X2NyZWF0ZV9wYXRjaF9sb2NhbF9wbHVz
X3dvcmtpbmdfY29weShzZWxmKToKKyAgICAgICAgc2VsZi5fb25lX2xvY2FsX2NvbW1pdF9wbHVz
X3dvcmtpbmdfY29weV9jaGFuZ2VzKCkKKyAgICAgICAgc2NtID0gZGV0ZWN0X3NjbV9zeXN0ZW0o
c2VsZi5naXRfY2hlY2tvdXRfcGF0aCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoU2NyaXB0
RXJyb3IsIHNjbS5jcmVhdGVfcGF0Y2gpCisKKyAgICBkZWYgdGVzdF9jcmVhdGVfcGF0Y2hfbXVs
dGlwbGVfbG9jYWxfY29tbWl0cyhzZWxmKToKKyAgICAgICAgc2VsZi5fdHdvX2xvY2FsX2NvbW1p
dHMoKQorICAgICAgICBzY20gPSBkZXRlY3Rfc2NtX3N5c3RlbShzZWxmLmdpdF9jaGVja291dF9w
YXRoKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhTY3JpcHRFcnJvciwgc2NtLmNyZWF0ZV9w
YXRjaCkKKworICAgIGRlZiB0ZXN0X2NyZWF0ZV9wYXRjaF9zcXVhc2hlZChzZWxmKToKKyAgICAg
ICAgc2VsZi5fb25lX2xvY2FsX2NvbW1pdF9wbHVzX3dvcmtpbmdfY29weV9jaGFuZ2VzKCkKKyAg
ICAgICAgc2NtID0gZGV0ZWN0X3NjbV9zeXN0ZW0oc2VsZi5naXRfY2hlY2tvdXRfcGF0aCkKKyAg
ICAgICAgcGF0Y2ggPSBzY20uY3JlYXRlX3BhdGNoKHNxdWFzaD1UcnVlKQorICAgICAgICBzZWxm
LmFzc2VydFRydWUocmUuc2VhcmNoKHIndGVzdF9maWxlX2NvbW1pdDInLCBwYXRjaCkpCisgICAg
ICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5zZWFyY2gocid0ZXN0X2ZpbGVfY29tbWl0MScsIHBhdGNo
KSkKKworICAgIGRlZiB0ZXN0X2NyZWF0ZV9wYXRjaF9ub3Rfc3F1YXNoZWQoc2VsZik6CisgICAg
ICAgIHNlbGYuX29uZV9sb2NhbF9jb21taXRfcGx1c193b3JraW5nX2NvcHlfY2hhbmdlcygpCisg
ICAgICAgIHNjbSA9IGRldGVjdF9zY21fc3lzdGVtKHNlbGYuZ2l0X2NoZWNrb3V0X3BhdGgpCisg
ICAgICAgIHBhdGNoID0gc2NtLmNyZWF0ZV9wYXRjaChzcXVhc2g9RmFsc2UpCisgICAgICAgIHNl
bGYuYXNzZXJ0VHJ1ZShyZS5zZWFyY2gocid0ZXN0X2ZpbGVfY29tbWl0MicsIHBhdGNoKSkKKyAg
ICAgICAgc2VsZi5hc3NlcnRGYWxzZShyZS5zZWFyY2gocid0ZXN0X2ZpbGVfY29tbWl0MScsIHBh
dGNoKSkKKworICAgIGRlZiB0ZXN0X2NyZWF0ZV9wYXRjaF9naXRfY29tbWl0KHNlbGYpOgorICAg
ICAgICBzZWxmLl90d29fbG9jYWxfY29tbWl0cygpCisgICAgICAgIHNjbSA9IGRldGVjdF9zY21f
c3lzdGVtKHNlbGYuZ2l0X2NoZWNrb3V0X3BhdGgpCisgICAgICAgIHBhdGNoID0gc2NtLmNyZWF0
ZV9wYXRjaChnaXRfY29tbWl0PSJIRUFEXiIpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5z
ZWFyY2gocid0ZXN0X2ZpbGVfY29tbWl0MScsIHBhdGNoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRG
YWxzZShyZS5zZWFyY2gocid0ZXN0X2ZpbGVfY29tbWl0MicsIHBhdGNoKSkKKworICAgIGRlZiB0
ZXN0X2NyZWF0ZV9wYXRjaF9naXRfY29tbWl0X3JhbmdlKHNlbGYpOgorICAgICAgICBzZWxmLl90
d29fbG9jYWxfY29tbWl0cygpCisgICAgICAgIHNjbSA9IGRldGVjdF9zY21fc3lzdGVtKHNlbGYu
Z2l0X2NoZWNrb3V0X3BhdGgpCisgICAgICAgIHBhdGNoID0gc2NtLmNyZWF0ZV9wYXRjaChnaXRf
Y29tbWl0PSJIRUFEfjIuLkhFQUQiKQorICAgICAgICBzZWxmLmFzc2VydFRydWUocmUuc2VhcmNo
KHIndGVzdF9maWxlX2NvbW1pdDInLCBwYXRjaCkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShy
ZS5zZWFyY2gocid0ZXN0X2ZpbGVfY29tbWl0MScsIHBhdGNoKSkKKworICAgIGRlZiB0ZXN0X2Ny
ZWF0ZV9wYXRjaF9tdWx0aXBsZV9sb2NhbF9jb21taXRzX25vX3NxdWFzaChzZWxmKToKKyAgICAg
ICAgc2VsZi5fdHdvX2xvY2FsX2NvbW1pdHMoKQorICAgICAgICBzY20gPSBkZXRlY3Rfc2NtX3N5
c3RlbShzZWxmLmdpdF9jaGVja291dF9wYXRoKQorICAgICAgICBwYXRjaCA9IHNjbS5jcmVhdGVf
cGF0Y2goc3F1YXNoPUZhbHNlKQorICAgICAgICAjIEZJWE1FOiBJdCdzIHdlaXJkIHRoYXQgd2l0
aCBzcXVhc2g9RmFsc2UsIGNyZWF0ZV9wYXRjaC9jaGFuZ2VkX2ZpbGVzIGlnbm9yZXMgbG9jYWwg
Y29tbWl0cywKKyAgICAgICAgIyBidXQgY29tbWl0X3dpdGhfbWVzc2FnZSBjb21taXRzIHRoZW0u
CisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShwYXRjaCA9PSAiIikKKworICAgIGRlZiB0ZXN0X2Ny
ZWF0ZV9wYXRjaF9tdWx0aXBsZV9sb2NhbF9jb21taXRzX3NxdWFzaChzZWxmKToKKyAgICAgICAg
c2VsZi5fdHdvX2xvY2FsX2NvbW1pdHMoKQorICAgICAgICBzY20gPSBkZXRlY3Rfc2NtX3N5c3Rl
bShzZWxmLmdpdF9jaGVja291dF9wYXRoKQorICAgICAgICBwYXRjaCA9IHNjbS5jcmVhdGVfcGF0
Y2goc3F1YXNoPVRydWUpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5zZWFyY2gocid0ZXN0
X2ZpbGVfY29tbWl0MicsIHBhdGNoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLnNlYXJj
aChyJ3Rlc3RfZmlsZV9jb21taXQxJywgcGF0Y2gpKQorCiAgICAgZGVmIHRlc3RfY3JlYXRlX2Jp
bmFyeV9wYXRjaChzZWxmKToKICAgICAgICAgIyBDcmVhdGUgYSBnaXQgYmluYXJ5IHBhdGNoIGFu
ZCBjaGVjayB0aGUgY29udGVudHMuCiAgICAgICAgIHNjbSA9IGRldGVjdF9zY21fc3lzdGVtKHNl
bGYuZ2l0X2NoZWNrb3V0X3BhdGgpCkBAIC03NTUsMTMgKzkxNyw2MiBAQCBjbGFzcyBHaXRUZXN0
KFNDTVRlc3QpOgogICAgICAgICB3cml0ZV9pbnRvX2ZpbGVfYXRfcGF0aCh0ZXN0X2ZpbGVfcGF0
aCwgZmlsZV9jb250ZW50cykKICAgICAgICAgcnVuX2NvbW1hbmQoWydnaXQnLCAnYWRkJywgdGVz
dF9maWxlX25hbWVdKQogICAgICAgICBydW5fY29tbWFuZChbJ2dpdCcsICdjb21taXQnLCAnLW0n
LCAnYmluYXJ5IGRpZmYnXSkKLSAgICAgICAgcGF0Y2hfZnJvbV9sb2NhbF9jb21taXQgPSBzY20u
Y3JlYXRlX3BhdGNoX2Zyb21fbG9jYWxfY29tbWl0KCdIRUFEJykKKyAgICAgICAgcGF0Y2hfZnJv
bV9sb2NhbF9jb21taXQgPSBzY20uY3JlYXRlX3BhdGNoKCdIRUFEJykKICAgICAgICAgc2VsZi5h
c3NlcnRUcnVlKHJlLnNlYXJjaChyJ1xubGl0ZXJhbCAwXG4nLCBwYXRjaF9mcm9tX2xvY2FsX2Nv
bW1pdCkpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5zZWFyY2gocidcbmxpdGVyYWwgMjU2
XG4nLCBwYXRjaF9mcm9tX2xvY2FsX2NvbW1pdCkpCi0gICAgICAgIHBhdGNoX3NpbmNlX2xvY2Fs
X2NvbW1pdCA9IHNjbS5jcmVhdGVfcGF0Y2hfc2luY2VfbG9jYWxfY29tbWl0KCdIRUFEXjEnKQot
ICAgICAgICBzZWxmLmFzc2VydFRydWUocmUuc2VhcmNoKHInXG5saXRlcmFsIDBcbicsIHBhdGNo
X3NpbmNlX2xvY2FsX2NvbW1pdCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5zZWFyY2go
cidcbmxpdGVyYWwgMjU2XG4nLCBwYXRjaF9zaW5jZV9sb2NhbF9jb21taXQpKQotICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKHBhdGNoX2Zyb21fbG9jYWxfY29tbWl0LCBwYXRjaF9zaW5jZV9sb2Nh
bF9jb21taXQpCisKKyAgICBkZWYgdGVzdF9jaGFuZ2VkX2ZpbGVzX2xvY2FsX3BsdXNfd29ya2lu
Z19jb3B5KHNlbGYpOgorICAgICAgICBzZWxmLl9vbmVfbG9jYWxfY29tbWl0X3BsdXNfd29ya2lu
Z19jb3B5X2NoYW5nZXMoKQorICAgICAgICBzY20gPSBkZXRlY3Rfc2NtX3N5c3RlbShzZWxmLmdp
dF9jaGVja291dF9wYXRoKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhTY3JpcHRFcnJvciwg
c2NtLmNoYW5nZWRfZmlsZXMpCisKKyAgICBkZWYgdGVzdF9jaGFuZ2VkX2ZpbGVzX211bHRpcGxl
X2xvY2FsX2NvbW1pdHMoc2VsZik6CisgICAgICAgIHNlbGYuX3R3b19sb2NhbF9jb21taXRzKCkK
KyAgICAgICAgc2NtID0gZGV0ZWN0X3NjbV9zeXN0ZW0oc2VsZi5naXRfY2hlY2tvdXRfcGF0aCkK
KyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoU2NyaXB0RXJyb3IsIHNjbS5jaGFuZ2VkX2ZpbGVz
KQorCisgICAgZGVmIHRlc3RfY2hhbmdlZF9maWxlc19zcXVhc2hlZChzZWxmKToKKyAgICAgICAg
c2VsZi5fb25lX2xvY2FsX2NvbW1pdF9wbHVzX3dvcmtpbmdfY29weV9jaGFuZ2VzKCkKKyAgICAg
ICAgc2NtID0gZGV0ZWN0X3NjbV9zeXN0ZW0oc2VsZi5naXRfY2hlY2tvdXRfcGF0aCkKKyAgICAg
ICAgZmlsZXMgPSBzY20uY2hhbmdlZF9maWxlcyhzcXVhc2g9VHJ1ZSkKKyAgICAgICAgc2VsZi5h
c3NlcnRUcnVlKCd0ZXN0X2ZpbGVfY29tbWl0MicgaW4gZmlsZXMpCisgICAgICAgIHNlbGYuYXNz
ZXJ0VHJ1ZSgndGVzdF9maWxlX2NvbW1pdDEnIGluIGZpbGVzKQorCisgICAgZGVmIHRlc3RfY2hh
bmdlZF9maWxlc19ub3Rfc3F1YXNoZWQoc2VsZik6CisgICAgICAgIHNlbGYuX29uZV9sb2NhbF9j
b21taXRfcGx1c193b3JraW5nX2NvcHlfY2hhbmdlcygpCisgICAgICAgIHNjbSA9IGRldGVjdF9z
Y21fc3lzdGVtKHNlbGYuZ2l0X2NoZWNrb3V0X3BhdGgpCisgICAgICAgIGZpbGVzID0gc2NtLmNo
YW5nZWRfZmlsZXMoc3F1YXNoPUZhbHNlKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoJ3Rlc3Rf
ZmlsZV9jb21taXQyJyBpbiBmaWxlcykKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSgndGVzdF9m
aWxlX2NvbW1pdDEnIGluIGZpbGVzKQorCisgICAgZGVmIHRlc3RfY2hhbmdlZF9maWxlc19naXRf
Y29tbWl0KHNlbGYpOgorICAgICAgICBzZWxmLl90d29fbG9jYWxfY29tbWl0cygpCisgICAgICAg
IHNjbSA9IGRldGVjdF9zY21fc3lzdGVtKHNlbGYuZ2l0X2NoZWNrb3V0X3BhdGgpCisgICAgICAg
IGZpbGVzID0gc2NtLmNoYW5nZWRfZmlsZXMoZ2l0X2NvbW1pdD0iSEVBRF4iKQorICAgICAgICBz
ZWxmLmFzc2VydFRydWUoJ3Rlc3RfZmlsZV9jb21taXQxJyBpbiBmaWxlcykKKyAgICAgICAgc2Vs
Zi5hc3NlcnRGYWxzZSgndGVzdF9maWxlX2NvbW1pdDInIGluIGZpbGVzKQorCisgICAgZGVmIHRl
c3RfY2hhbmdlZF9maWxlc19naXRfY29tbWl0X3JhbmdlKHNlbGYpOgorICAgICAgICBzZWxmLl90
d29fbG9jYWxfY29tbWl0cygpCisgICAgICAgIHNjbSA9IGRldGVjdF9zY21fc3lzdGVtKHNlbGYu
Z2l0X2NoZWNrb3V0X3BhdGgpCisgICAgICAgIGZpbGVzID0gc2NtLmNoYW5nZWRfZmlsZXMoZ2l0
X2NvbW1pdD0iSEVBRH4yLi5IRUFEIikKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCd0ZXN0X2Zp
bGVfY29tbWl0MScgaW4gZmlsZXMpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgndGVzdF9maWxl
X2NvbW1pdDInIGluIGZpbGVzKQorCisgICAgZGVmIHRlc3RfY2hhbmdlZF9maWxlc19tdWx0aXBs
ZV9sb2NhbF9jb21taXRzX25vX3NxdWFzaChzZWxmKToKKyAgICAgICAgc2VsZi5fdHdvX2xvY2Fs
X2NvbW1pdHMoKQorICAgICAgICBzY20gPSBkZXRlY3Rfc2NtX3N5c3RlbShzZWxmLmdpdF9jaGVj
a291dF9wYXRoKQorICAgICAgICBmaWxlcyA9IHNjbS5jaGFuZ2VkX2ZpbGVzKHNxdWFzaD1GYWxz
ZSkKKyAgICAgICAgIyBGSVhNRTogSXQncyB3ZWlyZCB0aGF0IHdpdGggc3F1YXNoPUZhbHNlLCBj
cmVhdGVfcGF0Y2gvY2hhbmdlZF9maWxlcyBpZ25vcmVzIGxvY2FsIGNvbW1pdHMsCisgICAgICAg
ICMgYnV0IGNvbW1pdF93aXRoX21lc3NhZ2UgY29tbWl0cyB0aGVtLgorICAgICAgICBzZWxmLmFz
c2VydFRydWUobGVuKGZpbGVzKSA9PSAwKQorCisgICAgZGVmIHRlc3RfY2hhbmdlZF9maWxlc19t
dWx0aXBsZV9sb2NhbF9jb21taXRzX3NxdWFzaChzZWxmKToKKyAgICAgICAgc2VsZi5fdHdvX2xv
Y2FsX2NvbW1pdHMoKQorICAgICAgICBzY20gPSBkZXRlY3Rfc2NtX3N5c3RlbShzZWxmLmdpdF9j
aGVja291dF9wYXRoKQorICAgICAgICBmaWxlcyA9IHNjbS5jaGFuZ2VkX2ZpbGVzKHNxdWFzaD1U
cnVlKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoJ3Rlc3RfZmlsZV9jb21taXQyJyBpbiBmaWxl
cykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCd0ZXN0X2ZpbGVfY29tbWl0MScgaW4gZmlsZXMp
CiAKICAgICBkZWYgdGVzdF9jaGFuZ2VkX2ZpbGVzKHNlbGYpOgogICAgICAgICBzZWxmLl9zaGFy
ZWRfdGVzdF9jaGFuZ2VkX2ZpbGVzKCkKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMv
d2Via2l0cHkvY29tbW9uL25ldC9yaWV0dmVsZC5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvY29tbW9uL25ldC9yaWV0dmVsZC5weQppbmRleCBhOWU1YjFhNDg2YWEzOWM1ODdjNGUw
YTAzMDU4YmUwOTIwNTA2ZWEzLi45Y2M5N2YyOGVkMWFjMzg3YTNiNTA3ZmJjNTM5NjAzMjRjMjRj
MDhjIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQv
cmlldHZlbGQucHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0
L3JpZXR2ZWxkLnB5CkBAIC0yNiw2ICsyNiw3IEBACiAjIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogIyBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgogCitpbXBvcnQgbG9nZ2luZwogaW1wb3J0IG9zCiBpbXBvcnQgcmUKIGltcG9ydCBzdGF0
CkBAIC01MCwyMyArNTEsMTkgQEAgY2xhc3MgUmlldHZlbGQob2JqZWN0KToKICAgICBkZWYgX19p
bml0X18oc2VsZiwgZXhlY3V0aXZlLCBkcnlydW49RmFsc2UpOgogICAgICAgICBzZWxmLmRyeXJ1
biA9IGRyeXJ1bgogICAgICAgICBzZWxmLl9leGVjdXRpdmUgPSBleGVjdXRpdmUKLSAgICAgICAg
c2VsZi5fdXBsb2FkX3B5ID0gdXBsb2FkLl9fZmlsZV9fCi0gICAgICAgICMgQ2hvcCBvZmYgdGhl
IGxhc3QgY2hhcmFjdGVyIHNvIHdlIG1vZGlmeSBwZXJtaXNzaW9ucyBvbiB0aGUgcHkgZmlsZSBp
bnN0ZWFkIG9mIHRoZSBweWMuCi0gICAgICAgIGlmIG9zLnBhdGguc3BsaXRleHQoc2VsZi5fdXBs
b2FkX3B5KVsxXSA9PSAiLnB5YyI6Ci0gICAgICAgICAgICBzZWxmLl91cGxvYWRfcHkgPSBzZWxm
Ll91cGxvYWRfcHlbOi0xXQotICAgICAgICBvcy5jaG1vZChzZWxmLl91cGxvYWRfcHksIG9zLnN0
YXQoc2VsZi5fdXBsb2FkX3B5KS5zdF9tb2RlIHwgc3RhdC5TX0lYVVNSIHwgc3RhdC5TX0lYR1JQ
IHwgc3RhdC5TX0lYT1RIKQogCiAgICAgZGVmIHVybF9mb3JfaXNzdWUoc2VsZiwgY29kZXJldmll
d19pc3N1ZSk6CiAgICAgICAgIGlmIG5vdCBjb2RlcmV2aWV3X2lzc3VlOgogICAgICAgICAgICAg
cmV0dXJuIE5vbmUKICAgICAgICAgcmV0dXJuICIlcyVzIiAlIChjb25maWcuY29kZXJldmlld19z
ZXJ2ZXJfdXJsLCBjb2RlcmV2aWV3X2lzc3VlKQogCi0gICAgZGVmIHBvc3Qoc2VsZiwgbWVzc2Fn
ZT1Ob25lLCBjb2RlcmV2aWV3X2lzc3VlPU5vbmUsIGNjPU5vbmUpOgorICAgIGRlZiBwb3N0KHNl
bGYsIGRpZmYsIG1lc3NhZ2U9Tm9uZSwgY29kZXJldmlld19pc3N1ZT1Ob25lLCBjYz1Ob25lKToK
ICAgICAgICAgaWYgbm90IG1lc3NhZ2U6CiAgICAgICAgICAgICByYWlzZSBTY3JpcHRFcnJvcigi
UmlldHZlbGQgcmVxdWlyZXMgYSBtZXNzYWdlLiIpCiAKICAgICAgICAgYXJncyA9IFsKLSAgICAg
ICAgICAgIHNlbGYuX3VwbG9hZF9weSwKKyAgICAgICAgICAgICMgRmlyc3QgYXJndW1lbnQgaXMg
ZW1wdHkgc3RyaW5nIHRvIG1pbWljIHN5cy5hcmd2LgorICAgICAgICAgICAgIiIsCiAgICAgICAg
ICAgICAiLS1hc3N1bWVfeWVzIiwKICAgICAgICAgICAgICItLXNlcnZlcj0lcyIgJSBjb25maWcu
Y29kZXJldmlld19zZXJ2ZXJfaG9zdCwKICAgICAgICAgICAgICItLW1lc3NhZ2U9JXMiICUgbWVz
c2FnZSwKQEAgLTgwLDEwICs3NywxNSBAQCBjbGFzcyBSaWV0dmVsZChvYmplY3QpOgogICAgICAg
ICAgICAgbG9nKCJXb3VsZCBoYXZlIHJ1biAlcyIgJSBhcmdzKQogICAgICAgICAgICAgcmV0dXJu
CiAKLSAgICAgICAgb3V0cHV0ID0gc2VsZi5fZXhlY3V0aXZlLnJ1bl9hbmRfdGhyb3dfaWZfZmFp
bChhcmdzKQotICAgICAgICBtYXRjaCA9IHJlLnNlYXJjaCgiSXNzdWUgY3JlYXRlZFwuIFVSTDog
IiArCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZy5jb2RlcmV2aWV3X3NlcnZlcl9y
ZWdleCArCi0gICAgICAgICAgICAgICAgICAgICAgICAgICIoP1A8Y29kZXJldmlld19pc3N1ZT5c
ZCspIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0KQotICAgICAgICBpZiBtYXRj
aDoKLSAgICAgICAgICAgIHJldHVybiBpbnQobWF0Y2guZ3JvdXAoJ2NvZGVyZXZpZXdfaXNzdWUn
KSkKKyAgICAgICAgIyBTZXQgbG9nZ2luZyBsZXZlbCB0byBhdm9pZCByaWV0dmVsZCdzIGxvZ2dp
bmcgc3Bldy4KKyAgICAgICAgb2xkX2xldmVsX25hbWUgPSBsb2dnaW5nLmdldExvZ2dlcigpLmdl
dEVmZmVjdGl2ZUxldmVsKCkKKyAgICAgICAgbG9nZ2luZy5nZXRMb2dnZXIoKS5zZXRMZXZlbChs
b2dnaW5nLkVSUk9SKQorCisgICAgICAgICMgVXNlIFJlYWxNYWluIGluc3RlYWQgb2YgY2FsbGlu
ZyB1cGxvYWQgZnJvbSB0aGUgY29tbWFuZGxpbmUgc28gdGhhdAorICAgICAgICAjIHdlIGNhbiBw
YXNzIGluIHRoZSBkaWZmIG91cnNlbHZlcy4gT3RoZXJ3aXNlLCB1cGxvYWQgd2lsbCBqdXN0IHVz
ZQorICAgICAgICAjIGdpdCBkaWZmIGZvciBnaXQgY2hlY2tvdXRzLCB3aGljaCBkb2Vzbid0IHJl
c3BlY3QgLS1zcXVhc2ggYW5kIC0tZ2l0LWNvbW1pdC4KKyAgICAgICAgaXNzdWUsIHBhdGNoc2V0
ID0gdXBsb2FkLlJlYWxNYWluKGFyZ3NbMTpdLCBkYXRhPWRpZmYpCisKKyAgICAgICAgIyBSZXNl
dCBsb2dnaW5nIGxldmVsIHRvIHRoZSBvcmlnaW5hbCB2YWx1ZS4KKyAgICAgICAgbG9nZ2luZy5n
ZXRMb2dnZXIoKS5zZXRMZXZlbChvbGRfbGV2ZWxfbmFtZSkKKyAgICAgICAgcmV0dXJuIGlzc3Vl
CmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL29wdHBhcnNl
ci5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvb3B0cGFyc2VyLnB5Cmlu
ZGV4IDU3NmMxNmE2YTc2YzJkZjc5Y2I1NzhmYTc3NmU3YzYwNjljYTM0Y2IuLmJiNDc4OGE1NWRi
NjhmYmM3MTA0ODQ5OTYzZTg5YjI2YmM0M2Q1ODUgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvc3R5bGUvb3B0cGFyc2VyLnB5CisrKyBiL1dlYktpdFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvc3R5bGUvb3B0cGFyc2VyLnB5CkBAIC0xNDcsNyArMTQ3LDggQEAgY2xhc3Mg
Q29tbWFuZE9wdGlvblZhbHVlcyhvYmplY3QpOgogICAgICAgICAgICAgICAgICBnaXRfY29tbWl0
PU5vbmUsCiAgICAgICAgICAgICAgICAgIGlzX3ZlcmJvc2U9RmFsc2UsCiAgICAgICAgICAgICAg
ICAgIG1pbl9jb25maWRlbmNlPTEsCi0gICAgICAgICAgICAgICAgIG91dHB1dF9mb3JtYXQ9ImVt
YWNzIik6CisgICAgICAgICAgICAgICAgIG91dHB1dF9mb3JtYXQ9ImVtYWNzIiwKKyAgICAgICAg
ICAgICAgICAgc3F1YXNoPUZhbHNlKToKICAgICAgICAgaWYgZmlsdGVyX3J1bGVzIGlzIE5vbmU6
CiAgICAgICAgICAgICBmaWx0ZXJfcnVsZXMgPSBbXQogCkBAIC0xNjYsNiArMTY3LDcgQEAgY2xh
c3MgQ29tbWFuZE9wdGlvblZhbHVlcyhvYmplY3QpOgogICAgICAgICBzZWxmLmlzX3ZlcmJvc2Ug
PSBpc192ZXJib3NlCiAgICAgICAgIHNlbGYubWluX2NvbmZpZGVuY2UgPSBtaW5fY29uZmlkZW5j
ZQogICAgICAgICBzZWxmLm91dHB1dF9mb3JtYXQgPSBvdXRwdXRfZm9ybWF0CisgICAgICAgIHNl
bGYuc3F1YXNoID0gc3F1YXNoCiAKICAgICAjIFVzZWZ1bCBmb3IgdW5pdCB0ZXN0aW5nLgogICAg
IGRlZiBfX2VxX18oc2VsZiwgb3RoZXIpOgpAQCAtMTgwLDYgKzE4Miw4IEBAIGNsYXNzIENvbW1h
bmRPcHRpb25WYWx1ZXMob2JqZWN0KToKICAgICAgICAgICAgIHJldHVybiBGYWxzZQogICAgICAg
ICBpZiBzZWxmLm91dHB1dF9mb3JtYXQgIT0gb3RoZXIub3V0cHV0X2Zvcm1hdDoKICAgICAgICAg
ICAgIHJldHVybiBGYWxzZQorICAgICAgICBpZiBzZWxmLnNxdWFzaCAhPSBvdGhlci5zcXVhc2g6
CisgICAgICAgICAgICByZXR1cm4gRmFsc2UKIAogICAgICAgICByZXR1cm4gVHJ1ZQogCkBAIC0y
MTQsNiArMjE4LDggQEAgY2xhc3MgQXJndW1lbnRQcmludGVyKG9iamVjdCk6CiAgICAgICAgICAg
ICBmbGFnc1snZmlsdGVyJ10gPSAiLCIuam9pbihmaWx0ZXJfcnVsZXMpCiAgICAgICAgIGlmIG9w
dGlvbnMuZ2l0X2NvbW1pdDoKICAgICAgICAgICAgIGZsYWdzWydnaXQtY29tbWl0J10gPSBvcHRp
b25zLmdpdF9jb21taXQKKyAgICAgICAgaWYgb3B0aW9ucy5zcXVhc2g6CisgICAgICAgICAgICBm
bGFnc1snc3F1YXNoJ10gPSBvcHRpb25zLnNxdWFzaAogCiAgICAgICAgIGZsYWdfc3RyaW5nID0g
JycKICAgICAgICAgIyBBbHBoYWJldGl6aW5nIGxldHMgdXMgdW5pdCB0ZXN0IHRoaXMgbWV0aG9k
LgpAQCAtMzAzLDkgKzMwOSwxMCBAQCBjbGFzcyBBcmd1bWVudFBhcnNlcihvYmplY3QpOgogICAg
ICAgICBwYXJzZXIuYWRkX29wdGlvbigiLWYiLCAiLS1maWx0ZXItcnVsZXMiLCBtZXRhdmFyPSJS
VUxFUyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3Q9ImZpbHRlcl92YWx1ZSIsIGhl
bHA9ZmlsdGVyX2hlbHApCiAKLSAgICAgICAgZ2l0X2hlbHAgPSAiY2hlY2sgYWxsIGNoYW5nZXMg
YWZ0ZXIgdGhlIGdpdmVuIGdpdCBjb21taXQuIgotICAgICAgICBwYXJzZXIuYWRkX29wdGlvbigi
LWciLCAiLS1naXQtY29tbWl0IiwgIi0tZ2l0LWRpZmYiLCAiLS1naXQtc2luY2UiLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICBtZXRhdmFyPSJDT01NSVQiLCBkZXN0PSJnaXRfc2luY2UiLCBo
ZWxwPWdpdF9oZWxwLCkKKyAgICAgICAgZ2l0X2NvbW1pdF9oZWxwID0gKCJjaGVjayBhbGwgY2hh
bmdlcyBpbiB0aGUgZ2l2ZW4gZ2l0IGNvbW1pdC4gIgorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIlVzZSAnY29tbWl0X2lkLi4nIHRvIGNoZWNrIGFsbCBjaGFuZ2VzIGFmdGVyIGNvbW1taXRf
aWQiKQorICAgICAgICBwYXJzZXIuYWRkX29wdGlvbigiLWciLCAiLS1naXQtZGlmZiIsICItLWdp
dC1jb21taXQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICBtZXRhdmFyPSJDT01NSVQiLCBk
ZXN0PSJnaXRfY29tbWl0IiwgaGVscD1naXRfY29tbWl0X2hlbHAsKQogCiAgICAgICAgIG1pbl9j
b25maWRlbmNlX2hlbHAgPSAoInNldCB0aGUgbWluaW11bSBjb25maWRlbmNlIG9mIHN0eWxlIGVy
cm9ycyAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInRvIHJlcG9ydC4gIENhbiBi
ZSBhbiBpbnRlZ2VyIDEtNSwgd2l0aCAxICIKQEAgLTMyMyw2ICszMzAsMTQgQEAgY2xhc3MgQXJn
dW1lbnRQYXJzZXIob2JqZWN0KToKICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdD0ib3V0
cHV0X2Zvcm1hdCIsIGRlZmF1bHQ9ZGVmYXVsdF9vdXRwdXRfZm9ybWF0LAogICAgICAgICAgICAg
ICAgICAgICAgICAgICBoZWxwPW91dHB1dF9mb3JtYXRfaGVscCkKIAorICAgICAgICBzcXVhc2hf
aGVscCA9ICgiQWxsIGRpZmZzIGZyb20gdGhlIHJlbW90ZSBicmFuY2ggYXJlIGNoZWNrZWQuIgor
ICAgICAgICAgICAgICAgICAgICAgICAiSWYgZXhjbHVkZWQsIHByb21wdHMgd2hldGhlciB0byBz
cXVhc2ggd2hlbiB0aGVyZSBhcmUgbXVsdGlwbGUgY29tbWl0cy4iKQorICAgICAgICBwYXJzZXIu
YWRkX29wdGlvbigiLXMiLCAiLS1zcXVhc2giLCBhY3Rpb249InN0b3JlX3RydWUiLCBkZXN0PSJz
cXVhc2giLCBoZWxwPXNxdWFzaF9oZWxwKQorCisgICAgICAgIHNxdWFzaF9oZWxwID0gKCJPbmx5
IHdvcmtpbmcgY29weSBkaWZmcyBhcmUgY2hlY2tlZC4iCisgICAgICAgICAgICAgICAgICAgICAg
ICJJZiBleGNsdWRlZCwgcHJvbXB0cyB3aGV0aGVyIHRvIHNxdWFzaCB3aGVuIHRoZXJlIGFyZSBt
dWx0aXBsZSBjb21taXRzLiIpCisgICAgICAgIHBhcnNlci5hZGRfb3B0aW9uKCItLW5vLXNxdWFz
aCIsIGFjdGlvbj0ic3RvcmVfZmFsc2UiLCBkZXN0PSJzcXVhc2giLCBoZWxwPXNxdWFzaF9oZWxw
KQorCiAgICAgICAgIHZlcmJvc2VfaGVscCA9ICJlbmFibGUgdmVyYm9zZSBsb2dnaW5nLiIKICAg
ICAgICAgcGFyc2VyLmFkZF9vcHRpb24oIi12IiwgIi0tdmVyYm9zZSIsIGRlc3Q9ImlzX3ZlcmJv
c2UiLCBkZWZhdWx0PUZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb249InN0
b3JlX3RydWUiLCBoZWxwPXZlcmJvc2VfaGVscCkKQEAgLTQwNyw3ICs0MjIsNyBAQCBjbGFzcyBB
cmd1bWVudFBhcnNlcihvYmplY3QpOgogICAgICAgICAob3B0aW9ucywgcGF0aHMpID0gc2VsZi5f
cGFyc2VyLnBhcnNlX2FyZ3MoYXJncz1hcmdzKQogCiAgICAgICAgIGZpbHRlcl92YWx1ZSA9IG9w
dGlvbnMuZmlsdGVyX3ZhbHVlCi0gICAgICAgIGdpdF9jb21taXQgPSBvcHRpb25zLmdpdF9zaW5j
ZQorICAgICAgICBnaXRfY29tbWl0ID0gb3B0aW9ucy5naXRfY29tbWl0CiAgICAgICAgIGlzX3Zl
cmJvc2UgPSBvcHRpb25zLmlzX3ZlcmJvc2UKICAgICAgICAgbWluX2NvbmZpZGVuY2UgPSBvcHRp
b25zLm1pbl9jb25maWRlbmNlCiAgICAgICAgIG91dHB1dF9mb3JtYXQgPSBvcHRpb25zLm91dHB1
dF9mb3JtYXQKQEAgLTQyMywxNCArNDM4LDYgQEAgY2xhc3MgQXJndW1lbnRQYXJzZXIob2JqZWN0
KToKICAgICAgICAgICAgIHNlbGYuX3BhcnNlX2Vycm9yKCdZb3UgY2Fubm90IHByb3ZpZGUgYm90
aCBwYXRocyBhbmQgYSBnaXQgJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NvbW1p
dCBhdCB0aGUgc2FtZSB0aW1lLicpCiAKLSAgICAgICAgIyBGSVhNRTogQWRkIHVuaXQgdGVzdHMu
Ci0gICAgICAgIGlmIGdpdF9jb21taXQgYW5kICcuLicgaW4gZ2l0X2NvbW1pdDoKLSAgICAgICAg
ICAgICMgRklYTUU6IElmIHRoZSByYW5nZSBpcyBhICIuLi4iLCB0aGUgY29kZSBzaG91bGQgZmlu
ZCB0aGUgY29tbW9uCi0gICAgICAgICAgICAjICAgICAgICBhbmNlc3RvciBhbmQgc3RhcnQgdGhl
cmUuICBTZWUgZ2l0IGRpZmYgLS1oZWxwIGZvciBob3cKLSAgICAgICAgICAgICMgICAgICAgICIu
Li4iIHVzdWFsbHkgd29ya3MuCi0gICAgICAgICAgICBzZWxmLl9wYXJzZV9lcnJvcignaW52YWxp
ZCAtLWdpdC1jb21taXQgb3B0aW9uOiBvcHRpb24gZG9lcyAnCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAnbm90IHN1cHBvcnQgcmFuZ2VzICIuLiI6ICVzJyAlIGdpdF9jb21taXQpCi0K
ICAgICAgICAgbWluX2NvbmZpZGVuY2UgPSBpbnQobWluX2NvbmZpZGVuY2UpCiAgICAgICAgIGlm
IChtaW5fY29uZmlkZW5jZSA8IDEpIG9yIChtaW5fY29uZmlkZW5jZSA+IDUpOgogICAgICAgICAg
ICAgc2VsZi5fcGFyc2VfZXJyb3IoJ29wdGlvbiAtLW1pbi1jb25maWRlbmNlOiBpbnZhbGlkIGlu
dGVnZXI6ICcKQEAgLTQ1MSw3ICs0NTgsOCBAQCBjbGFzcyBBcmd1bWVudFBhcnNlcihvYmplY3Qp
OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnaXRfY29tbWl0PWdpdF9j
b21taXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzX3ZlcmJvc2U9
aXNfdmVyYm9zZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWluX2Nv
bmZpZGVuY2U9bWluX2NvbmZpZGVuY2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG91dHB1dF9mb3JtYXQ9b3V0cHV0X2Zvcm1hdCkKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgb3V0cHV0X2Zvcm1hdD1vdXRwdXRfZm9ybWF0LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcXVhc2g9b3B0aW9ucy5zcXVhc2gpCiAKICAg
ICAgICAgcmV0dXJuIChwYXRocywgb3B0aW9ucykKIApkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMv
U2NyaXB0cy93ZWJraXRweS9zdHlsZS9vcHRwYXJzZXJfdW5pdHRlc3QucHkgYi9XZWJLaXRUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL29wdHBhcnNlcl91bml0dGVzdC5weQppbmRleCAxYzUy
NWM2YjM0MGZmMjI5NDEwMjgxMDMzYmQxNjFiMGI4Yzc3ZGIxLi5iN2UzZWRhZDU4N2VjNWVjMDcy
NjUzMWY3OTM0NTU0NzM1OTJkOWFjIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dl
YmtpdHB5L3N0eWxlL29wdHBhcnNlcl91bml0dGVzdC5weQorKysgYi9XZWJLaXRUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L3N0eWxlL29wdHBhcnNlcl91bml0dGVzdC5weQpAQCAtMTE0LDEwICsxMTQs
NiBAQCBjbGFzcyBBcmd1bWVudFBhcnNlclRlc3QoTG9nZ2luZ1Rlc3RDYXNlKToKICAgICAgICAg
c2VsZi5hc3NlcnRSYWlzZXMoU3lzdGVtRXhpdCwgcGFyc2UsIFsnLS1iYWQnXSkKICAgICAgICAg
c2VsZi5hc3NlcnRMb2coWydFUlJPUjogbm8gc3VjaCBvcHRpb246IC0tYmFkXG4nXSkKIAotICAg
ICAgICBzZWxmLmFzc2VydFJhaXNlcyhTeXN0ZW1FeGl0LCBwYXJzZSwgWyctLWdpdC1kaWZmPWFh
Li5iYiddKQotICAgICAgICBzZWxmLmFzc2VydExvZyhbJ0VSUk9SOiBpbnZhbGlkIC0tZ2l0LWNv
bW1pdCBvcHRpb246ICcKLSAgICAgICAgICAgICAgICAgICAgICAgICdvcHRpb24gZG9lcyBub3Qg
c3VwcG9ydCByYW5nZXMgIi4uIjogYWEuLmJiXG4nXSkKLQogICAgICAgICBzZWxmLmFzc2VydFJh
aXNlcyhTeXN0ZW1FeGl0LCBwYXJzZSwgWyctLW1pbi1jb25maWRlbmNlPWJhZCddKQogICAgICAg
ICBzZWxmLmFzc2VydExvZyhbJ0VSUk9SOiBvcHRpb24gLS1taW4tY29uZmlkZW5jZTogJwogICAg
ICAgICAgICAgICAgICAgICAgICAgImludmFsaWQgaW50ZWdlciB2YWx1ZTogJ2JhZCdcbiJdKQpA
QCAtMTczLDggKzE2OSw2IEBAIGNsYXNzIEFyZ3VtZW50UGFyc2VyVGVzdChMb2dnaW5nVGVzdENh
c2UpOgogICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhvcHRpb25zLmdpdF9jb21taXQsICdjb21t
aXQnKQogICAgICAgICAoZmlsZXMsIG9wdGlvbnMpID0gcGFyc2UoWyctLWdpdC1kaWZmPWNvbW1p
dCddKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhvcHRpb25zLmdpdF9jb21taXQsICdjb21t
aXQnKQotICAgICAgICAoZmlsZXMsIG9wdGlvbnMpID0gcGFyc2UoWyctLWdpdC1zaW5jZT1jb21t
aXQnXSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMob3B0aW9ucy5naXRfY29tbWl0LCAnY29t
bWl0JykKICAgICAgICAgKGZpbGVzLCBvcHRpb25zKSA9IHBhcnNlKFsnLS12ZXJib3NlJ10pCiAg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKG9wdGlvbnMuaXNfdmVyYm9zZSwgVHJ1ZSkKIApkaWZm
IC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZV9yZWZlcmVuY2VzLnB5
IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZV9yZWZlcmVuY2VzLnB5CmluZGV4
IGJhMjgwNmVhZGMwZjUxMTZiMGFmYzFmNDU5NWZmOWZlYTAyMTJlZWUuLjFiZjA4N2Q5NTQ2Nzgx
YWY4NTljZTZhMDQ1ODFhZTQ1MTBhMWMzNzIgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvc3R5bGVfcmVmZXJlbmNlcy5weQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRz
L3dlYmtpdHB5L3N0eWxlX3JlZmVyZW5jZXMucHkKQEAgLTc1LDkgKzc1LDYgQEAgY2xhc3MgV2Vi
S2l0Q2hlY2tvdXQob2JqZWN0KToKICAgICAgICAgIiIiUmV0dXJuIHRoZSBjaGVja291dCByb290
IGFzIGFuIGFic29sdXRlIHBhdGguIiIiCiAgICAgICAgIHJldHVybiBzZWxmLl9zY20uY2hlY2tv
dXRfcm9vdAogCi0gICAgZGVmIGNyZWF0ZV9wYXRjaChzZWxmKToKLSAgICAgICAgcmV0dXJuIHNl
bGYuX3NjbS5jcmVhdGVfcGF0Y2goKQotCi0gICAgZGVmIGNyZWF0ZV9wYXRjaF9zaW5jZV9sb2Nh
bF9jb21taXQoc2VsZiwgY29tbWl0KToKLSAgICAgICAgcmV0dXJuIHNlbGYuX3NjbS5jcmVhdGVf
cGF0Y2hfc2luY2VfbG9jYWxfY29tbWl0KGNvbW1pdCkKKyAgICBkZWYgY3JlYXRlX3BhdGNoKHNl
bGYsIGdpdF9jb21taXQsIHNxdWFzaCk6CisgICAgICAgIHJldHVybiBzZWxmLl9zY20uY3JlYXRl
X3BhdGNoKGdpdF9jb21taXQsIHNxdWFzaCkKIApkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2Ny
aXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL2Rvd25sb2FkLnB5IGIvV2ViS2l0VG9vbHMvU2Ny
aXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL2Rvd25sb2FkLnB5CmluZGV4IGQ5NjBiYmU2OWI4
MDMxNzU5MTkzODgzZjQ1YWUxOTkxYTFiOWIxNDguLjlkZWRhYzJjODBmZTk0OTZmNDM3OTA0ZGZj
MGI2OWY3NzNhMWM5NDMgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkv
dG9vbC9jb21tYW5kcy9kb3dubG9hZC5weQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtp
dHB5L3Rvb2wvY29tbWFuZHMvZG93bmxvYWQucHkKQEAgLTk0LDcgKzk0LDcgQEAgSWYgYSBidWcg
aWQgaXMgcHJvdmlkZWQsIG9yIG9uZSBjYW4gYmUgZm91bmQgaW4gdGhlIENoYW5nZUxvZyBsYW5k
IHdpbGwgdXBkYXRlIHQKIAogICAgIGRlZiBfcHJlcGFyZV9zdGF0ZShzZWxmLCBvcHRpb25zLCBh
cmdzLCB0b29sKToKICAgICAgICAgcmV0dXJuIHsKLSAgICAgICAgICAgICJidWdfaWQiIDogKGFy
Z3MgYW5kIGFyZ3NbMF0pIG9yIHRvb2wuY2hlY2tvdXQoKS5idWdfaWRfZm9yX3RoaXNfY29tbWl0
KCkKKyAgICAgICAgICAgICJidWdfaWQiOiAoYXJncyBhbmQgYXJnc1swXSkgb3IgdG9vbC5jaGVj
a291dCgpLmJ1Z19pZF9mb3JfdGhpc19jb21taXQob3B0aW9ucy5naXRfY29tbWl0LCBvcHRpb25z
LnNxdWFzaCksCiAgICAgICAgIH0KIAogCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRz
L3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvdXBsb2FkLnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93
ZWJraXRweS90b29sL2NvbW1hbmRzL3VwbG9hZC5weQppbmRleCBiZGYwNjBhYTAyOTkyYTM4YmQ3
YjAyMjY0ZmI5YTlhMDJhNTkwNjYzLi5iMzRiYTFiYmQyNTgwMzEzY2MwZWJiNWU3NjVjMzcxZjc5
NWM2OGEyIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29t
bWFuZHMvdXBsb2FkLnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9j
b21tYW5kcy91cGxvYWQucHkKQEAgLTE0MSwxNiArMTQxLDE2IEBAIGNsYXNzIE9ic29sZXRlQXR0
YWNobWVudHMoQWJzdHJhY3RTZXF1ZW5jZWRDb21tYW5kKToKIAogCiBjbGFzcyBBYnN0cmFjdFBh
dGNoVXBsb2FkaW5nQ29tbWFuZChBYnN0cmFjdFNlcXVlbmNlZENvbW1hbmQpOgotICAgIGRlZiBf
YnVnX2lkKHNlbGYsIGFyZ3MsIHRvb2wsIHN0YXRlKToKKyAgICBkZWYgX2J1Z19pZChzZWxmLCBv
cHRpb25zLCBhcmdzLCB0b29sLCBzdGF0ZSk6CiAgICAgICAgICMgUGVyZmVyIGEgYnVnIGlkIHBh
c3NlZCBhcyBhbiBhcmd1bWVudCBvdmVyIGEgYnVnIHVybCBpbiB0aGUgZGlmZiAoaS5lLiBDaGFu
Z2VMb2dzKS4KICAgICAgICAgYnVnX2lkID0gYXJncyBhbmQgYXJnc1swXQogICAgICAgICBpZiBu
b3QgYnVnX2lkOgotICAgICAgICAgICAgYnVnX2lkID0gdG9vbC5jaGVja291dCgpLmJ1Z19pZF9m
b3JfdGhpc19jb21taXQoKQorICAgICAgICAgICAgYnVnX2lkID0gdG9vbC5jaGVja291dCgpLmJ1
Z19pZF9mb3JfdGhpc19jb21taXQob3B0aW9ucy5naXRfY29tbWl0LCBvcHRpb25zLnNxdWFzaCkK
ICAgICAgICAgcmV0dXJuIGJ1Z19pZAogCiAgICAgZGVmIF9wcmVwYXJlX3N0YXRlKHNlbGYsIG9w
dGlvbnMsIGFyZ3MsIHRvb2wpOgogICAgICAgICBzdGF0ZSA9IHt9Ci0gICAgICAgIHN0YXRlWyJi
dWdfaWQiXSA9IHNlbGYuX2J1Z19pZChhcmdzLCB0b29sLCBzdGF0ZSkKKyAgICAgICAgc3RhdGVb
ImJ1Z19pZCJdID0gc2VsZi5fYnVnX2lkKG9wdGlvbnMsIGFyZ3MsIHRvb2wsIHN0YXRlKQogICAg
ICAgICBpZiBub3Qgc3RhdGVbImJ1Z19pZCJdOgogICAgICAgICAgICAgZXJyb3IoIk5vIGJ1ZyBp
ZCBwYXNzZWQgYW5kIG5vIGJ1ZyB1cmwgZm91bmQgaW4gQ2hhbmdlTG9ncy4iKQogICAgICAgICBy
ZXR1cm4gc3RhdGUKQEAgLTIyMyw3ICsyMjMsNyBAQCBjbGFzcyBVcGxvYWQoQWJzdHJhY3RQYXRj
aFVwbG9hZGluZ0NvbW1hbmQpOgogCiAgICAgZGVmIF9wcmVwYXJlX3N0YXRlKHNlbGYsIG9wdGlv
bnMsIGFyZ3MsIHRvb2wpOgogICAgICAgICBzdGF0ZSA9IHt9Ci0gICAgICAgIHN0YXRlWyJidWdf
aWQiXSA9IHNlbGYuX2J1Z19pZChhcmdzLCB0b29sLCBzdGF0ZSkKKyAgICAgICAgc3RhdGVbImJ1
Z19pZCJdID0gc2VsZi5fYnVnX2lkKG9wdGlvbnMsIGFyZ3MsIHRvb2wsIHN0YXRlKQogICAgICAg
ICByZXR1cm4gc3RhdGUKIAogCkBAIC0yNjEsNyArMjYxLDcgQEAgY2xhc3MgUG9zdENvbW1pdHMo
QWJzdHJhY3REZWNsYXJhdGl2ZUNvbW1hbmQpOgogICAgICAgICByZXR1cm4gY29tbWVudF90ZXh0
CiAKICAgICBkZWYgX2RpZmZfZmlsZV9mb3JfY29tbWl0KHNlbGYsIHRvb2wsIGNvbW1pdF9pZCk6
Ci0gICAgICAgIGRpZmYgPSB0b29sLnNjbSgpLmNyZWF0ZV9wYXRjaF9mcm9tX2xvY2FsX2NvbW1p
dChjb21taXRfaWQpCisgICAgICAgIGRpZmYgPSB0b29sLnNjbSgpLmNyZWF0ZV9wYXRjaChjb21t
aXRfaWQpCiAgICAgICAgIHJldHVybiBTdHJpbmdJTy5TdHJpbmdJTyhkaWZmKSAjIGFkZF9wYXRj
aF90b19idWcgZXhwZWN0cyBhIGZpbGUtbGlrZSBvYmplY3QKIAogICAgIGRlZiBleGVjdXRlKHNl
bGYsIG9wdGlvbnMsIGFyZ3MsIHRvb2wpOgpAQCAtMjc0LDcgKzI3NCw3IEBAIGNsYXNzIFBvc3RD
b21taXRzKEFic3RyYWN0RGVjbGFyYXRpdmVDb21tYW5kKToKICAgICAgICAgICAgIGNvbW1pdF9t
ZXNzYWdlID0gdG9vbC5zY20oKS5jb21taXRfbWVzc2FnZV9mb3JfbG9jYWxfY29tbWl0KGNvbW1p
dF9pZCkKIAogICAgICAgICAgICAgIyBQcmVmZXIgLS1idWctaWQ9LCB0aGVuIGEgYnVnIHVybCBp
biB0aGUgY29tbWl0IG1lc3NhZ2UsIHRoZW4gYSBidWcgdXJsIGluIHRoZSBlbnRpcmUgY29tbWl0
IGRpZmYgKGkuZS4gQ2hhbmdlTG9ncykuCi0gICAgICAgICAgICBidWdfaWQgPSBvcHRpb25zLmJ1
Z19pZCBvciBwYXJzZV9idWdfaWQoY29tbWl0X21lc3NhZ2UubWVzc2FnZSgpKSBvciBwYXJzZV9i
dWdfaWQodG9vbC5zY20oKS5jcmVhdGVfcGF0Y2hfZnJvbV9sb2NhbF9jb21taXQoY29tbWl0X2lk
KSkKKyAgICAgICAgICAgIGJ1Z19pZCA9IG9wdGlvbnMuYnVnX2lkIG9yIHBhcnNlX2J1Z19pZChj
b21taXRfbWVzc2FnZS5tZXNzYWdlKCkpIG9yIHBhcnNlX2J1Z19pZCh0b29sLnNjbSgpLmNyZWF0
ZV9wYXRjaChjb21taXRfaWQpKQogICAgICAgICAgICAgaWYgbm90IGJ1Z19pZDoKICAgICAgICAg
ICAgICAgICBsb2coIlNraXBwaW5nICVzOiBObyBidWcgaWQgZm91bmQgaW4gY29tbWl0IG9yIHNw
ZWNpZmllZCB3aXRoIC0tYnVnLWlkLiIgJSBjb21taXRfaWQpCiAgICAgICAgICAgICAgICAgY29u
dGludWUKQEAgLTQwMyw3ICs0MDMsNyBAQCBjbGFzcyBDcmVhdGVCdWcoQWJzdHJhY3REZWNsYXJh
dGl2ZUNvbW1hbmQpOgogICAgICAgICAgICAgY29tbWVudF90ZXh0ICs9ICItLS1cbiIKICAgICAg
ICAgICAgIGNvbW1lbnRfdGV4dCArPSB0b29sLnNjbSgpLmZpbGVzX2NoYW5nZWRfc3VtbWFyeV9m
b3JfY29tbWl0KGNvbW1pdF9pZCkKIAotICAgICAgICBkaWZmID0gdG9vbC5zY20oKS5jcmVhdGVf
cGF0Y2hfZnJvbV9sb2NhbF9jb21taXQoY29tbWl0X2lkKQorICAgICAgICBkaWZmID0gdG9vbC5z
Y20oKS5jcmVhdGVfcGF0Y2goY29tbWl0X2lkKQogICAgICAgICBkaWZmX2ZpbGUgPSBTdHJpbmdJ
Ty5TdHJpbmdJTyhkaWZmKSAjIGNyZWF0ZV9idWcgZXhwZWN0cyBhIGZpbGUtbGlrZSBvYmplY3QK
ICAgICAgICAgYnVnX2lkID0gdG9vbC5idWdzLmNyZWF0ZV9idWcoYnVnX3RpdGxlLCBjb21tZW50
X3RleHQsIG9wdGlvbnMuY29tcG9uZW50LCBkaWZmX2ZpbGUsICJQYXRjaCIsIGNjPW9wdGlvbnMu
Y2MsIG1hcmtfZm9yX3Jldmlldz1vcHRpb25zLnJldmlldywgbWFya19mb3JfY29tbWl0X3F1ZXVl
PW9wdGlvbnMucmVxdWVzdF9jb21taXQpCiAKQEAgLTQxOSwxMSArNDE5LDExIEBAIGNsYXNzIENy
ZWF0ZUJ1ZyhBYnN0cmFjdERlY2xhcmF0aXZlQ29tbWFuZCk6CiAgICAgICAgIGlmIG9wdGlvbnMu
cHJvbXB0OgogICAgICAgICAgICAgKGJ1Z190aXRsZSwgY29tbWVudF90ZXh0KSA9IHNlbGYucHJv
bXB0X2Zvcl9idWdfdGl0bGVfYW5kX2NvbW1lbnQoKQogICAgICAgICBlbHNlOgotICAgICAgICAg
ICAgY29tbWl0X21lc3NhZ2UgPSB0b29sLmNoZWNrb3V0KCkuY29tbWl0X21lc3NhZ2VfZm9yX3Ro
aXNfY29tbWl0KCkKKyAgICAgICAgICAgIGNvbW1pdF9tZXNzYWdlID0gdG9vbC5jaGVja291dCgp
LmNvbW1pdF9tZXNzYWdlX2Zvcl90aGlzX2NvbW1pdChvcHRpb25zLmdpdF9jb21taXQsIG9wdGlv
bnMuc3F1YXNoKQogICAgICAgICAgICAgYnVnX3RpdGxlID0gY29tbWl0X21lc3NhZ2UuZGVzY3Jp
cHRpb24obHN0cmlwPVRydWUsIHN0cmlwX3VybD1UcnVlKQogICAgICAgICAgICAgY29tbWVudF90
ZXh0ID0gY29tbWl0X21lc3NhZ2UuYm9keShsc3RyaXA9VHJ1ZSkKIAotICAgICAgICBkaWZmID0g
dG9vbC5zY20oKS5jcmVhdGVfcGF0Y2goKQorICAgICAgICBkaWZmID0gdG9vbC5zY20oKS5jcmVh
dGVfcGF0Y2gob3B0aW9ucy5naXRfY29tbWl0LCBvcHRpb25zLnNxdWFzaCkKICAgICAgICAgZGlm
Zl9maWxlID0gU3RyaW5nSU8uU3RyaW5nSU8oZGlmZikgIyBjcmVhdGVfYnVnIGV4cGVjdHMgYSBm
aWxlLWxpa2Ugb2JqZWN0CiAgICAgICAgIGJ1Z19pZCA9IHRvb2wuYnVncy5jcmVhdGVfYnVnKGJ1
Z190aXRsZSwgY29tbWVudF90ZXh0LCBvcHRpb25zLmNvbXBvbmVudCwgZGlmZl9maWxlLCAiUGF0
Y2giLCBjYz1vcHRpb25zLmNjLCBtYXJrX2Zvcl9yZXZpZXc9b3B0aW9ucy5yZXZpZXcsIG1hcmtf
Zm9yX2NvbW1pdF9xdWV1ZT1vcHRpb25zLnJlcXVlc3RfY29tbWl0KQogCmRpZmYgLS1naXQgYS9X
ZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvbWFpbi5weSBiL1dlYktpdFRvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvdG9vbC9tYWluLnB5CmluZGV4IGRkNzY1MmQzOTZkYjFmZmM2YmU5MWVi
M2I0OGZkNTJiZmUyOTRjMjIuLjYxODY2NTNjNTMwYTk5OTQzMTVmNmUyMWU5MzYzYzY5MTQ3Zjkx
ZTMgMTAwNzU1Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9tYWluLnB5
CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9tYWluLnB5CkBAIC0xMjAs
NiArMTIwLDcgQEAgY2xhc3MgV2ViS2l0UGF0Y2goTXVsdGlDb21tYW5kVG9vbCk6CiAKICAgICAj
IEZJWE1FOiBUaGlzIG1heSBiZSB1bm5lY2Vzc2FyeSBzaW5jZSB3ZSBwYXNzIGdsb2JhbCBvcHRp
b25zIHRvIGFsbCBjb21tYW5kcyBkdXJpbmcgZXhlY3V0ZSgpIGFzIHdlbGwuCiAgICAgZGVmIGhh
bmRsZV9nbG9iYWxfb3B0aW9ucyhzZWxmLCBvcHRpb25zKToKKyAgICAgICAgc2VsZi5fb3B0aW9u
cyA9IG9wdGlvbnMKICAgICAgICAgaWYgb3B0aW9ucy5kcnlfcnVuOgogICAgICAgICAgICAgc2Vs
Zi5zY20oKS5kcnlydW4gPSBUcnVlCiAgICAgICAgICAgICBzZWxmLmJ1Z3MuZHJ5cnVuID0gVHJ1
ZQpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL21vY2t0b29s
LnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL21vY2t0b29sLnB5CmluZGV4
IGM1NmM1M2U4ODRkOGExNDllYzAyYTIxMzI5OWFiODFjMzJmNzZhMmEuLjQxNzNhY2QxODU0MzYy
YjRkZjEwYTVjYzMwODMxYWEzMjM5OTU4YjEgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvdG9vbC9tb2NrdG9vbC5weQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dl
YmtpdHB5L3Rvb2wvbW9ja3Rvb2wucHkKQEAgLTM4MSw3ICszODEsNyBAQCBjbGFzcyBNb2NrU0NN
KE1vY2spOgogICAgICAgICAjIHdpbGwgYWN0dWFsbHkgYmUgdGhlIHJvb3QuICBTaW5jZSBnZXRj
d2QoKSBpcyB3cm9uZywgdXNlIGEgZ2xvYmFsbHkgZmFrZSByb290IGZvciBub3cuCiAgICAgICAg
IHNlbGYuY2hlY2tvdXRfcm9vdCA9IHNlbGYuZmFrZV9jaGVja291dF9yb290CiAKLSAgICBkZWYg
Y3JlYXRlX3BhdGNoKHNlbGYpOgorICAgIGRlZiBjcmVhdGVfcGF0Y2goc2VsZiwgZ2l0X2NvbW1p
dCwgc3F1YXNoKToKICAgICAgICAgcmV0dXJuICJQYXRjaDEiCiAKICAgICBkZWYgY29tbWl0X2lk
c19mcm9tX2NvbW1pdGlzaF9hcmd1bWVudHMoc2VsZiwgYXJncyk6CkBAIC0zOTYsMTMgKzM5Niw2
IEBAIGNsYXNzIE1vY2tTQ00oTW9jayk6CiAgICAgICAgICAgICAgICAgImh0dHBzOi8vYnVncy5l
eGFtcGxlLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzVcbiIpCiAgICAgICAgIHJhaXNlIEV4Y2VwdGlv
bigiQm9ndXMgY29tbWl0X2lkIGluIGNvbW1pdF9tZXNzYWdlX2Zvcl9sb2NhbF9jb21taXQuIikK
IAotICAgIGRlZiBjcmVhdGVfcGF0Y2hfZnJvbV9sb2NhbF9jb21taXQoc2VsZiwgY29tbWl0X2lk
KToKLSAgICAgICAgaWYgY29tbWl0X2lkID09ICJDb21taXRpc2gxIjoKLSAgICAgICAgICAgIHJl
dHVybiAiUGF0Y2gxIgotICAgICAgICBpZiBjb21taXRfaWQgPT0gIkNvbW1pdGlzaDIiOgotICAg
ICAgICAgICAgcmV0dXJuICJQYXRjaDIiCi0gICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiQm9ndXMg
Y29tbWl0X2lkIGluIGNvbW1pdF9tZXNzYWdlX2Zvcl9sb2NhbF9jb21taXQuIikKLQogICAgIGRl
ZiBkaWZmX2Zvcl9yZXZpc2lvbihzZWxmLCByZXZpc2lvbik6CiAgICAgICAgIHJldHVybiAiRGlm
ZkZvclJldmlzaW9uJXNcbiIgXAogICAgICAgICAgICAgICAgImh0dHA6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEyMzQ1IiAlIHJldmlzaW9uCkBAIC00MjgsMTIgKzQyMSwxMiBA
QCBjbGFzcyBNb2NrQ2hlY2tvdXQob2JqZWN0KToKICAgICBkZWYgYnVnX2lkX2Zvcl9yZXZpc2lv
bihzZWxmLCBzdm5fcmV2aXNpb24pOgogICAgICAgICByZXR1cm4gMTIzNDUKIAotICAgIGRlZiBt
b2RpZmllZF9jaGFuZ2Vsb2dzKHNlbGYpOgorICAgIGRlZiBtb2RpZmllZF9jaGFuZ2Vsb2dzKHNl
bGYsIGdpdF9jb21taXQsIHNxdWFzaCk6CiAgICAgICAgICMgSWRlYWxseSB3ZSdkIHJldHVybiBz
b21ldGhpbmcgbW9yZSBpbnRlcmVzdGluZyBoZXJlLiAgVGhlIHByb2JsZW0gaXMKICAgICAgICAg
IyB0aGF0IExhbmREaWZmIHdpbGwgdHJ5IHRvIGFjdHVhbGx5IHJlYWQgdGhlIHBhdGNoIGZyb20g
ZGlzayEKICAgICAgICAgcmV0dXJuIFtdCiAKLSAgICBkZWYgY29tbWl0X21lc3NhZ2VfZm9yX3Ro
aXNfY29tbWl0KHNlbGYpOgorICAgIGRlZiBjb21taXRfbWVzc2FnZV9mb3JfdGhpc19jb21taXQo
c2VsZiwgZ2l0X2NvbW1pdCwgc3F1YXNoKToKICAgICAgICAgY29tbWl0X21lc3NhZ2UgPSBNb2Nr
KCkKICAgICAgICAgY29tbWl0X21lc3NhZ2UubWVzc2FnZSA9IGxhbWJkYToiVGhpcyBpcyBhIGZh
a2UgY29tbWl0IG1lc3NhZ2UgdGhhdCBpcyBhdCBsZWFzdCA1MCBjaGFyYWN0ZXJzLiIKICAgICAg
ICAgcmV0dXJuIGNvbW1pdF9tZXNzYWdlCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRz
L3dlYmtpdHB5L3Rvb2wvc3RlcHMvYWJzdHJhY3RzdGVwLnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0
cy93ZWJraXRweS90b29sL3N0ZXBzL2Fic3RyYWN0c3RlcC5weQppbmRleCAxYWQzNDNkMjk1ZGZj
MGI5OTNhNjFiZDMwZjRhZjM3ZGI3MTQ0MGI1Li44ZTgzYjRiN2E5Y2E4NzA5Y2Y1NDQ1MzRhYTUz
ODE3MWJjNDE3NTc1IDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rv
b2wvc3RlcHMvYWJzdHJhY3RzdGVwLnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0
cHkvdG9vbC9zdGVwcy9hYnN0cmFjdHN0ZXAucHkKQEAgLTM2LDEwICszNiwxMyBAQCBjbGFzcyBB
YnN0cmFjdFN0ZXAob2JqZWN0KToKICAgICAgICAgc2VsZi5fb3B0aW9ucyA9IG9wdGlvbnMKICAg
ICAgICAgc2VsZi5fcG9ydCA9IE5vbmUKIAotICAgIGRlZiBfcnVuX3NjcmlwdChzZWxmLCBzY3Jp
cHRfbmFtZSwgcXVpZXQ9RmFsc2UsIHBvcnQ9V2ViS2l0UG9ydCk6CisgICAgZGVmIF9ydW5fc2Ny
aXB0KHNlbGYsIHNjcmlwdF9uYW1lLCBhcmdzPU5vbmUsIHF1aWV0PUZhbHNlLCBwb3J0PVdlYktp
dFBvcnQpOgogICAgICAgICBsb2coIlJ1bm5pbmcgJXMiICUgc2NyaXB0X25hbWUpCiAgICAgICAg
ICMgRklYTUU6IFRoaXMgc2hvdWxkIHVzZSBzZWxmLnBvcnQoKQotICAgICAgICBzZWxmLl90b29s
LmV4ZWN1dGl2ZS5ydW5fYW5kX3Rocm93X2lmX2ZhaWwocG9ydC5zY3JpcHRfcGF0aChzY3JpcHRf
bmFtZSksIHF1aWV0KQorICAgICAgICBjb21tYW5kID0gW3BvcnQuc2NyaXB0X3BhdGgoc2NyaXB0
X25hbWUpXQorICAgICAgICBpZiBhcmdzOgorICAgICAgICAgICAgY29tbWFuZC5leHRlbmQoYXJn
cykKKyAgICAgICAgc2VsZi5fdG9vbC5leGVjdXRpdmUucnVuX2FuZF90aHJvd19pZl9mYWlsKGNv
bW1hbmQsIHF1aWV0KQogCiAgICAgIyBGSVhNRTogVGhlIHBvcnQgc2hvdWxkIGxpdmUgb24gdGhl
IHRvb2wuCiAgICAgZGVmIHBvcnQoc2VsZik6CkBAIC00OSw4ICs1Miw4IEBAIGNsYXNzIEFic3Ry
YWN0U3RlcChvYmplY3QpOgogICAgICAgICByZXR1cm4gc2VsZi5fcG9ydAogCiAgICAgX3dlbGxf
a25vd25fa2V5cyA9IHsKLSAgICAgICAgImRpZmYiIDogbGFtYmRhIHNlbGY6IHNlbGYuX3Rvb2wu
c2NtKCkuY3JlYXRlX3BhdGNoKCksCi0gICAgICAgICJjaGFuZ2Vsb2dzIiA6IGxhbWJkYSBzZWxm
OiBzZWxmLl90b29sLmNoZWNrb3V0KCkubW9kaWZpZWRfY2hhbmdlbG9ncygpLAorICAgICAgICAi
ZGlmZiI6IGxhbWJkYSBzZWxmOiBzZWxmLl90b29sLnNjbSgpLmNyZWF0ZV9wYXRjaChzZWxmLl9v
cHRpb25zLmdpdF9jb21taXQsIHNlbGYuX29wdGlvbnMuc3F1YXNoKSwKKyAgICAgICAgImNoYW5n
ZWxvZ3MiOiBsYW1iZGEgc2VsZjogc2VsZi5fdG9vbC5jaGVja291dCgpLm1vZGlmaWVkX2NoYW5n
ZWxvZ3Moc2VsZi5fb3B0aW9ucy5naXRfY29tbWl0LCBzZWxmLl9vcHRpb25zLnNxdWFzaCksCiAg
ICAgfQogCiAgICAgZGVmIGNhY2hlZF9sb29rdXAoc2VsZiwgc3RhdGUsIGtleSwgcHJvbWlzZT1O
b25lKToKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVw
cy9hcHBseXBhdGNod2l0aGxvY2FsY29tbWl0LnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJr
aXRweS90b29sL3N0ZXBzL2FwcGx5cGF0Y2h3aXRobG9jYWxjb21taXQucHkKaW5kZXggNzBkZGZl
NWFjODcyNDI2NDIzZWEzMTdhNzZhMjRhZGUwOTlmMmU5MC4uZmYwOTJiMDNiZTFkYTQ1N2M5YTI3
NWNkOGFhYjUxZWIyNTIyZWM0MiAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJr
aXRweS90b29sL3N0ZXBzL2FwcGx5cGF0Y2h3aXRobG9jYWxjb21taXQucHkKKysrIGIvV2ViS2l0
VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL2FwcGx5cGF0Y2h3aXRobG9jYWxjb21t
aXQucHkKQEAgLTM5LDUgKzM5LDUgQEAgY2xhc3MgQXBwbHlQYXRjaFdpdGhMb2NhbENvbW1pdChB
cHBseVBhdGNoKToKICAgICBkZWYgcnVuKHNlbGYsIHN0YXRlKToKICAgICAgICAgQXBwbHlQYXRj
aC5ydW4oc2VsZiwgc3RhdGUpCiAgICAgICAgIGlmIHNlbGYuX29wdGlvbnMubG9jYWxfY29tbWl0
OgotICAgICAgICAgICAgY29tbWl0X21lc3NhZ2UgPSBzZWxmLl90b29sLmNoZWNrb3V0KCkuY29t
bWl0X21lc3NhZ2VfZm9yX3RoaXNfY29tbWl0KCkKKyAgICAgICAgICAgIGNvbW1pdF9tZXNzYWdl
ID0gc2VsZi5fdG9vbC5jaGVja291dCgpLmNvbW1pdF9tZXNzYWdlX2Zvcl90aGlzX2NvbW1pdChn
aXRfY29tbWl0PU5vbmUsIHNxdWFzaD1GYWxzZSkKICAgICAgICAgICAgIHNlbGYuX3Rvb2wuc2Nt
KCkuY29tbWl0X2xvY2FsbHlfd2l0aF9tZXNzYWdlKGNvbW1pdF9tZXNzYWdlLm1lc3NhZ2UoKSBv
ciBzdGF0ZVsicGF0Y2giXS5uYW1lKCkpCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRz
L3dlYmtpdHB5L3Rvb2wvc3RlcHMvY2hlY2tzdHlsZS5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMv
d2Via2l0cHkvdG9vbC9zdGVwcy9jaGVja3N0eWxlLnB5CmluZGV4IDYzZjAxMTRlZDgyZTk3ZTQ1
NzA3YzhjMjBhOWMwNDMzOWZiYjU4NGIuLjA3Y2U5Y2Y1OTJkNDk0ZjM3YzRjOTRjMGNiMDUxNmI2
NDYzMGU0OWEgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9z
dGVwcy9jaGVja3N0eWxlLnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9v
bC9zdGVwcy9jaGVja3N0eWxlLnB5CkBAIC0zOSw2ICszOSw5IEBAIGNsYXNzIENoZWNrU3R5bGUo
QWJzdHJhY3RTdGVwKToKICAgICAgICAgcmV0dXJuIFsKICAgICAgICAgICAgIE9wdGlvbnMubm9u
X2ludGVyYWN0aXZlLAogICAgICAgICAgICAgT3B0aW9ucy5jaGVja19zdHlsZSwKKyAgICAgICAg
ICAgIE9wdGlvbnMuZ2l0X2NvbW1pdCwKKyAgICAgICAgICAgIE9wdGlvbnMubm9fc3F1YXNoLAor
ICAgICAgICAgICAgT3B0aW9ucy5zcXVhc2gsCiAgICAgICAgIF0KIAogICAgIGRlZiBydW4oc2Vs
Ziwgc3RhdGUpOgpAQCAtNDYsNyArNDksMTYgQEAgY2xhc3MgQ2hlY2tTdHlsZShBYnN0cmFjdFN0
ZXApOgogICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgIG9zLmNoZGlyKHNlbGYuX3Rvb2wuc2Nt
KCkuY2hlY2tvdXRfcm9vdCkKICAgICAgICAgdHJ5OgotICAgICAgICAgICAgc2VsZi5fcnVuX3Nj
cmlwdCgiY2hlY2std2Via2l0LXN0eWxlIikKKyAgICAgICAgICAgIGFyZ3MgPSBbXQorICAgICAg
ICAgICAgaWYgc2VsZi5fb3B0aW9ucy5naXRfY29tbWl0OgorICAgICAgICAgICAgICAgIGFyZ3Mu
YXBwZW5kKCItLWdpdC1jb21taXQiKQorICAgICAgICAgICAgICAgIGFyZ3MuYXBwZW5kKHNlbGYu
X29wdGlvbnMuZ2l0X2NvbW1pdCkKKyAgICAgICAgICAgIGlmIHNlbGYuX3Rvb2wuc2NtKCkuc2hv
dWxkX3NxdWFzaChzZWxmLl9vcHRpb25zLnNxdWFzaCk6CisgICAgICAgICAgICAgICAgYXJncy5h
cHBlbmQoIi0tc3F1YXNoIikKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgYXJn
cy5hcHBlbmQoIi0tbm8tc3F1YXNoIikKKworICAgICAgICAgICAgc2VsZi5fcnVuX3NjcmlwdCgi
Y2hlY2std2Via2l0LXN0eWxlIiwgYXJncykKICAgICAgICAgZXhjZXB0IFNjcmlwdEVycm9yLCBl
OgogICAgICAgICAgICAgaWYgc2VsZi5fb3B0aW9ucy5ub25faW50ZXJhY3RpdmU6CiAgICAgICAg
ICAgICAgICAgIyBXZSBuZWVkIHRvIHJlLXJhaXNlIHRoZSBleGNlcHRpb24gaGVyZSB0byBoYXZl
IHRoZQpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBz
L2NvbW1pdC5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9jb21t
aXQucHkKaW5kZXggMjk0YjQxZTZlMWIwMTMyYzI3Mjk2ODdiMDJmZDYwOGUzZGFlMDk5Ni4uYWJi
NzUyMmUzNDhjNDBkN2I3MmFkZWZhNDc0ZjBlNGI2NjRhMzQ3ZCAxMDA2NDQKLS0tIGEvV2ViS2l0
VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL2NvbW1pdC5weQorKysgYi9XZWJLaXRU
b29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvY29tbWl0LnB5CkBAIC0yNywxMSArMjcs
MjEgQEAKICMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KIAogZnJvbSB3ZWJraXRweS50b29sLnN0ZXBzLmFic3RyYWN0
c3RlcCBpbXBvcnQgQWJzdHJhY3RTdGVwCitmcm9tIHdlYmtpdHB5LnRvb2wuc3RlcHMub3B0aW9u
cyBpbXBvcnQgT3B0aW9ucwogCiAKIGNsYXNzIENvbW1pdChBYnN0cmFjdFN0ZXApOgorICAgIEBj
bGFzc21ldGhvZAorICAgIGRlZiBvcHRpb25zKGNscyk6CisgICAgICAgIHJldHVybiBbCisgICAg
ICAgICAgICBPcHRpb25zLmdpdF9jb21taXQsCisgICAgICAgICAgICBPcHRpb25zLm5vX3NxdWFz
aCwKKyAgICAgICAgICAgIE9wdGlvbnMuc3F1YXNoLAorICAgICAgICBdCisKICAgICBkZWYgcnVu
KHNlbGYsIHN0YXRlKToKLSAgICAgICAgY29tbWl0X21lc3NhZ2UgPSBzZWxmLl90b29sLmNoZWNr
b3V0KCkuY29tbWl0X21lc3NhZ2VfZm9yX3RoaXNfY29tbWl0KCkKKyAgICAgICAgY29tbWl0X21l
c3NhZ2UgPSBzZWxmLl90b29sLmNoZWNrb3V0KCkuY29tbWl0X21lc3NhZ2VfZm9yX3RoaXNfY29t
bWl0KHNlbGYuX29wdGlvbnMuZ2l0X2NvbW1pdCwgc2VsZi5fb3B0aW9ucy5zcXVhc2gpCiAgICAg
ICAgIGlmIGxlbihjb21taXRfbWVzc2FnZS5tZXNzYWdlKCkpIDwgNTA6CiAgICAgICAgICAgICBy
YWlzZSBFeGNlcHRpb24oIkF0dGVtcHRlZCB0byBjb21taXQgd2l0aCBhIGNvbW1pdCBtZXNzYWdl
IHNob3J0ZXIgdGhhbiA1MCBjaGFyYWN0ZXJzLiAgRWl0aGVyIHlvdXIgcGF0Y2ggaXMgbWlzc2lu
ZyBhIENoYW5nZUxvZyBvciB3ZWJraXQtcGF0Y2ggbWF5IGhhdmUgYSBidWcuIikKLSAgICAgICAg
c3RhdGVbImNvbW1pdF90ZXh0Il0gPSAgc2VsZi5fdG9vbC5zY20oKS5jb21taXRfd2l0aF9tZXNz
YWdlKGNvbW1pdF9tZXNzYWdlLm1lc3NhZ2UoKSkKKyAgICAgICAgc3RhdGVbImNvbW1pdF90ZXh0
Il0gPSBzZWxmLl90b29sLnNjbSgpLmNvbW1pdF93aXRoX21lc3NhZ2UoY29tbWl0X21lc3NhZ2Uu
bWVzc2FnZSgpLAorICAgICAgICAgICAgZ2l0X2NvbW1pdD1zZWxmLl9vcHRpb25zLmdpdF9jb21t
aXQsIHNxdWFzaD1zZWxmLl9vcHRpb25zLnNxdWFzaCkKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xz
L1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9vcHRpb25zLnB5IGIvV2ViS2l0VG9vbHMvU2Ny
aXB0cy93ZWJraXRweS90b29sL3N0ZXBzL29wdGlvbnMucHkKaW5kZXggN2Y3NmY1NTFmZjJhNzQ1
ZThhMzc3MWU4N2ExZTc3ZGQyZTAzZDBkNy4uNTI0YTI1Mjk4ZTNiM2RmZDA3NmYyYWUxMzY0ZjUy
NmNkZmIwMDk4MiAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29s
L3N0ZXBzL29wdGlvbnMucHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29s
L3N0ZXBzL29wdGlvbnMucHkKQEAgLTQyLDcgKzQyLDEwIEBAIGNsYXNzIE9wdGlvbnMob2JqZWN0
KToKICAgICBlbWFpbCA9IG1ha2Vfb3B0aW9uKCItLWVtYWlsIiwgYWN0aW9uPSJzdG9yZSIsIHR5
cGU9InN0cmluZyIsIGRlc3Q9ImVtYWlsIiwgaGVscD0iRW1haWwgYWRkcmVzcyB0byB1c2UgaW4g
Q2hhbmdlTG9ncy4iKQogICAgIGZhbmN5X3JldmlldyA9IG1ha2Vfb3B0aW9uKCItLWZhbmN5LXJl
dmlldyIsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsIGRlc3Q9ImZhbmN5X3JldmlldyIsIGRlZmF1bHQ9
RmFsc2UsIGhlbHA9IihFeHBlcmltZW50YWwpIFVwbG9hZCB0aGUgcGF0Y2ggdG8gUmlldHZlbGQg
Y29kZSByZXZpZXcgdG9vbC4iKQogICAgIGZvcmNlX2NsZWFuID0gbWFrZV9vcHRpb24oIi0tZm9y
Y2UtY2xlYW4iLCBhY3Rpb249InN0b3JlX3RydWUiLCBkZXN0PSJmb3JjZV9jbGVhbiIsIGRlZmF1
bHQ9RmFsc2UsIGhlbHA9IkNsZWFuIHdvcmtpbmcgZGlyZWN0b3J5IGJlZm9yZSBhcHBseWluZyBw
YXRjaGVzIChyZW1vdmVzIGxvY2FsIGNoYW5nZXMgYW5kIGNvbW1pdHMpIikKKyMgRklYTUU6IE1h
a2UgY29tbWl0IHJhbmdlcyB0cmVhdCBlYWNoIGNvbW1pdCBzZXBhcmF0ZWx5IGluc3RlYWQgb2Yg
c3F1YXNoaW5nIHRoZW0gaW50byBvbmUuCisgICAgZ2l0X2NvbW1pdCA9IG1ha2Vfb3B0aW9uKCIt
LWdpdC1jb21taXQiLCBhY3Rpb249InN0b3JlIiwgZGVzdD0iZ2l0X2NvbW1pdCIsIGhlbHA9Ikxv
Y2FsIGdpdCBjb21taXQgdG8gdXBsb2FkL2xhbmQuIElmIGEgcmFuZ2UsIHRoZSBjb21taXRzIGFy
ZSBzcXVhc2hlZCBpbnRvIG9uZS4iKQogICAgIGxvY2FsX2NvbW1pdCA9IG1ha2Vfb3B0aW9uKCIt
LWxvY2FsLWNvbW1pdCIsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsIGRlc3Q9ImxvY2FsX2NvbW1pdCIs
IGRlZmF1bHQ9RmFsc2UsIGhlbHA9Ik1ha2UgYSBsb2NhbCBjb21taXQgZm9yIGVhY2ggYXBwbGll
ZCBwYXRjaCIpCisgICAgbm9fc3F1YXNoID0gbWFrZV9vcHRpb24oIi0tbm8tc3F1YXNoIiwgYWN0
aW9uPSJzdG9yZV9mYWxzZSIsIGRlc3Q9InNxdWFzaCIsIGhlbHA9IkRvbid0IHNxdWFzaCBsb2Nh
bCBjb21taXRzIGludG8gb25lIG9uIHVwbG9hZC9sYW5kIChnaXQtb25seSkuIikKICAgICBub25f
aW50ZXJhY3RpdmUgPSBtYWtlX29wdGlvbigiLS1ub24taW50ZXJhY3RpdmUiLCBhY3Rpb249InN0
b3JlX3RydWUiLCBkZXN0PSJub25faW50ZXJhY3RpdmUiLCBkZWZhdWx0PUZhbHNlLCBoZWxwPSJO
ZXZlciBwcm9tcHQgdGhlIHVzZXIsIGZhaWwgYXMgZmFzdCBhcyBwb3NzaWJsZS4iKQogICAgIG9i
c29sZXRlX3BhdGNoZXMgPSBtYWtlX29wdGlvbigiLS1uby1vYnNvbGV0ZSIsIGFjdGlvbj0ic3Rv
cmVfZmFsc2UiLCBkZXN0PSJvYnNvbGV0ZV9wYXRjaGVzIiwgZGVmYXVsdD1UcnVlLCBoZWxwPSJE
byBub3Qgb2Jzb2xldGUgb2xkIHBhdGNoZXMgYmVmb3JlIHBvc3RpbmcgdGhpcyBvbmUuIikKICAg
ICBvcGVuX2J1ZyA9IG1ha2Vfb3B0aW9uKCItLW9wZW4tYnVnIiwgYWN0aW9uPSJzdG9yZV90cnVl
IiwgZGVzdD0ib3Blbl9idWciLCBkZWZhdWx0PUZhbHNlLCBoZWxwPSJPcGVucyB0aGUgYXNzb2Np
YXRlZCBidWcgaW4gYSBicm93c2VyLiIpCkBAIC01Miw1ICs1NSw2IEBAIGNsYXNzIE9wdGlvbnMo
b2JqZWN0KToKICAgICByZXF1ZXN0X2NvbW1pdCA9IG1ha2Vfb3B0aW9uKCItLXJlcXVlc3QtY29t
bWl0IiwgYWN0aW9uPSJzdG9yZV90cnVlIiwgZGVzdD0icmVxdWVzdF9jb21taXQiLCBkZWZhdWx0
PUZhbHNlLCBoZWxwPSJNYXJrIHRoZSBwYXRjaCBhcyBuZWVkaW5nIGF1dG8tY29tbWl0IGFmdGVy
IHJldmlldy4iKQogICAgIHJldmlldyA9IG1ha2Vfb3B0aW9uKCItLW5vLXJldmlldyIsIGFjdGlv
bj0ic3RvcmVfZmFsc2UiLCBkZXN0PSJyZXZpZXciLCBkZWZhdWx0PVRydWUsIGhlbHA9IkRvIG5v
dCBtYXJrIHRoZSBwYXRjaCBmb3IgcmV2aWV3LiIpCiAgICAgcmV2aWV3ZXIgPSBtYWtlX29wdGlv
bigiLXIiLCAiLS1yZXZpZXdlciIsIGFjdGlvbj0ic3RvcmUiLCB0eXBlPSJzdHJpbmciLCBkZXN0
PSJyZXZpZXdlciIsIGhlbHA9IlVwZGF0ZSBDaGFuZ2VMb2dzIHRvIHNheSBSZXZpZXdlZCBieSBS
RVZJRVdFUi4iKQotICAgIHRlc3QgPSBtYWtlX29wdGlvbigiLS10ZXN0IiwgYWN0aW9uPSJzdG9y
ZV90cnVlIiwgZGVzdD0idGVzdCIsIGRlZmF1bHQ9RmFsc2UsIGhlbHA9IkNvbW1pdCB3aXRob3V0
IHJ1bm5pbmcgcnVuLXdlYmtpdC10ZXN0cyIpCisgICAgc3F1YXNoID0gbWFrZV9vcHRpb24oIi1z
IiwgIi0tc3F1YXNoIiwgYWN0aW9uPSJzdG9yZV90cnVlIiwgZGVzdD0ic3F1YXNoIiwgaGVscD0i
U3F1YXNoIGFsbCBsb2NhbCBjb21taXRzIGludG8gb25lIG9uIHVwbG9hZC9sYW5kIChnaXQtb25s
eSkuIikKKyAgICB0ZXN0ID0gbWFrZV9vcHRpb24oIi0tdGVzdCIsIGFjdGlvbj0ic3RvcmVfdHJ1
ZSIsIGRlc3Q9InRlc3QiLCBkZWZhdWx0PUZhbHNlLCBoZWxwPSJSdW4gcnVuLXdlYmtpdC10ZXN0
cyBiZWZvcmUgY29tbWl0dGluZy4iKQogICAgIHVwZGF0ZSA9IG1ha2Vfb3B0aW9uKCItLW5vLXVw
ZGF0ZSIsIGFjdGlvbj0ic3RvcmVfZmFsc2UiLCBkZXN0PSJ1cGRhdGUiLCBkZWZhdWx0PVRydWUs
IGhlbHA9IkRvbid0IHVwZGF0ZSB0aGUgd29ya2luZyBkaXJlY3RvcnkuIikKZGlmZiAtLWdpdCBh
L1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9wb3N0Y29kZXJldmlldy5w
eSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9wb3N0Y29kZXJldmll
dy5weQppbmRleCAzZTdlZDc2MjNmNmVmODIwMDc1MTRiNDM0MjRiYmE0MjRjODJlYWIwLi4xMGZi
ZDFjYTczYzk4MjJjY2I2ZjdmM2JhODFjY2RlNDcxMTY0NTk5IDEwMDY0NAotLS0gYS9XZWJLaXRU
b29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvcG9zdGNvZGVyZXZpZXcucHkKKysrIGIv
V2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL3Bvc3Rjb2RlcmV2aWV3LnB5
CkBAIC0zNyw3ICszNyw5IEBAIGNsYXNzIFBvc3RDb2RlUmV2aWV3KEFic3RyYWN0U3RlcCk6CiAg
ICAgICAgICAgICBPcHRpb25zLmNjLAogICAgICAgICAgICAgT3B0aW9ucy5kZXNjcmlwdGlvbiwK
ICAgICAgICAgICAgIE9wdGlvbnMuZmFuY3lfcmV2aWV3LAotICAgICAgICAgICAgT3B0aW9ucy5y
ZXZpZXcsCisgICAgICAgICAgICBPcHRpb25zLmdpdF9jb21taXQsCisgICAgICAgICAgICBPcHRp
b25zLm5vX3NxdWFzaCwKKyAgICAgICAgICAgIE9wdGlvbnMuc3F1YXNoLAogICAgICAgICBdCiAK
ICAgICBkZWYgcnVuKHNlbGYsIHN0YXRlKToKQEAgLTY2LDcgKzY4LDggQEAgY2xhc3MgUG9zdENv
ZGVSZXZpZXcoQWJzdHJhY3RTdGVwKToKICAgICAgICAgICAgICAgICAjIFVucmVhY2hhYmxlIHdp
dGggb3VyIGN1cnJlbnQgY29tbWFuZHMsIGJ1dCB3ZSBtaWdodCBoaXQKICAgICAgICAgICAgICAg
ICAjIHRoaXMgY2FzZSBpZiB3ZSBzdXBwb3J0IGJ1Zy1sZXNzIGNvZGUgcmV2aWV3cy4KICAgICAg
ICAgICAgICAgICBtZXNzYWdlID0gIkNvZGUgcmV2aWV3IgotICAgICAgICBjcmVhdGVkX2lzc3Vl
ID0gc2VsZi5fdG9vbC5jb2RlcmV2aWV3LnBvc3QobWVzc2FnZT1tZXNzYWdlLAorICAgICAgICBj
cmVhdGVkX2lzc3VlID0gc2VsZi5fdG9vbC5jb2RlcmV2aWV3LnBvc3QoZGlmZj1zZWxmLmNhY2hl
ZF9sb29rdXAoc3RhdGUsICJkaWZmIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBtZXNzYWdlPW1lc3NhZ2UsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlcmV2aWV3X2lzc3VlPWNvZGVyZXZp
ZXdfaXNzdWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjYz1zZWxmLl9vcHRpb25zLmNjKQogICAgICAgICBpZiBjcmVhdGVkX2lzc3VlOgpkaWZm
IC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL3Bvc3RkaWZm
LnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL3Bvc3RkaWZmLnB5
CmluZGV4IDZhM2RlZTRkOWQyYjY2OTY5OTJmNTAxZThjNzBlZjc2YjUyOTU0OTAuLjk4Njk1Njk0
MzBlMWVjMmFjMmEzNGU5NmMyYmJmNDg1ZTA4MzQxYWQgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xz
L1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9wb3N0ZGlmZi5weQorKysgYi9XZWJLaXRUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvcG9zdGRpZmYucHkKQEAgLTQwLDYgKzQwLDkg
QEAgY2xhc3MgUG9zdERpZmYoQWJzdHJhY3RTdGVwKToKICAgICAgICAgICAgIE9wdGlvbnMucmV2
aWV3LAogICAgICAgICAgICAgT3B0aW9ucy5yZXF1ZXN0X2NvbW1pdCwKICAgICAgICAgICAgIE9w
dGlvbnMub3Blbl9idWcsCisgICAgICAgICAgICBPcHRpb25zLmdpdF9jb21taXQsCisgICAgICAg
ICAgICBPcHRpb25zLm5vX3NxdWFzaCwKKyAgICAgICAgICAgIE9wdGlvbnMuc3F1YXNoLAogICAg
ICAgICBdCiAKICAgICBkZWYgcnVuKHNlbGYsIHN0YXRlKToKZGlmZiAtLWdpdCBhL1dlYktpdFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9wcmVwYXJlY2hhbmdlbG9nLnB5IGIvV2Vi
S2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL3ByZXBhcmVjaGFuZ2Vsb2cucHkK
aW5kZXggZmNiNDBiZTk2MmEyOGM3MDVkY2M0MWJiMzk2OTBiOTQwYTVlYmEyZC4uOTM2MmI4NmIz
ZDk1N2Y4MGFkNjdkNTRmNTc5NjY0MTcwYjhjNzBiNSAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMv
U2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL3ByZXBhcmVjaGFuZ2Vsb2cucHkKKysrIGIvV2Vi
S2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL3ByZXBhcmVjaGFuZ2Vsb2cucHkK
QEAgLTQxLDYgKzQxLDkgQEAgY2xhc3MgUHJlcGFyZUNoYW5nZUxvZyhBYnN0cmFjdFN0ZXApOgog
ICAgICAgICAgICAgT3B0aW9ucy5wb3J0LAogICAgICAgICAgICAgT3B0aW9ucy5xdWlldCwKICAg
ICAgICAgICAgIE9wdGlvbnMuZW1haWwsCisgICAgICAgICAgICBPcHRpb25zLmdpdF9jb21taXQs
CisgICAgICAgICAgICBPcHRpb25zLm5vX3NxdWFzaCwKKyAgICAgICAgICAgIE9wdGlvbnMuc3F1
YXNoLAogICAgICAgICBdCiAKICAgICBkZWYgcnVuKHNlbGYsIHN0YXRlKToKQEAgLTUyLDYgKzU1
LDEyIEBAIGNsYXNzIFByZXBhcmVDaGFuZ2VMb2coQWJzdHJhY3RTdGVwKToKICAgICAgICAgICAg
IGFyZ3MuYXBwZW5kKCItLWJ1Zz0lcyIgJSBzdGF0ZVsiYnVnX2lkIl0pCiAgICAgICAgIGlmIHNl
bGYuX29wdGlvbnMuZW1haWw6CiAgICAgICAgICAgICBhcmdzLmFwcGVuZCgiLS1lbWFpbD0lcyIg
JSBzZWxmLl9vcHRpb25zLmVtYWlsKQorICAgICAgICBpZiAoc2VsZi5fdG9vbC5zY20oKS5zdXBw
b3J0c19sb2NhbF9jb21taXRzKCkgYW5kCisgICAgICAgICAgICBzZWxmLl90b29sLnNjbSgpLnNo
b3VsZF9zcXVhc2goc2VsZi5fb3B0aW9ucy5zcXVhc2gpKToKKyAgICAgICAgICAgIGFyZ3MuYXBw
ZW5kKCItLW1lcmdlLWJhc2U9JXMiICUgc2VsZi5fdG9vbC5zY20oKS5zdm5fbWVyZ2VfYmFzZSgp
KQorICAgICAgICBpZiBzZWxmLl9vcHRpb25zLmdpdF9jb21taXQ6CisgICAgICAgICAgICBhcmdz
LmFwcGVuZCgiLS1naXQtY29tbWl0PSVzIiAlIHNlbGYuX29wdGlvbnMuZ2l0X2NvbW1pdCkKKwog
ICAgICAgICB0cnk6CiAgICAgICAgICAgICBzZWxmLl90b29sLmV4ZWN1dGl2ZS5ydW5fYW5kX3Ro
cm93X2lmX2ZhaWwoYXJncywgc2VsZi5fb3B0aW9ucy5xdWlldCkKICAgICAgICAgZXhjZXB0IFNj
cmlwdEVycm9yLCBlOgpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90
b29sL3N0ZXBzL3ByZXBhcmVjaGFuZ2Vsb2dmb3JyZXZlcnQucHkgYi9XZWJLaXRUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvcHJlcGFyZWNoYW5nZWxvZ2ZvcnJldmVydC5weQppbmRl
eCBmN2Q5Y2QzMDM4MmI5OTE1NjFiM2M2ZTg4OGE2ODAxNDg0M2JmMzQ1Li40ZDI5OWZhMjFhZDNh
YmM0MjllMjgyMzU5NDRlZjEwNjU3YzIzNzY1IDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvcHJlcGFyZWNoYW5nZWxvZ2ZvcnJldmVydC5weQorKysg
Yi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvcHJlcGFyZWNoYW5nZWxv
Z2ZvcnJldmVydC5weQpAQCAtMzYsNyArMzYsNyBAQCBjbGFzcyBQcmVwYXJlQ2hhbmdlTG9nRm9y
UmV2ZXJ0KEFic3RyYWN0U3RlcCk6CiAgICAgZGVmIHJ1bihzZWxmLCBzdGF0ZSk6CiAgICAgICAg
ICMgVGhpcyBjb3VsZCBtb3ZlIHRvIHByZXBhcmUtQ2hhbmdlTG9nIGJ5IGFkZGluZyBhIC0tcmV2
ZXJ0PSBvcHRpb24uCiAgICAgICAgIHNlbGYuX3J1bl9zY3JpcHQoInByZXBhcmUtQ2hhbmdlTG9n
IikKLSAgICAgICAgY2hhbmdlbG9nX3BhdGhzID0gc2VsZi5fdG9vbC5jaGVja291dCgpLm1vZGlm
aWVkX2NoYW5nZWxvZ3MoKQorICAgICAgICBjaGFuZ2Vsb2dfcGF0aHMgPSBzZWxmLl90b29sLmNo
ZWNrb3V0KCkubW9kaWZpZWRfY2hhbmdlbG9ncyhnaXRfY29tbWl0PU5vbmUsIHNxdWFzaD1GYWxz
ZSkKICAgICAgICAgYnVnX3VybCA9IHNlbGYuX3Rvb2wuYnVncy5idWdfdXJsX2Zvcl9idWdfaWQo
c3RhdGVbImJ1Z19pZCJdKSBpZiBzdGF0ZVsiYnVnX2lkIl0gZWxzZSBOb25lCiAgICAgICAgIGZv
ciBjaGFuZ2Vsb2dfcGF0aCBpbiBjaGFuZ2Vsb2dfcGF0aHM6CiAgICAgICAgICAgICAjIEZJWE1F
OiBTZWVtcyB3ZSBzaG91bGQgcHJlcGFyZSB0aGUgbWVzc2FnZSBvdXRzaWRlIG9mIGNoYW5nZWxv
Z3MucHkgYW5kIHRoZW4ganVzdCBwYXNzIGluCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvdXBkYXRlY2hhbmdlbG9nc3dpdGhyZXZpZXdlci5weSBi
L1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy91cGRhdGVjaGFuZ2Vsb2dz
d2l0aHJldmlld2VyLnB5CmluZGV4IGEzNWVkOGMxMWYxZTMxMWJkZjA3ZTljZjdiMGQxYjcxMzdl
NmFlZDAuLmQ4NDFkNWIwMjg0OGYyMjRkYTdhNjBhODkwMWZiYjhhODgyNTc2NmIgMTAwNjQ0Ci0t
LSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy91cGRhdGVjaGFuZ2Vs
b2dzd2l0aHJldmlld2VyLnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9v
bC9zdGVwcy91cGRhdGVjaGFuZ2Vsb2dzd2l0aHJldmlld2VyLnB5CkBAIC0zOCw3ICszOCwxMCBA
QCBjbGFzcyBVcGRhdGVDaGFuZ2VMb2dzV2l0aFJldmlld2VyKEFic3RyYWN0U3RlcCk6CiAgICAg
QGNsYXNzbWV0aG9kCiAgICAgZGVmIG9wdGlvbnMoY2xzKToKICAgICAgICAgcmV0dXJuIFsKKyAg
ICAgICAgICAgIE9wdGlvbnMuZ2l0X2NvbW1pdCwKICAgICAgICAgICAgIE9wdGlvbnMucmV2aWV3
ZXIsCisgICAgICAgICAgICBPcHRpb25zLm5vX3NxdWFzaCwKKyAgICAgICAgICAgIE9wdGlvbnMu
c3F1YXNoLAogICAgICAgICBdCiAKICAgICBkZWYgX2d1ZXNzX3Jldmlld2VyX2Zyb21fYnVnKHNl
bGYsIGJ1Z19pZCk6CkBAIC02Nyw1ICs3MCw1IEBAIGNsYXNzIFVwZGF0ZUNoYW5nZUxvZ3NXaXRo
UmV2aWV3ZXIoQWJzdHJhY3RTdGVwKToKICAgICAgICAgICAgIHJldHVybgogCiAgICAgICAgIG9z
LmNoZGlyKHNlbGYuX3Rvb2wuc2NtKCkuY2hlY2tvdXRfcm9vdCkKLSAgICAgICAgZm9yIGNoYW5n
ZWxvZ19wYXRoIGluIHNlbGYuX3Rvb2wuY2hlY2tvdXQoKS5tb2RpZmllZF9jaGFuZ2Vsb2dzKCk6
CisgICAgICAgIGZvciBjaGFuZ2Vsb2dfcGF0aCBpbiBzZWxmLl90b29sLmNoZWNrb3V0KCkubW9k
aWZpZWRfY2hhbmdlbG9ncyhzZWxmLl9vcHRpb25zLmdpdF9jb21taXQsIHNlbGYuX29wdGlvbnMu
c3F1YXNoKToKICAgICAgICAgICAgIENoYW5nZUxvZyhjaGFuZ2Vsb2dfcGF0aCkuc2V0X3Jldmll
d2VyKHJldmlld2VyKQpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90
b29sL3N0ZXBzL3ZhbGlkYXRlcmV2aWV3ZXIucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtp
dHB5L3Rvb2wvc3RlcHMvdmFsaWRhdGVyZXZpZXdlci5weQppbmRleCA4MGIyYzVkMWE0OWY0YTY3
MjdmZTViOGI4ZWVkM2RkMzdkNTZmOTU0Li43N2U4N2FkNTVkM2EwYmYwODJmYWIyOGNkNWUzODk3
NGI0OWJiOTdmIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wv
c3RlcHMvdmFsaWRhdGVyZXZpZXdlci5weQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtp
dHB5L3Rvb2wvc3RlcHMvdmFsaWRhdGVyZXZpZXdlci5weQpAQCAtMzEsMTEgKzMxLDIwIEBAIGlt
cG9ydCByZQogCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5jaGVja291dC5jaGFuZ2Vsb2cgaW1wb3J0
IENoYW5nZUxvZwogZnJvbSB3ZWJraXRweS50b29sLnN0ZXBzLmFic3RyYWN0c3RlcCBpbXBvcnQg
QWJzdHJhY3RTdGVwCitmcm9tIHdlYmtpdHB5LnRvb2wuc3RlcHMub3B0aW9ucyBpbXBvcnQgT3B0
aW9ucwogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmRlcHJlY2F0ZWRfbG9nZ2luZyBpbXBv
cnQgZXJyb3IsIGxvZwogCiAKICMgRklYTUU6IFNvbWUgb2YgdGhpcyBsb2dpYyBzaG91bGQgcHJv
YmFibHkgYmUgdW5pZmllZCB3aXRoIENvbW1pdHRlclZhbGlkYXRvcj8KIGNsYXNzIFZhbGlkYXRl
UmV2aWV3ZXIoQWJzdHJhY3RTdGVwKToKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgb3B0aW9u
cyhjbHMpOgorICAgICAgICByZXR1cm4gWworICAgICAgICAgICAgT3B0aW9ucy5naXRfY29tbWl0
LAorICAgICAgICAgICAgT3B0aW9ucy5ub19zcXVhc2gsCisgICAgICAgICAgICBPcHRpb25zLnNx
dWFzaCwKKyAgICAgICAgXQorCiAgICAgIyBGSVhNRTogVGhpcyBzaG91bGQgcHJvYmFibHkgbW92
ZSBvbnRvIENoYW5nZUxvZ0VudHJ5CiAgICAgZGVmIF9oYXNfdmFsaWRfcmV2aWV3ZXIoc2VsZiwg
Y2hhbmdlbG9nX2VudHJ5KToKICAgICAgICAgaWYgY2hhbmdlbG9nX2VudHJ5LnJldmlld2VyKCk6
CkBAIC01NCw3ICs2Myw3IEBAIGNsYXNzIFZhbGlkYXRlUmV2aWV3ZXIoQWJzdHJhY3RTdGVwKToK
ICAgICAgICAgIyBGSVhNRTogV2Ugc2hvdWxkIGZpZ3VyZSBvdXQgaG93IHRvIGhhbmRsZSB0aGUg
Y3VycmVudCB3b3JraW5nCiAgICAgICAgICMgICAgICAgIGRpcmVjdG9yeSBpc3N1ZSBtb3JlIGds
b2JhbGx5LgogICAgICAgICBvcy5jaGRpcihzZWxmLl90b29sLnNjbSgpLmNoZWNrb3V0X3Jvb3Qp
Ci0gICAgICAgIGZvciBjaGFuZ2Vsb2dfcGF0aCBpbiBzZWxmLl90b29sLmNoZWNrb3V0KCkubW9k
aWZpZWRfY2hhbmdlbG9ncygpOgorICAgICAgICBmb3IgY2hhbmdlbG9nX3BhdGggaW4gc2VsZi5f
dG9vbC5jaGVja291dCgpLm1vZGlmaWVkX2NoYW5nZWxvZ3Moc2VsZi5fb3B0aW9ucy5naXRfY29t
bWl0LCBzZWxmLl9vcHRpb25zLnNxdWFzaCk6CiAgICAgICAgICAgICBjaGFuZ2Vsb2dfZW50cnkg
PSBDaGFuZ2VMb2coY2hhbmdlbG9nX3BhdGgpLmxhdGVzdF9lbnRyeSgpCiAgICAgICAgICAgICBp
ZiBzZWxmLl9oYXNfdmFsaWRfcmV2aWV3ZXIoY2hhbmdlbG9nX2VudHJ5KToKICAgICAgICAgICAg
ICAgICBjb250aW51ZQo=
</data>
<flag name="review"
          id="37733"
          type_id="1"
          status="+"
          setter="abarth"
    />
    <flag name="commit-queue"
          id="38038"
          type_id="3"
          status="-"
          setter="abarth"
    />
          </attachment>
      

    </bug>

</bugzilla>