<?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>141946</bug_id>
          
          <creation_ts>2015-02-23 19:22:50 -0800</creation_ts>
          <short_desc>setup-git-clone fails due to the failure to download python-irclib-0.4.8</short_desc>
          <delta_ts>2015-03-06 09:50:48 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=142400</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Ryosuke Niwa">rniwa</assigned_to>
          <cc>ap</cc>
    
    <cc>benjamin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>ddkilzer</cc>
    
    <cc>glenn</cc>
    
    <cc>kling</cc>
    
    <cc>lforschler</cc>
    
    <cc>ossy</cc>
    
    <cc>rniwa</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1071489</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2015-02-23 19:22:50 -0800</bug_when>
    <thetext>We can&apos;t use this command due to an autoinstall failure.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1071490</commentid>
    <comment_count>1</comment_count>
      <attachid>247187</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2015-02-23 19:23:54 -0800</bug_when>
    <thetext>Created attachment 247187
Fixes the bug</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1071627</commentid>
    <comment_count>2</comment_count>
      <attachid>247187</attachid>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2015-02-24 05:02:52 -0800</bug_when>
    <thetext>Comment on attachment 247187
Fixes the bug

I don&apos;t agree with modifying urls on each short network error.

You can also use SOURCEFORGE_MIRRORS and LOCAL_AUTOINSTALL_CACHE
environment variables to avoid broken webkit-patch on network error.
(See autoinstall.py for details.)

Of course it is possible to improce this mirror and local cache mechanism.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1071885</commentid>
    <comment_count>3</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-02-24 19:09:37 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; I don&apos;t agree with modifying urls on each short network error.

OK, but long term is there some reason to prefer sourceforge.net over launchpad.net?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1072033</commentid>
    <comment_count>4</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2015-02-25 03:11:45 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; (In reply to comment #2)
&gt; &gt; I don&apos;t agree with modifying urls on each short network error.
&gt; 
&gt; OK, but long term is there some reason to prefer sourceforge.net over
&gt; launchpad.net?

I don&apos;t prefer sourceforge or launchpad. But if we 
change, we should change the mirroring mechanism too.

But is there any reason why can&apos;t we check in irclib.py, 
ircbot.py and eliza.py instead of autoinstalling? 
In this case we would depend only on pypi.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1072034</commentid>
    <comment_count>5</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2015-02-25 03:16:44 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt;
&gt; But is there any reason why can&apos;t we check in irclib.py, 
&gt; ircbot.py and eliza.py instead of autoinstalling? 
&gt; In this case we would depend only on pypi.

I suppose we can since the licensing is MIT. It would take a while to do it because I have to go through the corporate approval process if I were to do it though :(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1072036</commentid>
    <comment_count>6</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2015-02-25 03:21:33 -0800</bug_when>
    <thetext>irclib.py and ircbot.py have LGPL license,
but I can&apos;t find any license for the eliza.py.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1072037</commentid>
    <comment_count>7</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2015-02-25 03:24:43 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; irclib.py and ircbot.py have LGPL license,
&gt; but I can&apos;t find any license for the eliza.py.

Oh, no :(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1072040</commentid>
    <comment_count>8</comment_count>
      <attachid>247329</attachid>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2015-02-25 04:05:27 -0800</bug_when>
    <thetext>Created attachment 247329
Patch

Let&apos;s check in ircbot.py and irclib.py and don&apos;t touch eliza</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1072041</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-02-25 04:07:30 -0800</bug_when>
    <thetext>Attachment 247329 did not pass style-queue:

Traceback (most recent call last):
  File &quot;/Volumes/Data/StyleQueue/Webkit/Tools/Scripts/webkit-patch&quot;, line 44, in &lt;module&gt;
    from webkitpy.tool.main import WebKitPatch
  File &quot;/Volumes/Data/StyleQueue/WebKit/Tools/Scripts/webkitpy/tool/main.py&quot;, line 38, in &lt;module&gt;
    from webkitpy.common.net.irc import ircproxy
  File &quot;/Volumes/Data/StyleQueue/WebKit/Tools/Scripts/webkitpy/common/net/irc/ircproxy.py&quot;, line 32, in &lt;module&gt;
    from webkitpy.common.net.irc.ircbot import IRCBot
  File &quot;/Volumes/Data/StyleQueue/WebKit/Tools/Scripts/webkitpy/common/net/irc/ircbot.py&quot;, line 32, in &lt;module&gt;
    from webkitpy.thirdparty.irc import ircbot
ImportError: No module named irc


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1072042</commentid>
    <comment_count>10</comment_count>
      <attachid>247329</attachid>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2015-02-25 04:10:06 -0800</bug_when>
    <thetext>Comment on attachment 247329
Patch

remove flags to unbreak EWS bots</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1072044</commentid>
    <comment_count>11</comment_count>
      <attachid>247330</attachid>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2015-02-25 04:24:03 -0800</bug_when>
    <thetext>Created attachment 247330
Patch

Let&apos;s see if EWS bots like non empty __init__.py</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1072045</commentid>
    <comment_count>12</comment_count>
      <attachid>247330</attachid>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2015-02-25 04:28:13 -0800</bug_when>
    <thetext>Comment on attachment 247330
Patch

EWS is crazy ... it can&apos;t handle adding new module.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1074442</commentid>
    <comment_count>13</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2015-03-05 01:53:35 -0800</bug_when>
    <thetext>Any objection against check in ircbot.py and irclib.py ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1074882</commentid>
    <comment_count>14</comment_count>
      <attachid>247330</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-03-06 01:23:43 -0800</bug_when>
    <thetext>Comment on attachment 247330
Patch

Clearing flags on attachment: 247330

Committed r181145: &lt;http://trac.webkit.org/changeset/181145&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1074883</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-03-06 01:23:49 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1074931</commentid>
    <comment_count>16</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2015-03-06 07:57:59 -0800</bug_when>
    <thetext>(In reply to comment #13)
&gt; Any objection against check in ircbot.py and irclib.py ?

This is causing failures on test bots, not just EWS:

&lt;https://build.webkit.org/builders/Apple%20Mavericks%20Release%20WK2%20(Tests)?numbuilds=50&gt;

Is that because we&apos;re trying to replace a locally downloaded file with one from the svn repository?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1074932</commentid>
    <comment_count>17</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2015-03-06 07:59:22 -0800</bug_when>
    <thetext>(In reply to comment #16)
&gt; (In reply to comment #13)
&gt; &gt; Any objection against check in ircbot.py and irclib.py ?
&gt; 
&gt; This is causing failures on test bots, not just EWS:
&gt; 
&gt; &lt;https://build.webkit.org/builders/
&gt; Apple%20Mavericks%20Release%20WK2%20(Tests)?numbuilds=50&gt;
&gt; 
&gt; Is that because we&apos;re trying to replace a locally downloaded file with one
&gt; from the svn repository?

Ihanks for noticing, I&apos;ll investigate it right now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1074933</commentid>
    <comment_count>18</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2015-03-06 08:01:01 -0800</bug_when>
    <thetext>(In reply to comment #17)
&gt; (In reply to comment #16)
&gt; &gt; (In reply to comment #13)
&gt; &gt; &gt; Any objection against check in ircbot.py and irclib.py ?
&gt; &gt; 
&gt; &gt; This is causing failures on test bots, not just EWS:
&gt; &gt; 
&gt; &gt; &lt;https://build.webkit.org/builders/
&gt; &gt; Apple%20Mavericks%20Release%20WK2%20(Tests)?numbuilds=50&gt;
&gt; &gt; 
&gt; &gt; Is that because we&apos;re trying to replace a locally downloaded file with one
&gt; &gt; from the svn repository?
&gt; 
&gt; Ihanks for noticing, I&apos;ll investigate it right now.

Or maybe we just need to blow away all *.pyc files before running the tests on the bots?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1074935</commentid>
    <comment_count>19</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2015-03-06 08:15:43 -0800</bug_when>
    <thetext>I have no idea what&apos;s happening ... I can&apos;t reproduce this issue on Mavericks.
I tried to run tests on 181144 and then on 181145 and again on 181144, ...
and didn&apos;t get any failure.

But something is very strange with the Mac bots:
https://build.webkit.org/buildslaves/bot199 - good revision order, no issue
https://build.webkit.org/buildslaves/bot151 - 181145, 181143, 181149 - BANG!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1074937</commentid>
    <comment_count>20</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2015-03-06 08:25:26 -0800</bug_when>
    <thetext>Something is very buggy with these bots ...

https://build.webkit.org/builders/Apple%20Mavericks%20Release%20WK1%20%28Tests%29/builds/12738/steps/svn/logs/stdio

   C Tools/Scripts/webkitpy/thirdparty/irc ----&gt; what???????
   A Tools/Scripts/webkitpy/thirdparty/irc/__init__.py
   A Tools/Scripts/webkitpy/thirdparty/irc/ircbot.py
   A Tools/Scripts/webkitpy/thirdparty/irc/irclib.py

Let me check it with pure svn checkout, I only checked in git.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1074941</commentid>
    <comment_count>21</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2015-03-06 08:31:26 -0800</bug_when>
    <thetext>It would be great if somebody has access to these bots 
could check what is happening?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1074944</commentid>
    <comment_count>22</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2015-03-06 08:38:37 -0800</bug_when>
    <thetext>I kicked the buggy mavericks bots, let&apos;s see the results.
( force build + stop during svn update to remove everything + force build )</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1074957</commentid>
    <comment_count>23</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2015-03-06 09:19:25 -0800</bug_when>
    <thetext>(In reply to comment #21)
&gt; It would be great if somebody has access to these bots 
&gt; could check what is happening?

This change and Bug 142083 has left bots in this state:

$ svn stat .
A  +  C LayoutTests/imported/w3c/web-platform-tests/_certs
      &gt;   local edit, incoming delete upon update
C  +    LayoutTests/imported/w3c/web-platform-tests/_certs/01.pem
C  +    LayoutTests/imported/w3c/web-platform-tests/_certs/02.pem
C  +    LayoutTests/imported/w3c/web-platform-tests/_certs/cacert.pem
C  +    LayoutTests/imported/w3c/web-platform-tests/_certs/cakey.pem
C  +    LayoutTests/imported/w3c/web-platform-tests/_certs/index.txt.old
C  +    LayoutTests/imported/w3c/web-platform-tests/_certs/localhost.key
C  +    LayoutTests/imported/w3c/web-platform-tests/_certs/localhost.pem
D     C LayoutTests/imported/w3c/web-platform-tests/tools/scripts/__init__.py
      &gt;   local unversioned, incoming add upon update
D     C LayoutTests/imported/w3c/web-platform-tests/tools/webdriver/webdriver/__init__.py
      &gt;   local unversioned, incoming add upon update
D     C Tools/Scripts/webkitpy/thirdparty/irc
      &gt;   local unversioned, incoming add upon update
D       Tools/Scripts/webkitpy/thirdparty/irc/__init__.py
D       Tools/Scripts/webkitpy/thirdparty/irc/ircbot.py
D       Tools/Scripts/webkitpy/thirdparty/irc/irclib.py
?       layout-test-results.zip
Summary of conflicts:
  Text conflicts: 7
  Tree conflicts: 4</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1074962</commentid>
    <comment_count>24</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2015-03-06 09:28:36 -0800</bug_when>
    <thetext>filed a new bug report to handle this kind of issues in the future - bug142400</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1074973</commentid>
    <comment_count>25</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2015-03-06 09:35:11 -0800</bug_when>
    <thetext>(In reply to comment #24)
&gt; filed a new bug report to handle this kind of issues in the future -
&gt; bug142400

Log of attempted cleanup of one bot.

svn-resolve doesn&apos;t do what you&apos;d hope:

$ svn resolve --accept base --recursive Tools/Scripts/webkitpy/thirdparty
svn: warning: W155027: Tree conflicts can only be resolved to &apos;working&apos; state; &apos;/Volumes/Data/slave/gala-production-wk2-tests/build/OpenSource/Tools/Scripts/webkitpy/thirdparty/irc&apos; not resolved
bot172:OpenSource buildbot$ svn stat .
D     C Tools/Scripts/webkitpy/thirdparty/irc
      &gt;   local unversioned, incoming add upon update
D       Tools/Scripts/webkitpy/thirdparty/irc/__init__.py
D       Tools/Scripts/webkitpy/thirdparty/irc/ircbot.py
D       Tools/Scripts/webkitpy/thirdparty/irc/irclib.py
?       layout-test-results.zip
?       local
Summary of conflicts:
  Tree conflicts: 1

So you have to use svn-revert:

$ svn revert --recursive Tools/Scripts/webkitpy/thirdparty/
Reverted &apos;Tools/Scripts/webkitpy/thirdparty/irc&apos;
Reverted &apos;Tools/Scripts/webkitpy/thirdparty/irc/__init__.py&apos;
Reverted &apos;Tools/Scripts/webkitpy/thirdparty/irc/ircbot.py&apos;
Reverted &apos;Tools/Scripts/webkitpy/thirdparty/irc/irclib.py&apos;
bot172:OpenSource buildbot$ svn stat .
?       layout-test-results.zip
?       local

After that, you&apos;re done.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>247187</attachid>
            <date>2015-02-23 19:23:54 -0800</date>
            <delta_ts>2015-02-25 04:05:19 -0800</delta_ts>
            <desc>Fixes the bug</desc>
            <filename>bug-141946-20150223192343.patch</filename>
            <type>text/plain</type>
            <size>1979</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgwNTQyCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMWJjZDQ5NTg1OWMyOTBlM2E0N2ViMzZlNzRjZjcyZTc5
YWVmNDBjZC4uYmNkN2U4NTc0Zjc0ZmQ1NzlhODcyYTIwYjQ5MzQ3ZjdmNGRjNDI2OSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1
IEBACisyMDE1LTAyLTIzICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAg
ICAgIHNldHVwLWdpdC1jbG9uZSBmYWlscyBkdWUgdG8gdGhlIGZhaWx1cmUgdG8gZG93bmxvYWQg
cHl0aG9uLWlyY2xpYi0wLjQuOAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTQxOTQ2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgRG93bmxvYWQgdGhlIHBhY2thZ2UgZnJvbSBsYXVuY2hwYWQubmV0IGluc3Rl
YWQgb2Ygc291cmNlZm9yZ2UubmV0LgorCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS90aGly
ZHBhcnR5L19faW5pdF9fLnB5OgorICAgICAgICAoQXV0b2luc3RhbGxJbXBvcnRIb29rLl9pbnN0
YWxsX2lyYyk6CisKIDIwMTUtMDItMjMgIEt3YW5nSHl1ayBLaW0gIDxoeXVraS5raW1Ac2Ftc3Vu
Zy5jb20+CiAKICAgICAgICAgW0VGTF0gZml4IGVvIGVycm9ycwpkaWZmIC0tZ2l0IGEvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS90aGlyZHBhcnR5L19faW5pdF9fLnB5IGIvVG9vbHMvU2NyaXB0cy93
ZWJraXRweS90aGlyZHBhcnR5L19faW5pdF9fLnB5CmluZGV4IDdiZjEzZDBmZTY3ZTQzNzQwNjMy
ZDUwZTM0ZTVmYWJiNDExNjY4YmYuLmI5ZDIyY2E5MDE4MzA0MjM3MWIzZjNkNGM4ZWUxM2YxZmE3
NGEzZTkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGhpcmRwYXJ0eS9fX2lu
aXRfXy5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3RoaXJkcGFydHkvX19pbml0X18u
cHkKQEAgLTE1Miw5ICsxNTIsOSBAQCBjbGFzcyBBdXRvaW5zdGFsbEltcG9ydEhvb2sob2JqZWN0
KToKICAgICAgICAgIyBvcmdhbml6YXRpb24gcHVycG9zZXMuCiAgICAgICAgIGlyY19kaXIgPSBz
ZWxmLl9mcy5qb2luKF9BVVRPSU5TVEFMTEVEX0RJUiwgImlyYyIpCiAgICAgICAgIGluc3RhbGxl
ciA9IEF1dG9JbnN0YWxsZXIodGFyZ2V0X2Rpcj1pcmNfZGlyKQotICAgICAgICBpbnN0YWxsZXIu
aW5zdGFsbCh1cmw9Imh0dHA6Ly9kb3dubG9hZHMuc291cmNlZm9yZ2UubmV0L3Byb2plY3QvcHl0
aG9uLWlyY2xpYi9weXRob24taXJjbGliLzAuNC44L3B5dGhvbi1pcmNsaWItMC40LjgudGFyLmd6
IiwKKyAgICAgICAgaW5zdGFsbGVyLmluc3RhbGwodXJsPSJodHRwczovL2xhdW5jaHBhZC5uZXQv
dWJ1bnR1LythcmNoaXZlL3ByaW1hcnkvK2ZpbGVzL3B5dGhvbi1pcmNsaWJfMC40Ljgub3JpZy50
YXIuZ3oiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dXJsX3N1YnBhdGg9InB5dGhvbi1pcmNsaWItMC40LjgvaXJjbGliLnB5IikKLSAgICAgICAgaW5z
dGFsbGVyLmluc3RhbGwodXJsPSJodHRwOi8vZG93bmxvYWRzLnNvdXJjZWZvcmdlLm5ldC9wcm9q
ZWN0L3B5dGhvbi1pcmNsaWIvcHl0aG9uLWlyY2xpYi8wLjQuOC9weXRob24taXJjbGliLTAuNC44
LnRhci5neiIsCisgICAgICAgIGluc3RhbGxlci5pbnN0YWxsKHVybD0iaHR0cHM6Ly9sYXVuY2hw
YWQubmV0L3VidW50dS8rYXJjaGl2ZS9wcmltYXJ5LytmaWxlcy9weXRob24taXJjbGliXzAuNC44
Lm9yaWcudGFyLmd6IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsX3N1YnBhdGg9InB5
dGhvbi1pcmNsaWItMC40LjgvaXJjYm90LnB5IikKIAogICAgIGRlZiBfaW5zdGFsbChzZWxmLCB1
cmwsIHVybF9zdWJwYXRoPU5vbmUsIHRhcmdldF9uYW1lPU5vbmUpOgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>247329</attachid>
            <date>2015-02-25 04:05:27 -0800</date>
            <delta_ts>2015-02-25 04:10:06 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-141946-20150225040511.patch</filename>
            <type>text/plain</type>
            <size>69281</size>
            <attacher name="Csaba Osztrogonác">ossy</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgwNjIyCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMTc3MzM2ZDg4ZTlmZWNkM2U1NzI3YjU5ZDQ1NDk1MGY0
NTJjMTFlOC4uNTdjOTlkOTA0MjQzOGIyNzRhMmZjMTQ5OWU1YTdjYjQzMjU3ZjMzMSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIy
IEBACisyMDE1LTAyLTI1ICBDc2FiYSBPc3p0cm9nb27DoWMgIDxvc3N5QHdlYmtpdC5vcmc+CisK
KyAgICAgICAgc2V0dXAtZ2l0LWNsb25lIGZhaWxzIGR1ZSB0byB0aGUgZmFpbHVyZSB0byBkb3du
bG9hZCBweXRob24taXJjbGliLTAuNC44CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNDE5NDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBDaGVjayBpbiBpcmNib3QucHkgYW5kIGlyY2xpYi5weSB0byBhdm9p
ZCBuZXR3b3JrIHByb2JsZW1zIGluIHRoZSBmdXR1cmUuCisKKyAgICAgICAgKiBTY3JpcHRzL3dl
YmtpdHB5L2NvbW1vbi9uZXQvaXJjL2lyY2JvdC5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtp
dHB5L3RoaXJkcGFydHkvX19pbml0X18ucHk6CisgICAgICAgIChBdXRvaW5zdGFsbEltcG9ydEhv
b2suZmluZF9tb2R1bGUpOgorICAgICAgICAoQXV0b2luc3RhbGxJbXBvcnRIb29rLl9pbnN0YWxs
X2lyYyk6IERlbGV0ZWQuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS90aGlyZHBhcnR5L19f
aW5pdF9fX3VuaXR0ZXN0LnB5OgorICAgICAgICAoVGhpcmRwYXJ0eVRlc3QudGVzdF9pbXBvcnRz
KToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3RoaXJkcGFydHkvaXJjL19faW5pdF9fLnB5
OiBBZGRlZC4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3RoaXJkcGFydHkvaXJjL2lyY2Jv
dC5weTogQWRkZWQuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS90aGlyZHBhcnR5L2lyYy9p
cmNsaWIucHk6IEFkZGVkLgorCiAyMDE1LTAyLTI0ICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5v
cmc+CiAKICAgICAgICAgQ29udmVydCBXZWJFZGl0aW5nVGVzdGVyIHRvIHVzZSB4Y2NvbmZpZyBm
aWxlcwpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0L2lyYy9p
cmNib3QucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvaXJjL2lyY2JvdC5w
eQppbmRleCBjOGMxYTM4YTk4MGEzM2Y2YmZlNjVjYTU4YWM0OWYyOWY5ZGI3ZGUxLi5kYjQyNzMx
ZjZjZDc4N2Q4MGRiODM1OTdmOTA2ZTg3MWUxZjUwMTllIDEwMDY0NAotLS0gYS9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvaXJjL2lyY2JvdC5weQorKysgYi9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L2NvbW1vbi9uZXQvaXJjL2lyY2JvdC5weQpAQCAtMjksOCArMjksOCBAQAogZnJv
bSB3ZWJraXRweS5jb21tb24uY29uZmlnIGltcG9ydCBpcmMgYXMgY29uZmlnX2lyYwogCiBmcm9t
IHdlYmtpdHB5LmNvbW1vbi50aHJlYWQubWVzc2FnZXB1bXAgaW1wb3J0IE1lc3NhZ2VQdW1wLCBN
ZXNzYWdlUHVtcERlbGVnYXRlCi1mcm9tIHdlYmtpdHB5LnRoaXJkcGFydHkuYXV0b2luc3RhbGxl
ZC5pcmMgaW1wb3J0IGlyY2JvdAotZnJvbSB3ZWJraXRweS50aGlyZHBhcnR5LmF1dG9pbnN0YWxs
ZWQuaXJjIGltcG9ydCBpcmNsaWIKK2Zyb20gd2Via2l0cHkudGhpcmRwYXJ0eS5pcmMgaW1wb3J0
IGlyY2JvdAorZnJvbSB3ZWJraXRweS50aGlyZHBhcnR5LmlyYyBpbXBvcnQgaXJjbGliCiAKIAog
Y2xhc3MgSVJDQm90RGVsZWdhdGUob2JqZWN0KToKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvdGhpcmRwYXJ0eS9fX2luaXRfXy5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
dGhpcmRwYXJ0eS9fX2luaXRfXy5weQppbmRleCA3YmYxM2QwZmU2N2U0Mzc0MDYzMmQ1MGUzNGU1
ZmFiYjQxMTY2OGJmLi43NGE0OGI4ZjU4NGMzMzA0OGVhODQxMzg3YjIwYjkxNjAxNWNiZGFjIDEw
MDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3RoaXJkcGFydHkvX19pbml0X18ucHkK
KysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90aGlyZHBhcnR5L19faW5pdF9fLnB5CkBAIC04
Nyw4ICs4Nyw2IEBAIGNsYXNzIEF1dG9pbnN0YWxsSW1wb3J0SG9vayhvYmplY3QpOgogICAgICAg
ICAgICAgc2VsZi5faW5zdGFsbF9jb3ZlcmFnZSgpCiAgICAgICAgIGVsaWYgJy5lbGl6YScgaW4g
ZnVsbG5hbWU6CiAgICAgICAgICAgICBzZWxmLl9pbnN0YWxsX2VsaXphKCkKLSAgICAgICAgZWxp
ZiAnLmlyYycgaW4gZnVsbG5hbWU6Ci0gICAgICAgICAgICBzZWxmLl9pbnN0YWxsX2lyYygpCiAg
ICAgICAgIGVsaWYgJy5idWlsZGJvdCcgaW4gZnVsbG5hbWU6CiAgICAgICAgICAgICBzZWxmLl9p
bnN0YWxsX2J1aWxkYm90KCkKICAgICAgICAgZWxpZiAnLmtleXJpbmcnIGluIGZ1bGxuYW1lOgpA
QCAtMTQ2LDE3ICsxNDQsNiBAQCBjbGFzcyBBdXRvaW5zdGFsbEltcG9ydEhvb2sob2JqZWN0KToK
ICAgICBkZWYgX2luc3RhbGxfZWxpemEoc2VsZik6CiAgICAgICAgIHNlbGYuX2luc3RhbGwodXJs
PSJodHRwOi8vd3d3LmFkYW1iYXJ0aC5jb20vd2Via2l0L2VsaXphIiwgdGFyZ2V0X25hbWU9ImVs
aXphLnB5IikKIAotICAgIGRlZiBfaW5zdGFsbF9pcmMoc2VsZik6Ci0gICAgICAgICMgU2luY2Ug
aXJjbGliIGFuZCBpcmNib3QgYXJlIHR3byB0b3AtbGV2ZWwgcGFja2FnZXMsIHdlIG5lZWQgdG8g
aW1wb3J0Ci0gICAgICAgICMgdGhlbSBzZXBhcmF0ZWx5LiAgV2UgZ3JvdXAgdGhlbSBpbnRvIGFu
IGlyYyBwYWNrYWdlIGZvciBiZXR0ZXIKLSAgICAgICAgIyBvcmdhbml6YXRpb24gcHVycG9zZXMu
Ci0gICAgICAgIGlyY19kaXIgPSBzZWxmLl9mcy5qb2luKF9BVVRPSU5TVEFMTEVEX0RJUiwgImly
YyIpCi0gICAgICAgIGluc3RhbGxlciA9IEF1dG9JbnN0YWxsZXIodGFyZ2V0X2Rpcj1pcmNfZGly
KQotICAgICAgICBpbnN0YWxsZXIuaW5zdGFsbCh1cmw9Imh0dHA6Ly9kb3dubG9hZHMuc291cmNl
Zm9yZ2UubmV0L3Byb2plY3QvcHl0aG9uLWlyY2xpYi9weXRob24taXJjbGliLzAuNC44L3B5dGhv
bi1pcmNsaWItMC40LjgudGFyLmd6IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHVybF9zdWJwYXRoPSJweXRob24taXJjbGliLTAuNC44L2lyY2xpYi5w
eSIpCi0gICAgICAgIGluc3RhbGxlci5pbnN0YWxsKHVybD0iaHR0cDovL2Rvd25sb2Fkcy5zb3Vy
Y2Vmb3JnZS5uZXQvcHJvamVjdC9weXRob24taXJjbGliL3B5dGhvbi1pcmNsaWIvMC40LjgvcHl0
aG9uLWlyY2xpYi0wLjQuOC50YXIuZ3oiLAotICAgICAgICAgICAgICAgICAgICAgICAgICB1cmxf
c3VicGF0aD0icHl0aG9uLWlyY2xpYi0wLjQuOC9pcmNib3QucHkiKQotCiAgICAgZGVmIF9pbnN0
YWxsKHNlbGYsIHVybCwgdXJsX3N1YnBhdGg9Tm9uZSwgdGFyZ2V0X25hbWU9Tm9uZSk6CiAgICAg
ICAgIGluc3RhbGxlciA9IEF1dG9JbnN0YWxsZXIodGFyZ2V0X2Rpcj1fQVVUT0lOU1RBTExFRF9E
SVIpCiAgICAgICAgIGluc3RhbGxlci5pbnN0YWxsKHVybD11cmwsIHVybF9zdWJwYXRoPXVybF9z
dWJwYXRoLCB0YXJnZXRfbmFtZT10YXJnZXRfbmFtZSkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvdGhpcmRwYXJ0eS9fX2luaXRfX191bml0dGVzdC5weSBiL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvdGhpcmRwYXJ0eS9fX2luaXRfX191bml0dGVzdC5weQppbmRleCAyZDhjOGEw
ZGQ0MTI2Njk0NzI3MjM5MDJjYmMwZjBkYTk4ZDY4NjljLi5hODhmNjE4NTY3ZDNkMzJiNjE1YzU2
MGEzZDZiMDFjYWM3MDI5NmQyIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Ro
aXJkcGFydHkvX19pbml0X19fdW5pdHRlc3QucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS90aGlyZHBhcnR5L19faW5pdF9fX3VuaXR0ZXN0LnB5CkBAIC02MSw4ICs2MSw2IEBAIGNsYXNz
IFRoaXJkcGFydHlUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgaW1wb3J0IHdlYmtp
dHB5LnRoaXJkcGFydHkuYXV0b2luc3RhbGxlZC5idWlsZGJvdAogICAgICAgICBpbXBvcnQgd2Vi
a2l0cHkudGhpcmRwYXJ0eS5hdXRvaW5zdGFsbGVkLmNvdmVyYWdlCiAgICAgICAgIGltcG9ydCB3
ZWJraXRweS50aGlyZHBhcnR5LmF1dG9pbnN0YWxsZWQuZWxpemEKLSAgICAgICAgaW1wb3J0IHdl
YmtpdHB5LnRoaXJkcGFydHkuYXV0b2luc3RhbGxlZC5pcmMuaXJjYm90Ci0gICAgICAgIGltcG9y
dCB3ZWJraXRweS50aGlyZHBhcnR5LmF1dG9pbnN0YWxsZWQuaXJjLmlyY2xpYgogICAgICAgICBp
bXBvcnQgd2Via2l0cHkudGhpcmRwYXJ0eS5hdXRvaW5zdGFsbGVkLm1lY2hhbml6ZQogICAgICAg
ICBpbXBvcnQgd2Via2l0cHkudGhpcmRwYXJ0eS5hdXRvaW5zdGFsbGVkLnB5bGludAogICAgICAg
ICBpbXBvcnQgd2Via2l0cHkudGhpcmRwYXJ0eS5hdXRvaW5zdGFsbGVkLnBlcDgKZGlmZiAtLWdp
dCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGhpcmRwYXJ0eS9pcmMvX19pbml0X18ucHkgYi9U
b29scy9TY3JpcHRzL3dlYmtpdHB5L3RoaXJkcGFydHkvaXJjL19faW5pdF9fLnB5Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmU2OWRlMjliYjJkMWQ2NDM0YjhiMjlhZTc3NWFkOGMyZTQ4YzUzOTEKZGlmZiAtLWdpdCBh
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGhpcmRwYXJ0eS9pcmMvaXJjYm90LnB5IGIvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS90aGlyZHBhcnR5L2lyYy9pcmNib3QucHkKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmYy
OWE2NTJjODNjYzZjNTJjMzE4YTRjODI0MWExNGMwNDA5YjJlYQotLS0gL2Rldi9udWxsCisrKyBi
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGhpcmRwYXJ0eS9pcmMvaXJjYm90LnB5CkBAIC0wLDAg
KzEsNDM4IEBACisjIENvcHlyaWdodCAoQykgMTk5OS0tMjAwMiAgSm9lbCBSb3NkYWhsCisjCisj
IFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh
bmQvb3IKKyMgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5l
cmFsIFB1YmxpYworIyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uOyBlaXRoZXIKKyMgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5
b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisjCisjIFRoaXMgbGlicmFyeSBpcyBkaXN0
cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorIyBidXQgV0lUSE9V
VCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorIyBN
RVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUg
dGhlIEdOVQorIyBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxz
LgorIworIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2Vy
IEdlbmVyYWwgUHVibGljCisjIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5v
dCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVt
cGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyAgVVNBCisjCisjIEpv
ZWwgUm9zZGFobCA8am9lbEByb3NkYWhsLm5ldD4KKyMKKyMgJElkOiBpcmNib3QucHksdiAxLjIz
IDIwMDgvMDkvMTEgMDc6Mzg6MzAga2VsdHVzIEV4cCAkCisKKyIiImlyY2JvdCAtLSBTaW1wbGUg
SVJDIGJvdCBsaWJyYXJ5LgorCitUaGlzIG1vZHVsZSBjb250YWlucyBhIHNpbmdsZS1zZXJ2ZXIg
SVJDIGJvdCBjbGFzcyB0aGF0IGNhbiBiZSB1c2VkIHRvCit3cml0ZSBzaW1wbGVyIGJvdHMuCisi
IiIKKworaW1wb3J0IHN5cworZnJvbSBVc2VyRGljdCBpbXBvcnQgVXNlckRpY3QKKworZnJvbSBp
cmNsaWIgaW1wb3J0IFNpbXBsZUlSQ0NsaWVudAorZnJvbSBpcmNsaWIgaW1wb3J0IG5tX3RvX24s
IGlyY19sb3dlciwgYWxsX2V2ZW50cworZnJvbSBpcmNsaWIgaW1wb3J0IHBhcnNlX2NoYW5uZWxf
bW9kZXMsIGlzX2NoYW5uZWwKK2Zyb20gaXJjbGliIGltcG9ydCBTZXJ2ZXJDb25uZWN0aW9uRXJy
b3IKKworY2xhc3MgU2luZ2xlU2VydmVySVJDQm90KFNpbXBsZUlSQ0NsaWVudCk6CisgICAgIiIi
QSBzaW5nbGUtc2VydmVyIElSQyBib3QgY2xhc3MuCisKKyAgICBUaGUgYm90IHRyaWVzIHRvIHJl
Y29ubmVjdCBpZiBpdCBpcyBkaXNjb25uZWN0ZWQuCisKKyAgICBUaGUgYm90IGtlZXBzIHRyYWNr
IG9mIHRoZSBjaGFubmVscyBpdCBoYXMgam9pbmVkLCB0aGUgb3RoZXIKKyAgICBjbGllbnRzIHRo
YXQgYXJlIHByZXNlbnQgaW4gdGhlIGNoYW5uZWxzIGFuZCB3aGljaCBvZiB0aG9zZSB0aGF0Cisg
ICAgaGF2ZSBvcGVyYXRvciBvciB2b2ljZSBtb2Rlcy4gIFRoZSAiZGF0YWJhc2UiIGlzIGtlcHQg
aW4gdGhlCisgICAgc2VsZi5jaGFubmVscyBhdHRyaWJ1dGUsIHdoaWNoIGlzIGFuIElSQ0RpY3Qg
b2YgQ2hhbm5lbHMuCisgICAgIiIiCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHNlcnZlcl9saXN0
LCBuaWNrbmFtZSwgcmVhbG5hbWUsIHJlY29ubmVjdGlvbl9pbnRlcnZhbD02MCk6CisgICAgICAg
ICIiIkNvbnN0cnVjdG9yIGZvciBTaW5nbGVTZXJ2ZXJJUkNCb3Qgb2JqZWN0cy4KKworICAgICAg
ICBBcmd1bWVudHM6CisKKyAgICAgICAgICAgIHNlcnZlcl9saXN0IC0tIEEgbGlzdCBvZiB0dXBs
ZXMgKHNlcnZlciwgcG9ydCkgdGhhdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5l
cyB3aGljaCBzZXJ2ZXJzIHRoZSBib3Qgc2hvdWxkIHRyeSB0bworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29ubmVjdCB0by4KKworICAgICAgICAgICAgbmlja25hbWUgLS0gVGhlIGJvdCdz
IG5pY2tuYW1lLgorCisgICAgICAgICAgICByZWFsbmFtZSAtLSBUaGUgYm90J3MgcmVhbG5hbWUu
CisKKyAgICAgICAgICAgIHJlY29ubmVjdGlvbl9pbnRlcnZhbCAtLSBIb3cgbG9uZyB0aGUgYm90
IHNob3VsZCB3YWl0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmVmb3Jl
IHRyeWluZyB0byByZWNvbm5lY3QuCisKKyAgICAgICAgICAgIGRjY19jb25uZWN0aW9ucyAtLSBB
IGxpc3Qgb2YgaW5pdGlhdGVkL2FjY2VwdGVkIERDQworICAgICAgICAgICAgY29ubmVjdGlvbnMu
CisgICAgICAgICIiIgorCisgICAgICAgIFNpbXBsZUlSQ0NsaWVudC5fX2luaXRfXyhzZWxmKQor
ICAgICAgICBzZWxmLmNoYW5uZWxzID0gSVJDRGljdCgpCisgICAgICAgIHNlbGYuc2VydmVyX2xp
c3QgPSBzZXJ2ZXJfbGlzdAorICAgICAgICBpZiBub3QgcmVjb25uZWN0aW9uX2ludGVydmFsIG9y
IHJlY29ubmVjdGlvbl9pbnRlcnZhbCA8IDA6CisgICAgICAgICAgICByZWNvbm5lY3Rpb25faW50
ZXJ2YWwgPSAyKiozMQorICAgICAgICBzZWxmLnJlY29ubmVjdGlvbl9pbnRlcnZhbCA9IHJlY29u
bmVjdGlvbl9pbnRlcnZhbAorCisgICAgICAgIHNlbGYuX25pY2tuYW1lID0gbmlja25hbWUKKyAg
ICAgICAgc2VsZi5fcmVhbG5hbWUgPSByZWFsbmFtZQorICAgICAgICBmb3IgaSBpbiBbImRpc2Nv
bm5lY3QiLCAiam9pbiIsICJraWNrIiwgIm1vZGUiLAorICAgICAgICAgICAgICAgICAgIm5hbXJl
cGx5IiwgIm5pY2siLCAicGFydCIsICJxdWl0Il06CisgICAgICAgICAgICBzZWxmLmNvbm5lY3Rp
b24uYWRkX2dsb2JhbF9oYW5kbGVyKGksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGdldGF0dHIoc2VsZiwgIl9vbl8iICsgaSksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0xMCkKKyAgICBkZWYgX2Nvbm5lY3Rl
ZF9jaGVja2VyKHNlbGYpOgorICAgICAgICAiIiJbSW50ZXJuYWxdIiIiCisgICAgICAgIGlmIG5v
dCBzZWxmLmNvbm5lY3Rpb24uaXNfY29ubmVjdGVkKCk6CisgICAgICAgICAgICBzZWxmLmNvbm5l
Y3Rpb24uZXhlY3V0ZV9kZWxheWVkKHNlbGYucmVjb25uZWN0aW9uX2ludGVydmFsLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9jb25uZWN0ZWRfY2hl
Y2tlcikKKyAgICAgICAgICAgIHNlbGYuanVtcF9zZXJ2ZXIoKQorCisgICAgZGVmIF9jb25uZWN0
KHNlbGYpOgorICAgICAgICAiIiJbSW50ZXJuYWxdIiIiCisgICAgICAgIHBhc3N3b3JkID0gTm9u
ZQorICAgICAgICBpZiBsZW4oc2VsZi5zZXJ2ZXJfbGlzdFswXSkgPiAyOgorICAgICAgICAgICAg
cGFzc3dvcmQgPSBzZWxmLnNlcnZlcl9saXN0WzBdWzJdCisgICAgICAgIHRyeToKKyAgICAgICAg
ICAgIHNlbGYuY29ubmVjdChzZWxmLnNlcnZlcl9saXN0WzBdWzBdLAorICAgICAgICAgICAgICAg
ICAgICAgICAgIHNlbGYuc2VydmVyX2xpc3RbMF1bMV0sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgc2VsZi5fbmlja25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgcGFzc3dvcmQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgaXJjbmFtZT1zZWxmLl9yZWFsbmFtZSkKKyAgICAgICAg
ZXhjZXB0IFNlcnZlckNvbm5lY3Rpb25FcnJvcjoKKyAgICAgICAgICAgIHBhc3MKKworICAgIGRl
ZiBfb25fZGlzY29ubmVjdChzZWxmLCBjLCBlKToKKyAgICAgICAgIiIiW0ludGVybmFsXSIiIgor
ICAgICAgICBzZWxmLmNoYW5uZWxzID0gSVJDRGljdCgpCisgICAgICAgIHNlbGYuY29ubmVjdGlv
bi5leGVjdXRlX2RlbGF5ZWQoc2VsZi5yZWNvbm5lY3Rpb25faW50ZXJ2YWwsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fY29ubmVjdGVkX2NoZWNrZXIpCisK
KyAgICBkZWYgX29uX2pvaW4oc2VsZiwgYywgZSk6CisgICAgICAgICIiIltJbnRlcm5hbF0iIiIK
KyAgICAgICAgY2ggPSBlLnRhcmdldCgpCisgICAgICAgIG5pY2sgPSBubV90b19uKGUuc291cmNl
KCkpCisgICAgICAgIGlmIG5pY2sgPT0gYy5nZXRfbmlja25hbWUoKToKKyAgICAgICAgICAgIHNl
bGYuY2hhbm5lbHNbY2hdID0gQ2hhbm5lbCgpCisgICAgICAgIHNlbGYuY2hhbm5lbHNbY2hdLmFk
ZF91c2VyKG5pY2spCisKKyAgICBkZWYgX29uX2tpY2soc2VsZiwgYywgZSk6CisgICAgICAgICIi
IltJbnRlcm5hbF0iIiIKKyAgICAgICAgbmljayA9IGUuYXJndW1lbnRzKClbMF0KKyAgICAgICAg
Y2hhbm5lbCA9IGUudGFyZ2V0KCkKKworICAgICAgICBpZiBuaWNrID09IGMuZ2V0X25pY2tuYW1l
KCk6CisgICAgICAgICAgICBkZWwgc2VsZi5jaGFubmVsc1tjaGFubmVsXQorICAgICAgICBlbHNl
OgorICAgICAgICAgICAgc2VsZi5jaGFubmVsc1tjaGFubmVsXS5yZW1vdmVfdXNlcihuaWNrKQor
CisgICAgZGVmIF9vbl9tb2RlKHNlbGYsIGMsIGUpOgorICAgICAgICAiIiJbSW50ZXJuYWxdIiIi
CisgICAgICAgIG1vZGVzID0gcGFyc2VfY2hhbm5lbF9tb2RlcygiICIuam9pbihlLmFyZ3VtZW50
cygpKSkKKyAgICAgICAgdCA9IGUudGFyZ2V0KCkKKyAgICAgICAgaWYgaXNfY2hhbm5lbCh0KToK
KyAgICAgICAgICAgIGNoID0gc2VsZi5jaGFubmVsc1t0XQorICAgICAgICAgICAgZm9yIG1vZGUg
aW4gbW9kZXM6CisgICAgICAgICAgICAgICAgaWYgbW9kZVswXSA9PSAiKyI6CisgICAgICAgICAg
ICAgICAgICAgIGYgPSBjaC5zZXRfbW9kZQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAg
ICAgICAgICAgICAgIGYgPSBjaC5jbGVhcl9tb2RlCisgICAgICAgICAgICAgICAgZihtb2RlWzFd
LCBtb2RlWzJdKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgIyBNb2RlIG9uIHNlbGYuLi4g
WFhYCisgICAgICAgICAgICBwYXNzCisKKyAgICBkZWYgX29uX25hbXJlcGx5KHNlbGYsIGMsIGUp
OgorICAgICAgICAiIiJbSW50ZXJuYWxdIiIiCisKKyAgICAgICAgIyBlLmFyZ3VtZW50cygpWzBd
ID09ICJAIiBmb3Igc2VjcmV0IGNoYW5uZWxzLAorICAgICAgICAjICAgICAgICAgICAgICAgICAg
ICAgIioiIGZvciBwcml2YXRlIGNoYW5uZWxzLAorICAgICAgICAjICAgICAgICAgICAgICAgICAg
ICAgIj0iIGZvciBvdGhlcnMgKHB1YmxpYyBjaGFubmVscykKKyAgICAgICAgIyBlLmFyZ3VtZW50
cygpWzFdID09IGNoYW5uZWwKKyAgICAgICAgIyBlLmFyZ3VtZW50cygpWzJdID09IG5pY2sgbGlz
dAorCisgICAgICAgIGNoID0gZS5hcmd1bWVudHMoKVsxXQorICAgICAgICBmb3IgbmljayBpbiBl
LmFyZ3VtZW50cygpWzJdLnNwbGl0KCk6CisgICAgICAgICAgICBpZiBuaWNrWzBdID09ICJAIjoK
KyAgICAgICAgICAgICAgICBuaWNrID0gbmlja1sxOl0KKyAgICAgICAgICAgICAgICBzZWxmLmNo
YW5uZWxzW2NoXS5zZXRfbW9kZSgibyIsIG5pY2spCisgICAgICAgICAgICBlbGlmIG5pY2tbMF0g
PT0gIisiOgorICAgICAgICAgICAgICAgIG5pY2sgPSBuaWNrWzE6XQorICAgICAgICAgICAgICAg
IHNlbGYuY2hhbm5lbHNbY2hdLnNldF9tb2RlKCJ2IiwgbmljaykKKyAgICAgICAgICAgIHNlbGYu
Y2hhbm5lbHNbY2hdLmFkZF91c2VyKG5pY2spCisKKyAgICBkZWYgX29uX25pY2soc2VsZiwgYywg
ZSk6CisgICAgICAgICIiIltJbnRlcm5hbF0iIiIKKyAgICAgICAgYmVmb3JlID0gbm1fdG9fbihl
LnNvdXJjZSgpKQorICAgICAgICBhZnRlciA9IGUudGFyZ2V0KCkKKyAgICAgICAgZm9yIGNoIGlu
IHNlbGYuY2hhbm5lbHMudmFsdWVzKCk6CisgICAgICAgICAgICBpZiBjaC5oYXNfdXNlcihiZWZv
cmUpOgorICAgICAgICAgICAgICAgIGNoLmNoYW5nZV9uaWNrKGJlZm9yZSwgYWZ0ZXIpCisKKyAg
ICBkZWYgX29uX3BhcnQoc2VsZiwgYywgZSk6CisgICAgICAgICIiIltJbnRlcm5hbF0iIiIKKyAg
ICAgICAgbmljayA9IG5tX3RvX24oZS5zb3VyY2UoKSkKKyAgICAgICAgY2hhbm5lbCA9IGUudGFy
Z2V0KCkKKworICAgICAgICBpZiBuaWNrID09IGMuZ2V0X25pY2tuYW1lKCk6CisgICAgICAgICAg
ICBkZWwgc2VsZi5jaGFubmVsc1tjaGFubmVsXQorICAgICAgICBlbHNlOgorICAgICAgICAgICAg
c2VsZi5jaGFubmVsc1tjaGFubmVsXS5yZW1vdmVfdXNlcihuaWNrKQorCisgICAgZGVmIF9vbl9x
dWl0KHNlbGYsIGMsIGUpOgorICAgICAgICAiIiJbSW50ZXJuYWxdIiIiCisgICAgICAgIG5pY2sg
PSBubV90b19uKGUuc291cmNlKCkpCisgICAgICAgIGZvciBjaCBpbiBzZWxmLmNoYW5uZWxzLnZh
bHVlcygpOgorICAgICAgICAgICAgaWYgY2guaGFzX3VzZXIobmljayk6CisgICAgICAgICAgICAg
ICAgY2gucmVtb3ZlX3VzZXIobmljaykKKworICAgIGRlZiBkaWUoc2VsZiwgbXNnPSJCeWUsIGNy
dWVsIHdvcmxkISIpOgorICAgICAgICAiIiJMZXQgdGhlIGJvdCBkaWUuCisKKyAgICAgICAgQXJn
dW1lbnRzOgorCisgICAgICAgICAgICBtc2cgLS0gUXVpdCBtZXNzYWdlLgorICAgICAgICAiIiIK
KworICAgICAgICBzZWxmLmNvbm5lY3Rpb24uZGlzY29ubmVjdChtc2cpCisgICAgICAgIHN5cy5l
eGl0KDApCisKKyAgICBkZWYgZGlzY29ubmVjdChzZWxmLCBtc2c9IkknbGwgYmUgYmFjayEiKToK
KyAgICAgICAgIiIiRGlzY29ubmVjdCB0aGUgYm90LgorCisgICAgICAgIFRoZSBib3Qgd2lsbCB0
cnkgdG8gcmVjb25uZWN0IGFmdGVyIGEgd2hpbGUuCisKKyAgICAgICAgQXJndW1lbnRzOgorCisg
ICAgICAgICAgICBtc2cgLS0gUXVpdCBtZXNzYWdlLgorICAgICAgICAiIiIKKyAgICAgICAgc2Vs
Zi5jb25uZWN0aW9uLmRpc2Nvbm5lY3QobXNnKQorCisgICAgZGVmIGdldF92ZXJzaW9uKHNlbGYp
OgorICAgICAgICAiIiJSZXR1cm5zIHRoZSBib3QgdmVyc2lvbi4KKworICAgICAgICBVc2VkIHdo
ZW4gYW5zd2VyaW5nIGEgQ1RDUCBWRVJTSU9OIHJlcXVlc3QuCisgICAgICAgICIiIgorICAgICAg
ICByZXR1cm4gImlyY2JvdC5weSBieSBKb2VsIFJvc2RhaGwgPGpvZWxAcm9zZGFobC5uZXQ+Igor
CisgICAgZGVmIGp1bXBfc2VydmVyKHNlbGYsIG1zZz0iQ2hhbmdpbmcgc2VydmVycyIpOgorICAg
ICAgICAiIiJDb25uZWN0IHRvIGEgbmV3IHNlcnZlciwgcG9zc2libHkgZGlzY29ubmVjdGluZyBm
cm9tIHRoZSBjdXJyZW50LgorCisgICAgICAgIFRoZSBib3Qgd2lsbCBza2lwIHRvIG5leHQgc2Vy
dmVyIGluIHRoZSBzZXJ2ZXJfbGlzdCBlYWNoIHRpbWUKKyAgICAgICAganVtcF9zZXJ2ZXIgaXMg
Y2FsbGVkLgorICAgICAgICAiIiIKKyAgICAgICAgaWYgc2VsZi5jb25uZWN0aW9uLmlzX2Nvbm5l
Y3RlZCgpOgorICAgICAgICAgICAgc2VsZi5jb25uZWN0aW9uLmRpc2Nvbm5lY3QobXNnKQorCisg
ICAgICAgIHNlbGYuc2VydmVyX2xpc3QuYXBwZW5kKHNlbGYuc2VydmVyX2xpc3QucG9wKDApKQor
ICAgICAgICBzZWxmLl9jb25uZWN0KCkKKworICAgIGRlZiBvbl9jdGNwKHNlbGYsIGMsIGUpOgor
ICAgICAgICAiIiJEZWZhdWx0IGhhbmRsZXIgZm9yIGN0Y3AgZXZlbnRzLgorCisgICAgICAgIFJl
cGxpZXMgdG8gVkVSU0lPTiBhbmQgUElORyByZXF1ZXN0cyBhbmQgcmVsYXlzIERDQyByZXF1ZXN0
cworICAgICAgICB0byB0aGUgb25fZGNjY2hhdCBtZXRob2QuCisgICAgICAgICIiIgorICAgICAg
ICBpZiBlLmFyZ3VtZW50cygpWzBdID09ICJWRVJTSU9OIjoKKyAgICAgICAgICAgIGMuY3RjcF9y
ZXBseShubV90b19uKGUuc291cmNlKCkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICJWRVJT
SU9OICIgKyBzZWxmLmdldF92ZXJzaW9uKCkpCisgICAgICAgIGVsaWYgZS5hcmd1bWVudHMoKVsw
XSA9PSAiUElORyI6CisgICAgICAgICAgICBpZiBsZW4oZS5hcmd1bWVudHMoKSkgPiAxOgorICAg
ICAgICAgICAgICAgIGMuY3RjcF9yZXBseShubV90b19uKGUuc291cmNlKCkpLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAiUElORyAiICsgZS5hcmd1bWVudHMoKVsxXSkKKyAgICAgICAg
ZWxpZiBlLmFyZ3VtZW50cygpWzBdID09ICJEQ0MiIGFuZCBlLmFyZ3VtZW50cygpWzFdLnNwbGl0
KCIgIiwgMSlbMF0gPT0gIkNIQVQiOgorICAgICAgICAgICAgc2VsZi5vbl9kY2NjaGF0KGMsIGUp
CisKKyAgICBkZWYgb25fZGNjY2hhdChzZWxmLCBjLCBlKToKKyAgICAgICAgcGFzcworCisgICAg
ZGVmIHN0YXJ0KHNlbGYpOgorICAgICAgICAiIiJTdGFydCB0aGUgYm90LiIiIgorICAgICAgICBz
ZWxmLl9jb25uZWN0KCkKKyAgICAgICAgU2ltcGxlSVJDQ2xpZW50LnN0YXJ0KHNlbGYpCisKKwor
Y2xhc3MgSVJDRGljdDoKKyAgICAiIiJBIGRpY3Rpb25hcnkgc3VpdGFibGUgZm9yIHN0b3Jpbmcg
SVJDLXJlbGF0ZWQgdGhpbmdzLgorCisgICAgRGljdGlvbmFyeSBrZXlzIGEgYW5kIGIgYXJlIGNv
bnNpZGVyZWQgZXF1YWwgaWYgYW5kIG9ubHkgaWYKKyAgICBpcmNfbG93ZXIoYSkgPT0gaXJjX2xv
d2VyKGIpCisKKyAgICBPdGhlcndpc2UsIGl0IHNob3VsZCBiZWhhdmUgZXhhY3RseSBhcyBhIG5v
cm1hbCBkaWN0aW9uYXJ5LgorICAgICIiIgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGRpY3Q9
Tm9uZSk6CisgICAgICAgIHNlbGYuZGF0YSA9IHt9CisgICAgICAgIHNlbGYuY2Fub25fa2V5cyA9
IHt9ICAjIENhbm9uaWNhbCBrZXlzCisgICAgICAgIGlmIGRpY3QgaXMgbm90IE5vbmU6CisgICAg
ICAgICAgICBzZWxmLnVwZGF0ZShkaWN0KQorICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKKyAgICAg
ICAgcmV0dXJuIHJlcHIoc2VsZi5kYXRhKQorICAgIGRlZiBfX2NtcF9fKHNlbGYsIGRpY3QpOgor
ICAgICAgICBpZiBpc2luc3RhbmNlKGRpY3QsIElSQ0RpY3QpOgorICAgICAgICAgICAgcmV0dXJu
IGNtcChzZWxmLmRhdGEsIGRpY3QuZGF0YSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJl
dHVybiBjbXAoc2VsZi5kYXRhLCBkaWN0KQorICAgIGRlZiBfX2xlbl9fKHNlbGYpOgorICAgICAg
ICByZXR1cm4gbGVuKHNlbGYuZGF0YSkKKyAgICBkZWYgX19nZXRpdGVtX18oc2VsZiwga2V5KToK
KyAgICAgICAgcmV0dXJuIHNlbGYuZGF0YVtzZWxmLmNhbm9uX2tleXNbaXJjX2xvd2VyKGtleSld
XQorICAgIGRlZiBfX3NldGl0ZW1fXyhzZWxmLCBrZXksIGl0ZW0pOgorICAgICAgICBpZiBrZXkg
aW4gc2VsZjoKKyAgICAgICAgICAgIGRlbCBzZWxmW2tleV0KKyAgICAgICAgc2VsZi5kYXRhW2tl
eV0gPSBpdGVtCisgICAgICAgIHNlbGYuY2Fub25fa2V5c1tpcmNfbG93ZXIoa2V5KV0gPSBrZXkK
KyAgICBkZWYgX19kZWxpdGVtX18oc2VsZiwga2V5KToKKyAgICAgICAgY2sgPSBpcmNfbG93ZXIo
a2V5KQorICAgICAgICBkZWwgc2VsZi5kYXRhW3NlbGYuY2Fub25fa2V5c1tja11dCisgICAgICAg
IGRlbCBzZWxmLmNhbm9uX2tleXNbY2tdCisgICAgZGVmIF9faXRlcl9fKHNlbGYpOgorICAgICAg
ICByZXR1cm4gaXRlcihzZWxmLmRhdGEpCisgICAgZGVmIF9fY29udGFpbnNfXyhzZWxmLCBrZXkp
OgorICAgICAgICByZXR1cm4gc2VsZi5oYXNfa2V5KGtleSkKKyAgICBkZWYgY2xlYXIoc2VsZik6
CisgICAgICAgIHNlbGYuZGF0YS5jbGVhcigpCisgICAgICAgIHNlbGYuY2Fub25fa2V5cy5jbGVh
cigpCisgICAgZGVmIGNvcHkoc2VsZik6CisgICAgICAgIGlmIHNlbGYuX19jbGFzc19fIGlzIFVz
ZXJEaWN0OgorICAgICAgICAgICAgcmV0dXJuIFVzZXJEaWN0KHNlbGYuZGF0YSkKKyAgICAgICAg
aW1wb3J0IGNvcHkKKyAgICAgICAgcmV0dXJuIGNvcHkuY29weShzZWxmKQorICAgIGRlZiBrZXlz
KHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5kYXRhLmtleXMoKQorICAgIGRlZiBpdGVtcyhz
ZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuZGF0YS5pdGVtcygpCisgICAgZGVmIHZhbHVlcyhz
ZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuZGF0YS52YWx1ZXMoKQorICAgIGRlZiBoYXNfa2V5
KHNlbGYsIGtleSk6CisgICAgICAgIHJldHVybiBpcmNfbG93ZXIoa2V5KSBpbiBzZWxmLmNhbm9u
X2tleXMKKyAgICBkZWYgdXBkYXRlKHNlbGYsIGRpY3QpOgorICAgICAgICBmb3IgaywgdiBpbiBk
aWN0Lml0ZW1zKCk6CisgICAgICAgICAgICBzZWxmLmRhdGFba10gPSB2CisgICAgZGVmIGdldChz
ZWxmLCBrZXksIGZhaWxvYmo9Tm9uZSk6CisgICAgICAgIHJldHVybiBzZWxmLmRhdGEuZ2V0KGtl
eSwgZmFpbG9iaikKKworCitjbGFzcyBDaGFubmVsOgorICAgICIiIkEgY2xhc3MgZm9yIGtlZXBp
bmcgaW5mb3JtYXRpb24gYWJvdXQgYW4gSVJDIGNoYW5uZWwuCisKKyAgICBUaGlzIGNsYXNzIGNh
biBiZSBpbXByb3ZlZCBhIGxvdC4KKyAgICAiIiIKKworICAgIGRlZiBfX2luaXRfXyhzZWxmKToK
KyAgICAgICAgc2VsZi51c2VyZGljdCA9IElSQ0RpY3QoKQorICAgICAgICBzZWxmLm9wZXJkaWN0
ID0gSVJDRGljdCgpCisgICAgICAgIHNlbGYudm9pY2VkZGljdCA9IElSQ0RpY3QoKQorICAgICAg
ICBzZWxmLm1vZGVzID0ge30KKworICAgIGRlZiB1c2VycyhzZWxmKToKKyAgICAgICAgIiIiUmV0
dXJucyBhbiB1bnNvcnRlZCBsaXN0IG9mIHRoZSBjaGFubmVsJ3MgdXNlcnMuIiIiCisgICAgICAg
IHJldHVybiBzZWxmLnVzZXJkaWN0LmtleXMoKQorCisgICAgZGVmIG9wZXJzKHNlbGYpOgorICAg
ICAgICAiIiJSZXR1cm5zIGFuIHVuc29ydGVkIGxpc3Qgb2YgdGhlIGNoYW5uZWwncyBvcGVyYXRv
cnMuIiIiCisgICAgICAgIHJldHVybiBzZWxmLm9wZXJkaWN0LmtleXMoKQorCisgICAgZGVmIHZv
aWNlZChzZWxmKToKKyAgICAgICAgIiIiUmV0dXJucyBhbiB1bnNvcnRlZCBsaXN0IG9mIHRoZSBw
ZXJzb25zIHRoYXQgaGF2ZSB2b2ljZQorICAgICAgICBtb2RlIHNldCBpbiB0aGUgY2hhbm5lbC4i
IiIKKyAgICAgICAgcmV0dXJuIHNlbGYudm9pY2VkZGljdC5rZXlzKCkKKworICAgIGRlZiBoYXNf
dXNlcihzZWxmLCBuaWNrKToKKyAgICAgICAgIiIiQ2hlY2sgd2hldGhlciB0aGUgY2hhbm5lbCBo
YXMgYSB1c2VyLiIiIgorICAgICAgICByZXR1cm4gbmljayBpbiBzZWxmLnVzZXJkaWN0CisKKyAg
ICBkZWYgaXNfb3BlcihzZWxmLCBuaWNrKToKKyAgICAgICAgIiIiQ2hlY2sgd2hldGhlciBhIHVz
ZXIgaGFzIG9wZXJhdG9yIHN0YXR1cyBpbiB0aGUgY2hhbm5lbC4iIiIKKyAgICAgICAgcmV0dXJu
IG5pY2sgaW4gc2VsZi5vcGVyZGljdAorCisgICAgZGVmIGlzX3ZvaWNlZChzZWxmLCBuaWNrKToK
KyAgICAgICAgIiIiQ2hlY2sgd2hldGhlciBhIHVzZXIgaGFzIHZvaWNlIG1vZGUgc2V0IGluIHRo
ZSBjaGFubmVsLiIiIgorICAgICAgICByZXR1cm4gbmljayBpbiBzZWxmLnZvaWNlZGRpY3QKKwor
ICAgIGRlZiBhZGRfdXNlcihzZWxmLCBuaWNrKToKKyAgICAgICAgc2VsZi51c2VyZGljdFtuaWNr
XSA9IDEKKworICAgIGRlZiByZW1vdmVfdXNlcihzZWxmLCBuaWNrKToKKyAgICAgICAgZm9yIGQg
aW4gc2VsZi51c2VyZGljdCwgc2VsZi5vcGVyZGljdCwgc2VsZi52b2ljZWRkaWN0OgorICAgICAg
ICAgICAgaWYgbmljayBpbiBkOgorICAgICAgICAgICAgICAgIGRlbCBkW25pY2tdCisKKyAgICBk
ZWYgY2hhbmdlX25pY2soc2VsZiwgYmVmb3JlLCBhZnRlcik6CisgICAgICAgIHNlbGYudXNlcmRp
Y3RbYWZ0ZXJdID0gMQorICAgICAgICBkZWwgc2VsZi51c2VyZGljdFtiZWZvcmVdCisgICAgICAg
IGlmIGJlZm9yZSBpbiBzZWxmLm9wZXJkaWN0OgorICAgICAgICAgICAgc2VsZi5vcGVyZGljdFth
ZnRlcl0gPSAxCisgICAgICAgICAgICBkZWwgc2VsZi5vcGVyZGljdFtiZWZvcmVdCisgICAgICAg
IGlmIGJlZm9yZSBpbiBzZWxmLnZvaWNlZGRpY3Q6CisgICAgICAgICAgICBzZWxmLnZvaWNlZGRp
Y3RbYWZ0ZXJdID0gMQorICAgICAgICAgICAgZGVsIHNlbGYudm9pY2VkZGljdFtiZWZvcmVdCisK
KyAgICBkZWYgc2V0X21vZGUoc2VsZiwgbW9kZSwgdmFsdWU9Tm9uZSk6CisgICAgICAgICIiIlNl
dCBtb2RlIG9uIHRoZSBjaGFubmVsLgorCisgICAgICAgIEFyZ3VtZW50czoKKworICAgICAgICAg
ICAgbW9kZSAtLSBUaGUgbW9kZSAoYSBzaW5nbGUtY2hhcmFjdGVyIHN0cmluZykuCisKKyAgICAg
ICAgICAgIHZhbHVlIC0tIFZhbHVlCisgICAgICAgICIiIgorICAgICAgICBpZiBtb2RlID09ICJv
IjoKKyAgICAgICAgICAgIHNlbGYub3BlcmRpY3RbdmFsdWVdID0gMQorICAgICAgICBlbGlmIG1v
ZGUgPT0gInYiOgorICAgICAgICAgICAgc2VsZi52b2ljZWRkaWN0W3ZhbHVlXSA9IDEKKyAgICAg
ICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYubW9kZXNbbW9kZV0gPSB2YWx1ZQorCisgICAgZGVm
IGNsZWFyX21vZGUoc2VsZiwgbW9kZSwgdmFsdWU9Tm9uZSk6CisgICAgICAgICIiIkNsZWFyIG1v
ZGUgb24gdGhlIGNoYW5uZWwuCisKKyAgICAgICAgQXJndW1lbnRzOgorCisgICAgICAgICAgICBt
b2RlIC0tIFRoZSBtb2RlIChhIHNpbmdsZS1jaGFyYWN0ZXIgc3RyaW5nKS4KKworICAgICAgICAg
ICAgdmFsdWUgLS0gVmFsdWUKKyAgICAgICAgIiIiCisgICAgICAgIHRyeToKKyAgICAgICAgICAg
IGlmIG1vZGUgPT0gIm8iOgorICAgICAgICAgICAgICAgIGRlbCBzZWxmLm9wZXJkaWN0W3ZhbHVl
XQorICAgICAgICAgICAgZWxpZiBtb2RlID09ICJ2IjoKKyAgICAgICAgICAgICAgICBkZWwgc2Vs
Zi52b2ljZWRkaWN0W3ZhbHVlXQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBk
ZWwgc2VsZi5tb2Rlc1ttb2RlXQorICAgICAgICBleGNlcHQgS2V5RXJyb3I6CisgICAgICAgICAg
ICBwYXNzCisKKyAgICBkZWYgaGFzX21vZGUoc2VsZiwgbW9kZSk6CisgICAgICAgIHJldHVybiBt
b2RlIGluIHNlbGYubW9kZXMKKworICAgIGRlZiBpc19tb2RlcmF0ZWQoc2VsZik6CisgICAgICAg
IHJldHVybiBzZWxmLmhhc19tb2RlKCJtIikKKworICAgIGRlZiBpc19zZWNyZXQoc2VsZik6Cisg
ICAgICAgIHJldHVybiBzZWxmLmhhc19tb2RlKCJzIikKKworICAgIGRlZiBpc19wcm90ZWN0ZWQo
c2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLmhhc19tb2RlKCJwIikKKworICAgIGRlZiBoYXNf
dG9waWNfbG9jayhzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuaGFzX21vZGUoInQiKQorCisg
ICAgZGVmIGlzX2ludml0ZV9vbmx5KHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5oYXNfbW9k
ZSgiaSIpCisKKyAgICBkZWYgaGFzX2FsbG93X2V4dGVybmFsX21lc3NhZ2VzKHNlbGYpOgorICAg
ICAgICByZXR1cm4gc2VsZi5oYXNfbW9kZSgibiIpCisKKyAgICBkZWYgaGFzX2xpbWl0KHNlbGYp
OgorICAgICAgICByZXR1cm4gc2VsZi5oYXNfbW9kZSgibCIpCisKKyAgICBkZWYgbGltaXQoc2Vs
Zik6CisgICAgICAgIGlmIHNlbGYuaGFzX2xpbWl0KCk6CisgICAgICAgICAgICByZXR1cm4gc2Vs
Zi5tb2Rlc1tsXQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmV0dXJuIE5vbmUKKworICAg
IGRlZiBoYXNfa2V5KHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5oYXNfbW9kZSgiayIpCisK
KyAgICBkZWYga2V5KHNlbGYpOgorICAgICAgICBpZiBzZWxmLmhhc19rZXkoKToKKyAgICAgICAg
ICAgIHJldHVybiBzZWxmLm1vZGVzWyJrIl0KKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJl
dHVybiBOb25lCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3RoaXJkcGFydHkv
aXJjL2lyY2xpYi5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGhpcmRwYXJ0eS9pcmMvaXJj
bGliLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjVmNzE0MWM0ZTg4ZTI3NjY4MjgxMmQzY2Y0NTg1ZDJmYmQyM2E3
M2QKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3RoaXJkcGFydHkv
aXJjL2lyY2xpYi5weQpAQCAtMCwwICsxLDE1NjAgQEAKKyMgQ29weXJpZ2h0IChDKSAxOTk5LS0y
MDAyICBKb2VsIFJvc2RhaGwKKyMKKyMgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlv
dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorIyBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1z
IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisjIExpY2Vuc2UgYXMgcHVibGlzaGVk
IGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorIyB2ZXJzaW9uIDIuMSBv
ZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyMK
KyMgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBi
ZSB1c2VmdWwsCisjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBp
bXBsaWVkIHdhcnJhbnR5IG9mCisjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisjIExlc3NlciBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisjCisjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBh
IGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyMgTGljZW5zZSBhbG9uZyB3
aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorIyBG
b3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAw
MjExMS0xMzA3ICBVU0EKKyMKKyMga2VsdHVzIDxrZWx0dXNAdXNlcnMuc291cmNlZm9yZ2UubmV0
PgorIworIyAkSWQ6IGlyY2xpYi5weSx2IDEuNDcgMjAwOC8wOS8yNSAyMjowMDo1OSBrZWx0dXMg
RXhwICQKKworIiIiaXJjbGliIC0tIEludGVybmV0IFJlbGF5IENoYXQgKElSQykgcHJvdG9jb2wg
Y2xpZW50IGxpYnJhcnkuCisKK1RoaXMgbGlicmFyeSBpcyBpbnRlbmRlZCB0byBlbmNhcHN1bGF0
ZSB0aGUgSVJDIHByb3RvY29sIGF0IGEgcXVpdGUKK2xvdyBsZXZlbC4gIEl0IHByb3ZpZGVzIGFu
IGV2ZW50LWRyaXZlbiBJUkMgY2xpZW50IGZyYW1ld29yay4gIEl0IGhhcworYSBmYWlybHkgdGhv
cm91Z2ggc3VwcG9ydCBmb3IgdGhlIGJhc2ljIElSQyBwcm90b2NvbCwgQ1RDUCwgRENDIGNoYXQs
CitidXQgRENDIGZpbGUgdHJhbnNmZXJzIGlzIG5vdCB5ZXQgc3VwcG9ydGVkLgorCitJbiBvcmRl
ciB0byB1bmRlcnN0YW5kIGhvdyB0byBtYWtlIGFuIElSQyBjbGllbnQsIEknbSBhZnJhaWQgeW91
IG1vcmUKK29yIGxlc3MgbXVzdCB1bmRlcnN0YW5kIHRoZSBJUkMgc3BlY2lmaWNhdGlvbnMuICBU
aGV5IGFyZSBhdmFpbGFibGUKK2hlcmU6IFtJUkMgc3BlY2lmaWNhdGlvbnNdLgorCitUaGUgbWFp
biBmZWF0dXJlcyBvZiB0aGUgSVJDIGNsaWVudCBmcmFtZXdvcmsgYXJlOgorCisgICogQWJzdHJh
Y3Rpb24gb2YgdGhlIElSQyBwcm90b2NvbC4KKyAgKiBIYW5kbGVzIG11bHRpcGxlIHNpbXVsdGFu
ZW91cyBJUkMgc2VydmVyIGNvbm5lY3Rpb25zLgorICAqIEhhbmRsZXMgc2VydmVyIFBPTkdpbmcg
dHJhbnNwYXJlbnRseS4KKyAgKiBNZXNzYWdlcyB0byB0aGUgSVJDIHNlcnZlciBhcmUgZG9uZSBi
eSBjYWxsaW5nIG1ldGhvZHMgb24gYW4gSVJDCisgICAgY29ubmVjdGlvbiBvYmplY3QuCisgICog
TWVzc2FnZXMgZnJvbSBhbiBJUkMgc2VydmVyIHRyaWdnZXJzIGV2ZW50cywgd2hpY2ggY2FuIGJl
IGNhdWdodAorICAgIGJ5IGV2ZW50IGhhbmRsZXJzLgorICAqIFJlYWRpbmcgZnJvbSBhbmQgd3Jp
dGluZyB0byBJUkMgc2VydmVyIHNvY2tldHMgYXJlIG5vcm1hbGx5IGRvbmUKKyAgICBieSBhbiBp
bnRlcm5hbCBzZWxlY3QoKSBsb29wLCBidXQgdGhlIHNlbGVjdCgpaW5nIG1heSBiZSBkb25lIGJ5
CisgICAgYW4gZXh0ZXJuYWwgbWFpbiBsb29wLgorICAqIEZ1bmN0aW9ucyBjYW4gYmUgcmVnaXN0
ZXJlZCB0byBleGVjdXRlIGF0IHNwZWNpZmllZCB0aW1lcyBieSB0aGUKKyAgICBldmVudC1sb29w
LgorICAqIERlY29kZXMgQ1RDUCB0YWdnaW5nIGNvcnJlY3RseSAoaG9wZWZ1bGx5KTsgSSBoYXZl
bid0IHNlZW4gYW55CisgICAgb3RoZXIgSVJDIGNsaWVudCBpbXBsZW1lbnRhdGlvbiB0aGF0IGhh
bmRsZXMgdGhlIENUQ1AKKyAgICBzcGVjaWZpY2F0aW9uIHN1YnRpbHRpZXMuCisgICogQSBraW5k
IG9mIHNpbXBsZSwgc2luZ2xlLXNlcnZlciwgb2JqZWN0LW9yaWVudGVkIElSQyBjbGllbnQgY2xh
c3MKKyAgICB0aGF0IGRpc3BhdGNoZXMgZXZlbnRzIHRvIGluc3RhbmNlIG1ldGhvZHMgaXMgaW5j
bHVkZWQuCisKK0N1cnJlbnQgbGltaXRhdGlvbnM6CisKKyAgKiBUaGUgSVJDIHByb3RvY29sIHNo
aW5lcyB0aHJvdWdoIHRoZSBhYnN0cmFjdGlvbiBhIGJpdCB0b28gbXVjaC4KKyAgKiBEYXRhIGlz
IG5vdCB3cml0dGVuIGFzeW5jaHJvbm91c2x5IHRvIHRoZSBzZXJ2ZXIsIGkuZS4gdGhlIHdyaXRl
KCkKKyAgICBtYXkgYmxvY2sgaWYgdGhlIFRDUCBidWZmZXJzIGFyZSBzdHVmZmVkLgorICAqIFRo
ZXJlIGFyZSBubyBzdXBwb3J0IGZvciBEQ0MgZmlsZSB0cmFuc2ZlcnMuCisgICogVGhlIGF1dGhv
ciBoYXZlbid0IGV2ZW4gcmVhZCBSRkMgMjgxMCwgMjgxMSwgMjgxMiBhbmQgMjgxMy4KKyAgKiBM
aWtlIG1vc3QgcHJvamVjdHMsIGRvY3VtZW50YXRpb24gaXMgbGFja2luZy4uLgorCisuLiBbSVJD
IHNwZWNpZmljYXRpb25zXSBodHRwOi8vd3d3LmlyY2hlbHAub3JnL2lyY2hlbHAvcmZjLworIiIi
CisKK2ltcG9ydCBiaXNlY3QKK2ltcG9ydCByZQoraW1wb3J0IHNlbGVjdAoraW1wb3J0IHNvY2tl
dAoraW1wb3J0IHN0cmluZworaW1wb3J0IHN5cworaW1wb3J0IHRpbWUKK2ltcG9ydCB0eXBlcwor
CitWRVJTSU9OID0gMCwgNCwgOAorREVCVUcgPSAwCisKKyMgVE9ETworIyAtLS0tCisjIChtYXli
ZSkgdGhyZWFkIHNhZmV0eQorIyAobWF5YmUpIGNvbG9yIHBhcnNlciBjb252ZW5pZW5jZSBmdW5j
dGlvbnMKKyMgZG9jdW1lbnRhdGlvbiAoaW5jbHVkaW5nIGFsbCBldmVudCB0eXBlcykKKyMgKG1h
eWJlKSBhZGQgYXdhcmVuZXNzIG9mIGRpZmZlcmVudCB0eXBlcyBvZiBpcmNkcworIyBzZW5kIGRh
dGEgYXN5bmNocm9ub3VzbHkgdG8gdGhlIHNlcnZlciAoYW5kIERDQyBjb25uZWN0aW9ucykKKyMg
KG1heWJlKSBhdXRvbWF0aWNhbGx5IGNsb3NlIHVudXNlZCwgcGFzc2l2ZSBEQ0MgY29ubmVjdGlv
bnMgYWZ0ZXIgYSB3aGlsZQorCisjIE5PVEVTCisjIC0tLS0tCisjIGNvbm5lY3Rpb24ucXVpdCgp
IG9ubHkgc2VuZHMgUVVJVCB0byB0aGUgc2VydmVyLgorIyBFUlJPUiBmcm9tIHRoZSBzZXJ2ZXIg
dHJpZ2dlcnMgdGhlIGVycm9yIGV2ZW50IGFuZCB0aGUgZGlzY29ubmVjdCBldmVudC4KKyMgZHJv
cHBpbmcgb2YgdGhlIGNvbm5lY3Rpb24gdHJpZ2dlcnMgdGhlIGRpc2Nvbm5lY3QgZXZlbnQuCisK
K2NsYXNzIElSQ0Vycm9yKEV4Y2VwdGlvbik6CisgICAgIiIiUmVwcmVzZW50cyBhbiBJUkMgZXhj
ZXB0aW9uLiIiIgorICAgIHBhc3MKKworCitjbGFzcyBJUkM6CisgICAgIiIiQ2xhc3MgdGhhdCBo
YW5kbGVzIG9uZSBvciBzZXZlcmFsIElSQyBzZXJ2ZXIgY29ubmVjdGlvbnMuCisKKyAgICBXaGVu
IGFuIElSQyBvYmplY3QgaGFzIGJlZW4gaW5zdGFudGlhdGVkLCBpdCBjYW4gYmUgdXNlZCB0byBj
cmVhdGUKKyAgICBDb25uZWN0aW9uIG9iamVjdHMgdGhhdCByZXByZXNlbnQgdGhlIElSQyBjb25u
ZWN0aW9ucy4gIFRoZQorICAgIHJlc3BvbnNpYmlsaXR5IG9mIHRoZSBJUkMgb2JqZWN0IGlzIHRv
IHByb3ZpZGUgYW4gZXZlbnQtZHJpdmVuCisgICAgZnJhbWV3b3JrIGZvciB0aGUgY29ubmVjdGlv
bnMgYW5kIHRvIGtlZXAgdGhlIGNvbm5lY3Rpb25zIGFsaXZlLgorICAgIEl0IHJ1bnMgYSBzZWxl
Y3QgbG9vcCB0byBwb2xsIGVhY2ggY29ubmVjdGlvbidzIFRDUCBzb2NrZXQgYW5kCisgICAgaGFu
ZHMgb3ZlciB0aGUgc29ja2V0cyB3aXRoIGluY29taW5nIGRhdGEgZm9yIHByb2Nlc3NpbmcgYnkg
dGhlCisgICAgY29ycmVzcG9uZGluZyBjb25uZWN0aW9uLgorCisgICAgVGhlIG1ldGhvZHMgb2Yg
bW9zdCBpbnRlcmVzdCBmb3IgYW4gSVJDIGNsaWVudCB3cml0ZXIgYXJlIHNlcnZlciwKKyAgICBh
ZGRfZ2xvYmFsX2hhbmRsZXIsIHJlbW92ZV9nbG9iYWxfaGFuZGxlciwgZXhlY3V0ZV9hdCwKKyAg
ICBleGVjdXRlX2RlbGF5ZWQsIHByb2Nlc3Nfb25jZSBhbmQgcHJvY2Vzc19mb3JldmVyLgorCisg
ICAgSGVyZSBpcyBhbiBleGFtcGxlOgorCisgICAgICAgIGlyYyA9IGlyY2xpYi5JUkMoKQorICAg
ICAgICBzZXJ2ZXIgPSBpcmMuc2VydmVyKCkKKyAgICAgICAgc2VydmVyLmNvbm5lY3QoXCJpcmMu
c29tZS53aGVyZVwiLCA2NjY3LCBcIm15X25pY2tuYW1lXCIpCisgICAgICAgIHNlcnZlci5wcml2
bXNnKFwiYV9uaWNrbmFtZVwiLCBcIkhpIHRoZXJlIVwiKQorICAgICAgICBpcmMucHJvY2Vzc19m
b3JldmVyKCkKKworICAgIFRoaXMgd2lsbCBjb25uZWN0IHRvIHRoZSBJUkMgc2VydmVyIGlyYy5z
b21lLndoZXJlIG9uIHBvcnQgNjY2NworICAgIHVzaW5nIHRoZSBuaWNrbmFtZSBteV9uaWNrbmFt
ZSBhbmQgc2VuZCB0aGUgbWVzc2FnZSBcIkhpIHRoZXJlIVwiCisgICAgdG8gdGhlIG5pY2tuYW1l
IGFfbmlja25hbWUuCisgICAgIiIiCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgZm5fdG9fYWRk
X3NvY2tldD1Ob25lLAorICAgICAgICAgICAgICAgICBmbl90b19yZW1vdmVfc29ja2V0PU5vbmUs
CisgICAgICAgICAgICAgICAgIGZuX3RvX2FkZF90aW1lb3V0PU5vbmUpOgorICAgICAgICAiIiJD
b25zdHJ1Y3RvciBmb3IgSVJDIG9iamVjdHMuCisKKyAgICAgICAgT3B0aW9uYWwgYXJndW1lbnRz
IGFyZSBmbl90b19hZGRfc29ja2V0LCBmbl90b19yZW1vdmVfc29ja2V0CisgICAgICAgIGFuZCBm
bl90b19hZGRfdGltZW91dC4gIFRoZSBmaXJzdCB0d28gc3BlY2lmeSBmdW5jdGlvbnMgdGhhdAor
ICAgICAgICB3aWxsIGJlIGNhbGxlZCB3aXRoIGEgc29ja2V0IG9iamVjdCBhcyBhcmd1bWVudCB3
aGVuIHRoZSBJUkMKKyAgICAgICAgb2JqZWN0IHdhbnRzIHRvIGJlIG5vdGlmaWVkIChvciBzdG9w
IGJlaW5nIG5vdGlmaWVkKSBvZiBkYXRhCisgICAgICAgIGNvbWluZyBvbiBhIG5ldyBzb2NrZXQu
ICBXaGVuIG5ldyBkYXRhIGFycml2ZXMsIHRoZSBtZXRob2QKKyAgICAgICAgcHJvY2Vzc19kYXRh
IHNob3VsZCBiZSBjYWxsZWQuICBTaW1pbGFybHksIGZuX3RvX2FkZF90aW1lb3V0CisgICAgICAg
IGlzIGNhbGxlZCB3aXRoIGEgbnVtYmVyIG9mIHNlY29uZHMgKGEgZmxvYXRpbmcgcG9pbnQgbnVt
YmVyKQorICAgICAgICBhcyBmaXJzdCBhcmd1bWVudCB3aGVuIHRoZSBJUkMgb2JqZWN0IHdhbnRz
IHRvIHJlY2VpdmUgYQorICAgICAgICBub3RpZmljYXRpb24gKGJ5IGNhbGxpbmcgdGhlIHByb2Nl
c3NfdGltZW91dCBtZXRob2QpLiAgU28sIGlmCisgICAgICAgIGUuZy4gdGhlIGFyZ3VtZW50IGlz
IDQyLjE3LCB0aGUgb2JqZWN0IHdhbnRzIHRoZQorICAgICAgICBwcm9jZXNzX3RpbWVvdXQgbWV0
aG9kIHRvIGJlIGNhbGxlZCBhZnRlciA0MiBzZWNvbmRzIGFuZCAxNzAKKyAgICAgICAgbWlsbGlz
ZWNvbmRzLgorCisgICAgICAgIFRoZSB0aHJlZSBhcmd1bWVudHMgbWFpbmx5IGV4aXN0IHRvIGJl
IGFibGUgdG8gdXNlIGFuIGV4dGVybmFsCisgICAgICAgIG1haW4gbG9vcCAoZm9yIGV4YW1wbGUg
VGtpbnRlcidzIG9yIFB5R1RLJ3MgbWFpbiBhcHAgbG9vcCkKKyAgICAgICAgaW5zdGVhZCBvZiBj
YWxsaW5nIHRoZSBwcm9jZXNzX2ZvcmV2ZXIgbWV0aG9kLgorCisgICAgICAgIEFuIGFsdGVybmF0
aXZlIGlzIHRvIGp1c3QgY2FsbCBTZXJ2ZXJDb25uZWN0aW9uLnByb2Nlc3Nfb25jZSgpCisgICAg
ICAgIG9uY2UgaW4gYSB3aGlsZS4KKyAgICAgICAgIiIiCisKKyAgICAgICAgaWYgZm5fdG9fYWRk
X3NvY2tldCBhbmQgZm5fdG9fcmVtb3ZlX3NvY2tldDoKKyAgICAgICAgICAgIHNlbGYuZm5fdG9f
YWRkX3NvY2tldCA9IGZuX3RvX2FkZF9zb2NrZXQKKyAgICAgICAgICAgIHNlbGYuZm5fdG9fcmVt
b3ZlX3NvY2tldCA9IGZuX3RvX3JlbW92ZV9zb2NrZXQKKyAgICAgICAgZWxzZToKKyAgICAgICAg
ICAgIHNlbGYuZm5fdG9fYWRkX3NvY2tldCA9IE5vbmUKKyAgICAgICAgICAgIHNlbGYuZm5fdG9f
cmVtb3ZlX3NvY2tldCA9IE5vbmUKKworICAgICAgICBzZWxmLmZuX3RvX2FkZF90aW1lb3V0ID0g
Zm5fdG9fYWRkX3RpbWVvdXQKKyAgICAgICAgc2VsZi5jb25uZWN0aW9ucyA9IFtdCisgICAgICAg
IHNlbGYuaGFuZGxlcnMgPSB7fQorICAgICAgICBzZWxmLmRlbGF5ZWRfY29tbWFuZHMgPSBbXSAj
IGxpc3Qgb2YgdHVwbGVzIGluIHRoZSBmb3JtYXQgKHRpbWUsIGZ1bmN0aW9uLCBhcmd1bWVudHMp
CisKKyAgICAgICAgc2VsZi5hZGRfZ2xvYmFsX2hhbmRsZXIoInBpbmciLCBfcGluZ19wb25nZXIs
IC00MikKKworICAgIGRlZiBzZXJ2ZXIoc2VsZik6CisgICAgICAgICIiIkNyZWF0ZXMgYW5kIHJl
dHVybnMgYSBTZXJ2ZXJDb25uZWN0aW9uIG9iamVjdC4iIiIKKworICAgICAgICBjID0gU2VydmVy
Q29ubmVjdGlvbihzZWxmKQorICAgICAgICBzZWxmLmNvbm5lY3Rpb25zLmFwcGVuZChjKQorICAg
ICAgICByZXR1cm4gYworCisgICAgZGVmIHByb2Nlc3NfZGF0YShzZWxmLCBzb2NrZXRzKToKKyAg
ICAgICAgIiIiQ2FsbGVkIHdoZW4gdGhlcmUgaXMgbW9yZSBkYXRhIHRvIHJlYWQgb24gY29ubmVj
dGlvbiBzb2NrZXRzLgorCisgICAgICAgIEFyZ3VtZW50czoKKworICAgICAgICAgICAgc29ja2V0
cyAtLSBBIGxpc3Qgb2Ygc29ja2V0IG9iamVjdHMuCisKKyAgICAgICAgU2VlIGRvY3VtZW50YXRp
b24gZm9yIElSQy5fX2luaXRfXy4KKyAgICAgICAgIiIiCisgICAgICAgIGZvciBzIGluIHNvY2tl
dHM6CisgICAgICAgICAgICBmb3IgYyBpbiBzZWxmLmNvbm5lY3Rpb25zOgorICAgICAgICAgICAg
ICAgIGlmIHMgPT0gYy5fZ2V0X3NvY2tldCgpOgorICAgICAgICAgICAgICAgICAgICBjLnByb2Nl
c3NfZGF0YSgpCisKKyAgICBkZWYgcHJvY2Vzc190aW1lb3V0KHNlbGYpOgorICAgICAgICAiIiJD
YWxsZWQgd2hlbiBhIHRpbWVvdXQgbm90aWZpY2F0aW9uIGlzIGR1ZS4KKworICAgICAgICBTZWUg
ZG9jdW1lbnRhdGlvbiBmb3IgSVJDLl9faW5pdF9fLgorICAgICAgICAiIiIKKyAgICAgICAgdCA9
IHRpbWUudGltZSgpCisgICAgICAgIHdoaWxlIHNlbGYuZGVsYXllZF9jb21tYW5kczoKKyAgICAg
ICAgICAgIGlmIHQgPj0gc2VsZi5kZWxheWVkX2NvbW1hbmRzWzBdWzBdOgorICAgICAgICAgICAg
ICAgIHNlbGYuZGVsYXllZF9jb21tYW5kc1swXVsxXSgqc2VsZi5kZWxheWVkX2NvbW1hbmRzWzBd
WzJdKQorICAgICAgICAgICAgICAgIGRlbCBzZWxmLmRlbGF5ZWRfY29tbWFuZHNbMF0KKyAgICAg
ICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgYnJlYWsKKworICAgIGRlZiBwcm9jZXNzX29u
Y2Uoc2VsZiwgdGltZW91dD0wKToKKyAgICAgICAgIiIiUHJvY2VzcyBkYXRhIGZyb20gY29ubmVj
dGlvbnMgb25jZS4KKworICAgICAgICBBcmd1bWVudHM6CisKKyAgICAgICAgICAgIHRpbWVvdXQg
LS0gSG93IGxvbmcgdGhlIHNlbGVjdCgpIGNhbGwgc2hvdWxkIHdhaXQgaWYgbm8KKyAgICAgICAg
ICAgICAgICAgICAgICAgZGF0YSBpcyBhdmFpbGFibGUuCisKKyAgICAgICAgVGhpcyBtZXRob2Qg
c2hvdWxkIGJlIGNhbGxlZCBwZXJpb2RpY2FsbHkgdG8gY2hlY2sgYW5kIHByb2Nlc3MKKyAgICAg
ICAgaW5jb21pbmcgZGF0YSwgaWYgdGhlcmUgYXJlIGFueS4gIElmIHRoYXQgc2VlbXMgYm9yaW5n
LCBsb29rCisgICAgICAgIGF0IHRoZSBwcm9jZXNzX2ZvcmV2ZXIgbWV0aG9kLgorICAgICAgICAi
IiIKKyAgICAgICAgc29ja2V0cyA9IG1hcChsYW1iZGEgeDogeC5fZ2V0X3NvY2tldCgpLCBzZWxm
LmNvbm5lY3Rpb25zKQorICAgICAgICBzb2NrZXRzID0gZmlsdGVyKGxhbWJkYSB4OiB4ICE9IE5v
bmUsIHNvY2tldHMpCisgICAgICAgIGlmIHNvY2tldHM6CisgICAgICAgICAgICAoaSwgbywgZSkg
PSBzZWxlY3Quc2VsZWN0KHNvY2tldHMsIFtdLCBbXSwgdGltZW91dCkKKyAgICAgICAgICAgIHNl
bGYucHJvY2Vzc19kYXRhKGkpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICB0aW1lLnNsZWVw
KHRpbWVvdXQpCisgICAgICAgIHNlbGYucHJvY2Vzc190aW1lb3V0KCkKKworICAgIGRlZiBwcm9j
ZXNzX2ZvcmV2ZXIoc2VsZiwgdGltZW91dD0wLjIpOgorICAgICAgICAiIiJSdW4gYW4gaW5maW5p
dGUgbG9vcCwgcHJvY2Vzc2luZyBkYXRhIGZyb20gY29ubmVjdGlvbnMuCisKKyAgICAgICAgVGhp
cyBtZXRob2QgcmVwZWF0ZWRseSBjYWxscyBwcm9jZXNzX29uY2UuCisKKyAgICAgICAgQXJndW1l
bnRzOgorCisgICAgICAgICAgICB0aW1lb3V0IC0tIFBhcmFtZXRlciB0byBwYXNzIHRvIHByb2Nl
c3Nfb25jZS4KKyAgICAgICAgIiIiCisgICAgICAgIHdoaWxlIDE6CisgICAgICAgICAgICBzZWxm
LnByb2Nlc3Nfb25jZSh0aW1lb3V0KQorCisgICAgZGVmIGRpc2Nvbm5lY3RfYWxsKHNlbGYsIG1l
c3NhZ2U9IiIpOgorICAgICAgICAiIiJEaXNjb25uZWN0cyBhbGwgY29ubmVjdGlvbnMuIiIiCisg
ICAgICAgIGZvciBjIGluIHNlbGYuY29ubmVjdGlvbnM6CisgICAgICAgICAgICBjLmRpc2Nvbm5l
Y3QobWVzc2FnZSkKKworICAgIGRlZiBhZGRfZ2xvYmFsX2hhbmRsZXIoc2VsZiwgZXZlbnQsIGhh
bmRsZXIsIHByaW9yaXR5PTApOgorICAgICAgICAiIiJBZGRzIGEgZ2xvYmFsIGhhbmRsZXIgZnVu
Y3Rpb24gZm9yIGEgc3BlY2lmaWMgZXZlbnQgdHlwZS4KKworICAgICAgICBBcmd1bWVudHM6CisK
KyAgICAgICAgICAgIGV2ZW50IC0tIEV2ZW50IHR5cGUgKGEgc3RyaW5nKS4gIENoZWNrIHRoZSB2
YWx1ZXMgb2YgdGhlCisgICAgICAgICAgICBudW1lcmljX2V2ZW50cyBkaWN0aW9uYXJ5IGluIGly
Y2xpYi5weSBmb3IgcG9zc2libGUgZXZlbnQKKyAgICAgICAgICAgIHR5cGVzLgorCisgICAgICAg
ICAgICBoYW5kbGVyIC0tIENhbGxiYWNrIGZ1bmN0aW9uLgorCisgICAgICAgICAgICBwcmlvcml0
eSAtLSBBIG51bWJlciAodGhlIGxvd2VyIG51bWJlciwgdGhlIGhpZ2hlciBwcmlvcml0eSkuCisK
KyAgICAgICAgVGhlIGhhbmRsZXIgZnVuY3Rpb24gaXMgY2FsbGVkIHdoZW5ldmVyIHRoZSBzcGVj
aWZpZWQgZXZlbnQgaXMKKyAgICAgICAgdHJpZ2dlcmVkIGluIGFueSBvZiB0aGUgY29ubmVjdGlv
bnMuICBTZWUgZG9jdW1lbnRhdGlvbiBmb3IKKyAgICAgICAgdGhlIEV2ZW50IGNsYXNzLgorCisg
ICAgICAgIFRoZSBoYW5kbGVyIGZ1bmN0aW9ucyBhcmUgY2FsbGVkIGluIHByaW9yaXR5IG9yZGVy
IChsb3dlc3QKKyAgICAgICAgbnVtYmVyIGlzIGhpZ2hlc3QgcHJpb3JpdHkpLiAgSWYgYSBoYW5k
bGVyIGZ1bmN0aW9uIHJldHVybnMKKyAgICAgICAgXCJOTyBNT1JFXCIsIG5vIG1vcmUgaGFuZGxl
cnMgd2lsbCBiZSBjYWxsZWQuCisgICAgICAgICIiIgorICAgICAgICBpZiBub3QgZXZlbnQgaW4g
c2VsZi5oYW5kbGVyczoKKyAgICAgICAgICAgIHNlbGYuaGFuZGxlcnNbZXZlbnRdID0gW10KKyAg
ICAgICAgYmlzZWN0Lmluc29ydChzZWxmLmhhbmRsZXJzW2V2ZW50XSwgKChwcmlvcml0eSwgaGFu
ZGxlcikpKQorCisgICAgZGVmIHJlbW92ZV9nbG9iYWxfaGFuZGxlcihzZWxmLCBldmVudCwgaGFu
ZGxlcik6CisgICAgICAgICIiIlJlbW92ZXMgYSBnbG9iYWwgaGFuZGxlciBmdW5jdGlvbi4KKwor
ICAgICAgICBBcmd1bWVudHM6CisKKyAgICAgICAgICAgIGV2ZW50IC0tIEV2ZW50IHR5cGUgKGEg
c3RyaW5nKS4KKworICAgICAgICAgICAgaGFuZGxlciAtLSBDYWxsYmFjayBmdW5jdGlvbi4KKwor
ICAgICAgICBSZXR1cm5zIDEgb24gc3VjY2Vzcywgb3RoZXJ3aXNlIDAuCisgICAgICAgICIiIgor
ICAgICAgICBpZiBub3QgZXZlbnQgaW4gc2VsZi5oYW5kbGVyczoKKyAgICAgICAgICAgIHJldHVy
biAwCisgICAgICAgIGZvciBoIGluIHNlbGYuaGFuZGxlcnNbZXZlbnRdOgorICAgICAgICAgICAg
aWYgaGFuZGxlciA9PSBoWzFdOgorICAgICAgICAgICAgICAgIHNlbGYuaGFuZGxlcnNbZXZlbnRd
LnJlbW92ZShoKQorICAgICAgICByZXR1cm4gMQorCisgICAgZGVmIGV4ZWN1dGVfYXQoc2VsZiwg
YXQsIGZ1bmN0aW9uLCBhcmd1bWVudHM9KCkpOgorICAgICAgICAiIiJFeGVjdXRlIGEgZnVuY3Rp
b24gYXQgYSBzcGVjaWZpZWQgdGltZS4KKworICAgICAgICBBcmd1bWVudHM6CisKKyAgICAgICAg
ICAgIGF0IC0tIEV4ZWN1dGUgYXQgdGhpcyB0aW1lIChzdGFuZGFyZCBcInRpbWVfdFwiIHRpbWUp
LgorCisgICAgICAgICAgICBmdW5jdGlvbiAtLSBGdW5jdGlvbiB0byBjYWxsLgorCisgICAgICAg
ICAgICBhcmd1bWVudHMgLS0gQXJndW1lbnRzIHRvIGdpdmUgdGhlIGZ1bmN0aW9uLgorICAgICAg
ICAiIiIKKyAgICAgICAgc2VsZi5leGVjdXRlX2RlbGF5ZWQoYXQtdGltZS50aW1lKCksIGZ1bmN0
aW9uLCBhcmd1bWVudHMpCisKKyAgICBkZWYgZXhlY3V0ZV9kZWxheWVkKHNlbGYsIGRlbGF5LCBm
dW5jdGlvbiwgYXJndW1lbnRzPSgpKToKKyAgICAgICAgIiIiRXhlY3V0ZSBhIGZ1bmN0aW9uIGFm
dGVyIGEgc3BlY2lmaWVkIHRpbWUuCisKKyAgICAgICAgQXJndW1lbnRzOgorCisgICAgICAgICAg
ICBkZWxheSAtLSBIb3cgbWFueSBzZWNvbmRzIHRvIHdhaXQuCisKKyAgICAgICAgICAgIGZ1bmN0
aW9uIC0tIEZ1bmN0aW9uIHRvIGNhbGwuCisKKyAgICAgICAgICAgIGFyZ3VtZW50cyAtLSBBcmd1
bWVudHMgdG8gZ2l2ZSB0aGUgZnVuY3Rpb24uCisgICAgICAgICIiIgorICAgICAgICBiaXNlY3Qu
aW5zb3J0KHNlbGYuZGVsYXllZF9jb21tYW5kcywgKGRlbGF5K3RpbWUudGltZSgpLCBmdW5jdGlv
biwgYXJndW1lbnRzKSkKKyAgICAgICAgaWYgc2VsZi5mbl90b19hZGRfdGltZW91dDoKKyAgICAg
ICAgICAgIHNlbGYuZm5fdG9fYWRkX3RpbWVvdXQoZGVsYXkpCisKKyAgICBkZWYgZGNjKHNlbGYs
IGRjY3R5cGU9ImNoYXQiKToKKyAgICAgICAgIiIiQ3JlYXRlcyBhbmQgcmV0dXJucyBhIERDQ0Nv
bm5lY3Rpb24gb2JqZWN0LgorCisgICAgICAgIEFyZ3VtZW50czoKKworICAgICAgICAgICAgZGNj
dHlwZSAtLSAiY2hhdCIgZm9yIERDQyBDSEFUIGNvbm5lY3Rpb25zIG9yICJyYXciIGZvcgorICAg
ICAgICAgICAgICAgICAgICAgICBEQ0MgU0VORCAob3Igb3RoZXIgRENDIHR5cGVzKS4gSWYgImNo
YXQiLAorICAgICAgICAgICAgICAgICAgICAgICBpbmNvbWluZyBkYXRhIHdpbGwgYmUgc3BsaXQg
aW4gbmV3bGluZS1zZXBhcmF0ZWQKKyAgICAgICAgICAgICAgICAgICAgICAgY2h1bmtzLiBJZiAi
cmF3IiwgaW5jb21pbmcgZGF0YSBpcyBub3QgdG91Y2hlZC4KKyAgICAgICAgIiIiCisgICAgICAg
IGMgPSBEQ0NDb25uZWN0aW9uKHNlbGYsIGRjY3R5cGUpCisgICAgICAgIHNlbGYuY29ubmVjdGlv
bnMuYXBwZW5kKGMpCisgICAgICAgIHJldHVybiBjCisKKyAgICBkZWYgX2hhbmRsZV9ldmVudChz
ZWxmLCBjb25uZWN0aW9uLCBldmVudCk6CisgICAgICAgICIiIltJbnRlcm5hbF0iIiIKKyAgICAg
ICAgaCA9IHNlbGYuaGFuZGxlcnMKKyAgICAgICAgZm9yIGhhbmRsZXIgaW4gaC5nZXQoImFsbF9l
dmVudHMiLCBbXSkgKyBoLmdldChldmVudC5ldmVudHR5cGUoKSwgW10pOgorICAgICAgICAgICAg
aWYgaGFuZGxlclsxXShjb25uZWN0aW9uLCBldmVudCkgPT0gIk5PIE1PUkUiOgorICAgICAgICAg
ICAgICAgIHJldHVybgorCisgICAgZGVmIF9yZW1vdmVfY29ubmVjdGlvbihzZWxmLCBjb25uZWN0
aW9uKToKKyAgICAgICAgIiIiW0ludGVybmFsXSIiIgorICAgICAgICBzZWxmLmNvbm5lY3Rpb25z
LnJlbW92ZShjb25uZWN0aW9uKQorICAgICAgICBpZiBzZWxmLmZuX3RvX3JlbW92ZV9zb2NrZXQ6
CisgICAgICAgICAgICBzZWxmLmZuX3RvX3JlbW92ZV9zb2NrZXQoY29ubmVjdGlvbi5fZ2V0X3Nv
Y2tldCgpKQorCitfcmZjXzE0NTlfY29tbWFuZF9yZWdleHAgPSByZS5jb21waWxlKCJeKDooP1A8
cHJlZml4PlteIF0rKSArKT8oP1A8Y29tbWFuZD5bXiBdKykoICooP1A8YXJndW1lbnQ+IC4rKSk/
IikKKworY2xhc3MgQ29ubmVjdGlvbjoKKyAgICAiIiJCYXNlIGNsYXNzIGZvciBJUkMgY29ubmVj
dGlvbnMuCisKKyAgICBNdXN0IGJlIG92ZXJyaWRkZW4uCisgICAgIiIiCisgICAgZGVmIF9faW5p
dF9fKHNlbGYsIGlyY2xpYm9iaik6CisgICAgICAgIHNlbGYuaXJjbGlib2JqID0gaXJjbGlib2Jq
CisKKyAgICBkZWYgX2dldF9zb2NrZXQoKToKKyAgICAgICAgcmFpc2UgSVJDRXJyb3IsICJOb3Qg
b3ZlcnJpZGRlbiIKKworICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworICAgICMj
IyBDb252ZW5pZW5jZSB3cmFwcGVycy4KKworICAgIGRlZiBleGVjdXRlX2F0KHNlbGYsIGF0LCBm
dW5jdGlvbiwgYXJndW1lbnRzPSgpKToKKyAgICAgICAgc2VsZi5pcmNsaWJvYmouZXhlY3V0ZV9h
dChhdCwgZnVuY3Rpb24sIGFyZ3VtZW50cykKKworICAgIGRlZiBleGVjdXRlX2RlbGF5ZWQoc2Vs
ZiwgZGVsYXksIGZ1bmN0aW9uLCBhcmd1bWVudHM9KCkpOgorICAgICAgICBzZWxmLmlyY2xpYm9i
ai5leGVjdXRlX2RlbGF5ZWQoZGVsYXksIGZ1bmN0aW9uLCBhcmd1bWVudHMpCisKKworY2xhc3Mg
U2VydmVyQ29ubmVjdGlvbkVycm9yKElSQ0Vycm9yKToKKyAgICBwYXNzCisKK2NsYXNzIFNlcnZl
ck5vdENvbm5lY3RlZEVycm9yKFNlcnZlckNvbm5lY3Rpb25FcnJvcik6CisgICAgcGFzcworCisK
KyMgSHVoIT8gIENycnJyYXp5IEVGTmV0IGRvZXNuJ3QgZm9sbG93IHRoZSBSRkM6IHRoZWlyIGly
Y2Qgc2VlbXMgdG8KKyMgdXNlIFxuIGFzIG1lc3NhZ2Ugc2VwYXJhdG9yISAgOlAKK19saW5lc2Vw
X3JlZ2V4cCA9IHJlLmNvbXBpbGUoIlxyP1xuIikKKworY2xhc3MgU2VydmVyQ29ubmVjdGlvbihD
b25uZWN0aW9uKToKKyAgICAiIiJUaGlzIGNsYXNzIHJlcHJlc2VudHMgYW4gSVJDIHNlcnZlciBj
b25uZWN0aW9uLgorCisgICAgU2VydmVyQ29ubmVjdGlvbiBvYmplY3RzIGFyZSBpbnN0YW50aWF0
ZWQgYnkgY2FsbGluZyB0aGUgc2VydmVyCisgICAgbWV0aG9kIG9uIGFuIElSQyBvYmplY3QuCisg
ICAgIiIiCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgaXJjbGlib2JqKToKKyAgICAgICAgQ29u
bmVjdGlvbi5fX2luaXRfXyhzZWxmLCBpcmNsaWJvYmopCisgICAgICAgIHNlbGYuY29ubmVjdGVk
ID0gMCAgIyBOb3QgY29ubmVjdGVkIHlldC4KKyAgICAgICAgc2VsZi5zb2NrZXQgPSBOb25lCisg
ICAgICAgIHNlbGYuc3NsID0gTm9uZQorCisgICAgZGVmIGNvbm5lY3Qoc2VsZiwgc2VydmVyLCBw
b3J0LCBuaWNrbmFtZSwgcGFzc3dvcmQ9Tm9uZSwgdXNlcm5hbWU9Tm9uZSwKKyAgICAgICAgICAg
ICAgICBpcmNuYW1lPU5vbmUsIGxvY2FsYWRkcmVzcz0iIiwgbG9jYWxwb3J0PTAsIHNzbD1GYWxz
ZSwgaXB2Nj1GYWxzZSk6CisgICAgICAgICIiIkNvbm5lY3QvcmVjb25uZWN0IHRvIGEgc2VydmVy
LgorCisgICAgICAgIEFyZ3VtZW50czoKKworICAgICAgICAgICAgc2VydmVyIC0tIFNlcnZlciBu
YW1lLgorCisgICAgICAgICAgICBwb3J0IC0tIFBvcnQgbnVtYmVyLgorCisgICAgICAgICAgICBu
aWNrbmFtZSAtLSBUaGUgbmlja25hbWUuCisKKyAgICAgICAgICAgIHBhc3N3b3JkIC0tIFBhc3N3
b3JkIChpZiBhbnkpLgorCisgICAgICAgICAgICB1c2VybmFtZSAtLSBUaGUgdXNlcm5hbWUuCisK
KyAgICAgICAgICAgIGlyY25hbWUgLS0gVGhlIElSQyBuYW1lICgicmVhbG5hbWUiKS4KKworICAg
ICAgICAgICAgbG9jYWxhZGRyZXNzIC0tIEJpbmQgdGhlIGNvbm5lY3Rpb24gdG8gYSBzcGVjaWZp
YyBsb2NhbCBJUCBhZGRyZXNzLgorCisgICAgICAgICAgICBsb2NhbHBvcnQgLS0gQmluZCB0aGUg
Y29ubmVjdGlvbiB0byBhIHNwZWNpZmljIGxvY2FsIHBvcnQuCisKKyAgICAgICAgICAgIHNzbCAt
LSBFbmFibGUgc3VwcG9ydCBmb3Igc3NsLgorCisgICAgICAgICAgICBpcHY2IC0tIEVuYWJsZSBz
dXBwb3J0IGZvciBpcHY2LgorCisgICAgICAgIFRoaXMgZnVuY3Rpb24gY2FuIGJlIGNhbGxlZCB0
byByZWNvbm5lY3QgYSBjbG9zZWQgY29ubmVjdGlvbi4KKworICAgICAgICBSZXR1cm5zIHRoZSBT
ZXJ2ZXJDb25uZWN0aW9uIG9iamVjdC4KKyAgICAgICAgIiIiCisgICAgICAgIGlmIHNlbGYuY29u
bmVjdGVkOgorICAgICAgICAgICAgc2VsZi5kaXNjb25uZWN0KCJDaGFuZ2luZyBzZXJ2ZXJzIikK
KworICAgICAgICBzZWxmLnByZXZpb3VzX2J1ZmZlciA9ICIiCisgICAgICAgIHNlbGYuaGFuZGxl
cnMgPSB7fQorICAgICAgICBzZWxmLnJlYWxfc2VydmVyX25hbWUgPSAiIgorICAgICAgICBzZWxm
LnJlYWxfbmlja25hbWUgPSBuaWNrbmFtZQorICAgICAgICBzZWxmLnNlcnZlciA9IHNlcnZlcgor
ICAgICAgICBzZWxmLnBvcnQgPSBwb3J0CisgICAgICAgIHNlbGYubmlja25hbWUgPSBuaWNrbmFt
ZQorICAgICAgICBzZWxmLnVzZXJuYW1lID0gdXNlcm5hbWUgb3Igbmlja25hbWUKKyAgICAgICAg
c2VsZi5pcmNuYW1lID0gaXJjbmFtZSBvciBuaWNrbmFtZQorICAgICAgICBzZWxmLnBhc3N3b3Jk
ID0gcGFzc3dvcmQKKyAgICAgICAgc2VsZi5sb2NhbGFkZHJlc3MgPSBsb2NhbGFkZHJlc3MKKyAg
ICAgICAgc2VsZi5sb2NhbHBvcnQgPSBsb2NhbHBvcnQKKyAgICAgICAgc2VsZi5sb2NhbGhvc3Qg
PSBzb2NrZXQuZ2V0aG9zdG5hbWUoKQorICAgICAgICBpZiBpcHY2OgorICAgICAgICAgICAgc2Vs
Zi5zb2NrZXQgPSBzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVUNiwgc29ja2V0LlNPQ0tfU1RS
RUFNKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5zb2NrZXQgPSBzb2NrZXQuc29j
a2V0KHNvY2tldC5BRl9JTkVULCBzb2NrZXQuU09DS19TVFJFQU0pCisgICAgICAgIHRyeToKKyAg
ICAgICAgICAgIHNlbGYuc29ja2V0LmJpbmQoKHNlbGYubG9jYWxhZGRyZXNzLCBzZWxmLmxvY2Fs
cG9ydCkpCisgICAgICAgICAgICBzZWxmLnNvY2tldC5jb25uZWN0KChzZWxmLnNlcnZlciwgc2Vs
Zi5wb3J0KSkKKyAgICAgICAgICAgIGlmIHNzbDoKKyAgICAgICAgICAgICAgICBzZWxmLnNzbCA9
IHNvY2tldC5zc2woc2VsZi5zb2NrZXQpCisgICAgICAgIGV4Y2VwdCBzb2NrZXQuZXJyb3IsIHg6
CisgICAgICAgICAgICBzZWxmLnNvY2tldC5jbG9zZSgpCisgICAgICAgICAgICBzZWxmLnNvY2tl
dCA9IE5vbmUKKyAgICAgICAgICAgIHJhaXNlIFNlcnZlckNvbm5lY3Rpb25FcnJvciwgIkNvdWxk
bid0IGNvbm5lY3QgdG8gc29ja2V0OiAlcyIgJSB4CisgICAgICAgIHNlbGYuY29ubmVjdGVkID0g
MQorICAgICAgICBpZiBzZWxmLmlyY2xpYm9iai5mbl90b19hZGRfc29ja2V0OgorICAgICAgICAg
ICAgc2VsZi5pcmNsaWJvYmouZm5fdG9fYWRkX3NvY2tldChzZWxmLnNvY2tldCkKKworICAgICAg
ICAjIExvZyBvbi4uLgorICAgICAgICBpZiBzZWxmLnBhc3N3b3JkOgorICAgICAgICAgICAgc2Vs
Zi5wYXNzXyhzZWxmLnBhc3N3b3JkKQorICAgICAgICBzZWxmLm5pY2soc2VsZi5uaWNrbmFtZSkK
KyAgICAgICAgc2VsZi51c2VyKHNlbGYudXNlcm5hbWUsIHNlbGYuaXJjbmFtZSkKKyAgICAgICAg
cmV0dXJuIHNlbGYKKworICAgIGRlZiBjbG9zZShzZWxmKToKKyAgICAgICAgIiIiQ2xvc2UgdGhl
IGNvbm5lY3Rpb24uCisKKyAgICAgICAgVGhpcyBtZXRob2QgY2xvc2VzIHRoZSBjb25uZWN0aW9u
IHBlcm1hbmVudGx5OyBhZnRlciBpdCBoYXMKKyAgICAgICAgYmVlbiBjYWxsZWQsIHRoZSBvYmpl
Y3QgaXMgdW51c2FibGUuCisgICAgICAgICIiIgorCisgICAgICAgIHNlbGYuZGlzY29ubmVjdCgi
Q2xvc2luZyBvYmplY3QiKQorICAgICAgICBzZWxmLmlyY2xpYm9iai5fcmVtb3ZlX2Nvbm5lY3Rp
b24oc2VsZikKKworICAgIGRlZiBfZ2V0X3NvY2tldChzZWxmKToKKyAgICAgICAgIiIiW0ludGVy
bmFsXSIiIgorICAgICAgICByZXR1cm4gc2VsZi5zb2NrZXQKKworICAgIGRlZiBnZXRfc2VydmVy
X25hbWUoc2VsZik6CisgICAgICAgICIiIkdldCB0aGUgKHJlYWwpIHNlcnZlciBuYW1lLgorCisg
ICAgICAgIFRoaXMgbWV0aG9kIHJldHVybnMgdGhlIChyZWFsKSBzZXJ2ZXIgbmFtZSwgb3IsIG1v
cmUKKyAgICAgICAgc3BlY2lmaWNhbGx5LCB3aGF0IHRoZSBzZXJ2ZXIgY2FsbHMgaXRzZWxmLgor
ICAgICAgICAiIiIKKworICAgICAgICBpZiBzZWxmLnJlYWxfc2VydmVyX25hbWU6CisgICAgICAg
ICAgICByZXR1cm4gc2VsZi5yZWFsX3NlcnZlcl9uYW1lCisgICAgICAgIGVsc2U6CisgICAgICAg
ICAgICByZXR1cm4gIiIKKworICAgIGRlZiBnZXRfbmlja25hbWUoc2VsZik6CisgICAgICAgICIi
IkdldCB0aGUgKHJlYWwpIG5pY2sgbmFtZS4KKworICAgICAgICBUaGlzIG1ldGhvZCByZXR1cm5z
IHRoZSAocmVhbCkgbmlja25hbWUuICBUaGUgbGlicmFyeSBrZWVwcworICAgICAgICB0cmFjayBv
ZiBuaWNrIGNoYW5nZXMsIHNvIGl0IG1pZ2h0IG5vdCBiZSB0aGUgbmljayBuYW1lIHRoYXQKKyAg
ICAgICAgd2FzIHBhc3NlZCB0byB0aGUgY29ubmVjdCgpIG1ldGhvZC4gICIiIgorCisgICAgICAg
IHJldHVybiBzZWxmLnJlYWxfbmlja25hbWUKKworICAgIGRlZiBwcm9jZXNzX2RhdGEoc2VsZik6
CisgICAgICAgICIiIltJbnRlcm5hbF0iIiIKKworICAgICAgICB0cnk6CisgICAgICAgICAgICBp
ZiBzZWxmLnNzbDoKKyAgICAgICAgICAgICAgICBuZXdfZGF0YSA9IHNlbGYuc3NsLnJlYWQoMioq
MTQpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIG5ld19kYXRhID0gc2VsZi5z
b2NrZXQucmVjdigyKioxNCkKKyAgICAgICAgZXhjZXB0IHNvY2tldC5lcnJvciwgeDoKKyAgICAg
ICAgICAgICMgVGhlIHNlcnZlciBodW5nIHVwLgorICAgICAgICAgICAgc2VsZi5kaXNjb25uZWN0
KCJDb25uZWN0aW9uIHJlc2V0IGJ5IHBlZXIiKQorICAgICAgICAgICAgcmV0dXJuCisgICAgICAg
IGlmIG5vdCBuZXdfZGF0YToKKyAgICAgICAgICAgICMgUmVhZCBub3RoaW5nOiBjb25uZWN0aW9u
IG11c3QgYmUgZG93bi4KKyAgICAgICAgICAgIHNlbGYuZGlzY29ubmVjdCgiQ29ubmVjdGlvbiBy
ZXNldCBieSBwZWVyIikKKyAgICAgICAgICAgIHJldHVybgorCisgICAgICAgIGxpbmVzID0gX2xp
bmVzZXBfcmVnZXhwLnNwbGl0KHNlbGYucHJldmlvdXNfYnVmZmVyICsgbmV3X2RhdGEpCisKKyAg
ICAgICAgIyBTYXZlIHRoZSBsYXN0LCB1bmZpbmlzaGVkIGxpbmUuCisgICAgICAgIHNlbGYucHJl
dmlvdXNfYnVmZmVyID0gbGluZXMucG9wKCkKKworICAgICAgICBmb3IgbGluZSBpbiBsaW5lczoK
KyAgICAgICAgICAgIGlmIERFQlVHOgorICAgICAgICAgICAgICAgIHByaW50ICJGUk9NIFNFUlZF
UjoiLCBsaW5lCisKKyAgICAgICAgICAgIGlmIG5vdCBsaW5lOgorICAgICAgICAgICAgICAgIGNv
bnRpbnVlCisKKyAgICAgICAgICAgIHByZWZpeCA9IE5vbmUKKyAgICAgICAgICAgIGNvbW1hbmQg
PSBOb25lCisgICAgICAgICAgICBhcmd1bWVudHMgPSBOb25lCisgICAgICAgICAgICBzZWxmLl9o
YW5kbGVfZXZlbnQoRXZlbnQoImFsbF9yYXdfbWVzc2FnZXMiLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHNlbGYuZ2V0X3NlcnZlcl9uYW1lKCksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgTm9uZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBbbGluZV0pKQorCisgICAgICAgICAgICBtID0gX3JmY18xNDU5X2NvbW1hbmRf
cmVnZXhwLm1hdGNoKGxpbmUpCisgICAgICAgICAgICBpZiBtLmdyb3VwKCJwcmVmaXgiKToKKyAg
ICAgICAgICAgICAgICBwcmVmaXggPSBtLmdyb3VwKCJwcmVmaXgiKQorICAgICAgICAgICAgICAg
IGlmIG5vdCBzZWxmLnJlYWxfc2VydmVyX25hbWU6CisgICAgICAgICAgICAgICAgICAgIHNlbGYu
cmVhbF9zZXJ2ZXJfbmFtZSA9IHByZWZpeAorCisgICAgICAgICAgICBpZiBtLmdyb3VwKCJjb21t
YW5kIik6CisgICAgICAgICAgICAgICAgY29tbWFuZCA9IG0uZ3JvdXAoImNvbW1hbmQiKS5sb3dl
cigpCisKKyAgICAgICAgICAgIGlmIG0uZ3JvdXAoImFyZ3VtZW50Iik6CisgICAgICAgICAgICAg
ICAgYSA9IG0uZ3JvdXAoImFyZ3VtZW50Iikuc3BsaXQoIiA6IiwgMSkKKyAgICAgICAgICAgICAg
ICBhcmd1bWVudHMgPSBhWzBdLnNwbGl0KCkKKyAgICAgICAgICAgICAgICBpZiBsZW4oYSkgPT0g
MjoKKyAgICAgICAgICAgICAgICAgICAgYXJndW1lbnRzLmFwcGVuZChhWzFdKQorCisgICAgICAg
ICAgICAjIFRyYW5zbGF0ZSBudW1lcmljcyBpbnRvIG1vcmUgcmVhZGFibGUgc3RyaW5ncy4KKyAg
ICAgICAgICAgIGlmIGNvbW1hbmQgaW4gbnVtZXJpY19ldmVudHM6CisgICAgICAgICAgICAgICAg
Y29tbWFuZCA9IG51bWVyaWNfZXZlbnRzW2NvbW1hbmRdCisKKyAgICAgICAgICAgIGlmIGNvbW1h
bmQgPT0gIm5pY2siOgorICAgICAgICAgICAgICAgIGlmIG5tX3RvX24ocHJlZml4KSA9PSBzZWxm
LnJlYWxfbmlja25hbWU6CisgICAgICAgICAgICAgICAgICAgIHNlbGYucmVhbF9uaWNrbmFtZSA9
IGFyZ3VtZW50c1swXQorICAgICAgICAgICAgZWxpZiBjb21tYW5kID09ICJ3ZWxjb21lIjoKKyAg
ICAgICAgICAgICAgICAjIFJlY29yZCB0aGUgbmlja25hbWUgaW4gY2FzZSB0aGUgY2xpZW50IGNo
YW5nZWQgbmljaworICAgICAgICAgICAgICAgICMgaW4gYSBuaWNrbmFtZWludXNlIGNhbGxiYWNr
LgorICAgICAgICAgICAgICAgIHNlbGYucmVhbF9uaWNrbmFtZSA9IGFyZ3VtZW50c1swXQorCisg
ICAgICAgICAgICBpZiBjb21tYW5kIGluIFsicHJpdm1zZyIsICJub3RpY2UiXToKKyAgICAgICAg
ICAgICAgICB0YXJnZXQsIG1lc3NhZ2UgPSBhcmd1bWVudHNbMF0sIGFyZ3VtZW50c1sxXQorICAg
ICAgICAgICAgICAgIG1lc3NhZ2VzID0gX2N0Y3BfZGVxdW90ZShtZXNzYWdlKQorCisgICAgICAg
ICAgICAgICAgaWYgY29tbWFuZCA9PSAicHJpdm1zZyI6CisgICAgICAgICAgICAgICAgICAgIGlm
IGlzX2NoYW5uZWwodGFyZ2V0KToKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQgPSAi
cHVibXNnIgorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIGlmIGlz
X2NoYW5uZWwodGFyZ2V0KToKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQgPSAicHVi
bm90aWNlIgorICAgICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAg
ICAgY29tbWFuZCA9ICJwcml2bm90aWNlIgorCisgICAgICAgICAgICAgICAgZm9yIG0gaW4gbWVz
c2FnZXM6CisgICAgICAgICAgICAgICAgICAgIGlmIHR5cGUobSkgaXMgdHlwZXMuVHVwbGVUeXBl
OgorICAgICAgICAgICAgICAgICAgICAgICAgaWYgY29tbWFuZCBpbiBbInByaXZtc2ciLCAicHVi
bXNnIl06CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZCA9ICJjdGNwIgorICAg
ICAgICAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b21tYW5kID0gImN0Y3ByZXBseSIKKworICAgICAgICAgICAgICAgICAgICAgICAgbSA9IGxpc3Qo
bSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIERFQlVHOgorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHByaW50ICJjb21tYW5kOiAlcywgc291cmNlOiAlcywgdGFyZ2V0OiAlcywgYXJn
dW1lbnRzOiAlcyIgJSAoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQs
IHByZWZpeCwgdGFyZ2V0LCBtKQorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5faGFuZGxl
X2V2ZW50KEV2ZW50KGNvbW1hbmQsIHByZWZpeCwgdGFyZ2V0LCBtKSkKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGlmIGNvbW1hbmQgPT0gImN0Y3AiIGFuZCBtWzBdID09ICJBQ1RJT04iOgorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2hhbmRsZV9ldmVudChFdmVudCgiYWN0aW9u
IiwgcHJlZml4LCB0YXJnZXQsIG1bMTpdKSkKKyAgICAgICAgICAgICAgICAgICAgZWxzZToKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGlmIERFQlVHOgorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHByaW50ICJjb21tYW5kOiAlcywgc291cmNlOiAlcywgdGFyZ2V0OiAlcywgYXJndW1lbnRz
OiAlcyIgJSAoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQsIHByZWZp
eCwgdGFyZ2V0LCBbbV0pCisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9oYW5kbGVfZXZl
bnQoRXZlbnQoY29tbWFuZCwgcHJlZml4LCB0YXJnZXQsIFttXSkpCisgICAgICAgICAgICBlbHNl
OgorICAgICAgICAgICAgICAgIHRhcmdldCA9IE5vbmUKKworICAgICAgICAgICAgICAgIGlmIGNv
bW1hbmQgPT0gInF1aXQiOgorICAgICAgICAgICAgICAgICAgICBhcmd1bWVudHMgPSBbYXJndW1l
bnRzWzBdXQorICAgICAgICAgICAgICAgIGVsaWYgY29tbWFuZCA9PSAicGluZyI6CisgICAgICAg
ICAgICAgICAgICAgIHRhcmdldCA9IGFyZ3VtZW50c1swXQorICAgICAgICAgICAgICAgIGVsc2U6
CisgICAgICAgICAgICAgICAgICAgIHRhcmdldCA9IGFyZ3VtZW50c1swXQorICAgICAgICAgICAg
ICAgICAgICBhcmd1bWVudHMgPSBhcmd1bWVudHNbMTpdCisKKyAgICAgICAgICAgICAgICBpZiBj
b21tYW5kID09ICJtb2RlIjoKKyAgICAgICAgICAgICAgICAgICAgaWYgbm90IGlzX2NoYW5uZWwo
dGFyZ2V0KToKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQgPSAidW1vZGUiCisKKyAg
ICAgICAgICAgICAgICBpZiBERUJVRzoKKyAgICAgICAgICAgICAgICAgICAgcHJpbnQgImNvbW1h
bmQ6ICVzLCBzb3VyY2U6ICVzLCB0YXJnZXQ6ICVzLCBhcmd1bWVudHM6ICVzIiAlICgKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbW1hbmQsIHByZWZpeCwgdGFyZ2V0LCBhcmd1bWVudHMpCisg
ICAgICAgICAgICAgICAgc2VsZi5faGFuZGxlX2V2ZW50KEV2ZW50KGNvbW1hbmQsIHByZWZpeCwg
dGFyZ2V0LCBhcmd1bWVudHMpKQorCisgICAgZGVmIF9oYW5kbGVfZXZlbnQoc2VsZiwgZXZlbnQp
OgorICAgICAgICAiIiJbSW50ZXJuYWxdIiIiCisgICAgICAgIHNlbGYuaXJjbGlib2JqLl9oYW5k
bGVfZXZlbnQoc2VsZiwgZXZlbnQpCisgICAgICAgIGlmIGV2ZW50LmV2ZW50dHlwZSgpIGluIHNl
bGYuaGFuZGxlcnM6CisgICAgICAgICAgICBmb3IgZm4gaW4gc2VsZi5oYW5kbGVyc1tldmVudC5l
dmVudHR5cGUoKV06CisgICAgICAgICAgICAgICAgZm4oc2VsZiwgZXZlbnQpCisKKyAgICBkZWYg
aXNfY29ubmVjdGVkKHNlbGYpOgorICAgICAgICAiIiJSZXR1cm4gY29ubmVjdGlvbiBzdGF0dXMu
CisKKyAgICAgICAgUmV0dXJucyB0cnVlIGlmIGNvbm5lY3RlZCwgb3RoZXJ3aXNlIGZhbHNlLgor
ICAgICAgICAiIiIKKyAgICAgICAgcmV0dXJuIHNlbGYuY29ubmVjdGVkCisKKyAgICBkZWYgYWRk
X2dsb2JhbF9oYW5kbGVyKHNlbGYsICphcmdzKToKKyAgICAgICAgIiIiQWRkIGdsb2JhbCBoYW5k
bGVyLgorCisgICAgICAgIFNlZSBkb2N1bWVudGF0aW9uIGZvciBJUkMuYWRkX2dsb2JhbF9oYW5k
bGVyLgorICAgICAgICAiIiIKKyAgICAgICAgc2VsZi5pcmNsaWJvYmouYWRkX2dsb2JhbF9oYW5k
bGVyKCphcmdzKQorCisgICAgZGVmIHJlbW92ZV9nbG9iYWxfaGFuZGxlcihzZWxmLCAqYXJncyk6
CisgICAgICAgICIiIlJlbW92ZSBnbG9iYWwgaGFuZGxlci4KKworICAgICAgICBTZWUgZG9jdW1l
bnRhdGlvbiBmb3IgSVJDLnJlbW92ZV9nbG9iYWxfaGFuZGxlci4KKyAgICAgICAgIiIiCisgICAg
ICAgIHNlbGYuaXJjbGlib2JqLnJlbW92ZV9nbG9iYWxfaGFuZGxlcigqYXJncykKKworICAgIGRl
ZiBhY3Rpb24oc2VsZiwgdGFyZ2V0LCBhY3Rpb24pOgorICAgICAgICAiIiJTZW5kIGEgQ1RDUCBB
Q1RJT04gY29tbWFuZC4iIiIKKyAgICAgICAgc2VsZi5jdGNwKCJBQ1RJT04iLCB0YXJnZXQsIGFj
dGlvbikKKworICAgIGRlZiBhZG1pbihzZWxmLCBzZXJ2ZXI9IiIpOgorICAgICAgICAiIiJTZW5k
IGFuIEFETUlOIGNvbW1hbmQuIiIiCisgICAgICAgIHNlbGYuc2VuZF9yYXcoIiAiLmpvaW4oWyJB
RE1JTiIsIHNlcnZlcl0pLnN0cmlwKCkpCisKKyAgICBkZWYgY3RjcChzZWxmLCBjdGNwdHlwZSwg
dGFyZ2V0LCBwYXJhbWV0ZXI9IiIpOgorICAgICAgICAiIiJTZW5kIGEgQ1RDUCBjb21tYW5kLiIi
IgorICAgICAgICBjdGNwdHlwZSA9IGN0Y3B0eXBlLnVwcGVyKCkKKyAgICAgICAgc2VsZi5wcml2
bXNnKHRhcmdldCwgIlwwMDElcyVzXDAwMSIgJSAoY3RjcHR5cGUsIHBhcmFtZXRlciBhbmQgKCIg
IiArIHBhcmFtZXRlcikgb3IgIiIpKQorCisgICAgZGVmIGN0Y3BfcmVwbHkoc2VsZiwgdGFyZ2V0
LCBwYXJhbWV0ZXIpOgorICAgICAgICAiIiJTZW5kIGEgQ1RDUCBSRVBMWSBjb21tYW5kLiIiIgor
ICAgICAgICBzZWxmLm5vdGljZSh0YXJnZXQsICJcMDAxJXNcMDAxIiAlIHBhcmFtZXRlcikKKwor
ICAgIGRlZiBkaXNjb25uZWN0KHNlbGYsIG1lc3NhZ2U9IiIpOgorICAgICAgICAiIiJIYW5nIHVw
IHRoZSBjb25uZWN0aW9uLgorCisgICAgICAgIEFyZ3VtZW50czoKKworICAgICAgICAgICAgbWVz
c2FnZSAtLSBRdWl0IG1lc3NhZ2UuCisgICAgICAgICIiIgorICAgICAgICBpZiBub3Qgc2VsZi5j
b25uZWN0ZWQ6CisgICAgICAgICAgICByZXR1cm4KKworICAgICAgICBzZWxmLmNvbm5lY3RlZCA9
IDAKKworICAgICAgICBzZWxmLnF1aXQobWVzc2FnZSkKKworICAgICAgICB0cnk6CisgICAgICAg
ICAgICBzZWxmLnNvY2tldC5jbG9zZSgpCisgICAgICAgIGV4Y2VwdCBzb2NrZXQuZXJyb3IsIHg6
CisgICAgICAgICAgICBwYXNzCisgICAgICAgIHNlbGYuc29ja2V0ID0gTm9uZQorICAgICAgICBz
ZWxmLl9oYW5kbGVfZXZlbnQoRXZlbnQoImRpc2Nvbm5lY3QiLCBzZWxmLnNlcnZlciwgIiIsIFtt
ZXNzYWdlXSkpCisKKyAgICBkZWYgZ2xvYm9wcyhzZWxmLCB0ZXh0KToKKyAgICAgICAgIiIiU2Vu
ZCBhIEdMT0JPUFMgY29tbWFuZC4iIiIKKyAgICAgICAgc2VsZi5zZW5kX3JhdygiR0xPQk9QUyA6
IiArIHRleHQpCisKKyAgICBkZWYgaW5mbyhzZWxmLCBzZXJ2ZXI9IiIpOgorICAgICAgICAiIiJT
ZW5kIGFuIElORk8gY29tbWFuZC4iIiIKKyAgICAgICAgc2VsZi5zZW5kX3JhdygiICIuam9pbihb
IklORk8iLCBzZXJ2ZXJdKS5zdHJpcCgpKQorCisgICAgZGVmIGludml0ZShzZWxmLCBuaWNrLCBj
aGFubmVsKToKKyAgICAgICAgIiIiU2VuZCBhbiBJTlZJVEUgY29tbWFuZC4iIiIKKyAgICAgICAg
c2VsZi5zZW5kX3JhdygiICIuam9pbihbIklOVklURSIsIG5pY2ssIGNoYW5uZWxdKS5zdHJpcCgp
KQorCisgICAgZGVmIGlzb24oc2VsZiwgbmlja3MpOgorICAgICAgICAiIiJTZW5kIGFuIElTT04g
Y29tbWFuZC4KKworICAgICAgICBBcmd1bWVudHM6CisKKyAgICAgICAgICAgIG5pY2tzIC0tIExp
c3Qgb2Ygbmlja3MuCisgICAgICAgICIiIgorICAgICAgICBzZWxmLnNlbmRfcmF3KCJJU09OICIg
KyAiICIuam9pbihuaWNrcykpCisKKyAgICBkZWYgam9pbihzZWxmLCBjaGFubmVsLCBrZXk9IiIp
OgorICAgICAgICAiIiJTZW5kIGEgSk9JTiBjb21tYW5kLiIiIgorICAgICAgICBzZWxmLnNlbmRf
cmF3KCJKT0lOICVzJXMiICUgKGNoYW5uZWwsIChrZXkgYW5kICgiICIgKyBrZXkpKSkpCisKKyAg
ICBkZWYga2ljayhzZWxmLCBjaGFubmVsLCBuaWNrLCBjb21tZW50PSIiKToKKyAgICAgICAgIiIi
U2VuZCBhIEtJQ0sgY29tbWFuZC4iIiIKKyAgICAgICAgc2VsZi5zZW5kX3JhdygiS0lDSyAlcyAl
cyVzIiAlIChjaGFubmVsLCBuaWNrLCAoY29tbWVudCBhbmQgKCIgOiIgKyBjb21tZW50KSkpKQor
CisgICAgZGVmIGxpbmtzKHNlbGYsIHJlbW90ZV9zZXJ2ZXI9IiIsIHNlcnZlcl9tYXNrPSIiKToK
KyAgICAgICAgIiIiU2VuZCBhIExJTktTIGNvbW1hbmQuIiIiCisgICAgICAgIGNvbW1hbmQgPSAi
TElOS1MiCisgICAgICAgIGlmIHJlbW90ZV9zZXJ2ZXI6CisgICAgICAgICAgICBjb21tYW5kID0g
Y29tbWFuZCArICIgIiArIHJlbW90ZV9zZXJ2ZXIKKyAgICAgICAgaWYgc2VydmVyX21hc2s6Cisg
ICAgICAgICAgICBjb21tYW5kID0gY29tbWFuZCArICIgIiArIHNlcnZlcl9tYXNrCisgICAgICAg
IHNlbGYuc2VuZF9yYXcoY29tbWFuZCkKKworICAgIGRlZiBsaXN0KHNlbGYsIGNoYW5uZWxzPU5v
bmUsIHNlcnZlcj0iIik6CisgICAgICAgICIiIlNlbmQgYSBMSVNUIGNvbW1hbmQuIiIiCisgICAg
ICAgIGNvbW1hbmQgPSAiTElTVCIKKyAgICAgICAgaWYgY2hhbm5lbHM6CisgICAgICAgICAgICBj
b21tYW5kID0gY29tbWFuZCArICIgIiArICIsIi5qb2luKGNoYW5uZWxzKQorICAgICAgICBpZiBz
ZXJ2ZXI6CisgICAgICAgICAgICBjb21tYW5kID0gY29tbWFuZCArICIgIiArIHNlcnZlcgorICAg
ICAgICBzZWxmLnNlbmRfcmF3KGNvbW1hbmQpCisKKyAgICBkZWYgbHVzZXJzKHNlbGYsIHNlcnZl
cj0iIik6CisgICAgICAgICIiIlNlbmQgYSBMVVNFUlMgY29tbWFuZC4iIiIKKyAgICAgICAgc2Vs
Zi5zZW5kX3JhdygiTFVTRVJTIiArIChzZXJ2ZXIgYW5kICgiICIgKyBzZXJ2ZXIpKSkKKworICAg
IGRlZiBtb2RlKHNlbGYsIHRhcmdldCwgY29tbWFuZCk6CisgICAgICAgICIiIlNlbmQgYSBNT0RF
IGNvbW1hbmQuIiIiCisgICAgICAgIHNlbGYuc2VuZF9yYXcoIk1PREUgJXMgJXMiICUgKHRhcmdl
dCwgY29tbWFuZCkpCisKKyAgICBkZWYgbW90ZChzZWxmLCBzZXJ2ZXI9IiIpOgorICAgICAgICAi
IiJTZW5kIGFuIE1PVEQgY29tbWFuZC4iIiIKKyAgICAgICAgc2VsZi5zZW5kX3JhdygiTU9URCIg
KyAoc2VydmVyIGFuZCAoIiAiICsgc2VydmVyKSkpCisKKyAgICBkZWYgbmFtZXMoc2VsZiwgY2hh
bm5lbHM9Tm9uZSk6CisgICAgICAgICIiIlNlbmQgYSBOQU1FUyBjb21tYW5kLiIiIgorICAgICAg
ICBzZWxmLnNlbmRfcmF3KCJOQU1FUyIgKyAoY2hhbm5lbHMgYW5kICgiICIgKyAiLCIuam9pbihj
aGFubmVscykpIG9yICIiKSkKKworICAgIGRlZiBuaWNrKHNlbGYsIG5ld25pY2spOgorICAgICAg
ICAiIiJTZW5kIGEgTklDSyBjb21tYW5kLiIiIgorICAgICAgICBzZWxmLnNlbmRfcmF3KCJOSUNL
ICIgKyBuZXduaWNrKQorCisgICAgZGVmIG5vdGljZShzZWxmLCB0YXJnZXQsIHRleHQpOgorICAg
ICAgICAiIiJTZW5kIGEgTk9USUNFIGNvbW1hbmQuIiIiCisgICAgICAgICMgU2hvdWxkIGxpbWl0
IGxlbih0ZXh0KSBoZXJlIQorICAgICAgICBzZWxmLnNlbmRfcmF3KCJOT1RJQ0UgJXMgOiVzIiAl
ICh0YXJnZXQsIHRleHQpKQorCisgICAgZGVmIG9wZXIoc2VsZiwgbmljaywgcGFzc3dvcmQpOgor
ICAgICAgICAiIiJTZW5kIGFuIE9QRVIgY29tbWFuZC4iIiIKKyAgICAgICAgc2VsZi5zZW5kX3Jh
dygiT1BFUiAlcyAlcyIgJSAobmljaywgcGFzc3dvcmQpKQorCisgICAgZGVmIHBhcnQoc2VsZiwg
Y2hhbm5lbHMsIG1lc3NhZ2U9IiIpOgorICAgICAgICAiIiJTZW5kIGEgUEFSVCBjb21tYW5kLiIi
IgorICAgICAgICBpZiB0eXBlKGNoYW5uZWxzKSA9PSB0eXBlcy5TdHJpbmdUeXBlOgorICAgICAg
ICAgICAgc2VsZi5zZW5kX3JhdygiUEFSVCAiICsgY2hhbm5lbHMgKyAobWVzc2FnZSBhbmQgKCIg
IiArIG1lc3NhZ2UpKSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuc2VuZF9yYXco
IlBBUlQgIiArICIsIi5qb2luKGNoYW5uZWxzKSArIChtZXNzYWdlIGFuZCAoIiAiICsgbWVzc2Fn
ZSkpKQorCisgICAgZGVmIHBhc3NfKHNlbGYsIHBhc3N3b3JkKToKKyAgICAgICAgIiIiU2VuZCBh
IFBBU1MgY29tbWFuZC4iIiIKKyAgICAgICAgc2VsZi5zZW5kX3JhdygiUEFTUyAiICsgcGFzc3dv
cmQpCisKKyAgICBkZWYgcGluZyhzZWxmLCB0YXJnZXQsIHRhcmdldDI9IiIpOgorICAgICAgICAi
IiJTZW5kIGEgUElORyBjb21tYW5kLiIiIgorICAgICAgICBzZWxmLnNlbmRfcmF3KCJQSU5HICVz
JXMiICUgKHRhcmdldCwgdGFyZ2V0MiBhbmQgKCIgIiArIHRhcmdldDIpKSkKKworICAgIGRlZiBw
b25nKHNlbGYsIHRhcmdldCwgdGFyZ2V0Mj0iIik6CisgICAgICAgICIiIlNlbmQgYSBQT05HIGNv
bW1hbmQuIiIiCisgICAgICAgIHNlbGYuc2VuZF9yYXcoIlBPTkcgJXMlcyIgJSAodGFyZ2V0LCB0
YXJnZXQyIGFuZCAoIiAiICsgdGFyZ2V0MikpKQorCisgICAgZGVmIHByaXZtc2coc2VsZiwgdGFy
Z2V0LCB0ZXh0KToKKyAgICAgICAgIiIiU2VuZCBhIFBSSVZNU0cgY29tbWFuZC4iIiIKKyAgICAg
ICAgIyBTaG91bGQgbGltaXQgbGVuKHRleHQpIGhlcmUhCisgICAgICAgIHNlbGYuc2VuZF9yYXco
IlBSSVZNU0cgJXMgOiVzIiAlICh0YXJnZXQsIHRleHQpKQorCisgICAgZGVmIHByaXZtc2dfbWFu
eShzZWxmLCB0YXJnZXRzLCB0ZXh0KToKKyAgICAgICAgIiIiU2VuZCBhIFBSSVZNU0cgY29tbWFu
ZCB0byBtdWx0aXBsZSB0YXJnZXRzLiIiIgorICAgICAgICAjIFNob3VsZCBsaW1pdCBsZW4odGV4
dCkgaGVyZSEKKyAgICAgICAgc2VsZi5zZW5kX3JhdygiUFJJVk1TRyAlcyA6JXMiICUgKCIsIi5q
b2luKHRhcmdldHMpLCB0ZXh0KSkKKworICAgIGRlZiBxdWl0KHNlbGYsIG1lc3NhZ2U9IiIpOgor
ICAgICAgICAiIiJTZW5kIGEgUVVJVCBjb21tYW5kLiIiIgorICAgICAgICAjIE5vdGUgdGhhdCBt
YW55IElSQyBzZXJ2ZXJzIGRvbid0IHVzZSB5b3VyIFFVSVQgbWVzc2FnZQorICAgICAgICAjIHVu
bGVzcyB5b3UndmUgYmVlbiBjb25uZWN0ZWQgZm9yIGF0IGxlYXN0IDUgbWludXRlcyEKKyAgICAg
ICAgc2VsZi5zZW5kX3JhdygiUVVJVCIgKyAobWVzc2FnZSBhbmQgKCIgOiIgKyBtZXNzYWdlKSkp
CisKKyAgICBkZWYgc2VuZF9yYXcoc2VsZiwgc3RyaW5nKToKKyAgICAgICAgIiIiU2VuZCByYXcg
c3RyaW5nIHRvIHRoZSBzZXJ2ZXIuCisKKyAgICAgICAgVGhlIHN0cmluZyB3aWxsIGJlIHBhZGRl
ZCB3aXRoIGFwcHJvcHJpYXRlIENSIExGLgorICAgICAgICAiIiIKKyAgICAgICAgaWYgc2VsZi5z
b2NrZXQgaXMgTm9uZToKKyAgICAgICAgICAgIHJhaXNlIFNlcnZlck5vdENvbm5lY3RlZEVycm9y
LCAiTm90IGNvbm5lY3RlZC4iCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGlmIHNlbGYuc3Ns
OgorICAgICAgICAgICAgICAgIHNlbGYuc3NsLndyaXRlKHN0cmluZyArICJcclxuIikKKyAgICAg
ICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgc2VsZi5zb2NrZXQuc2VuZChzdHJpbmcgKyAi
XHJcbiIpCisgICAgICAgICAgICBpZiBERUJVRzoKKyAgICAgICAgICAgICAgICBwcmludCAiVE8g
U0VSVkVSOiIsIHN0cmluZworICAgICAgICBleGNlcHQgc29ja2V0LmVycm9yLCB4OgorICAgICAg
ICAgICAgIyBPdWNoIQorICAgICAgICAgICAgc2VsZi5kaXNjb25uZWN0KCJDb25uZWN0aW9uIHJl
c2V0IGJ5IHBlZXIuIikKKworICAgIGRlZiBzcXVpdChzZWxmLCBzZXJ2ZXIsIGNvbW1lbnQ9IiIp
OgorICAgICAgICAiIiJTZW5kIGFuIFNRVUlUIGNvbW1hbmQuIiIiCisgICAgICAgIHNlbGYuc2Vu
ZF9yYXcoIlNRVUlUICVzJXMiICUgKHNlcnZlciwgY29tbWVudCBhbmQgKCIgOiIgKyBjb21tZW50
KSkpCisKKyAgICBkZWYgc3RhdHMoc2VsZiwgc3RhdHN0eXBlLCBzZXJ2ZXI9IiIpOgorICAgICAg
ICAiIiJTZW5kIGEgU1RBVFMgY29tbWFuZC4iIiIKKyAgICAgICAgc2VsZi5zZW5kX3JhdygiU1RB
VFMgJXMlcyIgJSAoc3RhdHN0eXBlLCBzZXJ2ZXIgYW5kICgiICIgKyBzZXJ2ZXIpKSkKKworICAg
IGRlZiB0aW1lKHNlbGYsIHNlcnZlcj0iIik6CisgICAgICAgICIiIlNlbmQgYSBUSU1FIGNvbW1h
bmQuIiIiCisgICAgICAgIHNlbGYuc2VuZF9yYXcoIlRJTUUiICsgKHNlcnZlciBhbmQgKCIgIiAr
IHNlcnZlcikpKQorCisgICAgZGVmIHRvcGljKHNlbGYsIGNoYW5uZWwsIG5ld190b3BpYz1Ob25l
KToKKyAgICAgICAgIiIiU2VuZCBhIFRPUElDIGNvbW1hbmQuIiIiCisgICAgICAgIGlmIG5ld190
b3BpYyBpcyBOb25lOgorICAgICAgICAgICAgc2VsZi5zZW5kX3JhdygiVE9QSUMgIiArIGNoYW5u
ZWwpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLnNlbmRfcmF3KCJUT1BJQyAlcyA6
JXMiICUgKGNoYW5uZWwsIG5ld190b3BpYykpCisKKyAgICBkZWYgdHJhY2Uoc2VsZiwgdGFyZ2V0
PSIiKToKKyAgICAgICAgIiIiU2VuZCBhIFRSQUNFIGNvbW1hbmQuIiIiCisgICAgICAgIHNlbGYu
c2VuZF9yYXcoIlRSQUNFIiArICh0YXJnZXQgYW5kICgiICIgKyB0YXJnZXQpKSkKKworICAgIGRl
ZiB1c2VyKHNlbGYsIHVzZXJuYW1lLCByZWFsbmFtZSk6CisgICAgICAgICIiIlNlbmQgYSBVU0VS
IGNvbW1hbmQuIiIiCisgICAgICAgIHNlbGYuc2VuZF9yYXcoIlVTRVIgJXMgMCAqIDolcyIgJSAo
dXNlcm5hbWUsIHJlYWxuYW1lKSkKKworICAgIGRlZiB1c2VyaG9zdChzZWxmLCBuaWNrcyk6Cisg
ICAgICAgICIiIlNlbmQgYSBVU0VSSE9TVCBjb21tYW5kLiIiIgorICAgICAgICBzZWxmLnNlbmRf
cmF3KCJVU0VSSE9TVCAiICsgIiwiLmpvaW4obmlja3MpKQorCisgICAgZGVmIHVzZXJzKHNlbGYs
IHNlcnZlcj0iIik6CisgICAgICAgICIiIlNlbmQgYSBVU0VSUyBjb21tYW5kLiIiIgorICAgICAg
ICBzZWxmLnNlbmRfcmF3KCJVU0VSUyIgKyAoc2VydmVyIGFuZCAoIiAiICsgc2VydmVyKSkpCisK
KyAgICBkZWYgdmVyc2lvbihzZWxmLCBzZXJ2ZXI9IiIpOgorICAgICAgICAiIiJTZW5kIGEgVkVS
U0lPTiBjb21tYW5kLiIiIgorICAgICAgICBzZWxmLnNlbmRfcmF3KCJWRVJTSU9OIiArIChzZXJ2
ZXIgYW5kICgiICIgKyBzZXJ2ZXIpKSkKKworICAgIGRlZiB3YWxsb3BzKHNlbGYsIHRleHQpOgor
ICAgICAgICAiIiJTZW5kIGEgV0FMTE9QUyBjb21tYW5kLiIiIgorICAgICAgICBzZWxmLnNlbmRf
cmF3KCJXQUxMT1BTIDoiICsgdGV4dCkKKworICAgIGRlZiB3aG8oc2VsZiwgdGFyZ2V0PSIiLCBv
cD0iIik6CisgICAgICAgICIiIlNlbmQgYSBXSE8gY29tbWFuZC4iIiIKKyAgICAgICAgc2VsZi5z
ZW5kX3JhdygiV0hPJXMlcyIgJSAodGFyZ2V0IGFuZCAoIiAiICsgdGFyZ2V0KSwgb3AgYW5kICgi
IG8iKSkpCisKKyAgICBkZWYgd2hvaXMoc2VsZiwgdGFyZ2V0cyk6CisgICAgICAgICIiIlNlbmQg
YSBXSE9JUyBjb21tYW5kLiIiIgorICAgICAgICBzZWxmLnNlbmRfcmF3KCJXSE9JUyAiICsgIiwi
LmpvaW4odGFyZ2V0cykpCisKKyAgICBkZWYgd2hvd2FzKHNlbGYsIG5pY2ssIG1heD0iIiwgc2Vy
dmVyPSIiKToKKyAgICAgICAgIiIiU2VuZCBhIFdIT1dBUyBjb21tYW5kLiIiIgorICAgICAgICBz
ZWxmLnNlbmRfcmF3KCJXSE9XQVMgJXMlcyVzIiAlIChuaWNrLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBtYXggYW5kICgiICIgKyBtYXgpLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXIgYW5kICgiICIgKyBzZXJ2ZXIpKSkK
KworY2xhc3MgRENDQ29ubmVjdGlvbkVycm9yKElSQ0Vycm9yKToKKyAgICBwYXNzCisKKworY2xh
c3MgRENDQ29ubmVjdGlvbihDb25uZWN0aW9uKToKKyAgICAiIiJUaGlzIGNsYXNzIHJlcHJlc2Vu
dHMgYSBEQ0MgY29ubmVjdGlvbi4KKworICAgIERDQ0Nvbm5lY3Rpb24gb2JqZWN0cyBhcmUgaW5z
dGFudGlhdGVkIGJ5IGNhbGxpbmcgdGhlIGRjYworICAgIG1ldGhvZCBvbiBhbiBJUkMgb2JqZWN0
LgorICAgICIiIgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBpcmNsaWJvYmosIGRjY3R5cGUpOgor
ICAgICAgICBDb25uZWN0aW9uLl9faW5pdF9fKHNlbGYsIGlyY2xpYm9iaikKKyAgICAgICAgc2Vs
Zi5jb25uZWN0ZWQgPSAwCisgICAgICAgIHNlbGYucGFzc2l2ZSA9IDAKKyAgICAgICAgc2VsZi5k
Y2N0eXBlID0gZGNjdHlwZQorICAgICAgICBzZWxmLnBlZXJhZGRyZXNzID0gTm9uZQorICAgICAg
ICBzZWxmLnBlZXJwb3J0ID0gTm9uZQorCisgICAgZGVmIGNvbm5lY3Qoc2VsZiwgYWRkcmVzcywg
cG9ydCk6CisgICAgICAgICIiIkNvbm5lY3QvcmVjb25uZWN0IHRvIGEgRENDIHBlZXIuCisKKyAg
ICAgICAgQXJndW1lbnRzOgorICAgICAgICAgICAgYWRkcmVzcyAtLSBIb3N0L0lQIGFkZHJlc3Mg
b2YgdGhlIHBlZXIuCisKKyAgICAgICAgICAgIHBvcnQgLS0gVGhlIHBvcnQgbnVtYmVyIHRvIGNv
bm5lY3QgdG8uCisKKyAgICAgICAgUmV0dXJucyB0aGUgRENDQ29ubmVjdGlvbiBvYmplY3QuCisg
ICAgICAgICIiIgorICAgICAgICBzZWxmLnBlZXJhZGRyZXNzID0gc29ja2V0LmdldGhvc3RieW5h
bWUoYWRkcmVzcykKKyAgICAgICAgc2VsZi5wZWVycG9ydCA9IHBvcnQKKyAgICAgICAgc2VsZi5z
b2NrZXQgPSBOb25lCisgICAgICAgIHNlbGYucHJldmlvdXNfYnVmZmVyID0gIiIKKyAgICAgICAg
c2VsZi5oYW5kbGVycyA9IHt9CisgICAgICAgIHNlbGYuc29ja2V0ID0gc29ja2V0LnNvY2tldChz
b2NrZXQuQUZfSU5FVCwgc29ja2V0LlNPQ0tfU1RSRUFNKQorICAgICAgICBzZWxmLnBhc3NpdmUg
PSAwCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNlbGYuc29ja2V0LmNvbm5lY3QoKHNlbGYu
cGVlcmFkZHJlc3MsIHNlbGYucGVlcnBvcnQpKQorICAgICAgICBleGNlcHQgc29ja2V0LmVycm9y
LCB4OgorICAgICAgICAgICAgcmFpc2UgRENDQ29ubmVjdGlvbkVycm9yLCAiQ291bGRuJ3QgY29u
bmVjdCB0byBzb2NrZXQ6ICVzIiAlIHgKKyAgICAgICAgc2VsZi5jb25uZWN0ZWQgPSAxCisgICAg
ICAgIGlmIHNlbGYuaXJjbGlib2JqLmZuX3RvX2FkZF9zb2NrZXQ6CisgICAgICAgICAgICBzZWxm
LmlyY2xpYm9iai5mbl90b19hZGRfc29ja2V0KHNlbGYuc29ja2V0KQorICAgICAgICByZXR1cm4g
c2VsZgorCisgICAgZGVmIGxpc3RlbihzZWxmKToKKyAgICAgICAgIiIiV2FpdCBmb3IgYSBjb25u
ZWN0aW9uL3JlY29ubmVjdGlvbiBmcm9tIGEgRENDIHBlZXIuCisKKyAgICAgICAgUmV0dXJucyB0
aGUgRENDQ29ubmVjdGlvbiBvYmplY3QuCisKKyAgICAgICAgVGhlIGxvY2FsIElQIGFkZHJlc3Mg
YW5kIHBvcnQgYXJlIGF2YWlsYWJsZSBhcworICAgICAgICBzZWxmLmxvY2FsYWRkcmVzcyBhbmQg
c2VsZi5sb2NhbHBvcnQuICBBZnRlciBjb25uZWN0aW9uIGZyb20gYQorICAgICAgICBwZWVyLCB0
aGUgcGVlciBhZGRyZXNzIGFuZCBwb3J0IGFyZSBhdmFpbGFibGUgYXMKKyAgICAgICAgc2VsZi5w
ZWVyYWRkcmVzcyBhbmQgc2VsZi5wZWVycG9ydC4KKyAgICAgICAgIiIiCisgICAgICAgIHNlbGYu
cHJldmlvdXNfYnVmZmVyID0gIiIKKyAgICAgICAgc2VsZi5oYW5kbGVycyA9IHt9CisgICAgICAg
IHNlbGYuc29ja2V0ID0gc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCwgc29ja2V0LlNPQ0tf
U1RSRUFNKQorICAgICAgICBzZWxmLnBhc3NpdmUgPSAxCisgICAgICAgIHRyeToKKyAgICAgICAg
ICAgIHNlbGYuc29ja2V0LmJpbmQoKHNvY2tldC5nZXRob3N0YnluYW1lKHNvY2tldC5nZXRob3N0
bmFtZSgpKSwgMCkpCisgICAgICAgICAgICBzZWxmLmxvY2FsYWRkcmVzcywgc2VsZi5sb2NhbHBv
cnQgPSBzZWxmLnNvY2tldC5nZXRzb2NrbmFtZSgpCisgICAgICAgICAgICBzZWxmLnNvY2tldC5s
aXN0ZW4oMTApCisgICAgICAgIGV4Y2VwdCBzb2NrZXQuZXJyb3IsIHg6CisgICAgICAgICAgICBy
YWlzZSBEQ0NDb25uZWN0aW9uRXJyb3IsICJDb3VsZG4ndCBiaW5kIHNvY2tldDogJXMiICUgeAor
ICAgICAgICByZXR1cm4gc2VsZgorCisgICAgZGVmIGRpc2Nvbm5lY3Qoc2VsZiwgbWVzc2FnZT0i
Iik6CisgICAgICAgICIiIkhhbmcgdXAgdGhlIGNvbm5lY3Rpb24gYW5kIGNsb3NlIHRoZSBvYmpl
Y3QuCisKKyAgICAgICAgQXJndW1lbnRzOgorCisgICAgICAgICAgICBtZXNzYWdlIC0tIFF1aXQg
bWVzc2FnZS4KKyAgICAgICAgIiIiCisgICAgICAgIGlmIG5vdCBzZWxmLmNvbm5lY3RlZDoKKyAg
ICAgICAgICAgIHJldHVybgorCisgICAgICAgIHNlbGYuY29ubmVjdGVkID0gMAorICAgICAgICB0
cnk6CisgICAgICAgICAgICBzZWxmLnNvY2tldC5jbG9zZSgpCisgICAgICAgIGV4Y2VwdCBzb2Nr
ZXQuZXJyb3IsIHg6CisgICAgICAgICAgICBwYXNzCisgICAgICAgIHNlbGYuc29ja2V0ID0gTm9u
ZQorICAgICAgICBzZWxmLmlyY2xpYm9iai5faGFuZGxlX2V2ZW50KAorICAgICAgICAgICAgc2Vs
ZiwKKyAgICAgICAgICAgIEV2ZW50KCJkY2NfZGlzY29ubmVjdCIsIHNlbGYucGVlcmFkZHJlc3Ms
ICIiLCBbbWVzc2FnZV0pKQorICAgICAgICBzZWxmLmlyY2xpYm9iai5fcmVtb3ZlX2Nvbm5lY3Rp
b24oc2VsZikKKworICAgIGRlZiBwcm9jZXNzX2RhdGEoc2VsZik6CisgICAgICAgICIiIltJbnRl
cm5hbF0iIiIKKworICAgICAgICBpZiBzZWxmLnBhc3NpdmUgYW5kIG5vdCBzZWxmLmNvbm5lY3Rl
ZDoKKyAgICAgICAgICAgIGNvbm4sIChzZWxmLnBlZXJhZGRyZXNzLCBzZWxmLnBlZXJwb3J0KSA9
IHNlbGYuc29ja2V0LmFjY2VwdCgpCisgICAgICAgICAgICBzZWxmLnNvY2tldC5jbG9zZSgpCisg
ICAgICAgICAgICBzZWxmLnNvY2tldCA9IGNvbm4KKyAgICAgICAgICAgIHNlbGYuY29ubmVjdGVk
ID0gMQorICAgICAgICAgICAgaWYgREVCVUc6CisgICAgICAgICAgICAgICAgcHJpbnQgIkRDQyBj
b25uZWN0aW9uIGZyb20gJXM6JWQiICUgKAorICAgICAgICAgICAgICAgICAgICBzZWxmLnBlZXJh
ZGRyZXNzLCBzZWxmLnBlZXJwb3J0KQorICAgICAgICAgICAgc2VsZi5pcmNsaWJvYmouX2hhbmRs
ZV9ldmVudCgKKyAgICAgICAgICAgICAgICBzZWxmLAorICAgICAgICAgICAgICAgIEV2ZW50KCJk
Y2NfY29ubmVjdCIsIHNlbGYucGVlcmFkZHJlc3MsIE5vbmUsIE5vbmUpKQorICAgICAgICAgICAg
cmV0dXJuCisKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgbmV3X2RhdGEgPSBzZWxmLnNvY2tl
dC5yZWN2KDIqKjE0KQorICAgICAgICBleGNlcHQgc29ja2V0LmVycm9yLCB4OgorICAgICAgICAg
ICAgIyBUaGUgc2VydmVyIGh1bmcgdXAuCisgICAgICAgICAgICBzZWxmLmRpc2Nvbm5lY3QoIkNv
bm5lY3Rpb24gcmVzZXQgYnkgcGVlciIpCisgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgaWYg
bm90IG5ld19kYXRhOgorICAgICAgICAgICAgIyBSZWFkIG5vdGhpbmc6IGNvbm5lY3Rpb24gbXVz
dCBiZSBkb3duLgorICAgICAgICAgICAgc2VsZi5kaXNjb25uZWN0KCJDb25uZWN0aW9uIHJlc2V0
IGJ5IHBlZXIiKQorICAgICAgICAgICAgcmV0dXJuCisKKyAgICAgICAgaWYgc2VsZi5kY2N0eXBl
ID09ICJjaGF0IjoKKyAgICAgICAgICAgICMgVGhlIHNwZWNpZmljYXRpb24gc2F5cyBsaW5lcyBh
cmUgdGVybWluYXRlZCB3aXRoIExGLCBidXQKKyAgICAgICAgICAgICMgaXQgc2VlbXMgc2FmZXIg
dG8gaGFuZGxlIENSIExGIHRlcm1pbmF0aW9ucyB0b28uCisgICAgICAgICAgICBjaHVua3MgPSBf
bGluZXNlcF9yZWdleHAuc3BsaXQoc2VsZi5wcmV2aW91c19idWZmZXIgKyBuZXdfZGF0YSkKKwor
ICAgICAgICAgICAgIyBTYXZlIHRoZSBsYXN0LCB1bmZpbmlzaGVkIGxpbmUuCisgICAgICAgICAg
ICBzZWxmLnByZXZpb3VzX2J1ZmZlciA9IGNodW5rc1stMV0KKyAgICAgICAgICAgIGlmIGxlbihz
ZWxmLnByZXZpb3VzX2J1ZmZlcikgPiAyKioxNDoKKyAgICAgICAgICAgICAgICAjIEJhZCBwZWVy
ISBOYXVnaHR5IHBlZXIhCisgICAgICAgICAgICAgICAgc2VsZi5kaXNjb25uZWN0KCkKKyAgICAg
ICAgICAgICAgICByZXR1cm4KKyAgICAgICAgICAgIGNodW5rcyA9IGNodW5rc1s6LTFdCisgICAg
ICAgIGVsc2U6CisgICAgICAgICAgICBjaHVua3MgPSBbbmV3X2RhdGFdCisKKyAgICAgICAgY29t
bWFuZCA9ICJkY2Ntc2ciCisgICAgICAgIHByZWZpeCA9IHNlbGYucGVlcmFkZHJlc3MKKyAgICAg
ICAgdGFyZ2V0ID0gTm9uZQorICAgICAgICBmb3IgY2h1bmsgaW4gY2h1bmtzOgorICAgICAgICAg
ICAgaWYgREVCVUc6CisgICAgICAgICAgICAgICAgcHJpbnQgIkZST00gUEVFUjoiLCBjaHVuawor
ICAgICAgICAgICAgYXJndW1lbnRzID0gW2NodW5rXQorICAgICAgICAgICAgaWYgREVCVUc6Cisg
ICAgICAgICAgICAgICAgcHJpbnQgImNvbW1hbmQ6ICVzLCBzb3VyY2U6ICVzLCB0YXJnZXQ6ICVz
LCBhcmd1bWVudHM6ICVzIiAlICgKKyAgICAgICAgICAgICAgICAgICAgY29tbWFuZCwgcHJlZml4
LCB0YXJnZXQsIGFyZ3VtZW50cykKKyAgICAgICAgICAgIHNlbGYuaXJjbGlib2JqLl9oYW5kbGVf
ZXZlbnQoCisgICAgICAgICAgICAgICAgc2VsZiwKKyAgICAgICAgICAgICAgICBFdmVudChjb21t
YW5kLCBwcmVmaXgsIHRhcmdldCwgYXJndW1lbnRzKSkKKworICAgIGRlZiBfZ2V0X3NvY2tldChz
ZWxmKToKKyAgICAgICAgIiIiW0ludGVybmFsXSIiIgorICAgICAgICByZXR1cm4gc2VsZi5zb2Nr
ZXQKKworICAgIGRlZiBwcml2bXNnKHNlbGYsIHN0cmluZyk6CisgICAgICAgICIiIlNlbmQgZGF0
YSB0byBEQ0MgcGVlci4KKworICAgICAgICBUaGUgc3RyaW5nIHdpbGwgYmUgcGFkZGVkIHdpdGgg
YXBwcm9wcmlhdGUgTEYgaWYgaXQncyBhIERDQworICAgICAgICBDSEFUIHNlc3Npb24uCisgICAg
ICAgICIiIgorICAgICAgICB0cnk6CisgICAgICAgICAgICBzZWxmLnNvY2tldC5zZW5kKHN0cmlu
ZykKKyAgICAgICAgICAgIGlmIHNlbGYuZGNjdHlwZSA9PSAiY2hhdCI6CisgICAgICAgICAgICAg
ICAgc2VsZi5zb2NrZXQuc2VuZCgiXG4iKQorICAgICAgICAgICAgaWYgREVCVUc6CisgICAgICAg
ICAgICAgICAgcHJpbnQgIlRPIFBFRVI6ICVzXG4iICUgc3RyaW5nCisgICAgICAgIGV4Y2VwdCBz
b2NrZXQuZXJyb3IsIHg6CisgICAgICAgICAgICAjIE91Y2ghCisgICAgICAgICAgICBzZWxmLmRp
c2Nvbm5lY3QoIkNvbm5lY3Rpb24gcmVzZXQgYnkgcGVlci4iKQorCitjbGFzcyBTaW1wbGVJUkND
bGllbnQ6CisgICAgIiIiQSBzaW1wbGUgc2luZ2xlLXNlcnZlciBJUkMgY2xpZW50IGNsYXNzLgor
CisgICAgVGhpcyBpcyBhbiBleGFtcGxlIG9mIGFuIG9iamVjdC1vcmllbnRlZCB3cmFwcGVyIG9m
IHRoZSBJUkMKKyAgICBmcmFtZXdvcmsuICBBIHJlYWwgSVJDIGNsaWVudCBjYW4gYmUgbWFkZSBi
eSBzdWJjbGFzc2luZyB0aGlzCisgICAgY2xhc3MgYW5kIGFkZGluZyBhcHByb3ByaWF0ZSBtZXRo
b2RzLgorCisgICAgVGhlIG1ldGhvZCBvbl9qb2luIHdpbGwgYmUgY2FsbGVkIHdoZW4gYSAiam9p
biIgZXZlbnQgaXMgY3JlYXRlZAorICAgICh3aGljaCBpcyBkb25lIHdoZW4gdGhlIHNlcnZlciBz
ZW5kcyBhIEpPSU4gbWVzc3NhZ2UvY29tbWFuZCksCisgICAgb25fcHJpdm1zZyB3aWxsIGJlIGNh
bGxlZCBmb3IgInByaXZtc2ciIGV2ZW50cywgYW5kIHNvIG9uLiAgVGhlCisgICAgaGFuZGxlciBt
ZXRob2RzIGdldCB0d28gYXJndW1lbnRzOiB0aGUgY29ubmVjdGlvbiBvYmplY3QgKHNhbWUgYXMK
KyAgICBzZWxmLmNvbm5lY3Rpb24pIGFuZCB0aGUgZXZlbnQgb2JqZWN0LgorCisgICAgSW5zdGFu
Y2UgYXR0cmlidXRlcyB0aGF0IGNhbiBiZSB1c2VkIGJ5IHN1YiBjbGFzc2VzOgorCisgICAgICAg
IGlyY29iaiAtLSBUaGUgSVJDIGluc3RhbmNlLgorCisgICAgICAgIGNvbm5lY3Rpb24gLS0gVGhl
IFNlcnZlckNvbm5lY3Rpb24gaW5zdGFuY2UuCisKKyAgICAgICAgZGNjX2Nvbm5lY3Rpb25zIC0t
IEEgbGlzdCBvZiBEQ0NDb25uZWN0aW9uIGluc3RhbmNlcy4KKyAgICAiIiIKKyAgICBkZWYgX19p
bml0X18oc2VsZik6CisgICAgICAgIHNlbGYuaXJjb2JqID0gSVJDKCkKKyAgICAgICAgc2VsZi5j
b25uZWN0aW9uID0gc2VsZi5pcmNvYmouc2VydmVyKCkKKyAgICAgICAgc2VsZi5kY2NfY29ubmVj
dGlvbnMgPSBbXQorICAgICAgICBzZWxmLmlyY29iai5hZGRfZ2xvYmFsX2hhbmRsZXIoImFsbF9l
dmVudHMiLCBzZWxmLl9kaXNwYXRjaGVyLCAtMTApCisgICAgICAgIHNlbGYuaXJjb2JqLmFkZF9n
bG9iYWxfaGFuZGxlcigiZGNjX2Rpc2Nvbm5lY3QiLCBzZWxmLl9kY2NfZGlzY29ubmVjdCwgLTEw
KQorCisgICAgZGVmIF9kaXNwYXRjaGVyKHNlbGYsIGMsIGUpOgorICAgICAgICAiIiJbSW50ZXJu
YWxdIiIiCisgICAgICAgIG0gPSAib25fIiArIGUuZXZlbnR0eXBlKCkKKyAgICAgICAgaWYgaGFz
YXR0cihzZWxmLCBtKToKKyAgICAgICAgICAgIGdldGF0dHIoc2VsZiwgbSkoYywgZSkKKworICAg
IGRlZiBfZGNjX2Rpc2Nvbm5lY3Qoc2VsZiwgYywgZSk6CisgICAgICAgIHNlbGYuZGNjX2Nvbm5l
Y3Rpb25zLnJlbW92ZShjKQorCisgICAgZGVmIGNvbm5lY3Qoc2VsZiwgc2VydmVyLCBwb3J0LCBu
aWNrbmFtZSwgcGFzc3dvcmQ9Tm9uZSwgdXNlcm5hbWU9Tm9uZSwKKyAgICAgICAgICAgICAgICBp
cmNuYW1lPU5vbmUsIGxvY2FsYWRkcmVzcz0iIiwgbG9jYWxwb3J0PTAsIHNzbD1GYWxzZSwgaXB2
Nj1GYWxzZSk6CisgICAgICAgICIiIkNvbm5lY3QvcmVjb25uZWN0IHRvIGEgc2VydmVyLgorCisg
ICAgICAgIEFyZ3VtZW50czoKKworICAgICAgICAgICAgc2VydmVyIC0tIFNlcnZlciBuYW1lLgor
CisgICAgICAgICAgICBwb3J0IC0tIFBvcnQgbnVtYmVyLgorCisgICAgICAgICAgICBuaWNrbmFt
ZSAtLSBUaGUgbmlja25hbWUuCisKKyAgICAgICAgICAgIHBhc3N3b3JkIC0tIFBhc3N3b3JkIChp
ZiBhbnkpLgorCisgICAgICAgICAgICB1c2VybmFtZSAtLSBUaGUgdXNlcm5hbWUuCisKKyAgICAg
ICAgICAgIGlyY25hbWUgLS0gVGhlIElSQyBuYW1lLgorCisgICAgICAgICAgICBsb2NhbGFkZHJl
c3MgLS0gQmluZCB0aGUgY29ubmVjdGlvbiB0byBhIHNwZWNpZmljIGxvY2FsIElQIGFkZHJlc3Mu
CisKKyAgICAgICAgICAgIGxvY2FscG9ydCAtLSBCaW5kIHRoZSBjb25uZWN0aW9uIHRvIGEgc3Bl
Y2lmaWMgbG9jYWwgcG9ydC4KKworICAgICAgICAgICAgc3NsIC0tIEVuYWJsZSBzdXBwb3J0IGZv
ciBzc2wuCisKKyAgICAgICAgICAgIGlwdjYgLS0gRW5hYmxlIHN1cHBvcnQgZm9yIGlwdjYuCisK
KyAgICAgICAgVGhpcyBmdW5jdGlvbiBjYW4gYmUgY2FsbGVkIHRvIHJlY29ubmVjdCBhIGNsb3Nl
ZCBjb25uZWN0aW9uLgorICAgICAgICAiIiIKKyAgICAgICAgc2VsZi5jb25uZWN0aW9uLmNvbm5l
Y3Qoc2VydmVyLCBwb3J0LCBuaWNrbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcGFzc3dvcmQsIHVzZXJuYW1lLCBpcmNuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBsb2NhbGFkZHJlc3MsIGxvY2FscG9ydCwgc3NsLCBpcHY2KQorCisgICAgZGVmIGRj
Y19jb25uZWN0KHNlbGYsIGFkZHJlc3MsIHBvcnQsIGRjY3R5cGU9ImNoYXQiKToKKyAgICAgICAg
IiIiQ29ubmVjdCB0byBhIERDQyBwZWVyLgorCisgICAgICAgIEFyZ3VtZW50czoKKworICAgICAg
ICAgICAgYWRkcmVzcyAtLSBJUCBhZGRyZXNzIG9mIHRoZSBwZWVyLgorCisgICAgICAgICAgICBw
b3J0IC0tIFBvcnQgdG8gY29ubmVjdCB0by4KKworICAgICAgICBSZXR1cm5zIGEgRENDQ29ubmVj
dGlvbiBpbnN0YW5jZS4KKyAgICAgICAgIiIiCisgICAgICAgIGRjYyA9IHNlbGYuaXJjb2JqLmRj
YyhkY2N0eXBlKQorICAgICAgICBzZWxmLmRjY19jb25uZWN0aW9ucy5hcHBlbmQoZGNjKQorICAg
ICAgICBkY2MuY29ubmVjdChhZGRyZXNzLCBwb3J0KQorICAgICAgICByZXR1cm4gZGNjCisKKyAg
ICBkZWYgZGNjX2xpc3RlbihzZWxmLCBkY2N0eXBlPSJjaGF0Iik6CisgICAgICAgICIiIkxpc3Rl
biBmb3IgY29ubmVjdGlvbnMgZnJvbSBhIERDQyBwZWVyLgorCisgICAgICAgIFJldHVybnMgYSBE
Q0NDb25uZWN0aW9uIGluc3RhbmNlLgorICAgICAgICAiIiIKKyAgICAgICAgZGNjID0gc2VsZi5p
cmNvYmouZGNjKGRjY3R5cGUpCisgICAgICAgIHNlbGYuZGNjX2Nvbm5lY3Rpb25zLmFwcGVuZChk
Y2MpCisgICAgICAgIGRjYy5saXN0ZW4oKQorICAgICAgICByZXR1cm4gZGNjCisKKyAgICBkZWYg
c3RhcnQoc2VsZik6CisgICAgICAgICIiIlN0YXJ0IHRoZSBJUkMgY2xpZW50LiIiIgorICAgICAg
ICBzZWxmLmlyY29iai5wcm9jZXNzX2ZvcmV2ZXIoKQorCisKK2NsYXNzIEV2ZW50OgorICAgICIi
IkNsYXNzIHJlcHJlc2VudGluZyBhbiBJUkMgZXZlbnQuIiIiCisgICAgZGVmIF9faW5pdF9fKHNl
bGYsIGV2ZW50dHlwZSwgc291cmNlLCB0YXJnZXQsIGFyZ3VtZW50cz1Ob25lKToKKyAgICAgICAg
IiIiQ29uc3RydWN0b3Igb2YgRXZlbnQgb2JqZWN0cy4KKworICAgICAgICBBcmd1bWVudHM6CisK
KyAgICAgICAgICAgIGV2ZW50dHlwZSAtLSBBIHN0cmluZyBkZXNjcmliaW5nIHRoZSBldmVudC4K
KworICAgICAgICAgICAgc291cmNlIC0tIFRoZSBvcmlnaW5hdG9yIG9mIHRoZSBldmVudCAoYSBu
aWNrIG1hc2sgb3IgYSBzZXJ2ZXIpLgorCisgICAgICAgICAgICB0YXJnZXQgLS0gVGhlIHRhcmdl
dCBvZiB0aGUgZXZlbnQgKGEgbmljayBvciBhIGNoYW5uZWwpLgorCisgICAgICAgICAgICBhcmd1
bWVudHMgLS0gQW55IGV2ZW50IHNwZWNpZmljIGFyZ3VtZW50cy4KKyAgICAgICAgIiIiCisgICAg
ICAgIHNlbGYuX2V2ZW50dHlwZSA9IGV2ZW50dHlwZQorICAgICAgICBzZWxmLl9zb3VyY2UgPSBz
b3VyY2UKKyAgICAgICAgc2VsZi5fdGFyZ2V0ID0gdGFyZ2V0CisgICAgICAgIGlmIGFyZ3VtZW50
czoKKyAgICAgICAgICAgIHNlbGYuX2FyZ3VtZW50cyA9IGFyZ3VtZW50cworICAgICAgICBlbHNl
OgorICAgICAgICAgICAgc2VsZi5fYXJndW1lbnRzID0gW10KKworICAgIGRlZiBldmVudHR5cGUo
c2VsZik6CisgICAgICAgICIiIkdldCB0aGUgZXZlbnQgdHlwZS4iIiIKKyAgICAgICAgcmV0dXJu
IHNlbGYuX2V2ZW50dHlwZQorCisgICAgZGVmIHNvdXJjZShzZWxmKToKKyAgICAgICAgIiIiR2V0
IHRoZSBldmVudCBzb3VyY2UuIiIiCisgICAgICAgIHJldHVybiBzZWxmLl9zb3VyY2UKKworICAg
IGRlZiB0YXJnZXQoc2VsZik6CisgICAgICAgICIiIkdldCB0aGUgZXZlbnQgdGFyZ2V0LiIiIgor
ICAgICAgICByZXR1cm4gc2VsZi5fdGFyZ2V0CisKKyAgICBkZWYgYXJndW1lbnRzKHNlbGYpOgor
ICAgICAgICAiIiJHZXQgdGhlIGV2ZW50IGFyZ3VtZW50cy4iIiIKKyAgICAgICAgcmV0dXJuIHNl
bGYuX2FyZ3VtZW50cworCitfTE9XX0xFVkVMX1FVT1RFID0gIlwwMjAiCitfQ1RDUF9MRVZFTF9R
VU9URSA9ICJcMTM0IgorX0NUQ1BfREVMSU1JVEVSID0gIlwwMDEiCisKK19sb3dfbGV2ZWxfbWFw
cGluZyA9IHsKKyAgICAiMCI6ICJcMDAwIiwKKyAgICAibiI6ICJcbiIsCisgICAgInIiOiAiXHIi
LAorICAgIF9MT1dfTEVWRUxfUVVPVEU6IF9MT1dfTEVWRUxfUVVPVEUKK30KKworX2xvd19sZXZl
bF9yZWdleHAgPSByZS5jb21waWxlKF9MT1dfTEVWRUxfUVVPVEUgKyAiKC4pIikKKworZGVmIG1h
c2tfbWF0Y2hlcyhuaWNrLCBtYXNrKToKKyAgICAiIiJDaGVjayBpZiBhIG5pY2sgbWF0Y2hlcyBh
IG1hc2suCisKKyAgICBSZXR1cm5zIHRydWUgaWYgdGhlIG5pY2sgbWF0Y2hlcywgb3RoZXJ3aXNl
IGZhbHNlLgorICAgICIiIgorICAgIG5pY2sgPSBpcmNfbG93ZXIobmljaykKKyAgICBtYXNrID0g
aXJjX2xvd2VyKG1hc2spCisgICAgbWFzayA9IG1hc2sucmVwbGFjZSgiXFwiLCAiXFxcXCIpCisg
ICAgZm9yIGNoIGluICIuJHxbXSgpe30rIjoKKyAgICAgICAgbWFzayA9IG1hc2sucmVwbGFjZShj
aCwgIlxcIiArIGNoKQorICAgIG1hc2sgPSBtYXNrLnJlcGxhY2UoIj8iLCAiLiIpCisgICAgbWFz
ayA9IG1hc2sucmVwbGFjZSgiKiIsICIuKiIpCisgICAgciA9IHJlLmNvbXBpbGUobWFzaywgcmUu
SUdOT1JFQ0FTRSkKKyAgICByZXR1cm4gci5tYXRjaChuaWNrKQorCitfc3BlY2lhbCA9ICItW11c
XGBee30iCituaWNrX2NoYXJhY3RlcnMgPSBzdHJpbmcuYXNjaWlfbGV0dGVycyArIHN0cmluZy5k
aWdpdHMgKyBfc3BlY2lhbAorX2lyY3N0cmluZ190cmFuc2xhdGlvbiA9IHN0cmluZy5tYWtldHJh
bnMoc3RyaW5nLmFzY2lpX3VwcGVyY2FzZSArICJbXVxcXiIsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzdHJpbmcuYXNjaWlfbG93ZXJjYXNlICsgInt9fH4iKQor
CitkZWYgaXJjX2xvd2VyKHMpOgorICAgICIiIlJldHVybnMgYSBsb3dlcmNhc2VkIHN0cmluZy4K
KworICAgIFRoZSBkZWZpbml0aW9uIG9mIGxvd2VyY2FzZWQgY29tZXMgZnJvbSB0aGUgSVJDIHNw
ZWNpZmljYXRpb24gKFJGQworICAgIDE0NTkpLgorICAgICIiIgorICAgIHJldHVybiBzLnRyYW5z
bGF0ZShfaXJjc3RyaW5nX3RyYW5zbGF0aW9uKQorCitkZWYgX2N0Y3BfZGVxdW90ZShtZXNzYWdl
KToKKyAgICAiIiJbSW50ZXJuYWxdIERlcXVvdGUgYSBtZXNzYWdlIGFjY29yZGluZyB0byBDVENQ
IHNwZWNpZmljYXRpb25zLgorCisgICAgVGhlIGZ1bmN0aW9uIHJldHVybnMgYSBsaXN0IHdoZXJl
IGVhY2ggZWxlbWVudCBjYW4gYmUgZWl0aGVyIGEKKyAgICBzdHJpbmcgKG5vcm1hbCBtZXNzYWdl
KSBvciBhIHR1cGxlIG9mIG9uZSBvciB0d28gc3RyaW5ncyAodGFnZ2VkCisgICAgbWVzc2FnZXMp
LiAgSWYgYSB0dXBsZSBoYXMgb25seSBvbmUgZWxlbWVudCAoaWUgaXMgYSBzaW5nbGV0b24pLAor
ICAgIHRoYXQgZWxlbWVudCBpcyB0aGUgdGFnOyBvdGhlcndpc2UgdGhlIHR1cGxlIGhhcyB0d28g
ZWxlbWVudHM6IHRoZQorICAgIHRhZyBhbmQgdGhlIGRhdGEuCisKKyAgICBBcmd1bWVudHM6CisK
KyAgICAgICAgbWVzc2FnZSAtLSBUaGUgbWVzc2FnZSB0byBiZSBkZWNvZGVkLgorICAgICIiIgor
CisgICAgZGVmIF9sb3dfbGV2ZWxfcmVwbGFjZShtYXRjaF9vYmopOgorICAgICAgICBjaCA9IG1h
dGNoX29iai5ncm91cCgxKQorCisgICAgICAgICMgSWYgbG93X2xldmVsX21hcHBpbmcgZG9lc24n
dCBoYXZlIHRoZSBjaGFyYWN0ZXIgYXMga2V5LCB3ZQorICAgICAgICAjIHNob3VsZCBqdXN0IHJl
dHVybiB0aGUgY2hhcmFjdGVyLgorICAgICAgICByZXR1cm4gX2xvd19sZXZlbF9tYXBwaW5nLmdl
dChjaCwgY2gpCisKKyAgICBpZiBfTE9XX0xFVkVMX1FVT1RFIGluIG1lc3NhZ2U6CisgICAgICAg
ICMgWXVwLCB0aGVyZSB3YXMgYSBxdW90ZS4gIFJlbGVhc2UgdGhlIGRlcXVvdGVyLCBtYW4hCisg
ICAgICAgIG1lc3NhZ2UgPSBfbG93X2xldmVsX3JlZ2V4cC5zdWIoX2xvd19sZXZlbF9yZXBsYWNl
LCBtZXNzYWdlKQorCisgICAgaWYgX0NUQ1BfREVMSU1JVEVSIG5vdCBpbiBtZXNzYWdlOgorICAg
ICAgICByZXR1cm4gW21lc3NhZ2VdCisgICAgZWxzZToKKyAgICAgICAgIyBTcGxpdCBpdCBpbnRv
IHBhcnRzLiAgKERvZXMgYW55IElSQyBjbGllbnQgYWN0dWFsbHkgKnVzZSoKKyAgICAgICAgIyBD
VENQIHN0YWNraW5nIGxpa2UgdGhpcz8pCisgICAgICAgIGNodW5rcyA9IG1lc3NhZ2Uuc3BsaXQo
X0NUQ1BfREVMSU1JVEVSKQorCisgICAgICAgIG1lc3NhZ2VzID0gW10KKyAgICAgICAgaSA9IDAK
KyAgICAgICAgd2hpbGUgaSA8IGxlbihjaHVua3MpLTE6CisgICAgICAgICAgICAjIEFkZCBtZXNz
YWdlIGlmIGl0J3Mgbm9uLWVtcHR5LgorICAgICAgICAgICAgaWYgbGVuKGNodW5rc1tpXSkgPiAw
OgorICAgICAgICAgICAgICAgIG1lc3NhZ2VzLmFwcGVuZChjaHVua3NbaV0pCisKKyAgICAgICAg
ICAgIGlmIGkgPCBsZW4oY2h1bmtzKS0yOgorICAgICAgICAgICAgICAgICMgQXllISAgQ1RDUCB0
YWdnZWQgZGF0YSBhaGVhZCEKKyAgICAgICAgICAgICAgICBtZXNzYWdlcy5hcHBlbmQodHVwbGUo
Y2h1bmtzW2krMV0uc3BsaXQoIiAiLCAxKSkpCisKKyAgICAgICAgICAgIGkgPSBpICsgMgorCisg
ICAgICAgIGlmIGxlbihjaHVua3MpICUgMiA9PSAwOgorICAgICAgICAgICAgIyBIZXksIGEgbG9u
ZWx5IF9DVENQX0RFTElNSVRFUiBhdCB0aGUgZW5kISAgVGhpcyBtZWFucworICAgICAgICAgICAg
IyB0aGF0IHRoZSBsYXN0IGNodW5rLCBpbmNsdWRpbmcgdGhlIGRlbGltaXRlciwgaXMgYQorICAg
ICAgICAgICAgIyBub3JtYWwgbWVzc2FnZSEgIChUaGlzIGlzIGFjY29yZGluZyB0byB0aGUgQ1RD
UAorICAgICAgICAgICAgIyBzcGVjaWZpY2F0aW9uLikKKyAgICAgICAgICAgIG1lc3NhZ2VzLmFw
cGVuZChfQ1RDUF9ERUxJTUlURVIgKyBjaHVua3NbLTFdKQorCisgICAgICAgIHJldHVybiBtZXNz
YWdlcworCitkZWYgaXNfY2hhbm5lbChzdHJpbmcpOgorICAgICIiIkNoZWNrIGlmIGEgc3RyaW5n
IGlzIGEgY2hhbm5lbCBuYW1lLgorCisgICAgUmV0dXJucyB0cnVlIGlmIHRoZSBhcmd1bWVudCBp
cyBhIGNoYW5uZWwgbmFtZSwgb3RoZXJ3aXNlIGZhbHNlLgorICAgICIiIgorICAgIHJldHVybiBz
dHJpbmcgYW5kIHN0cmluZ1swXSBpbiAiIyYrISIKKworZGVmIGlwX251bXN0cl90b19xdWFkKG51
bSk6CisgICAgIiIiQ29udmVydCBhbiBJUCBudW1iZXIgYXMgYW4gaW50ZWdlciBnaXZlbiBpbiBB
U0NJSQorICAgIHJlcHJlc2VudGF0aW9uIChlLmcuICczMjMyMjM1NTIxJykgdG8gYW4gSVAgYWRk
cmVzcyBzdHJpbmcKKyAgICAoZS5nLiAnMTkyLjE2OC4wLjEnKS4iIiIKKyAgICBuID0gbG9uZyhu
dW0pCisgICAgcCA9IG1hcChzdHIsIG1hcChpbnQsIFtuID4+IDI0ICYgMHhGRiwgbiA+PiAxNiAm
IDB4RkYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBuID4+IDggJiAweEZGLCBuICYgMHhG
Rl0pKQorICAgIHJldHVybiAiLiIuam9pbihwKQorCitkZWYgaXBfcXVhZF90b19udW1zdHIocXVh
ZCk6CisgICAgIiIiQ29udmVydCBhbiBJUCBhZGRyZXNzIHN0cmluZyAoZS5nLiAnMTkyLjE2OC4w
LjEnKSB0byBhbiBJUAorICAgIG51bWJlciBhcyBhbiBpbnRlZ2VyIGdpdmVuIGluIEFTQ0lJIHJl
cHJlc2VudGF0aW9uCisgICAgKGUuZy4gJzMyMzIyMzU1MjEnKS4iIiIKKyAgICBwID0gbWFwKGxv
bmcsIHF1YWQuc3BsaXQoIi4iKSkKKyAgICBzID0gc3RyKChwWzBdIDw8IDI0KSB8IChwWzFdIDw8
IDE2KSB8IChwWzJdIDw8IDgpIHwgcFszXSkKKyAgICBpZiBzWy0xXSA9PSAiTCI6CisgICAgICAg
IHMgPSBzWzotMV0KKyAgICByZXR1cm4gcworCitkZWYgbm1fdG9fbihzKToKKyAgICAiIiJHZXQg
dGhlIG5pY2sgcGFydCBvZiBhIG5pY2ttYXNrLgorCisgICAgKFRoZSBzb3VyY2Ugb2YgYW4gRXZl
bnQgaXMgYSBuaWNrbWFzay4pCisgICAgIiIiCisgICAgcmV0dXJuIHMuc3BsaXQoIiEiKVswXQor
CitkZWYgbm1fdG9fdWgocyk6CisgICAgIiIiR2V0IHRoZSB1c2VyaG9zdCBwYXJ0IG9mIGEgbmlj
a21hc2suCisKKyAgICAoVGhlIHNvdXJjZSBvZiBhbiBFdmVudCBpcyBhIG5pY2ttYXNrLikKKyAg
ICAiIiIKKyAgICByZXR1cm4gcy5zcGxpdCgiISIpWzFdCisKK2RlZiBubV90b19oKHMpOgorICAg
ICIiIkdldCB0aGUgaG9zdCBwYXJ0IG9mIGEgbmlja21hc2suCisKKyAgICAoVGhlIHNvdXJjZSBv
ZiBhbiBFdmVudCBpcyBhIG5pY2ttYXNrLikKKyAgICAiIiIKKyAgICByZXR1cm4gcy5zcGxpdCgi
QCIpWzFdCisKK2RlZiBubV90b191KHMpOgorICAgICIiIkdldCB0aGUgdXNlciBwYXJ0IG9mIGEg
bmlja21hc2suCisKKyAgICAoVGhlIHNvdXJjZSBvZiBhbiBFdmVudCBpcyBhIG5pY2ttYXNrLikK
KyAgICAiIiIKKyAgICBzID0gcy5zcGxpdCgiISIpWzFdCisgICAgcmV0dXJuIHMuc3BsaXQoIkAi
KVswXQorCitkZWYgcGFyc2Vfbmlja19tb2Rlcyhtb2RlX3N0cmluZyk6CisgICAgIiIiUGFyc2Ug
YSBuaWNrIG1vZGUgc3RyaW5nLgorCisgICAgVGhlIGZ1bmN0aW9uIHJldHVybnMgYSBsaXN0IG9m
IGxpc3RzIHdpdGggdGhyZWUgbWVtYmVyczogc2lnbiwKKyAgICBtb2RlIGFuZCBhcmd1bWVudC4g
IFRoZSBzaWduIGlzIFwiK1wiIG9yIFwiLVwiLiAgVGhlIGFyZ3VtZW50IGlzCisgICAgYWx3YXlz
IE5vbmUuCisKKyAgICBFeGFtcGxlOgorCisgICAgPj4+IGlyY2xpYi5wYXJzZV9uaWNrX21vZGVz
KFwiK2FiLWNcIikKKyAgICBbWycrJywgJ2EnLCBOb25lXSwgWycrJywgJ2InLCBOb25lXSwgWyct
JywgJ2MnLCBOb25lXV0KKyAgICAiIiIKKworICAgIHJldHVybiBfcGFyc2VfbW9kZXMobW9kZV9z
dHJpbmcsICIiKQorCitkZWYgcGFyc2VfY2hhbm5lbF9tb2Rlcyhtb2RlX3N0cmluZyk6CisgICAg
IiIiUGFyc2UgYSBjaGFubmVsIG1vZGUgc3RyaW5nLgorCisgICAgVGhlIGZ1bmN0aW9uIHJldHVy
bnMgYSBsaXN0IG9mIGxpc3RzIHdpdGggdGhyZWUgbWVtYmVyczogc2lnbiwKKyAgICBtb2RlIGFu
ZCBhcmd1bWVudC4gIFRoZSBzaWduIGlzIFwiK1wiIG9yIFwiLVwiLiAgVGhlIGFyZ3VtZW50IGlz
CisgICAgTm9uZSBpZiBtb2RlIGlzbid0IG9uZSBvZiBcImJcIiwgXCJrXCIsIFwibFwiLCBcInZc
IiBvciBcIm9cIi4KKworICAgIEV4YW1wbGU6CisKKyAgICA+Pj4gaXJjbGliLnBhcnNlX2NoYW5u
ZWxfbW9kZXMoXCIrYWItYyBmb29cIikKKyAgICBbWycrJywgJ2EnLCBOb25lXSwgWycrJywgJ2In
LCAnZm9vJ10sIFsnLScsICdjJywgTm9uZV1dCisgICAgIiIiCisKKyAgICByZXR1cm4gX3BhcnNl
X21vZGVzKG1vZGVfc3RyaW5nLCAiYmtsdm8iKQorCitkZWYgX3BhcnNlX21vZGVzKG1vZGVfc3Ry
aW5nLCB1bmFyeV9tb2Rlcz0iIik6CisgICAgIiIiW0ludGVybmFsXSIiIgorICAgIG1vZGVzID0g
W10KKyAgICBhcmdfY291bnQgPSAwCisKKyAgICAjIFN0YXRlIHZhcmlhYmxlLgorICAgIHNpZ24g
PSAiIgorCisgICAgYSA9IG1vZGVfc3RyaW5nLnNwbGl0KCkKKyAgICBpZiBsZW4oYSkgPT0gMDoK
KyAgICAgICAgcmV0dXJuIFtdCisgICAgZWxzZToKKyAgICAgICAgbW9kZV9wYXJ0LCBhcmdzID0g
YVswXSwgYVsxOl0KKworICAgIGlmIG1vZGVfcGFydFswXSBub3QgaW4gIistIjoKKyAgICAgICAg
cmV0dXJuIFtdCisgICAgZm9yIGNoIGluIG1vZGVfcGFydDoKKyAgICAgICAgaWYgY2ggaW4gIist
IjoKKyAgICAgICAgICAgIHNpZ24gPSBjaAorICAgICAgICBlbGlmIGNoID09ICIgIjoKKyAgICAg
ICAgICAgIGNvbGxlY3RpbmdfYXJndW1lbnRzID0gMQorICAgICAgICBlbGlmIGNoIGluIHVuYXJ5
X21vZGVzOgorICAgICAgICAgICAgaWYgbGVuKGFyZ3MpID49IGFyZ19jb3VudCArIDE6CisgICAg
ICAgICAgICAgICAgbW9kZXMuYXBwZW5kKFtzaWduLCBjaCwgYXJnc1thcmdfY291bnRdXSkKKyAg
ICAgICAgICAgICAgICBhcmdfY291bnQgPSBhcmdfY291bnQgKyAxCisgICAgICAgICAgICBlbHNl
OgorICAgICAgICAgICAgICAgIG1vZGVzLmFwcGVuZChbc2lnbiwgY2gsIE5vbmVdKQorICAgICAg
ICBlbHNlOgorICAgICAgICAgICAgbW9kZXMuYXBwZW5kKFtzaWduLCBjaCwgTm9uZV0pCisgICAg
cmV0dXJuIG1vZGVzCisKK2RlZiBfcGluZ19wb25nZXIoY29ubmVjdGlvbiwgZXZlbnQpOgorICAg
ICIiIltJbnRlcm5hbF0iIiIKKyAgICBjb25uZWN0aW9uLnBvbmcoZXZlbnQudGFyZ2V0KCkpCisK
KyMgTnVtZXJpYyB0YWJsZSBtb3N0bHkgc3RvbGVuIGZyb20gdGhlIFBlcmwgSVJDIG1vZHVsZSAo
TmV0OjpJUkMpLgorbnVtZXJpY19ldmVudHMgPSB7CisgICAgIjAwMSI6ICJ3ZWxjb21lIiwKKyAg
ICAiMDAyIjogInlvdXJob3N0IiwKKyAgICAiMDAzIjogImNyZWF0ZWQiLAorICAgICIwMDQiOiAi
bXlpbmZvIiwKKyAgICAiMDA1IjogImZlYXR1cmVsaXN0IiwgICMgWFhYCisgICAgIjIwMCI6ICJ0
cmFjZWxpbmsiLAorICAgICIyMDEiOiAidHJhY2Vjb25uZWN0aW5nIiwKKyAgICAiMjAyIjogInRy
YWNlaGFuZHNoYWtlIiwKKyAgICAiMjAzIjogInRyYWNldW5rbm93biIsCisgICAgIjIwNCI6ICJ0
cmFjZW9wZXJhdG9yIiwKKyAgICAiMjA1IjogInRyYWNldXNlciIsCisgICAgIjIwNiI6ICJ0cmFj
ZXNlcnZlciIsCisgICAgIjIwNyI6ICJ0cmFjZXNlcnZpY2UiLAorICAgICIyMDgiOiAidHJhY2Vu
ZXd0eXBlIiwKKyAgICAiMjA5IjogInRyYWNlY2xhc3MiLAorICAgICIyMTAiOiAidHJhY2VyZWNv
bm5lY3QiLAorICAgICIyMTEiOiAic3RhdHNsaW5raW5mbyIsCisgICAgIjIxMiI6ICJzdGF0c2Nv
bW1hbmRzIiwKKyAgICAiMjEzIjogInN0YXRzY2xpbmUiLAorICAgICIyMTQiOiAic3RhdHNubGlu
ZSIsCisgICAgIjIxNSI6ICJzdGF0c2lsaW5lIiwKKyAgICAiMjE2IjogInN0YXRza2xpbmUiLAor
ICAgICIyMTciOiAic3RhdHNxbGluZSIsCisgICAgIjIxOCI6ICJzdGF0c3lsaW5lIiwKKyAgICAi
MjE5IjogImVuZG9mc3RhdHMiLAorICAgICIyMjEiOiAidW1vZGVpcyIsCisgICAgIjIzMSI6ICJz
ZXJ2aWNlaW5mbyIsCisgICAgIjIzMiI6ICJlbmRvZnNlcnZpY2VzIiwKKyAgICAiMjMzIjogInNl
cnZpY2UiLAorICAgICIyMzQiOiAic2Vydmxpc3QiLAorICAgICIyMzUiOiAic2Vydmxpc3RlbmQi
LAorICAgICIyNDEiOiAic3RhdHNsbGluZSIsCisgICAgIjI0MiI6ICJzdGF0c3VwdGltZSIsCisg
ICAgIjI0MyI6ICJzdGF0c29saW5lIiwKKyAgICAiMjQ0IjogInN0YXRzaGxpbmUiLAorICAgICIy
NTAiOiAibHVzZXJjb25ucyIsCisgICAgIjI1MSI6ICJsdXNlcmNsaWVudCIsCisgICAgIjI1MiI6
ICJsdXNlcm9wIiwKKyAgICAiMjUzIjogImx1c2VydW5rbm93biIsCisgICAgIjI1NCI6ICJsdXNl
cmNoYW5uZWxzIiwKKyAgICAiMjU1IjogImx1c2VybWUiLAorICAgICIyNTYiOiAiYWRtaW5tZSIs
CisgICAgIjI1NyI6ICJhZG1pbmxvYzEiLAorICAgICIyNTgiOiAiYWRtaW5sb2MyIiwKKyAgICAi
MjU5IjogImFkbWluZW1haWwiLAorICAgICIyNjEiOiAidHJhY2Vsb2ciLAorICAgICIyNjIiOiAi
ZW5kb2Z0cmFjZSIsCisgICAgIjI2MyI6ICJ0cnlhZ2FpbiIsCisgICAgIjI2NSI6ICJuX2xvY2Fs
IiwKKyAgICAiMjY2IjogIm5fZ2xvYmFsIiwKKyAgICAiMzAwIjogIm5vbmUiLAorICAgICIzMDEi
OiAiYXdheSIsCisgICAgIjMwMiI6ICJ1c2VyaG9zdCIsCisgICAgIjMwMyI6ICJpc29uIiwKKyAg
ICAiMzA1IjogInVuYXdheSIsCisgICAgIjMwNiI6ICJub3dhd2F5IiwKKyAgICAiMzExIjogIndo
b2lzdXNlciIsCisgICAgIjMxMiI6ICJ3aG9pc3NlcnZlciIsCisgICAgIjMxMyI6ICJ3aG9pc29w
ZXJhdG9yIiwKKyAgICAiMzE0IjogIndob3dhc3VzZXIiLAorICAgICIzMTUiOiAiZW5kb2Z3aG8i
LAorICAgICIzMTYiOiAid2hvaXNjaGFub3AiLAorICAgICIzMTciOiAid2hvaXNpZGxlIiwKKyAg
ICAiMzE4IjogImVuZG9md2hvaXMiLAorICAgICIzMTkiOiAid2hvaXNjaGFubmVscyIsCisgICAg
IjMyMSI6ICJsaXN0c3RhcnQiLAorICAgICIzMjIiOiAibGlzdCIsCisgICAgIjMyMyI6ICJsaXN0
ZW5kIiwKKyAgICAiMzI0IjogImNoYW5uZWxtb2RlaXMiLAorICAgICIzMjkiOiAiY2hhbm5lbGNy
ZWF0ZSIsCisgICAgIjMzMSI6ICJub3RvcGljIiwKKyAgICAiMzMyIjogImN1cnJlbnR0b3BpYyIs
CisgICAgIjMzMyI6ICJ0b3BpY2luZm8iLAorICAgICIzNDEiOiAiaW52aXRpbmciLAorICAgICIz
NDIiOiAic3VtbW9uaW5nIiwKKyAgICAiMzQ2IjogImludml0ZWxpc3QiLAorICAgICIzNDciOiAi
ZW5kb2ZpbnZpdGVsaXN0IiwKKyAgICAiMzQ4IjogImV4Y2VwdGxpc3QiLAorICAgICIzNDkiOiAi
ZW5kb2ZleGNlcHRsaXN0IiwKKyAgICAiMzUxIjogInZlcnNpb24iLAorICAgICIzNTIiOiAid2hv
cmVwbHkiLAorICAgICIzNTMiOiAibmFtcmVwbHkiLAorICAgICIzNjEiOiAia2lsbGRvbmUiLAor
ICAgICIzNjIiOiAiY2xvc2luZyIsCisgICAgIjM2MyI6ICJjbG9zZWVuZCIsCisgICAgIjM2NCI6
ICJsaW5rcyIsCisgICAgIjM2NSI6ICJlbmRvZmxpbmtzIiwKKyAgICAiMzY2IjogImVuZG9mbmFt
ZXMiLAorICAgICIzNjciOiAiYmFubGlzdCIsCisgICAgIjM2OCI6ICJlbmRvZmJhbmxpc3QiLAor
ICAgICIzNjkiOiAiZW5kb2Z3aG93YXMiLAorICAgICIzNzEiOiAiaW5mbyIsCisgICAgIjM3MiI6
ICJtb3RkIiwKKyAgICAiMzczIjogImluZm9zdGFydCIsCisgICAgIjM3NCI6ICJlbmRvZmluZm8i
LAorICAgICIzNzUiOiAibW90ZHN0YXJ0IiwKKyAgICAiMzc2IjogImVuZG9mbW90ZCIsCisgICAg
IjM3NyI6ICJtb3RkMiIsICAgICAgICAjIDE5OTctMTAtMTYgLS0gdGtpbAorICAgICIzODEiOiAi
eW91cmVvcGVyIiwKKyAgICAiMzgyIjogInJlaGFzaGluZyIsCisgICAgIjM4NCI6ICJteXBvcnRp
cyIsCisgICAgIjM5MSI6ICJ0aW1lIiwKKyAgICAiMzkyIjogInVzZXJzc3RhcnQiLAorICAgICIz
OTMiOiAidXNlcnMiLAorICAgICIzOTQiOiAiZW5kb2Z1c2VycyIsCisgICAgIjM5NSI6ICJub3Vz
ZXJzIiwKKyAgICAiNDAxIjogIm5vc3VjaG5pY2siLAorICAgICI0MDIiOiAibm9zdWNoc2VydmVy
IiwKKyAgICAiNDAzIjogIm5vc3VjaGNoYW5uZWwiLAorICAgICI0MDQiOiAiY2Fubm90c2VuZHRv
Y2hhbiIsCisgICAgIjQwNSI6ICJ0b29tYW55Y2hhbm5lbHMiLAorICAgICI0MDYiOiAid2Fzbm9z
dWNobmljayIsCisgICAgIjQwNyI6ICJ0b29tYW55dGFyZ2V0cyIsCisgICAgIjQwOSI6ICJub29y
aWdpbiIsCisgICAgIjQxMSI6ICJub3JlY2lwaWVudCIsCisgICAgIjQxMiI6ICJub3RleHR0b3Nl
bmQiLAorICAgICI0MTMiOiAibm90b3BsZXZlbCIsCisgICAgIjQxNCI6ICJ3aWxkdG9wbGV2ZWwi
LAorICAgICI0MjEiOiAidW5rbm93bmNvbW1hbmQiLAorICAgICI0MjIiOiAibm9tb3RkIiwKKyAg
ICAiNDIzIjogIm5vYWRtaW5pbmZvIiwKKyAgICAiNDI0IjogImZpbGVlcnJvciIsCisgICAgIjQz
MSI6ICJub25pY2tuYW1lZ2l2ZW4iLAorICAgICI0MzIiOiAiZXJyb25ldXNuaWNrbmFtZSIsICMg
VGhpc3MgaXogaG93IGl0cyBzcGVsZCBpbiB0aGVlIFJGQy4KKyAgICAiNDMzIjogIm5pY2tuYW1l
aW51c2UiLAorICAgICI0MzYiOiAibmlja2NvbGxpc2lvbiIsCisgICAgIjQzNyI6ICJ1bmF2YWls
cmVzb3VyY2UiLCAgIyAiTmljayB0ZW1wb3JhbGx5IHVuYXZhaWxhYmxlIgorICAgICI0NDEiOiAi
dXNlcm5vdGluY2hhbm5lbCIsCisgICAgIjQ0MiI6ICJub3RvbmNoYW5uZWwiLAorICAgICI0NDMi
OiAidXNlcm9uY2hhbm5lbCIsCisgICAgIjQ0NCI6ICJub2xvZ2luIiwKKyAgICAiNDQ1IjogInN1
bW1vbmRpc2FibGVkIiwKKyAgICAiNDQ2IjogInVzZXJzZGlzYWJsZWQiLAorICAgICI0NTEiOiAi
bm90cmVnaXN0ZXJlZCIsCisgICAgIjQ2MSI6ICJuZWVkbW9yZXBhcmFtcyIsCisgICAgIjQ2MiI6
ICJhbHJlYWR5cmVnaXN0ZXJlZCIsCisgICAgIjQ2MyI6ICJub3Blcm1mb3Job3N0IiwKKyAgICAi
NDY0IjogInBhc3N3ZG1pc21hdGNoIiwKKyAgICAiNDY1IjogInlvdXJlYmFubmVkY3JlZXAiLCAj
IEkgbG92ZSB0aGlzIG9uZS4uLgorICAgICI0NjYiOiAieW91d2lsbGJlYmFubmVkIiwKKyAgICAi
NDY3IjogImtleXNldCIsCisgICAgIjQ3MSI6ICJjaGFubmVsaXNmdWxsIiwKKyAgICAiNDcyIjog
InVua25vd25tb2RlIiwKKyAgICAiNDczIjogImludml0ZW9ubHljaGFuIiwKKyAgICAiNDc0Ijog
ImJhbm5lZGZyb21jaGFuIiwKKyAgICAiNDc1IjogImJhZGNoYW5uZWxrZXkiLAorICAgICI0NzYi
OiAiYmFkY2hhbm1hc2siLAorICAgICI0NzciOiAibm9jaGFubW9kZXMiLCAgIyAiQ2hhbm5lbCBk
b2Vzbid0IHN1cHBvcnQgbW9kZXMiCisgICAgIjQ3OCI6ICJiYW5saXN0ZnVsbCIsCisgICAgIjQ4
MSI6ICJub3ByaXZpbGVnZXMiLAorICAgICI0ODIiOiAiY2hhbm9wcml2c25lZWRlZCIsCisgICAg
IjQ4MyI6ICJjYW50a2lsbHNlcnZlciIsCisgICAgIjQ4NCI6ICJyZXN0cmljdGVkIiwgICAjIENv
bm5lY3Rpb24gaXMgcmVzdHJpY3RlZAorICAgICI0ODUiOiAidW5pcW9wcHJpdnNuZWVkZWQiLAor
ICAgICI0OTEiOiAibm9vcGVyaG9zdCIsCisgICAgIjQ5MiI6ICJub3NlcnZpY2Vob3N0IiwKKyAg
ICAiNTAxIjogInVtb2RldW5rbm93bmZsYWciLAorICAgICI1MDIiOiAidXNlcnNkb250bWF0Y2gi
LAorfQorCitnZW5lcmF0ZWRfZXZlbnRzID0gWworICAgICMgR2VuZXJhdGVkIGV2ZW50cworICAg
ICJkY2NfY29ubmVjdCIsCisgICAgImRjY19kaXNjb25uZWN0IiwKKyAgICAiZGNjbXNnIiwKKyAg
ICAiZGlzY29ubmVjdCIsCisgICAgImN0Y3AiLAorICAgICJjdGNwcmVwbHkiLAorXQorCitwcm90
b2NvbF9ldmVudHMgPSBbCisgICAgIyBJUkMgcHJvdG9jb2wgZXZlbnRzCisgICAgImVycm9yIiwK
KyAgICAiam9pbiIsCisgICAgImtpY2siLAorICAgICJtb2RlIiwKKyAgICAicGFydCIsCisgICAg
InBpbmciLAorICAgICJwcml2bXNnIiwKKyAgICAicHJpdm5vdGljZSIsCisgICAgInB1Ym1zZyIs
CisgICAgInB1Ym5vdGljZSIsCisgICAgInF1aXQiLAorICAgICJpbnZpdGUiLAorICAgICJwb25n
IiwKK10KKworYWxsX2V2ZW50cyA9IGdlbmVyYXRlZF9ldmVudHMgKyBwcm90b2NvbF9ldmVudHMg
KyBudW1lcmljX2V2ZW50cy52YWx1ZXMoKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>247330</attachid>
            <date>2015-02-25 04:24:03 -0800</date>
            <delta_ts>2015-03-06 01:23:43 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-141946-20150225042347.patch</filename>
            <type>text/plain</type>
            <size>69430</size>
            <attacher name="Csaba Osztrogonác">ossy</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgwNjIzCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMTc3MzM2ZDg4ZTlmZWNkM2U1NzI3YjU5ZDQ1NDk1MGY0
NTJjMTFlOC4uNTdjOTlkOTA0MjQzOGIyNzRhMmZjMTQ5OWU1YTdjYjQzMjU3ZjMzMSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIy
IEBACisyMDE1LTAyLTI1ICBDc2FiYSBPc3p0cm9nb27DoWMgIDxvc3N5QHdlYmtpdC5vcmc+CisK
KyAgICAgICAgc2V0dXAtZ2l0LWNsb25lIGZhaWxzIGR1ZSB0byB0aGUgZmFpbHVyZSB0byBkb3du
bG9hZCBweXRob24taXJjbGliLTAuNC44CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNDE5NDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBDaGVjayBpbiBpcmNib3QucHkgYW5kIGlyY2xpYi5weSB0byBhdm9p
ZCBuZXR3b3JrIHByb2JsZW1zIGluIHRoZSBmdXR1cmUuCisKKyAgICAgICAgKiBTY3JpcHRzL3dl
YmtpdHB5L2NvbW1vbi9uZXQvaXJjL2lyY2JvdC5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtp
dHB5L3RoaXJkcGFydHkvX19pbml0X18ucHk6CisgICAgICAgIChBdXRvaW5zdGFsbEltcG9ydEhv
b2suZmluZF9tb2R1bGUpOgorICAgICAgICAoQXV0b2luc3RhbGxJbXBvcnRIb29rLl9pbnN0YWxs
X2lyYyk6IERlbGV0ZWQuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS90aGlyZHBhcnR5L19f
aW5pdF9fX3VuaXR0ZXN0LnB5OgorICAgICAgICAoVGhpcmRwYXJ0eVRlc3QudGVzdF9pbXBvcnRz
KToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3RoaXJkcGFydHkvaXJjL19faW5pdF9fLnB5
OiBBZGRlZC4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3RoaXJkcGFydHkvaXJjL2lyY2Jv
dC5weTogQWRkZWQuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS90aGlyZHBhcnR5L2lyYy9p
cmNsaWIucHk6IEFkZGVkLgorCiAyMDE1LTAyLTI0ICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5v
cmc+CiAKICAgICAgICAgQ29udmVydCBXZWJFZGl0aW5nVGVzdGVyIHRvIHVzZSB4Y2NvbmZpZyBm
aWxlcwpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0L2lyYy9p
cmNib3QucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvaXJjL2lyY2JvdC5w
eQppbmRleCBjOGMxYTM4YTk4MGEzM2Y2YmZlNjVjYTU4YWM0OWYyOWY5ZGI3ZGUxLi5kYjQyNzMx
ZjZjZDc4N2Q4MGRiODM1OTdmOTA2ZTg3MWUxZjUwMTllIDEwMDY0NAotLS0gYS9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvaXJjL2lyY2JvdC5weQorKysgYi9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L2NvbW1vbi9uZXQvaXJjL2lyY2JvdC5weQpAQCAtMjksOCArMjksOCBAQAogZnJv
bSB3ZWJraXRweS5jb21tb24uY29uZmlnIGltcG9ydCBpcmMgYXMgY29uZmlnX2lyYwogCiBmcm9t
IHdlYmtpdHB5LmNvbW1vbi50aHJlYWQubWVzc2FnZXB1bXAgaW1wb3J0IE1lc3NhZ2VQdW1wLCBN
ZXNzYWdlUHVtcERlbGVnYXRlCi1mcm9tIHdlYmtpdHB5LnRoaXJkcGFydHkuYXV0b2luc3RhbGxl
ZC5pcmMgaW1wb3J0IGlyY2JvdAotZnJvbSB3ZWJraXRweS50aGlyZHBhcnR5LmF1dG9pbnN0YWxs
ZWQuaXJjIGltcG9ydCBpcmNsaWIKK2Zyb20gd2Via2l0cHkudGhpcmRwYXJ0eS5pcmMgaW1wb3J0
IGlyY2JvdAorZnJvbSB3ZWJraXRweS50aGlyZHBhcnR5LmlyYyBpbXBvcnQgaXJjbGliCiAKIAog
Y2xhc3MgSVJDQm90RGVsZWdhdGUob2JqZWN0KToKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvdGhpcmRwYXJ0eS9fX2luaXRfXy5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
dGhpcmRwYXJ0eS9fX2luaXRfXy5weQppbmRleCA3YmYxM2QwZmU2N2U0Mzc0MDYzMmQ1MGUzNGU1
ZmFiYjQxMTY2OGJmLi43NGE0OGI4ZjU4NGMzMzA0OGVhODQxMzg3YjIwYjkxNjAxNWNiZGFjIDEw
MDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3RoaXJkcGFydHkvX19pbml0X18ucHkK
KysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90aGlyZHBhcnR5L19faW5pdF9fLnB5CkBAIC04
Nyw4ICs4Nyw2IEBAIGNsYXNzIEF1dG9pbnN0YWxsSW1wb3J0SG9vayhvYmplY3QpOgogICAgICAg
ICAgICAgc2VsZi5faW5zdGFsbF9jb3ZlcmFnZSgpCiAgICAgICAgIGVsaWYgJy5lbGl6YScgaW4g
ZnVsbG5hbWU6CiAgICAgICAgICAgICBzZWxmLl9pbnN0YWxsX2VsaXphKCkKLSAgICAgICAgZWxp
ZiAnLmlyYycgaW4gZnVsbG5hbWU6Ci0gICAgICAgICAgICBzZWxmLl9pbnN0YWxsX2lyYygpCiAg
ICAgICAgIGVsaWYgJy5idWlsZGJvdCcgaW4gZnVsbG5hbWU6CiAgICAgICAgICAgICBzZWxmLl9p
bnN0YWxsX2J1aWxkYm90KCkKICAgICAgICAgZWxpZiAnLmtleXJpbmcnIGluIGZ1bGxuYW1lOgpA
QCAtMTQ2LDE3ICsxNDQsNiBAQCBjbGFzcyBBdXRvaW5zdGFsbEltcG9ydEhvb2sob2JqZWN0KToK
ICAgICBkZWYgX2luc3RhbGxfZWxpemEoc2VsZik6CiAgICAgICAgIHNlbGYuX2luc3RhbGwodXJs
PSJodHRwOi8vd3d3LmFkYW1iYXJ0aC5jb20vd2Via2l0L2VsaXphIiwgdGFyZ2V0X25hbWU9ImVs
aXphLnB5IikKIAotICAgIGRlZiBfaW5zdGFsbF9pcmMoc2VsZik6Ci0gICAgICAgICMgU2luY2Ug
aXJjbGliIGFuZCBpcmNib3QgYXJlIHR3byB0b3AtbGV2ZWwgcGFja2FnZXMsIHdlIG5lZWQgdG8g
aW1wb3J0Ci0gICAgICAgICMgdGhlbSBzZXBhcmF0ZWx5LiAgV2UgZ3JvdXAgdGhlbSBpbnRvIGFu
IGlyYyBwYWNrYWdlIGZvciBiZXR0ZXIKLSAgICAgICAgIyBvcmdhbml6YXRpb24gcHVycG9zZXMu
Ci0gICAgICAgIGlyY19kaXIgPSBzZWxmLl9mcy5qb2luKF9BVVRPSU5TVEFMTEVEX0RJUiwgImly
YyIpCi0gICAgICAgIGluc3RhbGxlciA9IEF1dG9JbnN0YWxsZXIodGFyZ2V0X2Rpcj1pcmNfZGly
KQotICAgICAgICBpbnN0YWxsZXIuaW5zdGFsbCh1cmw9Imh0dHA6Ly9kb3dubG9hZHMuc291cmNl
Zm9yZ2UubmV0L3Byb2plY3QvcHl0aG9uLWlyY2xpYi9weXRob24taXJjbGliLzAuNC44L3B5dGhv
bi1pcmNsaWItMC40LjgudGFyLmd6IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHVybF9zdWJwYXRoPSJweXRob24taXJjbGliLTAuNC44L2lyY2xpYi5w
eSIpCi0gICAgICAgIGluc3RhbGxlci5pbnN0YWxsKHVybD0iaHR0cDovL2Rvd25sb2Fkcy5zb3Vy
Y2Vmb3JnZS5uZXQvcHJvamVjdC9weXRob24taXJjbGliL3B5dGhvbi1pcmNsaWIvMC40LjgvcHl0
aG9uLWlyY2xpYi0wLjQuOC50YXIuZ3oiLAotICAgICAgICAgICAgICAgICAgICAgICAgICB1cmxf
c3VicGF0aD0icHl0aG9uLWlyY2xpYi0wLjQuOC9pcmNib3QucHkiKQotCiAgICAgZGVmIF9pbnN0
YWxsKHNlbGYsIHVybCwgdXJsX3N1YnBhdGg9Tm9uZSwgdGFyZ2V0X25hbWU9Tm9uZSk6CiAgICAg
ICAgIGluc3RhbGxlciA9IEF1dG9JbnN0YWxsZXIodGFyZ2V0X2Rpcj1fQVVUT0lOU1RBTExFRF9E
SVIpCiAgICAgICAgIGluc3RhbGxlci5pbnN0YWxsKHVybD11cmwsIHVybF9zdWJwYXRoPXVybF9z
dWJwYXRoLCB0YXJnZXRfbmFtZT10YXJnZXRfbmFtZSkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvdGhpcmRwYXJ0eS9fX2luaXRfX191bml0dGVzdC5weSBiL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvdGhpcmRwYXJ0eS9fX2luaXRfX191bml0dGVzdC5weQppbmRleCAyZDhjOGEw
ZGQ0MTI2Njk0NzI3MjM5MDJjYmMwZjBkYTk4ZDY4NjljLi5hODhmNjE4NTY3ZDNkMzJiNjE1YzU2
MGEzZDZiMDFjYWM3MDI5NmQyIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Ro
aXJkcGFydHkvX19pbml0X19fdW5pdHRlc3QucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS90aGlyZHBhcnR5L19faW5pdF9fX3VuaXR0ZXN0LnB5CkBAIC02MSw4ICs2MSw2IEBAIGNsYXNz
IFRoaXJkcGFydHlUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgaW1wb3J0IHdlYmtp
dHB5LnRoaXJkcGFydHkuYXV0b2luc3RhbGxlZC5idWlsZGJvdAogICAgICAgICBpbXBvcnQgd2Vi
a2l0cHkudGhpcmRwYXJ0eS5hdXRvaW5zdGFsbGVkLmNvdmVyYWdlCiAgICAgICAgIGltcG9ydCB3
ZWJraXRweS50aGlyZHBhcnR5LmF1dG9pbnN0YWxsZWQuZWxpemEKLSAgICAgICAgaW1wb3J0IHdl
YmtpdHB5LnRoaXJkcGFydHkuYXV0b2luc3RhbGxlZC5pcmMuaXJjYm90Ci0gICAgICAgIGltcG9y
dCB3ZWJraXRweS50aGlyZHBhcnR5LmF1dG9pbnN0YWxsZWQuaXJjLmlyY2xpYgogICAgICAgICBp
bXBvcnQgd2Via2l0cHkudGhpcmRwYXJ0eS5hdXRvaW5zdGFsbGVkLm1lY2hhbml6ZQogICAgICAg
ICBpbXBvcnQgd2Via2l0cHkudGhpcmRwYXJ0eS5hdXRvaW5zdGFsbGVkLnB5bGludAogICAgICAg
ICBpbXBvcnQgd2Via2l0cHkudGhpcmRwYXJ0eS5hdXRvaW5zdGFsbGVkLnBlcDgKZGlmZiAtLWdp
dCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGhpcmRwYXJ0eS9pcmMvX19pbml0X18ucHkgYi9U
b29scy9TY3JpcHRzL3dlYmtpdHB5L3RoaXJkcGFydHkvaXJjL19faW5pdF9fLnB5Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmVmNjViZWU1YmI3N2U5NmViYzdjZDljNDc2NDA2OTBmYmRhOGFjMTkKLS0tIC9kZXYvbnVs
bAorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3RoaXJkcGFydHkvaXJjL19faW5pdF9fLnB5
CkBAIC0wLDAgKzEgQEAKKyMgUmVxdWlyZWQgZm9yIFB5dGhvbiB0byBzZWFyY2ggdGhpcyBkaXJl
Y3RvcnkgZm9yIG1vZHVsZSBmaWxlcwpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS90aGlyZHBhcnR5L2lyYy9pcmNib3QucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3RoaXJk
cGFydHkvaXJjL2lyY2JvdC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZjI5YTY1MmM4M2NjNmM1MmMzMThhNGM4
MjQxYTE0YzA0MDliMmVhCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS90aGlyZHBhcnR5L2lyYy9pcmNib3QucHkKQEAgLTAsMCArMSw0MzggQEAKKyMgQ29weXJpZ2h0
IChDKSAxOTk5LS0yMDAyICBKb2VsIFJvc2RhaGwKKyMKKyMgVGhpcyBsaWJyYXJ5IGlzIGZyZWUg
c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorIyBtb2RpZnkgaXQgdW5k
ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisjIExpY2Vuc2Ug
YXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorIyB2
ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIg
dmVyc2lvbi4KKyMKKyMgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRo
YXQgaXQgd2lsbCBiZSB1c2VmdWwsCisjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91
dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisjIExlc3NlciBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisjCisjIFlvdSBzaG91bGQgaGF2
ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyMgTGlj
ZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBT
b2Z0d2FyZQorIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwg
Qm9zdG9uLCBNQSAwMjExMS0xMzA3ICBVU0EKKyMKKyMgSm9lbCBSb3NkYWhsIDxqb2VsQHJvc2Rh
aGwubmV0PgorIworIyAkSWQ6IGlyY2JvdC5weSx2IDEuMjMgMjAwOC8wOS8xMSAwNzozODozMCBr
ZWx0dXMgRXhwICQKKworIiIiaXJjYm90IC0tIFNpbXBsZSBJUkMgYm90IGxpYnJhcnkuCisKK1Ro
aXMgbW9kdWxlIGNvbnRhaW5zIGEgc2luZ2xlLXNlcnZlciBJUkMgYm90IGNsYXNzIHRoYXQgY2Fu
IGJlIHVzZWQgdG8KK3dyaXRlIHNpbXBsZXIgYm90cy4KKyIiIgorCitpbXBvcnQgc3lzCitmcm9t
IFVzZXJEaWN0IGltcG9ydCBVc2VyRGljdAorCitmcm9tIGlyY2xpYiBpbXBvcnQgU2ltcGxlSVJD
Q2xpZW50Citmcm9tIGlyY2xpYiBpbXBvcnQgbm1fdG9fbiwgaXJjX2xvd2VyLCBhbGxfZXZlbnRz
Citmcm9tIGlyY2xpYiBpbXBvcnQgcGFyc2VfY2hhbm5lbF9tb2RlcywgaXNfY2hhbm5lbAorZnJv
bSBpcmNsaWIgaW1wb3J0IFNlcnZlckNvbm5lY3Rpb25FcnJvcgorCitjbGFzcyBTaW5nbGVTZXJ2
ZXJJUkNCb3QoU2ltcGxlSVJDQ2xpZW50KToKKyAgICAiIiJBIHNpbmdsZS1zZXJ2ZXIgSVJDIGJv
dCBjbGFzcy4KKworICAgIFRoZSBib3QgdHJpZXMgdG8gcmVjb25uZWN0IGlmIGl0IGlzIGRpc2Nv
bm5lY3RlZC4KKworICAgIFRoZSBib3Qga2VlcHMgdHJhY2sgb2YgdGhlIGNoYW5uZWxzIGl0IGhh
cyBqb2luZWQsIHRoZSBvdGhlcgorICAgIGNsaWVudHMgdGhhdCBhcmUgcHJlc2VudCBpbiB0aGUg
Y2hhbm5lbHMgYW5kIHdoaWNoIG9mIHRob3NlIHRoYXQKKyAgICBoYXZlIG9wZXJhdG9yIG9yIHZv
aWNlIG1vZGVzLiAgVGhlICJkYXRhYmFzZSIgaXMga2VwdCBpbiB0aGUKKyAgICBzZWxmLmNoYW5u
ZWxzIGF0dHJpYnV0ZSwgd2hpY2ggaXMgYW4gSVJDRGljdCBvZiBDaGFubmVscy4KKyAgICAiIiIK
KyAgICBkZWYgX19pbml0X18oc2VsZiwgc2VydmVyX2xpc3QsIG5pY2tuYW1lLCByZWFsbmFtZSwg
cmVjb25uZWN0aW9uX2ludGVydmFsPTYwKToKKyAgICAgICAgIiIiQ29uc3RydWN0b3IgZm9yIFNp
bmdsZVNlcnZlcklSQ0JvdCBvYmplY3RzLgorCisgICAgICAgIEFyZ3VtZW50czoKKworICAgICAg
ICAgICAgc2VydmVyX2xpc3QgLS0gQSBsaXN0IG9mIHR1cGxlcyAoc2VydmVyLCBwb3J0KSB0aGF0
CisgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmVzIHdoaWNoIHNlcnZlcnMgdGhlIGJv
dCBzaG91bGQgdHJ5IHRvCisgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25uZWN0IHRvLgor
CisgICAgICAgICAgICBuaWNrbmFtZSAtLSBUaGUgYm90J3Mgbmlja25hbWUuCisKKyAgICAgICAg
ICAgIHJlYWxuYW1lIC0tIFRoZSBib3QncyByZWFsbmFtZS4KKworICAgICAgICAgICAgcmVjb25u
ZWN0aW9uX2ludGVydmFsIC0tIEhvdyBsb25nIHRoZSBib3Qgc2hvdWxkIHdhaXQKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZWZvcmUgdHJ5aW5nIHRvIHJlY29ubmVjdC4K
KworICAgICAgICAgICAgZGNjX2Nvbm5lY3Rpb25zIC0tIEEgbGlzdCBvZiBpbml0aWF0ZWQvYWNj
ZXB0ZWQgRENDCisgICAgICAgICAgICBjb25uZWN0aW9ucy4KKyAgICAgICAgIiIiCisKKyAgICAg
ICAgU2ltcGxlSVJDQ2xpZW50Ll9faW5pdF9fKHNlbGYpCisgICAgICAgIHNlbGYuY2hhbm5lbHMg
PSBJUkNEaWN0KCkKKyAgICAgICAgc2VsZi5zZXJ2ZXJfbGlzdCA9IHNlcnZlcl9saXN0CisgICAg
ICAgIGlmIG5vdCByZWNvbm5lY3Rpb25faW50ZXJ2YWwgb3IgcmVjb25uZWN0aW9uX2ludGVydmFs
IDwgMDoKKyAgICAgICAgICAgIHJlY29ubmVjdGlvbl9pbnRlcnZhbCA9IDIqKjMxCisgICAgICAg
IHNlbGYucmVjb25uZWN0aW9uX2ludGVydmFsID0gcmVjb25uZWN0aW9uX2ludGVydmFsCisKKyAg
ICAgICAgc2VsZi5fbmlja25hbWUgPSBuaWNrbmFtZQorICAgICAgICBzZWxmLl9yZWFsbmFtZSA9
IHJlYWxuYW1lCisgICAgICAgIGZvciBpIGluIFsiZGlzY29ubmVjdCIsICJqb2luIiwgImtpY2si
LCAibW9kZSIsCisgICAgICAgICAgICAgICAgICAibmFtcmVwbHkiLCAibmljayIsICJwYXJ0Iiwg
InF1aXQiXToKKyAgICAgICAgICAgIHNlbGYuY29ubmVjdGlvbi5hZGRfZ2xvYmFsX2hhbmRsZXIo
aSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0YXR0
cihzZWxmLCAiX29uXyIgKyBpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLTEwKQorICAgIGRlZiBfY29ubmVjdGVkX2NoZWNrZXIoc2VsZik6CisgICAg
ICAgICIiIltJbnRlcm5hbF0iIiIKKyAgICAgICAgaWYgbm90IHNlbGYuY29ubmVjdGlvbi5pc19j
b25uZWN0ZWQoKToKKyAgICAgICAgICAgIHNlbGYuY29ubmVjdGlvbi5leGVjdXRlX2RlbGF5ZWQo
c2VsZi5yZWNvbm5lY3Rpb25faW50ZXJ2YWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNlbGYuX2Nvbm5lY3RlZF9jaGVja2VyKQorICAgICAgICAgICAgc2Vs
Zi5qdW1wX3NlcnZlcigpCisKKyAgICBkZWYgX2Nvbm5lY3Qoc2VsZik6CisgICAgICAgICIiIltJ
bnRlcm5hbF0iIiIKKyAgICAgICAgcGFzc3dvcmQgPSBOb25lCisgICAgICAgIGlmIGxlbihzZWxm
LnNlcnZlcl9saXN0WzBdKSA+IDI6CisgICAgICAgICAgICBwYXNzd29yZCA9IHNlbGYuc2VydmVy
X2xpc3RbMF1bMl0KKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2VsZi5jb25uZWN0KHNlbGYu
c2VydmVyX2xpc3RbMF1bMF0sCisgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5zZXJ2ZXJf
bGlzdFswXVsxXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9uaWNrbmFtZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICBwYXNzd29yZCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICBpcmNuYW1lPXNlbGYuX3JlYWxuYW1lKQorICAgICAgICBleGNlcHQgU2VydmVyQ29ubmVjdGlv
bkVycm9yOgorICAgICAgICAgICAgcGFzcworCisgICAgZGVmIF9vbl9kaXNjb25uZWN0KHNlbGYs
IGMsIGUpOgorICAgICAgICAiIiJbSW50ZXJuYWxdIiIiCisgICAgICAgIHNlbGYuY2hhbm5lbHMg
PSBJUkNEaWN0KCkKKyAgICAgICAgc2VsZi5jb25uZWN0aW9uLmV4ZWN1dGVfZGVsYXllZChzZWxm
LnJlY29ubmVjdGlvbl9pbnRlcnZhbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzZWxmLl9jb25uZWN0ZWRfY2hlY2tlcikKKworICAgIGRlZiBfb25fam9pbihzZWxm
LCBjLCBlKToKKyAgICAgICAgIiIiW0ludGVybmFsXSIiIgorICAgICAgICBjaCA9IGUudGFyZ2V0
KCkKKyAgICAgICAgbmljayA9IG5tX3RvX24oZS5zb3VyY2UoKSkKKyAgICAgICAgaWYgbmljayA9
PSBjLmdldF9uaWNrbmFtZSgpOgorICAgICAgICAgICAgc2VsZi5jaGFubmVsc1tjaF0gPSBDaGFu
bmVsKCkKKyAgICAgICAgc2VsZi5jaGFubmVsc1tjaF0uYWRkX3VzZXIobmljaykKKworICAgIGRl
ZiBfb25fa2ljayhzZWxmLCBjLCBlKToKKyAgICAgICAgIiIiW0ludGVybmFsXSIiIgorICAgICAg
ICBuaWNrID0gZS5hcmd1bWVudHMoKVswXQorICAgICAgICBjaGFubmVsID0gZS50YXJnZXQoKQor
CisgICAgICAgIGlmIG5pY2sgPT0gYy5nZXRfbmlja25hbWUoKToKKyAgICAgICAgICAgIGRlbCBz
ZWxmLmNoYW5uZWxzW2NoYW5uZWxdCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmNo
YW5uZWxzW2NoYW5uZWxdLnJlbW92ZV91c2VyKG5pY2spCisKKyAgICBkZWYgX29uX21vZGUoc2Vs
ZiwgYywgZSk6CisgICAgICAgICIiIltJbnRlcm5hbF0iIiIKKyAgICAgICAgbW9kZXMgPSBwYXJz
ZV9jaGFubmVsX21vZGVzKCIgIi5qb2luKGUuYXJndW1lbnRzKCkpKQorICAgICAgICB0ID0gZS50
YXJnZXQoKQorICAgICAgICBpZiBpc19jaGFubmVsKHQpOgorICAgICAgICAgICAgY2ggPSBzZWxm
LmNoYW5uZWxzW3RdCisgICAgICAgICAgICBmb3IgbW9kZSBpbiBtb2RlczoKKyAgICAgICAgICAg
ICAgICBpZiBtb2RlWzBdID09ICIrIjoKKyAgICAgICAgICAgICAgICAgICAgZiA9IGNoLnNldF9t
b2RlCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgZiA9IGNoLmNs
ZWFyX21vZGUKKyAgICAgICAgICAgICAgICBmKG1vZGVbMV0sIG1vZGVbMl0pCisgICAgICAgIGVs
c2U6CisgICAgICAgICAgICAjIE1vZGUgb24gc2VsZi4uLiBYWFgKKyAgICAgICAgICAgIHBhc3MK
KworICAgIGRlZiBfb25fbmFtcmVwbHkoc2VsZiwgYywgZSk6CisgICAgICAgICIiIltJbnRlcm5h
bF0iIiIKKworICAgICAgICAjIGUuYXJndW1lbnRzKClbMF0gPT0gIkAiIGZvciBzZWNyZXQgY2hh
bm5lbHMsCisgICAgICAgICMgICAgICAgICAgICAgICAgICAgICAiKiIgZm9yIHByaXZhdGUgY2hh
bm5lbHMsCisgICAgICAgICMgICAgICAgICAgICAgICAgICAgICAiPSIgZm9yIG90aGVycyAocHVi
bGljIGNoYW5uZWxzKQorICAgICAgICAjIGUuYXJndW1lbnRzKClbMV0gPT0gY2hhbm5lbAorICAg
ICAgICAjIGUuYXJndW1lbnRzKClbMl0gPT0gbmljayBsaXN0CisKKyAgICAgICAgY2ggPSBlLmFy
Z3VtZW50cygpWzFdCisgICAgICAgIGZvciBuaWNrIGluIGUuYXJndW1lbnRzKClbMl0uc3BsaXQo
KToKKyAgICAgICAgICAgIGlmIG5pY2tbMF0gPT0gIkAiOgorICAgICAgICAgICAgICAgIG5pY2sg
PSBuaWNrWzE6XQorICAgICAgICAgICAgICAgIHNlbGYuY2hhbm5lbHNbY2hdLnNldF9tb2RlKCJv
IiwgbmljaykKKyAgICAgICAgICAgIGVsaWYgbmlja1swXSA9PSAiKyI6CisgICAgICAgICAgICAg
ICAgbmljayA9IG5pY2tbMTpdCisgICAgICAgICAgICAgICAgc2VsZi5jaGFubmVsc1tjaF0uc2V0
X21vZGUoInYiLCBuaWNrKQorICAgICAgICAgICAgc2VsZi5jaGFubmVsc1tjaF0uYWRkX3VzZXIo
bmljaykKKworICAgIGRlZiBfb25fbmljayhzZWxmLCBjLCBlKToKKyAgICAgICAgIiIiW0ludGVy
bmFsXSIiIgorICAgICAgICBiZWZvcmUgPSBubV90b19uKGUuc291cmNlKCkpCisgICAgICAgIGFm
dGVyID0gZS50YXJnZXQoKQorICAgICAgICBmb3IgY2ggaW4gc2VsZi5jaGFubmVscy52YWx1ZXMo
KToKKyAgICAgICAgICAgIGlmIGNoLmhhc191c2VyKGJlZm9yZSk6CisgICAgICAgICAgICAgICAg
Y2guY2hhbmdlX25pY2soYmVmb3JlLCBhZnRlcikKKworICAgIGRlZiBfb25fcGFydChzZWxmLCBj
LCBlKToKKyAgICAgICAgIiIiW0ludGVybmFsXSIiIgorICAgICAgICBuaWNrID0gbm1fdG9fbihl
LnNvdXJjZSgpKQorICAgICAgICBjaGFubmVsID0gZS50YXJnZXQoKQorCisgICAgICAgIGlmIG5p
Y2sgPT0gYy5nZXRfbmlja25hbWUoKToKKyAgICAgICAgICAgIGRlbCBzZWxmLmNoYW5uZWxzW2No
YW5uZWxdCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmNoYW5uZWxzW2NoYW5uZWxd
LnJlbW92ZV91c2VyKG5pY2spCisKKyAgICBkZWYgX29uX3F1aXQoc2VsZiwgYywgZSk6CisgICAg
ICAgICIiIltJbnRlcm5hbF0iIiIKKyAgICAgICAgbmljayA9IG5tX3RvX24oZS5zb3VyY2UoKSkK
KyAgICAgICAgZm9yIGNoIGluIHNlbGYuY2hhbm5lbHMudmFsdWVzKCk6CisgICAgICAgICAgICBp
ZiBjaC5oYXNfdXNlcihuaWNrKToKKyAgICAgICAgICAgICAgICBjaC5yZW1vdmVfdXNlcihuaWNr
KQorCisgICAgZGVmIGRpZShzZWxmLCBtc2c9IkJ5ZSwgY3J1ZWwgd29ybGQhIik6CisgICAgICAg
ICIiIkxldCB0aGUgYm90IGRpZS4KKworICAgICAgICBBcmd1bWVudHM6CisKKyAgICAgICAgICAg
IG1zZyAtLSBRdWl0IG1lc3NhZ2UuCisgICAgICAgICIiIgorCisgICAgICAgIHNlbGYuY29ubmVj
dGlvbi5kaXNjb25uZWN0KG1zZykKKyAgICAgICAgc3lzLmV4aXQoMCkKKworICAgIGRlZiBkaXNj
b25uZWN0KHNlbGYsIG1zZz0iSSdsbCBiZSBiYWNrISIpOgorICAgICAgICAiIiJEaXNjb25uZWN0
IHRoZSBib3QuCisKKyAgICAgICAgVGhlIGJvdCB3aWxsIHRyeSB0byByZWNvbm5lY3QgYWZ0ZXIg
YSB3aGlsZS4KKworICAgICAgICBBcmd1bWVudHM6CisKKyAgICAgICAgICAgIG1zZyAtLSBRdWl0
IG1lc3NhZ2UuCisgICAgICAgICIiIgorICAgICAgICBzZWxmLmNvbm5lY3Rpb24uZGlzY29ubmVj
dChtc2cpCisKKyAgICBkZWYgZ2V0X3ZlcnNpb24oc2VsZik6CisgICAgICAgICIiIlJldHVybnMg
dGhlIGJvdCB2ZXJzaW9uLgorCisgICAgICAgIFVzZWQgd2hlbiBhbnN3ZXJpbmcgYSBDVENQIFZF
UlNJT04gcmVxdWVzdC4KKyAgICAgICAgIiIiCisgICAgICAgIHJldHVybiAiaXJjYm90LnB5IGJ5
IEpvZWwgUm9zZGFobCA8am9lbEByb3NkYWhsLm5ldD4iCisKKyAgICBkZWYganVtcF9zZXJ2ZXIo
c2VsZiwgbXNnPSJDaGFuZ2luZyBzZXJ2ZXJzIik6CisgICAgICAgICIiIkNvbm5lY3QgdG8gYSBu
ZXcgc2VydmVyLCBwb3NzaWJseSBkaXNjb25uZWN0aW5nIGZyb20gdGhlIGN1cnJlbnQuCisKKyAg
ICAgICAgVGhlIGJvdCB3aWxsIHNraXAgdG8gbmV4dCBzZXJ2ZXIgaW4gdGhlIHNlcnZlcl9saXN0
IGVhY2ggdGltZQorICAgICAgICBqdW1wX3NlcnZlciBpcyBjYWxsZWQuCisgICAgICAgICIiIgor
ICAgICAgICBpZiBzZWxmLmNvbm5lY3Rpb24uaXNfY29ubmVjdGVkKCk6CisgICAgICAgICAgICBz
ZWxmLmNvbm5lY3Rpb24uZGlzY29ubmVjdChtc2cpCisKKyAgICAgICAgc2VsZi5zZXJ2ZXJfbGlz
dC5hcHBlbmQoc2VsZi5zZXJ2ZXJfbGlzdC5wb3AoMCkpCisgICAgICAgIHNlbGYuX2Nvbm5lY3Qo
KQorCisgICAgZGVmIG9uX2N0Y3Aoc2VsZiwgYywgZSk6CisgICAgICAgICIiIkRlZmF1bHQgaGFu
ZGxlciBmb3IgY3RjcCBldmVudHMuCisKKyAgICAgICAgUmVwbGllcyB0byBWRVJTSU9OIGFuZCBQ
SU5HIHJlcXVlc3RzIGFuZCByZWxheXMgRENDIHJlcXVlc3RzCisgICAgICAgIHRvIHRoZSBvbl9k
Y2NjaGF0IG1ldGhvZC4KKyAgICAgICAgIiIiCisgICAgICAgIGlmIGUuYXJndW1lbnRzKClbMF0g
PT0gIlZFUlNJT04iOgorICAgICAgICAgICAgYy5jdGNwX3JlcGx5KG5tX3RvX24oZS5zb3VyY2Uo
KSksCisgICAgICAgICAgICAgICAgICAgICAgICAgIlZFUlNJT04gIiArIHNlbGYuZ2V0X3ZlcnNp
b24oKSkKKyAgICAgICAgZWxpZiBlLmFyZ3VtZW50cygpWzBdID09ICJQSU5HIjoKKyAgICAgICAg
ICAgIGlmIGxlbihlLmFyZ3VtZW50cygpKSA+IDE6CisgICAgICAgICAgICAgICAgYy5jdGNwX3Jl
cGx5KG5tX3RvX24oZS5zb3VyY2UoKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJQ
SU5HICIgKyBlLmFyZ3VtZW50cygpWzFdKQorICAgICAgICBlbGlmIGUuYXJndW1lbnRzKClbMF0g
PT0gIkRDQyIgYW5kIGUuYXJndW1lbnRzKClbMV0uc3BsaXQoIiAiLCAxKVswXSA9PSAiQ0hBVCI6
CisgICAgICAgICAgICBzZWxmLm9uX2RjY2NoYXQoYywgZSkKKworICAgIGRlZiBvbl9kY2NjaGF0
KHNlbGYsIGMsIGUpOgorICAgICAgICBwYXNzCisKKyAgICBkZWYgc3RhcnQoc2VsZik6CisgICAg
ICAgICIiIlN0YXJ0IHRoZSBib3QuIiIiCisgICAgICAgIHNlbGYuX2Nvbm5lY3QoKQorICAgICAg
ICBTaW1wbGVJUkNDbGllbnQuc3RhcnQoc2VsZikKKworCitjbGFzcyBJUkNEaWN0OgorICAgICIi
IkEgZGljdGlvbmFyeSBzdWl0YWJsZSBmb3Igc3RvcmluZyBJUkMtcmVsYXRlZCB0aGluZ3MuCisK
KyAgICBEaWN0aW9uYXJ5IGtleXMgYSBhbmQgYiBhcmUgY29uc2lkZXJlZCBlcXVhbCBpZiBhbmQg
b25seSBpZgorICAgIGlyY19sb3dlcihhKSA9PSBpcmNfbG93ZXIoYikKKworICAgIE90aGVyd2lz
ZSwgaXQgc2hvdWxkIGJlaGF2ZSBleGFjdGx5IGFzIGEgbm9ybWFsIGRpY3Rpb25hcnkuCisgICAg
IiIiCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgZGljdD1Ob25lKToKKyAgICAgICAgc2VsZi5k
YXRhID0ge30KKyAgICAgICAgc2VsZi5jYW5vbl9rZXlzID0ge30gICMgQ2Fub25pY2FsIGtleXMK
KyAgICAgICAgaWYgZGljdCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHNlbGYudXBkYXRlKGRp
Y3QpCisgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gcmVwcihzZWxmLmRh
dGEpCisgICAgZGVmIF9fY21wX18oc2VsZiwgZGljdCk6CisgICAgICAgIGlmIGlzaW5zdGFuY2Uo
ZGljdCwgSVJDRGljdCk6CisgICAgICAgICAgICByZXR1cm4gY21wKHNlbGYuZGF0YSwgZGljdC5k
YXRhKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmV0dXJuIGNtcChzZWxmLmRhdGEsIGRp
Y3QpCisgICAgZGVmIF9fbGVuX18oc2VsZik6CisgICAgICAgIHJldHVybiBsZW4oc2VsZi5kYXRh
KQorICAgIGRlZiBfX2dldGl0ZW1fXyhzZWxmLCBrZXkpOgorICAgICAgICByZXR1cm4gc2VsZi5k
YXRhW3NlbGYuY2Fub25fa2V5c1tpcmNfbG93ZXIoa2V5KV1dCisgICAgZGVmIF9fc2V0aXRlbV9f
KHNlbGYsIGtleSwgaXRlbSk6CisgICAgICAgIGlmIGtleSBpbiBzZWxmOgorICAgICAgICAgICAg
ZGVsIHNlbGZba2V5XQorICAgICAgICBzZWxmLmRhdGFba2V5XSA9IGl0ZW0KKyAgICAgICAgc2Vs
Zi5jYW5vbl9rZXlzW2lyY19sb3dlcihrZXkpXSA9IGtleQorICAgIGRlZiBfX2RlbGl0ZW1fXyhz
ZWxmLCBrZXkpOgorICAgICAgICBjayA9IGlyY19sb3dlcihrZXkpCisgICAgICAgIGRlbCBzZWxm
LmRhdGFbc2VsZi5jYW5vbl9rZXlzW2NrXV0KKyAgICAgICAgZGVsIHNlbGYuY2Fub25fa2V5c1tj
a10KKyAgICBkZWYgX19pdGVyX18oc2VsZik6CisgICAgICAgIHJldHVybiBpdGVyKHNlbGYuZGF0
YSkKKyAgICBkZWYgX19jb250YWluc19fKHNlbGYsIGtleSk6CisgICAgICAgIHJldHVybiBzZWxm
Lmhhc19rZXkoa2V5KQorICAgIGRlZiBjbGVhcihzZWxmKToKKyAgICAgICAgc2VsZi5kYXRhLmNs
ZWFyKCkKKyAgICAgICAgc2VsZi5jYW5vbl9rZXlzLmNsZWFyKCkKKyAgICBkZWYgY29weShzZWxm
KToKKyAgICAgICAgaWYgc2VsZi5fX2NsYXNzX18gaXMgVXNlckRpY3Q6CisgICAgICAgICAgICBy
ZXR1cm4gVXNlckRpY3Qoc2VsZi5kYXRhKQorICAgICAgICBpbXBvcnQgY29weQorICAgICAgICBy
ZXR1cm4gY29weS5jb3B5KHNlbGYpCisgICAgZGVmIGtleXMoc2VsZik6CisgICAgICAgIHJldHVy
biBzZWxmLmRhdGEua2V5cygpCisgICAgZGVmIGl0ZW1zKHNlbGYpOgorICAgICAgICByZXR1cm4g
c2VsZi5kYXRhLml0ZW1zKCkKKyAgICBkZWYgdmFsdWVzKHNlbGYpOgorICAgICAgICByZXR1cm4g
c2VsZi5kYXRhLnZhbHVlcygpCisgICAgZGVmIGhhc19rZXkoc2VsZiwga2V5KToKKyAgICAgICAg
cmV0dXJuIGlyY19sb3dlcihrZXkpIGluIHNlbGYuY2Fub25fa2V5cworICAgIGRlZiB1cGRhdGUo
c2VsZiwgZGljdCk6CisgICAgICAgIGZvciBrLCB2IGluIGRpY3QuaXRlbXMoKToKKyAgICAgICAg
ICAgIHNlbGYuZGF0YVtrXSA9IHYKKyAgICBkZWYgZ2V0KHNlbGYsIGtleSwgZmFpbG9iaj1Ob25l
KToKKyAgICAgICAgcmV0dXJuIHNlbGYuZGF0YS5nZXQoa2V5LCBmYWlsb2JqKQorCisKK2NsYXNz
IENoYW5uZWw6CisgICAgIiIiQSBjbGFzcyBmb3Iga2VlcGluZyBpbmZvcm1hdGlvbiBhYm91dCBh
biBJUkMgY2hhbm5lbC4KKworICAgIFRoaXMgY2xhc3MgY2FuIGJlIGltcHJvdmVkIGEgbG90Lgor
ICAgICIiIgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYpOgorICAgICAgICBzZWxmLnVzZXJkaWN0
ID0gSVJDRGljdCgpCisgICAgICAgIHNlbGYub3BlcmRpY3QgPSBJUkNEaWN0KCkKKyAgICAgICAg
c2VsZi52b2ljZWRkaWN0ID0gSVJDRGljdCgpCisgICAgICAgIHNlbGYubW9kZXMgPSB7fQorCisg
ICAgZGVmIHVzZXJzKHNlbGYpOgorICAgICAgICAiIiJSZXR1cm5zIGFuIHVuc29ydGVkIGxpc3Qg
b2YgdGhlIGNoYW5uZWwncyB1c2Vycy4iIiIKKyAgICAgICAgcmV0dXJuIHNlbGYudXNlcmRpY3Qu
a2V5cygpCisKKyAgICBkZWYgb3BlcnMoc2VsZik6CisgICAgICAgICIiIlJldHVybnMgYW4gdW5z
b3J0ZWQgbGlzdCBvZiB0aGUgY2hhbm5lbCdzIG9wZXJhdG9ycy4iIiIKKyAgICAgICAgcmV0dXJu
IHNlbGYub3BlcmRpY3Qua2V5cygpCisKKyAgICBkZWYgdm9pY2VkKHNlbGYpOgorICAgICAgICAi
IiJSZXR1cm5zIGFuIHVuc29ydGVkIGxpc3Qgb2YgdGhlIHBlcnNvbnMgdGhhdCBoYXZlIHZvaWNl
CisgICAgICAgIG1vZGUgc2V0IGluIHRoZSBjaGFubmVsLiIiIgorICAgICAgICByZXR1cm4gc2Vs
Zi52b2ljZWRkaWN0LmtleXMoKQorCisgICAgZGVmIGhhc191c2VyKHNlbGYsIG5pY2spOgorICAg
ICAgICAiIiJDaGVjayB3aGV0aGVyIHRoZSBjaGFubmVsIGhhcyBhIHVzZXIuIiIiCisgICAgICAg
IHJldHVybiBuaWNrIGluIHNlbGYudXNlcmRpY3QKKworICAgIGRlZiBpc19vcGVyKHNlbGYsIG5p
Y2spOgorICAgICAgICAiIiJDaGVjayB3aGV0aGVyIGEgdXNlciBoYXMgb3BlcmF0b3Igc3RhdHVz
IGluIHRoZSBjaGFubmVsLiIiIgorICAgICAgICByZXR1cm4gbmljayBpbiBzZWxmLm9wZXJkaWN0
CisKKyAgICBkZWYgaXNfdm9pY2VkKHNlbGYsIG5pY2spOgorICAgICAgICAiIiJDaGVjayB3aGV0
aGVyIGEgdXNlciBoYXMgdm9pY2UgbW9kZSBzZXQgaW4gdGhlIGNoYW5uZWwuIiIiCisgICAgICAg
IHJldHVybiBuaWNrIGluIHNlbGYudm9pY2VkZGljdAorCisgICAgZGVmIGFkZF91c2VyKHNlbGYs
IG5pY2spOgorICAgICAgICBzZWxmLnVzZXJkaWN0W25pY2tdID0gMQorCisgICAgZGVmIHJlbW92
ZV91c2VyKHNlbGYsIG5pY2spOgorICAgICAgICBmb3IgZCBpbiBzZWxmLnVzZXJkaWN0LCBzZWxm
Lm9wZXJkaWN0LCBzZWxmLnZvaWNlZGRpY3Q6CisgICAgICAgICAgICBpZiBuaWNrIGluIGQ6Cisg
ICAgICAgICAgICAgICAgZGVsIGRbbmlja10KKworICAgIGRlZiBjaGFuZ2VfbmljayhzZWxmLCBi
ZWZvcmUsIGFmdGVyKToKKyAgICAgICAgc2VsZi51c2VyZGljdFthZnRlcl0gPSAxCisgICAgICAg
IGRlbCBzZWxmLnVzZXJkaWN0W2JlZm9yZV0KKyAgICAgICAgaWYgYmVmb3JlIGluIHNlbGYub3Bl
cmRpY3Q6CisgICAgICAgICAgICBzZWxmLm9wZXJkaWN0W2FmdGVyXSA9IDEKKyAgICAgICAgICAg
IGRlbCBzZWxmLm9wZXJkaWN0W2JlZm9yZV0KKyAgICAgICAgaWYgYmVmb3JlIGluIHNlbGYudm9p
Y2VkZGljdDoKKyAgICAgICAgICAgIHNlbGYudm9pY2VkZGljdFthZnRlcl0gPSAxCisgICAgICAg
ICAgICBkZWwgc2VsZi52b2ljZWRkaWN0W2JlZm9yZV0KKworICAgIGRlZiBzZXRfbW9kZShzZWxm
LCBtb2RlLCB2YWx1ZT1Ob25lKToKKyAgICAgICAgIiIiU2V0IG1vZGUgb24gdGhlIGNoYW5uZWwu
CisKKyAgICAgICAgQXJndW1lbnRzOgorCisgICAgICAgICAgICBtb2RlIC0tIFRoZSBtb2RlIChh
IHNpbmdsZS1jaGFyYWN0ZXIgc3RyaW5nKS4KKworICAgICAgICAgICAgdmFsdWUgLS0gVmFsdWUK
KyAgICAgICAgIiIiCisgICAgICAgIGlmIG1vZGUgPT0gIm8iOgorICAgICAgICAgICAgc2VsZi5v
cGVyZGljdFt2YWx1ZV0gPSAxCisgICAgICAgIGVsaWYgbW9kZSA9PSAidiI6CisgICAgICAgICAg
ICBzZWxmLnZvaWNlZGRpY3RbdmFsdWVdID0gMQorICAgICAgICBlbHNlOgorICAgICAgICAgICAg
c2VsZi5tb2Rlc1ttb2RlXSA9IHZhbHVlCisKKyAgICBkZWYgY2xlYXJfbW9kZShzZWxmLCBtb2Rl
LCB2YWx1ZT1Ob25lKToKKyAgICAgICAgIiIiQ2xlYXIgbW9kZSBvbiB0aGUgY2hhbm5lbC4KKwor
ICAgICAgICBBcmd1bWVudHM6CisKKyAgICAgICAgICAgIG1vZGUgLS0gVGhlIG1vZGUgKGEgc2lu
Z2xlLWNoYXJhY3RlciBzdHJpbmcpLgorCisgICAgICAgICAgICB2YWx1ZSAtLSBWYWx1ZQorICAg
ICAgICAiIiIKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgaWYgbW9kZSA9PSAibyI6CisgICAg
ICAgICAgICAgICAgZGVsIHNlbGYub3BlcmRpY3RbdmFsdWVdCisgICAgICAgICAgICBlbGlmIG1v
ZGUgPT0gInYiOgorICAgICAgICAgICAgICAgIGRlbCBzZWxmLnZvaWNlZGRpY3RbdmFsdWVdCisg
ICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGRlbCBzZWxmLm1vZGVzW21vZGVdCisg
ICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKKyAgICAgICAgICAgIHBhc3MKKworICAgIGRlZiBoYXNf
bW9kZShzZWxmLCBtb2RlKToKKyAgICAgICAgcmV0dXJuIG1vZGUgaW4gc2VsZi5tb2RlcworCisg
ICAgZGVmIGlzX21vZGVyYXRlZChzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuaGFzX21vZGUo
Im0iKQorCisgICAgZGVmIGlzX3NlY3JldChzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuaGFz
X21vZGUoInMiKQorCisgICAgZGVmIGlzX3Byb3RlY3RlZChzZWxmKToKKyAgICAgICAgcmV0dXJu
IHNlbGYuaGFzX21vZGUoInAiKQorCisgICAgZGVmIGhhc190b3BpY19sb2NrKHNlbGYpOgorICAg
ICAgICByZXR1cm4gc2VsZi5oYXNfbW9kZSgidCIpCisKKyAgICBkZWYgaXNfaW52aXRlX29ubHko
c2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLmhhc19tb2RlKCJpIikKKworICAgIGRlZiBoYXNf
YWxsb3dfZXh0ZXJuYWxfbWVzc2FnZXMoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLmhhc19t
b2RlKCJuIikKKworICAgIGRlZiBoYXNfbGltaXQoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxm
Lmhhc19tb2RlKCJsIikKKworICAgIGRlZiBsaW1pdChzZWxmKToKKyAgICAgICAgaWYgc2VsZi5o
YXNfbGltaXQoKToKKyAgICAgICAgICAgIHJldHVybiBzZWxmLm1vZGVzW2xdCisgICAgICAgIGVs
c2U6CisgICAgICAgICAgICByZXR1cm4gTm9uZQorCisgICAgZGVmIGhhc19rZXkoc2VsZik6Cisg
ICAgICAgIHJldHVybiBzZWxmLmhhc19tb2RlKCJrIikKKworICAgIGRlZiBrZXkoc2VsZik6Cisg
ICAgICAgIGlmIHNlbGYuaGFzX2tleSgpOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYubW9kZXNb
ImsiXQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmV0dXJuIE5vbmUKZGlmZiAtLWdpdCBh
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGhpcmRwYXJ0eS9pcmMvaXJjbGliLnB5IGIvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS90aGlyZHBhcnR5L2lyYy9pcmNsaWIucHkKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWY3
MTQxYzRlODhlMjc2NjgyODEyZDNjZjQ1ODVkMmZiZDIzYTczZAotLS0gL2Rldi9udWxsCisrKyBi
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGhpcmRwYXJ0eS9pcmMvaXJjbGliLnB5CkBAIC0wLDAg
KzEsMTU2MCBAQAorIyBDb3B5cmlnaHQgKEMpIDE5OTktLTIwMDIgIEpvZWwgUm9zZGFobAorIwor
IyBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yCisjIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2Vu
ZXJhbCBQdWJsaWMKKyMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbjsgZWl0aGVyCisjIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQg
eW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorIworIyBUaGlzIGxpYnJhcnkgaXMgZGlz
dHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyMgYnV0IFdJVEhP
VVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyMg
TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl
IHRoZSBHTlUKKyMgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWls
cy4KKyMKKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3Nl
ciBHZW5lcmFsIFB1YmxpYworIyBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBu
b3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisjIEZvdW5kYXRpb24sIEluYy4sIDU5IFRl
bXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgIFVTQQorIworIyBr
ZWx0dXMgPGtlbHR1c0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisjCisjICRJZDogaXJjbGliLnB5
LHYgMS40NyAyMDA4LzA5LzI1IDIyOjAwOjU5IGtlbHR1cyBFeHAgJAorCisiIiJpcmNsaWIgLS0g
SW50ZXJuZXQgUmVsYXkgQ2hhdCAoSVJDKSBwcm90b2NvbCBjbGllbnQgbGlicmFyeS4KKworVGhp
cyBsaWJyYXJ5IGlzIGludGVuZGVkIHRvIGVuY2Fwc3VsYXRlIHRoZSBJUkMgcHJvdG9jb2wgYXQg
YSBxdWl0ZQorbG93IGxldmVsLiAgSXQgcHJvdmlkZXMgYW4gZXZlbnQtZHJpdmVuIElSQyBjbGll
bnQgZnJhbWV3b3JrLiAgSXQgaGFzCithIGZhaXJseSB0aG9yb3VnaCBzdXBwb3J0IGZvciB0aGUg
YmFzaWMgSVJDIHByb3RvY29sLCBDVENQLCBEQ0MgY2hhdCwKK2J1dCBEQ0MgZmlsZSB0cmFuc2Zl
cnMgaXMgbm90IHlldCBzdXBwb3J0ZWQuCisKK0luIG9yZGVyIHRvIHVuZGVyc3RhbmQgaG93IHRv
IG1ha2UgYW4gSVJDIGNsaWVudCwgSSdtIGFmcmFpZCB5b3UgbW9yZQorb3IgbGVzcyBtdXN0IHVu
ZGVyc3RhbmQgdGhlIElSQyBzcGVjaWZpY2F0aW9ucy4gIFRoZXkgYXJlIGF2YWlsYWJsZQoraGVy
ZTogW0lSQyBzcGVjaWZpY2F0aW9uc10uCisKK1RoZSBtYWluIGZlYXR1cmVzIG9mIHRoZSBJUkMg
Y2xpZW50IGZyYW1ld29yayBhcmU6CisKKyAgKiBBYnN0cmFjdGlvbiBvZiB0aGUgSVJDIHByb3Rv
Y29sLgorICAqIEhhbmRsZXMgbXVsdGlwbGUgc2ltdWx0YW5lb3VzIElSQyBzZXJ2ZXIgY29ubmVj
dGlvbnMuCisgICogSGFuZGxlcyBzZXJ2ZXIgUE9OR2luZyB0cmFuc3BhcmVudGx5LgorICAqIE1l
c3NhZ2VzIHRvIHRoZSBJUkMgc2VydmVyIGFyZSBkb25lIGJ5IGNhbGxpbmcgbWV0aG9kcyBvbiBh
biBJUkMKKyAgICBjb25uZWN0aW9uIG9iamVjdC4KKyAgKiBNZXNzYWdlcyBmcm9tIGFuIElSQyBz
ZXJ2ZXIgdHJpZ2dlcnMgZXZlbnRzLCB3aGljaCBjYW4gYmUgY2F1Z2h0CisgICAgYnkgZXZlbnQg
aGFuZGxlcnMuCisgICogUmVhZGluZyBmcm9tIGFuZCB3cml0aW5nIHRvIElSQyBzZXJ2ZXIgc29j
a2V0cyBhcmUgbm9ybWFsbHkgZG9uZQorICAgIGJ5IGFuIGludGVybmFsIHNlbGVjdCgpIGxvb3As
IGJ1dCB0aGUgc2VsZWN0KClpbmcgbWF5IGJlIGRvbmUgYnkKKyAgICBhbiBleHRlcm5hbCBtYWlu
IGxvb3AuCisgICogRnVuY3Rpb25zIGNhbiBiZSByZWdpc3RlcmVkIHRvIGV4ZWN1dGUgYXQgc3Bl
Y2lmaWVkIHRpbWVzIGJ5IHRoZQorICAgIGV2ZW50LWxvb3AuCisgICogRGVjb2RlcyBDVENQIHRh
Z2dpbmcgY29ycmVjdGx5IChob3BlZnVsbHkpOyBJIGhhdmVuJ3Qgc2VlbiBhbnkKKyAgICBvdGhl
ciBJUkMgY2xpZW50IGltcGxlbWVudGF0aW9uIHRoYXQgaGFuZGxlcyB0aGUgQ1RDUAorICAgIHNw
ZWNpZmljYXRpb24gc3VidGlsdGllcy4KKyAgKiBBIGtpbmQgb2Ygc2ltcGxlLCBzaW5nbGUtc2Vy
dmVyLCBvYmplY3Qtb3JpZW50ZWQgSVJDIGNsaWVudCBjbGFzcworICAgIHRoYXQgZGlzcGF0Y2hl
cyBldmVudHMgdG8gaW5zdGFuY2UgbWV0aG9kcyBpcyBpbmNsdWRlZC4KKworQ3VycmVudCBsaW1p
dGF0aW9uczoKKworICAqIFRoZSBJUkMgcHJvdG9jb2wgc2hpbmVzIHRocm91Z2ggdGhlIGFic3Ry
YWN0aW9uIGEgYml0IHRvbyBtdWNoLgorICAqIERhdGEgaXMgbm90IHdyaXR0ZW4gYXN5bmNocm9u
b3VzbHkgdG8gdGhlIHNlcnZlciwgaS5lLiB0aGUgd3JpdGUoKQorICAgIG1heSBibG9jayBpZiB0
aGUgVENQIGJ1ZmZlcnMgYXJlIHN0dWZmZWQuCisgICogVGhlcmUgYXJlIG5vIHN1cHBvcnQgZm9y
IERDQyBmaWxlIHRyYW5zZmVycy4KKyAgKiBUaGUgYXV0aG9yIGhhdmVuJ3QgZXZlbiByZWFkIFJG
QyAyODEwLCAyODExLCAyODEyIGFuZCAyODEzLgorICAqIExpa2UgbW9zdCBwcm9qZWN0cywgZG9j
dW1lbnRhdGlvbiBpcyBsYWNraW5nLi4uCisKKy4uIFtJUkMgc3BlY2lmaWNhdGlvbnNdIGh0dHA6
Ly93d3cuaXJjaGVscC5vcmcvaXJjaGVscC9yZmMvCisiIiIKKworaW1wb3J0IGJpc2VjdAoraW1w
b3J0IHJlCitpbXBvcnQgc2VsZWN0CitpbXBvcnQgc29ja2V0CitpbXBvcnQgc3RyaW5nCitpbXBv
cnQgc3lzCitpbXBvcnQgdGltZQoraW1wb3J0IHR5cGVzCisKK1ZFUlNJT04gPSAwLCA0LCA4CitE
RUJVRyA9IDAKKworIyBUT0RPCisjIC0tLS0KKyMgKG1heWJlKSB0aHJlYWQgc2FmZXR5CisjICht
YXliZSkgY29sb3IgcGFyc2VyIGNvbnZlbmllbmNlIGZ1bmN0aW9ucworIyBkb2N1bWVudGF0aW9u
IChpbmNsdWRpbmcgYWxsIGV2ZW50IHR5cGVzKQorIyAobWF5YmUpIGFkZCBhd2FyZW5lc3Mgb2Yg
ZGlmZmVyZW50IHR5cGVzIG9mIGlyY2RzCisjIHNlbmQgZGF0YSBhc3luY2hyb25vdXNseSB0byB0
aGUgc2VydmVyIChhbmQgRENDIGNvbm5lY3Rpb25zKQorIyAobWF5YmUpIGF1dG9tYXRpY2FsbHkg
Y2xvc2UgdW51c2VkLCBwYXNzaXZlIERDQyBjb25uZWN0aW9ucyBhZnRlciBhIHdoaWxlCisKKyMg
Tk9URVMKKyMgLS0tLS0KKyMgY29ubmVjdGlvbi5xdWl0KCkgb25seSBzZW5kcyBRVUlUIHRvIHRo
ZSBzZXJ2ZXIuCisjIEVSUk9SIGZyb20gdGhlIHNlcnZlciB0cmlnZ2VycyB0aGUgZXJyb3IgZXZl
bnQgYW5kIHRoZSBkaXNjb25uZWN0IGV2ZW50LgorIyBkcm9wcGluZyBvZiB0aGUgY29ubmVjdGlv
biB0cmlnZ2VycyB0aGUgZGlzY29ubmVjdCBldmVudC4KKworY2xhc3MgSVJDRXJyb3IoRXhjZXB0
aW9uKToKKyAgICAiIiJSZXByZXNlbnRzIGFuIElSQyBleGNlcHRpb24uIiIiCisgICAgcGFzcwor
CisKK2NsYXNzIElSQzoKKyAgICAiIiJDbGFzcyB0aGF0IGhhbmRsZXMgb25lIG9yIHNldmVyYWwg
SVJDIHNlcnZlciBjb25uZWN0aW9ucy4KKworICAgIFdoZW4gYW4gSVJDIG9iamVjdCBoYXMgYmVl
biBpbnN0YW50aWF0ZWQsIGl0IGNhbiBiZSB1c2VkIHRvIGNyZWF0ZQorICAgIENvbm5lY3Rpb24g
b2JqZWN0cyB0aGF0IHJlcHJlc2VudCB0aGUgSVJDIGNvbm5lY3Rpb25zLiAgVGhlCisgICAgcmVz
cG9uc2liaWxpdHkgb2YgdGhlIElSQyBvYmplY3QgaXMgdG8gcHJvdmlkZSBhbiBldmVudC1kcml2
ZW4KKyAgICBmcmFtZXdvcmsgZm9yIHRoZSBjb25uZWN0aW9ucyBhbmQgdG8ga2VlcCB0aGUgY29u
bmVjdGlvbnMgYWxpdmUuCisgICAgSXQgcnVucyBhIHNlbGVjdCBsb29wIHRvIHBvbGwgZWFjaCBj
b25uZWN0aW9uJ3MgVENQIHNvY2tldCBhbmQKKyAgICBoYW5kcyBvdmVyIHRoZSBzb2NrZXRzIHdp
dGggaW5jb21pbmcgZGF0YSBmb3IgcHJvY2Vzc2luZyBieSB0aGUKKyAgICBjb3JyZXNwb25kaW5n
IGNvbm5lY3Rpb24uCisKKyAgICBUaGUgbWV0aG9kcyBvZiBtb3N0IGludGVyZXN0IGZvciBhbiBJ
UkMgY2xpZW50IHdyaXRlciBhcmUgc2VydmVyLAorICAgIGFkZF9nbG9iYWxfaGFuZGxlciwgcmVt
b3ZlX2dsb2JhbF9oYW5kbGVyLCBleGVjdXRlX2F0LAorICAgIGV4ZWN1dGVfZGVsYXllZCwgcHJv
Y2Vzc19vbmNlIGFuZCBwcm9jZXNzX2ZvcmV2ZXIuCisKKyAgICBIZXJlIGlzIGFuIGV4YW1wbGU6
CisKKyAgICAgICAgaXJjID0gaXJjbGliLklSQygpCisgICAgICAgIHNlcnZlciA9IGlyYy5zZXJ2
ZXIoKQorICAgICAgICBzZXJ2ZXIuY29ubmVjdChcImlyYy5zb21lLndoZXJlXCIsIDY2NjcsIFwi
bXlfbmlja25hbWVcIikKKyAgICAgICAgc2VydmVyLnByaXZtc2coXCJhX25pY2tuYW1lXCIsIFwi
SGkgdGhlcmUhXCIpCisgICAgICAgIGlyYy5wcm9jZXNzX2ZvcmV2ZXIoKQorCisgICAgVGhpcyB3
aWxsIGNvbm5lY3QgdG8gdGhlIElSQyBzZXJ2ZXIgaXJjLnNvbWUud2hlcmUgb24gcG9ydCA2NjY3
CisgICAgdXNpbmcgdGhlIG5pY2tuYW1lIG15X25pY2tuYW1lIGFuZCBzZW5kIHRoZSBtZXNzYWdl
IFwiSGkgdGhlcmUhXCIKKyAgICB0byB0aGUgbmlja25hbWUgYV9uaWNrbmFtZS4KKyAgICAiIiIK
KworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmbl90b19hZGRfc29ja2V0PU5vbmUsCisgICAgICAg
ICAgICAgICAgIGZuX3RvX3JlbW92ZV9zb2NrZXQ9Tm9uZSwKKyAgICAgICAgICAgICAgICAgZm5f
dG9fYWRkX3RpbWVvdXQ9Tm9uZSk6CisgICAgICAgICIiIkNvbnN0cnVjdG9yIGZvciBJUkMgb2Jq
ZWN0cy4KKworICAgICAgICBPcHRpb25hbCBhcmd1bWVudHMgYXJlIGZuX3RvX2FkZF9zb2NrZXQs
IGZuX3RvX3JlbW92ZV9zb2NrZXQKKyAgICAgICAgYW5kIGZuX3RvX2FkZF90aW1lb3V0LiAgVGhl
IGZpcnN0IHR3byBzcGVjaWZ5IGZ1bmN0aW9ucyB0aGF0CisgICAgICAgIHdpbGwgYmUgY2FsbGVk
IHdpdGggYSBzb2NrZXQgb2JqZWN0IGFzIGFyZ3VtZW50IHdoZW4gdGhlIElSQworICAgICAgICBv
YmplY3Qgd2FudHMgdG8gYmUgbm90aWZpZWQgKG9yIHN0b3AgYmVpbmcgbm90aWZpZWQpIG9mIGRh
dGEKKyAgICAgICAgY29taW5nIG9uIGEgbmV3IHNvY2tldC4gIFdoZW4gbmV3IGRhdGEgYXJyaXZl
cywgdGhlIG1ldGhvZAorICAgICAgICBwcm9jZXNzX2RhdGEgc2hvdWxkIGJlIGNhbGxlZC4gIFNp
bWlsYXJseSwgZm5fdG9fYWRkX3RpbWVvdXQKKyAgICAgICAgaXMgY2FsbGVkIHdpdGggYSBudW1i
ZXIgb2Ygc2Vjb25kcyAoYSBmbG9hdGluZyBwb2ludCBudW1iZXIpCisgICAgICAgIGFzIGZpcnN0
IGFyZ3VtZW50IHdoZW4gdGhlIElSQyBvYmplY3Qgd2FudHMgdG8gcmVjZWl2ZSBhCisgICAgICAg
IG5vdGlmaWNhdGlvbiAoYnkgY2FsbGluZyB0aGUgcHJvY2Vzc190aW1lb3V0IG1ldGhvZCkuICBT
bywgaWYKKyAgICAgICAgZS5nLiB0aGUgYXJndW1lbnQgaXMgNDIuMTcsIHRoZSBvYmplY3Qgd2Fu
dHMgdGhlCisgICAgICAgIHByb2Nlc3NfdGltZW91dCBtZXRob2QgdG8gYmUgY2FsbGVkIGFmdGVy
IDQyIHNlY29uZHMgYW5kIDE3MAorICAgICAgICBtaWxsaXNlY29uZHMuCisKKyAgICAgICAgVGhl
IHRocmVlIGFyZ3VtZW50cyBtYWlubHkgZXhpc3QgdG8gYmUgYWJsZSB0byB1c2UgYW4gZXh0ZXJu
YWwKKyAgICAgICAgbWFpbiBsb29wIChmb3IgZXhhbXBsZSBUa2ludGVyJ3Mgb3IgUHlHVEsncyBt
YWluIGFwcCBsb29wKQorICAgICAgICBpbnN0ZWFkIG9mIGNhbGxpbmcgdGhlIHByb2Nlc3NfZm9y
ZXZlciBtZXRob2QuCisKKyAgICAgICAgQW4gYWx0ZXJuYXRpdmUgaXMgdG8ganVzdCBjYWxsIFNl
cnZlckNvbm5lY3Rpb24ucHJvY2Vzc19vbmNlKCkKKyAgICAgICAgb25jZSBpbiBhIHdoaWxlLgor
ICAgICAgICAiIiIKKworICAgICAgICBpZiBmbl90b19hZGRfc29ja2V0IGFuZCBmbl90b19yZW1v
dmVfc29ja2V0OgorICAgICAgICAgICAgc2VsZi5mbl90b19hZGRfc29ja2V0ID0gZm5fdG9fYWRk
X3NvY2tldAorICAgICAgICAgICAgc2VsZi5mbl90b19yZW1vdmVfc29ja2V0ID0gZm5fdG9fcmVt
b3ZlX3NvY2tldAorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5mbl90b19hZGRfc29j
a2V0ID0gTm9uZQorICAgICAgICAgICAgc2VsZi5mbl90b19yZW1vdmVfc29ja2V0ID0gTm9uZQor
CisgICAgICAgIHNlbGYuZm5fdG9fYWRkX3RpbWVvdXQgPSBmbl90b19hZGRfdGltZW91dAorICAg
ICAgICBzZWxmLmNvbm5lY3Rpb25zID0gW10KKyAgICAgICAgc2VsZi5oYW5kbGVycyA9IHt9Cisg
ICAgICAgIHNlbGYuZGVsYXllZF9jb21tYW5kcyA9IFtdICMgbGlzdCBvZiB0dXBsZXMgaW4gdGhl
IGZvcm1hdCAodGltZSwgZnVuY3Rpb24sIGFyZ3VtZW50cykKKworICAgICAgICBzZWxmLmFkZF9n
bG9iYWxfaGFuZGxlcigicGluZyIsIF9waW5nX3BvbmdlciwgLTQyKQorCisgICAgZGVmIHNlcnZl
cihzZWxmKToKKyAgICAgICAgIiIiQ3JlYXRlcyBhbmQgcmV0dXJucyBhIFNlcnZlckNvbm5lY3Rp
b24gb2JqZWN0LiIiIgorCisgICAgICAgIGMgPSBTZXJ2ZXJDb25uZWN0aW9uKHNlbGYpCisgICAg
ICAgIHNlbGYuY29ubmVjdGlvbnMuYXBwZW5kKGMpCisgICAgICAgIHJldHVybiBjCisKKyAgICBk
ZWYgcHJvY2Vzc19kYXRhKHNlbGYsIHNvY2tldHMpOgorICAgICAgICAiIiJDYWxsZWQgd2hlbiB0
aGVyZSBpcyBtb3JlIGRhdGEgdG8gcmVhZCBvbiBjb25uZWN0aW9uIHNvY2tldHMuCisKKyAgICAg
ICAgQXJndW1lbnRzOgorCisgICAgICAgICAgICBzb2NrZXRzIC0tIEEgbGlzdCBvZiBzb2NrZXQg
b2JqZWN0cy4KKworICAgICAgICBTZWUgZG9jdW1lbnRhdGlvbiBmb3IgSVJDLl9faW5pdF9fLgor
ICAgICAgICAiIiIKKyAgICAgICAgZm9yIHMgaW4gc29ja2V0czoKKyAgICAgICAgICAgIGZvciBj
IGluIHNlbGYuY29ubmVjdGlvbnM6CisgICAgICAgICAgICAgICAgaWYgcyA9PSBjLl9nZXRfc29j
a2V0KCk6CisgICAgICAgICAgICAgICAgICAgIGMucHJvY2Vzc19kYXRhKCkKKworICAgIGRlZiBw
cm9jZXNzX3RpbWVvdXQoc2VsZik6CisgICAgICAgICIiIkNhbGxlZCB3aGVuIGEgdGltZW91dCBu
b3RpZmljYXRpb24gaXMgZHVlLgorCisgICAgICAgIFNlZSBkb2N1bWVudGF0aW9uIGZvciBJUkMu
X19pbml0X18uCisgICAgICAgICIiIgorICAgICAgICB0ID0gdGltZS50aW1lKCkKKyAgICAgICAg
d2hpbGUgc2VsZi5kZWxheWVkX2NvbW1hbmRzOgorICAgICAgICAgICAgaWYgdCA+PSBzZWxmLmRl
bGF5ZWRfY29tbWFuZHNbMF1bMF06CisgICAgICAgICAgICAgICAgc2VsZi5kZWxheWVkX2NvbW1h
bmRzWzBdWzFdKCpzZWxmLmRlbGF5ZWRfY29tbWFuZHNbMF1bMl0pCisgICAgICAgICAgICAgICAg
ZGVsIHNlbGYuZGVsYXllZF9jb21tYW5kc1swXQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAg
ICAgICAgICBicmVhaworCisgICAgZGVmIHByb2Nlc3Nfb25jZShzZWxmLCB0aW1lb3V0PTApOgor
ICAgICAgICAiIiJQcm9jZXNzIGRhdGEgZnJvbSBjb25uZWN0aW9ucyBvbmNlLgorCisgICAgICAg
IEFyZ3VtZW50czoKKworICAgICAgICAgICAgdGltZW91dCAtLSBIb3cgbG9uZyB0aGUgc2VsZWN0
KCkgY2FsbCBzaG91bGQgd2FpdCBpZiBubworICAgICAgICAgICAgICAgICAgICAgICBkYXRhIGlz
IGF2YWlsYWJsZS4KKworICAgICAgICBUaGlzIG1ldGhvZCBzaG91bGQgYmUgY2FsbGVkIHBlcmlv
ZGljYWxseSB0byBjaGVjayBhbmQgcHJvY2VzcworICAgICAgICBpbmNvbWluZyBkYXRhLCBpZiB0
aGVyZSBhcmUgYW55LiAgSWYgdGhhdCBzZWVtcyBib3JpbmcsIGxvb2sKKyAgICAgICAgYXQgdGhl
IHByb2Nlc3NfZm9yZXZlciBtZXRob2QuCisgICAgICAgICIiIgorICAgICAgICBzb2NrZXRzID0g
bWFwKGxhbWJkYSB4OiB4Ll9nZXRfc29ja2V0KCksIHNlbGYuY29ubmVjdGlvbnMpCisgICAgICAg
IHNvY2tldHMgPSBmaWx0ZXIobGFtYmRhIHg6IHggIT0gTm9uZSwgc29ja2V0cykKKyAgICAgICAg
aWYgc29ja2V0czoKKyAgICAgICAgICAgIChpLCBvLCBlKSA9IHNlbGVjdC5zZWxlY3Qoc29ja2V0
cywgW10sIFtdLCB0aW1lb3V0KQorICAgICAgICAgICAgc2VsZi5wcm9jZXNzX2RhdGEoaSkKKyAg
ICAgICAgZWxzZToKKyAgICAgICAgICAgIHRpbWUuc2xlZXAodGltZW91dCkKKyAgICAgICAgc2Vs
Zi5wcm9jZXNzX3RpbWVvdXQoKQorCisgICAgZGVmIHByb2Nlc3NfZm9yZXZlcihzZWxmLCB0aW1l
b3V0PTAuMik6CisgICAgICAgICIiIlJ1biBhbiBpbmZpbml0ZSBsb29wLCBwcm9jZXNzaW5nIGRh
dGEgZnJvbSBjb25uZWN0aW9ucy4KKworICAgICAgICBUaGlzIG1ldGhvZCByZXBlYXRlZGx5IGNh
bGxzIHByb2Nlc3Nfb25jZS4KKworICAgICAgICBBcmd1bWVudHM6CisKKyAgICAgICAgICAgIHRp
bWVvdXQgLS0gUGFyYW1ldGVyIHRvIHBhc3MgdG8gcHJvY2Vzc19vbmNlLgorICAgICAgICAiIiIK
KyAgICAgICAgd2hpbGUgMToKKyAgICAgICAgICAgIHNlbGYucHJvY2Vzc19vbmNlKHRpbWVvdXQp
CisKKyAgICBkZWYgZGlzY29ubmVjdF9hbGwoc2VsZiwgbWVzc2FnZT0iIik6CisgICAgICAgICIi
IkRpc2Nvbm5lY3RzIGFsbCBjb25uZWN0aW9ucy4iIiIKKyAgICAgICAgZm9yIGMgaW4gc2VsZi5j
b25uZWN0aW9uczoKKyAgICAgICAgICAgIGMuZGlzY29ubmVjdChtZXNzYWdlKQorCisgICAgZGVm
IGFkZF9nbG9iYWxfaGFuZGxlcihzZWxmLCBldmVudCwgaGFuZGxlciwgcHJpb3JpdHk9MCk6Cisg
ICAgICAgICIiIkFkZHMgYSBnbG9iYWwgaGFuZGxlciBmdW5jdGlvbiBmb3IgYSBzcGVjaWZpYyBl
dmVudCB0eXBlLgorCisgICAgICAgIEFyZ3VtZW50czoKKworICAgICAgICAgICAgZXZlbnQgLS0g
RXZlbnQgdHlwZSAoYSBzdHJpbmcpLiAgQ2hlY2sgdGhlIHZhbHVlcyBvZiB0aGUKKyAgICAgICAg
ICAgIG51bWVyaWNfZXZlbnRzIGRpY3Rpb25hcnkgaW4gaXJjbGliLnB5IGZvciBwb3NzaWJsZSBl
dmVudAorICAgICAgICAgICAgdHlwZXMuCisKKyAgICAgICAgICAgIGhhbmRsZXIgLS0gQ2FsbGJh
Y2sgZnVuY3Rpb24uCisKKyAgICAgICAgICAgIHByaW9yaXR5IC0tIEEgbnVtYmVyICh0aGUgbG93
ZXIgbnVtYmVyLCB0aGUgaGlnaGVyIHByaW9yaXR5KS4KKworICAgICAgICBUaGUgaGFuZGxlciBm
dW5jdGlvbiBpcyBjYWxsZWQgd2hlbmV2ZXIgdGhlIHNwZWNpZmllZCBldmVudCBpcworICAgICAg
ICB0cmlnZ2VyZWQgaW4gYW55IG9mIHRoZSBjb25uZWN0aW9ucy4gIFNlZSBkb2N1bWVudGF0aW9u
IGZvcgorICAgICAgICB0aGUgRXZlbnQgY2xhc3MuCisKKyAgICAgICAgVGhlIGhhbmRsZXIgZnVu
Y3Rpb25zIGFyZSBjYWxsZWQgaW4gcHJpb3JpdHkgb3JkZXIgKGxvd2VzdAorICAgICAgICBudW1i
ZXIgaXMgaGlnaGVzdCBwcmlvcml0eSkuICBJZiBhIGhhbmRsZXIgZnVuY3Rpb24gcmV0dXJucwor
ICAgICAgICBcIk5PIE1PUkVcIiwgbm8gbW9yZSBoYW5kbGVycyB3aWxsIGJlIGNhbGxlZC4KKyAg
ICAgICAgIiIiCisgICAgICAgIGlmIG5vdCBldmVudCBpbiBzZWxmLmhhbmRsZXJzOgorICAgICAg
ICAgICAgc2VsZi5oYW5kbGVyc1tldmVudF0gPSBbXQorICAgICAgICBiaXNlY3QuaW5zb3J0KHNl
bGYuaGFuZGxlcnNbZXZlbnRdLCAoKHByaW9yaXR5LCBoYW5kbGVyKSkpCisKKyAgICBkZWYgcmVt
b3ZlX2dsb2JhbF9oYW5kbGVyKHNlbGYsIGV2ZW50LCBoYW5kbGVyKToKKyAgICAgICAgIiIiUmVt
b3ZlcyBhIGdsb2JhbCBoYW5kbGVyIGZ1bmN0aW9uLgorCisgICAgICAgIEFyZ3VtZW50czoKKwor
ICAgICAgICAgICAgZXZlbnQgLS0gRXZlbnQgdHlwZSAoYSBzdHJpbmcpLgorCisgICAgICAgICAg
ICBoYW5kbGVyIC0tIENhbGxiYWNrIGZ1bmN0aW9uLgorCisgICAgICAgIFJldHVybnMgMSBvbiBz
dWNjZXNzLCBvdGhlcndpc2UgMC4KKyAgICAgICAgIiIiCisgICAgICAgIGlmIG5vdCBldmVudCBp
biBzZWxmLmhhbmRsZXJzOgorICAgICAgICAgICAgcmV0dXJuIDAKKyAgICAgICAgZm9yIGggaW4g
c2VsZi5oYW5kbGVyc1tldmVudF06CisgICAgICAgICAgICBpZiBoYW5kbGVyID09IGhbMV06Cisg
ICAgICAgICAgICAgICAgc2VsZi5oYW5kbGVyc1tldmVudF0ucmVtb3ZlKGgpCisgICAgICAgIHJl
dHVybiAxCisKKyAgICBkZWYgZXhlY3V0ZV9hdChzZWxmLCBhdCwgZnVuY3Rpb24sIGFyZ3VtZW50
cz0oKSk6CisgICAgICAgICIiIkV4ZWN1dGUgYSBmdW5jdGlvbiBhdCBhIHNwZWNpZmllZCB0aW1l
LgorCisgICAgICAgIEFyZ3VtZW50czoKKworICAgICAgICAgICAgYXQgLS0gRXhlY3V0ZSBhdCB0
aGlzIHRpbWUgKHN0YW5kYXJkIFwidGltZV90XCIgdGltZSkuCisKKyAgICAgICAgICAgIGZ1bmN0
aW9uIC0tIEZ1bmN0aW9uIHRvIGNhbGwuCisKKyAgICAgICAgICAgIGFyZ3VtZW50cyAtLSBBcmd1
bWVudHMgdG8gZ2l2ZSB0aGUgZnVuY3Rpb24uCisgICAgICAgICIiIgorICAgICAgICBzZWxmLmV4
ZWN1dGVfZGVsYXllZChhdC10aW1lLnRpbWUoKSwgZnVuY3Rpb24sIGFyZ3VtZW50cykKKworICAg
IGRlZiBleGVjdXRlX2RlbGF5ZWQoc2VsZiwgZGVsYXksIGZ1bmN0aW9uLCBhcmd1bWVudHM9KCkp
OgorICAgICAgICAiIiJFeGVjdXRlIGEgZnVuY3Rpb24gYWZ0ZXIgYSBzcGVjaWZpZWQgdGltZS4K
KworICAgICAgICBBcmd1bWVudHM6CisKKyAgICAgICAgICAgIGRlbGF5IC0tIEhvdyBtYW55IHNl
Y29uZHMgdG8gd2FpdC4KKworICAgICAgICAgICAgZnVuY3Rpb24gLS0gRnVuY3Rpb24gdG8gY2Fs
bC4KKworICAgICAgICAgICAgYXJndW1lbnRzIC0tIEFyZ3VtZW50cyB0byBnaXZlIHRoZSBmdW5j
dGlvbi4KKyAgICAgICAgIiIiCisgICAgICAgIGJpc2VjdC5pbnNvcnQoc2VsZi5kZWxheWVkX2Nv
bW1hbmRzLCAoZGVsYXkrdGltZS50aW1lKCksIGZ1bmN0aW9uLCBhcmd1bWVudHMpKQorICAgICAg
ICBpZiBzZWxmLmZuX3RvX2FkZF90aW1lb3V0OgorICAgICAgICAgICAgc2VsZi5mbl90b19hZGRf
dGltZW91dChkZWxheSkKKworICAgIGRlZiBkY2Moc2VsZiwgZGNjdHlwZT0iY2hhdCIpOgorICAg
ICAgICAiIiJDcmVhdGVzIGFuZCByZXR1cm5zIGEgRENDQ29ubmVjdGlvbiBvYmplY3QuCisKKyAg
ICAgICAgQXJndW1lbnRzOgorCisgICAgICAgICAgICBkY2N0eXBlIC0tICJjaGF0IiBmb3IgREND
IENIQVQgY29ubmVjdGlvbnMgb3IgInJhdyIgZm9yCisgICAgICAgICAgICAgICAgICAgICAgIERD
QyBTRU5EIChvciBvdGhlciBEQ0MgdHlwZXMpLiBJZiAiY2hhdCIsCisgICAgICAgICAgICAgICAg
ICAgICAgIGluY29taW5nIGRhdGEgd2lsbCBiZSBzcGxpdCBpbiBuZXdsaW5lLXNlcGFyYXRlZAor
ICAgICAgICAgICAgICAgICAgICAgICBjaHVua3MuIElmICJyYXciLCBpbmNvbWluZyBkYXRhIGlz
IG5vdCB0b3VjaGVkLgorICAgICAgICAiIiIKKyAgICAgICAgYyA9IERDQ0Nvbm5lY3Rpb24oc2Vs
ZiwgZGNjdHlwZSkKKyAgICAgICAgc2VsZi5jb25uZWN0aW9ucy5hcHBlbmQoYykKKyAgICAgICAg
cmV0dXJuIGMKKworICAgIGRlZiBfaGFuZGxlX2V2ZW50KHNlbGYsIGNvbm5lY3Rpb24sIGV2ZW50
KToKKyAgICAgICAgIiIiW0ludGVybmFsXSIiIgorICAgICAgICBoID0gc2VsZi5oYW5kbGVycwor
ICAgICAgICBmb3IgaGFuZGxlciBpbiBoLmdldCgiYWxsX2V2ZW50cyIsIFtdKSArIGguZ2V0KGV2
ZW50LmV2ZW50dHlwZSgpLCBbXSk6CisgICAgICAgICAgICBpZiBoYW5kbGVyWzFdKGNvbm5lY3Rp
b24sIGV2ZW50KSA9PSAiTk8gTU9SRSI6CisgICAgICAgICAgICAgICAgcmV0dXJuCisKKyAgICBk
ZWYgX3JlbW92ZV9jb25uZWN0aW9uKHNlbGYsIGNvbm5lY3Rpb24pOgorICAgICAgICAiIiJbSW50
ZXJuYWxdIiIiCisgICAgICAgIHNlbGYuY29ubmVjdGlvbnMucmVtb3ZlKGNvbm5lY3Rpb24pCisg
ICAgICAgIGlmIHNlbGYuZm5fdG9fcmVtb3ZlX3NvY2tldDoKKyAgICAgICAgICAgIHNlbGYuZm5f
dG9fcmVtb3ZlX3NvY2tldChjb25uZWN0aW9uLl9nZXRfc29ja2V0KCkpCisKK19yZmNfMTQ1OV9j
b21tYW5kX3JlZ2V4cCA9IHJlLmNvbXBpbGUoIl4oOig/UDxwcmVmaXg+W14gXSspICspPyg/UDxj
b21tYW5kPlteIF0rKSggKig/UDxhcmd1bWVudD4gLispKT8iKQorCitjbGFzcyBDb25uZWN0aW9u
OgorICAgICIiIkJhc2UgY2xhc3MgZm9yIElSQyBjb25uZWN0aW9ucy4KKworICAgIE11c3QgYmUg
b3ZlcnJpZGRlbi4KKyAgICAiIiIKKyAgICBkZWYgX19pbml0X18oc2VsZiwgaXJjbGlib2JqKToK
KyAgICAgICAgc2VsZi5pcmNsaWJvYmogPSBpcmNsaWJvYmoKKworICAgIGRlZiBfZ2V0X3NvY2tl
dCgpOgorICAgICAgICByYWlzZSBJUkNFcnJvciwgIk5vdCBvdmVycmlkZGVuIgorCisgICAgIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisgICAgIyMjIENvbnZlbmllbmNlIHdyYXBwZXJz
LgorCisgICAgZGVmIGV4ZWN1dGVfYXQoc2VsZiwgYXQsIGZ1bmN0aW9uLCBhcmd1bWVudHM9KCkp
OgorICAgICAgICBzZWxmLmlyY2xpYm9iai5leGVjdXRlX2F0KGF0LCBmdW5jdGlvbiwgYXJndW1l
bnRzKQorCisgICAgZGVmIGV4ZWN1dGVfZGVsYXllZChzZWxmLCBkZWxheSwgZnVuY3Rpb24sIGFy
Z3VtZW50cz0oKSk6CisgICAgICAgIHNlbGYuaXJjbGlib2JqLmV4ZWN1dGVfZGVsYXllZChkZWxh
eSwgZnVuY3Rpb24sIGFyZ3VtZW50cykKKworCitjbGFzcyBTZXJ2ZXJDb25uZWN0aW9uRXJyb3Io
SVJDRXJyb3IpOgorICAgIHBhc3MKKworY2xhc3MgU2VydmVyTm90Q29ubmVjdGVkRXJyb3IoU2Vy
dmVyQ29ubmVjdGlvbkVycm9yKToKKyAgICBwYXNzCisKKworIyBIdWghPyAgQ3JycnJhenkgRUZO
ZXQgZG9lc24ndCBmb2xsb3cgdGhlIFJGQzogdGhlaXIgaXJjZCBzZWVtcyB0bworIyB1c2UgXG4g
YXMgbWVzc2FnZSBzZXBhcmF0b3IhICA6UAorX2xpbmVzZXBfcmVnZXhwID0gcmUuY29tcGlsZSgi
XHI/XG4iKQorCitjbGFzcyBTZXJ2ZXJDb25uZWN0aW9uKENvbm5lY3Rpb24pOgorICAgICIiIlRo
aXMgY2xhc3MgcmVwcmVzZW50cyBhbiBJUkMgc2VydmVyIGNvbm5lY3Rpb24uCisKKyAgICBTZXJ2
ZXJDb25uZWN0aW9uIG9iamVjdHMgYXJlIGluc3RhbnRpYXRlZCBieSBjYWxsaW5nIHRoZSBzZXJ2
ZXIKKyAgICBtZXRob2Qgb24gYW4gSVJDIG9iamVjdC4KKyAgICAiIiIKKworICAgIGRlZiBfX2lu
aXRfXyhzZWxmLCBpcmNsaWJvYmopOgorICAgICAgICBDb25uZWN0aW9uLl9faW5pdF9fKHNlbGYs
IGlyY2xpYm9iaikKKyAgICAgICAgc2VsZi5jb25uZWN0ZWQgPSAwICAjIE5vdCBjb25uZWN0ZWQg
eWV0LgorICAgICAgICBzZWxmLnNvY2tldCA9IE5vbmUKKyAgICAgICAgc2VsZi5zc2wgPSBOb25l
CisKKyAgICBkZWYgY29ubmVjdChzZWxmLCBzZXJ2ZXIsIHBvcnQsIG5pY2tuYW1lLCBwYXNzd29y
ZD1Ob25lLCB1c2VybmFtZT1Ob25lLAorICAgICAgICAgICAgICAgIGlyY25hbWU9Tm9uZSwgbG9j
YWxhZGRyZXNzPSIiLCBsb2NhbHBvcnQ9MCwgc3NsPUZhbHNlLCBpcHY2PUZhbHNlKToKKyAgICAg
ICAgIiIiQ29ubmVjdC9yZWNvbm5lY3QgdG8gYSBzZXJ2ZXIuCisKKyAgICAgICAgQXJndW1lbnRz
OgorCisgICAgICAgICAgICBzZXJ2ZXIgLS0gU2VydmVyIG5hbWUuCisKKyAgICAgICAgICAgIHBv
cnQgLS0gUG9ydCBudW1iZXIuCisKKyAgICAgICAgICAgIG5pY2tuYW1lIC0tIFRoZSBuaWNrbmFt
ZS4KKworICAgICAgICAgICAgcGFzc3dvcmQgLS0gUGFzc3dvcmQgKGlmIGFueSkuCisKKyAgICAg
ICAgICAgIHVzZXJuYW1lIC0tIFRoZSB1c2VybmFtZS4KKworICAgICAgICAgICAgaXJjbmFtZSAt
LSBUaGUgSVJDIG5hbWUgKCJyZWFsbmFtZSIpLgorCisgICAgICAgICAgICBsb2NhbGFkZHJlc3Mg
LS0gQmluZCB0aGUgY29ubmVjdGlvbiB0byBhIHNwZWNpZmljIGxvY2FsIElQIGFkZHJlc3MuCisK
KyAgICAgICAgICAgIGxvY2FscG9ydCAtLSBCaW5kIHRoZSBjb25uZWN0aW9uIHRvIGEgc3BlY2lm
aWMgbG9jYWwgcG9ydC4KKworICAgICAgICAgICAgc3NsIC0tIEVuYWJsZSBzdXBwb3J0IGZvciBz
c2wuCisKKyAgICAgICAgICAgIGlwdjYgLS0gRW5hYmxlIHN1cHBvcnQgZm9yIGlwdjYuCisKKyAg
ICAgICAgVGhpcyBmdW5jdGlvbiBjYW4gYmUgY2FsbGVkIHRvIHJlY29ubmVjdCBhIGNsb3NlZCBj
b25uZWN0aW9uLgorCisgICAgICAgIFJldHVybnMgdGhlIFNlcnZlckNvbm5lY3Rpb24gb2JqZWN0
LgorICAgICAgICAiIiIKKyAgICAgICAgaWYgc2VsZi5jb25uZWN0ZWQ6CisgICAgICAgICAgICBz
ZWxmLmRpc2Nvbm5lY3QoIkNoYW5naW5nIHNlcnZlcnMiKQorCisgICAgICAgIHNlbGYucHJldmlv
dXNfYnVmZmVyID0gIiIKKyAgICAgICAgc2VsZi5oYW5kbGVycyA9IHt9CisgICAgICAgIHNlbGYu
cmVhbF9zZXJ2ZXJfbmFtZSA9ICIiCisgICAgICAgIHNlbGYucmVhbF9uaWNrbmFtZSA9IG5pY2tu
YW1lCisgICAgICAgIHNlbGYuc2VydmVyID0gc2VydmVyCisgICAgICAgIHNlbGYucG9ydCA9IHBv
cnQKKyAgICAgICAgc2VsZi5uaWNrbmFtZSA9IG5pY2tuYW1lCisgICAgICAgIHNlbGYudXNlcm5h
bWUgPSB1c2VybmFtZSBvciBuaWNrbmFtZQorICAgICAgICBzZWxmLmlyY25hbWUgPSBpcmNuYW1l
IG9yIG5pY2tuYW1lCisgICAgICAgIHNlbGYucGFzc3dvcmQgPSBwYXNzd29yZAorICAgICAgICBz
ZWxmLmxvY2FsYWRkcmVzcyA9IGxvY2FsYWRkcmVzcworICAgICAgICBzZWxmLmxvY2FscG9ydCA9
IGxvY2FscG9ydAorICAgICAgICBzZWxmLmxvY2FsaG9zdCA9IHNvY2tldC5nZXRob3N0bmFtZSgp
CisgICAgICAgIGlmIGlwdjY6CisgICAgICAgICAgICBzZWxmLnNvY2tldCA9IHNvY2tldC5zb2Nr
ZXQoc29ja2V0LkFGX0lORVQ2LCBzb2NrZXQuU09DS19TVFJFQU0pCisgICAgICAgIGVsc2U6Cisg
ICAgICAgICAgICBzZWxmLnNvY2tldCA9IHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQsIHNv
Y2tldC5TT0NLX1NUUkVBTSkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2VsZi5zb2NrZXQu
YmluZCgoc2VsZi5sb2NhbGFkZHJlc3MsIHNlbGYubG9jYWxwb3J0KSkKKyAgICAgICAgICAgIHNl
bGYuc29ja2V0LmNvbm5lY3QoKHNlbGYuc2VydmVyLCBzZWxmLnBvcnQpKQorICAgICAgICAgICAg
aWYgc3NsOgorICAgICAgICAgICAgICAgIHNlbGYuc3NsID0gc29ja2V0LnNzbChzZWxmLnNvY2tl
dCkKKyAgICAgICAgZXhjZXB0IHNvY2tldC5lcnJvciwgeDoKKyAgICAgICAgICAgIHNlbGYuc29j
a2V0LmNsb3NlKCkKKyAgICAgICAgICAgIHNlbGYuc29ja2V0ID0gTm9uZQorICAgICAgICAgICAg
cmFpc2UgU2VydmVyQ29ubmVjdGlvbkVycm9yLCAiQ291bGRuJ3QgY29ubmVjdCB0byBzb2NrZXQ6
ICVzIiAlIHgKKyAgICAgICAgc2VsZi5jb25uZWN0ZWQgPSAxCisgICAgICAgIGlmIHNlbGYuaXJj
bGlib2JqLmZuX3RvX2FkZF9zb2NrZXQ6CisgICAgICAgICAgICBzZWxmLmlyY2xpYm9iai5mbl90
b19hZGRfc29ja2V0KHNlbGYuc29ja2V0KQorCisgICAgICAgICMgTG9nIG9uLi4uCisgICAgICAg
IGlmIHNlbGYucGFzc3dvcmQ6CisgICAgICAgICAgICBzZWxmLnBhc3NfKHNlbGYucGFzc3dvcmQp
CisgICAgICAgIHNlbGYubmljayhzZWxmLm5pY2tuYW1lKQorICAgICAgICBzZWxmLnVzZXIoc2Vs
Zi51c2VybmFtZSwgc2VsZi5pcmNuYW1lKQorICAgICAgICByZXR1cm4gc2VsZgorCisgICAgZGVm
IGNsb3NlKHNlbGYpOgorICAgICAgICAiIiJDbG9zZSB0aGUgY29ubmVjdGlvbi4KKworICAgICAg
ICBUaGlzIG1ldGhvZCBjbG9zZXMgdGhlIGNvbm5lY3Rpb24gcGVybWFuZW50bHk7IGFmdGVyIGl0
IGhhcworICAgICAgICBiZWVuIGNhbGxlZCwgdGhlIG9iamVjdCBpcyB1bnVzYWJsZS4KKyAgICAg
ICAgIiIiCisKKyAgICAgICAgc2VsZi5kaXNjb25uZWN0KCJDbG9zaW5nIG9iamVjdCIpCisgICAg
ICAgIHNlbGYuaXJjbGlib2JqLl9yZW1vdmVfY29ubmVjdGlvbihzZWxmKQorCisgICAgZGVmIF9n
ZXRfc29ja2V0KHNlbGYpOgorICAgICAgICAiIiJbSW50ZXJuYWxdIiIiCisgICAgICAgIHJldHVy
biBzZWxmLnNvY2tldAorCisgICAgZGVmIGdldF9zZXJ2ZXJfbmFtZShzZWxmKToKKyAgICAgICAg
IiIiR2V0IHRoZSAocmVhbCkgc2VydmVyIG5hbWUuCisKKyAgICAgICAgVGhpcyBtZXRob2QgcmV0
dXJucyB0aGUgKHJlYWwpIHNlcnZlciBuYW1lLCBvciwgbW9yZQorICAgICAgICBzcGVjaWZpY2Fs
bHksIHdoYXQgdGhlIHNlcnZlciBjYWxscyBpdHNlbGYuCisgICAgICAgICIiIgorCisgICAgICAg
IGlmIHNlbGYucmVhbF9zZXJ2ZXJfbmFtZToKKyAgICAgICAgICAgIHJldHVybiBzZWxmLnJlYWxf
c2VydmVyX25hbWUKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJldHVybiAiIgorCisgICAg
ZGVmIGdldF9uaWNrbmFtZShzZWxmKToKKyAgICAgICAgIiIiR2V0IHRoZSAocmVhbCkgbmljayBu
YW1lLgorCisgICAgICAgIFRoaXMgbWV0aG9kIHJldHVybnMgdGhlIChyZWFsKSBuaWNrbmFtZS4g
IFRoZSBsaWJyYXJ5IGtlZXBzCisgICAgICAgIHRyYWNrIG9mIG5pY2sgY2hhbmdlcywgc28gaXQg
bWlnaHQgbm90IGJlIHRoZSBuaWNrIG5hbWUgdGhhdAorICAgICAgICB3YXMgcGFzc2VkIHRvIHRo
ZSBjb25uZWN0KCkgbWV0aG9kLiAgIiIiCisKKyAgICAgICAgcmV0dXJuIHNlbGYucmVhbF9uaWNr
bmFtZQorCisgICAgZGVmIHByb2Nlc3NfZGF0YShzZWxmKToKKyAgICAgICAgIiIiW0ludGVybmFs
XSIiIgorCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGlmIHNlbGYuc3NsOgorICAgICAgICAg
ICAgICAgIG5ld19kYXRhID0gc2VsZi5zc2wucmVhZCgyKioxNCkKKyAgICAgICAgICAgIGVsc2U6
CisgICAgICAgICAgICAgICAgbmV3X2RhdGEgPSBzZWxmLnNvY2tldC5yZWN2KDIqKjE0KQorICAg
ICAgICBleGNlcHQgc29ja2V0LmVycm9yLCB4OgorICAgICAgICAgICAgIyBUaGUgc2VydmVyIGh1
bmcgdXAuCisgICAgICAgICAgICBzZWxmLmRpc2Nvbm5lY3QoIkNvbm5lY3Rpb24gcmVzZXQgYnkg
cGVlciIpCisgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgaWYgbm90IG5ld19kYXRhOgorICAg
ICAgICAgICAgIyBSZWFkIG5vdGhpbmc6IGNvbm5lY3Rpb24gbXVzdCBiZSBkb3duLgorICAgICAg
ICAgICAgc2VsZi5kaXNjb25uZWN0KCJDb25uZWN0aW9uIHJlc2V0IGJ5IHBlZXIiKQorICAgICAg
ICAgICAgcmV0dXJuCisKKyAgICAgICAgbGluZXMgPSBfbGluZXNlcF9yZWdleHAuc3BsaXQoc2Vs
Zi5wcmV2aW91c19idWZmZXIgKyBuZXdfZGF0YSkKKworICAgICAgICAjIFNhdmUgdGhlIGxhc3Qs
IHVuZmluaXNoZWQgbGluZS4KKyAgICAgICAgc2VsZi5wcmV2aW91c19idWZmZXIgPSBsaW5lcy5w
b3AoKQorCisgICAgICAgIGZvciBsaW5lIGluIGxpbmVzOgorICAgICAgICAgICAgaWYgREVCVUc6
CisgICAgICAgICAgICAgICAgcHJpbnQgIkZST00gU0VSVkVSOiIsIGxpbmUKKworICAgICAgICAg
ICAgaWYgbm90IGxpbmU6CisgICAgICAgICAgICAgICAgY29udGludWUKKworICAgICAgICAgICAg
cHJlZml4ID0gTm9uZQorICAgICAgICAgICAgY29tbWFuZCA9IE5vbmUKKyAgICAgICAgICAgIGFy
Z3VtZW50cyA9IE5vbmUKKyAgICAgICAgICAgIHNlbGYuX2hhbmRsZV9ldmVudChFdmVudCgiYWxs
X3Jhd19tZXNzYWdlcyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vs
Zi5nZXRfc2VydmVyX25hbWUoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBOb25lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsaW5lXSkpCisK
KyAgICAgICAgICAgIG0gPSBfcmZjXzE0NTlfY29tbWFuZF9yZWdleHAubWF0Y2gobGluZSkKKyAg
ICAgICAgICAgIGlmIG0uZ3JvdXAoInByZWZpeCIpOgorICAgICAgICAgICAgICAgIHByZWZpeCA9
IG0uZ3JvdXAoInByZWZpeCIpCisgICAgICAgICAgICAgICAgaWYgbm90IHNlbGYucmVhbF9zZXJ2
ZXJfbmFtZToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5yZWFsX3NlcnZlcl9uYW1lID0gcHJl
Zml4CisKKyAgICAgICAgICAgIGlmIG0uZ3JvdXAoImNvbW1hbmQiKToKKyAgICAgICAgICAgICAg
ICBjb21tYW5kID0gbS5ncm91cCgiY29tbWFuZCIpLmxvd2VyKCkKKworICAgICAgICAgICAgaWYg
bS5ncm91cCgiYXJndW1lbnQiKToKKyAgICAgICAgICAgICAgICBhID0gbS5ncm91cCgiYXJndW1l
bnQiKS5zcGxpdCgiIDoiLCAxKQorICAgICAgICAgICAgICAgIGFyZ3VtZW50cyA9IGFbMF0uc3Bs
aXQoKQorICAgICAgICAgICAgICAgIGlmIGxlbihhKSA9PSAyOgorICAgICAgICAgICAgICAgICAg
ICBhcmd1bWVudHMuYXBwZW5kKGFbMV0pCisKKyAgICAgICAgICAgICMgVHJhbnNsYXRlIG51bWVy
aWNzIGludG8gbW9yZSByZWFkYWJsZSBzdHJpbmdzLgorICAgICAgICAgICAgaWYgY29tbWFuZCBp
biBudW1lcmljX2V2ZW50czoKKyAgICAgICAgICAgICAgICBjb21tYW5kID0gbnVtZXJpY19ldmVu
dHNbY29tbWFuZF0KKworICAgICAgICAgICAgaWYgY29tbWFuZCA9PSAibmljayI6CisgICAgICAg
ICAgICAgICAgaWYgbm1fdG9fbihwcmVmaXgpID09IHNlbGYucmVhbF9uaWNrbmFtZToKKyAgICAg
ICAgICAgICAgICAgICAgc2VsZi5yZWFsX25pY2tuYW1lID0gYXJndW1lbnRzWzBdCisgICAgICAg
ICAgICBlbGlmIGNvbW1hbmQgPT0gIndlbGNvbWUiOgorICAgICAgICAgICAgICAgICMgUmVjb3Jk
IHRoZSBuaWNrbmFtZSBpbiBjYXNlIHRoZSBjbGllbnQgY2hhbmdlZCBuaWNrCisgICAgICAgICAg
ICAgICAgIyBpbiBhIG5pY2tuYW1laW51c2UgY2FsbGJhY2suCisgICAgICAgICAgICAgICAgc2Vs
Zi5yZWFsX25pY2tuYW1lID0gYXJndW1lbnRzWzBdCisKKyAgICAgICAgICAgIGlmIGNvbW1hbmQg
aW4gWyJwcml2bXNnIiwgIm5vdGljZSJdOgorICAgICAgICAgICAgICAgIHRhcmdldCwgbWVzc2Fn
ZSA9IGFyZ3VtZW50c1swXSwgYXJndW1lbnRzWzFdCisgICAgICAgICAgICAgICAgbWVzc2FnZXMg
PSBfY3RjcF9kZXF1b3RlKG1lc3NhZ2UpCisKKyAgICAgICAgICAgICAgICBpZiBjb21tYW5kID09
ICJwcml2bXNnIjoKKyAgICAgICAgICAgICAgICAgICAgaWYgaXNfY2hhbm5lbCh0YXJnZXQpOgor
ICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZCA9ICJwdWJtc2ciCisgICAgICAgICAgICAg
ICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgaWYgaXNfY2hhbm5lbCh0YXJnZXQpOgorICAg
ICAgICAgICAgICAgICAgICAgICAgY29tbWFuZCA9ICJwdWJub3RpY2UiCisgICAgICAgICAgICAg
ICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5kID0gInByaXZub3Rp
Y2UiCisKKyAgICAgICAgICAgICAgICBmb3IgbSBpbiBtZXNzYWdlczoKKyAgICAgICAgICAgICAg
ICAgICAgaWYgdHlwZShtKSBpcyB0eXBlcy5UdXBsZVR5cGU6CisgICAgICAgICAgICAgICAgICAg
ICAgICBpZiBjb21tYW5kIGluIFsicHJpdm1zZyIsICJwdWJtc2ciXToKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb21tYW5kID0gImN0Y3AiCisgICAgICAgICAgICAgICAgICAgICAgICBl
bHNlOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQgPSAiY3RjcHJlcGx5Igor
CisgICAgICAgICAgICAgICAgICAgICAgICBtID0gbGlzdChtKQorICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgREVCVUc6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnQgImNvbW1h
bmQ6ICVzLCBzb3VyY2U6ICVzLCB0YXJnZXQ6ICVzLCBhcmd1bWVudHM6ICVzIiAlICgKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZCwgcHJlZml4LCB0YXJnZXQsIG0pCisg
ICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9oYW5kbGVfZXZlbnQoRXZlbnQoY29tbWFuZCwg
cHJlZml4LCB0YXJnZXQsIG0pKQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgY29tbWFuZCA9
PSAiY3RjcCIgYW5kIG1bMF0gPT0gIkFDVElPTiI6CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc2VsZi5faGFuZGxlX2V2ZW50KEV2ZW50KCJhY3Rpb24iLCBwcmVmaXgsIHRhcmdldCwgbVsx
Ol0pKQorICAgICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAgICAg
aWYgREVCVUc6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnQgImNvbW1hbmQ6ICVz
LCBzb3VyY2U6ICVzLCB0YXJnZXQ6ICVzLCBhcmd1bWVudHM6ICVzIiAlICgKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29tbWFuZCwgcHJlZml4LCB0YXJnZXQsIFttXSkKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHNlbGYuX2hhbmRsZV9ldmVudChFdmVudChjb21tYW5kLCBwcmVm
aXgsIHRhcmdldCwgW21dKSkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgdGFy
Z2V0ID0gTm9uZQorCisgICAgICAgICAgICAgICAgaWYgY29tbWFuZCA9PSAicXVpdCI6CisgICAg
ICAgICAgICAgICAgICAgIGFyZ3VtZW50cyA9IFthcmd1bWVudHNbMF1dCisgICAgICAgICAgICAg
ICAgZWxpZiBjb21tYW5kID09ICJwaW5nIjoKKyAgICAgICAgICAgICAgICAgICAgdGFyZ2V0ID0g
YXJndW1lbnRzWzBdCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAg
dGFyZ2V0ID0gYXJndW1lbnRzWzBdCisgICAgICAgICAgICAgICAgICAgIGFyZ3VtZW50cyA9IGFy
Z3VtZW50c1sxOl0KKworICAgICAgICAgICAgICAgIGlmIGNvbW1hbmQgPT0gIm1vZGUiOgorICAg
ICAgICAgICAgICAgICAgICBpZiBub3QgaXNfY2hhbm5lbCh0YXJnZXQpOgorICAgICAgICAgICAg
ICAgICAgICAgICAgY29tbWFuZCA9ICJ1bW9kZSIKKworICAgICAgICAgICAgICAgIGlmIERFQlVH
OgorICAgICAgICAgICAgICAgICAgICBwcmludCAiY29tbWFuZDogJXMsIHNvdXJjZTogJXMsIHRh
cmdldDogJXMsIGFyZ3VtZW50czogJXMiICUgKAorICAgICAgICAgICAgICAgICAgICAgICAgY29t
bWFuZCwgcHJlZml4LCB0YXJnZXQsIGFyZ3VtZW50cykKKyAgICAgICAgICAgICAgICBzZWxmLl9o
YW5kbGVfZXZlbnQoRXZlbnQoY29tbWFuZCwgcHJlZml4LCB0YXJnZXQsIGFyZ3VtZW50cykpCisK
KyAgICBkZWYgX2hhbmRsZV9ldmVudChzZWxmLCBldmVudCk6CisgICAgICAgICIiIltJbnRlcm5h
bF0iIiIKKyAgICAgICAgc2VsZi5pcmNsaWJvYmouX2hhbmRsZV9ldmVudChzZWxmLCBldmVudCkK
KyAgICAgICAgaWYgZXZlbnQuZXZlbnR0eXBlKCkgaW4gc2VsZi5oYW5kbGVyczoKKyAgICAgICAg
ICAgIGZvciBmbiBpbiBzZWxmLmhhbmRsZXJzW2V2ZW50LmV2ZW50dHlwZSgpXToKKyAgICAgICAg
ICAgICAgICBmbihzZWxmLCBldmVudCkKKworICAgIGRlZiBpc19jb25uZWN0ZWQoc2VsZik6Cisg
ICAgICAgICIiIlJldHVybiBjb25uZWN0aW9uIHN0YXR1cy4KKworICAgICAgICBSZXR1cm5zIHRy
dWUgaWYgY29ubmVjdGVkLCBvdGhlcndpc2UgZmFsc2UuCisgICAgICAgICIiIgorICAgICAgICBy
ZXR1cm4gc2VsZi5jb25uZWN0ZWQKKworICAgIGRlZiBhZGRfZ2xvYmFsX2hhbmRsZXIoc2VsZiwg
KmFyZ3MpOgorICAgICAgICAiIiJBZGQgZ2xvYmFsIGhhbmRsZXIuCisKKyAgICAgICAgU2VlIGRv
Y3VtZW50YXRpb24gZm9yIElSQy5hZGRfZ2xvYmFsX2hhbmRsZXIuCisgICAgICAgICIiIgorICAg
ICAgICBzZWxmLmlyY2xpYm9iai5hZGRfZ2xvYmFsX2hhbmRsZXIoKmFyZ3MpCisKKyAgICBkZWYg
cmVtb3ZlX2dsb2JhbF9oYW5kbGVyKHNlbGYsICphcmdzKToKKyAgICAgICAgIiIiUmVtb3ZlIGds
b2JhbCBoYW5kbGVyLgorCisgICAgICAgIFNlZSBkb2N1bWVudGF0aW9uIGZvciBJUkMucmVtb3Zl
X2dsb2JhbF9oYW5kbGVyLgorICAgICAgICAiIiIKKyAgICAgICAgc2VsZi5pcmNsaWJvYmoucmVt
b3ZlX2dsb2JhbF9oYW5kbGVyKCphcmdzKQorCisgICAgZGVmIGFjdGlvbihzZWxmLCB0YXJnZXQs
IGFjdGlvbik6CisgICAgICAgICIiIlNlbmQgYSBDVENQIEFDVElPTiBjb21tYW5kLiIiIgorICAg
ICAgICBzZWxmLmN0Y3AoIkFDVElPTiIsIHRhcmdldCwgYWN0aW9uKQorCisgICAgZGVmIGFkbWlu
KHNlbGYsIHNlcnZlcj0iIik6CisgICAgICAgICIiIlNlbmQgYW4gQURNSU4gY29tbWFuZC4iIiIK
KyAgICAgICAgc2VsZi5zZW5kX3JhdygiICIuam9pbihbIkFETUlOIiwgc2VydmVyXSkuc3RyaXAo
KSkKKworICAgIGRlZiBjdGNwKHNlbGYsIGN0Y3B0eXBlLCB0YXJnZXQsIHBhcmFtZXRlcj0iIik6
CisgICAgICAgICIiIlNlbmQgYSBDVENQIGNvbW1hbmQuIiIiCisgICAgICAgIGN0Y3B0eXBlID0g
Y3RjcHR5cGUudXBwZXIoKQorICAgICAgICBzZWxmLnByaXZtc2codGFyZ2V0LCAiXDAwMSVzJXNc
MDAxIiAlIChjdGNwdHlwZSwgcGFyYW1ldGVyIGFuZCAoIiAiICsgcGFyYW1ldGVyKSBvciAiIikp
CisKKyAgICBkZWYgY3RjcF9yZXBseShzZWxmLCB0YXJnZXQsIHBhcmFtZXRlcik6CisgICAgICAg
ICIiIlNlbmQgYSBDVENQIFJFUExZIGNvbW1hbmQuIiIiCisgICAgICAgIHNlbGYubm90aWNlKHRh
cmdldCwgIlwwMDElc1wwMDEiICUgcGFyYW1ldGVyKQorCisgICAgZGVmIGRpc2Nvbm5lY3Qoc2Vs
ZiwgbWVzc2FnZT0iIik6CisgICAgICAgICIiIkhhbmcgdXAgdGhlIGNvbm5lY3Rpb24uCisKKyAg
ICAgICAgQXJndW1lbnRzOgorCisgICAgICAgICAgICBtZXNzYWdlIC0tIFF1aXQgbWVzc2FnZS4K
KyAgICAgICAgIiIiCisgICAgICAgIGlmIG5vdCBzZWxmLmNvbm5lY3RlZDoKKyAgICAgICAgICAg
IHJldHVybgorCisgICAgICAgIHNlbGYuY29ubmVjdGVkID0gMAorCisgICAgICAgIHNlbGYucXVp
dChtZXNzYWdlKQorCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNlbGYuc29ja2V0LmNsb3Nl
KCkKKyAgICAgICAgZXhjZXB0IHNvY2tldC5lcnJvciwgeDoKKyAgICAgICAgICAgIHBhc3MKKyAg
ICAgICAgc2VsZi5zb2NrZXQgPSBOb25lCisgICAgICAgIHNlbGYuX2hhbmRsZV9ldmVudChFdmVu
dCgiZGlzY29ubmVjdCIsIHNlbGYuc2VydmVyLCAiIiwgW21lc3NhZ2VdKSkKKworICAgIGRlZiBn
bG9ib3BzKHNlbGYsIHRleHQpOgorICAgICAgICAiIiJTZW5kIGEgR0xPQk9QUyBjb21tYW5kLiIi
IgorICAgICAgICBzZWxmLnNlbmRfcmF3KCJHTE9CT1BTIDoiICsgdGV4dCkKKworICAgIGRlZiBp
bmZvKHNlbGYsIHNlcnZlcj0iIik6CisgICAgICAgICIiIlNlbmQgYW4gSU5GTyBjb21tYW5kLiIi
IgorICAgICAgICBzZWxmLnNlbmRfcmF3KCIgIi5qb2luKFsiSU5GTyIsIHNlcnZlcl0pLnN0cmlw
KCkpCisKKyAgICBkZWYgaW52aXRlKHNlbGYsIG5pY2ssIGNoYW5uZWwpOgorICAgICAgICAiIiJT
ZW5kIGFuIElOVklURSBjb21tYW5kLiIiIgorICAgICAgICBzZWxmLnNlbmRfcmF3KCIgIi5qb2lu
KFsiSU5WSVRFIiwgbmljaywgY2hhbm5lbF0pLnN0cmlwKCkpCisKKyAgICBkZWYgaXNvbihzZWxm
LCBuaWNrcyk6CisgICAgICAgICIiIlNlbmQgYW4gSVNPTiBjb21tYW5kLgorCisgICAgICAgIEFy
Z3VtZW50czoKKworICAgICAgICAgICAgbmlja3MgLS0gTGlzdCBvZiBuaWNrcy4KKyAgICAgICAg
IiIiCisgICAgICAgIHNlbGYuc2VuZF9yYXcoIklTT04gIiArICIgIi5qb2luKG5pY2tzKSkKKwor
ICAgIGRlZiBqb2luKHNlbGYsIGNoYW5uZWwsIGtleT0iIik6CisgICAgICAgICIiIlNlbmQgYSBK
T0lOIGNvbW1hbmQuIiIiCisgICAgICAgIHNlbGYuc2VuZF9yYXcoIkpPSU4gJXMlcyIgJSAoY2hh
bm5lbCwgKGtleSBhbmQgKCIgIiArIGtleSkpKSkKKworICAgIGRlZiBraWNrKHNlbGYsIGNoYW5u
ZWwsIG5pY2ssIGNvbW1lbnQ9IiIpOgorICAgICAgICAiIiJTZW5kIGEgS0lDSyBjb21tYW5kLiIi
IgorICAgICAgICBzZWxmLnNlbmRfcmF3KCJLSUNLICVzICVzJXMiICUgKGNoYW5uZWwsIG5pY2ss
IChjb21tZW50IGFuZCAoIiA6IiArIGNvbW1lbnQpKSkpCisKKyAgICBkZWYgbGlua3Moc2VsZiwg
cmVtb3RlX3NlcnZlcj0iIiwgc2VydmVyX21hc2s9IiIpOgorICAgICAgICAiIiJTZW5kIGEgTElO
S1MgY29tbWFuZC4iIiIKKyAgICAgICAgY29tbWFuZCA9ICJMSU5LUyIKKyAgICAgICAgaWYgcmVt
b3RlX3NlcnZlcjoKKyAgICAgICAgICAgIGNvbW1hbmQgPSBjb21tYW5kICsgIiAiICsgcmVtb3Rl
X3NlcnZlcgorICAgICAgICBpZiBzZXJ2ZXJfbWFzazoKKyAgICAgICAgICAgIGNvbW1hbmQgPSBj
b21tYW5kICsgIiAiICsgc2VydmVyX21hc2sKKyAgICAgICAgc2VsZi5zZW5kX3Jhdyhjb21tYW5k
KQorCisgICAgZGVmIGxpc3Qoc2VsZiwgY2hhbm5lbHM9Tm9uZSwgc2VydmVyPSIiKToKKyAgICAg
ICAgIiIiU2VuZCBhIExJU1QgY29tbWFuZC4iIiIKKyAgICAgICAgY29tbWFuZCA9ICJMSVNUIgor
ICAgICAgICBpZiBjaGFubmVsczoKKyAgICAgICAgICAgIGNvbW1hbmQgPSBjb21tYW5kICsgIiAi
ICsgIiwiLmpvaW4oY2hhbm5lbHMpCisgICAgICAgIGlmIHNlcnZlcjoKKyAgICAgICAgICAgIGNv
bW1hbmQgPSBjb21tYW5kICsgIiAiICsgc2VydmVyCisgICAgICAgIHNlbGYuc2VuZF9yYXcoY29t
bWFuZCkKKworICAgIGRlZiBsdXNlcnMoc2VsZiwgc2VydmVyPSIiKToKKyAgICAgICAgIiIiU2Vu
ZCBhIExVU0VSUyBjb21tYW5kLiIiIgorICAgICAgICBzZWxmLnNlbmRfcmF3KCJMVVNFUlMiICsg
KHNlcnZlciBhbmQgKCIgIiArIHNlcnZlcikpKQorCisgICAgZGVmIG1vZGUoc2VsZiwgdGFyZ2V0
LCBjb21tYW5kKToKKyAgICAgICAgIiIiU2VuZCBhIE1PREUgY29tbWFuZC4iIiIKKyAgICAgICAg
c2VsZi5zZW5kX3JhdygiTU9ERSAlcyAlcyIgJSAodGFyZ2V0LCBjb21tYW5kKSkKKworICAgIGRl
ZiBtb3RkKHNlbGYsIHNlcnZlcj0iIik6CisgICAgICAgICIiIlNlbmQgYW4gTU9URCBjb21tYW5k
LiIiIgorICAgICAgICBzZWxmLnNlbmRfcmF3KCJNT1REIiArIChzZXJ2ZXIgYW5kICgiICIgKyBz
ZXJ2ZXIpKSkKKworICAgIGRlZiBuYW1lcyhzZWxmLCBjaGFubmVscz1Ob25lKToKKyAgICAgICAg
IiIiU2VuZCBhIE5BTUVTIGNvbW1hbmQuIiIiCisgICAgICAgIHNlbGYuc2VuZF9yYXcoIk5BTUVT
IiArIChjaGFubmVscyBhbmQgKCIgIiArICIsIi5qb2luKGNoYW5uZWxzKSkgb3IgIiIpKQorCisg
ICAgZGVmIG5pY2soc2VsZiwgbmV3bmljayk6CisgICAgICAgICIiIlNlbmQgYSBOSUNLIGNvbW1h
bmQuIiIiCisgICAgICAgIHNlbGYuc2VuZF9yYXcoIk5JQ0sgIiArIG5ld25pY2spCisKKyAgICBk
ZWYgbm90aWNlKHNlbGYsIHRhcmdldCwgdGV4dCk6CisgICAgICAgICIiIlNlbmQgYSBOT1RJQ0Ug
Y29tbWFuZC4iIiIKKyAgICAgICAgIyBTaG91bGQgbGltaXQgbGVuKHRleHQpIGhlcmUhCisgICAg
ICAgIHNlbGYuc2VuZF9yYXcoIk5PVElDRSAlcyA6JXMiICUgKHRhcmdldCwgdGV4dCkpCisKKyAg
ICBkZWYgb3BlcihzZWxmLCBuaWNrLCBwYXNzd29yZCk6CisgICAgICAgICIiIlNlbmQgYW4gT1BF
UiBjb21tYW5kLiIiIgorICAgICAgICBzZWxmLnNlbmRfcmF3KCJPUEVSICVzICVzIiAlIChuaWNr
LCBwYXNzd29yZCkpCisKKyAgICBkZWYgcGFydChzZWxmLCBjaGFubmVscywgbWVzc2FnZT0iIik6
CisgICAgICAgICIiIlNlbmQgYSBQQVJUIGNvbW1hbmQuIiIiCisgICAgICAgIGlmIHR5cGUoY2hh
bm5lbHMpID09IHR5cGVzLlN0cmluZ1R5cGU6CisgICAgICAgICAgICBzZWxmLnNlbmRfcmF3KCJQ
QVJUICIgKyBjaGFubmVscyArIChtZXNzYWdlIGFuZCAoIiAiICsgbWVzc2FnZSkpKQorICAgICAg
ICBlbHNlOgorICAgICAgICAgICAgc2VsZi5zZW5kX3JhdygiUEFSVCAiICsgIiwiLmpvaW4oY2hh
bm5lbHMpICsgKG1lc3NhZ2UgYW5kICgiICIgKyBtZXNzYWdlKSkpCisKKyAgICBkZWYgcGFzc18o
c2VsZiwgcGFzc3dvcmQpOgorICAgICAgICAiIiJTZW5kIGEgUEFTUyBjb21tYW5kLiIiIgorICAg
ICAgICBzZWxmLnNlbmRfcmF3KCJQQVNTICIgKyBwYXNzd29yZCkKKworICAgIGRlZiBwaW5nKHNl
bGYsIHRhcmdldCwgdGFyZ2V0Mj0iIik6CisgICAgICAgICIiIlNlbmQgYSBQSU5HIGNvbW1hbmQu
IiIiCisgICAgICAgIHNlbGYuc2VuZF9yYXcoIlBJTkcgJXMlcyIgJSAodGFyZ2V0LCB0YXJnZXQy
IGFuZCAoIiAiICsgdGFyZ2V0MikpKQorCisgICAgZGVmIHBvbmcoc2VsZiwgdGFyZ2V0LCB0YXJn
ZXQyPSIiKToKKyAgICAgICAgIiIiU2VuZCBhIFBPTkcgY29tbWFuZC4iIiIKKyAgICAgICAgc2Vs
Zi5zZW5kX3JhdygiUE9ORyAlcyVzIiAlICh0YXJnZXQsIHRhcmdldDIgYW5kICgiICIgKyB0YXJn
ZXQyKSkpCisKKyAgICBkZWYgcHJpdm1zZyhzZWxmLCB0YXJnZXQsIHRleHQpOgorICAgICAgICAi
IiJTZW5kIGEgUFJJVk1TRyBjb21tYW5kLiIiIgorICAgICAgICAjIFNob3VsZCBsaW1pdCBsZW4o
dGV4dCkgaGVyZSEKKyAgICAgICAgc2VsZi5zZW5kX3JhdygiUFJJVk1TRyAlcyA6JXMiICUgKHRh
cmdldCwgdGV4dCkpCisKKyAgICBkZWYgcHJpdm1zZ19tYW55KHNlbGYsIHRhcmdldHMsIHRleHQp
OgorICAgICAgICAiIiJTZW5kIGEgUFJJVk1TRyBjb21tYW5kIHRvIG11bHRpcGxlIHRhcmdldHMu
IiIiCisgICAgICAgICMgU2hvdWxkIGxpbWl0IGxlbih0ZXh0KSBoZXJlIQorICAgICAgICBzZWxm
LnNlbmRfcmF3KCJQUklWTVNHICVzIDolcyIgJSAoIiwiLmpvaW4odGFyZ2V0cyksIHRleHQpKQor
CisgICAgZGVmIHF1aXQoc2VsZiwgbWVzc2FnZT0iIik6CisgICAgICAgICIiIlNlbmQgYSBRVUlU
IGNvbW1hbmQuIiIiCisgICAgICAgICMgTm90ZSB0aGF0IG1hbnkgSVJDIHNlcnZlcnMgZG9uJ3Qg
dXNlIHlvdXIgUVVJVCBtZXNzYWdlCisgICAgICAgICMgdW5sZXNzIHlvdSd2ZSBiZWVuIGNvbm5l
Y3RlZCBmb3IgYXQgbGVhc3QgNSBtaW51dGVzIQorICAgICAgICBzZWxmLnNlbmRfcmF3KCJRVUlU
IiArIChtZXNzYWdlIGFuZCAoIiA6IiArIG1lc3NhZ2UpKSkKKworICAgIGRlZiBzZW5kX3Jhdyhz
ZWxmLCBzdHJpbmcpOgorICAgICAgICAiIiJTZW5kIHJhdyBzdHJpbmcgdG8gdGhlIHNlcnZlci4K
KworICAgICAgICBUaGUgc3RyaW5nIHdpbGwgYmUgcGFkZGVkIHdpdGggYXBwcm9wcmlhdGUgQ1Ig
TEYuCisgICAgICAgICIiIgorICAgICAgICBpZiBzZWxmLnNvY2tldCBpcyBOb25lOgorICAgICAg
ICAgICAgcmFpc2UgU2VydmVyTm90Q29ubmVjdGVkRXJyb3IsICJOb3QgY29ubmVjdGVkLiIKKyAg
ICAgICAgdHJ5OgorICAgICAgICAgICAgaWYgc2VsZi5zc2w6CisgICAgICAgICAgICAgICAgc2Vs
Zi5zc2wud3JpdGUoc3RyaW5nICsgIlxyXG4iKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAg
ICAgICAgICBzZWxmLnNvY2tldC5zZW5kKHN0cmluZyArICJcclxuIikKKyAgICAgICAgICAgIGlm
IERFQlVHOgorICAgICAgICAgICAgICAgIHByaW50ICJUTyBTRVJWRVI6Iiwgc3RyaW5nCisgICAg
ICAgIGV4Y2VwdCBzb2NrZXQuZXJyb3IsIHg6CisgICAgICAgICAgICAjIE91Y2ghCisgICAgICAg
ICAgICBzZWxmLmRpc2Nvbm5lY3QoIkNvbm5lY3Rpb24gcmVzZXQgYnkgcGVlci4iKQorCisgICAg
ZGVmIHNxdWl0KHNlbGYsIHNlcnZlciwgY29tbWVudD0iIik6CisgICAgICAgICIiIlNlbmQgYW4g
U1FVSVQgY29tbWFuZC4iIiIKKyAgICAgICAgc2VsZi5zZW5kX3JhdygiU1FVSVQgJXMlcyIgJSAo
c2VydmVyLCBjb21tZW50IGFuZCAoIiA6IiArIGNvbW1lbnQpKSkKKworICAgIGRlZiBzdGF0cyhz
ZWxmLCBzdGF0c3R5cGUsIHNlcnZlcj0iIik6CisgICAgICAgICIiIlNlbmQgYSBTVEFUUyBjb21t
YW5kLiIiIgorICAgICAgICBzZWxmLnNlbmRfcmF3KCJTVEFUUyAlcyVzIiAlIChzdGF0c3R5cGUs
IHNlcnZlciBhbmQgKCIgIiArIHNlcnZlcikpKQorCisgICAgZGVmIHRpbWUoc2VsZiwgc2VydmVy
PSIiKToKKyAgICAgICAgIiIiU2VuZCBhIFRJTUUgY29tbWFuZC4iIiIKKyAgICAgICAgc2VsZi5z
ZW5kX3JhdygiVElNRSIgKyAoc2VydmVyIGFuZCAoIiAiICsgc2VydmVyKSkpCisKKyAgICBkZWYg
dG9waWMoc2VsZiwgY2hhbm5lbCwgbmV3X3RvcGljPU5vbmUpOgorICAgICAgICAiIiJTZW5kIGEg
VE9QSUMgY29tbWFuZC4iIiIKKyAgICAgICAgaWYgbmV3X3RvcGljIGlzIE5vbmU6CisgICAgICAg
ICAgICBzZWxmLnNlbmRfcmF3KCJUT1BJQyAiICsgY2hhbm5lbCkKKyAgICAgICAgZWxzZToKKyAg
ICAgICAgICAgIHNlbGYuc2VuZF9yYXcoIlRPUElDICVzIDolcyIgJSAoY2hhbm5lbCwgbmV3X3Rv
cGljKSkKKworICAgIGRlZiB0cmFjZShzZWxmLCB0YXJnZXQ9IiIpOgorICAgICAgICAiIiJTZW5k
IGEgVFJBQ0UgY29tbWFuZC4iIiIKKyAgICAgICAgc2VsZi5zZW5kX3JhdygiVFJBQ0UiICsgKHRh
cmdldCBhbmQgKCIgIiArIHRhcmdldCkpKQorCisgICAgZGVmIHVzZXIoc2VsZiwgdXNlcm5hbWUs
IHJlYWxuYW1lKToKKyAgICAgICAgIiIiU2VuZCBhIFVTRVIgY29tbWFuZC4iIiIKKyAgICAgICAg
c2VsZi5zZW5kX3JhdygiVVNFUiAlcyAwICogOiVzIiAlICh1c2VybmFtZSwgcmVhbG5hbWUpKQor
CisgICAgZGVmIHVzZXJob3N0KHNlbGYsIG5pY2tzKToKKyAgICAgICAgIiIiU2VuZCBhIFVTRVJI
T1NUIGNvbW1hbmQuIiIiCisgICAgICAgIHNlbGYuc2VuZF9yYXcoIlVTRVJIT1NUICIgKyAiLCIu
am9pbihuaWNrcykpCisKKyAgICBkZWYgdXNlcnMoc2VsZiwgc2VydmVyPSIiKToKKyAgICAgICAg
IiIiU2VuZCBhIFVTRVJTIGNvbW1hbmQuIiIiCisgICAgICAgIHNlbGYuc2VuZF9yYXcoIlVTRVJT
IiArIChzZXJ2ZXIgYW5kICgiICIgKyBzZXJ2ZXIpKSkKKworICAgIGRlZiB2ZXJzaW9uKHNlbGYs
IHNlcnZlcj0iIik6CisgICAgICAgICIiIlNlbmQgYSBWRVJTSU9OIGNvbW1hbmQuIiIiCisgICAg
ICAgIHNlbGYuc2VuZF9yYXcoIlZFUlNJT04iICsgKHNlcnZlciBhbmQgKCIgIiArIHNlcnZlcikp
KQorCisgICAgZGVmIHdhbGxvcHMoc2VsZiwgdGV4dCk6CisgICAgICAgICIiIlNlbmQgYSBXQUxM
T1BTIGNvbW1hbmQuIiIiCisgICAgICAgIHNlbGYuc2VuZF9yYXcoIldBTExPUFMgOiIgKyB0ZXh0
KQorCisgICAgZGVmIHdobyhzZWxmLCB0YXJnZXQ9IiIsIG9wPSIiKToKKyAgICAgICAgIiIiU2Vu
ZCBhIFdITyBjb21tYW5kLiIiIgorICAgICAgICBzZWxmLnNlbmRfcmF3KCJXSE8lcyVzIiAlICh0
YXJnZXQgYW5kICgiICIgKyB0YXJnZXQpLCBvcCBhbmQgKCIgbyIpKSkKKworICAgIGRlZiB3aG9p
cyhzZWxmLCB0YXJnZXRzKToKKyAgICAgICAgIiIiU2VuZCBhIFdIT0lTIGNvbW1hbmQuIiIiCisg
ICAgICAgIHNlbGYuc2VuZF9yYXcoIldIT0lTICIgKyAiLCIuam9pbih0YXJnZXRzKSkKKworICAg
IGRlZiB3aG93YXMoc2VsZiwgbmljaywgbWF4PSIiLCBzZXJ2ZXI9IiIpOgorICAgICAgICAiIiJT
ZW5kIGEgV0hPV0FTIGNvbW1hbmQuIiIiCisgICAgICAgIHNlbGYuc2VuZF9yYXcoIldIT1dBUyAl
cyVzJXMiICUgKG5pY2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG1heCBhbmQgKCIgIiArIG1heCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNlcnZlciBhbmQgKCIgIiArIHNlcnZlcikpKQorCitjbGFzcyBEQ0NDb25uZWN0aW9u
RXJyb3IoSVJDRXJyb3IpOgorICAgIHBhc3MKKworCitjbGFzcyBEQ0NDb25uZWN0aW9uKENvbm5l
Y3Rpb24pOgorICAgICIiIlRoaXMgY2xhc3MgcmVwcmVzZW50cyBhIERDQyBjb25uZWN0aW9uLgor
CisgICAgRENDQ29ubmVjdGlvbiBvYmplY3RzIGFyZSBpbnN0YW50aWF0ZWQgYnkgY2FsbGluZyB0
aGUgZGNjCisgICAgbWV0aG9kIG9uIGFuIElSQyBvYmplY3QuCisgICAgIiIiCisgICAgZGVmIF9f
aW5pdF9fKHNlbGYsIGlyY2xpYm9iaiwgZGNjdHlwZSk6CisgICAgICAgIENvbm5lY3Rpb24uX19p
bml0X18oc2VsZiwgaXJjbGlib2JqKQorICAgICAgICBzZWxmLmNvbm5lY3RlZCA9IDAKKyAgICAg
ICAgc2VsZi5wYXNzaXZlID0gMAorICAgICAgICBzZWxmLmRjY3R5cGUgPSBkY2N0eXBlCisgICAg
ICAgIHNlbGYucGVlcmFkZHJlc3MgPSBOb25lCisgICAgICAgIHNlbGYucGVlcnBvcnQgPSBOb25l
CisKKyAgICBkZWYgY29ubmVjdChzZWxmLCBhZGRyZXNzLCBwb3J0KToKKyAgICAgICAgIiIiQ29u
bmVjdC9yZWNvbm5lY3QgdG8gYSBEQ0MgcGVlci4KKworICAgICAgICBBcmd1bWVudHM6CisgICAg
ICAgICAgICBhZGRyZXNzIC0tIEhvc3QvSVAgYWRkcmVzcyBvZiB0aGUgcGVlci4KKworICAgICAg
ICAgICAgcG9ydCAtLSBUaGUgcG9ydCBudW1iZXIgdG8gY29ubmVjdCB0by4KKworICAgICAgICBS
ZXR1cm5zIHRoZSBEQ0NDb25uZWN0aW9uIG9iamVjdC4KKyAgICAgICAgIiIiCisgICAgICAgIHNl
bGYucGVlcmFkZHJlc3MgPSBzb2NrZXQuZ2V0aG9zdGJ5bmFtZShhZGRyZXNzKQorICAgICAgICBz
ZWxmLnBlZXJwb3J0ID0gcG9ydAorICAgICAgICBzZWxmLnNvY2tldCA9IE5vbmUKKyAgICAgICAg
c2VsZi5wcmV2aW91c19idWZmZXIgPSAiIgorICAgICAgICBzZWxmLmhhbmRsZXJzID0ge30KKyAg
ICAgICAgc2VsZi5zb2NrZXQgPSBzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVULCBzb2NrZXQu
U09DS19TVFJFQU0pCisgICAgICAgIHNlbGYucGFzc2l2ZSA9IDAKKyAgICAgICAgdHJ5OgorICAg
ICAgICAgICAgc2VsZi5zb2NrZXQuY29ubmVjdCgoc2VsZi5wZWVyYWRkcmVzcywgc2VsZi5wZWVy
cG9ydCkpCisgICAgICAgIGV4Y2VwdCBzb2NrZXQuZXJyb3IsIHg6CisgICAgICAgICAgICByYWlz
ZSBEQ0NDb25uZWN0aW9uRXJyb3IsICJDb3VsZG4ndCBjb25uZWN0IHRvIHNvY2tldDogJXMiICUg
eAorICAgICAgICBzZWxmLmNvbm5lY3RlZCA9IDEKKyAgICAgICAgaWYgc2VsZi5pcmNsaWJvYmou
Zm5fdG9fYWRkX3NvY2tldDoKKyAgICAgICAgICAgIHNlbGYuaXJjbGlib2JqLmZuX3RvX2FkZF9z
b2NrZXQoc2VsZi5zb2NrZXQpCisgICAgICAgIHJldHVybiBzZWxmCisKKyAgICBkZWYgbGlzdGVu
KHNlbGYpOgorICAgICAgICAiIiJXYWl0IGZvciBhIGNvbm5lY3Rpb24vcmVjb25uZWN0aW9uIGZy
b20gYSBEQ0MgcGVlci4KKworICAgICAgICBSZXR1cm5zIHRoZSBEQ0NDb25uZWN0aW9uIG9iamVj
dC4KKworICAgICAgICBUaGUgbG9jYWwgSVAgYWRkcmVzcyBhbmQgcG9ydCBhcmUgYXZhaWxhYmxl
IGFzCisgICAgICAgIHNlbGYubG9jYWxhZGRyZXNzIGFuZCBzZWxmLmxvY2FscG9ydC4gIEFmdGVy
IGNvbm5lY3Rpb24gZnJvbSBhCisgICAgICAgIHBlZXIsIHRoZSBwZWVyIGFkZHJlc3MgYW5kIHBv
cnQgYXJlIGF2YWlsYWJsZSBhcworICAgICAgICBzZWxmLnBlZXJhZGRyZXNzIGFuZCBzZWxmLnBl
ZXJwb3J0LgorICAgICAgICAiIiIKKyAgICAgICAgc2VsZi5wcmV2aW91c19idWZmZXIgPSAiIgor
ICAgICAgICBzZWxmLmhhbmRsZXJzID0ge30KKyAgICAgICAgc2VsZi5zb2NrZXQgPSBzb2NrZXQu
c29ja2V0KHNvY2tldC5BRl9JTkVULCBzb2NrZXQuU09DS19TVFJFQU0pCisgICAgICAgIHNlbGYu
cGFzc2l2ZSA9IDEKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2VsZi5zb2NrZXQuYmluZCgo
c29ja2V0LmdldGhvc3RieW5hbWUoc29ja2V0LmdldGhvc3RuYW1lKCkpLCAwKSkKKyAgICAgICAg
ICAgIHNlbGYubG9jYWxhZGRyZXNzLCBzZWxmLmxvY2FscG9ydCA9IHNlbGYuc29ja2V0LmdldHNv
Y2tuYW1lKCkKKyAgICAgICAgICAgIHNlbGYuc29ja2V0Lmxpc3RlbigxMCkKKyAgICAgICAgZXhj
ZXB0IHNvY2tldC5lcnJvciwgeDoKKyAgICAgICAgICAgIHJhaXNlIERDQ0Nvbm5lY3Rpb25FcnJv
ciwgIkNvdWxkbid0IGJpbmQgc29ja2V0OiAlcyIgJSB4CisgICAgICAgIHJldHVybiBzZWxmCisK
KyAgICBkZWYgZGlzY29ubmVjdChzZWxmLCBtZXNzYWdlPSIiKToKKyAgICAgICAgIiIiSGFuZyB1
cCB0aGUgY29ubmVjdGlvbiBhbmQgY2xvc2UgdGhlIG9iamVjdC4KKworICAgICAgICBBcmd1bWVu
dHM6CisKKyAgICAgICAgICAgIG1lc3NhZ2UgLS0gUXVpdCBtZXNzYWdlLgorICAgICAgICAiIiIK
KyAgICAgICAgaWYgbm90IHNlbGYuY29ubmVjdGVkOgorICAgICAgICAgICAgcmV0dXJuCisKKyAg
ICAgICAgc2VsZi5jb25uZWN0ZWQgPSAwCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNlbGYu
c29ja2V0LmNsb3NlKCkKKyAgICAgICAgZXhjZXB0IHNvY2tldC5lcnJvciwgeDoKKyAgICAgICAg
ICAgIHBhc3MKKyAgICAgICAgc2VsZi5zb2NrZXQgPSBOb25lCisgICAgICAgIHNlbGYuaXJjbGli
b2JqLl9oYW5kbGVfZXZlbnQoCisgICAgICAgICAgICBzZWxmLAorICAgICAgICAgICAgRXZlbnQo
ImRjY19kaXNjb25uZWN0Iiwgc2VsZi5wZWVyYWRkcmVzcywgIiIsIFttZXNzYWdlXSkpCisgICAg
ICAgIHNlbGYuaXJjbGlib2JqLl9yZW1vdmVfY29ubmVjdGlvbihzZWxmKQorCisgICAgZGVmIHBy
b2Nlc3NfZGF0YShzZWxmKToKKyAgICAgICAgIiIiW0ludGVybmFsXSIiIgorCisgICAgICAgIGlm
IHNlbGYucGFzc2l2ZSBhbmQgbm90IHNlbGYuY29ubmVjdGVkOgorICAgICAgICAgICAgY29ubiwg
KHNlbGYucGVlcmFkZHJlc3MsIHNlbGYucGVlcnBvcnQpID0gc2VsZi5zb2NrZXQuYWNjZXB0KCkK
KyAgICAgICAgICAgIHNlbGYuc29ja2V0LmNsb3NlKCkKKyAgICAgICAgICAgIHNlbGYuc29ja2V0
ID0gY29ubgorICAgICAgICAgICAgc2VsZi5jb25uZWN0ZWQgPSAxCisgICAgICAgICAgICBpZiBE
RUJVRzoKKyAgICAgICAgICAgICAgICBwcmludCAiRENDIGNvbm5lY3Rpb24gZnJvbSAlczolZCIg
JSAoCisgICAgICAgICAgICAgICAgICAgIHNlbGYucGVlcmFkZHJlc3MsIHNlbGYucGVlcnBvcnQp
CisgICAgICAgICAgICBzZWxmLmlyY2xpYm9iai5faGFuZGxlX2V2ZW50KAorICAgICAgICAgICAg
ICAgIHNlbGYsCisgICAgICAgICAgICAgICAgRXZlbnQoImRjY19jb25uZWN0Iiwgc2VsZi5wZWVy
YWRkcmVzcywgTm9uZSwgTm9uZSkpCisgICAgICAgICAgICByZXR1cm4KKworICAgICAgICB0cnk6
CisgICAgICAgICAgICBuZXdfZGF0YSA9IHNlbGYuc29ja2V0LnJlY3YoMioqMTQpCisgICAgICAg
IGV4Y2VwdCBzb2NrZXQuZXJyb3IsIHg6CisgICAgICAgICAgICAjIFRoZSBzZXJ2ZXIgaHVuZyB1
cC4KKyAgICAgICAgICAgIHNlbGYuZGlzY29ubmVjdCgiQ29ubmVjdGlvbiByZXNldCBieSBwZWVy
IikKKyAgICAgICAgICAgIHJldHVybgorICAgICAgICBpZiBub3QgbmV3X2RhdGE6CisgICAgICAg
ICAgICAjIFJlYWQgbm90aGluZzogY29ubmVjdGlvbiBtdXN0IGJlIGRvd24uCisgICAgICAgICAg
ICBzZWxmLmRpc2Nvbm5lY3QoIkNvbm5lY3Rpb24gcmVzZXQgYnkgcGVlciIpCisgICAgICAgICAg
ICByZXR1cm4KKworICAgICAgICBpZiBzZWxmLmRjY3R5cGUgPT0gImNoYXQiOgorICAgICAgICAg
ICAgIyBUaGUgc3BlY2lmaWNhdGlvbiBzYXlzIGxpbmVzIGFyZSB0ZXJtaW5hdGVkIHdpdGggTEYs
IGJ1dAorICAgICAgICAgICAgIyBpdCBzZWVtcyBzYWZlciB0byBoYW5kbGUgQ1IgTEYgdGVybWlu
YXRpb25zIHRvby4KKyAgICAgICAgICAgIGNodW5rcyA9IF9saW5lc2VwX3JlZ2V4cC5zcGxpdChz
ZWxmLnByZXZpb3VzX2J1ZmZlciArIG5ld19kYXRhKQorCisgICAgICAgICAgICAjIFNhdmUgdGhl
IGxhc3QsIHVuZmluaXNoZWQgbGluZS4KKyAgICAgICAgICAgIHNlbGYucHJldmlvdXNfYnVmZmVy
ID0gY2h1bmtzWy0xXQorICAgICAgICAgICAgaWYgbGVuKHNlbGYucHJldmlvdXNfYnVmZmVyKSA+
IDIqKjE0OgorICAgICAgICAgICAgICAgICMgQmFkIHBlZXIhIE5hdWdodHkgcGVlciEKKyAgICAg
ICAgICAgICAgICBzZWxmLmRpc2Nvbm5lY3QoKQorICAgICAgICAgICAgICAgIHJldHVybgorICAg
ICAgICAgICAgY2h1bmtzID0gY2h1bmtzWzotMV0KKyAgICAgICAgZWxzZToKKyAgICAgICAgICAg
IGNodW5rcyA9IFtuZXdfZGF0YV0KKworICAgICAgICBjb21tYW5kID0gImRjY21zZyIKKyAgICAg
ICAgcHJlZml4ID0gc2VsZi5wZWVyYWRkcmVzcworICAgICAgICB0YXJnZXQgPSBOb25lCisgICAg
ICAgIGZvciBjaHVuayBpbiBjaHVua3M6CisgICAgICAgICAgICBpZiBERUJVRzoKKyAgICAgICAg
ICAgICAgICBwcmludCAiRlJPTSBQRUVSOiIsIGNodW5rCisgICAgICAgICAgICBhcmd1bWVudHMg
PSBbY2h1bmtdCisgICAgICAgICAgICBpZiBERUJVRzoKKyAgICAgICAgICAgICAgICBwcmludCAi
Y29tbWFuZDogJXMsIHNvdXJjZTogJXMsIHRhcmdldDogJXMsIGFyZ3VtZW50czogJXMiICUgKAor
ICAgICAgICAgICAgICAgICAgICBjb21tYW5kLCBwcmVmaXgsIHRhcmdldCwgYXJndW1lbnRzKQor
ICAgICAgICAgICAgc2VsZi5pcmNsaWJvYmouX2hhbmRsZV9ldmVudCgKKyAgICAgICAgICAgICAg
ICBzZWxmLAorICAgICAgICAgICAgICAgIEV2ZW50KGNvbW1hbmQsIHByZWZpeCwgdGFyZ2V0LCBh
cmd1bWVudHMpKQorCisgICAgZGVmIF9nZXRfc29ja2V0KHNlbGYpOgorICAgICAgICAiIiJbSW50
ZXJuYWxdIiIiCisgICAgICAgIHJldHVybiBzZWxmLnNvY2tldAorCisgICAgZGVmIHByaXZtc2co
c2VsZiwgc3RyaW5nKToKKyAgICAgICAgIiIiU2VuZCBkYXRhIHRvIERDQyBwZWVyLgorCisgICAg
ICAgIFRoZSBzdHJpbmcgd2lsbCBiZSBwYWRkZWQgd2l0aCBhcHByb3ByaWF0ZSBMRiBpZiBpdCdz
IGEgRENDCisgICAgICAgIENIQVQgc2Vzc2lvbi4KKyAgICAgICAgIiIiCisgICAgICAgIHRyeToK
KyAgICAgICAgICAgIHNlbGYuc29ja2V0LnNlbmQoc3RyaW5nKQorICAgICAgICAgICAgaWYgc2Vs
Zi5kY2N0eXBlID09ICJjaGF0IjoKKyAgICAgICAgICAgICAgICBzZWxmLnNvY2tldC5zZW5kKCJc
biIpCisgICAgICAgICAgICBpZiBERUJVRzoKKyAgICAgICAgICAgICAgICBwcmludCAiVE8gUEVF
UjogJXNcbiIgJSBzdHJpbmcKKyAgICAgICAgZXhjZXB0IHNvY2tldC5lcnJvciwgeDoKKyAgICAg
ICAgICAgICMgT3VjaCEKKyAgICAgICAgICAgIHNlbGYuZGlzY29ubmVjdCgiQ29ubmVjdGlvbiBy
ZXNldCBieSBwZWVyLiIpCisKK2NsYXNzIFNpbXBsZUlSQ0NsaWVudDoKKyAgICAiIiJBIHNpbXBs
ZSBzaW5nbGUtc2VydmVyIElSQyBjbGllbnQgY2xhc3MuCisKKyAgICBUaGlzIGlzIGFuIGV4YW1w
bGUgb2YgYW4gb2JqZWN0LW9yaWVudGVkIHdyYXBwZXIgb2YgdGhlIElSQworICAgIGZyYW1ld29y
ay4gIEEgcmVhbCBJUkMgY2xpZW50IGNhbiBiZSBtYWRlIGJ5IHN1YmNsYXNzaW5nIHRoaXMKKyAg
ICBjbGFzcyBhbmQgYWRkaW5nIGFwcHJvcHJpYXRlIG1ldGhvZHMuCisKKyAgICBUaGUgbWV0aG9k
IG9uX2pvaW4gd2lsbCBiZSBjYWxsZWQgd2hlbiBhICJqb2luIiBldmVudCBpcyBjcmVhdGVkCisg
ICAgKHdoaWNoIGlzIGRvbmUgd2hlbiB0aGUgc2VydmVyIHNlbmRzIGEgSk9JTiBtZXNzc2FnZS9j
b21tYW5kKSwKKyAgICBvbl9wcml2bXNnIHdpbGwgYmUgY2FsbGVkIGZvciAicHJpdm1zZyIgZXZl
bnRzLCBhbmQgc28gb24uICBUaGUKKyAgICBoYW5kbGVyIG1ldGhvZHMgZ2V0IHR3byBhcmd1bWVu
dHM6IHRoZSBjb25uZWN0aW9uIG9iamVjdCAoc2FtZSBhcworICAgIHNlbGYuY29ubmVjdGlvbikg
YW5kIHRoZSBldmVudCBvYmplY3QuCisKKyAgICBJbnN0YW5jZSBhdHRyaWJ1dGVzIHRoYXQgY2Fu
IGJlIHVzZWQgYnkgc3ViIGNsYXNzZXM6CisKKyAgICAgICAgaXJjb2JqIC0tIFRoZSBJUkMgaW5z
dGFuY2UuCisKKyAgICAgICAgY29ubmVjdGlvbiAtLSBUaGUgU2VydmVyQ29ubmVjdGlvbiBpbnN0
YW5jZS4KKworICAgICAgICBkY2NfY29ubmVjdGlvbnMgLS0gQSBsaXN0IG9mIERDQ0Nvbm5lY3Rp
b24gaW5zdGFuY2VzLgorICAgICIiIgorICAgIGRlZiBfX2luaXRfXyhzZWxmKToKKyAgICAgICAg
c2VsZi5pcmNvYmogPSBJUkMoKQorICAgICAgICBzZWxmLmNvbm5lY3Rpb24gPSBzZWxmLmlyY29i
ai5zZXJ2ZXIoKQorICAgICAgICBzZWxmLmRjY19jb25uZWN0aW9ucyA9IFtdCisgICAgICAgIHNl
bGYuaXJjb2JqLmFkZF9nbG9iYWxfaGFuZGxlcigiYWxsX2V2ZW50cyIsIHNlbGYuX2Rpc3BhdGNo
ZXIsIC0xMCkKKyAgICAgICAgc2VsZi5pcmNvYmouYWRkX2dsb2JhbF9oYW5kbGVyKCJkY2NfZGlz
Y29ubmVjdCIsIHNlbGYuX2RjY19kaXNjb25uZWN0LCAtMTApCisKKyAgICBkZWYgX2Rpc3BhdGNo
ZXIoc2VsZiwgYywgZSk6CisgICAgICAgICIiIltJbnRlcm5hbF0iIiIKKyAgICAgICAgbSA9ICJv
bl8iICsgZS5ldmVudHR5cGUoKQorICAgICAgICBpZiBoYXNhdHRyKHNlbGYsIG0pOgorICAgICAg
ICAgICAgZ2V0YXR0cihzZWxmLCBtKShjLCBlKQorCisgICAgZGVmIF9kY2NfZGlzY29ubmVjdChz
ZWxmLCBjLCBlKToKKyAgICAgICAgc2VsZi5kY2NfY29ubmVjdGlvbnMucmVtb3ZlKGMpCisKKyAg
ICBkZWYgY29ubmVjdChzZWxmLCBzZXJ2ZXIsIHBvcnQsIG5pY2tuYW1lLCBwYXNzd29yZD1Ob25l
LCB1c2VybmFtZT1Ob25lLAorICAgICAgICAgICAgICAgIGlyY25hbWU9Tm9uZSwgbG9jYWxhZGRy
ZXNzPSIiLCBsb2NhbHBvcnQ9MCwgc3NsPUZhbHNlLCBpcHY2PUZhbHNlKToKKyAgICAgICAgIiIi
Q29ubmVjdC9yZWNvbm5lY3QgdG8gYSBzZXJ2ZXIuCisKKyAgICAgICAgQXJndW1lbnRzOgorCisg
ICAgICAgICAgICBzZXJ2ZXIgLS0gU2VydmVyIG5hbWUuCisKKyAgICAgICAgICAgIHBvcnQgLS0g
UG9ydCBudW1iZXIuCisKKyAgICAgICAgICAgIG5pY2tuYW1lIC0tIFRoZSBuaWNrbmFtZS4KKwor
ICAgICAgICAgICAgcGFzc3dvcmQgLS0gUGFzc3dvcmQgKGlmIGFueSkuCisKKyAgICAgICAgICAg
IHVzZXJuYW1lIC0tIFRoZSB1c2VybmFtZS4KKworICAgICAgICAgICAgaXJjbmFtZSAtLSBUaGUg
SVJDIG5hbWUuCisKKyAgICAgICAgICAgIGxvY2FsYWRkcmVzcyAtLSBCaW5kIHRoZSBjb25uZWN0
aW9uIHRvIGEgc3BlY2lmaWMgbG9jYWwgSVAgYWRkcmVzcy4KKworICAgICAgICAgICAgbG9jYWxw
b3J0IC0tIEJpbmQgdGhlIGNvbm5lY3Rpb24gdG8gYSBzcGVjaWZpYyBsb2NhbCBwb3J0LgorCisg
ICAgICAgICAgICBzc2wgLS0gRW5hYmxlIHN1cHBvcnQgZm9yIHNzbC4KKworICAgICAgICAgICAg
aXB2NiAtLSBFbmFibGUgc3VwcG9ydCBmb3IgaXB2Ni4KKworICAgICAgICBUaGlzIGZ1bmN0aW9u
IGNhbiBiZSBjYWxsZWQgdG8gcmVjb25uZWN0IGEgY2xvc2VkIGNvbm5lY3Rpb24uCisgICAgICAg
ICIiIgorICAgICAgICBzZWxmLmNvbm5lY3Rpb24uY29ubmVjdChzZXJ2ZXIsIHBvcnQsIG5pY2tu
YW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXNzd29yZCwgdXNlcm5hbWUs
IGlyY25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2FsYWRkcmVzcywg
bG9jYWxwb3J0LCBzc2wsIGlwdjYpCisKKyAgICBkZWYgZGNjX2Nvbm5lY3Qoc2VsZiwgYWRkcmVz
cywgcG9ydCwgZGNjdHlwZT0iY2hhdCIpOgorICAgICAgICAiIiJDb25uZWN0IHRvIGEgRENDIHBl
ZXIuCisKKyAgICAgICAgQXJndW1lbnRzOgorCisgICAgICAgICAgICBhZGRyZXNzIC0tIElQIGFk
ZHJlc3Mgb2YgdGhlIHBlZXIuCisKKyAgICAgICAgICAgIHBvcnQgLS0gUG9ydCB0byBjb25uZWN0
IHRvLgorCisgICAgICAgIFJldHVybnMgYSBEQ0NDb25uZWN0aW9uIGluc3RhbmNlLgorICAgICAg
ICAiIiIKKyAgICAgICAgZGNjID0gc2VsZi5pcmNvYmouZGNjKGRjY3R5cGUpCisgICAgICAgIHNl
bGYuZGNjX2Nvbm5lY3Rpb25zLmFwcGVuZChkY2MpCisgICAgICAgIGRjYy5jb25uZWN0KGFkZHJl
c3MsIHBvcnQpCisgICAgICAgIHJldHVybiBkY2MKKworICAgIGRlZiBkY2NfbGlzdGVuKHNlbGYs
IGRjY3R5cGU9ImNoYXQiKToKKyAgICAgICAgIiIiTGlzdGVuIGZvciBjb25uZWN0aW9ucyBmcm9t
IGEgRENDIHBlZXIuCisKKyAgICAgICAgUmV0dXJucyBhIERDQ0Nvbm5lY3Rpb24gaW5zdGFuY2Uu
CisgICAgICAgICIiIgorICAgICAgICBkY2MgPSBzZWxmLmlyY29iai5kY2MoZGNjdHlwZSkKKyAg
ICAgICAgc2VsZi5kY2NfY29ubmVjdGlvbnMuYXBwZW5kKGRjYykKKyAgICAgICAgZGNjLmxpc3Rl
bigpCisgICAgICAgIHJldHVybiBkY2MKKworICAgIGRlZiBzdGFydChzZWxmKToKKyAgICAgICAg
IiIiU3RhcnQgdGhlIElSQyBjbGllbnQuIiIiCisgICAgICAgIHNlbGYuaXJjb2JqLnByb2Nlc3Nf
Zm9yZXZlcigpCisKKworY2xhc3MgRXZlbnQ6CisgICAgIiIiQ2xhc3MgcmVwcmVzZW50aW5nIGFu
IElSQyBldmVudC4iIiIKKyAgICBkZWYgX19pbml0X18oc2VsZiwgZXZlbnR0eXBlLCBzb3VyY2Us
IHRhcmdldCwgYXJndW1lbnRzPU5vbmUpOgorICAgICAgICAiIiJDb25zdHJ1Y3RvciBvZiBFdmVu
dCBvYmplY3RzLgorCisgICAgICAgIEFyZ3VtZW50czoKKworICAgICAgICAgICAgZXZlbnR0eXBl
IC0tIEEgc3RyaW5nIGRlc2NyaWJpbmcgdGhlIGV2ZW50LgorCisgICAgICAgICAgICBzb3VyY2Ug
LS0gVGhlIG9yaWdpbmF0b3Igb2YgdGhlIGV2ZW50IChhIG5pY2sgbWFzayBvciBhIHNlcnZlciku
CisKKyAgICAgICAgICAgIHRhcmdldCAtLSBUaGUgdGFyZ2V0IG9mIHRoZSBldmVudCAoYSBuaWNr
IG9yIGEgY2hhbm5lbCkuCisKKyAgICAgICAgICAgIGFyZ3VtZW50cyAtLSBBbnkgZXZlbnQgc3Bl
Y2lmaWMgYXJndW1lbnRzLgorICAgICAgICAiIiIKKyAgICAgICAgc2VsZi5fZXZlbnR0eXBlID0g
ZXZlbnR0eXBlCisgICAgICAgIHNlbGYuX3NvdXJjZSA9IHNvdXJjZQorICAgICAgICBzZWxmLl90
YXJnZXQgPSB0YXJnZXQKKyAgICAgICAgaWYgYXJndW1lbnRzOgorICAgICAgICAgICAgc2VsZi5f
YXJndW1lbnRzID0gYXJndW1lbnRzCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLl9h
cmd1bWVudHMgPSBbXQorCisgICAgZGVmIGV2ZW50dHlwZShzZWxmKToKKyAgICAgICAgIiIiR2V0
IHRoZSBldmVudCB0eXBlLiIiIgorICAgICAgICByZXR1cm4gc2VsZi5fZXZlbnR0eXBlCisKKyAg
ICBkZWYgc291cmNlKHNlbGYpOgorICAgICAgICAiIiJHZXQgdGhlIGV2ZW50IHNvdXJjZS4iIiIK
KyAgICAgICAgcmV0dXJuIHNlbGYuX3NvdXJjZQorCisgICAgZGVmIHRhcmdldChzZWxmKToKKyAg
ICAgICAgIiIiR2V0IHRoZSBldmVudCB0YXJnZXQuIiIiCisgICAgICAgIHJldHVybiBzZWxmLl90
YXJnZXQKKworICAgIGRlZiBhcmd1bWVudHMoc2VsZik6CisgICAgICAgICIiIkdldCB0aGUgZXZl
bnQgYXJndW1lbnRzLiIiIgorICAgICAgICByZXR1cm4gc2VsZi5fYXJndW1lbnRzCisKK19MT1df
TEVWRUxfUVVPVEUgPSAiXDAyMCIKK19DVENQX0xFVkVMX1FVT1RFID0gIlwxMzQiCitfQ1RDUF9E
RUxJTUlURVIgPSAiXDAwMSIKKworX2xvd19sZXZlbF9tYXBwaW5nID0geworICAgICIwIjogIlww
MDAiLAorICAgICJuIjogIlxuIiwKKyAgICAiciI6ICJcciIsCisgICAgX0xPV19MRVZFTF9RVU9U
RTogX0xPV19MRVZFTF9RVU9URQorfQorCitfbG93X2xldmVsX3JlZ2V4cCA9IHJlLmNvbXBpbGUo
X0xPV19MRVZFTF9RVU9URSArICIoLikiKQorCitkZWYgbWFza19tYXRjaGVzKG5pY2ssIG1hc2sp
OgorICAgICIiIkNoZWNrIGlmIGEgbmljayBtYXRjaGVzIGEgbWFzay4KKworICAgIFJldHVybnMg
dHJ1ZSBpZiB0aGUgbmljayBtYXRjaGVzLCBvdGhlcndpc2UgZmFsc2UuCisgICAgIiIiCisgICAg
bmljayA9IGlyY19sb3dlcihuaWNrKQorICAgIG1hc2sgPSBpcmNfbG93ZXIobWFzaykKKyAgICBt
YXNrID0gbWFzay5yZXBsYWNlKCJcXCIsICJcXFxcIikKKyAgICBmb3IgY2ggaW4gIi4kfFtdKCl7
fSsiOgorICAgICAgICBtYXNrID0gbWFzay5yZXBsYWNlKGNoLCAiXFwiICsgY2gpCisgICAgbWFz
ayA9IG1hc2sucmVwbGFjZSgiPyIsICIuIikKKyAgICBtYXNrID0gbWFzay5yZXBsYWNlKCIqIiwg
Ii4qIikKKyAgICByID0gcmUuY29tcGlsZShtYXNrLCByZS5JR05PUkVDQVNFKQorICAgIHJldHVy
biByLm1hdGNoKG5pY2spCisKK19zcGVjaWFsID0gIi1bXVxcYF57fSIKK25pY2tfY2hhcmFjdGVy
cyA9IHN0cmluZy5hc2NpaV9sZXR0ZXJzICsgc3RyaW5nLmRpZ2l0cyArIF9zcGVjaWFsCitfaXJj
c3RyaW5nX3RyYW5zbGF0aW9uID0gc3RyaW5nLm1ha2V0cmFucyhzdHJpbmcuYXNjaWlfdXBwZXJj
YXNlICsgIltdXFxeIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHN0cmluZy5hc2NpaV9sb3dlcmNhc2UgKyAie318fiIpCisKK2RlZiBpcmNfbG93ZXIocyk6Cisg
ICAgIiIiUmV0dXJucyBhIGxvd2VyY2FzZWQgc3RyaW5nLgorCisgICAgVGhlIGRlZmluaXRpb24g
b2YgbG93ZXJjYXNlZCBjb21lcyBmcm9tIHRoZSBJUkMgc3BlY2lmaWNhdGlvbiAoUkZDCisgICAg
MTQ1OSkuCisgICAgIiIiCisgICAgcmV0dXJuIHMudHJhbnNsYXRlKF9pcmNzdHJpbmdfdHJhbnNs
YXRpb24pCisKK2RlZiBfY3RjcF9kZXF1b3RlKG1lc3NhZ2UpOgorICAgICIiIltJbnRlcm5hbF0g
RGVxdW90ZSBhIG1lc3NhZ2UgYWNjb3JkaW5nIHRvIENUQ1Agc3BlY2lmaWNhdGlvbnMuCisKKyAg
ICBUaGUgZnVuY3Rpb24gcmV0dXJucyBhIGxpc3Qgd2hlcmUgZWFjaCBlbGVtZW50IGNhbiBiZSBl
aXRoZXIgYQorICAgIHN0cmluZyAobm9ybWFsIG1lc3NhZ2UpIG9yIGEgdHVwbGUgb2Ygb25lIG9y
IHR3byBzdHJpbmdzICh0YWdnZWQKKyAgICBtZXNzYWdlcykuICBJZiBhIHR1cGxlIGhhcyBvbmx5
IG9uZSBlbGVtZW50IChpZSBpcyBhIHNpbmdsZXRvbiksCisgICAgdGhhdCBlbGVtZW50IGlzIHRo
ZSB0YWc7IG90aGVyd2lzZSB0aGUgdHVwbGUgaGFzIHR3byBlbGVtZW50czogdGhlCisgICAgdGFn
IGFuZCB0aGUgZGF0YS4KKworICAgIEFyZ3VtZW50czoKKworICAgICAgICBtZXNzYWdlIC0tIFRo
ZSBtZXNzYWdlIHRvIGJlIGRlY29kZWQuCisgICAgIiIiCisKKyAgICBkZWYgX2xvd19sZXZlbF9y
ZXBsYWNlKG1hdGNoX29iaik6CisgICAgICAgIGNoID0gbWF0Y2hfb2JqLmdyb3VwKDEpCisKKyAg
ICAgICAgIyBJZiBsb3dfbGV2ZWxfbWFwcGluZyBkb2Vzbid0IGhhdmUgdGhlIGNoYXJhY3RlciBh
cyBrZXksIHdlCisgICAgICAgICMgc2hvdWxkIGp1c3QgcmV0dXJuIHRoZSBjaGFyYWN0ZXIuCisg
ICAgICAgIHJldHVybiBfbG93X2xldmVsX21hcHBpbmcuZ2V0KGNoLCBjaCkKKworICAgIGlmIF9M
T1dfTEVWRUxfUVVPVEUgaW4gbWVzc2FnZToKKyAgICAgICAgIyBZdXAsIHRoZXJlIHdhcyBhIHF1
b3RlLiAgUmVsZWFzZSB0aGUgZGVxdW90ZXIsIG1hbiEKKyAgICAgICAgbWVzc2FnZSA9IF9sb3df
bGV2ZWxfcmVnZXhwLnN1YihfbG93X2xldmVsX3JlcGxhY2UsIG1lc3NhZ2UpCisKKyAgICBpZiBf
Q1RDUF9ERUxJTUlURVIgbm90IGluIG1lc3NhZ2U6CisgICAgICAgIHJldHVybiBbbWVzc2FnZV0K
KyAgICBlbHNlOgorICAgICAgICAjIFNwbGl0IGl0IGludG8gcGFydHMuICAoRG9lcyBhbnkgSVJD
IGNsaWVudCBhY3R1YWxseSAqdXNlKgorICAgICAgICAjIENUQ1Agc3RhY2tpbmcgbGlrZSB0aGlz
PykKKyAgICAgICAgY2h1bmtzID0gbWVzc2FnZS5zcGxpdChfQ1RDUF9ERUxJTUlURVIpCisKKyAg
ICAgICAgbWVzc2FnZXMgPSBbXQorICAgICAgICBpID0gMAorICAgICAgICB3aGlsZSBpIDwgbGVu
KGNodW5rcyktMToKKyAgICAgICAgICAgICMgQWRkIG1lc3NhZ2UgaWYgaXQncyBub24tZW1wdHku
CisgICAgICAgICAgICBpZiBsZW4oY2h1bmtzW2ldKSA+IDA6CisgICAgICAgICAgICAgICAgbWVz
c2FnZXMuYXBwZW5kKGNodW5rc1tpXSkKKworICAgICAgICAgICAgaWYgaSA8IGxlbihjaHVua3Mp
LTI6CisgICAgICAgICAgICAgICAgIyBBeWUhICBDVENQIHRhZ2dlZCBkYXRhIGFoZWFkIQorICAg
ICAgICAgICAgICAgIG1lc3NhZ2VzLmFwcGVuZCh0dXBsZShjaHVua3NbaSsxXS5zcGxpdCgiICIs
IDEpKSkKKworICAgICAgICAgICAgaSA9IGkgKyAyCisKKyAgICAgICAgaWYgbGVuKGNodW5rcykg
JSAyID09IDA6CisgICAgICAgICAgICAjIEhleSwgYSBsb25lbHkgX0NUQ1BfREVMSU1JVEVSIGF0
IHRoZSBlbmQhICBUaGlzIG1lYW5zCisgICAgICAgICAgICAjIHRoYXQgdGhlIGxhc3QgY2h1bmss
IGluY2x1ZGluZyB0aGUgZGVsaW1pdGVyLCBpcyBhCisgICAgICAgICAgICAjIG5vcm1hbCBtZXNz
YWdlISAgKFRoaXMgaXMgYWNjb3JkaW5nIHRvIHRoZSBDVENQCisgICAgICAgICAgICAjIHNwZWNp
ZmljYXRpb24uKQorICAgICAgICAgICAgbWVzc2FnZXMuYXBwZW5kKF9DVENQX0RFTElNSVRFUiAr
IGNodW5rc1stMV0pCisKKyAgICAgICAgcmV0dXJuIG1lc3NhZ2VzCisKK2RlZiBpc19jaGFubmVs
KHN0cmluZyk6CisgICAgIiIiQ2hlY2sgaWYgYSBzdHJpbmcgaXMgYSBjaGFubmVsIG5hbWUuCisK
KyAgICBSZXR1cm5zIHRydWUgaWYgdGhlIGFyZ3VtZW50IGlzIGEgY2hhbm5lbCBuYW1lLCBvdGhl
cndpc2UgZmFsc2UuCisgICAgIiIiCisgICAgcmV0dXJuIHN0cmluZyBhbmQgc3RyaW5nWzBdIGlu
ICIjJishIgorCitkZWYgaXBfbnVtc3RyX3RvX3F1YWQobnVtKToKKyAgICAiIiJDb252ZXJ0IGFu
IElQIG51bWJlciBhcyBhbiBpbnRlZ2VyIGdpdmVuIGluIEFTQ0lJCisgICAgcmVwcmVzZW50YXRp
b24gKGUuZy4gJzMyMzIyMzU1MjEnKSB0byBhbiBJUCBhZGRyZXNzIHN0cmluZworICAgIChlLmcu
ICcxOTIuMTY4LjAuMScpLiIiIgorICAgIG4gPSBsb25nKG51bSkKKyAgICBwID0gbWFwKHN0ciwg
bWFwKGludCwgW24gPj4gMjQgJiAweEZGLCBuID4+IDE2ICYgMHhGRiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG4gPj4gOCAmIDB4RkYsIG4gJiAweEZGXSkpCisgICAgcmV0dXJuICIuIi5q
b2luKHApCisKK2RlZiBpcF9xdWFkX3RvX251bXN0cihxdWFkKToKKyAgICAiIiJDb252ZXJ0IGFu
IElQIGFkZHJlc3Mgc3RyaW5nIChlLmcuICcxOTIuMTY4LjAuMScpIHRvIGFuIElQCisgICAgbnVt
YmVyIGFzIGFuIGludGVnZXIgZ2l2ZW4gaW4gQVNDSUkgcmVwcmVzZW50YXRpb24KKyAgICAoZS5n
LiAnMzIzMjIzNTUyMScpLiIiIgorICAgIHAgPSBtYXAobG9uZywgcXVhZC5zcGxpdCgiLiIpKQor
ICAgIHMgPSBzdHIoKHBbMF0gPDwgMjQpIHwgKHBbMV0gPDwgMTYpIHwgKHBbMl0gPDwgOCkgfCBw
WzNdKQorICAgIGlmIHNbLTFdID09ICJMIjoKKyAgICAgICAgcyA9IHNbOi0xXQorICAgIHJldHVy
biBzCisKK2RlZiBubV90b19uKHMpOgorICAgICIiIkdldCB0aGUgbmljayBwYXJ0IG9mIGEgbmlj
a21hc2suCisKKyAgICAoVGhlIHNvdXJjZSBvZiBhbiBFdmVudCBpcyBhIG5pY2ttYXNrLikKKyAg
ICAiIiIKKyAgICByZXR1cm4gcy5zcGxpdCgiISIpWzBdCisKK2RlZiBubV90b191aChzKToKKyAg
ICAiIiJHZXQgdGhlIHVzZXJob3N0IHBhcnQgb2YgYSBuaWNrbWFzay4KKworICAgIChUaGUgc291
cmNlIG9mIGFuIEV2ZW50IGlzIGEgbmlja21hc2suKQorICAgICIiIgorICAgIHJldHVybiBzLnNw
bGl0KCIhIilbMV0KKworZGVmIG5tX3RvX2gocyk6CisgICAgIiIiR2V0IHRoZSBob3N0IHBhcnQg
b2YgYSBuaWNrbWFzay4KKworICAgIChUaGUgc291cmNlIG9mIGFuIEV2ZW50IGlzIGEgbmlja21h
c2suKQorICAgICIiIgorICAgIHJldHVybiBzLnNwbGl0KCJAIilbMV0KKworZGVmIG5tX3RvX3Uo
cyk6CisgICAgIiIiR2V0IHRoZSB1c2VyIHBhcnQgb2YgYSBuaWNrbWFzay4KKworICAgIChUaGUg
c291cmNlIG9mIGFuIEV2ZW50IGlzIGEgbmlja21hc2suKQorICAgICIiIgorICAgIHMgPSBzLnNw
bGl0KCIhIilbMV0KKyAgICByZXR1cm4gcy5zcGxpdCgiQCIpWzBdCisKK2RlZiBwYXJzZV9uaWNr
X21vZGVzKG1vZGVfc3RyaW5nKToKKyAgICAiIiJQYXJzZSBhIG5pY2sgbW9kZSBzdHJpbmcuCisK
KyAgICBUaGUgZnVuY3Rpb24gcmV0dXJucyBhIGxpc3Qgb2YgbGlzdHMgd2l0aCB0aHJlZSBtZW1i
ZXJzOiBzaWduLAorICAgIG1vZGUgYW5kIGFyZ3VtZW50LiAgVGhlIHNpZ24gaXMgXCIrXCIgb3Ig
XCItXCIuICBUaGUgYXJndW1lbnQgaXMKKyAgICBhbHdheXMgTm9uZS4KKworICAgIEV4YW1wbGU6
CisKKyAgICA+Pj4gaXJjbGliLnBhcnNlX25pY2tfbW9kZXMoXCIrYWItY1wiKQorICAgIFtbJysn
LCAnYScsIE5vbmVdLCBbJysnLCAnYicsIE5vbmVdLCBbJy0nLCAnYycsIE5vbmVdXQorICAgICIi
IgorCisgICAgcmV0dXJuIF9wYXJzZV9tb2Rlcyhtb2RlX3N0cmluZywgIiIpCisKK2RlZiBwYXJz
ZV9jaGFubmVsX21vZGVzKG1vZGVfc3RyaW5nKToKKyAgICAiIiJQYXJzZSBhIGNoYW5uZWwgbW9k
ZSBzdHJpbmcuCisKKyAgICBUaGUgZnVuY3Rpb24gcmV0dXJucyBhIGxpc3Qgb2YgbGlzdHMgd2l0
aCB0aHJlZSBtZW1iZXJzOiBzaWduLAorICAgIG1vZGUgYW5kIGFyZ3VtZW50LiAgVGhlIHNpZ24g
aXMgXCIrXCIgb3IgXCItXCIuICBUaGUgYXJndW1lbnQgaXMKKyAgICBOb25lIGlmIG1vZGUgaXNu
J3Qgb25lIG9mIFwiYlwiLCBcImtcIiwgXCJsXCIsIFwidlwiIG9yIFwib1wiLgorCisgICAgRXhh
bXBsZToKKworICAgID4+PiBpcmNsaWIucGFyc2VfY2hhbm5lbF9tb2RlcyhcIithYi1jIGZvb1wi
KQorICAgIFtbJysnLCAnYScsIE5vbmVdLCBbJysnLCAnYicsICdmb28nXSwgWyctJywgJ2MnLCBO
b25lXV0KKyAgICAiIiIKKworICAgIHJldHVybiBfcGFyc2VfbW9kZXMobW9kZV9zdHJpbmcsICJi
a2x2byIpCisKK2RlZiBfcGFyc2VfbW9kZXMobW9kZV9zdHJpbmcsIHVuYXJ5X21vZGVzPSIiKToK
KyAgICAiIiJbSW50ZXJuYWxdIiIiCisgICAgbW9kZXMgPSBbXQorICAgIGFyZ19jb3VudCA9IDAK
KworICAgICMgU3RhdGUgdmFyaWFibGUuCisgICAgc2lnbiA9ICIiCisKKyAgICBhID0gbW9kZV9z
dHJpbmcuc3BsaXQoKQorICAgIGlmIGxlbihhKSA9PSAwOgorICAgICAgICByZXR1cm4gW10KKyAg
ICBlbHNlOgorICAgICAgICBtb2RlX3BhcnQsIGFyZ3MgPSBhWzBdLCBhWzE6XQorCisgICAgaWYg
bW9kZV9wYXJ0WzBdIG5vdCBpbiAiKy0iOgorICAgICAgICByZXR1cm4gW10KKyAgICBmb3IgY2gg
aW4gbW9kZV9wYXJ0OgorICAgICAgICBpZiBjaCBpbiAiKy0iOgorICAgICAgICAgICAgc2lnbiA9
IGNoCisgICAgICAgIGVsaWYgY2ggPT0gIiAiOgorICAgICAgICAgICAgY29sbGVjdGluZ19hcmd1
bWVudHMgPSAxCisgICAgICAgIGVsaWYgY2ggaW4gdW5hcnlfbW9kZXM6CisgICAgICAgICAgICBp
ZiBsZW4oYXJncykgPj0gYXJnX2NvdW50ICsgMToKKyAgICAgICAgICAgICAgICBtb2Rlcy5hcHBl
bmQoW3NpZ24sIGNoLCBhcmdzW2FyZ19jb3VudF1dKQorICAgICAgICAgICAgICAgIGFyZ19jb3Vu
dCA9IGFyZ19jb3VudCArIDEKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgbW9k
ZXMuYXBwZW5kKFtzaWduLCBjaCwgTm9uZV0pCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBt
b2Rlcy5hcHBlbmQoW3NpZ24sIGNoLCBOb25lXSkKKyAgICByZXR1cm4gbW9kZXMKKworZGVmIF9w
aW5nX3Bvbmdlcihjb25uZWN0aW9uLCBldmVudCk6CisgICAgIiIiW0ludGVybmFsXSIiIgorICAg
IGNvbm5lY3Rpb24ucG9uZyhldmVudC50YXJnZXQoKSkKKworIyBOdW1lcmljIHRhYmxlIG1vc3Rs
eSBzdG9sZW4gZnJvbSB0aGUgUGVybCBJUkMgbW9kdWxlIChOZXQ6OklSQykuCitudW1lcmljX2V2
ZW50cyA9IHsKKyAgICAiMDAxIjogIndlbGNvbWUiLAorICAgICIwMDIiOiAieW91cmhvc3QiLAor
ICAgICIwMDMiOiAiY3JlYXRlZCIsCisgICAgIjAwNCI6ICJteWluZm8iLAorICAgICIwMDUiOiAi
ZmVhdHVyZWxpc3QiLCAgIyBYWFgKKyAgICAiMjAwIjogInRyYWNlbGluayIsCisgICAgIjIwMSI6
ICJ0cmFjZWNvbm5lY3RpbmciLAorICAgICIyMDIiOiAidHJhY2VoYW5kc2hha2UiLAorICAgICIy
MDMiOiAidHJhY2V1bmtub3duIiwKKyAgICAiMjA0IjogInRyYWNlb3BlcmF0b3IiLAorICAgICIy
MDUiOiAidHJhY2V1c2VyIiwKKyAgICAiMjA2IjogInRyYWNlc2VydmVyIiwKKyAgICAiMjA3Ijog
InRyYWNlc2VydmljZSIsCisgICAgIjIwOCI6ICJ0cmFjZW5ld3R5cGUiLAorICAgICIyMDkiOiAi
dHJhY2VjbGFzcyIsCisgICAgIjIxMCI6ICJ0cmFjZXJlY29ubmVjdCIsCisgICAgIjIxMSI6ICJz
dGF0c2xpbmtpbmZvIiwKKyAgICAiMjEyIjogInN0YXRzY29tbWFuZHMiLAorICAgICIyMTMiOiAi
c3RhdHNjbGluZSIsCisgICAgIjIxNCI6ICJzdGF0c25saW5lIiwKKyAgICAiMjE1IjogInN0YXRz
aWxpbmUiLAorICAgICIyMTYiOiAic3RhdHNrbGluZSIsCisgICAgIjIxNyI6ICJzdGF0c3FsaW5l
IiwKKyAgICAiMjE4IjogInN0YXRzeWxpbmUiLAorICAgICIyMTkiOiAiZW5kb2ZzdGF0cyIsCisg
ICAgIjIyMSI6ICJ1bW9kZWlzIiwKKyAgICAiMjMxIjogInNlcnZpY2VpbmZvIiwKKyAgICAiMjMy
IjogImVuZG9mc2VydmljZXMiLAorICAgICIyMzMiOiAic2VydmljZSIsCisgICAgIjIzNCI6ICJz
ZXJ2bGlzdCIsCisgICAgIjIzNSI6ICJzZXJ2bGlzdGVuZCIsCisgICAgIjI0MSI6ICJzdGF0c2xs
aW5lIiwKKyAgICAiMjQyIjogInN0YXRzdXB0aW1lIiwKKyAgICAiMjQzIjogInN0YXRzb2xpbmUi
LAorICAgICIyNDQiOiAic3RhdHNobGluZSIsCisgICAgIjI1MCI6ICJsdXNlcmNvbm5zIiwKKyAg
ICAiMjUxIjogImx1c2VyY2xpZW50IiwKKyAgICAiMjUyIjogImx1c2Vyb3AiLAorICAgICIyNTMi
OiAibHVzZXJ1bmtub3duIiwKKyAgICAiMjU0IjogImx1c2VyY2hhbm5lbHMiLAorICAgICIyNTUi
OiAibHVzZXJtZSIsCisgICAgIjI1NiI6ICJhZG1pbm1lIiwKKyAgICAiMjU3IjogImFkbWlubG9j
MSIsCisgICAgIjI1OCI6ICJhZG1pbmxvYzIiLAorICAgICIyNTkiOiAiYWRtaW5lbWFpbCIsCisg
ICAgIjI2MSI6ICJ0cmFjZWxvZyIsCisgICAgIjI2MiI6ICJlbmRvZnRyYWNlIiwKKyAgICAiMjYz
IjogInRyeWFnYWluIiwKKyAgICAiMjY1IjogIm5fbG9jYWwiLAorICAgICIyNjYiOiAibl9nbG9i
YWwiLAorICAgICIzMDAiOiAibm9uZSIsCisgICAgIjMwMSI6ICJhd2F5IiwKKyAgICAiMzAyIjog
InVzZXJob3N0IiwKKyAgICAiMzAzIjogImlzb24iLAorICAgICIzMDUiOiAidW5hd2F5IiwKKyAg
ICAiMzA2IjogIm5vd2F3YXkiLAorICAgICIzMTEiOiAid2hvaXN1c2VyIiwKKyAgICAiMzEyIjog
Indob2lzc2VydmVyIiwKKyAgICAiMzEzIjogIndob2lzb3BlcmF0b3IiLAorICAgICIzMTQiOiAi
d2hvd2FzdXNlciIsCisgICAgIjMxNSI6ICJlbmRvZndobyIsCisgICAgIjMxNiI6ICJ3aG9pc2No
YW5vcCIsCisgICAgIjMxNyI6ICJ3aG9pc2lkbGUiLAorICAgICIzMTgiOiAiZW5kb2Z3aG9pcyIs
CisgICAgIjMxOSI6ICJ3aG9pc2NoYW5uZWxzIiwKKyAgICAiMzIxIjogImxpc3RzdGFydCIsCisg
ICAgIjMyMiI6ICJsaXN0IiwKKyAgICAiMzIzIjogImxpc3RlbmQiLAorICAgICIzMjQiOiAiY2hh
bm5lbG1vZGVpcyIsCisgICAgIjMyOSI6ICJjaGFubmVsY3JlYXRlIiwKKyAgICAiMzMxIjogIm5v
dG9waWMiLAorICAgICIzMzIiOiAiY3VycmVudHRvcGljIiwKKyAgICAiMzMzIjogInRvcGljaW5m
byIsCisgICAgIjM0MSI6ICJpbnZpdGluZyIsCisgICAgIjM0MiI6ICJzdW1tb25pbmciLAorICAg
ICIzNDYiOiAiaW52aXRlbGlzdCIsCisgICAgIjM0NyI6ICJlbmRvZmludml0ZWxpc3QiLAorICAg
ICIzNDgiOiAiZXhjZXB0bGlzdCIsCisgICAgIjM0OSI6ICJlbmRvZmV4Y2VwdGxpc3QiLAorICAg
ICIzNTEiOiAidmVyc2lvbiIsCisgICAgIjM1MiI6ICJ3aG9yZXBseSIsCisgICAgIjM1MyI6ICJu
YW1yZXBseSIsCisgICAgIjM2MSI6ICJraWxsZG9uZSIsCisgICAgIjM2MiI6ICJjbG9zaW5nIiwK
KyAgICAiMzYzIjogImNsb3NlZW5kIiwKKyAgICAiMzY0IjogImxpbmtzIiwKKyAgICAiMzY1Ijog
ImVuZG9mbGlua3MiLAorICAgICIzNjYiOiAiZW5kb2ZuYW1lcyIsCisgICAgIjM2NyI6ICJiYW5s
aXN0IiwKKyAgICAiMzY4IjogImVuZG9mYmFubGlzdCIsCisgICAgIjM2OSI6ICJlbmRvZndob3dh
cyIsCisgICAgIjM3MSI6ICJpbmZvIiwKKyAgICAiMzcyIjogIm1vdGQiLAorICAgICIzNzMiOiAi
aW5mb3N0YXJ0IiwKKyAgICAiMzc0IjogImVuZG9maW5mbyIsCisgICAgIjM3NSI6ICJtb3Rkc3Rh
cnQiLAorICAgICIzNzYiOiAiZW5kb2Ztb3RkIiwKKyAgICAiMzc3IjogIm1vdGQyIiwgICAgICAg
ICMgMTk5Ny0xMC0xNiAtLSB0a2lsCisgICAgIjM4MSI6ICJ5b3VyZW9wZXIiLAorICAgICIzODIi
OiAicmVoYXNoaW5nIiwKKyAgICAiMzg0IjogIm15cG9ydGlzIiwKKyAgICAiMzkxIjogInRpbWUi
LAorICAgICIzOTIiOiAidXNlcnNzdGFydCIsCisgICAgIjM5MyI6ICJ1c2VycyIsCisgICAgIjM5
NCI6ICJlbmRvZnVzZXJzIiwKKyAgICAiMzk1IjogIm5vdXNlcnMiLAorICAgICI0MDEiOiAibm9z
dWNobmljayIsCisgICAgIjQwMiI6ICJub3N1Y2hzZXJ2ZXIiLAorICAgICI0MDMiOiAibm9zdWNo
Y2hhbm5lbCIsCisgICAgIjQwNCI6ICJjYW5ub3RzZW5kdG9jaGFuIiwKKyAgICAiNDA1IjogInRv
b21hbnljaGFubmVscyIsCisgICAgIjQwNiI6ICJ3YXNub3N1Y2huaWNrIiwKKyAgICAiNDA3Ijog
InRvb21hbnl0YXJnZXRzIiwKKyAgICAiNDA5IjogIm5vb3JpZ2luIiwKKyAgICAiNDExIjogIm5v
cmVjaXBpZW50IiwKKyAgICAiNDEyIjogIm5vdGV4dHRvc2VuZCIsCisgICAgIjQxMyI6ICJub3Rv
cGxldmVsIiwKKyAgICAiNDE0IjogIndpbGR0b3BsZXZlbCIsCisgICAgIjQyMSI6ICJ1bmtub3du
Y29tbWFuZCIsCisgICAgIjQyMiI6ICJub21vdGQiLAorICAgICI0MjMiOiAibm9hZG1pbmluZm8i
LAorICAgICI0MjQiOiAiZmlsZWVycm9yIiwKKyAgICAiNDMxIjogIm5vbmlja25hbWVnaXZlbiIs
CisgICAgIjQzMiI6ICJlcnJvbmV1c25pY2tuYW1lIiwgIyBUaGlzcyBpeiBob3cgaXRzIHNwZWxk
IGluIHRoZWUgUkZDLgorICAgICI0MzMiOiAibmlja25hbWVpbnVzZSIsCisgICAgIjQzNiI6ICJu
aWNrY29sbGlzaW9uIiwKKyAgICAiNDM3IjogInVuYXZhaWxyZXNvdXJjZSIsICAjICJOaWNrIHRl
bXBvcmFsbHkgdW5hdmFpbGFibGUiCisgICAgIjQ0MSI6ICJ1c2Vybm90aW5jaGFubmVsIiwKKyAg
ICAiNDQyIjogIm5vdG9uY2hhbm5lbCIsCisgICAgIjQ0MyI6ICJ1c2Vyb25jaGFubmVsIiwKKyAg
ICAiNDQ0IjogIm5vbG9naW4iLAorICAgICI0NDUiOiAic3VtbW9uZGlzYWJsZWQiLAorICAgICI0
NDYiOiAidXNlcnNkaXNhYmxlZCIsCisgICAgIjQ1MSI6ICJub3RyZWdpc3RlcmVkIiwKKyAgICAi
NDYxIjogIm5lZWRtb3JlcGFyYW1zIiwKKyAgICAiNDYyIjogImFscmVhZHlyZWdpc3RlcmVkIiwK
KyAgICAiNDYzIjogIm5vcGVybWZvcmhvc3QiLAorICAgICI0NjQiOiAicGFzc3dkbWlzbWF0Y2gi
LAorICAgICI0NjUiOiAieW91cmViYW5uZWRjcmVlcCIsICMgSSBsb3ZlIHRoaXMgb25lLi4uCisg
ICAgIjQ2NiI6ICJ5b3V3aWxsYmViYW5uZWQiLAorICAgICI0NjciOiAia2V5c2V0IiwKKyAgICAi
NDcxIjogImNoYW5uZWxpc2Z1bGwiLAorICAgICI0NzIiOiAidW5rbm93bm1vZGUiLAorICAgICI0
NzMiOiAiaW52aXRlb25seWNoYW4iLAorICAgICI0NzQiOiAiYmFubmVkZnJvbWNoYW4iLAorICAg
ICI0NzUiOiAiYmFkY2hhbm5lbGtleSIsCisgICAgIjQ3NiI6ICJiYWRjaGFubWFzayIsCisgICAg
IjQ3NyI6ICJub2NoYW5tb2RlcyIsICAjICJDaGFubmVsIGRvZXNuJ3Qgc3VwcG9ydCBtb2RlcyIK
KyAgICAiNDc4IjogImJhbmxpc3RmdWxsIiwKKyAgICAiNDgxIjogIm5vcHJpdmlsZWdlcyIsCisg
ICAgIjQ4MiI6ICJjaGFub3ByaXZzbmVlZGVkIiwKKyAgICAiNDgzIjogImNhbnRraWxsc2VydmVy
IiwKKyAgICAiNDg0IjogInJlc3RyaWN0ZWQiLCAgICMgQ29ubmVjdGlvbiBpcyByZXN0cmljdGVk
CisgICAgIjQ4NSI6ICJ1bmlxb3Bwcml2c25lZWRlZCIsCisgICAgIjQ5MSI6ICJub29wZXJob3N0
IiwKKyAgICAiNDkyIjogIm5vc2VydmljZWhvc3QiLAorICAgICI1MDEiOiAidW1vZGV1bmtub3du
ZmxhZyIsCisgICAgIjUwMiI6ICJ1c2Vyc2RvbnRtYXRjaCIsCit9CisKK2dlbmVyYXRlZF9ldmVu
dHMgPSBbCisgICAgIyBHZW5lcmF0ZWQgZXZlbnRzCisgICAgImRjY19jb25uZWN0IiwKKyAgICAi
ZGNjX2Rpc2Nvbm5lY3QiLAorICAgICJkY2Ntc2ciLAorICAgICJkaXNjb25uZWN0IiwKKyAgICAi
Y3RjcCIsCisgICAgImN0Y3ByZXBseSIsCitdCisKK3Byb3RvY29sX2V2ZW50cyA9IFsKKyAgICAj
IElSQyBwcm90b2NvbCBldmVudHMKKyAgICAiZXJyb3IiLAorICAgICJqb2luIiwKKyAgICAia2lj
ayIsCisgICAgIm1vZGUiLAorICAgICJwYXJ0IiwKKyAgICAicGluZyIsCisgICAgInByaXZtc2ci
LAorICAgICJwcml2bm90aWNlIiwKKyAgICAicHVibXNnIiwKKyAgICAicHVibm90aWNlIiwKKyAg
ICAicXVpdCIsCisgICAgImludml0ZSIsCisgICAgInBvbmciLAorXQorCithbGxfZXZlbnRzID0g
Z2VuZXJhdGVkX2V2ZW50cyArIHByb3RvY29sX2V2ZW50cyArIG51bWVyaWNfZXZlbnRzLnZhbHVl
cygpCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>