<?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>115863</bug_id>
          
          <creation_ts>2013-05-09 09:45:24 -0700</creation_ts>
          <short_desc>[WebSocket] Update pywebsocket to r760</short_desc>
          <delta_ts>2013-05-19 19:18:35 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>98840</blocked>
          <everconfirmed>0</everconfirmed>
          <reporter name="Lamarque V. Souza">lamarque</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>ap</cc>
    
    <cc>bruno.abinader</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dpranke</cc>
    
    <cc>glenn</cc>
    
    <cc>tyoshino</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>886920</commentid>
    <comment_count>0</comment_count>
    <who name="Lamarque V. Souza">lamarque</who>
    <bug_when>2013-05-09 09:45:24 -0700</bug_when>
    <thetext>This pywebsocket version supports draft-ietf-hybi-permessage-compression-08. I am going to port the patch in https://code.google.com/p/chromium/issues/detail?id=229290 to WebKit. I plan to also port the permessage-deflate extension from there.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>886935</commentid>
    <comment_count>1</comment_count>
      <attachid>201248</attachid>
    <who name="Lamarque V. Souza">lamarque</who>
    <bug_when>2013-05-09 10:18:27 -0700</bug_when>
    <thetext>Created attachment 201248
Patch

Proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>887230</commentid>
    <comment_count>2</comment_count>
      <attachid>201248</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-05-09 22:17:58 -0700</bug_when>
    <thetext>Comment on attachment 201248
Patch

rs=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>887231</commentid>
    <comment_count>3</comment_count>
      <attachid>201248</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-05-09 22:19:27 -0700</bug_when>
    <thetext>Comment on attachment 201248
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=201248&amp;action=review

&gt; LayoutTests/ChangeLog:21
&gt; +        * http/tests/websocket/tests/hybi/url-with-empty-query-expected.txt: Removed.
&gt; +        * http/tests/websocket/tests/hybi/url-with-empty-query.html: Removed.
&gt; +        * http/tests/websocket/tests/hybi/url-with-query-expected.txt: Removed.
&gt; +        * http/tests/websocket/tests/hybi/url-with-query.html: Removed.

Wait, why is this not supported? This has nothing to do with compression, please explain.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>887237</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-05-09 22:49:59 -0700</bug_when>
    <thetext>The commit-queue encountered the following flaky tests while processing attachment 201248:

media/track/track-remove-crash.html bug 115892 (author: eric.carlson@apple.com)
The commit-queue is continuing to process your patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>887315</commentid>
    <comment_count>5</comment_count>
    <who name="Lamarque V. Souza">lamarque</who>
    <bug_when>2013-05-10 06:01:05 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 201248 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=201248&amp;action=review
&gt; 
&gt; &gt; LayoutTests/ChangeLog:21
&gt; &gt; +        * http/tests/websocket/tests/hybi/url-with-empty-query-expected.txt: Removed.
&gt; &gt; +        * http/tests/websocket/tests/hybi/url-with-empty-query.html: Removed.
&gt; &gt; +        * http/tests/websocket/tests/hybi/url-with-query-expected.txt: Removed.
&gt; &gt; +        * http/tests/websocket/tests/hybi/url-with-query.html: Removed.
&gt; 
&gt; Wait, why is this not supported? This has nothing to do with compression, please explain.

Blink&apos;s developers deleted them because they failed after pywebsocket update. I have just researched and the tests were restored in a later commit [1]. I need to figure out what changes are necessary to make them work properly (they still does not work here).

[1] https://code.google.com/p/chromium/issues/detail?id=234541</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>887575</commentid>
    <comment_count>6</comment_count>
      <attachid>201413</attachid>
    <who name="Lamarque V. Souza">lamarque</who>
    <bug_when>2013-05-10 13:32:06 -0700</bug_when>
    <thetext>Created attachment 201413
Patch

Fix url-with-empty-query.html and url-with-query.html instead of removing them. The fix came from the patch in https://code.google.com/p/chromium/issues/detail?id=234541 . The fix does some changes that I think are not completely necessary, but for the sake of future updates coming from Blink I did not remove them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>889134</commentid>
    <comment_count>7</comment_count>
    <who name="Takeshi Yoshino">tyoshino</who>
    <bug_when>2013-05-14 21:56:20 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (In reply to comment #3)
&gt; &gt; Wait, why is this not supported? This has nothing to do with compression, please explain.
&gt; 
&gt; Blink&apos;s developers deleted them because they failed after pywebsocket update. I have just researched and the tests were restored in a later commit [1]. I need to figure out what changes are necessary to make them work properly (they still does not work here).

Yes. They were originally testing the Sec-WebSocket-Location header of HyBi 00 that no longer exists in RFC 6455. As side effect, they were testing that the string passed to the WebSocket constructor as url argument are correctly parsed (in order to build the Sec-WebSocket-Location header). To keep this code path tested for RFC 6455 protocol, too, we were setting the ws_location attribute of _StandaloneRequest object using one manually built from the host header and the resource inside the _wsh.py file.

Since Chromium no longer supports HyBi 00, we&apos;ve cleaned up these Sec-WebSocket-Location related files and code, and added back some new layout test items that directly check the host header and the resource.

http://src.chromium.org/viewvc/blink/trunk/LayoutTests/http/tests/websocket/tests/hybi/echo-host_wsh.py
http://src.chromium.org/viewvc/blink/trunk/LayoutTests/http/tests/websocket/tests/hybi/echo-path_wsh.py</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>889577</commentid>
    <comment_count>8</comment_count>
    <who name="Lamarque V. Souza">lamarque</who>
    <bug_when>2013-05-15 17:06:19 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; (In reply to comment #5)
&gt; &gt; (In reply to comment #3)
&gt; &gt; &gt; Wait, why is this not supported? This has nothing to do with compression, please explain.
&gt; &gt; 
&gt; &gt; Blink&apos;s developers deleted them because they failed after pywebsocket update. I have just researched and the tests were restored in a later commit [1]. I need to figure out what changes are necessary to make them work properly (they still does not work here).
&gt; 
&gt; Yes. They were originally testing the Sec-WebSocket-Location header of HyBi 00 that no longer exists in RFC 6455. As side effect, they were testing that the string passed to the WebSocket constructor as url argument are correctly parsed (in order to build the Sec-WebSocket-Location header). To keep this code path tested for RFC 6455 protocol, too, we were setting the ws_location attribute of _StandaloneRequest object using one manually built from the host header and the resource inside the _wsh.py file.

Thank you for the explanation.
 
&gt; Since Chromium no longer supports HyBi 00, we&apos;ve cleaned up these Sec-WebSocket-Location related files and code, and added back some new layout test items that directly check the host header and the resource.

The remove of support for HyBi 00 was done before the WebKit fork (or Blink was created), correct? The last mention of Sec-WebSocket-Location in WebKit is from last year by what I can see in git&apos;s log.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>889623</commentid>
    <comment_count>9</comment_count>
      <attachid>201413</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-05-15 18:52:34 -0700</bug_when>
    <thetext>Comment on attachment 201413
Patch

rs=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>890081</commentid>
    <comment_count>10</comment_count>
      <attachid>201413</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-05-16 17:33:26 -0700</bug_when>
    <thetext>Comment on attachment 201413
Patch

Clearing flags on attachment: 201413

Committed r150225: &lt;http://trac.webkit.org/changeset/150225&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>891096</commentid>
    <comment_count>11</comment_count>
    <who name="Takeshi Yoshino">tyoshino</who>
    <bug_when>2013-05-19 19:18:35 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; The remove of support for HyBi 00 was done before the WebKit fork (or Blink was created), correct? The last mention of Sec-WebSocket-Location in WebKit is from last year by what I can see in git&apos;s log.

Right. We added a flag to select the protocol version in July 2011 and stopped supporting HyBi 00 for Chromium.

http://trac.webkit.org/browser/trunk/Source/WebCore/websockets/WebSocketChannel.cpp?rev=90704

and completely removed HyBi 00 code in this change made in July 2012.

http://trac.webkit.org/browser/trunk/Source/WebCore/Modules/websockets/WebSocketChannel.cpp?rev=122199</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>201248</attachid>
            <date>2013-05-09 10:18:27 -0700</date>
            <delta_ts>2013-05-09 22:19:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-115863-20130509141729.patch</filename>
            <type>text/plain</type>
            <size>158179</size>
            <attacher name="Lamarque V. Souza">lamarque</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ5NzM0CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMWEyNDI5NWFiYjM2YzEyYTMxODRmYTQ3N2MwZGFjN2Q2
NWNmYWMyNS4uYmI4MzY0ZGIxMGIyNGM3NzZiYTA4ZmM1MDMzMDRmYjA3OWE0ZjA5NSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIx
MyBAQAorMjAxMy0wNS0wOSAgTGFtYXJxdWUgVi4gU291emEgIDxMYW1hcnF1ZS5Tb3V6YUBiYXN5
c2tvbS5jb20+CisKKyAgICAgICAgW1dlYlNvY2tldF0gVXBkYXRlIHB5d2Vic29ja2V0IHRvIHI3
NjAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExNTg2
MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFZlcnNp
b24gcjc2MCBzdXBwb3J0cyBhIG5ld2VyIGRyYWZ0IG9mIG1lc3NhZ2UgY29tcHJlc3Npb24uCisg
ICAgICAgIFdlIG5lZWQgdGhpcyB1cGRhdGUgdG8gZmluaXNoIHRoZSBwZXJtZXNzYWdlIGNvbXBy
ZXNzaW9uIHBhdGNoIGluCisgICAgICAgIGJ1ZyA5ODg0MC4KKworICAgICAgICAqIFNjcmlwdHMv
d2Via2l0cHkvdGhpcmRwYXJ0eS9tb2RfcHl3ZWJzb2NrZXQvX3N0cmVhbV9iYXNlLnB5OgorICAg
ICAgICAoU3RyZWFtQmFzZS5fcmVhZCk6CisgICAgICAgIChTdHJlYW1CYXNlLl9yZWFkLm9mKToK
KyAgICAgICAgKFN0cmVhbUJhc2UuX3dyaXRlKToKKyAgICAgICAgKFN0cmVhbUJhc2UucmVjZWl2
ZV9ieXRlcyk6CisgICAgICAgIChTdHJlYW1CYXNlLl9yZWFkX3VudGlsKToKKyAgICAgICAgKiBT
Y3JpcHRzL3dlYmtpdHB5L3RoaXJkcGFydHkvbW9kX3B5d2Vic29ja2V0L19zdHJlYW1faHliaS5w
eToKKyAgICAgICAgKHBhcnNlX2ZyYW1lKToKKyAgICAgICAgKFN0cmVhbU9wdGlvbnMuX19pbml0
X18pOgorICAgICAgICAoU3RyZWFtLl9faW5pdF9fKToKKyAgICAgICAgKFN0cmVhbS5fcmVjZWl2
ZV9mcmFtZV9hc19mcmFtZV9vYmplY3QpOgorICAgICAgICAoU3RyZWFtLl9nZXRfbWVzc2FnZV9m
cm9tX2ZyYW1lKToKKyAgICAgICAgKFN0cmVhbS5fcHJvY2Vzc19jbG9zZV9tZXNzYWdlKToKKyAg
ICAgICAgKFN0cmVhbS5jbG9zZV9jb25uZWN0aW9uKToKKyAgICAgICAgKFN0cmVhbS5nZXRfbGFz
dF9yZWNlaXZlZF9vcGNvZGUpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdGhpcmRwYXJ0
eS9tb2RfcHl3ZWJzb2NrZXQvY29tbW9uLnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkv
dGhpcmRwYXJ0eS9tb2RfcHl3ZWJzb2NrZXQvZGlzcGF0Y2gucHk6CisgICAgICAgIChEaXNwYXRj
aGVyLmRvX2V4dHJhX2hhbmRzaGFrZSk6CisgICAgICAgIChEaXNwYXRjaGVyLnRyYW5zZmVyX2Rh
dGEpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdGhpcmRwYXJ0eS9tb2RfcHl3ZWJzb2Nr
ZXQvZXh0ZW5zaW9ucy5weToKKyAgICAgICAgKEV4dGVuc2lvblByb2Nlc3NvckludGVyZmFjZS5f
X2luaXRfXyk6CisgICAgICAgIChFeHRlbnNpb25Qcm9jZXNzb3JJbnRlcmZhY2UucmVxdWVzdCk6
CisgICAgICAgIChFeHRlbnNpb25Qcm9jZXNzb3JJbnRlcmZhY2UpOgorICAgICAgICAoRXh0ZW5z
aW9uUHJvY2Vzc29ySW50ZXJmYWNlLm5hbWUpOgorICAgICAgICAoRXh0ZW5zaW9uUHJvY2Vzc29y
SW50ZXJmYWNlLmNoZWNrX2NvbnNpc3RlbmN5X3dpdGhfb3RoZXJfcHJvY2Vzc29ycyk6CisgICAg
ICAgIChFeHRlbnNpb25Qcm9jZXNzb3JJbnRlcmZhY2Uuc2V0X2FjdGl2ZSk6CisgICAgICAgIChF
eHRlbnNpb25Qcm9jZXNzb3JJbnRlcmZhY2UuaXNfYWN0aXZlKToKKyAgICAgICAgKEV4dGVuc2lv
blByb2Nlc3NvckludGVyZmFjZS5fZ2V0X2V4dGVuc2lvbl9yZXNwb25zZV9pbnRlcm5hbCk6Cisg
ICAgICAgIChFeHRlbnNpb25Qcm9jZXNzb3JJbnRlcmZhY2UuZ2V0X2V4dGVuc2lvbl9yZXNwb25z
ZSk6CisgICAgICAgIChFeHRlbnNpb25Qcm9jZXNzb3JJbnRlcmZhY2UuX3NldHVwX3N0cmVhbV9v
cHRpb25zX2ludGVybmFsKToKKyAgICAgICAgKEV4dGVuc2lvblByb2Nlc3NvckludGVyZmFjZS5z
ZXR1cF9zdHJlYW1fb3B0aW9ucyk6CisgICAgICAgIChfbG9nX291dGdvaW5nX2NvbXByZXNzaW9u
X3JhdGlvKToKKyAgICAgICAgKF9sb2dfaW5jb21pbmdfY29tcHJlc3Npb25fcmF0aW8pOgorICAg
ICAgICAoX3BhcnNlX3dpbmRvd19iaXRzKToKKyAgICAgICAgKF9BdmVyYWdlUmF0aW9DYWxjdWxh
dG9yKToKKyAgICAgICAgKF9BdmVyYWdlUmF0aW9DYWxjdWxhdG9yLl9faW5pdF9fKToKKyAgICAg
ICAgKF9BdmVyYWdlUmF0aW9DYWxjdWxhdG9yLmFkZF9vcmlnaW5hbF9ieXRlcyk6CisgICAgICAg
IChfQXZlcmFnZVJhdGlvQ2FsY3VsYXRvci5hZGRfcmVzdWx0X2J5dGVzKToKKyAgICAgICAgKF9B
dmVyYWdlUmF0aW9DYWxjdWxhdG9yLmdldF9hdmVyYWdlX3JhdGlvKToKKyAgICAgICAgKERlZmxh
dGVGcmFtZUV4dGVuc2lvblByb2Nlc3Nvcik6CisgICAgICAgIChEZWZsYXRlRnJhbWVFeHRlbnNp
b25Qcm9jZXNzb3IuX19pbml0X18pOgorICAgICAgICAoRGVmbGF0ZUZyYW1lRXh0ZW5zaW9uUHJv
Y2Vzc29yLl9nZXRfZXh0ZW5zaW9uX3Jlc3BvbnNlX2ludGVybmFsKToKKyAgICAgICAgKERlZmxh
dGVGcmFtZUV4dGVuc2lvblByb2Nlc3Nvci5fc2V0dXBfc3RyZWFtX29wdGlvbnNfaW50ZXJuYWwp
OgorICAgICAgICAoRGVmbGF0ZUZyYW1lRXh0ZW5zaW9uUHJvY2Vzc29yLl9vdXRnb2luZ19maWx0
ZXIpOgorICAgICAgICAoRGVmbGF0ZUZyYW1lRXh0ZW5zaW9uUHJvY2Vzc29yLl9pbmNvbWluZ19m
aWx0ZXIpOgorICAgICAgICAoQ29tcHJlc3Npb25FeHRlbnNpb25Qcm9jZXNzb3JCYXNlLmZvcik6
CisgICAgICAgIChDb21wcmVzc2lvbkV4dGVuc2lvblByb2Nlc3NvckJhc2UuX19pbml0X18pOgor
ICAgICAgICAoQ29tcHJlc3Npb25FeHRlbnNpb25Qcm9jZXNzb3JCYXNlLl9nZXRfZXh0ZW5zaW9u
X3Jlc3BvbnNlX2ludGVybmFsKToKKyAgICAgICAgKENvbXByZXNzaW9uRXh0ZW5zaW9uUHJvY2Vz
c29yQmFzZS5fc2V0dXBfc3RyZWFtX29wdGlvbnNfaW50ZXJuYWwpOgorICAgICAgICAoUGVyRnJh
bWVDb21wcmVzc0V4dGVuc2lvblByb2Nlc3Nvcik6CisgICAgICAgIChQZXJNZXNzYWdlRGVmbGF0
ZUV4dGVuc2lvblByb2Nlc3Nvcik6CisgICAgICAgIChQZXJNZXNzYWdlRGVmbGF0ZUV4dGVuc2lv
blByb2Nlc3Nvci5fX2luaXRfXyk6CisgICAgICAgIChQZXJNZXNzYWdlRGVmbGF0ZUV4dGVuc2lv
blByb2Nlc3Nvci5fZ2V0X2V4dGVuc2lvbl9yZXNwb25zZV9pbnRlcm5hbCk6CisgICAgICAgIChQ
ZXJNZXNzYWdlRGVmbGF0ZUV4dGVuc2lvblByb2Nlc3Nvci5fc2V0dXBfc3RyZWFtX29wdGlvbnNf
aW50ZXJuYWwpOgorICAgICAgICAoUGVyTWVzc2FnZURlZmxhdGVFeHRlbnNpb25Qcm9jZXNzb3Iu
c2V0X2Myc19tYXhfd2luZG93X2JpdHMpOgorICAgICAgICAoUGVyTWVzc2FnZURlZmxhdGVFeHRl
bnNpb25Qcm9jZXNzb3Iuc2V0X2Myc19tYXhfd2luZG93X2JpdHMuYWRkcyk6CisgICAgICAgIChQ
ZXJNZXNzYWdlRGVmbGF0ZUV4dGVuc2lvblByb2Nlc3Nvci5zZXRfYzJzX25vX2NvbnRleHRfdGFr
ZW92ZXIpOgorICAgICAgICAoUGVyTWVzc2FnZURlZmxhdGVFeHRlbnNpb25Qcm9jZXNzb3Iuc2V0
X2Myc19ub19jb250ZXh0X3Rha2VvdmVyLmFkZHMpOgorICAgICAgICAoUGVyTWVzc2FnZURlZmxh
dGVFeHRlbnNpb25Qcm9jZXNzb3Iuc2V0X2JmaW5hbCk6CisgICAgICAgIChQZXJNZXNzYWdlRGVm
bGF0ZUV4dGVuc2lvblByb2Nlc3Nvci5lbmFibGVfb3V0Z29pbmdfY29tcHJlc3Npb24pOgorICAg
ICAgICAoUGVyTWVzc2FnZURlZmxhdGVFeHRlbnNpb25Qcm9jZXNzb3IuZGlzYWJsZV9vdXRnb2lu
Z19jb21wcmVzc2lvbik6CisgICAgICAgIChfUGVyTWVzc2FnZURlZmxhdGVGcmFtZXIpOgorICAg
ICAgICAoX1Blck1lc3NhZ2VEZWZsYXRlRnJhbWVyLl9faW5pdF9fKToKKyAgICAgICAgKF9QZXJN
ZXNzYWdlRGVmbGF0ZUZyYW1lci5zZXRfY29tcHJlc3Nfb3V0Z29pbmdfZW5hYmxlZCk6CisgICAg
ICAgIChfUGVyTWVzc2FnZURlZmxhdGVGcmFtZXIuX3Byb2Nlc3NfaW5jb21pbmdfbWVzc2FnZSk6
CisgICAgICAgIChfUGVyTWVzc2FnZURlZmxhdGVGcmFtZXIuX3Byb2Nlc3Nfb3V0Z29pbmdfbWVz
c2FnZSk6CisgICAgICAgIChfUGVyTWVzc2FnZURlZmxhdGVGcmFtZXIuc2V0dXBfc3RyZWFtX29w
dGlvbnMpOgorICAgICAgICAoX1Blck1lc3NhZ2VEZWZsYXRlRnJhbWVyLnNldHVwX3N0cmVhbV9v
cHRpb25zLl9PdXRnb2luZ01lc3NhZ2VGaWx0ZXIpOgorICAgICAgICAoX1Blck1lc3NhZ2VEZWZs
YXRlRnJhbWVyLnNldHVwX3N0cmVhbV9vcHRpb25zLl9PdXRnb2luZ01lc3NhZ2VGaWx0ZXIuX19p
bml0X18pOgorICAgICAgICAoX1Blck1lc3NhZ2VEZWZsYXRlRnJhbWVyLnNldHVwX3N0cmVhbV9v
cHRpb25zLl9PdXRnb2luZ01lc3NhZ2VGaWx0ZXIuZmlsdGVyKToKKyAgICAgICAgKF9QZXJNZXNz
YWdlRGVmbGF0ZUZyYW1lci5zZXR1cF9zdHJlYW1fb3B0aW9ucy5fSW5jb21pbmdNZXNzYWdlRmls
dGVyKToKKyAgICAgICAgKF9QZXJNZXNzYWdlRGVmbGF0ZUZyYW1lci5zZXR1cF9zdHJlYW1fb3B0
aW9ucy5fSW5jb21pbmdNZXNzYWdlRmlsdGVyLl9faW5pdF9fKToKKyAgICAgICAgKF9QZXJNZXNz
YWdlRGVmbGF0ZUZyYW1lci5zZXR1cF9zdHJlYW1fb3B0aW9ucy5fSW5jb21pbmdNZXNzYWdlRmls
dGVyLmRlY29tcHJlc3NfbmV4dF9tZXNzYWdlKToKKyAgICAgICAgKF9QZXJNZXNzYWdlRGVmbGF0
ZUZyYW1lci5zZXR1cF9zdHJlYW1fb3B0aW9ucy5fSW5jb21pbmdNZXNzYWdlRmlsdGVyLmZpbHRl
cik6CisgICAgICAgIChfUGVyTWVzc2FnZURlZmxhdGVGcmFtZXIuc2V0dXBfc3RyZWFtX29wdGlv
bnMuX091dGdvaW5nRnJhbWVGaWx0ZXIpOgorICAgICAgICAoX1Blck1lc3NhZ2VEZWZsYXRlRnJh
bWVyLnNldHVwX3N0cmVhbV9vcHRpb25zLl9PdXRnb2luZ0ZyYW1lRmlsdGVyLl9faW5pdF9fKToK
KyAgICAgICAgKF9QZXJNZXNzYWdlRGVmbGF0ZUZyYW1lci5zZXR1cF9zdHJlYW1fb3B0aW9ucy5f
T3V0Z29pbmdGcmFtZUZpbHRlci5zZXRfY29tcHJlc3Npb25fYml0KToKKyAgICAgICAgKF9QZXJN
ZXNzYWdlRGVmbGF0ZUZyYW1lci5zZXR1cF9zdHJlYW1fb3B0aW9ucy5fT3V0Z29pbmdGcmFtZUZp
bHRlci5maWx0ZXIpOgorICAgICAgICAoX1Blck1lc3NhZ2VEZWZsYXRlRnJhbWVyLnNldHVwX3N0
cmVhbV9vcHRpb25zLl9JbmNvbWluZ0ZyYW1lRmlsdGVyKToKKyAgICAgICAgKF9QZXJNZXNzYWdl
RGVmbGF0ZUZyYW1lci5zZXR1cF9zdHJlYW1fb3B0aW9ucy5fSW5jb21pbmdGcmFtZUZpbHRlci5f
X2luaXRfXyk6CisgICAgICAgIChfUGVyTWVzc2FnZURlZmxhdGVGcmFtZXIuc2V0dXBfc3RyZWFt
X29wdGlvbnMuX0luY29taW5nRnJhbWVGaWx0ZXIuZmlsdGVyKToKKyAgICAgICAgKFBlck1lc3Nh
Z2VDb21wcmVzc0V4dGVuc2lvblByb2Nlc3Nvcik6CisgICAgICAgIChQZXJNZXNzYWdlQ29tcHJl
c3NFeHRlbnNpb25Qcm9jZXNzb3IuX2xvb2t1cF9jb21wcmVzc2lvbl9wcm9jZXNzb3IpOgorICAg
ICAgICAoTXV4RXh0ZW5zaW9uUHJvY2Vzc29yLl9faW5pdF9fKToKKyAgICAgICAgKE11eEV4dGVu
c2lvblByb2Nlc3Nvci5jaGVja19jb25zaXN0ZW5jeV93aXRoX290aGVyX3Byb2Nlc3NvcnMpOgor
ICAgICAgICAoTXV4RXh0ZW5zaW9uUHJvY2Vzc29yKToKKyAgICAgICAgKE11eEV4dGVuc2lvblBy
b2Nlc3Nvci5fZ2V0X2V4dGVuc2lvbl9yZXNwb25zZV9pbnRlcm5hbCk6CisgICAgICAgIChNdXhF
eHRlbnNpb25Qcm9jZXNzb3IuX3NldHVwX3N0cmVhbV9vcHRpb25zX2ludGVybmFsKToKKyAgICAg
ICAgKE11eEV4dGVuc2lvblByb2Nlc3Nvci5zZXRfcXVvdGEpOgorICAgICAgICAoTXV4RXh0ZW5z
aW9uUHJvY2Vzc29yLnF1b3RhKToKKyAgICAgICAgKE11eEV4dGVuc2lvblByb2Nlc3Nvci5zZXRf
ZXh0ZW5zaW9ucyk6CisgICAgICAgIChNdXhFeHRlbnNpb25Qcm9jZXNzb3IuZXh0ZW5zaW9ucyk6
CisgICAgICAgIChpc19jb21wcmVzc2lvbl9leHRlbnNpb24pOgorICAgICAgICAqIFNjcmlwdHMv
d2Via2l0cHkvdGhpcmRwYXJ0eS9tb2RfcHl3ZWJzb2NrZXQvaGFuZHNoYWtlL19iYXNlLnB5Ogor
ICAgICAgICAodmFsaWRhdGVfc3VicHJvdG9jb2wpOgorICAgICAgICAocGFyc2VfaG9zdF9oZWFk
ZXIpOgorICAgICAgICAoZm9ybWF0X2hlYWRlcik6CisgICAgICAgIChjaGVja19yZXF1ZXN0X2xp
bmUpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdGhpcmRwYXJ0eS9tb2RfcHl3ZWJzb2Nr
ZXQvaGFuZHNoYWtlL2h5YmkucHk6CisgICAgICAgIChIYW5kc2hha2VyLmRvX2hhbmRzaGFrZSk6
CisgICAgICAgIChIYW5kc2hha2VyLl9jcmVhdGVfaGFuZHNoYWtlX3Jlc3BvbnNlKToKKyAgICAg
ICAgKiBTY3JpcHRzL3dlYmtpdHB5L3RoaXJkcGFydHkvbW9kX3B5d2Vic29ja2V0L2hhbmRzaGFr
ZS9oeWJpMDAucHk6CisgICAgICAgIChfdmFsaWRhdGVfc3VicHJvdG9jb2wpOgorICAgICAgICAo
X2NoZWNrX2hlYWRlcl9saW5lcyk6CisgICAgICAgIChfYnVpbGRfbG9jYXRpb24pOgorICAgICAg
ICAoSGFuZHNoYWtlci5kb19oYW5kc2hha2UpOgorICAgICAgICAoSGFuZHNoYWtlci5fc2V0X3N1
YnByb3RvY29sKToKKyAgICAgICAgKEhhbmRzaGFrZXIuX3NldF9sb2NhdGlvbik6CisgICAgICAg
ICogU2NyaXB0cy93ZWJraXRweS90aGlyZHBhcnR5L21vZF9weXdlYnNvY2tldC9oZWFkZXJwYXJz
ZXJoYW5kbGVyLnB5OgorICAgICAgICAoX2NyZWF0ZV9kaXNwYXRjaGVyKToKKyAgICAgICAgKGhl
YWRlcnBhcnNlcmhhbmRsZXIpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdGhpcmRwYXJ0
eS9tb2RfcHl3ZWJzb2NrZXQvbXV4LnB5OgorICAgICAgICAoX2NyZWF0ZV9hZGRfY2hhbm5lbF9y
ZXNwb25zZSk6CisgICAgICAgIChfY3JlYXRlX2Ryb3BfY2hhbm5lbCk6CisgICAgICAgIChfY3Jl
YXRlX2Zsb3dfY29udHJvbCk6CisgICAgICAgIChfY3JlYXRlX25ld19jaGFubmVsX3Nsb3QpOgor
ICAgICAgICAoX2NyZWF0ZV9mYWxsYmFja19uZXdfY2hhbm5lbF9zbG90KToKKyAgICAgICAgKF9N
dXhGcmFtZVBheWxvYWRQYXJzZXIuX3JlYWRfbnVtYmVyKToKKyAgICAgICAgKF9NdXhGcmFtZVBh
eWxvYWRQYXJzZXIuX3JlYWRfc2l6ZV9hbmRfY29udGVudHMpOgorICAgICAgICAoX011eEZyYW1l
UGF5bG9hZFBhcnNlci5fcmVhZF9mbG93X2NvbnRyb2wpOgorICAgICAgICAoX011eEZyYW1lUGF5
bG9hZFBhcnNlci5fcmVhZF9uZXdfY2hhbm5lbF9zbG90KToKKyAgICAgICAgKF9Mb2dpY2FsQ29u
bmVjdGlvbi5fX2luaXRfXyk6CisgICAgICAgIChfTG9naWNhbENvbm5lY3Rpb24ud3JpdGUpOgor
ICAgICAgICAoX0xvZ2ljYWxDb25uZWN0aW9uLm9uX3dyaXRlX2RhdGFfZG9uZSk6CisgICAgICAg
IChfTG9naWNhbENvbm5lY3Rpb24pOgorICAgICAgICAoX0xvZ2ljYWxDb25uZWN0aW9uLm9uX3dy
aXRlcl9kb25lKToKKyAgICAgICAgKF9Jbm5lck1lc3NhZ2UpOgorICAgICAgICAoX0lubmVyTWVz
c2FnZS5fX2luaXRfXyk6CisgICAgICAgIChfSW5uZXJNZXNzYWdlQnVpbGRlcik6CisgICAgICAg
IChfSW5uZXJNZXNzYWdlQnVpbGRlci50aGF0KToKKyAgICAgICAgKF9Jbm5lck1lc3NhZ2VCdWls
ZGVyLl9faW5pdF9fKToKKyAgICAgICAgKF9Jbm5lck1lc3NhZ2VCdWlsZGVyLl9oYW5kbGVfZmly
c3QpOgorICAgICAgICAoX0lubmVyTWVzc2FnZUJ1aWxkZXIuX3Byb2Nlc3NfZmlyc3RfZnJhZ21l
bnRlZF9jb250cm9sKToKKyAgICAgICAgKF9Jbm5lck1lc3NhZ2VCdWlsZGVyLl9wcm9jZXNzX2Zp
cnN0X2ZyYWdtZW50ZWRfbWVzc2FnZSk6CisgICAgICAgIChfSW5uZXJNZXNzYWdlQnVpbGRlci5f
aGFuZGxlX2ZyYWdtZW50ZWRfY29udHJvbCk6CisgICAgICAgIChfSW5uZXJNZXNzYWdlQnVpbGRl
ci5fcmVhc3NlbWJsZV9mcmFnbWVudGVkX2NvbnRyb2wpOgorICAgICAgICAoX0lubmVyTWVzc2Fn
ZUJ1aWxkZXIuX2hhbmRsZV9mcmFnbWVudGVkX21lc3NhZ2UpOgorICAgICAgICAoX0lubmVyTWVz
c2FnZUJ1aWxkZXIuX3JlYXNzZW1ibGVfZnJhZ21lbnRlZF9tZXNzYWdlKToKKyAgICAgICAgKF9J
bm5lck1lc3NhZ2VCdWlsZGVyLmJ1aWxkKToKKyAgICAgICAgKF9Mb2dpY2FsU3RyZWFtLl9faW5p
dF9fKToKKyAgICAgICAgKF9Mb2dpY2FsU3RyZWFtLl9jcmVhdGVfaW5uZXJfZnJhbWUpOgorICAg
ICAgICAoX0xvZ2ljYWxTdHJlYW0uX3dyaXRlX2lubmVyX2ZyYW1lKToKKyAgICAgICAgKF9Mb2dp
Y2FsU3RyZWFtLnJlcGxlbmlzaF9zZW5kX3F1b3RhKToKKyAgICAgICAgKF9Mb2dpY2FsU3RyZWFt
LnNlbmRfbWVzc2FnZSk6CisgICAgICAgIChfTG9naWNhbFN0cmVhbS5fcmVjZWl2ZV9mcmFtZSk6
CisgICAgICAgIChfTG9naWNhbFN0cmVhbS5fZ2V0X21lc3NhZ2VfZnJvbV9mcmFtZSk6CisgICAg
ICAgIChfTG9naWNhbFN0cmVhbS5zdG9wX3NlbmRpbmcpOgorICAgICAgICAoX1BoeXNpY2FsQ29u
bmVjdGlvbldyaXRlci5fX2luaXRfXyk6CisgICAgICAgIChfUGh5c2ljYWxDb25uZWN0aW9uV3Jp
dGVyLl93cml0ZV9kYXRhKToKKyAgICAgICAgKF9QaHlzaWNhbENvbm5lY3Rpb25Xcml0ZXIucnVu
KToKKyAgICAgICAgKF9QaHlzaWNhbENvbm5lY3Rpb25Xcml0ZXIuc3RvcCk6CisgICAgICAgIChf
V29ya2VyLnJ1bik6CisgICAgICAgIChfTXV4SGFuZHNoYWtlci5fX2luaXRfXyk6CisgICAgICAg
IChfTXV4SGFuZHNoYWtlci5fY3JlYXRlX3N0cmVhbSk6CisgICAgICAgIChfTXV4SGFuZHNoYWtl
ci5fY3JlYXRlX2hhbmRzaGFrZV9yZXNwb25zZSk6CisgICAgICAgIChfSGFuZHNoYWtlRGVsdGFC
YXNlLmNyZWF0ZV9oZWFkZXJzKToKKyAgICAgICAgKF9NdXhIYW5kbGVyLnN0YXJ0KToKKyAgICAg
ICAgKF9NdXhIYW5kbGVyLndhaXRfdW50aWxfZG9uZSk6CisgICAgICAgIChfTXV4SGFuZGxlci5u
b3RpZnlfd3JpdGVfZGF0YV9kb25lKToKKyAgICAgICAgKF9NdXhIYW5kbGVyLl9wcm9jZXNzX2Ry
b3BfY2hhbm5lbCk6CisgICAgICAgIChfTXV4SGFuZGxlci5fcHJvY2Vzc19sb2dpY2FsX2ZyYW1l
KToKKyAgICAgICAgKF9NdXhIYW5kbGVyLm5vdGlmeV9yZWFkZXJfZG9uZSk6CisgICAgICAgIChf
TXV4SGFuZGxlcik6CisgICAgICAgIChfTXV4SGFuZGxlci5ub3RpZnlfd3JpdGVyX2RvbmUpOgor
ICAgICAgICAoX011eEhhbmRsZXIuZmFpbF9waHlzaWNhbF9jb25uZWN0aW9uKToKKyAgICAgICAg
KF9NdXhIYW5kbGVyLmZhaWxfbG9naWNhbF9jaGFubmVsKToKKyAgICAgICAgKHVzZV9tdXgpOgor
ICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdGhpcmRwYXJ0eS9tb2RfcHl3ZWJzb2NrZXQvc3Rh
bmRhbG9uZS5weToKKyAgICAgICAgKF9TdGFuZGFsb25lUmVxdWVzdC5nZXRfdXJpKToKKyAgICAg
ICAgKF9TdGFuZGFsb25lUmVxdWVzdC5nZXRfdW5wYXJzZWRfdXJpKToKKyAgICAgICAgKF9TdGFu
ZGFsb25lUmVxdWVzdCk6CisgICAgICAgIChfU3RhbmRhbG9uZVJlcXVlc3QuaXNfaHR0cHMpOgor
ICAgICAgICAoX2ltcG9ydF9zc2wpOgorICAgICAgICAoX2ltcG9ydF9weW9wZW5zc2wpOgorICAg
ICAgICAoX1N0YW5kYWxvbmVTU0xDb25uZWN0aW9uLmZvcik6CisgICAgICAgIChfU3RhbmRhbG9u
ZVNTTENvbm5lY3Rpb24pOgorICAgICAgICAoX1N0YW5kYWxvbmVTU0xDb25uZWN0aW9uLl9fZ2V0
YXR0cmlidXRlX18pOgorICAgICAgICAoX1N0YW5kYWxvbmVTU0xDb25uZWN0aW9uLl9fc2V0YXR0
cl9fKToKKyAgICAgICAgKF9TdGFuZGFsb25lU1NMQ29ubmVjdGlvbi5tYWtlZmlsZSk6CisgICAg
ICAgIChfU3RhbmRhbG9uZVNTTENvbm5lY3Rpb24uc2h1dGRvd24pOgorICAgICAgICAoX1N0YW5k
YWxvbmVTU0xDb25uZWN0aW9uLnJlY3YpOgorICAgICAgICAoV2ViU29ja2V0U2VydmVyLl9faW5p
dF9fKToKKyAgICAgICAgKFdlYlNvY2tldFNlcnZlci5fY3JlYXRlX3NvY2tldHMpOgorICAgICAg
ICAoV2ViU29ja2V0U2VydmVyLmhhbmRsZV9lcnJvcik6CisgICAgICAgIChXZWJTb2NrZXRTZXJ2
ZXIuZ2V0X3JlcXVlc3QpOgorICAgICAgICAoV2ViU29ja2V0U2VydmVyLmdldF9yZXF1ZXN0LmRl
ZmF1bHRfY2FsbGJhY2spOgorICAgICAgICAoV2ViU29ja2V0UmVxdWVzdEhhbmRsZXIucGFyc2Vf
cmVxdWVzdCk6CisgICAgICAgIChfYnVpbGRfb3B0aW9uX3BhcnNlcik6CisgICAgICAgIChfbWFp
bik6CisgICAgICAgIChfbWFpbi5pZik6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS90aGly
ZHBhcnR5L21vZF9weXdlYnNvY2tldC91dGlsLnB5OgorICAgICAgICAoUmVwZWF0ZWRYb3JNYXNr
ZXIuX19pbml0X18pOgorICAgICAgICAoUmVwZWF0ZWRYb3JNYXNrZXIuX21hc2tfdXNpbmdfc3dp
Zyk6CisgICAgICAgIChSZXBlYXRlZFhvck1hc2tlcik6CisgICAgICAgIChSZXBlYXRlZFhvck1h
c2tlci5fbWFza191c2luZ19hcnJheSk6CisgICAgICAgIChfRGVmbGF0ZXIuY29tcHJlc3NfYW5k
X2ZpbmlzaCk6CisgICAgICAgIChfUkZDMTk3OURlZmxhdGVyLmZpbHRlcik6CisgICAgICAgIChE
ZWZsYXRlU29ja2V0LnNlbmQpOgorCiAyMDEzLTA1LTA4ICBBbmRyYXMgQmVjc2kgIDxhbmRyYXMu
YmVjc2lAZGlnaWEuY29tPgogCiAgICAgICAgIFtRdF1bV1RSXSBGaXggdGhlIGJ1aWxkIG9uIE1h
YyBhZnRlciByMTQ5NjkyCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3RoaXJk
cGFydHkvbW9kX3B5d2Vic29ja2V0L19zdHJlYW1fYmFzZS5weSBiL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvdGhpcmRwYXJ0eS9tb2RfcHl3ZWJzb2NrZXQvX3N0cmVhbV9iYXNlLnB5CmluZGV4IDYw
ZmIzM2QyYzVjMDU1ZmI2OWVlZGJjZDc2NTY4MjViYmRmYmZlYTMuLjgyMzU2NjZiYmIxZDUxYzEw
ZGIzZjkxYmRhNGFiY2Q3YWZlYjI2ODIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cHkvdGhpcmRwYXJ0eS9tb2RfcHl3ZWJzb2NrZXQvX3N0cmVhbV9iYXNlLnB5CisrKyBiL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvdGhpcmRwYXJ0eS9tb2RfcHl3ZWJzb2NrZXQvX3N0cmVhbV9iYXNl
LnB5CkBAIC0zOSw2ICszOSw4IEBACiAjIHdyaXRpbmcvcmVhZGluZy4KIAogCitpbXBvcnQgc29j
a2V0CisKIGZyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCB1dGlsCiAKIApAQCAtMTA5LDIwICsx
MTEsMzQgQEAgY2xhc3MgU3RyZWFtQmFzZShvYmplY3QpOgogICAgICAgICAgICAgQ29ubmVjdGlv
blRlcm1pbmF0ZWRFeGNlcHRpb246IHdoZW4gcmVhZCByZXR1cm5zIGVtcHR5IHN0cmluZy4KICAg
ICAgICAgIiIiCiAKLSAgICAgICAgYnl0ZXMgPSBzZWxmLl9yZXF1ZXN0LmNvbm5lY3Rpb24ucmVh
ZChsZW5ndGgpCi0gICAgICAgIGlmIG5vdCBieXRlczoKKyAgICAgICAgdHJ5OgorICAgICAgICAg
ICAgcmVhZF9ieXRlcyA9IHNlbGYuX3JlcXVlc3QuY29ubmVjdGlvbi5yZWFkKGxlbmd0aCkKKyAg
ICAgICAgICAgIGlmIG5vdCByZWFkX2J5dGVzOgorICAgICAgICAgICAgICAgIHJhaXNlIENvbm5l
Y3Rpb25UZXJtaW5hdGVkRXhjZXB0aW9uKAorICAgICAgICAgICAgICAgICAgICAnUmVjZWl2aW5n
ICVkIGJ5dGUgZmFpbGVkLiBQZWVyICglcikgY2xvc2VkIGNvbm5lY3Rpb24nICUKKyAgICAgICAg
ICAgICAgICAgICAgKGxlbmd0aCwgKHNlbGYuX3JlcXVlc3QuY29ubmVjdGlvbi5yZW1vdGVfYWRk
ciwpKSkKKyAgICAgICAgICAgIHJldHVybiByZWFkX2J5dGVzCisgICAgICAgIGV4Y2VwdCBzb2Nr
ZXQuZXJyb3IsIGU6CisgICAgICAgICAgICAjIENhdGNoIGEgc29ja2V0LmVycm9yLiBCZWNhdXNl
IGl0J3Mgbm90IGEgY2hpbGQgY2xhc3Mgb2YgdGhlCisgICAgICAgICAgICAjIElPRXJyb3IgcHJp
b3IgdG8gUHl0aG9uIDIuNiwgd2UgY2Fubm90IG9taXQgdGhpcyBleGNlcHQgY2xhdXNlLgorICAg
ICAgICAgICAgIyBVc2UgJXMgcmF0aGVyIHRoYW4gJXIgZm9yIHRoZSBleGNlcHRpb24gdG8gdXNl
IGh1bWFuIGZyaWVuZGx5CisgICAgICAgICAgICAjIGZvcm1hdC4KKyAgICAgICAgICAgIHJhaXNl
IENvbm5lY3Rpb25UZXJtaW5hdGVkRXhjZXB0aW9uKAorICAgICAgICAgICAgICAgICdSZWNlaXZp
bmcgJWQgYnl0ZSBmYWlsZWQuIHNvY2tldC5lcnJvciAoJXMpIG9jY3VycmVkJyAlCisgICAgICAg
ICAgICAgICAgKGxlbmd0aCwgZSkpCisgICAgICAgIGV4Y2VwdCBJT0Vycm9yLCBlOgorICAgICAg
ICAgICAgIyBBbHNvIGNhdGNoIGFuIElPRXJyb3IgYmVjYXVzZSBtb2RfcHl0aG9uIHRocm93cyBp
dC4KICAgICAgICAgICAgIHJhaXNlIENvbm5lY3Rpb25UZXJtaW5hdGVkRXhjZXB0aW9uKAotICAg
ICAgICAgICAgICAgICdSZWNlaXZpbmcgJWQgYnl0ZSBmYWlsZWQuIFBlZXIgKCVyKSBjbG9zZWQg
Y29ubmVjdGlvbicgJQotICAgICAgICAgICAgICAgIChsZW5ndGgsIChzZWxmLl9yZXF1ZXN0LmNv
bm5lY3Rpb24ucmVtb3RlX2FkZHIsKSkpCi0gICAgICAgIHJldHVybiBieXRlcworICAgICAgICAg
ICAgICAgICdSZWNlaXZpbmcgJWQgYnl0ZSBmYWlsZWQuIElPRXJyb3IgKCVzKSBvY2N1cnJlZCcg
JQorICAgICAgICAgICAgICAgIChsZW5ndGgsIGUpKQogCi0gICAgZGVmIF93cml0ZShzZWxmLCBi
eXRlcyk6CisgICAgZGVmIF93cml0ZShzZWxmLCBieXRlc190b193cml0ZSk6CiAgICAgICAgICIi
IldyaXRlcyBnaXZlbiBieXRlcyB0byBjb25uZWN0aW9uLiBJbiBjYXNlIHdlIGNhdGNoIGFueSBl
eGNlcHRpb24sCiAgICAgICAgIHByZXBlbmRzIHJlbW90ZSBhZGRyZXNzIHRvIHRoZSBleGNlcHRp
b24gbWVzc2FnZSBhbmQgcmFpc2UgYWdhaW4uCiAgICAgICAgICIiIgogCiAgICAgICAgIHRyeToK
LSAgICAgICAgICAgIHNlbGYuX3JlcXVlc3QuY29ubmVjdGlvbi53cml0ZShieXRlcykKKyAgICAg
ICAgICAgIHNlbGYuX3JlcXVlc3QuY29ubmVjdGlvbi53cml0ZShieXRlc190b193cml0ZSkKICAg
ICAgICAgZXhjZXB0IEV4Y2VwdGlvbiwgZToKICAgICAgICAgICAgIHV0aWwucHJlcGVuZF9tZXNz
YWdlX3RvX2V4Y2VwdGlvbigKICAgICAgICAgICAgICAgICAgICAgJ0ZhaWxlZCB0byBzZW5kIG1l
c3NhZ2UgdG8gJXI6ICcgJQpAQCAtMTM4LDEyICsxNTQsMTIgQEAgY2xhc3MgU3RyZWFtQmFzZShv
YmplY3QpOgogICAgICAgICAgICAgQ29ubmVjdGlvblRlcm1pbmF0ZWRFeGNlcHRpb246IHdoZW4g
cmVhZCByZXR1cm5zIGVtcHR5IHN0cmluZy4KICAgICAgICAgIiIiCiAKLSAgICAgICAgYnl0ZXMg
PSBbXQorICAgICAgICByZWFkX2J5dGVzID0gW10KICAgICAgICAgd2hpbGUgbGVuZ3RoID4gMDoK
LSAgICAgICAgICAgIG5ld19ieXRlcyA9IHNlbGYuX3JlYWQobGVuZ3RoKQotICAgICAgICAgICAg
Ynl0ZXMuYXBwZW5kKG5ld19ieXRlcykKLSAgICAgICAgICAgIGxlbmd0aCAtPSBsZW4obmV3X2J5
dGVzKQotICAgICAgICByZXR1cm4gJycuam9pbihieXRlcykKKyAgICAgICAgICAgIG5ld19yZWFk
X2J5dGVzID0gc2VsZi5fcmVhZChsZW5ndGgpCisgICAgICAgICAgICByZWFkX2J5dGVzLmFwcGVu
ZChuZXdfcmVhZF9ieXRlcykKKyAgICAgICAgICAgIGxlbmd0aCAtPSBsZW4obmV3X3JlYWRfYnl0
ZXMpCisgICAgICAgIHJldHVybiAnJy5qb2luKHJlYWRfYnl0ZXMpCiAKICAgICBkZWYgX3JlYWRf
dW50aWwoc2VsZiwgZGVsaW1fY2hhcik6CiAgICAgICAgICIiIlJlYWRzIGJ5dGVzIHVudGlsIHdl
IGVuY291bnRlciBkZWxpbV9jaGFyLiBUaGUgcmVzdWx0IHdpbGwgbm90CkBAIC0xNTMsMTMgKzE2
OSwxMyBAQCBjbGFzcyBTdHJlYW1CYXNlKG9iamVjdCk6CiAgICAgICAgICAgICBDb25uZWN0aW9u
VGVybWluYXRlZEV4Y2VwdGlvbjogd2hlbiByZWFkIHJldHVybnMgZW1wdHkgc3RyaW5nLgogICAg
ICAgICAiIiIKIAotICAgICAgICBieXRlcyA9IFtdCisgICAgICAgIHJlYWRfYnl0ZXMgPSBbXQog
ICAgICAgICB3aGlsZSBUcnVlOgogICAgICAgICAgICAgY2ggPSBzZWxmLl9yZWFkKDEpCiAgICAg
ICAgICAgICBpZiBjaCA9PSBkZWxpbV9jaGFyOgogICAgICAgICAgICAgICAgIGJyZWFrCi0gICAg
ICAgICAgICBieXRlcy5hcHBlbmQoY2gpCi0gICAgICAgIHJldHVybiAnJy5qb2luKGJ5dGVzKQor
ICAgICAgICAgICAgcmVhZF9ieXRlcy5hcHBlbmQoY2gpCisgICAgICAgIHJldHVybiAnJy5qb2lu
KHJlYWRfYnl0ZXMpCiAKIAogIyB2aTpzdHM9NCBzdz00IGV0CmRpZmYgLS1naXQgYS9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L3RoaXJkcGFydHkvbW9kX3B5d2Vic29ja2V0L19zdHJlYW1faHliaS5w
eSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGhpcmRwYXJ0eS9tb2RfcHl3ZWJzb2NrZXQvX3N0
cmVhbV9oeWJpLnB5CmluZGV4IGJkMTU4ZmE2YjhhYTBmMGQ3ZDE3YjU4NDYzOGZiOWMwNjgxNzcy
ZDQuLmE4YTQ5ZTNjM2RjOTViYTlmN2ZkNDEyODkzODNmZTA3YWZkZDU3N2YgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGhpcmRwYXJ0eS9tb2RfcHl3ZWJzb2NrZXQvX3N0cmVh
bV9oeWJpLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGhpcmRwYXJ0eS9tb2RfcHl3
ZWJzb2NrZXQvX3N0cmVhbV9oeWJpLnB5CkBAIC0yODAsNyArMjgwLDcgQEAgZGVmIHBhcnNlX2Zy
YW1lKHJlY2VpdmVfYnl0ZXMsIGxvZ2dlcj1Ob25lLAogICAgIGlmIGxvZ2dlci5pc0VuYWJsZWRG
b3IoY29tbW9uLkxPR0xFVkVMX0ZJTkUpOgogICAgICAgICB1bm1hc2tfc3RhcnQgPSB0aW1lLnRp
bWUoKQogCi0gICAgYnl0ZXMgPSBtYXNrZXIubWFzayhyYXdfcGF5bG9hZF9ieXRlcykKKyAgICB1
bm1hc2tlZF9ieXRlcyA9IG1hc2tlci5tYXNrKHJhd19wYXlsb2FkX2J5dGVzKQogCiAgICAgaWYg
bG9nZ2VyLmlzRW5hYmxlZEZvcihjb21tb24uTE9HTEVWRUxfRklORSk6CiAgICAgICAgIGxvZ2dl
ci5sb2coCkBAIC0yODgsNyArMjg4LDcgQEAgZGVmIHBhcnNlX2ZyYW1lKHJlY2VpdmVfYnl0ZXMs
IGxvZ2dlcj1Ob25lLAogICAgICAgICAgICAgJ0RvbmUgdW5tYXNraW5nIHBheWxvYWQgZGF0YSBh
dCAlcyBNQi9zJywKICAgICAgICAgICAgIHBheWxvYWRfbGVuZ3RoIC8gKHRpbWUudGltZSgpIC0g
dW5tYXNrX3N0YXJ0KSAvIDEwMDAgLyAxMDAwKQogCi0gICAgcmV0dXJuIG9wY29kZSwgYnl0ZXMs
IGZpbiwgcnN2MSwgcnN2MiwgcnN2MworICAgIHJldHVybiBvcGNvZGUsIHVubWFza2VkX2J5dGVz
LCBmaW4sIHJzdjEsIHJzdjIsIHJzdjMKIAogCiBjbGFzcyBGcmFnbWVudGVkRnJhbWVCdWlsZGVy
KG9iamVjdCk6CkBAIC0zODksOSArMzg5LDYgQEAgY2xhc3MgU3RyZWFtT3B0aW9ucyhvYmplY3Qp
OgogICAgIGRlZiBfX2luaXRfXyhzZWxmKToKICAgICAgICAgIiIiQ29uc3RydWN0cyBTdHJlYW1P
cHRpb25zLiIiIgogCi0gICAgICAgICMgRW5hYmxlcyBkZWZsYXRlLXN0cmVhbSBleHRlbnNpb24u
Ci0gICAgICAgIHNlbGYuZGVmbGF0ZV9zdHJlYW0gPSBGYWxzZQotCiAgICAgICAgICMgRmlsdGVy
cyBhcHBsaWVkIHRvIGZyYW1lcy4KICAgICAgICAgc2VsZi5vdXRnb2luZ19mcmFtZV9maWx0ZXJz
ID0gW10KICAgICAgICAgc2VsZi5pbmNvbWluZ19mcmFtZV9maWx0ZXJzID0gW10KQEAgLTQwMyw5
ICs0MDAsNiBAQCBjbGFzcyBTdHJlYW1PcHRpb25zKG9iamVjdCk6CiAgICAgICAgIHNlbGYuZW5j
b2RlX3RleHRfbWVzc2FnZV90b191dGY4ID0gVHJ1ZQogICAgICAgICBzZWxmLm1hc2tfc2VuZCA9
IEZhbHNlCiAgICAgICAgIHNlbGYudW5tYXNrX3JlY2VpdmUgPSBUcnVlCi0gICAgICAgICMgUkZD
NjQ1NSBkaXNhbGxvd3MgZnJhZ21lbnRlZCBjb250cm9sIGZyYW1lcywgYnV0IG11eCBleHRlbnNp
b24KLSAgICAgICAgIyByZWxheGVzIHRoZSByZXN0cmljdGlvbi4KLSAgICAgICAgc2VsZi5hbGxv
d19mcmFnbWVudGVkX2NvbnRyb2xfZnJhbWUgPSBGYWxzZQogCiAKIGNsYXNzIFN0cmVhbShTdHJl
YW1CYXNlKToKQEAgLTQyNiwxMCArNDIwLDYgQEAgY2xhc3MgU3RyZWFtKFN0cmVhbUJhc2UpOgog
CiAgICAgICAgIHNlbGYuX29wdGlvbnMgPSBvcHRpb25zCiAKLSAgICAgICAgaWYgc2VsZi5fb3B0
aW9ucy5kZWZsYXRlX3N0cmVhbToKLSAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygnU2V0
dXAgZmlsdGVyIGZvciBkZWZsYXRlLXN0cmVhbScpCi0gICAgICAgICAgICBzZWxmLl9yZXF1ZXN0
ID0gdXRpbC5EZWZsYXRlUmVxdWVzdChzZWxmLl9yZXF1ZXN0KQotCiAgICAgICAgIHNlbGYuX3Jl
cXVlc3QuY2xpZW50X3Rlcm1pbmF0ZWQgPSBGYWxzZQogICAgICAgICBzZWxmLl9yZXF1ZXN0LnNl
cnZlcl90ZXJtaW5hdGVkID0gRmFsc2UKIApAQCAtNDYzLDEwICs0NTMsMTAgQEAgY2xhc3MgU3Ry
ZWFtKFN0cmVhbUJhc2UpOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5tYXNrX3JlY2Vp
dmU9c2VsZi5fb3B0aW9ucy51bm1hc2tfcmVjZWl2ZSkKIAogICAgIGRlZiBfcmVjZWl2ZV9mcmFt
ZV9hc19mcmFtZV9vYmplY3Qoc2VsZik6Ci0gICAgICAgIG9wY29kZSwgYnl0ZXMsIGZpbiwgcnN2
MSwgcnN2MiwgcnN2MyA9IHNlbGYuX3JlY2VpdmVfZnJhbWUoKQorICAgICAgICBvcGNvZGUsIHVu
bWFza2VkX2J5dGVzLCBmaW4sIHJzdjEsIHJzdjIsIHJzdjMgPSBzZWxmLl9yZWNlaXZlX2ZyYW1l
KCkKIAogICAgICAgICByZXR1cm4gRnJhbWUoZmluPWZpbiwgcnN2MT1yc3YxLCByc3YyPXJzdjIs
IHJzdjM9cnN2MywKLSAgICAgICAgICAgICAgICAgICAgIG9wY29kZT1vcGNvZGUsIHBheWxvYWQ9
Ynl0ZXMpCisgICAgICAgICAgICAgICAgICAgICBvcGNvZGU9b3Bjb2RlLCBwYXlsb2FkPXVubWFz
a2VkX2J5dGVzKQogCiAgICAgZGVmIHJlY2VpdmVfZmlsdGVyZWRfZnJhbWUoc2VsZik6CiAgICAg
ICAgICIiIlJlY2VpdmVzIGEgZnJhbWUgYW5kIGFwcGxpZXMgZnJhbWUgZmlsdGVycyBhbmQgbWVz
c2FnZSBmaWx0ZXJzLgpAQCAtNjAyLDggKzU5Miw3IEBAIGNsYXNzIFN0cmVhbShTdHJlYW1CYXNl
KToKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgIyBTdGFydCBvZiBmcmFnbWVu
dGF0aW9uIGZyYW1lCiAKLSAgICAgICAgICAgICAgICBpZiAobm90IHNlbGYuX29wdGlvbnMuYWxs
b3dfZnJhZ21lbnRlZF9jb250cm9sX2ZyYW1lIGFuZAotICAgICAgICAgICAgICAgICAgICBjb21t
b24uaXNfY29udHJvbF9vcGNvZGUoZnJhbWUub3Bjb2RlKSk6CisgICAgICAgICAgICAgICAgaWYg
Y29tbW9uLmlzX2NvbnRyb2xfb3Bjb2RlKGZyYW1lLm9wY29kZSk6CiAgICAgICAgICAgICAgICAg
ICAgIHJhaXNlIEludmFsaWRGcmFtZUV4Y2VwdGlvbigKICAgICAgICAgICAgICAgICAgICAgICAg
ICdDb250cm9sIGZyYW1lcyBtdXN0IG5vdCBiZSBmcmFnbWVudGVkJykKIApAQCAtNjQ3LDggKzYz
Niw5IEBAIGNsYXNzIFN0cmVhbShTdHJlYW1CYXNlKToKICAgICAgICAgICAgICAgICBzZWxmLl9y
ZXF1ZXN0LndzX2Nsb3NlX2NvZGUsCiAgICAgICAgICAgICAgICAgc2VsZi5fcmVxdWVzdC53c19j
bG9zZV9yZWFzb24pCiAKLSAgICAgICAgIyBEcmFpbiBqdW5rIGRhdGEgYWZ0ZXIgdGhlIGNsb3Nl
IGZyYW1lIGlmIG5lY2Vzc2FyeS4KLSAgICAgICAgc2VsZi5fZHJhaW5fcmVjZWl2ZWRfZGF0YSgp
CisgICAgICAgICMgQXMgd2UndmUgcmVjZWl2ZWQgYSBjbG9zZSBmcmFtZSwgbm8gbW9yZSBkYXRh
IGlzIGNvbWluZyBvdmVyIHRoZQorICAgICAgICAjIHNvY2tldC4gV2UgY2FuIG5vdyBzYWZlbHkg
Y2xvc2UgdGhlIHNvY2tldCB3aXRob3V0IHdvcnJ5aW5nIGFib3V0CisgICAgICAgICMgUlNUIHNl
bmRpbmcuCiAKICAgICAgICAgaWYgc2VsZi5fcmVxdWVzdC5zZXJ2ZXJfdGVybWluYXRlZDoKICAg
ICAgICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygKQEAgLTY3Miw3ICs2NjIsNyBAQCBjbGFzcyBT
dHJlYW0oU3RyZWFtQmFzZSk6CiAgICAgICAgICAgICAgICAgcmVhc29uID0gJycKICAgICAgICAg
c2VsZi5fc2VuZF9jbG9zaW5nX2hhbmRzaGFrZShjb2RlLCByZWFzb24pCiAgICAgICAgIHNlbGYu
X2xvZ2dlci5kZWJ1ZygKLSAgICAgICAgICAgICdTZW50IGFjayBmb3IgY2xpZW50LWluaXRpYXRl
ZCBjbG9zaW5nIGhhbmRzaGFrZSAnCisgICAgICAgICAgICAnQWNrbm93bGVkZ2VkIGNsb3Npbmcg
aGFuZHNoYWtlIGluaXRpYXRlZCBieSB0aGUgcGVlciAnCiAgICAgICAgICAgICAnKGNvZGU9JXIs
IHJlYXNvbj0lciknLCBjb2RlLCByZWFzb24pCiAKICAgICBkZWYgX3Byb2Nlc3NfcGluZ19tZXNz
YWdlKHNlbGYsIG1lc3NhZ2UpOgpAQCAtODE1LDEzICs4MDUsMTUgQEAgY2xhc3MgU3RyZWFtKFN0
cmVhbUJhc2UpOgogCiAgICAgICAgIHNlbGYuX3dyaXRlKGZyYW1lKQogCi0gICAgZGVmIGNsb3Nl
X2Nvbm5lY3Rpb24oc2VsZiwgY29kZT1jb21tb24uU1RBVFVTX05PUk1BTF9DTE9TVVJFLCByZWFz
b249JycpOgorICAgIGRlZiBjbG9zZV9jb25uZWN0aW9uKHNlbGYsIGNvZGU9Y29tbW9uLlNUQVRV
U19OT1JNQUxfQ0xPU1VSRSwgcmVhc29uPScnLAorICAgICAgICAgICAgICAgICAgICAgICAgIHdh
aXRfcmVzcG9uc2U9VHJ1ZSk6CiAgICAgICAgICIiIkNsb3NlcyBhIFdlYlNvY2tldCBjb25uZWN0
aW9uLgogCiAgICAgICAgIEFyZ3M6CiAgICAgICAgICAgICBjb2RlOiBTdGF0dXMgY29kZSBmb3Ig
Y2xvc2UgZnJhbWUuIElmIGNvZGUgaXMgTm9uZSwgYSBjbG9zZQogICAgICAgICAgICAgICAgIGZy
YW1lIHdpdGggZW1wdHkgYm9keSB3aWxsIGJlIHNlbnQuCiAgICAgICAgICAgICByZWFzb246IHN0
cmluZyByZXByZXNlbnRpbmcgY2xvc2UgcmVhc29uLgorICAgICAgICAgICAgd2FpdF9yZXNwb25z
ZTogVHJ1ZSB3aGVuIGNhbGxlciB3YW50IHRvIHdhaXQgdGhlIHJlc3BvbnNlLgogICAgICAgICBS
YWlzZXM6CiAgICAgICAgICAgICBCYWRPcGVyYXRpb25FeGNlcHRpb246IHdoZW4gcmVhc29uIGlz
IHNwZWNpZmllZCB3aXRoIGNvZGUgTm9uZQogICAgICAgICAgICAgb3IgcmVhc29uIGlzIG5vdCBh
biBpbnN0YW5jZSBvZiBib3RoIHN0ciBhbmQgdW5pY29kZS4KQEAgLTg0NCwxMSArODM2LDExIEBA
IGNsYXNzIFN0cmVhbShTdHJlYW1CYXNlKToKIAogICAgICAgICBzZWxmLl9zZW5kX2Nsb3Npbmdf
aGFuZHNoYWtlKGNvZGUsIHJlYXNvbikKICAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKAotICAg
ICAgICAgICAgJ1NlbnQgc2VydmVyLWluaXRpYXRlZCBjbG9zaW5nIGhhbmRzaGFrZSAoY29kZT0l
ciwgcmVhc29uPSVyKScsCisgICAgICAgICAgICAnSW5pdGlhdGVkIGNsb3NpbmcgaGFuZHNoYWtl
IChjb2RlPSVyLCByZWFzb249JXIpJywKICAgICAgICAgICAgIGNvZGUsIHJlYXNvbikKIAogICAg
ICAgICBpZiAoY29kZSA9PSBjb21tb24uU1RBVFVTX0dPSU5HX0FXQVkgb3IKLSAgICAgICAgICAg
IGNvZGUgPT0gY29tbW9uLlNUQVRVU19QUk9UT0NPTF9FUlJPUik6CisgICAgICAgICAgICBjb2Rl
ID09IGNvbW1vbi5TVEFUVVNfUFJPVE9DT0xfRVJST1IpIG9yIG5vdCB3YWl0X3Jlc3BvbnNlOgog
ICAgICAgICAgICAgIyBJdCBkb2Vzbid0IG1ha2Ugc2Vuc2UgdG8gd2FpdCBmb3IgYSBjbG9zZSBm
cmFtZSBpZiB0aGUgcmVhc29uIGlzCiAgICAgICAgICAgICAjIHByb3RvY29sIGVycm9yIG9yIHRo
YXQgdGhlIHNlcnZlciBpcyBnb2luZyBhd2F5LiBGb3Igc29tZSBvZgogICAgICAgICAgICAgIyBv
dGhlciByZWFzb25zLCBpdCBtaWdodCBub3QgbWFrZSBzZW5zZSB0byB3YWl0IGZvciBhIGNsb3Nl
IGZyYW1lLApAQCAtODkxLDI1ICs4ODMsNSBAQCBjbGFzcyBTdHJlYW0oU3RyZWFtQmFzZSk6CiAK
ICAgICAgICAgcmV0dXJuIHNlbGYuX29yaWdpbmFsX29wY29kZQogCi0gICAgZGVmIF9kcmFpbl9y
ZWNlaXZlZF9kYXRhKHNlbGYpOgotICAgICAgICAiIiJEcmFpbnMgdW5yZWFkIGRhdGEgaW4gdGhl
IHJlY2VpdmUgYnVmZmVyIHRvIGF2b2lkIHNlbmRpbmcgb3V0IFRDUAotICAgICAgICBSU1QgcGFj
a2V0LiBUaGlzIGlzIGJlY2F1c2Ugd2hlbiBkZWZsYXRlLXN0cmVhbSBpcyBlbmFibGVkLCBzb21l
Ci0gICAgICAgIERFRkxBVEUgYmxvY2sgZm9yIGZsdXNoaW5nIGRhdGEgbWF5IGZvbGxvdyBhIGNs
b3NlIGZyYW1lLiBJZiBhbnkgZGF0YQotICAgICAgICByZW1haW5zIGluIHRoZSByZWNlaXZlIGJ1
ZmZlciBvZiBhIHNvY2tldCB3aGVuIHRoZSBzb2NrZXQgaXMgY2xvc2VkLAotICAgICAgICBpdCBz
ZW5kcyBvdXQgVENQIFJTVCBwYWNrZXQgdG8gdGhlIG90aGVyIHBlZXIuCi0KLSAgICAgICAgU2lu
Y2UgbW9kX3B5dGhvbidzIG1wX2Nvbm4gb2JqZWN0IGRvZXNuJ3Qgc3VwcG9ydCBub24tYmxvY2tp
bmcgcmVhZCwKLSAgICAgICAgd2UgcGVyZm9ybSB0aGlzIG9ubHkgd2hlbiBweXdlYnNvY2tldCBp
cyBydW5uaW5nIGluIHN0YW5kYWxvbmUgbW9kZS4KLSAgICAgICAgIiIiCi0KLSAgICAgICAgIyBJ
ZiBzZWxmLl9vcHRpb25zLmRlZmxhdGVfc3RyZWFtIGlzIHRydWUsIHNlbGYuX3JlcXVlc3QgaXMK
LSAgICAgICAgIyBEZWZsYXRlUmVxdWVzdCwgc28gd2UgY2FuIGdldCB3cmFwcGVkIHJlcXVlc3Qg
b2JqZWN0IGJ5Ci0gICAgICAgICMgc2VsZi5fcmVxdWVzdC5fcmVxdWVzdC4KLSAgICAgICAgIwot
ICAgICAgICAjIE9ubHkgX1N0YW5kYWxvbmVSZXF1ZXN0IGhhcyBfZHJhaW5fcmVjZWl2ZWRfZGF0
YSBtZXRob2QuCi0gICAgICAgIGlmIChzZWxmLl9vcHRpb25zLmRlZmxhdGVfc3RyZWFtIGFuZAot
ICAgICAgICAgICAgKCdfZHJhaW5fcmVjZWl2ZWRfZGF0YScgaW4gZGlyKHNlbGYuX3JlcXVlc3Qu
X3JlcXVlc3QpKSk6Ci0gICAgICAgICAgICBzZWxmLl9yZXF1ZXN0Ll9yZXF1ZXN0Ll9kcmFpbl9y
ZWNlaXZlZF9kYXRhKCkKLQogCiAjIHZpOnN0cz00IHN3PTQgZXQKZGlmZiAtLWdpdCBhL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvdGhpcmRwYXJ0eS9tb2RfcHl3ZWJzb2NrZXQvY29tbW9uLnB5IGIv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS90aGlyZHBhcnR5L21vZF9weXdlYnNvY2tldC9jb21tb24u
cHkKaW5kZXggMjM4ODM3OWMwOGU1YTc1NzcxMWU3NjhhNzRjNDU2YzExY2Y2Mzc2NC4uYWZhMTIz
MzY4NmI3ZWUyYTIyOGRmZTQzMmY3MTEzMDU1YzkzM2JiNyAxMDA2NDQKLS0tIGEvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS90aGlyZHBhcnR5L21vZF9weXdlYnNvY2tldC9jb21tb24ucHkKKysrIGIv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS90aGlyZHBhcnR5L21vZF9weXdlYnNvY2tldC9jb21tb24u
cHkKQEAgLTEwMSwxMCArMTAxLDEwIEBAIFNFQ19XRUJTT0NLRVRfS0VZMl9IRUFERVIgPSAnU2Vj
LVdlYlNvY2tldC1LZXkyJwogU0VDX1dFQlNPQ0tFVF9MT0NBVElPTl9IRUFERVIgPSAnU2VjLVdl
YlNvY2tldC1Mb2NhdGlvbicKIAogIyBFeHRlbnNpb25zCi1ERUZMQVRFX1NUUkVBTV9FWFRFTlNJ
T04gPSAnZGVmbGF0ZS1zdHJlYW0nCiBERUZMQVRFX0ZSQU1FX0VYVEVOU0lPTiA9ICdkZWZsYXRl
LWZyYW1lJwogUEVSRlJBTUVfQ09NUFJFU1NJT05fRVhURU5TSU9OID0gJ3BlcmZyYW1lLWNvbXBy
ZXNzJwogUEVSTUVTU0FHRV9DT01QUkVTU0lPTl9FWFRFTlNJT04gPSAncGVybWVzc2FnZS1jb21w
cmVzcycKK1BFUk1FU1NBR0VfREVGTEFURV9FWFRFTlNJT04gPSAncGVybWVzc2FnZS1kZWZsYXRl
JwogWF9XRUJLSVRfREVGTEFURV9GUkFNRV9FWFRFTlNJT04gPSAneC13ZWJraXQtZGVmbGF0ZS1m
cmFtZScKIFhfV0VCS0lUX1BFUk1FU1NBR0VfQ09NUFJFU1NJT05fRVhURU5TSU9OID0gJ3gtd2Vi
a2l0LXBlcm1lc3NhZ2UtY29tcHJlc3MnCiBNVVhfRVhURU5TSU9OID0gJ211eF9ET19OT1RfVVNF
JwpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90aGlyZHBhcnR5L21vZF9weXdl
YnNvY2tldC9kaXNwYXRjaC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGhpcmRwYXJ0eS9t
b2RfcHl3ZWJzb2NrZXQvZGlzcGF0Y2gucHkKaW5kZXggMjU5MDVmMTgwZWE0OWI5NTYwYWM2YmRj
OTE3YTk3OGIzODE0MWQyNS4uOTZjOTFlMGM5MGU3NDI5ZDBmNzYwYzBlOWM3Yjk4MTIwNDA5MmEw
YSAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90aGlyZHBhcnR5L21vZF9weXdl
YnNvY2tldC9kaXNwYXRjaC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3RoaXJkcGFy
dHkvbW9kX3B5d2Vic29ja2V0L2Rpc3BhdGNoLnB5CkBAIC0yNTUsNiArMjU1LDkgQEAgY2xhc3Mg
RGlzcGF0Y2hlcihvYmplY3QpOgogICAgICAgICB0cnk6CiAgICAgICAgICAgICBkb19leHRyYV9o
YW5kc2hha2VfKHJlcXVlc3QpCiAgICAgICAgIGV4Y2VwdCBoYW5kc2hha2UuQWJvcnRlZEJ5VXNl
ckV4Y2VwdGlvbiwgZToKKyAgICAgICAgICAgICMgUmUtcmFpc2UgdG8gdGVsbCB0aGUgY2FsbGVy
IG9mIHRoaXMgZnVuY3Rpb24gdG8gZmluaXNoIHRoaXMKKyAgICAgICAgICAgICMgY29ubmVjdGlv
biB3aXRob3V0IHNlbmRpbmcgYW55IGVycm9yLgorICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmRl
YnVnKCclcycsIHV0aWwuZ2V0X3N0YWNrX3RyYWNlKCkpCiAgICAgICAgICAgICByYWlzZQogICAg
ICAgICBleGNlcHQgRXhjZXB0aW9uLCBlOgogICAgICAgICAgICAgdXRpbC5wcmVwZW5kX21lc3Nh
Z2VfdG9fZXhjZXB0aW9uKApAQCAtMjk0LDExICsyOTcsMTIgQEAgY2xhc3MgRGlzcGF0Y2hlcihv
YmplY3QpOgogICAgICAgICAgICAgICAgIHJlcXVlc3Qud3Nfc3RyZWFtLmNsb3NlX2Nvbm5lY3Rp
b24oKQogICAgICAgICAjIENhdGNoIG5vbi1jcml0aWNhbCBleGNlcHRpb25zIHRoZSBoYW5kbGVy
IGRpZG4ndCBoYW5kbGUuCiAgICAgICAgIGV4Y2VwdCBoYW5kc2hha2UuQWJvcnRlZEJ5VXNlckV4
Y2VwdGlvbiwgZToKLSAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygnJXMnLCBlKQorICAg
ICAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCclcycsIHV0aWwuZ2V0X3N0YWNrX3RyYWNlKCkp
CiAgICAgICAgICAgICByYWlzZQogICAgICAgICBleGNlcHQgbXNndXRpbC5CYWRPcGVyYXRpb25F
eGNlcHRpb24sIGU6CiAgICAgICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJyVzJywgZSkKLSAg
ICAgICAgICAgIHJlcXVlc3Qud3Nfc3RyZWFtLmNsb3NlX2Nvbm5lY3Rpb24oY29tbW9uLlNUQVRV
U19BQk5PUk1BTF9DTE9TVVJFKQorICAgICAgICAgICAgcmVxdWVzdC53c19zdHJlYW0uY2xvc2Vf
Y29ubmVjdGlvbigKKyAgICAgICAgICAgICAgICBjb21tb24uU1RBVFVTX0lOVEVSTkFMX0VORFBP
SU5UX0VSUk9SKQogICAgICAgICBleGNlcHQgbXNndXRpbC5JbnZhbGlkRnJhbWVFeGNlcHRpb24s
IGU6CiAgICAgICAgICAgICAjIEludmFsaWRGcmFtZUV4Y2VwdGlvbiBtdXN0IGJlIGNhdWdodCBi
ZWZvcmUKICAgICAgICAgICAgICMgQ29ubmVjdGlvblRlcm1pbmF0ZWRFeGNlcHRpb24gdGhhdCBj
YXRjaGVzIEludmFsaWRGcmFtZUV4Y2VwdGlvbi4KQEAgLTMxNCw2ICszMTgsOCBAQCBjbGFzcyBE
aXNwYXRjaGVyKG9iamVjdCk6CiAgICAgICAgIGV4Y2VwdCBtc2d1dGlsLkNvbm5lY3Rpb25UZXJt
aW5hdGVkRXhjZXB0aW9uLCBlOgogICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCclcycs
IGUpCiAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24sIGU6CisgICAgICAgICAgICAjIEFueSBvdGhl
ciBleGNlcHRpb25zIGFyZSBmb3J3YXJkZWQgdG8gdGhlIGNhbGxlciBvZiB0aGlzCisgICAgICAg
ICAgICAjIGZ1bmN0aW9uLgogICAgICAgICAgICAgdXRpbC5wcmVwZW5kX21lc3NhZ2VfdG9fZXhj
ZXB0aW9uKAogICAgICAgICAgICAgICAgICclcyByYWlzZWQgZXhjZXB0aW9uIGZvciAlczogJyAl
ICgKICAgICAgICAgICAgICAgICAgICAgX1RSQU5TRkVSX0RBVEFfSEFORExFUl9OQU1FLCByZXF1
ZXN0LndzX3Jlc291cmNlKSwKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGhp
cmRwYXJ0eS9tb2RfcHl3ZWJzb2NrZXQvZXh0ZW5zaW9ucy5weSBiL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvdGhpcmRwYXJ0eS9tb2RfcHl3ZWJzb2NrZXQvZXh0ZW5zaW9ucy5weQppbmRleCAwM2Ri
ZjllZTFiOThjZDFlYjZhNjcwZTcyYmYxYTljYjM1NTQxODIzLi41NTJkMmMwNzJhN2E3YmE0MjAw
ZDI5N2E3ZWI1NzljNWMzNzM4YzQzIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L3RoaXJkcGFydHkvbW9kX3B5d2Vic29ja2V0L2V4dGVuc2lvbnMucHkKKysrIGIvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS90aGlyZHBhcnR5L21vZF9weXdlYnNvY2tldC9leHRlbnNpb25zLnB5CkBA
IC0zNCw4MyArMzQsMTE0IEBAIGZyb20gbW9kX3B5d2Vic29ja2V0Lmh0dHBfaGVhZGVyX3V0aWwg
aW1wb3J0IHF1b3RlX2lmX25lY2Vzc2FyeQogCiAKIF9hdmFpbGFibGVfcHJvY2Vzc29ycyA9IHt9
CitfY29tcHJlc3Npb25fZXh0ZW5zaW9uX25hbWVzID0gW10KIAogCiBjbGFzcyBFeHRlbnNpb25Q
cm9jZXNzb3JJbnRlcmZhY2Uob2JqZWN0KToKIAotICAgIGRlZiBuYW1lKHNlbGYpOgotICAgICAg
ICByZXR1cm4gTm9uZQorICAgIGRlZiBfX2luaXRfXyhzZWxmLCByZXF1ZXN0KToKKyAgICAgICAg
c2VsZi5fcmVxdWVzdCA9IHJlcXVlc3QKKyAgICAgICAgc2VsZi5fYWN0aXZlID0gVHJ1ZQogCi0g
ICAgZGVmIGdldF9leHRlbnNpb25fcmVzcG9uc2Uoc2VsZik6CisgICAgZGVmIHJlcXVlc3Qoc2Vs
Zik6CisgICAgICAgIHJldHVybiBzZWxmLl9yZXF1ZXN0CisKKyAgICBkZWYgbmFtZShzZWxmKToK
ICAgICAgICAgcmV0dXJuIE5vbmUKIAotICAgIGRlZiBzZXR1cF9zdHJlYW1fb3B0aW9ucyhzZWxm
LCBzdHJlYW1fb3B0aW9ucyk6CisgICAgZGVmIGNoZWNrX2NvbnNpc3RlbmN5X3dpdGhfb3RoZXJf
cHJvY2Vzc29ycyhzZWxmLCBwcm9jZXNzb3JzKToKICAgICAgICAgcGFzcwogCisgICAgZGVmIHNl
dF9hY3RpdmUoc2VsZiwgYWN0aXZlKToKKyAgICAgICAgc2VsZi5fYWN0aXZlID0gYWN0aXZlCiAK
LWNsYXNzIERlZmxhdGVTdHJlYW1FeHRlbnNpb25Qcm9jZXNzb3IoRXh0ZW5zaW9uUHJvY2Vzc29y
SW50ZXJmYWNlKToKLSAgICAiIiJXZWJTb2NrZXQgREVGTEFURSBzdHJlYW0gZXh0ZW5zaW9uIHBy
b2Nlc3Nvci4KLQotICAgIFNwZWNpZmljYXRpb246Ci0gICAgU2VjdGlvbiA5LjIuMSBpbgotICAg
IGh0dHA6Ly90b29scy5pZXRmLm9yZy9odG1sL2RyYWZ0LWlldGYtaHliaS10aGV3ZWJzb2NrZXRw
cm90b2NvbC0xMAotICAgICIiIgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHJlcXVlc3QpOgot
ICAgICAgICBzZWxmLl9sb2dnZXIgPSB1dGlsLmdldF9jbGFzc19sb2dnZXIoc2VsZikKLQotICAg
ICAgICBzZWxmLl9yZXF1ZXN0ID0gcmVxdWVzdAorICAgIGRlZiBpc19hY3RpdmUoc2VsZik6Cisg
ICAgICAgIHJldHVybiBzZWxmLl9hY3RpdmUKIAotICAgIGRlZiBuYW1lKHNlbGYpOgotICAgICAg
ICByZXR1cm4gY29tbW9uLkRFRkxBVEVfU1RSRUFNX0VYVEVOU0lPTgorICAgIGRlZiBfZ2V0X2V4
dGVuc2lvbl9yZXNwb25zZV9pbnRlcm5hbChzZWxmKToKKyAgICAgICAgcmV0dXJuIE5vbmUKIAog
ICAgIGRlZiBnZXRfZXh0ZW5zaW9uX3Jlc3BvbnNlKHNlbGYpOgotICAgICAgICBpZiBsZW4oc2Vs
Zi5fcmVxdWVzdC5nZXRfcGFyYW1ldGVyX25hbWVzKCkpICE9IDA6Ci0gICAgICAgICAgICByZXR1
cm4gTm9uZQotCi0gICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygKLSAgICAgICAgICAgICdFbmFi
bGUgJXMgZXh0ZW5zaW9uJywgY29tbW9uLkRFRkxBVEVfU1RSRUFNX0VYVEVOU0lPTikKKyAgICAg
ICAgaWYgc2VsZi5fYWN0aXZlOgorICAgICAgICAgICAgcmVzcG9uc2UgPSBzZWxmLl9nZXRfZXh0
ZW5zaW9uX3Jlc3BvbnNlX2ludGVybmFsKCkKKyAgICAgICAgICAgIGlmIHJlc3BvbnNlIGlzIE5v
bmU6CisgICAgICAgICAgICAgICAgc2VsZi5fYWN0aXZlID0gRmFsc2UKKyAgICAgICAgICAgIHJl
dHVybiByZXNwb25zZQorICAgICAgICByZXR1cm4gTm9uZQogCi0gICAgICAgIHJldHVybiBjb21t
b24uRXh0ZW5zaW9uUGFyYW1ldGVyKGNvbW1vbi5ERUZMQVRFX1NUUkVBTV9FWFRFTlNJT04pCisg
ICAgZGVmIF9zZXR1cF9zdHJlYW1fb3B0aW9uc19pbnRlcm5hbChzZWxmLCBzdHJlYW1fb3B0aW9u
cyk6CisgICAgICAgIHBhc3MKIAogICAgIGRlZiBzZXR1cF9zdHJlYW1fb3B0aW9ucyhzZWxmLCBz
dHJlYW1fb3B0aW9ucyk6Ci0gICAgICAgIHN0cmVhbV9vcHRpb25zLmRlZmxhdGVfc3RyZWFtID0g
VHJ1ZQorICAgICAgICBpZiBzZWxmLl9hY3RpdmU6CisgICAgICAgICAgICBzZWxmLl9zZXR1cF9z
dHJlYW1fb3B0aW9uc19pbnRlcm5hbChzdHJlYW1fb3B0aW9ucykKIAogCi1fYXZhaWxhYmxlX3By
b2Nlc3NvcnNbY29tbW9uLkRFRkxBVEVfU1RSRUFNX0VYVEVOU0lPTl0gPSAoCi0gICAgRGVmbGF0
ZVN0cmVhbUV4dGVuc2lvblByb2Nlc3NvcikKLQotCi1kZWYgX2xvZ19jb21wcmVzc2lvbl9yYXRp
byhsb2dnZXIsIG9yaWdpbmFsX2J5dGVzLCB0b3RhbF9vcmlnaW5hbF9ieXRlcywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGZpbHRlcmVkX2J5dGVzLCB0b3RhbF9maWx0ZXJlZF9ieXRlcyk6
CitkZWYgX2xvZ19vdXRnb2luZ19jb21wcmVzc2lvbl9yYXRpbygKKyAgICAgICAgbG9nZ2VyLCBv
cmlnaW5hbF9ieXRlcywgZmlsdGVyZWRfYnl0ZXMsIGF2ZXJhZ2VfcmF0aW8pOgogICAgICMgUHJp
bnQgaW5mIHdoZW4gcmF0aW8gaXMgbm90IGF2YWlsYWJsZS4KICAgICByYXRpbyA9IGZsb2F0KCdp
bmYnKQotICAgIGF2ZXJhZ2VfcmF0aW8gPSBmbG9hdCgnaW5mJykKICAgICBpZiBvcmlnaW5hbF9i
eXRlcyAhPSAwOgogICAgICAgICByYXRpbyA9IGZsb2F0KGZpbHRlcmVkX2J5dGVzKSAvIG9yaWdp
bmFsX2J5dGVzCi0gICAgaWYgdG90YWxfb3JpZ2luYWxfYnl0ZXMgIT0gMDoKLSAgICAgICAgYXZl
cmFnZV9yYXRpbyA9ICgKLSAgICAgICAgICAgIGZsb2F0KHRvdGFsX2ZpbHRlcmVkX2J5dGVzKSAv
IHRvdGFsX29yaWdpbmFsX2J5dGVzKQotICAgIGxvZ2dlci5kZWJ1ZygnT3V0Z29pbmcgY29tcHJl
c3MgcmF0aW86ICVmIChhdmVyYWdlOiAlZiknICUKLSAgICAgICAgKHJhdGlvLCBhdmVyYWdlX3Jh
dGlvKSkKIAorICAgIGxvZ2dlci5kZWJ1ZygnT3V0Z29pbmcgY29tcHJlc3Npb24gcmF0aW86ICVm
IChhdmVyYWdlOiAlZiknICUKKyAgICAgICAgICAgIChyYXRpbywgYXZlcmFnZV9yYXRpbykpCiAK
LWRlZiBfbG9nX2RlY29tcHJlc3Npb25fcmF0aW8obG9nZ2VyLCByZWNlaXZlZF9ieXRlcywgdG90
YWxfcmVjZWl2ZWRfYnl0ZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlcmVk
X2J5dGVzLCB0b3RhbF9maWx0ZXJlZF9ieXRlcyk6CisKK2RlZiBfbG9nX2luY29taW5nX2NvbXBy
ZXNzaW9uX3JhdGlvKAorICAgICAgICBsb2dnZXIsIHJlY2VpdmVkX2J5dGVzLCBmaWx0ZXJlZF9i
eXRlcywgYXZlcmFnZV9yYXRpbyk6CiAgICAgIyBQcmludCBpbmYgd2hlbiByYXRpbyBpcyBub3Qg
YXZhaWxhYmxlLgogICAgIHJhdGlvID0gZmxvYXQoJ2luZicpCi0gICAgYXZlcmFnZV9yYXRpbyA9
IGZsb2F0KCdpbmYnKQotICAgIGlmIHJlY2VpdmVkX2J5dGVzICE9IDA6CisgICAgaWYgZmlsdGVy
ZWRfYnl0ZXMgIT0gMDoKICAgICAgICAgcmF0aW8gPSBmbG9hdChyZWNlaXZlZF9ieXRlcykgLyBm
aWx0ZXJlZF9ieXRlcwotICAgIGlmIHRvdGFsX2ZpbHRlcmVkX2J5dGVzICE9IDA6Ci0gICAgICAg
IGF2ZXJhZ2VfcmF0aW8gPSAoCi0gICAgICAgICAgICBmbG9hdCh0b3RhbF9yZWNlaXZlZF9ieXRl
cykgLyB0b3RhbF9maWx0ZXJlZF9ieXRlcykKLSAgICBsb2dnZXIuZGVidWcoJ0luY29taW5nIGNv
bXByZXNzIHJhdGlvOiAlZiAoYXZlcmFnZTogJWYpJyAlCi0gICAgICAgIChyYXRpbywgYXZlcmFn
ZV9yYXRpbykpCisKKyAgICBsb2dnZXIuZGVidWcoJ0luY29taW5nIGNvbXByZXNzaW9uIHJhdGlv
OiAlZiAoYXZlcmFnZTogJWYpJyAlCisgICAgICAgICAgICAocmF0aW8sIGF2ZXJhZ2VfcmF0aW8p
KQorCisKK2RlZiBfcGFyc2Vfd2luZG93X2JpdHMoYml0cyk6CisgICAgIiIiUmV0dXJuIHBhcnNl
ZCBpbnRlZ2VyIHZhbHVlIGlmZiB0aGUgZ2l2ZW4gc3RyaW5nIGNvbmZvcm1zIHRvIHRoZQorICAg
IGdyYW1tYXIgb2YgdGhlIHdpbmRvdyBiaXRzIGV4dGVuc2lvbiBwYXJhbWV0ZXJzLgorICAgICIi
IgorCisgICAgaWYgYml0cyBpcyBOb25lOgorICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdWYWx1
ZSBpcyByZXF1aXJlZCcpCisKKyAgICAjIEZvciBub24gaW50ZWdlciB2YWx1ZXMgc3VjaCBhcyAi
MTAuMCIsIFZhbHVlRXJyb3Igd2lsbCBiZSByYWlzZWQuCisgICAgaW50X2JpdHMgPSBpbnQoYml0
cykKKworICAgICMgRmlyc3QgY29uZGl0aW9uIGlzIHRvIGRyb3AgbGVhZGluZyB6ZXJvIGNhc2Ug
ZS5nLiAiMDgiLgorICAgIGlmIGJpdHMgIT0gc3RyKGludF9iaXRzKSBvciBpbnRfYml0cyA8IDgg
b3IgaW50X2JpdHMgPiAxNToKKyAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignSW52YWxpZCB2YWx1
ZTogJXInICUgYml0cykKKworICAgIHJldHVybiBpbnRfYml0cworCisKK2NsYXNzIF9BdmVyYWdl
UmF0aW9DYWxjdWxhdG9yKG9iamVjdCk6CisgICAgIiIiU3RvcmVzIHRvdGFsIGJ5dGVzIG9mIG9y
aWdpbmFsIGFuZCByZXN1bHQgZGF0YSwgYW5kIGNhbGN1bGF0ZXMgYXZlcmFnZQorICAgIHJlc3Vs
dCAvIG9yaWdpbmFsIHJhdGlvLgorICAgICIiIgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYpOgor
ICAgICAgICBzZWxmLl90b3RhbF9vcmlnaW5hbF9ieXRlcyA9IDAKKyAgICAgICAgc2VsZi5fdG90
YWxfcmVzdWx0X2J5dGVzID0gMAorCisgICAgZGVmIGFkZF9vcmlnaW5hbF9ieXRlcyhzZWxmLCB2
YWx1ZSk6CisgICAgICAgIHNlbGYuX3RvdGFsX29yaWdpbmFsX2J5dGVzICs9IHZhbHVlCisKKyAg
ICBkZWYgYWRkX3Jlc3VsdF9ieXRlcyhzZWxmLCB2YWx1ZSk6CisgICAgICAgIHNlbGYuX3RvdGFs
X3Jlc3VsdF9ieXRlcyArPSB2YWx1ZQorCisgICAgZGVmIGdldF9hdmVyYWdlX3JhdGlvKHNlbGYp
OgorICAgICAgICBpZiBzZWxmLl90b3RhbF9vcmlnaW5hbF9ieXRlcyAhPSAwOgorICAgICAgICAg
ICAgcmV0dXJuIChmbG9hdChzZWxmLl90b3RhbF9yZXN1bHRfYnl0ZXMpIC8KKyAgICAgICAgICAg
ICAgICAgICAgc2VsZi5fdG90YWxfb3JpZ2luYWxfYnl0ZXMpCisgICAgICAgIGVsc2U6CisgICAg
ICAgICAgICByZXR1cm4gZmxvYXQoJ2luZicpCiAKIAogY2xhc3MgRGVmbGF0ZUZyYW1lRXh0ZW5z
aW9uUHJvY2Vzc29yKEV4dGVuc2lvblByb2Nlc3NvckludGVyZmFjZSk6Ci0gICAgIiIiV2ViU29j
a2V0IFBlci1mcmFtZSBERUZMQVRFIGV4dGVuc2lvbiBwcm9jZXNzb3IuCisgICAgIiIiZGVmbGF0
ZS1mcmFtZSBleHRlbnNpb24gcHJvY2Vzc29yLgogCiAgICAgU3BlY2lmaWNhdGlvbjoKICAgICBo
dHRwOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9kcmFmdC10eW9zaGluby1oeWJpLXdlYnNvY2tldC1w
ZXJmcmFtZS1kZWZsYXRlCkBAIC0xMjAsMzQgKzE1MSwzOCBAQCBjbGFzcyBEZWZsYXRlRnJhbWVF
eHRlbnNpb25Qcm9jZXNzb3IoRXh0ZW5zaW9uUHJvY2Vzc29ySW50ZXJmYWNlKToKICAgICBfTk9f
Q09OVEVYVF9UQUtFT1ZFUl9QQVJBTSA9ICdub19jb250ZXh0X3Rha2VvdmVyJwogCiAgICAgZGVm
IF9faW5pdF9fKHNlbGYsIHJlcXVlc3QpOgorICAgICAgICBFeHRlbnNpb25Qcm9jZXNzb3JJbnRl
cmZhY2UuX19pbml0X18oc2VsZiwgcmVxdWVzdCkKICAgICAgICAgc2VsZi5fbG9nZ2VyID0gdXRp
bC5nZXRfY2xhc3NfbG9nZ2VyKHNlbGYpCiAKLSAgICAgICAgc2VsZi5fcmVxdWVzdCA9IHJlcXVl
c3QKLQogICAgICAgICBzZWxmLl9yZXNwb25zZV93aW5kb3dfYml0cyA9IE5vbmUKICAgICAgICAg
c2VsZi5fcmVzcG9uc2Vfbm9fY29udGV4dF90YWtlb3ZlciA9IEZhbHNlCiAgICAgICAgIHNlbGYu
X2JmaW5hbCA9IEZhbHNlCiAKLSAgICAgICAgIyBDb3VudGVycyBmb3Igc3RhdGlzdGljcy4KLQot
ICAgICAgICAjIFRvdGFsIG51bWJlciBvZiBvdXRnb2luZyBieXRlcyBzdXBwbGllZCB0byB0aGlz
IGZpbHRlci4KLSAgICAgICAgc2VsZi5fdG90YWxfb3V0Z29pbmdfcGF5bG9hZF9ieXRlcyA9IDAK
LSAgICAgICAgIyBUb3RhbCBudW1iZXIgb2YgYnl0ZXMgc2VudCB0byB0aGUgbmV0d29yayBhZnRl
ciBhcHBseWluZyB0aGlzIGZpbHRlci4KLSAgICAgICAgc2VsZi5fdG90YWxfZmlsdGVyZWRfb3V0
Z29pbmdfcGF5bG9hZF9ieXRlcyA9IDAKKyAgICAgICAgIyBDYWxjdWxhdGVzCisgICAgICAgICMg
ICAgIChUb3RhbCBvdXRnb2luZyBieXRlcyBzdXBwbGllZCB0byB0aGlzIGZpbHRlcikgLworICAg
ICAgICAjICAgICAoVG90YWwgYnl0ZXMgc2VudCB0byB0aGUgbmV0d29yayBhZnRlciBhcHBseWlu
ZyB0aGlzIGZpbHRlcikKKyAgICAgICAgc2VsZi5fb3V0Z29pbmdfYXZlcmFnZV9yYXRpb19jYWxj
dWxhdG9yID0gX0F2ZXJhZ2VSYXRpb0NhbGN1bGF0b3IoKQogCi0gICAgICAgICMgVG90YWwgbnVt
YmVyIG9mIGJ5dGVzIHJlY2VpdmVkIGZyb20gdGhlIG5ldHdvcmsuCi0gICAgICAgIHNlbGYuX3Rv
dGFsX2luY29taW5nX3BheWxvYWRfYnl0ZXMgPSAwCi0gICAgICAgICMgVG90YWwgbnVtYmVyIG9m
IGluY29taW5nIGJ5dGVzIG9idGFpbmVkIGFmdGVyIGFwcGx5aW5nIHRoaXMgZmlsdGVyLgotICAg
ICAgICBzZWxmLl90b3RhbF9maWx0ZXJlZF9pbmNvbWluZ19wYXlsb2FkX2J5dGVzID0gMAorICAg
ICAgICAjIENhbGN1bGF0ZXMKKyAgICAgICAgIyAgICAgKFRvdGFsIGJ5dGVzIHJlY2VpdmVkIGZy
b20gdGhlIG5ldHdvcmspIC8KKyAgICAgICAgIyAgICAgKFRvdGFsIGluY29taW5nIGJ5dGVzIG9i
dGFpbmVkIGFmdGVyIGFwcGx5aW5nIHRoaXMgZmlsdGVyKQorICAgICAgICBzZWxmLl9pbmNvbWlu
Z19hdmVyYWdlX3JhdGlvX2NhbGN1bGF0b3IgPSBfQXZlcmFnZVJhdGlvQ2FsY3VsYXRvcigpCiAK
ICAgICBkZWYgbmFtZShzZWxmKToKICAgICAgICAgcmV0dXJuIGNvbW1vbi5ERUZMQVRFX0ZSQU1F
X0VYVEVOU0lPTgogCi0gICAgZGVmIGdldF9leHRlbnNpb25fcmVzcG9uc2Uoc2VsZik6CisgICAg
ZGVmIF9nZXRfZXh0ZW5zaW9uX3Jlc3BvbnNlX2ludGVybmFsKHNlbGYpOgogICAgICAgICAjIEFu
eSB1bmtub3duIHBhcmFtZXRlciB3aWxsIGJlIGp1c3QgaWdub3JlZC4KIAotICAgICAgICB3aW5k
b3dfYml0cyA9IHNlbGYuX3JlcXVlc3QuZ2V0X3BhcmFtZXRlcl92YWx1ZSgKLSAgICAgICAgICAg
IHNlbGYuX1dJTkRPV19CSVRTX1BBUkFNKQorICAgICAgICB3aW5kb3dfYml0cyA9IE5vbmUKKyAg
ICAgICAgaWYgc2VsZi5fcmVxdWVzdC5oYXNfcGFyYW1ldGVyKHNlbGYuX1dJTkRPV19CSVRTX1BB
UkFNKToKKyAgICAgICAgICAgIHdpbmRvd19iaXRzID0gc2VsZi5fcmVxdWVzdC5nZXRfcGFyYW1l
dGVyX3ZhbHVlKAorICAgICAgICAgICAgICAgIHNlbGYuX1dJTkRPV19CSVRTX1BBUkFNKQorICAg
ICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHdpbmRvd19iaXRzID0gX3BhcnNlX3dpbmRv
d19iaXRzKHdpbmRvd19iaXRzKQorICAgICAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3IsIGU6Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKKwogICAgICAgICBub19jb250ZXh0X3Rha2VvdmVy
ID0gc2VsZi5fcmVxdWVzdC5oYXNfcGFyYW1ldGVyKAogICAgICAgICAgICAgc2VsZi5fTk9fQ09O
VEVYVF9UQUtFT1ZFUl9QQVJBTSkKICAgICAgICAgaWYgKG5vX2NvbnRleHRfdGFrZW92ZXIgYW5k
CkBAIC0xNTUsMTggKzE5MCwxMCBAQCBjbGFzcyBEZWZsYXRlRnJhbWVFeHRlbnNpb25Qcm9jZXNz
b3IoRXh0ZW5zaW9uUHJvY2Vzc29ySW50ZXJmYWNlKToKICAgICAgICAgICAgICAgICBzZWxmLl9O
T19DT05URVhUX1RBS0VPVkVSX1BBUkFNKSBpcyBub3QgTm9uZSk6CiAgICAgICAgICAgICByZXR1
cm4gTm9uZQogCi0gICAgICAgIGlmIHdpbmRvd19iaXRzIGlzIG5vdCBOb25lOgotICAgICAgICAg
ICAgdHJ5OgotICAgICAgICAgICAgICAgIHdpbmRvd19iaXRzID0gaW50KHdpbmRvd19iaXRzKQot
ICAgICAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3IsIGU6Ci0gICAgICAgICAgICAgICAgcmV0dXJu
IE5vbmUKLSAgICAgICAgICAgIGlmIHdpbmRvd19iaXRzIDwgOCBvciB3aW5kb3dfYml0cyA+IDE1
OgotICAgICAgICAgICAgICAgIHJldHVybiBOb25lCi0KLSAgICAgICAgc2VsZi5fZGVmbGF0ZXIg
PSB1dGlsLl9SRkMxOTc5RGVmbGF0ZXIoCisgICAgICAgIHNlbGYuX3JmYzE5NzlfZGVmbGF0ZXIg
PSB1dGlsLl9SRkMxOTc5RGVmbGF0ZXIoCiAgICAgICAgICAgICB3aW5kb3dfYml0cywgbm9fY29u
dGV4dF90YWtlb3ZlcikKIAotICAgICAgICBzZWxmLl9pbmZsYXRlciA9IHV0aWwuX1JGQzE5NzlJ
bmZsYXRlcigpCisgICAgICAgIHNlbGYuX3JmYzE5NzlfaW5mbGF0ZXIgPSB1dGlsLl9SRkMxOTc5
SW5mbGF0ZXIoKQogCiAgICAgICAgIHNlbGYuX2NvbXByZXNzX291dGdvaW5nID0gVHJ1ZQogCkBA
IC0xOTEsNyArMjE4LDcgQEAgY2xhc3MgRGVmbGF0ZUZyYW1lRXh0ZW5zaW9uUHJvY2Vzc29yKEV4
dGVuc2lvblByb2Nlc3NvckludGVyZmFjZSk6CiAKICAgICAgICAgcmV0dXJuIHJlc3BvbnNlCiAK
LSAgICBkZWYgc2V0dXBfc3RyZWFtX29wdGlvbnMoc2VsZiwgc3RyZWFtX29wdGlvbnMpOgorICAg
IGRlZiBfc2V0dXBfc3RyZWFtX29wdGlvbnNfaW50ZXJuYWwoc2VsZiwgc3RyZWFtX29wdGlvbnMp
OgogCiAgICAgICAgIGNsYXNzIF9PdXRnb2luZ0ZpbHRlcihvYmplY3QpOgogCkBAIC0yMzUsMjUg
KzI2MiwyOCBAQCBjbGFzcyBEZWZsYXRlRnJhbWVFeHRlbnNpb25Qcm9jZXNzb3IoRXh0ZW5zaW9u
UHJvY2Vzc29ySW50ZXJmYWNlKToKICAgICAgICAgIiIiCiAKICAgICAgICAgb3JpZ2luYWxfcGF5
bG9hZF9zaXplID0gbGVuKGZyYW1lLnBheWxvYWQpCi0gICAgICAgIHNlbGYuX3RvdGFsX291dGdv
aW5nX3BheWxvYWRfYnl0ZXMgKz0gb3JpZ2luYWxfcGF5bG9hZF9zaXplCisgICAgICAgIHNlbGYu
X291dGdvaW5nX2F2ZXJhZ2VfcmF0aW9fY2FsY3VsYXRvci5hZGRfb3JpZ2luYWxfYnl0ZXMoCisg
ICAgICAgICAgICAgICAgb3JpZ2luYWxfcGF5bG9hZF9zaXplKQogCiAgICAgICAgIGlmIChub3Qg
c2VsZi5fY29tcHJlc3Nfb3V0Z29pbmcgb3IKICAgICAgICAgICAgIGNvbW1vbi5pc19jb250cm9s
X29wY29kZShmcmFtZS5vcGNvZGUpKToKLSAgICAgICAgICAgIHNlbGYuX3RvdGFsX2ZpbHRlcmVk
X291dGdvaW5nX3BheWxvYWRfYnl0ZXMgKz0gKAotICAgICAgICAgICAgICAgIG9yaWdpbmFsX3Bh
eWxvYWRfc2l6ZSkKKyAgICAgICAgICAgIHNlbGYuX291dGdvaW5nX2F2ZXJhZ2VfcmF0aW9fY2Fs
Y3VsYXRvci5hZGRfcmVzdWx0X2J5dGVzKAorICAgICAgICAgICAgICAgICAgICBvcmlnaW5hbF9w
YXlsb2FkX3NpemUpCiAgICAgICAgICAgICByZXR1cm4KIAotICAgICAgICBmcmFtZS5wYXlsb2Fk
ID0gc2VsZi5fZGVmbGF0ZXIuZmlsdGVyKAorICAgICAgICBmcmFtZS5wYXlsb2FkID0gc2VsZi5f
cmZjMTk3OV9kZWZsYXRlci5maWx0ZXIoCiAgICAgICAgICAgICBmcmFtZS5wYXlsb2FkLCBiZmlu
YWw9c2VsZi5fYmZpbmFsKQogICAgICAgICBmcmFtZS5yc3YxID0gMQogCiAgICAgICAgIGZpbHRl
cmVkX3BheWxvYWRfc2l6ZSA9IGxlbihmcmFtZS5wYXlsb2FkKQotICAgICAgICBzZWxmLl90b3Rh
bF9maWx0ZXJlZF9vdXRnb2luZ19wYXlsb2FkX2J5dGVzICs9IGZpbHRlcmVkX3BheWxvYWRfc2l6
ZQorICAgICAgICBzZWxmLl9vdXRnb2luZ19hdmVyYWdlX3JhdGlvX2NhbGN1bGF0b3IuYWRkX3Jl
c3VsdF9ieXRlcygKKyAgICAgICAgICAgICAgICBmaWx0ZXJlZF9wYXlsb2FkX3NpemUpCiAKLSAg
ICAgICAgX2xvZ19jb21wcmVzc2lvbl9yYXRpbyhzZWxmLl9sb2dnZXIsIG9yaWdpbmFsX3BheWxv
YWRfc2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl90b3RhbF9vdXRn
b2luZ19wYXlsb2FkX2J5dGVzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRl
cmVkX3BheWxvYWRfc2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl90
b3RhbF9maWx0ZXJlZF9vdXRnb2luZ19wYXlsb2FkX2J5dGVzKQorICAgICAgICBfbG9nX291dGdv
aW5nX2NvbXByZXNzaW9uX3JhdGlvKAorICAgICAgICAgICAgICAgIHNlbGYuX2xvZ2dlciwKKyAg
ICAgICAgICAgICAgICBvcmlnaW5hbF9wYXlsb2FkX3NpemUsCisgICAgICAgICAgICAgICAgZmls
dGVyZWRfcGF5bG9hZF9zaXplLAorICAgICAgICAgICAgICAgIHNlbGYuX291dGdvaW5nX2F2ZXJh
Z2VfcmF0aW9fY2FsY3VsYXRvci5nZXRfYXZlcmFnZV9yYXRpbygpKQogCiAgICAgZGVmIF9pbmNv
bWluZ19maWx0ZXIoc2VsZiwgZnJhbWUpOgogICAgICAgICAiIiJUcmFuc2Zvcm0gaW5jb21pbmcg
ZnJhbWVzLiBUaGlzIG1ldGhvZCBpcyBjYWxsZWQgb25seSBieQpAQCAtMjYxLDMzICsyOTEsMzUg
QEAgY2xhc3MgRGVmbGF0ZUZyYW1lRXh0ZW5zaW9uUHJvY2Vzc29yKEV4dGVuc2lvblByb2Nlc3Nv
ckludGVyZmFjZSk6CiAgICAgICAgICIiIgogCiAgICAgICAgIHJlY2VpdmVkX3BheWxvYWRfc2l6
ZSA9IGxlbihmcmFtZS5wYXlsb2FkKQotICAgICAgICBzZWxmLl90b3RhbF9pbmNvbWluZ19wYXls
b2FkX2J5dGVzICs9IHJlY2VpdmVkX3BheWxvYWRfc2l6ZQorICAgICAgICBzZWxmLl9pbmNvbWlu
Z19hdmVyYWdlX3JhdGlvX2NhbGN1bGF0b3IuYWRkX3Jlc3VsdF9ieXRlcygKKyAgICAgICAgICAg
ICAgICByZWNlaXZlZF9wYXlsb2FkX3NpemUpCiAKICAgICAgICAgaWYgZnJhbWUucnN2MSAhPSAx
IG9yIGNvbW1vbi5pc19jb250cm9sX29wY29kZShmcmFtZS5vcGNvZGUpOgotICAgICAgICAgICAg
c2VsZi5fdG90YWxfZmlsdGVyZWRfaW5jb21pbmdfcGF5bG9hZF9ieXRlcyArPSAoCi0gICAgICAg
ICAgICAgICAgcmVjZWl2ZWRfcGF5bG9hZF9zaXplKQorICAgICAgICAgICAgc2VsZi5faW5jb21p
bmdfYXZlcmFnZV9yYXRpb19jYWxjdWxhdG9yLmFkZF9vcmlnaW5hbF9ieXRlcygKKyAgICAgICAg
ICAgICAgICAgICAgcmVjZWl2ZWRfcGF5bG9hZF9zaXplKQogICAgICAgICAgICAgcmV0dXJuCiAK
LSAgICAgICAgZnJhbWUucGF5bG9hZCA9IHNlbGYuX2luZmxhdGVyLmZpbHRlcihmcmFtZS5wYXls
b2FkKQorICAgICAgICBmcmFtZS5wYXlsb2FkID0gc2VsZi5fcmZjMTk3OV9pbmZsYXRlci5maWx0
ZXIoZnJhbWUucGF5bG9hZCkKICAgICAgICAgZnJhbWUucnN2MSA9IDAKIAogICAgICAgICBmaWx0
ZXJlZF9wYXlsb2FkX3NpemUgPSBsZW4oZnJhbWUucGF5bG9hZCkKLSAgICAgICAgc2VsZi5fdG90
YWxfZmlsdGVyZWRfaW5jb21pbmdfcGF5bG9hZF9ieXRlcyArPSBmaWx0ZXJlZF9wYXlsb2FkX3Np
emUKKyAgICAgICAgc2VsZi5faW5jb21pbmdfYXZlcmFnZV9yYXRpb19jYWxjdWxhdG9yLmFkZF9v
cmlnaW5hbF9ieXRlcygKKyAgICAgICAgICAgICAgICBmaWx0ZXJlZF9wYXlsb2FkX3NpemUpCiAK
LSAgICAgICAgX2xvZ19kZWNvbXByZXNzaW9uX3JhdGlvKHNlbGYuX2xvZ2dlciwgcmVjZWl2ZWRf
cGF5bG9hZF9zaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fdG90
YWxfaW5jb21pbmdfcGF5bG9hZF9ieXRlcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGZpbHRlcmVkX3BheWxvYWRfc2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNlbGYuX3RvdGFsX2ZpbHRlcmVkX2luY29taW5nX3BheWxvYWRfYnl0ZXMpCisgICAgICAg
IF9sb2dfaW5jb21pbmdfY29tcHJlc3Npb25fcmF0aW8oCisgICAgICAgICAgICAgICAgc2VsZi5f
bG9nZ2VyLAorICAgICAgICAgICAgICAgIHJlY2VpdmVkX3BheWxvYWRfc2l6ZSwKKyAgICAgICAg
ICAgICAgICBmaWx0ZXJlZF9wYXlsb2FkX3NpemUsCisgICAgICAgICAgICAgICAgc2VsZi5faW5j
b21pbmdfYXZlcmFnZV9yYXRpb19jYWxjdWxhdG9yLmdldF9hdmVyYWdlX3JhdGlvKCkpCiAKIAog
X2F2YWlsYWJsZV9wcm9jZXNzb3JzW2NvbW1vbi5ERUZMQVRFX0ZSQU1FX0VYVEVOU0lPTl0gPSAo
CiAgICAgRGVmbGF0ZUZyYW1lRXh0ZW5zaW9uUHJvY2Vzc29yKQorX2NvbXByZXNzaW9uX2V4dGVu
c2lvbl9uYW1lcy5hcHBlbmQoY29tbW9uLkRFRkxBVEVfRlJBTUVfRVhURU5TSU9OKQogCi0KLSMg
QWRkaW5nIHZlbmRvci1wcmVmaXhlZCBkZWZsYXRlLWZyYW1lIGV4dGVuc2lvbi4KLSMgVE9ETyhi
YXNoaSk6IFJlbW92ZSB0aGlzIGFmdGVyIFdlYktpdCBzdG9wcyB1c2luZyB2ZW5kb3IgcHJlZml4
LgogX2F2YWlsYWJsZV9wcm9jZXNzb3JzW2NvbW1vbi5YX1dFQktJVF9ERUZMQVRFX0ZSQU1FX0VY
VEVOU0lPTl0gPSAoCiAgICAgRGVmbGF0ZUZyYW1lRXh0ZW5zaW9uUHJvY2Vzc29yKQorX2NvbXBy
ZXNzaW9uX2V4dGVuc2lvbl9uYW1lcy5hcHBlbmQoY29tbW9uLlhfV0VCS0lUX0RFRkxBVEVfRlJB
TUVfRVhURU5TSU9OKQogCiAKIGRlZiBfcGFyc2VfY29tcHJlc3Npb25fbWV0aG9kKGRhdGEpOgpA
QCAtMzA2LDEzICszMzgsMTMgQEAgZGVmIF9jcmVhdGVfYWNjZXB0ZWRfbWV0aG9kX2Rlc2MobWV0
aG9kX25hbWUsIG1ldGhvZF9wYXJhbXMpOgogCiAKIGNsYXNzIENvbXByZXNzaW9uRXh0ZW5zaW9u
UHJvY2Vzc29yQmFzZShFeHRlbnNpb25Qcm9jZXNzb3JJbnRlcmZhY2UpOgotICAgICIiIkJhc2Ug
Y2xhc3MgZm9yIFBlci1mcmFtZSBhbmQgUGVyLW1lc3NhZ2UgY29tcHJlc3Npb24gZXh0ZW5zaW9u
LiIiIgorICAgICIiIkJhc2UgY2xhc3MgZm9yIHBlcmZyYW1lLWNvbXByZXNzIGFuZCBwZXJtZXNz
YWdlLWNvbXByZXNzIGV4dGVuc2lvbi4iIiIKIAogICAgIF9NRVRIT0RfUEFSQU0gPSAnbWV0aG9k
JwogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHJlcXVlc3QpOgorICAgICAgICBFeHRlbnNpb25Q
cm9jZXNzb3JJbnRlcmZhY2UuX19pbml0X18oc2VsZiwgcmVxdWVzdCkKICAgICAgICAgc2VsZi5f
bG9nZ2VyID0gdXRpbC5nZXRfY2xhc3NfbG9nZ2VyKHNlbGYpCi0gICAgICAgIHNlbGYuX3JlcXVl
c3QgPSByZXF1ZXN0CiAgICAgICAgIHNlbGYuX2NvbXByZXNzaW9uX21ldGhvZF9uYW1lID0gTm9u
ZQogICAgICAgICBzZWxmLl9jb21wcmVzc2lvbl9wcm9jZXNzb3IgPSBOb25lCiAgICAgICAgIHNl
bGYuX2NvbXByZXNzaW9uX3Byb2Nlc3Nvcl9ob29rID0gTm9uZQpAQCAtMzU3LDcgKzM4OSw3IEBA
IGNsYXNzIENvbXByZXNzaW9uRXh0ZW5zaW9uUHJvY2Vzc29yQmFzZShFeHRlbnNpb25Qcm9jZXNz
b3JJbnRlcmZhY2UpOgogICAgICAgICBzZWxmLl9jb21wcmVzc2lvbl9wcm9jZXNzb3IgPSBjb21w
cmVzc2lvbl9wcm9jZXNzb3IKICAgICAgICAgcmV0dXJuIHByb2Nlc3Nvcl9yZXNwb25zZQogCi0g
ICAgZGVmIGdldF9leHRlbnNpb25fcmVzcG9uc2Uoc2VsZik6CisgICAgZGVmIF9nZXRfZXh0ZW5z
aW9uX3Jlc3BvbnNlX2ludGVybmFsKHNlbGYpOgogICAgICAgICBwcm9jZXNzb3JfcmVzcG9uc2Ug
PSBzZWxmLl9nZXRfY29tcHJlc3Npb25fcHJvY2Vzc29yX3Jlc3BvbnNlKCkKICAgICAgICAgaWYg
cHJvY2Vzc29yX3Jlc3BvbnNlIGlzIE5vbmU6CiAgICAgICAgICAgICByZXR1cm4gTm9uZQpAQCAt
MzcyLDcgKzQwNCw3IEBAIGNsYXNzIENvbXByZXNzaW9uRXh0ZW5zaW9uUHJvY2Vzc29yQmFzZShF
eHRlbnNpb25Qcm9jZXNzb3JJbnRlcmZhY2UpOgogICAgICAgICAgICAgKHNlbGYuX3JlcXVlc3Qu
bmFtZSgpLCBzZWxmLl9jb21wcmVzc2lvbl9tZXRob2RfbmFtZSkpCiAgICAgICAgIHJldHVybiBy
ZXNwb25zZQogCi0gICAgZGVmIHNldHVwX3N0cmVhbV9vcHRpb25zKHNlbGYsIHN0cmVhbV9vcHRp
b25zKToKKyAgICBkZWYgX3NldHVwX3N0cmVhbV9vcHRpb25zX2ludGVybmFsKHNlbGYsIHN0cmVh
bV9vcHRpb25zKToKICAgICAgICAgaWYgc2VsZi5fY29tcHJlc3Npb25fcHJvY2Vzc29yIGlzIE5v
bmU6CiAgICAgICAgICAgICByZXR1cm4KICAgICAgICAgc2VsZi5fY29tcHJlc3Npb25fcHJvY2Vz
c29yLnNldHVwX3N0cmVhbV9vcHRpb25zKHN0cmVhbV9vcHRpb25zKQpAQCAtMzg0LDggKzQxNiw4
IEBAIGNsYXNzIENvbXByZXNzaW9uRXh0ZW5zaW9uUHJvY2Vzc29yQmFzZShFeHRlbnNpb25Qcm9j
ZXNzb3JJbnRlcmZhY2UpOgogICAgICAgICByZXR1cm4gc2VsZi5fY29tcHJlc3Npb25fcHJvY2Vz
c29yCiAKIAotY2xhc3MgUGVyRnJhbWVDb21wcmVzc2lvbkV4dGVuc2lvblByb2Nlc3NvcihDb21w
cmVzc2lvbkV4dGVuc2lvblByb2Nlc3NvckJhc2UpOgotICAgICIiIldlYlNvY2tldCBQZXItZnJh
bWUgY29tcHJlc3Npb24gZXh0ZW5zaW9uIHByb2Nlc3Nvci4KK2NsYXNzIFBlckZyYW1lQ29tcHJl
c3NFeHRlbnNpb25Qcm9jZXNzb3IoQ29tcHJlc3Npb25FeHRlbnNpb25Qcm9jZXNzb3JCYXNlKToK
KyAgICAiIiJwZXJmcmFtZS1jb21wcmVzcyBwcm9jZXNzb3IuCiAKICAgICBTcGVjaWZpY2F0aW9u
OgogICAgIGh0dHA6Ly90b29scy5pZXRmLm9yZy9odG1sL2RyYWZ0LWlldGYtaHliaS13ZWJzb2Nr
ZXQtcGVyZnJhbWUtY29tcHJlc3Npb24KQEAgLTQwNiw1NiArNDM4LDY2IEBAIGNsYXNzIFBlckZy
YW1lQ29tcHJlc3Npb25FeHRlbnNpb25Qcm9jZXNzb3IoQ29tcHJlc3Npb25FeHRlbnNpb25Qcm9j
ZXNzb3JCYXNlKToKIAogCiBfYXZhaWxhYmxlX3Byb2Nlc3NvcnNbY29tbW9uLlBFUkZSQU1FX0NP
TVBSRVNTSU9OX0VYVEVOU0lPTl0gPSAoCi0gICAgUGVyRnJhbWVDb21wcmVzc2lvbkV4dGVuc2lv
blByb2Nlc3NvcikKKyAgICBQZXJGcmFtZUNvbXByZXNzRXh0ZW5zaW9uUHJvY2Vzc29yKQorX2Nv
bXByZXNzaW9uX2V4dGVuc2lvbl9uYW1lcy5hcHBlbmQoY29tbW9uLlBFUkZSQU1FX0NPTVBSRVNT
SU9OX0VYVEVOU0lPTikKIAogCi1jbGFzcyBEZWZsYXRlTWVzc2FnZVByb2Nlc3NvcihFeHRlbnNp
b25Qcm9jZXNzb3JJbnRlcmZhY2UpOgotICAgICIiIlBlci1tZXNzYWdlIGRlZmxhdGUgcHJvY2Vz
c29yLiIiIgorY2xhc3MgUGVyTWVzc2FnZURlZmxhdGVFeHRlbnNpb25Qcm9jZXNzb3IoRXh0ZW5z
aW9uUHJvY2Vzc29ySW50ZXJmYWNlKToKKyAgICAiIiJwZXJtZXNzYWdlLWRlZmxhdGUgZXh0ZW5z
aW9uIHByb2Nlc3Nvci4gSXQncyBhbHNvIHVzZWQgZm9yCisgICAgcGVybWVzc2FnZS1jb21wcmVz
cyBleHRlbnNpb24gd2hlbiB0aGUgZGVmbGF0ZSBtZXRob2QgaXMgY2hvc2VuLgorCisgICAgU3Bl
Y2lmaWNhdGlvbjoKKyAgICBodHRwOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9kcmFmdC1pZXRmLWh5
YmktcGVybWVzc2FnZS1jb21wcmVzc2lvbi0wOAorICAgICIiIgogCiAgICAgX1MyQ19NQVhfV0lO
RE9XX0JJVFNfUEFSQU0gPSAnczJjX21heF93aW5kb3dfYml0cycKICAgICBfUzJDX05PX0NPTlRF
WFRfVEFLRU9WRVJfUEFSQU0gPSAnczJjX25vX2NvbnRleHRfdGFrZW92ZXInCiAgICAgX0MyU19N
QVhfV0lORE9XX0JJVFNfUEFSQU0gPSAnYzJzX21heF93aW5kb3dfYml0cycKICAgICBfQzJTX05P
X0NPTlRFWFRfVEFLRU9WRVJfUEFSQU0gPSAnYzJzX25vX2NvbnRleHRfdGFrZW92ZXInCiAKLSAg
ICBkZWYgX19pbml0X18oc2VsZiwgcmVxdWVzdCk6Ci0gICAgICAgIHNlbGYuX3JlcXVlc3QgPSBy
ZXF1ZXN0CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHJlcXVlc3QsIGRyYWZ0MDg9VHJ1ZSk6Cisg
ICAgICAgICIiIkNvbnN0cnVjdCBQZXJNZXNzYWdlRGVmbGF0ZUV4dGVuc2lvblByb2Nlc3Nvcgor
CisgICAgICAgIEFyZ3M6CisgICAgICAgICAgICBkcmFmdDA4OiBGb2xsb3cgdGhlIGNvbnN0cmFp
bnRzIG9uIHRoZSBwYXJhbWV0ZXJzIHRoYXQgd2VyZSBub3QKKyAgICAgICAgICAgICAgICBzcGVj
aWZpZWQgZm9yIHBlcm1lc3NhZ2UtY29tcHJlc3MgYnV0IGFyZSBzcGVjaWZpZWQgZm9yCisgICAg
ICAgICAgICAgICAgcGVybWVzc2FnZS1kZWZsYXRlIGFzIG9uCisgICAgICAgICAgICAgICAgZHJh
ZnQtaWV0Zi1oeWJpLXBlcm1lc3NhZ2UtY29tcHJlc3Npb24tMDguCisgICAgICAgICIiIgorCisg
ICAgICAgIEV4dGVuc2lvblByb2Nlc3NvckludGVyZmFjZS5fX2luaXRfXyhzZWxmLCByZXF1ZXN0
KQogICAgICAgICBzZWxmLl9sb2dnZXIgPSB1dGlsLmdldF9jbGFzc19sb2dnZXIoc2VsZikKIAog
ICAgICAgICBzZWxmLl9jMnNfbWF4X3dpbmRvd19iaXRzID0gTm9uZQogICAgICAgICBzZWxmLl9j
MnNfbm9fY29udGV4dF90YWtlb3ZlciA9IEZhbHNlCi0gICAgICAgIHNlbGYuX2JmaW5hbCA9IEZh
bHNlCi0KLSAgICAgICAgc2VsZi5fY29tcHJlc3Nfb3V0Z29pbmdfZW5hYmxlZCA9IEZhbHNlCiAK
LSAgICAgICAgIyBUcnVlIGlmIGEgbWVzc2FnZSBpcyBmcmFnbWVudGVkIGFuZCBjb21wcmVzc2lv
biBpcyBvbmdvaW5nLgotICAgICAgICBzZWxmLl9jb21wcmVzc19vbmdvaW5nID0gRmFsc2UKLQot
ICAgICAgICAjIENvdW50ZXJzIGZvciBzdGF0aXN0aWNzLgotCi0gICAgICAgICMgVG90YWwgbnVt
YmVyIG9mIG91dGdvaW5nIGJ5dGVzIHN1cHBsaWVkIHRvIHRoaXMgZmlsdGVyLgotICAgICAgICBz
ZWxmLl90b3RhbF9vdXRnb2luZ19wYXlsb2FkX2J5dGVzID0gMAotICAgICAgICAjIFRvdGFsIG51
bWJlciBvZiBieXRlcyBzZW50IHRvIHRoZSBuZXR3b3JrIGFmdGVyIGFwcGx5aW5nIHRoaXMgZmls
dGVyLgotICAgICAgICBzZWxmLl90b3RhbF9maWx0ZXJlZF9vdXRnb2luZ19wYXlsb2FkX2J5dGVz
ID0gMAotCi0gICAgICAgICMgVG90YWwgbnVtYmVyIG9mIGJ5dGVzIHJlY2VpdmVkIGZyb20gdGhl
IG5ldHdvcmsuCi0gICAgICAgIHNlbGYuX3RvdGFsX2luY29taW5nX3BheWxvYWRfYnl0ZXMgPSAw
Ci0gICAgICAgICMgVG90YWwgbnVtYmVyIG9mIGluY29taW5nIGJ5dGVzIG9idGFpbmVkIGFmdGVy
IGFwcGx5aW5nIHRoaXMgZmlsdGVyLgotICAgICAgICBzZWxmLl90b3RhbF9maWx0ZXJlZF9pbmNv
bWluZ19wYXlsb2FkX2J5dGVzID0gMAorICAgICAgICBzZWxmLl9kcmFmdDA4ID0gZHJhZnQwOAog
CiAgICAgZGVmIG5hbWUoc2VsZik6CiAgICAgICAgIHJldHVybiAnZGVmbGF0ZScKIAotICAgIGRl
ZiBnZXRfZXh0ZW5zaW9uX3Jlc3BvbnNlKHNlbGYpOgotICAgICAgICAjIEFueSB1bmtub3duIHBh
cmFtZXRlciB3aWxsIGJlIGp1c3QgaWdub3JlZC4KKyAgICBkZWYgX2dldF9leHRlbnNpb25fcmVz
cG9uc2VfaW50ZXJuYWwoc2VsZik6CisgICAgICAgIGlmIHNlbGYuX2RyYWZ0MDg6CisgICAgICAg
ICAgICBmb3IgbmFtZSBpbiBzZWxmLl9yZXF1ZXN0LmdldF9wYXJhbWV0ZXJfbmFtZXMoKToKKyAg
ICAgICAgICAgICAgICBpZiBuYW1lIG5vdCBpbiBbc2VsZi5fUzJDX01BWF9XSU5ET1dfQklUU19Q
QVJBTSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fUzJDX05PX0NPTlRF
WFRfVEFLRU9WRVJfUEFSQU0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYu
X0MyU19NQVhfV0lORE9XX0JJVFNfUEFSQU1dOgorICAgICAgICAgICAgICAgICAgICBzZWxmLl9s
b2dnZXIuZGVidWcoJ1Vua25vd24gcGFyYW1ldGVyOiAlcicsIG5hbWUpCisgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBOb25lCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICAjIEFueSB1bmtu
b3duIHBhcmFtZXRlciB3aWxsIGJlIGp1c3QgaWdub3JlZC4KKyAgICAgICAgICAgIHBhc3MKIAot
ICAgICAgICBzMmNfbWF4X3dpbmRvd19iaXRzID0gc2VsZi5fcmVxdWVzdC5nZXRfcGFyYW1ldGVy
X3ZhbHVlKAotICAgICAgICAgICAgc2VsZi5fUzJDX01BWF9XSU5ET1dfQklUU19QQVJBTSkKLSAg
ICAgICAgaWYgczJjX21heF93aW5kb3dfYml0cyBpcyBub3QgTm9uZToKKyAgICAgICAgczJjX21h
eF93aW5kb3dfYml0cyA9IE5vbmUKKyAgICAgICAgaWYgc2VsZi5fcmVxdWVzdC5oYXNfcGFyYW1l
dGVyKHNlbGYuX1MyQ19NQVhfV0lORE9XX0JJVFNfUEFSQU0pOgorICAgICAgICAgICAgczJjX21h
eF93aW5kb3dfYml0cyA9IHNlbGYuX3JlcXVlc3QuZ2V0X3BhcmFtZXRlcl92YWx1ZSgKKyAgICAg
ICAgICAgICAgICAgICAgc2VsZi5fUzJDX01BWF9XSU5ET1dfQklUU19QQVJBTSkKICAgICAgICAg
ICAgIHRyeToKLSAgICAgICAgICAgICAgICBzMmNfbWF4X3dpbmRvd19iaXRzID0gaW50KHMyY19t
YXhfd2luZG93X2JpdHMpCisgICAgICAgICAgICAgICAgczJjX21heF93aW5kb3dfYml0cyA9IF9w
YXJzZV93aW5kb3dfYml0cyhzMmNfbWF4X3dpbmRvd19iaXRzKQogICAgICAgICAgICAgZXhjZXB0
IFZhbHVlRXJyb3IsIGU6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKLSAgICAgICAgICAg
IGlmIHMyY19tYXhfd2luZG93X2JpdHMgPCA4IG9yIHMyY19tYXhfd2luZG93X2JpdHMgPiAxNToK
KyAgICAgICAgICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJ0JhZCAlcyBwYXJhbWV0ZXI6ICVy
JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fUzJDX01BWF9XSU5E
T1dfQklUU19QQVJBTSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZSkKICAg
ICAgICAgICAgICAgICByZXR1cm4gTm9uZQogCiAgICAgICAgIHMyY19ub19jb250ZXh0X3Rha2Vv
dmVyID0gc2VsZi5fcmVxdWVzdC5oYXNfcGFyYW1ldGVyKApAQCAtNDYzLDE0ICs1MDUsMzIgQEAg
Y2xhc3MgRGVmbGF0ZU1lc3NhZ2VQcm9jZXNzb3IoRXh0ZW5zaW9uUHJvY2Vzc29ySW50ZXJmYWNl
KToKICAgICAgICAgaWYgKHMyY19ub19jb250ZXh0X3Rha2VvdmVyIGFuZAogICAgICAgICAgICAg
c2VsZi5fcmVxdWVzdC5nZXRfcGFyYW1ldGVyX3ZhbHVlKAogICAgICAgICAgICAgICAgIHNlbGYu
X1MyQ19OT19DT05URVhUX1RBS0VPVkVSX1BBUkFNKSBpcyBub3QgTm9uZSk6CisgICAgICAgICAg
ICBzZWxmLl9sb2dnZXIuZGVidWcoJyVzIHBhcmFtZXRlciBtdXN0IG5vdCBoYXZlIGEgdmFsdWU6
ICVyJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9TMkNfTk9fQ09OVEVY
VF9UQUtFT1ZFUl9QQVJBTSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMmNfbm9f
Y29udGV4dF90YWtlb3ZlcikKICAgICAgICAgICAgIHJldHVybiBOb25lCiAKLSAgICAgICAgc2Vs
Zi5fZGVmbGF0ZXIgPSB1dGlsLl9SRkMxOTc5RGVmbGF0ZXIoCisgICAgICAgIGMyc19tYXhfd2lu
ZG93X2JpdHMgPSBzZWxmLl9yZXF1ZXN0Lmhhc19wYXJhbWV0ZXIoCisgICAgICAgICAgICBzZWxm
Ll9DMlNfTUFYX1dJTkRPV19CSVRTX1BBUkFNKQorICAgICAgICBpZiAoc2VsZi5fZHJhZnQwOCBh
bmQKKyAgICAgICAgICAgIGMyc19tYXhfd2luZG93X2JpdHMgYW5kCisgICAgICAgICAgICBzZWxm
Ll9yZXF1ZXN0LmdldF9wYXJhbWV0ZXJfdmFsdWUoCisgICAgICAgICAgICAgICAgc2VsZi5fQzJT
X01BWF9XSU5ET1dfQklUU19QQVJBTSkgaXMgbm90IE5vbmUpOgorICAgICAgICAgICAgc2VsZi5f
bG9nZ2VyLmRlYnVnKCclcyBwYXJhbWV0ZXIgbXVzdCBub3QgaGF2ZSBhIHZhbHVlIGluIGEgJwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjbGllbnRcJ3Mgb3BlbmluZyBoYW5kc2hh
a2U6ICVyJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9DMlNfTUFYX1dJ
TkRPV19CSVRTX1BBUkFNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMyc19tYXhf
d2luZG93X2JpdHMpCisgICAgICAgICAgICByZXR1cm4gTm9uZQorCisgICAgICAgIHNlbGYuX3Jm
YzE5NzlfZGVmbGF0ZXIgPSB1dGlsLl9SRkMxOTc5RGVmbGF0ZXIoCiAgICAgICAgICAgICBzMmNf
bWF4X3dpbmRvd19iaXRzLCBzMmNfbm9fY29udGV4dF90YWtlb3ZlcikKIAotICAgICAgICBzZWxm
Ll9pbmZsYXRlciA9IHV0aWwuX1JGQzE5NzlJbmZsYXRlcigpCisgICAgICAgIHNlbGYuX3JmYzE5
NzlfaW5mbGF0ZXIgPSB1dGlsLl9SRkMxOTc5SW5mbGF0ZXIoKQogCi0gICAgICAgIHNlbGYuX2Nv
bXByZXNzX291dGdvaW5nX2VuYWJsZWQgPSBUcnVlCisgICAgICAgIHNlbGYuX2ZyYW1lciA9IF9Q
ZXJNZXNzYWdlRGVmbGF0ZUZyYW1lcigKKyAgICAgICAgICAgIHMyY19tYXhfd2luZG93X2JpdHMs
IHMyY19ub19jb250ZXh0X3Rha2VvdmVyKQorICAgICAgICBzZWxmLl9mcmFtZXIuc2V0X2JmaW5h
bChGYWxzZSkKKyAgICAgICAgc2VsZi5fZnJhbWVyLnNldF9jb21wcmVzc19vdXRnb2luZ19lbmFi
bGVkKFRydWUpCiAKICAgICAgICAgcmVzcG9uc2UgPSBjb21tb24uRXh0ZW5zaW9uUGFyYW1ldGVy
KHNlbGYuX3JlcXVlc3QubmFtZSgpKQogCkBAIC00ODMsOSArNTQzLDE1IEBAIGNsYXNzIERlZmxh
dGVNZXNzYWdlUHJvY2Vzc29yKEV4dGVuc2lvblByb2Nlc3NvckludGVyZmFjZSk6CiAgICAgICAg
ICAgICAgICAgc2VsZi5fUzJDX05PX0NPTlRFWFRfVEFLRU9WRVJfUEFSQU0sIE5vbmUpCiAKICAg
ICAgICAgaWYgc2VsZi5fYzJzX21heF93aW5kb3dfYml0cyBpcyBub3QgTm9uZToKKyAgICAgICAg
ICAgIGlmIHNlbGYuX2RyYWZ0MDggYW5kIGMyc19tYXhfd2luZG93X2JpdHM6CisgICAgICAgICAg
ICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdQcm9jZXNzb3IgaXMgY29uZmlndXJlZCB0byB1c2Ug
JXMgYnV0ICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RoZSBjbGllbnQg
Y2Fubm90IGFjY2VwdCBpdCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNl
bGYuX0MyU19NQVhfV0lORE9XX0JJVFNfUEFSQU0pCisgICAgICAgICAgICAgICAgcmV0dXJuIE5v
bmUKICAgICAgICAgICAgIHJlc3BvbnNlLmFkZF9wYXJhbWV0ZXIoCiAgICAgICAgICAgICAgICAg
c2VsZi5fQzJTX01BWF9XSU5ET1dfQklUU19QQVJBTSwKICAgICAgICAgICAgICAgICBzdHIoc2Vs
Zi5fYzJzX21heF93aW5kb3dfYml0cykpCisKICAgICAgICAgaWYgc2VsZi5fYzJzX25vX2NvbnRl
eHRfdGFrZW92ZXI6CiAgICAgICAgICAgICByZXNwb25zZS5hZGRfcGFyYW1ldGVyKAogICAgICAg
ICAgICAgICAgIHNlbGYuX0MyU19OT19DT05URVhUX1RBS0VPVkVSX1BBUkFNLCBOb25lKQpAQCAt
NTAyLDEwMCArNTY4LDk5IEBAIGNsYXNzIERlZmxhdGVNZXNzYWdlUHJvY2Vzc29yKEV4dGVuc2lv
blByb2Nlc3NvckludGVyZmFjZSk6CiAKICAgICAgICAgcmV0dXJuIHJlc3BvbnNlCiAKLSAgICBk
ZWYgc2V0dXBfc3RyZWFtX29wdGlvbnMoc2VsZiwgc3RyZWFtX29wdGlvbnMpOgotICAgICAgICBj
bGFzcyBfT3V0Z29pbmdNZXNzYWdlRmlsdGVyKG9iamVjdCk6Ci0KLSAgICAgICAgICAgIGRlZiBf
X2luaXRfXyhzZWxmLCBwYXJlbnQpOgotICAgICAgICAgICAgICAgIHNlbGYuX3BhcmVudCA9IHBh
cmVudAorICAgIGRlZiBfc2V0dXBfc3RyZWFtX29wdGlvbnNfaW50ZXJuYWwoc2VsZiwgc3RyZWFt
X29wdGlvbnMpOgorICAgICAgICBzZWxmLl9mcmFtZXIuc2V0dXBfc3RyZWFtX29wdGlvbnMoc3Ry
ZWFtX29wdGlvbnMpCiAKLSAgICAgICAgICAgIGRlZiBmaWx0ZXIoc2VsZiwgbWVzc2FnZSwgZW5k
PVRydWUsIGJpbmFyeT1GYWxzZSk6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3BhcmVu
dC5fcHJvY2Vzc19vdXRnb2luZ19tZXNzYWdlKAotICAgICAgICAgICAgICAgICAgICBtZXNzYWdl
LCBlbmQsIGJpbmFyeSkKKyAgICBkZWYgc2V0X2Myc19tYXhfd2luZG93X2JpdHMoc2VsZiwgdmFs
dWUpOgorICAgICAgICAiIiJJZiB0aGlzIG9wdGlvbiBpcyBzcGVjaWZpZWQsIHRoaXMgY2xhc3Mg
YWRkcyB0aGUgYzJzX21heF93aW5kb3dfYml0cworICAgICAgICBleHRlbnNpb24gcGFyYW1ldGVy
IHRvIHRoZSBoYW5kc2hha2UgcmVzcG9uc2UsIGJ1dCBkb2Vzbid0IHJlZHVjZSB0aGUKKyAgICAg
ICAgTFo3NyBzbGlkaW5nIHdpbmRvdyBzaXplIG9mIGl0cyBpbmZsYXRlci4gSS5lLiwgeW91IGNh
biB1c2UgdGhpcyBmb3IKKyAgICAgICAgdGVzdGluZyBjbGllbnQgaW1wbGVtZW50YXRpb24gYnV0
IGNhbm5vdCByZWR1Y2UgbWVtb3J5IHVzYWdlIG9mIHRoaXMKKyAgICAgICAgY2xhc3MuCisKKyAg
ICAgICAgSWYgdGhpcyBtZXRob2QgaGFzIGJlZW4gY2FsbGVkIHdpdGggVHJ1ZSBhbmQgYW4gb2Zm
ZXIgd2l0aG91dCB0aGUKKyAgICAgICAgYzJzX21heF93aW5kb3dfYml0cyBleHRlbnNpb24gcGFy
YW1ldGVyIGlzIHJlY2VpdmVkLAorICAgICAgICAtIChXaGVuIHByb2Nlc3NpbmcgdGhlIHBlcm1l
c3NhZ2UtZGVmbGF0ZSBleHRlbnNpb24pIHRoaXMgcHJvY2Vzc29yCisgICAgICAgICAgZGVjbGlu
ZXMgdGhlIHJlcXVlc3QuCisgICAgICAgIC0gKFdoZW4gcHJvY2Vzc2luZyB0aGUgcGVybWVzc2Fn
ZS1jb21wcmVzcyBleHRlbnNpb24pIHRoaXMgcHJvY2Vzc29yCisgICAgICAgICAgYWNjZXB0cyB0
aGUgcmVxdWVzdC4KKyAgICAgICAgIiIiCiAKLSAgICAgICAgY2xhc3MgX0luY29taW5nTWVzc2Fn
ZUZpbHRlcihvYmplY3QpOgorICAgICAgICBzZWxmLl9jMnNfbWF4X3dpbmRvd19iaXRzID0gdmFs
dWUKIAotICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcmVudCk6Ci0gICAgICAgICAg
ICAgICAgc2VsZi5fcGFyZW50ID0gcGFyZW50Ci0gICAgICAgICAgICAgICAgc2VsZi5fZGVjb21w
cmVzc19uZXh0X21lc3NhZ2UgPSBGYWxzZQorICAgIGRlZiBzZXRfYzJzX25vX2NvbnRleHRfdGFr
ZW92ZXIoc2VsZiwgdmFsdWUpOgorICAgICAgICAiIiJJZiB0aGlzIG9wdGlvbiBpcyBzcGVjaWZp
ZWQsIHRoaXMgY2xhc3MgYWRkcyB0aGUKKyAgICAgICAgYzJzX25vX2NvbnRleHRfdGFrZW92ZXIg
ZXh0ZW5zaW9uIHBhcmFtZXRlciB0byB0aGUgaGFuZHNoYWtlIHJlc3BvbnNlLAorICAgICAgICBi
dXQgZG9lc24ndCByZXNldCBpbmZsYXRlciBmb3IgZWFjaCBtZXNzYWdlLiBJLmUuLCB5b3UgY2Fu
IHVzZSB0aGlzIGZvcgorICAgICAgICB0ZXN0aW5nIGNsaWVudCBpbXBsZW1lbnRhdGlvbiBidXQg
Y2Fubm90IHJlZHVjZSBtZW1vcnkgdXNhZ2Ugb2YgdGhpcworICAgICAgICBjbGFzcy4KKyAgICAg
ICAgIiIiCiAKLSAgICAgICAgICAgIGRlZiBkZWNvbXByZXNzX25leHRfbWVzc2FnZShzZWxmKToK
LSAgICAgICAgICAgICAgICBzZWxmLl9kZWNvbXByZXNzX25leHRfbWVzc2FnZSA9IFRydWUKKyAg
ICAgICAgc2VsZi5fYzJzX25vX2NvbnRleHRfdGFrZW92ZXIgPSB2YWx1ZQogCi0gICAgICAgICAg
ICBkZWYgZmlsdGVyKHNlbGYsIG1lc3NhZ2UpOgotICAgICAgICAgICAgICAgIG1lc3NhZ2UgPSBz
ZWxmLl9wYXJlbnQuX3Byb2Nlc3NfaW5jb21pbmdfbWVzc2FnZSgKLSAgICAgICAgICAgICAgICAg
ICAgbWVzc2FnZSwgc2VsZi5fZGVjb21wcmVzc19uZXh0X21lc3NhZ2UpCi0gICAgICAgICAgICAg
ICAgc2VsZi5fZGVjb21wcmVzc19uZXh0X21lc3NhZ2UgPSBGYWxzZQotICAgICAgICAgICAgICAg
IHJldHVybiBtZXNzYWdlCisgICAgZGVmIHNldF9iZmluYWwoc2VsZiwgdmFsdWUpOgorICAgICAg
ICBzZWxmLl9mcmFtZXIuc2V0X2JmaW5hbCh2YWx1ZSkKIAotICAgICAgICBzZWxmLl9vdXRnb2lu
Z19tZXNzYWdlX2ZpbHRlciA9IF9PdXRnb2luZ01lc3NhZ2VGaWx0ZXIoc2VsZikKLSAgICAgICAg
c2VsZi5faW5jb21pbmdfbWVzc2FnZV9maWx0ZXIgPSBfSW5jb21pbmdNZXNzYWdlRmlsdGVyKHNl
bGYpCi0gICAgICAgIHN0cmVhbV9vcHRpb25zLm91dGdvaW5nX21lc3NhZ2VfZmlsdGVycy5hcHBl
bmQoCi0gICAgICAgICAgICBzZWxmLl9vdXRnb2luZ19tZXNzYWdlX2ZpbHRlcikKLSAgICAgICAg
c3RyZWFtX29wdGlvbnMuaW5jb21pbmdfbWVzc2FnZV9maWx0ZXJzLmFwcGVuZCgKLSAgICAgICAg
ICAgIHNlbGYuX2luY29taW5nX21lc3NhZ2VfZmlsdGVyKQorICAgIGRlZiBlbmFibGVfb3V0Z29p
bmdfY29tcHJlc3Npb24oc2VsZik6CisgICAgICAgIHNlbGYuX2ZyYW1lci5zZXRfY29tcHJlc3Nf
b3V0Z29pbmdfZW5hYmxlZChUcnVlKQogCi0gICAgICAgIGNsYXNzIF9PdXRnb2luZ0ZyYW1lRmls
dGVyKG9iamVjdCk6CisgICAgZGVmIGRpc2FibGVfb3V0Z29pbmdfY29tcHJlc3Npb24oc2VsZik6
CisgICAgICAgIHNlbGYuX2ZyYW1lci5zZXRfY29tcHJlc3Nfb3V0Z29pbmdfZW5hYmxlZChGYWxz
ZSkKIAotICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcmVudCk6Ci0gICAgICAgICAg
ICAgICAgc2VsZi5fcGFyZW50ID0gcGFyZW50Ci0gICAgICAgICAgICAgICAgc2VsZi5fc2V0X2Nv
bXByZXNzaW9uX2JpdCA9IEZhbHNlCiAKLSAgICAgICAgICAgIGRlZiBzZXRfY29tcHJlc3Npb25f
Yml0KHNlbGYpOgotICAgICAgICAgICAgICAgIHNlbGYuX3NldF9jb21wcmVzc2lvbl9iaXQgPSBU
cnVlCitjbGFzcyBfUGVyTWVzc2FnZURlZmxhdGVGcmFtZXIob2JqZWN0KToKKyAgICAiIiJBIGZy
YW1lciBmb3IgZXh0ZW5zaW9ucyB3aXRoIHBlci1tZXNzYWdlIERFRkxBVEUgZmVhdHVyZS4iIiIK
IAotICAgICAgICAgICAgZGVmIGZpbHRlcihzZWxmLCBmcmFtZSk6Ci0gICAgICAgICAgICAgICAg
c2VsZi5fcGFyZW50Ll9wcm9jZXNzX291dGdvaW5nX2ZyYW1lKAotICAgICAgICAgICAgICAgICAg
ICBmcmFtZSwgc2VsZi5fc2V0X2NvbXByZXNzaW9uX2JpdCkKLSAgICAgICAgICAgICAgICBzZWxm
Ll9zZXRfY29tcHJlc3Npb25fYml0ID0gRmFsc2UKKyAgICBkZWYgX19pbml0X18oc2VsZiwgZGVm
bGF0ZV9tYXhfd2luZG93X2JpdHMsIGRlZmxhdGVfbm9fY29udGV4dF90YWtlb3Zlcik6CisgICAg
ICAgIHNlbGYuX2xvZ2dlciA9IHV0aWwuZ2V0X2NsYXNzX2xvZ2dlcihzZWxmKQogCi0gICAgICAg
IGNsYXNzIF9JbmNvbWluZ0ZyYW1lRmlsdGVyKG9iamVjdCk6CisgICAgICAgIHNlbGYuX3JmYzE5
NzlfZGVmbGF0ZXIgPSB1dGlsLl9SRkMxOTc5RGVmbGF0ZXIoCisgICAgICAgICAgICBkZWZsYXRl
X21heF93aW5kb3dfYml0cywgZGVmbGF0ZV9ub19jb250ZXh0X3Rha2VvdmVyKQogCi0gICAgICAg
ICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyZW50KToKLSAgICAgICAgICAgICAgICBzZWxmLl9w
YXJlbnQgPSBwYXJlbnQKKyAgICAgICAgc2VsZi5fcmZjMTk3OV9pbmZsYXRlciA9IHV0aWwuX1JG
QzE5NzlJbmZsYXRlcigpCiAKLSAgICAgICAgICAgIGRlZiBmaWx0ZXIoc2VsZiwgZnJhbWUpOgot
ICAgICAgICAgICAgICAgIHNlbGYuX3BhcmVudC5fcHJvY2Vzc19pbmNvbWluZ19mcmFtZShmcmFt
ZSkKKyAgICAgICAgc2VsZi5fYmZpbmFsID0gRmFsc2UKIAotICAgICAgICBzZWxmLl9vdXRnb2lu
Z19mcmFtZV9maWx0ZXIgPSBfT3V0Z29pbmdGcmFtZUZpbHRlcihzZWxmKQotICAgICAgICBzZWxm
Ll9pbmNvbWluZ19mcmFtZV9maWx0ZXIgPSBfSW5jb21pbmdGcmFtZUZpbHRlcihzZWxmKQotICAg
ICAgICBzdHJlYW1fb3B0aW9ucy5vdXRnb2luZ19mcmFtZV9maWx0ZXJzLmFwcGVuZCgKLSAgICAg
ICAgICAgIHNlbGYuX291dGdvaW5nX2ZyYW1lX2ZpbHRlcikKLSAgICAgICAgc3RyZWFtX29wdGlv
bnMuaW5jb21pbmdfZnJhbWVfZmlsdGVycy5hcHBlbmQoCi0gICAgICAgICAgICBzZWxmLl9pbmNv
bWluZ19mcmFtZV9maWx0ZXIpCisgICAgICAgIHNlbGYuX2NvbXByZXNzX291dGdvaW5nX2VuYWJs
ZWQgPSBGYWxzZQogCi0gICAgICAgIHN0cmVhbV9vcHRpb25zLmVuY29kZV90ZXh0X21lc3NhZ2Vf
dG9fdXRmOCA9IEZhbHNlCisgICAgICAgICMgVHJ1ZSBpZiBhIG1lc3NhZ2UgaXMgZnJhZ21lbnRl
ZCBhbmQgY29tcHJlc3Npb24gaXMgb25nb2luZy4KKyAgICAgICAgc2VsZi5fY29tcHJlc3Nfb25n
b2luZyA9IEZhbHNlCiAKLSAgICBkZWYgc2V0X2Myc19tYXhfd2luZG93X2JpdHMoc2VsZiwgdmFs
dWUpOgotICAgICAgICBzZWxmLl9jMnNfbWF4X3dpbmRvd19iaXRzID0gdmFsdWUKKyAgICAgICAg
IyBDYWxjdWxhdGVzCisgICAgICAgICMgICAgIChUb3RhbCBvdXRnb2luZyBieXRlcyBzdXBwbGll
ZCB0byB0aGlzIGZpbHRlcikgLworICAgICAgICAjICAgICAoVG90YWwgYnl0ZXMgc2VudCB0byB0
aGUgbmV0d29yayBhZnRlciBhcHBseWluZyB0aGlzIGZpbHRlcikKKyAgICAgICAgc2VsZi5fb3V0
Z29pbmdfYXZlcmFnZV9yYXRpb19jYWxjdWxhdG9yID0gX0F2ZXJhZ2VSYXRpb0NhbGN1bGF0b3Io
KQogCi0gICAgZGVmIHNldF9jMnNfbm9fY29udGV4dF90YWtlb3ZlcihzZWxmLCB2YWx1ZSk6Ci0g
ICAgICAgIHNlbGYuX2Myc19ub19jb250ZXh0X3Rha2VvdmVyID0gdmFsdWUKKyAgICAgICAgIyBD
YWxjdWxhdGVzCisgICAgICAgICMgICAgIChUb3RhbCBieXRlcyByZWNlaXZlZCBmcm9tIHRoZSBu
ZXR3b3JrKSAvCisgICAgICAgICMgICAgIChUb3RhbCBpbmNvbWluZyBieXRlcyBvYnRhaW5lZCBh
ZnRlciBhcHBseWluZyB0aGlzIGZpbHRlcikKKyAgICAgICAgc2VsZi5faW5jb21pbmdfYXZlcmFn
ZV9yYXRpb19jYWxjdWxhdG9yID0gX0F2ZXJhZ2VSYXRpb0NhbGN1bGF0b3IoKQogCiAgICAgZGVm
IHNldF9iZmluYWwoc2VsZiwgdmFsdWUpOgogICAgICAgICBzZWxmLl9iZmluYWwgPSB2YWx1ZQog
Ci0gICAgZGVmIGVuYWJsZV9vdXRnb2luZ19jb21wcmVzc2lvbihzZWxmKToKLSAgICAgICAgc2Vs
Zi5fY29tcHJlc3Nfb3V0Z29pbmdfZW5hYmxlZCA9IFRydWUKLQotICAgIGRlZiBkaXNhYmxlX291
dGdvaW5nX2NvbXByZXNzaW9uKHNlbGYpOgotICAgICAgICBzZWxmLl9jb21wcmVzc19vdXRnb2lu
Z19lbmFibGVkID0gRmFsc2UKKyAgICBkZWYgc2V0X2NvbXByZXNzX291dGdvaW5nX2VuYWJsZWQo
c2VsZiwgdmFsdWUpOgorICAgICAgICBzZWxmLl9jb21wcmVzc19vdXRnb2luZ19lbmFibGVkID0g
dmFsdWUKIAogICAgIGRlZiBfcHJvY2Vzc19pbmNvbWluZ19tZXNzYWdlKHNlbGYsIG1lc3NhZ2Us
IGRlY29tcHJlc3MpOgogICAgICAgICBpZiBub3QgZGVjb21wcmVzczoKICAgICAgICAgICAgIHJl
dHVybiBtZXNzYWdlCiAKICAgICAgICAgcmVjZWl2ZWRfcGF5bG9hZF9zaXplID0gbGVuKG1lc3Nh
Z2UpCi0gICAgICAgIHNlbGYuX3RvdGFsX2luY29taW5nX3BheWxvYWRfYnl0ZXMgKz0gcmVjZWl2
ZWRfcGF5bG9hZF9zaXplCisgICAgICAgIHNlbGYuX2luY29taW5nX2F2ZXJhZ2VfcmF0aW9fY2Fs
Y3VsYXRvci5hZGRfcmVzdWx0X2J5dGVzKAorICAgICAgICAgICAgICAgIHJlY2VpdmVkX3BheWxv
YWRfc2l6ZSkKIAotICAgICAgICBtZXNzYWdlID0gc2VsZi5faW5mbGF0ZXIuZmlsdGVyKG1lc3Nh
Z2UpCisgICAgICAgIG1lc3NhZ2UgPSBzZWxmLl9yZmMxOTc5X2luZmxhdGVyLmZpbHRlcihtZXNz
YWdlKQogCiAgICAgICAgIGZpbHRlcmVkX3BheWxvYWRfc2l6ZSA9IGxlbihtZXNzYWdlKQotICAg
ICAgICBzZWxmLl90b3RhbF9maWx0ZXJlZF9pbmNvbWluZ19wYXlsb2FkX2J5dGVzICs9IGZpbHRl
cmVkX3BheWxvYWRfc2l6ZQorICAgICAgICBzZWxmLl9pbmNvbWluZ19hdmVyYWdlX3JhdGlvX2Nh
bGN1bGF0b3IuYWRkX29yaWdpbmFsX2J5dGVzKAorICAgICAgICAgICAgICAgIGZpbHRlcmVkX3Bh
eWxvYWRfc2l6ZSkKIAotICAgICAgICBfbG9nX2RlY29tcHJlc3Npb25fcmF0aW8oc2VsZi5fbG9n
Z2VyLCByZWNlaXZlZF9wYXlsb2FkX3NpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzZWxmLl90b3RhbF9pbmNvbWluZ19wYXlsb2FkX2J5dGVzLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZmlsdGVyZWRfcGF5bG9hZF9zaXplLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc2VsZi5fdG90YWxfZmlsdGVyZWRfaW5jb21pbmdfcGF5bG9hZF9i
eXRlcykKKyAgICAgICAgX2xvZ19pbmNvbWluZ19jb21wcmVzc2lvbl9yYXRpbygKKyAgICAgICAg
ICAgICAgICBzZWxmLl9sb2dnZXIsCisgICAgICAgICAgICAgICAgcmVjZWl2ZWRfcGF5bG9hZF9z
aXplLAorICAgICAgICAgICAgICAgIGZpbHRlcmVkX3BheWxvYWRfc2l6ZSwKKyAgICAgICAgICAg
ICAgICBzZWxmLl9pbmNvbWluZ19hdmVyYWdlX3JhdGlvX2NhbGN1bGF0b3IuZ2V0X2F2ZXJhZ2Vf
cmF0aW8oKSkKIAogICAgICAgICByZXR1cm4gbWVzc2FnZQogCkBAIC02MDcsMTggKzY3MiwyMSBA
QCBjbGFzcyBEZWZsYXRlTWVzc2FnZVByb2Nlc3NvcihFeHRlbnNpb25Qcm9jZXNzb3JJbnRlcmZh
Y2UpOgogICAgICAgICAgICAgcmV0dXJuIG1lc3NhZ2UKIAogICAgICAgICBvcmlnaW5hbF9wYXls
b2FkX3NpemUgPSBsZW4obWVzc2FnZSkKLSAgICAgICAgc2VsZi5fdG90YWxfb3V0Z29pbmdfcGF5
bG9hZF9ieXRlcyArPSBvcmlnaW5hbF9wYXlsb2FkX3NpemUKKyAgICAgICAgc2VsZi5fb3V0Z29p
bmdfYXZlcmFnZV9yYXRpb19jYWxjdWxhdG9yLmFkZF9vcmlnaW5hbF9ieXRlcygKKyAgICAgICAg
ICAgIG9yaWdpbmFsX3BheWxvYWRfc2l6ZSkKIAotICAgICAgICBtZXNzYWdlID0gc2VsZi5fZGVm
bGF0ZXIuZmlsdGVyKAorICAgICAgICBtZXNzYWdlID0gc2VsZi5fcmZjMTk3OV9kZWZsYXRlci5m
aWx0ZXIoCiAgICAgICAgICAgICBtZXNzYWdlLCBmbHVzaD1lbmQsIGJmaW5hbD1zZWxmLl9iZmlu
YWwpCiAKICAgICAgICAgZmlsdGVyZWRfcGF5bG9hZF9zaXplID0gbGVuKG1lc3NhZ2UpCi0gICAg
ICAgIHNlbGYuX3RvdGFsX2ZpbHRlcmVkX291dGdvaW5nX3BheWxvYWRfYnl0ZXMgKz0gZmlsdGVy
ZWRfcGF5bG9hZF9zaXplCisgICAgICAgIHNlbGYuX291dGdvaW5nX2F2ZXJhZ2VfcmF0aW9fY2Fs
Y3VsYXRvci5hZGRfcmVzdWx0X2J5dGVzKAorICAgICAgICAgICAgZmlsdGVyZWRfcGF5bG9hZF9z
aXplKQogCi0gICAgICAgIF9sb2dfY29tcHJlc3Npb25fcmF0aW8oc2VsZi5fbG9nZ2VyLCBvcmln
aW5hbF9wYXlsb2FkX3NpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5f
dG90YWxfb3V0Z29pbmdfcGF5bG9hZF9ieXRlcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBmaWx0ZXJlZF9wYXlsb2FkX3NpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc2VsZi5fdG90YWxfZmlsdGVyZWRfb3V0Z29pbmdfcGF5bG9hZF9ieXRlcykKKyAgICAgICAg
X2xvZ19vdXRnb2luZ19jb21wcmVzc2lvbl9yYXRpbygKKyAgICAgICAgICAgICAgICBzZWxmLl9s
b2dnZXIsCisgICAgICAgICAgICAgICAgb3JpZ2luYWxfcGF5bG9hZF9zaXplLAorICAgICAgICAg
ICAgICAgIGZpbHRlcmVkX3BheWxvYWRfc2l6ZSwKKyAgICAgICAgICAgICAgICBzZWxmLl9vdXRn
b2luZ19hdmVyYWdlX3JhdGlvX2NhbGN1bGF0b3IuZ2V0X2F2ZXJhZ2VfcmF0aW8oKSkKIAogICAg
ICAgICBpZiBub3Qgc2VsZi5fY29tcHJlc3Nfb25nb2luZzoKICAgICAgICAgICAgIHNlbGYuX291
dGdvaW5nX2ZyYW1lX2ZpbHRlci5zZXRfY29tcHJlc3Npb25fYml0KCkKQEAgLTYzNywxMCArNzA1
LDgxIEBAIGNsYXNzIERlZmxhdGVNZXNzYWdlUHJvY2Vzc29yKEV4dGVuc2lvblByb2Nlc3Nvcklu
dGVyZmFjZSk6CiAKICAgICAgICAgZnJhbWUucnN2MSA9IDEKIAorICAgIGRlZiBzZXR1cF9zdHJl
YW1fb3B0aW9ucyhzZWxmLCBzdHJlYW1fb3B0aW9ucyk6CisgICAgICAgICIiIkNyZWF0ZXMgZmls
dGVycyBhbmQgc2V0cyB0aGVtIHRvIHRoZSBTdHJlYW1PcHRpb25zLiIiIgorCisgICAgICAgIGNs
YXNzIF9PdXRnb2luZ01lc3NhZ2VGaWx0ZXIob2JqZWN0KToKKworICAgICAgICAgICAgZGVmIF9f
aW5pdF9fKHNlbGYsIHBhcmVudCk6CisgICAgICAgICAgICAgICAgc2VsZi5fcGFyZW50ID0gcGFy
ZW50CisKKyAgICAgICAgICAgIGRlZiBmaWx0ZXIoc2VsZiwgbWVzc2FnZSwgZW5kPVRydWUsIGJp
bmFyeT1GYWxzZSk6CisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3BhcmVudC5fcHJvY2Vz
c19vdXRnb2luZ19tZXNzYWdlKAorICAgICAgICAgICAgICAgICAgICBtZXNzYWdlLCBlbmQsIGJp
bmFyeSkKKworICAgICAgICBjbGFzcyBfSW5jb21pbmdNZXNzYWdlRmlsdGVyKG9iamVjdCk6CisK
KyAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJlbnQpOgorICAgICAgICAgICAgICAg
IHNlbGYuX3BhcmVudCA9IHBhcmVudAorICAgICAgICAgICAgICAgIHNlbGYuX2RlY29tcHJlc3Nf
bmV4dF9tZXNzYWdlID0gRmFsc2UKKworICAgICAgICAgICAgZGVmIGRlY29tcHJlc3NfbmV4dF9t
ZXNzYWdlKHNlbGYpOgorICAgICAgICAgICAgICAgIHNlbGYuX2RlY29tcHJlc3NfbmV4dF9tZXNz
YWdlID0gVHJ1ZQorCisgICAgICAgICAgICBkZWYgZmlsdGVyKHNlbGYsIG1lc3NhZ2UpOgorICAg
ICAgICAgICAgICAgIG1lc3NhZ2UgPSBzZWxmLl9wYXJlbnQuX3Byb2Nlc3NfaW5jb21pbmdfbWVz
c2FnZSgKKyAgICAgICAgICAgICAgICAgICAgbWVzc2FnZSwgc2VsZi5fZGVjb21wcmVzc19uZXh0
X21lc3NhZ2UpCisgICAgICAgICAgICAgICAgc2VsZi5fZGVjb21wcmVzc19uZXh0X21lc3NhZ2Ug
PSBGYWxzZQorICAgICAgICAgICAgICAgIHJldHVybiBtZXNzYWdlCisKKyAgICAgICAgc2VsZi5f
b3V0Z29pbmdfbWVzc2FnZV9maWx0ZXIgPSBfT3V0Z29pbmdNZXNzYWdlRmlsdGVyKHNlbGYpCisg
ICAgICAgIHNlbGYuX2luY29taW5nX21lc3NhZ2VfZmlsdGVyID0gX0luY29taW5nTWVzc2FnZUZp
bHRlcihzZWxmKQorICAgICAgICBzdHJlYW1fb3B0aW9ucy5vdXRnb2luZ19tZXNzYWdlX2ZpbHRl
cnMuYXBwZW5kKAorICAgICAgICAgICAgc2VsZi5fb3V0Z29pbmdfbWVzc2FnZV9maWx0ZXIpCisg
ICAgICAgIHN0cmVhbV9vcHRpb25zLmluY29taW5nX21lc3NhZ2VfZmlsdGVycy5hcHBlbmQoCisg
ICAgICAgICAgICBzZWxmLl9pbmNvbWluZ19tZXNzYWdlX2ZpbHRlcikKKworICAgICAgICBjbGFz
cyBfT3V0Z29pbmdGcmFtZUZpbHRlcihvYmplY3QpOgorCisgICAgICAgICAgICBkZWYgX19pbml0
X18oc2VsZiwgcGFyZW50KToKKyAgICAgICAgICAgICAgICBzZWxmLl9wYXJlbnQgPSBwYXJlbnQK
KyAgICAgICAgICAgICAgICBzZWxmLl9zZXRfY29tcHJlc3Npb25fYml0ID0gRmFsc2UKKworICAg
ICAgICAgICAgZGVmIHNldF9jb21wcmVzc2lvbl9iaXQoc2VsZik6CisgICAgICAgICAgICAgICAg
c2VsZi5fc2V0X2NvbXByZXNzaW9uX2JpdCA9IFRydWUKKworICAgICAgICAgICAgZGVmIGZpbHRl
cihzZWxmLCBmcmFtZSk6CisgICAgICAgICAgICAgICAgc2VsZi5fcGFyZW50Ll9wcm9jZXNzX291
dGdvaW5nX2ZyYW1lKAorICAgICAgICAgICAgICAgICAgICBmcmFtZSwgc2VsZi5fc2V0X2NvbXBy
ZXNzaW9uX2JpdCkKKyAgICAgICAgICAgICAgICBzZWxmLl9zZXRfY29tcHJlc3Npb25fYml0ID0g
RmFsc2UKKworICAgICAgICBjbGFzcyBfSW5jb21pbmdGcmFtZUZpbHRlcihvYmplY3QpOgorCisg
ICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyZW50KToKKyAgICAgICAgICAgICAgICBz
ZWxmLl9wYXJlbnQgPSBwYXJlbnQKKworICAgICAgICAgICAgZGVmIGZpbHRlcihzZWxmLCBmcmFt
ZSk6CisgICAgICAgICAgICAgICAgc2VsZi5fcGFyZW50Ll9wcm9jZXNzX2luY29taW5nX2ZyYW1l
KGZyYW1lKQorCisgICAgICAgIHNlbGYuX291dGdvaW5nX2ZyYW1lX2ZpbHRlciA9IF9PdXRnb2lu
Z0ZyYW1lRmlsdGVyKHNlbGYpCisgICAgICAgIHNlbGYuX2luY29taW5nX2ZyYW1lX2ZpbHRlciA9
IF9JbmNvbWluZ0ZyYW1lRmlsdGVyKHNlbGYpCisgICAgICAgIHN0cmVhbV9vcHRpb25zLm91dGdv
aW5nX2ZyYW1lX2ZpbHRlcnMuYXBwZW5kKAorICAgICAgICAgICAgc2VsZi5fb3V0Z29pbmdfZnJh
bWVfZmlsdGVyKQorICAgICAgICBzdHJlYW1fb3B0aW9ucy5pbmNvbWluZ19mcmFtZV9maWx0ZXJz
LmFwcGVuZCgKKyAgICAgICAgICAgIHNlbGYuX2luY29taW5nX2ZyYW1lX2ZpbHRlcikKKworICAg
ICAgICBzdHJlYW1fb3B0aW9ucy5lbmNvZGVfdGV4dF9tZXNzYWdlX3RvX3V0ZjggPSBGYWxzZQor
CiAKLWNsYXNzIFBlck1lc3NhZ2VDb21wcmVzc2lvbkV4dGVuc2lvblByb2Nlc3NvcigKK19hdmFp
bGFibGVfcHJvY2Vzc29yc1tjb21tb24uUEVSTUVTU0FHRV9ERUZMQVRFX0VYVEVOU0lPTl0gPSAo
CisgICAgICAgIFBlck1lc3NhZ2VEZWZsYXRlRXh0ZW5zaW9uUHJvY2Vzc29yKQorIyBUT0RPKHR5
b3NoaW5vKTogUmVvcmdhbml6ZSBjbGFzcyBuYW1lcy4KK19jb21wcmVzc2lvbl9leHRlbnNpb25f
bmFtZXMuYXBwZW5kKCdkZWZsYXRlJykKKworCitjbGFzcyBQZXJNZXNzYWdlQ29tcHJlc3NFeHRl
bnNpb25Qcm9jZXNzb3IoCiAgICAgQ29tcHJlc3Npb25FeHRlbnNpb25Qcm9jZXNzb3JCYXNlKToK
LSAgICAiIiJXZWJTb2NrZXQgUGVyLW1lc3NhZ2UgY29tcHJlc3Npb24gZXh0ZW5zaW9uIHByb2Nl
c3Nvci4KKyAgICAiIiJwZXJtZXNzYWdlLWNvbXByZXNzIGV4dGVuc2lvbiBwcm9jZXNzb3IuCiAK
ICAgICBTcGVjaWZpY2F0aW9uOgogICAgIGh0dHA6Ly90b29scy5pZXRmLm9yZy9odG1sL2RyYWZ0
LWlldGYtaHliaS1wZXJtZXNzYWdlLWNvbXByZXNzaW9uCkBAIC02NTYsMTggKzc5NSwxMyBAQCBj
bGFzcyBQZXJNZXNzYWdlQ29tcHJlc3Npb25FeHRlbnNpb25Qcm9jZXNzb3IoCiAKICAgICBkZWYg
X2xvb2t1cF9jb21wcmVzc2lvbl9wcm9jZXNzb3Ioc2VsZiwgbWV0aG9kX2Rlc2MpOgogICAgICAg
ICBpZiBtZXRob2RfZGVzYy5uYW1lKCkgPT0gc2VsZi5fREVGTEFURV9NRVRIT0Q6Ci0gICAgICAg
ICAgICByZXR1cm4gRGVmbGF0ZU1lc3NhZ2VQcm9jZXNzb3IobWV0aG9kX2Rlc2MpCisgICAgICAg
ICAgICByZXR1cm4gUGVyTWVzc2FnZURlZmxhdGVFeHRlbnNpb25Qcm9jZXNzb3IobWV0aG9kX2Rl
c2MsIEZhbHNlKQogICAgICAgICByZXR1cm4gTm9uZQogCiAKIF9hdmFpbGFibGVfcHJvY2Vzc29y
c1tjb21tb24uUEVSTUVTU0FHRV9DT01QUkVTU0lPTl9FWFRFTlNJT05dID0gKAotICAgIFBlck1l
c3NhZ2VDb21wcmVzc2lvbkV4dGVuc2lvblByb2Nlc3NvcikKLQotCi0jIEFkZGluZyB2ZW5kb3It
cHJlZml4ZWQgcGVybWVzc2FnZS1jb21wcmVzcyBleHRlbnNpb24uCi0jIFRPRE8oYmFzaGkpOiBS
ZW1vdmUgdGhpcyBhZnRlciBXZWJLaXQgc3RvcHMgdXNpbmcgdmVuZG9yIHByZWZpeC4KLV9hdmFp
bGFibGVfcHJvY2Vzc29yc1tjb21tb24uWF9XRUJLSVRfUEVSTUVTU0FHRV9DT01QUkVTU0lPTl9F
WFRFTlNJT05dID0gKAotICAgIFBlck1lc3NhZ2VDb21wcmVzc2lvbkV4dGVuc2lvblByb2Nlc3Nv
cikKKyAgICBQZXJNZXNzYWdlQ29tcHJlc3NFeHRlbnNpb25Qcm9jZXNzb3IpCitfY29tcHJlc3Np
b25fZXh0ZW5zaW9uX25hbWVzLmFwcGVuZChjb21tb24uUEVSTUVTU0FHRV9DT01QUkVTU0lPTl9F
WFRFTlNJT04pCiAKIAogY2xhc3MgTXV4RXh0ZW5zaW9uUHJvY2Vzc29yKEV4dGVuc2lvblByb2Nl
c3NvckludGVyZmFjZSk6CkBAIC02NzYsNTIgKzgxMCw4NSBAQCBjbGFzcyBNdXhFeHRlbnNpb25Q
cm9jZXNzb3IoRXh0ZW5zaW9uUHJvY2Vzc29ySW50ZXJmYWNlKToKICAgICBfUVVPVEFfUEFSQU0g
PSAncXVvdGEnCiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgcmVxdWVzdCk6Ci0gICAgICAgIHNl
bGYuX3JlcXVlc3QgPSByZXF1ZXN0CisgICAgICAgIEV4dGVuc2lvblByb2Nlc3NvckludGVyZmFj
ZS5fX2luaXRfXyhzZWxmLCByZXF1ZXN0KQorICAgICAgICBzZWxmLl9xdW90YSA9IDAKKyAgICAg
ICAgc2VsZi5fZXh0ZW5zaW9ucyA9IFtdCiAKICAgICBkZWYgbmFtZShzZWxmKToKICAgICAgICAg
cmV0dXJuIGNvbW1vbi5NVVhfRVhURU5TSU9OCiAKLSAgICBkZWYgZ2V0X2V4dGVuc2lvbl9yZXNw
b25zZShzZWxmLCB3c19yZXF1ZXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxv
Z2ljYWxfY2hhbm5lbF9leHRlbnNpb25zKToKLSAgICAgICAgIyBNdXggZXh0ZW5zaW9uIGNhbm5v
dCBiZSB1c2VkIGFmdGVyIGV4dGVuc2lvbnMgdGhhdCBkZXBlbmQgb24KLSAgICAgICAgIyBmcmFt
ZSBib3VuZGFyeSwgZXh0ZW5zaW9uIGRhdGEgZmllbGQsIG9yIGFueSByZXNlcnZlZCBiaXRzCi0g
ICAgICAgICMgd2hpY2ggYXJlIGF0dHJpYnV0ZWQgdG8gZWFjaCBmcmFtZS4KLSAgICAgICAgZm9y
IGV4dGVuc2lvbiBpbiBsb2dpY2FsX2NoYW5uZWxfZXh0ZW5zaW9uczoKLSAgICAgICAgICAgIG5h
bWUgPSBleHRlbnNpb24ubmFtZSgpCi0gICAgICAgICAgICBpZiAobmFtZSA9PSBjb21tb24uUEVS
RlJBTUVfQ09NUFJFU1NJT05fRVhURU5TSU9OIG9yCi0gICAgICAgICAgICAgICAgbmFtZSA9PSBj
b21tb24uREVGTEFURV9GUkFNRV9FWFRFTlNJT04gb3IKLSAgICAgICAgICAgICAgICBuYW1lID09
IGNvbW1vbi5YX1dFQktJVF9ERUZMQVRFX0ZSQU1FX0VYVEVOU0lPTik6Ci0gICAgICAgICAgICAg
ICAgcmV0dXJuIE5vbmUKLQorICAgIGRlZiBjaGVja19jb25zaXN0ZW5jeV93aXRoX290aGVyX3By
b2Nlc3NvcnMoc2VsZiwgcHJvY2Vzc29ycyk6CisgICAgICAgIGJlZm9yZV9tdXggPSBUcnVlCisg
ICAgICAgIGZvciBwcm9jZXNzb3IgaW4gcHJvY2Vzc29yczoKKyAgICAgICAgICAgIG5hbWUgPSBw
cm9jZXNzb3IubmFtZSgpCisgICAgICAgICAgICBpZiBuYW1lID09IHNlbGYubmFtZSgpOgorICAg
ICAgICAgICAgICAgIGJlZm9yZV9tdXggPSBGYWxzZQorICAgICAgICAgICAgICAgIGNvbnRpbnVl
CisgICAgICAgICAgICBpZiBub3QgcHJvY2Vzc29yLmlzX2FjdGl2ZSgpOgorICAgICAgICAgICAg
ICAgIGNvbnRpbnVlCisgICAgICAgICAgICBpZiBiZWZvcmVfbXV4OgorICAgICAgICAgICAgICAg
ICMgTXV4IGV4dGVuc2lvbiBjYW5ub3QgYmUgdXNlZCBhZnRlciBleHRlbnNpb25zCisgICAgICAg
ICAgICAgICAgIyB0aGF0IGRlcGVuZCBvbiBmcmFtZSBib3VuZGFyeSwgZXh0ZW5zaW9uIGRhdGEg
ZmllbGQsIG9yIGFueQorICAgICAgICAgICAgICAgICMgcmVzZXJ2ZWQgYml0cyB3aGljaCBhcmUg
YXR0cmlidXRlZCB0byBlYWNoIGZyYW1lLgorICAgICAgICAgICAgICAgIGlmIChuYW1lID09IGNv
bW1vbi5QRVJGUkFNRV9DT01QUkVTU0lPTl9FWFRFTlNJT04gb3IKKyAgICAgICAgICAgICAgICAg
ICAgbmFtZSA9PSBjb21tb24uREVGTEFURV9GUkFNRV9FWFRFTlNJT04gb3IKKyAgICAgICAgICAg
ICAgICAgICAgbmFtZSA9PSBjb21tb24uWF9XRUJLSVRfREVGTEFURV9GUkFNRV9FWFRFTlNJT04p
OgorICAgICAgICAgICAgICAgICAgICBzZWxmLnNldF9hY3RpdmUoRmFsc2UpCisgICAgICAgICAg
ICAgICAgICAgIHJldHVybgorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAjIE11
eCBleHRlbnNpb24gc2hvdWxkIG5vdCBiZSBhcHBsaWVkIGJlZm9yZSBhbnkgaGlzdG9yeS1iYXNl
ZAorICAgICAgICAgICAgICAgICMgY29tcHJlc3Npb24gZXh0ZW5zaW9uLgorICAgICAgICAgICAg
ICAgIGlmIChuYW1lID09IGNvbW1vbi5QRVJGUkFNRV9DT01QUkVTU0lPTl9FWFRFTlNJT04gb3IK
KyAgICAgICAgICAgICAgICAgICAgbmFtZSA9PSBjb21tb24uREVGTEFURV9GUkFNRV9FWFRFTlNJ
T04gb3IKKyAgICAgICAgICAgICAgICAgICAgbmFtZSA9PSBjb21tb24uWF9XRUJLSVRfREVGTEFU
RV9GUkFNRV9FWFRFTlNJT04gb3IKKyAgICAgICAgICAgICAgICAgICAgbmFtZSA9PSBjb21tb24u
UEVSTUVTU0FHRV9DT01QUkVTU0lPTl9FWFRFTlNJT04gb3IKKyAgICAgICAgICAgICAgICAgICAg
bmFtZSA9PSBjb21tb24uWF9XRUJLSVRfUEVSTUVTU0FHRV9DT01QUkVTU0lPTl9FWFRFTlNJT04p
OgorICAgICAgICAgICAgICAgICAgICBzZWxmLnNldF9hY3RpdmUoRmFsc2UpCisgICAgICAgICAg
ICAgICAgICAgIHJldHVybgorCisgICAgZGVmIF9nZXRfZXh0ZW5zaW9uX3Jlc3BvbnNlX2ludGVy
bmFsKHNlbGYpOgorICAgICAgICBzZWxmLl9hY3RpdmUgPSBGYWxzZQogICAgICAgICBxdW90YSA9
IHNlbGYuX3JlcXVlc3QuZ2V0X3BhcmFtZXRlcl92YWx1ZShzZWxmLl9RVU9UQV9QQVJBTSkKLSAg
ICAgICAgaWYgcXVvdGEgaXMgTm9uZToKLSAgICAgICAgICAgIHdzX3JlcXVlc3QubXV4X3F1b3Rh
ID0gMAotICAgICAgICBlbHNlOgorICAgICAgICBpZiBxdW90YSBpcyBub3QgTm9uZToKICAgICAg
ICAgICAgIHRyeToKICAgICAgICAgICAgICAgICBxdW90YSA9IGludChxdW90YSkKICAgICAgICAg
ICAgIGV4Y2VwdCBWYWx1ZUVycm9yLCBlOgogICAgICAgICAgICAgICAgIHJldHVybiBOb25lCiAg
ICAgICAgICAgICBpZiBxdW90YSA8IDAgb3IgcXVvdGEgPj0gMiAqKiAzMjoKICAgICAgICAgICAg
ICAgICByZXR1cm4gTm9uZQotICAgICAgICAgICAgd3NfcmVxdWVzdC5tdXhfcXVvdGEgPSBxdW90
YQorICAgICAgICAgICAgc2VsZi5fcXVvdGEgPSBxdW90YQogCi0gICAgICAgIHdzX3JlcXVlc3Qu
bXV4ID0gVHJ1ZQotICAgICAgICB3c19yZXF1ZXN0Lm11eF9leHRlbnNpb25zID0gbG9naWNhbF9j
aGFubmVsX2V4dGVuc2lvbnMKKyAgICAgICAgc2VsZi5fYWN0aXZlID0gVHJ1ZQogICAgICAgICBy
ZXR1cm4gY29tbW9uLkV4dGVuc2lvblBhcmFtZXRlcihjb21tb24uTVVYX0VYVEVOU0lPTikKIAot
ICAgIGRlZiBzZXR1cF9zdHJlYW1fb3B0aW9ucyhzZWxmLCBzdHJlYW1fb3B0aW9ucyk6CisgICAg
ZGVmIF9zZXR1cF9zdHJlYW1fb3B0aW9uc19pbnRlcm5hbChzZWxmLCBzdHJlYW1fb3B0aW9ucyk6
CiAgICAgICAgIHBhc3MKIAorICAgIGRlZiBzZXRfcXVvdGEoc2VsZiwgcXVvdGEpOgorICAgICAg
ICBzZWxmLl9xdW90YSA9IHF1b3RhCisKKyAgICBkZWYgcXVvdGEoc2VsZik6CisgICAgICAgIHJl
dHVybiBzZWxmLl9xdW90YQorCisgICAgZGVmIHNldF9leHRlbnNpb25zKHNlbGYsIGV4dGVuc2lv
bnMpOgorICAgICAgICBzZWxmLl9leHRlbnNpb25zID0gZXh0ZW5zaW9ucworCisgICAgZGVmIGV4
dGVuc2lvbnMoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLl9leHRlbnNpb25zCisKIAogX2F2
YWlsYWJsZV9wcm9jZXNzb3JzW2NvbW1vbi5NVVhfRVhURU5TSU9OXSA9IE11eEV4dGVuc2lvblBy
b2Nlc3NvcgogCiAKIGRlZiBnZXRfZXh0ZW5zaW9uX3Byb2Nlc3NvcihleHRlbnNpb25fcmVxdWVz
dCk6Ci0gICAgZ2xvYmFsIF9hdmFpbGFibGVfcHJvY2Vzc29ycwogICAgIHByb2Nlc3Nvcl9jbGFz
cyA9IF9hdmFpbGFibGVfcHJvY2Vzc29ycy5nZXQoZXh0ZW5zaW9uX3JlcXVlc3QubmFtZSgpKQog
ICAgIGlmIHByb2Nlc3Nvcl9jbGFzcyBpcyBOb25lOgogICAgICAgICByZXR1cm4gTm9uZQogICAg
IHJldHVybiBwcm9jZXNzb3JfY2xhc3MoZXh0ZW5zaW9uX3JlcXVlc3QpCiAKIAorZGVmIGlzX2Nv
bXByZXNzaW9uX2V4dGVuc2lvbihleHRlbnNpb25fbmFtZSk6CisgICAgcmV0dXJuIGV4dGVuc2lv
bl9uYW1lIGluIF9jb21wcmVzc2lvbl9leHRlbnNpb25fbmFtZXMKKworCiAjIHZpOnN0cz00IHN3
PTQgZXQKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGhpcmRwYXJ0eS9tb2Rf
cHl3ZWJzb2NrZXQvaGFuZHNoYWtlL19iYXNlLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90
aGlyZHBhcnR5L21vZF9weXdlYnNvY2tldC9oYW5kc2hha2UvX2Jhc2UucHkKaW5kZXggZTVjOTRj
YTkwOThiMDUwN2YzOTRhMjJlMzNiNjg4MjEzODFmNWM0ZS4uYzk5M2E1ODRiN2IzZTUyYjYwN2I2
NWJmMzhhZmRjYWRkY2EyZmU3OCAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90
aGlyZHBhcnR5L21vZF9weXdlYnNvY2tldC9oYW5kc2hha2UvX2Jhc2UucHkKKysrIGIvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS90aGlyZHBhcnR5L21vZF9weXdlYnNvY2tldC9oYW5kc2hha2UvX2Jh
c2UucHkKQEAgLTg0LDQyICs4NCwyOSBAQCBkZWYgZ2V0X2RlZmF1bHRfcG9ydChpc19zZWN1cmUp
OgogICAgICAgICByZXR1cm4gY29tbW9uLkRFRkFVTFRfV0VCX1NPQ0tFVF9QT1JUCiAKIAotZGVm
IHZhbGlkYXRlX3N1YnByb3RvY29sKHN1YnByb3RvY29sLCBoaXhpZSk6CitkZWYgdmFsaWRhdGVf
c3VicHJvdG9jb2woc3VicHJvdG9jb2wpOgogICAgICIiIlZhbGlkYXRlIGEgdmFsdWUgaW4gdGhl
IFNlYy1XZWJTb2NrZXQtUHJvdG9jb2wgZmllbGQuCiAKLSAgICBTZWUKLSAgICAtIFJGQyA2NDU1
OiBTZWN0aW9uIDQuMS4sIDQuMi4yLiwgYW5kIDQuMy4KLSAgICAtIEh5QmkgMDA6IFNlY3Rpb24g
NC4xLiBPcGVuaW5nIGhhbmRzaGFrZQotCi0gICAgQXJnczoKLSAgICAgICAgIGhpeGllOiBpZiBU
cnVlLCBjaGVja3MgaWYgY2hhcmFjdGVycyBpbiBzdWJwcm90b2NvbCBhcmUgaW4gcmFuZ2UKLSAg
ICAgICAgICAgICAgICBiZXR3ZWVuIFUrMDAyMCBhbmQgVSswMDdFLiBJdCdzIHJlcXVpcmVkIGJ5
IEh5QmkgMDAgYnV0IG5vdCBieQotICAgICAgICAgICAgICAgIFJGQyA2NDU1LgorICAgIFNlZSB0
aGUgU2VjdGlvbiA0LjEuLCA0LjIuMi4sIGFuZCA0LjMuIG9mIFJGQyA2NDU1LgogICAgICIiIgog
CiAgICAgaWYgbm90IHN1YnByb3RvY29sOgogICAgICAgICByYWlzZSBIYW5kc2hha2VFeGNlcHRp
b24oJ0ludmFsaWQgc3VicHJvdG9jb2wgbmFtZTogZW1wdHknKQotICAgIGlmIGhpeGllOgotICAg
ICAgICAjIFBhcmFtZXRlciBzaG91bGQgYmUgaW4gdGhlIHJhbmdlIFUrMDAyMCB0byBVKzAwN0Uu
Ci0gICAgICAgIGZvciBjIGluIHN1YnByb3RvY29sOgotICAgICAgICAgICAgaWYgbm90IDB4MjAg
PD0gb3JkKGMpIDw9IDB4N2U6Ci0gICAgICAgICAgICAgICAgcmFpc2UgSGFuZHNoYWtlRXhjZXB0
aW9uKAotICAgICAgICAgICAgICAgICAgICAnSWxsZWdhbCBjaGFyYWN0ZXIgaW4gc3VicHJvdG9j
b2wgbmFtZTogJXInICUgYykKLSAgICBlbHNlOgotICAgICAgICAjIFBhcmFtZXRlciBzaG91bGQg
YmUgZW5jb2RlZCBIVFRQIHRva2VuLgotICAgICAgICBzdGF0ZSA9IGh0dHBfaGVhZGVyX3V0aWwu
UGFyc2luZ1N0YXRlKHN1YnByb3RvY29sKQotICAgICAgICB0b2tlbiA9IGh0dHBfaGVhZGVyX3V0
aWwuY29uc3VtZV90b2tlbihzdGF0ZSkKLSAgICAgICAgcmVzdCA9IGh0dHBfaGVhZGVyX3V0aWwu
cGVlayhzdGF0ZSkKLSAgICAgICAgIyBJZiB8cmVzdHwgaXMgbm90IE5vbmUsIHxzdWJwcm90b2Nv
bHwgaXMgbm90IG9uZSB0b2tlbiBvciBpbnZhbGlkLiBJZgotICAgICAgICAjIHxyZXN0fCBpcyBO
b25lLCB8dG9rZW58IG11c3Qgbm90IGJlIE5vbmUgYmVjYXVzZSB8c3VicHJvdG9jb2x8IGlzCi0g
ICAgICAgICMgY29uY2F0ZW5hdGlvbiBvZiB8dG9rZW58IGFuZCB8cmVzdHwgYW5kIGlzIG5vdCBO
b25lLgotICAgICAgICBpZiByZXN0IGlzIG5vdCBOb25lOgotICAgICAgICAgICAgcmFpc2UgSGFu
ZHNoYWtlRXhjZXB0aW9uKCdJbnZhbGlkIG5vbi10b2tlbiBzdHJpbmcgaW4gc3VicHJvdG9jb2wg
JwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICduYW1lOiAlcicgJSByZXN0
KQorCisgICAgIyBQYXJhbWV0ZXIgc2hvdWxkIGJlIGVuY29kZWQgSFRUUCB0b2tlbi4KKyAgICBz
dGF0ZSA9IGh0dHBfaGVhZGVyX3V0aWwuUGFyc2luZ1N0YXRlKHN1YnByb3RvY29sKQorICAgIHRv
a2VuID0gaHR0cF9oZWFkZXJfdXRpbC5jb25zdW1lX3Rva2VuKHN0YXRlKQorICAgIHJlc3QgPSBo
dHRwX2hlYWRlcl91dGlsLnBlZWsoc3RhdGUpCisgICAgIyBJZiB8cmVzdHwgaXMgbm90IE5vbmUs
IHxzdWJwcm90b2NvbHwgaXMgbm90IG9uZSB0b2tlbiBvciBpbnZhbGlkLiBJZgorICAgICMgfHJl
c3R8IGlzIE5vbmUsIHx0b2tlbnwgbXVzdCBub3QgYmUgTm9uZSBiZWNhdXNlIHxzdWJwcm90b2Nv
bHwgaXMKKyAgICAjIGNvbmNhdGVuYXRpb24gb2YgfHRva2VufCBhbmQgfHJlc3R8IGFuZCBpcyBu
b3QgTm9uZS4KKyAgICBpZiByZXN0IGlzIG5vdCBOb25lOgorICAgICAgICByYWlzZSBIYW5kc2hh
a2VFeGNlcHRpb24oJ0ludmFsaWQgbm9uLXRva2VuIHN0cmluZyBpbiBzdWJwcm90b2NvbCAnCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbmFtZTogJXInICUgcmVzdCkKIAogCiBk
ZWYgcGFyc2VfaG9zdF9oZWFkZXIocmVxdWVzdCk6Ci0gICAgZmllbGRzID0gcmVxdWVzdC5oZWFk
ZXJzX2luWydIb3N0J10uc3BsaXQoJzonLCAxKQorICAgIGZpZWxkcyA9IHJlcXVlc3QuaGVhZGVy
c19pbltjb21tb24uSE9TVF9IRUFERVJdLnNwbGl0KCc6JywgMSkKICAgICBpZiBsZW4oZmllbGRz
KSA9PSAxOgogICAgICAgICByZXR1cm4gZmllbGRzWzBdLCBnZXRfZGVmYXVsdF9wb3J0KHJlcXVl
c3QuaXNfaHR0cHMoKSkKICAgICB0cnk6CkBAIC0xMzIsMjcgKzExOSw2IEBAIGRlZiBmb3JtYXRf
aGVhZGVyKG5hbWUsIHZhbHVlKToKICAgICByZXR1cm4gJyVzOiAlc1xyXG4nICUgKG5hbWUsIHZh
bHVlKQogCiAKLWRlZiBidWlsZF9sb2NhdGlvbihyZXF1ZXN0KToKLSAgICAiIiJCdWlsZCBXZWJT
b2NrZXQgbG9jYXRpb24gZm9yIHJlcXVlc3QuIiIiCi0gICAgbG9jYXRpb25fcGFydHMgPSBbXQot
ICAgIGlmIHJlcXVlc3QuaXNfaHR0cHMoKToKLSAgICAgICAgbG9jYXRpb25fcGFydHMuYXBwZW5k
KGNvbW1vbi5XRUJfU09DS0VUX1NFQ1VSRV9TQ0hFTUUpCi0gICAgZWxzZToKLSAgICAgICAgbG9j
YXRpb25fcGFydHMuYXBwZW5kKGNvbW1vbi5XRUJfU09DS0VUX1NDSEVNRSkKLSAgICBsb2NhdGlv
bl9wYXJ0cy5hcHBlbmQoJzovLycpCi0gICAgaG9zdCwgcG9ydCA9IHBhcnNlX2hvc3RfaGVhZGVy
KHJlcXVlc3QpCi0gICAgY29ubmVjdGlvbl9wb3J0ID0gcmVxdWVzdC5jb25uZWN0aW9uLmxvY2Fs
X2FkZHJbMV0KLSAgICBpZiBwb3J0ICE9IGNvbm5lY3Rpb25fcG9ydDoKLSAgICAgICAgcmFpc2Ug
SGFuZHNoYWtlRXhjZXB0aW9uKCdIZWFkZXIvY29ubmVjdGlvbiBwb3J0IG1pc21hdGNoOiAlZC8l
ZCcgJQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBvcnQsIGNvbm5lY3Rpb25f
cG9ydCkpCi0gICAgbG9jYXRpb25fcGFydHMuYXBwZW5kKGhvc3QpCi0gICAgaWYgKHBvcnQgIT0g
Z2V0X2RlZmF1bHRfcG9ydChyZXF1ZXN0LmlzX2h0dHBzKCkpKToKLSAgICAgICAgbG9jYXRpb25f
cGFydHMuYXBwZW5kKCc6JykKLSAgICAgICAgbG9jYXRpb25fcGFydHMuYXBwZW5kKHN0cihwb3J0
KSkKLSAgICBsb2NhdGlvbl9wYXJ0cy5hcHBlbmQocmVxdWVzdC51cmkpCi0gICAgcmV0dXJuICcn
LmpvaW4obG9jYXRpb25fcGFydHMpCi0KLQogZGVmIGdldF9tYW5kYXRvcnlfaGVhZGVyKHJlcXVl
c3QsIGtleSk6CiAgICAgdmFsdWUgPSByZXF1ZXN0LmhlYWRlcnNfaW4uZ2V0KGtleSkKICAgICBp
ZiB2YWx1ZSBpcyBOb25lOgpAQCAtMTgwLDE2ICsxNDYsNiBAQCBkZWYgY2hlY2tfcmVxdWVzdF9s
aW5lKHJlcXVlc3QpOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC5w
cm90b2NvbCkKIAogCi1kZWYgY2hlY2tfaGVhZGVyX2xpbmVzKHJlcXVlc3QsIG1hbmRhdG9yeV9o
ZWFkZXJzKToKLSAgICBjaGVja19yZXF1ZXN0X2xpbmUocmVxdWVzdCkKLQotICAgICMgVGhlIGV4
cGVjdGVkIGZpZWxkIG5hbWVzLCBhbmQgdGhlIG1lYW5pbmcgb2YgdGhlaXIgY29ycmVzcG9uZGlu
ZwotICAgICMgdmFsdWVzLCBhcmUgYXMgZm9sbG93cy4KLSAgICAjICB8VXBncmFkZXwgYW5kIHxD
b25uZWN0aW9ufAotICAgIGZvciBrZXksIGV4cGVjdGVkX3ZhbHVlIGluIG1hbmRhdG9yeV9oZWFk
ZXJzOgotICAgICAgICB2YWxpZGF0ZV9tYW5kYXRvcnlfaGVhZGVyKHJlcXVlc3QsIGtleSwgZXhw
ZWN0ZWRfdmFsdWUpCi0KLQogZGVmIHBhcnNlX3Rva2VuX2xpc3QoZGF0YSk6CiAgICAgIiIiUGFy
c2VzIGEgaGVhZGVyIHZhbHVlIHdoaWNoIGZvbGxvd3MgMSN0b2tlbiBhbmQgcmV0dXJucyBwYXJz
ZWQgZWxlbWVudHMKICAgICBhcyBhIGxpc3Qgb2Ygc3RyaW5ncy4KZGlmZiAtLWdpdCBhL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvdGhpcmRwYXJ0eS9tb2RfcHl3ZWJzb2NrZXQvaGFuZHNoYWtlL2h5
YmkucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3RoaXJkcGFydHkvbW9kX3B5d2Vic29ja2V0
L2hhbmRzaGFrZS9oeWJpLnB5CmluZGV4IGZjMGUyYTA5NjYwYzRhNTE1MTM5OWJkNWQzYzEyYTFm
OTY3Yjk3MDAuLjFkNTRhNjYyZGZkYWZhODg5MjA5M2Y3M2YzODRmYjYwZTgzYzE2ZWYgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGhpcmRwYXJ0eS9tb2RfcHl3ZWJzb2NrZXQv
aGFuZHNoYWtlL2h5YmkucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90aGlyZHBhcnR5
L21vZF9weXdlYnNvY2tldC9oYW5kc2hha2UvaHliaS5weQpAQCAtNDksNiArNDksNyBAQCBpbXBv
cnQgcmUKIAogZnJvbSBtb2RfcHl3ZWJzb2NrZXQgaW1wb3J0IGNvbW1vbgogZnJvbSBtb2RfcHl3
ZWJzb2NrZXQuZXh0ZW5zaW9ucyBpbXBvcnQgZ2V0X2V4dGVuc2lvbl9wcm9jZXNzb3IKK2Zyb20g
bW9kX3B5d2Vic29ja2V0LmV4dGVuc2lvbnMgaW1wb3J0IGlzX2NvbXByZXNzaW9uX2V4dGVuc2lv
bgogZnJvbSBtb2RfcHl3ZWJzb2NrZXQuaGFuZHNoYWtlLl9iYXNlIGltcG9ydCBjaGVja19yZXF1
ZXN0X2xpbmUKIGZyb20gbW9kX3B5d2Vic29ja2V0LmhhbmRzaGFrZS5fYmFzZSBpbXBvcnQgZm9y
bWF0X2hlYWRlcgogZnJvbSBtb2RfcHl3ZWJzb2NrZXQuaGFuZHNoYWtlLl9iYXNlIGltcG9ydCBn
ZXRfbWFuZGF0b3J5X2hlYWRlcgpAQCAtMTgwLDQzICsxODEsNTkgQEAgY2xhc3MgSGFuZHNoYWtl
cihvYmplY3QpOgogICAgICAgICAgICAgICAgICAgICAgICAgcHJvY2Vzc29ycy5hcHBlbmQocHJv
Y2Vzc29yKQogICAgICAgICAgICAgc2VsZi5fcmVxdWVzdC53c19leHRlbnNpb25fcHJvY2Vzc29y
cyA9IHByb2Nlc3NvcnMKIAorICAgICAgICAgICAgIyBMaXN0IG9mIGV4dHJhIGhlYWRlcnMuIFRo
ZSBleHRyYSBoYW5kc2hha2UgaGFuZGxlciBtYXkgYWRkIGhlYWRlcgorICAgICAgICAgICAgIyBk
YXRhIGFzIG5hbWUvdmFsdWUgcGFpcnMgdG8gdGhpcyBsaXN0IGFuZCBweXdlYnNvY2tldCBhcHBl
bmRzCisgICAgICAgICAgICAjIHRoZW0gdG8gdGhlIFdlYlNvY2tldCBoYW5kc2hha2UuCisgICAg
ICAgICAgICBzZWxmLl9yZXF1ZXN0LmV4dHJhX2hlYWRlcnMgPSBbXQorCiAgICAgICAgICAgICAj
IEV4dHJhIGhhbmRzaGFrZSBoYW5kbGVyIG1heSBtb2RpZnkvcmVtb3ZlIHByb2Nlc3NvcnMuCiAg
ICAgICAgICAgICBzZWxmLl9kaXNwYXRjaGVyLmRvX2V4dHJhX2hhbmRzaGFrZShzZWxmLl9yZXF1
ZXN0KQogICAgICAgICAgICAgcHJvY2Vzc29ycyA9IGZpbHRlcihsYW1iZGEgcHJvY2Vzc29yOiBw
cm9jZXNzb3IgaXMgbm90IE5vbmUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNl
bGYuX3JlcXVlc3Qud3NfZXh0ZW5zaW9uX3Byb2Nlc3NvcnMpCiAKKyAgICAgICAgICAgICMgQXNr
IGVhY2ggcHJvY2Vzc29yIGlmIHRoZXJlIGFyZSBleHRlbnNpb25zIG9uIHRoZSByZXF1ZXN0IHdo
aWNoCisgICAgICAgICAgICAjIGNhbm5vdCBjby1leGlzdC4gV2hlbiBwcm9jZXNzb3IgZGVjaWRl
ZCBvdGhlciBwcm9jZXNzb3JzIGNhbm5vdAorICAgICAgICAgICAgIyBjby1leGlzdCB3aXRoIGl0
LCB0aGUgcHJvY2Vzc29yIG1hcmtzIHRoZW0gKG9yIGl0c2VsZikgYXMKKyAgICAgICAgICAgICMg
ImluYWN0aXZlIi4gVGhlIGZpcnN0IGV4dGVuc2lvbiBwcm9jZXNzb3IgaGFzIHRoZSByaWdodCB0
bworICAgICAgICAgICAgIyBtYWtlIHRoZSBmaW5hbCBjYWxsLgorICAgICAgICAgICAgZm9yIHBy
b2Nlc3NvciBpbiByZXZlcnNlZChwcm9jZXNzb3JzKToKKyAgICAgICAgICAgICAgICBpZiBwcm9j
ZXNzb3IuaXNfYWN0aXZlKCk6CisgICAgICAgICAgICAgICAgICAgIHByb2Nlc3Nvci5jaGVja19j
b25zaXN0ZW5jeV93aXRoX290aGVyX3Byb2Nlc3NvcnMoCisgICAgICAgICAgICAgICAgICAgICAg
ICBwcm9jZXNzb3JzKQorICAgICAgICAgICAgcHJvY2Vzc29ycyA9IGZpbHRlcihsYW1iZGEgcHJv
Y2Vzc29yOiBwcm9jZXNzb3IuaXNfYWN0aXZlKCksCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHByb2Nlc3NvcnMpCisKICAgICAgICAgICAgIGFjY2VwdGVkX2V4dGVuc2lvbnMgPSBb
XQogCi0gICAgICAgICAgICAjIFdlIG5lZWQgdG8gdGFrZSBjYXJlIG9mIG11eCBleHRlbnNpb24g
aGVyZS4gRXh0ZW5zaW9ucyB0aGF0Ci0gICAgICAgICAgICAjIGFyZSBwbGFjZWQgYmVmb3JlIG11
eCBzaG91bGQgYmUgYXBwbGllZCB0byBsb2dpY2FsIGNoYW5uZWxzLgorICAgICAgICAgICAgIyBX
ZSBuZWVkIHRvIHRha2UgaW50byBhY2NvdW50IG9mIG11eCBleHRlbnNpb24gaGVyZS4KKyAgICAg
ICAgICAgICMgSWYgbXV4IGV4dGVuc2lvbiBleGlzdHM6CisgICAgICAgICAgICAjIC0gUmVtb3Zl
IHByb2Nlc3NvcnMgb2YgZXh0ZW5zaW9ucyBmb3IgbG9naWNhbCBjaGFubmVsLAorICAgICAgICAg
ICAgIyAgIHdoaWNoIGFyZSBwcm9jZXNzb3JzIGxvY2F0ZWQgYmVmb3JlIHRoZSBtdXggcHJvY2Vz
c29yCisgICAgICAgICAgICAjIC0gUGFzcyBleHRlbnNpb24gcmVxdWVzdHMgZm9yIGxvZ2ljYWwg
Y2hhbm5lbCB0byBtdXggcHJvY2Vzc29yCisgICAgICAgICAgICAjIC0gQXR0YWNoIHRoZSBtdXgg
cHJvY2Vzc29yIHRvIHRoZSByZXF1ZXN0LiBJdCB3aWxsIGJlIHJlZmVycmVkCisgICAgICAgICAg
ICAjICAgYnkgZGlzcGF0Y2hlciB0byBzZWUgd2hldGhlciB0aGUgZGlzcGF0Y2hlciBzaG91bGQg
dXNlIG11eAorICAgICAgICAgICAgIyAgIGhhbmRsZXIgb3Igbm90LgogICAgICAgICAgICAgbXV4
X2luZGV4ID0gLTEKICAgICAgICAgICAgIGZvciBpLCBwcm9jZXNzb3IgaW4gZW51bWVyYXRlKHBy
b2Nlc3NvcnMpOgogICAgICAgICAgICAgICAgIGlmIHByb2Nlc3Nvci5uYW1lKCkgPT0gY29tbW9u
Lk1VWF9FWFRFTlNJT046CiAgICAgICAgICAgICAgICAgICAgIG11eF9pbmRleCA9IGkKICAgICAg
ICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgIGlmIG11eF9pbmRleCA+PSAwOgotICAg
ICAgICAgICAgICAgIG11eF9wcm9jZXNzb3IgPSBwcm9jZXNzb3JzW211eF9pbmRleF0KLSAgICAg
ICAgICAgICAgICBsb2dpY2FsX2NoYW5uZWxfcHJvY2Vzc29ycyA9IHByb2Nlc3NvcnNbOm11eF9p
bmRleF0KLSAgICAgICAgICAgICAgICBwcm9jZXNzb3JzID0gcHJvY2Vzc29yc1ttdXhfaW5kZXgr
MTpdCi0KLSAgICAgICAgICAgICAgICBmb3IgcHJvY2Vzc29yIGluIGxvZ2ljYWxfY2hhbm5lbF9w
cm9jZXNzb3JzOgotICAgICAgICAgICAgICAgICAgICBleHRlbnNpb25fcmVzcG9uc2UgPSBwcm9j
ZXNzb3IuZ2V0X2V4dGVuc2lvbl9yZXNwb25zZSgpCi0gICAgICAgICAgICAgICAgICAgIGlmIGV4
dGVuc2lvbl9yZXNwb25zZSBpcyBOb25lOgotICAgICAgICAgICAgICAgICAgICAgICAgIyBSZWpl
Y3RlZC4KLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICAgICAg
ICAgIGFjY2VwdGVkX2V4dGVuc2lvbnMuYXBwZW5kKGV4dGVuc2lvbl9yZXNwb25zZSkKLSAgICAg
ICAgICAgICAgICAjIFBhc3MgYSBzaGFsbG93IGNvcHkgb2YgYWNjZXB0ZWRfZXh0ZW5zaW9ucyBh
cyBleHRlbnNpb25zIGZvcgotICAgICAgICAgICAgICAgICMgbG9naWNhbCBjaGFubmVscy4KLSAg
ICAgICAgICAgICAgICBtdXhfcmVzcG9uc2UgPSBtdXhfcHJvY2Vzc29yLmdldF9leHRlbnNpb25f
cmVzcG9uc2UoCi0gICAgICAgICAgICAgICAgICAgIHNlbGYuX3JlcXVlc3QsIGFjY2VwdGVkX2V4
dGVuc2lvbnNbOl0pCi0gICAgICAgICAgICAgICAgaWYgbXV4X3Jlc3BvbnNlIGlzIG5vdCBOb25l
OgotICAgICAgICAgICAgICAgICAgICBhY2NlcHRlZF9leHRlbnNpb25zLmFwcGVuZChtdXhfcmVz
cG9uc2UpCisgICAgICAgICAgICAgICAgbG9naWNhbF9jaGFubmVsX2V4dGVuc2lvbnMgPSBbXQor
ICAgICAgICAgICAgICAgIGZvciBwcm9jZXNzb3IgaW4gcHJvY2Vzc29yc1s6bXV4X2luZGV4XToK
KyAgICAgICAgICAgICAgICAgICAgbG9naWNhbF9jaGFubmVsX2V4dGVuc2lvbnMuYXBwZW5kKHBy
b2Nlc3Nvci5yZXF1ZXN0KCkpCisgICAgICAgICAgICAgICAgICAgIHByb2Nlc3Nvci5zZXRfYWN0
aXZlKEZhbHNlKQorICAgICAgICAgICAgICAgIHNlbGYuX3JlcXVlc3QubXV4X3Byb2Nlc3NvciA9
IHByb2Nlc3NvcnNbbXV4X2luZGV4XQorICAgICAgICAgICAgICAgIHNlbGYuX3JlcXVlc3QubXV4
X3Byb2Nlc3Nvci5zZXRfZXh0ZW5zaW9ucygKKyAgICAgICAgICAgICAgICAgICAgbG9naWNhbF9j
aGFubmVsX2V4dGVuc2lvbnMpCisgICAgICAgICAgICAgICAgcHJvY2Vzc29ycyA9IGZpbHRlcihs
YW1iZGEgcHJvY2Vzc29yOiBwcm9jZXNzb3IuaXNfYWN0aXZlKCksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBwcm9jZXNzb3JzKQogCiAgICAgICAgICAgICBzdHJlYW1fb3B0
aW9ucyA9IFN0cmVhbU9wdGlvbnMoKQogCi0gICAgICAgICAgICAjIFdoZW4gdGhlcmUgaXMgbXV4
IGV4dGVuc2lvbiwgaGVyZSwgfHByb2Nlc3NvcnN8IGNvbnRhaW4gb25seQotICAgICAgICAgICAg
IyBwcm9zZXNzb3JzIGZvciBleHRlbnNpb25zIHBsYWNlZCBhZnRlciBtdXguCi0gICAgICAgICAg
ICBmb3IgcHJvY2Vzc29yIGluIHByb2Nlc3NvcnM6CisgICAgICAgICAgICBmb3IgaW5kZXgsIHBy
b2Nlc3NvciBpbiBlbnVtZXJhdGUocHJvY2Vzc29ycyk6CisgICAgICAgICAgICAgICAgaWYgbm90
IHByb2Nlc3Nvci5pc19hY3RpdmUoKToKKyAgICAgICAgICAgICAgICAgICAgY29udGludWUKIAog
ICAgICAgICAgICAgICAgIGV4dGVuc2lvbl9yZXNwb25zZSA9IHByb2Nlc3Nvci5nZXRfZXh0ZW5z
aW9uX3Jlc3BvbnNlKCkKICAgICAgICAgICAgICAgICBpZiBleHRlbnNpb25fcmVzcG9uc2UgaXMg
Tm9uZToKQEAgLTIyNyw2ICsyNDQsMTQgQEAgY2xhc3MgSGFuZHNoYWtlcihvYmplY3QpOgogCiAg
ICAgICAgICAgICAgICAgcHJvY2Vzc29yLnNldHVwX3N0cmVhbV9vcHRpb25zKHN0cmVhbV9vcHRp
b25zKQogCisgICAgICAgICAgICAgICAgaWYgbm90IGlzX2NvbXByZXNzaW9uX2V4dGVuc2lvbihw
cm9jZXNzb3IubmFtZSgpKToKKyAgICAgICAgICAgICAgICAgICAgY29udGludWUKKworICAgICAg
ICAgICAgICAgICMgSW5hY3RpdmF0ZSBhbGwgb2YgdGhlIGZvbGxvd2luZyBjb21wcmVzc2lvbiBl
eHRlbnNpb25zLgorICAgICAgICAgICAgICAgIGZvciBqIGluIHhyYW5nZShpbmRleCArIDEsIGxl
bihwcm9jZXNzb3JzKSk6CisgICAgICAgICAgICAgICAgICAgIGlmIGlzX2NvbXByZXNzaW9uX2V4
dGVuc2lvbihwcm9jZXNzb3JzW2pdLm5hbWUoKSk6CisgICAgICAgICAgICAgICAgICAgICAgICBw
cm9jZXNzb3JzW2pdLnNldF9hY3RpdmUoRmFsc2UpCisKICAgICAgICAgICAgIGlmIGxlbihhY2Nl
cHRlZF9leHRlbnNpb25zKSA+IDA6CiAgICAgICAgICAgICAgICAgc2VsZi5fcmVxdWVzdC53c19l
eHRlbnNpb25zID0gYWNjZXB0ZWRfZXh0ZW5zaW9ucwogICAgICAgICAgICAgICAgIHNlbGYuX2xv
Z2dlci5kZWJ1ZygKQEAgLTI0Miw3ICsyNjcsNyBAQCBjbGFzcyBIYW5kc2hha2VyKG9iamVjdCk6
CiAgICAgICAgICAgICAgICAgICAgIHJhaXNlIEhhbmRzaGFrZUV4Y2VwdGlvbigKICAgICAgICAg
ICAgICAgICAgICAgICAgICdkb19leHRyYV9oYW5kc2hha2UgbXVzdCBjaG9vc2Ugb25lIHN1YnBy
b3RvY29sIGZyb20gJwogICAgICAgICAgICAgICAgICAgICAgICAgJ3dzX3JlcXVlc3RlZF9wcm90
b2NvbHMgYW5kIHNldCBpdCB0byB3c19wcm90b2NvbCcpCi0gICAgICAgICAgICAgICAgdmFsaWRh
dGVfc3VicHJvdG9jb2woc2VsZi5fcmVxdWVzdC53c19wcm90b2NvbCwgaGl4aWU9RmFsc2UpCisg
ICAgICAgICAgICAgICAgdmFsaWRhdGVfc3VicHJvdG9jb2woc2VsZi5fcmVxdWVzdC53c19wcm90
b2NvbCkKIAogICAgICAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygKICAgICAgICAgICAg
ICAgICAgICAgJ1N1YnByb3RvY29sIGFjY2VwdGVkOiAlcicsCkBAIC0zNzUsNiArNDAwLDcgQEAg
Y2xhc3MgSGFuZHNoYWtlcihvYmplY3QpOgogCiAgICAgICAgIHJlc3BvbnNlLmFwcGVuZCgnSFRU
UC8xLjEgMTAxIFN3aXRjaGluZyBQcm90b2NvbHNcclxuJykKIAorICAgICAgICAjIFdlYlNvY2tl
dCBoZWFkZXJzCiAgICAgICAgIHJlc3BvbnNlLmFwcGVuZChmb3JtYXRfaGVhZGVyKAogICAgICAg
ICAgICAgY29tbW9uLlVQR1JBREVfSEVBREVSLCBjb21tb24uV0VCU09DS0VUX1VQR1JBREVfVFlQ
RSkpCiAgICAgICAgIHJlc3BvbnNlLmFwcGVuZChmb3JtYXRfaGVhZGVyKApAQCAtMzkwLDYgKzQx
NiwxMSBAQCBjbGFzcyBIYW5kc2hha2VyKG9iamVjdCk6CiAgICAgICAgICAgICByZXNwb25zZS5h
cHBlbmQoZm9ybWF0X2hlYWRlcigKICAgICAgICAgICAgICAgICBjb21tb24uU0VDX1dFQlNPQ0tF
VF9FWFRFTlNJT05TX0hFQURFUiwKICAgICAgICAgICAgICAgICBjb21tb24uZm9ybWF0X2V4dGVu
c2lvbnMoc2VsZi5fcmVxdWVzdC53c19leHRlbnNpb25zKSkpCisKKyAgICAgICAgIyBIZWFkZXJz
IG5vdCBzcGVjaWZpYyBmb3IgV2ViU29ja2V0CisgICAgICAgIGZvciBuYW1lLCB2YWx1ZSBpbiBz
ZWxmLl9yZXF1ZXN0LmV4dHJhX2hlYWRlcnM6CisgICAgICAgICAgICByZXNwb25zZS5hcHBlbmQo
Zm9ybWF0X2hlYWRlcihuYW1lLCB2YWx1ZSkpCisKICAgICAgICAgcmVzcG9uc2UuYXBwZW5kKCdc
clxuJykKIAogICAgICAgICByZXR1cm4gJycuam9pbihyZXNwb25zZSkKZGlmZiAtLWdpdCBhL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvdGhpcmRwYXJ0eS9tb2RfcHl3ZWJzb2NrZXQvaGFuZHNoYWtl
L2h5YmkwMC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGhpcmRwYXJ0eS9tb2RfcHl3ZWJz
b2NrZXQvaGFuZHNoYWtlL2h5YmkwMC5weQppbmRleCBjYzZmOGRjNDM2ZDU5MmVhMWYwZWEzYzE2
NGQzNjFhNTc2ODVhNWRmLi44NzU3NzE3YTYzOWJhYzNkYjA1ZDRjYjMwMjdlMDU1ZmRiZjdmM2Nm
IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3RoaXJkcGFydHkvbW9kX3B5d2Vi
c29ja2V0L2hhbmRzaGFrZS9oeWJpMDAucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90
aGlyZHBhcnR5L21vZF9weXdlYnNvY2tldC9oYW5kc2hha2UvaHliaTAwLnB5CkBAIC01MSwxMSAr
NTEsMTIgQEAgZnJvbSBtb2RfcHl3ZWJzb2NrZXQgaW1wb3J0IGNvbW1vbgogZnJvbSBtb2RfcHl3
ZWJzb2NrZXQuc3RyZWFtIGltcG9ydCBTdHJlYW1IaXhpZTc1CiBmcm9tIG1vZF9weXdlYnNvY2tl
dCBpbXBvcnQgdXRpbAogZnJvbSBtb2RfcHl3ZWJzb2NrZXQuaGFuZHNoYWtlLl9iYXNlIGltcG9y
dCBIYW5kc2hha2VFeGNlcHRpb24KLWZyb20gbW9kX3B5d2Vic29ja2V0LmhhbmRzaGFrZS5fYmFz
ZSBpbXBvcnQgYnVpbGRfbG9jYXRpb24KLWZyb20gbW9kX3B5d2Vic29ja2V0LmhhbmRzaGFrZS5f
YmFzZSBpbXBvcnQgY2hlY2tfaGVhZGVyX2xpbmVzCitmcm9tIG1vZF9weXdlYnNvY2tldC5oYW5k
c2hha2UuX2Jhc2UgaW1wb3J0IGNoZWNrX3JlcXVlc3RfbGluZQogZnJvbSBtb2RfcHl3ZWJzb2Nr
ZXQuaGFuZHNoYWtlLl9iYXNlIGltcG9ydCBmb3JtYXRfaGVhZGVyCitmcm9tIG1vZF9weXdlYnNv
Y2tldC5oYW5kc2hha2UuX2Jhc2UgaW1wb3J0IGdldF9kZWZhdWx0X3BvcnQKIGZyb20gbW9kX3B5
d2Vic29ja2V0LmhhbmRzaGFrZS5fYmFzZSBpbXBvcnQgZ2V0X21hbmRhdG9yeV9oZWFkZXIKLWZy
b20gbW9kX3B5d2Vic29ja2V0LmhhbmRzaGFrZS5fYmFzZSBpbXBvcnQgdmFsaWRhdGVfc3VicHJv
dG9jb2wKK2Zyb20gbW9kX3B5d2Vic29ja2V0LmhhbmRzaGFrZS5fYmFzZSBpbXBvcnQgcGFyc2Vf
aG9zdF9oZWFkZXIKK2Zyb20gbW9kX3B5d2Vic29ja2V0LmhhbmRzaGFrZS5fYmFzZSBpbXBvcnQg
dmFsaWRhdGVfbWFuZGF0b3J5X2hlYWRlcgogCiAKIF9NQU5EQVRPUllfSEVBREVSUyA9IFsKQEAg
LTY1LDYgKzY2LDU2IEBAIF9NQU5EQVRPUllfSEVBREVSUyA9IFsKIF0KIAogCitkZWYgX3ZhbGlk
YXRlX3N1YnByb3RvY29sKHN1YnByb3RvY29sKToKKyAgICAiIiJDaGVja3MgaWYgY2hhcmFjdGVy
cyBpbiBzdWJwcm90b2NvbCBhcmUgaW4gcmFuZ2UgYmV0d2VlbiBVKzAwMjAgYW5kCisgICAgVSsw
MDdFLiBBIHZhbHVlIGluIHRoZSBTZWMtV2ViU29ja2V0LVByb3RvY29sIGZpZWxkIG5lZWQgdG8g
c2F0aXNmeSB0aGlzCisgICAgcmVxdWlyZW1lbnQuCisKKyAgICBTZWUgdGhlIFNlY3Rpb24gNC4x
LiBPcGVuaW5nIGhhbmRzaGFrZSBvZiB0aGUgc3BlYy4KKyAgICAiIiIKKworICAgIGlmIG5vdCBz
dWJwcm90b2NvbDoKKyAgICAgICAgcmFpc2UgSGFuZHNoYWtlRXhjZXB0aW9uKCdJbnZhbGlkIHN1
YnByb3RvY29sIG5hbWU6IGVtcHR5JykKKworICAgICMgUGFyYW1ldGVyIHNob3VsZCBiZSBpbiB0
aGUgcmFuZ2UgVSswMDIwIHRvIFUrMDA3RS4KKyAgICBmb3IgYyBpbiBzdWJwcm90b2NvbDoKKyAg
ICAgICAgaWYgbm90IDB4MjAgPD0gb3JkKGMpIDw9IDB4N2U6CisgICAgICAgICAgICByYWlzZSBI
YW5kc2hha2VFeGNlcHRpb24oCisgICAgICAgICAgICAgICAgJ0lsbGVnYWwgY2hhcmFjdGVyIGlu
IHN1YnByb3RvY29sIG5hbWU6ICVyJyAlIGMpCisKKworZGVmIF9jaGVja19oZWFkZXJfbGluZXMo
cmVxdWVzdCwgbWFuZGF0b3J5X2hlYWRlcnMpOgorICAgIGNoZWNrX3JlcXVlc3RfbGluZShyZXF1
ZXN0KQorCisgICAgIyBUaGUgZXhwZWN0ZWQgZmllbGQgbmFtZXMsIGFuZCB0aGUgbWVhbmluZyBv
ZiB0aGVpciBjb3JyZXNwb25kaW5nCisgICAgIyB2YWx1ZXMsIGFyZSBhcyBmb2xsb3dzLgorICAg
ICMgIHxVcGdyYWRlfCBhbmQgfENvbm5lY3Rpb258CisgICAgZm9yIGtleSwgZXhwZWN0ZWRfdmFs
dWUgaW4gbWFuZGF0b3J5X2hlYWRlcnM6CisgICAgICAgIHZhbGlkYXRlX21hbmRhdG9yeV9oZWFk
ZXIocmVxdWVzdCwga2V5LCBleHBlY3RlZF92YWx1ZSkKKworCitkZWYgX2J1aWxkX2xvY2F0aW9u
KHJlcXVlc3QpOgorICAgICIiIkJ1aWxkIFdlYlNvY2tldCBsb2NhdGlvbiBmb3IgcmVxdWVzdC4i
IiIKKworICAgIGxvY2F0aW9uX3BhcnRzID0gW10KKyAgICBpZiByZXF1ZXN0LmlzX2h0dHBzKCk6
CisgICAgICAgIGxvY2F0aW9uX3BhcnRzLmFwcGVuZChjb21tb24uV0VCX1NPQ0tFVF9TRUNVUkVf
U0NIRU1FKQorICAgIGVsc2U6CisgICAgICAgIGxvY2F0aW9uX3BhcnRzLmFwcGVuZChjb21tb24u
V0VCX1NPQ0tFVF9TQ0hFTUUpCisgICAgbG9jYXRpb25fcGFydHMuYXBwZW5kKCc6Ly8nKQorICAg
IGhvc3QsIHBvcnQgPSBwYXJzZV9ob3N0X2hlYWRlcihyZXF1ZXN0KQorICAgIGNvbm5lY3Rpb25f
cG9ydCA9IHJlcXVlc3QuY29ubmVjdGlvbi5sb2NhbF9hZGRyWzFdCisgICAgaWYgcG9ydCAhPSBj
b25uZWN0aW9uX3BvcnQ6CisgICAgICAgIHJhaXNlIEhhbmRzaGFrZUV4Y2VwdGlvbignSGVhZGVy
L2Nvbm5lY3Rpb24gcG9ydCBtaXNtYXRjaDogJWQvJWQnICUKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIChwb3J0LCBjb25uZWN0aW9uX3BvcnQpKQorICAgIGxvY2F0aW9uX3BhcnRz
LmFwcGVuZChob3N0KQorICAgIGlmIChwb3J0ICE9IGdldF9kZWZhdWx0X3BvcnQocmVxdWVzdC5p
c19odHRwcygpKSk6CisgICAgICAgIGxvY2F0aW9uX3BhcnRzLmFwcGVuZCgnOicpCisgICAgICAg
IGxvY2F0aW9uX3BhcnRzLmFwcGVuZChzdHIocG9ydCkpCisgICAgbG9jYXRpb25fcGFydHMuYXBw
ZW5kKHJlcXVlc3QudW5wYXJzZWRfdXJpKQorICAgIHJldHVybiAnJy5qb2luKGxvY2F0aW9uX3Bh
cnRzKQorCisKIGNsYXNzIEhhbmRzaGFrZXIob2JqZWN0KToKICAgICAiIiJPcGVuaW5nIGhhbmRz
aGFrZSBwcm9jZXNzb3IgZm9yIHRoZSBXZWJTb2NrZXQgcHJvdG9jb2wgdmVyc2lvbiBIeUJpIDAw
LgogICAgICIiIgpAQCAtMTAxLDcgKzE1Miw3IEBAIGNsYXNzIEhhbmRzaGFrZXIob2JqZWN0KToK
IAogICAgICAgICAjIDUuMSBSZWFkaW5nIHRoZSBjbGllbnQncyBvcGVuaW5nIGhhbmRzaGFrZS4K
ICAgICAgICAgIyBkaXNwYXRjaGVyIHNldHMgaXQgaW4gc2VsZi5fcmVxdWVzdC4KLSAgICAgICAg
Y2hlY2tfaGVhZGVyX2xpbmVzKHNlbGYuX3JlcXVlc3QsIF9NQU5EQVRPUllfSEVBREVSUykKKyAg
ICAgICAgX2NoZWNrX2hlYWRlcl9saW5lcyhzZWxmLl9yZXF1ZXN0LCBfTUFOREFUT1JZX0hFQURF
UlMpCiAgICAgICAgIHNlbGYuX3NldF9yZXNvdXJjZSgpCiAgICAgICAgIHNlbGYuX3NldF9zdWJw
cm90b2NvbCgpCiAgICAgICAgIHNlbGYuX3NldF9sb2NhdGlvbigpCkBAIC0xMjEsMTQgKzE3Miwx
NCBAQCBjbGFzcyBIYW5kc2hha2VyKG9iamVjdCk6CiAgICAgICAgIHN1YnByb3RvY29sID0gc2Vs
Zi5fcmVxdWVzdC5oZWFkZXJzX2luLmdldCgKICAgICAgICAgICAgIGNvbW1vbi5TRUNfV0VCU09D
S0VUX1BST1RPQ09MX0hFQURFUikKICAgICAgICAgaWYgc3VicHJvdG9jb2wgaXMgbm90IE5vbmU6
Ci0gICAgICAgICAgICB2YWxpZGF0ZV9zdWJwcm90b2NvbChzdWJwcm90b2NvbCwgaGl4aWU9VHJ1
ZSkKKyAgICAgICAgICAgIF92YWxpZGF0ZV9zdWJwcm90b2NvbChzdWJwcm90b2NvbCkKICAgICAg
ICAgc2VsZi5fcmVxdWVzdC53c19wcm90b2NvbCA9IHN1YnByb3RvY29sCiAKICAgICBkZWYgX3Nl
dF9sb2NhdGlvbihzZWxmKToKICAgICAgICAgIyB8SG9zdHwKICAgICAgICAgaG9zdCA9IHNlbGYu
X3JlcXVlc3QuaGVhZGVyc19pbi5nZXQoY29tbW9uLkhPU1RfSEVBREVSKQogICAgICAgICBpZiBo
b3N0IGlzIG5vdCBOb25lOgotICAgICAgICAgICAgc2VsZi5fcmVxdWVzdC53c19sb2NhdGlvbiA9
IGJ1aWxkX2xvY2F0aW9uKHNlbGYuX3JlcXVlc3QpCisgICAgICAgICAgICBzZWxmLl9yZXF1ZXN0
LndzX2xvY2F0aW9uID0gX2J1aWxkX2xvY2F0aW9uKHNlbGYuX3JlcXVlc3QpCiAgICAgICAgICMg
VE9ETyh1a2FpKTogY2hlY2sgaG9zdCBpcyB0aGlzIGhvc3QuCiAKICAgICBkZWYgX3NldF9vcmln
aW4oc2VsZik6CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3RoaXJkcGFydHkv
bW9kX3B5d2Vic29ja2V0L2hlYWRlcnBhcnNlcmhhbmRsZXIucHkgYi9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L3RoaXJkcGFydHkvbW9kX3B5d2Vic29ja2V0L2hlYWRlcnBhcnNlcmhhbmRsZXIucHkK
aW5kZXggMmNjNjJkZTA0ZDgzODU3MWNmYmYxYmUwODRmOTY2ZmMyOTI3YWMxMC4uYzI0NDQyMWNm
NzliY2RkNzM3ZGNiNTdmOWY0MzM2YmUwZTg0Y2E1NCAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS90aGlyZHBhcnR5L21vZF9weXdlYnNvY2tldC9oZWFkZXJwYXJzZXJoYW5kbGVy
LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGhpcmRwYXJ0eS9tb2RfcHl3ZWJzb2Nr
ZXQvaGVhZGVycGFyc2VyaGFuZGxlci5weQpAQCAtMTY3LDcgKzE2Nyw5IEBAIGRlZiBfY3JlYXRl
X2Rpc3BhdGNoZXIoKToKICAgICAgICAgaGFuZGxlcl9yb290LCBoYW5kbGVyX3NjYW4sIGFsbG93
X2hhbmRsZXJzX291dHNpZGVfcm9vdCkKIAogICAgIGZvciB3YXJuaW5nIGluIGRpc3BhdGNoZXIu
c291cmNlX3dhcm5pbmdzKCk6Ci0gICAgICAgIGFwYWNoZS5sb2dfZXJyb3IoJ21vZF9weXdlYnNv
Y2tldDogJXMnICUgd2FybmluZywgYXBhY2hlLkFQTE9HX1dBUk5JTkcpCisgICAgICAgIGFwYWNo
ZS5sb2dfZXJyb3IoCisgICAgICAgICAgICAnbW9kX3B5d2Vic29ja2V0OiBXYXJuaW5nIGluIHNv
dXJjZSBsb2FkaW5nOiAlcycgJSB3YXJuaW5nLAorICAgICAgICAgICAgYXBhY2hlLkFQTE9HX1dB
Uk5JTkcpCiAKICAgICByZXR1cm4gZGlzcGF0Y2hlcgogCkBAIC0xOTEsMTIgKzE5MywxNiBAQCBk
ZWYgaGVhZGVycGFyc2VyaGFuZGxlcihyZXF1ZXN0KToKICAgICAgICAgIyBGYWxsYmFjayB0byBk
ZWZhdWx0IGh0dHAgaGFuZGxlciBmb3IgcmVxdWVzdCBwYXRocyBmb3Igd2hpY2gKICAgICAgICAg
IyB3ZSBkb24ndCBoYXZlIHJlcXVlc3QgaGFuZGxlcnMuCiAgICAgICAgIGlmIG5vdCBfZGlzcGF0
Y2hlci5nZXRfaGFuZGxlcl9zdWl0ZShyZXF1ZXN0LnVyaSk6Ci0gICAgICAgICAgICByZXF1ZXN0
LmxvZ19lcnJvcignTm8gaGFuZGxlciBmb3IgcmVzb3VyY2U6ICVyJyAlIHJlcXVlc3QudXJpLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBhY2hlLkFQTE9HX0lORk8pCi0gICAgICAg
ICAgICByZXF1ZXN0LmxvZ19lcnJvcignRmFsbGJhY2sgdG8gQXBhY2hlJywgYXBhY2hlLkFQTE9H
X0lORk8pCisgICAgICAgICAgICByZXF1ZXN0LmxvZ19lcnJvcigKKyAgICAgICAgICAgICAgICAn
bW9kX3B5d2Vic29ja2V0OiBObyBoYW5kbGVyIGZvciByZXNvdXJjZTogJXInICUgcmVxdWVzdC51
cmksCisgICAgICAgICAgICAgICAgYXBhY2hlLkFQTE9HX0lORk8pCisgICAgICAgICAgICByZXF1
ZXN0LmxvZ19lcnJvcigKKyAgICAgICAgICAgICAgICAnbW9kX3B5d2Vic29ja2V0OiBGYWxsYmFj
ayB0byBBcGFjaGUnLCBhcGFjaGUuQVBMT0dfSU5GTykKICAgICAgICAgICAgIHJldHVybiBhcGFj
aGUuREVDTElORUQKICAgICBleGNlcHQgZGlzcGF0Y2guRGlzcGF0Y2hFeGNlcHRpb24sIGU6Ci0g
ICAgICAgIHJlcXVlc3QubG9nX2Vycm9yKCdtb2RfcHl3ZWJzb2NrZXQ6ICVzJyAlIGUsIGFwYWNo
ZS5BUExPR19JTkZPKQorICAgICAgICByZXF1ZXN0LmxvZ19lcnJvcigKKyAgICAgICAgICAgICdt
b2RfcHl3ZWJzb2NrZXQ6IERpc3BhdGNoIGZhaWxlZCBmb3IgZXJyb3I6ICVzJyAlIGUsCisgICAg
ICAgICAgICBhcGFjaGUuQVBMT0dfSU5GTykKICAgICAgICAgaWYgbm90IGhhbmRzaGFrZV9pc19k
b25lOgogICAgICAgICAgICAgcmV0dXJuIGUuc3RhdHVzCiAKQEAgLTIxMCwyNiArMjE2LDMwIEBA
IGRlZiBoZWFkZXJwYXJzZXJoYW5kbGVyKHJlcXVlc3QpOgogICAgICAgICAgICAgaGFuZHNoYWtl
LmRvX2hhbmRzaGFrZSgKICAgICAgICAgICAgICAgICByZXF1ZXN0LCBfZGlzcGF0Y2hlciwgYWxs
b3dEcmFmdDc1PWFsbG93X2RyYWZ0NzUpCiAgICAgICAgIGV4Y2VwdCBoYW5kc2hha2UuVmVyc2lv
bkV4Y2VwdGlvbiwgZToKLSAgICAgICAgICAgIHJlcXVlc3QubG9nX2Vycm9yKCdtb2RfcHl3ZWJz
b2NrZXQ6ICVzJyAlIGUsIGFwYWNoZS5BUExPR19JTkZPKQorICAgICAgICAgICAgcmVxdWVzdC5s
b2dfZXJyb3IoCisgICAgICAgICAgICAgICAgJ21vZF9weXdlYnNvY2tldDogSGFuZHNoYWtlIGZh
aWxlZCBmb3IgdmVyc2lvbiBlcnJvcjogJXMnICUgZSwKKyAgICAgICAgICAgICAgICBhcGFjaGUu
QVBMT0dfSU5GTykKICAgICAgICAgICAgIHJlcXVlc3QuZXJyX2hlYWRlcnNfb3V0LmFkZChjb21t
b24uU0VDX1dFQlNPQ0tFVF9WRVJTSU9OX0hFQURFUiwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBlLnN1cHBvcnRlZF92ZXJzaW9ucykKICAgICAgICAgICAgIHJldHVy
biBhcGFjaGUuSFRUUF9CQURfUkVRVUVTVAogICAgICAgICBleGNlcHQgaGFuZHNoYWtlLkhhbmRz
aGFrZUV4Y2VwdGlvbiwgZToKICAgICAgICAgICAgICMgSGFuZHNoYWtlIGZvciB3cy93c3MgZmFp
bGVkLgogICAgICAgICAgICAgIyBTZW5kIGh0dHAgcmVzcG9uc2Ugd2l0aCBlcnJvciBzdGF0dXMu
Ci0gICAgICAgICAgICByZXF1ZXN0LmxvZ19lcnJvcignbW9kX3B5d2Vic29ja2V0OiAlcycgJSBl
LCBhcGFjaGUuQVBMT0dfSU5GTykKKyAgICAgICAgICAgIHJlcXVlc3QubG9nX2Vycm9yKAorICAg
ICAgICAgICAgICAgICdtb2RfcHl3ZWJzb2NrZXQ6IEhhbmRzaGFrZSBmYWlsZWQgZm9yIGVycm9y
OiAlcycgJSBlLAorICAgICAgICAgICAgICAgIGFwYWNoZS5BUExPR19JTkZPKQogICAgICAgICAg
ICAgcmV0dXJuIGUuc3RhdHVzCiAKICAgICAgICAgaGFuZHNoYWtlX2lzX2RvbmUgPSBUcnVlCiAg
ICAgICAgIHJlcXVlc3QuX2Rpc3BhdGNoZXIgPSBfZGlzcGF0Y2hlcgogICAgICAgICBfZGlzcGF0
Y2hlci50cmFuc2Zlcl9kYXRhKHJlcXVlc3QpCiAgICAgZXhjZXB0IGhhbmRzaGFrZS5BYm9ydGVk
QnlVc2VyRXhjZXB0aW9uLCBlOgotICAgICAgICByZXF1ZXN0LmxvZ19lcnJvcignbW9kX3B5d2Vi
c29ja2V0OiAlcycgJSBlLCBhcGFjaGUuQVBMT0dfSU5GTykKKyAgICAgICAgcmVxdWVzdC5sb2df
ZXJyb3IoJ21vZF9weXdlYnNvY2tldDogQWJvcnRlZDogJXMnICUgZSwgYXBhY2hlLkFQTE9HX0lO
Rk8pCiAgICAgZXhjZXB0IEV4Y2VwdGlvbiwgZToKICAgICAgICAgIyBEaXNwYXRjaEV4Y2VwdGlv
biBjYW4gYWxzbyBiZSB0aHJvd24gaWYgc29tZXRoaW5nIGlzIHdyb25nIGluCiAgICAgICAgICMg
cHl3ZWJzb2NrZXQgY29kZS4gSXQncyBjYXVnaHQgaGVyZSwgdGhlbi4KIAotICAgICAgICByZXF1
ZXN0LmxvZ19lcnJvcignbW9kX3B5d2Vic29ja2V0OiAlc1xuJXMnICUKKyAgICAgICAgcmVxdWVz
dC5sb2dfZXJyb3IoJ21vZF9weXdlYnNvY2tldDogRXhjZXB0aW9uIG9jY3VycmVkOiAlc1xuJXMn
ICUKICAgICAgICAgICAgICAgICAgICAgICAgICAgKGUsIHV0aWwuZ2V0X3N0YWNrX3RyYWNlKCkp
LAogICAgICAgICAgICAgICAgICAgICAgICAgICBhcGFjaGUuQVBMT0dfRVJSKQogICAgICAgICAj
IFVua25vd24gZXhjZXB0aW9ucyBiZWZvcmUgaGFuZHNoYWtlIG1lYW4gQXBhY2hlIG11c3QgaGFu
ZGxlIGl0cwpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90aGlyZHBhcnR5L21v
ZF9weXdlYnNvY2tldC9tdXgucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3RoaXJkcGFydHkv
bW9kX3B5d2Vic29ja2V0L211eC5weQppbmRleCBmMGJkZDI0NjE5YzFiZjE1ZjhkMThhZWJmMzVm
YTk0YjdkYjlkMTZkLi43NjMzNDY4NWIzMTEyMjVlMzg3M2I5YjgyOGVkMDMxYTdlOTA3ODAyIDEw
MDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3RoaXJkcGFydHkvbW9kX3B5d2Vic29j
a2V0L211eC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3RoaXJkcGFydHkvbW9kX3B5
d2Vic29ja2V0L211eC5weQpAQCAtNTAsNiArNTAsNyBAQCBmcm9tIG1vZF9weXdlYnNvY2tldCBp
bXBvcnQgaGFuZHNoYWtlCiBmcm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQgdXRpbAogZnJvbSBt
b2RfcHl3ZWJzb2NrZXQuX3N0cmVhbV9iYXNlIGltcG9ydCBCYWRPcGVyYXRpb25FeGNlcHRpb24K
IGZyb20gbW9kX3B5d2Vic29ja2V0Ll9zdHJlYW1fYmFzZSBpbXBvcnQgQ29ubmVjdGlvblRlcm1p
bmF0ZWRFeGNlcHRpb24KK2Zyb20gbW9kX3B5d2Vic29ja2V0Ll9zdHJlYW1fYmFzZSBpbXBvcnQg
SW52YWxpZEZyYW1lRXhjZXB0aW9uCiBmcm9tIG1vZF9weXdlYnNvY2tldC5fc3RyZWFtX2h5Ymkg
aW1wb3J0IEZyYW1lCiBmcm9tIG1vZF9weXdlYnNvY2tldC5fc3RyZWFtX2h5YmkgaW1wb3J0IFN0
cmVhbQogZnJvbSBtb2RfcHl3ZWJzb2NrZXQuX3N0cmVhbV9oeWJpIGltcG9ydCBTdHJlYW1PcHRp
b25zCkBAIC05NCwxMCArOTUsMTIgQEAgX0RST1BfQ09ERV9VTktOT1dOX01VWF9PUENPREUgPSAy
MDA0CiBfRFJPUF9DT0RFX0lOVkFMSURfTVVYX0NPTlRST0xfQkxPQ0sgPSAyMDA1CiBfRFJPUF9D
T0RFX0NIQU5ORUxfQUxSRUFEWV9FWElTVFMgPSAyMDA2CiBfRFJPUF9DT0RFX05FV19DSEFOTkVM
X1NMT1RfVklPTEFUSU9OID0gMjAwNworX0RST1BfQ09ERV9VTktOT1dOX1JFUVVFU1RfRU5DT0RJ
TkcgPSAyMDEwCiAKLV9EUk9QX0NPREVfVU5LTk9XTl9SRVFVRVNUX0VOQ09ESU5HID0gMzAwMgog
X0RST1BfQ09ERV9TRU5EX1FVT1RBX1ZJT0xBVElPTiA9IDMwMDUKK19EUk9QX0NPREVfU0VORF9R
VU9UQV9PVkVSRkxPVyA9IDMwMDYKIF9EUk9QX0NPREVfQUNLTk9XTEVER0VEID0gMzAwOAorX0RS
T1BfQ09ERV9CQURfRlJBR01FTlRBVElPTiA9IDMwMDkKIAogCiBjbGFzcyBNdXhVbmV4cGVjdGVk
RXhjZXB0aW9uKEV4Y2VwdGlvbik6CkBAIC0xNTgsOCArMTYxLDcgQEAgZGVmIF9lbmNvZGVfbnVt
YmVyKG51bWJlcik6CiAKIAogZGVmIF9jcmVhdGVfYWRkX2NoYW5uZWxfcmVzcG9uc2UoY2hhbm5l
bF9pZCwgZW5jb2RlZF9oYW5kc2hha2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBlbmNvZGluZz0wLCByZWplY3RlZD1GYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG91dGVyX2ZyYW1lX21hc2s9RmFsc2UpOgorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZW5jb2Rpbmc9MCwgcmVqZWN0ZWQ9RmFsc2UpOgogICAgIGlmIGVuY29kaW5nICE9
IDAgYW5kIGVuY29kaW5nICE9IDE6CiAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ0ludmFsaWQg
ZW5jb2RpbmcgJWQnICUgZW5jb2RpbmcpCiAKQEAgLTE2OSwxMiArMTcxLDEwIEBAIGRlZiBfY3Jl
YXRlX2FkZF9jaGFubmVsX3Jlc3BvbnNlKGNoYW5uZWxfaWQsIGVuY29kZWRfaGFuZHNoYWtlLAog
ICAgICAgICAgICAgIF9lbmNvZGVfY2hhbm5lbF9pZChjaGFubmVsX2lkKSArCiAgICAgICAgICAg
ICAgX2VuY29kZV9udW1iZXIobGVuKGVuY29kZWRfaGFuZHNoYWtlKSkgKwogICAgICAgICAgICAg
IGVuY29kZWRfaGFuZHNoYWtlKQotICAgIHBheWxvYWQgPSBfZW5jb2RlX2NoYW5uZWxfaWQoX0NP
TlRST0xfQ0hBTk5FTF9JRCkgKyBibG9jawotICAgIHJldHVybiBjcmVhdGVfYmluYXJ5X2ZyYW1l
KHBheWxvYWQsIG1hc2s9b3V0ZXJfZnJhbWVfbWFzaykKKyAgICByZXR1cm4gYmxvY2sKIAogCi1k
ZWYgX2NyZWF0ZV9kcm9wX2NoYW5uZWwoY2hhbm5lbF9pZCwgY29kZT1Ob25lLCBtZXNzYWdlPScn
LAotICAgICAgICAgICAgICAgICAgICAgICAgIG91dGVyX2ZyYW1lX21hc2s9RmFsc2UpOgorZGVm
IF9jcmVhdGVfZHJvcF9jaGFubmVsKGNoYW5uZWxfaWQsIGNvZGU9Tm9uZSwgbWVzc2FnZT0nJyk6
CiAgICAgaWYgbGVuKG1lc3NhZ2UpID4gMCBhbmQgY29kZSBpcyBOb25lOgogICAgICAgICByYWlz
ZSBWYWx1ZUVycm9yKCdDb2RlIG11c3QgYmUgc3BlY2lmaWVkIGlmIG1lc3NhZ2UgaXMgc3BlY2lm
aWVkJykKIApAQCAtMTg3LDM2ICsxODcsMzEgQEAgZGVmIF9jcmVhdGVfZHJvcF9jaGFubmVsKGNo
YW5uZWxfaWQsIGNvZGU9Tm9uZSwgbWVzc2FnZT0nJywKICAgICAgICAgcmVhc29uX3NpemUgPSBf
ZW5jb2RlX251bWJlcihsZW4ocmVhc29uKSkKICAgICAgICAgYmxvY2sgKz0gcmVhc29uX3NpemUg
KyByZWFzb24KIAotICAgIHBheWxvYWQgPSBfZW5jb2RlX2NoYW5uZWxfaWQoX0NPTlRST0xfQ0hB
Tk5FTF9JRCkgKyBibG9jawotICAgIHJldHVybiBjcmVhdGVfYmluYXJ5X2ZyYW1lKHBheWxvYWQs
IG1hc2s9b3V0ZXJfZnJhbWVfbWFzaykKKyAgICByZXR1cm4gYmxvY2sKIAogCi1kZWYgX2NyZWF0
ZV9mbG93X2NvbnRyb2woY2hhbm5lbF9pZCwgcmVwbGVuaXNoZWRfcXVvdGEsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgb3V0ZXJfZnJhbWVfbWFzaz1GYWxzZSk6CitkZWYgX2NyZWF0ZV9mbG93
X2NvbnRyb2woY2hhbm5lbF9pZCwgcmVwbGVuaXNoZWRfcXVvdGEpOgogICAgIGZpcnN0X2J5dGUg
PSBfTVVYX09QQ09ERV9GTE9XX0NPTlRST0wgPDwgNQogICAgIGJsb2NrID0gKGNocihmaXJzdF9i
eXRlKSArCiAgICAgICAgICAgICAgX2VuY29kZV9jaGFubmVsX2lkKGNoYW5uZWxfaWQpICsKICAg
ICAgICAgICAgICBfZW5jb2RlX251bWJlcihyZXBsZW5pc2hlZF9xdW90YSkpCi0gICAgcGF5bG9h
ZCA9IF9lbmNvZGVfY2hhbm5lbF9pZChfQ09OVFJPTF9DSEFOTkVMX0lEKSArIGJsb2NrCi0gICAg
cmV0dXJuIGNyZWF0ZV9iaW5hcnlfZnJhbWUocGF5bG9hZCwgbWFzaz1vdXRlcl9mcmFtZV9tYXNr
KQorICAgIHJldHVybiBibG9jawogCiAKLWRlZiBfY3JlYXRlX25ld19jaGFubmVsX3Nsb3Qoc2xv
dHMsIHNlbmRfcXVvdGEsIG91dGVyX2ZyYW1lX21hc2s9RmFsc2UpOgorZGVmIF9jcmVhdGVfbmV3
X2NoYW5uZWxfc2xvdChzbG90cywgc2VuZF9xdW90YSk6CiAgICAgaWYgc2xvdHMgPCAwIG9yIHNl
bmRfcXVvdGEgPCAwOgogICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdzbG90cyBhbmQgc2VuZF9x
dW90YSBtdXN0IGJlIG5vbi1uZWdhdGl2ZS4nKQogICAgIGZpcnN0X2J5dGUgPSBfTVVYX09QQ09E
RV9ORVdfQ0hBTk5FTF9TTE9UIDw8IDUKICAgICBibG9jayA9IChjaHIoZmlyc3RfYnl0ZSkgKwog
ICAgICAgICAgICAgIF9lbmNvZGVfbnVtYmVyKHNsb3RzKSArCiAgICAgICAgICAgICAgX2VuY29k
ZV9udW1iZXIoc2VuZF9xdW90YSkpCi0gICAgcGF5bG9hZCA9IF9lbmNvZGVfY2hhbm5lbF9pZChf
Q09OVFJPTF9DSEFOTkVMX0lEKSArIGJsb2NrCi0gICAgcmV0dXJuIGNyZWF0ZV9iaW5hcnlfZnJh
bWUocGF5bG9hZCwgbWFzaz1vdXRlcl9mcmFtZV9tYXNrKQorICAgIHJldHVybiBibG9jawogCiAK
LWRlZiBfY3JlYXRlX2ZhbGxiYWNrX25ld19jaGFubmVsX3Nsb3Qob3V0ZXJfZnJhbWVfbWFzaz1G
YWxzZSk6CitkZWYgX2NyZWF0ZV9mYWxsYmFja19uZXdfY2hhbm5lbF9zbG90KCk6CiAgICAgZmly
c3RfYnl0ZSA9IChfTVVYX09QQ09ERV9ORVdfQ0hBTk5FTF9TTE9UIDw8IDUpIHwgMSAjIFNldCB0
aGUgRiBmbGFnCiAgICAgYmxvY2sgPSAoY2hyKGZpcnN0X2J5dGUpICsgX2VuY29kZV9udW1iZXIo
MCkgKyBfZW5jb2RlX251bWJlcigwKSkKLSAgICBwYXlsb2FkID0gX2VuY29kZV9jaGFubmVsX2lk
KF9DT05UUk9MX0NIQU5ORUxfSUQpICsgYmxvY2sKLSAgICByZXR1cm4gY3JlYXRlX2JpbmFyeV9m
cmFtZShwYXlsb2FkLCBtYXNrPW91dGVyX2ZyYW1lX21hc2spCisgICAgcmV0dXJuIGJsb2NrCiAK
IAogZGVmIF9wYXJzZV9yZXF1ZXN0X3RleHQocmVxdWVzdF90ZXh0KToKQEAgLTMxOCw0NCArMzEz
LDM0IEBAIGNsYXNzIF9NdXhGcmFtZVBheWxvYWRQYXJzZXIob2JqZWN0KToKIAogICAgIGRlZiBf
cmVhZF9udW1iZXIoc2VsZik6CiAgICAgICAgIGlmIHNlbGYuX3JlYWRfcG9zaXRpb24gKyAxID4g
bGVuKHNlbGYuX2RhdGEpOgotICAgICAgICAgICAgcmFpc2UgUGh5c2ljYWxDb25uZWN0aW9uRXJy
b3IoCi0gICAgICAgICAgICAgICAgX0RST1BfQ09ERV9JTlZBTElEX01VWF9DT05UUk9MX0JMT0NL
LAorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigKICAgICAgICAgICAgICAgICAnQ2Fubm90
IHJlYWQgdGhlIGZpcnN0IGJ5dGUgb2YgbnVtYmVyIGZpZWxkJykKIAogICAgICAgICBudW1iZXIg
PSBvcmQoc2VsZi5fZGF0YVtzZWxmLl9yZWFkX3Bvc2l0aW9uXSkKICAgICAgICAgaWYgbnVtYmVy
ICYgMHg4MCA9PSAweDgwOgotICAgICAgICAgICAgcmFpc2UgUGh5c2ljYWxDb25uZWN0aW9uRXJy
b3IoCi0gICAgICAgICAgICAgICAgX0RST1BfQ09ERV9JTlZBTElEX01VWF9DT05UUk9MX0JMT0NL
LAorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigKICAgICAgICAgICAgICAgICAnVGhlIG1v
c3Qgc2lnbmlmaWNhbnQgYml0IG9mIHRoZSBmaXJzdCBieXRlIG9mIG51bWJlciBzaG91bGQgJwog
ICAgICAgICAgICAgICAgICdiZSB1bnNldCcpCiAgICAgICAgIHNlbGYuX3JlYWRfcG9zaXRpb24g
Kz0gMQogICAgICAgICBwb3MgPSBzZWxmLl9yZWFkX3Bvc2l0aW9uCiAgICAgICAgIGlmIG51bWJl
ciA9PSAxMjc6CiAgICAgICAgICAgICBpZiBwb3MgKyA4ID4gbGVuKHNlbGYuX2RhdGEpOgotICAg
ICAgICAgICAgICAgIHJhaXNlIFBoeXNpY2FsQ29ubmVjdGlvbkVycm9yKAotICAgICAgICAgICAg
ICAgICAgICBfRFJPUF9DT0RFX0lOVkFMSURfTVVYX0NPTlRST0xfQkxPQ0ssCi0gICAgICAgICAg
ICAgICAgICAgICdJbnZhbGlkIG51bWJlciBmaWVsZCcpCisgICAgICAgICAgICAgICAgcmFpc2Ug
VmFsdWVFcnJvcignSW52YWxpZCBudW1iZXIgZmllbGQnKQogICAgICAgICAgICAgc2VsZi5fcmVh
ZF9wb3NpdGlvbiArPSA4CiAgICAgICAgICAgICBudW1iZXIgPSBzdHJ1Y3QudW5wYWNrKCchUScs
IHNlbGYuX2RhdGFbcG9zOnBvcys4XSlbMF0KICAgICAgICAgICAgIGlmIG51bWJlciA+IDB4N0ZG
RkZGRkZGRkZGRkZGRjoKLSAgICAgICAgICAgICAgICByYWlzZSBQaHlzaWNhbENvbm5lY3Rpb25F
cnJvcigKLSAgICAgICAgICAgICAgICAgICAgX0RST1BfQ09ERV9JTlZBTElEX01VWF9DT05UUk9M
X0JMT0NLLAotICAgICAgICAgICAgICAgICAgICAnRW5jb2RlZCBudW1iZXIgPj0gMl42MycpCisg
ICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignRW5jb2RlZCBudW1iZXIoJWQpID49IDJe
NjMnICUgbnVtYmVyKQogICAgICAgICAgICAgaWYgbnVtYmVyIDw9IDB4RkZGRjoKLSAgICAgICAg
ICAgICAgICByYWlzZSBQaHlzaWNhbENvbm5lY3Rpb25FcnJvcigKLSAgICAgICAgICAgICAgICAg
ICAgX0RST1BfQ09ERV9JTlZBTElEX01VWF9DT05UUk9MX0JMT0NLLAorICAgICAgICAgICAgICAg
IHJhaXNlIFZhbHVlRXJyb3IoCiAgICAgICAgICAgICAgICAgICAgICclZCBzaG91bGQgbm90IGJl
IGVuY29kZWQgYnkgOSBieXRlcyBlbmNvZGluZycgJSBudW1iZXIpCiAgICAgICAgICAgICByZXR1
cm4gbnVtYmVyCiAgICAgICAgIGlmIG51bWJlciA9PSAxMjY6CiAgICAgICAgICAgICBpZiBwb3Mg
KyAyID4gbGVuKHNlbGYuX2RhdGEpOgotICAgICAgICAgICAgICAgIHJhaXNlIFBoeXNpY2FsQ29u
bmVjdGlvbkVycm9yKAotICAgICAgICAgICAgICAgICAgICBfRFJPUF9DT0RFX0lOVkFMSURfTVVY
X0NPTlRST0xfQkxPQ0ssCi0gICAgICAgICAgICAgICAgICAgICdJbnZhbGlkIG51bWJlciBmaWVs
ZCcpCisgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignSW52YWxpZCBudW1iZXIgZmll
bGQnKQogICAgICAgICAgICAgc2VsZi5fcmVhZF9wb3NpdGlvbiArPSAyCiAgICAgICAgICAgICBu
dW1iZXIgPSBzdHJ1Y3QudW5wYWNrKCchSCcsIHNlbGYuX2RhdGFbcG9zOnBvcysyXSlbMF0KICAg
ICAgICAgICAgIGlmIG51bWJlciA8PSAxMjU6Ci0gICAgICAgICAgICAgICAgcmFpc2UgUGh5c2lj
YWxDb25uZWN0aW9uRXJyb3IoCi0gICAgICAgICAgICAgICAgICAgIF9EUk9QX0NPREVfSU5WQUxJ
RF9NVVhfQ09OVFJPTF9CTE9DSywKKyAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKAog
ICAgICAgICAgICAgICAgICAgICAnJWQgc2hvdWxkIG5vdCBiZSBlbmNvZGVkIGJ5IDMgYnl0ZXMg
ZW5jb2RpbmcnICUgbnVtYmVyKQogICAgICAgICByZXR1cm4gbnVtYmVyCiAKQEAgLTM2Niw3ICsz
NTEsMTEgQEAgY2xhc3MgX011eEZyYW1lUGF5bG9hZFBhcnNlcihvYmplY3QpOgogICAgICAgICAg
ICAgLSB0aGUgY29udGVudHMuCiAgICAgICAgICIiIgogCi0gICAgICAgIHNpemUgPSBzZWxmLl9y
ZWFkX251bWJlcigpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNpemUgPSBzZWxmLl9yZWFk
X251bWJlcigpCisgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yLCBlOgorICAgICAgICAgICAgcmFp
c2UgUGh5c2ljYWxDb25uZWN0aW9uRXJyb3IoX0RST1BfQ09ERV9JTlZBTElEX01VWF9DT05UUk9M
X0JMT0NLLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyKGUp
KQogICAgICAgICBwb3MgPSBzZWxmLl9yZWFkX3Bvc2l0aW9uCiAgICAgICAgIGlmIHBvcyArIHNp
emUgPiBsZW4oc2VsZi5fZGF0YSk6CiAgICAgICAgICAgICByYWlzZSBQaHlzaWNhbENvbm5lY3Rp
b25FcnJvcigKQEAgLTQxOSw5ICs0MDgsMTEgQEAgY2xhc3MgX011eEZyYW1lUGF5bG9hZFBhcnNl
cihvYmplY3QpOgogCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIGNvbnRyb2xfYmxvY2suY2hh
bm5lbF9pZCA9IHNlbGYucmVhZF9jaGFubmVsX2lkKCkKKyAgICAgICAgICAgIGNvbnRyb2xfYmxv
Y2suc2VuZF9xdW90YSA9IHNlbGYuX3JlYWRfbnVtYmVyKCkKICAgICAgICAgZXhjZXB0IFZhbHVl
RXJyb3IsIGU6Ci0gICAgICAgICAgICByYWlzZSBQaHlzaWNhbENvbm5lY3Rpb25FcnJvcihfRFJP
UF9DT0RFX0lOVkFMSURfTVVYX0NPTlRST0xfQkxPQ0spCi0gICAgICAgIGNvbnRyb2xfYmxvY2su
c2VuZF9xdW90YSA9IHNlbGYuX3JlYWRfbnVtYmVyKCkKKyAgICAgICAgICAgIHJhaXNlIFBoeXNp
Y2FsQ29ubmVjdGlvbkVycm9yKF9EUk9QX0NPREVfSU5WQUxJRF9NVVhfQ09OVFJPTF9CTE9DSywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cihlKSkKKwogICAg
ICAgICByZXR1cm4gY29udHJvbF9ibG9jawogCiAgICAgZGVmIF9yZWFkX2Ryb3BfY2hhbm5lbChz
ZWxmLCBmaXJzdF9ieXRlLCBjb250cm9sX2Jsb2NrKToKQEAgLTQ1NSw4ICs0NDYsMTIgQEAgY2xh
c3MgX011eEZyYW1lUGF5bG9hZFBhcnNlcihvYmplY3QpOgogICAgICAgICAgICAgICAgIF9EUk9Q
X0NPREVfSU5WQUxJRF9NVVhfQ09OVFJPTF9CTE9DSywKICAgICAgICAgICAgICAgICAnUmVzZXJ2
ZWQgYml0cyBtdXN0IGJlIHVuc2V0JykKICAgICAgICAgY29udHJvbF9ibG9jay5mYWxsYmFjayA9
IGZpcnN0X2J5dGUgJiAxCi0gICAgICAgIGNvbnRyb2xfYmxvY2suc2xvdHMgPSBzZWxmLl9yZWFk
X251bWJlcigpCi0gICAgICAgIGNvbnRyb2xfYmxvY2suc2VuZF9xdW90YSA9IHNlbGYuX3JlYWRf
bnVtYmVyKCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgY29udHJvbF9ibG9jay5zbG90cyA9
IHNlbGYuX3JlYWRfbnVtYmVyKCkKKyAgICAgICAgICAgIGNvbnRyb2xfYmxvY2suc2VuZF9xdW90
YSA9IHNlbGYuX3JlYWRfbnVtYmVyKCkKKyAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3IsIGU6Cisg
ICAgICAgICAgICByYWlzZSBQaHlzaWNhbENvbm5lY3Rpb25FcnJvcihfRFJPUF9DT0RFX0lOVkFM
SURfTVVYX0NPTlRST0xfQkxPQ0ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzdHIoZSkpCiAgICAgICAgIHJldHVybiBjb250cm9sX2Jsb2NrCiAKICAgICBkZWYg
cmVhZF9jb250cm9sX2Jsb2NrcyhzZWxmKToKQEAgLTU0OSw4ICs1NDQsMTIgQEAgY2xhc3MgX0xv
Z2ljYWxDb25uZWN0aW9uKG9iamVjdCk6CiAgICAgICAgIHNlbGYuX211eF9oYW5kbGVyID0gbXV4
X2hhbmRsZXIKICAgICAgICAgc2VsZi5fY2hhbm5lbF9pZCA9IGNoYW5uZWxfaWQKICAgICAgICAg
c2VsZi5faW5jb21pbmdfZGF0YSA9ICcnCisKKyAgICAgICAgIyAtIFByb3RlY3RzIF93YWl0aW5n
X3dyaXRlX2NvbXBsZXRpb24KKyAgICAgICAgIyAtIFNpZ25hbHMgdGhlIHRocmVhZCB3YWl0aW5n
IGZvciBjb21wbGV0aW9uIG9mIHdyaXRlIGJ5IG11eCBoYW5kbGVyCiAgICAgICAgIHNlbGYuX3dy
aXRlX2NvbmRpdGlvbiA9IHRocmVhZGluZy5Db25kaXRpb24oKQogICAgICAgICBzZWxmLl93YWl0
aW5nX3dyaXRlX2NvbXBsZXRpb24gPSBGYWxzZQorCiAgICAgICAgIHNlbGYuX3JlYWRfY29uZGl0
aW9uID0gdGhyZWFkaW5nLkNvbmRpdGlvbigpCiAgICAgICAgIHNlbGYuX3JlYWRfc3RhdGUgPSBz
ZWxmLlNUQVRFX0FDVElWRQogCkBAIC01OTQsNiArNTkzLDcgQEAgY2xhc3MgX0xvZ2ljYWxDb25u
ZWN0aW9uKG9iamVjdCk6CiAgICAgICAgICAgICBzZWxmLl93YWl0aW5nX3dyaXRlX2NvbXBsZXRp
b24gPSBUcnVlCiAgICAgICAgICAgICBzZWxmLl9tdXhfaGFuZGxlci5zZW5kX2RhdGEoc2VsZi5f
Y2hhbm5lbF9pZCwgZGF0YSkKICAgICAgICAgICAgIHNlbGYuX3dyaXRlX2NvbmRpdGlvbi53YWl0
KCkKKyAgICAgICAgICAgICMgVE9ETyh0eW9zaGlubyk6IFJhaXNlIGFuIGV4Y2VwdGlvbiBpZiB3
b2tlIHVwIGJ5IG9uX3dyaXRlcl9kb25lLgogICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAg
c2VsZi5fd3JpdGVfY29uZGl0aW9uLnJlbGVhc2UoKQogCkBAIC02MDcsMjAgKzYwNywzMSBAQCBj
bGFzcyBfTG9naWNhbENvbm5lY3Rpb24ob2JqZWN0KToKIAogICAgICAgICBzZWxmLl9tdXhfaGFu
ZGxlci5zZW5kX2NvbnRyb2xfZGF0YShkYXRhKQogCi0gICAgZGVmIG5vdGlmeV93cml0ZV9kb25l
KHNlbGYpOgorICAgIGRlZiBvbl93cml0ZV9kYXRhX2RvbmUoc2VsZik6CiAgICAgICAgICIiIkNh
bGxlZCB3aGVuIHNlbmRpbmcgZGF0YSBpcyBjb21wbGV0ZWQuIiIiCiAKICAgICAgICAgdHJ5Ogog
ICAgICAgICAgICAgc2VsZi5fd3JpdGVfY29uZGl0aW9uLmFjcXVpcmUoKQogICAgICAgICAgICAg
aWYgbm90IHNlbGYuX3dhaXRpbmdfd3JpdGVfY29tcGxldGlvbjoKICAgICAgICAgICAgICAgICBy
YWlzZSBNdXhVbmV4cGVjdGVkRXhjZXB0aW9uKAotICAgICAgICAgICAgICAgICAgICAnSW52YWxp
ZCBjYWxsIG9mIG5vdGlmeV93cml0ZV9kb25lIGZvciBsb2dpY2FsIGNvbm5lY3Rpb24nCi0gICAg
ICAgICAgICAgICAgICAgICcgJWQnICUgc2VsZi5fY2hhbm5lbF9pZCkKKyAgICAgICAgICAgICAg
ICAgICAgJ0ludmFsaWQgY2FsbCBvZiBvbl93cml0ZV9kYXRhX2RvbmUgZm9yIGxvZ2ljYWwgJwor
ICAgICAgICAgICAgICAgICAgICAnY29ubmVjdGlvbiAlZCcgJSBzZWxmLl9jaGFubmVsX2lkKQor
ICAgICAgICAgICAgc2VsZi5fd2FpdGluZ193cml0ZV9jb21wbGV0aW9uID0gRmFsc2UKKyAgICAg
ICAgICAgIHNlbGYuX3dyaXRlX2NvbmRpdGlvbi5ub3RpZnkoKQorICAgICAgICBmaW5hbGx5Ogor
ICAgICAgICAgICAgc2VsZi5fd3JpdGVfY29uZGl0aW9uLnJlbGVhc2UoKQorCisgICAgZGVmIG9u
X3dyaXRlcl9kb25lKHNlbGYpOgorICAgICAgICAiIiJDYWxsZWQgYnkgdGhlIG11eCBoYW5kbGVy
IHdoZW4gdGhlIHdyaXRlciB0aHJlYWQgaGFzIGZpbmlzaGVkLiIiIgorCisgICAgICAgIHRyeToK
KyAgICAgICAgICAgIHNlbGYuX3dyaXRlX2NvbmRpdGlvbi5hY3F1aXJlKCkKICAgICAgICAgICAg
IHNlbGYuX3dhaXRpbmdfd3JpdGVfY29tcGxldGlvbiA9IEZhbHNlCiAgICAgICAgICAgICBzZWxm
Ll93cml0ZV9jb25kaXRpb24ubm90aWZ5KCkKICAgICAgICAgZmluYWxseToKICAgICAgICAgICAg
IHNlbGYuX3dyaXRlX2NvbmRpdGlvbi5yZWxlYXNlKCkKIAorCiAgICAgZGVmIGFwcGVuZF9mcmFt
ZV9kYXRhKHNlbGYsIGZyYW1lX2RhdGEpOgogICAgICAgICAiIiJBcHBlbmRzIGluY29taW5nIGZy
YW1lIGRhdGEuIENhbGxlZCB3aGVuIG11eF9oYW5kbGVyIGRpc3BhdGNoZXMKICAgICAgICAgZnJh
bWUgZGF0YSB0byB0aGUgY29ycmVzcG9uZGluZyBhcHBsaWNhdGlvbi4KQEAgLTY4NiwzNyArNjk3
LDE2MiBAQCBjbGFzcyBfTG9naWNhbENvbm5lY3Rpb24ob2JqZWN0KToKICAgICAgICAgc2VsZi5f
cmVhZF9jb25kaXRpb24ucmVsZWFzZSgpCiAKIAorY2xhc3MgX0lubmVyTWVzc2FnZShvYmplY3Qp
OgorICAgICIiIkhvbGRzIHRoZSByZXN1bHQgb2YgX0lubmVyTWVzc2FnZUJ1aWxkZXIuYnVpbGQo
KS4KKyAgICAiIiIKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBvcGNvZGUsIHBheWxvYWQpOgor
ICAgICAgICBzZWxmLm9wY29kZSA9IG9wY29kZQorICAgICAgICBzZWxmLnBheWxvYWQgPSBwYXls
b2FkCisKKworY2xhc3MgX0lubmVyTWVzc2FnZUJ1aWxkZXIob2JqZWN0KToKKyAgICAiIiJBIGNs
YXNzIHRoYXQgaG9sZHMgdGhlIGNvbnRleHQgb2YgaW5uZXIgbWVzc2FnZSBmcmFnbWVudGF0aW9u
IGFuZAorICAgIGJ1aWxkcyBhIG1lc3NhZ2UgZnJvbSBmcmFnbWVudGVkIGlubmVyIGZyYW1lKHMp
LgorICAgICIiIgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYpOgorICAgICAgICBzZWxmLl9jb250
cm9sX29wY29kZSA9IE5vbmUKKyAgICAgICAgc2VsZi5fcGVuZGluZ19jb250cm9sX2ZyYWdtZW50
cyA9IFtdCisgICAgICAgIHNlbGYuX21lc3NhZ2Vfb3Bjb2RlID0gTm9uZQorICAgICAgICBzZWxm
Ll9wZW5kaW5nX21lc3NhZ2VfZnJhZ21lbnRzID0gW10KKyAgICAgICAgc2VsZi5fZnJhbWVfaGFu
ZGxlciA9IHNlbGYuX2hhbmRsZV9maXJzdAorCisgICAgZGVmIF9oYW5kbGVfZmlyc3Qoc2VsZiwg
ZnJhbWUpOgorICAgICAgICBpZiBmcmFtZS5vcGNvZGUgPT0gY29tbW9uLk9QQ09ERV9DT05USU5V
QVRJT046CisgICAgICAgICAgICByYWlzZSBJbnZhbGlkRnJhbWVFeGNlcHRpb24oJ1NlbmRpbmcg
aW52YWxpZCBjb250aW51YXRpb24gb3Bjb2RlJykKKworICAgICAgICBpZiBjb21tb24uaXNfY29u
dHJvbF9vcGNvZGUoZnJhbWUub3Bjb2RlKToKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9wcm9j
ZXNzX2ZpcnN0X2ZyYWdtZW50ZWRfY29udHJvbChmcmFtZSkKKyAgICAgICAgZWxzZToKKyAgICAg
ICAgICAgIHJldHVybiBzZWxmLl9wcm9jZXNzX2ZpcnN0X2ZyYWdtZW50ZWRfbWVzc2FnZShmcmFt
ZSkKKworICAgIGRlZiBfcHJvY2Vzc19maXJzdF9mcmFnbWVudGVkX2NvbnRyb2woc2VsZiwgZnJh
bWUpOgorICAgICAgICBzZWxmLl9jb250cm9sX29wY29kZSA9IGZyYW1lLm9wY29kZQorICAgICAg
ICBzZWxmLl9wZW5kaW5nX2NvbnRyb2xfZnJhZ21lbnRzLmFwcGVuZChmcmFtZS5wYXlsb2FkKQor
ICAgICAgICBpZiBub3QgZnJhbWUuZmluOgorICAgICAgICAgICAgc2VsZi5fZnJhbWVfaGFuZGxl
ciA9IHNlbGYuX2hhbmRsZV9mcmFnbWVudGVkX2NvbnRyb2wKKyAgICAgICAgICAgIHJldHVybiBO
b25lCisgICAgICAgIHJldHVybiBzZWxmLl9yZWFzc2VtYmxlX2ZyYWdtZW50ZWRfY29udHJvbCgp
CisKKyAgICBkZWYgX3Byb2Nlc3NfZmlyc3RfZnJhZ21lbnRlZF9tZXNzYWdlKHNlbGYsIGZyYW1l
KToKKyAgICAgICAgc2VsZi5fbWVzc2FnZV9vcGNvZGUgPSBmcmFtZS5vcGNvZGUKKyAgICAgICAg
c2VsZi5fcGVuZGluZ19tZXNzYWdlX2ZyYWdtZW50cy5hcHBlbmQoZnJhbWUucGF5bG9hZCkKKyAg
ICAgICAgaWYgbm90IGZyYW1lLmZpbjoKKyAgICAgICAgICAgIHNlbGYuX2ZyYW1lX2hhbmRsZXIg
PSBzZWxmLl9oYW5kbGVfZnJhZ21lbnRlZF9tZXNzYWdlCisgICAgICAgICAgICByZXR1cm4gTm9u
ZQorICAgICAgICByZXR1cm4gc2VsZi5fcmVhc3NlbWJsZV9mcmFnbWVudGVkX21lc3NhZ2UoKQor
CisgICAgZGVmIF9oYW5kbGVfZnJhZ21lbnRlZF9jb250cm9sKHNlbGYsIGZyYW1lKToKKyAgICAg
ICAgaWYgZnJhbWUub3Bjb2RlICE9IGNvbW1vbi5PUENPREVfQ09OVElOVUFUSU9OOgorICAgICAg
ICAgICAgcmFpc2UgSW52YWxpZEZyYW1lRXhjZXB0aW9uKAorICAgICAgICAgICAgICAgICdTZW5k
aW5nIGludmFsaWQgb3Bjb2RlICVkIHdoaWxlIHNlbmRpbmcgZnJhZ21lbnRlZCBjb250cm9sICcK
KyAgICAgICAgICAgICAgICAnbWVzc2FnZScgJSBmcmFtZS5vcGNvZGUpCisgICAgICAgIHNlbGYu
X3BlbmRpbmdfY29udHJvbF9mcmFnbWVudHMuYXBwZW5kKGZyYW1lLnBheWxvYWQpCisgICAgICAg
IGlmIG5vdCBmcmFtZS5maW46CisgICAgICAgICAgICByZXR1cm4gTm9uZQorICAgICAgICByZXR1
cm4gc2VsZi5fcmVhc3NlbWJsZV9mcmFnbWVudGVkX2NvbnRyb2woKQorCisgICAgZGVmIF9yZWFz
c2VtYmxlX2ZyYWdtZW50ZWRfY29udHJvbChzZWxmKToKKyAgICAgICAgb3Bjb2RlID0gc2VsZi5f
Y29udHJvbF9vcGNvZGUKKyAgICAgICAgcGF5bG9hZCA9ICcnLmpvaW4oc2VsZi5fcGVuZGluZ19j
b250cm9sX2ZyYWdtZW50cykKKyAgICAgICAgc2VsZi5fY29udHJvbF9vcGNvZGUgPSBOb25lCisg
ICAgICAgIHNlbGYuX3BlbmRpbmdfY29udHJvbF9mcmFnbWVudHMgPSBbXQorICAgICAgICBpZiBz
ZWxmLl9tZXNzYWdlX29wY29kZSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHNlbGYuX2ZyYW1l
X2hhbmRsZXIgPSBzZWxmLl9oYW5kbGVfZnJhZ21lbnRlZF9tZXNzYWdlCisgICAgICAgIGVsc2U6
CisgICAgICAgICAgICBzZWxmLl9mcmFtZV9oYW5kbGVyID0gc2VsZi5faGFuZGxlX2ZpcnN0Cisg
ICAgICAgIHJldHVybiBfSW5uZXJNZXNzYWdlKG9wY29kZSwgcGF5bG9hZCkKKworICAgIGRlZiBf
aGFuZGxlX2ZyYWdtZW50ZWRfbWVzc2FnZShzZWxmLCBmcmFtZSk6CisgICAgICAgICMgU2VuZGVy
IGNhbiBpbnRlcmxlYXZlIGEgY29udHJvbCBtZXNzYWdlIHdoaWxlIHNlbmRpbmcgZnJhZ21lbnRl
ZAorICAgICAgICAjIG1lc3NhZ2VzLgorICAgICAgICBpZiBjb21tb24uaXNfY29udHJvbF9vcGNv
ZGUoZnJhbWUub3Bjb2RlKToKKyAgICAgICAgICAgIGlmIHNlbGYuX2NvbnRyb2xfb3Bjb2RlIGlz
IG5vdCBOb25lOgorICAgICAgICAgICAgICAgIHJhaXNlIE11eFVuZXhwZWN0ZWRFeGNlcHRpb24o
CisgICAgICAgICAgICAgICAgICAgICdTaG91bGQgbm90IHJlYWNoIGhlcmUoQnVnIGluIGJ1aWxk
ZXIpJykKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9wcm9jZXNzX2ZpcnN0X2ZyYWdtZW50ZWRf
Y29udHJvbChmcmFtZSkKKworICAgICAgICBpZiBmcmFtZS5vcGNvZGUgIT0gY29tbW9uLk9QQ09E
RV9DT05USU5VQVRJT046CisgICAgICAgICAgICByYWlzZSBJbnZhbGlkRnJhbWVFeGNlcHRpb24o
CisgICAgICAgICAgICAgICAgJ1NlbmRpbmcgaW52YWxpZCBvcGNvZGUgJWQgd2hpbGUgc2VuZGlu
ZyBmcmFnbWVudGVkIG1lc3NhZ2UnICUKKyAgICAgICAgICAgICAgICBmcmFtZS5vcGNvZGUpCisg
ICAgICAgIHNlbGYuX3BlbmRpbmdfbWVzc2FnZV9mcmFnbWVudHMuYXBwZW5kKGZyYW1lLnBheWxv
YWQpCisgICAgICAgIGlmIG5vdCBmcmFtZS5maW46CisgICAgICAgICAgICByZXR1cm4gTm9uZQor
ICAgICAgICByZXR1cm4gc2VsZi5fcmVhc3NlbWJsZV9mcmFnbWVudGVkX21lc3NhZ2UoKQorCisg
ICAgZGVmIF9yZWFzc2VtYmxlX2ZyYWdtZW50ZWRfbWVzc2FnZShzZWxmKToKKyAgICAgICAgb3Bj
b2RlID0gc2VsZi5fbWVzc2FnZV9vcGNvZGUKKyAgICAgICAgcGF5bG9hZCA9ICcnLmpvaW4oc2Vs
Zi5fcGVuZGluZ19tZXNzYWdlX2ZyYWdtZW50cykKKyAgICAgICAgc2VsZi5fbWVzc2FnZV9vcGNv
ZGUgPSBOb25lCisgICAgICAgIHNlbGYuX3BlbmRpbmdfbWVzc2FnZV9mcmFnbWVudHMgPSBbXQor
ICAgICAgICBzZWxmLl9mcmFtZV9oYW5kbGVyID0gc2VsZi5faGFuZGxlX2ZpcnN0CisgICAgICAg
IHJldHVybiBfSW5uZXJNZXNzYWdlKG9wY29kZSwgcGF5bG9hZCkKKworICAgIGRlZiBidWlsZChz
ZWxmLCBmcmFtZSk6CisgICAgICAgICIiIkJ1aWxkIGFuIGlubmVyIG1lc3NhZ2UuIFJldHVybnMg
YW4gX0lubmVyTWVzc2FnZSBpbnN0YW5jZSB3aGVuCisgICAgICAgIHRoZSBnaXZlbiBmcmFtZSBp
cyB0aGUgbGFzdCBmcmFnbWVudGVkIGZyYW1lLiBSZXR1cm5zIE5vbmUgb3RoZXJ3aXNlLgorCisg
ICAgICAgIEFyZ3M6CisgICAgICAgICAgICBmcmFtZTogYW4gaW5uZXIgZnJhbWUuCisgICAgICAg
IFJhaXNlczoKKyAgICAgICAgICAgIEludmFsaWRGcmFtZUV4Y2VwdGlvbjogd2hlbiByZWNlaXZl
ZCBpbnZhbGlkIG9wY29kZS4gKGUuZy4KKyAgICAgICAgICAgICAgICByZWNlaXZpbmcgbm9uIGNv
bnRpbnVhdGlvbiBkYXRhIG9wY29kZSBidXQgdGhlIGZpbiBmbGFnIG9mCisgICAgICAgICAgICAg
ICAgdGhlIHByZXZpb3VzIGlubmVyIGZyYW1lIHdhcyBub3Qgc2V0LikKKyAgICAgICAgIiIiCisK
KyAgICAgICAgcmV0dXJuIHNlbGYuX2ZyYW1lX2hhbmRsZXIoZnJhbWUpCisKKwogY2xhc3MgX0xv
Z2ljYWxTdHJlYW0oU3RyZWFtKToKICAgICAiIiJNaW1pY3MgdGhlIFN0cmVhbSBjbGFzcy4gVGhp
cyBjbGFzcyBpbnRlcnByZXRzIG11bHRpcGxleGVkIFdlYlNvY2tldAogICAgIGZyYW1lcy4KICAg
ICAiIiIKIAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCByZXF1ZXN0LCBzZW5kX3F1b3RhLCByZWNl
aXZlX3F1b3RhKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgcmVxdWVzdCwgc3RyZWFtX29wdGlv
bnMsIHNlbmRfcXVvdGEsIHJlY2VpdmVfcXVvdGEpOgogICAgICAgICAiIiJDb25zdHJ1Y3RzIGFu
IGluc3RhbmNlLgogCiAgICAgICAgIEFyZ3M6CiAgICAgICAgICAgICByZXF1ZXN0OiBfTG9naWNh
bFJlcXVlc3QgaW5zdGFuY2UuCisgICAgICAgICAgICBzdHJlYW1fb3B0aW9uczogU3RyZWFtT3B0
aW9ucyBpbnN0YW5jZS4KICAgICAgICAgICAgIHNlbmRfcXVvdGE6IEluaXRpYWwgc2VuZCBxdW90
YS4KICAgICAgICAgICAgIHJlY2VpdmVfcXVvdGE6IEluaXRpYWwgcmVjZWl2ZSBxdW90YS4KICAg
ICAgICAgIiIiCiAKLSAgICAgICAgIyBUT0RPKGJhc2hpKTogU3VwcG9ydCBmcmFtZSBmaWx0ZXJz
LgotICAgICAgICBzdHJlYW1fb3B0aW9ucyA9IFN0cmVhbU9wdGlvbnMoKQogICAgICAgICAjIFBo
eXNpY2FsIHN0cmVhbSBpcyByZXNwb25zaWJsZSBmb3IgbWFza2luZy4KICAgICAgICAgc3RyZWFt
X29wdGlvbnMudW5tYXNrX3JlY2VpdmUgPSBGYWxzZQotICAgICAgICAjIENvbnRyb2wgZnJhbWVz
IGNhbiBiZSBmcmFnbWVudGVkIG9uIGxvZ2ljYWwgY2hhbm5lbC4KLSAgICAgICAgc3RyZWFtX29w
dGlvbnMuYWxsb3dfZnJhZ21lbnRlZF9jb250cm9sX2ZyYW1lID0gVHJ1ZQogICAgICAgICBTdHJl
YW0uX19pbml0X18oc2VsZiwgcmVxdWVzdCwgc3RyZWFtX29wdGlvbnMpCisKKyAgICAgICAgc2Vs
Zi5fc2VuZF9jbG9zZWQgPSBGYWxzZQogICAgICAgICBzZWxmLl9zZW5kX3F1b3RhID0gc2VuZF9x
dW90YQotICAgICAgICBzZWxmLl9zZW5kX3F1b3RhX2NvbmRpdGlvbiA9IHRocmVhZGluZy5Db25k
aXRpb24oKQorICAgICAgICAjIC0gUHJvdGVjdHMgX3NlbmRfY2xvc2VkIGFuZCBfc2VuZF9xdW90
YQorICAgICAgICAjIC0gU2lnbmFscyB0aGUgdGhyZWFkIHdhaXRpbmcgZm9yIHNlbmQgcXVvdGEg
cmVwbGVuaXNoZWQKKyAgICAgICAgc2VsZi5fc2VuZF9jb25kaXRpb24gPSB0aHJlYWRpbmcuQ29u
ZGl0aW9uKCkKKworICAgICAgICAjIFRoZSBvcGNvZGUgb2YgdGhlIGZpcnN0IGZyYW1lIGluIG1l
c3NhZ2VzLgorICAgICAgICBzZWxmLl9tZXNzYWdlX29wY29kZSA9IGNvbW1vbi5PUENPREVfVEVY
VAorICAgICAgICAjIFRydWUgd2hlbiB0aGUgbGFzdCBtZXNzYWdlIHdhcyBmcmFnbWVudGVkLgor
ICAgICAgICBzZWxmLl9sYXN0X21lc3NhZ2Vfd2FzX2ZyYWdtZW50ZWQgPSBGYWxzZQorCiAgICAg
ICAgIHNlbGYuX3JlY2VpdmVfcXVvdGEgPSByZWNlaXZlX3F1b3RhCiAgICAgICAgIHNlbGYuX3dy
aXRlX2lubmVyX2ZyYW1lX3NlbWFwaG9yZSA9IHRocmVhZGluZy5TZW1hcGhvcmUoKQogCisgICAg
ICAgIHNlbGYuX2lubmVyX21lc3NhZ2VfYnVpbGRlciA9IF9Jbm5lck1lc3NhZ2VCdWlsZGVyKCkK
KwogICAgIGRlZiBfY3JlYXRlX2lubmVyX2ZyYW1lKHNlbGYsIG9wY29kZSwgcGF5bG9hZCwgZW5k
PVRydWUpOgotICAgICAgICAjIFRPRE8oYmFzaGkpOiBTdXBwb3J0IGV4dGVuc2lvbnMgdGhhdCB1
c2UgcmVzZXJ2ZWQgYml0cy4KLSAgICAgICAgZmlyc3RfYnl0ZSA9IChlbmQgPDwgNykgfCBvcGNv
ZGUKLSAgICAgICAgcmV0dXJuIChfZW5jb2RlX2NoYW5uZWxfaWQoc2VsZi5fcmVxdWVzdC5jaGFu
bmVsX2lkKSArCi0gICAgICAgICAgICAgICAgY2hyKGZpcnN0X2J5dGUpICsgcGF5bG9hZCkKKyAg
ICAgICAgZnJhbWUgPSBGcmFtZShmaW49ZW5kLCBvcGNvZGU9b3Bjb2RlLCBwYXlsb2FkPXBheWxv
YWQpCisgICAgICAgIGZvciBmcmFtZV9maWx0ZXIgaW4gc2VsZi5fb3B0aW9ucy5vdXRnb2luZ19m
cmFtZV9maWx0ZXJzOgorICAgICAgICAgICAgZnJhbWVfZmlsdGVyLmZpbHRlcihmcmFtZSkKKwor
ICAgICAgICBpZiBsZW4ocGF5bG9hZCkgIT0gbGVuKGZyYW1lLnBheWxvYWQpOgorICAgICAgICAg
ICAgcmFpc2UgTXV4VW5leHBlY3RlZEV4Y2VwdGlvbigKKyAgICAgICAgICAgICAgICAnTXV4IGV4
dGVuc2lvbiBtdXN0IG5vdCBiZSB1c2VkIGFmdGVyIGV4dGVuc2lvbnMgd2hpY2ggY2hhbmdlICcK
KyAgICAgICAgICAgICAgICAnIGZyYW1lIGJvdW5kYXJ5JykKKworICAgICAgICBmaXJzdF9ieXRl
ID0gKChmcmFtZS5maW4gPDwgNykgfCAoZnJhbWUucnN2MSA8PCA2KSB8CisgICAgICAgICAgICAg
ICAgICAgICAgKGZyYW1lLnJzdjIgPDwgNSkgfCAoZnJhbWUucnN2MyA8PCA0KSB8IGZyYW1lLm9w
Y29kZSkKKyAgICAgICAgcmV0dXJuIGNocihmaXJzdF9ieXRlKSArIGZyYW1lLnBheWxvYWQKIAog
ICAgIGRlZiBfd3JpdGVfaW5uZXJfZnJhbWUoc2VsZiwgb3Bjb2RlLCBwYXlsb2FkLCBlbmQ9VHJ1
ZSk6CiAgICAgICAgIHBheWxvYWRfbGVuZ3RoID0gbGVuKHBheWxvYWQpCkBAIC03MzAsMTQgKzg2
NiwzNiBAQCBjbGFzcyBfTG9naWNhbFN0cmVhbShTdHJlYW0pOgogICAgICAgICAgICAgIyBtdWx0
aXBsZXhpbmcgY29udHJvbCBibG9ja3MgY2FuIGJlIGluc2VydGVkIGJldHdlZW4gZnJhZ21lbnRl
ZAogICAgICAgICAgICAgIyBpbm5lciBmcmFtZXMgb24gdGhlIHBoeXNpY2FsIGNoYW5uZWwuCiAg
ICAgICAgICAgICBzZWxmLl93cml0ZV9pbm5lcl9mcmFtZV9zZW1hcGhvcmUuYWNxdWlyZSgpCisK
KyAgICAgICAgICAgICMgQ29uc3VtZSBhbiBvY3RldCBxdW90YSB3aGVuIHRoaXMgaXMgdGhlIGZp
cnN0IGZyYWdtZW50ZWQgZnJhbWUuCisgICAgICAgICAgICBpZiBvcGNvZGUgIT0gY29tbW9uLk9Q
Q09ERV9DT05USU5VQVRJT046CisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAg
ICAgICBzZWxmLl9zZW5kX2NvbmRpdGlvbi5hY3F1aXJlKCkKKyAgICAgICAgICAgICAgICAgICAg
d2hpbGUgKG5vdCBzZWxmLl9zZW5kX2Nsb3NlZCkgYW5kIHNlbGYuX3NlbmRfcXVvdGEgPT0gMDoK
KyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX3NlbmRfY29uZGl0aW9uLndhaXQoKQorCisg
ICAgICAgICAgICAgICAgICAgIGlmIHNlbGYuX3NlbmRfY2xvc2VkOgorICAgICAgICAgICAgICAg
ICAgICAgICAgcmFpc2UgQmFkT3BlcmF0aW9uRXhjZXB0aW9uKAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICdMb2dpY2FsIGNvbm5lY3Rpb24gJWQgaXMgY2xvc2VkJyAlCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc2VsZi5fcmVxdWVzdC5jaGFubmVsX2lkKQorCisgICAgICAgICAg
ICAgICAgICAgIHNlbGYuX3NlbmRfcXVvdGEgLT0gMQorICAgICAgICAgICAgICAgIGZpbmFsbHk6
CisgICAgICAgICAgICAgICAgICAgIHNlbGYuX3NlbmRfY29uZGl0aW9uLnJlbGVhc2UoKQorCiAg
ICAgICAgICAgICB3aGlsZSB3cml0ZV9wb3NpdGlvbiA8IHBheWxvYWRfbGVuZ3RoOgogICAgICAg
ICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5fc2VuZF9xdW90YV9jb25k
aXRpb24uYWNxdWlyZSgpCi0gICAgICAgICAgICAgICAgICAgIHdoaWxlIHNlbGYuX3NlbmRfcXVv
dGEgPT0gMDoKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fc2VuZF9jb25kaXRpb24uYWNxdWly
ZSgpCisgICAgICAgICAgICAgICAgICAgIHdoaWxlIChub3Qgc2VsZi5fc2VuZF9jbG9zZWQpIGFu
ZCBzZWxmLl9zZW5kX3F1b3RhID09IDA6CiAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9s
b2dnZXIuZGVidWcoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ05vIHF1b3RhLiBXYWl0
aW5nIEZsb3dDb250cm9sIG1lc3NhZ2UgZm9yICVkLicgJQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNlbGYuX3JlcXVlc3QuY2hhbm5lbF9pZCkKLSAgICAgICAgICAgICAgICAgICAgICAg
IHNlbGYuX3NlbmRfcXVvdGFfY29uZGl0aW9uLndhaXQoKQorICAgICAgICAgICAgICAgICAgICAg
ICAgc2VsZi5fc2VuZF9jb25kaXRpb24ud2FpdCgpCisKKyAgICAgICAgICAgICAgICAgICAgaWYg
c2VsZi5fc2VuZF9jbG9zZWQ6CisgICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBCYWRPcGVy
YXRpb25FeGNlcHRpb24oCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0xvZ2ljYWwgY29u
bmVjdGlvbiAlZCBpcyBjbG9zZWQnICUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxm
LnJlcXVlc3QuX2NoYW5uZWxfaWQpCiAKICAgICAgICAgICAgICAgICAgICAgcmVtYWluaW5nID0g
cGF5bG9hZF9sZW5ndGggLSB3cml0ZV9wb3NpdGlvbgogICAgICAgICAgICAgICAgICAgICB3cml0
ZV9sZW5ndGggPSBtaW4oc2VsZi5fc2VuZF9xdW90YSwgcmVtYWluaW5nKQpAQCAtNzQ5LDE4ICs5
MDcsMTYgQEAgY2xhc3MgX0xvZ2ljYWxTdHJlYW0oU3RyZWFtKToKICAgICAgICAgICAgICAgICAg
ICAgICAgIG9wY29kZSwKICAgICAgICAgICAgICAgICAgICAgICAgIHBheWxvYWRbd3JpdGVfcG9z
aXRpb246d3JpdGVfcG9zaXRpb24rd3JpdGVfbGVuZ3RoXSwKICAgICAgICAgICAgICAgICAgICAg
ICAgIGlubmVyX2ZyYW1lX2VuZCkKLSAgICAgICAgICAgICAgICAgICAgZnJhbWVfZGF0YSA9IHNl
bGYuX3dyaXRlci5idWlsZCgKLSAgICAgICAgICAgICAgICAgICAgICAgIGlubmVyX2ZyYW1lLCBl
bmQ9VHJ1ZSwgYmluYXJ5PVRydWUpCiAgICAgICAgICAgICAgICAgICAgIHNlbGYuX3NlbmRfcXVv
dGEgLT0gd3JpdGVfbGVuZ3RoCiAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1
ZygnQ29uc3VtZWQgcXVvdGE9JWQsIHJlbWFpbmluZz0lZCcgJQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgKHdyaXRlX2xlbmd0aCwgc2VsZi5fc2VuZF9xdW90YSkpCiAg
ICAgICAgICAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5fc2VuZF9x
dW90YV9jb25kaXRpb24ucmVsZWFzZSgpCisgICAgICAgICAgICAgICAgICAgIHNlbGYuX3NlbmRf
Y29uZGl0aW9uLnJlbGVhc2UoKQogCiAgICAgICAgICAgICAgICAgIyBXcml0aW5nIGRhdGEgd2ls
bCBibG9jayB0aGUgd29ya2VyIHNvIHdlIG5lZWQgdG8gcmVsZWFzZQotICAgICAgICAgICAgICAg
ICMgX3NlbmRfcXVvdGFfY29uZGl0aW9uIGJlZm9yZSB3cml0aW5nLgotICAgICAgICAgICAgICAg
IHNlbGYuX2xvZ2dlci5kZWJ1ZygnU2VuZGluZyBpbm5lciBmcmFtZTogJXInICUgZnJhbWVfZGF0
YSkKLSAgICAgICAgICAgICAgICBzZWxmLl9yZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdGUoZnJhbWVf
ZGF0YSkKKyAgICAgICAgICAgICAgICAjIF9zZW5kX2NvbmRpdGlvbiBiZWZvcmUgd3JpdGluZy4K
KyAgICAgICAgICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJ1NlbmRpbmcgaW5uZXIgZnJhbWU6
ICVyJyAlIGlubmVyX2ZyYW1lKQorICAgICAgICAgICAgICAgIHNlbGYuX3JlcXVlc3QuY29ubmVj
dGlvbi53cml0ZShpbm5lcl9mcmFtZSkKICAgICAgICAgICAgICAgICB3cml0ZV9wb3NpdGlvbiAr
PSB3cml0ZV9sZW5ndGgKIAogICAgICAgICAgICAgICAgIG9wY29kZSA9IGNvbW1vbi5PUENPREVf
Q09OVElOVUFUSU9OCkBAIC03NzMsMTIgKzkyOSwxOCBAQCBjbGFzcyBfTG9naWNhbFN0cmVhbShT
dHJlYW0pOgogICAgIGRlZiByZXBsZW5pc2hfc2VuZF9xdW90YShzZWxmLCBzZW5kX3F1b3RhKToK
ICAgICAgICAgIiIiUmVwbGVuaXNoIHNlbmQgcXVvdGEuIiIiCiAKLSAgICAgICAgc2VsZi5fc2Vu
ZF9xdW90YV9jb25kaXRpb24uYWNxdWlyZSgpCi0gICAgICAgIHNlbGYuX3NlbmRfcXVvdGEgKz0g
c2VuZF9xdW90YQotICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJ1JlcGxlbmlzaGVkIHNlbmQg
cXVvdGEgZm9yIGNoYW5uZWwgaWQgJWQ6ICVkJyAlCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAoc2VsZi5fcmVxdWVzdC5jaGFubmVsX2lkLCBzZWxmLl9zZW5kX3F1b3RhKSkKLSAgICAgICAg
c2VsZi5fc2VuZF9xdW90YV9jb25kaXRpb24ubm90aWZ5KCkKLSAgICAgICAgc2VsZi5fc2VuZF9x
dW90YV9jb25kaXRpb24ucmVsZWFzZSgpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNlbGYu
X3NlbmRfY29uZGl0aW9uLmFjcXVpcmUoKQorICAgICAgICAgICAgaWYgc2VsZi5fc2VuZF9xdW90
YSArIHNlbmRfcXVvdGEgPiAweDdGRkZGRkZGRkZGRkZGRkY6CisgICAgICAgICAgICAgICAgc2Vs
Zi5fc2VuZF9xdW90YSA9IDAKKyAgICAgICAgICAgICAgICByYWlzZSBMb2dpY2FsQ2hhbm5lbEVy
cm9yKAorICAgICAgICAgICAgICAgICAgICBzZWxmLl9yZXF1ZXN0LmNoYW5uZWxfaWQsIF9EUk9Q
X0NPREVfU0VORF9RVU9UQV9PVkVSRkxPVykKKyAgICAgICAgICAgIHNlbGYuX3NlbmRfcXVvdGEg
Kz0gc2VuZF9xdW90YQorICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdSZXBsZW5pc2hl
ZCBzZW5kIHF1b3RhIGZvciBjaGFubmVsIGlkICVkOiAlZCcgJQorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIChzZWxmLl9yZXF1ZXN0LmNoYW5uZWxfaWQsIHNlbGYuX3NlbmRfcXVvdGEp
KQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgc2VsZi5fc2VuZF9jb25kaXRpb24ubm90
aWZ5KCkKKyAgICAgICAgICAgIHNlbGYuX3NlbmRfY29uZGl0aW9uLnJlbGVhc2UoKQogCiAgICAg
ZGVmIGNvbnN1bWVfcmVjZWl2ZV9xdW90YShzZWxmLCBhbW91bnQpOgogICAgICAgICAiIiJDb25z
dW1lcyByZWNlaXZlIHF1b3RhLiBSZXR1cm5zIEZhbHNlIG9uIGZhaWx1cmUuIiIiCkBAIC04MDgs
NyArOTcwLDE5IEBAIGNsYXNzIF9Mb2dpY2FsU3RyZWFtKFN0cmVhbSk6CiAgICAgICAgICAgICBv
cGNvZGUgPSBjb21tb24uT1BDT0RFX1RFWFQKICAgICAgICAgICAgIG1lc3NhZ2UgPSBtZXNzYWdl
LmVuY29kZSgndXRmLTgnKQogCisgICAgICAgIGZvciBtZXNzYWdlX2ZpbHRlciBpbiBzZWxmLl9v
cHRpb25zLm91dGdvaW5nX21lc3NhZ2VfZmlsdGVyczoKKyAgICAgICAgICAgIG1lc3NhZ2UgPSBt
ZXNzYWdlX2ZpbHRlci5maWx0ZXIobWVzc2FnZSwgZW5kLCBiaW5hcnkpCisKKyAgICAgICAgaWYg
c2VsZi5fbGFzdF9tZXNzYWdlX3dhc19mcmFnbWVudGVkOgorICAgICAgICAgICAgaWYgb3Bjb2Rl
ICE9IHNlbGYuX21lc3NhZ2Vfb3Bjb2RlOgorICAgICAgICAgICAgICAgIHJhaXNlIEJhZE9wZXJh
dGlvbkV4Y2VwdGlvbignTWVzc2FnZSB0eXBlcyBhcmUgZGlmZmVyZW50IGluICcKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ZyYW1lcyBmb3IgdGhlIHNhbWUg
bWVzc2FnZScpCisgICAgICAgICAgICBvcGNvZGUgPSBjb21tb24uT1BDT0RFX0NPTlRJTlVBVElP
TgorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5fbWVzc2FnZV9vcGNvZGUgPSBvcGNv
ZGUKKwogICAgICAgICBzZWxmLl93cml0ZV9pbm5lcl9mcmFtZShvcGNvZGUsIG1lc3NhZ2UsIGVu
ZCkKKyAgICAgICAgc2VsZi5fbGFzdF9tZXNzYWdlX3dhc19mcmFnbWVudGVkID0gbm90IGVuZAog
CiAgICAgZGVmIF9yZWNlaXZlX2ZyYW1lKHNlbGYpOgogICAgICAgICAiIiJPdmVycmlkZXMgU3Ry
ZWFtLl9yZWNlaXZlX2ZyYW1lLgpAQCAtODIxLDYgKzk5NSw5IEBAIGNsYXNzIF9Mb2dpY2FsU3Ry
ZWFtKFN0cmVhbSk6CiAKICAgICAgICAgb3Bjb2RlLCBwYXlsb2FkLCBmaW4sIHJzdjEsIHJzdjIs
IHJzdjMgPSBTdHJlYW0uX3JlY2VpdmVfZnJhbWUoc2VsZikKICAgICAgICAgYW1vdW50ID0gbGVu
KHBheWxvYWQpCisgICAgICAgICMgUmVwbGVuaXNoIGV4dHJhIG9uZSBvY3RldCB3aGVuIHJlY2Vp
dmluZyB0aGUgZmlyc3QgZnJhZ21lbnRlZCBmcmFtZS4KKyAgICAgICAgaWYgb3Bjb2RlICE9IGNv
bW1vbi5PUENPREVfQ09OVElOVUFUSU9OOgorICAgICAgICAgICAgYW1vdW50ICs9IDEKICAgICAg
ICAgc2VsZi5fcmVjZWl2ZV9xdW90YSArPSBhbW91bnQKICAgICAgICAgZnJhbWVfZGF0YSA9IF9j
cmVhdGVfZmxvd19jb250cm9sKHNlbGYuX3JlcXVlc3QuY2hhbm5lbF9pZCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFtb3VudCkKQEAgLTgyOSw2ICsxMDA2LDIx
IEBAIGNsYXNzIF9Mb2dpY2FsU3RyZWFtKFN0cmVhbSk6CiAgICAgICAgIHNlbGYuX3JlcXVlc3Qu
Y29ubmVjdGlvbi53cml0ZV9jb250cm9sX2RhdGEoZnJhbWVfZGF0YSkKICAgICAgICAgcmV0dXJu
IG9wY29kZSwgcGF5bG9hZCwgZmluLCByc3YxLCByc3YyLCByc3YzCiAKKyAgICBkZWYgX2dldF9t
ZXNzYWdlX2Zyb21fZnJhbWUoc2VsZiwgZnJhbWUpOgorICAgICAgICAiIiJPdmVycmlkZXMgU3Ry
ZWFtLl9nZXRfbWVzc2FnZV9mcm9tX2ZyYW1lLgorICAgICAgICAiIiIKKworICAgICAgICB0cnk6
CisgICAgICAgICAgICBpbm5lcl9tZXNzYWdlID0gc2VsZi5faW5uZXJfbWVzc2FnZV9idWlsZGVy
LmJ1aWxkKGZyYW1lKQorICAgICAgICBleGNlcHQgSW52YWxpZEZyYW1lRXhjZXB0aW9uOgorICAg
ICAgICAgICAgcmFpc2UgTG9naWNhbENoYW5uZWxFcnJvcigKKyAgICAgICAgICAgICAgICBzZWxm
Ll9yZXF1ZXN0LmNoYW5uZWxfaWQsIF9EUk9QX0NPREVfQkFEX0ZSQUdNRU5UQVRJT04pCisKKyAg
ICAgICAgaWYgaW5uZXJfbWVzc2FnZSBpcyBOb25lOgorICAgICAgICAgICAgcmV0dXJuIE5vbmUK
KyAgICAgICAgc2VsZi5fb3JpZ2luYWxfb3Bjb2RlID0gaW5uZXJfbWVzc2FnZS5vcGNvZGUKKyAg
ICAgICAgcmV0dXJuIGlubmVyX21lc3NhZ2UucGF5bG9hZAorCiAgICAgZGVmIHJlY2VpdmVfbWVz
c2FnZShzZWxmKToKICAgICAgICAgIiIiT3ZlcnJpZGVzIFN0cmVhbS5yZWNlaXZlX21lc3NhZ2Uu
IiIiCiAKQEAgLTg3NSwxMiArMTA2NywxMyBAQCBjbGFzcyBfTG9naWNhbFN0cmVhbShTdHJlYW0p
OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fcmVxdWVzdC5jaGFubmVsX2lkKQog
ICAgICAgICBzZWxmLl9yZXF1ZXN0LnNlcnZlcl90ZXJtaW5hdGVkID0gVHJ1ZQogCi0gICAgZGVm
IF9kcmFpbl9yZWNlaXZlZF9kYXRhKHNlbGYpOgotICAgICAgICAiIiJPdmVycmlkZXMgU3RyZWFt
Ll9kcmFpbl9yZWNlaXZlZF9kYXRhLiBOb3RoaW5nIG5lZWQgdG8gYmUgZG9uZSBmb3IKLSAgICAg
ICAgbG9naWNhbCBjaGFubmVsLgotICAgICAgICAiIiIKKyAgICBkZWYgc3RvcF9zZW5kaW5nKHNl
bGYpOgorICAgICAgICAiIiJTdG9wcyBhY2NlcHRpbmcgbmV3IHNlbmQgb3BlcmF0aW9uIChfd3Jp
dGVfaW5uZXJfZnJhbWUpLiIiIgogCi0gICAgICAgIHBhc3MKKyAgICAgICAgc2VsZi5fc2VuZF9j
b25kaXRpb24uYWNxdWlyZSgpCisgICAgICAgIHNlbGYuX3NlbmRfY2xvc2VkID0gVHJ1ZQorICAg
ICAgICBzZWxmLl9zZW5kX2NvbmRpdGlvbi5ub3RpZnkoKQorICAgICAgICBzZWxmLl9zZW5kX2Nv
bmRpdGlvbi5yZWxlYXNlKCkKIAogCiBjbGFzcyBfT3V0Z29pbmdEYXRhKG9iamVjdCk6CkBAIC05
MTEsOCArMTEwNCwxNyBAQCBjbGFzcyBfUGh5c2ljYWxDb25uZWN0aW9uV3JpdGVyKHRocmVhZGlu
Zy5UaHJlYWQpOgogICAgICAgICBzZWxmLl9sb2dnZXIgPSB1dGlsLmdldF9jbGFzc19sb2dnZXIo
c2VsZikKICAgICAgICAgc2VsZi5fbXV4X2hhbmRsZXIgPSBtdXhfaGFuZGxlcgogICAgICAgICBz
ZWxmLnNldERhZW1vbihUcnVlKQorCisgICAgICAgICMgV2hlbiBzZXQsIG1ha2UgdGhpcyB0aHJl
YWQgc3RvcCBhY2NlcHRpbmcgbmV3IGRhdGEsIGZsdXNoIHBlbmRpbmcKKyAgICAgICAgIyBkYXRh
IGFuZCBleGl0LgogICAgICAgICBzZWxmLl9zdG9wX3JlcXVlc3RlZCA9IEZhbHNlCisgICAgICAg
ICMgVGhlIGNsb3NlIGNvZGUgb2YgdGhlIHBoeXNpY2FsIGNvbm5lY3Rpb24uCisgICAgICAgIHNl
bGYuX2Nsb3NlX2NvZGUgPSBjb21tb24uU1RBVFVTX05PUk1BTF9DTE9TVVJFCisgICAgICAgICMg
RGVxdWUgZm9yIHBhc3Npbmcgd3JpdGUgZGF0YS4gSXQncyBwcm90ZWN0ZWQgYnkgX2RlcXVlX2Nv
bmRpdGlvbgorICAgICAgICAjIHVudGlsIF9zdG9wX3JlcXVlc3RlZCBpcyBzZXQuCiAgICAgICAg
IHNlbGYuX2RlcXVlID0gY29sbGVjdGlvbnMuZGVxdWUoKQorICAgICAgICAjIC0gUHJvdGVjdHMg
X2RlcXVlLCBfc3RvcF9yZXF1ZXN0ZWQgYW5kIF9jbG9zZV9jb2RlCisgICAgICAgICMgLSBTaWdu
YWxzIHRocmVhZHMgd2FpdGluZyBmb3IgdGhlbSB0byBiZSBhdmFpbGFibGUKICAgICAgICAgc2Vs
Zi5fZGVxdWVfY29uZGl0aW9uID0gdGhyZWFkaW5nLkNvbmRpdGlvbigpCiAKICAgICBkZWYgcHV0
X291dGdvaW5nX2RhdGEoc2VsZiwgZGF0YSk6CkBAIC05MzcsOCArMTEzOSwxMSBAQCBjbGFzcyBf
UGh5c2ljYWxDb25uZWN0aW9uV3JpdGVyKHRocmVhZGluZy5UaHJlYWQpOgogICAgICAgICAgICAg
c2VsZi5fZGVxdWVfY29uZGl0aW9uLnJlbGVhc2UoKQogCiAgICAgZGVmIF93cml0ZV9kYXRhKHNl
bGYsIG91dGdvaW5nX2RhdGEpOgorICAgICAgICBtZXNzYWdlID0gKF9lbmNvZGVfY2hhbm5lbF9p
ZChvdXRnb2luZ19kYXRhLmNoYW5uZWxfaWQpICsKKyAgICAgICAgICAgICAgICAgICBvdXRnb2lu
Z19kYXRhLmRhdGEpCiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIHNlbGYuX211eF9oYW5kbGVy
LnBoeXNpY2FsX2Nvbm5lY3Rpb24ud3JpdGUob3V0Z29pbmdfZGF0YS5kYXRhKQorICAgICAgICAg
ICAgc2VsZi5fbXV4X2hhbmRsZXIucGh5c2ljYWxfc3RyZWFtLnNlbmRfbWVzc2FnZSgKKyAgICAg
ICAgICAgICAgICBtZXNzYWdlPW1lc3NhZ2UsIGVuZD1UcnVlLCBiaW5hcnk9VHJ1ZSkKICAgICAg
ICAgZXhjZXB0IEV4Y2VwdGlvbiwgZToKICAgICAgICAgICAgIHV0aWwucHJlcGVuZF9tZXNzYWdl
X3RvX2V4Y2VwdGlvbigKICAgICAgICAgICAgICAgICAnRmFpbGVkIHRvIHNlbmQgbWVzc2FnZSB0
byAlcjogJyAlCkBAIC05NDgsMzMgKzExNTMsNTEgQEAgY2xhc3MgX1BoeXNpY2FsQ29ubmVjdGlv
bldyaXRlcih0aHJlYWRpbmcuVGhyZWFkKToKICAgICAgICAgIyBUT0RPKGJhc2hpKTogSXQgd291
bGQgYmUgYmV0dGVyIHRvIGJsb2NrIHRoZSB0aHJlYWQgdGhhdCBzZW5kcwogICAgICAgICAjIGNv
bnRyb2wgZGF0YSBhcyB3ZWxsLgogICAgICAgICBpZiBvdXRnb2luZ19kYXRhLmNoYW5uZWxfaWQg
IT0gX0NPTlRST0xfQ0hBTk5FTF9JRDoKLSAgICAgICAgICAgIHNlbGYuX211eF9oYW5kbGVyLm5v
dGlmeV93cml0ZV9kb25lKG91dGdvaW5nX2RhdGEuY2hhbm5lbF9pZCkKKyAgICAgICAgICAgIHNl
bGYuX211eF9oYW5kbGVyLm5vdGlmeV93cml0ZV9kYXRhX2RvbmUob3V0Z29pbmdfZGF0YS5jaGFu
bmVsX2lkKQogCiAgICAgZGVmIHJ1bihzZWxmKToKLSAgICAgICAgc2VsZi5fZGVxdWVfY29uZGl0
aW9uLmFjcXVpcmUoKQotICAgICAgICB3aGlsZSBub3Qgc2VsZi5fc3RvcF9yZXF1ZXN0ZWQ6Ci0g
ICAgICAgICAgICBpZiBsZW4oc2VsZi5fZGVxdWUpID09IDA6Ci0gICAgICAgICAgICAgICAgc2Vs
Zi5fZGVxdWVfY29uZGl0aW9uLndhaXQoKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0KLSAg
ICAgICAgICAgIG91dGdvaW5nX2RhdGEgPSBzZWxmLl9kZXF1ZS5wb3BsZWZ0KCkKLSAgICAgICAg
ICAgIHNlbGYuX2RlcXVlX2NvbmRpdGlvbi5yZWxlYXNlKCkKLSAgICAgICAgICAgIHNlbGYuX3dy
aXRlX2RhdGEob3V0Z29pbmdfZGF0YSkKKyAgICAgICAgdHJ5OgogICAgICAgICAgICAgc2VsZi5f
ZGVxdWVfY29uZGl0aW9uLmFjcXVpcmUoKQorICAgICAgICAgICAgd2hpbGUgbm90IHNlbGYuX3N0
b3BfcmVxdWVzdGVkOgorICAgICAgICAgICAgICAgIGlmIGxlbihzZWxmLl9kZXF1ZSkgPT0gMDoK
KyAgICAgICAgICAgICAgICAgICAgc2VsZi5fZGVxdWVfY29uZGl0aW9uLndhaXQoKQorICAgICAg
ICAgICAgICAgICAgICBjb250aW51ZQogCi0gICAgICAgICMgRmx1c2ggZGVxdWUKLSAgICAgICAg
dHJ5OgotICAgICAgICAgICAgd2hpbGUgbGVuKHNlbGYuX2RlcXVlKSA+IDA6CiAgICAgICAgICAg
ICAgICAgb3V0Z29pbmdfZGF0YSA9IHNlbGYuX2RlcXVlLnBvcGxlZnQoKQorCisgICAgICAgICAg
ICAgICAgc2VsZi5fZGVxdWVfY29uZGl0aW9uLnJlbGVhc2UoKQogICAgICAgICAgICAgICAgIHNl
bGYuX3dyaXRlX2RhdGEob3V0Z29pbmdfZGF0YSkKKyAgICAgICAgICAgICAgICBzZWxmLl9kZXF1
ZV9jb25kaXRpb24uYWNxdWlyZSgpCisKKyAgICAgICAgICAgICMgRmx1c2ggZGVxdWUuCisgICAg
ICAgICAgICAjCisgICAgICAgICAgICAjIEF0IHRoaXMgcG9pbnQsIHNlbGYuX2RlcXVlX2NvbmRp
dGlvbiBpcyBhbHdheXMgYWNxdWlyZWQuCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAg
ICAgd2hpbGUgbGVuKHNlbGYuX2RlcXVlKSA+IDA6CisgICAgICAgICAgICAgICAgICAgIG91dGdv
aW5nX2RhdGEgPSBzZWxmLl9kZXF1ZS5wb3BsZWZ0KCkKKyAgICAgICAgICAgICAgICAgICAgc2Vs
Zi5fd3JpdGVfZGF0YShvdXRnb2luZ19kYXRhKQorICAgICAgICAgICAgZmluYWxseToKKyAgICAg
ICAgICAgICAgICBzZWxmLl9kZXF1ZV9jb25kaXRpb24ucmVsZWFzZSgpCisKKyAgICAgICAgICAg
ICMgQ2xvc2UgcGh5c2ljYWwgY29ubmVjdGlvbi4KKyAgICAgICAgICAgIHRyeToKKyAgICAgICAg
ICAgICAgICAjIERvbid0IHdhaXQgdGhlIHJlc3BvbnNlIGhlcmUuIFRoZSByZXNwb25zZSB3aWxs
IGJlIHJlYWQKKyAgICAgICAgICAgICAgICAjIGJ5IHRoZSByZWFkZXIgdGhyZWFkLgorICAgICAg
ICAgICAgICAgIHNlbGYuX211eF9oYW5kbGVyLnBoeXNpY2FsX3N0cmVhbS5jbG9zZV9jb25uZWN0
aW9uKAorICAgICAgICAgICAgICAgICAgICBzZWxmLl9jbG9zZV9jb2RlLCB3YWl0X3Jlc3BvbnNl
PUZhbHNlKQorICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiwgZToKKyAgICAgICAgICAgICAg
ICB1dGlsLnByZXBlbmRfbWVzc2FnZV90b19leGNlcHRpb24oCisgICAgICAgICAgICAgICAgICAg
ICdGYWlsZWQgdG8gY2xvc2UgdGhlIHBoeXNpY2FsIGNvbm5lY3Rpb246ICVyJyAlIGUpCisgICAg
ICAgICAgICAgICAgcmFpc2UKICAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIHNlbGYuX2Rl
cXVlX2NvbmRpdGlvbi5yZWxlYXNlKCkKKyAgICAgICAgICAgIHNlbGYuX211eF9oYW5kbGVyLm5v
dGlmeV93cml0ZXJfZG9uZSgpCiAKLSAgICBkZWYgc3RvcChzZWxmKToKKyAgICBkZWYgc3RvcChz
ZWxmLCBjbG9zZV9jb2RlPWNvbW1vbi5TVEFUVVNfTk9STUFMX0NMT1NVUkUpOgogICAgICAgICAi
IiJTdG9wcyB0aGUgd3JpdGVyIHRocmVhZC4iIiIKIAogICAgICAgICBzZWxmLl9kZXF1ZV9jb25k
aXRpb24uYWNxdWlyZSgpCiAgICAgICAgIHNlbGYuX3N0b3BfcmVxdWVzdGVkID0gVHJ1ZQorICAg
ICAgICBzZWxmLl9jbG9zZV9jb2RlID0gY2xvc2VfY29kZQogICAgICAgICBzZWxmLl9kZXF1ZV9j
b25kaXRpb24ubm90aWZ5KCkKICAgICAgICAgc2VsZi5fZGVxdWVfY29uZGl0aW9uLnJlbGVhc2Uo
KQogCkBAIC0xMDU1LDYgKzEyNzgsOSBAQCBjbGFzcyBfV29ya2VyKHRocmVhZGluZy5UaHJlYWQp
OgogICAgICAgICB0cnk6CiAgICAgICAgICAgICAjIE5vbi1jcml0aWNhbCBleGNlcHRpb25zIHdp
bGwgYmUgaGFuZGxlZCBieSBkaXNwYXRjaGVyLgogICAgICAgICAgICAgc2VsZi5fbXV4X2hhbmRs
ZXIuZGlzcGF0Y2hlci50cmFuc2Zlcl9kYXRhKHNlbGYuX3JlcXVlc3QpCisgICAgICAgIGV4Y2Vw
dCBMb2dpY2FsQ2hhbm5lbEVycm9yLCBlOgorICAgICAgICAgICAgc2VsZi5fbXV4X2hhbmRsZXIu
ZmFpbF9sb2dpY2FsX2NoYW5uZWwoCisgICAgICAgICAgICAgICAgZS5jaGFubmVsX2lkLCBlLmRy
b3BfY29kZSwgZS5tZXNzYWdlKQogICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgc2VsZi5f
bXV4X2hhbmRsZXIubm90aWZ5X3dvcmtlcl9kb25lKHNlbGYuX3JlcXVlc3QuY2hhbm5lbF9pZCkK
IApAQCAtMTA4Myw4ICsxMzA5LDYgQEAgY2xhc3MgX011eEhhbmRzaGFrZXIoaHliaS5IYW5kc2hh
a2VyKToKICAgICAgICAgIyAgICAgdGhlc2UgaGVhZGVycyBhcmUgaW5jbHVkZWQgYWxyZWFkeS4K
ICAgICAgICAgcmVxdWVzdC5oZWFkZXJzX2luW2NvbW1vbi5VUEdSQURFX0hFQURFUl0gPSAoCiAg
ICAgICAgICAgICBjb21tb24uV0VCU09DS0VUX1VQR1JBREVfVFlQRSkKLSAgICAgICAgcmVxdWVz
dC5oZWFkZXJzX2luW2NvbW1vbi5DT05ORUNUSU9OX0hFQURFUl0gPSAoCi0gICAgICAgICAgICBj
b21tb24uVVBHUkFERV9DT05ORUNUSU9OX1RZUEUpCiAgICAgICAgIHJlcXVlc3QuaGVhZGVyc19p
bltjb21tb24uU0VDX1dFQlNPQ0tFVF9WRVJTSU9OX0hFQURFUl0gPSAoCiAgICAgICAgICAgICBz
dHIoY29tbW9uLlZFUlNJT05fSFlCSV9MQVRFU1QpKQogICAgICAgICByZXF1ZXN0LmhlYWRlcnNf
aW5bY29tbW9uLlNFQ19XRUJTT0NLRVRfS0VZX0hFQURFUl0gPSAoCkBAIC0xMDk1LDggKzEzMTks
OSBAQCBjbGFzcyBfTXV4SGFuZHNoYWtlcihoeWJpLkhhbmRzaGFrZXIpOgogCiAgICAgICAgIHNl
bGYuX2xvZ2dlci5kZWJ1ZygnQ3JlYXRpbmcgbG9naWNhbCBzdHJlYW0gZm9yICVkJyAlCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9yZXF1ZXN0LmNoYW5uZWxfaWQpCi0gICAgICAg
IHJldHVybiBfTG9naWNhbFN0cmVhbShzZWxmLl9yZXF1ZXN0LCBzZWxmLl9zZW5kX3F1b3RhLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fcmVjZWl2ZV9xdW90YSkKKyAgICAg
ICAgcmV0dXJuIF9Mb2dpY2FsU3RyZWFtKAorICAgICAgICAgICAgc2VsZi5fcmVxdWVzdCwgc3Ry
ZWFtX29wdGlvbnMsIHNlbGYuX3NlbmRfcXVvdGEsCisgICAgICAgICAgICBzZWxmLl9yZWNlaXZl
X3F1b3RhKQogCiAgICAgZGVmIF9jcmVhdGVfaGFuZHNoYWtlX3Jlc3BvbnNlKHNlbGYsIGFjY2Vw
dCk6CiAgICAgICAgICIiIk92ZXJyaWRlIGh5YmkuX2NyZWF0ZV9oYW5kc2hha2VfcmVzcG9uc2Uu
IiIiCkBAIC0xMTA1LDcgKzEzMzAsOSBAQCBjbGFzcyBfTXV4SGFuZHNoYWtlcihoeWJpLkhhbmRz
aGFrZXIpOgogCiAgICAgICAgIHJlc3BvbnNlLmFwcGVuZCgnSFRUUC8xLjEgMTAxIFN3aXRjaGlu
ZyBQcm90b2NvbHNcclxuJykKIAotICAgICAgICAjIFVwZ3JhZGUsIENvbm5lY3Rpb24gYW5kIFNl
Yy1XZWJTb2NrZXQtQWNjZXB0IHNob3VsZCBiZSBleGNsdWRlZC4KKyAgICAgICAgIyBVcGdyYWRl
IGFuZCBTZWMtV2ViU29ja2V0LUFjY2VwdCBzaG91bGQgYmUgZXhjbHVkZWQuCisgICAgICAgIHJl
c3BvbnNlLmFwcGVuZCgnJXM6ICVzXHJcbicgJSAoCisgICAgICAgICAgICBjb21tb24uQ09OTkVD
VElPTl9IRUFERVIsIGNvbW1vbi5VUEdSQURFX0NPTk5FQ1RJT05fVFlQRSkpCiAgICAgICAgIGlm
IHNlbGYuX3JlcXVlc3Qud3NfcHJvdG9jb2wgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICByZXNw
b25zZS5hcHBlbmQoJyVzOiAlc1xyXG4nICUgKAogICAgICAgICAgICAgICAgIGNvbW1vbi5TRUNf
V0VCU09DS0VUX1BST1RPQ09MX0hFQURFUiwKQEAgLTExNjksOCArMTM5Niw2IEBAIGNsYXNzIF9I
YW5kc2hha2VEZWx0YUJhc2Uob2JqZWN0KToKICAgICAgICAgICAgICAgICAgICAgZGVsIGhlYWRl
cnNba2V5XQogICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgIGhlYWRl
cnNba2V5XSA9IHZhbHVlCi0gICAgICAgICMgVE9ETyhiYXNoaSk6IFN1cHBvcnQgZXh0ZW5zaW9u
cwotICAgICAgICBoZWFkZXJzWydTZWMtV2ViU29ja2V0LUV4dGVuc2lvbnMnXSA9ICcnCiAgICAg
ICAgIHJldHVybiBoZWFkZXJzCiAKIApAQCAtMTIzMiw4ICsxNDU3LDEyIEBAIGNsYXNzIF9NdXhI
YW5kbGVyKG9iamVjdCk6CiAKICAgICAgICAgIyBDcmVhdGUgIkltcGxpY2l0bHkgT3BlbmVkIENv
bm5lY3Rpb24iLgogICAgICAgICBsb2dpY2FsX2Nvbm5lY3Rpb24gPSBfTG9naWNhbENvbm5lY3Rp
b24oc2VsZiwgX0RFRkFVTFRfQ0hBTk5FTF9JRCkKLSAgICAgICAgc2VsZi5faGFuZHNoYWtlX2Jh
c2UgPSBfSGFuZHNoYWtlRGVsdGFCYXNlKAotICAgICAgICAgICAgc2VsZi5vcmlnaW5hbF9yZXF1
ZXN0LmhlYWRlcnNfaW4pCisgICAgICAgIGhlYWRlcnMgPSBjb3B5LmNvcHkoc2VsZi5vcmlnaW5h
bF9yZXF1ZXN0LmhlYWRlcnNfaW4pCisgICAgICAgICMgQWRkIGV4dGVuc2lvbnMgZm9yIGxvZ2lj
YWwgY2hhbm5lbC4KKyAgICAgICAgaGVhZGVyc1tjb21tb24uU0VDX1dFQlNPQ0tFVF9FWFRFTlNJ
T05TX0hFQURFUl0gPSAoCisgICAgICAgICAgICBjb21tb24uZm9ybWF0X2V4dGVuc2lvbnMoCisg
ICAgICAgICAgICAgICAgc2VsZi5vcmlnaW5hbF9yZXF1ZXN0Lm11eF9wcm9jZXNzb3IuZXh0ZW5z
aW9ucygpKSkKKyAgICAgICAgc2VsZi5faGFuZHNoYWtlX2Jhc2UgPSBfSGFuZHNoYWtlRGVsdGFC
YXNlKGhlYWRlcnMpCiAgICAgICAgIGxvZ2ljYWxfcmVxdWVzdCA9IF9Mb2dpY2FsUmVxdWVzdCgK
ICAgICAgICAgICAgIF9ERUZBVUxUX0NIQU5ORUxfSUQsCiAgICAgICAgICAgICBzZWxmLm9yaWdp
bmFsX3JlcXVlc3QubWV0aG9kLApAQCAtMTI0NSw4ICsxNDc0LDkgQEAgY2xhc3MgX011eEhhbmRs
ZXIob2JqZWN0KToKICAgICAgICAgIyBidXQgd2Ugd2lsbCBzZW5kIEZsb3dDb250cm9sIGxhdGVy
IHNvIHNldCB0aGUgaW5pdGlhbCBxdW90YSB0bwogICAgICAgICAjIF9JTklUSUFMX1FVT1RBX0ZP
Ul9DTElFTlQuCiAgICAgICAgIHNlbGYuX2NoYW5uZWxfc2xvdHMuYXBwZW5kKF9JTklUSUFMX1FV
T1RBX0ZPUl9DTElFTlQpCisgICAgICAgIHNlbmRfcXVvdGEgPSBzZWxmLm9yaWdpbmFsX3JlcXVl
c3QubXV4X3Byb2Nlc3Nvci5xdW90YSgpCiAgICAgICAgIGlmIG5vdCBzZWxmLl9kb19oYW5kc2hh
a2VfZm9yX2xvZ2ljYWxfcmVxdWVzdCgKLSAgICAgICAgICAgIGxvZ2ljYWxfcmVxdWVzdCwgc2Vu
ZF9xdW90YT1zZWxmLm9yaWdpbmFsX3JlcXVlc3QubXV4X3F1b3RhKToKKyAgICAgICAgICAgIGxv
Z2ljYWxfcmVxdWVzdCwgc2VuZF9xdW90YT1zZW5kX3F1b3RhKToKICAgICAgICAgICAgIHJhaXNl
IE11eFVuZXhwZWN0ZWRFeGNlcHRpb24oCiAgICAgICAgICAgICAgICAgJ0ZhaWxlZCBoYW5kc2hh
a2Ugb24gdGhlIGRlZmF1bHQgY2hhbm5lbCBpZCcpCiAgICAgICAgIHNlbGYuX2FkZF9sb2dpY2Fs
X2NoYW5uZWwobG9naWNhbF9yZXF1ZXN0KQpAQCAtMTI4Nyw3ICsxNTE3LDYgQEAgY2xhc3MgX011
eEhhbmRsZXIob2JqZWN0KToKICAgICAgICAgICAgICAgICBpZiBub3Qgc2VsZi5fd29ya2VyX2Rv
bmVfbm90aWZ5X3JlY2VpdmVkOgogICAgICAgICAgICAgICAgICAgICBzZWxmLl9sb2dnZXIuZGVi
dWcoJ1dhaXRpbmcgd29ya2VyKHMpIHRpbWVkIG91dCcpCiAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBGYWxzZQotCiAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICBzZWxmLl9sb2dpY2Fs
X2NoYW5uZWxzX2NvbmRpdGlvbi5yZWxlYXNlKCkKIApAQCAtMTI5Nyw3ICsxNTI2LDcgQEAgY2xh
c3MgX011eEhhbmRsZXIob2JqZWN0KToKIAogICAgICAgICByZXR1cm4gVHJ1ZQogCi0gICAgZGVm
IG5vdGlmeV93cml0ZV9kb25lKHNlbGYsIGNoYW5uZWxfaWQpOgorICAgIGRlZiBub3RpZnlfd3Jp
dGVfZGF0YV9kb25lKHNlbGYsIGNoYW5uZWxfaWQpOgogICAgICAgICAiIiJDYWxsZWQgYnkgdGhl
IHdyaXRlciB0aHJlYWQgd2hlbiBhIHdyaXRlIG9wZXJhdGlvbiBoYXMgZG9uZS4KIAogICAgICAg
ICBBcmdzOgpAQCAtMTMwOCw3ICsxNTM3LDcgQEAgY2xhc3MgX011eEhhbmRsZXIob2JqZWN0KToK
ICAgICAgICAgICAgIHNlbGYuX2xvZ2ljYWxfY2hhbm5lbHNfY29uZGl0aW9uLmFjcXVpcmUoKQog
ICAgICAgICAgICAgaWYgY2hhbm5lbF9pZCBpbiBzZWxmLl9sb2dpY2FsX2NoYW5uZWxzOgogICAg
ICAgICAgICAgICAgIGNoYW5uZWxfZGF0YSA9IHNlbGYuX2xvZ2ljYWxfY2hhbm5lbHNbY2hhbm5l
bF9pZF0KLSAgICAgICAgICAgICAgICBjaGFubmVsX2RhdGEucmVxdWVzdC5jb25uZWN0aW9uLm5v
dGlmeV93cml0ZV9kb25lKCkKKyAgICAgICAgICAgICAgICBjaGFubmVsX2RhdGEucmVxdWVzdC5j
b25uZWN0aW9uLm9uX3dyaXRlX2RhdGFfZG9uZSgpCiAgICAgICAgICAgICBlbHNlOgogICAgICAg
ICAgICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygnU2VlbXMgdGhhdCBsb2dpY2FsIGNoYW5uZWwg
Zm9yICVkIGhhcyBnb25lJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlIGNo
YW5uZWxfaWQpCkBAIC0xNDY5LDkgKzE2OTgsMTEgQEAgY2xhc3MgX011eEhhbmRsZXIob2JqZWN0
KToKICAgICAgICAgICAgICAgICByZXR1cm4KICAgICAgICAgICAgIGNoYW5uZWxfZGF0YSA9IHNl
bGYuX2xvZ2ljYWxfY2hhbm5lbHNbYmxvY2suY2hhbm5lbF9pZF0KICAgICAgICAgICAgIGNoYW5u
ZWxfZGF0YS5kcm9wX2NvZGUgPSBfRFJPUF9DT0RFX0FDS05PV0xFREdFRAorCiAgICAgICAgICAg
ICAjIENsb3NlIHRoZSBsb2dpY2FsIGNoYW5uZWwKICAgICAgICAgICAgIGNoYW5uZWxfZGF0YS5y
ZXF1ZXN0LmNvbm5lY3Rpb24uc2V0X3JlYWRfc3RhdGUoCiAgICAgICAgICAgICAgICAgX0xvZ2lj
YWxDb25uZWN0aW9uLlNUQVRFX1RFUk1JTkFURUQpCisgICAgICAgICAgICBjaGFubmVsX2RhdGEu
cmVxdWVzdC53c19zdHJlYW0uc3RvcF9zZW5kaW5nKCkKICAgICAgICAgZmluYWxseToKICAgICAg
ICAgICAgIHNlbGYuX2xvZ2ljYWxfY2hhbm5lbHNfY29uZGl0aW9uLnJlbGVhc2UoKQogCkBAIC0x
NTA2LDggKzE3MzcsMTEgQEAgY2xhc3MgX011eEhhbmRsZXIob2JqZWN0KToKICAgICAgICAgICAg
ICAgICByZXR1cm4KICAgICAgICAgICAgIGNoYW5uZWxfZGF0YSA9IHNlbGYuX2xvZ2ljYWxfY2hh
bm5lbHNbY2hhbm5lbF9pZF0KICAgICAgICAgICAgIGZpbiwgcnN2MSwgcnN2MiwgcnN2Mywgb3Bj
b2RlLCBwYXlsb2FkID0gcGFyc2VyLnJlYWRfaW5uZXJfZnJhbWUoKQorICAgICAgICAgICAgY29u
c3VtaW5nX2J5dGUgPSBsZW4ocGF5bG9hZCkKKyAgICAgICAgICAgIGlmIG9wY29kZSAhPSBjb21t
b24uT1BDT0RFX0NPTlRJTlVBVElPTjoKKyAgICAgICAgICAgICAgICBjb25zdW1pbmdfYnl0ZSAr
PSAxCiAgICAgICAgICAgICBpZiBub3QgY2hhbm5lbF9kYXRhLnJlcXVlc3Qud3Nfc3RyZWFtLmNv
bnN1bWVfcmVjZWl2ZV9xdW90YSgKLSAgICAgICAgICAgICAgICBsZW4ocGF5bG9hZCkpOgorICAg
ICAgICAgICAgICAgIGNvbnN1bWluZ19ieXRlKToKICAgICAgICAgICAgICAgICAjIFRoZSBjbGll
bnQgdmlvbGF0ZXMgcXVvdGEuIENsb3NlIGxvZ2ljYWwgY2hhbm5lbC4KICAgICAgICAgICAgICAg
ICByYWlzZSBMb2dpY2FsQ2hhbm5lbEVycm9yKAogICAgICAgICAgICAgICAgICAgICBjaGFubmVs
X2lkLCBfRFJPUF9DT0RFX1NFTkRfUVVPVEFfVklPTEFUSU9OKQpAQCAtMTU2OSwxNSArMTgwMywz
MiBAQCBjbGFzcyBfTXV4SGFuZGxlcihvYmplY3QpOgogICAgICAgICBmaW5pc2hlZC4KICAgICAg
ICAgIiIiCiAKLSAgICAgICAgIyBUZXJtaW5hdGUgYWxsIGxvZ2ljYWwgY29ubmVjdGlvbnMKLSAg
ICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCd0ZXJtaWF0aW5nIGFsbCBsb2dpY2FsIGNvbm5lY3Rp
b25zLi4uJykKKyAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKAorICAgICAgICAgICAgJ1Rlcm1p
YXRpbmcgYWxsIGxvZ2ljYWwgY29ubmVjdGlvbnMgd2FpdGluZyBmb3IgaW5jb21pbmcgZGF0YSAn
CisgICAgICAgICAgICAnLi4uJykKICAgICAgICAgc2VsZi5fbG9naWNhbF9jaGFubmVsc19jb25k
aXRpb24uYWNxdWlyZSgpCiAgICAgICAgIGZvciBjaGFubmVsX2RhdGEgaW4gc2VsZi5fbG9naWNh
bF9jaGFubmVscy52YWx1ZXMoKToKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICBj
aGFubmVsX2RhdGEucmVxdWVzdC5jb25uZWN0aW9uLnNldF9yZWFkX3N0YXRlKAogICAgICAgICAg
ICAgICAgICAgICBfTG9naWNhbENvbm5lY3Rpb24uU1RBVEVfVEVSTUlOQVRFRCkKICAgICAgICAg
ICAgIGV4Y2VwdCBFeGNlcHRpb246Ci0gICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAg
ICAgIHNlbGYuX2xvZ2dlci5kZWJ1Zyh0cmFjZWJhY2suZm9ybWF0X2V4YygpKQorICAgICAgICBz
ZWxmLl9sb2dpY2FsX2NoYW5uZWxzX2NvbmRpdGlvbi5yZWxlYXNlKCkKKworICAgIGRlZiBub3Rp
Znlfd3JpdGVyX2RvbmUoc2VsZik6CisgICAgICAgICIiIlRoaXMgbWV0aG9kIGlzIGNhbGxlZCBi
eSB0aGUgd3JpdGVyIHRocmVhZCB3aGVuIHRoZSB3cml0ZXIgaGFzCisgICAgICAgIGZpbmlzaGVk
LgorICAgICAgICAiIiIKKworICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoCisgICAgICAgICAg
ICAnVGVybWlhdGluZyBhbGwgbG9naWNhbCBjb25uZWN0aW9ucyB3YWl0aW5nIGZvciB3cml0ZSAn
CisgICAgICAgICAgICAnY29tcGxldGlvbiAuLi4nKQorICAgICAgICBzZWxmLl9sb2dpY2FsX2No
YW5uZWxzX2NvbmRpdGlvbi5hY3F1aXJlKCkKKyAgICAgICAgZm9yIGNoYW5uZWxfZGF0YSBpbiBz
ZWxmLl9sb2dpY2FsX2NoYW5uZWxzLnZhbHVlcygpOgorICAgICAgICAgICAgdHJ5OgorICAgICAg
ICAgICAgICAgIGNoYW5uZWxfZGF0YS5yZXF1ZXN0LmNvbm5lY3Rpb24ub25fd3JpdGVyX2RvbmUo
KQorICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbjoKKyAgICAgICAgICAgICAgICBzZWxmLl9s
b2dnZXIuZGVidWcodHJhY2ViYWNrLmZvcm1hdF9leGMoKSkKICAgICAgICAgc2VsZi5fbG9naWNh
bF9jaGFubmVsc19jb25kaXRpb24ucmVsZWFzZSgpCiAKICAgICBkZWYgZmFpbF9waHlzaWNhbF9j
b25uZWN0aW9uKHNlbGYsIGNvZGUsIG1lc3NhZ2UpOgpAQCAtMTU5MCw4ICsxODQxLDcgQEAgY2xh
c3MgX011eEhhbmRsZXIob2JqZWN0KToKIAogICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJ0Zh
aWxpbmcgdGhlIHBoeXNpY2FsIGNvbm5lY3Rpb24uLi4nKQogICAgICAgICBzZWxmLl9zZW5kX2Ry
b3BfY2hhbm5lbChfQ09OVFJPTF9DSEFOTkVMX0lELCBjb2RlLCBtZXNzYWdlKQotICAgICAgICBz
ZWxmLnBoeXNpY2FsX3N0cmVhbS5jbG9zZV9jb25uZWN0aW9uKAotICAgICAgICAgICAgY29tbW9u
LlNUQVRVU19JTlRFUk5BTF9FTkRQT0lOVF9FUlJPUikKKyAgICAgICAgc2VsZi5fd3JpdGVyLnN0
b3AoY29tbW9uLlNUQVRVU19JTlRFUk5BTF9FTkRQT0lOVF9FUlJPUikKIAogICAgIGRlZiBmYWls
X2xvZ2ljYWxfY2hhbm5lbChzZWxmLCBjaGFubmVsX2lkLCBjb2RlLCBtZXNzYWdlKToKICAgICAg
ICAgIiIiRmFpbCBhIGxvZ2ljYWwgY2hhbm5lbC4KQEAgLTE2MTEsOCArMTg2MSwxMCBAQCBjbGFz
cyBfTXV4SGFuZGxlcihvYmplY3QpOgogICAgICAgICAgICAgICAgICMgY2FsbGVkIGxhdGVyIGFu
ZCBpdCB3aWxsIHNlbmQgRHJvcENoYW5uZWwuCiAgICAgICAgICAgICAgICAgY2hhbm5lbF9kYXRh
LmRyb3BfY29kZSA9IGNvZGUKICAgICAgICAgICAgICAgICBjaGFubmVsX2RhdGEuZHJvcF9tZXNz
YWdlID0gbWVzc2FnZQorCiAgICAgICAgICAgICAgICAgY2hhbm5lbF9kYXRhLnJlcXVlc3QuY29u
bmVjdGlvbi5zZXRfcmVhZF9zdGF0ZSgKICAgICAgICAgICAgICAgICAgICAgX0xvZ2ljYWxDb25u
ZWN0aW9uLlNUQVRFX1RFUk1JTkFURUQpCisgICAgICAgICAgICAgICAgY2hhbm5lbF9kYXRhLnJl
cXVlc3Qud3Nfc3RyZWFtLnN0b3Bfc2VuZGluZygpCiAgICAgICAgICAgICBlbHNlOgogICAgICAg
ICAgICAgICAgIHNlbGYuX3NlbmRfZHJvcF9jaGFubmVsKGNoYW5uZWxfaWQsIGNvZGUsIG1lc3Nh
Z2UpCiAgICAgICAgIGZpbmFsbHk6CkBAIC0xNjIwLDcgKzE4NzIsOCBAQCBjbGFzcyBfTXV4SGFu
ZGxlcihvYmplY3QpOgogCiAKIGRlZiB1c2VfbXV4KHJlcXVlc3QpOgotICAgIHJldHVybiBoYXNh
dHRyKHJlcXVlc3QsICdtdXgnKSBhbmQgcmVxdWVzdC5tdXgKKyAgICByZXR1cm4gaGFzYXR0cihy
ZXF1ZXN0LCAnbXV4X3Byb2Nlc3NvcicpIGFuZCAoCisgICAgICAgIHJlcXVlc3QubXV4X3Byb2Nl
c3Nvci5pc19hY3RpdmUoKSkKIAogCiBkZWYgc3RhcnQocmVxdWVzdCwgZGlzcGF0Y2hlcik6CmRp
ZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3RoaXJkcGFydHkvbW9kX3B5d2Vic29j
a2V0L3N0YW5kYWxvbmUucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3RoaXJkcGFydHkvbW9k
X3B5d2Vic29ja2V0L3N0YW5kYWxvbmUucHkKaW5kZXggMDdhMzNkOWM5NDBiYmMzNGVhYzE1OTcx
YjdhOWMzN2RlMDI4ODdkZC4uMmJmM2IwYzI4NmY2NDEyMmY0MWZhZTk4OGRlNTJmYzlhNzYwYTFm
OCAxMDA3NTUKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90aGlyZHBhcnR5L21vZF9weXdl
YnNvY2tldC9zdGFuZGFsb25lLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGhpcmRw
YXJ0eS9tb2RfcHl3ZWJzb2NrZXQvc3RhbmRhbG9uZS5weQpAQCAtNzYsNiArNzYsOSBAQCBTVVBQ
T1JUSU5HIFRMUwogCiBUbyBzdXBwb3J0IFRMUywgcnVuIHN0YW5kYWxvbmUucHkgd2l0aCAtdCwg
LWssIGFuZCAtYyBvcHRpb25zLgogCitOb3RlIHRoYXQgd2hlbiBzc2wgbW9kdWxlIGlzIHVzZWQg
YW5kIHRoZSBrZXkvY2VydCBsb2NhdGlvbiBpcyBpbmNvcnJlY3QsCitUTFMgY29ubmVjdGlvbiBz
aWxlbnRseSBmYWlscyB3aGlsZSBweU9wZW5TU0wgZmFpbHMgb24gc3RhcnR1cC4KKwogCiBTVVBQ
T1JUSU5HIENMSUVOVCBBVVRIRU5USUNBVElPTgogCkBAIC0xNDAsMTggKzE0Myw2IEBAIGltcG9y
dCBzeXMKIGltcG9ydCB0aHJlYWRpbmcKIGltcG9ydCB0aW1lCiAKLV9IQVNfU1NMID0gRmFsc2UK
LV9IQVNfT1BFTl9TU0wgPSBGYWxzZQotdHJ5OgotICAgIGltcG9ydCBzc2wKLSAgICBfSEFTX1NT
TCA9IFRydWUKLWV4Y2VwdCBJbXBvcnRFcnJvcjoKLSAgICB0cnk6Ci0gICAgICAgIGltcG9ydCBP
cGVuU1NMLlNTTAotICAgICAgICBfSEFTX09QRU5fU1NMID0gVHJ1ZQotICAgIGV4Y2VwdCBJbXBv
cnRFcnJvcjoKLSAgICAgICAgcGFzcwotCiBmcm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQgY29t
bW9uCiBmcm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQgZGlzcGF0Y2gKIGZyb20gbW9kX3B5d2Vi
c29ja2V0IGltcG9ydCBoYW5kc2hha2UKQEAgLTE2OCw2ICsxNTksMTAgQEAgX0RFRkFVTFRfUkVR
VUVTVF9RVUVVRV9TSVpFID0gMTI4CiAjIDEwMjQgaXMgcHJhY3RpY2FsbHkgbGFyZ2UgZW5vdWdo
IHRvIGNvbnRhaW4gV2ViU29ja2V0IGhhbmRzaGFrZSBsaW5lcy4KIF9NQVhfTUVNT1JJWkVEX0xJ
TkVTID0gMTAyNAogCisjIENvbnN0YW50cyBmb3IgdGhlIC0tdGxzX21vZHVsZSBmbGFnLgorX1RM
U19CWV9TVEFOREFSRF9NT0RVTEUgPSAnc3NsJworX1RMU19CWV9QWU9QRU5TU0wgPSAncHlvcGVu
c3NsJworCiAKIGNsYXNzIF9TdGFuZGFsb25lQ29ubmVjdGlvbihvYmplY3QpOgogICAgICIiIk1p
bWljIG1vZF9weXRob24gbXBfY29ubi4iIiIKQEAgLTIzMSwxMSArMjI2LDIzIEBAIGNsYXNzIF9T
dGFuZGFsb25lUmVxdWVzdChvYmplY3QpOgogICAgICAgICBzZWxmLmhlYWRlcnNfaW4gPSByZXF1
ZXN0X2hhbmRsZXIuaGVhZGVycwogCiAgICAgZGVmIGdldF91cmkoc2VsZik6Ci0gICAgICAgICIi
IkdldHRlciB0byBtaW1pYyByZXF1ZXN0LnVyaS4iIiIKKyAgICAgICAgIiIiR2V0dGVyIHRvIG1p
bWljIHJlcXVlc3QudXJpLgorCisgICAgICAgIFRoaXMgbWV0aG9kIHJldHVybnMgdGhlIHJhdyBk
YXRhIGF0IHRoZSBSZXF1ZXN0LVVSSSBwYXJ0IG9mIHRoZQorICAgICAgICBSZXF1ZXN0LUxpbmUs
IHdoaWxlIHRoZSB1cmkgbWV0aG9kIG9uIHRoZSByZXF1ZXN0IG9iamVjdCBvZiBtb2RfcHl0aG9u
CisgICAgICAgIHJldHVybnMgdGhlIHBhdGggcG9ydGlvbiBhZnRlciBwYXJzaW5nIHRoZSByYXcg
ZGF0YS4gVGhpcyBiZWhhdmlvciBpcworICAgICAgICBrZXB0IGZvciBjb21wYXRpYmlsaXR5Lgor
ICAgICAgICAiIiIKIAogICAgICAgICByZXR1cm4gc2VsZi5fcmVxdWVzdF9oYW5kbGVyLnBhdGgK
ICAgICB1cmkgPSBwcm9wZXJ0eShnZXRfdXJpKQogCisgICAgZGVmIGdldF91bnBhcnNlZF91cmko
c2VsZik6CisgICAgICAgICIiIkdldHRlciB0byBtaW1pYyByZXF1ZXN0LnVucGFyc2VkX3VyaS4i
IiIKKworICAgICAgICByZXR1cm4gc2VsZi5fcmVxdWVzdF9oYW5kbGVyLnBhdGgKKyAgICB1bnBh
cnNlZF91cmkgPSBwcm9wZXJ0eShnZXRfdW5wYXJzZWRfdXJpKQorCiAgICAgZGVmIGdldF9tZXRo
b2Qoc2VsZik6CiAgICAgICAgICIiIkdldHRlciB0byBtaW1pYyByZXF1ZXN0Lm1ldGhvZC4iIiIK
IApAQCAtMjUzLDM5ICsyNjAsNjggQEAgY2xhc3MgX1N0YW5kYWxvbmVSZXF1ZXN0KG9iamVjdCk6
CiAKICAgICAgICAgcmV0dXJuIHNlbGYuX3VzZV90bHMKIAotICAgIGRlZiBfZHJhaW5fcmVjZWl2
ZWRfZGF0YShzZWxmKToKLSAgICAgICAgIiIiRG9uJ3QgdXNlIHRoaXMgbWV0aG9kIGZyb20gV2Vi
U29ja2V0IGhhbmRsZXIuIERyYWlucyB1bnJlYWQgZGF0YQotICAgICAgICBpbiB0aGUgcmVjZWl2
ZSBidWZmZXIuCi0gICAgICAgICIiIgogCi0gICAgICAgIHJhd19zb2NrZXQgPSBzZWxmLl9yZXF1
ZXN0X2hhbmRsZXIuY29ubmVjdGlvbgotICAgICAgICBkcmFpbmVkX2RhdGEgPSB1dGlsLmRyYWlu
X3JlY2VpdmVkX2RhdGEocmF3X3NvY2tldCkKK2RlZiBfaW1wb3J0X3NzbCgpOgorICAgIGdsb2Jh
bCBzc2wKKyAgICB0cnk6CisgICAgICAgIGltcG9ydCBzc2wKKyAgICAgICAgcmV0dXJuIFRydWUK
KyAgICBleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgICAgIHJldHVybiBGYWxzZQorCiAKLSAgICAg
ICAgaWYgZHJhaW5lZF9kYXRhOgotICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKAotICAg
ICAgICAgICAgICAgICdEcmFpbmVkIGRhdGEgZm9sbG93aW5nIGNsb3NlIGZyYW1lOiAlcicsIGRy
YWluZWRfZGF0YSkKK2RlZiBfaW1wb3J0X3B5b3BlbnNzbCgpOgorICAgIGdsb2JhbCBPcGVuU1NM
CisgICAgdHJ5OgorICAgICAgICBpbXBvcnQgT3BlblNTTC5TU0wKKyAgICAgICAgcmV0dXJuIFRy
dWUKKyAgICBleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgICAgIHJldHVybiBGYWxzZQogCiAKIGNs
YXNzIF9TdGFuZGFsb25lU1NMQ29ubmVjdGlvbihvYmplY3QpOgotICAgICIiIkEgd3JhcHBlciBj
bGFzcyBmb3IgT3BlblNTTC5TU0wuQ29ubmVjdGlvbiB0byBwcm92aWRlIG1ha2VmaWxlIG1ldGhv
ZAotICAgIHdoaWNoIGlzIG5vdCBzdXBwb3J0ZWQgYnkgdGhlIGNsYXNzLgorICAgICIiIkEgd3Jh
cHBlciBjbGFzcyBmb3IgT3BlblNTTC5TU0wuQ29ubmVjdGlvbiB0bworICAgIC0gcHJvdmlkZSBt
YWtlZmlsZSBtZXRob2Qgd2hpY2ggaXMgbm90IHN1cHBvcnRlZCBieSB0aGUgY2xhc3MKKyAgICAt
IHR3ZWFrIHNodXRkb3duIG1ldGhvZCBzaW5jZSBPcGVuU1NMLlNTTC5Db25uZWN0aW9uLnNodXRk
b3duIGRvZXNuJ3QKKyAgICAgIGFjY2VwdCB0aGUgImhvdyIgYXJndW1lbnQuCisgICAgLSBjb252
ZXJ0IFN5c0NhbGxFcnJvciBleGNlcHRpb25zIHRoYXQgaXRzIHJlY3YgbWV0aG9kIG1heSByYWlz
ZSBpbnRvIGEKKyAgICAgIHJldHVybiB2YWx1ZSBvZiAnJywgbWVhbmluZyBFT0YuIFdlIGNhbm5v
dCBvdmVyd3JpdGUgdGhlIHJlY3YgbWV0aG9kIG9uCisgICAgICBzZWxmLl9jb25uZWN0aW9uIHNp
bmNlIGl0J3MgaW1tdXRhYmxlLgogICAgICIiIgogCisgICAgX09WRVJSSURERU5fQVRUUklCVVRF
UyA9IFsnX2Nvbm5lY3Rpb24nLCAnbWFrZWZpbGUnLCAnc2h1dGRvd24nLCAncmVjdiddCisKICAg
ICBkZWYgX19pbml0X18oc2VsZiwgY29ubmVjdGlvbik6CiAgICAgICAgIHNlbGYuX2Nvbm5lY3Rp
b24gPSBjb25uZWN0aW9uCiAKICAgICBkZWYgX19nZXRhdHRyaWJ1dGVfXyhzZWxmLCBuYW1lKToK
LSAgICAgICAgaWYgbmFtZSBpbiAoJ19jb25uZWN0aW9uJywgJ21ha2VmaWxlJyk6CisgICAgICAg
IGlmIG5hbWUgaW4gX1N0YW5kYWxvbmVTU0xDb25uZWN0aW9uLl9PVkVSUklEREVOX0FUVFJJQlVU
RVM6CiAgICAgICAgICAgICByZXR1cm4gb2JqZWN0Ll9fZ2V0YXR0cmlidXRlX18oc2VsZiwgbmFt
ZSkKICAgICAgICAgcmV0dXJuIHNlbGYuX2Nvbm5lY3Rpb24uX19nZXRhdHRyaWJ1dGVfXyhuYW1l
KQogCiAgICAgZGVmIF9fc2V0YXR0cl9fKHNlbGYsIG5hbWUsIHZhbHVlKToKLSAgICAgICAgaWYg
bmFtZSBpbiAoJ19jb25uZWN0aW9uJywgJ21ha2VmaWxlJyk6CisgICAgICAgIGlmIG5hbWUgaW4g
X1N0YW5kYWxvbmVTU0xDb25uZWN0aW9uLl9PVkVSUklEREVOX0FUVFJJQlVURVM6CiAgICAgICAg
ICAgICByZXR1cm4gb2JqZWN0Ll9fc2V0YXR0cl9fKHNlbGYsIG5hbWUsIHZhbHVlKQogICAgICAg
ICByZXR1cm4gc2VsZi5fY29ubmVjdGlvbi5fX3NldGF0dHJfXyhuYW1lLCB2YWx1ZSkKIAogICAg
IGRlZiBtYWtlZmlsZShzZWxmLCBtb2RlPSdyJywgYnVmc2l6ZT0tMSk6Ci0gICAgICAgIHJldHVy
biBzb2NrZXQuX2ZpbGVvYmplY3Qoc2VsZi5fY29ubmVjdGlvbiwgbW9kZSwgYnVmc2l6ZSkKKyAg
ICAgICAgcmV0dXJuIHNvY2tldC5fZmlsZW9iamVjdChzZWxmLCBtb2RlLCBidWZzaXplKQorCisg
ICAgZGVmIHNodXRkb3duKHNlbGYsIHVudXNlZF9ob3cpOgorICAgICAgICBzZWxmLl9jb25uZWN0
aW9uLnNodXRkb3duKCkKKworICAgIGRlZiByZWN2KHNlbGYsIGJ1ZnNpemUsIGZsYWdzPTApOgor
ICAgICAgICBpZiBmbGFncyAhPSAwOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignTm9u
LXplcm8gZmxhZ3Mgbm90IGFsbG93ZWQnKQorCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHJl
dHVybiBzZWxmLl9jb25uZWN0aW9uLnJlY3YoYnVmc2l6ZSkKKyAgICAgICAgZXhjZXB0IE9wZW5T
U0wuU1NMLlN5c0NhbGxFcnJvciwgKGVyciwgbWVzc2FnZSk6CisgICAgICAgICAgICBpZiBlcnIg
PT0gLTE6CisgICAgICAgICAgICAgICAgIyBTdXBwcmVzcyAidW5leHBlY3RlZCBFT0YiIGV4Y2Vw
dGlvbi4gU2VlIHRoZSBPcGVuU1NMIGRvY3VtZW50CisgICAgICAgICAgICAgICAgIyBmb3IgU1NM
X2dldF9lcnJvci4KKyAgICAgICAgICAgICAgICByZXR1cm4gJycKKyAgICAgICAgICAgIHJhaXNl
CiAKIAogZGVmIF9hbGlhc19oYW5kbGVycyhkaXNwYXRjaGVyLCB3ZWJzb2NrX2hhbmRsZXJzX21h
cF9maWxlKToKQEAgLTM0MCw3ICszNzYsNyBAQCBjbGFzcyBXZWJTb2NrZXRTZXJ2ZXIoU29ja2V0
U2VydmVyLlRocmVhZGluZ01peEluLCBCYXNlSFRUUFNlcnZlci5IVFRQU2VydmVyKToKICAgICAg
ICAgd2FybmluZ3MgPSBvcHRpb25zLmRpc3BhdGNoZXIuc291cmNlX3dhcm5pbmdzKCkKICAgICAg
ICAgaWYgd2FybmluZ3M6CiAgICAgICAgICAgICBmb3Igd2FybmluZyBpbiB3YXJuaW5nczoKLSAg
ICAgICAgICAgICAgICBsb2dnaW5nLndhcm5pbmcoJ21vZF9weXdlYnNvY2tldDogJXMnICUgd2Fy
bmluZykKKyAgICAgICAgICAgICAgICBsb2dnaW5nLndhcm5pbmcoJ1dhcm5pbmcgaW4gc291cmNl
IGxvYWRpbmc6ICVzJyAlIHdhcm5pbmcpCiAKICAgICAgICAgc2VsZi5fbG9nZ2VyID0gdXRpbC5n
ZXRfY2xhc3NfbG9nZ2VyKHNlbGYpCiAKQEAgLTM4NywyNSArNDIzLDI1IEBAIGNsYXNzIFdlYlNv
Y2tldFNlcnZlcihTb2NrZXRTZXJ2ZXIuVGhyZWFkaW5nTWl4SW4sIEJhc2VIVFRQU2VydmVyLkhU
VFBTZXJ2ZXIpOgogICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiwgZToKICAgICAgICAgICAg
ICAgICBzZWxmLl9sb2dnZXIuaW5mbygnU2tpcCBieSBmYWlsdXJlOiAlcicsIGUpCiAgICAgICAg
ICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgIGlmIHNlbGYud2Vic29ja2V0X3NlcnZlcl9v
cHRpb25zLnVzZV90bHM6Ci0gICAgICAgICAgICAgICAgaWYgX0hBU19TU0w6Ci0gICAgICAgICAg
ICAgICAgICAgIGlmIHNlbGYud2Vic29ja2V0X3NlcnZlcl9vcHRpb25zLnRsc19jbGllbnRfYXV0
aDoKLSAgICAgICAgICAgICAgICAgICAgICAgIGNsaWVudF9jZXJ0XyA9IHNzbC5DRVJUX1JFUVVJ
UkVECisgICAgICAgICAgICBzZXJ2ZXJfb3B0aW9ucyA9IHNlbGYud2Vic29ja2V0X3NlcnZlcl9v
cHRpb25zCisgICAgICAgICAgICBpZiBzZXJ2ZXJfb3B0aW9ucy51c2VfdGxzOgorICAgICAgICAg
ICAgICAgICMgRm9yIHRoZSBjYXNlIG9mIF9IQVNfT1BFTl9TU0wsIHdlIGRvIHdyYXBwZXIgc2V0
dXAgYWZ0ZXIKKyAgICAgICAgICAgICAgICAjIGFjY2VwdC4KKyAgICAgICAgICAgICAgICBpZiBz
ZXJ2ZXJfb3B0aW9ucy50bHNfbW9kdWxlID09IF9UTFNfQllfU1RBTkRBUkRfTU9EVUxFOgorICAg
ICAgICAgICAgICAgICAgICBpZiBzZXJ2ZXJfb3B0aW9ucy50bHNfY2xpZW50X2F1dGg6CisgICAg
ICAgICAgICAgICAgICAgICAgICBpZiBzZXJ2ZXJfb3B0aW9ucy50bHNfY2xpZW50X2NlcnRfb3B0
aW9uYWw6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xpZW50X2NlcnRfID0gc3NsLkNF
UlRfT1BUSU9OQUwKKyAgICAgICAgICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY2xpZW50X2NlcnRfID0gc3NsLkNFUlRfUkVRVUlSRUQKICAgICAgICAg
ICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgICAgIGNsaWVudF9jZXJ0XyA9
IHNzbC5DRVJUX05PTkUKICAgICAgICAgICAgICAgICAgICAgc29ja2V0XyA9IHNzbC53cmFwX3Nv
Y2tldChzb2NrZXRfLAotICAgICAgICAgICAgICAgICAgICAgICAga2V5ZmlsZT1zZWxmLndlYnNv
Y2tldF9zZXJ2ZXJfb3B0aW9ucy5wcml2YXRlX2tleSwKLSAgICAgICAgICAgICAgICAgICAgICAg
IGNlcnRmaWxlPXNlbGYud2Vic29ja2V0X3NlcnZlcl9vcHRpb25zLmNlcnRpZmljYXRlLAorICAg
ICAgICAgICAgICAgICAgICAgICAga2V5ZmlsZT1zZXJ2ZXJfb3B0aW9ucy5wcml2YXRlX2tleSwK
KyAgICAgICAgICAgICAgICAgICAgICAgIGNlcnRmaWxlPXNlcnZlcl9vcHRpb25zLmNlcnRpZmlj
YXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgc3NsX3ZlcnNpb249c3NsLlBST1RPQ09MX1NT
THYyMywKLSAgICAgICAgICAgICAgICAgICAgICAgIGNhX2NlcnRzPXNlbGYud2Vic29ja2V0X3Nl
cnZlcl9vcHRpb25zLnRsc19jbGllbnRfY2EsCi0gICAgICAgICAgICAgICAgICAgICAgICBjZXJ0
X3JlcXM9Y2xpZW50X2NlcnRfKQotICAgICAgICAgICAgICAgIGlmIF9IQVNfT1BFTl9TU0w6Ci0g
ICAgICAgICAgICAgICAgICAgIGN0eCA9IE9wZW5TU0wuU1NMLkNvbnRleHQoT3BlblNTTC5TU0wu
U1NMdjIzX01FVEhPRCkKLSAgICAgICAgICAgICAgICAgICAgY3R4LnVzZV9wcml2YXRla2V5X2Zp
bGUoCi0gICAgICAgICAgICAgICAgICAgICAgICBzZWxmLndlYnNvY2tldF9zZXJ2ZXJfb3B0aW9u
cy5wcml2YXRlX2tleSkKLSAgICAgICAgICAgICAgICAgICAgY3R4LnVzZV9jZXJ0aWZpY2F0ZV9m
aWxlKAotICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi53ZWJzb2NrZXRfc2VydmVyX29wdGlv
bnMuY2VydGlmaWNhdGUpCi0gICAgICAgICAgICAgICAgICAgIHNvY2tldF8gPSBPcGVuU1NMLlNT
TC5Db25uZWN0aW9uKGN0eCwgc29ja2V0XykKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhX2Nl
cnRzPXNlcnZlcl9vcHRpb25zLnRsc19jbGllbnRfY2EsCisgICAgICAgICAgICAgICAgICAgICAg
ICBjZXJ0X3JlcXM9Y2xpZW50X2NlcnRfLAorICAgICAgICAgICAgICAgICAgICAgICAgZG9faGFu
ZHNoYWtlX29uX2Nvbm5lY3Q9RmFsc2UpCiAgICAgICAgICAgICBzZWxmLl9zb2NrZXRzLmFwcGVu
ZCgoc29ja2V0XywgYWRkcmluZm8pKQogCiAgICAgZGVmIHNlcnZlcl9iaW5kKHNlbGYpOgpAQCAt
NDc5LDcgKzUxNSw3IEBAIGNsYXNzIFdlYlNvY2tldFNlcnZlcihTb2NrZXRTZXJ2ZXIuVGhyZWFk
aW5nTWl4SW4sIEJhc2VIVFRQU2VydmVyLkhUVFBTZXJ2ZXIpOgogICAgICAgICBzZWxmLl9sb2dn
ZXIuY3JpdGljYWwoJ05vdCBzdXBwb3J0ZWQ6IGZpbGVubycpCiAgICAgICAgIHJldHVybiBzZWxm
Ll9zb2NrZXRzWzBdWzBdLmZpbGVubygpCiAKLSAgICBkZWYgaGFuZGxlX2Vycm9yKHNlbGYsIHJx
dWVzdCwgY2xpZW50X2FkZHJlc3MpOgorICAgIGRlZiBoYW5kbGVfZXJyb3Ioc2VsZiwgcmVxdWVz
dCwgY2xpZW50X2FkZHJlc3MpOgogICAgICAgICAiIiJPdmVycmlkZSBTb2NrZXRTZXJ2ZXIuaGFu
ZGxlX2Vycm9yLiIiIgogCiAgICAgICAgIHNlbGYuX2xvZ2dlci5lcnJvcigKQEAgLTQ5Niw4ICs1
MzIsNjMgQEAgY2xhc3MgV2ViU29ja2V0U2VydmVyKFNvY2tldFNlcnZlci5UaHJlYWRpbmdNaXhJ
biwgQmFzZUhUVFBTZXJ2ZXIuSFRUUFNlcnZlcik6CiAgICAgICAgICIiIgogCiAgICAgICAgIGFj
Y2VwdGVkX3NvY2tldCwgY2xpZW50X2FkZHJlc3MgPSBzZWxmLnNvY2tldC5hY2NlcHQoKQotICAg
ICAgICBpZiBzZWxmLndlYnNvY2tldF9zZXJ2ZXJfb3B0aW9ucy51c2VfdGxzIGFuZCBfSEFTX09Q
RU5fU1NMOgotICAgICAgICAgICAgYWNjZXB0ZWRfc29ja2V0ID0gX1N0YW5kYWxvbmVTU0xDb25u
ZWN0aW9uKGFjY2VwdGVkX3NvY2tldCkKKworICAgICAgICBzZXJ2ZXJfb3B0aW9ucyA9IHNlbGYu
d2Vic29ja2V0X3NlcnZlcl9vcHRpb25zCisgICAgICAgIGlmIHNlcnZlcl9vcHRpb25zLnVzZV90
bHM6CisgICAgICAgICAgICBpZiBzZXJ2ZXJfb3B0aW9ucy50bHNfbW9kdWxlID09IF9UTFNfQllf
U1RBTkRBUkRfTU9EVUxFOgorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAg
ICAgYWNjZXB0ZWRfc29ja2V0LmRvX2hhbmRzaGFrZSgpCisgICAgICAgICAgICAgICAgZXhjZXB0
IHNzbC5TU0xFcnJvciwgZToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVn
KCclcicsIGUpCisgICAgICAgICAgICAgICAgICAgIHJhaXNlCisKKyAgICAgICAgICAgICAgICAj
IFByaW50IGNpcGhlciBpbiB1c2UuIEhhbmRzaGFrZSBpcyBkb25lIG9uIGFjY2VwdC4KKyAgICAg
ICAgICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJ0NpcGhlcjogJXMnLCBhY2NlcHRlZF9zb2Nr
ZXQuY2lwaGVyKCkpCisgICAgICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdDbGllbnQg
Y2VydDogJXInLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY2NlcHRlZF9z
b2NrZXQuZ2V0cGVlcmNlcnQoKSkKKyAgICAgICAgICAgIGVsaWYgc2VydmVyX29wdGlvbnMudGxz
X21vZHVsZSA9PSBfVExTX0JZX1BZT1BFTlNTTDoKKyAgICAgICAgICAgICAgICAjIFdlIGNhbm5v
dCBwcmludCB0aGUgY2lwaGVyIGluIHVzZS4gcHlPcGVuU1NMIGRvZXNuJ3QgcHJvdmlkZQorICAg
ICAgICAgICAgICAgICMgYW55IG1ldGhvZCB0byBmZXRjaCB0aGF0LgorCisgICAgICAgICAgICAg
ICAgY3R4ID0gT3BlblNTTC5TU0wuQ29udGV4dChPcGVuU1NMLlNTTC5TU0x2MjNfTUVUSE9EKQor
ICAgICAgICAgICAgICAgIGN0eC51c2VfcHJpdmF0ZWtleV9maWxlKHNlcnZlcl9vcHRpb25zLnBy
aXZhdGVfa2V5KQorICAgICAgICAgICAgICAgIGN0eC51c2VfY2VydGlmaWNhdGVfZmlsZShzZXJ2
ZXJfb3B0aW9ucy5jZXJ0aWZpY2F0ZSkKKworICAgICAgICAgICAgICAgIGRlZiBkZWZhdWx0X2Nh
bGxiYWNrKGNvbm4sIGNlcnQsIGVycm51bSwgZXJyZGVwdGgsIG9rKToKKyAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIG9rID09IDEKKworICAgICAgICAgICAgICAgICMgU2VlIHRoZSBPcGVuU1NM
IGRvY3VtZW50IGZvciBTU0xfQ1RYX3NldF92ZXJpZnkuCisgICAgICAgICAgICAgICAgaWYgc2Vy
dmVyX29wdGlvbnMudGxzX2NsaWVudF9hdXRoOgorICAgICAgICAgICAgICAgICAgICB2ZXJpZnlf
bW9kZSA9IE9wZW5TU0wuU1NMLlZFUklGWV9QRUVSCisgICAgICAgICAgICAgICAgICAgIGlmIG5v
dCBzZXJ2ZXJfb3B0aW9ucy50bHNfY2xpZW50X2NlcnRfb3B0aW9uYWw6CisgICAgICAgICAgICAg
ICAgICAgICAgICB2ZXJpZnlfbW9kZSB8PSBPcGVuU1NMLlNTTC5WRVJJRllfRkFJTF9JRl9OT19Q
RUVSX0NFUlQKKyAgICAgICAgICAgICAgICAgICAgY3R4LnNldF92ZXJpZnkodmVyaWZ5X21vZGUs
IGRlZmF1bHRfY2FsbGJhY2spCisgICAgICAgICAgICAgICAgICAgIGN0eC5sb2FkX3ZlcmlmeV9s
b2NhdGlvbnMoc2VydmVyX29wdGlvbnMudGxzX2NsaWVudF9jYSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOb25lKQorICAgICAgICAgICAgICAgIGVsc2U6
CisgICAgICAgICAgICAgICAgICAgIGN0eC5zZXRfdmVyaWZ5KE9wZW5TU0wuU1NMLlZFUklGWV9O
T05FLCBkZWZhdWx0X2NhbGxiYWNrKQorCisgICAgICAgICAgICAgICAgYWNjZXB0ZWRfc29ja2V0
ID0gT3BlblNTTC5TU0wuQ29ubmVjdGlvbihjdHgsIGFjY2VwdGVkX3NvY2tldCkKKyAgICAgICAg
ICAgICAgICBhY2NlcHRlZF9zb2NrZXQuc2V0X2FjY2VwdF9zdGF0ZSgpCisKKyAgICAgICAgICAg
ICAgICAjIENvbnZlcnQgU1NMIHJlbGF0ZWQgZXJyb3IgaW50byBzb2NrZXQuZXJyb3Igc28gdGhh
dAorICAgICAgICAgICAgICAgICMgU29ja2V0U2VydmVyIGlnbm9yZXMgdGhlbSBhbmQga2VlcHMg
cnVubmluZy4KKyAgICAgICAgICAgICAgICAjCisgICAgICAgICAgICAgICAgIyBUT0RPKHR5b3No
aW5vKTogQ29udmVydCBhbGwga2luZHMgb2YgZXJyb3JzLgorICAgICAgICAgICAgICAgIHRyeToK
KyAgICAgICAgICAgICAgICAgICAgYWNjZXB0ZWRfc29ja2V0LmRvX2hhbmRzaGFrZSgpCisgICAg
ICAgICAgICAgICAgZXhjZXB0IE9wZW5TU0wuU1NMLkVycm9yLCBlOgorICAgICAgICAgICAgICAg
ICAgICAjIFNldCBlcnJubyBwYXJ0IHRvIDEgKFNTTF9FUlJPUl9TU0wpIGxpa2UgdGhlIHNzbCBt
b2R1bGUKKyAgICAgICAgICAgICAgICAgICAgIyBkb2VzLgorICAgICAgICAgICAgICAgICAgICBz
ZWxmLl9sb2dnZXIuZGVidWcoJyVyJywgZSkKKyAgICAgICAgICAgICAgICAgICAgcmFpc2Ugc29j
a2V0LmVycm9yKDEsICclcicgJSBlKQorICAgICAgICAgICAgICAgIGNlcnQgPSBhY2NlcHRlZF9z
b2NrZXQuZ2V0X3BlZXJfY2VydGlmaWNhdGUoKQorICAgICAgICAgICAgICAgIHNlbGYuX2xvZ2dl
ci5kZWJ1ZygnQ2xpZW50IGNlcnQgc3ViamVjdDogJXInLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjZXJ0LmdldF9zdWJqZWN0KCkuZ2V0X2NvbXBvbmVudHMoKSkKKyAgICAg
ICAgICAgICAgICBhY2NlcHRlZF9zb2NrZXQgPSBfU3RhbmRhbG9uZVNTTENvbm5lY3Rpb24oYWNj
ZXB0ZWRfc29ja2V0KQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICByYWlzZSBW
YWx1ZUVycm9yKCdObyBUTFMgc3VwcG9ydCBtb2R1bGUgaXMgYXZhaWxhYmxlJykKKwogICAgICAg
ICByZXR1cm4gYWNjZXB0ZWRfc29ja2V0LCBjbGllbnRfYWRkcmVzcwogCiAgICAgZGVmIHNlcnZl
X2ZvcmV2ZXIoc2VsZiwgcG9sbF9pbnRlcnZhbD0wLjUpOgpAQCAtNjM2LDcgKzcyNyw3IEBAIGNs
YXNzIFdlYlNvY2tldFJlcXVlc3RIYW5kbGVyKENHSUhUVFBTZXJ2ZXIuQ0dJSFRUUFJlcXVlc3RI
YW5kbGVyKToKICAgICAgICAgICAgICAgICBzZWxmLl9sb2dnZXIuaW5mbygnRmFsbGJhY2sgdG8g
Q0dJSFRUUFJlcXVlc3RIYW5kbGVyJykKICAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQogICAg
ICAgICBleGNlcHQgZGlzcGF0Y2guRGlzcGF0Y2hFeGNlcHRpb24sIGU6Ci0gICAgICAgICAgICBz
ZWxmLl9sb2dnZXIuaW5mbygnJXMnLCBlKQorICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmluZm8o
J0Rpc3BhdGNoIGZhaWxlZCBmb3IgZXJyb3I6ICVzJywgZSkKICAgICAgICAgICAgIHNlbGYuc2Vu
ZF9lcnJvcihlLnN0YXR1cykKICAgICAgICAgICAgIHJldHVybiBGYWxzZQogCkBAIC02NTIsNyAr
NzQzLDcgQEAgY2xhc3MgV2ViU29ja2V0UmVxdWVzdEhhbmRsZXIoQ0dJSFRUUFNlcnZlci5DR0lI
VFRQUmVxdWVzdEhhbmRsZXIpOgogICAgICAgICAgICAgICAgICAgICBhbGxvd0RyYWZ0NzU9c2Vs
Zi5fb3B0aW9ucy5hbGxvd19kcmFmdDc1LAogICAgICAgICAgICAgICAgICAgICBzdHJpY3Q9c2Vs
Zi5fb3B0aW9ucy5zdHJpY3QpCiAgICAgICAgICAgICBleGNlcHQgaGFuZHNoYWtlLlZlcnNpb25F
eGNlcHRpb24sIGU6Ci0gICAgICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmluZm8oJyVzJywgZSkK
KyAgICAgICAgICAgICAgICBzZWxmLl9sb2dnZXIuaW5mbygnSGFuZHNoYWtlIGZhaWxlZCBmb3Ig
dmVyc2lvbiBlcnJvcjogJXMnLCBlKQogICAgICAgICAgICAgICAgIHNlbGYuc2VuZF9yZXNwb25z
ZShjb21tb24uSFRUUF9TVEFUVVNfQkFEX1JFUVVFU1QpCiAgICAgICAgICAgICAgICAgc2VsZi5z
ZW5kX2hlYWRlcihjb21tb24uU0VDX1dFQlNPQ0tFVF9WRVJTSU9OX0hFQURFUiwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGUuc3VwcG9ydGVkX3ZlcnNpb25zKQpAQCAtNjYwLDE0
ICs3NTEsMTQgQEAgY2xhc3MgV2ViU29ja2V0UmVxdWVzdEhhbmRsZXIoQ0dJSFRUUFNlcnZlci5D
R0lIVFRQUmVxdWVzdEhhbmRsZXIpOgogICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQogICAg
ICAgICAgICAgZXhjZXB0IGhhbmRzaGFrZS5IYW5kc2hha2VFeGNlcHRpb24sIGU6CiAgICAgICAg
ICAgICAgICAgIyBIYW5kc2hha2UgZm9yIHdzKHMpIGZhaWxlZC4KLSAgICAgICAgICAgICAgICBz
ZWxmLl9sb2dnZXIuaW5mbygnJXMnLCBlKQorICAgICAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5p
bmZvKCdIYW5kc2hha2UgZmFpbGVkIGZvciBlcnJvcjogJXMnLCBlKQogICAgICAgICAgICAgICAg
IHNlbGYuc2VuZF9lcnJvcihlLnN0YXR1cykKICAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UK
IAogICAgICAgICAgICAgcmVxdWVzdC5fZGlzcGF0Y2hlciA9IHNlbGYuX29wdGlvbnMuZGlzcGF0
Y2hlcgogICAgICAgICAgICAgc2VsZi5fb3B0aW9ucy5kaXNwYXRjaGVyLnRyYW5zZmVyX2RhdGEo
cmVxdWVzdCkKICAgICAgICAgZXhjZXB0IGhhbmRzaGFrZS5BYm9ydGVkQnlVc2VyRXhjZXB0aW9u
LCBlOgotICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmluZm8oJyVzJywgZSkKKyAgICAgICAgICAg
IHNlbGYuX2xvZ2dlci5pbmZvKCdBYm9ydGVkOiAlcycsIGUpCiAgICAgICAgIHJldHVybiBGYWxz
ZQogCiAgICAgZGVmIGxvZ19yZXF1ZXN0KHNlbGYsIGNvZGU9Jy0nLCBzaXplPSctJyk6CkBAIC03
OTksNiArODkwLDEyIEBAIGRlZiBfYnVpbGRfb3B0aW9uX3BhcnNlcigpOgogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICdhcyBDR0kgcHJvZ3JhbXMuIE11c3QgYmUgZXhlY3V0YWJsZS4nKSkK
ICAgICBwYXJzZXIuYWRkX29wdGlvbignLXQnLCAnLS10bHMnLCBkZXN0PSd1c2VfdGxzJywgYWN0
aW9uPSdzdG9yZV90cnVlJywKICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0PUZhbHNlLCBo
ZWxwPSd1c2UgVExTICh3c3M6Ly8pJykKKyAgICBwYXJzZXIuYWRkX29wdGlvbignLS10bHMtbW9k
dWxlJywgJy0tdGxzX21vZHVsZScsIGRlc3Q9J3Rsc19tb2R1bGUnLAorICAgICAgICAgICAgICAg
ICAgICAgIHR5cGU9J2Nob2ljZScsCisgICAgICAgICAgICAgICAgICAgICAgY2hvaWNlcyA9IFtf
VExTX0JZX1NUQU5EQVJEX01PRFVMRSwgX1RMU19CWV9QWU9QRU5TU0xdLAorICAgICAgICAgICAg
ICAgICAgICAgIGhlbHA9J1VzZSBzc2wgbW9kdWxlIGlmICIlcyIgaXMgc3BlY2lmaWVkLiAnCisg
ICAgICAgICAgICAgICAgICAgICAgJ1VzZSBweU9wZW5TU0wgbW9kdWxlIGlmICIlcyIgaXMgc3Bl
Y2lmaWVkJyAlCisgICAgICAgICAgICAgICAgICAgICAgKF9UTFNfQllfU1RBTkRBUkRfTU9EVUxF
LCBfVExTX0JZX1BZT1BFTlNTTCkpCiAgICAgcGFyc2VyLmFkZF9vcHRpb24oJy1rJywgJy0tcHJp
dmF0ZS1rZXknLCAnLS1wcml2YXRlX2tleScsCiAgICAgICAgICAgICAgICAgICAgICAgZGVzdD0n
cHJpdmF0ZV9rZXknLAogICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9JycsIGhlbHA9J1RM
UyBwcml2YXRlIGtleSBmaWxlLicpCkBAIC04MDYsNyArOTAzLDEyIEBAIGRlZiBfYnVpbGRfb3B0
aW9uX3BhcnNlcigpOgogICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9JycsIGhlbHA9J1RM
UyBjZXJ0aWZpY2F0ZSBmaWxlLicpCiAgICAgcGFyc2VyLmFkZF9vcHRpb24oJy0tdGxzLWNsaWVu
dC1hdXRoJywgZGVzdD0ndGxzX2NsaWVudF9hdXRoJywKICAgICAgICAgICAgICAgICAgICAgICBh
Y3Rpb249J3N0b3JlX3RydWUnLCBkZWZhdWx0PUZhbHNlLAotICAgICAgICAgICAgICAgICAgICAg
IGhlbHA9J1JlcXVpcmVzIFRMUyBjbGllbnQgYXV0aCBvbiBldmVyeSBjb25uZWN0aW9uLicpCisg
ICAgICAgICAgICAgICAgICAgICAgaGVscD0nUmVxdWVzdHMgVExTIGNsaWVudCBhdXRoIG9uIGV2
ZXJ5IGNvbm5lY3Rpb24uJykKKyAgICBwYXJzZXIuYWRkX29wdGlvbignLS10bHMtY2xpZW50LWNl
cnQtb3B0aW9uYWwnLAorICAgICAgICAgICAgICAgICAgICAgIGRlc3Q9J3Rsc19jbGllbnRfY2Vy
dF9vcHRpb25hbCcsCisgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uPSdzdG9yZV90cnVlJywg
ZGVmYXVsdD1GYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICBoZWxwPSgnTWFrZXMgY2xpZW50
IGNlcnRpZmljYXRlIG9wdGlvbmFsIGV2ZW4gdGhvdWdoICcKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAnVExTIGNsaWVudCBhdXRoIGlzIGVuYWJsZWQuJykpCiAgICAgcGFyc2VyLmFkZF9v
cHRpb24oJy0tdGxzLWNsaWVudC1jYScsIGRlc3Q9J3Rsc19jbGllbnRfY2EnLCBkZWZhdWx0PScn
LAogICAgICAgICAgICAgICAgICAgICAgIGhlbHA9KCdTcGVjaWZpZXMgYSBwZW0gZmlsZSB3aGlj
aCBjb250YWlucyBhIHNldCBvZiAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NvbmNh
dGVuYXRlZCBDQSBjZXJ0aWZpY2F0ZXMgd2hpY2ggYXJlIHVzZWQgdG8gJwpAQCAtOTMzLDYgKzEw
MzUsMTIgQEAgZGVmIF9tYWluKGFyZ3M9Tm9uZSk6CiAKICAgICBfY29uZmlndXJlX2xvZ2dpbmco
b3B0aW9ucykKIAorICAgIGlmIG9wdGlvbnMuYWxsb3dfZHJhZnQ3NToKKyAgICAgICAgbG9nZ2lu
Zy53YXJuaW5nKCctLWFsbG93X2RyYWZ0NzUgb3B0aW9uIGlzIG9ic29sZXRlLicpCisKKyAgICBp
ZiBvcHRpb25zLnN0cmljdDoKKyAgICAgICAgbG9nZ2luZy53YXJuaW5nKCctLXN0cmljdCBvcHRp
b24gaXMgb2Jzb2xldGUuJykKKwogICAgICMgVE9ETyh0eW9zaGlubyk6IENsZWFuIHVwIGluaXRp
YWxpemF0aW9uIG9mIENHSSByZWxhdGVkIHZhbHVlcy4gTW92ZSBzb21lCiAgICAgIyBvZiBjb2Rl
IGhlcmUgdG8gV2ViU29ja2V0UmVxdWVzdEhhbmRsZXIgY2xhc3MgaWYgaXQncyBiZXR0ZXIuCiAg
ICAgb3B0aW9ucy5jZ2lfZGlyZWN0b3JpZXMgPSBbXQpAQCAtOTU1LDIwICsxMDYzLDUzIEBAIGRl
ZiBfbWFpbihhcmdzPU5vbmUpOgogICAgICAgICAgICAgb3B0aW9ucy5pc19leGVjdXRhYmxlX21l
dGhvZCA9IF9fY2hlY2tfc2NyaXB0CiAKICAgICBpZiBvcHRpb25zLnVzZV90bHM6Ci0gICAgICAg
IGlmIG5vdCAoX0hBU19TU0wgb3IgX0hBU19PUEVOX1NTTCk6Ci0gICAgICAgICAgICBsb2dnaW5n
LmNyaXRpY2FsKCdUTFMgc3VwcG9ydCByZXF1aXJlcyBzc2wgb3IgcHlPcGVuU1NMIG1vZHVsZS4n
KQorICAgICAgICBpZiBvcHRpb25zLnRsc19tb2R1bGUgaXMgTm9uZToKKyAgICAgICAgICAgIGlm
IF9pbXBvcnRfc3NsKCk6CisgICAgICAgICAgICAgICAgb3B0aW9ucy50bHNfbW9kdWxlID0gX1RM
U19CWV9TVEFOREFSRF9NT0RVTEUKKyAgICAgICAgICAgICAgICBsb2dnaW5nLmRlYnVnKCdVc2lu
ZyBzc2wgbW9kdWxlJykKKyAgICAgICAgICAgIGVsaWYgX2ltcG9ydF9weW9wZW5zc2woKToKKyAg
ICAgICAgICAgICAgICBvcHRpb25zLnRsc19tb2R1bGUgPSBfVExTX0JZX1BZT1BFTlNTTAorICAg
ICAgICAgICAgICAgIGxvZ2dpbmcuZGVidWcoJ1VzaW5nIHB5T3BlblNTTCBtb2R1bGUnKQorICAg
ICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBsb2dnaW5nLmNyaXRpY2FsKAorICAgICAg
ICAgICAgICAgICAgICAgICAgJ1RMUyBzdXBwb3J0IHJlcXVpcmVzIHNzbCBvciBweU9wZW5TU0wg
bW9kdWxlLicpCisgICAgICAgICAgICAgICAgc3lzLmV4aXQoMSkKKyAgICAgICAgZWxpZiBvcHRp
b25zLnRsc19tb2R1bGUgPT0gX1RMU19CWV9TVEFOREFSRF9NT0RVTEU6CisgICAgICAgICAgICBp
ZiBub3QgX2ltcG9ydF9zc2woKToKKyAgICAgICAgICAgICAgICBsb2dnaW5nLmNyaXRpY2FsKCdz
c2wgbW9kdWxlIGlzIG5vdCBhdmFpbGFibGUnKQorICAgICAgICAgICAgICAgIHN5cy5leGl0KDEp
CisgICAgICAgIGVsaWYgb3B0aW9ucy50bHNfbW9kdWxlID09IF9UTFNfQllfUFlPUEVOU1NMOgor
ICAgICAgICAgICAgaWYgbm90IF9pbXBvcnRfcHlvcGVuc3NsKCk6CisgICAgICAgICAgICAgICAg
bG9nZ2luZy5jcml0aWNhbCgncHlPcGVuU1NMIG1vZHVsZSBpcyBub3QgYXZhaWxhYmxlJykKKyAg
ICAgICAgICAgICAgICBzeXMuZXhpdCgxKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgbG9n
Z2luZy5jcml0aWNhbCgnSW52YWxpZCAtLXRscy1tb2R1bGUgb3B0aW9uOiAlcicsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnMudGxzX21vZHVsZSkKICAgICAgICAgICAgIHN5
cy5leGl0KDEpCisKICAgICAgICAgaWYgbm90IG9wdGlvbnMucHJpdmF0ZV9rZXkgb3Igbm90IG9w
dGlvbnMuY2VydGlmaWNhdGU6CiAgICAgICAgICAgICBsb2dnaW5nLmNyaXRpY2FsKAogICAgICAg
ICAgICAgICAgICAgICAnVG8gdXNlIFRMUywgc3BlY2lmeSBwcml2YXRlX2tleSBhbmQgY2VydGlm
aWNhdGUuJykKICAgICAgICAgICAgIHN5cy5leGl0KDEpCiAKLSAgICBpZiBvcHRpb25zLnRsc19j
bGllbnRfYXV0aDoKLSAgICAgICAgaWYgbm90IG9wdGlvbnMudXNlX3RsczoKKyAgICAgICAgaWYg
KG9wdGlvbnMudGxzX2NsaWVudF9jZXJ0X29wdGlvbmFsIGFuZAorICAgICAgICAgICAgbm90IG9w
dGlvbnMudGxzX2NsaWVudF9hdXRoKToKKyAgICAgICAgICAgIGxvZ2dpbmcuY3JpdGljYWwoJ0Ns
aWVudCBhdXRoZW50aWNhdGlvbiBtdXN0IGJlIGVuYWJsZWQgdG8gJworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAnc3BlY2lmeSB0bHNfY2xpZW50X2NlcnRfb3B0aW9uYWwnKQorICAgICAg
ICAgICAgc3lzLmV4aXQoMSkKKyAgICBlbHNlOgorICAgICAgICBpZiBvcHRpb25zLnRsc19tb2R1
bGUgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBsb2dnaW5nLmNyaXRpY2FsKCdVc2UgLS10bHMt
bW9kdWxlIG9wdGlvbiBvbmx5IHRvZ2V0aGVyIHdpdGggJworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAnLS11c2UtdGxzIG9wdGlvbi4nKQorICAgICAgICAgICAgc3lzLmV4aXQoMSkKKwor
ICAgICAgICBpZiBvcHRpb25zLnRsc19jbGllbnRfYXV0aDoKKyAgICAgICAgICAgIGxvZ2dpbmcu
Y3JpdGljYWwoJ1RMUyBtdXN0IGJlIGVuYWJsZWQgZm9yIGNsaWVudCBhdXRoZW50aWNhdGlvbi4n
KQorICAgICAgICAgICAgc3lzLmV4aXQoMSkKKworICAgICAgICBpZiBvcHRpb25zLnRsc19jbGll
bnRfY2VydF9vcHRpb25hbDoKICAgICAgICAgICAgIGxvZ2dpbmcuY3JpdGljYWwoJ1RMUyBtdXN0
IGJlIGVuYWJsZWQgZm9yIGNsaWVudCBhdXRoZW50aWNhdGlvbi4nKQogICAgICAgICAgICAgc3lz
LmV4aXQoMSkKLSAgICAgICAgaWYgbm90IF9IQVNfU1NMOgotICAgICAgICAgICAgbG9nZ2luZy5j
cml0aWNhbCgnQ2xpZW50IGF1dGhlbnRpY2F0aW9uIHJlcXVpcmVzIHNzbCBtb2R1bGUuJykKIAog
ICAgIGlmIG5vdCBvcHRpb25zLnNjYW5fZGlyOgogICAgICAgICBvcHRpb25zLnNjYW5fZGlyID0g
b3B0aW9ucy53ZWJzb2NrX2hhbmRsZXJzCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtp
dHB5L3RoaXJkcGFydHkvbW9kX3B5d2Vic29ja2V0L3V0aWwucHkgYi9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L3RoaXJkcGFydHkvbW9kX3B5d2Vic29ja2V0L3V0aWwucHkKaW5kZXggN2JiMGI1ZDll
NWIxZTU4MjQwNzU2MjI5YWM0NDk3ZDE0NzU5Nzk0Yi4uYWRhY2EzYTA4MTUxOTgyYmY5ZmQwYjU0
ZmM3MzI0Y2JlMzEyZGY5ZSAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90aGly
ZHBhcnR5L21vZF9weXdlYnNvY2tldC91dGlsLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cHkvdGhpcmRwYXJ0eS9tb2RfcHl3ZWJzb2NrZXQvdXRpbC5weQpAQCAtNTYsNiArNTYsMTEgQEAg
aW1wb3J0IHNvY2tldAogaW1wb3J0IHRyYWNlYmFjawogaW1wb3J0IHpsaWIKIAordHJ5OgorICAg
IGZyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCBmYXN0X21hc2tpbmcKK2V4Y2VwdCBJbXBvcnRF
cnJvcjoKKyAgICBwYXNzCisKIAogZGVmIGdldF9zdGFja190cmFjZSgpOgogICAgICIiIkdldCB0
aGUgY3VycmVudCBzdGFjayB0cmFjZSBhcyBzdHJpbmcuCkBAIC0xNjksNDUgKzE3NCwzOSBAQCBj
bGFzcyBSZXBlYXRlZFhvck1hc2tlcihvYmplY3QpOgogICAgIGVuZGVkIGFuZCByZXN1bWVzIGZy
b20gdGhhdCBwb2ludCBvbiB0aGUgbmV4dCBtYXNrIG1ldGhvZCBjYWxsLgogICAgICIiIgogCi0g
ICAgZGVmIF9faW5pdF9fKHNlbGYsIG1hc2spOgotICAgICAgICBzZWxmLl9tYXNrID0gbWFwKG9y
ZCwgbWFzaykKLSAgICAgICAgc2VsZi5fbWFza19zaXplID0gbGVuKHNlbGYuX21hc2spCi0gICAg
ICAgIHNlbGYuX2NvdW50ID0gMAorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBtYXNraW5nX2tleSk6
CisgICAgICAgIHNlbGYuX21hc2tpbmdfa2V5ID0gbWFza2luZ19rZXkKKyAgICAgICAgc2VsZi5f
bWFza2luZ19rZXlfaW5kZXggPSAwCiAKLSAgICBkZWYgbWFzayhzZWxmLCBzKToKKyAgICBkZWYg
X21hc2tfdXNpbmdfc3dpZyhzZWxmLCBzKToKKyAgICAgICAgbWFza2VkX2RhdGEgPSBmYXN0X21h
c2tpbmcubWFzaygKKyAgICAgICAgICAgICAgICBzLCBzZWxmLl9tYXNraW5nX2tleSwgc2VsZi5f
bWFza2luZ19rZXlfaW5kZXgpCisgICAgICAgIHNlbGYuX21hc2tpbmdfa2V5X2luZGV4ID0gKAor
ICAgICAgICAgICAgICAgIChzZWxmLl9tYXNraW5nX2tleV9pbmRleCArIGxlbihzKSkgJSBsZW4o
c2VsZi5fbWFza2luZ19rZXkpKQorICAgICAgICByZXR1cm4gbWFza2VkX2RhdGEKKworICAgIGRl
ZiBfbWFza191c2luZ19hcnJheShzZWxmLCBzKToKICAgICAgICAgcmVzdWx0ID0gYXJyYXkuYXJy
YXkoJ0InKQogICAgICAgICByZXN1bHQuZnJvbXN0cmluZyhzKQorCiAgICAgICAgICMgVXNlIHRl
bXBvcmFyeSBsb2NhbCB2YXJpYWJsZXMgdG8gZWxpbWluYXRlIHRoZSBjb3N0IHRvIGFjY2Vzcwog
ICAgICAgICAjIGF0dHJpYnV0ZXMKLSAgICAgICAgY291bnQgPSBzZWxmLl9jb3VudAotICAgICAg
ICBtYXNrID0gc2VsZi5fbWFzawotICAgICAgICBtYXNrX3NpemUgPSBzZWxmLl9tYXNrX3NpemUK
LSAgICAgICAgZm9yIGkgaW4geHJhbmdlKGxlbihyZXN1bHQpKToKLSAgICAgICAgICAgIHJlc3Vs
dFtpXSBePSBtYXNrW2NvdW50XQotICAgICAgICAgICAgY291bnQgPSAoY291bnQgKyAxKSAlIG1h
c2tfc2l6ZQotICAgICAgICBzZWxmLl9jb3VudCA9IGNvdW50CisgICAgICAgIG1hc2tpbmdfa2V5
ID0gbWFwKG9yZCwgc2VsZi5fbWFza2luZ19rZXkpCisgICAgICAgIG1hc2tpbmdfa2V5X3NpemUg
PSBsZW4obWFza2luZ19rZXkpCisgICAgICAgIG1hc2tpbmdfa2V5X2luZGV4ID0gc2VsZi5fbWFz
a2luZ19rZXlfaW5kZXgKIAotICAgICAgICByZXR1cm4gcmVzdWx0LnRvc3RyaW5nKCkKLQotCi1j
bGFzcyBEZWZsYXRlUmVxdWVzdChvYmplY3QpOgotICAgICIiIkEgd3JhcHBlciBjbGFzcyBmb3Ig
cmVxdWVzdCBvYmplY3QgdG8gaW50ZXJjZXB0IHNlbmQgYW5kIHJlY3YgdG8gcGVyZm9ybQotICAg
IGRlZmxhdGUgY29tcHJlc3Npb24gYW5kIGRlY29tcHJlc3Npb24gdHJhbnNwYXJlbnRseS4KLSAg
ICAiIiIKKyAgICAgICAgZm9yIGkgaW4geHJhbmdlKGxlbihyZXN1bHQpKToKKyAgICAgICAgICAg
IHJlc3VsdFtpXSBePSBtYXNraW5nX2tleVttYXNraW5nX2tleV9pbmRleF0KKyAgICAgICAgICAg
IG1hc2tpbmdfa2V5X2luZGV4ID0gKG1hc2tpbmdfa2V5X2luZGV4ICsgMSkgJSBtYXNraW5nX2tl
eV9zaXplCiAKLSAgICBkZWYgX19pbml0X18oc2VsZiwgcmVxdWVzdCk6Ci0gICAgICAgIHNlbGYu
X3JlcXVlc3QgPSByZXF1ZXN0Ci0gICAgICAgIHNlbGYuY29ubmVjdGlvbiA9IERlZmxhdGVDb25u
ZWN0aW9uKHJlcXVlc3QuY29ubmVjdGlvbikKKyAgICAgICAgc2VsZi5fbWFza2luZ19rZXlfaW5k
ZXggPSBtYXNraW5nX2tleV9pbmRleAogCi0gICAgZGVmIF9fZ2V0YXR0cmlidXRlX18oc2VsZiwg
bmFtZSk6Ci0gICAgICAgIGlmIG5hbWUgaW4gKCdfcmVxdWVzdCcsICdjb25uZWN0aW9uJyk6Ci0g
ICAgICAgICAgICByZXR1cm4gb2JqZWN0Ll9fZ2V0YXR0cmlidXRlX18oc2VsZiwgbmFtZSkKLSAg
ICAgICAgcmV0dXJuIHNlbGYuX3JlcXVlc3QuX19nZXRhdHRyaWJ1dGVfXyhuYW1lKQorICAgICAg
ICByZXR1cm4gcmVzdWx0LnRvc3RyaW5nKCkKIAotICAgIGRlZiBfX3NldGF0dHJfXyhzZWxmLCBu
YW1lLCB2YWx1ZSk6Ci0gICAgICAgIGlmIG5hbWUgaW4gKCdfcmVxdWVzdCcsICdjb25uZWN0aW9u
Jyk6Ci0gICAgICAgICAgICByZXR1cm4gb2JqZWN0Ll9fc2V0YXR0cl9fKHNlbGYsIG5hbWUsIHZh
bHVlKQotICAgICAgICByZXR1cm4gc2VsZi5fcmVxdWVzdC5fX3NldGF0dHJfXyhuYW1lLCB2YWx1
ZSkKKyAgICBpZiAnZmFzdF9tYXNraW5nJyBpbiBnbG9iYWxzKCk6CisgICAgICAgIG1hc2sgPSBf
bWFza191c2luZ19zd2lnCisgICAgZWxzZToKKyAgICAgICAgbWFzayA9IF9tYXNrX3VzaW5nX2Fy
cmF5CiAKIAogIyBCeSBtYWtpbmcgd2JpdHMgb3B0aW9uIG5lZ2F0aXZlLCB3ZSBjYW4gc3VwcHJl
c3MgQ01GL0ZMRyAoMiBvY3RldCkgYW5kCkBAIC0yNTIsNiArMjUxLDcgQEAgY2xhc3MgX0RlZmxh
dGVyKG9iamVjdCk6CiAgICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygnQ29tcHJlc3MgcmVzdWx0
ICVyJywgY29tcHJlc3NlZF9ieXRlcykKICAgICAgICAgcmV0dXJuIGNvbXByZXNzZWRfYnl0ZXMK
IAorCiBjbGFzcyBfSW5mbGF0ZXIob2JqZWN0KToKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmKToK
QEAgLTM0Niw2ICszNDYsNyBAQCBjbGFzcyBfUkZDMTk3OURlZmxhdGVyKG9iamVjdCk6CiAgICAg
ICAgICAgICByZXR1cm4gc2VsZi5fZGVmbGF0ZXIuY29tcHJlc3NfYW5kX2ZsdXNoKGJ5dGVzKVs6
LTRdCiAgICAgICAgIHJldHVybiBzZWxmLl9kZWZsYXRlci5jb21wcmVzcyhieXRlcykKIAorCiBj
bGFzcyBfUkZDMTk3OUluZmxhdGVyKG9iamVjdCk6CiAgICAgIiIiQSBkZWNvbXByZXNzb3IgY2xh
c3MgZm9yIGJ5dGUgc2VxdWVuY2UgY29tcHJlc3NlZCBhbmQgZmx1c2hlZCBmb2xsb3dpbmcKICAg
ICB0aGUgYWxnb3JpdGhtIGRlc2NyaWJlZCBpbiB0aGUgUkZDMTk3OSBzZWN0aW9uIDIuMS4KQEAg
LTQwNSwxMTEgKzQwNiw0IEBAIGNsYXNzIERlZmxhdGVTb2NrZXQob2JqZWN0KToKICAgICAgICAg
cmV0dXJuIGxlbihieXRlcykKIAogCi1jbGFzcyBEZWZsYXRlQ29ubmVjdGlvbihvYmplY3QpOgot
ICAgICIiIkEgd3JhcHBlciBjbGFzcyBmb3IgcmVxdWVzdCBvYmplY3QgdG8gaW50ZXJjZXB0IHdy
aXRlIGFuZCByZWFkIHRvCi0gICAgcGVyZm9ybSBkZWZsYXRlIGNvbXByZXNzaW9uIGFuZCBkZWNv
bXByZXNzaW9uIHRyYW5zcGFyZW50bHkuCi0gICAgIiIiCi0KLSAgICBkZWYgX19pbml0X18oc2Vs
ZiwgY29ubmVjdGlvbik6Ci0gICAgICAgIHNlbGYuX2Nvbm5lY3Rpb24gPSBjb25uZWN0aW9uCi0K
LSAgICAgICAgc2VsZi5fbG9nZ2VyID0gZ2V0X2NsYXNzX2xvZ2dlcihzZWxmKQotCi0gICAgICAg
IHNlbGYuX2RlZmxhdGVyID0gX0RlZmxhdGVyKHpsaWIuTUFYX1dCSVRTKQotICAgICAgICBzZWxm
Ll9pbmZsYXRlciA9IF9JbmZsYXRlcigpCi0KLSAgICBkZWYgZ2V0X3JlbW90ZV9hZGRyKHNlbGYp
OgotICAgICAgICByZXR1cm4gc2VsZi5fY29ubmVjdGlvbi5yZW1vdGVfYWRkcgotICAgIHJlbW90
ZV9hZGRyID0gcHJvcGVydHkoZ2V0X3JlbW90ZV9hZGRyKQotCi0gICAgZGVmIHB1dF9ieXRlcyhz
ZWxmLCBieXRlcyk6Ci0gICAgICAgIHNlbGYud3JpdGUoYnl0ZXMpCi0KLSAgICBkZWYgcmVhZChz
ZWxmLCBzaXplPS0xKToKLSAgICAgICAgIiIiUmVhZHMgYXQgbW9zdCBzaXplIGJ5dGVzLiBCbG9j
a3MgdW50aWwgdGhlcmUncyBhdCBsZWFzdCBvbmUgYnl0ZQotICAgICAgICBhdmFpbGFibGUuCi0g
ICAgICAgICIiIgotCi0gICAgICAgICMgVE9ETyh0eW9zaGlubyk6IEFsbG93IGNhbGwgd2l0aCBz
aXplPTAuCi0gICAgICAgIGlmIG5vdCAoc2l6ZSA9PSAtMSBvciBzaXplID4gMCk6Ci0gICAgICAg
ICAgICByYWlzZSBFeGNlcHRpb24oJ3NpemUgbXVzdCBiZSAtMSBvciBwb3NpdGl2ZScpCi0KLSAg
ICAgICAgZGF0YSA9ICcnCi0gICAgICAgIHdoaWxlIFRydWU6Ci0gICAgICAgICAgICBpZiBzaXpl
ID09IC0xOgotICAgICAgICAgICAgICAgIGRhdGEgKz0gc2VsZi5faW5mbGF0ZXIuZGVjb21wcmVz
cygtMSkKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgZGF0YSArPSBzZWxmLl9p
bmZsYXRlci5kZWNvbXByZXNzKHNpemUgLSBsZW4oZGF0YSkpCi0KLSAgICAgICAgICAgIGlmIHNp
emUgPj0gMCBhbmQgbGVuKGRhdGEpICE9IDA6Ci0gICAgICAgICAgICAgICAgYnJlYWsKLQotICAg
ICAgICAgICAgIyBUT0RPKHR5b3NoaW5vKTogTWFrZSB0aGlzIHJlYWQgZWZmaWNpZW50IGJ5IHNv
bWUgd29ya2Fyb3VuZC4KLSAgICAgICAgICAgICMKLSAgICAgICAgICAgICMgSW4gMy4wLjMgYW5k
IHByaW9yIG9mIG1vZF9weXRob24sIHJlYWQgYmxvY2tzIHVudGlsIGxlbmd0aCBieXRlcwotICAg
ICAgICAgICAgIyB3YXMgcmVhZC4gV2UgZG9uJ3Qga25vdyB0aGUgZXhhY3Qgc2l6ZSB0byByZWFk
IHdoaWxlIHVzaW5nCi0gICAgICAgICAgICAjIGRlZmxhdGUsIHNvIHJlYWQgYnl0ZS1ieS1ieXRl
LgotICAgICAgICAgICAgIwotICAgICAgICAgICAgIyBfU3RhbmRhbG9uZVJlcXVlc3QucmVhZCB0
aGF0IHVsdGltYXRlbHkgcGVyZm9ybXMKLSAgICAgICAgICAgICMgc29ja2V0Ll9maWxlb2JqZWN0
LnJlYWQgYWxzbyBibG9ja3MgdW50aWwgbGVuZ3RoIGJ5dGVzIHdhcyByZWFkCi0gICAgICAgICAg
ICByZWFkX2RhdGEgPSBzZWxmLl9jb25uZWN0aW9uLnJlYWQoMSkKLSAgICAgICAgICAgIGlmIG5v
dCByZWFkX2RhdGE6Ci0gICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgIHNlbGYuX2lu
ZmxhdGVyLmFwcGVuZChyZWFkX2RhdGEpCi0gICAgICAgIHJldHVybiBkYXRhCi0KLSAgICBkZWYg
d3JpdGUoc2VsZiwgYnl0ZXMpOgotICAgICAgICBzZWxmLl9jb25uZWN0aW9uLndyaXRlKHNlbGYu
X2RlZmxhdGVyLmNvbXByZXNzX2FuZF9mbHVzaChieXRlcykpCi0KLQotZGVmIF9pc19ld291bGRi
bG9ja19lcnJubyhlcnJvcl9udW1iZXIpOgotICAgICIiIlJldHVybnMgVHJ1ZSBpZmYgZXJyb3Jf
bnVtYmVyIGluZGljYXRlcyB0aGF0IHJlY2VpdmUgb3BlcmF0aW9uIHdvdWxkCi0gICAgYmxvY2su
IFRvIG1ha2UgdGhpcyBwb3J0YWJsZSwgd2UgY2hlY2sgYXZhaWxhYmlsaXR5IG9mIGVycm5vIGFu
ZCB0aGVuCi0gICAgY29tcGFyZSB0aGVtLgotICAgICIiIgotCi0gICAgZm9yIGVycm9yX25hbWUg
aW4gWydXU0FFV09VTERCTE9DSycsICdFV09VTERCTE9DSycsICdFQUdBSU4nXToKLSAgICAgICAg
aWYgKGVycm9yX25hbWUgaW4gZGlyKGVycm5vKSBhbmQKLSAgICAgICAgICAgIGVycm9yX251bWJl
ciA9PSBnZXRhdHRyKGVycm5vLCBlcnJvcl9uYW1lKSk6Ci0gICAgICAgICAgICByZXR1cm4gVHJ1
ZQotICAgIHJldHVybiBGYWxzZQotCi0KLWRlZiBkcmFpbl9yZWNlaXZlZF9kYXRhKHJhd19zb2Nr
ZXQpOgotICAgICMgU2V0IHRoZSBzb2NrZXQgbm9uLWJsb2NraW5nLgotICAgIG9yaWdpbmFsX3Rp
bWVvdXQgPSByYXdfc29ja2V0LmdldHRpbWVvdXQoKQotICAgIHJhd19zb2NrZXQuc2V0dGltZW91
dCgwLjApCi0KLSAgICBkcmFpbmVkX2RhdGEgPSBbXQotCi0gICAgIyBEcmFpbiB1bnRpbCB0aGUg
c29ja2V0IGlzIGNsb3NlZCBvciBubyBkYXRhIGlzIGltbWVkaWF0ZWx5Ci0gICAgIyBhdmFpbGFi
bGUgZm9yIHJlYWQuCi0gICAgd2hpbGUgVHJ1ZToKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAg
ZGF0YSA9IHJhd19zb2NrZXQucmVjdigxKQotICAgICAgICAgICAgaWYgbm90IGRhdGE6Ci0gICAg
ICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgIGRyYWluZWRfZGF0YS5hcHBlbmQoZGF0YSkK
LSAgICAgICAgZXhjZXB0IHNvY2tldC5lcnJvciwgZToKLSAgICAgICAgICAgICMgZSBjYW4gYmUg
ZWl0aGVyIGEgcGFpciAoZXJybm8sIHN0cmluZykgb3IganVzdCBhIHN0cmluZyAob3IKLSAgICAg
ICAgICAgICMgc29tZXRoaW5nIGVsc2UpIHRlbGxpbmcgd2hhdCB3ZW50IHdyb25nLiBXZSBzdXBw
cmVzcyBvbmx5Ci0gICAgICAgICAgICAjIHRoZSBlcnJvcnMgdGhhdCBpbmRpY2F0ZXMgdGhhdCB0
aGUgc29ja2V0IGJsb2Nrcy4gVGhvc2UKLSAgICAgICAgICAgICMgZXhjZXB0aW9ucyBjYW4gYmUg
cGFyc2VkIGFzIGEgcGFpciAoZXJybm8sIHN0cmluZykuCi0gICAgICAgICAgICB0cnk6Ci0gICAg
ICAgICAgICAgICAgZXJyb3JfbnVtYmVyLCBtZXNzYWdlID0gZQotICAgICAgICAgICAgZXhjZXB0
OgotICAgICAgICAgICAgICAgICMgRmFpbGVkIHRvIHBhcnNlIHNvY2tldC5lcnJvci4KLSAgICAg
ICAgICAgICAgICByYWlzZSBlCi0KLSAgICAgICAgICAgIGlmIF9pc19ld291bGRibG9ja19lcnJu
byhlcnJvcl9udW1iZXIpOgotICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICBlbHNl
OgotICAgICAgICAgICAgICAgIHJhaXNlIGUKLQotICAgICMgUm9sbGJhY2sgdGltZW91dCB2YWx1
ZS4KLSAgICByYXdfc29ja2V0LnNldHRpbWVvdXQob3JpZ2luYWxfdGltZW91dCkKLQotICAgIHJl
dHVybiAnJy5qb2luKGRyYWluZWRfZGF0YSkKLQotCiAjIHZpOnN0cz00IHN3PTQgZXQKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRl
eCBlNzA4ZWU4YzlkZjY4ZDA5N2M2NmY0OTBhMjBiMGUzZWI2ZDVkOWUzLi42ZmMzZWQ0OWQyMThm
NWM2N2MwNjUzNDYyNmYwMzJmMDM2ZWIxMDk2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAKKzIwMTMt
MDUtMDkgIExhbWFycXVlIFYuIFNvdXphICA8TGFtYXJxdWUuU291emFAYmFzeXNrb20uY29tPgor
CisgICAgICAgIFtXZWJTb2NrZXRdIFVwZGF0ZSBweXdlYnNvY2tldCB0byByNzYwCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTU4NjMKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGaXggZmFpbGluZyB0ZXN0
cyBhbmQgZGVsZXRlIHRlc3RzIGFib3V0IGZlYXR1cmVzIHRoYXQgYXJlIG5vIGxvbmdlciBzdXBw
b3J0ZWQuCisKKyAgICAgICAgKiBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oYW5kbGVyX21h
cC50eHQ6CisgICAgICAgICogaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9lY2hvLWhv
c3Rfd3NoLnB5OiBSZW5hbWVkIGZyb20gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQv
dGVzdHMvaHliaS9lY2hvLWxvY2F0aW9uX3dzaC5weS4KKyAgICAgICAgKHdlYl9zb2NrZXRfZG9f
ZXh0cmFfaGFuZHNoYWtlKToKKyAgICAgICAgKHdlYl9zb2NrZXRfdHJhbnNmZXJfZGF0YSk6Cisg
ICAgICAgICogaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS91cmwtbm8tdHJhaWxpbmct
c2xhc2gtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3Rz
L2h5YmkvdXJsLW5vLXRyYWlsaW5nLXNsYXNoLmh0bWw6CisgICAgICAgICogaHR0cC90ZXN0cy93
ZWJzb2NrZXQvdGVzdHMvaHliaS91cmwtd2l0aC1jcmVkZW50aWFsLWV4cGVjdGVkLnR4dDoKKyAg
ICAgICAgKiBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3VybC13aXRoLWNyZWRlbnRp
YWwuaHRtbDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3VybC13
aXRoLWVtcHR5LXF1ZXJ5LWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiBodHRwL3Rl
c3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3VybC13aXRoLWVtcHR5LXF1ZXJ5Lmh0bWw6IFJlbW92
ZWQuCisgICAgICAgICogaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS91cmwtd2l0aC1x
dWVyeS1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogaHR0cC90ZXN0cy93ZWJzb2Nr
ZXQvdGVzdHMvaHliaS91cmwtd2l0aC1xdWVyeS5odG1sOiBSZW1vdmVkLgorCiAyMDEzLTA1LTA4
ICBab2x0YW4gQXJ2YWkgIDx6YXJ2YWlAaW5mLnUtc3plZ2VkLmh1PgogCiAgICAgICAgIFtRdF0g
VW5yZXZpZXdlZCBnYXJkZW5pbmcuIFNraXBwaW5nIHNvbWUgZmFpbGluZyBmYXN0L3JlZ2lvbiB0
ZXN0cy4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3Rz
L2hhbmRsZXJfbWFwLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3Rz
L2hhbmRsZXJfbWFwLnR4dAppbmRleCBjNmIwYmExMGJmYzAxZjY1ZmMyNjkyMjc5ZDgxZTM4ZDI2
MDNmZGM2Li4zMTkxNDYyOWE2MTZhOGYxY2E5ZTU1YjJmMWQwMDA0MmNkNjViMDgzIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oYW5kbGVyX21hcC50
eHQKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaGFuZGxlcl9t
YXAudHh0CkBAIC0xLDQgKzEsNCBAQAogIyB3ZWJzb2NrZXQgaGFuZGxlciBtYXAgZmlsZS4KLSMg
cmVxdWVzdCB0byAnLycgd2lsbCBiZSBoYW5kbGVkIGJ5IGVjaG8tbG9jYXRpb25fd3NoLnB5Cisj
IHJlcXVlc3QgdG8gJy8nIHdpbGwgYmUgaGFuZGxlZCBieSBlY2hvLWhvc3Rfd3NoLnB5CiAjIGh5
YmkvZWNoby1sb2NhdGlvbl93c2gucHkgY2FuIGhhbmRsZSBib3RoIGhpeGllLTc2IGFuZCBoeWJp
LTEwIHByb3RvY29scy4KLS8gL3dlYnNvY2tldC90ZXN0cy9oeWJpL2VjaG8tbG9jYXRpb24KKy8g
L3dlYnNvY2tldC90ZXN0cy9oeWJpL2VjaG8taG9zdApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9lY2hvLWhvc3Rfd3NoLnB5IGIvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9lY2hvLWhvc3Rfd3NoLnB5Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmUzYzk2YmU5MmZkZWRiMDM3ZWJhNThlMThlODc4ZDcxMDliNGIxYTQKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJp
L2VjaG8taG9zdF93c2gucHkKQEAgLTAsMCArMSwzOCBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTMg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgY29w
eXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMgICAgICogTmVpdGhlciB0aGUg
bmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQor
IyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u
LgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVS
UyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKwor
ZnJvbSBtb2RfcHl3ZWJzb2NrZXQgaW1wb3J0IGNvbW1vbiwgbXNndXRpbAorCisKK2RlZiB3ZWJf
c29ja2V0X2RvX2V4dHJhX2hhbmRzaGFrZShyZXF1ZXN0KToKKyAgICBwYXNzCisKKworZGVmIHdl
Yl9zb2NrZXRfdHJhbnNmZXJfZGF0YShyZXF1ZXN0KToKKyAgICBtc2d1dGlsLnNlbmRfbWVzc2Fn
ZShyZXF1ZXN0LCByZXF1ZXN0LmhlYWRlcnNfaW4uZ2V0KGNvbW1vbi5IT1NUX0hFQURFUikpCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2Vj
aG8tbG9jYXRpb25fd3NoLnB5IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVz
dHMvaHliaS9lY2hvLWxvY2F0aW9uX3dzaC5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDNjNGFhOTI4M2QyMDYxMmU2NWRmNDg2Y2Q4YmY2ZDg0OTgyODFjOS4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3dlYnNvY2tldC90ZXN0cy9oeWJpL2VjaG8tbG9jYXRpb25fd3NoLnB5CisrKyAvZGV2L251bGwK
QEAgLTEsNDkgKzAsMCBAQAotIyBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSMgbWV0Ogot
IwotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSMgY29weXJpZ2h0IG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotIyBpbiB0
aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
Ci0jIGRpc3RyaWJ1dGlvbi4KLSMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5j
LiBub3IgdGhlIG5hbWVzIG9mIGl0cwotIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotIyB0aGlzIHNvZnR3YXJlIHdp
dGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotIwotIyBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JT
Ci0jICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotIyBPV05FUiBPUiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwKLSMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0jIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKLSMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLQotZnJvbSBtb2RfcHl3ZWJzb2Nr
ZXQgaW1wb3J0IG1zZ3V0aWwKLWZyb20gbW9kX3B5d2Vic29ja2V0LmhhbmRzaGFrZS5fYmFzZSBp
bXBvcnQgYnVpbGRfbG9jYXRpb24KLQotCi1kZWYgd2ViX3NvY2tldF9kb19leHRyYV9oYW5kc2hh
a2UocmVxdWVzdCk6Ci0gICAgcGFzcwotCi0KLWRlZiB3ZWJfc29ja2V0X3RyYW5zZmVyX2RhdGEo
cmVxdWVzdCk6Ci0gICAgaWYgaGFzYXR0cihyZXF1ZXN0LCAnd3NfbG9jYXRpb24nKToKLSAgICAg
ICAgbG9jYXRpb24gPSByZXF1ZXN0LndzX2xvY2F0aW9uCi0gICAgZWxzZToKLSAgICAgICAgIyBX
aGVuIGh5YmkgcHJvdG9jb2wgaXMgdXNlZCwgcHl3ZWJzb2NrZXQgZG9lcyBub3QgcHJvdmlkZQot
ICAgICAgICAjIHdzX2xvY2F0aW9uIGF0dHJpYnV0ZSBiZWNhdXNlIHNlcnZlcnMgYXJlIG5vdCBy
ZXF1aXJlZCB0byBzZW5kCi0gICAgICAgICMgU2VjLVdlYlNvY2tldC1Mb2NhdGlvbiBoZWFkZXIg
YWNjb3JkaW5nIHRvIHRoZSBwcm90b2NvbAotICAgICAgICAjIHNwZWNpZmljYXRpb24uIElmIHdz
X2xvY2F0aW9uIGF0dHJpYnV0ZSBpcyBub3QgYXZhaWxhYmxlLAotICAgICAgICAjIHdlIHVzZSBw
eXdlYnNvY2tldCdzIGludGVybmFsIGZ1bmN0aW9uICJidWlsZF9mdW5jdGlvbiIKLSAgICAgICAg
IyB0byBvYnRhaW4gdGhlIGlkZW50aWNhbCB2YWx1ZS4KLSAgICAgICAgbG9jYXRpb24gPSBidWls
ZF9sb2NhdGlvbihyZXF1ZXN0KQotICAgIG1zZ3V0aWwuc2VuZF9tZXNzYWdlKHJlcXVlc3QsIGxv
Y2F0aW9uKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVz
dHMvaHliaS91cmwtbm8tdHJhaWxpbmctc2xhc2gtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS91cmwtbm8tdHJhaWxpbmctc2xhc2gtZXhw
ZWN0ZWQudHh0CmluZGV4IDc1YzkwY2YxYTMxZjZiMzg3YzUzYjQ2Zjg1ZjlkZTQ4NzYwNDgwNzgu
LjgyNzQxMmUwZWFiNDdlMDY1YzkxMGNkNDllMGIwMjI3MjA5NjNjMDEgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvdXJsLW5vLXRyYWlsaW5n
LXNsYXNoLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tl
dC90ZXN0cy9oeWJpL3VybC1uby10cmFpbGluZy1zbGFzaC1leHBlY3RlZC50eHQKQEAgLTMsMTAg
KzMsMTAgQEAgVVJMIHRoYXQgZG9lc24ndCBoYXZlIHRyYWlsaW5nIHNsYXNoIHNob3VsZCBub3Qg
ZW1pdCBlbXB0eSBSZXF1ZXN0LVVSSS4KIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmll
cyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KIAogV2Vi
U29ja2V0IGlzIG9wZW4KLXJlY2VpdmVkOndzOi8vMTI3LjAuMC4xOjg4ODAvCityZWNlaXZlZDox
MjcuMC4wLjE6ODg4MAogV2ViU29ja2V0IGlzIGNsb3NlZAogUEFTUyBoYW5kc2hha2Vfc3VjY2Vz
cyBpcyB0cnVlCi1QQVNTIHdzX2xvY2F0aW9uIGlzICJ3czovLzEyNy4wLjAuMTo4ODgwLyIKK1BB
U1MgaG9zdCBpcyAiMTI3LjAuMC4xOjg4ODAiCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0
cnVlCiAKIFRFU1QgQ09NUExFVEUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
d2Vic29ja2V0L3Rlc3RzL2h5YmkvdXJsLW5vLXRyYWlsaW5nLXNsYXNoLmh0bWwgYi9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3VybC1uby10cmFpbGluZy1zbGFz
aC5odG1sCmluZGV4IGJjYTZjMjc0YjEyYjg4NmEwZGU4ODA3YWEzOTUzMDA2NTQxNDhkZTcuLjAy
YTg5ZjNmZWI2ODRhMjA5NjBmNGY5ZGU3NjY3YzdiODg5MDI5YzcgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvdXJsLW5vLXRyYWlsaW5nLXNs
YXNoLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHli
aS91cmwtbm8tdHJhaWxpbmctc2xhc2guaHRtbApAQCAtMTMsNyArMTMsNyBAQCB3aW5kb3cuanNU
ZXN0SXNBc3luYyA9IHRydWU7CiAKIHZhciB1cmwgPSAid3M6Ly8xMjcuMC4wLjE6ODg4MCI7CiB2
YXIgaGFuZHNoYWtlX3N1Y2Nlc3MgPSBmYWxzZTsKLXZhciB3c19sb2NhdGlvbjsKK3ZhciBob3N0
CiAKIHZhciB3cyA9IG5ldyBXZWJTb2NrZXQodXJsKTsKIHdzLm9ub3BlbiA9IGZ1bmN0aW9uICgp
IHsKQEAgLTIxLDE0ICsyMSwxNCBAQCB3cy5vbm9wZW4gPSBmdW5jdGlvbiAoKSB7CiAgICAgaGFu
ZHNoYWtlX3N1Y2Nlc3MgPSB0cnVlOwogfTsKIHdzLm9ubWVzc2FnZSA9IGZ1bmN0aW9uIChldnQp
IHsKLSAgICB3c19sb2NhdGlvbiA9IGV2dC5kYXRhOwotICAgIGRlYnVnKCJyZWNlaXZlZDoiICsg
d3NfbG9jYXRpb24pOworICAgIGhvc3QgPSBldnQuZGF0YTsKKyAgICBkZWJ1ZygicmVjZWl2ZWQ6
IiArIGhvc3QpOwogICAgIHdzLmNsb3NlKCk7CiB9Owogd3Mub25jbG9zZSA9IGZ1bmN0aW9uICgp
IHsKICAgICBkZWJ1ZygiV2ViU29ja2V0IGlzIGNsb3NlZCIpOwogICAgIHNob3VsZEJlVHJ1ZSgi
aGFuZHNoYWtlX3N1Y2Nlc3MiKTsKLSAgICBzaG91bGRCZSgid3NfbG9jYXRpb24iLCAnIndzOi8v
MTI3LjAuMC4xOjg4ODAvIicpOworICAgIHNob3VsZEJlKCJob3N0IiwgJyIxMjcuMC4wLjE6ODg4
MCInKTsKICAgICBmaW5pc2hKU1Rlc3QoKTsKIH07CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvdXJsLXdpdGgtY3JlZGVudGlhbC1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3Vy
bC13aXRoLWNyZWRlbnRpYWwtZXhwZWN0ZWQudHh0CmluZGV4IGY3ZWJjNjkyZWE5ZmRiODMyZjUy
NmZhMDg0YWY4NGNhODBjOTdhOGQuLjc3NWEzOWI0ZGEyNTVhYjQyZDI1MWQ5Y2U4OWM3M2U3N2Ux
MWYzYTEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3Rz
L2h5YmkvdXJsLXdpdGgtY3JlZGVudGlhbC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS91cmwtd2l0aC1jcmVkZW50aWFsLWV4cGVj
dGVkLnR4dApAQCAtMiwxMiArMiwxMiBAQCBNYWtlIHN1cmUgaGFuZHNoYWtlIHdpdGggVVJMIHdp
dGggY3JlZGVudGFpbCBpbmZvIHN1Y2Nlc3MuCiAKIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBh
IHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4K
IAotdXJsPXdzOi8vdXNlcjpwYXNzQDEyNy4wLjAuMTo4ODgwL3dlYnNvY2tldC90ZXN0cy9oeWJp
L2VjaG8tbG9jYXRpb24KK3VybD13czovL3VzZXI6cGFzc0AxMjcuMC4wLjE6ODg4MC93ZWJzb2Nr
ZXQvdGVzdHMvaHliaS9lY2hvLWhvc3QKIFdlYlNvY2tldCBpcyBvcGVuCi1yZWNlaXZlZDp3czov
LzEyNy4wLjAuMTo4ODgwL3dlYnNvY2tldC90ZXN0cy9oeWJpL2VjaG8tbG9jYXRpb24KK3JlY2Vp
dmVkOjEyNy4wLjAuMTo4ODgwCiBXZWJTb2NrZXQgaXMgY2xvc2VkCiBQQVNTIGhhbmRzaGFrZV9z
dWNjZXNzIGlzIHRydWUKLVBBU1Mgd3NfbG9jYXRpb24gaXMgIndzOi8vMTI3LjAuMC4xOjg4ODAv
d2Vic29ja2V0L3Rlc3RzL2h5YmkvZWNoby1sb2NhdGlvbiIKK1BBU1MgaG9zdCBpcyAiMTI3LjAu
MC4xOjg4ODAiCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCiAKIFRFU1QgQ09NUExF
VEUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5
YmkvdXJsLXdpdGgtY3JlZGVudGlhbC5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJz
b2NrZXQvdGVzdHMvaHliaS91cmwtd2l0aC1jcmVkZW50aWFsLmh0bWwKaW5kZXggOWI5NTZjN2Q3
MDE5ZTY5ZWI4MjYzYjU0ZWYyNjZmMzk5NzU4NzZkMC4uMzcyMDk0MTgyMThlZTQ5NjBkOTk3NWJm
ZjdjZjZmYmFhMzE3YTA2NSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJz
b2NrZXQvdGVzdHMvaHliaS91cmwtd2l0aC1jcmVkZW50aWFsLmh0bWwKKysrIGIvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS91cmwtd2l0aC1jcmVkZW50aWFsLmh0
bWwKQEAgLTExLDE1ICsxMSwxNSBAQCBkZXNjcmlwdGlvbigiTWFrZSBzdXJlIGhhbmRzaGFrZSB3
aXRoIFVSTCB3aXRoIGNyZWRlbnRhaWwgaW5mbyBzdWNjZXNzLiIpOwogCiB3aW5kb3cuanNUZXN0
SXNBc3luYyA9IHRydWU7CiAKLXZhciB1cmwgPSAid3M6Ly91c2VyOnBhc3NAMTI3LjAuMC4xOjg4
ODAvd2Vic29ja2V0L3Rlc3RzL2h5YmkvZWNoby1sb2NhdGlvbiI7Cit2YXIgdXJsID0gIndzOi8v
dXNlcjpwYXNzQDEyNy4wLjAuMTo4ODgwL3dlYnNvY2tldC90ZXN0cy9oeWJpL2VjaG8taG9zdCI7
CiB2YXIgaGFuZHNoYWtlX3N1Y2Nlc3MgPSBmYWxzZTsKLXZhciB3c19sb2NhdGlvbjsKK3ZhciBo
b3N0OwogCiBmdW5jdGlvbiBlbmRUZXN0KCkKIHsKICAgICBjbGVhclRpbWVvdXQodGltZW91dElE
KTsKICAgICBzaG91bGRCZVRydWUoImhhbmRzaGFrZV9zdWNjZXNzIik7Ci0gICAgc2hvdWxkQmUo
IndzX2xvY2F0aW9uIiwgJyJ3czovLzEyNy4wLjAuMTo4ODgwL3dlYnNvY2tldC90ZXN0cy9oeWJp
L2VjaG8tbG9jYXRpb24iJyk7CisgICAgc2hvdWxkQmUoImhvc3QiLCAnIjEyNy4wLjAuMTo4ODgw
IicpOwogICAgIGZpbmlzaEpTVGVzdCgpOwogfQogCkBAIC0zMCw4ICszMCw4IEBAIHdzLm9ub3Bl
biA9IGZ1bmN0aW9uICgpIHsKICAgICBoYW5kc2hha2Vfc3VjY2VzcyA9IHRydWU7CiB9Owogd3Mu
b25tZXNzYWdlID0gZnVuY3Rpb24gKGV2dCkgewotICAgIHdzX2xvY2F0aW9uID0gZXZ0LmRhdGE7
Ci0gICAgZGVidWcoInJlY2VpdmVkOiIgKyB3c19sb2NhdGlvbik7CisgICAgaG9zdCA9IGV2dC5k
YXRhOworICAgIGRlYnVnKCJyZWNlaXZlZDoiICsgaG9zdCk7CiAgICAgd3MuY2xvc2UoKTsKIH07
CiB3cy5vbmNsb3NlID0gZnVuY3Rpb24gKCkgewpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS91cmwtd2l0aC1lbXB0eS1xdWVyeS1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3VybC13
aXRoLWVtcHR5LXF1ZXJ5LWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggYzk5NGVlY2FhYTYwOWM2NTY4ZWI3NWRmMDg4ZDVjZDgxMzk5MjY3Yy4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3dlYnNvY2tldC90ZXN0cy9oeWJpL3VybC13aXRoLWVtcHR5LXF1ZXJ5LWV4cGVjdGVkLnR4dAor
KysgL2Rldi9udWxsCkBAIC0xLDE0ICswLDAgQEAKLU1ha2Ugc3VyZSBoYW5kc2hha2Ugd2l0aCBV
Ukwgd2l0aCBlbXB0eSBxdWVyeSBjb21wb25lbnRzIHN1Y2Nlc3MuCi0KLU9uIHN1Y2Nlc3MsIHlv
dSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNU
IENPTVBMRVRFIi4KLQotdXJsPXdzOi8vMTI3LjAuMC4xOjg4ODAvd2Vic29ja2V0L3Rlc3RzL2h5
YmkvZWNoby1sb2NhdGlvbj8KLVdlYlNvY2tldCBpcyBvcGVuCi1yZWNlaXZlZDp3czovLzEyNy4w
LjAuMTo4ODgwL3dlYnNvY2tldC90ZXN0cy9oeWJpL2VjaG8tbG9jYXRpb24/Ci1XZWJTb2NrZXQg
aXMgY2xvc2VkCi1QQVNTIGhhbmRzaGFrZV9zdWNjZXNzIGlzIHRydWUKLVBBU1Mgd3NfbG9jYXRp
b24gaXMgdXJsCi1QQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCi0KLVRFU1QgQ09NUExF
VEUKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMv
aHliaS91cmwtd2l0aC1lbXB0eS1xdWVyeS5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93
ZWJzb2NrZXQvdGVzdHMvaHliaS91cmwtd2l0aC1lbXB0eS1xdWVyeS5odG1sCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAyMThhYzc1MTg4ZGQ2YTgxZmFjMTFmYmEwMDAwM2Y3NjQ1Y2Yx
NmExLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvdXJsLXdpdGgtZW1wdHktcXVl
cnkuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDQ2ICswLDAgQEAKLTwhRE9DVFlQRSBIVE1MIFBV
QkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vLi4vanMtdGVzdC1yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0
PgotPC9oZWFkPgotPGJvZHk+Ci08ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Ci08ZGl2IGlk
PSJjb25zb2xlIj48L2Rpdj4KLTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLWRlc2Ny
aXB0aW9uKCJNYWtlIHN1cmUgaGFuZHNoYWtlIHdpdGggVVJMIHdpdGggZW1wdHkgcXVlcnkgY29t
cG9uZW50cyBzdWNjZXNzLiIpOwotCi13aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7Ci0KLXZh
ciB1cmwgPSAid3M6Ly8xMjcuMC4wLjE6ODg4MC93ZWJzb2NrZXQvdGVzdHMvaHliaS9lY2hvLWxv
Y2F0aW9uPyI7Ci12YXIgaGFuZHNoYWtlX3N1Y2Nlc3MgPSBmYWxzZTsKLXZhciB3c19sb2NhdGlv
bjsKLQotZnVuY3Rpb24gZW5kVGVzdCgpCi17Ci0gICAgY2xlYXJUaW1lb3V0KHRpbWVvdXRJRCk7
Ci0gICAgc2hvdWxkQmVUcnVlKCJoYW5kc2hha2Vfc3VjY2VzcyIpOwotICAgIHNob3VsZEJlKCJ3
c19sb2NhdGlvbiIsICJ1cmwiKTsKLSAgICBmaW5pc2hKU1Rlc3QoKTsKLX0KLQotZGVidWcoInVy
bD0iICsgdXJsKTsKLXZhciB3cyA9IG5ldyBXZWJTb2NrZXQodXJsKTsKLXdzLm9ub3BlbiA9IGZ1
bmN0aW9uICgpIHsKLSAgICBkZWJ1ZygiV2ViU29ja2V0IGlzIG9wZW4iKTsKLSAgICBoYW5kc2hh
a2Vfc3VjY2VzcyA9IHRydWU7Ci19Owotd3Mub25tZXNzYWdlID0gZnVuY3Rpb24gKGV2dCkgewot
ICAgIHdzX2xvY2F0aW9uID0gZXZ0LmRhdGE7Ci0gICAgZGVidWcoInJlY2VpdmVkOiIgKyB3c19s
b2NhdGlvbik7Ci0gICAgd3MuY2xvc2UoKTsKLX07Ci13cy5vbmNsb3NlID0gZnVuY3Rpb24gKCkg
ewotICAgIGRlYnVnKCJXZWJTb2NrZXQgaXMgY2xvc2VkIik7Ci0gICAgZW5kVGVzdCgpOwotfTsK
LXZhciB0aW1lb3V0SUQgPSBzZXRUaW1lb3V0KCJlbmRUZXN0KCkiLCAyMDAwKTsKLQotPC9zY3Jp
cHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMtdGVzdC1yZXNvdXJjZXMvanMtdGVzdC1w
b3N0LmpzIj48L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvdXJsLXdpdGgtcXVlcnktZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS91cmwt
d2l0aC1xdWVyeS1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY2
ODdhZGE5MTc3YmYyNWRhNWNiZGU0YzA1YzhlNzA2NjI4MzE5NDMuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJz
b2NrZXQvdGVzdHMvaHliaS91cmwtd2l0aC1xdWVyeS1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVs
bApAQCAtMSwxNCArMCwwIEBACi1NYWtlIHN1cmUgaGFuZHNoYWtlIHdpdGggVVJMIHdpdGggcXVl
cnkgY29tcG9uZW50cyBzdWNjZXNzLgotCi1PbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJp
ZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCi0KLXVy
bD13czovLzEyNy4wLjAuMTo4ODgwL3dlYnNvY2tldC90ZXN0cy9oeWJpL2VjaG8tbG9jYXRpb24/
cT12Ci1XZWJTb2NrZXQgaXMgb3BlbgotcmVjZWl2ZWQ6d3M6Ly8xMjcuMC4wLjE6ODg4MC93ZWJz
b2NrZXQvdGVzdHMvaHliaS9lY2hvLWxvY2F0aW9uP3E9dgotV2ViU29ja2V0IGlzIGNsb3NlZAot
UEFTUyBoYW5kc2hha2Vfc3VjY2VzcyBpcyB0cnVlCi1QQVNTIHdzX2xvY2F0aW9uIGlzIHVybAot
UEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQotCi1URVNUIENPTVBMRVRFCi0KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvdXJsLXdp
dGgtcXVlcnkuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5
YmkvdXJsLXdpdGgtcXVlcnkuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTJl
NmYyNmJiYjIyZWUzYTRkN2RkZjA4Y2Q3MTAyZDQ1M2JkYTJlYi4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNv
Y2tldC90ZXN0cy9oeWJpL3VybC13aXRoLXF1ZXJ5Lmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw0
NiArMCwwIEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+
Ci08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzLXRlc3QtcmVzb3Vy
Y2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPGRpdiBpZD0i
ZGVzY3JpcHRpb24iPjwvZGl2PgotPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Ci08c2NyaXB0IHR5
cGU9InRleHQvamF2YXNjcmlwdCI+Ci1kZXNjcmlwdGlvbigiTWFrZSBzdXJlIGhhbmRzaGFrZSB3
aXRoIFVSTCB3aXRoIHF1ZXJ5IGNvbXBvbmVudHMgc3VjY2Vzcy4iKTsKLQotd2luZG93LmpzVGVz
dElzQXN5bmMgPSB0cnVlOwotCi12YXIgdXJsID0gIndzOi8vMTI3LjAuMC4xOjg4ODAvd2Vic29j
a2V0L3Rlc3RzL2h5YmkvZWNoby1sb2NhdGlvbj9xPXYiOwotdmFyIGhhbmRzaGFrZV9zdWNjZXNz
ID0gZmFsc2U7Ci12YXIgd3NfbG9jYXRpb247Ci0KLWZ1bmN0aW9uIGVuZFRlc3QoKQotewotICAg
IGNsZWFyVGltZW91dCh0aW1lb3V0SUQpOwotICAgIHNob3VsZEJlVHJ1ZSgiaGFuZHNoYWtlX3N1
Y2Nlc3MiKTsKLSAgICBzaG91bGRCZSgid3NfbG9jYXRpb24iLCAidXJsIik7Ci0gICAgZmluaXNo
SlNUZXN0KCk7Ci19Ci0KLWRlYnVnKCJ1cmw9IiArIHVybCk7Ci12YXIgd3MgPSBuZXcgV2ViU29j
a2V0KHVybCk7Ci13cy5vbm9wZW4gPSBmdW5jdGlvbiAoKSB7Ci0gICAgZGVidWcoIldlYlNvY2tl
dCBpcyBvcGVuIik7Ci0gICAgaGFuZHNoYWtlX3N1Y2Nlc3MgPSB0cnVlOwotfTsKLXdzLm9ubWVz
c2FnZSA9IGZ1bmN0aW9uIChldnQpIHsKLSAgICB3c19sb2NhdGlvbiA9IGV2dC5kYXRhOwotICAg
IGRlYnVnKCJyZWNlaXZlZDoiICsgd3NfbG9jYXRpb24pOwotICAgIHdzLmNsb3NlKCk7Ci19Owot
d3Mub25jbG9zZSA9IGZ1bmN0aW9uICgpIHsKLSAgICBkZWJ1ZygiV2ViU29ja2V0IGlzIGNsb3Nl
ZCIpOwotICAgIGVuZFRlc3QoKTsKLX07Ci12YXIgdGltZW91dElEID0gc2V0VGltZW91dCgiZW5k
VGVzdCgpIiwgMjAwMCk7Ci0KLTwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pz
LXRlc3QtcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0
bWw+Cg==
</data>
<flag name="review"
          id="222568"
          type_id="1"
          status="+"
          setter="ap"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>201413</attachid>
            <date>2013-05-10 13:32:06 -0700</date>
            <delta_ts>2013-05-16 17:33:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-115863-20130510173106.patch</filename>
            <type>text/plain</type>
            <size>162338</size>
            <attacher name="Lamarque V. Souza">lamarque</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ5NzM0CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMWEyNDI5NWFiYjM2YzEyYTMxODRmYTQ3N2MwZGFjN2Q2
NWNmYWMyNS4uN2U3MmVlMTIyNjQ4YmJjNzA1NDhlNDZiMmJkOWY0ZTQ4ZTg5MWFjOCAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIx
MyBAQAorMjAxMy0wNS0xMCAgTGFtYXJxdWUgVi4gU291emEgIDxMYW1hcnF1ZS5Tb3V6YUBiYXN5
c2tvbS5jb20+CisKKyAgICAgICAgW1dlYlNvY2tldF0gVXBkYXRlIHB5d2Vic29ja2V0IHRvIHI3
NjAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExNTg2
MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFZlcnNp
b24gcjc2MCBzdXBwb3J0cyBhIG5ld2VyIGRyYWZ0IG9mIG1lc3NhZ2UgY29tcHJlc3Npb24uCisg
ICAgICAgIFdlIG5lZWQgdGhpcyB1cGRhdGUgdG8gZmluaXNoIHRoZSBwZXJtZXNzYWdlIGNvbXBy
ZXNzaW9uIHBhdGNoIGluCisgICAgICAgIGJ1ZyA5ODg0MC4gVGhpcyBwYXRjaCBhbHNvIGZpeGVz
IGZhaWxpbmcgdW5pdCB0ZXN0cyBhZnRlciB0aGUgdXBkYXRlLgorCisgICAgICAgICogU2NyaXB0
cy93ZWJraXRweS90aGlyZHBhcnR5L21vZF9weXdlYnNvY2tldC9fc3RyZWFtX2Jhc2UucHk6Cisg
ICAgICAgIChTdHJlYW1CYXNlLl9yZWFkKToKKyAgICAgICAgKFN0cmVhbUJhc2UuX3JlYWQub2Yp
OgorICAgICAgICAoU3RyZWFtQmFzZS5fd3JpdGUpOgorICAgICAgICAoU3RyZWFtQmFzZS5yZWNl
aXZlX2J5dGVzKToKKyAgICAgICAgKFN0cmVhbUJhc2UuX3JlYWRfdW50aWwpOgorICAgICAgICAq
IFNjcmlwdHMvd2Via2l0cHkvdGhpcmRwYXJ0eS9tb2RfcHl3ZWJzb2NrZXQvX3N0cmVhbV9oeWJp
LnB5OgorICAgICAgICAocGFyc2VfZnJhbWUpOgorICAgICAgICAoU3RyZWFtT3B0aW9ucy5fX2lu
aXRfXyk6CisgICAgICAgIChTdHJlYW0uX19pbml0X18pOgorICAgICAgICAoU3RyZWFtLl9yZWNl
aXZlX2ZyYW1lX2FzX2ZyYW1lX29iamVjdCk6CisgICAgICAgIChTdHJlYW0uX2dldF9tZXNzYWdl
X2Zyb21fZnJhbWUpOgorICAgICAgICAoU3RyZWFtLl9wcm9jZXNzX2Nsb3NlX21lc3NhZ2UpOgor
ICAgICAgICAoU3RyZWFtLmNsb3NlX2Nvbm5lY3Rpb24pOgorICAgICAgICAoU3RyZWFtLmdldF9s
YXN0X3JlY2VpdmVkX29wY29kZSk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS90aGlyZHBh
cnR5L21vZF9weXdlYnNvY2tldC9jb21tb24ucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRw
eS90aGlyZHBhcnR5L21vZF9weXdlYnNvY2tldC9kaXNwYXRjaC5weToKKyAgICAgICAgKERpc3Bh
dGNoZXIuZG9fZXh0cmFfaGFuZHNoYWtlKToKKyAgICAgICAgKERpc3BhdGNoZXIudHJhbnNmZXJf
ZGF0YSk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS90aGlyZHBhcnR5L21vZF9weXdlYnNv
Y2tldC9leHRlbnNpb25zLnB5OgorICAgICAgICAoRXh0ZW5zaW9uUHJvY2Vzc29ySW50ZXJmYWNl
Ll9faW5pdF9fKToKKyAgICAgICAgKEV4dGVuc2lvblByb2Nlc3NvckludGVyZmFjZS5yZXF1ZXN0
KToKKyAgICAgICAgKEV4dGVuc2lvblByb2Nlc3NvckludGVyZmFjZSk6CisgICAgICAgIChFeHRl
bnNpb25Qcm9jZXNzb3JJbnRlcmZhY2UubmFtZSk6CisgICAgICAgIChFeHRlbnNpb25Qcm9jZXNz
b3JJbnRlcmZhY2UuY2hlY2tfY29uc2lzdGVuY3lfd2l0aF9vdGhlcl9wcm9jZXNzb3JzKToKKyAg
ICAgICAgKEV4dGVuc2lvblByb2Nlc3NvckludGVyZmFjZS5zZXRfYWN0aXZlKToKKyAgICAgICAg
KEV4dGVuc2lvblByb2Nlc3NvckludGVyZmFjZS5pc19hY3RpdmUpOgorICAgICAgICAoRXh0ZW5z
aW9uUHJvY2Vzc29ySW50ZXJmYWNlLl9nZXRfZXh0ZW5zaW9uX3Jlc3BvbnNlX2ludGVybmFsKToK
KyAgICAgICAgKEV4dGVuc2lvblByb2Nlc3NvckludGVyZmFjZS5nZXRfZXh0ZW5zaW9uX3Jlc3Bv
bnNlKToKKyAgICAgICAgKEV4dGVuc2lvblByb2Nlc3NvckludGVyZmFjZS5fc2V0dXBfc3RyZWFt
X29wdGlvbnNfaW50ZXJuYWwpOgorICAgICAgICAoRXh0ZW5zaW9uUHJvY2Vzc29ySW50ZXJmYWNl
LnNldHVwX3N0cmVhbV9vcHRpb25zKToKKyAgICAgICAgKF9sb2dfb3V0Z29pbmdfY29tcHJlc3Np
b25fcmF0aW8pOgorICAgICAgICAoX2xvZ19pbmNvbWluZ19jb21wcmVzc2lvbl9yYXRpbyk6Cisg
ICAgICAgIChfcGFyc2Vfd2luZG93X2JpdHMpOgorICAgICAgICAoX0F2ZXJhZ2VSYXRpb0NhbGN1
bGF0b3IpOgorICAgICAgICAoX0F2ZXJhZ2VSYXRpb0NhbGN1bGF0b3IuX19pbml0X18pOgorICAg
ICAgICAoX0F2ZXJhZ2VSYXRpb0NhbGN1bGF0b3IuYWRkX29yaWdpbmFsX2J5dGVzKToKKyAgICAg
ICAgKF9BdmVyYWdlUmF0aW9DYWxjdWxhdG9yLmFkZF9yZXN1bHRfYnl0ZXMpOgorICAgICAgICAo
X0F2ZXJhZ2VSYXRpb0NhbGN1bGF0b3IuZ2V0X2F2ZXJhZ2VfcmF0aW8pOgorICAgICAgICAoRGVm
bGF0ZUZyYW1lRXh0ZW5zaW9uUHJvY2Vzc29yKToKKyAgICAgICAgKERlZmxhdGVGcmFtZUV4dGVu
c2lvblByb2Nlc3Nvci5fX2luaXRfXyk6CisgICAgICAgIChEZWZsYXRlRnJhbWVFeHRlbnNpb25Q
cm9jZXNzb3IuX2dldF9leHRlbnNpb25fcmVzcG9uc2VfaW50ZXJuYWwpOgorICAgICAgICAoRGVm
bGF0ZUZyYW1lRXh0ZW5zaW9uUHJvY2Vzc29yLl9zZXR1cF9zdHJlYW1fb3B0aW9uc19pbnRlcm5h
bCk6CisgICAgICAgIChEZWZsYXRlRnJhbWVFeHRlbnNpb25Qcm9jZXNzb3IuX291dGdvaW5nX2Zp
bHRlcik6CisgICAgICAgIChEZWZsYXRlRnJhbWVFeHRlbnNpb25Qcm9jZXNzb3IuX2luY29taW5n
X2ZpbHRlcik6CisgICAgICAgIChDb21wcmVzc2lvbkV4dGVuc2lvblByb2Nlc3NvckJhc2UuZm9y
KToKKyAgICAgICAgKENvbXByZXNzaW9uRXh0ZW5zaW9uUHJvY2Vzc29yQmFzZS5fX2luaXRfXyk6
CisgICAgICAgIChDb21wcmVzc2lvbkV4dGVuc2lvblByb2Nlc3NvckJhc2UuX2dldF9leHRlbnNp
b25fcmVzcG9uc2VfaW50ZXJuYWwpOgorICAgICAgICAoQ29tcHJlc3Npb25FeHRlbnNpb25Qcm9j
ZXNzb3JCYXNlLl9zZXR1cF9zdHJlYW1fb3B0aW9uc19pbnRlcm5hbCk6CisgICAgICAgIChQZXJG
cmFtZUNvbXByZXNzRXh0ZW5zaW9uUHJvY2Vzc29yKToKKyAgICAgICAgKFBlck1lc3NhZ2VEZWZs
YXRlRXh0ZW5zaW9uUHJvY2Vzc29yKToKKyAgICAgICAgKFBlck1lc3NhZ2VEZWZsYXRlRXh0ZW5z
aW9uUHJvY2Vzc29yLl9faW5pdF9fKToKKyAgICAgICAgKFBlck1lc3NhZ2VEZWZsYXRlRXh0ZW5z
aW9uUHJvY2Vzc29yLl9nZXRfZXh0ZW5zaW9uX3Jlc3BvbnNlX2ludGVybmFsKToKKyAgICAgICAg
KFBlck1lc3NhZ2VEZWZsYXRlRXh0ZW5zaW9uUHJvY2Vzc29yLl9zZXR1cF9zdHJlYW1fb3B0aW9u
c19pbnRlcm5hbCk6CisgICAgICAgIChQZXJNZXNzYWdlRGVmbGF0ZUV4dGVuc2lvblByb2Nlc3Nv
ci5zZXRfYzJzX21heF93aW5kb3dfYml0cyk6CisgICAgICAgIChQZXJNZXNzYWdlRGVmbGF0ZUV4
dGVuc2lvblByb2Nlc3Nvci5zZXRfYzJzX21heF93aW5kb3dfYml0cy5hZGRzKToKKyAgICAgICAg
KFBlck1lc3NhZ2VEZWZsYXRlRXh0ZW5zaW9uUHJvY2Vzc29yLnNldF9jMnNfbm9fY29udGV4dF90
YWtlb3Zlcik6CisgICAgICAgIChQZXJNZXNzYWdlRGVmbGF0ZUV4dGVuc2lvblByb2Nlc3Nvci5z
ZXRfYzJzX25vX2NvbnRleHRfdGFrZW92ZXIuYWRkcyk6CisgICAgICAgIChQZXJNZXNzYWdlRGVm
bGF0ZUV4dGVuc2lvblByb2Nlc3Nvci5zZXRfYmZpbmFsKToKKyAgICAgICAgKFBlck1lc3NhZ2VE
ZWZsYXRlRXh0ZW5zaW9uUHJvY2Vzc29yLmVuYWJsZV9vdXRnb2luZ19jb21wcmVzc2lvbik6Cisg
ICAgICAgIChQZXJNZXNzYWdlRGVmbGF0ZUV4dGVuc2lvblByb2Nlc3Nvci5kaXNhYmxlX291dGdv
aW5nX2NvbXByZXNzaW9uKToKKyAgICAgICAgKF9QZXJNZXNzYWdlRGVmbGF0ZUZyYW1lcik6Cisg
ICAgICAgIChfUGVyTWVzc2FnZURlZmxhdGVGcmFtZXIuX19pbml0X18pOgorICAgICAgICAoX1Bl
ck1lc3NhZ2VEZWZsYXRlRnJhbWVyLnNldF9jb21wcmVzc19vdXRnb2luZ19lbmFibGVkKToKKyAg
ICAgICAgKF9QZXJNZXNzYWdlRGVmbGF0ZUZyYW1lci5fcHJvY2Vzc19pbmNvbWluZ19tZXNzYWdl
KToKKyAgICAgICAgKF9QZXJNZXNzYWdlRGVmbGF0ZUZyYW1lci5fcHJvY2Vzc19vdXRnb2luZ19t
ZXNzYWdlKToKKyAgICAgICAgKF9QZXJNZXNzYWdlRGVmbGF0ZUZyYW1lci5zZXR1cF9zdHJlYW1f
b3B0aW9ucyk6CisgICAgICAgIChfUGVyTWVzc2FnZURlZmxhdGVGcmFtZXIuc2V0dXBfc3RyZWFt
X29wdGlvbnMuX091dGdvaW5nTWVzc2FnZUZpbHRlcik6CisgICAgICAgIChfUGVyTWVzc2FnZURl
ZmxhdGVGcmFtZXIuc2V0dXBfc3RyZWFtX29wdGlvbnMuX091dGdvaW5nTWVzc2FnZUZpbHRlci5f
X2luaXRfXyk6CisgICAgICAgIChfUGVyTWVzc2FnZURlZmxhdGVGcmFtZXIuc2V0dXBfc3RyZWFt
X29wdGlvbnMuX091dGdvaW5nTWVzc2FnZUZpbHRlci5maWx0ZXIpOgorICAgICAgICAoX1Blck1l
c3NhZ2VEZWZsYXRlRnJhbWVyLnNldHVwX3N0cmVhbV9vcHRpb25zLl9JbmNvbWluZ01lc3NhZ2VG
aWx0ZXIpOgorICAgICAgICAoX1Blck1lc3NhZ2VEZWZsYXRlRnJhbWVyLnNldHVwX3N0cmVhbV9v
cHRpb25zLl9JbmNvbWluZ01lc3NhZ2VGaWx0ZXIuX19pbml0X18pOgorICAgICAgICAoX1Blck1l
c3NhZ2VEZWZsYXRlRnJhbWVyLnNldHVwX3N0cmVhbV9vcHRpb25zLl9JbmNvbWluZ01lc3NhZ2VG
aWx0ZXIuZGVjb21wcmVzc19uZXh0X21lc3NhZ2UpOgorICAgICAgICAoX1Blck1lc3NhZ2VEZWZs
YXRlRnJhbWVyLnNldHVwX3N0cmVhbV9vcHRpb25zLl9JbmNvbWluZ01lc3NhZ2VGaWx0ZXIuZmls
dGVyKToKKyAgICAgICAgKF9QZXJNZXNzYWdlRGVmbGF0ZUZyYW1lci5zZXR1cF9zdHJlYW1fb3B0
aW9ucy5fT3V0Z29pbmdGcmFtZUZpbHRlcik6CisgICAgICAgIChfUGVyTWVzc2FnZURlZmxhdGVG
cmFtZXIuc2V0dXBfc3RyZWFtX29wdGlvbnMuX091dGdvaW5nRnJhbWVGaWx0ZXIuX19pbml0X18p
OgorICAgICAgICAoX1Blck1lc3NhZ2VEZWZsYXRlRnJhbWVyLnNldHVwX3N0cmVhbV9vcHRpb25z
Ll9PdXRnb2luZ0ZyYW1lRmlsdGVyLnNldF9jb21wcmVzc2lvbl9iaXQpOgorICAgICAgICAoX1Bl
ck1lc3NhZ2VEZWZsYXRlRnJhbWVyLnNldHVwX3N0cmVhbV9vcHRpb25zLl9PdXRnb2luZ0ZyYW1l
RmlsdGVyLmZpbHRlcik6CisgICAgICAgIChfUGVyTWVzc2FnZURlZmxhdGVGcmFtZXIuc2V0dXBf
c3RyZWFtX29wdGlvbnMuX0luY29taW5nRnJhbWVGaWx0ZXIpOgorICAgICAgICAoX1Blck1lc3Nh
Z2VEZWZsYXRlRnJhbWVyLnNldHVwX3N0cmVhbV9vcHRpb25zLl9JbmNvbWluZ0ZyYW1lRmlsdGVy
Ll9faW5pdF9fKToKKyAgICAgICAgKF9QZXJNZXNzYWdlRGVmbGF0ZUZyYW1lci5zZXR1cF9zdHJl
YW1fb3B0aW9ucy5fSW5jb21pbmdGcmFtZUZpbHRlci5maWx0ZXIpOgorICAgICAgICAoUGVyTWVz
c2FnZUNvbXByZXNzRXh0ZW5zaW9uUHJvY2Vzc29yKToKKyAgICAgICAgKFBlck1lc3NhZ2VDb21w
cmVzc0V4dGVuc2lvblByb2Nlc3Nvci5fbG9va3VwX2NvbXByZXNzaW9uX3Byb2Nlc3Nvcik6Cisg
ICAgICAgIChNdXhFeHRlbnNpb25Qcm9jZXNzb3IuX19pbml0X18pOgorICAgICAgICAoTXV4RXh0
ZW5zaW9uUHJvY2Vzc29yLmNoZWNrX2NvbnNpc3RlbmN5X3dpdGhfb3RoZXJfcHJvY2Vzc29ycyk6
CisgICAgICAgIChNdXhFeHRlbnNpb25Qcm9jZXNzb3IpOgorICAgICAgICAoTXV4RXh0ZW5zaW9u
UHJvY2Vzc29yLl9nZXRfZXh0ZW5zaW9uX3Jlc3BvbnNlX2ludGVybmFsKToKKyAgICAgICAgKE11
eEV4dGVuc2lvblByb2Nlc3Nvci5fc2V0dXBfc3RyZWFtX29wdGlvbnNfaW50ZXJuYWwpOgorICAg
ICAgICAoTXV4RXh0ZW5zaW9uUHJvY2Vzc29yLnNldF9xdW90YSk6CisgICAgICAgIChNdXhFeHRl
bnNpb25Qcm9jZXNzb3IucXVvdGEpOgorICAgICAgICAoTXV4RXh0ZW5zaW9uUHJvY2Vzc29yLnNl
dF9leHRlbnNpb25zKToKKyAgICAgICAgKE11eEV4dGVuc2lvblByb2Nlc3Nvci5leHRlbnNpb25z
KToKKyAgICAgICAgKGlzX2NvbXByZXNzaW9uX2V4dGVuc2lvbik6CisgICAgICAgICogU2NyaXB0
cy93ZWJraXRweS90aGlyZHBhcnR5L21vZF9weXdlYnNvY2tldC9oYW5kc2hha2UvX2Jhc2UucHk6
CisgICAgICAgICh2YWxpZGF0ZV9zdWJwcm90b2NvbCk6CisgICAgICAgIChwYXJzZV9ob3N0X2hl
YWRlcik6CisgICAgICAgIChmb3JtYXRfaGVhZGVyKToKKyAgICAgICAgKGNoZWNrX3JlcXVlc3Rf
bGluZSk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS90aGlyZHBhcnR5L21vZF9weXdlYnNv
Y2tldC9oYW5kc2hha2UvaHliaS5weToKKyAgICAgICAgKEhhbmRzaGFrZXIuZG9faGFuZHNoYWtl
KToKKyAgICAgICAgKEhhbmRzaGFrZXIuX2NyZWF0ZV9oYW5kc2hha2VfcmVzcG9uc2UpOgorICAg
ICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdGhpcmRwYXJ0eS9tb2RfcHl3ZWJzb2NrZXQvaGFuZHNo
YWtlL2h5YmkwMC5weToKKyAgICAgICAgKF92YWxpZGF0ZV9zdWJwcm90b2NvbCk6CisgICAgICAg
IChfY2hlY2tfaGVhZGVyX2xpbmVzKToKKyAgICAgICAgKF9idWlsZF9sb2NhdGlvbik6CisgICAg
ICAgIChIYW5kc2hha2VyLmRvX2hhbmRzaGFrZSk6CisgICAgICAgIChIYW5kc2hha2VyLl9zZXRf
c3VicHJvdG9jb2wpOgorICAgICAgICAoSGFuZHNoYWtlci5fc2V0X2xvY2F0aW9uKToKKyAgICAg
ICAgKiBTY3JpcHRzL3dlYmtpdHB5L3RoaXJkcGFydHkvbW9kX3B5d2Vic29ja2V0L2hlYWRlcnBh
cnNlcmhhbmRsZXIucHk6CisgICAgICAgIChfY3JlYXRlX2Rpc3BhdGNoZXIpOgorICAgICAgICAo
aGVhZGVycGFyc2VyaGFuZGxlcik6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS90aGlyZHBh
cnR5L21vZF9weXdlYnNvY2tldC9tdXgucHk6CisgICAgICAgIChfY3JlYXRlX2FkZF9jaGFubmVs
X3Jlc3BvbnNlKToKKyAgICAgICAgKF9jcmVhdGVfZHJvcF9jaGFubmVsKToKKyAgICAgICAgKF9j
cmVhdGVfZmxvd19jb250cm9sKToKKyAgICAgICAgKF9jcmVhdGVfbmV3X2NoYW5uZWxfc2xvdCk6
CisgICAgICAgIChfY3JlYXRlX2ZhbGxiYWNrX25ld19jaGFubmVsX3Nsb3QpOgorICAgICAgICAo
X011eEZyYW1lUGF5bG9hZFBhcnNlci5fcmVhZF9udW1iZXIpOgorICAgICAgICAoX011eEZyYW1l
UGF5bG9hZFBhcnNlci5fcmVhZF9zaXplX2FuZF9jb250ZW50cyk6CisgICAgICAgIChfTXV4RnJh
bWVQYXlsb2FkUGFyc2VyLl9yZWFkX2Zsb3dfY29udHJvbCk6CisgICAgICAgIChfTXV4RnJhbWVQ
YXlsb2FkUGFyc2VyLl9yZWFkX25ld19jaGFubmVsX3Nsb3QpOgorICAgICAgICAoX0xvZ2ljYWxD
b25uZWN0aW9uLl9faW5pdF9fKToKKyAgICAgICAgKF9Mb2dpY2FsQ29ubmVjdGlvbi53cml0ZSk6
CisgICAgICAgIChfTG9naWNhbENvbm5lY3Rpb24ub25fd3JpdGVfZGF0YV9kb25lKToKKyAgICAg
ICAgKF9Mb2dpY2FsQ29ubmVjdGlvbik6CisgICAgICAgIChfTG9naWNhbENvbm5lY3Rpb24ub25f
d3JpdGVyX2RvbmUpOgorICAgICAgICAoX0lubmVyTWVzc2FnZSk6CisgICAgICAgIChfSW5uZXJN
ZXNzYWdlLl9faW5pdF9fKToKKyAgICAgICAgKF9Jbm5lck1lc3NhZ2VCdWlsZGVyKToKKyAgICAg
ICAgKF9Jbm5lck1lc3NhZ2VCdWlsZGVyLnRoYXQpOgorICAgICAgICAoX0lubmVyTWVzc2FnZUJ1
aWxkZXIuX19pbml0X18pOgorICAgICAgICAoX0lubmVyTWVzc2FnZUJ1aWxkZXIuX2hhbmRsZV9m
aXJzdCk6CisgICAgICAgIChfSW5uZXJNZXNzYWdlQnVpbGRlci5fcHJvY2Vzc19maXJzdF9mcmFn
bWVudGVkX2NvbnRyb2wpOgorICAgICAgICAoX0lubmVyTWVzc2FnZUJ1aWxkZXIuX3Byb2Nlc3Nf
Zmlyc3RfZnJhZ21lbnRlZF9tZXNzYWdlKToKKyAgICAgICAgKF9Jbm5lck1lc3NhZ2VCdWlsZGVy
Ll9oYW5kbGVfZnJhZ21lbnRlZF9jb250cm9sKToKKyAgICAgICAgKF9Jbm5lck1lc3NhZ2VCdWls
ZGVyLl9yZWFzc2VtYmxlX2ZyYWdtZW50ZWRfY29udHJvbCk6CisgICAgICAgIChfSW5uZXJNZXNz
YWdlQnVpbGRlci5faGFuZGxlX2ZyYWdtZW50ZWRfbWVzc2FnZSk6CisgICAgICAgIChfSW5uZXJN
ZXNzYWdlQnVpbGRlci5fcmVhc3NlbWJsZV9mcmFnbWVudGVkX21lc3NhZ2UpOgorICAgICAgICAo
X0lubmVyTWVzc2FnZUJ1aWxkZXIuYnVpbGQpOgorICAgICAgICAoX0xvZ2ljYWxTdHJlYW0uX19p
bml0X18pOgorICAgICAgICAoX0xvZ2ljYWxTdHJlYW0uX2NyZWF0ZV9pbm5lcl9mcmFtZSk6Cisg
ICAgICAgIChfTG9naWNhbFN0cmVhbS5fd3JpdGVfaW5uZXJfZnJhbWUpOgorICAgICAgICAoX0xv
Z2ljYWxTdHJlYW0ucmVwbGVuaXNoX3NlbmRfcXVvdGEpOgorICAgICAgICAoX0xvZ2ljYWxTdHJl
YW0uc2VuZF9tZXNzYWdlKToKKyAgICAgICAgKF9Mb2dpY2FsU3RyZWFtLl9yZWNlaXZlX2ZyYW1l
KToKKyAgICAgICAgKF9Mb2dpY2FsU3RyZWFtLl9nZXRfbWVzc2FnZV9mcm9tX2ZyYW1lKToKKyAg
ICAgICAgKF9Mb2dpY2FsU3RyZWFtLnN0b3Bfc2VuZGluZyk6CisgICAgICAgIChfUGh5c2ljYWxD
b25uZWN0aW9uV3JpdGVyLl9faW5pdF9fKToKKyAgICAgICAgKF9QaHlzaWNhbENvbm5lY3Rpb25X
cml0ZXIuX3dyaXRlX2RhdGEpOgorICAgICAgICAoX1BoeXNpY2FsQ29ubmVjdGlvbldyaXRlci5y
dW4pOgorICAgICAgICAoX1BoeXNpY2FsQ29ubmVjdGlvbldyaXRlci5zdG9wKToKKyAgICAgICAg
KF9Xb3JrZXIucnVuKToKKyAgICAgICAgKF9NdXhIYW5kc2hha2VyLl9faW5pdF9fKToKKyAgICAg
ICAgKF9NdXhIYW5kc2hha2VyLl9jcmVhdGVfc3RyZWFtKToKKyAgICAgICAgKF9NdXhIYW5kc2hh
a2VyLl9jcmVhdGVfaGFuZHNoYWtlX3Jlc3BvbnNlKToKKyAgICAgICAgKF9IYW5kc2hha2VEZWx0
YUJhc2UuY3JlYXRlX2hlYWRlcnMpOgorICAgICAgICAoX011eEhhbmRsZXIuc3RhcnQpOgorICAg
ICAgICAoX011eEhhbmRsZXIud2FpdF91bnRpbF9kb25lKToKKyAgICAgICAgKF9NdXhIYW5kbGVy
Lm5vdGlmeV93cml0ZV9kYXRhX2RvbmUpOgorICAgICAgICAoX011eEhhbmRsZXIuX3Byb2Nlc3Nf
ZHJvcF9jaGFubmVsKToKKyAgICAgICAgKF9NdXhIYW5kbGVyLl9wcm9jZXNzX2xvZ2ljYWxfZnJh
bWUpOgorICAgICAgICAoX011eEhhbmRsZXIubm90aWZ5X3JlYWRlcl9kb25lKToKKyAgICAgICAg
KF9NdXhIYW5kbGVyKToKKyAgICAgICAgKF9NdXhIYW5kbGVyLm5vdGlmeV93cml0ZXJfZG9uZSk6
CisgICAgICAgIChfTXV4SGFuZGxlci5mYWlsX3BoeXNpY2FsX2Nvbm5lY3Rpb24pOgorICAgICAg
ICAoX011eEhhbmRsZXIuZmFpbF9sb2dpY2FsX2NoYW5uZWwpOgorICAgICAgICAodXNlX211eCk6
CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS90aGlyZHBhcnR5L21vZF9weXdlYnNvY2tldC9z
dGFuZGFsb25lLnB5OgorICAgICAgICAoX1N0YW5kYWxvbmVSZXF1ZXN0LmdldF91cmkpOgorICAg
ICAgICAoX1N0YW5kYWxvbmVSZXF1ZXN0LmdldF91bnBhcnNlZF91cmkpOgorICAgICAgICAoX1N0
YW5kYWxvbmVSZXF1ZXN0KToKKyAgICAgICAgKF9TdGFuZGFsb25lUmVxdWVzdC5pc19odHRwcyk6
CisgICAgICAgIChfaW1wb3J0X3NzbCk6CisgICAgICAgIChfaW1wb3J0X3B5b3BlbnNzbCk6Cisg
ICAgICAgIChfU3RhbmRhbG9uZVNTTENvbm5lY3Rpb24uZm9yKToKKyAgICAgICAgKF9TdGFuZGFs
b25lU1NMQ29ubmVjdGlvbik6CisgICAgICAgIChfU3RhbmRhbG9uZVNTTENvbm5lY3Rpb24uX19n
ZXRhdHRyaWJ1dGVfXyk6CisgICAgICAgIChfU3RhbmRhbG9uZVNTTENvbm5lY3Rpb24uX19zZXRh
dHRyX18pOgorICAgICAgICAoX1N0YW5kYWxvbmVTU0xDb25uZWN0aW9uLm1ha2VmaWxlKToKKyAg
ICAgICAgKF9TdGFuZGFsb25lU1NMQ29ubmVjdGlvbi5zaHV0ZG93bik6CisgICAgICAgIChfU3Rh
bmRhbG9uZVNTTENvbm5lY3Rpb24ucmVjdik6CisgICAgICAgIChXZWJTb2NrZXRTZXJ2ZXIuX19p
bml0X18pOgorICAgICAgICAoV2ViU29ja2V0U2VydmVyLl9jcmVhdGVfc29ja2V0cyk6CisgICAg
ICAgIChXZWJTb2NrZXRTZXJ2ZXIuaGFuZGxlX2Vycm9yKToKKyAgICAgICAgKFdlYlNvY2tldFNl
cnZlci5nZXRfcmVxdWVzdCk6CisgICAgICAgIChXZWJTb2NrZXRTZXJ2ZXIuZ2V0X3JlcXVlc3Qu
ZGVmYXVsdF9jYWxsYmFjayk6CisgICAgICAgIChXZWJTb2NrZXRSZXF1ZXN0SGFuZGxlci5wYXJz
ZV9yZXF1ZXN0KToKKyAgICAgICAgKF9idWlsZF9vcHRpb25fcGFyc2VyKToKKyAgICAgICAgKF9t
YWluKToKKyAgICAgICAgKF9tYWluLmlmKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Ro
aXJkcGFydHkvbW9kX3B5d2Vic29ja2V0L3V0aWwucHk6CisgICAgICAgIChSZXBlYXRlZFhvck1h
c2tlci5fX2luaXRfXyk6CisgICAgICAgIChSZXBlYXRlZFhvck1hc2tlci5fbWFza191c2luZ19z
d2lnKToKKyAgICAgICAgKFJlcGVhdGVkWG9yTWFza2VyKToKKyAgICAgICAgKFJlcGVhdGVkWG9y
TWFza2VyLl9tYXNrX3VzaW5nX2FycmF5KToKKyAgICAgICAgKF9EZWZsYXRlci5jb21wcmVzc19h
bmRfZmluaXNoKToKKyAgICAgICAgKF9SRkMxOTc5RGVmbGF0ZXIuZmlsdGVyKToKKyAgICAgICAg
KERlZmxhdGVTb2NrZXQuc2VuZCk6CisKIDIwMTMtMDUtMDggIEFuZHJhcyBCZWNzaSAgPGFuZHJh
cy5iZWNzaUBkaWdpYS5jb20+CiAKICAgICAgICAgW1F0XVtXVFJdIEZpeCB0aGUgYnVpbGQgb24g
TWFjIGFmdGVyIHIxNDk2OTIKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGhp
cmRwYXJ0eS9tb2RfcHl3ZWJzb2NrZXQvX3N0cmVhbV9iYXNlLnB5IGIvVG9vbHMvU2NyaXB0cy93
ZWJraXRweS90aGlyZHBhcnR5L21vZF9weXdlYnNvY2tldC9fc3RyZWFtX2Jhc2UucHkKaW5kZXgg
NjBmYjMzZDJjNWMwNTVmYjY5ZWVkYmNkNzY1NjgyNWJiZGZiZmVhMy4uODIzNTY2NmJiYjFkNTFj
MTBkYjNmOTFiZGE0YWJjZDdhZmViMjY4MiAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS90aGlyZHBhcnR5L21vZF9weXdlYnNvY2tldC9fc3RyZWFtX2Jhc2UucHkKKysrIGIvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS90aGlyZHBhcnR5L21vZF9weXdlYnNvY2tldC9fc3RyZWFtX2Jh
c2UucHkKQEAgLTM5LDYgKzM5LDggQEAKICMgd3JpdGluZy9yZWFkaW5nLgogCiAKK2ltcG9ydCBz
b2NrZXQKKwogZnJvbSBtb2RfcHl3ZWJzb2NrZXQgaW1wb3J0IHV0aWwKIAogCkBAIC0xMDksMjAg
KzExMSwzNCBAQCBjbGFzcyBTdHJlYW1CYXNlKG9iamVjdCk6CiAgICAgICAgICAgICBDb25uZWN0
aW9uVGVybWluYXRlZEV4Y2VwdGlvbjogd2hlbiByZWFkIHJldHVybnMgZW1wdHkgc3RyaW5nLgog
ICAgICAgICAiIiIKIAotICAgICAgICBieXRlcyA9IHNlbGYuX3JlcXVlc3QuY29ubmVjdGlvbi5y
ZWFkKGxlbmd0aCkKLSAgICAgICAgaWYgbm90IGJ5dGVzOgorICAgICAgICB0cnk6CisgICAgICAg
ICAgICByZWFkX2J5dGVzID0gc2VsZi5fcmVxdWVzdC5jb25uZWN0aW9uLnJlYWQobGVuZ3RoKQor
ICAgICAgICAgICAgaWYgbm90IHJlYWRfYnl0ZXM6CisgICAgICAgICAgICAgICAgcmFpc2UgQ29u
bmVjdGlvblRlcm1pbmF0ZWRFeGNlcHRpb24oCisgICAgICAgICAgICAgICAgICAgICdSZWNlaXZp
bmcgJWQgYnl0ZSBmYWlsZWQuIFBlZXIgKCVyKSBjbG9zZWQgY29ubmVjdGlvbicgJQorICAgICAg
ICAgICAgICAgICAgICAobGVuZ3RoLCAoc2VsZi5fcmVxdWVzdC5jb25uZWN0aW9uLnJlbW90ZV9h
ZGRyLCkpKQorICAgICAgICAgICAgcmV0dXJuIHJlYWRfYnl0ZXMKKyAgICAgICAgZXhjZXB0IHNv
Y2tldC5lcnJvciwgZToKKyAgICAgICAgICAgICMgQ2F0Y2ggYSBzb2NrZXQuZXJyb3IuIEJlY2F1
c2UgaXQncyBub3QgYSBjaGlsZCBjbGFzcyBvZiB0aGUKKyAgICAgICAgICAgICMgSU9FcnJvciBw
cmlvciB0byBQeXRob24gMi42LCB3ZSBjYW5ub3Qgb21pdCB0aGlzIGV4Y2VwdCBjbGF1c2UuCisg
ICAgICAgICAgICAjIFVzZSAlcyByYXRoZXIgdGhhbiAlciBmb3IgdGhlIGV4Y2VwdGlvbiB0byB1
c2UgaHVtYW4gZnJpZW5kbHkKKyAgICAgICAgICAgICMgZm9ybWF0LgorICAgICAgICAgICAgcmFp
c2UgQ29ubmVjdGlvblRlcm1pbmF0ZWRFeGNlcHRpb24oCisgICAgICAgICAgICAgICAgJ1JlY2Vp
dmluZyAlZCBieXRlIGZhaWxlZC4gc29ja2V0LmVycm9yICglcykgb2NjdXJyZWQnICUKKyAgICAg
ICAgICAgICAgICAobGVuZ3RoLCBlKSkKKyAgICAgICAgZXhjZXB0IElPRXJyb3IsIGU6CisgICAg
ICAgICAgICAjIEFsc28gY2F0Y2ggYW4gSU9FcnJvciBiZWNhdXNlIG1vZF9weXRob24gdGhyb3dz
IGl0LgogICAgICAgICAgICAgcmFpc2UgQ29ubmVjdGlvblRlcm1pbmF0ZWRFeGNlcHRpb24oCi0g
ICAgICAgICAgICAgICAgJ1JlY2VpdmluZyAlZCBieXRlIGZhaWxlZC4gUGVlciAoJXIpIGNsb3Nl
ZCBjb25uZWN0aW9uJyAlCi0gICAgICAgICAgICAgICAgKGxlbmd0aCwgKHNlbGYuX3JlcXVlc3Qu
Y29ubmVjdGlvbi5yZW1vdGVfYWRkciwpKSkKLSAgICAgICAgcmV0dXJuIGJ5dGVzCisgICAgICAg
ICAgICAgICAgJ1JlY2VpdmluZyAlZCBieXRlIGZhaWxlZC4gSU9FcnJvciAoJXMpIG9jY3VycmVk
JyAlCisgICAgICAgICAgICAgICAgKGxlbmd0aCwgZSkpCiAKLSAgICBkZWYgX3dyaXRlKHNlbGYs
IGJ5dGVzKToKKyAgICBkZWYgX3dyaXRlKHNlbGYsIGJ5dGVzX3RvX3dyaXRlKToKICAgICAgICAg
IiIiV3JpdGVzIGdpdmVuIGJ5dGVzIHRvIGNvbm5lY3Rpb24uIEluIGNhc2Ugd2UgY2F0Y2ggYW55
IGV4Y2VwdGlvbiwKICAgICAgICAgcHJlcGVuZHMgcmVtb3RlIGFkZHJlc3MgdG8gdGhlIGV4Y2Vw
dGlvbiBtZXNzYWdlIGFuZCByYWlzZSBhZ2Fpbi4KICAgICAgICAgIiIiCiAKICAgICAgICAgdHJ5
OgotICAgICAgICAgICAgc2VsZi5fcmVxdWVzdC5jb25uZWN0aW9uLndyaXRlKGJ5dGVzKQorICAg
ICAgICAgICAgc2VsZi5fcmVxdWVzdC5jb25uZWN0aW9uLndyaXRlKGJ5dGVzX3RvX3dyaXRlKQog
ICAgICAgICBleGNlcHQgRXhjZXB0aW9uLCBlOgogICAgICAgICAgICAgdXRpbC5wcmVwZW5kX21l
c3NhZ2VfdG9fZXhjZXB0aW9uKAogICAgICAgICAgICAgICAgICAgICAnRmFpbGVkIHRvIHNlbmQg
bWVzc2FnZSB0byAlcjogJyAlCkBAIC0xMzgsMTIgKzE1NCwxMiBAQCBjbGFzcyBTdHJlYW1CYXNl
KG9iamVjdCk6CiAgICAgICAgICAgICBDb25uZWN0aW9uVGVybWluYXRlZEV4Y2VwdGlvbjogd2hl
biByZWFkIHJldHVybnMgZW1wdHkgc3RyaW5nLgogICAgICAgICAiIiIKIAotICAgICAgICBieXRl
cyA9IFtdCisgICAgICAgIHJlYWRfYnl0ZXMgPSBbXQogICAgICAgICB3aGlsZSBsZW5ndGggPiAw
OgotICAgICAgICAgICAgbmV3X2J5dGVzID0gc2VsZi5fcmVhZChsZW5ndGgpCi0gICAgICAgICAg
ICBieXRlcy5hcHBlbmQobmV3X2J5dGVzKQotICAgICAgICAgICAgbGVuZ3RoIC09IGxlbihuZXdf
Ynl0ZXMpCi0gICAgICAgIHJldHVybiAnJy5qb2luKGJ5dGVzKQorICAgICAgICAgICAgbmV3X3Jl
YWRfYnl0ZXMgPSBzZWxmLl9yZWFkKGxlbmd0aCkKKyAgICAgICAgICAgIHJlYWRfYnl0ZXMuYXBw
ZW5kKG5ld19yZWFkX2J5dGVzKQorICAgICAgICAgICAgbGVuZ3RoIC09IGxlbihuZXdfcmVhZF9i
eXRlcykKKyAgICAgICAgcmV0dXJuICcnLmpvaW4ocmVhZF9ieXRlcykKIAogICAgIGRlZiBfcmVh
ZF91bnRpbChzZWxmLCBkZWxpbV9jaGFyKToKICAgICAgICAgIiIiUmVhZHMgYnl0ZXMgdW50aWwg
d2UgZW5jb3VudGVyIGRlbGltX2NoYXIuIFRoZSByZXN1bHQgd2lsbCBub3QKQEAgLTE1MywxMyAr
MTY5LDEzIEBAIGNsYXNzIFN0cmVhbUJhc2Uob2JqZWN0KToKICAgICAgICAgICAgIENvbm5lY3Rp
b25UZXJtaW5hdGVkRXhjZXB0aW9uOiB3aGVuIHJlYWQgcmV0dXJucyBlbXB0eSBzdHJpbmcuCiAg
ICAgICAgICIiIgogCi0gICAgICAgIGJ5dGVzID0gW10KKyAgICAgICAgcmVhZF9ieXRlcyA9IFtd
CiAgICAgICAgIHdoaWxlIFRydWU6CiAgICAgICAgICAgICBjaCA9IHNlbGYuX3JlYWQoMSkKICAg
ICAgICAgICAgIGlmIGNoID09IGRlbGltX2NoYXI6CiAgICAgICAgICAgICAgICAgYnJlYWsKLSAg
ICAgICAgICAgIGJ5dGVzLmFwcGVuZChjaCkKLSAgICAgICAgcmV0dXJuICcnLmpvaW4oYnl0ZXMp
CisgICAgICAgICAgICByZWFkX2J5dGVzLmFwcGVuZChjaCkKKyAgICAgICAgcmV0dXJuICcnLmpv
aW4ocmVhZF9ieXRlcykKIAogCiAjIHZpOnN0cz00IHN3PTQgZXQKZGlmZiAtLWdpdCBhL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvdGhpcmRwYXJ0eS9tb2RfcHl3ZWJzb2NrZXQvX3N0cmVhbV9oeWJp
LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90aGlyZHBhcnR5L21vZF9weXdlYnNvY2tldC9f
c3RyZWFtX2h5YmkucHkKaW5kZXggYmQxNThmYTZiOGFhMGYwZDdkMTdiNTg0NjM4ZmI5YzA2ODE3
NzJkNC4uYThhNDllM2MzZGM5NWJhOWY3ZmQ0MTI4OTM4M2ZlMDdhZmRkNTc3ZiAxMDA2NDQKLS0t
IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90aGlyZHBhcnR5L21vZF9weXdlYnNvY2tldC9fc3Ry
ZWFtX2h5YmkucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90aGlyZHBhcnR5L21vZF9w
eXdlYnNvY2tldC9fc3RyZWFtX2h5YmkucHkKQEAgLTI4MCw3ICsyODAsNyBAQCBkZWYgcGFyc2Vf
ZnJhbWUocmVjZWl2ZV9ieXRlcywgbG9nZ2VyPU5vbmUsCiAgICAgaWYgbG9nZ2VyLmlzRW5hYmxl
ZEZvcihjb21tb24uTE9HTEVWRUxfRklORSk6CiAgICAgICAgIHVubWFza19zdGFydCA9IHRpbWUu
dGltZSgpCiAKLSAgICBieXRlcyA9IG1hc2tlci5tYXNrKHJhd19wYXlsb2FkX2J5dGVzKQorICAg
IHVubWFza2VkX2J5dGVzID0gbWFza2VyLm1hc2socmF3X3BheWxvYWRfYnl0ZXMpCiAKICAgICBp
ZiBsb2dnZXIuaXNFbmFibGVkRm9yKGNvbW1vbi5MT0dMRVZFTF9GSU5FKToKICAgICAgICAgbG9n
Z2VyLmxvZygKQEAgLTI4OCw3ICsyODgsNyBAQCBkZWYgcGFyc2VfZnJhbWUocmVjZWl2ZV9ieXRl
cywgbG9nZ2VyPU5vbmUsCiAgICAgICAgICAgICAnRG9uZSB1bm1hc2tpbmcgcGF5bG9hZCBkYXRh
IGF0ICVzIE1CL3MnLAogICAgICAgICAgICAgcGF5bG9hZF9sZW5ndGggLyAodGltZS50aW1lKCkg
LSB1bm1hc2tfc3RhcnQpIC8gMTAwMCAvIDEwMDApCiAKLSAgICByZXR1cm4gb3Bjb2RlLCBieXRl
cywgZmluLCByc3YxLCByc3YyLCByc3YzCisgICAgcmV0dXJuIG9wY29kZSwgdW5tYXNrZWRfYnl0
ZXMsIGZpbiwgcnN2MSwgcnN2MiwgcnN2MwogCiAKIGNsYXNzIEZyYWdtZW50ZWRGcmFtZUJ1aWxk
ZXIob2JqZWN0KToKQEAgLTM4OSw5ICszODksNiBAQCBjbGFzcyBTdHJlYW1PcHRpb25zKG9iamVj
dCk6CiAgICAgZGVmIF9faW5pdF9fKHNlbGYpOgogICAgICAgICAiIiJDb25zdHJ1Y3RzIFN0cmVh
bU9wdGlvbnMuIiIiCiAKLSAgICAgICAgIyBFbmFibGVzIGRlZmxhdGUtc3RyZWFtIGV4dGVuc2lv
bi4KLSAgICAgICAgc2VsZi5kZWZsYXRlX3N0cmVhbSA9IEZhbHNlCi0KICAgICAgICAgIyBGaWx0
ZXJzIGFwcGxpZWQgdG8gZnJhbWVzLgogICAgICAgICBzZWxmLm91dGdvaW5nX2ZyYW1lX2ZpbHRl
cnMgPSBbXQogICAgICAgICBzZWxmLmluY29taW5nX2ZyYW1lX2ZpbHRlcnMgPSBbXQpAQCAtNDAz
LDkgKzQwMCw2IEBAIGNsYXNzIFN0cmVhbU9wdGlvbnMob2JqZWN0KToKICAgICAgICAgc2VsZi5l
bmNvZGVfdGV4dF9tZXNzYWdlX3RvX3V0ZjggPSBUcnVlCiAgICAgICAgIHNlbGYubWFza19zZW5k
ID0gRmFsc2UKICAgICAgICAgc2VsZi51bm1hc2tfcmVjZWl2ZSA9IFRydWUKLSAgICAgICAgIyBS
RkM2NDU1IGRpc2FsbG93cyBmcmFnbWVudGVkIGNvbnRyb2wgZnJhbWVzLCBidXQgbXV4IGV4dGVu
c2lvbgotICAgICAgICAjIHJlbGF4ZXMgdGhlIHJlc3RyaWN0aW9uLgotICAgICAgICBzZWxmLmFs
bG93X2ZyYWdtZW50ZWRfY29udHJvbF9mcmFtZSA9IEZhbHNlCiAKIAogY2xhc3MgU3RyZWFtKFN0
cmVhbUJhc2UpOgpAQCAtNDI2LDEwICs0MjAsNiBAQCBjbGFzcyBTdHJlYW0oU3RyZWFtQmFzZSk6
CiAKICAgICAgICAgc2VsZi5fb3B0aW9ucyA9IG9wdGlvbnMKIAotICAgICAgICBpZiBzZWxmLl9v
cHRpb25zLmRlZmxhdGVfc3RyZWFtOgotICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdT
ZXR1cCBmaWx0ZXIgZm9yIGRlZmxhdGUtc3RyZWFtJykKLSAgICAgICAgICAgIHNlbGYuX3JlcXVl
c3QgPSB1dGlsLkRlZmxhdGVSZXF1ZXN0KHNlbGYuX3JlcXVlc3QpCi0KICAgICAgICAgc2VsZi5f
cmVxdWVzdC5jbGllbnRfdGVybWluYXRlZCA9IEZhbHNlCiAgICAgICAgIHNlbGYuX3JlcXVlc3Qu
c2VydmVyX3Rlcm1pbmF0ZWQgPSBGYWxzZQogCkBAIC00NjMsMTAgKzQ1MywxMCBAQCBjbGFzcyBT
dHJlYW0oU3RyZWFtQmFzZSk6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bm1hc2tfcmVj
ZWl2ZT1zZWxmLl9vcHRpb25zLnVubWFza19yZWNlaXZlKQogCiAgICAgZGVmIF9yZWNlaXZlX2Zy
YW1lX2FzX2ZyYW1lX29iamVjdChzZWxmKToKLSAgICAgICAgb3Bjb2RlLCBieXRlcywgZmluLCBy
c3YxLCByc3YyLCByc3YzID0gc2VsZi5fcmVjZWl2ZV9mcmFtZSgpCisgICAgICAgIG9wY29kZSwg
dW5tYXNrZWRfYnl0ZXMsIGZpbiwgcnN2MSwgcnN2MiwgcnN2MyA9IHNlbGYuX3JlY2VpdmVfZnJh
bWUoKQogCiAgICAgICAgIHJldHVybiBGcmFtZShmaW49ZmluLCByc3YxPXJzdjEsIHJzdjI9cnN2
MiwgcnN2Mz1yc3YzLAotICAgICAgICAgICAgICAgICAgICAgb3Bjb2RlPW9wY29kZSwgcGF5bG9h
ZD1ieXRlcykKKyAgICAgICAgICAgICAgICAgICAgIG9wY29kZT1vcGNvZGUsIHBheWxvYWQ9dW5t
YXNrZWRfYnl0ZXMpCiAKICAgICBkZWYgcmVjZWl2ZV9maWx0ZXJlZF9mcmFtZShzZWxmKToKICAg
ICAgICAgIiIiUmVjZWl2ZXMgYSBmcmFtZSBhbmQgYXBwbGllcyBmcmFtZSBmaWx0ZXJzIGFuZCBt
ZXNzYWdlIGZpbHRlcnMuCkBAIC02MDIsOCArNTkyLDcgQEAgY2xhc3MgU3RyZWFtKFN0cmVhbUJh
c2UpOgogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAjIFN0YXJ0IG9mIGZyYWdt
ZW50YXRpb24gZnJhbWUKIAotICAgICAgICAgICAgICAgIGlmIChub3Qgc2VsZi5fb3B0aW9ucy5h
bGxvd19mcmFnbWVudGVkX2NvbnRyb2xfZnJhbWUgYW5kCi0gICAgICAgICAgICAgICAgICAgIGNv
bW1vbi5pc19jb250cm9sX29wY29kZShmcmFtZS5vcGNvZGUpKToKKyAgICAgICAgICAgICAgICBp
ZiBjb21tb24uaXNfY29udHJvbF9vcGNvZGUoZnJhbWUub3Bjb2RlKToKICAgICAgICAgICAgICAg
ICAgICAgcmFpc2UgSW52YWxpZEZyYW1lRXhjZXB0aW9uKAogICAgICAgICAgICAgICAgICAgICAg
ICAgJ0NvbnRyb2wgZnJhbWVzIG11c3Qgbm90IGJlIGZyYWdtZW50ZWQnKQogCkBAIC02NDcsOCAr
NjM2LDkgQEAgY2xhc3MgU3RyZWFtKFN0cmVhbUJhc2UpOgogICAgICAgICAgICAgICAgIHNlbGYu
X3JlcXVlc3Qud3NfY2xvc2VfY29kZSwKICAgICAgICAgICAgICAgICBzZWxmLl9yZXF1ZXN0Lndz
X2Nsb3NlX3JlYXNvbikKIAotICAgICAgICAjIERyYWluIGp1bmsgZGF0YSBhZnRlciB0aGUgY2xv
c2UgZnJhbWUgaWYgbmVjZXNzYXJ5LgotICAgICAgICBzZWxmLl9kcmFpbl9yZWNlaXZlZF9kYXRh
KCkKKyAgICAgICAgIyBBcyB3ZSd2ZSByZWNlaXZlZCBhIGNsb3NlIGZyYW1lLCBubyBtb3JlIGRh
dGEgaXMgY29taW5nIG92ZXIgdGhlCisgICAgICAgICMgc29ja2V0LiBXZSBjYW4gbm93IHNhZmVs
eSBjbG9zZSB0aGUgc29ja2V0IHdpdGhvdXQgd29ycnlpbmcgYWJvdXQKKyAgICAgICAgIyBSU1Qg
c2VuZGluZy4KIAogICAgICAgICBpZiBzZWxmLl9yZXF1ZXN0LnNlcnZlcl90ZXJtaW5hdGVkOgog
ICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKApAQCAtNjcyLDcgKzY2Miw3IEBAIGNsYXNz
IFN0cmVhbShTdHJlYW1CYXNlKToKICAgICAgICAgICAgICAgICByZWFzb24gPSAnJwogICAgICAg
ICBzZWxmLl9zZW5kX2Nsb3NpbmdfaGFuZHNoYWtlKGNvZGUsIHJlYXNvbikKICAgICAgICAgc2Vs
Zi5fbG9nZ2VyLmRlYnVnKAotICAgICAgICAgICAgJ1NlbnQgYWNrIGZvciBjbGllbnQtaW5pdGlh
dGVkIGNsb3NpbmcgaGFuZHNoYWtlICcKKyAgICAgICAgICAgICdBY2tub3dsZWRnZWQgY2xvc2lu
ZyBoYW5kc2hha2UgaW5pdGlhdGVkIGJ5IHRoZSBwZWVyICcKICAgICAgICAgICAgICcoY29kZT0l
ciwgcmVhc29uPSVyKScsIGNvZGUsIHJlYXNvbikKIAogICAgIGRlZiBfcHJvY2Vzc19waW5nX21l
c3NhZ2Uoc2VsZiwgbWVzc2FnZSk6CkBAIC04MTUsMTMgKzgwNSwxNSBAQCBjbGFzcyBTdHJlYW0o
U3RyZWFtQmFzZSk6CiAKICAgICAgICAgc2VsZi5fd3JpdGUoZnJhbWUpCiAKLSAgICBkZWYgY2xv
c2VfY29ubmVjdGlvbihzZWxmLCBjb2RlPWNvbW1vbi5TVEFUVVNfTk9STUFMX0NMT1NVUkUsIHJl
YXNvbj0nJyk6CisgICAgZGVmIGNsb3NlX2Nvbm5lY3Rpb24oc2VsZiwgY29kZT1jb21tb24uU1RB
VFVTX05PUk1BTF9DTE9TVVJFLCByZWFzb249JycsCisgICAgICAgICAgICAgICAgICAgICAgICAg
d2FpdF9yZXNwb25zZT1UcnVlKToKICAgICAgICAgIiIiQ2xvc2VzIGEgV2ViU29ja2V0IGNvbm5l
Y3Rpb24uCiAKICAgICAgICAgQXJnczoKICAgICAgICAgICAgIGNvZGU6IFN0YXR1cyBjb2RlIGZv
ciBjbG9zZSBmcmFtZS4gSWYgY29kZSBpcyBOb25lLCBhIGNsb3NlCiAgICAgICAgICAgICAgICAg
ZnJhbWUgd2l0aCBlbXB0eSBib2R5IHdpbGwgYmUgc2VudC4KICAgICAgICAgICAgIHJlYXNvbjog
c3RyaW5nIHJlcHJlc2VudGluZyBjbG9zZSByZWFzb24uCisgICAgICAgICAgICB3YWl0X3Jlc3Bv
bnNlOiBUcnVlIHdoZW4gY2FsbGVyIHdhbnQgdG8gd2FpdCB0aGUgcmVzcG9uc2UuCiAgICAgICAg
IFJhaXNlczoKICAgICAgICAgICAgIEJhZE9wZXJhdGlvbkV4Y2VwdGlvbjogd2hlbiByZWFzb24g
aXMgc3BlY2lmaWVkIHdpdGggY29kZSBOb25lCiAgICAgICAgICAgICBvciByZWFzb24gaXMgbm90
IGFuIGluc3RhbmNlIG9mIGJvdGggc3RyIGFuZCB1bmljb2RlLgpAQCAtODQ0LDExICs4MzYsMTEg
QEAgY2xhc3MgU3RyZWFtKFN0cmVhbUJhc2UpOgogCiAgICAgICAgIHNlbGYuX3NlbmRfY2xvc2lu
Z19oYW5kc2hha2UoY29kZSwgcmVhc29uKQogICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoCi0g
ICAgICAgICAgICAnU2VudCBzZXJ2ZXItaW5pdGlhdGVkIGNsb3NpbmcgaGFuZHNoYWtlIChjb2Rl
PSVyLCByZWFzb249JXIpJywKKyAgICAgICAgICAgICdJbml0aWF0ZWQgY2xvc2luZyBoYW5kc2hh
a2UgKGNvZGU9JXIsIHJlYXNvbj0lciknLAogICAgICAgICAgICAgY29kZSwgcmVhc29uKQogCiAg
ICAgICAgIGlmIChjb2RlID09IGNvbW1vbi5TVEFUVVNfR09JTkdfQVdBWSBvcgotICAgICAgICAg
ICAgY29kZSA9PSBjb21tb24uU1RBVFVTX1BST1RPQ09MX0VSUk9SKToKKyAgICAgICAgICAgIGNv
ZGUgPT0gY29tbW9uLlNUQVRVU19QUk9UT0NPTF9FUlJPUikgb3Igbm90IHdhaXRfcmVzcG9uc2U6
CiAgICAgICAgICAgICAjIEl0IGRvZXNuJ3QgbWFrZSBzZW5zZSB0byB3YWl0IGZvciBhIGNsb3Nl
IGZyYW1lIGlmIHRoZSByZWFzb24gaXMKICAgICAgICAgICAgICMgcHJvdG9jb2wgZXJyb3Igb3Ig
dGhhdCB0aGUgc2VydmVyIGlzIGdvaW5nIGF3YXkuIEZvciBzb21lIG9mCiAgICAgICAgICAgICAj
IG90aGVyIHJlYXNvbnMsIGl0IG1pZ2h0IG5vdCBtYWtlIHNlbnNlIHRvIHdhaXQgZm9yIGEgY2xv
c2UgZnJhbWUsCkBAIC04OTEsMjUgKzg4Myw1IEBAIGNsYXNzIFN0cmVhbShTdHJlYW1CYXNlKToK
IAogICAgICAgICByZXR1cm4gc2VsZi5fb3JpZ2luYWxfb3Bjb2RlCiAKLSAgICBkZWYgX2RyYWlu
X3JlY2VpdmVkX2RhdGEoc2VsZik6Ci0gICAgICAgICIiIkRyYWlucyB1bnJlYWQgZGF0YSBpbiB0
aGUgcmVjZWl2ZSBidWZmZXIgdG8gYXZvaWQgc2VuZGluZyBvdXQgVENQCi0gICAgICAgIFJTVCBw
YWNrZXQuIFRoaXMgaXMgYmVjYXVzZSB3aGVuIGRlZmxhdGUtc3RyZWFtIGlzIGVuYWJsZWQsIHNv
bWUKLSAgICAgICAgREVGTEFURSBibG9jayBmb3IgZmx1c2hpbmcgZGF0YSBtYXkgZm9sbG93IGEg
Y2xvc2UgZnJhbWUuIElmIGFueSBkYXRhCi0gICAgICAgIHJlbWFpbnMgaW4gdGhlIHJlY2VpdmUg
YnVmZmVyIG9mIGEgc29ja2V0IHdoZW4gdGhlIHNvY2tldCBpcyBjbG9zZWQsCi0gICAgICAgIGl0
IHNlbmRzIG91dCBUQ1AgUlNUIHBhY2tldCB0byB0aGUgb3RoZXIgcGVlci4KLQotICAgICAgICBT
aW5jZSBtb2RfcHl0aG9uJ3MgbXBfY29ubiBvYmplY3QgZG9lc24ndCBzdXBwb3J0IG5vbi1ibG9j
a2luZyByZWFkLAotICAgICAgICB3ZSBwZXJmb3JtIHRoaXMgb25seSB3aGVuIHB5d2Vic29ja2V0
IGlzIHJ1bm5pbmcgaW4gc3RhbmRhbG9uZSBtb2RlLgotICAgICAgICAiIiIKLQotICAgICAgICAj
IElmIHNlbGYuX29wdGlvbnMuZGVmbGF0ZV9zdHJlYW0gaXMgdHJ1ZSwgc2VsZi5fcmVxdWVzdCBp
cwotICAgICAgICAjIERlZmxhdGVSZXF1ZXN0LCBzbyB3ZSBjYW4gZ2V0IHdyYXBwZWQgcmVxdWVz
dCBvYmplY3QgYnkKLSAgICAgICAgIyBzZWxmLl9yZXF1ZXN0Ll9yZXF1ZXN0LgotICAgICAgICAj
Ci0gICAgICAgICMgT25seSBfU3RhbmRhbG9uZVJlcXVlc3QgaGFzIF9kcmFpbl9yZWNlaXZlZF9k
YXRhIG1ldGhvZC4KLSAgICAgICAgaWYgKHNlbGYuX29wdGlvbnMuZGVmbGF0ZV9zdHJlYW0gYW5k
Ci0gICAgICAgICAgICAoJ19kcmFpbl9yZWNlaXZlZF9kYXRhJyBpbiBkaXIoc2VsZi5fcmVxdWVz
dC5fcmVxdWVzdCkpKToKLSAgICAgICAgICAgIHNlbGYuX3JlcXVlc3QuX3JlcXVlc3QuX2RyYWlu
X3JlY2VpdmVkX2RhdGEoKQotCiAKICMgdmk6c3RzPTQgc3c9NCBldApkaWZmIC0tZ2l0IGEvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS90aGlyZHBhcnR5L21vZF9weXdlYnNvY2tldC9jb21tb24ucHkg
Yi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3RoaXJkcGFydHkvbW9kX3B5d2Vic29ja2V0L2NvbW1v
bi5weQppbmRleCAyMzg4Mzc5YzA4ZTVhNzU3NzExZTc2OGE3NGM0NTZjMTFjZjYzNzY0Li5hZmEx
MjMzNjg2YjdlZTJhMjI4ZGZlNDMyZjcxMTMwNTVjOTMzYmI3IDEwMDY0NAotLS0gYS9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L3RoaXJkcGFydHkvbW9kX3B5d2Vic29ja2V0L2NvbW1vbi5weQorKysg
Yi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3RoaXJkcGFydHkvbW9kX3B5d2Vic29ja2V0L2NvbW1v
bi5weQpAQCAtMTAxLDEwICsxMDEsMTAgQEAgU0VDX1dFQlNPQ0tFVF9LRVkyX0hFQURFUiA9ICdT
ZWMtV2ViU29ja2V0LUtleTInCiBTRUNfV0VCU09DS0VUX0xPQ0FUSU9OX0hFQURFUiA9ICdTZWMt
V2ViU29ja2V0LUxvY2F0aW9uJwogCiAjIEV4dGVuc2lvbnMKLURFRkxBVEVfU1RSRUFNX0VYVEVO
U0lPTiA9ICdkZWZsYXRlLXN0cmVhbScKIERFRkxBVEVfRlJBTUVfRVhURU5TSU9OID0gJ2RlZmxh
dGUtZnJhbWUnCiBQRVJGUkFNRV9DT01QUkVTU0lPTl9FWFRFTlNJT04gPSAncGVyZnJhbWUtY29t
cHJlc3MnCiBQRVJNRVNTQUdFX0NPTVBSRVNTSU9OX0VYVEVOU0lPTiA9ICdwZXJtZXNzYWdlLWNv
bXByZXNzJworUEVSTUVTU0FHRV9ERUZMQVRFX0VYVEVOU0lPTiA9ICdwZXJtZXNzYWdlLWRlZmxh
dGUnCiBYX1dFQktJVF9ERUZMQVRFX0ZSQU1FX0VYVEVOU0lPTiA9ICd4LXdlYmtpdC1kZWZsYXRl
LWZyYW1lJwogWF9XRUJLSVRfUEVSTUVTU0FHRV9DT01QUkVTU0lPTl9FWFRFTlNJT04gPSAneC13
ZWJraXQtcGVybWVzc2FnZS1jb21wcmVzcycKIE1VWF9FWFRFTlNJT04gPSAnbXV4X0RPX05PVF9V
U0UnCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3RoaXJkcGFydHkvbW9kX3B5
d2Vic29ja2V0L2Rpc3BhdGNoLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90aGlyZHBhcnR5
L21vZF9weXdlYnNvY2tldC9kaXNwYXRjaC5weQppbmRleCAyNTkwNWYxODBlYTQ5Yjk1NjBhYzZi
ZGM5MTdhOTc4YjM4MTQxZDI1Li45NmM5MWUwYzkwZTc0MjlkMGY3NjBjMGU5YzdiOTgxMjA0MDky
YTBhIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3RoaXJkcGFydHkvbW9kX3B5
d2Vic29ja2V0L2Rpc3BhdGNoLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGhpcmRw
YXJ0eS9tb2RfcHl3ZWJzb2NrZXQvZGlzcGF0Y2gucHkKQEAgLTI1NSw2ICsyNTUsOSBAQCBjbGFz
cyBEaXNwYXRjaGVyKG9iamVjdCk6CiAgICAgICAgIHRyeToKICAgICAgICAgICAgIGRvX2V4dHJh
X2hhbmRzaGFrZV8ocmVxdWVzdCkKICAgICAgICAgZXhjZXB0IGhhbmRzaGFrZS5BYm9ydGVkQnlV
c2VyRXhjZXB0aW9uLCBlOgorICAgICAgICAgICAgIyBSZS1yYWlzZSB0byB0ZWxsIHRoZSBjYWxs
ZXIgb2YgdGhpcyBmdW5jdGlvbiB0byBmaW5pc2ggdGhpcworICAgICAgICAgICAgIyBjb25uZWN0
aW9uIHdpdGhvdXQgc2VuZGluZyBhbnkgZXJyb3IuCisgICAgICAgICAgICBzZWxmLl9sb2dnZXIu
ZGVidWcoJyVzJywgdXRpbC5nZXRfc3RhY2tfdHJhY2UoKSkKICAgICAgICAgICAgIHJhaXNlCiAg
ICAgICAgIGV4Y2VwdCBFeGNlcHRpb24sIGU6CiAgICAgICAgICAgICB1dGlsLnByZXBlbmRfbWVz
c2FnZV90b19leGNlcHRpb24oCkBAIC0yOTQsMTEgKzI5NywxMiBAQCBjbGFzcyBEaXNwYXRjaGVy
KG9iamVjdCk6CiAgICAgICAgICAgICAgICAgcmVxdWVzdC53c19zdHJlYW0uY2xvc2VfY29ubmVj
dGlvbigpCiAgICAgICAgICMgQ2F0Y2ggbm9uLWNyaXRpY2FsIGV4Y2VwdGlvbnMgdGhlIGhhbmRs
ZXIgZGlkbid0IGhhbmRsZS4KICAgICAgICAgZXhjZXB0IGhhbmRzaGFrZS5BYm9ydGVkQnlVc2Vy
RXhjZXB0aW9uLCBlOgotICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCclcycsIGUpCisg
ICAgICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJyVzJywgdXRpbC5nZXRfc3RhY2tfdHJhY2Uo
KSkKICAgICAgICAgICAgIHJhaXNlCiAgICAgICAgIGV4Y2VwdCBtc2d1dGlsLkJhZE9wZXJhdGlv
bkV4Y2VwdGlvbiwgZToKICAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygnJXMnLCBlKQot
ICAgICAgICAgICAgcmVxdWVzdC53c19zdHJlYW0uY2xvc2VfY29ubmVjdGlvbihjb21tb24uU1RB
VFVTX0FCTk9STUFMX0NMT1NVUkUpCisgICAgICAgICAgICByZXF1ZXN0LndzX3N0cmVhbS5jbG9z
ZV9jb25uZWN0aW9uKAorICAgICAgICAgICAgICAgIGNvbW1vbi5TVEFUVVNfSU5URVJOQUxfRU5E
UE9JTlRfRVJST1IpCiAgICAgICAgIGV4Y2VwdCBtc2d1dGlsLkludmFsaWRGcmFtZUV4Y2VwdGlv
biwgZToKICAgICAgICAgICAgICMgSW52YWxpZEZyYW1lRXhjZXB0aW9uIG11c3QgYmUgY2F1Z2h0
IGJlZm9yZQogICAgICAgICAgICAgIyBDb25uZWN0aW9uVGVybWluYXRlZEV4Y2VwdGlvbiB0aGF0
IGNhdGNoZXMgSW52YWxpZEZyYW1lRXhjZXB0aW9uLgpAQCAtMzE0LDYgKzMxOCw4IEBAIGNsYXNz
IERpc3BhdGNoZXIob2JqZWN0KToKICAgICAgICAgZXhjZXB0IG1zZ3V0aWwuQ29ubmVjdGlvblRl
cm1pbmF0ZWRFeGNlcHRpb24sIGU6CiAgICAgICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJyVz
JywgZSkKICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiwgZToKKyAgICAgICAgICAgICMgQW55IG90
aGVyIGV4Y2VwdGlvbnMgYXJlIGZvcndhcmRlZCB0byB0aGUgY2FsbGVyIG9mIHRoaXMKKyAgICAg
ICAgICAgICMgZnVuY3Rpb24uCiAgICAgICAgICAgICB1dGlsLnByZXBlbmRfbWVzc2FnZV90b19l
eGNlcHRpb24oCiAgICAgICAgICAgICAgICAgJyVzIHJhaXNlZCBleGNlcHRpb24gZm9yICVzOiAn
ICUgKAogICAgICAgICAgICAgICAgICAgICBfVFJBTlNGRVJfREFUQV9IQU5ETEVSX05BTUUsIHJl
cXVlc3Qud3NfcmVzb3VyY2UpLApkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90
aGlyZHBhcnR5L21vZF9weXdlYnNvY2tldC9leHRlbnNpb25zLnB5IGIvVG9vbHMvU2NyaXB0cy93
ZWJraXRweS90aGlyZHBhcnR5L21vZF9weXdlYnNvY2tldC9leHRlbnNpb25zLnB5CmluZGV4IDAz
ZGJmOWVlMWI5OGNkMWViNmE2NzBlNzJiZjFhOWNiMzU1NDE4MjMuLjU1MmQyYzA3MmE3YTdiYTQy
MDBkMjk3YTdlYjU3OWM1YzM3MzhjNDMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cHkvdGhpcmRwYXJ0eS9tb2RfcHl3ZWJzb2NrZXQvZXh0ZW5zaW9ucy5weQorKysgYi9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L3RoaXJkcGFydHkvbW9kX3B5d2Vic29ja2V0L2V4dGVuc2lvbnMucHkK
QEAgLTM0LDgzICszNCwxMTQgQEAgZnJvbSBtb2RfcHl3ZWJzb2NrZXQuaHR0cF9oZWFkZXJfdXRp
bCBpbXBvcnQgcXVvdGVfaWZfbmVjZXNzYXJ5CiAKIAogX2F2YWlsYWJsZV9wcm9jZXNzb3JzID0g
e30KK19jb21wcmVzc2lvbl9leHRlbnNpb25fbmFtZXMgPSBbXQogCiAKIGNsYXNzIEV4dGVuc2lv
blByb2Nlc3NvckludGVyZmFjZShvYmplY3QpOgogCi0gICAgZGVmIG5hbWUoc2VsZik6Ci0gICAg
ICAgIHJldHVybiBOb25lCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHJlcXVlc3QpOgorICAgICAg
ICBzZWxmLl9yZXF1ZXN0ID0gcmVxdWVzdAorICAgICAgICBzZWxmLl9hY3RpdmUgPSBUcnVlCiAK
LSAgICBkZWYgZ2V0X2V4dGVuc2lvbl9yZXNwb25zZShzZWxmKToKKyAgICBkZWYgcmVxdWVzdChz
ZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX3JlcXVlc3QKKworICAgIGRlZiBuYW1lKHNlbGYp
OgogICAgICAgICByZXR1cm4gTm9uZQogCi0gICAgZGVmIHNldHVwX3N0cmVhbV9vcHRpb25zKHNl
bGYsIHN0cmVhbV9vcHRpb25zKToKKyAgICBkZWYgY2hlY2tfY29uc2lzdGVuY3lfd2l0aF9vdGhl
cl9wcm9jZXNzb3JzKHNlbGYsIHByb2Nlc3NvcnMpOgogICAgICAgICBwYXNzCiAKKyAgICBkZWYg
c2V0X2FjdGl2ZShzZWxmLCBhY3RpdmUpOgorICAgICAgICBzZWxmLl9hY3RpdmUgPSBhY3RpdmUK
IAotY2xhc3MgRGVmbGF0ZVN0cmVhbUV4dGVuc2lvblByb2Nlc3NvcihFeHRlbnNpb25Qcm9jZXNz
b3JJbnRlcmZhY2UpOgotICAgICIiIldlYlNvY2tldCBERUZMQVRFIHN0cmVhbSBleHRlbnNpb24g
cHJvY2Vzc29yLgotCi0gICAgU3BlY2lmaWNhdGlvbjoKLSAgICBTZWN0aW9uIDkuMi4xIGluCi0g
ICAgaHR0cDovL3Rvb2xzLmlldGYub3JnL2h0bWwvZHJhZnQtaWV0Zi1oeWJpLXRoZXdlYnNvY2tl
dHByb3RvY29sLTEwCi0gICAgIiIiCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgcmVxdWVzdCk6
Ci0gICAgICAgIHNlbGYuX2xvZ2dlciA9IHV0aWwuZ2V0X2NsYXNzX2xvZ2dlcihzZWxmKQotCi0g
ICAgICAgIHNlbGYuX3JlcXVlc3QgPSByZXF1ZXN0CisgICAgZGVmIGlzX2FjdGl2ZShzZWxmKToK
KyAgICAgICAgcmV0dXJuIHNlbGYuX2FjdGl2ZQogCi0gICAgZGVmIG5hbWUoc2VsZik6Ci0gICAg
ICAgIHJldHVybiBjb21tb24uREVGTEFURV9TVFJFQU1fRVhURU5TSU9OCisgICAgZGVmIF9nZXRf
ZXh0ZW5zaW9uX3Jlc3BvbnNlX2ludGVybmFsKHNlbGYpOgorICAgICAgICByZXR1cm4gTm9uZQog
CiAgICAgZGVmIGdldF9leHRlbnNpb25fcmVzcG9uc2Uoc2VsZik6Ci0gICAgICAgIGlmIGxlbihz
ZWxmLl9yZXF1ZXN0LmdldF9wYXJhbWV0ZXJfbmFtZXMoKSkgIT0gMDoKLSAgICAgICAgICAgIHJl
dHVybiBOb25lCi0KLSAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKAotICAgICAgICAgICAgJ0Vu
YWJsZSAlcyBleHRlbnNpb24nLCBjb21tb24uREVGTEFURV9TVFJFQU1fRVhURU5TSU9OKQorICAg
ICAgICBpZiBzZWxmLl9hY3RpdmU6CisgICAgICAgICAgICByZXNwb25zZSA9IHNlbGYuX2dldF9l
eHRlbnNpb25fcmVzcG9uc2VfaW50ZXJuYWwoKQorICAgICAgICAgICAgaWYgcmVzcG9uc2UgaXMg
Tm9uZToKKyAgICAgICAgICAgICAgICBzZWxmLl9hY3RpdmUgPSBGYWxzZQorICAgICAgICAgICAg
cmV0dXJuIHJlc3BvbnNlCisgICAgICAgIHJldHVybiBOb25lCiAKLSAgICAgICAgcmV0dXJuIGNv
bW1vbi5FeHRlbnNpb25QYXJhbWV0ZXIoY29tbW9uLkRFRkxBVEVfU1RSRUFNX0VYVEVOU0lPTikK
KyAgICBkZWYgX3NldHVwX3N0cmVhbV9vcHRpb25zX2ludGVybmFsKHNlbGYsIHN0cmVhbV9vcHRp
b25zKToKKyAgICAgICAgcGFzcwogCiAgICAgZGVmIHNldHVwX3N0cmVhbV9vcHRpb25zKHNlbGYs
IHN0cmVhbV9vcHRpb25zKToKLSAgICAgICAgc3RyZWFtX29wdGlvbnMuZGVmbGF0ZV9zdHJlYW0g
PSBUcnVlCisgICAgICAgIGlmIHNlbGYuX2FjdGl2ZToKKyAgICAgICAgICAgIHNlbGYuX3NldHVw
X3N0cmVhbV9vcHRpb25zX2ludGVybmFsKHN0cmVhbV9vcHRpb25zKQogCiAKLV9hdmFpbGFibGVf
cHJvY2Vzc29yc1tjb21tb24uREVGTEFURV9TVFJFQU1fRVhURU5TSU9OXSA9ICgKLSAgICBEZWZs
YXRlU3RyZWFtRXh0ZW5zaW9uUHJvY2Vzc29yKQotCi0KLWRlZiBfbG9nX2NvbXByZXNzaW9uX3Jh
dGlvKGxvZ2dlciwgb3JpZ2luYWxfYnl0ZXMsIHRvdGFsX29yaWdpbmFsX2J5dGVzLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZmlsdGVyZWRfYnl0ZXMsIHRvdGFsX2ZpbHRlcmVkX2J5dGVz
KToKK2RlZiBfbG9nX291dGdvaW5nX2NvbXByZXNzaW9uX3JhdGlvKAorICAgICAgICBsb2dnZXIs
IG9yaWdpbmFsX2J5dGVzLCBmaWx0ZXJlZF9ieXRlcywgYXZlcmFnZV9yYXRpbyk6CiAgICAgIyBQ
cmludCBpbmYgd2hlbiByYXRpbyBpcyBub3QgYXZhaWxhYmxlLgogICAgIHJhdGlvID0gZmxvYXQo
J2luZicpCi0gICAgYXZlcmFnZV9yYXRpbyA9IGZsb2F0KCdpbmYnKQogICAgIGlmIG9yaWdpbmFs
X2J5dGVzICE9IDA6CiAgICAgICAgIHJhdGlvID0gZmxvYXQoZmlsdGVyZWRfYnl0ZXMpIC8gb3Jp
Z2luYWxfYnl0ZXMKLSAgICBpZiB0b3RhbF9vcmlnaW5hbF9ieXRlcyAhPSAwOgotICAgICAgICBh
dmVyYWdlX3JhdGlvID0gKAotICAgICAgICAgICAgZmxvYXQodG90YWxfZmlsdGVyZWRfYnl0ZXMp
IC8gdG90YWxfb3JpZ2luYWxfYnl0ZXMpCi0gICAgbG9nZ2VyLmRlYnVnKCdPdXRnb2luZyBjb21w
cmVzcyByYXRpbzogJWYgKGF2ZXJhZ2U6ICVmKScgJQotICAgICAgICAocmF0aW8sIGF2ZXJhZ2Vf
cmF0aW8pKQogCisgICAgbG9nZ2VyLmRlYnVnKCdPdXRnb2luZyBjb21wcmVzc2lvbiByYXRpbzog
JWYgKGF2ZXJhZ2U6ICVmKScgJQorICAgICAgICAgICAgKHJhdGlvLCBhdmVyYWdlX3JhdGlvKSkK
IAotZGVmIF9sb2dfZGVjb21wcmVzc2lvbl9yYXRpbyhsb2dnZXIsIHJlY2VpdmVkX2J5dGVzLCB0
b3RhbF9yZWNlaXZlZF9ieXRlcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVy
ZWRfYnl0ZXMsIHRvdGFsX2ZpbHRlcmVkX2J5dGVzKToKKworZGVmIF9sb2dfaW5jb21pbmdfY29t
cHJlc3Npb25fcmF0aW8oCisgICAgICAgIGxvZ2dlciwgcmVjZWl2ZWRfYnl0ZXMsIGZpbHRlcmVk
X2J5dGVzLCBhdmVyYWdlX3JhdGlvKToKICAgICAjIFByaW50IGluZiB3aGVuIHJhdGlvIGlzIG5v
dCBhdmFpbGFibGUuCiAgICAgcmF0aW8gPSBmbG9hdCgnaW5mJykKLSAgICBhdmVyYWdlX3JhdGlv
ID0gZmxvYXQoJ2luZicpCi0gICAgaWYgcmVjZWl2ZWRfYnl0ZXMgIT0gMDoKKyAgICBpZiBmaWx0
ZXJlZF9ieXRlcyAhPSAwOgogICAgICAgICByYXRpbyA9IGZsb2F0KHJlY2VpdmVkX2J5dGVzKSAv
IGZpbHRlcmVkX2J5dGVzCi0gICAgaWYgdG90YWxfZmlsdGVyZWRfYnl0ZXMgIT0gMDoKLSAgICAg
ICAgYXZlcmFnZV9yYXRpbyA9ICgKLSAgICAgICAgICAgIGZsb2F0KHRvdGFsX3JlY2VpdmVkX2J5
dGVzKSAvIHRvdGFsX2ZpbHRlcmVkX2J5dGVzKQotICAgIGxvZ2dlci5kZWJ1ZygnSW5jb21pbmcg
Y29tcHJlc3MgcmF0aW86ICVmIChhdmVyYWdlOiAlZiknICUKLSAgICAgICAgKHJhdGlvLCBhdmVy
YWdlX3JhdGlvKSkKKworICAgIGxvZ2dlci5kZWJ1ZygnSW5jb21pbmcgY29tcHJlc3Npb24gcmF0
aW86ICVmIChhdmVyYWdlOiAlZiknICUKKyAgICAgICAgICAgIChyYXRpbywgYXZlcmFnZV9yYXRp
bykpCisKKworZGVmIF9wYXJzZV93aW5kb3dfYml0cyhiaXRzKToKKyAgICAiIiJSZXR1cm4gcGFy
c2VkIGludGVnZXIgdmFsdWUgaWZmIHRoZSBnaXZlbiBzdHJpbmcgY29uZm9ybXMgdG8gdGhlCisg
ICAgZ3JhbW1hciBvZiB0aGUgd2luZG93IGJpdHMgZXh0ZW5zaW9uIHBhcmFtZXRlcnMuCisgICAg
IiIiCisKKyAgICBpZiBiaXRzIGlzIE5vbmU6CisgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ1Zh
bHVlIGlzIHJlcXVpcmVkJykKKworICAgICMgRm9yIG5vbiBpbnRlZ2VyIHZhbHVlcyBzdWNoIGFz
ICIxMC4wIiwgVmFsdWVFcnJvciB3aWxsIGJlIHJhaXNlZC4KKyAgICBpbnRfYml0cyA9IGludChi
aXRzKQorCisgICAgIyBGaXJzdCBjb25kaXRpb24gaXMgdG8gZHJvcCBsZWFkaW5nIHplcm8gY2Fz
ZSBlLmcuICIwOCIuCisgICAgaWYgYml0cyAhPSBzdHIoaW50X2JpdHMpIG9yIGludF9iaXRzIDwg
OCBvciBpbnRfYml0cyA+IDE1OgorICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdJbnZhbGlkIHZh
bHVlOiAlcicgJSBiaXRzKQorCisgICAgcmV0dXJuIGludF9iaXRzCisKKworY2xhc3MgX0F2ZXJh
Z2VSYXRpb0NhbGN1bGF0b3Iob2JqZWN0KToKKyAgICAiIiJTdG9yZXMgdG90YWwgYnl0ZXMgb2Yg
b3JpZ2luYWwgYW5kIHJlc3VsdCBkYXRhLCBhbmQgY2FsY3VsYXRlcyBhdmVyYWdlCisgICAgcmVz
dWx0IC8gb3JpZ2luYWwgcmF0aW8uCisgICAgIiIiCisKKyAgICBkZWYgX19pbml0X18oc2VsZik6
CisgICAgICAgIHNlbGYuX3RvdGFsX29yaWdpbmFsX2J5dGVzID0gMAorICAgICAgICBzZWxmLl90
b3RhbF9yZXN1bHRfYnl0ZXMgPSAwCisKKyAgICBkZWYgYWRkX29yaWdpbmFsX2J5dGVzKHNlbGYs
IHZhbHVlKToKKyAgICAgICAgc2VsZi5fdG90YWxfb3JpZ2luYWxfYnl0ZXMgKz0gdmFsdWUKKwor
ICAgIGRlZiBhZGRfcmVzdWx0X2J5dGVzKHNlbGYsIHZhbHVlKToKKyAgICAgICAgc2VsZi5fdG90
YWxfcmVzdWx0X2J5dGVzICs9IHZhbHVlCisKKyAgICBkZWYgZ2V0X2F2ZXJhZ2VfcmF0aW8oc2Vs
Zik6CisgICAgICAgIGlmIHNlbGYuX3RvdGFsX29yaWdpbmFsX2J5dGVzICE9IDA6CisgICAgICAg
ICAgICByZXR1cm4gKGZsb2F0KHNlbGYuX3RvdGFsX3Jlc3VsdF9ieXRlcykgLworICAgICAgICAg
ICAgICAgICAgICBzZWxmLl90b3RhbF9vcmlnaW5hbF9ieXRlcykKKyAgICAgICAgZWxzZToKKyAg
ICAgICAgICAgIHJldHVybiBmbG9hdCgnaW5mJykKIAogCiBjbGFzcyBEZWZsYXRlRnJhbWVFeHRl
bnNpb25Qcm9jZXNzb3IoRXh0ZW5zaW9uUHJvY2Vzc29ySW50ZXJmYWNlKToKLSAgICAiIiJXZWJT
b2NrZXQgUGVyLWZyYW1lIERFRkxBVEUgZXh0ZW5zaW9uIHByb2Nlc3Nvci4KKyAgICAiIiJkZWZs
YXRlLWZyYW1lIGV4dGVuc2lvbiBwcm9jZXNzb3IuCiAKICAgICBTcGVjaWZpY2F0aW9uOgogICAg
IGh0dHA6Ly90b29scy5pZXRmLm9yZy9odG1sL2RyYWZ0LXR5b3NoaW5vLWh5Ymktd2Vic29ja2V0
LXBlcmZyYW1lLWRlZmxhdGUKQEAgLTEyMCwzNCArMTUxLDM4IEBAIGNsYXNzIERlZmxhdGVGcmFt
ZUV4dGVuc2lvblByb2Nlc3NvcihFeHRlbnNpb25Qcm9jZXNzb3JJbnRlcmZhY2UpOgogICAgIF9O
T19DT05URVhUX1RBS0VPVkVSX1BBUkFNID0gJ25vX2NvbnRleHRfdGFrZW92ZXInCiAKICAgICBk
ZWYgX19pbml0X18oc2VsZiwgcmVxdWVzdCk6CisgICAgICAgIEV4dGVuc2lvblByb2Nlc3Nvcklu
dGVyZmFjZS5fX2luaXRfXyhzZWxmLCByZXF1ZXN0KQogICAgICAgICBzZWxmLl9sb2dnZXIgPSB1
dGlsLmdldF9jbGFzc19sb2dnZXIoc2VsZikKIAotICAgICAgICBzZWxmLl9yZXF1ZXN0ID0gcmVx
dWVzdAotCiAgICAgICAgIHNlbGYuX3Jlc3BvbnNlX3dpbmRvd19iaXRzID0gTm9uZQogICAgICAg
ICBzZWxmLl9yZXNwb25zZV9ub19jb250ZXh0X3Rha2VvdmVyID0gRmFsc2UKICAgICAgICAgc2Vs
Zi5fYmZpbmFsID0gRmFsc2UKIAotICAgICAgICAjIENvdW50ZXJzIGZvciBzdGF0aXN0aWNzLgot
Ci0gICAgICAgICMgVG90YWwgbnVtYmVyIG9mIG91dGdvaW5nIGJ5dGVzIHN1cHBsaWVkIHRvIHRo
aXMgZmlsdGVyLgotICAgICAgICBzZWxmLl90b3RhbF9vdXRnb2luZ19wYXlsb2FkX2J5dGVzID0g
MAotICAgICAgICAjIFRvdGFsIG51bWJlciBvZiBieXRlcyBzZW50IHRvIHRoZSBuZXR3b3JrIGFm
dGVyIGFwcGx5aW5nIHRoaXMgZmlsdGVyLgotICAgICAgICBzZWxmLl90b3RhbF9maWx0ZXJlZF9v
dXRnb2luZ19wYXlsb2FkX2J5dGVzID0gMAorICAgICAgICAjIENhbGN1bGF0ZXMKKyAgICAgICAg
IyAgICAgKFRvdGFsIG91dGdvaW5nIGJ5dGVzIHN1cHBsaWVkIHRvIHRoaXMgZmlsdGVyKSAvCisg
ICAgICAgICMgICAgIChUb3RhbCBieXRlcyBzZW50IHRvIHRoZSBuZXR3b3JrIGFmdGVyIGFwcGx5
aW5nIHRoaXMgZmlsdGVyKQorICAgICAgICBzZWxmLl9vdXRnb2luZ19hdmVyYWdlX3JhdGlvX2Nh
bGN1bGF0b3IgPSBfQXZlcmFnZVJhdGlvQ2FsY3VsYXRvcigpCiAKLSAgICAgICAgIyBUb3RhbCBu
dW1iZXIgb2YgYnl0ZXMgcmVjZWl2ZWQgZnJvbSB0aGUgbmV0d29yay4KLSAgICAgICAgc2VsZi5f
dG90YWxfaW5jb21pbmdfcGF5bG9hZF9ieXRlcyA9IDAKLSAgICAgICAgIyBUb3RhbCBudW1iZXIg
b2YgaW5jb21pbmcgYnl0ZXMgb2J0YWluZWQgYWZ0ZXIgYXBwbHlpbmcgdGhpcyBmaWx0ZXIuCi0g
ICAgICAgIHNlbGYuX3RvdGFsX2ZpbHRlcmVkX2luY29taW5nX3BheWxvYWRfYnl0ZXMgPSAwCisg
ICAgICAgICMgQ2FsY3VsYXRlcworICAgICAgICAjICAgICAoVG90YWwgYnl0ZXMgcmVjZWl2ZWQg
ZnJvbSB0aGUgbmV0d29yaykgLworICAgICAgICAjICAgICAoVG90YWwgaW5jb21pbmcgYnl0ZXMg
b2J0YWluZWQgYWZ0ZXIgYXBwbHlpbmcgdGhpcyBmaWx0ZXIpCisgICAgICAgIHNlbGYuX2luY29t
aW5nX2F2ZXJhZ2VfcmF0aW9fY2FsY3VsYXRvciA9IF9BdmVyYWdlUmF0aW9DYWxjdWxhdG9yKCkK
IAogICAgIGRlZiBuYW1lKHNlbGYpOgogICAgICAgICByZXR1cm4gY29tbW9uLkRFRkxBVEVfRlJB
TUVfRVhURU5TSU9OCiAKLSAgICBkZWYgZ2V0X2V4dGVuc2lvbl9yZXNwb25zZShzZWxmKToKKyAg
ICBkZWYgX2dldF9leHRlbnNpb25fcmVzcG9uc2VfaW50ZXJuYWwoc2VsZik6CiAgICAgICAgICMg
QW55IHVua25vd24gcGFyYW1ldGVyIHdpbGwgYmUganVzdCBpZ25vcmVkLgogCi0gICAgICAgIHdp
bmRvd19iaXRzID0gc2VsZi5fcmVxdWVzdC5nZXRfcGFyYW1ldGVyX3ZhbHVlKAotICAgICAgICAg
ICAgc2VsZi5fV0lORE9XX0JJVFNfUEFSQU0pCisgICAgICAgIHdpbmRvd19iaXRzID0gTm9uZQor
ICAgICAgICBpZiBzZWxmLl9yZXF1ZXN0Lmhhc19wYXJhbWV0ZXIoc2VsZi5fV0lORE9XX0JJVFNf
UEFSQU0pOgorICAgICAgICAgICAgd2luZG93X2JpdHMgPSBzZWxmLl9yZXF1ZXN0LmdldF9wYXJh
bWV0ZXJfdmFsdWUoCisgICAgICAgICAgICAgICAgc2VsZi5fV0lORE9XX0JJVFNfUEFSQU0pCisg
ICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgd2luZG93X2JpdHMgPSBfcGFyc2Vfd2lu
ZG93X2JpdHMod2luZG93X2JpdHMpCisgICAgICAgICAgICBleGNlcHQgVmFsdWVFcnJvciwgZToK
KyAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQorCiAgICAgICAgIG5vX2NvbnRleHRfdGFrZW92
ZXIgPSBzZWxmLl9yZXF1ZXN0Lmhhc19wYXJhbWV0ZXIoCiAgICAgICAgICAgICBzZWxmLl9OT19D
T05URVhUX1RBS0VPVkVSX1BBUkFNKQogICAgICAgICBpZiAobm9fY29udGV4dF90YWtlb3ZlciBh
bmQKQEAgLTE1NSwxOCArMTkwLDEwIEBAIGNsYXNzIERlZmxhdGVGcmFtZUV4dGVuc2lvblByb2Nl
c3NvcihFeHRlbnNpb25Qcm9jZXNzb3JJbnRlcmZhY2UpOgogICAgICAgICAgICAgICAgIHNlbGYu
X05PX0NPTlRFWFRfVEFLRU9WRVJfUEFSQU0pIGlzIG5vdCBOb25lKToKICAgICAgICAgICAgIHJl
dHVybiBOb25lCiAKLSAgICAgICAgaWYgd2luZG93X2JpdHMgaXMgbm90IE5vbmU6Ci0gICAgICAg
ICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgd2luZG93X2JpdHMgPSBpbnQod2luZG93X2JpdHMp
Ci0gICAgICAgICAgICBleGNlcHQgVmFsdWVFcnJvciwgZToKLSAgICAgICAgICAgICAgICByZXR1
cm4gTm9uZQotICAgICAgICAgICAgaWYgd2luZG93X2JpdHMgPCA4IG9yIHdpbmRvd19iaXRzID4g
MTU6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKLQotICAgICAgICBzZWxmLl9kZWZsYXRl
ciA9IHV0aWwuX1JGQzE5NzlEZWZsYXRlcigKKyAgICAgICAgc2VsZi5fcmZjMTk3OV9kZWZsYXRl
ciA9IHV0aWwuX1JGQzE5NzlEZWZsYXRlcigKICAgICAgICAgICAgIHdpbmRvd19iaXRzLCBub19j
b250ZXh0X3Rha2VvdmVyKQogCi0gICAgICAgIHNlbGYuX2luZmxhdGVyID0gdXRpbC5fUkZDMTk3
OUluZmxhdGVyKCkKKyAgICAgICAgc2VsZi5fcmZjMTk3OV9pbmZsYXRlciA9IHV0aWwuX1JGQzE5
NzlJbmZsYXRlcigpCiAKICAgICAgICAgc2VsZi5fY29tcHJlc3Nfb3V0Z29pbmcgPSBUcnVlCiAK
QEAgLTE5MSw3ICsyMTgsNyBAQCBjbGFzcyBEZWZsYXRlRnJhbWVFeHRlbnNpb25Qcm9jZXNzb3Io
RXh0ZW5zaW9uUHJvY2Vzc29ySW50ZXJmYWNlKToKIAogICAgICAgICByZXR1cm4gcmVzcG9uc2UK
IAotICAgIGRlZiBzZXR1cF9zdHJlYW1fb3B0aW9ucyhzZWxmLCBzdHJlYW1fb3B0aW9ucyk6Cisg
ICAgZGVmIF9zZXR1cF9zdHJlYW1fb3B0aW9uc19pbnRlcm5hbChzZWxmLCBzdHJlYW1fb3B0aW9u
cyk6CiAKICAgICAgICAgY2xhc3MgX091dGdvaW5nRmlsdGVyKG9iamVjdCk6CiAKQEAgLTIzNSwy
NSArMjYyLDI4IEBAIGNsYXNzIERlZmxhdGVGcmFtZUV4dGVuc2lvblByb2Nlc3NvcihFeHRlbnNp
b25Qcm9jZXNzb3JJbnRlcmZhY2UpOgogICAgICAgICAiIiIKIAogICAgICAgICBvcmlnaW5hbF9w
YXlsb2FkX3NpemUgPSBsZW4oZnJhbWUucGF5bG9hZCkKLSAgICAgICAgc2VsZi5fdG90YWxfb3V0
Z29pbmdfcGF5bG9hZF9ieXRlcyArPSBvcmlnaW5hbF9wYXlsb2FkX3NpemUKKyAgICAgICAgc2Vs
Zi5fb3V0Z29pbmdfYXZlcmFnZV9yYXRpb19jYWxjdWxhdG9yLmFkZF9vcmlnaW5hbF9ieXRlcygK
KyAgICAgICAgICAgICAgICBvcmlnaW5hbF9wYXlsb2FkX3NpemUpCiAKICAgICAgICAgaWYgKG5v
dCBzZWxmLl9jb21wcmVzc19vdXRnb2luZyBvcgogICAgICAgICAgICAgY29tbW9uLmlzX2NvbnRy
b2xfb3Bjb2RlKGZyYW1lLm9wY29kZSkpOgotICAgICAgICAgICAgc2VsZi5fdG90YWxfZmlsdGVy
ZWRfb3V0Z29pbmdfcGF5bG9hZF9ieXRlcyArPSAoCi0gICAgICAgICAgICAgICAgb3JpZ2luYWxf
cGF5bG9hZF9zaXplKQorICAgICAgICAgICAgc2VsZi5fb3V0Z29pbmdfYXZlcmFnZV9yYXRpb19j
YWxjdWxhdG9yLmFkZF9yZXN1bHRfYnl0ZXMoCisgICAgICAgICAgICAgICAgICAgIG9yaWdpbmFs
X3BheWxvYWRfc2l6ZSkKICAgICAgICAgICAgIHJldHVybgogCi0gICAgICAgIGZyYW1lLnBheWxv
YWQgPSBzZWxmLl9kZWZsYXRlci5maWx0ZXIoCisgICAgICAgIGZyYW1lLnBheWxvYWQgPSBzZWxm
Ll9yZmMxOTc5X2RlZmxhdGVyLmZpbHRlcigKICAgICAgICAgICAgIGZyYW1lLnBheWxvYWQsIGJm
aW5hbD1zZWxmLl9iZmluYWwpCiAgICAgICAgIGZyYW1lLnJzdjEgPSAxCiAKICAgICAgICAgZmls
dGVyZWRfcGF5bG9hZF9zaXplID0gbGVuKGZyYW1lLnBheWxvYWQpCi0gICAgICAgIHNlbGYuX3Rv
dGFsX2ZpbHRlcmVkX291dGdvaW5nX3BheWxvYWRfYnl0ZXMgKz0gZmlsdGVyZWRfcGF5bG9hZF9z
aXplCisgICAgICAgIHNlbGYuX291dGdvaW5nX2F2ZXJhZ2VfcmF0aW9fY2FsY3VsYXRvci5hZGRf
cmVzdWx0X2J5dGVzKAorICAgICAgICAgICAgICAgIGZpbHRlcmVkX3BheWxvYWRfc2l6ZSkKIAot
ICAgICAgICBfbG9nX2NvbXByZXNzaW9uX3JhdGlvKHNlbGYuX2xvZ2dlciwgb3JpZ2luYWxfcGF5
bG9hZF9zaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX3RvdGFsX291
dGdvaW5nX3BheWxvYWRfYnl0ZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmls
dGVyZWRfcGF5bG9hZF9zaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYu
X3RvdGFsX2ZpbHRlcmVkX291dGdvaW5nX3BheWxvYWRfYnl0ZXMpCisgICAgICAgIF9sb2dfb3V0
Z29pbmdfY29tcHJlc3Npb25fcmF0aW8oCisgICAgICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLAor
ICAgICAgICAgICAgICAgIG9yaWdpbmFsX3BheWxvYWRfc2l6ZSwKKyAgICAgICAgICAgICAgICBm
aWx0ZXJlZF9wYXlsb2FkX3NpemUsCisgICAgICAgICAgICAgICAgc2VsZi5fb3V0Z29pbmdfYXZl
cmFnZV9yYXRpb19jYWxjdWxhdG9yLmdldF9hdmVyYWdlX3JhdGlvKCkpCiAKICAgICBkZWYgX2lu
Y29taW5nX2ZpbHRlcihzZWxmLCBmcmFtZSk6CiAgICAgICAgICIiIlRyYW5zZm9ybSBpbmNvbWlu
ZyBmcmFtZXMuIFRoaXMgbWV0aG9kIGlzIGNhbGxlZCBvbmx5IGJ5CkBAIC0yNjEsMzMgKzI5MSwz
NSBAQCBjbGFzcyBEZWZsYXRlRnJhbWVFeHRlbnNpb25Qcm9jZXNzb3IoRXh0ZW5zaW9uUHJvY2Vz
c29ySW50ZXJmYWNlKToKICAgICAgICAgIiIiCiAKICAgICAgICAgcmVjZWl2ZWRfcGF5bG9hZF9z
aXplID0gbGVuKGZyYW1lLnBheWxvYWQpCi0gICAgICAgIHNlbGYuX3RvdGFsX2luY29taW5nX3Bh
eWxvYWRfYnl0ZXMgKz0gcmVjZWl2ZWRfcGF5bG9hZF9zaXplCisgICAgICAgIHNlbGYuX2luY29t
aW5nX2F2ZXJhZ2VfcmF0aW9fY2FsY3VsYXRvci5hZGRfcmVzdWx0X2J5dGVzKAorICAgICAgICAg
ICAgICAgIHJlY2VpdmVkX3BheWxvYWRfc2l6ZSkKIAogICAgICAgICBpZiBmcmFtZS5yc3YxICE9
IDEgb3IgY29tbW9uLmlzX2NvbnRyb2xfb3Bjb2RlKGZyYW1lLm9wY29kZSk6Ci0gICAgICAgICAg
ICBzZWxmLl90b3RhbF9maWx0ZXJlZF9pbmNvbWluZ19wYXlsb2FkX2J5dGVzICs9ICgKLSAgICAg
ICAgICAgICAgICByZWNlaXZlZF9wYXlsb2FkX3NpemUpCisgICAgICAgICAgICBzZWxmLl9pbmNv
bWluZ19hdmVyYWdlX3JhdGlvX2NhbGN1bGF0b3IuYWRkX29yaWdpbmFsX2J5dGVzKAorICAgICAg
ICAgICAgICAgICAgICByZWNlaXZlZF9wYXlsb2FkX3NpemUpCiAgICAgICAgICAgICByZXR1cm4K
IAotICAgICAgICBmcmFtZS5wYXlsb2FkID0gc2VsZi5faW5mbGF0ZXIuZmlsdGVyKGZyYW1lLnBh
eWxvYWQpCisgICAgICAgIGZyYW1lLnBheWxvYWQgPSBzZWxmLl9yZmMxOTc5X2luZmxhdGVyLmZp
bHRlcihmcmFtZS5wYXlsb2FkKQogICAgICAgICBmcmFtZS5yc3YxID0gMAogCiAgICAgICAgIGZp
bHRlcmVkX3BheWxvYWRfc2l6ZSA9IGxlbihmcmFtZS5wYXlsb2FkKQotICAgICAgICBzZWxmLl90
b3RhbF9maWx0ZXJlZF9pbmNvbWluZ19wYXlsb2FkX2J5dGVzICs9IGZpbHRlcmVkX3BheWxvYWRf
c2l6ZQorICAgICAgICBzZWxmLl9pbmNvbWluZ19hdmVyYWdlX3JhdGlvX2NhbGN1bGF0b3IuYWRk
X29yaWdpbmFsX2J5dGVzKAorICAgICAgICAgICAgICAgIGZpbHRlcmVkX3BheWxvYWRfc2l6ZSkK
IAotICAgICAgICBfbG9nX2RlY29tcHJlc3Npb25fcmF0aW8oc2VsZi5fbG9nZ2VyLCByZWNlaXZl
ZF9wYXlsb2FkX3NpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl90
b3RhbF9pbmNvbWluZ19wYXlsb2FkX2J5dGVzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZmlsdGVyZWRfcGF5bG9hZF9zaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2VsZi5fdG90YWxfZmlsdGVyZWRfaW5jb21pbmdfcGF5bG9hZF9ieXRlcykKKyAgICAg
ICAgX2xvZ19pbmNvbWluZ19jb21wcmVzc2lvbl9yYXRpbygKKyAgICAgICAgICAgICAgICBzZWxm
Ll9sb2dnZXIsCisgICAgICAgICAgICAgICAgcmVjZWl2ZWRfcGF5bG9hZF9zaXplLAorICAgICAg
ICAgICAgICAgIGZpbHRlcmVkX3BheWxvYWRfc2l6ZSwKKyAgICAgICAgICAgICAgICBzZWxmLl9p
bmNvbWluZ19hdmVyYWdlX3JhdGlvX2NhbGN1bGF0b3IuZ2V0X2F2ZXJhZ2VfcmF0aW8oKSkKIAog
CiBfYXZhaWxhYmxlX3Byb2Nlc3NvcnNbY29tbW9uLkRFRkxBVEVfRlJBTUVfRVhURU5TSU9OXSA9
ICgKICAgICBEZWZsYXRlRnJhbWVFeHRlbnNpb25Qcm9jZXNzb3IpCitfY29tcHJlc3Npb25fZXh0
ZW5zaW9uX25hbWVzLmFwcGVuZChjb21tb24uREVGTEFURV9GUkFNRV9FWFRFTlNJT04pCiAKLQot
IyBBZGRpbmcgdmVuZG9yLXByZWZpeGVkIGRlZmxhdGUtZnJhbWUgZXh0ZW5zaW9uLgotIyBUT0RP
KGJhc2hpKTogUmVtb3ZlIHRoaXMgYWZ0ZXIgV2ViS2l0IHN0b3BzIHVzaW5nIHZlbmRvciBwcmVm
aXguCiBfYXZhaWxhYmxlX3Byb2Nlc3NvcnNbY29tbW9uLlhfV0VCS0lUX0RFRkxBVEVfRlJBTUVf
RVhURU5TSU9OXSA9ICgKICAgICBEZWZsYXRlRnJhbWVFeHRlbnNpb25Qcm9jZXNzb3IpCitfY29t
cHJlc3Npb25fZXh0ZW5zaW9uX25hbWVzLmFwcGVuZChjb21tb24uWF9XRUJLSVRfREVGTEFURV9G
UkFNRV9FWFRFTlNJT04pCiAKIAogZGVmIF9wYXJzZV9jb21wcmVzc2lvbl9tZXRob2QoZGF0YSk6
CkBAIC0zMDYsMTMgKzMzOCwxMyBAQCBkZWYgX2NyZWF0ZV9hY2NlcHRlZF9tZXRob2RfZGVzYyht
ZXRob2RfbmFtZSwgbWV0aG9kX3BhcmFtcyk6CiAKIAogY2xhc3MgQ29tcHJlc3Npb25FeHRlbnNp
b25Qcm9jZXNzb3JCYXNlKEV4dGVuc2lvblByb2Nlc3NvckludGVyZmFjZSk6Ci0gICAgIiIiQmFz
ZSBjbGFzcyBmb3IgUGVyLWZyYW1lIGFuZCBQZXItbWVzc2FnZSBjb21wcmVzc2lvbiBleHRlbnNp
b24uIiIiCisgICAgIiIiQmFzZSBjbGFzcyBmb3IgcGVyZnJhbWUtY29tcHJlc3MgYW5kIHBlcm1l
c3NhZ2UtY29tcHJlc3MgZXh0ZW5zaW9uLiIiIgogCiAgICAgX01FVEhPRF9QQVJBTSA9ICdtZXRo
b2QnCiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgcmVxdWVzdCk6CisgICAgICAgIEV4dGVuc2lv
blByb2Nlc3NvckludGVyZmFjZS5fX2luaXRfXyhzZWxmLCByZXF1ZXN0KQogICAgICAgICBzZWxm
Ll9sb2dnZXIgPSB1dGlsLmdldF9jbGFzc19sb2dnZXIoc2VsZikKLSAgICAgICAgc2VsZi5fcmVx
dWVzdCA9IHJlcXVlc3QKICAgICAgICAgc2VsZi5fY29tcHJlc3Npb25fbWV0aG9kX25hbWUgPSBO
b25lCiAgICAgICAgIHNlbGYuX2NvbXByZXNzaW9uX3Byb2Nlc3NvciA9IE5vbmUKICAgICAgICAg
c2VsZi5fY29tcHJlc3Npb25fcHJvY2Vzc29yX2hvb2sgPSBOb25lCkBAIC0zNTcsNyArMzg5LDcg
QEAgY2xhc3MgQ29tcHJlc3Npb25FeHRlbnNpb25Qcm9jZXNzb3JCYXNlKEV4dGVuc2lvblByb2Nl
c3NvckludGVyZmFjZSk6CiAgICAgICAgIHNlbGYuX2NvbXByZXNzaW9uX3Byb2Nlc3NvciA9IGNv
bXByZXNzaW9uX3Byb2Nlc3NvcgogICAgICAgICByZXR1cm4gcHJvY2Vzc29yX3Jlc3BvbnNlCiAK
LSAgICBkZWYgZ2V0X2V4dGVuc2lvbl9yZXNwb25zZShzZWxmKToKKyAgICBkZWYgX2dldF9leHRl
bnNpb25fcmVzcG9uc2VfaW50ZXJuYWwoc2VsZik6CiAgICAgICAgIHByb2Nlc3Nvcl9yZXNwb25z
ZSA9IHNlbGYuX2dldF9jb21wcmVzc2lvbl9wcm9jZXNzb3JfcmVzcG9uc2UoKQogICAgICAgICBp
ZiBwcm9jZXNzb3JfcmVzcG9uc2UgaXMgTm9uZToKICAgICAgICAgICAgIHJldHVybiBOb25lCkBA
IC0zNzIsNyArNDA0LDcgQEAgY2xhc3MgQ29tcHJlc3Npb25FeHRlbnNpb25Qcm9jZXNzb3JCYXNl
KEV4dGVuc2lvblByb2Nlc3NvckludGVyZmFjZSk6CiAgICAgICAgICAgICAoc2VsZi5fcmVxdWVz
dC5uYW1lKCksIHNlbGYuX2NvbXByZXNzaW9uX21ldGhvZF9uYW1lKSkKICAgICAgICAgcmV0dXJu
IHJlc3BvbnNlCiAKLSAgICBkZWYgc2V0dXBfc3RyZWFtX29wdGlvbnMoc2VsZiwgc3RyZWFtX29w
dGlvbnMpOgorICAgIGRlZiBfc2V0dXBfc3RyZWFtX29wdGlvbnNfaW50ZXJuYWwoc2VsZiwgc3Ry
ZWFtX29wdGlvbnMpOgogICAgICAgICBpZiBzZWxmLl9jb21wcmVzc2lvbl9wcm9jZXNzb3IgaXMg
Tm9uZToKICAgICAgICAgICAgIHJldHVybgogICAgICAgICBzZWxmLl9jb21wcmVzc2lvbl9wcm9j
ZXNzb3Iuc2V0dXBfc3RyZWFtX29wdGlvbnMoc3RyZWFtX29wdGlvbnMpCkBAIC0zODQsOCArNDE2
LDggQEAgY2xhc3MgQ29tcHJlc3Npb25FeHRlbnNpb25Qcm9jZXNzb3JCYXNlKEV4dGVuc2lvblBy
b2Nlc3NvckludGVyZmFjZSk6CiAgICAgICAgIHJldHVybiBzZWxmLl9jb21wcmVzc2lvbl9wcm9j
ZXNzb3IKIAogCi1jbGFzcyBQZXJGcmFtZUNvbXByZXNzaW9uRXh0ZW5zaW9uUHJvY2Vzc29yKENv
bXByZXNzaW9uRXh0ZW5zaW9uUHJvY2Vzc29yQmFzZSk6Ci0gICAgIiIiV2ViU29ja2V0IFBlci1m
cmFtZSBjb21wcmVzc2lvbiBleHRlbnNpb24gcHJvY2Vzc29yLgorY2xhc3MgUGVyRnJhbWVDb21w
cmVzc0V4dGVuc2lvblByb2Nlc3NvcihDb21wcmVzc2lvbkV4dGVuc2lvblByb2Nlc3NvckJhc2Up
OgorICAgICIiInBlcmZyYW1lLWNvbXByZXNzIHByb2Nlc3Nvci4KIAogICAgIFNwZWNpZmljYXRp
b246CiAgICAgaHR0cDovL3Rvb2xzLmlldGYub3JnL2h0bWwvZHJhZnQtaWV0Zi1oeWJpLXdlYnNv
Y2tldC1wZXJmcmFtZS1jb21wcmVzc2lvbgpAQCAtNDA2LDU2ICs0MzgsNjYgQEAgY2xhc3MgUGVy
RnJhbWVDb21wcmVzc2lvbkV4dGVuc2lvblByb2Nlc3NvcihDb21wcmVzc2lvbkV4dGVuc2lvblBy
b2Nlc3NvckJhc2UpOgogCiAKIF9hdmFpbGFibGVfcHJvY2Vzc29yc1tjb21tb24uUEVSRlJBTUVf
Q09NUFJFU1NJT05fRVhURU5TSU9OXSA9ICgKLSAgICBQZXJGcmFtZUNvbXByZXNzaW9uRXh0ZW5z
aW9uUHJvY2Vzc29yKQorICAgIFBlckZyYW1lQ29tcHJlc3NFeHRlbnNpb25Qcm9jZXNzb3IpCitf
Y29tcHJlc3Npb25fZXh0ZW5zaW9uX25hbWVzLmFwcGVuZChjb21tb24uUEVSRlJBTUVfQ09NUFJF
U1NJT05fRVhURU5TSU9OKQogCiAKLWNsYXNzIERlZmxhdGVNZXNzYWdlUHJvY2Vzc29yKEV4dGVu
c2lvblByb2Nlc3NvckludGVyZmFjZSk6Ci0gICAgIiIiUGVyLW1lc3NhZ2UgZGVmbGF0ZSBwcm9j
ZXNzb3IuIiIiCitjbGFzcyBQZXJNZXNzYWdlRGVmbGF0ZUV4dGVuc2lvblByb2Nlc3NvcihFeHRl
bnNpb25Qcm9jZXNzb3JJbnRlcmZhY2UpOgorICAgICIiInBlcm1lc3NhZ2UtZGVmbGF0ZSBleHRl
bnNpb24gcHJvY2Vzc29yLiBJdCdzIGFsc28gdXNlZCBmb3IKKyAgICBwZXJtZXNzYWdlLWNvbXBy
ZXNzIGV4dGVuc2lvbiB3aGVuIHRoZSBkZWZsYXRlIG1ldGhvZCBpcyBjaG9zZW4uCisKKyAgICBT
cGVjaWZpY2F0aW9uOgorICAgIGh0dHA6Ly90b29scy5pZXRmLm9yZy9odG1sL2RyYWZ0LWlldGYt
aHliaS1wZXJtZXNzYWdlLWNvbXByZXNzaW9uLTA4CisgICAgIiIiCiAKICAgICBfUzJDX01BWF9X
SU5ET1dfQklUU19QQVJBTSA9ICdzMmNfbWF4X3dpbmRvd19iaXRzJwogICAgIF9TMkNfTk9fQ09O
VEVYVF9UQUtFT1ZFUl9QQVJBTSA9ICdzMmNfbm9fY29udGV4dF90YWtlb3ZlcicKICAgICBfQzJT
X01BWF9XSU5ET1dfQklUU19QQVJBTSA9ICdjMnNfbWF4X3dpbmRvd19iaXRzJwogICAgIF9DMlNf
Tk9fQ09OVEVYVF9UQUtFT1ZFUl9QQVJBTSA9ICdjMnNfbm9fY29udGV4dF90YWtlb3ZlcicKIAot
ICAgIGRlZiBfX2luaXRfXyhzZWxmLCByZXF1ZXN0KToKLSAgICAgICAgc2VsZi5fcmVxdWVzdCA9
IHJlcXVlc3QKKyAgICBkZWYgX19pbml0X18oc2VsZiwgcmVxdWVzdCwgZHJhZnQwOD1UcnVlKToK
KyAgICAgICAgIiIiQ29uc3RydWN0IFBlck1lc3NhZ2VEZWZsYXRlRXh0ZW5zaW9uUHJvY2Vzc29y
CisKKyAgICAgICAgQXJnczoKKyAgICAgICAgICAgIGRyYWZ0MDg6IEZvbGxvdyB0aGUgY29uc3Ry
YWludHMgb24gdGhlIHBhcmFtZXRlcnMgdGhhdCB3ZXJlIG5vdAorICAgICAgICAgICAgICAgIHNw
ZWNpZmllZCBmb3IgcGVybWVzc2FnZS1jb21wcmVzcyBidXQgYXJlIHNwZWNpZmllZCBmb3IKKyAg
ICAgICAgICAgICAgICBwZXJtZXNzYWdlLWRlZmxhdGUgYXMgb24KKyAgICAgICAgICAgICAgICBk
cmFmdC1pZXRmLWh5YmktcGVybWVzc2FnZS1jb21wcmVzc2lvbi0wOC4KKyAgICAgICAgIiIiCisK
KyAgICAgICAgRXh0ZW5zaW9uUHJvY2Vzc29ySW50ZXJmYWNlLl9faW5pdF9fKHNlbGYsIHJlcXVl
c3QpCiAgICAgICAgIHNlbGYuX2xvZ2dlciA9IHV0aWwuZ2V0X2NsYXNzX2xvZ2dlcihzZWxmKQog
CiAgICAgICAgIHNlbGYuX2Myc19tYXhfd2luZG93X2JpdHMgPSBOb25lCiAgICAgICAgIHNlbGYu
X2Myc19ub19jb250ZXh0X3Rha2VvdmVyID0gRmFsc2UKLSAgICAgICAgc2VsZi5fYmZpbmFsID0g
RmFsc2UKLQotICAgICAgICBzZWxmLl9jb21wcmVzc19vdXRnb2luZ19lbmFibGVkID0gRmFsc2UK
IAotICAgICAgICAjIFRydWUgaWYgYSBtZXNzYWdlIGlzIGZyYWdtZW50ZWQgYW5kIGNvbXByZXNz
aW9uIGlzIG9uZ29pbmcuCi0gICAgICAgIHNlbGYuX2NvbXByZXNzX29uZ29pbmcgPSBGYWxzZQot
Ci0gICAgICAgICMgQ291bnRlcnMgZm9yIHN0YXRpc3RpY3MuCi0KLSAgICAgICAgIyBUb3RhbCBu
dW1iZXIgb2Ygb3V0Z29pbmcgYnl0ZXMgc3VwcGxpZWQgdG8gdGhpcyBmaWx0ZXIuCi0gICAgICAg
IHNlbGYuX3RvdGFsX291dGdvaW5nX3BheWxvYWRfYnl0ZXMgPSAwCi0gICAgICAgICMgVG90YWwg
bnVtYmVyIG9mIGJ5dGVzIHNlbnQgdG8gdGhlIG5ldHdvcmsgYWZ0ZXIgYXBwbHlpbmcgdGhpcyBm
aWx0ZXIuCi0gICAgICAgIHNlbGYuX3RvdGFsX2ZpbHRlcmVkX291dGdvaW5nX3BheWxvYWRfYnl0
ZXMgPSAwCi0KLSAgICAgICAgIyBUb3RhbCBudW1iZXIgb2YgYnl0ZXMgcmVjZWl2ZWQgZnJvbSB0
aGUgbmV0d29yay4KLSAgICAgICAgc2VsZi5fdG90YWxfaW5jb21pbmdfcGF5bG9hZF9ieXRlcyA9
IDAKLSAgICAgICAgIyBUb3RhbCBudW1iZXIgb2YgaW5jb21pbmcgYnl0ZXMgb2J0YWluZWQgYWZ0
ZXIgYXBwbHlpbmcgdGhpcyBmaWx0ZXIuCi0gICAgICAgIHNlbGYuX3RvdGFsX2ZpbHRlcmVkX2lu
Y29taW5nX3BheWxvYWRfYnl0ZXMgPSAwCisgICAgICAgIHNlbGYuX2RyYWZ0MDggPSBkcmFmdDA4
CiAKICAgICBkZWYgbmFtZShzZWxmKToKICAgICAgICAgcmV0dXJuICdkZWZsYXRlJwogCi0gICAg
ZGVmIGdldF9leHRlbnNpb25fcmVzcG9uc2Uoc2VsZik6Ci0gICAgICAgICMgQW55IHVua25vd24g
cGFyYW1ldGVyIHdpbGwgYmUganVzdCBpZ25vcmVkLgorICAgIGRlZiBfZ2V0X2V4dGVuc2lvbl9y
ZXNwb25zZV9pbnRlcm5hbChzZWxmKToKKyAgICAgICAgaWYgc2VsZi5fZHJhZnQwODoKKyAgICAg
ICAgICAgIGZvciBuYW1lIGluIHNlbGYuX3JlcXVlc3QuZ2V0X3BhcmFtZXRlcl9uYW1lcygpOgor
ICAgICAgICAgICAgICAgIGlmIG5hbWUgbm90IGluIFtzZWxmLl9TMkNfTUFYX1dJTkRPV19CSVRT
X1BBUkFNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9TMkNfTk9fQ09O
VEVYVF9UQUtFT1ZFUl9QQVJBTSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vs
Zi5fQzJTX01BWF9XSU5ET1dfQklUU19QQVJBTV06CisgICAgICAgICAgICAgICAgICAgIHNlbGYu
X2xvZ2dlci5kZWJ1ZygnVW5rbm93biBwYXJhbWV0ZXI6ICVyJywgbmFtZSkKKyAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIE5vbmUKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgICMgQW55IHVu
a25vd24gcGFyYW1ldGVyIHdpbGwgYmUganVzdCBpZ25vcmVkLgorICAgICAgICAgICAgcGFzcwog
Ci0gICAgICAgIHMyY19tYXhfd2luZG93X2JpdHMgPSBzZWxmLl9yZXF1ZXN0LmdldF9wYXJhbWV0
ZXJfdmFsdWUoCi0gICAgICAgICAgICBzZWxmLl9TMkNfTUFYX1dJTkRPV19CSVRTX1BBUkFNKQot
ICAgICAgICBpZiBzMmNfbWF4X3dpbmRvd19iaXRzIGlzIG5vdCBOb25lOgorICAgICAgICBzMmNf
bWF4X3dpbmRvd19iaXRzID0gTm9uZQorICAgICAgICBpZiBzZWxmLl9yZXF1ZXN0Lmhhc19wYXJh
bWV0ZXIoc2VsZi5fUzJDX01BWF9XSU5ET1dfQklUU19QQVJBTSk6CisgICAgICAgICAgICBzMmNf
bWF4X3dpbmRvd19iaXRzID0gc2VsZi5fcmVxdWVzdC5nZXRfcGFyYW1ldGVyX3ZhbHVlKAorICAg
ICAgICAgICAgICAgICAgICBzZWxmLl9TMkNfTUFYX1dJTkRPV19CSVRTX1BBUkFNKQogICAgICAg
ICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHMyY19tYXhfd2luZG93X2JpdHMgPSBpbnQoczJj
X21heF93aW5kb3dfYml0cykKKyAgICAgICAgICAgICAgICBzMmNfbWF4X3dpbmRvd19iaXRzID0g
X3BhcnNlX3dpbmRvd19iaXRzKHMyY19tYXhfd2luZG93X2JpdHMpCiAgICAgICAgICAgICBleGNl
cHQgVmFsdWVFcnJvciwgZToKLSAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQotICAgICAgICAg
ICAgaWYgczJjX21heF93aW5kb3dfYml0cyA8IDggb3IgczJjX21heF93aW5kb3dfYml0cyA+IDE1
OgorICAgICAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygnQmFkICVzIHBhcmFtZXRlcjog
JXInLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9TMkNfTUFYX1dJ
TkRPV19CSVRTX1BBUkFNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlKQog
ICAgICAgICAgICAgICAgIHJldHVybiBOb25lCiAKICAgICAgICAgczJjX25vX2NvbnRleHRfdGFr
ZW92ZXIgPSBzZWxmLl9yZXF1ZXN0Lmhhc19wYXJhbWV0ZXIoCkBAIC00NjMsMTQgKzUwNSwzMiBA
QCBjbGFzcyBEZWZsYXRlTWVzc2FnZVByb2Nlc3NvcihFeHRlbnNpb25Qcm9jZXNzb3JJbnRlcmZh
Y2UpOgogICAgICAgICBpZiAoczJjX25vX2NvbnRleHRfdGFrZW92ZXIgYW5kCiAgICAgICAgICAg
ICBzZWxmLl9yZXF1ZXN0LmdldF9wYXJhbWV0ZXJfdmFsdWUoCiAgICAgICAgICAgICAgICAgc2Vs
Zi5fUzJDX05PX0NPTlRFWFRfVEFLRU9WRVJfUEFSQU0pIGlzIG5vdCBOb25lKToKKyAgICAgICAg
ICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygnJXMgcGFyYW1ldGVyIG11c3Qgbm90IGhhdmUgYSB2YWx1
ZTogJXInLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX1MyQ19OT19DT05U
RVhUX1RBS0VPVkVSX1BBUkFNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMyY19u
b19jb250ZXh0X3Rha2VvdmVyKQogICAgICAgICAgICAgcmV0dXJuIE5vbmUKIAotICAgICAgICBz
ZWxmLl9kZWZsYXRlciA9IHV0aWwuX1JGQzE5NzlEZWZsYXRlcigKKyAgICAgICAgYzJzX21heF93
aW5kb3dfYml0cyA9IHNlbGYuX3JlcXVlc3QuaGFzX3BhcmFtZXRlcigKKyAgICAgICAgICAgIHNl
bGYuX0MyU19NQVhfV0lORE9XX0JJVFNfUEFSQU0pCisgICAgICAgIGlmIChzZWxmLl9kcmFmdDA4
IGFuZAorICAgICAgICAgICAgYzJzX21heF93aW5kb3dfYml0cyBhbmQKKyAgICAgICAgICAgIHNl
bGYuX3JlcXVlc3QuZ2V0X3BhcmFtZXRlcl92YWx1ZSgKKyAgICAgICAgICAgICAgICBzZWxmLl9D
MlNfTUFYX1dJTkRPV19CSVRTX1BBUkFNKSBpcyBub3QgTm9uZSk6CisgICAgICAgICAgICBzZWxm
Ll9sb2dnZXIuZGVidWcoJyVzIHBhcmFtZXRlciBtdXN0IG5vdCBoYXZlIGEgdmFsdWUgaW4gYSAn
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NsaWVudFwncyBvcGVuaW5nIGhhbmRz
aGFrZTogJXInLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX0MyU19NQVhf
V0lORE9XX0JJVFNfUEFSQU0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYzJzX21h
eF93aW5kb3dfYml0cykKKyAgICAgICAgICAgIHJldHVybiBOb25lCisKKyAgICAgICAgc2VsZi5f
cmZjMTk3OV9kZWZsYXRlciA9IHV0aWwuX1JGQzE5NzlEZWZsYXRlcigKICAgICAgICAgICAgIHMy
Y19tYXhfd2luZG93X2JpdHMsIHMyY19ub19jb250ZXh0X3Rha2VvdmVyKQogCi0gICAgICAgIHNl
bGYuX2luZmxhdGVyID0gdXRpbC5fUkZDMTk3OUluZmxhdGVyKCkKKyAgICAgICAgc2VsZi5fcmZj
MTk3OV9pbmZsYXRlciA9IHV0aWwuX1JGQzE5NzlJbmZsYXRlcigpCiAKLSAgICAgICAgc2VsZi5f
Y29tcHJlc3Nfb3V0Z29pbmdfZW5hYmxlZCA9IFRydWUKKyAgICAgICAgc2VsZi5fZnJhbWVyID0g
X1Blck1lc3NhZ2VEZWZsYXRlRnJhbWVyKAorICAgICAgICAgICAgczJjX21heF93aW5kb3dfYml0
cywgczJjX25vX2NvbnRleHRfdGFrZW92ZXIpCisgICAgICAgIHNlbGYuX2ZyYW1lci5zZXRfYmZp
bmFsKEZhbHNlKQorICAgICAgICBzZWxmLl9mcmFtZXIuc2V0X2NvbXByZXNzX291dGdvaW5nX2Vu
YWJsZWQoVHJ1ZSkKIAogICAgICAgICByZXNwb25zZSA9IGNvbW1vbi5FeHRlbnNpb25QYXJhbWV0
ZXIoc2VsZi5fcmVxdWVzdC5uYW1lKCkpCiAKQEAgLTQ4Myw5ICs1NDMsMTUgQEAgY2xhc3MgRGVm
bGF0ZU1lc3NhZ2VQcm9jZXNzb3IoRXh0ZW5zaW9uUHJvY2Vzc29ySW50ZXJmYWNlKToKICAgICAg
ICAgICAgICAgICBzZWxmLl9TMkNfTk9fQ09OVEVYVF9UQUtFT1ZFUl9QQVJBTSwgTm9uZSkKIAog
ICAgICAgICBpZiBzZWxmLl9jMnNfbWF4X3dpbmRvd19iaXRzIGlzIG5vdCBOb25lOgorICAgICAg
ICAgICAgaWYgc2VsZi5fZHJhZnQwOCBhbmQgYzJzX21heF93aW5kb3dfYml0czoKKyAgICAgICAg
ICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJ1Byb2Nlc3NvciBpcyBjb25maWd1cmVkIHRvIHVz
ZSAlcyBidXQgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGhlIGNsaWVu
dCBjYW5ub3QgYWNjZXB0IGl0JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c2VsZi5fQzJTX01BWF9XSU5ET1dfQklUU19QQVJBTSkKKyAgICAgICAgICAgICAgICByZXR1cm4g
Tm9uZQogICAgICAgICAgICAgcmVzcG9uc2UuYWRkX3BhcmFtZXRlcigKICAgICAgICAgICAgICAg
ICBzZWxmLl9DMlNfTUFYX1dJTkRPV19CSVRTX1BBUkFNLAogICAgICAgICAgICAgICAgIHN0cihz
ZWxmLl9jMnNfbWF4X3dpbmRvd19iaXRzKSkKKwogICAgICAgICBpZiBzZWxmLl9jMnNfbm9fY29u
dGV4dF90YWtlb3ZlcjoKICAgICAgICAgICAgIHJlc3BvbnNlLmFkZF9wYXJhbWV0ZXIoCiAgICAg
ICAgICAgICAgICAgc2VsZi5fQzJTX05PX0NPTlRFWFRfVEFLRU9WRVJfUEFSQU0sIE5vbmUpCkBA
IC01MDIsMTAwICs1NjgsOTkgQEAgY2xhc3MgRGVmbGF0ZU1lc3NhZ2VQcm9jZXNzb3IoRXh0ZW5z
aW9uUHJvY2Vzc29ySW50ZXJmYWNlKToKIAogICAgICAgICByZXR1cm4gcmVzcG9uc2UKIAotICAg
IGRlZiBzZXR1cF9zdHJlYW1fb3B0aW9ucyhzZWxmLCBzdHJlYW1fb3B0aW9ucyk6Ci0gICAgICAg
IGNsYXNzIF9PdXRnb2luZ01lc3NhZ2VGaWx0ZXIob2JqZWN0KToKLQotICAgICAgICAgICAgZGVm
IF9faW5pdF9fKHNlbGYsIHBhcmVudCk6Ci0gICAgICAgICAgICAgICAgc2VsZi5fcGFyZW50ID0g
cGFyZW50CisgICAgZGVmIF9zZXR1cF9zdHJlYW1fb3B0aW9uc19pbnRlcm5hbChzZWxmLCBzdHJl
YW1fb3B0aW9ucyk6CisgICAgICAgIHNlbGYuX2ZyYW1lci5zZXR1cF9zdHJlYW1fb3B0aW9ucyhz
dHJlYW1fb3B0aW9ucykKIAotICAgICAgICAgICAgZGVmIGZpbHRlcihzZWxmLCBtZXNzYWdlLCBl
bmQ9VHJ1ZSwgYmluYXJ5PUZhbHNlKToKLSAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5fcGFy
ZW50Ll9wcm9jZXNzX291dGdvaW5nX21lc3NhZ2UoCi0gICAgICAgICAgICAgICAgICAgIG1lc3Nh
Z2UsIGVuZCwgYmluYXJ5KQorICAgIGRlZiBzZXRfYzJzX21heF93aW5kb3dfYml0cyhzZWxmLCB2
YWx1ZSk6CisgICAgICAgICIiIklmIHRoaXMgb3B0aW9uIGlzIHNwZWNpZmllZCwgdGhpcyBjbGFz
cyBhZGRzIHRoZSBjMnNfbWF4X3dpbmRvd19iaXRzCisgICAgICAgIGV4dGVuc2lvbiBwYXJhbWV0
ZXIgdG8gdGhlIGhhbmRzaGFrZSByZXNwb25zZSwgYnV0IGRvZXNuJ3QgcmVkdWNlIHRoZQorICAg
ICAgICBMWjc3IHNsaWRpbmcgd2luZG93IHNpemUgb2YgaXRzIGluZmxhdGVyLiBJLmUuLCB5b3Ug
Y2FuIHVzZSB0aGlzIGZvcgorICAgICAgICB0ZXN0aW5nIGNsaWVudCBpbXBsZW1lbnRhdGlvbiBi
dXQgY2Fubm90IHJlZHVjZSBtZW1vcnkgdXNhZ2Ugb2YgdGhpcworICAgICAgICBjbGFzcy4KKwor
ICAgICAgICBJZiB0aGlzIG1ldGhvZCBoYXMgYmVlbiBjYWxsZWQgd2l0aCBUcnVlIGFuZCBhbiBv
ZmZlciB3aXRob3V0IHRoZQorICAgICAgICBjMnNfbWF4X3dpbmRvd19iaXRzIGV4dGVuc2lvbiBw
YXJhbWV0ZXIgaXMgcmVjZWl2ZWQsCisgICAgICAgIC0gKFdoZW4gcHJvY2Vzc2luZyB0aGUgcGVy
bWVzc2FnZS1kZWZsYXRlIGV4dGVuc2lvbikgdGhpcyBwcm9jZXNzb3IKKyAgICAgICAgICBkZWNs
aW5lcyB0aGUgcmVxdWVzdC4KKyAgICAgICAgLSAoV2hlbiBwcm9jZXNzaW5nIHRoZSBwZXJtZXNz
YWdlLWNvbXByZXNzIGV4dGVuc2lvbikgdGhpcyBwcm9jZXNzb3IKKyAgICAgICAgICBhY2NlcHRz
IHRoZSByZXF1ZXN0LgorICAgICAgICAiIiIKIAotICAgICAgICBjbGFzcyBfSW5jb21pbmdNZXNz
YWdlRmlsdGVyKG9iamVjdCk6CisgICAgICAgIHNlbGYuX2Myc19tYXhfd2luZG93X2JpdHMgPSB2
YWx1ZQogCi0gICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyZW50KToKLSAgICAgICAg
ICAgICAgICBzZWxmLl9wYXJlbnQgPSBwYXJlbnQKLSAgICAgICAgICAgICAgICBzZWxmLl9kZWNv
bXByZXNzX25leHRfbWVzc2FnZSA9IEZhbHNlCisgICAgZGVmIHNldF9jMnNfbm9fY29udGV4dF90
YWtlb3ZlcihzZWxmLCB2YWx1ZSk6CisgICAgICAgICIiIklmIHRoaXMgb3B0aW9uIGlzIHNwZWNp
ZmllZCwgdGhpcyBjbGFzcyBhZGRzIHRoZQorICAgICAgICBjMnNfbm9fY29udGV4dF90YWtlb3Zl
ciBleHRlbnNpb24gcGFyYW1ldGVyIHRvIHRoZSBoYW5kc2hha2UgcmVzcG9uc2UsCisgICAgICAg
IGJ1dCBkb2Vzbid0IHJlc2V0IGluZmxhdGVyIGZvciBlYWNoIG1lc3NhZ2UuIEkuZS4sIHlvdSBj
YW4gdXNlIHRoaXMgZm9yCisgICAgICAgIHRlc3RpbmcgY2xpZW50IGltcGxlbWVudGF0aW9uIGJ1
dCBjYW5ub3QgcmVkdWNlIG1lbW9yeSB1c2FnZSBvZiB0aGlzCisgICAgICAgIGNsYXNzLgorICAg
ICAgICAiIiIKIAotICAgICAgICAgICAgZGVmIGRlY29tcHJlc3NfbmV4dF9tZXNzYWdlKHNlbGYp
OgotICAgICAgICAgICAgICAgIHNlbGYuX2RlY29tcHJlc3NfbmV4dF9tZXNzYWdlID0gVHJ1ZQor
ICAgICAgICBzZWxmLl9jMnNfbm9fY29udGV4dF90YWtlb3ZlciA9IHZhbHVlCiAKLSAgICAgICAg
ICAgIGRlZiBmaWx0ZXIoc2VsZiwgbWVzc2FnZSk6Ci0gICAgICAgICAgICAgICAgbWVzc2FnZSA9
IHNlbGYuX3BhcmVudC5fcHJvY2Vzc19pbmNvbWluZ19tZXNzYWdlKAotICAgICAgICAgICAgICAg
ICAgICBtZXNzYWdlLCBzZWxmLl9kZWNvbXByZXNzX25leHRfbWVzc2FnZSkKLSAgICAgICAgICAg
ICAgICBzZWxmLl9kZWNvbXByZXNzX25leHRfbWVzc2FnZSA9IEZhbHNlCi0gICAgICAgICAgICAg
ICAgcmV0dXJuIG1lc3NhZ2UKKyAgICBkZWYgc2V0X2JmaW5hbChzZWxmLCB2YWx1ZSk6CisgICAg
ICAgIHNlbGYuX2ZyYW1lci5zZXRfYmZpbmFsKHZhbHVlKQogCi0gICAgICAgIHNlbGYuX291dGdv
aW5nX21lc3NhZ2VfZmlsdGVyID0gX091dGdvaW5nTWVzc2FnZUZpbHRlcihzZWxmKQotICAgICAg
ICBzZWxmLl9pbmNvbWluZ19tZXNzYWdlX2ZpbHRlciA9IF9JbmNvbWluZ01lc3NhZ2VGaWx0ZXIo
c2VsZikKLSAgICAgICAgc3RyZWFtX29wdGlvbnMub3V0Z29pbmdfbWVzc2FnZV9maWx0ZXJzLmFw
cGVuZCgKLSAgICAgICAgICAgIHNlbGYuX291dGdvaW5nX21lc3NhZ2VfZmlsdGVyKQotICAgICAg
ICBzdHJlYW1fb3B0aW9ucy5pbmNvbWluZ19tZXNzYWdlX2ZpbHRlcnMuYXBwZW5kKAotICAgICAg
ICAgICAgc2VsZi5faW5jb21pbmdfbWVzc2FnZV9maWx0ZXIpCisgICAgZGVmIGVuYWJsZV9vdXRn
b2luZ19jb21wcmVzc2lvbihzZWxmKToKKyAgICAgICAgc2VsZi5fZnJhbWVyLnNldF9jb21wcmVz
c19vdXRnb2luZ19lbmFibGVkKFRydWUpCiAKLSAgICAgICAgY2xhc3MgX091dGdvaW5nRnJhbWVG
aWx0ZXIob2JqZWN0KToKKyAgICBkZWYgZGlzYWJsZV9vdXRnb2luZ19jb21wcmVzc2lvbihzZWxm
KToKKyAgICAgICAgc2VsZi5fZnJhbWVyLnNldF9jb21wcmVzc19vdXRnb2luZ19lbmFibGVkKEZh
bHNlKQogCi0gICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyZW50KToKLSAgICAgICAg
ICAgICAgICBzZWxmLl9wYXJlbnQgPSBwYXJlbnQKLSAgICAgICAgICAgICAgICBzZWxmLl9zZXRf
Y29tcHJlc3Npb25fYml0ID0gRmFsc2UKIAotICAgICAgICAgICAgZGVmIHNldF9jb21wcmVzc2lv
bl9iaXQoc2VsZik6Ci0gICAgICAgICAgICAgICAgc2VsZi5fc2V0X2NvbXByZXNzaW9uX2JpdCA9
IFRydWUKK2NsYXNzIF9QZXJNZXNzYWdlRGVmbGF0ZUZyYW1lcihvYmplY3QpOgorICAgICIiIkEg
ZnJhbWVyIGZvciBleHRlbnNpb25zIHdpdGggcGVyLW1lc3NhZ2UgREVGTEFURSBmZWF0dXJlLiIi
IgogCi0gICAgICAgICAgICBkZWYgZmlsdGVyKHNlbGYsIGZyYW1lKToKLSAgICAgICAgICAgICAg
ICBzZWxmLl9wYXJlbnQuX3Byb2Nlc3Nfb3V0Z29pbmdfZnJhbWUoCi0gICAgICAgICAgICAgICAg
ICAgIGZyYW1lLCBzZWxmLl9zZXRfY29tcHJlc3Npb25fYml0KQotICAgICAgICAgICAgICAgIHNl
bGYuX3NldF9jb21wcmVzc2lvbl9iaXQgPSBGYWxzZQorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBk
ZWZsYXRlX21heF93aW5kb3dfYml0cywgZGVmbGF0ZV9ub19jb250ZXh0X3Rha2VvdmVyKToKKyAg
ICAgICAgc2VsZi5fbG9nZ2VyID0gdXRpbC5nZXRfY2xhc3NfbG9nZ2VyKHNlbGYpCiAKLSAgICAg
ICAgY2xhc3MgX0luY29taW5nRnJhbWVGaWx0ZXIob2JqZWN0KToKKyAgICAgICAgc2VsZi5fcmZj
MTk3OV9kZWZsYXRlciA9IHV0aWwuX1JGQzE5NzlEZWZsYXRlcigKKyAgICAgICAgICAgIGRlZmxh
dGVfbWF4X3dpbmRvd19iaXRzLCBkZWZsYXRlX25vX2NvbnRleHRfdGFrZW92ZXIpCiAKLSAgICAg
ICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJlbnQpOgotICAgICAgICAgICAgICAgIHNlbGYu
X3BhcmVudCA9IHBhcmVudAorICAgICAgICBzZWxmLl9yZmMxOTc5X2luZmxhdGVyID0gdXRpbC5f
UkZDMTk3OUluZmxhdGVyKCkKIAotICAgICAgICAgICAgZGVmIGZpbHRlcihzZWxmLCBmcmFtZSk6
Ci0gICAgICAgICAgICAgICAgc2VsZi5fcGFyZW50Ll9wcm9jZXNzX2luY29taW5nX2ZyYW1lKGZy
YW1lKQorICAgICAgICBzZWxmLl9iZmluYWwgPSBGYWxzZQogCi0gICAgICAgIHNlbGYuX291dGdv
aW5nX2ZyYW1lX2ZpbHRlciA9IF9PdXRnb2luZ0ZyYW1lRmlsdGVyKHNlbGYpCi0gICAgICAgIHNl
bGYuX2luY29taW5nX2ZyYW1lX2ZpbHRlciA9IF9JbmNvbWluZ0ZyYW1lRmlsdGVyKHNlbGYpCi0g
ICAgICAgIHN0cmVhbV9vcHRpb25zLm91dGdvaW5nX2ZyYW1lX2ZpbHRlcnMuYXBwZW5kKAotICAg
ICAgICAgICAgc2VsZi5fb3V0Z29pbmdfZnJhbWVfZmlsdGVyKQotICAgICAgICBzdHJlYW1fb3B0
aW9ucy5pbmNvbWluZ19mcmFtZV9maWx0ZXJzLmFwcGVuZCgKLSAgICAgICAgICAgIHNlbGYuX2lu
Y29taW5nX2ZyYW1lX2ZpbHRlcikKKyAgICAgICAgc2VsZi5fY29tcHJlc3Nfb3V0Z29pbmdfZW5h
YmxlZCA9IEZhbHNlCiAKLSAgICAgICAgc3RyZWFtX29wdGlvbnMuZW5jb2RlX3RleHRfbWVzc2Fn
ZV90b191dGY4ID0gRmFsc2UKKyAgICAgICAgIyBUcnVlIGlmIGEgbWVzc2FnZSBpcyBmcmFnbWVu
dGVkIGFuZCBjb21wcmVzc2lvbiBpcyBvbmdvaW5nLgorICAgICAgICBzZWxmLl9jb21wcmVzc19v
bmdvaW5nID0gRmFsc2UKIAotICAgIGRlZiBzZXRfYzJzX21heF93aW5kb3dfYml0cyhzZWxmLCB2
YWx1ZSk6Ci0gICAgICAgIHNlbGYuX2Myc19tYXhfd2luZG93X2JpdHMgPSB2YWx1ZQorICAgICAg
ICAjIENhbGN1bGF0ZXMKKyAgICAgICAgIyAgICAgKFRvdGFsIG91dGdvaW5nIGJ5dGVzIHN1cHBs
aWVkIHRvIHRoaXMgZmlsdGVyKSAvCisgICAgICAgICMgICAgIChUb3RhbCBieXRlcyBzZW50IHRv
IHRoZSBuZXR3b3JrIGFmdGVyIGFwcGx5aW5nIHRoaXMgZmlsdGVyKQorICAgICAgICBzZWxmLl9v
dXRnb2luZ19hdmVyYWdlX3JhdGlvX2NhbGN1bGF0b3IgPSBfQXZlcmFnZVJhdGlvQ2FsY3VsYXRv
cigpCiAKLSAgICBkZWYgc2V0X2Myc19ub19jb250ZXh0X3Rha2VvdmVyKHNlbGYsIHZhbHVlKToK
LSAgICAgICAgc2VsZi5fYzJzX25vX2NvbnRleHRfdGFrZW92ZXIgPSB2YWx1ZQorICAgICAgICAj
IENhbGN1bGF0ZXMKKyAgICAgICAgIyAgICAgKFRvdGFsIGJ5dGVzIHJlY2VpdmVkIGZyb20gdGhl
IG5ldHdvcmspIC8KKyAgICAgICAgIyAgICAgKFRvdGFsIGluY29taW5nIGJ5dGVzIG9idGFpbmVk
IGFmdGVyIGFwcGx5aW5nIHRoaXMgZmlsdGVyKQorICAgICAgICBzZWxmLl9pbmNvbWluZ19hdmVy
YWdlX3JhdGlvX2NhbGN1bGF0b3IgPSBfQXZlcmFnZVJhdGlvQ2FsY3VsYXRvcigpCiAKICAgICBk
ZWYgc2V0X2JmaW5hbChzZWxmLCB2YWx1ZSk6CiAgICAgICAgIHNlbGYuX2JmaW5hbCA9IHZhbHVl
CiAKLSAgICBkZWYgZW5hYmxlX291dGdvaW5nX2NvbXByZXNzaW9uKHNlbGYpOgotICAgICAgICBz
ZWxmLl9jb21wcmVzc19vdXRnb2luZ19lbmFibGVkID0gVHJ1ZQotCi0gICAgZGVmIGRpc2FibGVf
b3V0Z29pbmdfY29tcHJlc3Npb24oc2VsZik6Ci0gICAgICAgIHNlbGYuX2NvbXByZXNzX291dGdv
aW5nX2VuYWJsZWQgPSBGYWxzZQorICAgIGRlZiBzZXRfY29tcHJlc3Nfb3V0Z29pbmdfZW5hYmxl
ZChzZWxmLCB2YWx1ZSk6CisgICAgICAgIHNlbGYuX2NvbXByZXNzX291dGdvaW5nX2VuYWJsZWQg
PSB2YWx1ZQogCiAgICAgZGVmIF9wcm9jZXNzX2luY29taW5nX21lc3NhZ2Uoc2VsZiwgbWVzc2Fn
ZSwgZGVjb21wcmVzcyk6CiAgICAgICAgIGlmIG5vdCBkZWNvbXByZXNzOgogICAgICAgICAgICAg
cmV0dXJuIG1lc3NhZ2UKIAogICAgICAgICByZWNlaXZlZF9wYXlsb2FkX3NpemUgPSBsZW4obWVz
c2FnZSkKLSAgICAgICAgc2VsZi5fdG90YWxfaW5jb21pbmdfcGF5bG9hZF9ieXRlcyArPSByZWNl
aXZlZF9wYXlsb2FkX3NpemUKKyAgICAgICAgc2VsZi5faW5jb21pbmdfYXZlcmFnZV9yYXRpb19j
YWxjdWxhdG9yLmFkZF9yZXN1bHRfYnl0ZXMoCisgICAgICAgICAgICAgICAgcmVjZWl2ZWRfcGF5
bG9hZF9zaXplKQogCi0gICAgICAgIG1lc3NhZ2UgPSBzZWxmLl9pbmZsYXRlci5maWx0ZXIobWVz
c2FnZSkKKyAgICAgICAgbWVzc2FnZSA9IHNlbGYuX3JmYzE5NzlfaW5mbGF0ZXIuZmlsdGVyKG1l
c3NhZ2UpCiAKICAgICAgICAgZmlsdGVyZWRfcGF5bG9hZF9zaXplID0gbGVuKG1lc3NhZ2UpCi0g
ICAgICAgIHNlbGYuX3RvdGFsX2ZpbHRlcmVkX2luY29taW5nX3BheWxvYWRfYnl0ZXMgKz0gZmls
dGVyZWRfcGF5bG9hZF9zaXplCisgICAgICAgIHNlbGYuX2luY29taW5nX2F2ZXJhZ2VfcmF0aW9f
Y2FsY3VsYXRvci5hZGRfb3JpZ2luYWxfYnl0ZXMoCisgICAgICAgICAgICAgICAgZmlsdGVyZWRf
cGF5bG9hZF9zaXplKQogCi0gICAgICAgIF9sb2dfZGVjb21wcmVzc2lvbl9yYXRpbyhzZWxmLl9s
b2dnZXIsIHJlY2VpdmVkX3BheWxvYWRfc2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNlbGYuX3RvdGFsX2luY29taW5nX3BheWxvYWRfYnl0ZXMsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBmaWx0ZXJlZF9wYXlsb2FkX3NpemUsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzZWxmLl90b3RhbF9maWx0ZXJlZF9pbmNvbWluZ19wYXlsb2Fk
X2J5dGVzKQorICAgICAgICBfbG9nX2luY29taW5nX2NvbXByZXNzaW9uX3JhdGlvKAorICAgICAg
ICAgICAgICAgIHNlbGYuX2xvZ2dlciwKKyAgICAgICAgICAgICAgICByZWNlaXZlZF9wYXlsb2Fk
X3NpemUsCisgICAgICAgICAgICAgICAgZmlsdGVyZWRfcGF5bG9hZF9zaXplLAorICAgICAgICAg
ICAgICAgIHNlbGYuX2luY29taW5nX2F2ZXJhZ2VfcmF0aW9fY2FsY3VsYXRvci5nZXRfYXZlcmFn
ZV9yYXRpbygpKQogCiAgICAgICAgIHJldHVybiBtZXNzYWdlCiAKQEAgLTYwNywxOCArNjcyLDIx
IEBAIGNsYXNzIERlZmxhdGVNZXNzYWdlUHJvY2Vzc29yKEV4dGVuc2lvblByb2Nlc3NvckludGVy
ZmFjZSk6CiAgICAgICAgICAgICByZXR1cm4gbWVzc2FnZQogCiAgICAgICAgIG9yaWdpbmFsX3Bh
eWxvYWRfc2l6ZSA9IGxlbihtZXNzYWdlKQotICAgICAgICBzZWxmLl90b3RhbF9vdXRnb2luZ19w
YXlsb2FkX2J5dGVzICs9IG9yaWdpbmFsX3BheWxvYWRfc2l6ZQorICAgICAgICBzZWxmLl9vdXRn
b2luZ19hdmVyYWdlX3JhdGlvX2NhbGN1bGF0b3IuYWRkX29yaWdpbmFsX2J5dGVzKAorICAgICAg
ICAgICAgb3JpZ2luYWxfcGF5bG9hZF9zaXplKQogCi0gICAgICAgIG1lc3NhZ2UgPSBzZWxmLl9k
ZWZsYXRlci5maWx0ZXIoCisgICAgICAgIG1lc3NhZ2UgPSBzZWxmLl9yZmMxOTc5X2RlZmxhdGVy
LmZpbHRlcigKICAgICAgICAgICAgIG1lc3NhZ2UsIGZsdXNoPWVuZCwgYmZpbmFsPXNlbGYuX2Jm
aW5hbCkKIAogICAgICAgICBmaWx0ZXJlZF9wYXlsb2FkX3NpemUgPSBsZW4obWVzc2FnZSkKLSAg
ICAgICAgc2VsZi5fdG90YWxfZmlsdGVyZWRfb3V0Z29pbmdfcGF5bG9hZF9ieXRlcyArPSBmaWx0
ZXJlZF9wYXlsb2FkX3NpemUKKyAgICAgICAgc2VsZi5fb3V0Z29pbmdfYXZlcmFnZV9yYXRpb19j
YWxjdWxhdG9yLmFkZF9yZXN1bHRfYnl0ZXMoCisgICAgICAgICAgICBmaWx0ZXJlZF9wYXlsb2Fk
X3NpemUpCiAKLSAgICAgICAgX2xvZ19jb21wcmVzc2lvbl9yYXRpbyhzZWxmLl9sb2dnZXIsIG9y
aWdpbmFsX3BheWxvYWRfc2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxm
Ll90b3RhbF9vdXRnb2luZ19wYXlsb2FkX2J5dGVzLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGZpbHRlcmVkX3BheWxvYWRfc2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzZWxmLl90b3RhbF9maWx0ZXJlZF9vdXRnb2luZ19wYXlsb2FkX2J5dGVzKQorICAgICAg
ICBfbG9nX291dGdvaW5nX2NvbXByZXNzaW9uX3JhdGlvKAorICAgICAgICAgICAgICAgIHNlbGYu
X2xvZ2dlciwKKyAgICAgICAgICAgICAgICBvcmlnaW5hbF9wYXlsb2FkX3NpemUsCisgICAgICAg
ICAgICAgICAgZmlsdGVyZWRfcGF5bG9hZF9zaXplLAorICAgICAgICAgICAgICAgIHNlbGYuX291
dGdvaW5nX2F2ZXJhZ2VfcmF0aW9fY2FsY3VsYXRvci5nZXRfYXZlcmFnZV9yYXRpbygpKQogCiAg
ICAgICAgIGlmIG5vdCBzZWxmLl9jb21wcmVzc19vbmdvaW5nOgogICAgICAgICAgICAgc2VsZi5f
b3V0Z29pbmdfZnJhbWVfZmlsdGVyLnNldF9jb21wcmVzc2lvbl9iaXQoKQpAQCAtNjM3LDEwICs3
MDUsODEgQEAgY2xhc3MgRGVmbGF0ZU1lc3NhZ2VQcm9jZXNzb3IoRXh0ZW5zaW9uUHJvY2Vzc29y
SW50ZXJmYWNlKToKIAogICAgICAgICBmcmFtZS5yc3YxID0gMQogCisgICAgZGVmIHNldHVwX3N0
cmVhbV9vcHRpb25zKHNlbGYsIHN0cmVhbV9vcHRpb25zKToKKyAgICAgICAgIiIiQ3JlYXRlcyBm
aWx0ZXJzIGFuZCBzZXRzIHRoZW0gdG8gdGhlIFN0cmVhbU9wdGlvbnMuIiIiCisKKyAgICAgICAg
Y2xhc3MgX091dGdvaW5nTWVzc2FnZUZpbHRlcihvYmplY3QpOgorCisgICAgICAgICAgICBkZWYg
X19pbml0X18oc2VsZiwgcGFyZW50KToKKyAgICAgICAgICAgICAgICBzZWxmLl9wYXJlbnQgPSBw
YXJlbnQKKworICAgICAgICAgICAgZGVmIGZpbHRlcihzZWxmLCBtZXNzYWdlLCBlbmQ9VHJ1ZSwg
YmluYXJ5PUZhbHNlKToKKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5fcGFyZW50Ll9wcm9j
ZXNzX291dGdvaW5nX21lc3NhZ2UoCisgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2UsIGVuZCwg
YmluYXJ5KQorCisgICAgICAgIGNsYXNzIF9JbmNvbWluZ01lc3NhZ2VGaWx0ZXIob2JqZWN0KToK
KworICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcmVudCk6CisgICAgICAgICAgICAg
ICAgc2VsZi5fcGFyZW50ID0gcGFyZW50CisgICAgICAgICAgICAgICAgc2VsZi5fZGVjb21wcmVz
c19uZXh0X21lc3NhZ2UgPSBGYWxzZQorCisgICAgICAgICAgICBkZWYgZGVjb21wcmVzc19uZXh0
X21lc3NhZ2Uoc2VsZik6CisgICAgICAgICAgICAgICAgc2VsZi5fZGVjb21wcmVzc19uZXh0X21l
c3NhZ2UgPSBUcnVlCisKKyAgICAgICAgICAgIGRlZiBmaWx0ZXIoc2VsZiwgbWVzc2FnZSk6Cisg
ICAgICAgICAgICAgICAgbWVzc2FnZSA9IHNlbGYuX3BhcmVudC5fcHJvY2Vzc19pbmNvbWluZ19t
ZXNzYWdlKAorICAgICAgICAgICAgICAgICAgICBtZXNzYWdlLCBzZWxmLl9kZWNvbXByZXNzX25l
eHRfbWVzc2FnZSkKKyAgICAgICAgICAgICAgICBzZWxmLl9kZWNvbXByZXNzX25leHRfbWVzc2Fn
ZSA9IEZhbHNlCisgICAgICAgICAgICAgICAgcmV0dXJuIG1lc3NhZ2UKKworICAgICAgICBzZWxm
Ll9vdXRnb2luZ19tZXNzYWdlX2ZpbHRlciA9IF9PdXRnb2luZ01lc3NhZ2VGaWx0ZXIoc2VsZikK
KyAgICAgICAgc2VsZi5faW5jb21pbmdfbWVzc2FnZV9maWx0ZXIgPSBfSW5jb21pbmdNZXNzYWdl
RmlsdGVyKHNlbGYpCisgICAgICAgIHN0cmVhbV9vcHRpb25zLm91dGdvaW5nX21lc3NhZ2VfZmls
dGVycy5hcHBlbmQoCisgICAgICAgICAgICBzZWxmLl9vdXRnb2luZ19tZXNzYWdlX2ZpbHRlcikK
KyAgICAgICAgc3RyZWFtX29wdGlvbnMuaW5jb21pbmdfbWVzc2FnZV9maWx0ZXJzLmFwcGVuZCgK
KyAgICAgICAgICAgIHNlbGYuX2luY29taW5nX21lc3NhZ2VfZmlsdGVyKQorCisgICAgICAgIGNs
YXNzIF9PdXRnb2luZ0ZyYW1lRmlsdGVyKG9iamVjdCk6CisKKyAgICAgICAgICAgIGRlZiBfX2lu
aXRfXyhzZWxmLCBwYXJlbnQpOgorICAgICAgICAgICAgICAgIHNlbGYuX3BhcmVudCA9IHBhcmVu
dAorICAgICAgICAgICAgICAgIHNlbGYuX3NldF9jb21wcmVzc2lvbl9iaXQgPSBGYWxzZQorCisg
ICAgICAgICAgICBkZWYgc2V0X2NvbXByZXNzaW9uX2JpdChzZWxmKToKKyAgICAgICAgICAgICAg
ICBzZWxmLl9zZXRfY29tcHJlc3Npb25fYml0ID0gVHJ1ZQorCisgICAgICAgICAgICBkZWYgZmls
dGVyKHNlbGYsIGZyYW1lKToKKyAgICAgICAgICAgICAgICBzZWxmLl9wYXJlbnQuX3Byb2Nlc3Nf
b3V0Z29pbmdfZnJhbWUoCisgICAgICAgICAgICAgICAgICAgIGZyYW1lLCBzZWxmLl9zZXRfY29t
cHJlc3Npb25fYml0KQorICAgICAgICAgICAgICAgIHNlbGYuX3NldF9jb21wcmVzc2lvbl9iaXQg
PSBGYWxzZQorCisgICAgICAgIGNsYXNzIF9JbmNvbWluZ0ZyYW1lRmlsdGVyKG9iamVjdCk6CisK
KyAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJlbnQpOgorICAgICAgICAgICAgICAg
IHNlbGYuX3BhcmVudCA9IHBhcmVudAorCisgICAgICAgICAgICBkZWYgZmlsdGVyKHNlbGYsIGZy
YW1lKToKKyAgICAgICAgICAgICAgICBzZWxmLl9wYXJlbnQuX3Byb2Nlc3NfaW5jb21pbmdfZnJh
bWUoZnJhbWUpCisKKyAgICAgICAgc2VsZi5fb3V0Z29pbmdfZnJhbWVfZmlsdGVyID0gX091dGdv
aW5nRnJhbWVGaWx0ZXIoc2VsZikKKyAgICAgICAgc2VsZi5faW5jb21pbmdfZnJhbWVfZmlsdGVy
ID0gX0luY29taW5nRnJhbWVGaWx0ZXIoc2VsZikKKyAgICAgICAgc3RyZWFtX29wdGlvbnMub3V0
Z29pbmdfZnJhbWVfZmlsdGVycy5hcHBlbmQoCisgICAgICAgICAgICBzZWxmLl9vdXRnb2luZ19m
cmFtZV9maWx0ZXIpCisgICAgICAgIHN0cmVhbV9vcHRpb25zLmluY29taW5nX2ZyYW1lX2ZpbHRl
cnMuYXBwZW5kKAorICAgICAgICAgICAgc2VsZi5faW5jb21pbmdfZnJhbWVfZmlsdGVyKQorCisg
ICAgICAgIHN0cmVhbV9vcHRpb25zLmVuY29kZV90ZXh0X21lc3NhZ2VfdG9fdXRmOCA9IEZhbHNl
CisKIAotY2xhc3MgUGVyTWVzc2FnZUNvbXByZXNzaW9uRXh0ZW5zaW9uUHJvY2Vzc29yKAorX2F2
YWlsYWJsZV9wcm9jZXNzb3JzW2NvbW1vbi5QRVJNRVNTQUdFX0RFRkxBVEVfRVhURU5TSU9OXSA9
ICgKKyAgICAgICAgUGVyTWVzc2FnZURlZmxhdGVFeHRlbnNpb25Qcm9jZXNzb3IpCisjIFRPRE8o
dHlvc2hpbm8pOiBSZW9yZ2FuaXplIGNsYXNzIG5hbWVzLgorX2NvbXByZXNzaW9uX2V4dGVuc2lv
bl9uYW1lcy5hcHBlbmQoJ2RlZmxhdGUnKQorCisKK2NsYXNzIFBlck1lc3NhZ2VDb21wcmVzc0V4
dGVuc2lvblByb2Nlc3NvcigKICAgICBDb21wcmVzc2lvbkV4dGVuc2lvblByb2Nlc3NvckJhc2Up
OgotICAgICIiIldlYlNvY2tldCBQZXItbWVzc2FnZSBjb21wcmVzc2lvbiBleHRlbnNpb24gcHJv
Y2Vzc29yLgorICAgICIiInBlcm1lc3NhZ2UtY29tcHJlc3MgZXh0ZW5zaW9uIHByb2Nlc3Nvci4K
IAogICAgIFNwZWNpZmljYXRpb246CiAgICAgaHR0cDovL3Rvb2xzLmlldGYub3JnL2h0bWwvZHJh
ZnQtaWV0Zi1oeWJpLXBlcm1lc3NhZ2UtY29tcHJlc3Npb24KQEAgLTY1NiwxOCArNzk1LDEzIEBA
IGNsYXNzIFBlck1lc3NhZ2VDb21wcmVzc2lvbkV4dGVuc2lvblByb2Nlc3NvcigKIAogICAgIGRl
ZiBfbG9va3VwX2NvbXByZXNzaW9uX3Byb2Nlc3NvcihzZWxmLCBtZXRob2RfZGVzYyk6CiAgICAg
ICAgIGlmIG1ldGhvZF9kZXNjLm5hbWUoKSA9PSBzZWxmLl9ERUZMQVRFX01FVEhPRDoKLSAgICAg
ICAgICAgIHJldHVybiBEZWZsYXRlTWVzc2FnZVByb2Nlc3NvcihtZXRob2RfZGVzYykKKyAgICAg
ICAgICAgIHJldHVybiBQZXJNZXNzYWdlRGVmbGF0ZUV4dGVuc2lvblByb2Nlc3NvcihtZXRob2Rf
ZGVzYywgRmFsc2UpCiAgICAgICAgIHJldHVybiBOb25lCiAKIAogX2F2YWlsYWJsZV9wcm9jZXNz
b3JzW2NvbW1vbi5QRVJNRVNTQUdFX0NPTVBSRVNTSU9OX0VYVEVOU0lPTl0gPSAoCi0gICAgUGVy
TWVzc2FnZUNvbXByZXNzaW9uRXh0ZW5zaW9uUHJvY2Vzc29yKQotCi0KLSMgQWRkaW5nIHZlbmRv
ci1wcmVmaXhlZCBwZXJtZXNzYWdlLWNvbXByZXNzIGV4dGVuc2lvbi4KLSMgVE9ETyhiYXNoaSk6
IFJlbW92ZSB0aGlzIGFmdGVyIFdlYktpdCBzdG9wcyB1c2luZyB2ZW5kb3IgcHJlZml4LgotX2F2
YWlsYWJsZV9wcm9jZXNzb3JzW2NvbW1vbi5YX1dFQktJVF9QRVJNRVNTQUdFX0NPTVBSRVNTSU9O
X0VYVEVOU0lPTl0gPSAoCi0gICAgUGVyTWVzc2FnZUNvbXByZXNzaW9uRXh0ZW5zaW9uUHJvY2Vz
c29yKQorICAgIFBlck1lc3NhZ2VDb21wcmVzc0V4dGVuc2lvblByb2Nlc3NvcikKK19jb21wcmVz
c2lvbl9leHRlbnNpb25fbmFtZXMuYXBwZW5kKGNvbW1vbi5QRVJNRVNTQUdFX0NPTVBSRVNTSU9O
X0VYVEVOU0lPTikKIAogCiBjbGFzcyBNdXhFeHRlbnNpb25Qcm9jZXNzb3IoRXh0ZW5zaW9uUHJv
Y2Vzc29ySW50ZXJmYWNlKToKQEAgLTY3Niw1MiArODEwLDg1IEBAIGNsYXNzIE11eEV4dGVuc2lv
blByb2Nlc3NvcihFeHRlbnNpb25Qcm9jZXNzb3JJbnRlcmZhY2UpOgogICAgIF9RVU9UQV9QQVJB
TSA9ICdxdW90YScKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCByZXF1ZXN0KToKLSAgICAgICAg
c2VsZi5fcmVxdWVzdCA9IHJlcXVlc3QKKyAgICAgICAgRXh0ZW5zaW9uUHJvY2Vzc29ySW50ZXJm
YWNlLl9faW5pdF9fKHNlbGYsIHJlcXVlc3QpCisgICAgICAgIHNlbGYuX3F1b3RhID0gMAorICAg
ICAgICBzZWxmLl9leHRlbnNpb25zID0gW10KIAogICAgIGRlZiBuYW1lKHNlbGYpOgogICAgICAg
ICByZXR1cm4gY29tbW9uLk1VWF9FWFRFTlNJT04KIAotICAgIGRlZiBnZXRfZXh0ZW5zaW9uX3Jl
c3BvbnNlKHNlbGYsIHdzX3JlcXVlc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
bG9naWNhbF9jaGFubmVsX2V4dGVuc2lvbnMpOgotICAgICAgICAjIE11eCBleHRlbnNpb24gY2Fu
bm90IGJlIHVzZWQgYWZ0ZXIgZXh0ZW5zaW9ucyB0aGF0IGRlcGVuZCBvbgotICAgICAgICAjIGZy
YW1lIGJvdW5kYXJ5LCBleHRlbnNpb24gZGF0YSBmaWVsZCwgb3IgYW55IHJlc2VydmVkIGJpdHMK
LSAgICAgICAgIyB3aGljaCBhcmUgYXR0cmlidXRlZCB0byBlYWNoIGZyYW1lLgotICAgICAgICBm
b3IgZXh0ZW5zaW9uIGluIGxvZ2ljYWxfY2hhbm5lbF9leHRlbnNpb25zOgotICAgICAgICAgICAg
bmFtZSA9IGV4dGVuc2lvbi5uYW1lKCkKLSAgICAgICAgICAgIGlmIChuYW1lID09IGNvbW1vbi5Q
RVJGUkFNRV9DT01QUkVTU0lPTl9FWFRFTlNJT04gb3IKLSAgICAgICAgICAgICAgICBuYW1lID09
IGNvbW1vbi5ERUZMQVRFX0ZSQU1FX0VYVEVOU0lPTiBvcgotICAgICAgICAgICAgICAgIG5hbWUg
PT0gY29tbW9uLlhfV0VCS0lUX0RFRkxBVEVfRlJBTUVfRVhURU5TSU9OKToKLSAgICAgICAgICAg
ICAgICByZXR1cm4gTm9uZQotCisgICAgZGVmIGNoZWNrX2NvbnNpc3RlbmN5X3dpdGhfb3RoZXJf
cHJvY2Vzc29ycyhzZWxmLCBwcm9jZXNzb3JzKToKKyAgICAgICAgYmVmb3JlX211eCA9IFRydWUK
KyAgICAgICAgZm9yIHByb2Nlc3NvciBpbiBwcm9jZXNzb3JzOgorICAgICAgICAgICAgbmFtZSA9
IHByb2Nlc3Nvci5uYW1lKCkKKyAgICAgICAgICAgIGlmIG5hbWUgPT0gc2VsZi5uYW1lKCk6Cisg
ICAgICAgICAgICAgICAgYmVmb3JlX211eCA9IEZhbHNlCisgICAgICAgICAgICAgICAgY29udGlu
dWUKKyAgICAgICAgICAgIGlmIG5vdCBwcm9jZXNzb3IuaXNfYWN0aXZlKCk6CisgICAgICAgICAg
ICAgICAgY29udGludWUKKyAgICAgICAgICAgIGlmIGJlZm9yZV9tdXg6CisgICAgICAgICAgICAg
ICAgIyBNdXggZXh0ZW5zaW9uIGNhbm5vdCBiZSB1c2VkIGFmdGVyIGV4dGVuc2lvbnMKKyAgICAg
ICAgICAgICAgICAjIHRoYXQgZGVwZW5kIG9uIGZyYW1lIGJvdW5kYXJ5LCBleHRlbnNpb24gZGF0
YSBmaWVsZCwgb3IgYW55CisgICAgICAgICAgICAgICAgIyByZXNlcnZlZCBiaXRzIHdoaWNoIGFy
ZSBhdHRyaWJ1dGVkIHRvIGVhY2ggZnJhbWUuCisgICAgICAgICAgICAgICAgaWYgKG5hbWUgPT0g
Y29tbW9uLlBFUkZSQU1FX0NPTVBSRVNTSU9OX0VYVEVOU0lPTiBvcgorICAgICAgICAgICAgICAg
ICAgICBuYW1lID09IGNvbW1vbi5ERUZMQVRFX0ZSQU1FX0VYVEVOU0lPTiBvcgorICAgICAgICAg
ICAgICAgICAgICBuYW1lID09IGNvbW1vbi5YX1dFQktJVF9ERUZMQVRFX0ZSQU1FX0VYVEVOU0lP
Tik6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuc2V0X2FjdGl2ZShGYWxzZSkKKyAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICMg
TXV4IGV4dGVuc2lvbiBzaG91bGQgbm90IGJlIGFwcGxpZWQgYmVmb3JlIGFueSBoaXN0b3J5LWJh
c2VkCisgICAgICAgICAgICAgICAgIyBjb21wcmVzc2lvbiBleHRlbnNpb24uCisgICAgICAgICAg
ICAgICAgaWYgKG5hbWUgPT0gY29tbW9uLlBFUkZSQU1FX0NPTVBSRVNTSU9OX0VYVEVOU0lPTiBv
cgorICAgICAgICAgICAgICAgICAgICBuYW1lID09IGNvbW1vbi5ERUZMQVRFX0ZSQU1FX0VYVEVO
U0lPTiBvcgorICAgICAgICAgICAgICAgICAgICBuYW1lID09IGNvbW1vbi5YX1dFQktJVF9ERUZM
QVRFX0ZSQU1FX0VYVEVOU0lPTiBvcgorICAgICAgICAgICAgICAgICAgICBuYW1lID09IGNvbW1v
bi5QRVJNRVNTQUdFX0NPTVBSRVNTSU9OX0VYVEVOU0lPTiBvcgorICAgICAgICAgICAgICAgICAg
ICBuYW1lID09IGNvbW1vbi5YX1dFQktJVF9QRVJNRVNTQUdFX0NPTVBSRVNTSU9OX0VYVEVOU0lP
Tik6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuc2V0X2FjdGl2ZShGYWxzZSkKKyAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuCisKKyAgICBkZWYgX2dldF9leHRlbnNpb25fcmVzcG9uc2VfaW50
ZXJuYWwoc2VsZik6CisgICAgICAgIHNlbGYuX2FjdGl2ZSA9IEZhbHNlCiAgICAgICAgIHF1b3Rh
ID0gc2VsZi5fcmVxdWVzdC5nZXRfcGFyYW1ldGVyX3ZhbHVlKHNlbGYuX1FVT1RBX1BBUkFNKQot
ICAgICAgICBpZiBxdW90YSBpcyBOb25lOgotICAgICAgICAgICAgd3NfcmVxdWVzdC5tdXhfcXVv
dGEgPSAwCi0gICAgICAgIGVsc2U6CisgICAgICAgIGlmIHF1b3RhIGlzIG5vdCBOb25lOgogICAg
ICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgIHF1b3RhID0gaW50KHF1b3RhKQogICAgICAg
ICAgICAgZXhjZXB0IFZhbHVlRXJyb3IsIGU6CiAgICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUK
ICAgICAgICAgICAgIGlmIHF1b3RhIDwgMCBvciBxdW90YSA+PSAyICoqIDMyOgogICAgICAgICAg
ICAgICAgIHJldHVybiBOb25lCi0gICAgICAgICAgICB3c19yZXF1ZXN0Lm11eF9xdW90YSA9IHF1
b3RhCisgICAgICAgICAgICBzZWxmLl9xdW90YSA9IHF1b3RhCiAKLSAgICAgICAgd3NfcmVxdWVz
dC5tdXggPSBUcnVlCi0gICAgICAgIHdzX3JlcXVlc3QubXV4X2V4dGVuc2lvbnMgPSBsb2dpY2Fs
X2NoYW5uZWxfZXh0ZW5zaW9ucworICAgICAgICBzZWxmLl9hY3RpdmUgPSBUcnVlCiAgICAgICAg
IHJldHVybiBjb21tb24uRXh0ZW5zaW9uUGFyYW1ldGVyKGNvbW1vbi5NVVhfRVhURU5TSU9OKQog
Ci0gICAgZGVmIHNldHVwX3N0cmVhbV9vcHRpb25zKHNlbGYsIHN0cmVhbV9vcHRpb25zKToKKyAg
ICBkZWYgX3NldHVwX3N0cmVhbV9vcHRpb25zX2ludGVybmFsKHNlbGYsIHN0cmVhbV9vcHRpb25z
KToKICAgICAgICAgcGFzcwogCisgICAgZGVmIHNldF9xdW90YShzZWxmLCBxdW90YSk6CisgICAg
ICAgIHNlbGYuX3F1b3RhID0gcXVvdGEKKworICAgIGRlZiBxdW90YShzZWxmKToKKyAgICAgICAg
cmV0dXJuIHNlbGYuX3F1b3RhCisKKyAgICBkZWYgc2V0X2V4dGVuc2lvbnMoc2VsZiwgZXh0ZW5z
aW9ucyk6CisgICAgICAgIHNlbGYuX2V4dGVuc2lvbnMgPSBleHRlbnNpb25zCisKKyAgICBkZWYg
ZXh0ZW5zaW9ucyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX2V4dGVuc2lvbnMKKwogCiBf
YXZhaWxhYmxlX3Byb2Nlc3NvcnNbY29tbW9uLk1VWF9FWFRFTlNJT05dID0gTXV4RXh0ZW5zaW9u
UHJvY2Vzc29yCiAKIAogZGVmIGdldF9leHRlbnNpb25fcHJvY2Vzc29yKGV4dGVuc2lvbl9yZXF1
ZXN0KToKLSAgICBnbG9iYWwgX2F2YWlsYWJsZV9wcm9jZXNzb3JzCiAgICAgcHJvY2Vzc29yX2Ns
YXNzID0gX2F2YWlsYWJsZV9wcm9jZXNzb3JzLmdldChleHRlbnNpb25fcmVxdWVzdC5uYW1lKCkp
CiAgICAgaWYgcHJvY2Vzc29yX2NsYXNzIGlzIE5vbmU6CiAgICAgICAgIHJldHVybiBOb25lCiAg
ICAgcmV0dXJuIHByb2Nlc3Nvcl9jbGFzcyhleHRlbnNpb25fcmVxdWVzdCkKIAogCitkZWYgaXNf
Y29tcHJlc3Npb25fZXh0ZW5zaW9uKGV4dGVuc2lvbl9uYW1lKToKKyAgICByZXR1cm4gZXh0ZW5z
aW9uX25hbWUgaW4gX2NvbXByZXNzaW9uX2V4dGVuc2lvbl9uYW1lcworCisKICMgdmk6c3RzPTQg
c3c9NCBldApkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90aGlyZHBhcnR5L21v
ZF9weXdlYnNvY2tldC9oYW5kc2hha2UvX2Jhc2UucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L3RoaXJkcGFydHkvbW9kX3B5d2Vic29ja2V0L2hhbmRzaGFrZS9fYmFzZS5weQppbmRleCBlNWM5
NGNhOTA5OGIwNTA3ZjM5NGEyMmUzM2I2ODgyMTM4MWY1YzRlLi5jOTkzYTU4NGI3YjNlNTJiNjA3
YjY1YmYzOGFmZGNhZGRjYTJmZTc4IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L3RoaXJkcGFydHkvbW9kX3B5d2Vic29ja2V0L2hhbmRzaGFrZS9fYmFzZS5weQorKysgYi9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L3RoaXJkcGFydHkvbW9kX3B5d2Vic29ja2V0L2hhbmRzaGFrZS9f
YmFzZS5weQpAQCAtODQsNDIgKzg0LDI5IEBAIGRlZiBnZXRfZGVmYXVsdF9wb3J0KGlzX3NlY3Vy
ZSk6CiAgICAgICAgIHJldHVybiBjb21tb24uREVGQVVMVF9XRUJfU09DS0VUX1BPUlQKIAogCi1k
ZWYgdmFsaWRhdGVfc3VicHJvdG9jb2woc3VicHJvdG9jb2wsIGhpeGllKToKK2RlZiB2YWxpZGF0
ZV9zdWJwcm90b2NvbChzdWJwcm90b2NvbCk6CiAgICAgIiIiVmFsaWRhdGUgYSB2YWx1ZSBpbiB0
aGUgU2VjLVdlYlNvY2tldC1Qcm90b2NvbCBmaWVsZC4KIAotICAgIFNlZQotICAgIC0gUkZDIDY0
NTU6IFNlY3Rpb24gNC4xLiwgNC4yLjIuLCBhbmQgNC4zLgotICAgIC0gSHlCaSAwMDogU2VjdGlv
biA0LjEuIE9wZW5pbmcgaGFuZHNoYWtlCi0KLSAgICBBcmdzOgotICAgICAgICAgaGl4aWU6IGlm
IFRydWUsIGNoZWNrcyBpZiBjaGFyYWN0ZXJzIGluIHN1YnByb3RvY29sIGFyZSBpbiByYW5nZQot
ICAgICAgICAgICAgICAgIGJldHdlZW4gVSswMDIwIGFuZCBVKzAwN0UuIEl0J3MgcmVxdWlyZWQg
YnkgSHlCaSAwMCBidXQgbm90IGJ5Ci0gICAgICAgICAgICAgICAgUkZDIDY0NTUuCisgICAgU2Vl
IHRoZSBTZWN0aW9uIDQuMS4sIDQuMi4yLiwgYW5kIDQuMy4gb2YgUkZDIDY0NTUuCiAgICAgIiIi
CiAKICAgICBpZiBub3Qgc3VicHJvdG9jb2w6CiAgICAgICAgIHJhaXNlIEhhbmRzaGFrZUV4Y2Vw
dGlvbignSW52YWxpZCBzdWJwcm90b2NvbCBuYW1lOiBlbXB0eScpCi0gICAgaWYgaGl4aWU6Ci0g
ICAgICAgICMgUGFyYW1ldGVyIHNob3VsZCBiZSBpbiB0aGUgcmFuZ2UgVSswMDIwIHRvIFUrMDA3
RS4KLSAgICAgICAgZm9yIGMgaW4gc3VicHJvdG9jb2w6Ci0gICAgICAgICAgICBpZiBub3QgMHgy
MCA8PSBvcmQoYykgPD0gMHg3ZToKLSAgICAgICAgICAgICAgICByYWlzZSBIYW5kc2hha2VFeGNl
cHRpb24oCi0gICAgICAgICAgICAgICAgICAgICdJbGxlZ2FsIGNoYXJhY3RlciBpbiBzdWJwcm90
b2NvbCBuYW1lOiAlcicgJSBjKQotICAgIGVsc2U6Ci0gICAgICAgICMgUGFyYW1ldGVyIHNob3Vs
ZCBiZSBlbmNvZGVkIEhUVFAgdG9rZW4uCi0gICAgICAgIHN0YXRlID0gaHR0cF9oZWFkZXJfdXRp
bC5QYXJzaW5nU3RhdGUoc3VicHJvdG9jb2wpCi0gICAgICAgIHRva2VuID0gaHR0cF9oZWFkZXJf
dXRpbC5jb25zdW1lX3Rva2VuKHN0YXRlKQotICAgICAgICByZXN0ID0gaHR0cF9oZWFkZXJfdXRp
bC5wZWVrKHN0YXRlKQotICAgICAgICAjIElmIHxyZXN0fCBpcyBub3QgTm9uZSwgfHN1YnByb3Rv
Y29sfCBpcyBub3Qgb25lIHRva2VuIG9yIGludmFsaWQuIElmCi0gICAgICAgICMgfHJlc3R8IGlz
IE5vbmUsIHx0b2tlbnwgbXVzdCBub3QgYmUgTm9uZSBiZWNhdXNlIHxzdWJwcm90b2NvbHwgaXMK
LSAgICAgICAgIyBjb25jYXRlbmF0aW9uIG9mIHx0b2tlbnwgYW5kIHxyZXN0fCBhbmQgaXMgbm90
IE5vbmUuCi0gICAgICAgIGlmIHJlc3QgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICByYWlzZSBI
YW5kc2hha2VFeGNlcHRpb24oJ0ludmFsaWQgbm9uLXRva2VuIHN0cmluZyBpbiBzdWJwcm90b2Nv
bCAnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ25hbWU6ICVyJyAlIHJl
c3QpCisKKyAgICAjIFBhcmFtZXRlciBzaG91bGQgYmUgZW5jb2RlZCBIVFRQIHRva2VuLgorICAg
IHN0YXRlID0gaHR0cF9oZWFkZXJfdXRpbC5QYXJzaW5nU3RhdGUoc3VicHJvdG9jb2wpCisgICAg
dG9rZW4gPSBodHRwX2hlYWRlcl91dGlsLmNvbnN1bWVfdG9rZW4oc3RhdGUpCisgICAgcmVzdCA9
IGh0dHBfaGVhZGVyX3V0aWwucGVlayhzdGF0ZSkKKyAgICAjIElmIHxyZXN0fCBpcyBub3QgTm9u
ZSwgfHN1YnByb3RvY29sfCBpcyBub3Qgb25lIHRva2VuIG9yIGludmFsaWQuIElmCisgICAgIyB8
cmVzdHwgaXMgTm9uZSwgfHRva2VufCBtdXN0IG5vdCBiZSBOb25lIGJlY2F1c2UgfHN1YnByb3Rv
Y29sfCBpcworICAgICMgY29uY2F0ZW5hdGlvbiBvZiB8dG9rZW58IGFuZCB8cmVzdHwgYW5kIGlz
IG5vdCBOb25lLgorICAgIGlmIHJlc3QgaXMgbm90IE5vbmU6CisgICAgICAgIHJhaXNlIEhhbmRz
aGFrZUV4Y2VwdGlvbignSW52YWxpZCBub24tdG9rZW4gc3RyaW5nIGluIHN1YnByb3RvY29sICcK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICduYW1lOiAlcicgJSByZXN0KQogCiAK
IGRlZiBwYXJzZV9ob3N0X2hlYWRlcihyZXF1ZXN0KToKLSAgICBmaWVsZHMgPSByZXF1ZXN0Lmhl
YWRlcnNfaW5bJ0hvc3QnXS5zcGxpdCgnOicsIDEpCisgICAgZmllbGRzID0gcmVxdWVzdC5oZWFk
ZXJzX2luW2NvbW1vbi5IT1NUX0hFQURFUl0uc3BsaXQoJzonLCAxKQogICAgIGlmIGxlbihmaWVs
ZHMpID09IDE6CiAgICAgICAgIHJldHVybiBmaWVsZHNbMF0sIGdldF9kZWZhdWx0X3BvcnQocmVx
dWVzdC5pc19odHRwcygpKQogICAgIHRyeToKQEAgLTEzMiwyNyArMTE5LDYgQEAgZGVmIGZvcm1h
dF9oZWFkZXIobmFtZSwgdmFsdWUpOgogICAgIHJldHVybiAnJXM6ICVzXHJcbicgJSAobmFtZSwg
dmFsdWUpCiAKIAotZGVmIGJ1aWxkX2xvY2F0aW9uKHJlcXVlc3QpOgotICAgICIiIkJ1aWxkIFdl
YlNvY2tldCBsb2NhdGlvbiBmb3IgcmVxdWVzdC4iIiIKLSAgICBsb2NhdGlvbl9wYXJ0cyA9IFtd
Ci0gICAgaWYgcmVxdWVzdC5pc19odHRwcygpOgotICAgICAgICBsb2NhdGlvbl9wYXJ0cy5hcHBl
bmQoY29tbW9uLldFQl9TT0NLRVRfU0VDVVJFX1NDSEVNRSkKLSAgICBlbHNlOgotICAgICAgICBs
b2NhdGlvbl9wYXJ0cy5hcHBlbmQoY29tbW9uLldFQl9TT0NLRVRfU0NIRU1FKQotICAgIGxvY2F0
aW9uX3BhcnRzLmFwcGVuZCgnOi8vJykKLSAgICBob3N0LCBwb3J0ID0gcGFyc2VfaG9zdF9oZWFk
ZXIocmVxdWVzdCkKLSAgICBjb25uZWN0aW9uX3BvcnQgPSByZXF1ZXN0LmNvbm5lY3Rpb24ubG9j
YWxfYWRkclsxXQotICAgIGlmIHBvcnQgIT0gY29ubmVjdGlvbl9wb3J0OgotICAgICAgICByYWlz
ZSBIYW5kc2hha2VFeGNlcHRpb24oJ0hlYWRlci9jb25uZWN0aW9uIHBvcnQgbWlzbWF0Y2g6ICVk
LyVkJyAlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocG9ydCwgY29ubmVjdGlv
bl9wb3J0KSkKLSAgICBsb2NhdGlvbl9wYXJ0cy5hcHBlbmQoaG9zdCkKLSAgICBpZiAocG9ydCAh
PSBnZXRfZGVmYXVsdF9wb3J0KHJlcXVlc3QuaXNfaHR0cHMoKSkpOgotICAgICAgICBsb2NhdGlv
bl9wYXJ0cy5hcHBlbmQoJzonKQotICAgICAgICBsb2NhdGlvbl9wYXJ0cy5hcHBlbmQoc3RyKHBv
cnQpKQotICAgIGxvY2F0aW9uX3BhcnRzLmFwcGVuZChyZXF1ZXN0LnVyaSkKLSAgICByZXR1cm4g
Jycuam9pbihsb2NhdGlvbl9wYXJ0cykKLQotCiBkZWYgZ2V0X21hbmRhdG9yeV9oZWFkZXIocmVx
dWVzdCwga2V5KToKICAgICB2YWx1ZSA9IHJlcXVlc3QuaGVhZGVyc19pbi5nZXQoa2V5KQogICAg
IGlmIHZhbHVlIGlzIE5vbmU6CkBAIC0xODAsMTYgKzE0Niw2IEBAIGRlZiBjaGVja19yZXF1ZXN0
X2xpbmUocmVxdWVzdCk6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0
LnByb3RvY29sKQogCiAKLWRlZiBjaGVja19oZWFkZXJfbGluZXMocmVxdWVzdCwgbWFuZGF0b3J5
X2hlYWRlcnMpOgotICAgIGNoZWNrX3JlcXVlc3RfbGluZShyZXF1ZXN0KQotCi0gICAgIyBUaGUg
ZXhwZWN0ZWQgZmllbGQgbmFtZXMsIGFuZCB0aGUgbWVhbmluZyBvZiB0aGVpciBjb3JyZXNwb25k
aW5nCi0gICAgIyB2YWx1ZXMsIGFyZSBhcyBmb2xsb3dzLgotICAgICMgIHxVcGdyYWRlfCBhbmQg
fENvbm5lY3Rpb258Ci0gICAgZm9yIGtleSwgZXhwZWN0ZWRfdmFsdWUgaW4gbWFuZGF0b3J5X2hl
YWRlcnM6Ci0gICAgICAgIHZhbGlkYXRlX21hbmRhdG9yeV9oZWFkZXIocmVxdWVzdCwga2V5LCBl
eHBlY3RlZF92YWx1ZSkKLQotCiBkZWYgcGFyc2VfdG9rZW5fbGlzdChkYXRhKToKICAgICAiIiJQ
YXJzZXMgYSBoZWFkZXIgdmFsdWUgd2hpY2ggZm9sbG93cyAxI3Rva2VuIGFuZCByZXR1cm5zIHBh
cnNlZCBlbGVtZW50cwogICAgIGFzIGEgbGlzdCBvZiBzdHJpbmdzLgpkaWZmIC0tZ2l0IGEvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS90aGlyZHBhcnR5L21vZF9weXdlYnNvY2tldC9oYW5kc2hha2Uv
aHliaS5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGhpcmRwYXJ0eS9tb2RfcHl3ZWJzb2Nr
ZXQvaGFuZHNoYWtlL2h5YmkucHkKaW5kZXggZmMwZTJhMDk2NjBjNGE1MTUxMzk5YmQ1ZDNjMTJh
MWY5NjdiOTcwMC4uMWQ1NGE2NjJkZmRhZmE4ODkyMDkzZjczZjM4NGZiNjBlODNjMTZlZiAxMDA2
NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90aGlyZHBhcnR5L21vZF9weXdlYnNvY2tl
dC9oYW5kc2hha2UvaHliaS5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3RoaXJkcGFy
dHkvbW9kX3B5d2Vic29ja2V0L2hhbmRzaGFrZS9oeWJpLnB5CkBAIC00OSw2ICs0OSw3IEBAIGlt
cG9ydCByZQogCiBmcm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQgY29tbW9uCiBmcm9tIG1vZF9w
eXdlYnNvY2tldC5leHRlbnNpb25zIGltcG9ydCBnZXRfZXh0ZW5zaW9uX3Byb2Nlc3NvcgorZnJv
bSBtb2RfcHl3ZWJzb2NrZXQuZXh0ZW5zaW9ucyBpbXBvcnQgaXNfY29tcHJlc3Npb25fZXh0ZW5z
aW9uCiBmcm9tIG1vZF9weXdlYnNvY2tldC5oYW5kc2hha2UuX2Jhc2UgaW1wb3J0IGNoZWNrX3Jl
cXVlc3RfbGluZQogZnJvbSBtb2RfcHl3ZWJzb2NrZXQuaGFuZHNoYWtlLl9iYXNlIGltcG9ydCBm
b3JtYXRfaGVhZGVyCiBmcm9tIG1vZF9weXdlYnNvY2tldC5oYW5kc2hha2UuX2Jhc2UgaW1wb3J0
IGdldF9tYW5kYXRvcnlfaGVhZGVyCkBAIC0xODAsNDMgKzE4MSw1OSBAQCBjbGFzcyBIYW5kc2hh
a2VyKG9iamVjdCk6CiAgICAgICAgICAgICAgICAgICAgICAgICBwcm9jZXNzb3JzLmFwcGVuZChw
cm9jZXNzb3IpCiAgICAgICAgICAgICBzZWxmLl9yZXF1ZXN0LndzX2V4dGVuc2lvbl9wcm9jZXNz
b3JzID0gcHJvY2Vzc29ycwogCisgICAgICAgICAgICAjIExpc3Qgb2YgZXh0cmEgaGVhZGVycy4g
VGhlIGV4dHJhIGhhbmRzaGFrZSBoYW5kbGVyIG1heSBhZGQgaGVhZGVyCisgICAgICAgICAgICAj
IGRhdGEgYXMgbmFtZS92YWx1ZSBwYWlycyB0byB0aGlzIGxpc3QgYW5kIHB5d2Vic29ja2V0IGFw
cGVuZHMKKyAgICAgICAgICAgICMgdGhlbSB0byB0aGUgV2ViU29ja2V0IGhhbmRzaGFrZS4KKyAg
ICAgICAgICAgIHNlbGYuX3JlcXVlc3QuZXh0cmFfaGVhZGVycyA9IFtdCisKICAgICAgICAgICAg
ICMgRXh0cmEgaGFuZHNoYWtlIGhhbmRsZXIgbWF5IG1vZGlmeS9yZW1vdmUgcHJvY2Vzc29ycy4K
ICAgICAgICAgICAgIHNlbGYuX2Rpc3BhdGNoZXIuZG9fZXh0cmFfaGFuZHNoYWtlKHNlbGYuX3Jl
cXVlc3QpCiAgICAgICAgICAgICBwcm9jZXNzb3JzID0gZmlsdGVyKGxhbWJkYSBwcm9jZXNzb3I6
IHByb2Nlc3NvciBpcyBub3QgTm9uZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c2VsZi5fcmVxdWVzdC53c19leHRlbnNpb25fcHJvY2Vzc29ycykKIAorICAgICAgICAgICAgIyBB
c2sgZWFjaCBwcm9jZXNzb3IgaWYgdGhlcmUgYXJlIGV4dGVuc2lvbnMgb24gdGhlIHJlcXVlc3Qg
d2hpY2gKKyAgICAgICAgICAgICMgY2Fubm90IGNvLWV4aXN0LiBXaGVuIHByb2Nlc3NvciBkZWNp
ZGVkIG90aGVyIHByb2Nlc3NvcnMgY2Fubm90CisgICAgICAgICAgICAjIGNvLWV4aXN0IHdpdGgg
aXQsIHRoZSBwcm9jZXNzb3IgbWFya3MgdGhlbSAob3IgaXRzZWxmKSBhcworICAgICAgICAgICAg
IyAiaW5hY3RpdmUiLiBUaGUgZmlyc3QgZXh0ZW5zaW9uIHByb2Nlc3NvciBoYXMgdGhlIHJpZ2h0
IHRvCisgICAgICAgICAgICAjIG1ha2UgdGhlIGZpbmFsIGNhbGwuCisgICAgICAgICAgICBmb3Ig
cHJvY2Vzc29yIGluIHJldmVyc2VkKHByb2Nlc3NvcnMpOgorICAgICAgICAgICAgICAgIGlmIHBy
b2Nlc3Nvci5pc19hY3RpdmUoKToKKyAgICAgICAgICAgICAgICAgICAgcHJvY2Vzc29yLmNoZWNr
X2NvbnNpc3RlbmN5X3dpdGhfb3RoZXJfcHJvY2Vzc29ycygKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHByb2Nlc3NvcnMpCisgICAgICAgICAgICBwcm9jZXNzb3JzID0gZmlsdGVyKGxhbWJkYSBw
cm9jZXNzb3I6IHByb2Nlc3Nvci5pc19hY3RpdmUoKSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcHJvY2Vzc29ycykKKwogICAgICAgICAgICAgYWNjZXB0ZWRfZXh0ZW5zaW9ucyA9
IFtdCiAKLSAgICAgICAgICAgICMgV2UgbmVlZCB0byB0YWtlIGNhcmUgb2YgbXV4IGV4dGVuc2lv
biBoZXJlLiBFeHRlbnNpb25zIHRoYXQKLSAgICAgICAgICAgICMgYXJlIHBsYWNlZCBiZWZvcmUg
bXV4IHNob3VsZCBiZSBhcHBsaWVkIHRvIGxvZ2ljYWwgY2hhbm5lbHMuCisgICAgICAgICAgICAj
IFdlIG5lZWQgdG8gdGFrZSBpbnRvIGFjY291bnQgb2YgbXV4IGV4dGVuc2lvbiBoZXJlLgorICAg
ICAgICAgICAgIyBJZiBtdXggZXh0ZW5zaW9uIGV4aXN0czoKKyAgICAgICAgICAgICMgLSBSZW1v
dmUgcHJvY2Vzc29ycyBvZiBleHRlbnNpb25zIGZvciBsb2dpY2FsIGNoYW5uZWwsCisgICAgICAg
ICAgICAjICAgd2hpY2ggYXJlIHByb2Nlc3NvcnMgbG9jYXRlZCBiZWZvcmUgdGhlIG11eCBwcm9j
ZXNzb3IKKyAgICAgICAgICAgICMgLSBQYXNzIGV4dGVuc2lvbiByZXF1ZXN0cyBmb3IgbG9naWNh
bCBjaGFubmVsIHRvIG11eCBwcm9jZXNzb3IKKyAgICAgICAgICAgICMgLSBBdHRhY2ggdGhlIG11
eCBwcm9jZXNzb3IgdG8gdGhlIHJlcXVlc3QuIEl0IHdpbGwgYmUgcmVmZXJyZWQKKyAgICAgICAg
ICAgICMgICBieSBkaXNwYXRjaGVyIHRvIHNlZSB3aGV0aGVyIHRoZSBkaXNwYXRjaGVyIHNob3Vs
ZCB1c2UgbXV4CisgICAgICAgICAgICAjICAgaGFuZGxlciBvciBub3QuCiAgICAgICAgICAgICBt
dXhfaW5kZXggPSAtMQogICAgICAgICAgICAgZm9yIGksIHByb2Nlc3NvciBpbiBlbnVtZXJhdGUo
cHJvY2Vzc29ycyk6CiAgICAgICAgICAgICAgICAgaWYgcHJvY2Vzc29yLm5hbWUoKSA9PSBjb21t
b24uTVVYX0VYVEVOU0lPTjoKICAgICAgICAgICAgICAgICAgICAgbXV4X2luZGV4ID0gaQogICAg
ICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICAgaWYgbXV4X2luZGV4ID49IDA6Ci0g
ICAgICAgICAgICAgICAgbXV4X3Byb2Nlc3NvciA9IHByb2Nlc3NvcnNbbXV4X2luZGV4XQotICAg
ICAgICAgICAgICAgIGxvZ2ljYWxfY2hhbm5lbF9wcm9jZXNzb3JzID0gcHJvY2Vzc29yc1s6bXV4
X2luZGV4XQotICAgICAgICAgICAgICAgIHByb2Nlc3NvcnMgPSBwcm9jZXNzb3JzW211eF9pbmRl
eCsxOl0KLQotICAgICAgICAgICAgICAgIGZvciBwcm9jZXNzb3IgaW4gbG9naWNhbF9jaGFubmVs
X3Byb2Nlc3NvcnM6Ci0gICAgICAgICAgICAgICAgICAgIGV4dGVuc2lvbl9yZXNwb25zZSA9IHBy
b2Nlc3Nvci5nZXRfZXh0ZW5zaW9uX3Jlc3BvbnNlKCkKLSAgICAgICAgICAgICAgICAgICAgaWYg
ZXh0ZW5zaW9uX3Jlc3BvbnNlIGlzIE5vbmU6Ci0gICAgICAgICAgICAgICAgICAgICAgICAjIFJl
amVjdGVkLgotICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgICAg
ICAgICAgYWNjZXB0ZWRfZXh0ZW5zaW9ucy5hcHBlbmQoZXh0ZW5zaW9uX3Jlc3BvbnNlKQotICAg
ICAgICAgICAgICAgICMgUGFzcyBhIHNoYWxsb3cgY29weSBvZiBhY2NlcHRlZF9leHRlbnNpb25z
IGFzIGV4dGVuc2lvbnMgZm9yCi0gICAgICAgICAgICAgICAgIyBsb2dpY2FsIGNoYW5uZWxzLgot
ICAgICAgICAgICAgICAgIG11eF9yZXNwb25zZSA9IG11eF9wcm9jZXNzb3IuZ2V0X2V4dGVuc2lv
bl9yZXNwb25zZSgKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5fcmVxdWVzdCwgYWNjZXB0ZWRf
ZXh0ZW5zaW9uc1s6XSkKLSAgICAgICAgICAgICAgICBpZiBtdXhfcmVzcG9uc2UgaXMgbm90IE5v
bmU6Ci0gICAgICAgICAgICAgICAgICAgIGFjY2VwdGVkX2V4dGVuc2lvbnMuYXBwZW5kKG11eF9y
ZXNwb25zZSkKKyAgICAgICAgICAgICAgICBsb2dpY2FsX2NoYW5uZWxfZXh0ZW5zaW9ucyA9IFtd
CisgICAgICAgICAgICAgICAgZm9yIHByb2Nlc3NvciBpbiBwcm9jZXNzb3JzWzptdXhfaW5kZXhd
OgorICAgICAgICAgICAgICAgICAgICBsb2dpY2FsX2NoYW5uZWxfZXh0ZW5zaW9ucy5hcHBlbmQo
cHJvY2Vzc29yLnJlcXVlc3QoKSkKKyAgICAgICAgICAgICAgICAgICAgcHJvY2Vzc29yLnNldF9h
Y3RpdmUoRmFsc2UpCisgICAgICAgICAgICAgICAgc2VsZi5fcmVxdWVzdC5tdXhfcHJvY2Vzc29y
ID0gcHJvY2Vzc29yc1ttdXhfaW5kZXhdCisgICAgICAgICAgICAgICAgc2VsZi5fcmVxdWVzdC5t
dXhfcHJvY2Vzc29yLnNldF9leHRlbnNpb25zKAorICAgICAgICAgICAgICAgICAgICBsb2dpY2Fs
X2NoYW5uZWxfZXh0ZW5zaW9ucykKKyAgICAgICAgICAgICAgICBwcm9jZXNzb3JzID0gZmlsdGVy
KGxhbWJkYSBwcm9jZXNzb3I6IHByb2Nlc3Nvci5pc19hY3RpdmUoKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHByb2Nlc3NvcnMpCiAKICAgICAgICAgICAgIHN0cmVhbV9v
cHRpb25zID0gU3RyZWFtT3B0aW9ucygpCiAKLSAgICAgICAgICAgICMgV2hlbiB0aGVyZSBpcyBt
dXggZXh0ZW5zaW9uLCBoZXJlLCB8cHJvY2Vzc29yc3wgY29udGFpbiBvbmx5Ci0gICAgICAgICAg
ICAjIHByb3Nlc3NvcnMgZm9yIGV4dGVuc2lvbnMgcGxhY2VkIGFmdGVyIG11eC4KLSAgICAgICAg
ICAgIGZvciBwcm9jZXNzb3IgaW4gcHJvY2Vzc29yczoKKyAgICAgICAgICAgIGZvciBpbmRleCwg
cHJvY2Vzc29yIGluIGVudW1lcmF0ZShwcm9jZXNzb3JzKToKKyAgICAgICAgICAgICAgICBpZiBu
b3QgcHJvY2Vzc29yLmlzX2FjdGl2ZSgpOgorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQog
CiAgICAgICAgICAgICAgICAgZXh0ZW5zaW9uX3Jlc3BvbnNlID0gcHJvY2Vzc29yLmdldF9leHRl
bnNpb25fcmVzcG9uc2UoKQogICAgICAgICAgICAgICAgIGlmIGV4dGVuc2lvbl9yZXNwb25zZSBp
cyBOb25lOgpAQCAtMjI3LDYgKzI0NCwxNCBAQCBjbGFzcyBIYW5kc2hha2VyKG9iamVjdCk6CiAK
ICAgICAgICAgICAgICAgICBwcm9jZXNzb3Iuc2V0dXBfc3RyZWFtX29wdGlvbnMoc3RyZWFtX29w
dGlvbnMpCiAKKyAgICAgICAgICAgICAgICBpZiBub3QgaXNfY29tcHJlc3Npb25fZXh0ZW5zaW9u
KHByb2Nlc3Nvci5uYW1lKCkpOgorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorCisgICAg
ICAgICAgICAgICAgIyBJbmFjdGl2YXRlIGFsbCBvZiB0aGUgZm9sbG93aW5nIGNvbXByZXNzaW9u
IGV4dGVuc2lvbnMuCisgICAgICAgICAgICAgICAgZm9yIGogaW4geHJhbmdlKGluZGV4ICsgMSwg
bGVuKHByb2Nlc3NvcnMpKToKKyAgICAgICAgICAgICAgICAgICAgaWYgaXNfY29tcHJlc3Npb25f
ZXh0ZW5zaW9uKHByb2Nlc3NvcnNbal0ubmFtZSgpKToKKyAgICAgICAgICAgICAgICAgICAgICAg
IHByb2Nlc3NvcnNbal0uc2V0X2FjdGl2ZShGYWxzZSkKKwogICAgICAgICAgICAgaWYgbGVuKGFj
Y2VwdGVkX2V4dGVuc2lvbnMpID4gMDoKICAgICAgICAgICAgICAgICBzZWxmLl9yZXF1ZXN0Lndz
X2V4dGVuc2lvbnMgPSBhY2NlcHRlZF9leHRlbnNpb25zCiAgICAgICAgICAgICAgICAgc2VsZi5f
bG9nZ2VyLmRlYnVnKApAQCAtMjQyLDcgKzI2Nyw3IEBAIGNsYXNzIEhhbmRzaGFrZXIob2JqZWN0
KToKICAgICAgICAgICAgICAgICAgICAgcmFpc2UgSGFuZHNoYWtlRXhjZXB0aW9uKAogICAgICAg
ICAgICAgICAgICAgICAgICAgJ2RvX2V4dHJhX2hhbmRzaGFrZSBtdXN0IGNob29zZSBvbmUgc3Vi
cHJvdG9jb2wgZnJvbSAnCiAgICAgICAgICAgICAgICAgICAgICAgICAnd3NfcmVxdWVzdGVkX3By
b3RvY29scyBhbmQgc2V0IGl0IHRvIHdzX3Byb3RvY29sJykKLSAgICAgICAgICAgICAgICB2YWxp
ZGF0ZV9zdWJwcm90b2NvbChzZWxmLl9yZXF1ZXN0LndzX3Byb3RvY29sLCBoaXhpZT1GYWxzZSkK
KyAgICAgICAgICAgICAgICB2YWxpZGF0ZV9zdWJwcm90b2NvbChzZWxmLl9yZXF1ZXN0LndzX3By
b3RvY29sKQogCiAgICAgICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKAogICAgICAgICAg
ICAgICAgICAgICAnU3VicHJvdG9jb2wgYWNjZXB0ZWQ6ICVyJywKQEAgLTM3NSw2ICs0MDAsNyBA
QCBjbGFzcyBIYW5kc2hha2VyKG9iamVjdCk6CiAKICAgICAgICAgcmVzcG9uc2UuYXBwZW5kKCdI
VFRQLzEuMSAxMDEgU3dpdGNoaW5nIFByb3RvY29sc1xyXG4nKQogCisgICAgICAgICMgV2ViU29j
a2V0IGhlYWRlcnMKICAgICAgICAgcmVzcG9uc2UuYXBwZW5kKGZvcm1hdF9oZWFkZXIoCiAgICAg
ICAgICAgICBjb21tb24uVVBHUkFERV9IRUFERVIsIGNvbW1vbi5XRUJTT0NLRVRfVVBHUkFERV9U
WVBFKSkKICAgICAgICAgcmVzcG9uc2UuYXBwZW5kKGZvcm1hdF9oZWFkZXIoCkBAIC0zOTAsNiAr
NDE2LDExIEBAIGNsYXNzIEhhbmRzaGFrZXIob2JqZWN0KToKICAgICAgICAgICAgIHJlc3BvbnNl
LmFwcGVuZChmb3JtYXRfaGVhZGVyKAogICAgICAgICAgICAgICAgIGNvbW1vbi5TRUNfV0VCU09D
S0VUX0VYVEVOU0lPTlNfSEVBREVSLAogICAgICAgICAgICAgICAgIGNvbW1vbi5mb3JtYXRfZXh0
ZW5zaW9ucyhzZWxmLl9yZXF1ZXN0LndzX2V4dGVuc2lvbnMpKSkKKworICAgICAgICAjIEhlYWRl
cnMgbm90IHNwZWNpZmljIGZvciBXZWJTb2NrZXQKKyAgICAgICAgZm9yIG5hbWUsIHZhbHVlIGlu
IHNlbGYuX3JlcXVlc3QuZXh0cmFfaGVhZGVyczoKKyAgICAgICAgICAgIHJlc3BvbnNlLmFwcGVu
ZChmb3JtYXRfaGVhZGVyKG5hbWUsIHZhbHVlKSkKKwogICAgICAgICByZXNwb25zZS5hcHBlbmQo
J1xyXG4nKQogCiAgICAgICAgIHJldHVybiAnJy5qb2luKHJlc3BvbnNlKQpkaWZmIC0tZ2l0IGEv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS90aGlyZHBhcnR5L21vZF9weXdlYnNvY2tldC9oYW5kc2hh
a2UvaHliaTAwLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90aGlyZHBhcnR5L21vZF9weXdl
YnNvY2tldC9oYW5kc2hha2UvaHliaTAwLnB5CmluZGV4IGNjNmY4ZGM0MzZkNTkyZWExZjBlYTNj
MTY0ZDM2MWE1NzY4NWE1ZGYuLjg3NTc3MTdhNjM5YmFjM2RiMDVkNGNiMzAyN2UwNTVmZGJmN2Yz
Y2YgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGhpcmRwYXJ0eS9tb2RfcHl3
ZWJzb2NrZXQvaGFuZHNoYWtlL2h5YmkwMC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L3RoaXJkcGFydHkvbW9kX3B5d2Vic29ja2V0L2hhbmRzaGFrZS9oeWJpMDAucHkKQEAgLTUxLDEx
ICs1MSwxMiBAQCBmcm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQgY29tbW9uCiBmcm9tIG1vZF9w
eXdlYnNvY2tldC5zdHJlYW0gaW1wb3J0IFN0cmVhbUhpeGllNzUKIGZyb20gbW9kX3B5d2Vic29j
a2V0IGltcG9ydCB1dGlsCiBmcm9tIG1vZF9weXdlYnNvY2tldC5oYW5kc2hha2UuX2Jhc2UgaW1w
b3J0IEhhbmRzaGFrZUV4Y2VwdGlvbgotZnJvbSBtb2RfcHl3ZWJzb2NrZXQuaGFuZHNoYWtlLl9i
YXNlIGltcG9ydCBidWlsZF9sb2NhdGlvbgotZnJvbSBtb2RfcHl3ZWJzb2NrZXQuaGFuZHNoYWtl
Ll9iYXNlIGltcG9ydCBjaGVja19oZWFkZXJfbGluZXMKK2Zyb20gbW9kX3B5d2Vic29ja2V0Lmhh
bmRzaGFrZS5fYmFzZSBpbXBvcnQgY2hlY2tfcmVxdWVzdF9saW5lCiBmcm9tIG1vZF9weXdlYnNv
Y2tldC5oYW5kc2hha2UuX2Jhc2UgaW1wb3J0IGZvcm1hdF9oZWFkZXIKK2Zyb20gbW9kX3B5d2Vi
c29ja2V0LmhhbmRzaGFrZS5fYmFzZSBpbXBvcnQgZ2V0X2RlZmF1bHRfcG9ydAogZnJvbSBtb2Rf
cHl3ZWJzb2NrZXQuaGFuZHNoYWtlLl9iYXNlIGltcG9ydCBnZXRfbWFuZGF0b3J5X2hlYWRlcgot
ZnJvbSBtb2RfcHl3ZWJzb2NrZXQuaGFuZHNoYWtlLl9iYXNlIGltcG9ydCB2YWxpZGF0ZV9zdWJw
cm90b2NvbAorZnJvbSBtb2RfcHl3ZWJzb2NrZXQuaGFuZHNoYWtlLl9iYXNlIGltcG9ydCBwYXJz
ZV9ob3N0X2hlYWRlcgorZnJvbSBtb2RfcHl3ZWJzb2NrZXQuaGFuZHNoYWtlLl9iYXNlIGltcG9y
dCB2YWxpZGF0ZV9tYW5kYXRvcnlfaGVhZGVyCiAKIAogX01BTkRBVE9SWV9IRUFERVJTID0gWwpA
QCAtNjUsNiArNjYsNTYgQEAgX01BTkRBVE9SWV9IRUFERVJTID0gWwogXQogCiAKK2RlZiBfdmFs
aWRhdGVfc3VicHJvdG9jb2woc3VicHJvdG9jb2wpOgorICAgICIiIkNoZWNrcyBpZiBjaGFyYWN0
ZXJzIGluIHN1YnByb3RvY29sIGFyZSBpbiByYW5nZSBiZXR3ZWVuIFUrMDAyMCBhbmQKKyAgICBV
KzAwN0UuIEEgdmFsdWUgaW4gdGhlIFNlYy1XZWJTb2NrZXQtUHJvdG9jb2wgZmllbGQgbmVlZCB0
byBzYXRpc2Z5IHRoaXMKKyAgICByZXF1aXJlbWVudC4KKworICAgIFNlZSB0aGUgU2VjdGlvbiA0
LjEuIE9wZW5pbmcgaGFuZHNoYWtlIG9mIHRoZSBzcGVjLgorICAgICIiIgorCisgICAgaWYgbm90
IHN1YnByb3RvY29sOgorICAgICAgICByYWlzZSBIYW5kc2hha2VFeGNlcHRpb24oJ0ludmFsaWQg
c3VicHJvdG9jb2wgbmFtZTogZW1wdHknKQorCisgICAgIyBQYXJhbWV0ZXIgc2hvdWxkIGJlIGlu
IHRoZSByYW5nZSBVKzAwMjAgdG8gVSswMDdFLgorICAgIGZvciBjIGluIHN1YnByb3RvY29sOgor
ICAgICAgICBpZiBub3QgMHgyMCA8PSBvcmQoYykgPD0gMHg3ZToKKyAgICAgICAgICAgIHJhaXNl
IEhhbmRzaGFrZUV4Y2VwdGlvbigKKyAgICAgICAgICAgICAgICAnSWxsZWdhbCBjaGFyYWN0ZXIg
aW4gc3VicHJvdG9jb2wgbmFtZTogJXInICUgYykKKworCitkZWYgX2NoZWNrX2hlYWRlcl9saW5l
cyhyZXF1ZXN0LCBtYW5kYXRvcnlfaGVhZGVycyk6CisgICAgY2hlY2tfcmVxdWVzdF9saW5lKHJl
cXVlc3QpCisKKyAgICAjIFRoZSBleHBlY3RlZCBmaWVsZCBuYW1lcywgYW5kIHRoZSBtZWFuaW5n
IG9mIHRoZWlyIGNvcnJlc3BvbmRpbmcKKyAgICAjIHZhbHVlcywgYXJlIGFzIGZvbGxvd3MuCisg
ICAgIyAgfFVwZ3JhZGV8IGFuZCB8Q29ubmVjdGlvbnwKKyAgICBmb3Iga2V5LCBleHBlY3RlZF92
YWx1ZSBpbiBtYW5kYXRvcnlfaGVhZGVyczoKKyAgICAgICAgdmFsaWRhdGVfbWFuZGF0b3J5X2hl
YWRlcihyZXF1ZXN0LCBrZXksIGV4cGVjdGVkX3ZhbHVlKQorCisKK2RlZiBfYnVpbGRfbG9jYXRp
b24ocmVxdWVzdCk6CisgICAgIiIiQnVpbGQgV2ViU29ja2V0IGxvY2F0aW9uIGZvciByZXF1ZXN0
LiIiIgorCisgICAgbG9jYXRpb25fcGFydHMgPSBbXQorICAgIGlmIHJlcXVlc3QuaXNfaHR0cHMo
KToKKyAgICAgICAgbG9jYXRpb25fcGFydHMuYXBwZW5kKGNvbW1vbi5XRUJfU09DS0VUX1NFQ1VS
RV9TQ0hFTUUpCisgICAgZWxzZToKKyAgICAgICAgbG9jYXRpb25fcGFydHMuYXBwZW5kKGNvbW1v
bi5XRUJfU09DS0VUX1NDSEVNRSkKKyAgICBsb2NhdGlvbl9wYXJ0cy5hcHBlbmQoJzovLycpCisg
ICAgaG9zdCwgcG9ydCA9IHBhcnNlX2hvc3RfaGVhZGVyKHJlcXVlc3QpCisgICAgY29ubmVjdGlv
bl9wb3J0ID0gcmVxdWVzdC5jb25uZWN0aW9uLmxvY2FsX2FkZHJbMV0KKyAgICBpZiBwb3J0ICE9
IGNvbm5lY3Rpb25fcG9ydDoKKyAgICAgICAgcmFpc2UgSGFuZHNoYWtlRXhjZXB0aW9uKCdIZWFk
ZXIvY29ubmVjdGlvbiBwb3J0IG1pc21hdGNoOiAlZC8lZCcgJQorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgKHBvcnQsIGNvbm5lY3Rpb25fcG9ydCkpCisgICAgbG9jYXRpb25fcGFy
dHMuYXBwZW5kKGhvc3QpCisgICAgaWYgKHBvcnQgIT0gZ2V0X2RlZmF1bHRfcG9ydChyZXF1ZXN0
LmlzX2h0dHBzKCkpKToKKyAgICAgICAgbG9jYXRpb25fcGFydHMuYXBwZW5kKCc6JykKKyAgICAg
ICAgbG9jYXRpb25fcGFydHMuYXBwZW5kKHN0cihwb3J0KSkKKyAgICBsb2NhdGlvbl9wYXJ0cy5h
cHBlbmQocmVxdWVzdC51bnBhcnNlZF91cmkpCisgICAgcmV0dXJuICcnLmpvaW4obG9jYXRpb25f
cGFydHMpCisKKwogY2xhc3MgSGFuZHNoYWtlcihvYmplY3QpOgogICAgICIiIk9wZW5pbmcgaGFu
ZHNoYWtlIHByb2Nlc3NvciBmb3IgdGhlIFdlYlNvY2tldCBwcm90b2NvbCB2ZXJzaW9uIEh5Qmkg
MDAuCiAgICAgIiIiCkBAIC0xMDEsNyArMTUyLDcgQEAgY2xhc3MgSGFuZHNoYWtlcihvYmplY3Qp
OgogCiAgICAgICAgICMgNS4xIFJlYWRpbmcgdGhlIGNsaWVudCdzIG9wZW5pbmcgaGFuZHNoYWtl
LgogICAgICAgICAjIGRpc3BhdGNoZXIgc2V0cyBpdCBpbiBzZWxmLl9yZXF1ZXN0LgotICAgICAg
ICBjaGVja19oZWFkZXJfbGluZXMoc2VsZi5fcmVxdWVzdCwgX01BTkRBVE9SWV9IRUFERVJTKQor
ICAgICAgICBfY2hlY2tfaGVhZGVyX2xpbmVzKHNlbGYuX3JlcXVlc3QsIF9NQU5EQVRPUllfSEVB
REVSUykKICAgICAgICAgc2VsZi5fc2V0X3Jlc291cmNlKCkKICAgICAgICAgc2VsZi5fc2V0X3N1
YnByb3RvY29sKCkKICAgICAgICAgc2VsZi5fc2V0X2xvY2F0aW9uKCkKQEAgLTEyMSwxNCArMTcy
LDE0IEBAIGNsYXNzIEhhbmRzaGFrZXIob2JqZWN0KToKICAgICAgICAgc3VicHJvdG9jb2wgPSBz
ZWxmLl9yZXF1ZXN0LmhlYWRlcnNfaW4uZ2V0KAogICAgICAgICAgICAgY29tbW9uLlNFQ19XRUJT
T0NLRVRfUFJPVE9DT0xfSEVBREVSKQogICAgICAgICBpZiBzdWJwcm90b2NvbCBpcyBub3QgTm9u
ZToKLSAgICAgICAgICAgIHZhbGlkYXRlX3N1YnByb3RvY29sKHN1YnByb3RvY29sLCBoaXhpZT1U
cnVlKQorICAgICAgICAgICAgX3ZhbGlkYXRlX3N1YnByb3RvY29sKHN1YnByb3RvY29sKQogICAg
ICAgICBzZWxmLl9yZXF1ZXN0LndzX3Byb3RvY29sID0gc3VicHJvdG9jb2wKIAogICAgIGRlZiBf
c2V0X2xvY2F0aW9uKHNlbGYpOgogICAgICAgICAjIHxIb3N0fAogICAgICAgICBob3N0ID0gc2Vs
Zi5fcmVxdWVzdC5oZWFkZXJzX2luLmdldChjb21tb24uSE9TVF9IRUFERVIpCiAgICAgICAgIGlm
IGhvc3QgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICBzZWxmLl9yZXF1ZXN0LndzX2xvY2F0aW9u
ID0gYnVpbGRfbG9jYXRpb24oc2VsZi5fcmVxdWVzdCkKKyAgICAgICAgICAgIHNlbGYuX3JlcXVl
c3Qud3NfbG9jYXRpb24gPSBfYnVpbGRfbG9jYXRpb24oc2VsZi5fcmVxdWVzdCkKICAgICAgICAg
IyBUT0RPKHVrYWkpOiBjaGVjayBob3N0IGlzIHRoaXMgaG9zdC4KIAogICAgIGRlZiBfc2V0X29y
aWdpbihzZWxmKToKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGhpcmRwYXJ0
eS9tb2RfcHl3ZWJzb2NrZXQvaGVhZGVycGFyc2VyaGFuZGxlci5weSBiL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvdGhpcmRwYXJ0eS9tb2RfcHl3ZWJzb2NrZXQvaGVhZGVycGFyc2VyaGFuZGxlci5w
eQppbmRleCAyY2M2MmRlMDRkODM4NTcxY2ZiZjFiZTA4NGY5NjZmYzI5MjdhYzEwLi5jMjQ0NDIx
Y2Y3OWJjZGQ3MzdkY2I1N2Y5ZjQzMzZiZTBlODRjYTU0IDEwMDY0NAotLS0gYS9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L3RoaXJkcGFydHkvbW9kX3B5d2Vic29ja2V0L2hlYWRlcnBhcnNlcmhhbmRs
ZXIucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90aGlyZHBhcnR5L21vZF9weXdlYnNv
Y2tldC9oZWFkZXJwYXJzZXJoYW5kbGVyLnB5CkBAIC0xNjcsNyArMTY3LDkgQEAgZGVmIF9jcmVh
dGVfZGlzcGF0Y2hlcigpOgogICAgICAgICBoYW5kbGVyX3Jvb3QsIGhhbmRsZXJfc2NhbiwgYWxs
b3dfaGFuZGxlcnNfb3V0c2lkZV9yb290KQogCiAgICAgZm9yIHdhcm5pbmcgaW4gZGlzcGF0Y2hl
ci5zb3VyY2Vfd2FybmluZ3MoKToKLSAgICAgICAgYXBhY2hlLmxvZ19lcnJvcignbW9kX3B5d2Vi
c29ja2V0OiAlcycgJSB3YXJuaW5nLCBhcGFjaGUuQVBMT0dfV0FSTklORykKKyAgICAgICAgYXBh
Y2hlLmxvZ19lcnJvcigKKyAgICAgICAgICAgICdtb2RfcHl3ZWJzb2NrZXQ6IFdhcm5pbmcgaW4g
c291cmNlIGxvYWRpbmc6ICVzJyAlIHdhcm5pbmcsCisgICAgICAgICAgICBhcGFjaGUuQVBMT0df
V0FSTklORykKIAogICAgIHJldHVybiBkaXNwYXRjaGVyCiAKQEAgLTE5MSwxMiArMTkzLDE2IEBA
IGRlZiBoZWFkZXJwYXJzZXJoYW5kbGVyKHJlcXVlc3QpOgogICAgICAgICAjIEZhbGxiYWNrIHRv
IGRlZmF1bHQgaHR0cCBoYW5kbGVyIGZvciByZXF1ZXN0IHBhdGhzIGZvciB3aGljaAogICAgICAg
ICAjIHdlIGRvbid0IGhhdmUgcmVxdWVzdCBoYW5kbGVycy4KICAgICAgICAgaWYgbm90IF9kaXNw
YXRjaGVyLmdldF9oYW5kbGVyX3N1aXRlKHJlcXVlc3QudXJpKToKLSAgICAgICAgICAgIHJlcXVl
c3QubG9nX2Vycm9yKCdObyBoYW5kbGVyIGZvciByZXNvdXJjZTogJXInICUgcmVxdWVzdC51cmks
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcGFjaGUuQVBMT0dfSU5GTykKLSAgICAg
ICAgICAgIHJlcXVlc3QubG9nX2Vycm9yKCdGYWxsYmFjayB0byBBcGFjaGUnLCBhcGFjaGUuQVBM
T0dfSU5GTykKKyAgICAgICAgICAgIHJlcXVlc3QubG9nX2Vycm9yKAorICAgICAgICAgICAgICAg
ICdtb2RfcHl3ZWJzb2NrZXQ6IE5vIGhhbmRsZXIgZm9yIHJlc291cmNlOiAlcicgJSByZXF1ZXN0
LnVyaSwKKyAgICAgICAgICAgICAgICBhcGFjaGUuQVBMT0dfSU5GTykKKyAgICAgICAgICAgIHJl
cXVlc3QubG9nX2Vycm9yKAorICAgICAgICAgICAgICAgICdtb2RfcHl3ZWJzb2NrZXQ6IEZhbGxi
YWNrIHRvIEFwYWNoZScsIGFwYWNoZS5BUExPR19JTkZPKQogICAgICAgICAgICAgcmV0dXJuIGFw
YWNoZS5ERUNMSU5FRAogICAgIGV4Y2VwdCBkaXNwYXRjaC5EaXNwYXRjaEV4Y2VwdGlvbiwgZToK
LSAgICAgICAgcmVxdWVzdC5sb2dfZXJyb3IoJ21vZF9weXdlYnNvY2tldDogJXMnICUgZSwgYXBh
Y2hlLkFQTE9HX0lORk8pCisgICAgICAgIHJlcXVlc3QubG9nX2Vycm9yKAorICAgICAgICAgICAg
J21vZF9weXdlYnNvY2tldDogRGlzcGF0Y2ggZmFpbGVkIGZvciBlcnJvcjogJXMnICUgZSwKKyAg
ICAgICAgICAgIGFwYWNoZS5BUExPR19JTkZPKQogICAgICAgICBpZiBub3QgaGFuZHNoYWtlX2lz
X2RvbmU6CiAgICAgICAgICAgICByZXR1cm4gZS5zdGF0dXMKIApAQCAtMjEwLDI2ICsyMTYsMzAg
QEAgZGVmIGhlYWRlcnBhcnNlcmhhbmRsZXIocmVxdWVzdCk6CiAgICAgICAgICAgICBoYW5kc2hh
a2UuZG9faGFuZHNoYWtlKAogICAgICAgICAgICAgICAgIHJlcXVlc3QsIF9kaXNwYXRjaGVyLCBh
bGxvd0RyYWZ0NzU9YWxsb3dfZHJhZnQ3NSkKICAgICAgICAgZXhjZXB0IGhhbmRzaGFrZS5WZXJz
aW9uRXhjZXB0aW9uLCBlOgotICAgICAgICAgICAgcmVxdWVzdC5sb2dfZXJyb3IoJ21vZF9weXdl
YnNvY2tldDogJXMnICUgZSwgYXBhY2hlLkFQTE9HX0lORk8pCisgICAgICAgICAgICByZXF1ZXN0
LmxvZ19lcnJvcigKKyAgICAgICAgICAgICAgICAnbW9kX3B5d2Vic29ja2V0OiBIYW5kc2hha2Ug
ZmFpbGVkIGZvciB2ZXJzaW9uIGVycm9yOiAlcycgJSBlLAorICAgICAgICAgICAgICAgIGFwYWNo
ZS5BUExPR19JTkZPKQogICAgICAgICAgICAgcmVxdWVzdC5lcnJfaGVhZGVyc19vdXQuYWRkKGNv
bW1vbi5TRUNfV0VCU09DS0VUX1ZFUlNJT05fSEVBREVSLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGUuc3VwcG9ydGVkX3ZlcnNpb25zKQogICAgICAgICAgICAgcmV0
dXJuIGFwYWNoZS5IVFRQX0JBRF9SRVFVRVNUCiAgICAgICAgIGV4Y2VwdCBoYW5kc2hha2UuSGFu
ZHNoYWtlRXhjZXB0aW9uLCBlOgogICAgICAgICAgICAgIyBIYW5kc2hha2UgZm9yIHdzL3dzcyBm
YWlsZWQuCiAgICAgICAgICAgICAjIFNlbmQgaHR0cCByZXNwb25zZSB3aXRoIGVycm9yIHN0YXR1
cy4KLSAgICAgICAgICAgIHJlcXVlc3QubG9nX2Vycm9yKCdtb2RfcHl3ZWJzb2NrZXQ6ICVzJyAl
IGUsIGFwYWNoZS5BUExPR19JTkZPKQorICAgICAgICAgICAgcmVxdWVzdC5sb2dfZXJyb3IoCisg
ICAgICAgICAgICAgICAgJ21vZF9weXdlYnNvY2tldDogSGFuZHNoYWtlIGZhaWxlZCBmb3IgZXJy
b3I6ICVzJyAlIGUsCisgICAgICAgICAgICAgICAgYXBhY2hlLkFQTE9HX0lORk8pCiAgICAgICAg
ICAgICByZXR1cm4gZS5zdGF0dXMKIAogICAgICAgICBoYW5kc2hha2VfaXNfZG9uZSA9IFRydWUK
ICAgICAgICAgcmVxdWVzdC5fZGlzcGF0Y2hlciA9IF9kaXNwYXRjaGVyCiAgICAgICAgIF9kaXNw
YXRjaGVyLnRyYW5zZmVyX2RhdGEocmVxdWVzdCkKICAgICBleGNlcHQgaGFuZHNoYWtlLkFib3J0
ZWRCeVVzZXJFeGNlcHRpb24sIGU6Ci0gICAgICAgIHJlcXVlc3QubG9nX2Vycm9yKCdtb2RfcHl3
ZWJzb2NrZXQ6ICVzJyAlIGUsIGFwYWNoZS5BUExPR19JTkZPKQorICAgICAgICByZXF1ZXN0Lmxv
Z19lcnJvcignbW9kX3B5d2Vic29ja2V0OiBBYm9ydGVkOiAlcycgJSBlLCBhcGFjaGUuQVBMT0df
SU5GTykKICAgICBleGNlcHQgRXhjZXB0aW9uLCBlOgogICAgICAgICAjIERpc3BhdGNoRXhjZXB0
aW9uIGNhbiBhbHNvIGJlIHRocm93biBpZiBzb21ldGhpbmcgaXMgd3JvbmcgaW4KICAgICAgICAg
IyBweXdlYnNvY2tldCBjb2RlLiBJdCdzIGNhdWdodCBoZXJlLCB0aGVuLgogCi0gICAgICAgIHJl
cXVlc3QubG9nX2Vycm9yKCdtb2RfcHl3ZWJzb2NrZXQ6ICVzXG4lcycgJQorICAgICAgICByZXF1
ZXN0LmxvZ19lcnJvcignbW9kX3B5d2Vic29ja2V0OiBFeGNlcHRpb24gb2NjdXJyZWQ6ICVzXG4l
cycgJQogICAgICAgICAgICAgICAgICAgICAgICAgICAoZSwgdXRpbC5nZXRfc3RhY2tfdHJhY2Uo
KSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwYWNoZS5BUExPR19FUlIpCiAgICAgICAg
ICMgVW5rbm93biBleGNlcHRpb25zIGJlZm9yZSBoYW5kc2hha2UgbWVhbiBBcGFjaGUgbXVzdCBo
YW5kbGUgaXRzCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3RoaXJkcGFydHkv
bW9kX3B5d2Vic29ja2V0L211eC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGhpcmRwYXJ0
eS9tb2RfcHl3ZWJzb2NrZXQvbXV4LnB5CmluZGV4IGYwYmRkMjQ2MTljMWJmMTVmOGQxOGFlYmYz
NWZhOTRiN2RiOWQxNmQuLjc2MzM0Njg1YjMxMTIyNWUzODczYjliODI4ZWQwMzFhN2U5MDc4MDIg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGhpcmRwYXJ0eS9tb2RfcHl3ZWJz
b2NrZXQvbXV4LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGhpcmRwYXJ0eS9tb2Rf
cHl3ZWJzb2NrZXQvbXV4LnB5CkBAIC01MCw2ICs1MCw3IEBAIGZyb20gbW9kX3B5d2Vic29ja2V0
IGltcG9ydCBoYW5kc2hha2UKIGZyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCB1dGlsCiBmcm9t
IG1vZF9weXdlYnNvY2tldC5fc3RyZWFtX2Jhc2UgaW1wb3J0IEJhZE9wZXJhdGlvbkV4Y2VwdGlv
bgogZnJvbSBtb2RfcHl3ZWJzb2NrZXQuX3N0cmVhbV9iYXNlIGltcG9ydCBDb25uZWN0aW9uVGVy
bWluYXRlZEV4Y2VwdGlvbgorZnJvbSBtb2RfcHl3ZWJzb2NrZXQuX3N0cmVhbV9iYXNlIGltcG9y
dCBJbnZhbGlkRnJhbWVFeGNlcHRpb24KIGZyb20gbW9kX3B5d2Vic29ja2V0Ll9zdHJlYW1faHli
aSBpbXBvcnQgRnJhbWUKIGZyb20gbW9kX3B5d2Vic29ja2V0Ll9zdHJlYW1faHliaSBpbXBvcnQg
U3RyZWFtCiBmcm9tIG1vZF9weXdlYnNvY2tldC5fc3RyZWFtX2h5YmkgaW1wb3J0IFN0cmVhbU9w
dGlvbnMKQEAgLTk0LDEwICs5NSwxMiBAQCBfRFJPUF9DT0RFX1VOS05PV05fTVVYX09QQ09ERSA9
IDIwMDQKIF9EUk9QX0NPREVfSU5WQUxJRF9NVVhfQ09OVFJPTF9CTE9DSyA9IDIwMDUKIF9EUk9Q
X0NPREVfQ0hBTk5FTF9BTFJFQURZX0VYSVNUUyA9IDIwMDYKIF9EUk9QX0NPREVfTkVXX0NIQU5O
RUxfU0xPVF9WSU9MQVRJT04gPSAyMDA3CitfRFJPUF9DT0RFX1VOS05PV05fUkVRVUVTVF9FTkNP
RElORyA9IDIwMTAKIAotX0RST1BfQ09ERV9VTktOT1dOX1JFUVVFU1RfRU5DT0RJTkcgPSAzMDAy
CiBfRFJPUF9DT0RFX1NFTkRfUVVPVEFfVklPTEFUSU9OID0gMzAwNQorX0RST1BfQ09ERV9TRU5E
X1FVT1RBX09WRVJGTE9XID0gMzAwNgogX0RST1BfQ09ERV9BQ0tOT1dMRURHRUQgPSAzMDA4Citf
RFJPUF9DT0RFX0JBRF9GUkFHTUVOVEFUSU9OID0gMzAwOQogCiAKIGNsYXNzIE11eFVuZXhwZWN0
ZWRFeGNlcHRpb24oRXhjZXB0aW9uKToKQEAgLTE1OCw4ICsxNjEsNyBAQCBkZWYgX2VuY29kZV9u
dW1iZXIobnVtYmVyKToKIAogCiBkZWYgX2NyZWF0ZV9hZGRfY2hhbm5lbF9yZXNwb25zZShjaGFu
bmVsX2lkLCBlbmNvZGVkX2hhbmRzaGFrZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGVuY29kaW5nPTAsIHJlamVjdGVkPUZhbHNlLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgb3V0ZXJfZnJhbWVfbWFzaz1GYWxzZSk6CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBlbmNvZGluZz0wLCByZWplY3RlZD1GYWxzZSk6CiAgICAgaWYgZW5jb2Rpbmcg
IT0gMCBhbmQgZW5jb2RpbmcgIT0gMToKICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignSW52YWxp
ZCBlbmNvZGluZyAlZCcgJSBlbmNvZGluZykKIApAQCAtMTY5LDEyICsxNzEsMTAgQEAgZGVmIF9j
cmVhdGVfYWRkX2NoYW5uZWxfcmVzcG9uc2UoY2hhbm5lbF9pZCwgZW5jb2RlZF9oYW5kc2hha2Us
CiAgICAgICAgICAgICAgX2VuY29kZV9jaGFubmVsX2lkKGNoYW5uZWxfaWQpICsKICAgICAgICAg
ICAgICBfZW5jb2RlX251bWJlcihsZW4oZW5jb2RlZF9oYW5kc2hha2UpKSArCiAgICAgICAgICAg
ICAgZW5jb2RlZF9oYW5kc2hha2UpCi0gICAgcGF5bG9hZCA9IF9lbmNvZGVfY2hhbm5lbF9pZChf
Q09OVFJPTF9DSEFOTkVMX0lEKSArIGJsb2NrCi0gICAgcmV0dXJuIGNyZWF0ZV9iaW5hcnlfZnJh
bWUocGF5bG9hZCwgbWFzaz1vdXRlcl9mcmFtZV9tYXNrKQorICAgIHJldHVybiBibG9jawogCiAK
LWRlZiBfY3JlYXRlX2Ryb3BfY2hhbm5lbChjaGFubmVsX2lkLCBjb2RlPU5vbmUsIG1lc3NhZ2U9
JycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgb3V0ZXJfZnJhbWVfbWFzaz1GYWxzZSk6Citk
ZWYgX2NyZWF0ZV9kcm9wX2NoYW5uZWwoY2hhbm5lbF9pZCwgY29kZT1Ob25lLCBtZXNzYWdlPScn
KToKICAgICBpZiBsZW4obWVzc2FnZSkgPiAwIGFuZCBjb2RlIGlzIE5vbmU6CiAgICAgICAgIHJh
aXNlIFZhbHVlRXJyb3IoJ0NvZGUgbXVzdCBiZSBzcGVjaWZpZWQgaWYgbWVzc2FnZSBpcyBzcGVj
aWZpZWQnKQogCkBAIC0xODcsMzYgKzE4NywzMSBAQCBkZWYgX2NyZWF0ZV9kcm9wX2NoYW5uZWwo
Y2hhbm5lbF9pZCwgY29kZT1Ob25lLCBtZXNzYWdlPScnLAogICAgICAgICByZWFzb25fc2l6ZSA9
IF9lbmNvZGVfbnVtYmVyKGxlbihyZWFzb24pKQogICAgICAgICBibG9jayArPSByZWFzb25fc2l6
ZSArIHJlYXNvbgogCi0gICAgcGF5bG9hZCA9IF9lbmNvZGVfY2hhbm5lbF9pZChfQ09OVFJPTF9D
SEFOTkVMX0lEKSArIGJsb2NrCi0gICAgcmV0dXJuIGNyZWF0ZV9iaW5hcnlfZnJhbWUocGF5bG9h
ZCwgbWFzaz1vdXRlcl9mcmFtZV9tYXNrKQorICAgIHJldHVybiBibG9jawogCiAKLWRlZiBfY3Jl
YXRlX2Zsb3dfY29udHJvbChjaGFubmVsX2lkLCByZXBsZW5pc2hlZF9xdW90YSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICBvdXRlcl9mcmFtZV9tYXNrPUZhbHNlKToKK2RlZiBfY3JlYXRlX2Zs
b3dfY29udHJvbChjaGFubmVsX2lkLCByZXBsZW5pc2hlZF9xdW90YSk6CiAgICAgZmlyc3RfYnl0
ZSA9IF9NVVhfT1BDT0RFX0ZMT1dfQ09OVFJPTCA8PCA1CiAgICAgYmxvY2sgPSAoY2hyKGZpcnN0
X2J5dGUpICsKICAgICAgICAgICAgICBfZW5jb2RlX2NoYW5uZWxfaWQoY2hhbm5lbF9pZCkgKwog
ICAgICAgICAgICAgIF9lbmNvZGVfbnVtYmVyKHJlcGxlbmlzaGVkX3F1b3RhKSkKLSAgICBwYXls
b2FkID0gX2VuY29kZV9jaGFubmVsX2lkKF9DT05UUk9MX0NIQU5ORUxfSUQpICsgYmxvY2sKLSAg
ICByZXR1cm4gY3JlYXRlX2JpbmFyeV9mcmFtZShwYXlsb2FkLCBtYXNrPW91dGVyX2ZyYW1lX21h
c2spCisgICAgcmV0dXJuIGJsb2NrCiAKIAotZGVmIF9jcmVhdGVfbmV3X2NoYW5uZWxfc2xvdChz
bG90cywgc2VuZF9xdW90YSwgb3V0ZXJfZnJhbWVfbWFzaz1GYWxzZSk6CitkZWYgX2NyZWF0ZV9u
ZXdfY2hhbm5lbF9zbG90KHNsb3RzLCBzZW5kX3F1b3RhKToKICAgICBpZiBzbG90cyA8IDAgb3Ig
c2VuZF9xdW90YSA8IDA6CiAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ3Nsb3RzIGFuZCBzZW5k
X3F1b3RhIG11c3QgYmUgbm9uLW5lZ2F0aXZlLicpCiAgICAgZmlyc3RfYnl0ZSA9IF9NVVhfT1BD
T0RFX05FV19DSEFOTkVMX1NMT1QgPDwgNQogICAgIGJsb2NrID0gKGNocihmaXJzdF9ieXRlKSAr
CiAgICAgICAgICAgICAgX2VuY29kZV9udW1iZXIoc2xvdHMpICsKICAgICAgICAgICAgICBfZW5j
b2RlX251bWJlcihzZW5kX3F1b3RhKSkKLSAgICBwYXlsb2FkID0gX2VuY29kZV9jaGFubmVsX2lk
KF9DT05UUk9MX0NIQU5ORUxfSUQpICsgYmxvY2sKLSAgICByZXR1cm4gY3JlYXRlX2JpbmFyeV9m
cmFtZShwYXlsb2FkLCBtYXNrPW91dGVyX2ZyYW1lX21hc2spCisgICAgcmV0dXJuIGJsb2NrCiAK
IAotZGVmIF9jcmVhdGVfZmFsbGJhY2tfbmV3X2NoYW5uZWxfc2xvdChvdXRlcl9mcmFtZV9tYXNr
PUZhbHNlKToKK2RlZiBfY3JlYXRlX2ZhbGxiYWNrX25ld19jaGFubmVsX3Nsb3QoKToKICAgICBm
aXJzdF9ieXRlID0gKF9NVVhfT1BDT0RFX05FV19DSEFOTkVMX1NMT1QgPDwgNSkgfCAxICMgU2V0
IHRoZSBGIGZsYWcKICAgICBibG9jayA9IChjaHIoZmlyc3RfYnl0ZSkgKyBfZW5jb2RlX251bWJl
cigwKSArIF9lbmNvZGVfbnVtYmVyKDApKQotICAgIHBheWxvYWQgPSBfZW5jb2RlX2NoYW5uZWxf
aWQoX0NPTlRST0xfQ0hBTk5FTF9JRCkgKyBibG9jawotICAgIHJldHVybiBjcmVhdGVfYmluYXJ5
X2ZyYW1lKHBheWxvYWQsIG1hc2s9b3V0ZXJfZnJhbWVfbWFzaykKKyAgICByZXR1cm4gYmxvY2sK
IAogCiBkZWYgX3BhcnNlX3JlcXVlc3RfdGV4dChyZXF1ZXN0X3RleHQpOgpAQCAtMzE4LDQ0ICsz
MTMsMzQgQEAgY2xhc3MgX011eEZyYW1lUGF5bG9hZFBhcnNlcihvYmplY3QpOgogCiAgICAgZGVm
IF9yZWFkX251bWJlcihzZWxmKToKICAgICAgICAgaWYgc2VsZi5fcmVhZF9wb3NpdGlvbiArIDEg
PiBsZW4oc2VsZi5fZGF0YSk6Ci0gICAgICAgICAgICByYWlzZSBQaHlzaWNhbENvbm5lY3Rpb25F
cnJvcigKLSAgICAgICAgICAgICAgICBfRFJPUF9DT0RFX0lOVkFMSURfTVVYX0NPTlRST0xfQkxP
Q0ssCisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKAogICAgICAgICAgICAgICAgICdDYW5u
b3QgcmVhZCB0aGUgZmlyc3QgYnl0ZSBvZiBudW1iZXIgZmllbGQnKQogCiAgICAgICAgIG51bWJl
ciA9IG9yZChzZWxmLl9kYXRhW3NlbGYuX3JlYWRfcG9zaXRpb25dKQogICAgICAgICBpZiBudW1i
ZXIgJiAweDgwID09IDB4ODA6Ci0gICAgICAgICAgICByYWlzZSBQaHlzaWNhbENvbm5lY3Rpb25F
cnJvcigKLSAgICAgICAgICAgICAgICBfRFJPUF9DT0RFX0lOVkFMSURfTVVYX0NPTlRST0xfQkxP
Q0ssCisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKAogICAgICAgICAgICAgICAgICdUaGUg
bW9zdCBzaWduaWZpY2FudCBiaXQgb2YgdGhlIGZpcnN0IGJ5dGUgb2YgbnVtYmVyIHNob3VsZCAn
CiAgICAgICAgICAgICAgICAgJ2JlIHVuc2V0JykKICAgICAgICAgc2VsZi5fcmVhZF9wb3NpdGlv
biArPSAxCiAgICAgICAgIHBvcyA9IHNlbGYuX3JlYWRfcG9zaXRpb24KICAgICAgICAgaWYgbnVt
YmVyID09IDEyNzoKICAgICAgICAgICAgIGlmIHBvcyArIDggPiBsZW4oc2VsZi5fZGF0YSk6Ci0g
ICAgICAgICAgICAgICAgcmFpc2UgUGh5c2ljYWxDb25uZWN0aW9uRXJyb3IoCi0gICAgICAgICAg
ICAgICAgICAgIF9EUk9QX0NPREVfSU5WQUxJRF9NVVhfQ09OVFJPTF9CTE9DSywKLSAgICAgICAg
ICAgICAgICAgICAgJ0ludmFsaWQgbnVtYmVyIGZpZWxkJykKKyAgICAgICAgICAgICAgICByYWlz
ZSBWYWx1ZUVycm9yKCdJbnZhbGlkIG51bWJlciBmaWVsZCcpCiAgICAgICAgICAgICBzZWxmLl9y
ZWFkX3Bvc2l0aW9uICs9IDgKICAgICAgICAgICAgIG51bWJlciA9IHN0cnVjdC51bnBhY2soJyFR
Jywgc2VsZi5fZGF0YVtwb3M6cG9zKzhdKVswXQogICAgICAgICAgICAgaWYgbnVtYmVyID4gMHg3
RkZGRkZGRkZGRkZGRkZGOgotICAgICAgICAgICAgICAgIHJhaXNlIFBoeXNpY2FsQ29ubmVjdGlv
bkVycm9yKAotICAgICAgICAgICAgICAgICAgICBfRFJPUF9DT0RFX0lOVkFMSURfTVVYX0NPTlRS
T0xfQkxPQ0ssCi0gICAgICAgICAgICAgICAgICAgICdFbmNvZGVkIG51bWJlciA+PSAyXjYzJykK
KyAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdFbmNvZGVkIG51bWJlciglZCkgPj0g
Ml42MycgJSBudW1iZXIpCiAgICAgICAgICAgICBpZiBudW1iZXIgPD0gMHhGRkZGOgotICAgICAg
ICAgICAgICAgIHJhaXNlIFBoeXNpY2FsQ29ubmVjdGlvbkVycm9yKAotICAgICAgICAgICAgICAg
ICAgICBfRFJPUF9DT0RFX0lOVkFMSURfTVVYX0NPTlRST0xfQkxPQ0ssCisgICAgICAgICAgICAg
ICAgcmFpc2UgVmFsdWVFcnJvcigKICAgICAgICAgICAgICAgICAgICAgJyVkIHNob3VsZCBub3Qg
YmUgZW5jb2RlZCBieSA5IGJ5dGVzIGVuY29kaW5nJyAlIG51bWJlcikKICAgICAgICAgICAgIHJl
dHVybiBudW1iZXIKICAgICAgICAgaWYgbnVtYmVyID09IDEyNjoKICAgICAgICAgICAgIGlmIHBv
cyArIDIgPiBsZW4oc2VsZi5fZGF0YSk6Ci0gICAgICAgICAgICAgICAgcmFpc2UgUGh5c2ljYWxD
b25uZWN0aW9uRXJyb3IoCi0gICAgICAgICAgICAgICAgICAgIF9EUk9QX0NPREVfSU5WQUxJRF9N
VVhfQ09OVFJPTF9CTE9DSywKLSAgICAgICAgICAgICAgICAgICAgJ0ludmFsaWQgbnVtYmVyIGZp
ZWxkJykKKyAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdJbnZhbGlkIG51bWJlciBm
aWVsZCcpCiAgICAgICAgICAgICBzZWxmLl9yZWFkX3Bvc2l0aW9uICs9IDIKICAgICAgICAgICAg
IG51bWJlciA9IHN0cnVjdC51bnBhY2soJyFIJywgc2VsZi5fZGF0YVtwb3M6cG9zKzJdKVswXQog
ICAgICAgICAgICAgaWYgbnVtYmVyIDw9IDEyNToKLSAgICAgICAgICAgICAgICByYWlzZSBQaHlz
aWNhbENvbm5lY3Rpb25FcnJvcigKLSAgICAgICAgICAgICAgICAgICAgX0RST1BfQ09ERV9JTlZB
TElEX01VWF9DT05UUk9MX0JMT0NLLAorICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3Io
CiAgICAgICAgICAgICAgICAgICAgICclZCBzaG91bGQgbm90IGJlIGVuY29kZWQgYnkgMyBieXRl
cyBlbmNvZGluZycgJSBudW1iZXIpCiAgICAgICAgIHJldHVybiBudW1iZXIKIApAQCAtMzY2LDcg
KzM1MSwxMSBAQCBjbGFzcyBfTXV4RnJhbWVQYXlsb2FkUGFyc2VyKG9iamVjdCk6CiAgICAgICAg
ICAgICAtIHRoZSBjb250ZW50cy4KICAgICAgICAgIiIiCiAKLSAgICAgICAgc2l6ZSA9IHNlbGYu
X3JlYWRfbnVtYmVyKCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2l6ZSA9IHNlbGYuX3Jl
YWRfbnVtYmVyKCkKKyAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3IsIGU6CisgICAgICAgICAgICBy
YWlzZSBQaHlzaWNhbENvbm5lY3Rpb25FcnJvcihfRFJPUF9DT0RFX0lOVkFMSURfTVVYX0NPTlRS
T0xfQkxPQ0ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHIo
ZSkpCiAgICAgICAgIHBvcyA9IHNlbGYuX3JlYWRfcG9zaXRpb24KICAgICAgICAgaWYgcG9zICsg
c2l6ZSA+IGxlbihzZWxmLl9kYXRhKToKICAgICAgICAgICAgIHJhaXNlIFBoeXNpY2FsQ29ubmVj
dGlvbkVycm9yKApAQCAtNDE5LDkgKzQwOCwxMSBAQCBjbGFzcyBfTXV4RnJhbWVQYXlsb2FkUGFy
c2VyKG9iamVjdCk6CiAKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgY29udHJvbF9ibG9jay5j
aGFubmVsX2lkID0gc2VsZi5yZWFkX2NoYW5uZWxfaWQoKQorICAgICAgICAgICAgY29udHJvbF9i
bG9jay5zZW5kX3F1b3RhID0gc2VsZi5fcmVhZF9udW1iZXIoKQogICAgICAgICBleGNlcHQgVmFs
dWVFcnJvciwgZToKLSAgICAgICAgICAgIHJhaXNlIFBoeXNpY2FsQ29ubmVjdGlvbkVycm9yKF9E
Uk9QX0NPREVfSU5WQUxJRF9NVVhfQ09OVFJPTF9CTE9DSykKLSAgICAgICAgY29udHJvbF9ibG9j
ay5zZW5kX3F1b3RhID0gc2VsZi5fcmVhZF9udW1iZXIoKQorICAgICAgICAgICAgcmFpc2UgUGh5
c2ljYWxDb25uZWN0aW9uRXJyb3IoX0RST1BfQ09ERV9JTlZBTElEX01VWF9DT05UUk9MX0JMT0NL
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyKGUpKQorCiAg
ICAgICAgIHJldHVybiBjb250cm9sX2Jsb2NrCiAKICAgICBkZWYgX3JlYWRfZHJvcF9jaGFubmVs
KHNlbGYsIGZpcnN0X2J5dGUsIGNvbnRyb2xfYmxvY2spOgpAQCAtNDU1LDggKzQ0NiwxMiBAQCBj
bGFzcyBfTXV4RnJhbWVQYXlsb2FkUGFyc2VyKG9iamVjdCk6CiAgICAgICAgICAgICAgICAgX0RS
T1BfQ09ERV9JTlZBTElEX01VWF9DT05UUk9MX0JMT0NLLAogICAgICAgICAgICAgICAgICdSZXNl
cnZlZCBiaXRzIG11c3QgYmUgdW5zZXQnKQogICAgICAgICBjb250cm9sX2Jsb2NrLmZhbGxiYWNr
ID0gZmlyc3RfYnl0ZSAmIDEKLSAgICAgICAgY29udHJvbF9ibG9jay5zbG90cyA9IHNlbGYuX3Jl
YWRfbnVtYmVyKCkKLSAgICAgICAgY29udHJvbF9ibG9jay5zZW5kX3F1b3RhID0gc2VsZi5fcmVh
ZF9udW1iZXIoKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBjb250cm9sX2Jsb2NrLnNsb3Rz
ID0gc2VsZi5fcmVhZF9udW1iZXIoKQorICAgICAgICAgICAgY29udHJvbF9ibG9jay5zZW5kX3F1
b3RhID0gc2VsZi5fcmVhZF9udW1iZXIoKQorICAgICAgICBleGNlcHQgVmFsdWVFcnJvciwgZToK
KyAgICAgICAgICAgIHJhaXNlIFBoeXNpY2FsQ29ubmVjdGlvbkVycm9yKF9EUk9QX0NPREVfSU5W
QUxJRF9NVVhfQ09OVFJPTF9CTE9DSywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHN0cihlKSkKICAgICAgICAgcmV0dXJuIGNvbnRyb2xfYmxvY2sKIAogICAgIGRl
ZiByZWFkX2NvbnRyb2xfYmxvY2tzKHNlbGYpOgpAQCAtNTQ5LDggKzU0NCwxMiBAQCBjbGFzcyBf
TG9naWNhbENvbm5lY3Rpb24ob2JqZWN0KToKICAgICAgICAgc2VsZi5fbXV4X2hhbmRsZXIgPSBt
dXhfaGFuZGxlcgogICAgICAgICBzZWxmLl9jaGFubmVsX2lkID0gY2hhbm5lbF9pZAogICAgICAg
ICBzZWxmLl9pbmNvbWluZ19kYXRhID0gJycKKworICAgICAgICAjIC0gUHJvdGVjdHMgX3dhaXRp
bmdfd3JpdGVfY29tcGxldGlvbgorICAgICAgICAjIC0gU2lnbmFscyB0aGUgdGhyZWFkIHdhaXRp
bmcgZm9yIGNvbXBsZXRpb24gb2Ygd3JpdGUgYnkgbXV4IGhhbmRsZXIKICAgICAgICAgc2VsZi5f
d3JpdGVfY29uZGl0aW9uID0gdGhyZWFkaW5nLkNvbmRpdGlvbigpCiAgICAgICAgIHNlbGYuX3dh
aXRpbmdfd3JpdGVfY29tcGxldGlvbiA9IEZhbHNlCisKICAgICAgICAgc2VsZi5fcmVhZF9jb25k
aXRpb24gPSB0aHJlYWRpbmcuQ29uZGl0aW9uKCkKICAgICAgICAgc2VsZi5fcmVhZF9zdGF0ZSA9
IHNlbGYuU1RBVEVfQUNUSVZFCiAKQEAgLTU5NCw2ICs1OTMsNyBAQCBjbGFzcyBfTG9naWNhbENv
bm5lY3Rpb24ob2JqZWN0KToKICAgICAgICAgICAgIHNlbGYuX3dhaXRpbmdfd3JpdGVfY29tcGxl
dGlvbiA9IFRydWUKICAgICAgICAgICAgIHNlbGYuX211eF9oYW5kbGVyLnNlbmRfZGF0YShzZWxm
Ll9jaGFubmVsX2lkLCBkYXRhKQogICAgICAgICAgICAgc2VsZi5fd3JpdGVfY29uZGl0aW9uLndh
aXQoKQorICAgICAgICAgICAgIyBUT0RPKHR5b3NoaW5vKTogUmFpc2UgYW4gZXhjZXB0aW9uIGlm
IHdva2UgdXAgYnkgb25fd3JpdGVyX2RvbmUuCiAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAg
ICBzZWxmLl93cml0ZV9jb25kaXRpb24ucmVsZWFzZSgpCiAKQEAgLTYwNywyMCArNjA3LDMxIEBA
IGNsYXNzIF9Mb2dpY2FsQ29ubmVjdGlvbihvYmplY3QpOgogCiAgICAgICAgIHNlbGYuX211eF9o
YW5kbGVyLnNlbmRfY29udHJvbF9kYXRhKGRhdGEpCiAKLSAgICBkZWYgbm90aWZ5X3dyaXRlX2Rv
bmUoc2VsZik6CisgICAgZGVmIG9uX3dyaXRlX2RhdGFfZG9uZShzZWxmKToKICAgICAgICAgIiIi
Q2FsbGVkIHdoZW4gc2VuZGluZyBkYXRhIGlzIGNvbXBsZXRlZC4iIiIKIAogICAgICAgICB0cnk6
CiAgICAgICAgICAgICBzZWxmLl93cml0ZV9jb25kaXRpb24uYWNxdWlyZSgpCiAgICAgICAgICAg
ICBpZiBub3Qgc2VsZi5fd2FpdGluZ193cml0ZV9jb21wbGV0aW9uOgogICAgICAgICAgICAgICAg
IHJhaXNlIE11eFVuZXhwZWN0ZWRFeGNlcHRpb24oCi0gICAgICAgICAgICAgICAgICAgICdJbnZh
bGlkIGNhbGwgb2Ygbm90aWZ5X3dyaXRlX2RvbmUgZm9yIGxvZ2ljYWwgY29ubmVjdGlvbicKLSAg
ICAgICAgICAgICAgICAgICAgJyAlZCcgJSBzZWxmLl9jaGFubmVsX2lkKQorICAgICAgICAgICAg
ICAgICAgICAnSW52YWxpZCBjYWxsIG9mIG9uX3dyaXRlX2RhdGFfZG9uZSBmb3IgbG9naWNhbCAn
CisgICAgICAgICAgICAgICAgICAgICdjb25uZWN0aW9uICVkJyAlIHNlbGYuX2NoYW5uZWxfaWQp
CisgICAgICAgICAgICBzZWxmLl93YWl0aW5nX3dyaXRlX2NvbXBsZXRpb24gPSBGYWxzZQorICAg
ICAgICAgICAgc2VsZi5fd3JpdGVfY29uZGl0aW9uLm5vdGlmeSgpCisgICAgICAgIGZpbmFsbHk6
CisgICAgICAgICAgICBzZWxmLl93cml0ZV9jb25kaXRpb24ucmVsZWFzZSgpCisKKyAgICBkZWYg
b25fd3JpdGVyX2RvbmUoc2VsZik6CisgICAgICAgICIiIkNhbGxlZCBieSB0aGUgbXV4IGhhbmRs
ZXIgd2hlbiB0aGUgd3JpdGVyIHRocmVhZCBoYXMgZmluaXNoZWQuIiIiCisKKyAgICAgICAgdHJ5
OgorICAgICAgICAgICAgc2VsZi5fd3JpdGVfY29uZGl0aW9uLmFjcXVpcmUoKQogICAgICAgICAg
ICAgc2VsZi5fd2FpdGluZ193cml0ZV9jb21wbGV0aW9uID0gRmFsc2UKICAgICAgICAgICAgIHNl
bGYuX3dyaXRlX2NvbmRpdGlvbi5ub3RpZnkoKQogICAgICAgICBmaW5hbGx5OgogICAgICAgICAg
ICAgc2VsZi5fd3JpdGVfY29uZGl0aW9uLnJlbGVhc2UoKQogCisKICAgICBkZWYgYXBwZW5kX2Zy
YW1lX2RhdGEoc2VsZiwgZnJhbWVfZGF0YSk6CiAgICAgICAgICIiIkFwcGVuZHMgaW5jb21pbmcg
ZnJhbWUgZGF0YS4gQ2FsbGVkIHdoZW4gbXV4X2hhbmRsZXIgZGlzcGF0Y2hlcwogICAgICAgICBm
cmFtZSBkYXRhIHRvIHRoZSBjb3JyZXNwb25kaW5nIGFwcGxpY2F0aW9uLgpAQCAtNjg2LDM3ICs2
OTcsMTYyIEBAIGNsYXNzIF9Mb2dpY2FsQ29ubmVjdGlvbihvYmplY3QpOgogICAgICAgICBzZWxm
Ll9yZWFkX2NvbmRpdGlvbi5yZWxlYXNlKCkKIAogCitjbGFzcyBfSW5uZXJNZXNzYWdlKG9iamVj
dCk6CisgICAgIiIiSG9sZHMgdGhlIHJlc3VsdCBvZiBfSW5uZXJNZXNzYWdlQnVpbGRlci5idWls
ZCgpLgorICAgICIiIgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIG9wY29kZSwgcGF5bG9hZCk6
CisgICAgICAgIHNlbGYub3Bjb2RlID0gb3Bjb2RlCisgICAgICAgIHNlbGYucGF5bG9hZCA9IHBh
eWxvYWQKKworCitjbGFzcyBfSW5uZXJNZXNzYWdlQnVpbGRlcihvYmplY3QpOgorICAgICIiIkEg
Y2xhc3MgdGhhdCBob2xkcyB0aGUgY29udGV4dCBvZiBpbm5lciBtZXNzYWdlIGZyYWdtZW50YXRp
b24gYW5kCisgICAgYnVpbGRzIGEgbWVzc2FnZSBmcm9tIGZyYWdtZW50ZWQgaW5uZXIgZnJhbWUo
cykuCisgICAgIiIiCisKKyAgICBkZWYgX19pbml0X18oc2VsZik6CisgICAgICAgIHNlbGYuX2Nv
bnRyb2xfb3Bjb2RlID0gTm9uZQorICAgICAgICBzZWxmLl9wZW5kaW5nX2NvbnRyb2xfZnJhZ21l
bnRzID0gW10KKyAgICAgICAgc2VsZi5fbWVzc2FnZV9vcGNvZGUgPSBOb25lCisgICAgICAgIHNl
bGYuX3BlbmRpbmdfbWVzc2FnZV9mcmFnbWVudHMgPSBbXQorICAgICAgICBzZWxmLl9mcmFtZV9o
YW5kbGVyID0gc2VsZi5faGFuZGxlX2ZpcnN0CisKKyAgICBkZWYgX2hhbmRsZV9maXJzdChzZWxm
LCBmcmFtZSk6CisgICAgICAgIGlmIGZyYW1lLm9wY29kZSA9PSBjb21tb24uT1BDT0RFX0NPTlRJ
TlVBVElPTjoKKyAgICAgICAgICAgIHJhaXNlIEludmFsaWRGcmFtZUV4Y2VwdGlvbignU2VuZGlu
ZyBpbnZhbGlkIGNvbnRpbnVhdGlvbiBvcGNvZGUnKQorCisgICAgICAgIGlmIGNvbW1vbi5pc19j
b250cm9sX29wY29kZShmcmFtZS5vcGNvZGUpOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3By
b2Nlc3NfZmlyc3RfZnJhZ21lbnRlZF9jb250cm9sKGZyYW1lKQorICAgICAgICBlbHNlOgorICAg
ICAgICAgICAgcmV0dXJuIHNlbGYuX3Byb2Nlc3NfZmlyc3RfZnJhZ21lbnRlZF9tZXNzYWdlKGZy
YW1lKQorCisgICAgZGVmIF9wcm9jZXNzX2ZpcnN0X2ZyYWdtZW50ZWRfY29udHJvbChzZWxmLCBm
cmFtZSk6CisgICAgICAgIHNlbGYuX2NvbnRyb2xfb3Bjb2RlID0gZnJhbWUub3Bjb2RlCisgICAg
ICAgIHNlbGYuX3BlbmRpbmdfY29udHJvbF9mcmFnbWVudHMuYXBwZW5kKGZyYW1lLnBheWxvYWQp
CisgICAgICAgIGlmIG5vdCBmcmFtZS5maW46CisgICAgICAgICAgICBzZWxmLl9mcmFtZV9oYW5k
bGVyID0gc2VsZi5faGFuZGxlX2ZyYWdtZW50ZWRfY29udHJvbAorICAgICAgICAgICAgcmV0dXJu
IE5vbmUKKyAgICAgICAgcmV0dXJuIHNlbGYuX3JlYXNzZW1ibGVfZnJhZ21lbnRlZF9jb250cm9s
KCkKKworICAgIGRlZiBfcHJvY2Vzc19maXJzdF9mcmFnbWVudGVkX21lc3NhZ2Uoc2VsZiwgZnJh
bWUpOgorICAgICAgICBzZWxmLl9tZXNzYWdlX29wY29kZSA9IGZyYW1lLm9wY29kZQorICAgICAg
ICBzZWxmLl9wZW5kaW5nX21lc3NhZ2VfZnJhZ21lbnRzLmFwcGVuZChmcmFtZS5wYXlsb2FkKQor
ICAgICAgICBpZiBub3QgZnJhbWUuZmluOgorICAgICAgICAgICAgc2VsZi5fZnJhbWVfaGFuZGxl
ciA9IHNlbGYuX2hhbmRsZV9mcmFnbWVudGVkX21lc3NhZ2UKKyAgICAgICAgICAgIHJldHVybiBO
b25lCisgICAgICAgIHJldHVybiBzZWxmLl9yZWFzc2VtYmxlX2ZyYWdtZW50ZWRfbWVzc2FnZSgp
CisKKyAgICBkZWYgX2hhbmRsZV9mcmFnbWVudGVkX2NvbnRyb2woc2VsZiwgZnJhbWUpOgorICAg
ICAgICBpZiBmcmFtZS5vcGNvZGUgIT0gY29tbW9uLk9QQ09ERV9DT05USU5VQVRJT046CisgICAg
ICAgICAgICByYWlzZSBJbnZhbGlkRnJhbWVFeGNlcHRpb24oCisgICAgICAgICAgICAgICAgJ1Nl
bmRpbmcgaW52YWxpZCBvcGNvZGUgJWQgd2hpbGUgc2VuZGluZyBmcmFnbWVudGVkIGNvbnRyb2wg
JworICAgICAgICAgICAgICAgICdtZXNzYWdlJyAlIGZyYW1lLm9wY29kZSkKKyAgICAgICAgc2Vs
Zi5fcGVuZGluZ19jb250cm9sX2ZyYWdtZW50cy5hcHBlbmQoZnJhbWUucGF5bG9hZCkKKyAgICAg
ICAgaWYgbm90IGZyYW1lLmZpbjoKKyAgICAgICAgICAgIHJldHVybiBOb25lCisgICAgICAgIHJl
dHVybiBzZWxmLl9yZWFzc2VtYmxlX2ZyYWdtZW50ZWRfY29udHJvbCgpCisKKyAgICBkZWYgX3Jl
YXNzZW1ibGVfZnJhZ21lbnRlZF9jb250cm9sKHNlbGYpOgorICAgICAgICBvcGNvZGUgPSBzZWxm
Ll9jb250cm9sX29wY29kZQorICAgICAgICBwYXlsb2FkID0gJycuam9pbihzZWxmLl9wZW5kaW5n
X2NvbnRyb2xfZnJhZ21lbnRzKQorICAgICAgICBzZWxmLl9jb250cm9sX29wY29kZSA9IE5vbmUK
KyAgICAgICAgc2VsZi5fcGVuZGluZ19jb250cm9sX2ZyYWdtZW50cyA9IFtdCisgICAgICAgIGlm
IHNlbGYuX21lc3NhZ2Vfb3Bjb2RlIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgc2VsZi5fZnJh
bWVfaGFuZGxlciA9IHNlbGYuX2hhbmRsZV9mcmFnbWVudGVkX21lc3NhZ2UKKyAgICAgICAgZWxz
ZToKKyAgICAgICAgICAgIHNlbGYuX2ZyYW1lX2hhbmRsZXIgPSBzZWxmLl9oYW5kbGVfZmlyc3QK
KyAgICAgICAgcmV0dXJuIF9Jbm5lck1lc3NhZ2Uob3Bjb2RlLCBwYXlsb2FkKQorCisgICAgZGVm
IF9oYW5kbGVfZnJhZ21lbnRlZF9tZXNzYWdlKHNlbGYsIGZyYW1lKToKKyAgICAgICAgIyBTZW5k
ZXIgY2FuIGludGVybGVhdmUgYSBjb250cm9sIG1lc3NhZ2Ugd2hpbGUgc2VuZGluZyBmcmFnbWVu
dGVkCisgICAgICAgICMgbWVzc2FnZXMuCisgICAgICAgIGlmIGNvbW1vbi5pc19jb250cm9sX29w
Y29kZShmcmFtZS5vcGNvZGUpOgorICAgICAgICAgICAgaWYgc2VsZi5fY29udHJvbF9vcGNvZGUg
aXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgcmFpc2UgTXV4VW5leHBlY3RlZEV4Y2VwdGlv
bigKKyAgICAgICAgICAgICAgICAgICAgJ1Nob3VsZCBub3QgcmVhY2ggaGVyZShCdWcgaW4gYnVp
bGRlciknKQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3Byb2Nlc3NfZmlyc3RfZnJhZ21lbnRl
ZF9jb250cm9sKGZyYW1lKQorCisgICAgICAgIGlmIGZyYW1lLm9wY29kZSAhPSBjb21tb24uT1BD
T0RFX0NPTlRJTlVBVElPTjoKKyAgICAgICAgICAgIHJhaXNlIEludmFsaWRGcmFtZUV4Y2VwdGlv
bigKKyAgICAgICAgICAgICAgICAnU2VuZGluZyBpbnZhbGlkIG9wY29kZSAlZCB3aGlsZSBzZW5k
aW5nIGZyYWdtZW50ZWQgbWVzc2FnZScgJQorICAgICAgICAgICAgICAgIGZyYW1lLm9wY29kZSkK
KyAgICAgICAgc2VsZi5fcGVuZGluZ19tZXNzYWdlX2ZyYWdtZW50cy5hcHBlbmQoZnJhbWUucGF5
bG9hZCkKKyAgICAgICAgaWYgbm90IGZyYW1lLmZpbjoKKyAgICAgICAgICAgIHJldHVybiBOb25l
CisgICAgICAgIHJldHVybiBzZWxmLl9yZWFzc2VtYmxlX2ZyYWdtZW50ZWRfbWVzc2FnZSgpCisK
KyAgICBkZWYgX3JlYXNzZW1ibGVfZnJhZ21lbnRlZF9tZXNzYWdlKHNlbGYpOgorICAgICAgICBv
cGNvZGUgPSBzZWxmLl9tZXNzYWdlX29wY29kZQorICAgICAgICBwYXlsb2FkID0gJycuam9pbihz
ZWxmLl9wZW5kaW5nX21lc3NhZ2VfZnJhZ21lbnRzKQorICAgICAgICBzZWxmLl9tZXNzYWdlX29w
Y29kZSA9IE5vbmUKKyAgICAgICAgc2VsZi5fcGVuZGluZ19tZXNzYWdlX2ZyYWdtZW50cyA9IFtd
CisgICAgICAgIHNlbGYuX2ZyYW1lX2hhbmRsZXIgPSBzZWxmLl9oYW5kbGVfZmlyc3QKKyAgICAg
ICAgcmV0dXJuIF9Jbm5lck1lc3NhZ2Uob3Bjb2RlLCBwYXlsb2FkKQorCisgICAgZGVmIGJ1aWxk
KHNlbGYsIGZyYW1lKToKKyAgICAgICAgIiIiQnVpbGQgYW4gaW5uZXIgbWVzc2FnZS4gUmV0dXJu
cyBhbiBfSW5uZXJNZXNzYWdlIGluc3RhbmNlIHdoZW4KKyAgICAgICAgdGhlIGdpdmVuIGZyYW1l
IGlzIHRoZSBsYXN0IGZyYWdtZW50ZWQgZnJhbWUuIFJldHVybnMgTm9uZSBvdGhlcndpc2UuCisK
KyAgICAgICAgQXJnczoKKyAgICAgICAgICAgIGZyYW1lOiBhbiBpbm5lciBmcmFtZS4KKyAgICAg
ICAgUmFpc2VzOgorICAgICAgICAgICAgSW52YWxpZEZyYW1lRXhjZXB0aW9uOiB3aGVuIHJlY2Vp
dmVkIGludmFsaWQgb3Bjb2RlLiAoZS5nLgorICAgICAgICAgICAgICAgIHJlY2VpdmluZyBub24g
Y29udGludWF0aW9uIGRhdGEgb3Bjb2RlIGJ1dCB0aGUgZmluIGZsYWcgb2YKKyAgICAgICAgICAg
ICAgICB0aGUgcHJldmlvdXMgaW5uZXIgZnJhbWUgd2FzIG5vdCBzZXQuKQorICAgICAgICAiIiIK
KworICAgICAgICByZXR1cm4gc2VsZi5fZnJhbWVfaGFuZGxlcihmcmFtZSkKKworCiBjbGFzcyBf
TG9naWNhbFN0cmVhbShTdHJlYW0pOgogICAgICIiIk1pbWljcyB0aGUgU3RyZWFtIGNsYXNzLiBU
aGlzIGNsYXNzIGludGVycHJldHMgbXVsdGlwbGV4ZWQgV2ViU29ja2V0CiAgICAgZnJhbWVzLgog
ICAgICIiIgogCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHJlcXVlc3QsIHNlbmRfcXVvdGEsIHJl
Y2VpdmVfcXVvdGEpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCByZXF1ZXN0LCBzdHJlYW1fb3B0
aW9ucywgc2VuZF9xdW90YSwgcmVjZWl2ZV9xdW90YSk6CiAgICAgICAgICIiIkNvbnN0cnVjdHMg
YW4gaW5zdGFuY2UuCiAKICAgICAgICAgQXJnczoKICAgICAgICAgICAgIHJlcXVlc3Q6IF9Mb2dp
Y2FsUmVxdWVzdCBpbnN0YW5jZS4KKyAgICAgICAgICAgIHN0cmVhbV9vcHRpb25zOiBTdHJlYW1P
cHRpb25zIGluc3RhbmNlLgogICAgICAgICAgICAgc2VuZF9xdW90YTogSW5pdGlhbCBzZW5kIHF1
b3RhLgogICAgICAgICAgICAgcmVjZWl2ZV9xdW90YTogSW5pdGlhbCByZWNlaXZlIHF1b3RhLgog
ICAgICAgICAiIiIKIAotICAgICAgICAjIFRPRE8oYmFzaGkpOiBTdXBwb3J0IGZyYW1lIGZpbHRl
cnMuCi0gICAgICAgIHN0cmVhbV9vcHRpb25zID0gU3RyZWFtT3B0aW9ucygpCiAgICAgICAgICMg
UGh5c2ljYWwgc3RyZWFtIGlzIHJlc3BvbnNpYmxlIGZvciBtYXNraW5nLgogICAgICAgICBzdHJl
YW1fb3B0aW9ucy51bm1hc2tfcmVjZWl2ZSA9IEZhbHNlCi0gICAgICAgICMgQ29udHJvbCBmcmFt
ZXMgY2FuIGJlIGZyYWdtZW50ZWQgb24gbG9naWNhbCBjaGFubmVsLgotICAgICAgICBzdHJlYW1f
b3B0aW9ucy5hbGxvd19mcmFnbWVudGVkX2NvbnRyb2xfZnJhbWUgPSBUcnVlCiAgICAgICAgIFN0
cmVhbS5fX2luaXRfXyhzZWxmLCByZXF1ZXN0LCBzdHJlYW1fb3B0aW9ucykKKworICAgICAgICBz
ZWxmLl9zZW5kX2Nsb3NlZCA9IEZhbHNlCiAgICAgICAgIHNlbGYuX3NlbmRfcXVvdGEgPSBzZW5k
X3F1b3RhCi0gICAgICAgIHNlbGYuX3NlbmRfcXVvdGFfY29uZGl0aW9uID0gdGhyZWFkaW5nLkNv
bmRpdGlvbigpCisgICAgICAgICMgLSBQcm90ZWN0cyBfc2VuZF9jbG9zZWQgYW5kIF9zZW5kX3F1
b3RhCisgICAgICAgICMgLSBTaWduYWxzIHRoZSB0aHJlYWQgd2FpdGluZyBmb3Igc2VuZCBxdW90
YSByZXBsZW5pc2hlZAorICAgICAgICBzZWxmLl9zZW5kX2NvbmRpdGlvbiA9IHRocmVhZGluZy5D
b25kaXRpb24oKQorCisgICAgICAgICMgVGhlIG9wY29kZSBvZiB0aGUgZmlyc3QgZnJhbWUgaW4g
bWVzc2FnZXMuCisgICAgICAgIHNlbGYuX21lc3NhZ2Vfb3Bjb2RlID0gY29tbW9uLk9QQ09ERV9U
RVhUCisgICAgICAgICMgVHJ1ZSB3aGVuIHRoZSBsYXN0IG1lc3NhZ2Ugd2FzIGZyYWdtZW50ZWQu
CisgICAgICAgIHNlbGYuX2xhc3RfbWVzc2FnZV93YXNfZnJhZ21lbnRlZCA9IEZhbHNlCisKICAg
ICAgICAgc2VsZi5fcmVjZWl2ZV9xdW90YSA9IHJlY2VpdmVfcXVvdGEKICAgICAgICAgc2VsZi5f
d3JpdGVfaW5uZXJfZnJhbWVfc2VtYXBob3JlID0gdGhyZWFkaW5nLlNlbWFwaG9yZSgpCiAKKyAg
ICAgICAgc2VsZi5faW5uZXJfbWVzc2FnZV9idWlsZGVyID0gX0lubmVyTWVzc2FnZUJ1aWxkZXIo
KQorCiAgICAgZGVmIF9jcmVhdGVfaW5uZXJfZnJhbWUoc2VsZiwgb3Bjb2RlLCBwYXlsb2FkLCBl
bmQ9VHJ1ZSk6Ci0gICAgICAgICMgVE9ETyhiYXNoaSk6IFN1cHBvcnQgZXh0ZW5zaW9ucyB0aGF0
IHVzZSByZXNlcnZlZCBiaXRzLgotICAgICAgICBmaXJzdF9ieXRlID0gKGVuZCA8PCA3KSB8IG9w
Y29kZQotICAgICAgICByZXR1cm4gKF9lbmNvZGVfY2hhbm5lbF9pZChzZWxmLl9yZXF1ZXN0LmNo
YW5uZWxfaWQpICsKLSAgICAgICAgICAgICAgICBjaHIoZmlyc3RfYnl0ZSkgKyBwYXlsb2FkKQor
ICAgICAgICBmcmFtZSA9IEZyYW1lKGZpbj1lbmQsIG9wY29kZT1vcGNvZGUsIHBheWxvYWQ9cGF5
bG9hZCkKKyAgICAgICAgZm9yIGZyYW1lX2ZpbHRlciBpbiBzZWxmLl9vcHRpb25zLm91dGdvaW5n
X2ZyYW1lX2ZpbHRlcnM6CisgICAgICAgICAgICBmcmFtZV9maWx0ZXIuZmlsdGVyKGZyYW1lKQor
CisgICAgICAgIGlmIGxlbihwYXlsb2FkKSAhPSBsZW4oZnJhbWUucGF5bG9hZCk6CisgICAgICAg
ICAgICByYWlzZSBNdXhVbmV4cGVjdGVkRXhjZXB0aW9uKAorICAgICAgICAgICAgICAgICdNdXgg
ZXh0ZW5zaW9uIG11c3Qgbm90IGJlIHVzZWQgYWZ0ZXIgZXh0ZW5zaW9ucyB3aGljaCBjaGFuZ2Ug
JworICAgICAgICAgICAgICAgICcgZnJhbWUgYm91bmRhcnknKQorCisgICAgICAgIGZpcnN0X2J5
dGUgPSAoKGZyYW1lLmZpbiA8PCA3KSB8IChmcmFtZS5yc3YxIDw8IDYpIHwKKyAgICAgICAgICAg
ICAgICAgICAgICAoZnJhbWUucnN2MiA8PCA1KSB8IChmcmFtZS5yc3YzIDw8IDQpIHwgZnJhbWUu
b3Bjb2RlKQorICAgICAgICByZXR1cm4gY2hyKGZpcnN0X2J5dGUpICsgZnJhbWUucGF5bG9hZAog
CiAgICAgZGVmIF93cml0ZV9pbm5lcl9mcmFtZShzZWxmLCBvcGNvZGUsIHBheWxvYWQsIGVuZD1U
cnVlKToKICAgICAgICAgcGF5bG9hZF9sZW5ndGggPSBsZW4ocGF5bG9hZCkKQEAgLTczMCwxNCAr
ODY2LDM2IEBAIGNsYXNzIF9Mb2dpY2FsU3RyZWFtKFN0cmVhbSk6CiAgICAgICAgICAgICAjIG11
bHRpcGxleGluZyBjb250cm9sIGJsb2NrcyBjYW4gYmUgaW5zZXJ0ZWQgYmV0d2VlbiBmcmFnbWVu
dGVkCiAgICAgICAgICAgICAjIGlubmVyIGZyYW1lcyBvbiB0aGUgcGh5c2ljYWwgY2hhbm5lbC4K
ICAgICAgICAgICAgIHNlbGYuX3dyaXRlX2lubmVyX2ZyYW1lX3NlbWFwaG9yZS5hY3F1aXJlKCkK
KworICAgICAgICAgICAgIyBDb25zdW1lIGFuIG9jdGV0IHF1b3RhIHdoZW4gdGhpcyBpcyB0aGUg
Zmlyc3QgZnJhZ21lbnRlZCBmcmFtZS4KKyAgICAgICAgICAgIGlmIG9wY29kZSAhPSBjb21tb24u
T1BDT0RFX0NPTlRJTlVBVElPTjoKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAg
ICAgICAgIHNlbGYuX3NlbmRfY29uZGl0aW9uLmFjcXVpcmUoKQorICAgICAgICAgICAgICAgICAg
ICB3aGlsZSAobm90IHNlbGYuX3NlbmRfY2xvc2VkKSBhbmQgc2VsZi5fc2VuZF9xdW90YSA9PSAw
OgorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fc2VuZF9jb25kaXRpb24ud2FpdCgpCisK
KyAgICAgICAgICAgICAgICAgICAgaWYgc2VsZi5fc2VuZF9jbG9zZWQ6CisgICAgICAgICAgICAg
ICAgICAgICAgICByYWlzZSBCYWRPcGVyYXRpb25FeGNlcHRpb24oCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJ0xvZ2ljYWwgY29ubmVjdGlvbiAlZCBpcyBjbG9zZWQnICUKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzZWxmLl9yZXF1ZXN0LmNoYW5uZWxfaWQpCisKKyAgICAgICAg
ICAgICAgICAgICAgc2VsZi5fc2VuZF9xdW90YSAtPSAxCisgICAgICAgICAgICAgICAgZmluYWxs
eToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fc2VuZF9jb25kaXRpb24ucmVsZWFzZSgpCisK
ICAgICAgICAgICAgIHdoaWxlIHdyaXRlX3Bvc2l0aW9uIDwgcGF5bG9hZF9sZW5ndGg6CiAgICAg
ICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICBzZWxmLl9zZW5kX3F1b3RhX2Nv
bmRpdGlvbi5hY3F1aXJlKCkKLSAgICAgICAgICAgICAgICAgICAgd2hpbGUgc2VsZi5fc2VuZF9x
dW90YSA9PSAwOgorICAgICAgICAgICAgICAgICAgICBzZWxmLl9zZW5kX2NvbmRpdGlvbi5hY3F1
aXJlKCkKKyAgICAgICAgICAgICAgICAgICAgd2hpbGUgKG5vdCBzZWxmLl9zZW5kX2Nsb3NlZCkg
YW5kIHNlbGYuX3NlbmRfcXVvdGEgPT0gMDoKICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYu
X2xvZ2dlci5kZWJ1ZygKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnTm8gcXVvdGEuIFdh
aXRpbmcgRmxvd0NvbnRyb2wgbWVzc2FnZSBmb3IgJWQuJyAlCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc2VsZi5fcmVxdWVzdC5jaGFubmVsX2lkKQotICAgICAgICAgICAgICAgICAgICAg
ICAgc2VsZi5fc2VuZF9xdW90YV9jb25kaXRpb24ud2FpdCgpCisgICAgICAgICAgICAgICAgICAg
ICAgICBzZWxmLl9zZW5kX2NvbmRpdGlvbi53YWl0KCkKKworICAgICAgICAgICAgICAgICAgICBp
ZiBzZWxmLl9zZW5kX2Nsb3NlZDoKKyAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIEJhZE9w
ZXJhdGlvbkV4Y2VwdGlvbigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnTG9naWNhbCBj
b25uZWN0aW9uICVkIGlzIGNsb3NlZCcgJQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNl
bGYucmVxdWVzdC5fY2hhbm5lbF9pZCkKIAogICAgICAgICAgICAgICAgICAgICByZW1haW5pbmcg
PSBwYXlsb2FkX2xlbmd0aCAtIHdyaXRlX3Bvc2l0aW9uCiAgICAgICAgICAgICAgICAgICAgIHdy
aXRlX2xlbmd0aCA9IG1pbihzZWxmLl9zZW5kX3F1b3RhLCByZW1haW5pbmcpCkBAIC03NDksMTgg
KzkwNywxNiBAQCBjbGFzcyBfTG9naWNhbFN0cmVhbShTdHJlYW0pOgogICAgICAgICAgICAgICAg
ICAgICAgICAgb3Bjb2RlLAogICAgICAgICAgICAgICAgICAgICAgICAgcGF5bG9hZFt3cml0ZV9w
b3NpdGlvbjp3cml0ZV9wb3NpdGlvbit3cml0ZV9sZW5ndGhdLAogICAgICAgICAgICAgICAgICAg
ICAgICAgaW5uZXJfZnJhbWVfZW5kKQotICAgICAgICAgICAgICAgICAgICBmcmFtZV9kYXRhID0g
c2VsZi5fd3JpdGVyLmJ1aWxkKAotICAgICAgICAgICAgICAgICAgICAgICAgaW5uZXJfZnJhbWUs
IGVuZD1UcnVlLCBiaW5hcnk9VHJ1ZSkKICAgICAgICAgICAgICAgICAgICAgc2VsZi5fc2VuZF9x
dW90YSAtPSB3cml0ZV9sZW5ndGgKICAgICAgICAgICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmRl
YnVnKCdDb25zdW1lZCBxdW90YT0lZCwgcmVtYWluaW5nPSVkJyAlCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAod3JpdGVfbGVuZ3RoLCBzZWxmLl9zZW5kX3F1b3RhKSkK
ICAgICAgICAgICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgICAgICAgICBzZWxmLl9zZW5k
X3F1b3RhX2NvbmRpdGlvbi5yZWxlYXNlKCkKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fc2Vu
ZF9jb25kaXRpb24ucmVsZWFzZSgpCiAKICAgICAgICAgICAgICAgICAjIFdyaXRpbmcgZGF0YSB3
aWxsIGJsb2NrIHRoZSB3b3JrZXIgc28gd2UgbmVlZCB0byByZWxlYXNlCi0gICAgICAgICAgICAg
ICAgIyBfc2VuZF9xdW90YV9jb25kaXRpb24gYmVmb3JlIHdyaXRpbmcuCi0gICAgICAgICAgICAg
ICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdTZW5kaW5nIGlubmVyIGZyYW1lOiAlcicgJSBmcmFtZV9k
YXRhKQotICAgICAgICAgICAgICAgIHNlbGYuX3JlcXVlc3QuY29ubmVjdGlvbi53cml0ZShmcmFt
ZV9kYXRhKQorICAgICAgICAgICAgICAgICMgX3NlbmRfY29uZGl0aW9uIGJlZm9yZSB3cml0aW5n
LgorICAgICAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygnU2VuZGluZyBpbm5lciBmcmFt
ZTogJXInICUgaW5uZXJfZnJhbWUpCisgICAgICAgICAgICAgICAgc2VsZi5fcmVxdWVzdC5jb25u
ZWN0aW9uLndyaXRlKGlubmVyX2ZyYW1lKQogICAgICAgICAgICAgICAgIHdyaXRlX3Bvc2l0aW9u
ICs9IHdyaXRlX2xlbmd0aAogCiAgICAgICAgICAgICAgICAgb3Bjb2RlID0gY29tbW9uLk9QQ09E
RV9DT05USU5VQVRJT04KQEAgLTc3MywxMiArOTI5LDE4IEBAIGNsYXNzIF9Mb2dpY2FsU3RyZWFt
KFN0cmVhbSk6CiAgICAgZGVmIHJlcGxlbmlzaF9zZW5kX3F1b3RhKHNlbGYsIHNlbmRfcXVvdGEp
OgogICAgICAgICAiIiJSZXBsZW5pc2ggc2VuZCBxdW90YS4iIiIKIAotICAgICAgICBzZWxmLl9z
ZW5kX3F1b3RhX2NvbmRpdGlvbi5hY3F1aXJlKCkKLSAgICAgICAgc2VsZi5fc2VuZF9xdW90YSAr
PSBzZW5kX3F1b3RhCi0gICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygnUmVwbGVuaXNoZWQgc2Vu
ZCBxdW90YSBmb3IgY2hhbm5lbCBpZCAlZDogJWQnICUKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgIChzZWxmLl9yZXF1ZXN0LmNoYW5uZWxfaWQsIHNlbGYuX3NlbmRfcXVvdGEpKQotICAgICAg
ICBzZWxmLl9zZW5kX3F1b3RhX2NvbmRpdGlvbi5ub3RpZnkoKQotICAgICAgICBzZWxmLl9zZW5k
X3F1b3RhX2NvbmRpdGlvbi5yZWxlYXNlKCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2Vs
Zi5fc2VuZF9jb25kaXRpb24uYWNxdWlyZSgpCisgICAgICAgICAgICBpZiBzZWxmLl9zZW5kX3F1
b3RhICsgc2VuZF9xdW90YSA+IDB4N0ZGRkZGRkZGRkZGRkZGRjoKKyAgICAgICAgICAgICAgICBz
ZWxmLl9zZW5kX3F1b3RhID0gMAorICAgICAgICAgICAgICAgIHJhaXNlIExvZ2ljYWxDaGFubmVs
RXJyb3IoCisgICAgICAgICAgICAgICAgICAgIHNlbGYuX3JlcXVlc3QuY2hhbm5lbF9pZCwgX0RS
T1BfQ09ERV9TRU5EX1FVT1RBX09WRVJGTE9XKQorICAgICAgICAgICAgc2VsZi5fc2VuZF9xdW90
YSArPSBzZW5kX3F1b3RhCisgICAgICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJ1JlcGxlbmlz
aGVkIHNlbmQgcXVvdGEgZm9yIGNoYW5uZWwgaWQgJWQ6ICVkJyAlCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgKHNlbGYuX3JlcXVlc3QuY2hhbm5lbF9pZCwgc2VsZi5fc2VuZF9xdW90
YSkpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBzZWxmLl9zZW5kX2NvbmRpdGlvbi5u
b3RpZnkoKQorICAgICAgICAgICAgc2VsZi5fc2VuZF9jb25kaXRpb24ucmVsZWFzZSgpCiAKICAg
ICBkZWYgY29uc3VtZV9yZWNlaXZlX3F1b3RhKHNlbGYsIGFtb3VudCk6CiAgICAgICAgICIiIkNv
bnN1bWVzIHJlY2VpdmUgcXVvdGEuIFJldHVybnMgRmFsc2Ugb24gZmFpbHVyZS4iIiIKQEAgLTgw
OCw3ICs5NzAsMTkgQEAgY2xhc3MgX0xvZ2ljYWxTdHJlYW0oU3RyZWFtKToKICAgICAgICAgICAg
IG9wY29kZSA9IGNvbW1vbi5PUENPREVfVEVYVAogICAgICAgICAgICAgbWVzc2FnZSA9IG1lc3Nh
Z2UuZW5jb2RlKCd1dGYtOCcpCiAKKyAgICAgICAgZm9yIG1lc3NhZ2VfZmlsdGVyIGluIHNlbGYu
X29wdGlvbnMub3V0Z29pbmdfbWVzc2FnZV9maWx0ZXJzOgorICAgICAgICAgICAgbWVzc2FnZSA9
IG1lc3NhZ2VfZmlsdGVyLmZpbHRlcihtZXNzYWdlLCBlbmQsIGJpbmFyeSkKKworICAgICAgICBp
ZiBzZWxmLl9sYXN0X21lc3NhZ2Vfd2FzX2ZyYWdtZW50ZWQ6CisgICAgICAgICAgICBpZiBvcGNv
ZGUgIT0gc2VsZi5fbWVzc2FnZV9vcGNvZGU6CisgICAgICAgICAgICAgICAgcmFpc2UgQmFkT3Bl
cmF0aW9uRXhjZXB0aW9uKCdNZXNzYWdlIHR5cGVzIGFyZSBkaWZmZXJlbnQgaW4gJworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZnJhbWVzIGZvciB0aGUgc2Ft
ZSBtZXNzYWdlJykKKyAgICAgICAgICAgIG9wY29kZSA9IGNvbW1vbi5PUENPREVfQ09OVElOVUFU
SU9OCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLl9tZXNzYWdlX29wY29kZSA9IG9w
Y29kZQorCiAgICAgICAgIHNlbGYuX3dyaXRlX2lubmVyX2ZyYW1lKG9wY29kZSwgbWVzc2FnZSwg
ZW5kKQorICAgICAgICBzZWxmLl9sYXN0X21lc3NhZ2Vfd2FzX2ZyYWdtZW50ZWQgPSBub3QgZW5k
CiAKICAgICBkZWYgX3JlY2VpdmVfZnJhbWUoc2VsZik6CiAgICAgICAgICIiIk92ZXJyaWRlcyBT
dHJlYW0uX3JlY2VpdmVfZnJhbWUuCkBAIC04MjEsNiArOTk1LDkgQEAgY2xhc3MgX0xvZ2ljYWxT
dHJlYW0oU3RyZWFtKToKIAogICAgICAgICBvcGNvZGUsIHBheWxvYWQsIGZpbiwgcnN2MSwgcnN2
MiwgcnN2MyA9IFN0cmVhbS5fcmVjZWl2ZV9mcmFtZShzZWxmKQogICAgICAgICBhbW91bnQgPSBs
ZW4ocGF5bG9hZCkKKyAgICAgICAgIyBSZXBsZW5pc2ggZXh0cmEgb25lIG9jdGV0IHdoZW4gcmVj
ZWl2aW5nIHRoZSBmaXJzdCBmcmFnbWVudGVkIGZyYW1lLgorICAgICAgICBpZiBvcGNvZGUgIT0g
Y29tbW9uLk9QQ09ERV9DT05USU5VQVRJT046CisgICAgICAgICAgICBhbW91bnQgKz0gMQogICAg
ICAgICBzZWxmLl9yZWNlaXZlX3F1b3RhICs9IGFtb3VudAogICAgICAgICBmcmFtZV9kYXRhID0g
X2NyZWF0ZV9mbG93X2NvbnRyb2woc2VsZi5fcmVxdWVzdC5jaGFubmVsX2lkLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW1vdW50KQpAQCAtODI5LDYgKzEwMDYs
MjEgQEAgY2xhc3MgX0xvZ2ljYWxTdHJlYW0oU3RyZWFtKToKICAgICAgICAgc2VsZi5fcmVxdWVz
dC5jb25uZWN0aW9uLndyaXRlX2NvbnRyb2xfZGF0YShmcmFtZV9kYXRhKQogICAgICAgICByZXR1
cm4gb3Bjb2RlLCBwYXlsb2FkLCBmaW4sIHJzdjEsIHJzdjIsIHJzdjMKIAorICAgIGRlZiBfZ2V0
X21lc3NhZ2VfZnJvbV9mcmFtZShzZWxmLCBmcmFtZSk6CisgICAgICAgICIiIk92ZXJyaWRlcyBT
dHJlYW0uX2dldF9tZXNzYWdlX2Zyb21fZnJhbWUuCisgICAgICAgICIiIgorCisgICAgICAgIHRy
eToKKyAgICAgICAgICAgIGlubmVyX21lc3NhZ2UgPSBzZWxmLl9pbm5lcl9tZXNzYWdlX2J1aWxk
ZXIuYnVpbGQoZnJhbWUpCisgICAgICAgIGV4Y2VwdCBJbnZhbGlkRnJhbWVFeGNlcHRpb246Cisg
ICAgICAgICAgICByYWlzZSBMb2dpY2FsQ2hhbm5lbEVycm9yKAorICAgICAgICAgICAgICAgIHNl
bGYuX3JlcXVlc3QuY2hhbm5lbF9pZCwgX0RST1BfQ09ERV9CQURfRlJBR01FTlRBVElPTikKKwor
ICAgICAgICBpZiBpbm5lcl9tZXNzYWdlIGlzIE5vbmU6CisgICAgICAgICAgICByZXR1cm4gTm9u
ZQorICAgICAgICBzZWxmLl9vcmlnaW5hbF9vcGNvZGUgPSBpbm5lcl9tZXNzYWdlLm9wY29kZQor
ICAgICAgICByZXR1cm4gaW5uZXJfbWVzc2FnZS5wYXlsb2FkCisKICAgICBkZWYgcmVjZWl2ZV9t
ZXNzYWdlKHNlbGYpOgogICAgICAgICAiIiJPdmVycmlkZXMgU3RyZWFtLnJlY2VpdmVfbWVzc2Fn
ZS4iIiIKIApAQCAtODc1LDEyICsxMDY3LDEzIEBAIGNsYXNzIF9Mb2dpY2FsU3RyZWFtKFN0cmVh
bSk6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9yZXF1ZXN0LmNoYW5uZWxfaWQp
CiAgICAgICAgIHNlbGYuX3JlcXVlc3Quc2VydmVyX3Rlcm1pbmF0ZWQgPSBUcnVlCiAKLSAgICBk
ZWYgX2RyYWluX3JlY2VpdmVkX2RhdGEoc2VsZik6Ci0gICAgICAgICIiIk92ZXJyaWRlcyBTdHJl
YW0uX2RyYWluX3JlY2VpdmVkX2RhdGEuIE5vdGhpbmcgbmVlZCB0byBiZSBkb25lIGZvcgotICAg
ICAgICBsb2dpY2FsIGNoYW5uZWwuCi0gICAgICAgICIiIgorICAgIGRlZiBzdG9wX3NlbmRpbmco
c2VsZik6CisgICAgICAgICIiIlN0b3BzIGFjY2VwdGluZyBuZXcgc2VuZCBvcGVyYXRpb24gKF93
cml0ZV9pbm5lcl9mcmFtZSkuIiIiCiAKLSAgICAgICAgcGFzcworICAgICAgICBzZWxmLl9zZW5k
X2NvbmRpdGlvbi5hY3F1aXJlKCkKKyAgICAgICAgc2VsZi5fc2VuZF9jbG9zZWQgPSBUcnVlCisg
ICAgICAgIHNlbGYuX3NlbmRfY29uZGl0aW9uLm5vdGlmeSgpCisgICAgICAgIHNlbGYuX3NlbmRf
Y29uZGl0aW9uLnJlbGVhc2UoKQogCiAKIGNsYXNzIF9PdXRnb2luZ0RhdGEob2JqZWN0KToKQEAg
LTkxMSw4ICsxMTA0LDE3IEBAIGNsYXNzIF9QaHlzaWNhbENvbm5lY3Rpb25Xcml0ZXIodGhyZWFk
aW5nLlRocmVhZCk6CiAgICAgICAgIHNlbGYuX2xvZ2dlciA9IHV0aWwuZ2V0X2NsYXNzX2xvZ2dl
cihzZWxmKQogICAgICAgICBzZWxmLl9tdXhfaGFuZGxlciA9IG11eF9oYW5kbGVyCiAgICAgICAg
IHNlbGYuc2V0RGFlbW9uKFRydWUpCisKKyAgICAgICAgIyBXaGVuIHNldCwgbWFrZSB0aGlzIHRo
cmVhZCBzdG9wIGFjY2VwdGluZyBuZXcgZGF0YSwgZmx1c2ggcGVuZGluZworICAgICAgICAjIGRh
dGEgYW5kIGV4aXQuCiAgICAgICAgIHNlbGYuX3N0b3BfcmVxdWVzdGVkID0gRmFsc2UKKyAgICAg
ICAgIyBUaGUgY2xvc2UgY29kZSBvZiB0aGUgcGh5c2ljYWwgY29ubmVjdGlvbi4KKyAgICAgICAg
c2VsZi5fY2xvc2VfY29kZSA9IGNvbW1vbi5TVEFUVVNfTk9STUFMX0NMT1NVUkUKKyAgICAgICAg
IyBEZXF1ZSBmb3IgcGFzc2luZyB3cml0ZSBkYXRhLiBJdCdzIHByb3RlY3RlZCBieSBfZGVxdWVf
Y29uZGl0aW9uCisgICAgICAgICMgdW50aWwgX3N0b3BfcmVxdWVzdGVkIGlzIHNldC4KICAgICAg
ICAgc2VsZi5fZGVxdWUgPSBjb2xsZWN0aW9ucy5kZXF1ZSgpCisgICAgICAgICMgLSBQcm90ZWN0
cyBfZGVxdWUsIF9zdG9wX3JlcXVlc3RlZCBhbmQgX2Nsb3NlX2NvZGUKKyAgICAgICAgIyAtIFNp
Z25hbHMgdGhyZWFkcyB3YWl0aW5nIGZvciB0aGVtIHRvIGJlIGF2YWlsYWJsZQogICAgICAgICBz
ZWxmLl9kZXF1ZV9jb25kaXRpb24gPSB0aHJlYWRpbmcuQ29uZGl0aW9uKCkKIAogICAgIGRlZiBw
dXRfb3V0Z29pbmdfZGF0YShzZWxmLCBkYXRhKToKQEAgLTkzNyw4ICsxMTM5LDExIEBAIGNsYXNz
IF9QaHlzaWNhbENvbm5lY3Rpb25Xcml0ZXIodGhyZWFkaW5nLlRocmVhZCk6CiAgICAgICAgICAg
ICBzZWxmLl9kZXF1ZV9jb25kaXRpb24ucmVsZWFzZSgpCiAKICAgICBkZWYgX3dyaXRlX2RhdGEo
c2VsZiwgb3V0Z29pbmdfZGF0YSk6CisgICAgICAgIG1lc3NhZ2UgPSAoX2VuY29kZV9jaGFubmVs
X2lkKG91dGdvaW5nX2RhdGEuY2hhbm5lbF9pZCkgKworICAgICAgICAgICAgICAgICAgIG91dGdv
aW5nX2RhdGEuZGF0YSkKICAgICAgICAgdHJ5OgotICAgICAgICAgICAgc2VsZi5fbXV4X2hhbmRs
ZXIucGh5c2ljYWxfY29ubmVjdGlvbi53cml0ZShvdXRnb2luZ19kYXRhLmRhdGEpCisgICAgICAg
ICAgICBzZWxmLl9tdXhfaGFuZGxlci5waHlzaWNhbF9zdHJlYW0uc2VuZF9tZXNzYWdlKAorICAg
ICAgICAgICAgICAgIG1lc3NhZ2U9bWVzc2FnZSwgZW5kPVRydWUsIGJpbmFyeT1UcnVlKQogICAg
ICAgICBleGNlcHQgRXhjZXB0aW9uLCBlOgogICAgICAgICAgICAgdXRpbC5wcmVwZW5kX21lc3Nh
Z2VfdG9fZXhjZXB0aW9uKAogICAgICAgICAgICAgICAgICdGYWlsZWQgdG8gc2VuZCBtZXNzYWdl
IHRvICVyOiAnICUKQEAgLTk0OCwzMyArMTE1Myw1MSBAQCBjbGFzcyBfUGh5c2ljYWxDb25uZWN0
aW9uV3JpdGVyKHRocmVhZGluZy5UaHJlYWQpOgogICAgICAgICAjIFRPRE8oYmFzaGkpOiBJdCB3
b3VsZCBiZSBiZXR0ZXIgdG8gYmxvY2sgdGhlIHRocmVhZCB0aGF0IHNlbmRzCiAgICAgICAgICMg
Y29udHJvbCBkYXRhIGFzIHdlbGwuCiAgICAgICAgIGlmIG91dGdvaW5nX2RhdGEuY2hhbm5lbF9p
ZCAhPSBfQ09OVFJPTF9DSEFOTkVMX0lEOgotICAgICAgICAgICAgc2VsZi5fbXV4X2hhbmRsZXIu
bm90aWZ5X3dyaXRlX2RvbmUob3V0Z29pbmdfZGF0YS5jaGFubmVsX2lkKQorICAgICAgICAgICAg
c2VsZi5fbXV4X2hhbmRsZXIubm90aWZ5X3dyaXRlX2RhdGFfZG9uZShvdXRnb2luZ19kYXRhLmNo
YW5uZWxfaWQpCiAKICAgICBkZWYgcnVuKHNlbGYpOgotICAgICAgICBzZWxmLl9kZXF1ZV9jb25k
aXRpb24uYWNxdWlyZSgpCi0gICAgICAgIHdoaWxlIG5vdCBzZWxmLl9zdG9wX3JlcXVlc3RlZDoK
LSAgICAgICAgICAgIGlmIGxlbihzZWxmLl9kZXF1ZSkgPT0gMDoKLSAgICAgICAgICAgICAgICBz
ZWxmLl9kZXF1ZV9jb25kaXRpb24ud2FpdCgpCi0gICAgICAgICAgICAgICAgY29udGludWUKLQot
ICAgICAgICAgICAgb3V0Z29pbmdfZGF0YSA9IHNlbGYuX2RlcXVlLnBvcGxlZnQoKQotICAgICAg
ICAgICAgc2VsZi5fZGVxdWVfY29uZGl0aW9uLnJlbGVhc2UoKQotICAgICAgICAgICAgc2VsZi5f
d3JpdGVfZGF0YShvdXRnb2luZ19kYXRhKQorICAgICAgICB0cnk6CiAgICAgICAgICAgICBzZWxm
Ll9kZXF1ZV9jb25kaXRpb24uYWNxdWlyZSgpCisgICAgICAgICAgICB3aGlsZSBub3Qgc2VsZi5f
c3RvcF9yZXF1ZXN0ZWQ6CisgICAgICAgICAgICAgICAgaWYgbGVuKHNlbGYuX2RlcXVlKSA9PSAw
OgorICAgICAgICAgICAgICAgICAgICBzZWxmLl9kZXF1ZV9jb25kaXRpb24ud2FpdCgpCisgICAg
ICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAKLSAgICAgICAgIyBGbHVzaCBkZXF1ZQotICAgICAg
ICB0cnk6Ci0gICAgICAgICAgICB3aGlsZSBsZW4oc2VsZi5fZGVxdWUpID4gMDoKICAgICAgICAg
ICAgICAgICBvdXRnb2luZ19kYXRhID0gc2VsZi5fZGVxdWUucG9wbGVmdCgpCisKKyAgICAgICAg
ICAgICAgICBzZWxmLl9kZXF1ZV9jb25kaXRpb24ucmVsZWFzZSgpCiAgICAgICAgICAgICAgICAg
c2VsZi5fd3JpdGVfZGF0YShvdXRnb2luZ19kYXRhKQorICAgICAgICAgICAgICAgIHNlbGYuX2Rl
cXVlX2NvbmRpdGlvbi5hY3F1aXJlKCkKKworICAgICAgICAgICAgIyBGbHVzaCBkZXF1ZS4KKyAg
ICAgICAgICAgICMKKyAgICAgICAgICAgICMgQXQgdGhpcyBwb2ludCwgc2VsZi5fZGVxdWVfY29u
ZGl0aW9uIGlzIGFsd2F5cyBhY3F1aXJlZC4KKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAg
ICAgICB3aGlsZSBsZW4oc2VsZi5fZGVxdWUpID4gMDoKKyAgICAgICAgICAgICAgICAgICAgb3V0
Z29pbmdfZGF0YSA9IHNlbGYuX2RlcXVlLnBvcGxlZnQoKQorICAgICAgICAgICAgICAgICAgICBz
ZWxmLl93cml0ZV9kYXRhKG91dGdvaW5nX2RhdGEpCisgICAgICAgICAgICBmaW5hbGx5OgorICAg
ICAgICAgICAgICAgIHNlbGYuX2RlcXVlX2NvbmRpdGlvbi5yZWxlYXNlKCkKKworICAgICAgICAg
ICAgIyBDbG9zZSBwaHlzaWNhbCBjb25uZWN0aW9uLgorICAgICAgICAgICAgdHJ5OgorICAgICAg
ICAgICAgICAgICMgRG9uJ3Qgd2FpdCB0aGUgcmVzcG9uc2UgaGVyZS4gVGhlIHJlc3BvbnNlIHdp
bGwgYmUgcmVhZAorICAgICAgICAgICAgICAgICMgYnkgdGhlIHJlYWRlciB0aHJlYWQuCisgICAg
ICAgICAgICAgICAgc2VsZi5fbXV4X2hhbmRsZXIucGh5c2ljYWxfc3RyZWFtLmNsb3NlX2Nvbm5l
Y3Rpb24oCisgICAgICAgICAgICAgICAgICAgIHNlbGYuX2Nsb3NlX2NvZGUsIHdhaXRfcmVzcG9u
c2U9RmFsc2UpCisgICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uLCBlOgorICAgICAgICAgICAg
ICAgIHV0aWwucHJlcGVuZF9tZXNzYWdlX3RvX2V4Y2VwdGlvbigKKyAgICAgICAgICAgICAgICAg
ICAgJ0ZhaWxlZCB0byBjbG9zZSB0aGUgcGh5c2ljYWwgY29ubmVjdGlvbjogJXInICUgZSkKKyAg
ICAgICAgICAgICAgICByYWlzZQogICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgc2VsZi5f
ZGVxdWVfY29uZGl0aW9uLnJlbGVhc2UoKQorICAgICAgICAgICAgc2VsZi5fbXV4X2hhbmRsZXIu
bm90aWZ5X3dyaXRlcl9kb25lKCkKIAotICAgIGRlZiBzdG9wKHNlbGYpOgorICAgIGRlZiBzdG9w
KHNlbGYsIGNsb3NlX2NvZGU9Y29tbW9uLlNUQVRVU19OT1JNQUxfQ0xPU1VSRSk6CiAgICAgICAg
ICIiIlN0b3BzIHRoZSB3cml0ZXIgdGhyZWFkLiIiIgogCiAgICAgICAgIHNlbGYuX2RlcXVlX2Nv
bmRpdGlvbi5hY3F1aXJlKCkKICAgICAgICAgc2VsZi5fc3RvcF9yZXF1ZXN0ZWQgPSBUcnVlCisg
ICAgICAgIHNlbGYuX2Nsb3NlX2NvZGUgPSBjbG9zZV9jb2RlCiAgICAgICAgIHNlbGYuX2RlcXVl
X2NvbmRpdGlvbi5ub3RpZnkoKQogICAgICAgICBzZWxmLl9kZXF1ZV9jb25kaXRpb24ucmVsZWFz
ZSgpCiAKQEAgLTEwNTUsNiArMTI3OCw5IEBAIGNsYXNzIF9Xb3JrZXIodGhyZWFkaW5nLlRocmVh
ZCk6CiAgICAgICAgIHRyeToKICAgICAgICAgICAgICMgTm9uLWNyaXRpY2FsIGV4Y2VwdGlvbnMg
d2lsbCBiZSBoYW5kbGVkIGJ5IGRpc3BhdGNoZXIuCiAgICAgICAgICAgICBzZWxmLl9tdXhfaGFu
ZGxlci5kaXNwYXRjaGVyLnRyYW5zZmVyX2RhdGEoc2VsZi5fcmVxdWVzdCkKKyAgICAgICAgZXhj
ZXB0IExvZ2ljYWxDaGFubmVsRXJyb3IsIGU6CisgICAgICAgICAgICBzZWxmLl9tdXhfaGFuZGxl
ci5mYWlsX2xvZ2ljYWxfY2hhbm5lbCgKKyAgICAgICAgICAgICAgICBlLmNoYW5uZWxfaWQsIGUu
ZHJvcF9jb2RlLCBlLm1lc3NhZ2UpCiAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICBzZWxm
Ll9tdXhfaGFuZGxlci5ub3RpZnlfd29ya2VyX2RvbmUoc2VsZi5fcmVxdWVzdC5jaGFubmVsX2lk
KQogCkBAIC0xMDgzLDggKzEzMDksNiBAQCBjbGFzcyBfTXV4SGFuZHNoYWtlcihoeWJpLkhhbmRz
aGFrZXIpOgogICAgICAgICAjICAgICB0aGVzZSBoZWFkZXJzIGFyZSBpbmNsdWRlZCBhbHJlYWR5
LgogICAgICAgICByZXF1ZXN0LmhlYWRlcnNfaW5bY29tbW9uLlVQR1JBREVfSEVBREVSXSA9ICgK
ICAgICAgICAgICAgIGNvbW1vbi5XRUJTT0NLRVRfVVBHUkFERV9UWVBFKQotICAgICAgICByZXF1
ZXN0LmhlYWRlcnNfaW5bY29tbW9uLkNPTk5FQ1RJT05fSEVBREVSXSA9ICgKLSAgICAgICAgICAg
IGNvbW1vbi5VUEdSQURFX0NPTk5FQ1RJT05fVFlQRSkKICAgICAgICAgcmVxdWVzdC5oZWFkZXJz
X2luW2NvbW1vbi5TRUNfV0VCU09DS0VUX1ZFUlNJT05fSEVBREVSXSA9ICgKICAgICAgICAgICAg
IHN0cihjb21tb24uVkVSU0lPTl9IWUJJX0xBVEVTVCkpCiAgICAgICAgIHJlcXVlc3QuaGVhZGVy
c19pbltjb21tb24uU0VDX1dFQlNPQ0tFVF9LRVlfSEVBREVSXSA9ICgKQEAgLTEwOTUsOCArMTMx
OSw5IEBAIGNsYXNzIF9NdXhIYW5kc2hha2VyKGh5YmkuSGFuZHNoYWtlcik6CiAKICAgICAgICAg
c2VsZi5fbG9nZ2VyLmRlYnVnKCdDcmVhdGluZyBsb2dpY2FsIHN0cmVhbSBmb3IgJWQnICUKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX3JlcXVlc3QuY2hhbm5lbF9pZCkKLSAgICAg
ICAgcmV0dXJuIF9Mb2dpY2FsU3RyZWFtKHNlbGYuX3JlcXVlc3QsIHNlbGYuX3NlbmRfcXVvdGEs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9yZWNlaXZlX3F1b3RhKQorICAg
ICAgICByZXR1cm4gX0xvZ2ljYWxTdHJlYW0oCisgICAgICAgICAgICBzZWxmLl9yZXF1ZXN0LCBz
dHJlYW1fb3B0aW9ucywgc2VsZi5fc2VuZF9xdW90YSwKKyAgICAgICAgICAgIHNlbGYuX3JlY2Vp
dmVfcXVvdGEpCiAKICAgICBkZWYgX2NyZWF0ZV9oYW5kc2hha2VfcmVzcG9uc2Uoc2VsZiwgYWNj
ZXB0KToKICAgICAgICAgIiIiT3ZlcnJpZGUgaHliaS5fY3JlYXRlX2hhbmRzaGFrZV9yZXNwb25z
ZS4iIiIKQEAgLTExMDUsNyArMTMzMCw5IEBAIGNsYXNzIF9NdXhIYW5kc2hha2VyKGh5YmkuSGFu
ZHNoYWtlcik6CiAKICAgICAgICAgcmVzcG9uc2UuYXBwZW5kKCdIVFRQLzEuMSAxMDEgU3dpdGNo
aW5nIFByb3RvY29sc1xyXG4nKQogCi0gICAgICAgICMgVXBncmFkZSwgQ29ubmVjdGlvbiBhbmQg
U2VjLVdlYlNvY2tldC1BY2NlcHQgc2hvdWxkIGJlIGV4Y2x1ZGVkLgorICAgICAgICAjIFVwZ3Jh
ZGUgYW5kIFNlYy1XZWJTb2NrZXQtQWNjZXB0IHNob3VsZCBiZSBleGNsdWRlZC4KKyAgICAgICAg
cmVzcG9uc2UuYXBwZW5kKCclczogJXNcclxuJyAlICgKKyAgICAgICAgICAgIGNvbW1vbi5DT05O
RUNUSU9OX0hFQURFUiwgY29tbW9uLlVQR1JBREVfQ09OTkVDVElPTl9UWVBFKSkKICAgICAgICAg
aWYgc2VsZi5fcmVxdWVzdC53c19wcm90b2NvbCBpcyBub3QgTm9uZToKICAgICAgICAgICAgIHJl
c3BvbnNlLmFwcGVuZCgnJXM6ICVzXHJcbicgJSAoCiAgICAgICAgICAgICAgICAgY29tbW9uLlNF
Q19XRUJTT0NLRVRfUFJPVE9DT0xfSEVBREVSLApAQCAtMTE2OSw4ICsxMzk2LDYgQEAgY2xhc3Mg
X0hhbmRzaGFrZURlbHRhQmFzZShvYmplY3QpOgogICAgICAgICAgICAgICAgICAgICBkZWwgaGVh
ZGVyc1trZXldCiAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgaGVh
ZGVyc1trZXldID0gdmFsdWUKLSAgICAgICAgIyBUT0RPKGJhc2hpKTogU3VwcG9ydCBleHRlbnNp
b25zCi0gICAgICAgIGhlYWRlcnNbJ1NlYy1XZWJTb2NrZXQtRXh0ZW5zaW9ucyddID0gJycKICAg
ICAgICAgcmV0dXJuIGhlYWRlcnMKIAogCkBAIC0xMjMyLDggKzE0NTcsMTIgQEAgY2xhc3MgX011
eEhhbmRsZXIob2JqZWN0KToKIAogICAgICAgICAjIENyZWF0ZSAiSW1wbGljaXRseSBPcGVuZWQg
Q29ubmVjdGlvbiIuCiAgICAgICAgIGxvZ2ljYWxfY29ubmVjdGlvbiA9IF9Mb2dpY2FsQ29ubmVj
dGlvbihzZWxmLCBfREVGQVVMVF9DSEFOTkVMX0lEKQotICAgICAgICBzZWxmLl9oYW5kc2hha2Vf
YmFzZSA9IF9IYW5kc2hha2VEZWx0YUJhc2UoCi0gICAgICAgICAgICBzZWxmLm9yaWdpbmFsX3Jl
cXVlc3QuaGVhZGVyc19pbikKKyAgICAgICAgaGVhZGVycyA9IGNvcHkuY29weShzZWxmLm9yaWdp
bmFsX3JlcXVlc3QuaGVhZGVyc19pbikKKyAgICAgICAgIyBBZGQgZXh0ZW5zaW9ucyBmb3IgbG9n
aWNhbCBjaGFubmVsLgorICAgICAgICBoZWFkZXJzW2NvbW1vbi5TRUNfV0VCU09DS0VUX0VYVEVO
U0lPTlNfSEVBREVSXSA9ICgKKyAgICAgICAgICAgIGNvbW1vbi5mb3JtYXRfZXh0ZW5zaW9ucygK
KyAgICAgICAgICAgICAgICBzZWxmLm9yaWdpbmFsX3JlcXVlc3QubXV4X3Byb2Nlc3Nvci5leHRl
bnNpb25zKCkpKQorICAgICAgICBzZWxmLl9oYW5kc2hha2VfYmFzZSA9IF9IYW5kc2hha2VEZWx0
YUJhc2UoaGVhZGVycykKICAgICAgICAgbG9naWNhbF9yZXF1ZXN0ID0gX0xvZ2ljYWxSZXF1ZXN0
KAogICAgICAgICAgICAgX0RFRkFVTFRfQ0hBTk5FTF9JRCwKICAgICAgICAgICAgIHNlbGYub3Jp
Z2luYWxfcmVxdWVzdC5tZXRob2QsCkBAIC0xMjQ1LDggKzE0NzQsOSBAQCBjbGFzcyBfTXV4SGFu
ZGxlcihvYmplY3QpOgogICAgICAgICAjIGJ1dCB3ZSB3aWxsIHNlbmQgRmxvd0NvbnRyb2wgbGF0
ZXIgc28gc2V0IHRoZSBpbml0aWFsIHF1b3RhIHRvCiAgICAgICAgICMgX0lOSVRJQUxfUVVPVEFf
Rk9SX0NMSUVOVC4KICAgICAgICAgc2VsZi5fY2hhbm5lbF9zbG90cy5hcHBlbmQoX0lOSVRJQUxf
UVVPVEFfRk9SX0NMSUVOVCkKKyAgICAgICAgc2VuZF9xdW90YSA9IHNlbGYub3JpZ2luYWxfcmVx
dWVzdC5tdXhfcHJvY2Vzc29yLnF1b3RhKCkKICAgICAgICAgaWYgbm90IHNlbGYuX2RvX2hhbmRz
aGFrZV9mb3JfbG9naWNhbF9yZXF1ZXN0KAotICAgICAgICAgICAgbG9naWNhbF9yZXF1ZXN0LCBz
ZW5kX3F1b3RhPXNlbGYub3JpZ2luYWxfcmVxdWVzdC5tdXhfcXVvdGEpOgorICAgICAgICAgICAg
bG9naWNhbF9yZXF1ZXN0LCBzZW5kX3F1b3RhPXNlbmRfcXVvdGEpOgogICAgICAgICAgICAgcmFp
c2UgTXV4VW5leHBlY3RlZEV4Y2VwdGlvbigKICAgICAgICAgICAgICAgICAnRmFpbGVkIGhhbmRz
aGFrZSBvbiB0aGUgZGVmYXVsdCBjaGFubmVsIGlkJykKICAgICAgICAgc2VsZi5fYWRkX2xvZ2lj
YWxfY2hhbm5lbChsb2dpY2FsX3JlcXVlc3QpCkBAIC0xMjg3LDcgKzE1MTcsNiBAQCBjbGFzcyBf
TXV4SGFuZGxlcihvYmplY3QpOgogICAgICAgICAgICAgICAgIGlmIG5vdCBzZWxmLl93b3JrZXJf
ZG9uZV9ub3RpZnlfcmVjZWl2ZWQ6CiAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5k
ZWJ1ZygnV2FpdGluZyB3b3JrZXIocykgdGltZWQgb3V0JykKICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIEZhbHNlCi0KICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgIHNlbGYuX2xvZ2lj
YWxfY2hhbm5lbHNfY29uZGl0aW9uLnJlbGVhc2UoKQogCkBAIC0xMjk3LDcgKzE1MjYsNyBAQCBj
bGFzcyBfTXV4SGFuZGxlcihvYmplY3QpOgogCiAgICAgICAgIHJldHVybiBUcnVlCiAKLSAgICBk
ZWYgbm90aWZ5X3dyaXRlX2RvbmUoc2VsZiwgY2hhbm5lbF9pZCk6CisgICAgZGVmIG5vdGlmeV93
cml0ZV9kYXRhX2RvbmUoc2VsZiwgY2hhbm5lbF9pZCk6CiAgICAgICAgICIiIkNhbGxlZCBieSB0
aGUgd3JpdGVyIHRocmVhZCB3aGVuIGEgd3JpdGUgb3BlcmF0aW9uIGhhcyBkb25lLgogCiAgICAg
ICAgIEFyZ3M6CkBAIC0xMzA4LDcgKzE1MzcsNyBAQCBjbGFzcyBfTXV4SGFuZGxlcihvYmplY3Qp
OgogICAgICAgICAgICAgc2VsZi5fbG9naWNhbF9jaGFubmVsc19jb25kaXRpb24uYWNxdWlyZSgp
CiAgICAgICAgICAgICBpZiBjaGFubmVsX2lkIGluIHNlbGYuX2xvZ2ljYWxfY2hhbm5lbHM6CiAg
ICAgICAgICAgICAgICAgY2hhbm5lbF9kYXRhID0gc2VsZi5fbG9naWNhbF9jaGFubmVsc1tjaGFu
bmVsX2lkXQotICAgICAgICAgICAgICAgIGNoYW5uZWxfZGF0YS5yZXF1ZXN0LmNvbm5lY3Rpb24u
bm90aWZ5X3dyaXRlX2RvbmUoKQorICAgICAgICAgICAgICAgIGNoYW5uZWxfZGF0YS5yZXF1ZXN0
LmNvbm5lY3Rpb24ub25fd3JpdGVfZGF0YV9kb25lKCkKICAgICAgICAgICAgIGVsc2U6CiAgICAg
ICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdTZWVtcyB0aGF0IGxvZ2ljYWwgY2hhbm5l
bCBmb3IgJWQgaGFzIGdvbmUnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICUg
Y2hhbm5lbF9pZCkKQEAgLTE0NjksOSArMTY5OCwxMSBAQCBjbGFzcyBfTXV4SGFuZGxlcihvYmpl
Y3QpOgogICAgICAgICAgICAgICAgIHJldHVybgogICAgICAgICAgICAgY2hhbm5lbF9kYXRhID0g
c2VsZi5fbG9naWNhbF9jaGFubmVsc1tibG9jay5jaGFubmVsX2lkXQogICAgICAgICAgICAgY2hh
bm5lbF9kYXRhLmRyb3BfY29kZSA9IF9EUk9QX0NPREVfQUNLTk9XTEVER0VECisKICAgICAgICAg
ICAgICMgQ2xvc2UgdGhlIGxvZ2ljYWwgY2hhbm5lbAogICAgICAgICAgICAgY2hhbm5lbF9kYXRh
LnJlcXVlc3QuY29ubmVjdGlvbi5zZXRfcmVhZF9zdGF0ZSgKICAgICAgICAgICAgICAgICBfTG9n
aWNhbENvbm5lY3Rpb24uU1RBVEVfVEVSTUlOQVRFRCkKKyAgICAgICAgICAgIGNoYW5uZWxfZGF0
YS5yZXF1ZXN0LndzX3N0cmVhbS5zdG9wX3NlbmRpbmcoKQogICAgICAgICBmaW5hbGx5OgogICAg
ICAgICAgICAgc2VsZi5fbG9naWNhbF9jaGFubmVsc19jb25kaXRpb24ucmVsZWFzZSgpCiAKQEAg
LTE1MDYsOCArMTczNywxMSBAQCBjbGFzcyBfTXV4SGFuZGxlcihvYmplY3QpOgogICAgICAgICAg
ICAgICAgIHJldHVybgogICAgICAgICAgICAgY2hhbm5lbF9kYXRhID0gc2VsZi5fbG9naWNhbF9j
aGFubmVsc1tjaGFubmVsX2lkXQogICAgICAgICAgICAgZmluLCByc3YxLCByc3YyLCByc3YzLCBv
cGNvZGUsIHBheWxvYWQgPSBwYXJzZXIucmVhZF9pbm5lcl9mcmFtZSgpCisgICAgICAgICAgICBj
b25zdW1pbmdfYnl0ZSA9IGxlbihwYXlsb2FkKQorICAgICAgICAgICAgaWYgb3Bjb2RlICE9IGNv
bW1vbi5PUENPREVfQ09OVElOVUFUSU9OOgorICAgICAgICAgICAgICAgIGNvbnN1bWluZ19ieXRl
ICs9IDEKICAgICAgICAgICAgIGlmIG5vdCBjaGFubmVsX2RhdGEucmVxdWVzdC53c19zdHJlYW0u
Y29uc3VtZV9yZWNlaXZlX3F1b3RhKAotICAgICAgICAgICAgICAgIGxlbihwYXlsb2FkKSk6Cisg
ICAgICAgICAgICAgICAgY29uc3VtaW5nX2J5dGUpOgogICAgICAgICAgICAgICAgICMgVGhlIGNs
aWVudCB2aW9sYXRlcyBxdW90YS4gQ2xvc2UgbG9naWNhbCBjaGFubmVsLgogICAgICAgICAgICAg
ICAgIHJhaXNlIExvZ2ljYWxDaGFubmVsRXJyb3IoCiAgICAgICAgICAgICAgICAgICAgIGNoYW5u
ZWxfaWQsIF9EUk9QX0NPREVfU0VORF9RVU9UQV9WSU9MQVRJT04pCkBAIC0xNTY5LDE1ICsxODAz
LDMyIEBAIGNsYXNzIF9NdXhIYW5kbGVyKG9iamVjdCk6CiAgICAgICAgIGZpbmlzaGVkLgogICAg
ICAgICAiIiIKIAotICAgICAgICAjIFRlcm1pbmF0ZSBhbGwgbG9naWNhbCBjb25uZWN0aW9ucwot
ICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJ3Rlcm1pYXRpbmcgYWxsIGxvZ2ljYWwgY29ubmVj
dGlvbnMuLi4nKQorICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoCisgICAgICAgICAgICAnVGVy
bWlhdGluZyBhbGwgbG9naWNhbCBjb25uZWN0aW9ucyB3YWl0aW5nIGZvciBpbmNvbWluZyBkYXRh
ICcKKyAgICAgICAgICAgICcuLi4nKQogICAgICAgICBzZWxmLl9sb2dpY2FsX2NoYW5uZWxzX2Nv
bmRpdGlvbi5hY3F1aXJlKCkKICAgICAgICAgZm9yIGNoYW5uZWxfZGF0YSBpbiBzZWxmLl9sb2dp
Y2FsX2NoYW5uZWxzLnZhbHVlcygpOgogICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAg
IGNoYW5uZWxfZGF0YS5yZXF1ZXN0LmNvbm5lY3Rpb24uc2V0X3JlYWRfc3RhdGUoCiAgICAgICAg
ICAgICAgICAgICAgIF9Mb2dpY2FsQ29ubmVjdGlvbi5TVEFURV9URVJNSU5BVEVEKQogICAgICAg
ICAgICAgZXhjZXB0IEV4Y2VwdGlvbjoKLSAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAg
ICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKHRyYWNlYmFjay5mb3JtYXRfZXhjKCkpCisgICAgICAg
IHNlbGYuX2xvZ2ljYWxfY2hhbm5lbHNfY29uZGl0aW9uLnJlbGVhc2UoKQorCisgICAgZGVmIG5v
dGlmeV93cml0ZXJfZG9uZShzZWxmKToKKyAgICAgICAgIiIiVGhpcyBtZXRob2QgaXMgY2FsbGVk
IGJ5IHRoZSB3cml0ZXIgdGhyZWFkIHdoZW4gdGhlIHdyaXRlciBoYXMKKyAgICAgICAgZmluaXNo
ZWQuCisgICAgICAgICIiIgorCisgICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygKKyAgICAgICAg
ICAgICdUZXJtaWF0aW5nIGFsbCBsb2dpY2FsIGNvbm5lY3Rpb25zIHdhaXRpbmcgZm9yIHdyaXRl
ICcKKyAgICAgICAgICAgICdjb21wbGV0aW9uIC4uLicpCisgICAgICAgIHNlbGYuX2xvZ2ljYWxf
Y2hhbm5lbHNfY29uZGl0aW9uLmFjcXVpcmUoKQorICAgICAgICBmb3IgY2hhbm5lbF9kYXRhIGlu
IHNlbGYuX2xvZ2ljYWxfY2hhbm5lbHMudmFsdWVzKCk6CisgICAgICAgICAgICB0cnk6CisgICAg
ICAgICAgICAgICAgY2hhbm5lbF9kYXRhLnJlcXVlc3QuY29ubmVjdGlvbi5vbl93cml0ZXJfZG9u
ZSgpCisgICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uOgorICAgICAgICAgICAgICAgIHNlbGYu
X2xvZ2dlci5kZWJ1Zyh0cmFjZWJhY2suZm9ybWF0X2V4YygpKQogICAgICAgICBzZWxmLl9sb2dp
Y2FsX2NoYW5uZWxzX2NvbmRpdGlvbi5yZWxlYXNlKCkKIAogICAgIGRlZiBmYWlsX3BoeXNpY2Fs
X2Nvbm5lY3Rpb24oc2VsZiwgY29kZSwgbWVzc2FnZSk6CkBAIC0xNTkwLDggKzE4NDEsNyBAQCBj
bGFzcyBfTXV4SGFuZGxlcihvYmplY3QpOgogCiAgICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1Zygn
RmFpbGluZyB0aGUgcGh5c2ljYWwgY29ubmVjdGlvbi4uLicpCiAgICAgICAgIHNlbGYuX3NlbmRf
ZHJvcF9jaGFubmVsKF9DT05UUk9MX0NIQU5ORUxfSUQsIGNvZGUsIG1lc3NhZ2UpCi0gICAgICAg
IHNlbGYucGh5c2ljYWxfc3RyZWFtLmNsb3NlX2Nvbm5lY3Rpb24oCi0gICAgICAgICAgICBjb21t
b24uU1RBVFVTX0lOVEVSTkFMX0VORFBPSU5UX0VSUk9SKQorICAgICAgICBzZWxmLl93cml0ZXIu
c3RvcChjb21tb24uU1RBVFVTX0lOVEVSTkFMX0VORFBPSU5UX0VSUk9SKQogCiAgICAgZGVmIGZh
aWxfbG9naWNhbF9jaGFubmVsKHNlbGYsIGNoYW5uZWxfaWQsIGNvZGUsIG1lc3NhZ2UpOgogICAg
ICAgICAiIiJGYWlsIGEgbG9naWNhbCBjaGFubmVsLgpAQCAtMTYxMSw4ICsxODYxLDEwIEBAIGNs
YXNzIF9NdXhIYW5kbGVyKG9iamVjdCk6CiAgICAgICAgICAgICAgICAgIyBjYWxsZWQgbGF0ZXIg
YW5kIGl0IHdpbGwgc2VuZCBEcm9wQ2hhbm5lbC4KICAgICAgICAgICAgICAgICBjaGFubmVsX2Rh
dGEuZHJvcF9jb2RlID0gY29kZQogICAgICAgICAgICAgICAgIGNoYW5uZWxfZGF0YS5kcm9wX21l
c3NhZ2UgPSBtZXNzYWdlCisKICAgICAgICAgICAgICAgICBjaGFubmVsX2RhdGEucmVxdWVzdC5j
b25uZWN0aW9uLnNldF9yZWFkX3N0YXRlKAogICAgICAgICAgICAgICAgICAgICBfTG9naWNhbENv
bm5lY3Rpb24uU1RBVEVfVEVSTUlOQVRFRCkKKyAgICAgICAgICAgICAgICBjaGFubmVsX2RhdGEu
cmVxdWVzdC53c19zdHJlYW0uc3RvcF9zZW5kaW5nKCkKICAgICAgICAgICAgIGVsc2U6CiAgICAg
ICAgICAgICAgICAgc2VsZi5fc2VuZF9kcm9wX2NoYW5uZWwoY2hhbm5lbF9pZCwgY29kZSwgbWVz
c2FnZSkKICAgICAgICAgZmluYWxseToKQEAgLTE2MjAsNyArMTg3Miw4IEBAIGNsYXNzIF9NdXhI
YW5kbGVyKG9iamVjdCk6CiAKIAogZGVmIHVzZV9tdXgocmVxdWVzdCk6Ci0gICAgcmV0dXJuIGhh
c2F0dHIocmVxdWVzdCwgJ211eCcpIGFuZCByZXF1ZXN0Lm11eAorICAgIHJldHVybiBoYXNhdHRy
KHJlcXVlc3QsICdtdXhfcHJvY2Vzc29yJykgYW5kICgKKyAgICAgICAgcmVxdWVzdC5tdXhfcHJv
Y2Vzc29yLmlzX2FjdGl2ZSgpKQogCiAKIGRlZiBzdGFydChyZXF1ZXN0LCBkaXNwYXRjaGVyKToK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGhpcmRwYXJ0eS9tb2RfcHl3ZWJz
b2NrZXQvc3RhbmRhbG9uZS5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGhpcmRwYXJ0eS9t
b2RfcHl3ZWJzb2NrZXQvc3RhbmRhbG9uZS5weQppbmRleCAwN2EzM2Q5Yzk0MGJiYzM0ZWFjMTU5
NzFiN2E5YzM3ZGUwMjg4N2RkLi4yYmYzYjBjMjg2ZjY0MTIyZjQxZmFlOTg4ZGU1MmZjOWE3NjBh
MWY4IDEwMDc1NQotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3RoaXJkcGFydHkvbW9kX3B5
d2Vic29ja2V0L3N0YW5kYWxvbmUucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90aGly
ZHBhcnR5L21vZF9weXdlYnNvY2tldC9zdGFuZGFsb25lLnB5CkBAIC03Niw2ICs3Niw5IEBAIFNV
UFBPUlRJTkcgVExTCiAKIFRvIHN1cHBvcnQgVExTLCBydW4gc3RhbmRhbG9uZS5weSB3aXRoIC10
LCAtaywgYW5kIC1jIG9wdGlvbnMuCiAKK05vdGUgdGhhdCB3aGVuIHNzbCBtb2R1bGUgaXMgdXNl
ZCBhbmQgdGhlIGtleS9jZXJ0IGxvY2F0aW9uIGlzIGluY29ycmVjdCwKK1RMUyBjb25uZWN0aW9u
IHNpbGVudGx5IGZhaWxzIHdoaWxlIHB5T3BlblNTTCBmYWlscyBvbiBzdGFydHVwLgorCiAKIFNV
UFBPUlRJTkcgQ0xJRU5UIEFVVEhFTlRJQ0FUSU9OCiAKQEAgLTE0MCwxOCArMTQzLDYgQEAgaW1w
b3J0IHN5cwogaW1wb3J0IHRocmVhZGluZwogaW1wb3J0IHRpbWUKIAotX0hBU19TU0wgPSBGYWxz
ZQotX0hBU19PUEVOX1NTTCA9IEZhbHNlCi10cnk6Ci0gICAgaW1wb3J0IHNzbAotICAgIF9IQVNf
U1NMID0gVHJ1ZQotZXhjZXB0IEltcG9ydEVycm9yOgotICAgIHRyeToKLSAgICAgICAgaW1wb3J0
IE9wZW5TU0wuU1NMCi0gICAgICAgIF9IQVNfT1BFTl9TU0wgPSBUcnVlCi0gICAgZXhjZXB0IElt
cG9ydEVycm9yOgotICAgICAgICBwYXNzCi0KIGZyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCBj
b21tb24KIGZyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCBkaXNwYXRjaAogZnJvbSBtb2RfcHl3
ZWJzb2NrZXQgaW1wb3J0IGhhbmRzaGFrZQpAQCAtMTY4LDYgKzE1OSwxMCBAQCBfREVGQVVMVF9S
RVFVRVNUX1FVRVVFX1NJWkUgPSAxMjgKICMgMTAyNCBpcyBwcmFjdGljYWxseSBsYXJnZSBlbm91
Z2ggdG8gY29udGFpbiBXZWJTb2NrZXQgaGFuZHNoYWtlIGxpbmVzLgogX01BWF9NRU1PUklaRURf
TElORVMgPSAxMDI0CiAKKyMgQ29uc3RhbnRzIGZvciB0aGUgLS10bHNfbW9kdWxlIGZsYWcuCitf
VExTX0JZX1NUQU5EQVJEX01PRFVMRSA9ICdzc2wnCitfVExTX0JZX1BZT1BFTlNTTCA9ICdweW9w
ZW5zc2wnCisKIAogY2xhc3MgX1N0YW5kYWxvbmVDb25uZWN0aW9uKG9iamVjdCk6CiAgICAgIiIi
TWltaWMgbW9kX3B5dGhvbiBtcF9jb25uLiIiIgpAQCAtMjMxLDExICsyMjYsMjMgQEAgY2xhc3Mg
X1N0YW5kYWxvbmVSZXF1ZXN0KG9iamVjdCk6CiAgICAgICAgIHNlbGYuaGVhZGVyc19pbiA9IHJl
cXVlc3RfaGFuZGxlci5oZWFkZXJzCiAKICAgICBkZWYgZ2V0X3VyaShzZWxmKToKLSAgICAgICAg
IiIiR2V0dGVyIHRvIG1pbWljIHJlcXVlc3QudXJpLiIiIgorICAgICAgICAiIiJHZXR0ZXIgdG8g
bWltaWMgcmVxdWVzdC51cmkuCisKKyAgICAgICAgVGhpcyBtZXRob2QgcmV0dXJucyB0aGUgcmF3
IGRhdGEgYXQgdGhlIFJlcXVlc3QtVVJJIHBhcnQgb2YgdGhlCisgICAgICAgIFJlcXVlc3QtTGlu
ZSwgd2hpbGUgdGhlIHVyaSBtZXRob2Qgb24gdGhlIHJlcXVlc3Qgb2JqZWN0IG9mIG1vZF9weXRo
b24KKyAgICAgICAgcmV0dXJucyB0aGUgcGF0aCBwb3J0aW9uIGFmdGVyIHBhcnNpbmcgdGhlIHJh
dyBkYXRhLiBUaGlzIGJlaGF2aW9yIGlzCisgICAgICAgIGtlcHQgZm9yIGNvbXBhdGliaWxpdHku
CisgICAgICAgICIiIgogCiAgICAgICAgIHJldHVybiBzZWxmLl9yZXF1ZXN0X2hhbmRsZXIucGF0
aAogICAgIHVyaSA9IHByb3BlcnR5KGdldF91cmkpCiAKKyAgICBkZWYgZ2V0X3VucGFyc2VkX3Vy
aShzZWxmKToKKyAgICAgICAgIiIiR2V0dGVyIHRvIG1pbWljIHJlcXVlc3QudW5wYXJzZWRfdXJp
LiIiIgorCisgICAgICAgIHJldHVybiBzZWxmLl9yZXF1ZXN0X2hhbmRsZXIucGF0aAorICAgIHVu
cGFyc2VkX3VyaSA9IHByb3BlcnR5KGdldF91bnBhcnNlZF91cmkpCisKICAgICBkZWYgZ2V0X21l
dGhvZChzZWxmKToKICAgICAgICAgIiIiR2V0dGVyIHRvIG1pbWljIHJlcXVlc3QubWV0aG9kLiIi
IgogCkBAIC0yNTMsMzkgKzI2MCw2OCBAQCBjbGFzcyBfU3RhbmRhbG9uZVJlcXVlc3Qob2JqZWN0
KToKIAogICAgICAgICByZXR1cm4gc2VsZi5fdXNlX3RscwogCi0gICAgZGVmIF9kcmFpbl9yZWNl
aXZlZF9kYXRhKHNlbGYpOgotICAgICAgICAiIiJEb24ndCB1c2UgdGhpcyBtZXRob2QgZnJvbSBX
ZWJTb2NrZXQgaGFuZGxlci4gRHJhaW5zIHVucmVhZCBkYXRhCi0gICAgICAgIGluIHRoZSByZWNl
aXZlIGJ1ZmZlci4KLSAgICAgICAgIiIiCiAKLSAgICAgICAgcmF3X3NvY2tldCA9IHNlbGYuX3Jl
cXVlc3RfaGFuZGxlci5jb25uZWN0aW9uCi0gICAgICAgIGRyYWluZWRfZGF0YSA9IHV0aWwuZHJh
aW5fcmVjZWl2ZWRfZGF0YShyYXdfc29ja2V0KQorZGVmIF9pbXBvcnRfc3NsKCk6CisgICAgZ2xv
YmFsIHNzbAorICAgIHRyeToKKyAgICAgICAgaW1wb3J0IHNzbAorICAgICAgICByZXR1cm4gVHJ1
ZQorICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICAgICAgcmV0dXJuIEZhbHNlCisKIAotICAg
ICAgICBpZiBkcmFpbmVkX2RhdGE6Ci0gICAgICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoCi0g
ICAgICAgICAgICAgICAgJ0RyYWluZWQgZGF0YSBmb2xsb3dpbmcgY2xvc2UgZnJhbWU6ICVyJywg
ZHJhaW5lZF9kYXRhKQorZGVmIF9pbXBvcnRfcHlvcGVuc3NsKCk6CisgICAgZ2xvYmFsIE9wZW5T
U0wKKyAgICB0cnk6CisgICAgICAgIGltcG9ydCBPcGVuU1NMLlNTTAorICAgICAgICByZXR1cm4g
VHJ1ZQorICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICAgICAgcmV0dXJuIEZhbHNlCiAKIAog
Y2xhc3MgX1N0YW5kYWxvbmVTU0xDb25uZWN0aW9uKG9iamVjdCk6Ci0gICAgIiIiQSB3cmFwcGVy
IGNsYXNzIGZvciBPcGVuU1NMLlNTTC5Db25uZWN0aW9uIHRvIHByb3ZpZGUgbWFrZWZpbGUgbWV0
aG9kCi0gICAgd2hpY2ggaXMgbm90IHN1cHBvcnRlZCBieSB0aGUgY2xhc3MuCisgICAgIiIiQSB3
cmFwcGVyIGNsYXNzIGZvciBPcGVuU1NMLlNTTC5Db25uZWN0aW9uIHRvCisgICAgLSBwcm92aWRl
IG1ha2VmaWxlIG1ldGhvZCB3aGljaCBpcyBub3Qgc3VwcG9ydGVkIGJ5IHRoZSBjbGFzcworICAg
IC0gdHdlYWsgc2h1dGRvd24gbWV0aG9kIHNpbmNlIE9wZW5TU0wuU1NMLkNvbm5lY3Rpb24uc2h1
dGRvd24gZG9lc24ndAorICAgICAgYWNjZXB0IHRoZSAiaG93IiBhcmd1bWVudC4KKyAgICAtIGNv
bnZlcnQgU3lzQ2FsbEVycm9yIGV4Y2VwdGlvbnMgdGhhdCBpdHMgcmVjdiBtZXRob2QgbWF5IHJh
aXNlIGludG8gYQorICAgICAgcmV0dXJuIHZhbHVlIG9mICcnLCBtZWFuaW5nIEVPRi4gV2UgY2Fu
bm90IG92ZXJ3cml0ZSB0aGUgcmVjdiBtZXRob2Qgb24KKyAgICAgIHNlbGYuX2Nvbm5lY3Rpb24g
c2luY2UgaXQncyBpbW11dGFibGUuCiAgICAgIiIiCiAKKyAgICBfT1ZFUlJJRERFTl9BVFRSSUJV
VEVTID0gWydfY29ubmVjdGlvbicsICdtYWtlZmlsZScsICdzaHV0ZG93bicsICdyZWN2J10KKwog
ICAgIGRlZiBfX2luaXRfXyhzZWxmLCBjb25uZWN0aW9uKToKICAgICAgICAgc2VsZi5fY29ubmVj
dGlvbiA9IGNvbm5lY3Rpb24KIAogICAgIGRlZiBfX2dldGF0dHJpYnV0ZV9fKHNlbGYsIG5hbWUp
OgotICAgICAgICBpZiBuYW1lIGluICgnX2Nvbm5lY3Rpb24nLCAnbWFrZWZpbGUnKToKKyAgICAg
ICAgaWYgbmFtZSBpbiBfU3RhbmRhbG9uZVNTTENvbm5lY3Rpb24uX09WRVJSSURERU5fQVRUUklC
VVRFUzoKICAgICAgICAgICAgIHJldHVybiBvYmplY3QuX19nZXRhdHRyaWJ1dGVfXyhzZWxmLCBu
YW1lKQogICAgICAgICByZXR1cm4gc2VsZi5fY29ubmVjdGlvbi5fX2dldGF0dHJpYnV0ZV9fKG5h
bWUpCiAKICAgICBkZWYgX19zZXRhdHRyX18oc2VsZiwgbmFtZSwgdmFsdWUpOgotICAgICAgICBp
ZiBuYW1lIGluICgnX2Nvbm5lY3Rpb24nLCAnbWFrZWZpbGUnKToKKyAgICAgICAgaWYgbmFtZSBp
biBfU3RhbmRhbG9uZVNTTENvbm5lY3Rpb24uX09WRVJSSURERU5fQVRUUklCVVRFUzoKICAgICAg
ICAgICAgIHJldHVybiBvYmplY3QuX19zZXRhdHRyX18oc2VsZiwgbmFtZSwgdmFsdWUpCiAgICAg
ICAgIHJldHVybiBzZWxmLl9jb25uZWN0aW9uLl9fc2V0YXR0cl9fKG5hbWUsIHZhbHVlKQogCiAg
ICAgZGVmIG1ha2VmaWxlKHNlbGYsIG1vZGU9J3InLCBidWZzaXplPS0xKToKLSAgICAgICAgcmV0
dXJuIHNvY2tldC5fZmlsZW9iamVjdChzZWxmLl9jb25uZWN0aW9uLCBtb2RlLCBidWZzaXplKQor
ICAgICAgICByZXR1cm4gc29ja2V0Ll9maWxlb2JqZWN0KHNlbGYsIG1vZGUsIGJ1ZnNpemUpCisK
KyAgICBkZWYgc2h1dGRvd24oc2VsZiwgdW51c2VkX2hvdyk6CisgICAgICAgIHNlbGYuX2Nvbm5l
Y3Rpb24uc2h1dGRvd24oKQorCisgICAgZGVmIHJlY3Yoc2VsZiwgYnVmc2l6ZSwgZmxhZ3M9MCk6
CisgICAgICAgIGlmIGZsYWdzICE9IDA6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdO
b24temVybyBmbGFncyBub3QgYWxsb3dlZCcpCisKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAg
cmV0dXJuIHNlbGYuX2Nvbm5lY3Rpb24ucmVjdihidWZzaXplKQorICAgICAgICBleGNlcHQgT3Bl
blNTTC5TU0wuU3lzQ2FsbEVycm9yLCAoZXJyLCBtZXNzYWdlKToKKyAgICAgICAgICAgIGlmIGVy
ciA9PSAtMToKKyAgICAgICAgICAgICAgICAjIFN1cHByZXNzICJ1bmV4cGVjdGVkIEVPRiIgZXhj
ZXB0aW9uLiBTZWUgdGhlIE9wZW5TU0wgZG9jdW1lbnQKKyAgICAgICAgICAgICAgICAjIGZvciBT
U0xfZ2V0X2Vycm9yLgorICAgICAgICAgICAgICAgIHJldHVybiAnJworICAgICAgICAgICAgcmFp
c2UKIAogCiBkZWYgX2FsaWFzX2hhbmRsZXJzKGRpc3BhdGNoZXIsIHdlYnNvY2tfaGFuZGxlcnNf
bWFwX2ZpbGUpOgpAQCAtMzQwLDcgKzM3Niw3IEBAIGNsYXNzIFdlYlNvY2tldFNlcnZlcihTb2Nr
ZXRTZXJ2ZXIuVGhyZWFkaW5nTWl4SW4sIEJhc2VIVFRQU2VydmVyLkhUVFBTZXJ2ZXIpOgogICAg
ICAgICB3YXJuaW5ncyA9IG9wdGlvbnMuZGlzcGF0Y2hlci5zb3VyY2Vfd2FybmluZ3MoKQogICAg
ICAgICBpZiB3YXJuaW5nczoKICAgICAgICAgICAgIGZvciB3YXJuaW5nIGluIHdhcm5pbmdzOgot
ICAgICAgICAgICAgICAgIGxvZ2dpbmcud2FybmluZygnbW9kX3B5d2Vic29ja2V0OiAlcycgJSB3
YXJuaW5nKQorICAgICAgICAgICAgICAgIGxvZ2dpbmcud2FybmluZygnV2FybmluZyBpbiBzb3Vy
Y2UgbG9hZGluZzogJXMnICUgd2FybmluZykKIAogICAgICAgICBzZWxmLl9sb2dnZXIgPSB1dGls
LmdldF9jbGFzc19sb2dnZXIoc2VsZikKIApAQCAtMzg3LDI1ICs0MjMsMjUgQEAgY2xhc3MgV2Vi
U29ja2V0U2VydmVyKFNvY2tldFNlcnZlci5UaHJlYWRpbmdNaXhJbiwgQmFzZUhUVFBTZXJ2ZXIu
SFRUUFNlcnZlcik6CiAgICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uLCBlOgogICAgICAgICAg
ICAgICAgIHNlbGYuX2xvZ2dlci5pbmZvKCdTa2lwIGJ5IGZhaWx1cmU6ICVyJywgZSkKICAgICAg
ICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgaWYgc2VsZi53ZWJzb2NrZXRfc2VydmVy
X29wdGlvbnMudXNlX3RsczoKLSAgICAgICAgICAgICAgICBpZiBfSEFTX1NTTDoKLSAgICAgICAg
ICAgICAgICAgICAgaWYgc2VsZi53ZWJzb2NrZXRfc2VydmVyX29wdGlvbnMudGxzX2NsaWVudF9h
dXRoOgotICAgICAgICAgICAgICAgICAgICAgICAgY2xpZW50X2NlcnRfID0gc3NsLkNFUlRfUkVR
VUlSRUQKKyAgICAgICAgICAgIHNlcnZlcl9vcHRpb25zID0gc2VsZi53ZWJzb2NrZXRfc2VydmVy
X29wdGlvbnMKKyAgICAgICAgICAgIGlmIHNlcnZlcl9vcHRpb25zLnVzZV90bHM6CisgICAgICAg
ICAgICAgICAgIyBGb3IgdGhlIGNhc2Ugb2YgX0hBU19PUEVOX1NTTCwgd2UgZG8gd3JhcHBlciBz
ZXR1cCBhZnRlcgorICAgICAgICAgICAgICAgICMgYWNjZXB0LgorICAgICAgICAgICAgICAgIGlm
IHNlcnZlcl9vcHRpb25zLnRsc19tb2R1bGUgPT0gX1RMU19CWV9TVEFOREFSRF9NT0RVTEU6Cisg
ICAgICAgICAgICAgICAgICAgIGlmIHNlcnZlcl9vcHRpb25zLnRsc19jbGllbnRfYXV0aDoKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGlmIHNlcnZlcl9vcHRpb25zLnRsc19jbGllbnRfY2VydF9v
cHRpb25hbDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGllbnRfY2VydF8gPSBzc2wu
Q0VSVF9PUFRJT05BTAorICAgICAgICAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjbGllbnRfY2VydF8gPSBzc2wuQ0VSVF9SRVFVSVJFRAogICAgICAg
ICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICAgICAgY2xpZW50X2NlcnRf
ID0gc3NsLkNFUlRfTk9ORQogICAgICAgICAgICAgICAgICAgICBzb2NrZXRfID0gc3NsLndyYXBf
c29ja2V0KHNvY2tldF8sCi0gICAgICAgICAgICAgICAgICAgICAgICBrZXlmaWxlPXNlbGYud2Vi
c29ja2V0X3NlcnZlcl9vcHRpb25zLnByaXZhdGVfa2V5LAotICAgICAgICAgICAgICAgICAgICAg
ICAgY2VydGZpbGU9c2VsZi53ZWJzb2NrZXRfc2VydmVyX29wdGlvbnMuY2VydGlmaWNhdGUsCisg
ICAgICAgICAgICAgICAgICAgICAgICBrZXlmaWxlPXNlcnZlcl9vcHRpb25zLnByaXZhdGVfa2V5
LAorICAgICAgICAgICAgICAgICAgICAgICAgY2VydGZpbGU9c2VydmVyX29wdGlvbnMuY2VydGlm
aWNhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICBzc2xfdmVyc2lvbj1zc2wuUFJPVE9DT0xf
U1NMdjIzLAotICAgICAgICAgICAgICAgICAgICAgICAgY2FfY2VydHM9c2VsZi53ZWJzb2NrZXRf
c2VydmVyX29wdGlvbnMudGxzX2NsaWVudF9jYSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGNl
cnRfcmVxcz1jbGllbnRfY2VydF8pCi0gICAgICAgICAgICAgICAgaWYgX0hBU19PUEVOX1NTTDoK
LSAgICAgICAgICAgICAgICAgICAgY3R4ID0gT3BlblNTTC5TU0wuQ29udGV4dChPcGVuU1NMLlNT
TC5TU0x2MjNfTUVUSE9EKQotICAgICAgICAgICAgICAgICAgICBjdHgudXNlX3ByaXZhdGVrZXlf
ZmlsZSgKLSAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYud2Vic29ja2V0X3NlcnZlcl9vcHRp
b25zLnByaXZhdGVfa2V5KQotICAgICAgICAgICAgICAgICAgICBjdHgudXNlX2NlcnRpZmljYXRl
X2ZpbGUoCi0gICAgICAgICAgICAgICAgICAgICAgICBzZWxmLndlYnNvY2tldF9zZXJ2ZXJfb3B0
aW9ucy5jZXJ0aWZpY2F0ZSkKLSAgICAgICAgICAgICAgICAgICAgc29ja2V0XyA9IE9wZW5TU0wu
U1NMLkNvbm5lY3Rpb24oY3R4LCBzb2NrZXRfKQorICAgICAgICAgICAgICAgICAgICAgICAgY2Ff
Y2VydHM9c2VydmVyX29wdGlvbnMudGxzX2NsaWVudF9jYSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGNlcnRfcmVxcz1jbGllbnRfY2VydF8sCisgICAgICAgICAgICAgICAgICAgICAgICBkb19o
YW5kc2hha2Vfb25fY29ubmVjdD1GYWxzZSkKICAgICAgICAgICAgIHNlbGYuX3NvY2tldHMuYXBw
ZW5kKChzb2NrZXRfLCBhZGRyaW5mbykpCiAKICAgICBkZWYgc2VydmVyX2JpbmQoc2VsZik6CkBA
IC00NzksNyArNTE1LDcgQEAgY2xhc3MgV2ViU29ja2V0U2VydmVyKFNvY2tldFNlcnZlci5UaHJl
YWRpbmdNaXhJbiwgQmFzZUhUVFBTZXJ2ZXIuSFRUUFNlcnZlcik6CiAgICAgICAgIHNlbGYuX2xv
Z2dlci5jcml0aWNhbCgnTm90IHN1cHBvcnRlZDogZmlsZW5vJykKICAgICAgICAgcmV0dXJuIHNl
bGYuX3NvY2tldHNbMF1bMF0uZmlsZW5vKCkKIAotICAgIGRlZiBoYW5kbGVfZXJyb3Ioc2VsZiwg
cnF1ZXN0LCBjbGllbnRfYWRkcmVzcyk6CisgICAgZGVmIGhhbmRsZV9lcnJvcihzZWxmLCByZXF1
ZXN0LCBjbGllbnRfYWRkcmVzcyk6CiAgICAgICAgICIiIk92ZXJyaWRlIFNvY2tldFNlcnZlci5o
YW5kbGVfZXJyb3IuIiIiCiAKICAgICAgICAgc2VsZi5fbG9nZ2VyLmVycm9yKApAQCAtNDk2LDgg
KzUzMiw2MyBAQCBjbGFzcyBXZWJTb2NrZXRTZXJ2ZXIoU29ja2V0U2VydmVyLlRocmVhZGluZ01p
eEluLCBCYXNlSFRUUFNlcnZlci5IVFRQU2VydmVyKToKICAgICAgICAgIiIiCiAKICAgICAgICAg
YWNjZXB0ZWRfc29ja2V0LCBjbGllbnRfYWRkcmVzcyA9IHNlbGYuc29ja2V0LmFjY2VwdCgpCi0g
ICAgICAgIGlmIHNlbGYud2Vic29ja2V0X3NlcnZlcl9vcHRpb25zLnVzZV90bHMgYW5kIF9IQVNf
T1BFTl9TU0w6Ci0gICAgICAgICAgICBhY2NlcHRlZF9zb2NrZXQgPSBfU3RhbmRhbG9uZVNTTENv
bm5lY3Rpb24oYWNjZXB0ZWRfc29ja2V0KQorCisgICAgICAgIHNlcnZlcl9vcHRpb25zID0gc2Vs
Zi53ZWJzb2NrZXRfc2VydmVyX29wdGlvbnMKKyAgICAgICAgaWYgc2VydmVyX29wdGlvbnMudXNl
X3RsczoKKyAgICAgICAgICAgIGlmIHNlcnZlcl9vcHRpb25zLnRsc19tb2R1bGUgPT0gX1RMU19C
WV9TVEFOREFSRF9NT0RVTEU6CisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAg
ICAgICBhY2NlcHRlZF9zb2NrZXQuZG9faGFuZHNoYWtlKCkKKyAgICAgICAgICAgICAgICBleGNl
cHQgc3NsLlNTTEVycm9yLCBlOgorICAgICAgICAgICAgICAgICAgICBzZWxmLl9sb2dnZXIuZGVi
dWcoJyVyJywgZSkKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UKKworICAgICAgICAgICAgICAg
ICMgUHJpbnQgY2lwaGVyIGluIHVzZS4gSGFuZHNoYWtlIGlzIGRvbmUgb24gYWNjZXB0LgorICAg
ICAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygnQ2lwaGVyOiAlcycsIGFjY2VwdGVkX3Nv
Y2tldC5jaXBoZXIoKSkKKyAgICAgICAgICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJ0NsaWVu
dCBjZXJ0OiAlcicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjY2VwdGVk
X3NvY2tldC5nZXRwZWVyY2VydCgpKQorICAgICAgICAgICAgZWxpZiBzZXJ2ZXJfb3B0aW9ucy50
bHNfbW9kdWxlID09IF9UTFNfQllfUFlPUEVOU1NMOgorICAgICAgICAgICAgICAgICMgV2UgY2Fu
bm90IHByaW50IHRoZSBjaXBoZXIgaW4gdXNlLiBweU9wZW5TU0wgZG9lc24ndCBwcm92aWRlCisg
ICAgICAgICAgICAgICAgIyBhbnkgbWV0aG9kIHRvIGZldGNoIHRoYXQuCisKKyAgICAgICAgICAg
ICAgICBjdHggPSBPcGVuU1NMLlNTTC5Db250ZXh0KE9wZW5TU0wuU1NMLlNTTHYyM19NRVRIT0Qp
CisgICAgICAgICAgICAgICAgY3R4LnVzZV9wcml2YXRla2V5X2ZpbGUoc2VydmVyX29wdGlvbnMu
cHJpdmF0ZV9rZXkpCisgICAgICAgICAgICAgICAgY3R4LnVzZV9jZXJ0aWZpY2F0ZV9maWxlKHNl
cnZlcl9vcHRpb25zLmNlcnRpZmljYXRlKQorCisgICAgICAgICAgICAgICAgZGVmIGRlZmF1bHRf
Y2FsbGJhY2soY29ubiwgY2VydCwgZXJybnVtLCBlcnJkZXB0aCwgb2spOgorICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gb2sgPT0gMQorCisgICAgICAgICAgICAgICAgIyBTZWUgdGhlIE9wZW5T
U0wgZG9jdW1lbnQgZm9yIFNTTF9DVFhfc2V0X3ZlcmlmeS4KKyAgICAgICAgICAgICAgICBpZiBz
ZXJ2ZXJfb3B0aW9ucy50bHNfY2xpZW50X2F1dGg6CisgICAgICAgICAgICAgICAgICAgIHZlcmlm
eV9tb2RlID0gT3BlblNTTC5TU0wuVkVSSUZZX1BFRVIKKyAgICAgICAgICAgICAgICAgICAgaWYg
bm90IHNlcnZlcl9vcHRpb25zLnRsc19jbGllbnRfY2VydF9vcHRpb25hbDoKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHZlcmlmeV9tb2RlIHw9IE9wZW5TU0wuU1NMLlZFUklGWV9GQUlMX0lGX05P
X1BFRVJfQ0VSVAorICAgICAgICAgICAgICAgICAgICBjdHguc2V0X3ZlcmlmeSh2ZXJpZnlfbW9k
ZSwgZGVmYXVsdF9jYWxsYmFjaykKKyAgICAgICAgICAgICAgICAgICAgY3R4LmxvYWRfdmVyaWZ5
X2xvY2F0aW9ucyhzZXJ2ZXJfb3B0aW9ucy50bHNfY2xpZW50X2NhLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5vbmUpCisgICAgICAgICAgICAgICAgZWxz
ZToKKyAgICAgICAgICAgICAgICAgICAgY3R4LnNldF92ZXJpZnkoT3BlblNTTC5TU0wuVkVSSUZZ
X05PTkUsIGRlZmF1bHRfY2FsbGJhY2spCisKKyAgICAgICAgICAgICAgICBhY2NlcHRlZF9zb2Nr
ZXQgPSBPcGVuU1NMLlNTTC5Db25uZWN0aW9uKGN0eCwgYWNjZXB0ZWRfc29ja2V0KQorICAgICAg
ICAgICAgICAgIGFjY2VwdGVkX3NvY2tldC5zZXRfYWNjZXB0X3N0YXRlKCkKKworICAgICAgICAg
ICAgICAgICMgQ29udmVydCBTU0wgcmVsYXRlZCBlcnJvciBpbnRvIHNvY2tldC5lcnJvciBzbyB0
aGF0CisgICAgICAgICAgICAgICAgIyBTb2NrZXRTZXJ2ZXIgaWdub3JlcyB0aGVtIGFuZCBrZWVw
cyBydW5uaW5nLgorICAgICAgICAgICAgICAgICMKKyAgICAgICAgICAgICAgICAjIFRPRE8odHlv
c2hpbm8pOiBDb252ZXJ0IGFsbCBraW5kcyBvZiBlcnJvcnMuCisgICAgICAgICAgICAgICAgdHJ5
OgorICAgICAgICAgICAgICAgICAgICBhY2NlcHRlZF9zb2NrZXQuZG9faGFuZHNoYWtlKCkKKyAg
ICAgICAgICAgICAgICBleGNlcHQgT3BlblNTTC5TU0wuRXJyb3IsIGU6CisgICAgICAgICAgICAg
ICAgICAgICMgU2V0IGVycm5vIHBhcnQgdG8gMSAoU1NMX0VSUk9SX1NTTCkgbGlrZSB0aGUgc3Ns
IG1vZHVsZQorICAgICAgICAgICAgICAgICAgICAjIGRvZXMuCisgICAgICAgICAgICAgICAgICAg
IHNlbGYuX2xvZ2dlci5kZWJ1ZygnJXInLCBlKQorICAgICAgICAgICAgICAgICAgICByYWlzZSBz
b2NrZXQuZXJyb3IoMSwgJyVyJyAlIGUpCisgICAgICAgICAgICAgICAgY2VydCA9IGFjY2VwdGVk
X3NvY2tldC5nZXRfcGVlcl9jZXJ0aWZpY2F0ZSgpCisgICAgICAgICAgICAgICAgc2VsZi5fbG9n
Z2VyLmRlYnVnKCdDbGllbnQgY2VydCBzdWJqZWN0OiAlcicsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNlcnQuZ2V0X3N1YmplY3QoKS5nZXRfY29tcG9uZW50cygpKQorICAg
ICAgICAgICAgICAgIGFjY2VwdGVkX3NvY2tldCA9IF9TdGFuZGFsb25lU1NMQ29ubmVjdGlvbihh
Y2NlcHRlZF9zb2NrZXQpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHJhaXNl
IFZhbHVlRXJyb3IoJ05vIFRMUyBzdXBwb3J0IG1vZHVsZSBpcyBhdmFpbGFibGUnKQorCiAgICAg
ICAgIHJldHVybiBhY2NlcHRlZF9zb2NrZXQsIGNsaWVudF9hZGRyZXNzCiAKICAgICBkZWYgc2Vy
dmVfZm9yZXZlcihzZWxmLCBwb2xsX2ludGVydmFsPTAuNSk6CkBAIC02MzYsNyArNzI3LDcgQEAg
Y2xhc3MgV2ViU29ja2V0UmVxdWVzdEhhbmRsZXIoQ0dJSFRUUFNlcnZlci5DR0lIVFRQUmVxdWVz
dEhhbmRsZXIpOgogICAgICAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5pbmZvKCdGYWxsYmFjayB0
byBDR0lIVFRQUmVxdWVzdEhhbmRsZXInKQogICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCiAg
ICAgICAgIGV4Y2VwdCBkaXNwYXRjaC5EaXNwYXRjaEV4Y2VwdGlvbiwgZToKLSAgICAgICAgICAg
IHNlbGYuX2xvZ2dlci5pbmZvKCclcycsIGUpCisgICAgICAgICAgICBzZWxmLl9sb2dnZXIuaW5m
bygnRGlzcGF0Y2ggZmFpbGVkIGZvciBlcnJvcjogJXMnLCBlKQogICAgICAgICAgICAgc2VsZi5z
ZW5kX2Vycm9yKGUuc3RhdHVzKQogICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAKQEAgLTY1Miw3
ICs3NDMsNyBAQCBjbGFzcyBXZWJTb2NrZXRSZXF1ZXN0SGFuZGxlcihDR0lIVFRQU2VydmVyLkNH
SUhUVFBSZXF1ZXN0SGFuZGxlcik6CiAgICAgICAgICAgICAgICAgICAgIGFsbG93RHJhZnQ3NT1z
ZWxmLl9vcHRpb25zLmFsbG93X2RyYWZ0NzUsCiAgICAgICAgICAgICAgICAgICAgIHN0cmljdD1z
ZWxmLl9vcHRpb25zLnN0cmljdCkKICAgICAgICAgICAgIGV4Y2VwdCBoYW5kc2hha2UuVmVyc2lv
bkV4Y2VwdGlvbiwgZToKLSAgICAgICAgICAgICAgICBzZWxmLl9sb2dnZXIuaW5mbygnJXMnLCBl
KQorICAgICAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5pbmZvKCdIYW5kc2hha2UgZmFpbGVkIGZv
ciB2ZXJzaW9uIGVycm9yOiAlcycsIGUpCiAgICAgICAgICAgICAgICAgc2VsZi5zZW5kX3Jlc3Bv
bnNlKGNvbW1vbi5IVFRQX1NUQVRVU19CQURfUkVRVUVTVCkKICAgICAgICAgICAgICAgICBzZWxm
LnNlbmRfaGVhZGVyKGNvbW1vbi5TRUNfV0VCU09DS0VUX1ZFUlNJT05fSEVBREVSLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5zdXBwb3J0ZWRfdmVyc2lvbnMpCkBAIC02NjAs
MTQgKzc1MSwxNCBAQCBjbGFzcyBXZWJTb2NrZXRSZXF1ZXN0SGFuZGxlcihDR0lIVFRQU2VydmVy
LkNHSUhUVFBSZXF1ZXN0SGFuZGxlcik6CiAgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAg
ICAgICAgICAgICBleGNlcHQgaGFuZHNoYWtlLkhhbmRzaGFrZUV4Y2VwdGlvbiwgZToKICAgICAg
ICAgICAgICAgICAjIEhhbmRzaGFrZSBmb3Igd3MocykgZmFpbGVkLgotICAgICAgICAgICAgICAg
IHNlbGYuX2xvZ2dlci5pbmZvKCclcycsIGUpCisgICAgICAgICAgICAgICAgc2VsZi5fbG9nZ2Vy
LmluZm8oJ0hhbmRzaGFrZSBmYWlsZWQgZm9yIGVycm9yOiAlcycsIGUpCiAgICAgICAgICAgICAg
ICAgc2VsZi5zZW5kX2Vycm9yKGUuc3RhdHVzKQogICAgICAgICAgICAgICAgIHJldHVybiBGYWxz
ZQogCiAgICAgICAgICAgICByZXF1ZXN0Ll9kaXNwYXRjaGVyID0gc2VsZi5fb3B0aW9ucy5kaXNw
YXRjaGVyCiAgICAgICAgICAgICBzZWxmLl9vcHRpb25zLmRpc3BhdGNoZXIudHJhbnNmZXJfZGF0
YShyZXF1ZXN0KQogICAgICAgICBleGNlcHQgaGFuZHNoYWtlLkFib3J0ZWRCeVVzZXJFeGNlcHRp
b24sIGU6Ci0gICAgICAgICAgICBzZWxmLl9sb2dnZXIuaW5mbygnJXMnLCBlKQorICAgICAgICAg
ICAgc2VsZi5fbG9nZ2VyLmluZm8oJ0Fib3J0ZWQ6ICVzJywgZSkKICAgICAgICAgcmV0dXJuIEZh
bHNlCiAKICAgICBkZWYgbG9nX3JlcXVlc3Qoc2VsZiwgY29kZT0nLScsIHNpemU9Jy0nKToKQEAg
LTc5OSw2ICs4OTAsMTIgQEAgZGVmIF9idWlsZF9vcHRpb25fcGFyc2VyKCk6CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgJ2FzIENHSSBwcm9ncmFtcy4gTXVzdCBiZSBleGVjdXRhYmxlLicp
KQogICAgIHBhcnNlci5hZGRfb3B0aW9uKCctdCcsICctLXRscycsIGRlc3Q9J3VzZV90bHMnLCBh
Y3Rpb249J3N0b3JlX3RydWUnLAogICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9RmFsc2Us
IGhlbHA9J3VzZSBUTFMgKHdzczovLyknKQorICAgIHBhcnNlci5hZGRfb3B0aW9uKCctLXRscy1t
b2R1bGUnLCAnLS10bHNfbW9kdWxlJywgZGVzdD0ndGxzX21vZHVsZScsCisgICAgICAgICAgICAg
ICAgICAgICAgdHlwZT0nY2hvaWNlJywKKyAgICAgICAgICAgICAgICAgICAgICBjaG9pY2VzID0g
W19UTFNfQllfU1RBTkRBUkRfTU9EVUxFLCBfVExTX0JZX1BZT1BFTlNTTF0sCisgICAgICAgICAg
ICAgICAgICAgICAgaGVscD0nVXNlIHNzbCBtb2R1bGUgaWYgIiVzIiBpcyBzcGVjaWZpZWQuICcK
KyAgICAgICAgICAgICAgICAgICAgICAnVXNlIHB5T3BlblNTTCBtb2R1bGUgaWYgIiVzIiBpcyBz
cGVjaWZpZWQnICUKKyAgICAgICAgICAgICAgICAgICAgICAoX1RMU19CWV9TVEFOREFSRF9NT0RV
TEUsIF9UTFNfQllfUFlPUEVOU1NMKSkKICAgICBwYXJzZXIuYWRkX29wdGlvbignLWsnLCAnLS1w
cml2YXRlLWtleScsICctLXByaXZhdGVfa2V5JywKICAgICAgICAgICAgICAgICAgICAgICBkZXN0
PSdwcml2YXRlX2tleScsCiAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdD0nJywgaGVscD0n
VExTIHByaXZhdGUga2V5IGZpbGUuJykKQEAgLTgwNiw3ICs5MDMsMTIgQEAgZGVmIF9idWlsZF9v
cHRpb25fcGFyc2VyKCk6CiAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdD0nJywgaGVscD0n
VExTIGNlcnRpZmljYXRlIGZpbGUuJykKICAgICBwYXJzZXIuYWRkX29wdGlvbignLS10bHMtY2xp
ZW50LWF1dGgnLCBkZXN0PSd0bHNfY2xpZW50X2F1dGgnLAogICAgICAgICAgICAgICAgICAgICAg
IGFjdGlvbj0nc3RvcmVfdHJ1ZScsIGRlZmF1bHQ9RmFsc2UsCi0gICAgICAgICAgICAgICAgICAg
ICAgaGVscD0nUmVxdWlyZXMgVExTIGNsaWVudCBhdXRoIG9uIGV2ZXJ5IGNvbm5lY3Rpb24uJykK
KyAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdSZXF1ZXN0cyBUTFMgY2xpZW50IGF1dGggb24g
ZXZlcnkgY29ubmVjdGlvbi4nKQorICAgIHBhcnNlci5hZGRfb3B0aW9uKCctLXRscy1jbGllbnQt
Y2VydC1vcHRpb25hbCcsCisgICAgICAgICAgICAgICAgICAgICAgZGVzdD0ndGxzX2NsaWVudF9j
ZXJ0X29wdGlvbmFsJywKKyAgICAgICAgICAgICAgICAgICAgICBhY3Rpb249J3N0b3JlX3RydWUn
LCBkZWZhdWx0PUZhbHNlLAorICAgICAgICAgICAgICAgICAgICAgIGhlbHA9KCdNYWtlcyBjbGll
bnQgY2VydGlmaWNhdGUgb3B0aW9uYWwgZXZlbiB0aG91Z2ggJworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICdUTFMgY2xpZW50IGF1dGggaXMgZW5hYmxlZC4nKSkKICAgICBwYXJzZXIuYWRk
X29wdGlvbignLS10bHMtY2xpZW50LWNhJywgZGVzdD0ndGxzX2NsaWVudF9jYScsIGRlZmF1bHQ9
JycsCiAgICAgICAgICAgICAgICAgICAgICAgaGVscD0oJ1NwZWNpZmllcyBhIHBlbSBmaWxlIHdo
aWNoIGNvbnRhaW5zIGEgc2V0IG9mICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY29u
Y2F0ZW5hdGVkIENBIGNlcnRpZmljYXRlcyB3aGljaCBhcmUgdXNlZCB0byAnCkBAIC05MzMsNiAr
MTAzNSwxMiBAQCBkZWYgX21haW4oYXJncz1Ob25lKToKIAogICAgIF9jb25maWd1cmVfbG9nZ2lu
ZyhvcHRpb25zKQogCisgICAgaWYgb3B0aW9ucy5hbGxvd19kcmFmdDc1OgorICAgICAgICBsb2dn
aW5nLndhcm5pbmcoJy0tYWxsb3dfZHJhZnQ3NSBvcHRpb24gaXMgb2Jzb2xldGUuJykKKworICAg
IGlmIG9wdGlvbnMuc3RyaWN0OgorICAgICAgICBsb2dnaW5nLndhcm5pbmcoJy0tc3RyaWN0IG9w
dGlvbiBpcyBvYnNvbGV0ZS4nKQorCiAgICAgIyBUT0RPKHR5b3NoaW5vKTogQ2xlYW4gdXAgaW5p
dGlhbGl6YXRpb24gb2YgQ0dJIHJlbGF0ZWQgdmFsdWVzLiBNb3ZlIHNvbWUKICAgICAjIG9mIGNv
ZGUgaGVyZSB0byBXZWJTb2NrZXRSZXF1ZXN0SGFuZGxlciBjbGFzcyBpZiBpdCdzIGJldHRlci4K
ICAgICBvcHRpb25zLmNnaV9kaXJlY3RvcmllcyA9IFtdCkBAIC05NTUsMjAgKzEwNjMsNTMgQEAg
ZGVmIF9tYWluKGFyZ3M9Tm9uZSk6CiAgICAgICAgICAgICBvcHRpb25zLmlzX2V4ZWN1dGFibGVf
bWV0aG9kID0gX19jaGVja19zY3JpcHQKIAogICAgIGlmIG9wdGlvbnMudXNlX3RsczoKLSAgICAg
ICAgaWYgbm90IChfSEFTX1NTTCBvciBfSEFTX09QRU5fU1NMKToKLSAgICAgICAgICAgIGxvZ2dp
bmcuY3JpdGljYWwoJ1RMUyBzdXBwb3J0IHJlcXVpcmVzIHNzbCBvciBweU9wZW5TU0wgbW9kdWxl
LicpCisgICAgICAgIGlmIG9wdGlvbnMudGxzX21vZHVsZSBpcyBOb25lOgorICAgICAgICAgICAg
aWYgX2ltcG9ydF9zc2woKToKKyAgICAgICAgICAgICAgICBvcHRpb25zLnRsc19tb2R1bGUgPSBf
VExTX0JZX1NUQU5EQVJEX01PRFVMRQorICAgICAgICAgICAgICAgIGxvZ2dpbmcuZGVidWcoJ1Vz
aW5nIHNzbCBtb2R1bGUnKQorICAgICAgICAgICAgZWxpZiBfaW1wb3J0X3B5b3BlbnNzbCgpOgor
ICAgICAgICAgICAgICAgIG9wdGlvbnMudGxzX21vZHVsZSA9IF9UTFNfQllfUFlPUEVOU1NMCisg
ICAgICAgICAgICAgICAgbG9nZ2luZy5kZWJ1ZygnVXNpbmcgcHlPcGVuU1NMIG1vZHVsZScpCisg
ICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGxvZ2dpbmcuY3JpdGljYWwoCisgICAg
ICAgICAgICAgICAgICAgICAgICAnVExTIHN1cHBvcnQgcmVxdWlyZXMgc3NsIG9yIHB5T3BlblNT
TCBtb2R1bGUuJykKKyAgICAgICAgICAgICAgICBzeXMuZXhpdCgxKQorICAgICAgICBlbGlmIG9w
dGlvbnMudGxzX21vZHVsZSA9PSBfVExTX0JZX1NUQU5EQVJEX01PRFVMRToKKyAgICAgICAgICAg
IGlmIG5vdCBfaW1wb3J0X3NzbCgpOgorICAgICAgICAgICAgICAgIGxvZ2dpbmcuY3JpdGljYWwo
J3NzbCBtb2R1bGUgaXMgbm90IGF2YWlsYWJsZScpCisgICAgICAgICAgICAgICAgc3lzLmV4aXQo
MSkKKyAgICAgICAgZWxpZiBvcHRpb25zLnRsc19tb2R1bGUgPT0gX1RMU19CWV9QWU9QRU5TU0w6
CisgICAgICAgICAgICBpZiBub3QgX2ltcG9ydF9weW9wZW5zc2woKToKKyAgICAgICAgICAgICAg
ICBsb2dnaW5nLmNyaXRpY2FsKCdweU9wZW5TU0wgbW9kdWxlIGlzIG5vdCBhdmFpbGFibGUnKQor
ICAgICAgICAgICAgICAgIHN5cy5leGl0KDEpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBs
b2dnaW5nLmNyaXRpY2FsKCdJbnZhbGlkIC0tdGxzLW1vZHVsZSBvcHRpb246ICVyJywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy50bHNfbW9kdWxlKQogICAgICAgICAgICAg
c3lzLmV4aXQoMSkKKwogICAgICAgICBpZiBub3Qgb3B0aW9ucy5wcml2YXRlX2tleSBvciBub3Qg
b3B0aW9ucy5jZXJ0aWZpY2F0ZToKICAgICAgICAgICAgIGxvZ2dpbmcuY3JpdGljYWwoCiAgICAg
ICAgICAgICAgICAgICAgICdUbyB1c2UgVExTLCBzcGVjaWZ5IHByaXZhdGVfa2V5IGFuZCBjZXJ0
aWZpY2F0ZS4nKQogICAgICAgICAgICAgc3lzLmV4aXQoMSkKIAotICAgIGlmIG9wdGlvbnMudGxz
X2NsaWVudF9hdXRoOgotICAgICAgICBpZiBub3Qgb3B0aW9ucy51c2VfdGxzOgorICAgICAgICBp
ZiAob3B0aW9ucy50bHNfY2xpZW50X2NlcnRfb3B0aW9uYWwgYW5kCisgICAgICAgICAgICBub3Qg
b3B0aW9ucy50bHNfY2xpZW50X2F1dGgpOgorICAgICAgICAgICAgbG9nZ2luZy5jcml0aWNhbCgn
Q2xpZW50IGF1dGhlbnRpY2F0aW9uIG11c3QgYmUgZW5hYmxlZCB0byAnCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICdzcGVjaWZ5IHRsc19jbGllbnRfY2VydF9vcHRpb25hbCcpCisgICAg
ICAgICAgICBzeXMuZXhpdCgxKQorICAgIGVsc2U6CisgICAgICAgIGlmIG9wdGlvbnMudGxzX21v
ZHVsZSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIGxvZ2dpbmcuY3JpdGljYWwoJ1VzZSAtLXRs
cy1tb2R1bGUgb3B0aW9uIG9ubHkgdG9nZXRoZXIgd2l0aCAnCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICctLXVzZS10bHMgb3B0aW9uLicpCisgICAgICAgICAgICBzeXMuZXhpdCgxKQor
CisgICAgICAgIGlmIG9wdGlvbnMudGxzX2NsaWVudF9hdXRoOgorICAgICAgICAgICAgbG9nZ2lu
Zy5jcml0aWNhbCgnVExTIG11c3QgYmUgZW5hYmxlZCBmb3IgY2xpZW50IGF1dGhlbnRpY2F0aW9u
LicpCisgICAgICAgICAgICBzeXMuZXhpdCgxKQorCisgICAgICAgIGlmIG9wdGlvbnMudGxzX2Ns
aWVudF9jZXJ0X29wdGlvbmFsOgogICAgICAgICAgICAgbG9nZ2luZy5jcml0aWNhbCgnVExTIG11
c3QgYmUgZW5hYmxlZCBmb3IgY2xpZW50IGF1dGhlbnRpY2F0aW9uLicpCiAgICAgICAgICAgICBz
eXMuZXhpdCgxKQotICAgICAgICBpZiBub3QgX0hBU19TU0w6Ci0gICAgICAgICAgICBsb2dnaW5n
LmNyaXRpY2FsKCdDbGllbnQgYXV0aGVudGljYXRpb24gcmVxdWlyZXMgc3NsIG1vZHVsZS4nKQog
CiAgICAgaWYgbm90IG9wdGlvbnMuc2Nhbl9kaXI6CiAgICAgICAgIG9wdGlvbnMuc2Nhbl9kaXIg
PSBvcHRpb25zLndlYnNvY2tfaGFuZGxlcnMKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvdGhpcmRwYXJ0eS9tb2RfcHl3ZWJzb2NrZXQvdXRpbC5weSBiL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvdGhpcmRwYXJ0eS9tb2RfcHl3ZWJzb2NrZXQvdXRpbC5weQppbmRleCA3YmIwYjVk
OWU1YjFlNTgyNDA3NTYyMjlhYzQ0OTdkMTQ3NTk3OTRiLi5hZGFjYTNhMDgxNTE5ODJiZjlmZDBi
NTRmYzczMjRjYmUzMTJkZjllIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Ro
aXJkcGFydHkvbW9kX3B5d2Vic29ja2V0L3V0aWwucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS90aGlyZHBhcnR5L21vZF9weXdlYnNvY2tldC91dGlsLnB5CkBAIC01Niw2ICs1NiwxMSBA
QCBpbXBvcnQgc29ja2V0CiBpbXBvcnQgdHJhY2ViYWNrCiBpbXBvcnQgemxpYgogCit0cnk6Cisg
ICAgZnJvbSBtb2RfcHl3ZWJzb2NrZXQgaW1wb3J0IGZhc3RfbWFza2luZworZXhjZXB0IEltcG9y
dEVycm9yOgorICAgIHBhc3MKKwogCiBkZWYgZ2V0X3N0YWNrX3RyYWNlKCk6CiAgICAgIiIiR2V0
IHRoZSBjdXJyZW50IHN0YWNrIHRyYWNlIGFzIHN0cmluZy4KQEAgLTE2OSw0NSArMTc0LDM5IEBA
IGNsYXNzIFJlcGVhdGVkWG9yTWFza2VyKG9iamVjdCk6CiAgICAgZW5kZWQgYW5kIHJlc3VtZXMg
ZnJvbSB0aGF0IHBvaW50IG9uIHRoZSBuZXh0IG1hc2sgbWV0aG9kIGNhbGwuCiAgICAgIiIiCiAK
LSAgICBkZWYgX19pbml0X18oc2VsZiwgbWFzayk6Ci0gICAgICAgIHNlbGYuX21hc2sgPSBtYXAo
b3JkLCBtYXNrKQotICAgICAgICBzZWxmLl9tYXNrX3NpemUgPSBsZW4oc2VsZi5fbWFzaykKLSAg
ICAgICAgc2VsZi5fY291bnQgPSAwCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIG1hc2tpbmdfa2V5
KToKKyAgICAgICAgc2VsZi5fbWFza2luZ19rZXkgPSBtYXNraW5nX2tleQorICAgICAgICBzZWxm
Ll9tYXNraW5nX2tleV9pbmRleCA9IDAKIAotICAgIGRlZiBtYXNrKHNlbGYsIHMpOgorICAgIGRl
ZiBfbWFza191c2luZ19zd2lnKHNlbGYsIHMpOgorICAgICAgICBtYXNrZWRfZGF0YSA9IGZhc3Rf
bWFza2luZy5tYXNrKAorICAgICAgICAgICAgICAgIHMsIHNlbGYuX21hc2tpbmdfa2V5LCBzZWxm
Ll9tYXNraW5nX2tleV9pbmRleCkKKyAgICAgICAgc2VsZi5fbWFza2luZ19rZXlfaW5kZXggPSAo
CisgICAgICAgICAgICAgICAgKHNlbGYuX21hc2tpbmdfa2V5X2luZGV4ICsgbGVuKHMpKSAlIGxl
bihzZWxmLl9tYXNraW5nX2tleSkpCisgICAgICAgIHJldHVybiBtYXNrZWRfZGF0YQorCisgICAg
ZGVmIF9tYXNrX3VzaW5nX2FycmF5KHNlbGYsIHMpOgogICAgICAgICByZXN1bHQgPSBhcnJheS5h
cnJheSgnQicpCiAgICAgICAgIHJlc3VsdC5mcm9tc3RyaW5nKHMpCisKICAgICAgICAgIyBVc2Ug
dGVtcG9yYXJ5IGxvY2FsIHZhcmlhYmxlcyB0byBlbGltaW5hdGUgdGhlIGNvc3QgdG8gYWNjZXNz
CiAgICAgICAgICMgYXR0cmlidXRlcwotICAgICAgICBjb3VudCA9IHNlbGYuX2NvdW50Ci0gICAg
ICAgIG1hc2sgPSBzZWxmLl9tYXNrCi0gICAgICAgIG1hc2tfc2l6ZSA9IHNlbGYuX21hc2tfc2l6
ZQotICAgICAgICBmb3IgaSBpbiB4cmFuZ2UobGVuKHJlc3VsdCkpOgotICAgICAgICAgICAgcmVz
dWx0W2ldIF49IG1hc2tbY291bnRdCi0gICAgICAgICAgICBjb3VudCA9IChjb3VudCArIDEpICUg
bWFza19zaXplCi0gICAgICAgIHNlbGYuX2NvdW50ID0gY291bnQKKyAgICAgICAgbWFza2luZ19r
ZXkgPSBtYXAob3JkLCBzZWxmLl9tYXNraW5nX2tleSkKKyAgICAgICAgbWFza2luZ19rZXlfc2l6
ZSA9IGxlbihtYXNraW5nX2tleSkKKyAgICAgICAgbWFza2luZ19rZXlfaW5kZXggPSBzZWxmLl9t
YXNraW5nX2tleV9pbmRleAogCi0gICAgICAgIHJldHVybiByZXN1bHQudG9zdHJpbmcoKQotCi0K
LWNsYXNzIERlZmxhdGVSZXF1ZXN0KG9iamVjdCk6Ci0gICAgIiIiQSB3cmFwcGVyIGNsYXNzIGZv
ciByZXF1ZXN0IG9iamVjdCB0byBpbnRlcmNlcHQgc2VuZCBhbmQgcmVjdiB0byBwZXJmb3JtCi0g
ICAgZGVmbGF0ZSBjb21wcmVzc2lvbiBhbmQgZGVjb21wcmVzc2lvbiB0cmFuc3BhcmVudGx5Lgot
ICAgICIiIgorICAgICAgICBmb3IgaSBpbiB4cmFuZ2UobGVuKHJlc3VsdCkpOgorICAgICAgICAg
ICAgcmVzdWx0W2ldIF49IG1hc2tpbmdfa2V5W21hc2tpbmdfa2V5X2luZGV4XQorICAgICAgICAg
ICAgbWFza2luZ19rZXlfaW5kZXggPSAobWFza2luZ19rZXlfaW5kZXggKyAxKSAlIG1hc2tpbmdf
a2V5X3NpemUKIAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCByZXF1ZXN0KToKLSAgICAgICAgc2Vs
Zi5fcmVxdWVzdCA9IHJlcXVlc3QKLSAgICAgICAgc2VsZi5jb25uZWN0aW9uID0gRGVmbGF0ZUNv
bm5lY3Rpb24ocmVxdWVzdC5jb25uZWN0aW9uKQorICAgICAgICBzZWxmLl9tYXNraW5nX2tleV9p
bmRleCA9IG1hc2tpbmdfa2V5X2luZGV4CiAKLSAgICBkZWYgX19nZXRhdHRyaWJ1dGVfXyhzZWxm
LCBuYW1lKToKLSAgICAgICAgaWYgbmFtZSBpbiAoJ19yZXF1ZXN0JywgJ2Nvbm5lY3Rpb24nKToK
LSAgICAgICAgICAgIHJldHVybiBvYmplY3QuX19nZXRhdHRyaWJ1dGVfXyhzZWxmLCBuYW1lKQot
ICAgICAgICByZXR1cm4gc2VsZi5fcmVxdWVzdC5fX2dldGF0dHJpYnV0ZV9fKG5hbWUpCisgICAg
ICAgIHJldHVybiByZXN1bHQudG9zdHJpbmcoKQogCi0gICAgZGVmIF9fc2V0YXR0cl9fKHNlbGYs
IG5hbWUsIHZhbHVlKToKLSAgICAgICAgaWYgbmFtZSBpbiAoJ19yZXF1ZXN0JywgJ2Nvbm5lY3Rp
b24nKToKLSAgICAgICAgICAgIHJldHVybiBvYmplY3QuX19zZXRhdHRyX18oc2VsZiwgbmFtZSwg
dmFsdWUpCi0gICAgICAgIHJldHVybiBzZWxmLl9yZXF1ZXN0Ll9fc2V0YXR0cl9fKG5hbWUsIHZh
bHVlKQorICAgIGlmICdmYXN0X21hc2tpbmcnIGluIGdsb2JhbHMoKToKKyAgICAgICAgbWFzayA9
IF9tYXNrX3VzaW5nX3N3aWcKKyAgICBlbHNlOgorICAgICAgICBtYXNrID0gX21hc2tfdXNpbmdf
YXJyYXkKIAogCiAjIEJ5IG1ha2luZyB3Yml0cyBvcHRpb24gbmVnYXRpdmUsIHdlIGNhbiBzdXBw
cmVzcyBDTUYvRkxHICgyIG9jdGV0KSBhbmQKQEAgLTI1Miw2ICsyNTEsNyBAQCBjbGFzcyBfRGVm
bGF0ZXIob2JqZWN0KToKICAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdDb21wcmVzcyByZXN1
bHQgJXInLCBjb21wcmVzc2VkX2J5dGVzKQogICAgICAgICByZXR1cm4gY29tcHJlc3NlZF9ieXRl
cwogCisKIGNsYXNzIF9JbmZsYXRlcihvYmplY3QpOgogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYp
OgpAQCAtMzQ2LDYgKzM0Niw3IEBAIGNsYXNzIF9SRkMxOTc5RGVmbGF0ZXIob2JqZWN0KToKICAg
ICAgICAgICAgIHJldHVybiBzZWxmLl9kZWZsYXRlci5jb21wcmVzc19hbmRfZmx1c2goYnl0ZXMp
WzotNF0KICAgICAgICAgcmV0dXJuIHNlbGYuX2RlZmxhdGVyLmNvbXByZXNzKGJ5dGVzKQogCisK
IGNsYXNzIF9SRkMxOTc5SW5mbGF0ZXIob2JqZWN0KToKICAgICAiIiJBIGRlY29tcHJlc3NvciBj
bGFzcyBmb3IgYnl0ZSBzZXF1ZW5jZSBjb21wcmVzc2VkIGFuZCBmbHVzaGVkIGZvbGxvd2luZwog
ICAgIHRoZSBhbGdvcml0aG0gZGVzY3JpYmVkIGluIHRoZSBSRkMxOTc5IHNlY3Rpb24gMi4xLgpA
QCAtNDA1LDExMSArNDA2LDQgQEAgY2xhc3MgRGVmbGF0ZVNvY2tldChvYmplY3QpOgogICAgICAg
ICByZXR1cm4gbGVuKGJ5dGVzKQogCiAKLWNsYXNzIERlZmxhdGVDb25uZWN0aW9uKG9iamVjdCk6
Ci0gICAgIiIiQSB3cmFwcGVyIGNsYXNzIGZvciByZXF1ZXN0IG9iamVjdCB0byBpbnRlcmNlcHQg
d3JpdGUgYW5kIHJlYWQgdG8KLSAgICBwZXJmb3JtIGRlZmxhdGUgY29tcHJlc3Npb24gYW5kIGRl
Y29tcHJlc3Npb24gdHJhbnNwYXJlbnRseS4KLSAgICAiIiIKLQotICAgIGRlZiBfX2luaXRfXyhz
ZWxmLCBjb25uZWN0aW9uKToKLSAgICAgICAgc2VsZi5fY29ubmVjdGlvbiA9IGNvbm5lY3Rpb24K
LQotICAgICAgICBzZWxmLl9sb2dnZXIgPSBnZXRfY2xhc3NfbG9nZ2VyKHNlbGYpCi0KLSAgICAg
ICAgc2VsZi5fZGVmbGF0ZXIgPSBfRGVmbGF0ZXIoemxpYi5NQVhfV0JJVFMpCi0gICAgICAgIHNl
bGYuX2luZmxhdGVyID0gX0luZmxhdGVyKCkKLQotICAgIGRlZiBnZXRfcmVtb3RlX2FkZHIoc2Vs
Zik6Ci0gICAgICAgIHJldHVybiBzZWxmLl9jb25uZWN0aW9uLnJlbW90ZV9hZGRyCi0gICAgcmVt
b3RlX2FkZHIgPSBwcm9wZXJ0eShnZXRfcmVtb3RlX2FkZHIpCi0KLSAgICBkZWYgcHV0X2J5dGVz
KHNlbGYsIGJ5dGVzKToKLSAgICAgICAgc2VsZi53cml0ZShieXRlcykKLQotICAgIGRlZiByZWFk
KHNlbGYsIHNpemU9LTEpOgotICAgICAgICAiIiJSZWFkcyBhdCBtb3N0IHNpemUgYnl0ZXMuIEJs
b2NrcyB1bnRpbCB0aGVyZSdzIGF0IGxlYXN0IG9uZSBieXRlCi0gICAgICAgIGF2YWlsYWJsZS4K
LSAgICAgICAgIiIiCi0KLSAgICAgICAgIyBUT0RPKHR5b3NoaW5vKTogQWxsb3cgY2FsbCB3aXRo
IHNpemU9MC4KLSAgICAgICAgaWYgbm90IChzaXplID09IC0xIG9yIHNpemUgPiAwKToKLSAgICAg
ICAgICAgIHJhaXNlIEV4Y2VwdGlvbignc2l6ZSBtdXN0IGJlIC0xIG9yIHBvc2l0aXZlJykKLQot
ICAgICAgICBkYXRhID0gJycKLSAgICAgICAgd2hpbGUgVHJ1ZToKLSAgICAgICAgICAgIGlmIHNp
emUgPT0gLTE6Ci0gICAgICAgICAgICAgICAgZGF0YSArPSBzZWxmLl9pbmZsYXRlci5kZWNvbXBy
ZXNzKC0xKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBkYXRhICs9IHNlbGYu
X2luZmxhdGVyLmRlY29tcHJlc3Moc2l6ZSAtIGxlbihkYXRhKSkKLQotICAgICAgICAgICAgaWYg
c2l6ZSA+PSAwIGFuZCBsZW4oZGF0YSkgIT0gMDoKLSAgICAgICAgICAgICAgICBicmVhawotCi0g
ICAgICAgICAgICAjIFRPRE8odHlvc2hpbm8pOiBNYWtlIHRoaXMgcmVhZCBlZmZpY2llbnQgYnkg
c29tZSB3b3JrYXJvdW5kLgotICAgICAgICAgICAgIwotICAgICAgICAgICAgIyBJbiAzLjAuMyBh
bmQgcHJpb3Igb2YgbW9kX3B5dGhvbiwgcmVhZCBibG9ja3MgdW50aWwgbGVuZ3RoIGJ5dGVzCi0g
ICAgICAgICAgICAjIHdhcyByZWFkLiBXZSBkb24ndCBrbm93IHRoZSBleGFjdCBzaXplIHRvIHJl
YWQgd2hpbGUgdXNpbmcKLSAgICAgICAgICAgICMgZGVmbGF0ZSwgc28gcmVhZCBieXRlLWJ5LWJ5
dGUuCi0gICAgICAgICAgICAjCi0gICAgICAgICAgICAjIF9TdGFuZGFsb25lUmVxdWVzdC5yZWFk
IHRoYXQgdWx0aW1hdGVseSBwZXJmb3JtcwotICAgICAgICAgICAgIyBzb2NrZXQuX2ZpbGVvYmpl
Y3QucmVhZCBhbHNvIGJsb2NrcyB1bnRpbCBsZW5ndGggYnl0ZXMgd2FzIHJlYWQKLSAgICAgICAg
ICAgIHJlYWRfZGF0YSA9IHNlbGYuX2Nvbm5lY3Rpb24ucmVhZCgxKQotICAgICAgICAgICAgaWYg
bm90IHJlYWRfZGF0YToKLSAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgc2VsZi5f
aW5mbGF0ZXIuYXBwZW5kKHJlYWRfZGF0YSkKLSAgICAgICAgcmV0dXJuIGRhdGEKLQotICAgIGRl
ZiB3cml0ZShzZWxmLCBieXRlcyk6Ci0gICAgICAgIHNlbGYuX2Nvbm5lY3Rpb24ud3JpdGUoc2Vs
Zi5fZGVmbGF0ZXIuY29tcHJlc3NfYW5kX2ZsdXNoKGJ5dGVzKSkKLQotCi1kZWYgX2lzX2V3b3Vs
ZGJsb2NrX2Vycm5vKGVycm9yX251bWJlcik6Ci0gICAgIiIiUmV0dXJucyBUcnVlIGlmZiBlcnJv
cl9udW1iZXIgaW5kaWNhdGVzIHRoYXQgcmVjZWl2ZSBvcGVyYXRpb24gd291bGQKLSAgICBibG9j
ay4gVG8gbWFrZSB0aGlzIHBvcnRhYmxlLCB3ZSBjaGVjayBhdmFpbGFiaWxpdHkgb2YgZXJybm8g
YW5kIHRoZW4KLSAgICBjb21wYXJlIHRoZW0uCi0gICAgIiIiCi0KLSAgICBmb3IgZXJyb3JfbmFt
ZSBpbiBbJ1dTQUVXT1VMREJMT0NLJywgJ0VXT1VMREJMT0NLJywgJ0VBR0FJTiddOgotICAgICAg
ICBpZiAoZXJyb3JfbmFtZSBpbiBkaXIoZXJybm8pIGFuZAotICAgICAgICAgICAgZXJyb3JfbnVt
YmVyID09IGdldGF0dHIoZXJybm8sIGVycm9yX25hbWUpKToKLSAgICAgICAgICAgIHJldHVybiBU
cnVlCi0gICAgcmV0dXJuIEZhbHNlCi0KLQotZGVmIGRyYWluX3JlY2VpdmVkX2RhdGEocmF3X3Nv
Y2tldCk6Ci0gICAgIyBTZXQgdGhlIHNvY2tldCBub24tYmxvY2tpbmcuCi0gICAgb3JpZ2luYWxf
dGltZW91dCA9IHJhd19zb2NrZXQuZ2V0dGltZW91dCgpCi0gICAgcmF3X3NvY2tldC5zZXR0aW1l
b3V0KDAuMCkKLQotICAgIGRyYWluZWRfZGF0YSA9IFtdCi0KLSAgICAjIERyYWluIHVudGlsIHRo
ZSBzb2NrZXQgaXMgY2xvc2VkIG9yIG5vIGRhdGEgaXMgaW1tZWRpYXRlbHkKLSAgICAjIGF2YWls
YWJsZSBmb3IgcmVhZC4KLSAgICB3aGlsZSBUcnVlOgotICAgICAgICB0cnk6Ci0gICAgICAgICAg
ICBkYXRhID0gcmF3X3NvY2tldC5yZWN2KDEpCi0gICAgICAgICAgICBpZiBub3QgZGF0YToKLSAg
ICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgZHJhaW5lZF9kYXRhLmFwcGVuZChkYXRh
KQotICAgICAgICBleGNlcHQgc29ja2V0LmVycm9yLCBlOgotICAgICAgICAgICAgIyBlIGNhbiBi
ZSBlaXRoZXIgYSBwYWlyIChlcnJubywgc3RyaW5nKSBvciBqdXN0IGEgc3RyaW5nIChvcgotICAg
ICAgICAgICAgIyBzb21ldGhpbmcgZWxzZSkgdGVsbGluZyB3aGF0IHdlbnQgd3JvbmcuIFdlIHN1
cHByZXNzIG9ubHkKLSAgICAgICAgICAgICMgdGhlIGVycm9ycyB0aGF0IGluZGljYXRlcyB0aGF0
IHRoZSBzb2NrZXQgYmxvY2tzLiBUaG9zZQotICAgICAgICAgICAgIyBleGNlcHRpb25zIGNhbiBi
ZSBwYXJzZWQgYXMgYSBwYWlyIChlcnJubywgc3RyaW5nKS4KLSAgICAgICAgICAgIHRyeToKLSAg
ICAgICAgICAgICAgICBlcnJvcl9udW1iZXIsIG1lc3NhZ2UgPSBlCi0gICAgICAgICAgICBleGNl
cHQ6Ci0gICAgICAgICAgICAgICAgIyBGYWlsZWQgdG8gcGFyc2Ugc29ja2V0LmVycm9yLgotICAg
ICAgICAgICAgICAgIHJhaXNlIGUKLQotICAgICAgICAgICAgaWYgX2lzX2V3b3VsZGJsb2NrX2Vy
cm5vKGVycm9yX251bWJlcik6Ci0gICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgIGVs
c2U6Ci0gICAgICAgICAgICAgICAgcmFpc2UgZQotCi0gICAgIyBSb2xsYmFjayB0aW1lb3V0IHZh
bHVlLgotICAgIHJhd19zb2NrZXQuc2V0dGltZW91dChvcmlnaW5hbF90aW1lb3V0KQotCi0gICAg
cmV0dXJuICcnLmpvaW4oZHJhaW5lZF9kYXRhKQotCi0KICMgdmk6c3RzPTQgc3c9NCBldApkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmlu
ZGV4IGU3MDhlZThjOWRmNjhkMDk3YzY2ZjQ5MGEyMGIwZTNlYjZkNWQ5ZTMuLjlmMzUxZDI3YmJm
Y2Q1Mjk2YWYzZTE5MzdhMzQzNDY0NWU2NmYwNjkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0No
YW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOCBAQAorMjAx
My0wNS0xMCAgTGFtYXJxdWUgVi4gU291emEgIDxMYW1hcnF1ZS5Tb3V6YUBiYXN5c2tvbS5jb20+
CisKKyAgICAgICAgW1dlYlNvY2tldF0gVXBkYXRlIHB5d2Vic29ja2V0IHRvIHI3NjAKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExNTg2MworCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZpeCBmYWlsaW5nIHRl
c3RzLgorCisgICAgICAgICogaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaGFuZGxlcl9tYXAu
dHh0OgorICAgICAgICAqIGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvZWNoby1ob3N0
X3dzaC5weTogQ29waWVkIGZyb20gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVz
dHMvaHliaS9lY2hvLWxvY2F0aW9uX3dzaC5weS4KKyAgICAgICAgKHdlYl9zb2NrZXRfZG9fZXh0
cmFfaGFuZHNoYWtlKToKKyAgICAgICAgKHdlYl9zb2NrZXRfdHJhbnNmZXJfZGF0YSk6CisgICAg
ICAgICogaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9lY2hvLXBhdGhfd3NoLnB5OiBS
ZW5hbWVkIGZyb20gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9l
Y2hvLWxvY2F0aW9uX3dzaC5weS4KKyAgICAgICAgKHdlYl9zb2NrZXRfZG9fZXh0cmFfaGFuZHNo
YWtlKToKKyAgICAgICAgKHdlYl9zb2NrZXRfdHJhbnNmZXJfZGF0YSk6CisgICAgICAgICogaHR0
cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS91cmwtbm8tdHJhaWxpbmctc2xhc2gtZXhwZWN0
ZWQudHh0OgorICAgICAgICAqIGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvdXJsLW5v
LXRyYWlsaW5nLXNsYXNoLmh0bWw6CisgICAgICAgICogaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVz
dHMvaHliaS91cmwtd2l0aC1jcmVkZW50aWFsLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBodHRw
L3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3VybC13aXRoLWNyZWRlbnRpYWwuaHRtbDoKKyAg
ICAgICAgKiBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3VybC13aXRoLWVtcHR5LXF1
ZXJ5LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9o
eWJpL3VybC13aXRoLWVtcHR5LXF1ZXJ5Lmh0bWw6CisgICAgICAgICogaHR0cC90ZXN0cy93ZWJz
b2NrZXQvdGVzdHMvaHliaS91cmwtd2l0aC1xdWVyeS1leHBlY3RlZC50eHQ6CisgICAgICAgICog
aHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS91cmwtd2l0aC1xdWVyeS5odG1sOgorCiAy
MDEzLTA1LTA4ICBab2x0YW4gQXJ2YWkgIDx6YXJ2YWlAaW5mLnUtc3plZ2VkLmh1PgogCiAgICAg
ICAgIFtRdF0gVW5yZXZpZXdlZCBnYXJkZW5pbmcuIFNraXBwaW5nIHNvbWUgZmFpbGluZyBmYXN0
L3JlZ2lvbiB0ZXN0cy4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29j
a2V0L3Rlc3RzL2hhbmRsZXJfbWFwLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29j
a2V0L3Rlc3RzL2hhbmRsZXJfbWFwLnR4dAppbmRleCBjNmIwYmExMGJmYzAxZjY1ZmMyNjkyMjc5
ZDgxZTM4ZDI2MDNmZGM2Li4zMTkxNDYyOWE2MTZhOGYxY2E5ZTU1YjJmMWQwMDA0MmNkNjViMDgz
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oYW5k
bGVyX21hcC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMv
aGFuZGxlcl9tYXAudHh0CkBAIC0xLDQgKzEsNCBAQAogIyB3ZWJzb2NrZXQgaGFuZGxlciBtYXAg
ZmlsZS4KLSMgcmVxdWVzdCB0byAnLycgd2lsbCBiZSBoYW5kbGVkIGJ5IGVjaG8tbG9jYXRpb25f
d3NoLnB5CisjIHJlcXVlc3QgdG8gJy8nIHdpbGwgYmUgaGFuZGxlZCBieSBlY2hvLWhvc3Rfd3No
LnB5CiAjIGh5YmkvZWNoby1sb2NhdGlvbl93c2gucHkgY2FuIGhhbmRsZSBib3RoIGhpeGllLTc2
IGFuZCBoeWJpLTEwIHByb3RvY29scy4KLS8gL3dlYnNvY2tldC90ZXN0cy9oeWJpL2VjaG8tbG9j
YXRpb24KKy8gL3dlYnNvY2tldC90ZXN0cy9oeWJpL2VjaG8taG9zdApkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9lY2hvLWhvc3Rfd3NoLnB5
IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9lY2hvLWhvc3Rf
d3NoLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmUzYzk2YmU5MmZkZWRiMDM3ZWJhNThlMThlODc4ZDcxMDliNGIx
YTQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90
ZXN0cy9oeWJpL2VjaG8taG9zdF93c2gucHkKQEAgLTAsMCArMSwzOCBAQAorIyBDb3B5cmlnaHQg
KEMpIDIwMTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMgICAgICogTmVp
dGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgor
IyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwK
KyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisKKworZnJvbSBtb2RfcHl3ZWJzb2NrZXQgaW1wb3J0IGNvbW1vbiwgbXNndXRpbAorCisK
K2RlZiB3ZWJfc29ja2V0X2RvX2V4dHJhX2hhbmRzaGFrZShyZXF1ZXN0KToKKyAgICBwYXNzCisK
KworZGVmIHdlYl9zb2NrZXRfdHJhbnNmZXJfZGF0YShyZXF1ZXN0KToKKyAgICBtc2d1dGlsLnNl
bmRfbWVzc2FnZShyZXF1ZXN0LCByZXF1ZXN0LmhlYWRlcnNfaW4uZ2V0KGNvbW1vbi5IT1NUX0hF
QURFUikpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0
cy9oeWJpL2VjaG8tbG9jYXRpb25fd3NoLnB5IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJz
b2NrZXQvdGVzdHMvaHliaS9lY2hvLWxvY2F0aW9uX3dzaC5weQpkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDNjNGFhOTI4M2QyMDYxMmU2NWRmNDg2Y2Q4YmY2ZDg0OTgyODFjOS4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2VjaG8tbG9jYXRpb25fd3NoLnB5CisrKyAv
ZGV2L251bGwKQEAgLTEsNDkgKzAsMCBAQAotIyBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUK
LSMgbWV0OgotIwotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSMgY29weXJpZ2h0IG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
cgotIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlCi0jIGRpc3RyaWJ1dGlvbi4KLSMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBH
b29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotIyBjb250cmlidXRvcnMgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotIyB0aGlzIHNv
ZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotIwotIyBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09O
VFJJQlVUT1JTCi0jICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotIyBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotIyBP
V05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwKLSMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSMgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0j
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKLSMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLQotZnJvbSBtb2Rf
cHl3ZWJzb2NrZXQgaW1wb3J0IG1zZ3V0aWwKLWZyb20gbW9kX3B5d2Vic29ja2V0LmhhbmRzaGFr
ZS5fYmFzZSBpbXBvcnQgYnVpbGRfbG9jYXRpb24KLQotCi1kZWYgd2ViX3NvY2tldF9kb19leHRy
YV9oYW5kc2hha2UocmVxdWVzdCk6Ci0gICAgcGFzcwotCi0KLWRlZiB3ZWJfc29ja2V0X3RyYW5z
ZmVyX2RhdGEocmVxdWVzdCk6Ci0gICAgaWYgaGFzYXR0cihyZXF1ZXN0LCAnd3NfbG9jYXRpb24n
KToKLSAgICAgICAgbG9jYXRpb24gPSByZXF1ZXN0LndzX2xvY2F0aW9uCi0gICAgZWxzZToKLSAg
ICAgICAgIyBXaGVuIGh5YmkgcHJvdG9jb2wgaXMgdXNlZCwgcHl3ZWJzb2NrZXQgZG9lcyBub3Qg
cHJvdmlkZQotICAgICAgICAjIHdzX2xvY2F0aW9uIGF0dHJpYnV0ZSBiZWNhdXNlIHNlcnZlcnMg
YXJlIG5vdCByZXF1aXJlZCB0byBzZW5kCi0gICAgICAgICMgU2VjLVdlYlNvY2tldC1Mb2NhdGlv
biBoZWFkZXIgYWNjb3JkaW5nIHRvIHRoZSBwcm90b2NvbAotICAgICAgICAjIHNwZWNpZmljYXRp
b24uIElmIHdzX2xvY2F0aW9uIGF0dHJpYnV0ZSBpcyBub3QgYXZhaWxhYmxlLAotICAgICAgICAj
IHdlIHVzZSBweXdlYnNvY2tldCdzIGludGVybmFsIGZ1bmN0aW9uICJidWlsZF9mdW5jdGlvbiIK
LSAgICAgICAgIyB0byBvYnRhaW4gdGhlIGlkZW50aWNhbCB2YWx1ZS4KLSAgICAgICAgbG9jYXRp
b24gPSBidWlsZF9sb2NhdGlvbihyZXF1ZXN0KQotICAgIG1zZ3V0aWwuc2VuZF9tZXNzYWdlKHJl
cXVlc3QsIGxvY2F0aW9uKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJz
b2NrZXQvdGVzdHMvaHliaS9lY2hvLXBhdGhfd3NoLnB5IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9lY2hvLXBhdGhfd3NoLnB5Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjYwNzJh
MjhlNmM4MjFiZGYzMDFkNGMxY2Y3ZTJjNTBjMmNlYmRlZWYKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2VjaG8tcGF0aF93c2gu
cHkKQEAgLTAsMCArMSwzOCBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0
OgorIworIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBp
biB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUg
SW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIworIyBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVU
T1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBP
UiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKworZnJvbSBtb2RfcHl3ZWJz
b2NrZXQgaW1wb3J0IGNvbW1vbiwgbXNndXRpbAorCisKK2RlZiB3ZWJfc29ja2V0X2RvX2V4dHJh
X2hhbmRzaGFrZShyZXF1ZXN0KToKKyAgICBwYXNzCisKKworZGVmIHdlYl9zb2NrZXRfdHJhbnNm
ZXJfZGF0YShyZXF1ZXN0KToKKyAgICBtc2d1dGlsLnNlbmRfbWVzc2FnZShyZXF1ZXN0LCByZXF1
ZXN0LnVyaSkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rl
c3RzL2h5YmkvdXJsLW5vLXRyYWlsaW5nLXNsYXNoLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvdXJsLW5vLXRyYWlsaW5nLXNsYXNoLWV4
cGVjdGVkLnR4dAppbmRleCA3NWM5MGNmMWEzMWY2YjM4N2M1M2I0NmY4NWY5ZGU0ODc2MDQ4MDc4
Li44Mjc0MTJlMGVhYjQ3ZTA2NWM5MTBjZDQ5ZTBiMDIyNzIwOTYzYzAxIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3VybC1uby10cmFpbGlu
Zy1zbGFzaC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2Nr
ZXQvdGVzdHMvaHliaS91cmwtbm8tdHJhaWxpbmctc2xhc2gtZXhwZWN0ZWQudHh0CkBAIC0zLDEw
ICszLDEwIEBAIFVSTCB0aGF0IGRvZXNuJ3QgaGF2ZSB0cmFpbGluZyBzbGFzaCBzaG91bGQgbm90
IGVtaXQgZW1wdHkgUmVxdWVzdC1VUkkuCiBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJp
ZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCiAKIFdl
YlNvY2tldCBpcyBvcGVuCi1yZWNlaXZlZDp3czovLzEyNy4wLjAuMTo4ODgwLworcmVjZWl2ZWQ6
MTI3LjAuMC4xOjg4ODAKIFdlYlNvY2tldCBpcyBjbG9zZWQKIFBBU1MgaGFuZHNoYWtlX3N1Y2Nl
c3MgaXMgdHJ1ZQotUEFTUyB3c19sb2NhdGlvbiBpcyAid3M6Ly8xMjcuMC4wLjE6ODg4MC8iCitQ
QVNTIGhvc3QgaXMgIjEyNy4wLjAuMTo4ODgwIgogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMg
dHJ1ZQogCiBURVNUIENPTVBMRVRFCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3dlYnNvY2tldC90ZXN0cy9oeWJpL3VybC1uby10cmFpbGluZy1zbGFzaC5odG1sIGIvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS91cmwtbm8tdHJhaWxpbmctc2xh
c2guaHRtbAppbmRleCBiY2E2YzI3NGIxMmI4ODZhMGRlODgwN2FhMzk1MzAwNjU0MTQ4ZGU3Li5i
ZDEzN2RmZDk5N2E1NDYyYjNjZmRhYmE3YzI5ZGQ3NjgxMjZmNjkwIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3VybC1uby10cmFpbGluZy1z
bGFzaC5odG1sCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5
YmkvdXJsLW5vLXRyYWlsaW5nLXNsYXNoLmh0bWwKQEAgLTEsNyArMSw3IEBACi08IURPQ1RZUEUg
SFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8IURPQ1RZUEUiPgogPGh0bWw+
CiA8aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy10ZXN0LXJlc291cmNlcy9qcy10
ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iL2pzLXRlc3QtcmVzb3VyY2VzL2pz
LXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5PgogPGRpdiBpZD0iZGVzY3Jp
cHRpb24iPjwvZGl2PgpAQCAtMTMsNyArMTMsNyBAQCB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRy
dWU7CiAKIHZhciB1cmwgPSAid3M6Ly8xMjcuMC4wLjE6ODg4MCI7CiB2YXIgaGFuZHNoYWtlX3N1
Y2Nlc3MgPSBmYWxzZTsKLXZhciB3c19sb2NhdGlvbjsKK3ZhciBob3N0CiAKIHZhciB3cyA9IG5l
dyBXZWJTb2NrZXQodXJsKTsKIHdzLm9ub3BlbiA9IGZ1bmN0aW9uICgpIHsKQEAgLTIxLDE4ICsy
MSwxOCBAQCB3cy5vbm9wZW4gPSBmdW5jdGlvbiAoKSB7CiAgICAgaGFuZHNoYWtlX3N1Y2Nlc3Mg
PSB0cnVlOwogfTsKIHdzLm9ubWVzc2FnZSA9IGZ1bmN0aW9uIChldnQpIHsKLSAgICB3c19sb2Nh
dGlvbiA9IGV2dC5kYXRhOwotICAgIGRlYnVnKCJyZWNlaXZlZDoiICsgd3NfbG9jYXRpb24pOwor
ICAgIGhvc3QgPSBldnQuZGF0YTsKKyAgICBkZWJ1ZygicmVjZWl2ZWQ6IiArIGhvc3QpOwogICAg
IHdzLmNsb3NlKCk7CiB9Owogd3Mub25jbG9zZSA9IGZ1bmN0aW9uICgpIHsKICAgICBkZWJ1Zygi
V2ViU29ja2V0IGlzIGNsb3NlZCIpOwogICAgIHNob3VsZEJlVHJ1ZSgiaGFuZHNoYWtlX3N1Y2Nl
c3MiKTsKLSAgICBzaG91bGRCZSgid3NfbG9jYXRpb24iLCAnIndzOi8vMTI3LjAuMC4xOjg4ODAv
IicpOworICAgIHNob3VsZEJlKCJob3N0IiwgJyIxMjcuMC4wLjE6ODg4MCInKTsKICAgICBmaW5p
c2hKU1Rlc3QoKTsKIH07CiAKIDwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pz
LXRlc3QtcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
L2pzLXRlc3QtcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+CiA8
L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0
cy9oeWJpL3VybC13aXRoLWNyZWRlbnRpYWwtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS91cmwtd2l0aC1jcmVkZW50aWFsLWV4cGVjdGVk
LnR4dAppbmRleCBmN2ViYzY5MmVhOWZkYjgzMmY1MjZmYTA4NGFmODRjYTgwYzk3YThkLi43NzVh
MzliNGRhMjU1YWI0MmQyNTFkOWNlODljNzNlNzdlMTFmM2ExIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3VybC13aXRoLWNyZWRlbnRpYWwt
ZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3Rz
L2h5YmkvdXJsLXdpdGgtY3JlZGVudGlhbC1leHBlY3RlZC50eHQKQEAgLTIsMTIgKzIsMTIgQEAg
TWFrZSBzdXJlIGhhbmRzaGFrZSB3aXRoIFVSTCB3aXRoIGNyZWRlbnRhaWwgaW5mbyBzdWNjZXNz
LgogCiBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2Vz
LCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCiAKLXVybD13czovL3VzZXI6cGFzc0AxMjcu
MC4wLjE6ODg4MC93ZWJzb2NrZXQvdGVzdHMvaHliaS9lY2hvLWxvY2F0aW9uCit1cmw9d3M6Ly91
c2VyOnBhc3NAMTI3LjAuMC4xOjg4ODAvd2Vic29ja2V0L3Rlc3RzL2h5YmkvZWNoby1ob3N0CiBX
ZWJTb2NrZXQgaXMgb3BlbgotcmVjZWl2ZWQ6d3M6Ly8xMjcuMC4wLjE6ODg4MC93ZWJzb2NrZXQv
dGVzdHMvaHliaS9lY2hvLWxvY2F0aW9uCityZWNlaXZlZDoxMjcuMC4wLjE6ODg4MAogV2ViU29j
a2V0IGlzIGNsb3NlZAogUEFTUyBoYW5kc2hha2Vfc3VjY2VzcyBpcyB0cnVlCi1QQVNTIHdzX2xv
Y2F0aW9uIGlzICJ3czovLzEyNy4wLjAuMTo4ODgwL3dlYnNvY2tldC90ZXN0cy9oeWJpL2VjaG8t
bG9jYXRpb24iCitQQVNTIGhvc3QgaXMgIjEyNy4wLjAuMTo4ODgwIgogUEFTUyBzdWNjZXNzZnVs
bHlQYXJzZWQgaXMgdHJ1ZQogCiBURVNUIENPTVBMRVRFCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3VybC13aXRoLWNyZWRlbnRpYWwuaHRt
bCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvdXJsLXdpdGgt
Y3JlZGVudGlhbC5odG1sCmluZGV4IDliOTU2YzdkNzAxOWU2OWViODI2M2I1NGVmMjY2ZjM5OTc1
ODc2ZDAuLmM4NDM0ZDM1MWVlOGEyNmM5OTczOWIwMGI3YjM1ZDJjZGE3YzlkYzMgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvdXJsLXdpdGgt
Y3JlZGVudGlhbC5odG1sCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rl
c3RzL2h5YmkvdXJsLXdpdGgtY3JlZGVudGlhbC5odG1sCkBAIC0xLDcgKzEsNyBAQAotPCFET0NU
WVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPCFET0NUWVBFIj4KIDxo
dG1sPgogPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMtdGVzdC1yZXNvdXJjZXMv
anMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9qcy10ZXN0LXJlc291cmNl
cy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4KIDxkaXYgaWQ9ImRl
c2NyaXB0aW9uIj48L2Rpdj4KQEAgLTExLDE1ICsxMSwxNSBAQCBkZXNjcmlwdGlvbigiTWFrZSBz
dXJlIGhhbmRzaGFrZSB3aXRoIFVSTCB3aXRoIGNyZWRlbnRhaWwgaW5mbyBzdWNjZXNzLiIpOwog
CiB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CiAKLXZhciB1cmwgPSAid3M6Ly91c2VyOnBh
c3NAMTI3LjAuMC4xOjg4ODAvd2Vic29ja2V0L3Rlc3RzL2h5YmkvZWNoby1sb2NhdGlvbiI7Cit2
YXIgdXJsID0gIndzOi8vdXNlcjpwYXNzQDEyNy4wLjAuMTo4ODgwL3dlYnNvY2tldC90ZXN0cy9o
eWJpL2VjaG8taG9zdCI7CiB2YXIgaGFuZHNoYWtlX3N1Y2Nlc3MgPSBmYWxzZTsKLXZhciB3c19s
b2NhdGlvbjsKK3ZhciBob3N0OwogCiBmdW5jdGlvbiBlbmRUZXN0KCkKIHsKICAgICBjbGVhclRp
bWVvdXQodGltZW91dElEKTsKICAgICBzaG91bGRCZVRydWUoImhhbmRzaGFrZV9zdWNjZXNzIik7
Ci0gICAgc2hvdWxkQmUoIndzX2xvY2F0aW9uIiwgJyJ3czovLzEyNy4wLjAuMTo4ODgwL3dlYnNv
Y2tldC90ZXN0cy9oeWJpL2VjaG8tbG9jYXRpb24iJyk7CisgICAgc2hvdWxkQmUoImhvc3QiLCAn
IjEyNy4wLjAuMTo4ODgwIicpOwogICAgIGZpbmlzaEpTVGVzdCgpOwogfQogCkBAIC0zMCw4ICsz
MCw4IEBAIHdzLm9ub3BlbiA9IGZ1bmN0aW9uICgpIHsKICAgICBoYW5kc2hha2Vfc3VjY2VzcyA9
IHRydWU7CiB9Owogd3Mub25tZXNzYWdlID0gZnVuY3Rpb24gKGV2dCkgewotICAgIHdzX2xvY2F0
aW9uID0gZXZ0LmRhdGE7Ci0gICAgZGVidWcoInJlY2VpdmVkOiIgKyB3c19sb2NhdGlvbik7Cisg
ICAgaG9zdCA9IGV2dC5kYXRhOworICAgIGRlYnVnKCJyZWNlaXZlZDoiICsgaG9zdCk7CiAgICAg
d3MuY2xvc2UoKTsKIH07CiB3cy5vbmNsb3NlID0gZnVuY3Rpb24gKCkgewpAQCAtNDEsNiArNDEs
NiBAQCB3cy5vbmNsb3NlID0gZnVuY3Rpb24gKCkgewogdmFyIHRpbWVvdXRJRCA9IHNldFRpbWVv
dXQoImVuZFRlc3QoKSIsIDIwMDApOwogCiA8L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi8u
Li8uLi9qcy10ZXN0LXJlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii9qcy10ZXN0LXJlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgogPC9i
b2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2Nr
ZXQvdGVzdHMvaHliaS91cmwtd2l0aC1lbXB0eS1xdWVyeS1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3VybC13aXRoLWVtcHR5LXF1ZXJ5
LWV4cGVjdGVkLnR4dAppbmRleCBjOTk0ZWVjYWFhNjA5YzY1NjhlYjc1ZGYwODhkNWNkODEzOTky
NjdjLi5lMDVhMDUzNDFjMmJjNmMzYjM2ODgyNjQyM2QyODdmNDA4NzgzMTE1IDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3VybC13aXRoLWVt
cHR5LXF1ZXJ5LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNv
Y2tldC90ZXN0cy9oeWJpL3VybC13aXRoLWVtcHR5LXF1ZXJ5LWV4cGVjdGVkLnR4dApAQCAtMiwx
MiArMiwxMiBAQCBNYWtlIHN1cmUgaGFuZHNoYWtlIHdpdGggVVJMIHdpdGggZW1wdHkgcXVlcnkg
Y29tcG9uZW50cyBzdWNjZXNzLgogCiBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMg
b2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCiAKLXVybD13
czovLzEyNy4wLjAuMTo4ODgwL3dlYnNvY2tldC90ZXN0cy9oeWJpL2VjaG8tbG9jYXRpb24/Cit1
cmw9d3M6Ly8xMjcuMC4wLjE6ODg4MC93ZWJzb2NrZXQvdGVzdHMvaHliaS9lY2hvLXBhdGg/CiBX
ZWJTb2NrZXQgaXMgb3BlbgotcmVjZWl2ZWQ6d3M6Ly8xMjcuMC4wLjE6ODg4MC93ZWJzb2NrZXQv
dGVzdHMvaHliaS9lY2hvLWxvY2F0aW9uPworcmVjZWl2ZWQ6L3dlYnNvY2tldC90ZXN0cy9oeWJp
L2VjaG8tcGF0aD8KIFdlYlNvY2tldCBpcyBjbG9zZWQKIFBBU1MgaGFuZHNoYWtlX3N1Y2Nlc3Mg
aXMgdHJ1ZQotUEFTUyB3c19sb2NhdGlvbiBpcyB1cmwKK1BBU1MgcGF0aCBpcyBleHBlY3RlZF9w
YXRoCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCiAKIFRFU1QgQ09NUExFVEUKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvdXJs
LXdpdGgtZW1wdHktcXVlcnkuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0
L3Rlc3RzL2h5YmkvdXJsLXdpdGgtZW1wdHktcXVlcnkuaHRtbAppbmRleCAyMThhYzc1MTg4ZGQ2
YTgxZmFjMTFmYmEwMDAwM2Y3NjQ1Y2YxNmExLi4wMzkxMzdkN2M0NTEwYmYwZDk5ZmEzMzRkMzNh
ZDM0YTMwMWU2MzI3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tl
dC90ZXN0cy9oeWJpL3VybC13aXRoLWVtcHR5LXF1ZXJ5Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS91cmwtd2l0aC1lbXB0eS1xdWVyeS5odG1s
CkBAIC0xLDcgKzEsNyBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRN
TC8vRU4iPgorPCFET0NUWVBFIj4KIDxodG1sPgogPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4v
Li4vLi4vanMtdGVzdC1yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii9qcy10ZXN0LXJlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CiA8L2hl
YWQ+CiA8Ym9keT4KIDxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KQEAgLTExLDE1ICsxMSwx
NiBAQCBkZXNjcmlwdGlvbigiTWFrZSBzdXJlIGhhbmRzaGFrZSB3aXRoIFVSTCB3aXRoIGVtcHR5
IHF1ZXJ5IGNvbXBvbmVudHMgc3VjY2Vzcy4iKQogCiB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRy
dWU7CiAKLXZhciB1cmwgPSAid3M6Ly8xMjcuMC4wLjE6ODg4MC93ZWJzb2NrZXQvdGVzdHMvaHli
aS9lY2hvLWxvY2F0aW9uPyI7Cit2YXIgdXJsID0gIndzOi8vMTI3LjAuMC4xOjg4ODAvd2Vic29j
a2V0L3Rlc3RzL2h5YmkvZWNoby1wYXRoPyI7CiB2YXIgaGFuZHNoYWtlX3N1Y2Nlc3MgPSBmYWxz
ZTsKLXZhciB3c19sb2NhdGlvbjsKK3ZhciBwYXRoOwordmFyIGV4cGVjdGVkX3BhdGggPSAiL3dl
YnNvY2tldC90ZXN0cy9oeWJpL2VjaG8tcGF0aD8iOwogCiBmdW5jdGlvbiBlbmRUZXN0KCkKIHsK
ICAgICBjbGVhclRpbWVvdXQodGltZW91dElEKTsKICAgICBzaG91bGRCZVRydWUoImhhbmRzaGFr
ZV9zdWNjZXNzIik7Ci0gICAgc2hvdWxkQmUoIndzX2xvY2F0aW9uIiwgInVybCIpOworICAgIHNo
b3VsZEJlKCJwYXRoIiwgImV4cGVjdGVkX3BhdGgiKTsKICAgICBmaW5pc2hKU1Rlc3QoKTsKIH0K
IApAQCAtMzAsOCArMzEsOCBAQCB3cy5vbm9wZW4gPSBmdW5jdGlvbiAoKSB7CiAgICAgaGFuZHNo
YWtlX3N1Y2Nlc3MgPSB0cnVlOwogfTsKIHdzLm9ubWVzc2FnZSA9IGZ1bmN0aW9uIChldnQpIHsK
LSAgICB3c19sb2NhdGlvbiA9IGV2dC5kYXRhOwotICAgIGRlYnVnKCJyZWNlaXZlZDoiICsgd3Nf
bG9jYXRpb24pOworICAgIHBhdGggPSBldnQuZGF0YTsKKyAgICBkZWJ1ZygicmVjZWl2ZWQ6IiAr
IHBhdGgpOwogICAgIHdzLmNsb3NlKCk7CiB9Owogd3Mub25jbG9zZSA9IGZ1bmN0aW9uICgpIHsK
QEAgLTQxLDYgKzQyLDYgQEAgd3Mub25jbG9zZSA9IGZ1bmN0aW9uICgpIHsKIHZhciB0aW1lb3V0
SUQgPSBzZXRUaW1lb3V0KCJlbmRUZXN0KCkiLCAyMDAwKTsKIAogPC9zY3JpcHQ+Ci08c2NyaXB0
IHNyYz0iLi4vLi4vLi4vLi4vanMtdGVzdC1yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIvanMtdGVzdC1yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48
L3NjcmlwdD4KIDwvYm9keT4KIDwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvdXJsLXdpdGgtcXVlcnktZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS91cmwtd2l0aC1xdWVy
eS1leHBlY3RlZC50eHQKaW5kZXggZjY4N2FkYTkxNzdiZjI1ZGE1Y2JkZTRjMDVjOGU3MDY2Mjgz
MTk0My4uNTBlZTNmMTdmZDkwNWE0MTIzOWYxNjYyMmZhODc4ODM0YWI2YjMzYiAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS91cmwtd2l0aC1x
dWVyeS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQv
dGVzdHMvaHliaS91cmwtd2l0aC1xdWVyeS1leHBlY3RlZC50eHQKQEAgLTIsMTIgKzIsMTIgQEAg
TWFrZSBzdXJlIGhhbmRzaGFrZSB3aXRoIFVSTCB3aXRoIHF1ZXJ5IGNvbXBvbmVudHMgc3VjY2Vz
cy4KIAogT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdl
cywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgogCi11cmw9d3M6Ly8xMjcuMC4wLjE6ODg4
MC93ZWJzb2NrZXQvdGVzdHMvaHliaS9lY2hvLWxvY2F0aW9uP3E9dgordXJsPXdzOi8vMTI3LjAu
MC4xOjg4ODAvd2Vic29ja2V0L3Rlc3RzL2h5YmkvZWNoby1wYXRoP3E9dgogV2ViU29ja2V0IGlz
IG9wZW4KLXJlY2VpdmVkOndzOi8vMTI3LjAuMC4xOjg4ODAvd2Vic29ja2V0L3Rlc3RzL2h5Ymkv
ZWNoby1sb2NhdGlvbj9xPXYKK3JlY2VpdmVkOi93ZWJzb2NrZXQvdGVzdHMvaHliaS9lY2hvLXBh
dGg/cT12CiBXZWJTb2NrZXQgaXMgY2xvc2VkCiBQQVNTIGhhbmRzaGFrZV9zdWNjZXNzIGlzIHRy
dWUKLVBBU1Mgd3NfbG9jYXRpb24gaXMgdXJsCitQQVNTIHBhdGggaXMgZXhwZWN0ZWRfcGF0aAog
UEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCiBURVNUIENPTVBMRVRFCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3VybC13aXRo
LXF1ZXJ5Lmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJp
L3VybC13aXRoLXF1ZXJ5Lmh0bWwKaW5kZXggMTJlNmYyNmJiYjIyZWUzYTRkN2RkZjA4Y2Q3MTAy
ZDQ1M2JkYTJlYi4uM2M4Yzg2Yjk3NjAzNjA5NTE0ZmY3YmU5Y2MyNTlkOWUwMzU2NzliOSAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS91cmwt
d2l0aC1xdWVyeS5odG1sCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rl
c3RzL2h5YmkvdXJsLXdpdGgtcXVlcnkuaHRtbApAQCAtMSw3ICsxLDcgQEAKLTwhRE9DVFlQRSBI
VE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzwhRE9DVFlQRSI+CiA8aHRtbD4K
IDxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzLXRlc3QtcmVzb3VyY2VzL2pzLXRl
c3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIvanMtdGVzdC1yZXNvdXJjZXMvanMt
dGVzdC1wcmUuanMiPjwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHk+CiA8ZGl2IGlkPSJkZXNjcmlw
dGlvbiI+PC9kaXY+CkBAIC0xMSwxNSArMTEsMTYgQEAgZGVzY3JpcHRpb24oIk1ha2Ugc3VyZSBo
YW5kc2hha2Ugd2l0aCBVUkwgd2l0aCBxdWVyeSBjb21wb25lbnRzIHN1Y2Nlc3MuIik7CiAKIHdp
bmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKIAotdmFyIHVybCA9ICJ3czovLzEyNy4wLjAuMTo4
ODgwL3dlYnNvY2tldC90ZXN0cy9oeWJpL2VjaG8tbG9jYXRpb24/cT12IjsKK3ZhciB1cmwgPSAi
d3M6Ly8xMjcuMC4wLjE6ODg4MC93ZWJzb2NrZXQvdGVzdHMvaHliaS9lY2hvLXBhdGg/cT12IjsK
IHZhciBoYW5kc2hha2Vfc3VjY2VzcyA9IGZhbHNlOwotdmFyIHdzX2xvY2F0aW9uOwordmFyIHBh
dGg7Cit2YXIgZXhwZWN0ZWRfcGF0aCA9ICIvd2Vic29ja2V0L3Rlc3RzL2h5YmkvZWNoby1wYXRo
P3E9diI7CiAKIGZ1bmN0aW9uIGVuZFRlc3QoKQogewogICAgIGNsZWFyVGltZW91dCh0aW1lb3V0
SUQpOwogICAgIHNob3VsZEJlVHJ1ZSgiaGFuZHNoYWtlX3N1Y2Nlc3MiKTsKLSAgICBzaG91bGRC
ZSgid3NfbG9jYXRpb24iLCAidXJsIik7CisgICAgc2hvdWxkQmUoInBhdGgiLCAiZXhwZWN0ZWRf
cGF0aCIpOwogICAgIGZpbmlzaEpTVGVzdCgpOwogfQogCkBAIC0zMCw4ICszMSw4IEBAIHdzLm9u
b3BlbiA9IGZ1bmN0aW9uICgpIHsKICAgICBoYW5kc2hha2Vfc3VjY2VzcyA9IHRydWU7CiB9Owog
d3Mub25tZXNzYWdlID0gZnVuY3Rpb24gKGV2dCkgewotICAgIHdzX2xvY2F0aW9uID0gZXZ0LmRh
dGE7Ci0gICAgZGVidWcoInJlY2VpdmVkOiIgKyB3c19sb2NhdGlvbik7CisgICAgcGF0aCA9IGV2
dC5kYXRhOworICAgIGRlYnVnKCJyZWNlaXZlZDoiICsgcGF0aCk7CiAgICAgd3MuY2xvc2UoKTsK
IH07CiB3cy5vbmNsb3NlID0gZnVuY3Rpb24gKCkgewpAQCAtNDEsNiArNDIsNiBAQCB3cy5vbmNs
b3NlID0gZnVuY3Rpb24gKCkgewogdmFyIHRpbWVvdXRJRCA9IHNldFRpbWVvdXQoImVuZFRlc3Qo
KSIsIDIwMDApOwogCiA8L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy10ZXN0
LXJlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9qcy10
ZXN0LXJlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1s
Pgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>